From 32a0b4e91e34c092807b4b82e334f2b10b737a9b Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 4 Nov 2025 19:07:57 +0000 Subject: [PATCH 001/115] Ported deftorel pass --- spectec/src/exe-spectec/main.ml | 6 +- spectec/src/il/free.ml | 8 + spectec/src/il/free.mli | 1 + spectec/src/il/iter.ml | 3 + spectec/src/middlend/deftorel.ml | 632 ++++++++++++++++++++++++++++++ spectec/src/middlend/deftorel.mli | 1 + spectec/src/middlend/dune | 1 + spectec/src/middlend/undep.ml | 2 + 8 files changed, 653 insertions(+), 1 deletion(-) create mode 100644 spectec/src/middlend/deftorel.ml create mode 100644 spectec/src/middlend/deftorel.mli diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index 5c1a52293a..046e5bfa8e 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -22,6 +22,7 @@ type pass = | TypeFamilyRemoval | Else | Undep + | DefToRel (* This list declares the intended order of passes. @@ -30,7 +31,7 @@ passers (--all-passes, some targets), we do _not_ want to use the order of flags on the command line. *) let _skip_passes = [ Sub; Unthe ] (* Not clear how to extend them to indexed types *) -let all_passes = [ TypeFamilyRemoval; Undep; Totalize; Else; Sideconditions; ] +let all_passes = [ TypeFamilyRemoval; Undep; Totalize; Else; Sideconditions; DefToRel ] type file_kind = | Spec @@ -79,6 +80,7 @@ let pass_flag = function | TypeFamilyRemoval -> "typefamily-removal" | Else -> "else" | Undep -> "remove-indexed-types" + | DefToRel -> "definition-to-relation" let pass_desc = function | Sub -> "Synthesize explicit subtype coercions" @@ -88,6 +90,7 @@ let pass_desc = function | TypeFamilyRemoval -> "Transform Type families into sum types" | Else -> "Eliminate the otherwise premise in relations" | Undep -> "Transform indexed types into types with well-formedness predicates" + | DefToRel -> "Transform specific function definitions into relations" let run_pass : pass -> Il.Ast.script -> Il.Ast.script = function @@ -98,6 +101,7 @@ let run_pass : pass -> Il.Ast.script -> Il.Ast.script = function | TypeFamilyRemoval -> Middlend.Typefamilyremoval.transform | Else -> Middlend.Else.transform | Undep -> Middlend.Undep.transform + | DefToRel -> Middlend.Deftorel.transform (* Argument parsing *) diff --git a/spectec/src/il/free.ml b/spectec/src/il/free.ml index cb9e29477c..96bb9c9e18 100644 --- a/spectec/src/il/free.ml +++ b/spectec/src/il/free.ml @@ -33,6 +33,14 @@ let diff sets1 sets2 = gramid = Set.diff sets1.gramid sets2.gramid; } +let inter sets1 sets2 = + { typid = Set.inter sets1.typid sets2.typid; + relid = Set.inter sets1.relid sets2.relid; + varid = Set.inter sets1.varid sets2.varid; + defid = Set.inter sets1.defid sets2.defid; + gramid = Set.inter sets1.gramid sets2.gramid; + } + let (+) = union let (-) = diff diff --git a/spectec/src/il/free.mli b/spectec/src/il/free.mli index ba5d3aaacb..03f2bf3be5 100644 --- a/spectec/src/il/free.mli +++ b/spectec/src/il/free.mli @@ -7,6 +7,7 @@ type sets = {typid : Set.t; relid : Set.t; varid : Set.t; defid : Set.t; gramid val empty : sets val union : sets -> sets -> sets val diff : sets -> sets -> sets +val inter : sets -> sets -> sets val subset : sets -> sets -> bool val disjoint : sets -> sets -> bool diff --git a/spectec/src/il/iter.ml b/spectec/src/il/iter.ml index a92df51b51..5fe20848db 100644 --- a/spectec/src/il/iter.ml +++ b/spectec/src/il/iter.ml @@ -17,6 +17,7 @@ sig val visit_typ : typ -> unit val visit_deftyp : deftyp -> unit val visit_exp : exp -> unit + val visit_arg : arg -> unit val visit_path : path -> unit val visit_sym : sym -> unit val visit_prem : prem -> unit @@ -39,6 +40,7 @@ struct let visit_typ _ = () let visit_deftyp _ = () let visit_exp _ = () + let visit_arg _ = () let visit_path _ = () let visit_sym _ = () let visit_prem _ = () @@ -187,6 +189,7 @@ and prems prs = list prem prs (* Definitions *) and arg a = + visit_arg a; match a.it with | ExpA e -> exp e | TypA t -> typ t diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml new file mode 100644 index 0000000000..7cabd1057c --- /dev/null +++ b/spectec/src/middlend/deftorel.ml @@ -0,0 +1,632 @@ +open Il.Ast +open Il +open Util.Source + +module StringSet = Set.Make(String) + +module ExpMap = Map.Make(struct + type t = exp + let compare exp1 exp2 = if Eq.eq_exp exp1 exp2 then 0 + (* HACK - Need better way to compare exps, only hurts performance *) + else String.compare (Print.string_of_exp exp1) (Print.string_of_exp exp2) +end) + +type env = { + mutable env : Il.Env.t; + mutable rel_set : StringSet.t; + mutable def_arg_set : StringSet.t +} + +let empty_env = { + env = Il.Env.empty; + rel_set = StringSet.empty; + def_arg_set = StringSet.empty +} + +let fun_prefix = "fun_" + +let apply_iter_to_var id iter = + match iter with + | Opt -> id ^ Il.Print.string_of_iter Opt + | _ -> id ^ Il.Print.string_of_iter List + +let get_bind_id b = + match b.it with + | ExpB (id, _) -> id.it + | TypB id -> id.it + | DefB (id, _, _) -> id.it + | GramB (id, _, _) -> id.it + +let get_exp_arg a = + match a.it with + | ExpA exp -> exp + | _ -> assert false + +let transform_typ_iter i = + match i with + | ListN _ -> + (* Definite iterators not allowed in types *) + List + | _ -> i + +let filter_iter_binds args iter_binds = + let free_vars = (Free.free_list Free.free_arg args).varid in + (List.fold_left (fun (free_set, acc) (iter, id_exp_pairs) -> + let new_id_exp_pairs = List.filter (fun (id, _) -> + Free.Set.mem id.it free_set + ) id_exp_pairs in + if new_id_exp_pairs = [] then (free_set, acc) else + let iter_vars = List.fold_left (fun acc (_, e) -> + Free.Set.union acc (Free.free_exp e).varid + ) Free.Set.empty new_id_exp_pairs in + let new_set = Free.Set.union iter_vars free_set in + (new_set, (iter, new_id_exp_pairs) :: acc) + ) (free_vars, []) iter_binds) + |> snd |> List.rev + +let rec collect_fcalls_exp iter_binds env e = + match e.it with + | CallE (id, args) when StringSet.mem id.it env.rel_set -> + let new_iter_binds = filter_iter_binds args iter_binds in + ((fun_prefix ^ id.it $ id.at, args, e.note), new_iter_binds, List.length new_iter_binds) :: + List.concat_map (collect_fcalls_arg iter_binds env) args + | CallE (_, args) -> List.concat_map (collect_fcalls_arg iter_binds env) args + | StrE fields -> List.concat_map (fun (_a, e1) -> collect_fcalls_exp iter_binds env e1) fields + | UnE (_, _, e1) | CvtE (e1, _, _) | LiftE e1 | TheE e1 | OptE (Some e1) + | ProjE (e1, _) | UncaseE (e1, _) + | CaseE (_, e1) | LenE e1 | DotE (e1, _) + | SubE (e1, _, _) -> collect_fcalls_exp iter_binds env e1 + | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) + | CompE (e1, e2) | MemE (e1, e2) + | CatE (e1, e2) | IdxE (e1, e2) -> collect_fcalls_exp iter_binds env e1 @ collect_fcalls_exp iter_binds env e2 + | TupE exps | ListE exps -> List.concat_map (collect_fcalls_exp iter_binds env) exps + | SliceE (e1, e2, e3) -> collect_fcalls_exp iter_binds env e1 @ collect_fcalls_exp iter_binds env e2 @ collect_fcalls_exp iter_binds env e3 + | UpdE (e1, p, e2) + | ExtE (e1, p, e2) -> collect_fcalls_exp iter_binds env e1 @ collect_fcalls_path iter_binds env p @ collect_fcalls_exp iter_binds env e2 + | IterE (e1,( (iter, id_exp_pairs) as iterexp)) -> + collect_fcalls_exp (iterexp :: iter_binds) env e1 @ collect_fcalls_iter (iterexp :: iter_binds) env iter @ + List.concat_map (fun (_, exp) -> collect_fcalls_exp iter_binds env exp) id_exp_pairs + | _ -> [] + +and collect_fcalls_iter iter_binds env i = + match i with + | ListN (e1, _) -> collect_fcalls_exp iter_binds env e1 + | _ -> [] + +and collect_fcalls_arg iter_binds env a = + match a.it with + | ExpA exp -> collect_fcalls_exp iter_binds env exp + | _ -> (* TODO - possibly need to go through all types of args *) + [] + +and collect_fcalls_prem iter_binds env p = + match p.it with + | IfPr e | RulePr (_, _, e) -> collect_fcalls_exp iter_binds env e + | LetPr (e1, e2, _) -> collect_fcalls_exp iter_binds env e1 @ collect_fcalls_exp iter_binds env e2 + | IterPr (p', iterexp) -> collect_fcalls_prem (iterexp :: iter_binds) env p' + | _ -> [] + +and collect_fcalls_path iter_binds env p = + match p.it with + | RootP -> [] + | IdxP (p, e) -> collect_fcalls_path iter_binds env p @ collect_fcalls_exp iter_binds env e + | SliceP (p, e1, e2) -> collect_fcalls_path iter_binds env p @ collect_fcalls_exp iter_binds env e1 @ collect_fcalls_exp iter_binds env e2 + | DotP (p, _) -> collect_fcalls_path iter_binds env p + +let create_fun_prem ids ((id, args, r_typ), iterexps, _) = + let fresh_var = Utils.generate_var ids "" in + let var_exp = VarE (fresh_var $ id.at) $$ id.at % r_typ in + let new_mixop = [] :: List.init (List.length args + 1) (fun _ -> []) in + let exps = List.map get_exp_arg args in + let r_typ_tup = (VarE ("_" $ id.at) $$ id.at % r_typ, r_typ) in + let tupt = TupT (List.map (fun e -> VarE ("_" $ id.at) $$ id.at % e.note, e.note) exps @ [r_typ_tup]) $ id.at in + let tupe = TupE (exps @ [var_exp]) $$ id.at % tupt in + let rule_prem = RulePr (id, new_mixop, tupe) $ id.at in + let new_var, typ, prem = List.fold_left (fun (var, typ, prem) (iter, id_exp_pairs) -> + let new_typ = IterT (typ, transform_typ_iter iter) $ id.at in + let new_var = apply_iter_to_var var iter in + let var_exp = VarE (new_var $ id.at) $$ id.at % new_typ in + let new_id_exp_pairs = (var $ id.at, var_exp) :: id_exp_pairs in + (new_var, new_typ, IterPr (prem, (iter, new_id_exp_pairs)) $ id.at) + ) (fresh_var, r_typ, rule_prem) iterexps in + fresh_var, ExpB (new_var $ id.at, typ) $ id.at, prem + +let create_call_map fcalls binds = + let fcalls' = Util.Lib.List.nub (fun ((id, args, _), iterexps, _) ((id', args', _), iterexps', _) -> + Eq.eq_id id id' && + Eq.eq_list Eq.eq_arg args args' && + Eq.eq_list Eq.eq_iterexp iterexps iterexps' + ) fcalls in + let ids = List.map get_bind_id binds in + let ids', new_binds, new_prems = List.fold_left (fun acc fcall -> + let ids', binds', prems = acc in + let new_var, bind, prem = create_fun_prem (ids @ ids') fcall in + new_var :: ids', bind :: binds', prem :: prems + ) ([], [], []) fcalls' + in + let call_map = List.fold_left2 (fun map var_id ((fun_id, args, typ), _, iter_num) -> + let var_exp = VarE (var_id $ fun_id.at) $$ fun_id.at % typ in + let call_exp = CallE (fun_id, args) $$ fun_id.at % typ in + ExpMap.add call_exp (var_exp, iter_num) map + ) ExpMap.empty (List.rev ids') fcalls' + in + call_map, new_binds, new_prems + +let rec transform_iter call_map env i = + match i with + | ListN (exp, id_opt) -> ListN (fst (transform_exp call_map env exp), id_opt) + | _ -> i + +and transform_typ call_map env t = + let it, iter_ids = (match t.it with + | VarT (id, args) -> + let args', iter_ids_list = List.split (List.map (transform_arg call_map env) args) in + VarT (id, args'), List.concat iter_ids_list + | TupT exp_typ_pairs -> + let pairs, iter_ids_list = List.split (List.map (fun (e, t) -> + let e', iter_ids = transform_exp call_map env e in + let t', iter_ids2 = transform_typ call_map env t in + (e', t'), iter_ids @ iter_ids2) exp_typ_pairs) in + TupT pairs, List.concat iter_ids_list + | IterT (typ, iter) -> + let typ', iter_ids = transform_typ call_map env typ in + IterT (typ', transform_iter call_map env iter), iter_ids + | typ -> typ, [] + ) in + {t with it}, iter_ids + +and transform_typ_normal call_map env t = fst (transform_typ call_map env t) +and transform_exp call_map env e: (exp * (id * typ * int) list) = + let t_func = transform_exp call_map env in + let it, iter_ids = (match e.it with + | CaseE (m, e1) -> + let e1', iter_ids = t_func e1 in + CaseE (m, e1'), iter_ids + | StrE fields -> + let fields', iter_ids = List.split (List.map (fun (a, e1) -> + let e1', iter_ids = t_func e1 in + (a, e1'), iter_ids) fields) in + StrE fields', List.concat iter_ids + | UnE (unop, optyp, e1) -> + let e1', iter_ids = t_func e1 in + UnE (unop, optyp, e1'), iter_ids + | BinE (binop, optyp, e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + BinE (binop, optyp, e1', e2'), iter_ids @ iter_ids2 + | CmpE (cmpop, optyp, e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + CmpE (cmpop, optyp, e1', e2'), iter_ids @ iter_ids2 + | TupE (exps) -> + let exps', iters_ids = List.split (List.map t_func exps) in + TupE exps', List.concat iters_ids + | ProjE (e1, n) -> + let e1', iter_ids = t_func e1 in + ProjE (e1', n), iter_ids + | UncaseE (e1, m) -> + let e1', iter_ids = t_func e1 in + UncaseE (e1', m), iter_ids + | OptE (Some e1) -> + let e1', iter_ids = t_func e1 in + OptE (Some e1'), iter_ids + | TheE e1 -> + let e1', iter_ids = t_func e1 in + TheE e1', iter_ids + | DotE (e1, a) -> + let e1', iter_ids = t_func e1 in + DotE (e1', a), iter_ids + | CompE (e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + CompE (e1', e2'), iter_ids @ iter_ids2 + | ListE exps -> + let exps', iters_ids = List.split (List.map t_func exps) in + ListE exps', List.concat iters_ids + | LiftE e1 -> + let e1', iter_ids = t_func e1 in + LiftE e1', iter_ids + | MemE (e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + MemE (e1', e2'), iter_ids @ iter_ids2 + | LenE e1 -> + let e1', iter_ids = t_func e1 in + LenE e1', iter_ids + | CatE (e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + CatE (e1', e2'), iter_ids @ iter_ids2 + | IdxE (e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + IdxE (e1', e2'), iter_ids @ iter_ids2 + | SliceE (e1, e2, e3) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + let e3', iter_ids3 = t_func e3 in + SliceE (e1', e2', e3'), iter_ids @ iter_ids2 @ iter_ids3 + | UpdE (e1, p, e2) -> + let e1', iter_ids = t_func e1 in + let p', iter_ids2 = transform_path call_map env p in + let e2', iter_ids3 = t_func e2 in + UpdE (e1', p', e2'), iter_ids @ iter_ids2 @ iter_ids3 + | ExtE (e1, p, e2) -> + let e1', iter_ids = t_func e1 in + let p', iter_ids2 = transform_path call_map env p in + let e2', iter_ids3 = t_func e2 in + ExtE (e1', p', e2'), iter_ids @ iter_ids2 @ iter_ids3 + | CallE (id, args) -> + let e' = {e with it = CallE (fun_prefix ^ id.it $ id.at, args)} in + begin match (ExpMap.find_opt e' call_map) with + | Some (e', 0) -> e'.it, [] + | Some ({it = VarE id; note; _} as e', n) -> e'.it, [(id, note, n - 1)] + | _ -> + let args', iter_ids_list = List.split (List.map (transform_arg call_map env) args) in + CallE (id, args'), List.concat iter_ids_list + end + | IterE (e1, (iter, id_exp_pairs)) -> + let e1', iter_ids = t_func e1 in + let free_vars = (Free.free_exp e1').varid in + let new_id_exp_pairs = List.map (fun (id, typ, _) -> + let itert = IterT (typ, transform_typ_iter iter) $ typ.at in + (id, VarE (apply_iter_to_var id.it iter $ id.at) $$ id.at % itert) + ) iter_ids in + let new_iter_ids = List.filter_map (fun (id, typ, num) -> + if num = 0 then None else + let itert = IterT (typ, transform_typ_iter iter) $ typ.at in + Some (apply_iter_to_var id.it iter $ id.at, itert, num - 1) + ) iter_ids in + let id_exp_pairs_filtered, more_iter_ids = List.split (List.filter_map (fun (id, iter_e) -> + if not (Free.Set.mem id.it free_vars) then None else + let iter_e', iter_ids = t_func iter_e in + Some ((id, iter_e'), iter_ids) + ) id_exp_pairs) + in + IterE (e1', (transform_iter call_map env iter, new_id_exp_pairs @ id_exp_pairs_filtered)), + new_iter_ids @ List.concat more_iter_ids + | CvtE (e1, nt1, nt2) -> + let e1', iter_ids = t_func e1 in + CvtE (e1', nt1, nt2), iter_ids + | SubE (e1, t1, t2) -> + let e1', iter_ids = t_func e1 in + let t1', iter_ids2 = transform_typ call_map env t1 in + let t2', iter_ids3 = transform_typ call_map env t2 in + SubE (e1', t1', t2'), iter_ids @ iter_ids2 @ iter_ids3 + | exp -> exp, []) in + {e with it}, iter_ids + + +and transform_path call_map env path = + let it, iter_ids = (match path.it with + | RootP -> RootP, [] + | IdxP (p, e1) -> + let p', iter_ids = transform_path call_map env p in + let e1', iter_ids2 = transform_exp call_map env e1 in + IdxP (p', e1'), iter_ids @ iter_ids2 + | SliceP (p, e1, e2) -> + let p', iter_ids = transform_path call_map env p in + let e1', iter_ids2 = transform_exp call_map env e1 in + let e2', iter_ids3 = transform_exp call_map env e2 in + SliceP (p', e1', e2'), iter_ids @ iter_ids2 @ iter_ids3 + | DotP (p, a) -> + let p', iter_ids = transform_path call_map env p in + DotP (p', a), iter_ids + ) in + {path with it}, iter_ids +and transform_exp_normal call_map env e = fst (transform_exp call_map env e) +and transform_sym call_map env s = + let it, iter_ids = (match s.it with + | VarG (id, args) -> + let args', iter_ids_list = List.split (List.map (transform_arg call_map env) args) in + VarG (id, args'), List.concat iter_ids_list + | SeqG syms -> + let syms', iter_ids_list = List.split (List.map (transform_sym call_map env) syms) in + SeqG syms', List.concat iter_ids_list + | AltG syms -> + let syms', iter_ids_list = List.split (List.map (transform_sym call_map env) syms) in + AltG syms', List.concat iter_ids_list + | RangeG (syml, symu) -> + let syml', iter_ids = transform_sym call_map env syml in + let symu', iter_ids2 = transform_sym call_map env symu in + RangeG (syml', symu'), iter_ids @ iter_ids2 + | IterG (sym, (iter, id_exp_pairs)) -> + let sym', iter_ids = transform_sym call_map env sym in + IterG (sym', (transform_iter call_map env iter, + List.map (fun (id, exp) -> (id, fst (transform_exp call_map env exp))) id_exp_pairs) + ), iter_ids + | AttrG (e, sym) -> + let e', iter_ids = transform_exp call_map env e in + let sym', iter_ids2 = transform_sym call_map env sym in + AttrG (e', sym'), iter_ids @ iter_ids2 + | sym -> sym, [] + ) in + {s with it}, iter_ids + +and transform_arg call_map env a: arg * (id * typ * int) list = + let it, iter_ids = (match a.it with + | ExpA exp -> + let exp', iter_ids = transform_exp call_map env exp in + ExpA exp', iter_ids + | TypA typ -> + let typ', iter_ids = transform_typ call_map env typ in + TypA typ', iter_ids + | DefA id -> DefA id, [] + | GramA sym -> + let sym', iter_ids = transform_sym call_map env sym in + GramA sym', iter_ids + ) in + {a with it}, iter_ids + +and transform_bind env b = + (match b.it with + | ExpB (id, typ) -> ExpB (id, transform_typ_normal ExpMap.empty env typ) + | TypB id -> TypB id + | DefB (id, params, typ) -> DefB (id, List.map (transform_param ExpMap.empty env) params, transform_typ_normal ExpMap.empty env typ) + | GramB (id, params, typ) -> GramB (id, List.map (transform_param ExpMap.empty env) params, transform_typ_normal ExpMap.empty env typ) + ) $ b.at + +and transform_param call_map env p = + (match p.it with + | ExpP (id, typ) -> ExpP (id, transform_typ_normal call_map env typ) + | TypP id -> TypP id + | DefP (id, params, typ) -> DefP (id, List.map (transform_param call_map env) params, transform_typ_normal call_map env typ) + | GramP (id, typ) -> GramP (id, transform_typ_normal call_map env typ) + ) $ p.at + +let rec transform_prem call_map env prem = + let it, iter_ids = match prem.it with + | RulePr (id, m, e) -> + let e', iter_ids = transform_exp call_map env e in + RulePr (id, m, e'), iter_ids + | IfPr e -> + let e', iter_ids = transform_exp call_map env e in + IfPr e', iter_ids + | LetPr (e1, e2, ids) -> + (* TODO - properly handle this if it actually gets used *) + let e1', iter_ids = transform_exp call_map env e1 in + let e2', iter_ids2 = transform_exp call_map env e2 in + LetPr (e1', e2', ids), iter_ids @ iter_ids2 + | ElsePr -> ElsePr, [] + | IterPr (prem1, (iter, id_exp_pairs)) -> + let prem1', iter_ids = transform_prem call_map env prem1 in + let free_vars = (Free.free_prem prem1').varid in + let new_id_exp_pairs = List.map (fun (id, typ, _) -> + let itert = IterT (typ, transform_typ_iter iter) $ typ.at in + (id, VarE (apply_iter_to_var id.it iter $ id.at) $$ id.at % itert) + ) iter_ids in + let new_iter_ids = List.filter_map (fun (id, typ, num) -> + if num = 0 then None else + let itert = IterT (typ, transform_typ_iter iter) $ typ.at in + Some (apply_iter_to_var id.it iter $ id.at, itert, num - 1) + ) iter_ids in + let id_exp_pairs_filtered, more_iter_ids = List.split (List.filter_map (fun (id, iter_e) -> + if not (Free.Set.mem id.it free_vars) then None else + let iter_e' , iter_ids = transform_exp call_map env iter_e in + Some ((id, iter_e'), iter_ids) + ) id_exp_pairs) in + IterPr (prem1', (transform_iter call_map env iter, new_id_exp_pairs @ id_exp_pairs_filtered)), + new_iter_ids @ List.concat more_iter_ids + | NegPr p -> + let p', iter_ids = transform_prem call_map env p in + NegPr p', iter_ids + in + {prem with it}, iter_ids + +and transform_prem_normal call_map env prem = fst (transform_prem call_map env prem) + +let transform_rule env rule = + (match rule.it with + | RuleD (id, binds, m, exp, prems) -> + let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in + let call_map, new_binds, new_prems = create_call_map fcalls binds in + RuleD (id.it $ no_region, + List.map (transform_bind env) (binds @ new_binds), + m, + transform_exp_normal call_map env exp, + List.map (transform_prem_normal call_map env) (new_prems @ prems)) + ) $ rule.at + +let transform_clause env clause = + (match clause.it with + | DefD (binds, args, exp, prems) -> + let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in + let call_map, new_binds, new_prems = create_call_map fcalls binds in + DefD ( + List.map (transform_bind env) (binds @ new_binds), + args, + transform_exp_normal call_map env exp, + List.map (transform_prem_normal call_map env) (new_prems @ prems)) + ) $ clause.at + +let transform_prod env prod = + match prod.it with + | ProdD (binds, sym, exp, prems) -> + let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in + let call_map, new_binds, new_prems = create_call_map fcalls binds in + ProdD (List.map (transform_bind env) (binds @ new_binds), + sym, + transform_exp_normal call_map env exp, + List.map (transform_prem_normal call_map env) (new_prems @ prems)) $ prod.at + +let is_exp_param param = + match param.it with + | ExpP _ -> true + | _ -> false + +let rec has_sub_exp e = + match e.it with + | SubE _ -> true + | StrE fields -> List.exists (fun (_a, e1) -> has_sub_exp e1) fields + | UnE (_, _, e1) | CvtE (e1, _, _) | LiftE e1 | TheE e1 | OptE (Some e1) + | ProjE (e1, _) | UncaseE (e1, _) + | CaseE (_, e1) | LenE e1 | DotE (e1, _) -> has_sub_exp e1 + | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) + | CompE (e1, e2) | MemE (e1, e2) + | CatE (e1, e2) | IdxE (e1, e2) -> has_sub_exp e1 || has_sub_exp e2 + | TupE exps | ListE exps -> List.exists has_sub_exp exps + | SliceE (e1, e2, e3) -> has_sub_exp e1 || has_sub_exp e2 || has_sub_exp e3 + | UpdE (e1, p, e2) + | ExtE (e1, p, e2) -> has_sub_exp e1 || has_sub_exp_path p || has_sub_exp e2 + | CallE (_id, args) -> List.exists has_sub_exp_arg args + | IterE (e1, (_, id_exp_pairs)) -> has_sub_exp e1 || List.exists (fun (_, exp) -> has_sub_exp exp) id_exp_pairs + | _ -> false + +and has_sub_exp_arg a = + match a.it with + | ExpA e -> has_sub_exp e + | _ -> false + +and has_sub_exp_path p = + match p.it with + | RootP -> false + | IdxP (p, e) -> has_sub_exp_path p || has_sub_exp e + | SliceP (p, e1, e2) -> has_sub_exp_path p || has_sub_exp e1 || has_sub_exp e2 + | DotP (p, _) -> has_sub_exp_path p + +let rec utilizes_rel_def env e = + match e.it with + | CallE (id, args) -> StringSet.mem id.it env.rel_set || List.exists (utilizes_rel_def_arg env) args + | StrE fields -> List.exists (fun (_a, e1) -> utilizes_rel_def env e1) fields + | UnE (_, _, e1) | CvtE (e1, _, _) | LiftE e1 | TheE e1 | OptE (Some e1) + | ProjE (e1, _) | UncaseE (e1, _) + | CaseE (_, e1) | LenE e1 | DotE (e1, _) + | SubE (e1, _, _) -> utilizes_rel_def env e1 + | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) + | CompE (e1, e2) | MemE (e1, e2) + | CatE (e1, e2) | IdxE (e1, e2) -> utilizes_rel_def env e1 || utilizes_rel_def env e2 + | TupE exps | ListE exps -> List.exists (utilizes_rel_def env) exps + | SliceE (e1, e2, e3) -> utilizes_rel_def env e1 || utilizes_rel_def env e2 || utilizes_rel_def env e3 + | UpdE (e1, p, e2) + | ExtE (e1, p, e2) -> utilizes_rel_def env e1 || utilizes_rel_def_path env p || utilizes_rel_def env e2 + | IterE (e1, (_, id_exp_pairs)) -> utilizes_rel_def env e1 || List.exists (fun (_, exp) -> utilizes_rel_def env exp) id_exp_pairs + | _ -> false + +and utilizes_rel_def_arg env a = + match a.it with + | ExpA e -> utilizes_rel_def env e + | _ -> false + +and utilizes_rel_def_path env p = + match p.it with + | RootP -> false + | IdxP (p, e) -> utilizes_rel_def_path env p || utilizes_rel_def env e + | SliceP (p, e1, e2) -> utilizes_rel_def_path env p || utilizes_rel_def env e1 || utilizes_rel_def env e2 + | DotP (p, _) -> utilizes_rel_def_path env p + +let collect_list_length_vars () : StringSet.t ref * (module Iter.Arg) = + let module Arg = + struct + include Iter.Skip + let acc = ref StringSet.empty + let visit_exp exp = + match exp.it with + | IterE (_, (ListN ({it = VarE id; _}, _), [_])) -> + acc := StringSet.add id.it !acc + | _ -> () + end + in Arg.acc, (module Arg) + +let must_be_relation env id params clauses = + let listn_set, (module Arg : Iter.Arg) = collect_list_length_vars () in + assert (!listn_set = StringSet.empty); + let module Acc = Iter.Make(Arg) in + (* Current limitation of relations - can only have standard types. + No type parameters or higher order functions *) + List.for_all is_exp_param params && + (* Limitation - functions used as def ids cannot be relations *) + not (StringSet.mem id.it env.def_arg_set) && + List.exists (fun c -> match c.it with + | DefD (binds, args, exp, prems) -> + Acc.args args; + (* Can't have subtyping matching *) + List.exists has_sub_exp_arg args || + (* Premises might not be decidable *) + prems <> [] || + (* Functions that have function calls transformed to relations must also be relations *) + utilizes_rel_def env exp || + (* Checking if equality binding is active *) + fst (List.fold_left (fun (acc_bool, free_set) arg -> + let free_vars = Free.free_arg arg in + (acc_bool || Free.inter free_vars free_set <> Free.empty, Free.union free_vars free_set) + ) (false, Free.empty) args) || + (* There are more binded variables than utilized in the arguments *) + let bounded_vars = Free.free_list Free.bound_bind binds in + let free_vars = Free.free_list Free.free_arg args in + Free.diff bounded_vars free_vars <> Free.empty || + (* HACK - dealing with list of a specified length with relations instead of functions *) + !listn_set <> StringSet.empty + ) clauses + + +let cvt_def_to_rel env id params r_typ clauses = + let get_param_typ p = + match p.it with + | ExpP (_, t) -> t + | _ -> assert false + in + let types = List.map get_param_typ params @ [r_typ] in + let tupt = TupT (List.map (fun t -> (VarE ("_" $ id.at) $$ id.at % t), t) types) $ id.at in + let new_mixop = [] :: List.init (List.length params + 1) (fun _ -> []) in + let rules = List.mapi (fun i clause -> + match clause.it with + | DefD (binds, args, exp, prems) -> + let exps = List.map get_exp_arg args in + let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in + let call_map, new_binds, new_prems = create_call_map fcalls binds in + let tupe = TupE (exps @ [transform_exp_normal call_map env exp]) $$ id.at % tupt in + RuleD (fun_prefix ^ id.it ^ "_case_" ^ Int.to_string i $ id.at, binds @ new_binds, new_mixop, tupe, List.map (transform_prem_normal call_map env) (new_prems @ prems)) $ id.at + ) clauses + in + RelD (fun_prefix ^ id.it $ id.at, new_mixop, tupt, rules) + +let rec transform_def (env : env) def = + let must_be_rel_def d = + match d.it with + | DecD (id, params, _, clauses) -> must_be_relation env id params clauses + | _ -> false + in + let has_exp_params d = + match d.it with + | DecD (_, params, _, _) -> List.for_all is_exp_param params + | _ -> false + in + (match def.it with + | RelD (id, m, typ, rules) -> + RelD (id, m, typ, List.map (transform_rule env) rules) + | DecD (id, params, typ, clauses) when must_be_relation env id params clauses -> + env.rel_set <- StringSet.add id.it env.rel_set; + cvt_def_to_rel env id params typ clauses + | DecD (id, params, typ, clauses) -> + DecD (id, params, typ, List.map (transform_clause env) clauses) + | RecD defs when List.exists must_be_rel_def defs && List.for_all has_exp_params defs -> + List.iter (fun d -> match d.it with + | DecD (id, _, _, _) -> env.rel_set <- StringSet.add id.it env.rel_set + | _ -> () + ) defs; + RecD (List.map (transform_def env) defs) + | RecD defs -> RecD (List.map (transform_def env) defs) + | GramD (id, params, typ, prods) -> GramD (id, params, typ, List.map (transform_prod env) prods) + | d -> d + ) $ def.at + +let collect_def_args (): StringSet.t ref * (module Iter.Arg) = + let module Arg = + struct + include Iter.Skip + let acc = ref StringSet.empty + let visit_arg arg = + match arg.it with + | DefA id -> acc := StringSet.add id.it !acc + | _ -> () + end + in Arg.acc, (module Arg) + +let transform (il : script): script = + let env = empty_env in + env.env <- Il.Env.env_of_script il; + let acc, (module Arg : Iter.Arg) = collect_def_args () in + let module Acc = Iter.Make(Arg) in + List.iter Acc.def il; + env.def_arg_set <- !acc; + List.map (transform_def env) il \ No newline at end of file diff --git a/spectec/src/middlend/deftorel.mli b/spectec/src/middlend/deftorel.mli new file mode 100644 index 0000000000..64d020ff9d --- /dev/null +++ b/spectec/src/middlend/deftorel.mli @@ -0,0 +1 @@ +val transform : Il.Ast.script -> Il.Ast.script \ No newline at end of file diff --git a/spectec/src/middlend/dune b/spectec/src/middlend/dune index 49f60f2c47..578ba31598 100644 --- a/spectec/src/middlend/dune +++ b/spectec/src/middlend/dune @@ -10,5 +10,6 @@ else undep utils + deftorel ) ) diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index 43e0d72e05..9a31d461e0 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -194,6 +194,8 @@ and transform_exp env e = (* HACK - Change IterE of option with no iteration variable into a OptE *) | IterE (e1, (Opt, [])) -> OptE (Some (t_func e1)) + | IterE (e1, (List, [])) | IterE (e1, (List1, [])) -> + ListE [t_func e1] | IterE (e1, (iter, id_exp_pairs)) -> IterE (t_func e1, (transform_iter env iter, List.map (fun (id, exp) -> (id, t_func exp)) id_exp_pairs)) | CvtE (e1, nt1, nt2) -> CvtE (t_func e1, nt1, nt2) | SubE (e1, t1, t2) -> SubE (t_func e1, transform_typ env t1, transform_typ env t2) From d28d30554e06dc20edb63fadaf4f0ceb654f6f93 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 18 Nov 2025 16:49:00 +0000 Subject: [PATCH 002/115] Added fallthrough semantics to converted defs, which conveniently handles otherwise. --- spectec/src/middlend/deftorel.ml | 78 ++++++++++++++++++++++++++------ spectec/src/middlend/utils.ml | 7 +++ 2 files changed, 70 insertions(+), 15 deletions(-) diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index 7cabd1057c..1fa43f175b 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -1,6 +1,7 @@ open Il.Ast open Il open Util.Source +open Util module StringSet = Set.Make(String) @@ -12,13 +13,13 @@ module ExpMap = Map.Make(struct end) type env = { - mutable env : Il.Env.t; + mutable il_env : Il.Env.t; mutable rel_set : StringSet.t; mutable def_arg_set : StringSet.t } let empty_env = { - env = Il.Env.empty; + il_env = Il.Env.empty; rel_set = StringSet.empty; def_arg_set = StringSet.empty } @@ -296,7 +297,6 @@ and transform_exp call_map env e: (exp * (id * typ * int) list) = | exp -> exp, []) in {e with it}, iter_ids - and transform_path call_map env path = let it, iter_ids = (match path.it with | RootP -> RootP, [] @@ -314,7 +314,9 @@ and transform_path call_map env path = DotP (p', a), iter_ids ) in {path with it}, iter_ids + and transform_exp_normal call_map env e = fst (transform_exp call_map env e) + and transform_sym call_map env s = let it, iter_ids = (match s.it with | VarG (id, args) -> @@ -514,6 +516,16 @@ and utilizes_rel_def_path env p = | SliceP (p, e1, e2) -> utilizes_rel_def_path env p || utilizes_rel_def env e1 || utilizes_rel_def env e2 | DotP (p, _) -> utilizes_rel_def_path env p +and utilizes_rel_def_prem env p = + match p.it with + | IfPr e -> utilizes_rel_def env e + | RulePr (_, _, e) -> utilizes_rel_def env e + | LetPr (e1, e2, _) -> utilizes_rel_def env e1 || utilizes_rel_def env e2 + | IterPr (p', (_, id_exp_pairs)) -> + utilizes_rel_def_prem env p' || + List.exists (fun (_, exp) -> utilizes_rel_def env exp) id_exp_pairs + | _ -> false + let collect_list_length_vars () : StringSet.t ref * (module Iter.Arg) = let module Arg = struct @@ -545,6 +557,7 @@ let must_be_relation env id params clauses = prems <> [] || (* Functions that have function calls transformed to relations must also be relations *) utilizes_rel_def env exp || + List.exists (utilizes_rel_def_prem env) prems || (* Checking if equality binding is active *) fst (List.fold_left (fun (acc_bool, free_set) arg -> let free_vars = Free.free_arg arg in @@ -558,6 +571,40 @@ let must_be_relation env id params clauses = !listn_set <> StringSet.empty ) clauses +let get_tuple_exp e = + match e.it with + | TupE exps -> exps + | _ -> [e] + +let generate_matching_rules env args tupt r = + match r.it with + | RuleD (id, binds, mixop, exp', prems) -> + let (args', _) = Lib.List.split_last (get_tuple_exp exp') in + let new_exp = TupE args' $$ exp'.at % tupt in + (try Eval.match_list Eval.match_exp env.il_env Subst.empty args' args with Eval.Irred -> None) |> + Option.map (fun _ -> {r with it = RuleD (id, binds, List.tl mixop, new_exp, prems)}) + +let fall_through_prems env id mixop typs rules = + let gen_rel_name rid = + id.it ^ "_before_" ^ rid.it $ id.at + in + let rec go prev_rules = function + | [] -> [ RelD (id, mixop, TupT typs $ id.at, List.rev prev_rules) $ id.at ] + | ({it = RuleD (rid, binds, m, exp, prems); _} as r) :: rs -> + let (args, _) = Lib.List.split_last (get_tuple_exp exp) in + let (typs', _) = Lib.List.split_last typs in + let tupt = TupT typs' $ id.at in + let rules' = + List.filter_map (generate_matching_rules env args tupt) prev_rules + in + let prems' = List.filter (fun p -> p.it <> ElsePr) prems in + if rules' = [] then go ({ r with it = RuleD (rid, binds, m, exp, prems') } :: prev_rules) rs else + let relation = RelD (gen_rel_name rid, List.tl mixop, tupt, rules') $ id.at in + let negrulepr = NegPr (RulePr (gen_rel_name rid, List.tl mixop, TupE args $$ exp.at % tupt) $ rid.at) $ rid.at in + let new_rule = { r with it = RuleD (rid, binds, m, exp, negrulepr :: prems') } in + relation :: go (new_rule :: prev_rules) rs + in + go [] rules let cvt_def_to_rel env id params r_typ clauses = let get_param_typ p = @@ -566,7 +613,7 @@ let cvt_def_to_rel env id params r_typ clauses = | _ -> assert false in let types = List.map get_param_typ params @ [r_typ] in - let tupt = TupT (List.map (fun t -> (VarE ("_" $ id.at) $$ id.at % t), t) types) $ id.at in + let tup_types = (List.map (fun t -> (VarE ("_" $ id.at) $$ id.at % t), t) types) in let new_mixop = [] :: List.init (List.length params + 1) (fun _ -> []) in let rules = List.mapi (fun i clause -> match clause.it with @@ -574,11 +621,12 @@ let cvt_def_to_rel env id params r_typ clauses = let exps = List.map get_exp_arg args in let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in let call_map, new_binds, new_prems = create_call_map fcalls binds in - let tupe = TupE (exps @ [transform_exp_normal call_map env exp]) $$ id.at % tupt in + let tupe = TupE (exps @ [transform_exp_normal call_map env exp]) $$ id.at % (TupT tup_types $ id.at) in RuleD (fun_prefix ^ id.it ^ "_case_" ^ Int.to_string i $ id.at, binds @ new_binds, new_mixop, tupe, List.map (transform_prem_normal call_map env) (new_prems @ prems)) $ id.at ) clauses in - RelD (fun_prefix ^ id.it $ id.at, new_mixop, tupt, rules) + let new_id = { id with it = fun_prefix ^ id.it } in + fall_through_prems env new_id new_mixop tup_types rules let rec transform_def (env : env) def = let must_be_rel_def d = @@ -593,22 +641,22 @@ let rec transform_def (env : env) def = in (match def.it with | RelD (id, m, typ, rules) -> - RelD (id, m, typ, List.map (transform_rule env) rules) + [{ def with it =RelD (id, m, typ, List.map (transform_rule env) rules) }] | DecD (id, params, typ, clauses) when must_be_relation env id params clauses -> env.rel_set <- StringSet.add id.it env.rel_set; cvt_def_to_rel env id params typ clauses | DecD (id, params, typ, clauses) -> - DecD (id, params, typ, List.map (transform_clause env) clauses) + [{ def with it = DecD (id, params, typ, List.map (transform_clause env) clauses) }] | RecD defs when List.exists must_be_rel_def defs && List.for_all has_exp_params defs -> List.iter (fun d -> match d.it with | DecD (id, _, _, _) -> env.rel_set <- StringSet.add id.it env.rel_set | _ -> () ) defs; - RecD (List.map (transform_def env) defs) - | RecD defs -> RecD (List.map (transform_def env) defs) - | GramD (id, params, typ, prods) -> GramD (id, params, typ, List.map (transform_prod env) prods) - | d -> d - ) $ def.at + [{ def with it = RecD (List.concat_map (transform_def env) defs) }] + | RecD defs -> [{ def with it = RecD (List.concat_map (transform_def env) defs) }] + | GramD (id, params, typ, prods) -> [{ def with it = GramD (id, params, typ, List.map (transform_prod env) prods) }] + | d -> [d $ def.at] + ) let collect_def_args (): StringSet.t ref * (module Iter.Arg) = let module Arg = @@ -624,9 +672,9 @@ let collect_def_args (): StringSet.t ref * (module Iter.Arg) = let transform (il : script): script = let env = empty_env in - env.env <- Il.Env.env_of_script il; + env.il_env <- Il.Env.env_of_script il; let acc, (module Arg : Iter.Arg) = collect_def_args () in let module Acc = Iter.Make(Arg) in List.iter Acc.def il; env.def_arg_set <- !acc; - List.map (transform_def env) il \ No newline at end of file + List.concat_map (transform_def env) il \ No newline at end of file diff --git a/spectec/src/middlend/utils.ml b/spectec/src/middlend/utils.ml index 0c45f4d5fc..e8ce8bbf34 100644 --- a/spectec/src/middlend/utils.ml +++ b/spectec/src/middlend/utils.ml @@ -31,6 +31,13 @@ and reduce_inst_alias env args inst base_typ = ) | _ -> base_typ +let is_part_of_bind (free_set : Free.sets) b = + match b.it with + | ExpB (id, _) -> Free.Set.mem id.it free_set.varid + | TypB id -> Free.Set.mem id.it free_set.typid + | DefB (id, _, _) -> Free.Set.mem id.it free_set.defid + | GramB (id, _, _) -> Free.Set.mem id.it free_set.gramid + let generate_var ids id = let start = 0 in let fresh_prefix = "var" in From 2be03e589520e398048591397bc9db74b8d193e5 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 8 Dec 2025 16:14:44 +0000 Subject: [PATCH 003/115] Remove created relations out of recursive groups if they don't call the recursive functions themselves. --- spectec/src/middlend/deftorel.ml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index db9e7719f1..6704520ca9 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -587,7 +587,9 @@ let generate_matching_rules env args tupt r = let (args', _) = Lib.List.split_last (get_tuple_exp exp') in let new_exp = TupE args' $$ exp'.at % tupt in (try Eval.match_list Eval.match_exp env.il_env Subst.empty args' args with Eval.Irred -> None) |> - Option.map (fun _ -> {r with it = RuleD (id, binds, List.tl mixop, new_exp, prems)}) + Option.map (fun _ -> + {r with it = RuleD (id, binds, List.tl mixop, new_exp, prems)} + ) let fall_through_prems env id mixop typs rules = let gen_rel_name rid = @@ -633,6 +635,13 @@ let cvt_def_to_rel env id params r_typ clauses = let new_id = { id with it = fun_prefix ^ id.it } in fall_through_prems env new_id new_mixop tup_types rules +let uses_def ids_set def = + match def.it with + | RelD (_, _, _, rules) -> + let free_defs = (Free.free_list (Free.free_rule) rules).relid in + Free.Set.inter free_defs ids_set <> Free.Set.empty + | _ -> false + let rec transform_def (env : env) def = let must_be_rel_def d = match d.it with @@ -646,18 +655,25 @@ let rec transform_def (env : env) def = in (match def.it with | RelD (id, m, typ, rules) -> - [{ def with it =RelD (id, m, typ, List.map (transform_rule env) rules) }] + [{ def with it = RelD (id, m, typ, List.map (transform_rule env) rules) }] | DecD (id, params, typ, clauses) when must_be_relation env id params clauses -> env.rel_set <- StringSet.add id.it env.rel_set; cvt_def_to_rel env id params typ clauses | DecD (id, params, typ, clauses) -> [{ def with it = DecD (id, params, typ, List.map (transform_clause env) clauses) }] | RecD defs when List.exists must_be_rel_def defs && List.for_all has_exp_params defs -> + let ids_ref = ref StringSet.empty in List.iter (fun d -> match d.it with - | DecD (id, _, _, _) -> env.rel_set <- StringSet.add id.it env.rel_set + | DecD (id, _, _, _) -> + ids_ref := StringSet.add (fun_prefix ^ id.it) !ids_ref; + env.rel_set <- StringSet.add id.it env.rel_set | _ -> () ) defs; - [{ def with it = RecD (List.concat_map (transform_def env) defs) }] + let rec_defs, filtered_defs = defs |> + List.concat_map (transform_def env) |> + List.partition (uses_def !ids_ref) + in + filtered_defs @ [{ def with it = RecD rec_defs }] | RecD defs -> [{ def with it = RecD (List.concat_map (transform_def env) defs) }] | GramD (id, params, typ, prods) -> [{ def with it = GramD (id, params, typ, List.map (transform_prod env) prods) }] | d -> [d $ def.at] From 9d24f4e47b8b435fc167192703b506a43b60fe4e Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 8 Dec 2025 17:04:45 +0000 Subject: [PATCH 004/115] Added a filter to the prems from the generated fallthrough relations that removes ones that have reference to the return expression. --- spectec/src/middlend/deftorel.ml | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index 6704520ca9..8fd944d5da 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -581,6 +581,34 @@ let get_tuple_exp e = | TupE exps -> exps | _ -> [e] +(* + This function filters out premises that were function calls before. It only filters them out if they are + not being used in the premises following it. It assumes that the premises are in order (at the very least, + that function calls return variables are not used beforehand) which is true by the construction above. + This avoids the problem with violating strictly positive condition for inductive relations when the recursive + function call appears in the return expression. This does not however prevent the violation of the condition + completely, as any recursive function call that appears as a pattern guard will violate this (as long as the + fallthrough semantics is enforced). +*) +let rec filter_return_prems prems = + let pred p ps = + match p.it with + | RulePr (id, _, {it = TupE exps; _}) when String.starts_with ~prefix:fun_prefix id.it -> + let last_exp = Lib.List.last_opt exps in + begin match last_exp with + | None -> true + | Some exp -> + let free_vars = (Free.free_exp exp).varid in + let free_vars_prems = (Free.free_list Free.free_prem ps).varid in + Free.Set.inter free_vars free_vars_prems <> Free.Set.empty + end + | _ -> true + in + match prems with + | [] -> [] + | p :: ps when pred p ps -> p :: filter_return_prems ps + | _ :: ps -> filter_return_prems ps + let generate_matching_rules env args tupt r = match r.it with | RuleD (id, binds, mixop, exp', prems) -> @@ -588,7 +616,7 @@ let generate_matching_rules env args tupt r = let new_exp = TupE args' $$ exp'.at % tupt in (try Eval.match_list Eval.match_exp env.il_env Subst.empty args' args with Eval.Irred -> None) |> Option.map (fun _ -> - {r with it = RuleD (id, binds, List.tl mixop, new_exp, prems)} + {r with it = RuleD (id, binds, List.tl mixop, new_exp, filter_return_prems prems)} ) let fall_through_prems env id mixop typs rules = From 2ef2c5e2f4b42e4bc603a8730dc69558e2edebf9 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Wed, 14 Jan 2026 15:21:15 +0000 Subject: [PATCH 005/115] Else simplification pass in progress --- spectec/src/exe-spectec/main.ml | 5 + spectec/src/middlend/dune | 1 + spectec/src/middlend/elsesimp.ml | 149 ++++++++++++++++++++++++++++++ spectec/src/middlend/elsesimp.mli | 1 + 4 files changed, 156 insertions(+) create mode 100644 spectec/src/middlend/elsesimp.ml create mode 100644 spectec/src/middlend/elsesimp.mli diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index 9088adf0f2..4ec9047b9d 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -27,6 +27,7 @@ type pass = | AliasDemut | ImproveIds | Ite + | ElseSimp (* This list declares the intended order of passes. @@ -41,6 +42,7 @@ let all_passes = [ Undep; Totalize; Else; + ElseSimp; Uncaseremoval; Sideconditions; SubExpansion; @@ -112,6 +114,7 @@ let pass_flag = function | Uncaseremoval -> "uncase-removal" | ImproveIds -> "improve-ids" | Ite -> "ite" + | ElseSimp -> "else-simplification" let pass_desc = function | Sub -> "Synthesize explicit subtype coercions" @@ -126,6 +129,7 @@ let pass_desc = function | AliasDemut -> "Lifts type aliases out of mutual groups" | ImproveIds -> "Disambiguates ids used from each other" | Ite -> "If-then-else introduction" + | ElseSimp -> "Simplifies generated otherwise relations (after else pass)" let run_pass : pass -> Il.Ast.script -> Il.Ast.script = function @@ -141,6 +145,7 @@ let run_pass : pass -> Il.Ast.script -> Il.Ast.script = function | AliasDemut -> Middlend.AliasDemut.transform | ImproveIds -> Middlend.Improveids.transform | Ite -> Middlend.Ite.transform + | ElseSimp -> Middlend.Elsesimp.transform (* Argument parsing *) diff --git a/spectec/src/middlend/dune b/spectec/src/middlend/dune index c2bc064072..e645881648 100644 --- a/spectec/src/middlend/dune +++ b/spectec/src/middlend/dune @@ -15,5 +15,6 @@ aliasDemut improveids ite + elsesimp ) ) diff --git a/spectec/src/middlend/elsesimp.ml b/spectec/src/middlend/elsesimp.ml new file mode 100644 index 0000000000..9bbed8acf8 --- /dev/null +++ b/spectec/src/middlend/elsesimp.ml @@ -0,0 +1,149 @@ +open Il.Ast +open Util.Source +open Util +open Il + +module StringMap = Map.Make(String) +module StringSet = Set.Make(String) + +type env = +{ + il_env : Il.Env.t; + mutable rel_to_else_map : text list StringMap.t; + mutable else_set_to_remove : StringSet.t; + mutable wf_relations : StringSet.t +} + +let new_env il = { + il_env = Il.Env.env_of_script il; + rel_to_else_map = StringMap.empty; + else_set_to_remove = StringSet.empty; + wf_relations = StringSet.empty +} + +let is_else_rel_hint hint = hint.hintid.it = Else.else_relation_hint_id +let is_wf_rel_hint hint = hint.hintid.it = Undep.wf_hint_id + +let bind_else_set env id = + env.else_set_to_remove <- StringSet.add id env.else_set_to_remove + +let register_else_rel env id base_rel_id = + env.rel_to_else_map <- StringMap.update base_rel_id (fun opt -> + match opt with + | Some ids -> Some (id.it :: ids) + | _ -> Some [id.it] + ) env.rel_to_else_map + +let register_wf_rel env id = + env.wf_relations <- StringSet.add id.it env.wf_relations + +let rec register_hints env (def : def) = + match def.it with + | HintD {it = RelH (id, hints); _} when List.exists is_wf_rel_hint hints -> + register_wf_rel env id + | HintD {it = RelH (id, hints); _} when List.exists is_else_rel_hint hints -> + begin match List.find_opt is_else_rel_hint hints with + | Some {hintexp = { it = TextE rel_id; _}; _} -> + register_else_rel env id rel_id + | _ -> () + end + | RecD defs -> List.iter (register_hints env) defs + | _ -> () + +let (let*) = Option.bind + +let is_boolean_prem prem = + match prem.it with + | IfPr _ -> true + (* | IterPr (p, _) -> is_boolean_prem p *) + | _ -> false + +let neg_cmpop cmpop = + match cmpop with + | `LeOp -> `GtOp + | `GtOp -> `LeOp + | `GeOp -> `LtOp + | `LtOp -> `GeOp + | `EqOp -> `NeOp + | `NeOp -> `EqOp + +let rec neg_exp exp = + { exp with it = + match exp.it with + | CmpE (cmpop, optyp, e1, e2) -> CmpE (neg_cmpop cmpop, optyp, e1, e2) + | BinE (`AndOp, optyp, e1, e2) -> BinE (`OrOp, optyp, neg_exp e1, neg_exp e2) + | BinE (`OrOp, optyp, e1, e2) -> BinE (`AndOp, optyp, neg_exp e1, neg_exp e2) + | UnE (`NotOp, _, e1) -> e1.it + | _ -> UnE (`NotOp, `BoolT, exp) + } + +let get_exp prem = + match prem.it with + | IfPr exp -> Some (neg_exp exp) + | _ -> None + +let is_wf_or_neg_prem else_ids env prem = + match prem.it with + | RulePr (id, _, _) -> StringSet.mem id.it env.wf_relations + | NegPr { it = RulePr (id, _, _); _} -> List.mem id.it else_ids + | _ -> false + +let is_neg_prem else_ids prem = + match prem.it with + | NegPr { it = RulePr (id, _, _); _} -> List.mem id.it else_ids + | _ -> false + +let is_in_bind (free_sets : Free.sets) b = + match b.it with + | ExpB (id, _) -> Free.Set.mem id.it free_sets.varid + | TypB id -> Free.Set.mem id.it free_sets.typid + | DefB (id, _, _) -> Free.Set.mem id.it free_sets.defid + | GramB (id, _, _) -> Free.Set.mem id.it free_sets.gramid + +let t_rule env else_ids rule = + let RuleD (id, binds, m, exp, prems) = rule.it in + let* else_id = List.find_opt (fun id -> List.exists (is_neg_prem [id]) prems) else_ids in + let* else_relation = Il.Env.find_opt_rel env.il_env (else_id $ no_region) in + let (_, _, rules) = else_relation in + let free_vars_binds = Free.free_list Free.bound_bind binds in + let prems', binds' = List.map (fun r -> + let RuleD (_, binds', _, _, prems') = r.it in + let free_vars = Free.diff (Free.free_list Free.free_prem prems') free_vars_binds in + Lib.List.filter_not (is_wf_or_neg_prem else_ids env) prems', List.filter (is_in_bind free_vars) binds' + ) rules |> List.split in + let prems', binds' = List.concat prems', List.concat binds' in + + if prems' = [] || not (List.for_all is_boolean_prem prems') then None else + let neg_exps = List.filter_map get_exp prems' in + match neg_exps with + | [] -> None + | x :: xs -> + let new_exp = List.fold_left (fun acc exp -> BinE (`OrOp, `BoolT, acc, exp) $$ x.at % (BoolT $ x.at)) x xs in + let new_prem = IfPr new_exp $ x.at in + bind_else_set env else_id; + Some { rule with it = RuleD (id, binds @ binds', m, exp, new_prem :: Lib.List.filter_not (is_neg_prem else_ids) prems) } + +let rec t_def env d = + {d with it = + match d.it with + | RelD (id, m, typ, rules) when StringMap.mem id.it env.rel_to_else_map -> + let else_ids = StringMap.find id.it env.rel_to_else_map in + RelD (id, m, typ, List.map (fun r -> match (t_rule env else_ids r) with + | None -> r + | Some r' -> r' + ) rules) + | RecD defs -> RecD (List.map (t_def env) defs) + | d' -> d' + } + +let is_part_of_else_set env d = + match d.it with + | RelD (id, _, _, _) -> StringSet.mem id.it env.else_set_to_remove + | _ -> false + +let transform defs = + let env = new_env defs in + List.iter (register_hints env) defs; + List.map (t_def env) defs |> + Lib.List.filter_not (is_part_of_else_set env) + diff --git a/spectec/src/middlend/elsesimp.mli b/spectec/src/middlend/elsesimp.mli new file mode 100644 index 0000000000..542bbf8052 --- /dev/null +++ b/spectec/src/middlend/elsesimp.mli @@ -0,0 +1 @@ +val transform : Il.Ast.script -> Il.Ast.script From 0d763f8c7361430d77fda3214055e966f8afa27a Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Wed, 14 Jan 2026 15:21:37 +0000 Subject: [PATCH 006/115] exposing hints from else and wf relations --- spectec/src/middlend/else.ml | 8 ++++++-- spectec/src/middlend/else.mli | 1 + spectec/src/middlend/undep.ml | 21 +++++++++++++-------- spectec/src/middlend/undep.mli | 1 + 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/spectec/src/middlend/else.ml b/spectec/src/middlend/else.ml index 001c5cc04e..cfc375ce8d 100644 --- a/spectec/src/middlend/else.ml +++ b/spectec/src/middlend/else.ml @@ -27,6 +27,8 @@ module StringSet = Set.Make(String) let env_ref = ref Il.Env.empty +let else_relation_hint_id = "else-relation" + (* Brought from Apart.ml *) (* Looks at an expression of type list from the back and chops off all @@ -153,6 +155,8 @@ let unarize rule = match rule.it with let not_apart lhs rule = match rule.it with | RuleD (_, _, _, lhs2, _) -> not (apart lhs lhs2) +let generate_else_rel_hint rel_id at: hint = { hintid = else_relation_hint_id $ at; hintexp = El.Ast.TextE rel_id.it $ at} + let rec go hint_map used_names at id mixop typ typ1 prev_rules : rule list -> def list = function | [] -> [ RelD (id, mixop, typ, List.rev prev_rules) $ at ] | r :: rules -> match r.it with @@ -177,8 +181,8 @@ let rec go hint_map used_names at id mixop typ typ1 prev_rules : rule list -> de else [ RelD (aux_name, unary_mixfix, typ1, applicable_prev_rules) $ r.at ] @ let extra_hintdef = match (StringMap.find_opt id.it hint_map) with - | Some hints -> [ HintD (RelH (aux_name, hints) $ at) $ at ] - | _ -> [] + | Some hints -> [ HintD (RelH (aux_name, generate_else_rel_hint id at :: hints) $ at) $ at ] + | _ -> [ HintD (RelH (aux_name, [generate_else_rel_hint id at]) $ at) $ at ] in let prems' = List.map (replace_else aux_name lhs) prems in let rule' = { r with it = RuleD (rid, binds, rmixop, exp, prems') } in diff --git a/spectec/src/middlend/else.mli b/spectec/src/middlend/else.mli index 542bbf8052..d22a0af7e2 100644 --- a/spectec/src/middlend/else.mli +++ b/spectec/src/middlend/else.mli @@ -1 +1,2 @@ +val else_relation_hint_id: string val transform : Il.Ast.script -> Il.Ast.script diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index 44467f9869..4ad4604dd4 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -64,6 +64,8 @@ let empty () = { let wf_pred_prefix = "wf_" let rule_prefix = "case_" +let wf_hint_id = "wf-relation" + (* flag that deactivates adding wellformedness predicates to relations *) let deactivate_wfness = false @@ -239,7 +241,9 @@ let get_exp_typ b = match b.it with | ExpB (id, typ) -> Some (VarE id $$ id.at % typ, typ) | _ -> None - + +let generate_well_formed_rel_hint at: hint = { hintid = wf_hint_id $ at; hintexp = El.Ast.SeqE [] $ at} + let create_well_formed_predicate env id inst = let tf = { base_transformer with transform_exp = t_exp env; transform_typ = t_typ} in let at = id.at in @@ -250,6 +254,7 @@ let create_well_formed_predicate env id inst = | _ -> None ) binds) in let tupt pairs = TupT (pairs @ [(VarE ("_" $ at) $$ at % user_typ, user_typ)]) $ at in + let hint = HintD (RelH (wf_pred_prefix ^ id.it $ id.at, [generate_well_formed_rel_hint at]) $ at) $ at in match inst.it with (* Variant well formedness predicate creation *) | InstD (binds, _args, {it = VariantT typcases; _}) -> @@ -275,10 +280,10 @@ let create_well_formed_predicate env id inst = let has_no_prems = List.for_all (fun rule -> match rule.it with | RuleD (_, _, _, _, prems) -> prems = [] ) rules in - if has_no_prems then None else - let relation = RelD (wf_pred_prefix ^ id.it $ id.at, new_mixop dep_exp_typ_pairs, tupt pairs_without_names, rules) $ at in + if has_no_prems then [] else + let relation = RelD (wf_pred_prefix ^ id.it $ id.at, new_mixop dep_exp_typ_pairs, tupt pairs_without_names, rules) $ at in bind_wf_set env id.it; - Some relation + [relation; hint] (* Struct/Record well formedness predicate creation *) | InstD (binds, _args, {it = StructT typfields; _}) -> @@ -309,11 +314,11 @@ let create_well_formed_predicate env id inst = List.map (transform_prem tf) (new_prems)) $ at in - if new_prems = [] then None else + if new_prems = [] then [] else let relation = RelD (wf_pred_prefix ^ id.it $ id.at, new_mixop dep_exp_typ_pairs, tupt pairs_without_names, [rule]) $ at in bind_wf_set env id.it; - Some relation - | _ -> None + [relation; hint] + | _ -> [] let get_extra_prems env binds exp prems = if deactivate_wfness then [] else @@ -397,7 +402,7 @@ let rec t_def env def = (TypD (id, List.map (transform_param tf) params |> List.filter is_type_param, [inst]) $ def.at, []) | TypD (id, params, [inst]) -> let relation = create_well_formed_predicate env id inst in - (TypD (id, List.map (transform_param tf) params |> List.filter is_type_param, [t_inst env inst]) $ def.at, Option.to_list relation) + (TypD (id, List.map (transform_param tf) params |> List.filter is_type_param, [t_inst env inst]) $ def.at, relation) | TypD (_, _, _) -> error def.at "Multiples instances encountered, please run type family removal pass first." | RelD (id, m, typ, rules) -> diff --git a/spectec/src/middlend/undep.mli b/spectec/src/middlend/undep.mli index 64d020ff9d..e66a2603e0 100644 --- a/spectec/src/middlend/undep.mli +++ b/spectec/src/middlend/undep.mli @@ -1 +1,2 @@ +val wf_hint_id : string val transform : Il.Ast.script -> Il.Ast.script \ No newline at end of file From c3f581a3525df29cf70490233030a79ee9e31db1 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 15 Jan 2026 13:54:29 +0000 Subject: [PATCH 007/115] Modification to else relation removal, only removes if there are no usages present --- spectec/src/middlend/elsesimp.ml | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/spectec/src/middlend/elsesimp.ml b/spectec/src/middlend/elsesimp.ml index 9bbed8acf8..eba54cc8e0 100644 --- a/spectec/src/middlend/elsesimp.ml +++ b/spectec/src/middlend/elsesimp.ml @@ -141,9 +141,26 @@ let is_part_of_else_set env d = | RelD (id, _, _, _) -> StringSet.mem id.it env.else_set_to_remove | _ -> false +let filter_else_set env: (module Iter.Arg) = + let module Arg = + struct + include Iter.Skip + let visit_prem prem = + match prem.it with + | RulePr (id, _, _) when StringSet.mem id.it env.else_set_to_remove -> + env.else_set_to_remove <- StringSet.remove id.it env.else_set_to_remove + | _ -> () + end + in (module Arg) + let transform defs = let env = new_env defs in List.iter (register_hints env) defs; - List.map (t_def env) defs |> - Lib.List.filter_not (is_part_of_else_set env) + let defs' = List.map (t_def env) defs in + let (module Arg) = filter_else_set env in + let module Acc = Iter.Make(Arg) in + (* Remove still existing else relations from set*) + List.iter Acc.def defs'; + (* Filter out remaining else relations *) + Lib.List.filter_not (is_part_of_else_set env) defs' From fe65f4f048672edcab435bfe1484740559b2c710 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 15 Jan 2026 14:28:18 +0000 Subject: [PATCH 008/115] fix tests --- spectec/test-middlend/dune.inc | 13 +- .../04-remove-indexed-types.il | 2020 --- .../specification.exp/05-totalize.il | 2020 --- .../specification.exp/06-else.il | 2182 --- .../07-else-simplification.il | 13961 ++++++++++++++++ ...uncase-removal.il => 08-uncase-removal.il} | 2440 +-- ...sideconditions.il => 09-sideconditions.il} | 2504 +-- ...9-sub-expansion.il => 10-sub-expansion.il} | 3537 +--- .../{10-sub.il => 11-sub.il} | 3544 +--- .../{11-alias-demut.il => 12-alias-demut.il} | 3544 +--- .../{12-improve-ids.il => 13-improve-ids.il} | 3544 +--- spectec/test-middlend/test.spectec.exp | 13 + 12 files changed, 14368 insertions(+), 24954 deletions(-) create mode 100644 spectec/test-middlend/specification.exp/07-else-simplification.il rename spectec/test-middlend/specification.exp/{07-uncase-removal.il => 08-uncase-removal.il} (83%) rename spectec/test-middlend/specification.exp/{08-sideconditions.il => 09-sideconditions.il} (83%) rename spectec/test-middlend/specification.exp/{09-sub-expansion.il => 10-sub-expansion.il} (81%) rename spectec/test-middlend/specification.exp/{10-sub.il => 11-sub.il} (81%) rename spectec/test-middlend/specification.exp/{11-alias-demut.il => 12-alias-demut.il} (81%) rename spectec/test-middlend/specification.exp/{12-improve-ids.il => 13-improve-ids.il} (81%) diff --git a/spectec/test-middlend/dune.inc b/spectec/test-middlend/dune.inc index d190844541..0e6a844460 100644 --- a/spectec/test-middlend/dune.inc +++ b/spectec/test-middlend/dune.inc @@ -5,9 +5,10 @@ (rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/04-remove-indexed-types.il specification.act/04-remove-indexed-types.il)))) (rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/05-totalize.il specification.act/05-totalize.il)))) (rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/06-else.il specification.act/06-else.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/07-uncase-removal.il specification.act/07-uncase-removal.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/08-sideconditions.il specification.act/08-sideconditions.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/09-sub-expansion.il specification.act/09-sub-expansion.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/10-sub.il specification.act/10-sub.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/11-alias-demut.il specification.act/11-alias-demut.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/12-improve-ids.il specification.act/12-improve-ids.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/07-else-simplification.il specification.act/07-else-simplification.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/08-uncase-removal.il specification.act/08-uncase-removal.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/09-sideconditions.il specification.act/09-sideconditions.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/10-sub-expansion.il specification.act/10-sub-expansion.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/11-sub.il specification.act/11-sub.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/12-alias-demut.il specification.act/12-alias-demut.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/13-improve-ids.il specification.act/13-improve-ids.il)))) diff --git a/spectec/test-middlend/specification.exp/04-remove-indexed-types.il b/spectec/test-middlend/specification.exp/04-remove-indexed-types.il index fcacfbcf35..50ecdd925e 100644 --- a/spectec/test-middlend/specification.exp/04-remove-indexed-types.il +++ b/spectec/test-middlend/specification.exp/04-remove-indexed-types.il @@ -302,19 +302,16 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -358,29 +355,18 @@ def $utf8(char*) : byte* def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte(ch!`%`_char.0)) -- if (ch!`%`_char.0 < 128) -- where b = `%`_byte(ch!`%`_char.0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -569,7 +555,6 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -580,7 +565,6 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -589,55 +573,46 @@ def $free_list(free*) : free def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -1014,73 +989,61 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1377,7 +1340,6 @@ def $unpack(storagetype : storagetype) : valtype def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype - -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype @@ -1409,10 +1371,8 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1506,9 +1466,6 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } @@ -1550,7 +1507,6 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1562,7 +1518,6 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1575,32 +1530,25 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1623,97 +1571,79 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) - -- wf_externtype: `%`(FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4223,13 +4135,10 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4260,7 +4169,6 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4327,13 +4235,10 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4342,13 +4247,10 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4371,7 +4273,6 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4382,10 +4283,8 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4441,7 +4340,6 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] - -- wf_free: `%`(free) -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } @@ -4685,7 +4583,6 @@ def $free_datamode(datamode : datamode) : free def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -4698,10 +4595,8 @@ def $free_elemmode(elemmode : elemmode) : free def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -4855,14 +4750,12 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -4891,28 +4784,24 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype}: `%~~%`(deftype, comptype) - -- wf_comptype: `%`(comptype) -- if ($expanddt(deftype) = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -4920,7 +4809,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool @@ -4948,13 +4836,10 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -4962,8 +4847,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -4971,49 +4854,37 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) - -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) - -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_uN.0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) - -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -5021,8 +4892,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -5030,8 +4899,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -5039,14 +4906,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) - -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -5054,22 +4918,16 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -5078,10 +4936,6 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if (x!`%`_uN.0 < x_0!`%`_uN.0))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[x!`%`_uN.0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} @@ -5093,27 +4947,16 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -5121,11 +4964,6 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} @@ -5137,17 +4975,10 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx((x!`%`_uN.0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx((x!`%`_uN.0 + 1)), (i + 1))) @@ -5156,9 +4987,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) - -- wf_context: `%`(C) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) @@ -5168,25 +4996,16 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) @@ -5195,14 +5014,11 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) @@ -5211,16 +5027,10 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) - -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5228,144 +5038,88 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) - -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) - -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) - -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5373,38 +5127,27 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) - -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) - -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 @@ -5412,15 +5155,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) - -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5428,17 +5167,11 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5448,9 +5181,6 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (if (C.LOCALS_context[x!`%`_uN.0] = lct))*{lct <- `lct*`, x <- `x*`} @@ -5460,16 +5190,11 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5477,8 +5202,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} @@ -5487,9 +5210,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5498,8 +5218,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5507,8 +5225,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5516,8 +5232,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5526,37 +5240,26 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5565,11 +5268,6 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) @@ -5580,9 +5278,6 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5591,7 +5286,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5600,17 +5294,11 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -5619,9 +5307,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5629,9 +5314,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -5641,41 +5323,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) - -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5683,18 +5350,11 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5702,49 +5362,35 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) - -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) - -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) - -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) - -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -5753,7 +5399,6 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5769,41 +5414,25 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) @@ -5811,35 +5440,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5847,27 +5459,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]))*{l <- `l*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_uN.0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5875,27 +5477,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5905,10 +5497,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5918,30 +5506,16 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5949,22 +5523,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -5973,12 +5537,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -5987,14 +5545,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6005,31 +5555,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} @@ -6037,56 +5573,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref.null{C : context, ht : heaptype}: `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref.i31{C : context}: `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref.is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref.as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref.eq{C : context}: `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.TEST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6094,9 +5609,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.CAST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6104,37 +5616,21 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31.get{C : context, sx : sx}: `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6142,59 +5638,34 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.SET_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_uN.0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) @@ -6202,46 +5673,26 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array.set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array.len{C : context}: `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.LEN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array.fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) @@ -6249,20 +5700,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_uN.0] : reftype <: storagetype), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) @@ -6270,117 +5713,66 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local.get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local.set{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local.tee{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global.set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if (C.TABLES_context[x_1!`%`_uN.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_uN.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6388,11 +5780,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_uN.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6400,155 +5787,91 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem.drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(ELEM.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.ELEMS_context[x!`%`_uN.0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if (C.MEMS_context[x_1!`%`_uN.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_uN.0] = `%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data.drop{C : context, x : idx}: `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DATA.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.DATAS_context[x!`%`_uN.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -6556,20 +5879,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -6577,221 +5892,127 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if (i!`%`_uN.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_uN.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) @@ -6799,10 +6020,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') - -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -6810,10 +6027,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) } @@ -6823,9 +6036,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6833,7 +6043,6 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6841,91 +6050,59 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.null{C : context, ht : heaptype}: `%|-%CONST`(C, REF.NULL_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: `%|-%CONST`(C, REF.I31_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.func{C : context, x : idx}: `%|-%CONST`(C, REF.FUNC_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_fixed{C : context, x : idx, n : n}: `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern.convert_any{C : context}: `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global.get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL.GET_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -6934,8 +6111,6 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6943,9 +6118,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) @@ -6954,9 +6126,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if (x!`%`_uN.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) @@ -6966,8 +6135,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6975,9 +6142,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) @@ -6987,8 +6151,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6996,9 +6158,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) @@ -7008,17 +6167,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7026,10 +6179,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[x!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -7039,15 +6188,10 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -7056,8 +6200,6 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7065,24 +6207,14 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -7092,8 +6224,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) @@ -7103,9 +6233,6 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7113,8 +6240,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7122,41 +6247,26 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) -- if (C.TAGS_context[x!`%`_uN.0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if (C.GLOBALS_context[x!`%`_uN.0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) -- if (C.MEMS_context[x!`%`_uN.0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) -- if (C.TABLES_context[x!`%`_uN.0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7164,9 +6274,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7177,16 +6284,10 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } @@ -7199,13 +6300,10 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } @@ -7228,23 +6326,12 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) - -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) - -- wf_context: `%`(C) - -- wf_context: `%`(C') - -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) - -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} @@ -7405,10 +6492,8 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7437,7 +6522,6 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -7457,28 +6541,23 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN((i!`%`_uN.0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN((i!`%`_uN.0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7486,7 +6565,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7494,7 +6572,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7502,12 +6579,10 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, i_1!`%`_uN.0)) /\ (j_2 = $signed_(N, i_2!`%`_uN.0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7536,19 +6611,15 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7599,61 +6670,49 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -7767,10 +6826,8 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) - -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7778,7 +6835,6 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -7786,7 +6842,6 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7794,103 +6849,72 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`(($cunpack((packtype : packtype <: storagetype)) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -7928,32 +6952,23 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] - -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] - -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8003,21 +7018,16 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else (if ($signed_(N, i!`%`_uN.0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[(i!`%`_uN.0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -8025,9 +7035,6 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} @@ -8035,10 +7042,6 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8047,10 +7050,6 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8059,9 +7058,6 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -8070,9 +7066,6 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -8081,9 +7074,6 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -8093,9 +7083,6 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -8105,9 +7092,6 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_uN.0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod(c!`%`_uN.0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -8115,9 +7099,6 @@ def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_uN.0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod(c!`%`_uN.0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} @@ -8125,9 +7106,6 @@ def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8136,9 +7114,6 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8147,10 +7122,6 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8160,9 +7131,6 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -8170,9 +7138,6 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -8180,10 +7145,6 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) @@ -8191,10 +7152,6 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{Jnn : Jnn, M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} @@ -8203,10 +7160,6 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{Jnn : Jnn, M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`} {c, `c*`} @@ -8236,213 +7189,146 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} @@ -8452,43 +7338,30 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8499,19 +7372,12 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_uN.0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} @@ -8520,36 +7386,23 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_uN.0 : k!`%`_uN.0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_uN.0 : k!`%`_uN.0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8565,37 +7418,15 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9002,7 +7833,6 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) - -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -9010,7 +7840,6 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -9196,87 +8025,71 @@ def $local(state : state, localidx : localidx) : val? def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[x!`%`_uN.0] = ?(v)]) - -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[x!`%`_uN.0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], f) - -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], f) - -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) - -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = tableinst' - -- wf_tableinst: `%`(tableinst') - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if (i'!`%`_uN.0 = (|r'*{r' <- `r'*`}| + n)) @@ -9286,9 +8099,6 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst def $growmem(meminst : meminst, nat : nat) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = meminst' - -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if ((i'!`%`_uN.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) @@ -9299,16 +8109,12 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -9318,76 +8124,44 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.I31_NUM_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) - -- wf_store: `%`(s) - -- wf_exninst: `%`(exn) - -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.EXTERN_ref(addrref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) - -- wf_reftype: `%`(rt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -9397,23 +8171,16 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) - -- wf_store: `%`(s) - -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -9424,45 +8191,31 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) - -- wf_externtype: `%`(xt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -9502,703 +8255,425 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if (l!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if (l!`%`_uN.0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])) -- if (!($proj_num__0(i))!`%`_uN.0 < |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) -- if (!($proj_num__0(i))!`%`_uN.0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instr: `%`(LOCAL.SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- otherwise -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(REF.I31_NUM_instr(i)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) -- if ($unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) -- if ($binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_uN: `%%`(128, `%`_uN(0)) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) - -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) - -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_uN.0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) @@ -10207,323 +8682,205 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[!($proj_num__0(i))!`%`_uN.0] : ref <: instr)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.FILL_instr(x)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- otherwise -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -10532,33 +8889,22 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) @@ -10567,331 +8913,205 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- otherwise -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) - -- wf_instr: `%`(REF.NULL_instr(($type(z, x) : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])]) - -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_uN.0]) : val <: instr)]) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[!($proj_num__0(i))!`%`_uN.0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(i))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[!($proj_num__0(i))!`%`_uN.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[!($proj_num__0(i))!`%`_uN.0]) : val <: instr)]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -10899,18 +9119,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) @@ -10918,87 +9126,53 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- otherwise -- if (ref = $elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const($cunpack(zt), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- otherwise -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -11011,52 +9185,32 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- wf_exninst: `%`({TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) @@ -11064,103 +9218,72 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if (ti = $growtable($table(z, x), n, ref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_uN: `%%`(N, `%`_uN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0))) @@ -11168,29 +9291,19 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if (mi = $growmem($mem(z, x), n)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) @@ -11198,46 +9311,30 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -11249,14 +9346,10 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } @@ -11266,8 +9359,6 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11279,7 +9370,6 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} - -- wf_uN: `%%`(32, x) -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) @@ -11290,8 +9380,6 @@ def $alloctypes(type*) : deftype* def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11303,8 +9391,6 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } @@ -11313,8 +9399,6 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11326,8 +9410,6 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } @@ -11336,8 +9418,6 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11349,8 +9429,6 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } @@ -11359,8 +9437,6 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11372,8 +9448,6 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } @@ -11382,8 +9456,6 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11395,8 +9467,6 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } @@ -11405,8 +9475,6 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11418,8 +9486,6 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } @@ -11428,8 +9494,6 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11441,8 +9505,6 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } @@ -11451,19 +9513,14 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -11474,24 +9531,6 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) - -- wf_store: `%`(s_1) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_3) - -- wf_store: `%`(s_4) - -- wf_store: `%`(s_5) - -- wf_store: `%`(s_6) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} - -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} @@ -11523,10 +9562,6 @@ def $rundata_(dataidx : dataidx, data : data) : instr* def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) - -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -11534,13 +9569,8 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] - -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(TABLE.INIT_instr(y, x)) - -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11551,11 +9581,6 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) - -- wf_state: `%`(z') - -- wf_val: `%`(val) - -- (wf_val: `%`(val'))*{val' <- `val'*`} - -- wf_state: `%`(`%;%`_state(s, f)) - -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- where `%;%`_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, val) {a, s'} @@ -11566,24 +9591,6 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) - -- wf_state: `%`(z) - -- wf_state: `%`(z') - -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} - -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} - -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} - -- (wf_start: `%`(START_start(x)))?{x <- `x?`} - -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} - -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} - -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} @@ -11606,8 +9613,6 @@ def $instantiate(store : store, module : module, externaddr*) : config def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -13704,7 +11709,6 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) } @@ -13714,8 +11718,6 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I) - -- wf_idctxt: `%`(I) - -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) @@ -15601,26 +13603,15 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32.add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global.get{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -15630,23 +13621,14 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -15685,8 +13667,6 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} } diff --git a/spectec/test-middlend/specification.exp/05-totalize.il b/spectec/test-middlend/specification.exp/05-totalize.il index 4071a3cf68..691ffa27ff 100644 --- a/spectec/test-middlend/specification.exp/05-totalize.il +++ b/spectec/test-middlend/specification.exp/05-totalize.il @@ -302,19 +302,16 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -358,29 +355,18 @@ def $utf8(char*) : byte* def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte(ch!`%`_char.0)) -- if (ch!`%`_char.0 < 128) -- where b = `%`_byte(ch!`%`_char.0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -569,7 +555,6 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -580,7 +565,6 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -589,55 +573,46 @@ def $free_list(free*) : free def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -1014,73 +989,61 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1381,7 +1344,6 @@ def $unpack(storagetype : storagetype) : valtype def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype - -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1416,10 +1378,8 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1513,9 +1473,6 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } @@ -1557,7 +1514,6 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1569,7 +1525,6 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1582,32 +1537,25 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1630,97 +1578,79 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) - -- wf_externtype: `%`(FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4230,13 +4142,10 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4267,7 +4176,6 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4334,13 +4242,10 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4349,13 +4254,10 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4378,7 +4280,6 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4389,10 +4290,8 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4448,7 +4347,6 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] - -- wf_free: `%`(free) -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } @@ -4692,7 +4590,6 @@ def $free_datamode(datamode : datamode) : free def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -4705,10 +4602,8 @@ def $free_elemmode(elemmode : elemmode) : free def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -4862,14 +4757,12 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -4898,28 +4791,24 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype}: `%~~%`(deftype, comptype) - -- wf_comptype: `%`(comptype) -- if ($expanddt(deftype) = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -4927,7 +4816,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool @@ -4955,13 +4843,10 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -4969,8 +4854,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -4978,49 +4861,37 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) - -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) - -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_uN.0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) - -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -5028,8 +4899,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -5037,8 +4906,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -5046,14 +4913,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) - -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -5061,22 +4925,16 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -5085,10 +4943,6 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if (x!`%`_uN.0 < x_0!`%`_uN.0))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[x!`%`_uN.0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} @@ -5100,27 +4954,16 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -5128,11 +4971,6 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} @@ -5144,17 +4982,10 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx((x!`%`_uN.0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx((x!`%`_uN.0 + 1)), (i + 1))) @@ -5163,9 +4994,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) - -- wf_context: `%`(C) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) @@ -5175,25 +5003,16 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) @@ -5202,14 +5021,11 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) @@ -5218,16 +5034,10 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) - -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5235,144 +5045,88 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) - -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) - -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) - -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5380,38 +5134,27 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) - -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) - -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 @@ -5419,15 +5162,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) - -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5435,17 +5174,11 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5455,9 +5188,6 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (if (C.LOCALS_context[x!`%`_uN.0] = lct))*{lct <- `lct*`, x <- `x*`} @@ -5467,16 +5197,11 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5484,8 +5209,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} @@ -5494,9 +5217,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5505,8 +5225,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5514,8 +5232,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5523,8 +5239,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5533,37 +5247,26 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5572,11 +5275,6 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) @@ -5587,9 +5285,6 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5598,7 +5293,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5607,17 +5301,11 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -5626,9 +5314,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5636,9 +5321,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -5648,41 +5330,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) - -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5690,18 +5357,11 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5709,49 +5369,35 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) - -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) - -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) - -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) - -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -5760,7 +5406,6 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5776,41 +5421,25 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) @@ -5818,35 +5447,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5854,27 +5466,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]))*{l <- `l*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_uN.0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5882,27 +5484,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5912,10 +5504,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5925,30 +5513,16 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5956,22 +5530,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -5980,12 +5544,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -5994,14 +5552,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6012,31 +5562,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} @@ -6044,56 +5580,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref.null{C : context, ht : heaptype}: `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref.i31{C : context}: `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref.is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref.as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref.eq{C : context}: `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.TEST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6101,9 +5616,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.CAST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6111,37 +5623,21 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31.get{C : context, sx : sx}: `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6149,59 +5645,34 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.SET_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_uN.0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) @@ -6209,46 +5680,26 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array.set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array.len{C : context}: `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.LEN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array.fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) @@ -6256,20 +5707,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_uN.0] : reftype <: storagetype), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) @@ -6277,117 +5720,66 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local.get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local.set{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local.tee{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global.set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if (C.TABLES_context[x_1!`%`_uN.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_uN.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6395,11 +5787,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_uN.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6407,155 +5794,91 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem.drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(ELEM.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.ELEMS_context[x!`%`_uN.0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if (C.MEMS_context[x_1!`%`_uN.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_uN.0] = `%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data.drop{C : context, x : idx}: `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DATA.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.DATAS_context[x!`%`_uN.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -6563,20 +5886,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -6584,221 +5899,127 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if (i!`%`_uN.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_uN.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) @@ -6806,10 +6027,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') - -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -6817,10 +6034,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) } @@ -6830,9 +6043,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6840,7 +6050,6 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6848,91 +6057,59 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.null{C : context, ht : heaptype}: `%|-%CONST`(C, REF.NULL_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: `%|-%CONST`(C, REF.I31_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.func{C : context, x : idx}: `%|-%CONST`(C, REF.FUNC_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_fixed{C : context, x : idx, n : n}: `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern.convert_any{C : context}: `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global.get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL.GET_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -6941,8 +6118,6 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6950,9 +6125,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) @@ -6961,9 +6133,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if (x!`%`_uN.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) @@ -6973,8 +6142,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6982,9 +6149,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) @@ -6994,8 +6158,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7003,9 +6165,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) @@ -7015,17 +6174,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7033,10 +6186,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[x!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -7046,15 +6195,10 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -7063,8 +6207,6 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7072,24 +6214,14 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -7099,8 +6231,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) @@ -7110,9 +6240,6 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7120,8 +6247,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7129,41 +6254,26 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) -- if (C.TAGS_context[x!`%`_uN.0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if (C.GLOBALS_context[x!`%`_uN.0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) -- if (C.MEMS_context[x!`%`_uN.0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) -- if (C.TABLES_context[x!`%`_uN.0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7171,9 +6281,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7184,16 +6291,10 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } @@ -7206,13 +6307,10 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } @@ -7235,23 +6333,12 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) - -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) - -- wf_context: `%`(C) - -- wf_context: `%`(C') - -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) - -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} @@ -7412,10 +6499,8 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7444,7 +6529,6 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -7464,28 +6548,23 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN((i!`%`_uN.0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN((i!`%`_uN.0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7493,7 +6572,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7501,7 +6579,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7509,12 +6586,10 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, i_1!`%`_uN.0)) /\ (j_2 = $signed_(N, i_2!`%`_uN.0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7543,19 +6618,15 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7606,61 +6677,49 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -7774,10 +6833,8 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) - -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7785,7 +6842,6 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -7793,7 +6849,6 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7801,103 +6856,72 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -7935,32 +6959,23 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] - -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] - -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8010,21 +7025,16 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else (if ($signed_(N, i!`%`_uN.0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[(i!`%`_uN.0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -8032,9 +7042,6 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} @@ -8042,10 +7049,6 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8054,10 +7057,6 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8066,9 +7065,6 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -8077,9 +7073,6 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -8088,9 +7081,6 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -8100,9 +7090,6 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -8112,9 +7099,6 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_uN.0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod(c!`%`_uN.0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -8122,9 +7106,6 @@ def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_uN.0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod(c!`%`_uN.0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} @@ -8132,9 +7113,6 @@ def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8143,9 +7121,6 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8154,10 +7129,6 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8167,9 +7138,6 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -8177,9 +7145,6 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -8187,10 +7152,6 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) @@ -8198,10 +7159,6 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{Jnn : Jnn, M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} @@ -8210,10 +7167,6 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{Jnn : Jnn, M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`} {c, `c*`} @@ -8243,213 +7196,146 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} @@ -8459,43 +7345,30 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8506,19 +7379,12 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_uN.0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} @@ -8527,36 +7393,23 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_uN.0 : k!`%`_uN.0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_uN.0 : k!`%`_uN.0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8572,37 +7425,15 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9009,7 +7840,6 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) - -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -9017,7 +7847,6 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -9203,87 +8032,71 @@ def $local(state : state, localidx : localidx) : val? def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[x!`%`_uN.0] = ?(v)]) - -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[x!`%`_uN.0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], f) - -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], f) - -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) - -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') - -- wf_tableinst: `%`(tableinst') - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if (i'!`%`_uN.0 = (|r'*{r' <- `r'*`}| + n)) @@ -9294,9 +8107,6 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') - -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if ((i'!`%`_uN.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) @@ -9308,16 +8118,12 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -9327,76 +8133,44 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.I31_NUM_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) - -- wf_store: `%`(s) - -- wf_exninst: `%`(exn) - -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.EXTERN_ref(addrref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) - -- wf_reftype: `%`(rt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -9406,23 +8180,16 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) - -- wf_store: `%`(s) - -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -9433,45 +8200,31 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) - -- wf_externtype: `%`(xt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -9511,703 +8264,425 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if (l!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if (l!`%`_uN.0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])) -- if (!($proj_num__0(i))!`%`_uN.0 < |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) -- if (!($proj_num__0(i))!`%`_uN.0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instr: `%`(LOCAL.SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- otherwise -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(REF.I31_NUM_instr(i)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) -- if ($unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) -- if ($binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_uN: `%%`(128, `%`_uN(0)) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) - -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) - -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_uN.0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) @@ -10216,323 +8691,205 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[!($proj_num__0(i))!`%`_uN.0] : ref <: instr)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.FILL_instr(x)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- otherwise -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -10541,33 +8898,22 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) @@ -10576,331 +8922,205 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- otherwise -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) - -- wf_instr: `%`(REF.NULL_instr(($type(z, x) : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])]) - -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_uN.0]) : val <: instr)]) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[!($proj_num__0(i))!`%`_uN.0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(i))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[!($proj_num__0(i))!`%`_uN.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[!($proj_num__0(i))!`%`_uN.0]) : val <: instr)]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -10908,18 +9128,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) @@ -10927,87 +9135,53 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- otherwise -- if (ref = $elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- otherwise -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -11020,52 +9194,32 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- wf_exninst: `%`({TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) @@ -11073,103 +9227,72 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_uN: `%%`(N, `%`_uN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0))) @@ -11177,29 +9300,19 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) @@ -11207,46 +9320,30 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -11258,14 +9355,10 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } @@ -11275,8 +9368,6 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11288,7 +9379,6 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} - -- wf_uN: `%%`(32, x) -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) @@ -11299,8 +9389,6 @@ def $alloctypes(type*) : deftype* def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11312,8 +9400,6 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } @@ -11322,8 +9408,6 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11335,8 +9419,6 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } @@ -11345,8 +9427,6 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11358,8 +9438,6 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } @@ -11368,8 +9446,6 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11381,8 +9457,6 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } @@ -11391,8 +9465,6 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11404,8 +9476,6 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } @@ -11414,8 +9484,6 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11427,8 +9495,6 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } @@ -11437,8 +9503,6 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11450,8 +9514,6 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } @@ -11460,19 +9522,14 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -11483,24 +9540,6 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) - -- wf_store: `%`(s_1) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_3) - -- wf_store: `%`(s_4) - -- wf_store: `%`(s_5) - -- wf_store: `%`(s_6) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} - -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} @@ -11532,10 +9571,6 @@ def $rundata_(dataidx : dataidx, data : data) : instr* def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) - -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -11543,13 +9578,8 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] - -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(TABLE.INIT_instr(y, x)) - -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11560,11 +9590,6 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) - -- wf_state: `%`(z') - -- wf_val: `%`(val) - -- (wf_val: `%`(val'))*{val' <- `val'*`} - -- wf_state: `%`(`%;%`_state(s, f)) - -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- where `%;%`_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, val) {a, s'} @@ -11575,24 +9600,6 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) - -- wf_state: `%`(z) - -- wf_state: `%`(z') - -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} - -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} - -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} - -- (wf_start: `%`(START_start(x)))?{x <- `x?`} - -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} - -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} - -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} @@ -11615,8 +9622,6 @@ def $instantiate(store : store, module : module, externaddr*) : config def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -13713,7 +11718,6 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) } @@ -13723,8 +11727,6 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I) - -- wf_idctxt: `%`(I) - -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) @@ -15610,26 +13612,15 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32.add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global.get{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -15639,23 +13630,14 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -15694,8 +13676,6 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} } diff --git a/spectec/test-middlend/specification.exp/06-else.il b/spectec/test-middlend/specification.exp/06-else.il index c0455f7d84..7a95fe65dd 100644 --- a/spectec/test-middlend/specification.exp/06-else.il +++ b/spectec/test-middlend/specification.exp/06-else.il @@ -302,19 +302,16 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -358,29 +355,18 @@ def $utf8(char*) : byte* def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte(ch!`%`_char.0)) -- if (ch!`%`_char.0 < 128) -- where b = `%`_byte(ch!`%`_char.0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -569,7 +555,6 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -580,7 +565,6 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -589,55 +573,46 @@ def $free_list(free*) : free def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -1014,73 +989,61 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1381,7 +1344,6 @@ def $unpack(storagetype : storagetype) : valtype def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype - -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1416,10 +1378,8 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1513,9 +1473,6 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } @@ -1557,7 +1514,6 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1569,7 +1525,6 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1582,32 +1537,25 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1630,97 +1578,79 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) - -- wf_externtype: `%`(FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4230,13 +4142,10 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4267,7 +4176,6 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4334,13 +4242,10 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4349,13 +4254,10 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4378,7 +4280,6 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4389,10 +4290,8 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4448,7 +4347,6 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] - -- wf_free: `%`(free) -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } @@ -4692,7 +4590,6 @@ def $free_datamode(datamode : datamode) : free def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -4705,10 +4602,8 @@ def $free_elemmode(elemmode : elemmode) : free def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -4862,14 +4757,12 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -4898,28 +4791,24 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype}: `%~~%`(deftype, comptype) - -- wf_comptype: `%`(comptype) -- if ($expanddt(deftype) = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -4927,7 +4816,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool @@ -4955,13 +4843,10 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -4969,8 +4854,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -4978,49 +4861,37 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) - -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) - -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_uN.0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) - -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -5028,8 +4899,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -5037,8 +4906,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -5046,14 +4913,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) - -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -5061,22 +4925,16 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -5085,10 +4943,6 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if (x!`%`_uN.0 < x_0!`%`_uN.0))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[x!`%`_uN.0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} @@ -5100,27 +4954,16 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -5128,11 +4971,6 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} @@ -5144,17 +4982,10 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx((x!`%`_uN.0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx((x!`%`_uN.0 + 1)), (i + 1))) @@ -5163,9 +4994,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) - -- wf_context: `%`(C) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) @@ -5175,25 +5003,16 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) @@ -5202,14 +5021,11 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) @@ -5218,16 +5034,10 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) - -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5235,144 +5045,88 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) - -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) - -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) - -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5380,38 +5134,27 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) - -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) - -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 @@ -5419,15 +5162,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) - -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5435,17 +5174,11 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5455,9 +5188,6 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (if (C.LOCALS_context[x!`%`_uN.0] = lct))*{lct <- `lct*`, x <- `x*`} @@ -5467,16 +5197,11 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5484,8 +5209,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} @@ -5494,9 +5217,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5505,8 +5225,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5514,8 +5232,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5523,8 +5239,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5533,37 +5247,26 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5572,11 +5275,6 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) @@ -5587,9 +5285,6 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5598,7 +5293,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5607,17 +5301,11 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -5626,9 +5314,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5636,9 +5321,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -5648,41 +5330,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) - -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5690,18 +5357,11 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5709,49 +5369,35 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) - -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) - -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) - -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) - -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -5760,7 +5406,6 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5776,41 +5421,25 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) @@ -5818,35 +5447,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5854,27 +5466,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]))*{l <- `l*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_uN.0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5882,27 +5484,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5912,10 +5504,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5925,30 +5513,16 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5956,22 +5530,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -5980,12 +5544,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -5994,14 +5552,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6012,31 +5562,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} @@ -6044,56 +5580,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref.null{C : context, ht : heaptype}: `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref.i31{C : context}: `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref.is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref.as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref.eq{C : context}: `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.TEST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6101,9 +5616,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.CAST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6111,37 +5623,21 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31.get{C : context, sx : sx}: `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6149,59 +5645,34 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.SET_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_uN.0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) @@ -6209,46 +5680,26 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array.set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array.len{C : context}: `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.LEN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array.fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) @@ -6256,20 +5707,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_uN.0] : reftype <: storagetype), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) @@ -6277,117 +5720,66 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local.get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local.set{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local.tee{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global.set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if (C.TABLES_context[x_1!`%`_uN.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_uN.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6395,11 +5787,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_uN.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6407,155 +5794,91 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem.drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(ELEM.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.ELEMS_context[x!`%`_uN.0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if (C.MEMS_context[x_1!`%`_uN.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_uN.0] = `%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data.drop{C : context, x : idx}: `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DATA.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.DATAS_context[x!`%`_uN.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -6563,20 +5886,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -6584,221 +5899,127 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if (i!`%`_uN.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_uN.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) @@ -6806,10 +6027,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') - -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -6817,10 +6034,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) } @@ -6830,9 +6043,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6840,7 +6050,6 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6848,91 +6057,59 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.null{C : context, ht : heaptype}: `%|-%CONST`(C, REF.NULL_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: `%|-%CONST`(C, REF.I31_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.func{C : context, x : idx}: `%|-%CONST`(C, REF.FUNC_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_fixed{C : context, x : idx, n : n}: `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern.convert_any{C : context}: `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global.get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL.GET_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -6941,8 +6118,6 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6950,9 +6125,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) @@ -6961,9 +6133,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if (x!`%`_uN.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) @@ -6973,8 +6142,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6982,9 +6149,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) @@ -6994,8 +6158,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7003,9 +6165,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) @@ -7015,17 +6174,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7033,10 +6186,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[x!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -7046,15 +6195,10 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -7063,8 +6207,6 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7072,24 +6214,14 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -7099,8 +6231,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) @@ -7110,9 +6240,6 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7120,8 +6247,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7129,41 +6254,26 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) -- if (C.TAGS_context[x!`%`_uN.0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if (C.GLOBALS_context[x!`%`_uN.0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) -- if (C.MEMS_context[x!`%`_uN.0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) -- if (C.TABLES_context[x!`%`_uN.0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7171,9 +6281,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7184,16 +6291,10 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } @@ -7206,13 +6307,10 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } @@ -7235,23 +6333,12 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) - -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) - -- wf_context: `%`(C) - -- wf_context: `%`(C') - -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) - -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} @@ -7412,10 +6499,8 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7444,7 +6529,6 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -7464,28 +6548,23 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN((i!`%`_uN.0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN((i!`%`_uN.0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7493,7 +6572,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7501,7 +6579,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7509,12 +6586,10 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, i_1!`%`_uN.0)) /\ (j_2 = $signed_(N, i_2!`%`_uN.0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7543,19 +6618,15 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7606,61 +6677,49 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -7774,10 +6833,8 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) - -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7785,7 +6842,6 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -7793,7 +6849,6 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7801,103 +6856,72 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -7935,32 +6959,23 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] - -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] - -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8010,21 +7025,16 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else (if ($signed_(N, i!`%`_uN.0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[(i!`%`_uN.0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -8032,9 +7042,6 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} @@ -8042,10 +7049,6 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8054,10 +7057,6 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8066,9 +7065,6 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -8077,9 +7073,6 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -8088,9 +7081,6 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -8100,9 +7090,6 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -8112,9 +7099,6 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_uN.0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod(c!`%`_uN.0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -8122,9 +7106,6 @@ def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_uN.0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod(c!`%`_uN.0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} @@ -8132,9 +7113,6 @@ def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8143,9 +7121,6 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8154,10 +7129,6 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8167,9 +7138,6 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -8177,9 +7145,6 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -8187,10 +7152,6 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) @@ -8198,10 +7159,6 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{Jnn : Jnn, M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} @@ -8210,10 +7167,6 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{Jnn : Jnn, M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`} {c, `c*`} @@ -8243,213 +7196,146 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} @@ -8459,43 +7345,30 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8506,19 +7379,12 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_uN.0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} @@ -8527,36 +7393,23 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_uN.0 : k!`%`_uN.0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_uN.0 : k!`%`_uN.0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8572,37 +7425,15 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9009,7 +7840,6 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) - -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -9017,7 +7847,6 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -9203,87 +8032,71 @@ def $local(state : state, localidx : localidx) : val? def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[x!`%`_uN.0] = ?(v)]) - -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[x!`%`_uN.0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], f) - -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], f) - -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) - -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') - -- wf_tableinst: `%`(tableinst') - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if (i'!`%`_uN.0 = (|r'*{r' <- `r'*`}| + n)) @@ -9294,9 +8107,6 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') - -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if ((i'!`%`_uN.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) @@ -9308,16 +8118,12 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -9327,76 +8133,44 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.I31_NUM_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) - -- wf_store: `%`(s) - -- wf_exninst: `%`(exn) - -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.EXTERN_ref(addrref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) - -- wf_reftype: `%`(rt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -9406,23 +8180,16 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) - -- wf_store: `%`(s) - -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -9433,45 +8200,31 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) - -- wf_externtype: `%`(xt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -9511,10 +8264,6 @@ relation `Step_pure_before_br_on_null-addr`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null_0`{val : val, l : labelidx, ht : heaptype}: `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9522,9 +8271,6 @@ relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null_0`{val : val, l : labelidx, ht : heaptype}: `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9532,10 +8278,6 @@ relation `Step_pure_before_ref.is_null-false`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true_0`{ref : ref, ht : heaptype}: `%`([(ref : ref <: instr) REF.IS_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9543,10 +8285,6 @@ relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null_0`{ref : ref, ht : heaptype}: `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9554,12 +8292,6 @@ relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9567,22 +8299,12 @@ relation `Step_pure_before_ref.eq-false`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true_0`{ref_1 : ref, ref_2 : ref}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_1`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9590,640 +8312,384 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if (l!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if (l!`%`_uN.0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])) -- if (!($proj_num__0(i))!`%`_uN.0 < |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) -- if (!($proj_num__0(i))!`%`_uN.0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- ~ `Step_pure_before_br_on_null-addr`: `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instr: `%`(LOCAL.SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- ~ `Step_pure_before_ref.is_null-false`: `%`([(ref : ref <: instr) REF.IS_NULL_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- ~ `Step_pure_before_ref.eq-false`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(REF.I31_NUM_instr(i)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) -- if ($unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) -- if ($binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_uN: `%%`(128, `%`_uN(0)) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) - -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) - -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_uN.0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) @@ -10232,9 +8698,6 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) @@ -10243,32 +8706,20 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -10277,8 +8728,6 @@ relation `Step_read_before_table.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10286,15 +8735,12 @@ relation `Step_read_before_table.fill-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10302,8 +8748,6 @@ relation `Step_read_before_table.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10311,15 +8755,12 @@ relation `Step_read_before_table.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10327,30 +8768,18 @@ relation `Step_read_before_table.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10358,8 +8787,6 @@ relation `Step_read_before_table.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10367,15 +8794,12 @@ relation `Step_read_before_table.init-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10383,8 +8807,6 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10392,15 +8814,12 @@ relation `Step_read_before_memory.fill-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10408,8 +8827,6 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10417,15 +8834,12 @@ relation `Step_read_before_memory.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10433,30 +8847,18 @@ relation `Step_read_before_memory.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10464,8 +8866,6 @@ relation `Step_read_before_memory.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10473,15 +8873,12 @@ relation `Step_read_before_memory.init-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10489,10 +8886,6 @@ relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -10501,9 +8894,6 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -10512,8 +8902,6 @@ relation `Step_read_before_array.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10521,15 +8909,12 @@ relation `Step_read_before_array.fill-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10537,15 +8922,11 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10553,22 +8934,17 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10576,18 +8952,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -10595,22 +8959,17 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10618,15 +8977,11 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10634,22 +8989,17 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10657,17 +9007,12 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10675,24 +9020,18 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10700,73 +9039,47 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) @@ -10775,323 +9088,205 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[!($proj_num__0(i))!`%`_uN.0] : ref <: instr)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.FILL_instr(x)) -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -11100,33 +9295,22 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) @@ -11135,331 +9319,205 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) - -- wf_instr: `%`(REF.NULL_instr(($type(z, x) : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])]) - -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_uN.0]) : val <: instr)]) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[!($proj_num__0(i))!`%`_uN.0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(i))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[!($proj_num__0(i))!`%`_uN.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[!($proj_num__0(i))!`%`_uN.0]) : val <: instr)]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -11467,18 +9525,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) @@ -11486,87 +9532,53 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (ref = $elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -11579,52 +9591,32 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- wf_exninst: `%`({TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) @@ -11632,103 +9624,72 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_uN: `%%`(N, `%`_uN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0))) @@ -11736,29 +9697,19 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) @@ -11766,46 +9717,30 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -11817,14 +9752,10 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } @@ -11834,8 +9765,6 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11847,7 +9776,6 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} - -- wf_uN: `%%`(32, x) -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) @@ -11858,8 +9786,6 @@ def $alloctypes(type*) : deftype* def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11871,8 +9797,6 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } @@ -11881,8 +9805,6 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11894,8 +9816,6 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } @@ -11904,8 +9824,6 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11917,8 +9835,6 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } @@ -11927,8 +9843,6 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11940,8 +9854,6 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } @@ -11950,8 +9862,6 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11963,8 +9873,6 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } @@ -11973,8 +9881,6 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11986,8 +9892,6 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } @@ -11996,8 +9900,6 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12009,8 +9911,6 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } @@ -12019,19 +9919,14 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -12042,24 +9937,6 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) - -- wf_store: `%`(s_1) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_3) - -- wf_store: `%`(s_4) - -- wf_store: `%`(s_5) - -- wf_store: `%`(s_6) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} - -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} @@ -12091,10 +9968,6 @@ def $rundata_(dataidx : dataidx, data : data) : instr* def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) - -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -12102,13 +9975,8 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] - -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(TABLE.INIT_instr(y, x)) - -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12119,11 +9987,6 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) - -- wf_state: `%`(z') - -- wf_val: `%`(val) - -- (wf_val: `%`(val'))*{val' <- `val'*`} - -- wf_state: `%`(`%;%`_state(s, f)) - -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- where `%;%`_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, val) {a, s'} @@ -12134,24 +9997,6 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) - -- wf_state: `%`(z) - -- wf_state: `%`(z') - -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} - -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} - -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} - -- (wf_start: `%`(START_start(x)))?{x <- `x?`} - -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} - -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} - -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} @@ -12174,8 +10019,6 @@ def $instantiate(store : store, module : module, externaddr*) : config def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -14272,7 +12115,6 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) } @@ -14282,8 +12124,6 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I) - -- wf_idctxt: `%`(I) - -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) @@ -16169,26 +14009,15 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32.add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global.get{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -16198,23 +14027,14 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -16253,8 +14073,6 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} } diff --git a/spectec/test-middlend/specification.exp/07-else-simplification.il b/spectec/test-middlend/specification.exp/07-else-simplification.il new file mode 100644 index 0000000000..f7d7d70ad9 --- /dev/null +++ b/spectec/test-middlend/specification.exp/07-else-simplification.il @@ -0,0 +1,13961 @@ + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax N = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax M = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax K = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax n = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax m = nat + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +def $min(nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $min{i : nat, j : nat}(i, j) = (if (i <= j) then i else j) + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 +def $sum(nat*) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 + def $sum([]) = 0 + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 + def $sum{n : nat, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) +} + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 +def $prod(nat*) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 + def $prod([]) = 1 + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 + def $prod{n : nat, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $opt_(syntax X, X*) : X? + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X}(syntax X, []) = ?() + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(w) + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 +def $concat_(syntax X, X**) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 + def $concat_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 + def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w*{w <- `w*`}] ++ w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 +def $concatn_(syntax X, X**, nat : nat) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 + def $concatn_{syntax X, n : nat}(syntax X, [], n) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 + def $concatn_{syntax X, `w*` : X*, n : nat, `w'**` : X**}(syntax X, [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $concatopt_(syntax X, X?*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w?{w <- `w?`}] ++ w'?{w' <- `w'?`}*{`w'?` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concat_(syntax X, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concatn_(syntax X, nat : nat, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 +def $disjoint_(syntax X, X*) : bool + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 + def $disjoint_{syntax X}(syntax X, []) = true + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 + def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'*{w' <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 +def $setminus1_(syntax X, X : X, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 + def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 + def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'*{w' <- `w'*`}) = (if (w = w_1) then [] else $setminus1_(syntax X, w, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 +def $setminus_(syntax X, X*, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 + def $setminus_{syntax X, `w*` : X*}(syntax X, [], w*{w <- `w*`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 + def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 +def $setproduct2_(syntax X, X : X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 + def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 + def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'*{w' <- `w'*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 +def $setproduct1_(syntax X, X*, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 + def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w*{w <- `w*`}*{`w*` <- `w**`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 + def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 +def $setproduct_(syntax X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 + def $setproduct_{syntax X}(syntax X, []) = [[]] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 + def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1*{w_1 <- `w_1*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) +} + +;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec +def $ND : bool + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax bit = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_bit: `%`(bit) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule bit_case_0{i : nat}: + `%`(`%`_bit(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax byte = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_byte: `%`(byte) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule byte_case_0{i : nat}: + `%`(`%`_byte(i)) + -- if ((i >= 0) /\ (i <= 255)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax uN = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_uN: `%%`(N, uN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule uN_case_0{N : N, i : nat}: + `%%`(N, `%`_uN(i)) + -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax sN = + | `%`{i : int}(i : int) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_sN: `%%`(N, sN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule sN_case_0{N : N, i : int}: + `%%`(N, `%`_sN(i)) + -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax iN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u8 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u16 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u31 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u32 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u64 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u128 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax s33 = sN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $signif(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(32) = 23 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(64) = 52 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $expon(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(32) = 8 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(64) = 11 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $M(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $M{N : nat}(N) = $signif(N) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $E(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $E{N : nat}(N) = $expon(N) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax exp = int + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fNmag = + | NORM{m : m, exp : exp}(m : m, exp : exp) + | SUBNORM{m : m, exp : exp}(m : m) + | INF + | NAN{m : m}(m : m) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fNmag: `%%`(N, fNmag) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_0{N : N, m : m, exp : exp}: + `%%`(N, NORM_fNmag(m, exp)) + -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_1{N : N, m : m, exp : exp}: + `%%`(N, SUBNORM_fNmag(m)) + -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_2{N : N}: + `%%`(N, INF_fNmag) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_3{N : N, m : m}: + `%%`(N, NAN_fNmag(m)) + -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fN = + | POS{fNmag : fNmag}(fNmag : fNmag) + | NEG{fNmag : fNmag}(fNmag : fNmag) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fN: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_0{N : N, fNmag : fNmag}: + `%%`(N, POS_fN(fNmag)) + -- wf_fNmag: `%%`(N, fNmag) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_1{N : N, fNmag : fNmag}: + `%%`(N, NEG_fN(fNmag)) + -- wf_fNmag: `%%`(N, fNmag) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f32 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f64 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fzero(N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fnat(N : N, nat : nat) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fone(N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $canon_(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $canon_{N : nat}(N) = (2 ^ ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax vN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax v128 = vN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax list{syntax X}(syntax X) = + | `%`{`X*` : X*}(X*{X <- `X*`} : X*) + -- if (|X*{X <- `X*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax char = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_char: `%`(char) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule char_case_0{i : nat}: + `%`(`%`_char(i)) + -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +def $cont(byte : byte) : nat + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + def $cont{b : byte}(b) = (((b!`%`_byte.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) + -- if ((128 < b!`%`_byte.0) /\ (b!`%`_byte.0 < 192)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.1-89.25 +def $utf8(char*) : byte* + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:48.1-48.44 + def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 + def $utf8{ch : char, b : byte}([ch]) = [b] + -- if (ch!`%`_char.0 < 128) + -- where b = `%`_byte(ch!`%`_char.0) {b} + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 + def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) + -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 + def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) + -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 + def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) + -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax name = + | `%`{`char*` : char*}(char*{char <- `char*`} : char*) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_name: `%`(name) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule name_case_0{`char*` : char*}: + `%`(`%`_name(char*{char <- `char*`})) + -- (wf_char: `%`(char))*{char <- `char*`} + -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax idx = u32 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax laneidx = u8 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax typeidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax funcidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax globalidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tableidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax memidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tagidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax elemidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax dataidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax labelidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax localidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fieldidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax externidx = + | FUNC{funcidx : funcidx}(funcidx : funcidx) + | GLOBAL{globalidx : globalidx}(globalidx : globalidx) + | TABLE{tableidx : tableidx}(tableidx : tableidx) + | MEM{memidx : memidx}(memidx : memidx) + | TAG{tagidx : tagidx}(tagidx : tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_externidx: `%`(externidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_0{funcidx : funcidx}: + `%`(FUNC_externidx(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_1{globalidx : globalidx}: + `%`(GLOBAL_externidx(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_2{tableidx : tableidx}: + `%`(TABLE_externidx(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_3{memidx : memidx}: + `%`(MEM_externidx(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_4{tagidx : tagidx}: + `%`(TAG_externidx(tagidx)) + -- wf_uN: `%%`(32, tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:127.1-127.86 +def $funcsxx(externidx*) : typeidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.24 + def $funcsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:134.1-134.45 + def $funcsxx{x : uN, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.58 + def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:128.1-128.88 +def $globalsxx(externidx*) : globalidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.26 + def $globalsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:138.1-138.51 + def $globalsxx{x : uN, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.62 + def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.87 +def $tablesxx(externidx*) : tableidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.25 + def $tablesxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:142.1-142.48 + def $tablesxx{x : uN, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.60 + def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.85 +def $memsxx(externidx*) : memidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.23 + def $memsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:146.1-146.42 + def $memsxx{x : uN, `xx*` : externidx*}([MEM_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.56 + def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.85 +def $tagsxx(externidx*) : tagidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.23 + def $tagsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:150.1-150.42 + def $tagsxx{x : uN, `xx*` : externidx*}([TAG_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.56 + def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax free = +{ + TYPES{`typeidx*` : typeidx*} typeidx*, + FUNCS{`funcidx*` : funcidx*} funcidx*, + GLOBALS{`globalidx*` : globalidx*} globalidx*, + TABLES{`tableidx*` : tableidx*} tableidx*, + MEMS{`memidx*` : memidx*} memidx*, + ELEMS{`elemidx*` : elemidx*} elemidx*, + DATAS{`dataidx*` : dataidx*} dataidx*, + LOCALS{`localidx*` : localidx*} localidx*, + LABELS{`labelidx*` : labelidx*} labelidx* +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_free: `%`(free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_case_{var_0 : typeidx*, var_1 : funcidx*, var_2 : globalidx*, var_3 : tableidx*, var_4 : memidx*, var_5 : elemidx*, var_6 : dataidx*, var_7 : localidx*, var_8 : labelidx*}: + `%`({TYPES var_0, FUNCS var_1, GLOBALS var_2, TABLES var_3, MEMS var_4, ELEMS var_5, DATAS var_6, LOCALS var_7, LABELS var_8}) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_uN: `%%`(32, var_1))*{var_1 <- var_1} + -- (wf_uN: `%%`(32, var_2))*{var_2 <- var_2} + -- (wf_uN: `%%`(32, var_3))*{var_3 <- var_3} + -- (wf_uN: `%%`(32, var_4))*{var_4 <- var_4} + -- (wf_uN: `%%`(32, var_5))*{var_5 <- var_5} + -- (wf_uN: `%%`(32, var_6))*{var_6 <- var_6} + -- (wf_uN: `%%`(32, var_7))*{var_7 <- var_7} + -- (wf_uN: `%%`(32, var_8))*{var_8 <- var_8} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_opt(free?) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt{free : free}(?(free)) = free + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:170.1-170.29 +def $free_list(free*) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 + def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 + def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_typeidx(typeidx : typeidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_funcidx(funcidx : funcidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_globalidx(globalidx : globalidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tableidx(tableidx : tableidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_memidx(memidx : memidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_elemidx(elemidx : elemidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_dataidx(dataidx : dataidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_localidx(localidx : localidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_labelidx(labelidx : labelidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_externidx(externidx : externidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{funcidx : uN}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{globalidx : uN}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax null = + | NULL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax addrtype = + | I32 + | I64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax numtype = + | I32 + | I64 + | F32 + | F64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax vectype = + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax consttype = + | I32 + | I64 + | F32 + | F64 + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax absheaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax mut = + | MUT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax final = + | FINAL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 +syntax typeuse = + | _IDX{typeidx : typeidx}(typeidx : typeidx) + | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | REC{n : n}(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 +syntax heaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + | _IDX{typeidx : typeidx}(typeidx : typeidx) + | REC{n : n}(n : n) + | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 +syntax valtype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 +syntax storagetype = + | BOT + | I32 + | I64 + | F32 + | F64 + | V128 + | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 +syntax resulttype = list(syntax valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 +syntax fieldtype = + | `%%`{`mut?` : mut?, storagetype : storagetype}(mut?{mut <- `mut?`} : mut?, storagetype : storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 +syntax comptype = + | STRUCT{list : list(syntax fieldtype)}(list : list(syntax fieldtype)) + | ARRAY{fieldtype : fieldtype}(fieldtype : fieldtype) + | `FUNC%->%`{resulttype : resulttype}(resulttype : resulttype, resulttype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 +syntax subtype = + | SUB{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(final?{final <- `final?`} : final?, typeuse*{typeuse <- `typeuse*`} : typeuse*, comptype : comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 +syntax rectype = + | REC{list : list(syntax subtype)}(list : list(syntax subtype)) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 +relation wf_typeuse: `%`(typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_0{typeidx : typeidx}: + `%`(_IDX_typeuse(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_1{rectype : rectype, n : n}: + `%`(_DEF_typeuse(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_2{n : n}: + `%`(REC_typeuse(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 +relation wf_heaptype: `%`(heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_0: + `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_1: + `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_2: + `%`(I31_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_3: + `%`(STRUCT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_4: + `%`(ARRAY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_5: + `%`(NONE_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_6: + `%`(FUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_7: + `%`(NOFUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_8: + `%`(EXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_9: + `%`(NOEXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_10: + `%`(EXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_11: + `%`(NOEXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_12: + `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_13{typeidx : typeidx}: + `%`(_IDX_heaptype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_14{n : n}: + `%`(REC_heaptype(n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_15{rectype : rectype, n : n}: + `%`(_DEF_heaptype(rectype, n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 +relation wf_valtype: `%`(valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_0: + `%`(I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_1: + `%`(I64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_2: + `%`(F32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_3: + `%`(F64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_4: + `%`(V128_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_valtype(null?{null <- `null?`}, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_6: + `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 +relation wf_storagetype: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_0: + `%`(BOT_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_1: + `%`(I32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_2: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_3: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_4: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_5: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_6{`null?` : null?, heaptype : heaptype}: + `%`(REF_storagetype(null?{null <- `null?`}, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_7: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_8: + `%`(I16_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 +relation wf_fieldtype: `%`(fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 + rule fieldtype_case_0{`mut?` : mut?, storagetype : storagetype}: + `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, storagetype)) + -- wf_storagetype: `%`(storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 +relation wf_comptype: `%`(comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_0{list : list(syntax fieldtype)}: + `%`(STRUCT_comptype(list)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_1{fieldtype : fieldtype}: + `%`(ARRAY_comptype(fieldtype)) + -- wf_fieldtype: `%`(fieldtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_2{resulttype : resulttype, var_0 : resulttype}: + `%`(`FUNC%->%`_comptype(resulttype, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 +relation wf_subtype: `%`(subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 + rule subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}: + `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_typeuse: `%`(typeuse))*{typeuse <- `typeuse*`} + -- wf_comptype: `%`(comptype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax deftype = + | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax typevar = + | _IDX{typeidx : typeidx}(typeidx : typeidx) + | REC{n : n}(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_typevar: `%`(typevar) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_0{typeidx : typeidx}: + `%`(_IDX_typevar(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_1{n : n}: + `%`(REC_typevar(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax reftype = + | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_reftype: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule reftype_case_0{`null?` : null?, heaptype : heaptype}: + `%`(REF_reftype(null?{null <- `null?`}, heaptype)) + -- wf_heaptype: `%`(heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Inn = addrtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Fnn = + | F32 + | F64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Vnn = vectype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Cnn = + | I32 + | I64 + | F32 + | F64 + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ANYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EQREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $I31REF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $STRUCTREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ARRAYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLFUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax packtype = + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax lanetype = + | I32 + | I64 + | F32 + | F64 + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Pnn = packtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Jnn = + | I32 + | I64 + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Lnn = lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax limits = + | `[%..%]`{u64 : u64}(u64 : u64, u64?) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_limits: `%`(limits) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule limits_case_0{u64 : u64, var_0 : u64?}: + `%`(`[%..%]`_limits(u64, var_0)) + -- wf_uN: `%%`(64, u64) + -- (wf_uN: `%%`(64, var_0))?{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tagtype = typeuse + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax globaltype = + | `%%`{`mut?` : mut?, valtype : valtype}(mut?{mut <- `mut?`} : mut?, valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_globaltype: `%`(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule globaltype_case_0{`mut?` : mut?, valtype : valtype}: + `%`(`%%`_globaltype(mut?{mut <- `mut?`}, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax memtype = + | `%%PAGE`{addrtype : addrtype, limits : limits}(addrtype : addrtype, limits : limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_memtype: `%`(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule memtype_case_0{addrtype : addrtype, limits : limits}: + `%`(`%%PAGE`_memtype(addrtype, limits)) + -- wf_limits: `%`(limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tabletype = + | `%%%`{addrtype : addrtype, limits : limits, reftype : reftype}(addrtype : addrtype, limits : limits, reftype : reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_tabletype: `%`(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype}: + `%`(`%%%`_tabletype(addrtype, limits, reftype)) + -- wf_limits: `%`(limits) + -- wf_reftype: `%`(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax datatype = + | OK + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax elemtype = reftype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax externtype = + | TAG{tagtype : tagtype}(tagtype : tagtype) + | GLOBAL{globaltype : globaltype}(globaltype : globaltype) + | MEM{memtype : memtype}(memtype : memtype) + | TABLE{tabletype : tabletype}(tabletype : tabletype) + | FUNC{typeuse : typeuse}(typeuse : typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_externtype: `%`(externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_0{tagtype : tagtype}: + `%`(TAG_externtype(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_1{globaltype : globaltype}: + `%`(GLOBAL_externtype(globaltype)) + -- wf_globaltype: `%`(globaltype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_2{memtype : memtype}: + `%`(MEM_externtype(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_3{tabletype : tabletype}: + `%`(TABLE_externtype(tabletype)) + -- wf_tabletype: `%`(tabletype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_4{typeuse : typeuse}: + `%`(FUNC_externtype(typeuse)) + -- wf_typeuse: `%`(typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax moduletype = + | `%->%`{`externtype*` : externtype*}(externtype*{externtype <- `externtype*`} : externtype*, externtype*) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_moduletype: `%`(moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule moduletype_case_0{`externtype*` : externtype*, var_0 : externtype*}: + `%`(`%->%`_moduletype(externtype*{externtype <- `externtype*`}, var_0)) + -- (wf_externtype: `%`(externtype))*{externtype <- `externtype*`} + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $IN(N : N) : Inn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(32) = I32_Inn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(64) = I64_Inn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FN(N : N) : Fnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(32) = F32_Fnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(64) = F64_Fnn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $JN(N : N) : Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(8) = I8_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(16) = I16_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(32) = I32_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(64) = I64_Jnn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $size(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I64_numtype) = 64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F64_numtype) = 64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsize(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsize(V128_vectype) = 128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psize(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I8_packtype) = 8 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I16_packtype) = 16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsize(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize{numtype : numtype}((numtype : numtype <: lanetype)) = $size(numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize{packtype : packtype}((packtype : packtype <: lanetype)) = $psize(packtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $zsize(storagetype : storagetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = $size(numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = $vsize(vectype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = $psize(packtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $isize(Inn : Inn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $isize{Inn : addrtype}(Inn) = $size((Inn : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsize(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsize{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $fsize(Fnn : Fnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $fsize{Fnn : Fnn}(Fnn) = $size((Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_isize(nat : nat) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(64) = ?(I64_Inn) + def $inv_isize{x0 : nat}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsize(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize{n : nat}(n) = ?((!($inv_isize(n)) : addrtype <: Jnn)) + def $inv_jsize{x0 : nat}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_fsize(nat : nat) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(64) = ?(F64_Fnn) + def $inv_fsize{x0 : nat}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn1(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn1{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn2(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn2{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsizenn(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsizenn{vt : vectype}(vt) = $vsize(vt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psizenn(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psizenn{pt : packtype}(pt) = $psize(pt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn1(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn2(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsizenn(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsizenn{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsizenn(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn{n : nat}(n) = ?(!($inv_jsize(n))) + def $inv_jsizenn{x0 : nat}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lunpack(lanetype : lanetype) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack{numtype : numtype}((numtype : numtype <: lanetype)) = numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack{packtype : packtype}((packtype : packtype <: lanetype)) = I32_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $unpack(storagetype : storagetype) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $nunpack(storagetype : storagetype) : numtype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack{numtype : numtype}((numtype : numtype <: storagetype)) = ?(numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack{packtype : packtype}((packtype : packtype <: storagetype)) = ?(I32_numtype) + def $nunpack{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vunpack(storagetype : storagetype) : vectype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vunpack{vectype : vectype}((vectype : vectype <: storagetype)) = ?(vectype) + def $vunpack{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $cunpack(storagetype : storagetype) : consttype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack{consttype : consttype}((consttype : consttype <: storagetype)) = ?(consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack{packtype : packtype}((packtype : packtype <: storagetype)) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack{lanetype : lanetype}((lanetype : lanetype <: storagetype)) = ?(($lunpack(lanetype) : numtype <: consttype)) + def $cunpack{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size((at_1 : addrtype <: numtype)) <= $size((at_2 : addrtype <: numtype))) then at_1 else at_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $diffrt(reftype : reftype, reftype : reftype) : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $as_deftype(typeuse : typeuse) : deftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = dt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +def $tagsxt(externtype*) : tagtype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + def $tagsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +def $globalsxt(externtype*) : globaltype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + def $globalsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +def $memsxt(externtype*) : memtype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + def $memsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +def $tablesxt(externtype*) : tabletype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + def $tablesxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +def $funcsxt(externtype*) : deftype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + def $funcsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 + def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 +def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 + def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 + def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = (if (tv = tv_1) then tu_1 else $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 +def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 + def $minus_recs([], []) = ([], []) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 + def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 + def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = pt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = nt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = vt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 +def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 + def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 +def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + def $subst_heaptype{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 + def $subst_heaptype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 + def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 +def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 + def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 +def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 + def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 + def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 + def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 +def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 + def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 + def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 + def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 + def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 +def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 + def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 +def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 + def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = at + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_all_valtype(valtype : valtype, typeuse*) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 +def $free_subtype(subtype : subtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 + def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.1-495.34 +def $free_rectype(rectype : rectype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.70 + def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.1-523.34 +def $free_deftype(deftype : deftype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:524.1-524.59 + def $free_deftype{rectype : rectype, n : nat}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_tagtype(tagtype : tagtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_tagtype{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_globaltype(globaltype : globaltype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_globaltype{`mut?` : mut?, valtype : valtype}(`%%`_globaltype(mut?{mut <- `mut?`}, valtype)) = $free_valtype(valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_memtype(memtype : memtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_tabletype(tabletype : tabletype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_datatype(datatype : datatype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_elemtype(elemtype : elemtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_externtype(externtype : externtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{tagtype : typeuse}(TAG_externtype(tagtype)) = $free_tagtype(tagtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{globaltype : globaltype}(GLOBAL_externtype(globaltype)) = $free_globaltype(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{memtype : memtype}(MEM_externtype(memtype)) = $free_memtype(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_moduletype(moduletype : moduletype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_moduletype{`externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax num_ = + | mk_num__0{Inn : Inn, var_x : iN}(Inn : Inn, var_x : iN) + | mk_num__1{Fnn : Fnn, var_x : fN}(Fnn : Fnn, var_x : fN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_num_: `%%`(numtype, num_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_0{numtype : numtype, Inn : Inn, var_x : iN}: + `%%`(numtype, mk_num__0_num_(Inn, var_x)) + -- wf_uN: `%%`($size((Inn : addrtype <: numtype)), var_x) + -- if (numtype = (Inn : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_1{numtype : numtype, Fnn : Fnn, var_x : fN}: + `%%`(numtype, mk_num__1_num_(Fnn, var_x)) + -- wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), var_x) + -- if (numtype = (Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__0(var_x : num_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{Inn : Inn, var_x : iN}(mk_num__0_num_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__1(var_x : num_) : fN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{Fnn : Fnn, var_x : fN}(mk_num__1_num_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax pack_ = iN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lane_ = + | mk_lane__0{numtype : numtype, var_x : num_}(numtype : numtype, var_x : num_) + | mk_lane__1{packtype : packtype, var_x : pack_}(packtype : packtype, var_x : pack_) + | mk_lane__2{Jnn : Jnn, var_x : iN}(Jnn : Jnn, var_x : iN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lane_: `%%`(lanetype, lane_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_0{lanetype : lanetype, numtype : numtype, var_x : num_}: + `%%`(lanetype, mk_lane__0_lane_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (lanetype = (numtype : numtype <: lanetype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_1{lanetype : lanetype, packtype : packtype, var_x : pack_}: + `%%`(lanetype, mk_lane__1_lane_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (lanetype = (packtype : packtype <: lanetype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_2{lanetype : lanetype, Jnn : Jnn, var_x : iN}: + `%%`(lanetype, mk_lane__2_lane_(Jnn, var_x)) + -- wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), var_x) + -- if (lanetype = (Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__0(var_x : lane_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{numtype : numtype, var_x : num_}(mk_lane__0_lane_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__1(var_x : lane_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{packtype : packtype, var_x : pack_}(mk_lane__1_lane_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__2(var_x : lane_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{Jnn : Jnn, var_x : iN}(mk_lane__2_lane_(Jnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vec_ = vN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lit_ = + | mk_lit__0{numtype : numtype, var_x : num_}(numtype : numtype, var_x : num_) + | mk_lit__1{vectype : vectype, var_x : vec_}(vectype : vectype, var_x : vec_) + | mk_lit__2{packtype : packtype, var_x : pack_}(packtype : packtype, var_x : pack_) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lit_: `%%`(storagetype, lit_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_0{storagetype : storagetype, numtype : numtype, var_x : num_}: + `%%`(storagetype, mk_lit__0_lit_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (storagetype = (numtype : numtype <: storagetype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_1{storagetype : storagetype, vectype : vectype, var_x : vec_}: + `%%`(storagetype, mk_lit__1_lit_(vectype, var_x)) + -- wf_uN: `%%`($vsize(vectype), var_x) + -- if (storagetype = (vectype : vectype <: storagetype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_2{storagetype : storagetype, packtype : packtype, var_x : pack_}: + `%%`(storagetype, mk_lit__2_lit_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (storagetype = (packtype : packtype <: storagetype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__0(var_x : lit_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{numtype : numtype, var_x : num_}(mk_lit__0_lit_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__1(var_x : lit_) : vec_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{vectype : vectype, var_x : vec_}(mk_lit__1_lit_(vectype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__2(var_x : lit_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{packtype : packtype, var_x : pack_}(mk_lit__2_lit_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sz = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_sz: `%`(sz) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule sz_case_0{i : nat}: + `%`(`%`_sz(i)) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sx = + | U + | S + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Inn = + | CLZ + | CTZ + | POPCNT + | EXTEND{sz : sz}(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_Inn: `%%`(Inn, unop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_0{Inn : Inn}: + `%%`(Inn, CLZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_1{Inn : Inn}: + `%%`(Inn, CTZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_2{Inn : Inn}: + `%%`(Inn, POPCNT_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_3{Inn : Inn, sz : sz}: + `%%`(Inn, EXTEND_unop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if (sz!`%`_sz.0 < $sizenn((Inn : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Fnn = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_ = + | mk_unop__0{Inn : Inn, var_x : unop_Inn}(Inn : Inn, var_x : unop_Inn) + | mk_unop__1{Fnn : Fnn, var_x : unop_Fnn}(Fnn : Fnn, var_x : unop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_: `%%`(numtype, unop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_0{numtype : numtype, Inn : Inn, var_x : unop_Inn}: + `%%`(numtype, mk_unop__0_unop_(Inn, var_x)) + -- wf_unop_Inn: `%%`(Inn, var_x) + -- if (numtype = (Inn : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_1{numtype : numtype, Fnn : Fnn, var_x : unop_Fnn}: + `%%`(numtype, mk_unop__1_unop_(Fnn, var_x)) + -- if (numtype = (Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__0(var_x : unop_) : unop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{Inn : Inn, var_x : unop_Inn}(mk_unop__0_unop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__1(var_x : unop_) : unop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{Fnn : Fnn, var_x : unop_Fnn}(mk_unop__1_unop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Inn = + | ADD + | SUB + | MUL + | DIV{sx : sx}(sx : sx) + | REM{sx : sx}(sx : sx) + | AND + | OR + | XOR + | SHL + | SHR{sx : sx}(sx : sx) + | ROTL + | ROTR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Fnn = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | COPYSIGN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_ = + | mk_binop__0{Inn : Inn, var_x : binop_Inn}(Inn : Inn, var_x : binop_Inn) + | mk_binop__1{Fnn : Fnn, var_x : binop_Fnn}(Fnn : Fnn, var_x : binop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_binop_: `%%`(numtype, binop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_0{numtype : numtype, Inn : Inn, var_x : binop_Inn}: + `%%`(numtype, mk_binop__0_binop_(Inn, var_x)) + -- if (numtype = (Inn : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_1{numtype : numtype, Fnn : Fnn, var_x : binop_Fnn}: + `%%`(numtype, mk_binop__1_binop_(Fnn, var_x)) + -- if (numtype = (Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__0(var_x : binop_) : binop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{Inn : Inn, var_x : binop_Inn}(mk_binop__0_binop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__1(var_x : binop_) : binop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{Fnn : Fnn, var_x : binop_Fnn}(mk_binop__1_binop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_Inn = + | EQZ + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_ = + | mk_testop__0{Inn : Inn, var_x : testop_Inn}(Inn : Inn, var_x : testop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_testop_: `%%`(numtype, testop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule testop__case_0{numtype : numtype, Inn : Inn, var_x : testop_Inn}: + `%%`(numtype, mk_testop__0_testop_(Inn, var_x)) + -- if (numtype = (Inn : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_testop__0(var_x : testop_) : testop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_testop__0{Inn : Inn, var_x : testop_Inn}(mk_testop__0_testop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Inn = + | EQ + | NE + | LT{sx : sx}(sx : sx) + | GT{sx : sx}(sx : sx) + | LE{sx : sx}(sx : sx) + | GE{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Fnn = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_ = + | mk_relop__0{Inn : Inn, var_x : relop_Inn}(Inn : Inn, var_x : relop_Inn) + | mk_relop__1{Fnn : Fnn, var_x : relop_Fnn}(Fnn : Fnn, var_x : relop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_relop_: `%%`(numtype, relop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_0{numtype : numtype, Inn : Inn, var_x : relop_Inn}: + `%%`(numtype, mk_relop__0_relop_(Inn, var_x)) + -- if (numtype = (Inn : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_1{numtype : numtype, Fnn : Fnn, var_x : relop_Fnn}: + `%%`(numtype, mk_relop__1_relop_(Fnn, var_x)) + -- if (numtype = (Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__0(var_x : relop_) : relop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{Inn : Inn, var_x : relop_Inn}(mk_relop__0_relop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__1(var_x : relop_) : relop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{Fnn : Fnn, var_x : relop_Fnn}(mk_relop__1_relop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Inn_2 = + | EXTEND{sx : sx}(sx : sx) + | WRAP + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Inn_2: `%%%`(Inn, Inn, cvtop__Inn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_0{Inn_1 : Inn, Inn_2 : Inn, sx : sx}: + `%%%`(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)) + -- if ($sizenn1((Inn_1 : addrtype <: numtype)) < $sizenn2((Inn_2 : addrtype <: numtype))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_1{Inn_1 : Inn, Inn_2 : Inn}: + `%%%`(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2) + -- if ($sizenn1((Inn_1 : addrtype <: numtype)) > $sizenn2((Inn_2 : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Fnn_2 = + | CONVERT{sx : sx}(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn, Fnn, cvtop__Inn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_0{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx}: + `%%%`(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_1{Inn_1 : Inn, Fnn_2 : Fnn}: + `%%%`(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2) + -- if ($sizenn1((Inn_1 : addrtype <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Inn_2 = + | TRUNC{sx : sx}(sx : sx) + | TRUNC_SAT{sx : sx}(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn, Inn, cvtop__Fnn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_0{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_1{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_2{Fnn_1 : Fnn, Inn_2 : Inn}: + `%%%`(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2) + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Fnn_2 = + | PROMOTE + | DEMOTE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn, Fnn, cvtop__Fnn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_0{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) < $sizenn2((Fnn_2 : Fnn <: numtype))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_1{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__ = + | mk_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2) + | mk_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2) + | mk_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2) + | mk_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__: `%%%`(numtype, numtype, cvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_0{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) + -- wf_cvtop__Inn_1_Inn_2: `%%%`(Inn_1, Inn_2, var_x) + -- if (numtype_1 = (Inn_1 : addrtype <: numtype)) + -- if (numtype_2 = (Inn_2 : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_1{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) + -- wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn_1, Fnn_2, var_x) + -- if (numtype_1 = (Inn_1 : addrtype <: numtype)) + -- if (numtype_2 = (Fnn_2 : Fnn <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_2{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) + -- wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn_1, Inn_2, var_x) + -- if (numtype_1 = (Fnn_1 : Fnn <: numtype)) + -- if (numtype_2 = (Inn_2 : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_3{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) + -- wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn_1, Fnn_2, var_x) + -- if (numtype_1 = (Fnn_1 : Fnn <: numtype)) + -- if (numtype_2 = (Fnn_2 : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___0(var_x : cvtop__) : cvtop__Inn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___1(var_x : cvtop__) : cvtop__Inn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___2(var_x : cvtop__) : cvtop__Fnn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___3(var_x : cvtop__) : cvtop__Fnn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax dim = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_dim: `%`(dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_case_0{i : nat}: + `%`(`%`_dim(i)) + -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax shape = + | `%X%`{lanetype : lanetype, dim : dim}(lanetype : lanetype, dim : dim) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_shape: `%`(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule shape_case_0{lanetype : lanetype, dim : dim}: + `%`(`%X%`_shape(lanetype, dim)) + -- wf_dim: `%`(dim) + -- if (($lsize(lanetype) * dim!`%`_dim.0) = 128) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $dim(shape : shape) : dim + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $lanetype(shape : shape) : lanetype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $lanetype{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $unpackshape(shape : shape) : numtype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $unpackshape{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax ishape = + | `%`{shape : shape, Jnn : Jnn}(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_ishape: `%`(ishape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule ishape_case_0{shape : shape, Jnn : Jnn}: + `%`(`%`_ishape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax bshape = + | `%`{shape : shape}(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_bshape: `%`(bshape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule bshape_case_0{shape : shape}: + `%`(`%`_bshape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = I8_lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax zero = + | ZERO + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax half = + | LOW + | HIGH + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvunop = + | NOT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvbinop = + | AND + | ANDNOT + | OR + | XOR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvternop = + | BITSELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvtestop = + | ANY_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Jnn_M = + | ABS + | NEG + | POPCNT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_Jnn_M: `%%%`(Jnn, M, vunop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ABS_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NEG_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_2{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, POPCNT_vunop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Fnn_M = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_ = + | mk_vunop__0{Jnn : Jnn, M : M, var_x : vunop_Jnn_M}(Jnn : Jnn, M : M, var_x : vunop_Jnn_M) + | mk_vunop__1{Fnn : Fnn, M : M, var_x : vunop_Fnn_M}(Fnn : Fnn, M : M, var_x : vunop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_: `%%`(shape, vunop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vunop_Jnn_M}: + `%%`(shape, mk_vunop__0_vunop_(Jnn, M, var_x)) + -- wf_vunop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vunop_Fnn_M}: + `%%`(shape, mk_vunop__1_vunop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__0(var_x : vunop_) : vunop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{Jnn : Jnn, M : M, var_x : vunop_Jnn_M}(mk_vunop__0_vunop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__1(var_x : vunop_) : vunop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{Fnn : Fnn, M : M, var_x : vunop_Fnn_M}(mk_vunop__1_vunop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Jnn_M = + | ADD + | SUB + | ADD_SAT{sx : sx}(sx : sx) + | SUB_SAT{sx : sx}(sx : sx) + | MUL + | `AVGRU` + | `Q15MULR_SATS` + | `RELAXED_Q15MULRS` + | MIN{sx : sx}(sx : sx) + | MAX{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_Jnn_M: `%%%`(Jnn, M, vbinop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ADD_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, SUB_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_4{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, MUL_vbinop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_5{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, `AVGRU`_vbinop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_6{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_7{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_8{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MIN_vbinop_Jnn_M(sx)) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_9{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MAX_vbinop_Jnn_M(sx)) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Fnn_M = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | PMIN + | PMAX + | RELAXED_MIN + | RELAXED_MAX + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_ = + | mk_vbinop__0{Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}(Jnn : Jnn, M : M, var_x : vbinop_Jnn_M) + | mk_vbinop__1{Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}(Fnn : Fnn, M : M, var_x : vbinop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_: `%%`(shape, vbinop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}: + `%%`(shape, mk_vbinop__0_vbinop_(Jnn, M, var_x)) + -- wf_vbinop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}: + `%%`(shape, mk_vbinop__1_vbinop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__0(var_x : vbinop_) : vbinop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}(mk_vbinop__0_vbinop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__1(var_x : vbinop_) : vbinop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}(mk_vbinop__1_vbinop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Jnn_M = + | RELAXED_LANESELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Fnn_M = + | RELAXED_MADD + | RELAXED_NMADD + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_ = + | mk_vternop__0{Jnn : Jnn, M : M, var_x : vternop_Jnn_M}(Jnn : Jnn, M : M, var_x : vternop_Jnn_M) + | mk_vternop__1{Fnn : Fnn, M : M, var_x : vternop_Fnn_M}(Fnn : Fnn, M : M, var_x : vternop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vternop_: `%%`(shape, vternop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vternop_Jnn_M}: + `%%`(shape, mk_vternop__0_vternop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vternop_Fnn_M}: + `%%`(shape, mk_vternop__1_vternop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__0(var_x : vternop_) : vternop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{Jnn : Jnn, M : M, var_x : vternop_Jnn_M}(mk_vternop__0_vternop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__1(var_x : vternop_) : vternop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{Fnn : Fnn, M : M, var_x : vternop_Fnn_M}(mk_vternop__1_vternop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_Jnn_M = + | ALL_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_ = + | mk_vtestop__0{Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}(Jnn : Jnn, M : M, var_x : vtestop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vtestop_: `%%`(shape, vtestop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vtestop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}: + `%%`(shape, mk_vtestop__0_vtestop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vtestop__0(var_x : vtestop_) : vtestop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vtestop__0{Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}(mk_vtestop__0_vtestop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Jnn_M = + | EQ + | NE + | LT{sx : sx}(sx : sx) + | GT{sx : sx}(sx : sx) + | LE{sx : sx}(sx : sx) + | GE{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_Jnn_M: `%%%`(Jnn, M, vrelop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, EQ_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NE_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LT_vrelop_Jnn_M(sx)) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GT_vrelop_Jnn_M(sx)) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_4{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LE_vrelop_Jnn_M(sx)) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_5{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GE_vrelop_Jnn_M(sx)) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Fnn_M = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_ = + | mk_vrelop__0{Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}(Jnn : Jnn, M : M, var_x : vrelop_Jnn_M) + | mk_vrelop__1{Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}(Fnn : Fnn, M : M, var_x : vrelop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_: `%%`(shape, vrelop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}: + `%%`(shape, mk_vrelop__0_vrelop_(Jnn, M, var_x)) + -- wf_vrelop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}: + `%%`(shape, mk_vrelop__1_vrelop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__0(var_x : vrelop_) : vrelop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}(mk_vrelop__0_vrelop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__1(var_x : vrelop_) : vrelop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}(mk_vrelop__1_vrelop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_Jnn_M = + | SHL + | SHR{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_ = + | mk_vshiftop__0{Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}(Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vshiftop_: `%%`(ishape, vshiftop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vshiftop__case_0{ishape : ishape, Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}: + `%%`(ishape, mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) + -- if (ishape = `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vshiftop__0(var_x : vshiftop_) : vshiftop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vshiftop__0{Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}(mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_M = + | SWIZZLE + | RELAXED_SWIZZLE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_ = + | mk_vswizzlop__0{M : M, var_x : vswizzlop_M}(M : M, var_x : vswizzlop_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vswizzlop_: `%%`(bshape, vswizzlop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vswizzlop__case_0{bshape : bshape, M : M, var_x : vswizzlop_M}: + `%%`(bshape, mk_vswizzlop__0_vswizzlop_(M, var_x)) + -- if (bshape = `%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vswizzlop__0(var_x : vswizzlop_) : vswizzlop_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vswizzlop__0{M : M, var_x : vswizzlop_M}(mk_vswizzlop__0_vswizzlop_(M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTADD_PAIRWISE{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextunop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)) + -- if ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__ = + | mk_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__: `%%%`(ishape, ishape, vextunop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextunop___0(var_x : vextunop__) : vextunop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTMUL{half : half, sx : sx}(half : half, sx : sx) + | `DOTS` + | `RELAXED_DOTS` + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextbinop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_1{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_2{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__ = + | mk_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__: `%%%`(ishape, ishape, vextbinop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextbinop___0(var_x : vextbinop__) : vextbinop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__Jnn_1_M_1_Jnn_2_M_2 = + | `RELAXED_DOT_ADDS` + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextternop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__ = + | mk_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__: `%%%`(ishape, ishape, vextternop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextternop___0(var_x : vextternop__) : vextternop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTEND{half : half, sx : sx}(half : half, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vcvtop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Fnn_2_M_2 = + | CONVERT{`half?` : half?, sx : sx}(half?{half <- `half?`} : half?, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn, M, Fnn, M, vcvtop__Jnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Fnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}: + `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)) + -- if (((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Jnn_2_M_2 = + | TRUNC_SAT{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + | RELAXED_TRUNC{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn, M, Jnn, M, vcvtop__Fnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})) + -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})) + -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Fnn_2_M_2 = + | DEMOTE{zero : zero}(zero : zero) + | `PROMOTELOW` + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn, M, Fnn, M, vcvtop__Fnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)) + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2) + -- if ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__ = + | mk_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2) + | mk_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__: `%%%`(shape, shape, vcvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_0{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_1{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_2{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_3{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___0(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___1(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___2(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___3(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax memarg = +{ + ALIGN{u32 : u32} u32, + OFFSET{u32 : u32} u32 +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_memarg: `%`(memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg_case_{var_0 : u32, var_1 : u32}: + `%`({ALIGN var_0, OFFSET var_1}) + -- wf_uN: `%%`(32, var_0) + -- wf_uN: `%%`(32, var_1) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_Inn = + | `%_%`{sz : sz, sx : sx}(sz : sz, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_Inn: `%%`(Inn, loadop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop_Inn_case_0{Inn : Inn, sz : sz, sx : sx}: + `%%`(Inn, `%_%`_loadop_Inn(sz, sx)) + -- wf_sz: `%`(sz) + -- if (sz!`%`_sz.0 < $sizenn((Inn : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_ = + | mk_loadop__0{Inn : Inn, var_x : loadop_Inn}(Inn : Inn, var_x : loadop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_: `%%`(numtype, loadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop__case_0{numtype : numtype, Inn : Inn, var_x : loadop_Inn}: + `%%`(numtype, mk_loadop__0_loadop_(Inn, var_x)) + -- wf_loadop_Inn: `%%`(Inn, var_x) + -- if (numtype = (Inn : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_loadop__0(var_x : loadop_) : loadop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_loadop__0{Inn : Inn, var_x : loadop_Inn}(mk_loadop__0_loadop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_Inn = + | `%`{sz : sz}(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_Inn: `%%`(Inn, storeop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop_Inn_case_0{Inn : Inn, sz : sz}: + `%%`(Inn, `%`_storeop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if (sz!`%`_sz.0 < $sizenn((Inn : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_ = + | mk_storeop__0{Inn : Inn, var_x : storeop_Inn}(Inn : Inn, var_x : storeop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_: `%%`(numtype, storeop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop__case_0{numtype : numtype, Inn : Inn, var_x : storeop_Inn}: + `%%`(numtype, mk_storeop__0_storeop_(Inn, var_x)) + -- wf_storeop_Inn: `%%`(Inn, var_x) + -- if (numtype = (Inn : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_storeop__0(var_x : storeop_) : storeop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_storeop__0{Inn : Inn, var_x : storeop_Inn}(mk_storeop__0_storeop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vloadop_ = + | `SHAPE%X%_%`{sz : sz, M : M, sx : sx}(sz : sz, M : M, sx : sx) + | SPLAT{sz : sz}(sz : sz) + | ZERO{sz : sz}(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vloadop_: `%%`(vectype, vloadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_0{vectype : vectype, sz : sz, M : M, sx : sx}: + `%%`(vectype, `SHAPE%X%_%`_vloadop_(sz, M, sx)) + -- wf_sz: `%`(sz) + -- if (((sz!`%`_sz.0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_1{vectype : vectype, sz : sz}: + `%%`(vectype, SPLAT_vloadop_(sz)) + -- wf_sz: `%`(sz) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_2{vectype : vectype, sz : sz}: + `%%`(vectype, ZERO_vloadop_(sz)) + -- wf_sz: `%`(sz) + -- if (sz!`%`_sz.0 >= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax blocktype = + | _RESULT{`valtype?` : valtype?}(valtype?{valtype <- `valtype?`} : valtype?) + | _IDX{funcidx : funcidx}(funcidx : funcidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_blocktype: `%`(blocktype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_0{`valtype?` : valtype?}: + `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- (wf_valtype: `%`(valtype))?{valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_1{funcidx : funcidx}: + `%`(_IDX_blocktype(funcidx)) + -- wf_uN: `%%`(32, funcidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax addr = nat + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exnaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-42.23 +syntax addrref = + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 +relation wf_addrref: `%`(addrref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_0{u31 : u31}: + `%`(REF.I31_NUM_addrref(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_1{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_addrref(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_2{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_addrref(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_3{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_addrref(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_4{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_addrref(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_5{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_addrref(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_6{addrref : addrref}: + `%`(REF.EXTERN_addrref(addrref)) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax catch = + | CATCH{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL{labelidx : labelidx}(labelidx : labelidx) + | CATCH_ALL_REF{labelidx : labelidx}(labelidx : labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_catch: `%`(catch) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_0{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_1{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_REF_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_2{labelidx : labelidx}: + `%`(CATCH_ALL_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_3{labelidx : labelidx}: + `%`(CATCH_ALL_REF_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax dataaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax elemaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globaladdr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax memaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tagaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax externaddr = + | TAG{tagaddr : tagaddr}(tagaddr : tagaddr) + | GLOBAL{globaladdr : globaladdr}(globaladdr : globaladdr) + | MEM{memaddr : memaddr}(memaddr : memaddr) + | TABLE{tableaddr : tableaddr}(tableaddr : tableaddr) + | FUNC{funcaddr : funcaddr}(funcaddr : funcaddr) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exportinst = +{ + NAME{name : name} name, + ADDR{externaddr : externaddr} externaddr +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exportinst: `%`(exportinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exportinst_case_{var_0 : name, var_1 : externaddr}: + `%`({NAME var_0, ADDR var_1}) + -- wf_name: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax moduleinst = +{ + TYPES{`deftype*` : deftype*} deftype*, + TAGS{`tagaddr*` : tagaddr*} tagaddr*, + GLOBALS{`globaladdr*` : globaladdr*} globaladdr*, + MEMS{`memaddr*` : memaddr*} memaddr*, + TABLES{`tableaddr*` : tableaddr*} tableaddr*, + FUNCS{`funcaddr*` : funcaddr*} funcaddr*, + DATAS{`dataaddr*` : dataaddr*} dataaddr*, + ELEMS{`elemaddr*` : elemaddr*} elemaddr*, + EXPORTS{`exportinst*` : exportinst*} exportinst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_moduleinst: `%`(moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_case_{var_0 : deftype*, var_1 : tagaddr*, var_2 : globaladdr*, var_3 : memaddr*, var_4 : tableaddr*, var_5 : funcaddr*, var_6 : dataaddr*, var_7 : elemaddr*, var_8 : exportinst*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, EXPORTS var_8}) + -- (wf_exportinst: `%`(var_8))*{var_8 <- var_8} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax val = + | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) + | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_val: `%`(val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_0{numtype : numtype, num_ : num_}: + `%`(CONST_val(numtype, num_)) + -- wf_num_: `%%`(numtype, num_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_1{vectype : vectype, vec_ : vec_}: + `%`(VCONST_val(vectype, vec_)) + -- wf_uN: `%%`($vsize(vectype), vec_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_2{heaptype : heaptype}: + `%`(REF.NULL_val(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_3{u31 : u31}: + `%`(REF.I31_NUM_val(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_4{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_5{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_6{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_7{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_val(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_8{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_9{addrref : addrref}: + `%`(REF.EXTERN_val(addrref)) + -- wf_addrref: `%`(addrref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax frame = +{ + LOCALS{`val?*` : val?*} val?*, + MODULE{moduleinst : moduleinst} moduleinst +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_frame: `%`(frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_case_{var_0 : val?*, var_1 : moduleinst}: + `%`({LOCALS var_0, MODULE var_1}) + -- (wf_val: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- wf_moduleinst: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.1-142.9 +syntax instr = + | NOP + | UNREACHABLE + | DROP + | SELECT{`valtype*?` : valtype*?}(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} : valtype*?) + | BLOCK{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) + | LOOP{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) + | `IF%%ELSE%`{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*, instr*) + | BR{labelidx : labelidx}(labelidx : labelidx) + | BR_IF{labelidx : labelidx}(labelidx : labelidx) + | BR_TABLE{`labelidx*` : labelidx*}(labelidx*{labelidx <- `labelidx*`} : labelidx*, labelidx) + | BR_ON_NULL{labelidx : labelidx}(labelidx : labelidx) + | BR_ON_NON_NULL{labelidx : labelidx}(labelidx : labelidx) + | BR_ON_CAST{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) + | BR_ON_CAST_FAIL{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) + | CALL{funcidx : funcidx}(funcidx : funcidx) + | CALL_REF{typeuse : typeuse}(typeuse : typeuse) + | CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) + | RETURN + | RETURN_CALL{funcidx : funcidx}(funcidx : funcidx) + | RETURN_CALL_REF{typeuse : typeuse}(typeuse : typeuse) + | RETURN_CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) + | THROW{tagidx : tagidx}(tagidx : tagidx) + | THROW_REF + | TRY_TABLE{blocktype : blocktype, list : list(syntax catch), `instr*` : instr*}(blocktype : blocktype, list : list(syntax catch), instr*{instr <- `instr*`} : instr*) + | LOCAL.GET{localidx : localidx}(localidx : localidx) + | LOCAL.SET{localidx : localidx}(localidx : localidx) + | LOCAL.TEE{localidx : localidx}(localidx : localidx) + | GLOBAL.GET{globalidx : globalidx}(globalidx : globalidx) + | GLOBAL.SET{globalidx : globalidx}(globalidx : globalidx) + | TABLE.GET{tableidx : tableidx}(tableidx : tableidx) + | TABLE.SET{tableidx : tableidx}(tableidx : tableidx) + | TABLE.SIZE{tableidx : tableidx}(tableidx : tableidx) + | TABLE.GROW{tableidx : tableidx}(tableidx : tableidx) + | TABLE.FILL{tableidx : tableidx}(tableidx : tableidx) + | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) + | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) + | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) + | LOAD{numtype : numtype, `loadop_?` : loadop_?, memidx : memidx, memarg : memarg}(numtype : numtype, loadop_?{loadop_ <- `loadop_?`} : loadop_?, memidx : memidx, memarg : memarg) + | STORE{numtype : numtype, `storeop_?` : storeop_?, memidx : memidx, memarg : memarg}(numtype : numtype, storeop_?{storeop_ <- `storeop_?`} : storeop_?, memidx : memidx, memarg : memarg) + | VLOAD{vectype : vectype, `vloadop_?` : vloadop_?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop_?{vloadop_ <- `vloadop_?`} : vloadop_?, memidx : memidx, memarg : memarg) + | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | MEMORY.SIZE{memidx : memidx}(memidx : memidx) + | MEMORY.GROW{memidx : memidx}(memidx : memidx) + | MEMORY.FILL{memidx : memidx}(memidx : memidx) + | MEMORY.COPY{memidx : memidx}(memidx : memidx, memidx) + | MEMORY.INIT{memidx : memidx, dataidx : dataidx}(memidx : memidx, dataidx : dataidx) + | DATA.DROP{dataidx : dataidx}(dataidx : dataidx) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | REF.IS_NULL + | REF.AS_NON_NULL + | REF.EQ + | REF.TEST{reftype : reftype}(reftype : reftype) + | REF.CAST{reftype : reftype}(reftype : reftype) + | REF.FUNC{funcidx : funcidx}(funcidx : funcidx) + | REF.I31 + | I31.GET{sx : sx}(sx : sx) + | STRUCT.NEW{typeidx : typeidx}(typeidx : typeidx) + | STRUCT.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) + | STRUCT.GET{`sx?` : sx?, typeidx : typeidx, u32 : u32}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx, u32 : u32) + | STRUCT.SET{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) + | ARRAY.NEW{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.NEW_FIXED{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) + | ARRAY.NEW_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) + | ARRAY.NEW_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) + | ARRAY.GET{`sx?` : sx?, typeidx : typeidx}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx) + | ARRAY.SET{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.LEN + | ARRAY.FILL{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.COPY{typeidx : typeidx}(typeidx : typeidx, typeidx) + | ARRAY.INIT_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) + | ARRAY.INIT_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) + | EXTERN.CONVERT_ANY + | ANY.CONVERT_EXTERN + | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) + | UNOP{numtype : numtype, unop_ : unop_}(numtype : numtype, unop_ : unop_) + | BINOP{numtype : numtype, binop_ : binop_}(numtype : numtype, binop_ : binop_) + | TESTOP{numtype : numtype, testop_ : testop_}(numtype : numtype, testop_ : testop_) + | RELOP{numtype : numtype, relop_ : relop_}(numtype : numtype, relop_ : relop_) + | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__}(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__) + | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) + | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) + | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP{vectype : vectype, vvternop : vvternop}(vectype : vectype, vvternop : vvternop) + | VVTESTOP{vectype : vectype, vvtestop : vvtestop}(vectype : vectype, vvtestop : vvtestop) + | VUNOP{shape : shape, vunop_ : vunop_}(shape : shape, vunop_ : vunop_) + | VBINOP{shape : shape, vbinop_ : vbinop_}(shape : shape, vbinop_ : vbinop_) + | VTERNOP{shape : shape, vternop_ : vternop_}(shape : shape, vternop_ : vternop_) + | VTESTOP{shape : shape, vtestop_ : vtestop_}(shape : shape, vtestop_ : vtestop_) + | VRELOP{shape : shape, vrelop_ : vrelop_}(shape : shape, vrelop_ : vrelop_) + | VSHIFTOP{ishape : ishape, vshiftop_ : vshiftop_}(ishape : ishape, vshiftop_ : vshiftop_) + | VBITMASK{ishape : ishape}(ishape : ishape) + | VSWIZZLOP{bshape : bshape, vswizzlop_ : vswizzlop_}(bshape : bshape, vswizzlop_ : vswizzlop_) + | VSHUFFLE{bshape : bshape, `laneidx*` : laneidx*}(bshape : bshape, laneidx*{laneidx <- `laneidx*`} : laneidx*) + | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__}(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__) + | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__}(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__) + | VEXTTERNOP{ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__}(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__) + | VNARROW{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__}(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) + | VSPLAT{shape : shape}(shape : shape) + | VEXTRACT_LANE{shape : shape, `sx?` : sx?, laneidx : laneidx}(shape : shape, sx?{sx <- `sx?`} : sx?, laneidx : laneidx) + | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + | `LABEL_%{%}%`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*, instr*) + | `FRAME_%{%}%`{n : n, frame : frame, `instr*` : instr*}(n : n, frame : frame, instr*{instr <- `instr*`} : instr*) + | `HANDLER_%{%}%`{n : n, `catch*` : catch*, `instr*` : instr*}(n : n, catch*{catch <- `catch*`} : catch*, instr*{instr <- `instr*`} : instr*) + | TRAP +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 +relation wf_instr: `%`(instr) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_0: + `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_1: + `%`(UNREACHABLE_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_2: + `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_3{`valtype*?` : valtype*?}: + `%`(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) + -- (wf_valtype: `%`(valtype))*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_4{blocktype : blocktype, `instr*` : instr*}: + `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_5{blocktype : blocktype, `instr*` : instr*}: + `%`(LOOP_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_6{blocktype : blocktype, `instr*` : instr*, var_0 : instr*}: + `%`(`IF%%ELSE%`_instr(blocktype, instr*{instr <- `instr*`}, var_0)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_7{labelidx : labelidx}: + `%`(BR_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_8{labelidx : labelidx}: + `%`(BR_IF_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_9{`labelidx*` : labelidx*, var_0 : labelidx}: + `%`(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, var_0)) + -- (wf_uN: `%%`(32, labelidx))*{labelidx <- `labelidx*`} + -- wf_uN: `%%`(32, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_10{labelidx : labelidx}: + `%`(BR_ON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_11{labelidx : labelidx}: + `%`(BR_ON_NON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_12{labelidx : labelidx, reftype : reftype, var_0 : reftype}: + `%`(BR_ON_CAST_instr(labelidx, reftype, var_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_13{labelidx : labelidx, reftype : reftype, var_0 : reftype}: + `%`(BR_ON_CAST_FAIL_instr(labelidx, reftype, var_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_14{funcidx : funcidx}: + `%`(CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_15{typeuse : typeuse}: + `%`(CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_16{tableidx : tableidx, typeuse : typeuse}: + `%`(CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_17: + `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_18{funcidx : funcidx}: + `%`(RETURN_CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_19{typeuse : typeuse}: + `%`(RETURN_CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_20{tableidx : tableidx, typeuse : typeuse}: + `%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_21{tagidx : tagidx}: + `%`(THROW_instr(tagidx)) + -- wf_uN: `%%`(32, tagidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_22: + `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_23{blocktype : blocktype, list : list(syntax catch), `instr*` : instr*}: + `%`(TRY_TABLE_instr(blocktype, list, instr*{instr <- `instr*`})) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_24{localidx : localidx}: + `%`(LOCAL.GET_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_25{localidx : localidx}: + `%`(LOCAL.SET_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_26{localidx : localidx}: + `%`(LOCAL.TEE_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_27{globalidx : globalidx}: + `%`(GLOBAL.GET_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_28{globalidx : globalidx}: + `%`(GLOBAL.SET_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_29{tableidx : tableidx}: + `%`(TABLE.GET_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_30{tableidx : tableidx}: + `%`(TABLE.SET_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_31{tableidx : tableidx}: + `%`(TABLE.SIZE_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_32{tableidx : tableidx}: + `%`(TABLE.GROW_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_33{tableidx : tableidx}: + `%`(TABLE.FILL_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_34{tableidx : tableidx, var_0 : tableidx}: + `%`(TABLE.COPY_instr(tableidx, var_0)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_35{tableidx : tableidx, elemidx : elemidx}: + `%`(TABLE.INIT_instr(tableidx, elemidx)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_36{elemidx : elemidx}: + `%`(ELEM.DROP_instr(elemidx)) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_37{numtype : numtype, `loadop_?` : loadop_?, memidx : memidx, memarg : memarg}: + `%`(LOAD_instr(numtype, loadop_?{loadop_ <- `loadop_?`}, memidx, memarg)) + -- (wf_loadop_: `%%`(numtype, loadop_))?{loadop_ <- `loadop_?`} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_38{numtype : numtype, `storeop_?` : storeop_?, memidx : memidx, memarg : memarg}: + `%`(STORE_instr(numtype, storeop_?{storeop_ <- `storeop_?`}, memidx, memarg)) + -- (wf_storeop_: `%%`(numtype, storeop_))?{storeop_ <- `storeop_?`} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_39{vectype : vectype, `vloadop_?` : vloadop_?, memidx : memidx, memarg : memarg}: + `%`(VLOAD_instr(vectype, vloadop_?{vloadop_ <- `vloadop_?`}, memidx, memarg)) + -- (wf_vloadop_: `%%`(vectype, vloadop_))?{vloadop_ <- `vloadop_?`} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_40{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_41{vectype : vectype, memidx : memidx, memarg : memarg}: + `%`(VSTORE_instr(vectype, memidx, memarg)) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_42{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_43{memidx : memidx}: + `%`(MEMORY.SIZE_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_44{memidx : memidx}: + `%`(MEMORY.GROW_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_45{memidx : memidx}: + `%`(MEMORY.FILL_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_46{memidx : memidx, var_0 : memidx}: + `%`(MEMORY.COPY_instr(memidx, var_0)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_47{memidx : memidx, dataidx : dataidx}: + `%`(MEMORY.INIT_instr(memidx, dataidx)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_48{dataidx : dataidx}: + `%`(DATA.DROP_instr(dataidx)) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_49{heaptype : heaptype}: + `%`(REF.NULL_instr(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_50: + `%`(REF.IS_NULL_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_51: + `%`(REF.AS_NON_NULL_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_52: + `%`(REF.EQ_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_53{reftype : reftype}: + `%`(REF.TEST_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_54{reftype : reftype}: + `%`(REF.CAST_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_55{funcidx : funcidx}: + `%`(REF.FUNC_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_56: + `%`(REF.I31_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_57{sx : sx}: + `%`(I31.GET_instr(sx)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_58{typeidx : typeidx}: + `%`(STRUCT.NEW_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_59{typeidx : typeidx}: + `%`(STRUCT.NEW_DEFAULT_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_60{`sx?` : sx?, typeidx : typeidx, u32 : u32}: + `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_61{typeidx : typeidx, u32 : u32}: + `%`(STRUCT.SET_instr(typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_62{typeidx : typeidx}: + `%`(ARRAY.NEW_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_63{typeidx : typeidx}: + `%`(ARRAY.NEW_DEFAULT_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_64{typeidx : typeidx, u32 : u32}: + `%`(ARRAY.NEW_FIXED_instr(typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_65{typeidx : typeidx, dataidx : dataidx}: + `%`(ARRAY.NEW_DATA_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_66{typeidx : typeidx, elemidx : elemidx}: + `%`(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_67{`sx?` : sx?, typeidx : typeidx}: + `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_68{typeidx : typeidx}: + `%`(ARRAY.SET_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_69: + `%`(ARRAY.LEN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_70{typeidx : typeidx}: + `%`(ARRAY.FILL_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_71{typeidx : typeidx, var_0 : typeidx}: + `%`(ARRAY.COPY_instr(typeidx, var_0)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_72{typeidx : typeidx, dataidx : dataidx}: + `%`(ARRAY.INIT_DATA_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_73{typeidx : typeidx, elemidx : elemidx}: + `%`(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_74: + `%`(EXTERN.CONVERT_ANY_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_75: + `%`(ANY.CONVERT_EXTERN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_76{numtype : numtype, num_ : num_}: + `%`(CONST_instr(numtype, num_)) + -- wf_num_: `%%`(numtype, num_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_77{numtype : numtype, unop_ : unop_}: + `%`(UNOP_instr(numtype, unop_)) + -- wf_unop_: `%%`(numtype, unop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_78{numtype : numtype, binop_ : binop_}: + `%`(BINOP_instr(numtype, binop_)) + -- wf_binop_: `%%`(numtype, binop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_79{numtype : numtype, testop_ : testop_}: + `%`(TESTOP_instr(numtype, testop_)) + -- wf_testop_: `%%`(numtype, testop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_80{numtype : numtype, relop_ : relop_}: + `%`(RELOP_instr(numtype, relop_)) + -- wf_relop_: `%%`(numtype, relop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_81{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__}: + `%`(CVTOP_instr(numtype_1, numtype_2, cvtop__)) + -- wf_cvtop__: `%%%`(numtype_2, numtype_1, cvtop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_82{vectype : vectype, vec_ : vec_}: + `%`(VCONST_instr(vectype, vec_)) + -- wf_uN: `%%`($vsize(vectype), vec_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_83{vectype : vectype, vvunop : vvunop}: + `%`(VVUNOP_instr(vectype, vvunop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_84{vectype : vectype, vvbinop : vvbinop}: + `%`(VVBINOP_instr(vectype, vvbinop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_85{vectype : vectype, vvternop : vvternop}: + `%`(VVTERNOP_instr(vectype, vvternop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_86{vectype : vectype, vvtestop : vvtestop}: + `%`(VVTESTOP_instr(vectype, vvtestop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_87{shape : shape, vunop_ : vunop_}: + `%`(VUNOP_instr(shape, vunop_)) + -- wf_shape: `%`(shape) + -- wf_vunop_: `%%`(shape, vunop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_88{shape : shape, vbinop_ : vbinop_}: + `%`(VBINOP_instr(shape, vbinop_)) + -- wf_shape: `%`(shape) + -- wf_vbinop_: `%%`(shape, vbinop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_89{shape : shape, vternop_ : vternop_}: + `%`(VTERNOP_instr(shape, vternop_)) + -- wf_shape: `%`(shape) + -- wf_vternop_: `%%`(shape, vternop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_90{shape : shape, vtestop_ : vtestop_}: + `%`(VTESTOP_instr(shape, vtestop_)) + -- wf_shape: `%`(shape) + -- wf_vtestop_: `%%`(shape, vtestop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_91{shape : shape, vrelop_ : vrelop_}: + `%`(VRELOP_instr(shape, vrelop_)) + -- wf_shape: `%`(shape) + -- wf_vrelop_: `%%`(shape, vrelop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_92{ishape : ishape, vshiftop_ : vshiftop_}: + `%`(VSHIFTOP_instr(ishape, vshiftop_)) + -- wf_ishape: `%`(ishape) + -- wf_vshiftop_: `%%`(ishape, vshiftop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_93{ishape : ishape}: + `%`(VBITMASK_instr(ishape)) + -- wf_ishape: `%`(ishape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_94{bshape : bshape, vswizzlop_ : vswizzlop_}: + `%`(VSWIZZLOP_instr(bshape, vswizzlop_)) + -- wf_bshape: `%`(bshape) + -- wf_vswizzlop_: `%%`(bshape, vswizzlop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*}: + `%`(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) + -- wf_bshape: `%`(bshape) + -- (wf_uN: `%%`(8, laneidx))*{laneidx <- `laneidx*`} + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim(bshape!`%`_bshape.0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__}: + `%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop__)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextunop__: `%%%`(ishape_2, ishape_1, vextunop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_97{ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__}: + `%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop__)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextbinop__: `%%%`(ishape_2, ishape_1, vextbinop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_98{ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__}: + `%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop__)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextternop__: `%%%`(ishape_2, ishape_1, vextternop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_99{ishape_1 : ishape, ishape_2 : ishape, sx : sx}: + `%`(VNARROW_instr(ishape_1, ishape_2, sx)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- if (($lsize($lanetype(ishape_2!`%`_ishape.0)) = (2 * $lsize($lanetype(ishape_1!`%`_ishape.0)))) /\ ((2 * $lsize($lanetype(ishape_1!`%`_ishape.0))) <= 32)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_100{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__}: + `%`(VCVTOP_instr(shape_1, shape_2, vcvtop__)) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_2, shape_1, vcvtop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_101{shape : shape}: + `%`(VSPLAT_instr(shape)) + -- wf_shape: `%`(shape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_102{shape : shape, `sx?` : sx?, laneidx : laneidx}: + `%`(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_103{shape : shape, laneidx : laneidx}: + `%`(VREPLACE_LANE_instr(shape, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_104{u31 : u31}: + `%`(REF.I31_NUM_instr(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_105{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_instr(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_106{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_instr(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_107{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_instr(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_108{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_instr(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_109{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_instr(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_110{addrref : addrref}: + `%`(REF.EXTERN_instr(addrref)) + -- wf_addrref: `%`(addrref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_111{n : n, `instr*` : instr*, var_0 : instr*}: + `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, var_0)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_112{n : n, frame : frame, `instr*` : instr*}: + `%`(`FRAME_%{%}%`_instr(n, frame, instr*{instr <- `instr*`})) + -- wf_frame: `%`(frame) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_113{n : n, `catch*` : catch*, `instr*` : instr*}: + `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) + -- (wf_catch: `%`(catch))*{catch <- `catch*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_114: + `%`(TRAP_instr) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax expr = instr* + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $memarg0 : memarg + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u32(0)} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $const(consttype : consttype, lit_ : lit_) : instr + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{numtype : numtype, c : num_}((numtype : numtype <: consttype), mk_lit__0_lit_(numtype, c)) = CONST_instr(numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{vectype : vectype, c : uN}((vectype : vectype <: consttype), mk_lit__1_lit_(vectype, c)) = VCONST_instr(vectype, c) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_shape(shape : shape) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_blocktype(blocktype : blocktype) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_blocktype{funcidx : uN}(_IDX_blocktype(funcidx)) = $free_funcidx(funcidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.44 +def $shift_labelidxs(labelidx*) : labelidx* + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.32 + def $shift_labelidxs([]) = [] + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.66 + def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.91 + def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.1-417.30 +def $free_instr(instr : instr) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 + def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 + def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 + def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 + def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 + def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:434.1-434.91 + def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-436.79 + def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.56 + def $free_instr{labelidx : uN}(BR_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.59 + def $free_instr{labelidx : uN}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-441.69 + def $free_instr{`labelidx*` : labelidx*, labelidx' : uN}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.64 + def $free_instr{labelidx : uN}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.68 + def $free_instr{labelidx : uN}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-445.83 + def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-447.83 + def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.55 + def $free_instr{funcidx : uN}(CALL_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.59 + def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-452.53 + def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 + def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 + def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 + def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.53 + def $free_instr{tableidx : uN, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.63 + def $free_instr{numtype : numtype, numlit : num_}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.60 + def $free_instr{numtype : numtype, unop : unop_}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 + def $free_instr{numtype : numtype, binop : binop_}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.64 + def $free_instr{numtype : numtype, testop : testop_}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.62 + def $free_instr{numtype : numtype, relop : relop_}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.55 + def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.64 + def $free_instr{vectype : vectype, veclit : uN}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.64 + def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-469.66 + def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:470.1-470.68 + def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.68 + def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.56 + def $free_instr{shape : shape, vunop : vunop_}(VUNOP_instr(shape, vunop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.58 + def $free_instr{shape : shape, vbinop : vbinop_}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.60 + def $free_instr{shape : shape, vternop : vternop_}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.60 + def $free_instr{shape : shape, vtestop : vtestop_}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-476.58 + def $free_instr{shape : shape, vrelop : vrelop_}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.64 + def $free_instr{ishape : ishape, vshiftop : vshiftop_}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.55 + def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.66 + def $free_instr{bshape : bshape, vswizzlop : vswizzlop_}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 + def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-482.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-484.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-486.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-488.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-490.47 + def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.51 + def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.70 + def $free_instr{shape : shape, `sx?` : sx?, laneidx : uN}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.66 + def $free_instr{shape : shape, laneidx : uN}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-495.62 + def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 + def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 + def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 + def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 + def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 + def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.59 + def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 + def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 + def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 + def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 + def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 + def $free_instr{`sx?` : sx?, typeidx : uN, u32 : uN}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.65 + def $free_instr{typeidx : uN, u32 : uN}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.60 + def $free_instr{typeidx : uN}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.68 + def $free_instr{typeidx : uN}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.70 + def $free_instr{typeidx : uN, u32 : uN}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-515.51 + def $free_instr{typeidx : uN, dataidx : uN}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-517.51 + def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.64 + def $free_instr{`sx?` : sx?, typeidx : uN}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.60 + def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 + def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 + def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 + def $free_instr{typeidx_1 : uN, typeidx_2 : uN}(ARRAY.COPY_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 + def $free_instr{typeidx : uN, dataidx : uN}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 + def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 + def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 + def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 + def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 + def $free_instr{localidx : uN}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.63 + def $free_instr{localidx : uN}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.67 + def $free_instr{globalidx : uN}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-537.67 + def $free_instr{globalidx : uN}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.63 + def $free_instr{tableidx : uN}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.63 + def $free_instr{tableidx : uN}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 + def $free_instr{tableidx : uN}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.64 + def $free_instr{tableidx : uN}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.64 + def $free_instr{tableidx : uN}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-545.59 + def $free_instr{tableidx_1 : uN, tableidx_2 : uN}(TABLE.COPY_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-547.53 + def $free_instr{tableidx : uN, elemidx : uN}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.60 + def $free_instr{elemidx : uN}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-551.49 + def $free_instr{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-553.49 + def $free_instr{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.49 + def $free_instr{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.49 + def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.49 + def $free_instr{vectype : vectype, memidx : uN, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 + def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.59 + def $free_instr{memidx : uN}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.59 + def $free_instr{memidx : uN}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.59 + def $free_instr{memidx : uN}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.51 + def $free_instr{memidx_1 : uN, memidx_2 : uN}(MEMORY.COPY_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 + def $free_instr{memidx : uN, dataidx : uN}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-569.60 + def $free_instr{dataidx : uN}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.1-418.31 +def $free_block(instr*) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 + def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_expr(expr : expr) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elemmode = + | ACTIVE{tableidx : tableidx, expr : expr}(tableidx : tableidx, expr : expr) + | PASSIVE + | DECLARE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elemmode: `%`(elemmode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_0{tableidx : tableidx, expr : expr}: + `%`(ACTIVE_elemmode(tableidx, expr)) + -- wf_uN: `%%`(32, tableidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_1: + `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_2: + `%`(DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax datamode = + | ACTIVE{memidx : memidx, expr : expr}(memidx : memidx, expr : expr) + | PASSIVE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_datamode: `%`(datamode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_0{memidx : memidx, expr : expr}: + `%`(ACTIVE_datamode(memidx, expr)) + -- wf_uN: `%%`(32, memidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_1: + `%`(PASSIVE_datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax type = + | TYPE{rectype : rectype}(rectype : rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax tag = + | TAG{tagtype : tagtype}(tagtype : tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_tag: `%`(tag) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule tag_case_0{tagtype : tagtype}: + `%`(TAG_tag(tagtype)) + -- wf_typeuse: `%`(tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax global = + | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_global: `%`(global) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule global_case_0{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax mem = + | MEMORY{memtype : memtype}(memtype : memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_mem: `%`(mem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule mem_case_0{memtype : memtype}: + `%`(MEMORY_mem(memtype)) + -- wf_memtype: `%`(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax table = + | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_table: `%`(table) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule table_case_0{tabletype : tabletype, expr : expr}: + `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax data = + | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_data: `%`(data) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule data_case_0{`byte*` : byte*, datamode : datamode}: + `%`(DATA_data(byte*{byte <- `byte*`}, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax local = + | LOCAL{valtype : valtype}(valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_local: `%`(local) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule local_case_0{valtype : valtype}: + `%`(LOCAL_local(valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax func = + | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_func: `%`(func) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule func_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_func(typeidx, local*{local <- `local*`}, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elem = + | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elem: `%`(elem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax start = + | START{funcidx : funcidx}(funcidx : funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_start: `%`(start) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule start_case_0{funcidx : funcidx}: + `%`(START_start(funcidx)) + -- wf_uN: `%%`(32, funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax import = + | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_import: `%`(import) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule import_case_0{name : name, externtype : externtype, var_0 : name}: + `%`(IMPORT_import(name, var_0, externtype)) + -- wf_name: `%`(name) + -- wf_externtype: `%`(externtype) + -- wf_name: `%`(var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax export = + | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_export: `%`(export) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule export_case_0{name : name, externidx : externidx}: + `%`(EXPORT_export(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax module = + | MODULE{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(type*{type <- `type*`} : type*, import*{import <- `import*`} : import*, tag*{tag <- `tag*`} : tag*, global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, func*{func <- `func*`} : func*, data*{data <- `data*`} : data*, elem*{elem <- `elem*`} : elem*, start?{start <- `start?`} : start?, export*{export <- `export*`} : export*) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_module: `%`(module) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule module_case_0{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}: + `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_import: `%`(import))*{import <- `import*`} + -- (wf_tag: `%`(tag))*{tag <- `tag*`} + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_mem: `%`(mem))*{mem <- `mem*`} + -- (wf_table: `%`(table))*{table <- `table*`} + -- (wf_func: `%`(func))*{func <- `func*`} + -- (wf_data: `%`(data))*{data <- `data*`} + -- (wf_elem: `%`(elem))*{elem <- `elem*`} + -- (wf_start: `%`(start))?{start <- `start?`} + -- (wf_export: `%`(export))*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_type(type : type) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_tag(tag : tag) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_global(global : global) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_mem(mem : mem) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_table(table : table) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_local(local : local) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_func(func : func) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_datamode(datamode : datamode) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_data(data : data) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_elemmode(elemmode : elemmode) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_elem(elem : elem) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_start(start : start) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_import(import : import) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_export(export : export) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_module(module : module) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $funcidx_module(module : module) : funcidx* + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $funcidx_module{module : module}(module) = $free_module(module).FUNCS_free + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $dataidx_funcs(func*) : dataidx* + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $dataidx_funcs{`func*` : func*}(func*{func <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).DATAS_free + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax init = + | SET + | UNSET + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax localtype = + | `%%`{init : init, valtype : valtype}(init : init, valtype : valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_localtype: `%`(localtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule localtype_case_0{init : init, valtype : valtype}: + `%`(`%%`_localtype(init, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax instrtype = + | `%->_%%`{resulttype : resulttype, `localidx*` : localidx*}(resulttype : resulttype, localidx*{localidx <- `localidx*`} : localidx*, resulttype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_instrtype: `%`(instrtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule instrtype_case_0{resulttype : resulttype, `localidx*` : localidx*, var_0 : resulttype}: + `%`(`%->_%%`_instrtype(resulttype, localidx*{localidx <- `localidx*`}, var_0)) + -- (wf_uN: `%%`(32, localidx))*{localidx <- `localidx*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax context = +{ + TYPES{`deftype*` : deftype*} deftype*, + RECS{`subtype*` : subtype*} subtype*, + TAGS{`tagtype*` : tagtype*} tagtype*, + GLOBALS{`globaltype*` : globaltype*} globaltype*, + MEMS{`memtype*` : memtype*} memtype*, + TABLES{`tabletype*` : tabletype*} tabletype*, + FUNCS{`deftype*` : deftype*} deftype*, + DATAS{`datatype*` : datatype*} datatype*, + ELEMS{`elemtype*` : elemtype*} elemtype*, + LOCALS{`localtype*` : localtype*} localtype*, + LABELS{`resulttype*` : resulttype*} resulttype*, + RETURN{`resulttype?` : resulttype?} resulttype?, + REFS{`funcidx*` : funcidx*} funcidx* +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_context: `%`(context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule context_case_{var_0 : deftype*, var_1 : subtype*, var_2 : tagtype*, var_3 : globaltype*, var_4 : memtype*, var_5 : tabletype*, var_6 : deftype*, var_7 : datatype*, var_8 : elemtype*, var_9 : localtype*, var_10 : resulttype*, var_11 : resulttype?, var_12 : funcidx*}: + `%`({TYPES var_0, RECS var_1, TAGS var_2, GLOBALS var_3, MEMS var_4, TABLES var_5, FUNCS var_6, DATAS var_7, ELEMS var_8, LOCALS var_9, LABELS var_10, RETURN var_11, REFS var_12}) + -- (wf_subtype: `%`(var_1))*{var_1 <- var_1} + -- (wf_typeuse: `%`(var_2))*{var_2 <- var_2} + -- (wf_globaltype: `%`(var_3))*{var_3 <- var_3} + -- (wf_memtype: `%`(var_4))*{var_4 <- var_4} + -- (wf_tabletype: `%`(var_5))*{var_5 <- var_5} + -- (wf_reftype: `%`(var_8))*{var_8 <- var_8} + -- (wf_localtype: `%`(var_9))*{var_9 <- var_9} + -- (wf_uN: `%%`(32, var_12))*{var_12 <- var_12} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.1-46.144 +def $with_locals(context : context, localidx*, localtype*) : context + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 + def $with_locals{C : context}(C, [], []) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.90 + def $with_locals{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[x_1!`%`_uN.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 +def $clos_deftypes(deftype*) : deftype* + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 + def $clos_deftypes([]) = [] + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 + def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`}) {dt', `dt'*`} +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_valtype(context : context, valtype : valtype) : valtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_deftype(context : context, deftype : deftype) : deftype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context) {dt', `dt'*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_tagtype(context : context, tagtype : tagtype) : tagtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_tagtype{C : context, jt : typeuse, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_externtype(context : context, externtype : externtype) : externtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_moduletype(context : context, moduletype : moduletype) : moduletype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Numtype_ok: `%|-%:OK`(context, numtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, numtype : numtype}: + `%|-%:OK`(C, numtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Vectype_ok: `%|-%:OK`(context, vectype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, vectype : vectype}: + `%|-%:OK`(C, vectype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidx = + | OK{typeidx : typeidx}(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation wf_oktypeidx: `%`(oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule oktypeidx_case_0{typeidx : typeidx}: + `%`(OK_oktypeidx(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidxnat = + | OK{typeidx : typeidx, nat : nat}(typeidx : typeidx, nat : nat) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation wf_oktypeidxnat: `%`(oktypeidxnat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule oktypeidxnat_case_0{typeidx : typeidx, nat : nat}: + `%`(OK_oktypeidxnat(typeidx, nat)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Packtype_ok: `%|-%:OK`(context, packtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, packtype : packtype}: + `%|-%:OK`(C, packtype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, packtype : packtype}: + `%|-%<:%`(C, packtype, packtype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, numtype : numtype}: + `%|-%<:%`(C, numtype, numtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand: `%~~%`(deftype, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{deftype : deftype, comptype : comptype}: + `%~~%`(deftype, comptype) + -- if ($expanddt(deftype) = comptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, vectype : vectype}: + `%|-%<:%`(C, vectype, vectype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{deftype : deftype, x : uN, i : nat}((deftype : deftype <: typeuse), x, i) = true + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{typeidx : uN, x : uN, i : nat}(_IDX_typeuse(typeidx), x, i) = (typeidx!`%`_uN.0 < x!`%`_uN.0) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{j : nat, x : uN, i : nat}(REC_typeuse(j), x, i) = (j < i) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $unrollht(context : context, heaptype : heaptype) : subtype + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht{C : context, typeidx : uN}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[typeidx!`%`_uN.0]) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 +relation Heaptype_ok: `%|-%:OK`(context, heaptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 + rule abs{C : context, absheaptype : absheaptype}: + `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 + rule typeuse{C : context, typeuse : typeuse}: + `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 +relation Reftype_ok: `%|-%:OK`(context, reftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 + rule _{C : context, heaptype : heaptype}: + `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- Heaptype_ok: `%|-%:OK`(C, heaptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 +relation Valtype_ok: `%|-%:OK`(context, valtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 + rule num{C : context, numtype : numtype}: + `%|-%:OK`(C, (numtype : numtype <: valtype)) + -- Numtype_ok: `%|-%:OK`(C, numtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 + rule vec{C : context, vectype : vectype}: + `%|-%:OK`(C, (vectype : vectype <: valtype)) + -- Vectype_ok: `%|-%:OK`(C, vectype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 + rule ref{C : context, reftype : reftype}: + `%|-%:OK`(C, (reftype : reftype <: valtype)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 +relation Typeuse_ok: `%|-%:OK`(context, typeuse) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 + rule typeidx{C : context, typeidx : typeidx, dt : deftype}: + `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- if (C.TYPES_context[typeidx!`%`_uN.0] = dt) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 + rule rec{C : context, i : n, st : subtype}: + `%|-%:OK`(C, REC_typeuse(i)) + -- if (C.RECS_context[i] = st) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 + rule deftype{C : context, deftype : deftype}: + `%|-%:OK`(C, (deftype : deftype <: typeuse)) + -- Deftype_ok: `%|-%:OK`(C, deftype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 +relation Resulttype_ok: `%|-%:OK`(context, resulttype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 + rule _{C : context, `t*` : valtype*}: + `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 +relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 + rule _{C : context, storagetype : storagetype}: + `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- Storagetype_ok: `%|-%:OK`(C, storagetype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 +relation Storagetype_ok: `%|-%:OK`(context, storagetype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 + rule val{C : context, valtype : valtype}: + `%|-%:OK`(C, (valtype : valtype <: storagetype)) + -- Valtype_ok: `%|-%:OK`(C, valtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 + rule pack{C : context, packtype : packtype}: + `%|-%:OK`(C, (packtype : packtype <: storagetype)) + -- Packtype_ok: `%|-%:OK`(C, packtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 +relation Comptype_ok: `%|-%:OK`(context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 + rule struct{C : context, `fieldtype*` : fieldtype*}: + `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 + rule array{C : context, fieldtype : fieldtype}: + `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 + rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:88.1-88.126 +relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 + rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- if (|x*{x <- `x*`}| <= 1) + -- (if (x!`%`_uN.0 < x_0!`%`_uN.0))*{x <- `x*`} + -- (if ($unrolldt(C.TYPES_context[x!`%`_uN.0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:89.1-89.126 +relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 + rule empty{C : context, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 + rule _rec2{C : context, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 +relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 + rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) + -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} + -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:91.1-91.126 +relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 + rule empty{C : context, x : idx, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) + -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) + -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx((x!`%`_uN.0 + 1)), (i + 1))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.102 +relation Deftype_ok: `%|-%:OK`(context, deftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 + rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: + `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) + -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) + -- if (i < n) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:95.1-95.108 +relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 + rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: + `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 + rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: + `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 + rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: + `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.107 +relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 +relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 + rule refl{C : context, heaptype : heaptype}: + `%|-%<:%`(C, heaptype, heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 + rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: + `%|-%<:%`(C, heaptype_1, heaptype_2) + -- Heaptype_ok: `%|-%:OK`(C, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 + rule `eq-any`{C : context}: + `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 + rule `i31-eq`{C : context}: + `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 + rule `struct-eq`{C : context}: + `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 + rule `array-eq`{C : context}: + `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 + rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) + -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 + rule array{C : context, deftype : deftype, fieldtype : fieldtype}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) + -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 + rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) + -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 + rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 + rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: + `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype), heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 + rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: + `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 + rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: + `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 + rule none{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NONE_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 + rule nofunc{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 + rule noexn{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 + rule noextern{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 + rule bot{C : context, heaptype : heaptype}: + `%|-%<:%`(C, BOT_heaptype, heaptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 +relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 + rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 + rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 +relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 + rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: + `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) + -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 + rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: + `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) + -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 + rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: + `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 + rule bot{C : context, valtype : valtype}: + `%|-%<:%`(C, BOT_valtype, valtype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 +relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 + rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 +relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 + rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 + rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: + `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) + -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 +relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 + rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 + rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Instrtype_ok: `%|-%:OK`(context, instrtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (if (C.LOCALS_context[x!`%`_uN.0] = lct))*{lct <- `lct*`, x <- `x*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand_use: `%~~_%%`(typeuse, context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule deftype{deftype : deftype, C : context, comptype : comptype}: + `%~~_%%`((deftype : deftype <: typeuse), C, comptype) + -- Expand: `%~~%`(deftype, comptype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: + `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], comptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Limits_ok: `%|-%:%`(context, limits, nat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, n : n, `m?` : m?, k : nat}: + `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- if (n <= k) + -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tagtype_ok: `%|-%:OK`(context, tagtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, typeuse) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Globaltype_ok: `%|-%:OK`(context, globaltype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, t : valtype}: + `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- Valtype_ok: `%|-%:OK`(C, t) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Memtype_ok: `%|-%:OK`(context, memtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits}: + `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tabletype_ok: `%|-%:OK`(context, tabletype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: + `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Externtype_ok: `%|-%:OK`(context, externtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule tag{C : context, tagtype : tagtype}: + `%|-%:OK`(C, TAG_externtype(tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule global{C : context, globaltype : globaltype}: + `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mem{C : context, memtype : memtype}: + `%|-%:OK`(C, MEM_externtype(memtype)) + -- Memtype_ok: `%|-%:OK`(C, memtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule table{C : context, tabletype : tabletype}: + `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: + `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) + -- (if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Limits_sub: `%|-%<:%`(context, limits, limits) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) + -- if (n_1 >= n_2) + -- if (m_1 <= m_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: + `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: + `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: + `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: + `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: + `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: + `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule valtype{C : context, `valtype?` : valtype?}: + `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Catch_ok: `%|-%:OK`(context, catch) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_catch(x, l)) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_uN.0]) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all_ref{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +def $default_(valtype : valtype) : val? + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Defaultable: `|-%DEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%DEFAULTABLE`(t) + -- if ($default_(t) =/= ?()) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +def $is_packtype(storagetype : storagetype) : bool + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + def $is_packtype{zt : storagetype}(zt) = (zt = ($unpack(zt) : valtype <: storagetype)) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 +relation Instr_ok: `%|-%:%`(context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 + rule nop{C : context}: + `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 + rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 + rule drop{C : context, t : valtype}: + `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- Valtype_ok: `%|-%:OK`(C, t) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 + rule `select-expl`{C : context, t : valtype}: + `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 + rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Valtype_sub: `%|-%<:%`(C, t, t') + -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 + rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 + rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 + rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 + rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 + rule br_if{C : context, l : labelidx, `t*` : valtype*}: + `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 + rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]))*{l <- `l*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_uN.0]) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 + rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 + rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 + rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 + rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 + rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: + `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 + rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 + rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 + rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 + rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 + rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 + rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 + rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 + rule ref.null{C : context, ht : heaptype}: + `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 + rule ref.func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + -- if (C.FUNCS_context[x!`%`_uN.0] = dt) + -- if (x <- C.REFS_context) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 + rule ref.i31{C : context}: + `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 + rule ref.is_null{C : context, ht : heaptype}: + `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 + rule ref.as_non_null{C : context, ht : heaptype}: + `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 + rule ref.eq{C : context}: + `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 + rule ref.test{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 + rule ref.cast{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 + rule i31.get{C : context, sx : sx}: + `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 + rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 + rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 + rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: + `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 + rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: + `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(?(MUT_mut), zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 + rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 + rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: + `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 + rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 + rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: + `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) + -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_uN.0], rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 + rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) + -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 + rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 + rule array.set{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 + rule array.len{C : context}: + `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 + rule array.fill{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 + rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 + rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: + `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_uN.0] : reftype <: storagetype), zt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 + rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) + -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 + rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 + rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 + rule local.get{C : context, x : idx, t : valtype}: + `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 + rule local.set{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 + rule local.tee{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 + rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: + `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 + rule global.set{C : context, x : idx, t : valtype}: + `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(MUT_mut), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 + rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 + rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 + rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 + rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: + `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 + rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 + rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[x_1!`%`_uN.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) + -- if (C.TABLES_context[x_2!`%`_uN.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 + rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: + `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt_1)) + -- if (C.ELEMS_context[y!`%`_uN.0] = rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 + rule elem.drop{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.ELEMS_context[x!`%`_uN.0] = rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 + rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 + rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 + rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: + `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[x_1!`%`_uN.0] = `%%PAGE`_memtype(at_1, lim_1)) + -- if (C.MEMS_context[x_2!`%`_uN.0] = `%%PAGE`_memtype(at_2, lim_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 + rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 + rule data.drop{C : context, x : idx}: + `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.DATAS_context[x!`%`_uN.0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 + rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 + rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 + rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 + rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 + rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 + rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 + rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 + rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 + rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 + rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 + rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 + rule unop{C : context, nt : numtype, unop_nt : unop_}: + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 + rule binop{C : context, nt : numtype, binop_nt : binop_}: + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 + rule testop{C : context, nt : numtype, testop_nt : testop_}: + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 + rule relop{C : context, nt : numtype, relop_nt : relop_}: + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 + rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 + rule vconst{C : context, c : vec_}: + `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 + rule vvunop{C : context, vvunop : vvunop}: + `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 + rule vvbinop{C : context, vvbinop : vvbinop}: + `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 + rule vvternop{C : context, vvternop : vvternop}: + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 + rule vvtestop{C : context, vvtestop : vvtestop}: + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 + rule vunop{C : context, sh : shape, vunop : vunop_}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 + rule vternop{C : context, sh : shape, vternop : vternop_}: + `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 + rule vbitmask{C : context, sh : ishape}: + `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 + rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 + rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: + `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- (if (i!`%`_uN.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 + rule vsplat{C : context, sh : shape}: + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 + rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 + rule vreplace_lane{C : context, sh : shape, i : laneidx}: + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 + rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 + rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 + rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 + rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 + rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 +relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 + rule empty{C : context}: + `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 + rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: + `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if (C.LOCALS_context[x_1!`%`_uN.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 + rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 + rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) +} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok: `%|-%:%`(context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*, `t*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%NONDEFAULTABLE`(t) + -- if ($default_(t) = ?()) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Instr_const: `%|-%CONST`(context, instr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%CONST`(C, CONST_instr(nt, c_nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule vconst{C : context, vt : vectype, c_vt : vec_}: + `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref.null{C : context, ht : heaptype}: + `%|-%CONST`(C, REF.NULL_instr(ht)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref.i31{C : context}: + `%|-%CONST`(C, REF.I31_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref.func{C : context, x : idx}: + `%|-%CONST`(C, REF.FUNC_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule struct.new{C : context, x : idx}: + `%|-%CONST`(C, STRUCT.NEW_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule struct.new_default{C : context, x : idx}: + `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array.new{C : context, x : idx}: + `%|-%CONST`(C, ARRAY.NEW_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array.new_default{C : context, x : idx}: + `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array.new_fixed{C : context, x : idx, n : n}: + `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule any.convert_extern{C : context}: + `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule extern.convert_any{C : context}: + `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule global.get{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, GLOBAL.GET_instr(x)) + -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule binop{C : context, Inn : Inn, binop : binop_}: + `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) + -- if (Inn <- [I32_Inn I64_Inn]) + -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_const: `%|-%CONST`(context, expr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*}: + `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, expr : expr, t : valtype}: + `%|-%:%CONST`(C, expr, t) + -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) + -- Expr_const: `%|-%CONST`(C, expr) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Type_ok: `%|-%:%`(context, type, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: + `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- if (x!`%`_uN.0 = |C.TYPES_context|) + -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) + -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Tag_ok: `%|-%:%`(context, tag, tagtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tagtype : tagtype}: + `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Global_ok: `%|-%:%`(context, global, globaltype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: + `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Mem_ok: `%|-%:%`(context, mem, memtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, memtype : memtype}: + `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- Memtype_ok: `%|-%:OK`(C, memtype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Table_ok: `%|-%:%`(context, table, tabletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- if (tabletype = `%%%`_tabletype(at, lim, rt)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Local_ok: `%|-%:%`(context, local, localtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule set{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- Defaultable: `|-%DEFAULTABLE`(t) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule unset{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- Nondefaultable: `|-%NONDEFAULTABLE`(t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Func_ok: `%|-%:%`(context, func, deftype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[x!`%`_uN.0]) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Datamode_ok: `%|-%:%`(context, datamode, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context}: + `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: + `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Data_ok: `%|-%:%`(context, data, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, `b*` : byte*, datamode : datamode}: + `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context, rt : reftype}: + `%|-%:%`(C, PASSIVE_elemmode, rt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule declare{C : context, rt : reftype}: + `%|-%:%`(C, DECLARE_elemmode, rt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: + `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt')) + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elem_ok: `%|-%:%`(context, elem, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: + `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- Reftype_ok: `%|-%:OK`(C, elemtype) + -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} + -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Start_ok: `%|-%:OK`(context, start) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx}: + `%|-%:OK`(C, START_start(x)) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Import_ok: `%|-%:%`(context, import, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + -- Externtype_ok: `%|-%:OK`(C, xt) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Externidx_ok: `%|-%:%`(context, externidx, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule tag{C : context, x : idx, jt : tagtype}: + `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- if (C.TAGS_context[x!`%`_uN.0] = jt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule global{C : context, x : idx, gt : globaltype}: + `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- if (C.GLOBALS_context[x!`%`_uN.0] = gt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mem{C : context, x : idx, mt : memtype}: + `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- if (C.MEMS_context[x!`%`_uN.0] = mt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule table{C : context, x : idx, tt : tabletype}: + `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- if (C.TABLES_context[x!`%`_uN.0] = tt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + -- if (C.FUNCS_context[x!`%`_uN.0] = dt) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Export_ok: `%|-%:%%`(context, export, name, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name : name, externidx : externidx, xt : externtype}: + `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- Externidx_ok: `%|-%:%`(C, externidx, xt) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 +relation Globals_ok: `%|-%:%`(context, global*, globaltype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 + rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: + `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- Global_ok: `%|-%:%`(C, global_1, gt_1) + -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 +relation Types_ok: `%|-%:%`(context, type*, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 + rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: + `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) + -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +syntax nonfuncs = + | `%%%%`{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, elem*{elem <- `elem*`} : elem*) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation wf_nonfuncs: `%`(nonfuncs) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}: + `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_mem: `%`(mem))*{mem <- `mem*`} + -- (wf_table: `%`(table))*{table <- `table*`} + -- (wf_elem: `%`(elem))*{elem <- `elem*`} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Module_ok: `|-%:%`(module, moduletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: + `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) + -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} + -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} + -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} + -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} + -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} + -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} + -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} + -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} + -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) + -- if (C = C' +++ {TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) + -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}))) + -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) + -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed2 = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed2: `%`(relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed2_case_0{i : nat}: + `%`(`%`_relaxed2(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed4 = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed4: `%`(relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed4_case_0{i : nat}: + `%`(`%`_relaxed4(i)) + -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = (if $ND then [X_1 X_2][i!`%`_relaxed2.0] else [X_1 X_2][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][i!`%`_relaxed4.0] else [X_1 X_2 X_3 X_4][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmadd : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmin : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmax : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_idot : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_iq15mulr : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_u : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_s : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_swizzle : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_laneselect : relaxed2 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $s33_to_u32(s33 : s33) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibits_(N : N, iN : iN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbits_(N : N, fN : fN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibytes_(N : N, iN : iN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbytes_(N : N, fN : fN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $nbytes_(numtype : numtype, num_ : num_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $vbytes_(vectype : vectype, vec_ : vec_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibits_(N : N, bit*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbits_(N : N, bit*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibytes_(N : N, byte*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbytes_(N : N, byte*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_nbytes_(numtype : numtype, byte*) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_vbytes_(vectype : vectype, byte*) : vec_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $signed_(N : N, nat : nat) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $signed_{N : nat, i : nat}(N, i) = (i : nat <:> int) + -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $signed_{N : nat, i : nat}(N, i) = ((i : nat <:> int) - ((2 ^ N) : nat <:> int)) + -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_signed_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inv_signed_{N : nat, i : int}(N, i) = (i : int <:> nat) + -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inv_signed_{N : nat, i : int}(N, i) = ((i + ((2 ^ N) : nat <:> int)) : int <:> nat) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sx(storagetype : storagetype) : sx? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(S_sx) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zero(lanetype : lanetype) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $bool(bool : bool) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(false) = 0 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(true) = 1 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $truncz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ceilz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_u_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_u_{N : nat, i : int}(N, i) = (if (i < (0 : nat <:> int)) then 0 else (if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) then ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) else (i : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_s_(N : N, int : int) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_s_{N : nat, i : int}(N, i) = (if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) then - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) else (if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) then (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) else i)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ineg_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iabs_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iabs_{N : nat, i_1 : uN}(N, i_1) = (if ($signed_(N, i_1!`%`_uN.0) >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iclz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ictz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ipopcnt_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN((i!`%`_uN.0 \ (2 ^ M))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imul_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?() + -- if ((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- if ((j_1 = $signed_(N, i_1!`%`_uN.0)) /\ (j_2 = $signed_(N, i_2!`%`_uN.0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if (i_1!`%`_uN.0 <= i_2!`%`_uN.0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if (i_1!`%`_uN.0 > i_2!`%`_uN.0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0)) then i_1 else i_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if (i_1!`%`_uN.0 >= i_2!`%`_uN.0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if (i_1!`%`_uN.0 < i_2!`%`_uN.0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0)) then i_1 else i_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_q15mulr_(N : N, sx : sx, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iavgr_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inot_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irev_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iand_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iandnot_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ior_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ixor_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishl_(N : N, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishr_(N : N, sx : sx, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotl_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotr_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibitselect_(N : N, iN : iN, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieqz_(N : N, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 = 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inez_(N : N, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 =/= 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieq_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ine_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fabs_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fneg_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsqrt_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fceil_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ffloor_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ftrunc_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fnearest_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fadd_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsub_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmul_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fdiv_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fcopysign_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $feq_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fne_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $flt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fgt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fle_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fge_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $wrap__(M : M, N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $extend__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc_sat__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $demote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $promote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $convert__(M : M, N : N, sx : sx, iN : iN) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $testop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_testop__0_testop_(Inn, EQZ_testop_Inn), mk_num__0_num_(Inn, i)) = $ieqz_($sizenn((Inn : addrtype <: numtype)), i) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, EQ_relop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ieq_($sizenn((Inn : addrtype <: numtype)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, NE_relop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ine_($sizenn((Inn : addrtype <: numtype)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, LT_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ilt_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, GT_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $igt_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, LE_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ile_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, GE_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ige_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, EQ_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $feq_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, NE_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fne_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, LT_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $flt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, GT_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fgt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, LE_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fle_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, GE_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fge_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] + -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] + -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lanes_(shape : shape, vec_ : vec_) : lane_* + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $inv_lanes_(shape : shape, lane_*) : vec_ + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : zero? + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : half? + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = half?{half <- `half?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $half(half : half, nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(LOW_half, i, j) = i + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(HIGH_half, i, j) = j + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $iswizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else `%`_iN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else (if ($signed_(N, i!`%`_uN.0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[(i!`%`_uN.0 \ |c*{c <- `c*`}|)]))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivtestop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_uN.0*{c <- `c*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvtestop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_uN.0*{c <- `c*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + -- if ($isize(Inn) = $fsize(Fnn)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{Jnn : Jnn, M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{Jnn : Jnn, M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvunop_{Vnn : vectype, v : uN}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vtestop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] + -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] + -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v + -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`}) {v} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivadd_pairwise_(N : N, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_uN.0*{i <- `i*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_sat_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_uN.0 : k!`%`_uN.0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_uN.0 : k!`%`_uN.0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivmul_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} + -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax num = + | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_num: `%`(num) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule num_case_0{numtype : numtype, num_ : num_}: + `%`(CONST_num(numtype, num_)) + -- wf_num_: `%%`(numtype, num_) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax vec = + | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_vec: `%`(vec) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule vec_case_0{vectype : vectype, vec_ : vec_}: + `%`(VCONST_vec(vectype, vec_)) + -- wf_uN: `%%`($vsize(vectype), vec_) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax ref = + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_ref: `%`(ref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_0{u31 : u31}: + `%`(REF.I31_NUM_ref(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_1{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_ref(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_2{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_ref(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_3{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_ref(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_4{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_ref(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_5{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_ref(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_6{addrref : addrref}: + `%`(REF.EXTERN_ref(addrref)) + -- wf_addrref: `%`(addrref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_7{heaptype : heaptype}: + `%`(REF.NULL_ref(heaptype)) + -- wf_heaptype: `%`(heaptype) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax result = + | _VALS{`val*` : val*}(val*{val <- `val*`} : val*) + | `(REF.EXN_ADDR%)THROW_REF`{exnaddr : exnaddr}(exnaddr : exnaddr) + | TRAP + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_result: `%`(result) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_0{`val*` : val*}: + `%`(_VALS_result(val*{val <- `val*`})) + -- (wf_val: `%`(val))*{val <- `val*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_1{exnaddr : exnaddr}: + `%`(`(REF.EXN_ADDR%)THROW_REF`_result(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_2: + `%`(TRAP_result) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostfunc = + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funccode = + | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funccode: `%`(funccode) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_funccode(typeidx, local*{local <- `local*`}, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_1: + `%`(`...`_funccode) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax taginst = +{ + TYPE{tagtype : tagtype} tagtype +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_taginst: `%`(taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_case_{var_0 : tagtype}: + `%`({TYPE var_0}) + -- wf_typeuse: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globalinst = +{ + TYPE{globaltype : globaltype} globaltype, + VALUE{val : val} val +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_globalinst: `%`(globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_case_{var_0 : globaltype, var_1 : val}: + `%`({TYPE var_0, VALUE var_1}) + -- wf_globaltype: `%`(var_0) + -- wf_val: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax meminst = +{ + TYPE{memtype : memtype} memtype, + BYTES{`byte*` : byte*} byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_meminst: `%`(meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_case_{var_0 : memtype, var_1 : byte*}: + `%`({TYPE var_0, BYTES var_1}) + -- wf_memtype: `%`(var_0) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableinst = +{ + TYPE{tabletype : tabletype} tabletype, + REFS{`ref*` : ref*} ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_tableinst: `%`(tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_case_{var_0 : tabletype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_tabletype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcinst = +{ + TYPE{deftype : deftype} deftype, + MODULE{moduleinst : moduleinst} moduleinst, + CODE{funccode : funccode} funccode +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funcinst: `%`(funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_case_{var_0 : deftype, var_1 : moduleinst, var_2 : funccode}: + `%`({TYPE var_0, MODULE var_1, CODE var_2}) + -- wf_moduleinst: `%`(var_1) + -- wf_funccode: `%`(var_2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax datainst = +{ + BYTES{`byte*` : byte*} byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_datainst: `%`(datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_case_{var_0 : byte*}: + `%`({BYTES var_0}) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax eleminst = +{ + TYPE{elemtype : elemtype} elemtype, + REFS{`ref*` : ref*} ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_eleminst: `%`(eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_case_{var_0 : elemtype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_reftype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax packval = + | PACK{packtype : packtype, iN : iN}(packtype : packtype, iN : iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_packval: `%`(packval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packval_case_0{packtype : packtype, iN : iN}: + `%`(PACK_packval(packtype, iN)) + -- wf_uN: `%%`($psize(packtype), iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax fieldval = + | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) + | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + | PACK{packtype : packtype, iN : iN}(packtype : packtype, iN : iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_fieldval: `%`(fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_0{numtype : numtype, num_ : num_}: + `%`(CONST_fieldval(numtype, num_)) + -- wf_num_: `%%`(numtype, num_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_1{vectype : vectype, vec_ : vec_}: + `%`(VCONST_fieldval(vectype, vec_)) + -- wf_uN: `%%`($vsize(vectype), vec_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_2{heaptype : heaptype}: + `%`(REF.NULL_fieldval(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_3{u31 : u31}: + `%`(REF.I31_NUM_fieldval(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_4{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_5{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_6{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_7{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_8{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_9{addrref : addrref}: + `%`(REF.EXTERN_fieldval(addrref)) + -- wf_addrref: `%`(addrref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_10{packtype : packtype, iN : iN}: + `%`(PACK_fieldval(packtype, iN)) + -- wf_uN: `%%`($psize(packtype), iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structinst = +{ + TYPE{deftype : deftype} deftype, + FIELDS{`fieldval*` : fieldval*} fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_structinst: `%`(structinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayinst = +{ + TYPE{deftype : deftype} deftype, + FIELDS{`fieldval*` : fieldval*} fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_arrayinst: `%`(arrayinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exninst = +{ + TAG{tagaddr : tagaddr} tagaddr, + FIELDS{`val*` : val*} val* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exninst: `%`(exninst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_case_{var_0 : tagaddr, var_1 : val*}: + `%`({TAG var_0, FIELDS var_1}) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax store = +{ + TAGS{`taginst*` : taginst*} taginst*, + GLOBALS{`globalinst*` : globalinst*} globalinst*, + MEMS{`meminst*` : meminst*} meminst*, + TABLES{`tableinst*` : tableinst*} tableinst*, + FUNCS{`funcinst*` : funcinst*} funcinst*, + DATAS{`datainst*` : datainst*} datainst*, + ELEMS{`eleminst*` : eleminst*} eleminst*, + STRUCTS{`structinst*` : structinst*} structinst*, + ARRAYS{`arrayinst*` : arrayinst*} arrayinst*, + EXNS{`exninst*` : exninst*} exninst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_store: `%`(store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: + `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) + -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} + -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} + -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} + -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} + -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} + -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} + -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} + -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} + -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} + -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax state = + | `%;%`{store : store, frame : frame}(store : store, frame : frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_state: `%`(state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule state_case_0{store : store, frame : frame}: + `%`(`%;%`_state(store, frame)) + -- wf_store: `%`(store) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax config = + | `%;%`{state : state, `instr*` : instr*}(state : state, instr*{instr <- `instr*`} : instr*) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_config: `%`(config) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule config_case_0{state : state, `instr*` : instr*}: + `%`(`%;%`_config(state, instr*{instr <- `instr*`})) + -- wf_state: `%`(state) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $Ki : nat + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $Ki = 1024 + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $packfield_(storagetype : storagetype, val : val) : fieldval + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.86 +def $tagsxa(externaddr*) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:199.1-199.23 + def $tagsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.42 + def $tagsxa{a : nat, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.57 + def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.89 +def $globalsxa(externaddr*) : globaladdr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:203.1-203.26 + def $globalsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.51 + def $globalsxa{a : nat, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.63 + def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.1-195.86 +def $memsxa(externaddr*) : memaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:207.1-207.23 + def $memsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.42 + def $memsxa{a : nat, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.57 + def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.88 +def $tablesxa(externaddr*) : tableaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:211.1-211.25 + def $tablesxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.48 + def $tablesxa{a : nat, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.61 + def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.87 +def $funcsxa(externaddr*) : funcaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:215.1-215.24 + def $funcsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:216.1-216.45 + def $funcsxa{a : nat, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:217.1-217.59 + def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $store(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $store{s : store, f : frame}(`%;%`_state(s, f)) = s + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $frame(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tagaddr(state : state) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $moduleinst(state : state) : moduleinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $taginst(state : state) : taginst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $globalinst(state : state) : globalinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $meminst(state : state) : meminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tableinst(state : state) : tableinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $funcinst(state : state) : funcinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $datainst(state : state) : datainst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $eleminst(state : state) : eleminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $structinst(state : state) : structinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $arrayinst(state : state) : arrayinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $exninst(state : state) : exninst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $type(state : state, typeidx : typeidx) : deftype + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $type{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = f.MODULE_frame.TYPES_moduleinst[x!`%`_uN.0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tag(state : state, tagidx : tagidx) : taginst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tag{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.TAGS_store[f.MODULE_frame.TAGS_moduleinst[x!`%`_uN.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $global(state : state, globalidx : globalidx) : globalinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $global{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $mem(state : state, memidx : memidx) : meminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $mem{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $table(state : state, tableidx : tableidx) : tableinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $table{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $func(state : state, funcidx : funcidx) : funcinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $func{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.FUNCS_store[f.MODULE_frame.FUNCS_moduleinst[x!`%`_uN.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $data(state : state, dataidx : dataidx) : datainst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $data{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $elem(state : state, tableidx : tableidx) : eleminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $elem{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $local(state : state, localidx : localidx) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $local{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = f.LOCALS_frame[x!`%`_uN.0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_local(state : state, localidx : localidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[x!`%`_uN.0] = ?(v)]) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_global(state : state, globalidx : globalidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_elem(state : state, elemidx : elemidx, ref*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_data(state : state, dataidx : dataidx, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_structinst(state : state, structinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_arrayinst(state : state, arrayinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_exninst(state : state, exninst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') + -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) + -- if (i'!`%`_uN.0 = (|r'*{r' <- `r'*`}| + n)) + -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} + def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $growmem(meminst : meminst, nat : nat) : meminst? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') + -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if ((i'!`%`_uN.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} + def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Num_ok: `%|-%:%`(store, num, numtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, nt : numtype, c : num_}: + `%|-%:%`(s, CONST_num(nt, c), nt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Vec_ok: `%|-%:%`(store, vec, vectype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, vt : vectype, c : vec_}: + `%|-%:%`(s, VCONST_vec(vt, c), vt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +relation Ref_ok: `%|-%:%`(store, ref, reftype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 + rule null{s : store, ht : heaptype, ht' : heaptype}: + `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) + -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 + rule i31{s : store, i : u31}: + `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 + rule struct{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- if (s.STRUCTS_store[a].TYPE_structinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 + rule array{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 + rule func{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- if (s.FUNCS_store[a].TYPE_funcinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 + rule exn{s : store, a : addr, exn : exninst}: + `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + -- if (s.EXNS_store[a] = exn) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 + rule host{s : store, a : addr}: + `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 + rule extern{s : store, addrref : addrref}: + `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) + -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 + rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: + `%|-%:%`(s, ref, rt) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) +} + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Val_ok: `%|-%:%`(store, val, valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule num{s : store, num : num, nt : numtype}: + `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) + -- Num_ok: `%|-%:%`(s, num, nt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule vec{s : store, vec : vec, vt : vectype}: + `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) + -- Vec_ok: `%|-%:%`(s, vec, vt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule ref{s : store, ref : ref, rt : reftype}: + `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) + -- Ref_ok: `%|-%:%`(s, ref, rt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 +relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 + rule tag{s : store, a : addr, taginst : taginst}: + `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- if (s.TAGS_store[a] = taginst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 + rule global{s : store, a : addr, globalinst : globalinst}: + `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- if (s.GLOBALS_store[a] = globalinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 + rule mem{s : store, a : addr, meminst : meminst}: + `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- if (s.MEMS_store[a] = meminst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 + rule table{s : store, a : addr, tableinst : tableinst}: + `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- if (s.TABLES_store[a] = tableinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 + rule func{s : store, a : addr, funcinst : funcinst}: + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + -- if (s.FUNCS_store[a] = funcinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 + rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: + `%|-%:%`(s, externaddr, xt) + -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') + -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) +} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_pure_before_ref.eq-true`: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_pure: `%~>%`(instr*, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule unreachable: + `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule nop: + `%~>%`([NOP_instr], []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule drop{val : val}: + `%~>%`([(val : val <: instr) DROP_instr], []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) + -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) + -- if (!($proj_num__0(c))!`%`_uN.0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- if (!($proj_num__0(c))!`%`_uN.0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- if (l!`%`_uN.0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- if (l!`%`_uN.0 > 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-true`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-false`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- if (!($proj_num__0(c))!`%`_uN.0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])]) + -- if (!($proj_num__0(i))!`%`_uN.0 < |l*{l <- `l*`}|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- if (!($proj_num__0(i))!`%`_uN.0 >= |l*{l <- `l*`}|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- if (val = REF.NULL_val(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) + -- if (val =/= REF.NULL_val(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) + -- if (val = REF.NULL_val(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call_indirect{x : idx, yy : typeuse}: + `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call_indirect{x : idx, yy : typeuse}: + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `frame-vals`{n : n, f : frame, `val*` : val*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: + `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-label`{n : n, `instr'*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-frame`{n : n, f : frame}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule local.tee{val : val, x : idx}: + `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref.i31{i : num_}: + `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-true`{ref : ref, ht : heaptype}: + `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if (ref = REF.NULL_ref(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-false`{ref : ref, ht : heaptype}: + `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref =/= REF.NULL_ref(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: + `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) + -- if (ref = REF.NULL_ref(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: + `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) + -- if (ref =/= REF.NULL_ref(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) + -- if (ref_1 = ref_2) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-null`{ht : heaptype, sx : sx}: + `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-num`{i : u31, sx : sx}: + `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array.new{val : val, n : n, x : idx}: + `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-null`{ht : heaptype}: + `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-addr`{addrref : addrref}: + `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-null`{ht : heaptype}: + `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-addr`{addrref : addrref}: + `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- if (c <- $unop_(nt, unop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- if ($unop_(nt, unop, c_1) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- if (c <- $binop_(nt, binop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- if ($binop_(nt, binop, c_1, c_2) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvtestop{c_1 : vec_, c : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vunop_(sh, vunop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- if ($vunop_(sh, vunop, c_1) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) + -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: + `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0])))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_uN.0] = $lpacknum_(Lnn, c_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +def $blocktype_(state : state, blocktype : blocktype) : instrtype + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.test-false`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-num`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read: `%~>%`(config, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- if ($funcinst(z)[a] = fi) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr, x : idx, `val*` : val*, x : idx, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) + -- if (((($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[x!`%`_uN.0]) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) \/ ($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[x!`%`_uN.0])) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule local.get{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) + -- if ($local(z, x) = ?(val)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule global.get{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) + -- if ($global(z, x).VALUE_globalinst = val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) + -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[!($proj_num__0(i))!`%`_uN.0] : ref <: instr)]) + -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: + `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- if (|$table(z, x).REFS_tableinst| = n) + -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) + -- if ((n =/= 0) \/ ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$table(z, x_2).REFS_tableinst|)) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- if ((n =/= 0) \/ (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 > !($proj_num__0(i_2))!`%`_uN.0) \/ (n =/= 0)) \/ (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$table(z, x_2).REFS_tableinst|))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) + -- if (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) + -- if ((n =/= 0) \/ (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) + -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))^M{})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (c = $extend__(N, 128, U_sx, j)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[j!`%`_uN.0] = mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: + `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) + -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) + -- if ((n =/= 0) \/ ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- if ((n =/= 0) \/ (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 > !($proj_num__0(i_2))!`%`_uN.0) \/ (n =/= 0)) \/ (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) + -- if (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$data(z, y).BYTES_datainst|)) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) + -- if ((n =/= 0) \/ (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$data(z, y).BYTES_datainst|))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.null-idx`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref.func{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) + -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_uN.0]) : val <: instr)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($default_($unpack(zt)) = ?(val)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[!($proj_num__0(i))!`%`_uN.0 : n]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((!($proj_num__0(i))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[!($proj_num__0(i))!`%`_uN.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[!($proj_num__0(i))!`%`_uN.0]) : val <: instr)]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-array`{z : state, a : addr}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) + -- if ((n =/= 0) \/ ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) + -- if (((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ ((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) + -- if (((n =/= 0) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ ((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) + -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (sx?{sx <- `sx?`} = $sx(zt_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) + -- if (((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|) \/ ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) + -- if (((n =/= 0) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (ref = $elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) + -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +relation Step: `%~>%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 + rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 + rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if (a = |$exninst(z)|) + -- if (exn = {TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 + rule local.set{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 + rule global.set{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 + rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 + rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) + -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 + rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- if (ti = !($growtable($table(z, x), n, ref))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 + rule elem.drop{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 + rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 + rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $nbytes_(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 + rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 + rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 + rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 + rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 + rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + N) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 + rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 + rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (mi = !($growmem($mem(z, x), n))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 + rule data.drop{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 + rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (a = |$structinst(z)|) + -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 + rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 + rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 + rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 + rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 + rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 + rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +relation Steps: `%~>*%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + rule refl{z : state, `instr*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: + `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 +def $alloctypes(type*) : deftype* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 + def $alloctypes([]) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 + def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} + -- where TYPE_type(rectype) = type {rectype} + -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) + -- if (x!`%`_uN.0 = |deftype'*{deftype' <- `deftype'*`}|) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- if (taginst = {TYPE tagtype}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 +def $alloctags(store : store, tagtype*) : (store, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 + def $alloctags{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 + def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) + -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} + -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- if (globalinst = {TYPE globaltype, VALUE val}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 +def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 + def $allocglobals{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 + def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) + -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} + -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocmem(store : store, memtype : memtype) : (store, memaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 +def $allocmems(store : store, memtype*) : (store, memaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 + def $allocmems{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 + def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) + -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} + -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 +def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 + def $alloctables{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 + def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) + -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} + -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 +def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 + def $allocfuncs{s : store}(s, [], [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 + def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) + -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} + -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- if (datainst = {BYTES byte*{byte <- `byte*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 +def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 + def $allocdatas{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 + def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} + -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 +def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 + def $allocelems{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 + def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} + -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexport(moduleinst : moduleinst, export : export) : exportinst + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexports(moduleinst : moduleinst, export*) : exportinst* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where MEMORY_mem(memtype)*{memtype <- `memtype*`} = mem*{mem <- `mem*`} {memtype, `memtype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} = func*{func <- `func*`} {expr_F, `expr_F*`, local, `local*`, `local**`, x, `x*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, elemtype, `elemtype*`, expr_E, `expr_E*`, `expr_E**`} + -- where aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`}) {aa_I, `aa_I*`} + -- where ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`}) {ga_I, `ga_I*`} + -- where ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`}) {ma_I, `ma_I*`} + -- where ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`}) {ta_I, `ta_I*`} + -- where fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`}) {fa_I, `fa_I*`} + -- where dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`}) {dt, `dt*`} + -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) + -- where (s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}) {aa, `aa*`, s_1} + -- where (s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`}) {ga, `ga*`, s_2} + -- where (s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}) {ma, `ma*`, s_3} + -- where (s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`}) {s_4, ta, `ta*`} + -- where (s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}) {da, `da*`, s_5} + -- where (s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {ea, `ea*`, s_6} + -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_uN.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) + -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) + -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $rundata_(dataidx : dataidx, data : data) : instr* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $runelem_(elemidx : elemidx, elem : elem) : instr* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.94 +def $evalglobals(state : state, globaltype*, expr*) : (state, val*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.41 + def $evalglobals{z : state}(z, [], []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) + -- where `%;%`_state(s, f) = z {f, s} + -- where (s', a) = $allocglobal(s, gt, val) {a, s'} + -- where (z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}) {val', `val'*`, z'} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $instantiate(store : store, module : module, externaddr*) : config + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, expr_E, `expr_E*`, `expr_E**`, reftype, `reftype*`} + -- where START_start(x)?{x <- `x?`} = start?{start <- `start?`} {x, `x?`} + -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- where (z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}) {val_G, `val_G*`, z'} + -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [(ref_T : ref <: val)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} + -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [(ref_E : ref <: val)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} + -- where (s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {moduleinst, s'} + -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`})) + -- where instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} {instr_S, `instr_S?`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $invoke(store : store, funcaddr : funcaddr, val*) : config + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bbyte : byte + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 +grammar BuN(N : N) : uN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 + prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) + -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 + prod{n : n, m : m} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BsN(N : N) : sN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) + -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) + -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{n : n, i : uN} {{`%`_byte(n):Bbyte} {i:BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * i!`%`_uN.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BiN(N : N) : iN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{i : sN} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BfN(N : N) : fN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu32 : u32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{n : n} `%`_uN(n):BuN(32) => `%`_u32(n) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu64 : u64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{n : n} `%`_uN(n):BuN(64) => `%`_u64(n) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bs33 : s33 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{i : sN} i:BsN(33) => i + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf32 : f32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{p : fN} p:BfN(32) => p + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf64 : f64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{p : fN} p:BfN(64) => p + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blist(syntax el, grammar BX : el) : el* + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bname : name + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`b*` : byte*, name : name} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name + -- if ($utf8(name!`%`_name.0) = b*{b <- `b*`}) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btypeidx : typeidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btagidx : tagidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bglobalidx : globalidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bmemidx : memidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btableidx : tableidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfuncidx : funcidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bdataidx : dataidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Belemidx : elemidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blocalidx : localidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blabelidx : labelidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{l : labelidx} l:Bu32 => l + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bexternidx : externidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bnumtype : numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7C => F64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7D => F32_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7E => I64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7F => I32_numtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvectype : vectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7B => V128_vectype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Babsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x69 => EXN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6A => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6B => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6C => I31_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6D => EQ_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6E => ANY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6F => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x70 => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x71 => NONE_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x72 => NOEXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x73 => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x74 => NOEXN_heaptype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => ht + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) + -- if (x33!`%`_sN.0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Breftype : reftype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvaltype : valtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bresulttype : resulttype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmut : mut? + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x00 => ?() + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x01 => ?(MUT_mut) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bpacktype : packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x77 => I16_packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x78 => I8_packtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bstoragetype : storagetype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bfieldtype : fieldtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{zt : storagetype, `mut?` : mut?} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bcomptype : comptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bsubtype : subtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Brectype : rectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Blimits : (addrtype, limits) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btagtype : tagtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bglobaltype : globaltype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{t : valtype, `mut?` : mut?} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmemtype : memtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btabletype : tabletype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{rt : reftype, at : addrtype, lim : limits} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bexterntype : externtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bblocktype : blocktype + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x40 => _RESULT_blocktype(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_funcidx((i!`%`_sN.0 : int <:> nat))) + -- if (i!`%`_sN.0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcatch : catch + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax memidxop = (memidx, memarg) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bmemarg : memidxop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u32(m):Bu32}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u32(m)}) + -- if (n < (2 ^ 6)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{n : n, x : idx, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u32(m):Bu32}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u32(m)}) + -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax castop = (null?, null?) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcastop : castop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x00 => (?(), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x01 => (?(NULL_null), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x02 => (?(), ?(NULL_null)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x03 => (?(NULL_null), ?(NULL_null)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Blaneidx : laneidx + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} `%`_byte(l!`%`_uN.0):Bbyte => `%`_laneidx(l!`%`_uN.0) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.1-808.71 +grammar Binstr : instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 + prod 0x00 => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 + prod 0x01 => NOP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 + prod 0x1A => DROP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 + prod 0x1B => SELECT_instr(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 + prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:24.5-24.57 + prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:25.5-25.56 + prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:26.5-26.63 + prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:27.5-28.55 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.30 + prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.22 + prod 0x0A => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.29 + prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-35.32 + prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:36.5-36.62 + prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:37.5-37.19 + prod 0x0F => RETURN_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:38.5-38.30 + prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:39.5-39.60 + prod{y : idx, x : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.37 + prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.67 + prod{y : idx, x : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.81 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-55.36 + prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL.GET_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:56.5-56.36 + prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL.SET_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-57.36 + prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL.TEE_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:61.5-61.38 + prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL.GET_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:62.5-62.38 + prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL.SET_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:69.5-69.36 + prod{x : idx} {{0x25} {x:Btableidx}} => TABLE.GET_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:70.5-70.36 + prod{x : idx} {{0x26} {x:Btableidx}} => TABLE.SET_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.58 + prod{y : idx, x : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE.INIT_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.43 + prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => ELEM.DROP_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.67 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE.COPY_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:74.5-74.45 + prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => TABLE.GROW_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:75.5-75.45 + prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => TABLE.SIZE_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:76.5-76.45 + prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => TABLE.FILL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.41 + prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.41 + prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.41 + prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.41 + prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:93.5-93.50 + prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:94.5-94.50 + prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:95.5-95.51 + prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:96.5-96.51 + prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:97.5-97.50 + prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:98.5-98.50 + prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:99.5-99.51 + prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:100.5-100.51 + prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:101.5-101.51 + prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:102.5-102.51 + prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:103.5-103.42 + prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:104.5-104.42 + prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.42 + prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.42 + prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.45 + prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.46 + prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.45 + prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.46 + prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.46 + prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.36 + prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY.SIZE_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.36 + prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY.GROW_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.56 + prod{y : idx, x : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY.INIT_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.42 + prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => DATA.DROP_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.64 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY.COPY_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.44 + prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => MEMORY.FILL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.37 + prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF.NULL_instr(ht) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.24 + prod 0xD1 => REF.IS_NULL_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:134.5-134.34 + prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF.FUNC_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:135.5-135.19 + prod 0xD3 => REF.EQ_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:136.5-136.28 + prod 0xD4 => REF.AS_NON_NULL_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:137.5-137.37 + prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:138.5-138.41 + prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.43 + prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => STRUCT.NEW_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.51 + prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => STRUCT.NEW_DEFAULT_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.52 + prod{x : idx, i : u32} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.54 + prod{x : idx, i : u32} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.54 + prod{x : idx, i : u32} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.52 + prod{x : idx, i : u32} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.SET_instr(x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:151.5-151.42 + prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => ARRAY.NEW_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.50 + prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => ARRAY.NEW_DEFAULT_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.57 + prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.60 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.NEW_DATA_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.61 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.NEW_ELEM_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.43 + prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.45 + prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:158.5-158.45 + prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:159.5-159.43 + prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => ARRAY.SET_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:160.5-160.30 + prod {{0xFB} {`%`_u32(15):Bu32}} => ARRAY.LEN_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.44 + prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => ARRAY.FILL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.65 + prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY.COPY_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.INIT_DATA_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.INIT_ELEM_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-173.100 + prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-175.105 + prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 + prod {{0xFB} {`%`_u32(26):Bu32}} => ANY.CONVERT_EXTERN_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:180.5-180.39 + prod {{0xFB} {`%`_u32(27):Bu32}} => EXTERN.CONVERT_ANY_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.28 + prod {{0xFB} {`%`_u32(28):Bu32}} => REF.I31_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 + prod {{0xFB} {`%`_u32(29):Bu32}} => I31.GET_instr(S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:186.5-186.30 + prod {{0xFB} {`%`_u32(30):Bu32}} => I31.GET_instr(U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 + prod{n : n} {{0x41} {`%`_u32(n):Bu32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 + prod{n : n} {{0x42} {`%`_u64(n):Bu64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, `%`_uN(n))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 + prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:196.5-196.31 + prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:200.5-200.27 + prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 + prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.25 + prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 + prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 + prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 + prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 + prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 + prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 + prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 + prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:213.5-213.27 + prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:217.5-217.27 + prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 + prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.25 + prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 + prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 + prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 + prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 + prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 + prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 + prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 + prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:230.5-230.27 + prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 + prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 + prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 + prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 + prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 + prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:239.5-239.25 + prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 + prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 + prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 + prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 + prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 + prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:248.5-248.25 + prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 + prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.25 + prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:254.5-254.28 + prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 + prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 + prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.26 + prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 + prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 + prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 + prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.28 + prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.26 + prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.25 + prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 + prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.26 + prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 + prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.28 + prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 + prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:272.5-272.27 + prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 + prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.25 + prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:278.5-278.28 + prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.31 + prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:283.5-283.32 + prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.31 + prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 + prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:289.5-289.32 + prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 + prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 + prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.26 + prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 + prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 + prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 + prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.28 + prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.26 + prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.25 + prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 + prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.26 + prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 + prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.28 + prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 + prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:307.5-307.27 + prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 + prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.25 + prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.26 + prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 + prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.27 + prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.29 + prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:317.5-317.26 + prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 + prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 + prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 + prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 + prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 + prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.26 + prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:327.5-327.31 + prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 + prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.25 + prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.26 + prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 + prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.27 + prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.29 + prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:337.5-337.26 + prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 + prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 + prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 + prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 + prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 + prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.26 + prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:347.5-347.31 + prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.31 + prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 + prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 + prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 + prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.34 + prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 + prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.35 + prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 + prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 + prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 + prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.34 + prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 + prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 + prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 + prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.36 + prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.33 + prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 + prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 + prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 + prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.36 + prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.34 + prod 0xBB => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 + prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 + prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 + prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:376.5-376.38 + prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 + prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 + prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 + prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 + prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 + prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 + prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 + prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:387.5-387.45 + prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.50 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.70 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.61 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.63 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.52 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.72 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:418.5-418.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:422.5-422.72 + prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.61 + prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_uN.0)^16{l <- `l*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.49 + prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:428.5-428.58 + prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 + prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 + prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 + prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 + prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 + prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:437.5-437.38 + prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 + prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_uN.0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.60 + prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_uN.0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.58 + prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_uN.0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 + prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_uN.0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.60 + prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_uN.0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 + prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_uN.0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 + prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_uN.0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 + prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_uN.0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_uN.0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 + prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_uN.0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 + prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_uN.0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_uN.0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_uN.0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:454.5-454.58 + prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_uN.0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 + prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.41 + prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 + prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 + prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 + prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 + prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 + prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 + prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:467.5-467.43 + prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 + prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.41 + prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 + prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 + prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 + prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 + prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 + prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:480.5-480.43 + prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 + prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.41 + prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 + prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 + prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 + prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 + prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 + prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:493.5-493.43 + prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 + prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 + prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 + prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 + prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 + prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:502.5-502.41 + prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 + prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 + prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:511.5-511.41 + prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:515.5-515.36 + prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.37 + prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.40 + prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.36 + prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:522.5-522.37 + prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.44 + prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:530.5-530.43 + prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 + prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.41 + prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:536.5-536.44 + prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:540.5-540.48 + prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:544.5-544.41 + prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 + prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:549.5-549.53 + prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.45 + prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 + prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:555.5-555.47 + prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.43 + prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 + prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.49 + prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.43 + prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 + prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.49 + prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 + prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 + prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 + prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.45 + prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.46 + prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 + prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:574.5-574.70 + prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 + prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:579.5-579.42 + prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.53 + prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.43 + prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 + prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.49 + prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.43 + prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 + prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.49 + prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.43 + prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 + prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 + prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 + prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.45 + prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.46 + prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.57 + prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:600.5-600.49 + prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:604.5-604.41 + prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 + prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:609.5-609.53 + prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.63 + prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.64 + prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.63 + prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:616.5-616.64 + prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.45 + prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 + prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.47 + prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.66 + prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.67 + prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.66 + prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 + prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:630.5-630.67 + prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 + prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.70 + prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 + prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:640.5-640.42 + prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:644.5-644.49 + prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:648.5-648.41 + prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.63 + prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.64 + prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.63 + prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:655.5-655.64 + prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.45 + prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 + prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.49 + prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 + prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 + prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.43 + prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 + prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 + prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 + prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:671.5-671.45 + prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.59 + prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.66 + prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.67 + prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.66 + prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:679.5-679.67 + prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.72 + prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 + prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:688.5-688.42 + prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:692.5-692.49 + prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:696.5-696.41 + prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.63 + prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.64 + prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.63 + prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:703.5-703.64 + prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.45 + prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 + prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.49 + prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 + prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 + prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:715.5-715.43 + prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 + prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.42 + prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 + prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 + prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 + prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:724.5-724.46 + prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.66 + prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.67 + prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.66 + prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:731.5-731.67 + prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.43 + prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 + prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.44 + prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.46 + prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 + prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.42 + prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:741.5-741.43 + prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 + prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 + prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 + prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 + prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.43 + prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 + prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.44 + prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 + prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:754.5-754.51 + prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.53 + prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.54 + prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.43 + prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 + prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.44 + prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.46 + prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 + prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.42 + prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:769.5-769.43 + prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 + prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 + prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 + prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 + prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.43 + prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 + prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.44 + prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 + prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:782.5-782.51 + prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.53 + prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.54 + prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 + prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 + prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 + prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:791.5-791.59 + prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 + prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.61 + prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 + prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.62 + prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 + prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.60 + prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 + prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.67 + prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 + prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.64 + prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 + prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.66 + prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 + prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:808.5-808.71 + prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) +} + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bexpr : expr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{len : nat, `en*` : en*} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} + -- if (len = 0) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod eps => [] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustom : ()* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{Bname} {Bbyte*{}}} => [()] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustomsec : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod Bsection_(0, syntax (), grammar Bcustom) => () + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btype : type + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{qt : rectype} qt:Brectype => TYPE_type(qt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btypesec : type* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimport : import + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimportsec : import* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfuncsec : typeidx* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btable : table + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF.NULL_instr(ht)]) + -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btablesec : table* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmem : mem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmemsec : mem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobal : global + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobalsec : global* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexport : export + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexportsec : export* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstart : start* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{x : idx} x:Bfuncidx => [START_start(x)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax startopt = start* + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstartsec : start? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => $opt_(syntax start, startopt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemkind : reftype + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belem : elem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{e_o : expr, `y*` : idx*} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{x : idx, e : expr, rt : reftype, `y*` : idx*} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], DECLARE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{e_O : expr, `e*` : expr*} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{x : idx, e_O : expr, `e*` : expr*} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemsec : elem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax code = (local*, expr) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Blocals : local* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{n : n, t : valtype} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfunc : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) + -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcode : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{len : nat, code : code} {{`%`_u32(len):Bu32} {code:Bfunc}} => code + -- if (len = 0) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcodesec : code* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdata : data + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{e : expr, `b*` : byte*} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{x : idx, e : expr, `b*` : byte*} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatasec : data* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacnt : u32* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax nopt = u32* + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacntsec : u32? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => $opt_(syntax u32, nopt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btag : tag + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btagsec : tag* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmagic : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x00} {0x61} {0x73} {0x6D}} => () + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bversion : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x01} {0x00} {0x00} {0x00}} => () + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmodule : module + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) + -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} + -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) + -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tchar : char + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tsource : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tchar*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TuNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TsNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TfNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x21 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x23 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x24 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x25 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x26 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x27 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2A => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2B => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2D => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3A => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3D => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x40 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x60 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7E => `%`_char(``) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x30 => 0 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x31 => 1 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x32 => 2 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x33 => 3 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x34 => 4 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x35 => 5 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x36 => 6 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x37 => 7 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x38 => 8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x39 => 9 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x41 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x42 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x43 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x44 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x45 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x46 => 15 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x61 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x62 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x63 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x64 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x65 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x66 => 15 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 +grammar Thexnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 + prod{h : nat} h:Thexdigit => h + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 + prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char} c:Tchar => c + -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\t" => `%`_char(9) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\n" => `%`_char(10) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\r" => `%`_char(13) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\"" => `%`_char(34) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\'" => `%`_char(39) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\\" => `%`_char(92) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) + -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringelem : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char} c:Tstringchar => $utf8([c]) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstring : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) + -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tname : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`b*` : byte*, `c*` : char*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) + -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tid : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) + -- if (|c*{c <- `c*`}| > 0) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tkeyword : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Treserved : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Ttoken : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tkeyword => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TuNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TsNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TfNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : byte} [``]:Tstring => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tid => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x28 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x29 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Treserved => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tannotid : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tidchar+{} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tname => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 +grammar Tblockcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 + prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 +grammar Tblockchar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 + prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 + prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 + prod{`` : ()} ``:Tblockcomment => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Teof : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : text} ``:"" => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinechar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if ((c!`%`_char.0 =/= 10) /\ (c!`%`_char.0 =/= 13)) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tnewline : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0A => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0D => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinecomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tlinecomment => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tblockcomment => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tformat : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tnewline => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x09 => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 +grammar Tspace : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 + prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 +grammar Tannot : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 + prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tsign : int + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod eps => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "+" => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "-" => - (1 : nat <:> int) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 +grammar Tnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 + prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TuN(N : N) : uN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} n:Tnum => `%`_uN(n) + -- if (n < (2 ^ N)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) + -- if (n < (2 ^ N)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TsN(N : N) : sN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TiN(N : N) : iN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{i : sN} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 +grammar Tfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 + prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 + prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 +grammar Thexfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 + prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 + prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +def $ieee_(N : N, rat : rat) : fNmag + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfNmag(N : N) : fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Tfloat => $ieee_(N, q) + -- if ($ieee_(N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Thexfloat => $ieee_(N, q) + -- if ($ieee_(N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "inf" => INF_fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "nan" => NAN_fNmag($canon_(N)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfN(N : N) : fN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti16 : u16 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(16) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti128 : u128 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(128) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf32 : f32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf64 : f64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlist(syntax el, grammar TX : el) : el* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} + -- if (|el*{el <- `el*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax idctxt = +{ + TYPES{`name?*` : name?*} name?*, + TAGS{`name?*` : name?*} name?*, + GLOBALS{`name?*` : name?*} name?*, + MEMS{`name?*` : name?*} name?*, + TABLES{`name?*` : name?*} name?*, + FUNCS{`name?*` : name?*} name?*, + DATAS{`name?*` : name?*} name?*, + ELEMS{`name?*` : name?*} name?*, + LOCALS{`name?*` : name?*} name?*, + LABELS{`name?*` : name?*} name?*, + FIELDS{`name?**` : name?**} name?**, + TYPEDEFS{`deftype?*` : deftype?*} deftype?* +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation wf_idctxt: `%`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) + -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} + -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} + -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} + -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} + -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} + -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} + -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} + -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} + -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} + -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax I = idctxt + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.56 +def $concat_idctxt(idctxt*) : idctxt + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 + def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 + def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation Idctxt_ok: `|-%:OK`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule _{I : I, `field**` : char**}: + `|-%:OK`(I) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) + -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} + -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidx_(ids : name?*) : idx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} x:Tu32 => x + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{id : name, x : idx} id:Tid => x + -- if (ids[x!`%`_uN.0] = ?(id)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttypeidx_(I : I) : typeidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttagidx_(I : I) : tagidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tglobalidx_(I : I) : globalidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmemidx_(I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttableidx_(I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfuncidx_(I : I) : funcidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdataidx_(I : I) : dataidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Telemidx_(I : I) : elemidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlocalidx_(I : I) : localidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlabelidx_(I : I) : labelidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfieldidx__(I : I, x : idx) : fieldidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.FIELDS_I[x!`%`_uN.0]) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Texternidx_(I : I) : externidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnumtype : numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f32" => F32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f64" => F64_numtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvectype : vectype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "v128" => V128_vectype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tabsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "any" => ANY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "eq" => EQ_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i31" => I31_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "struct" => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "array" => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "none" => NONE_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "func" => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "nofunc" => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "exn" => EXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noexn" => NOEXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "extern" => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noextern" => NOEXTERN_heaptype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Theaptype_(I : I) : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ht : heaptype} ht:Tabsheaptype => ht + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnull : null + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "null" => NULL_null + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Treftype_(I : I) : reftype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvaltype_(I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tpacktype : packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i8" => I8_packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i16" => I16_packtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tstoragetype_(I : I) : storagetype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfieldtype_(I : I) : fieldtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfield_(I : I) : (fieldtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`id?` : char?, ft : fieldtype} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tparam_(I : I) : (valtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`id?` : char?, t : valtype} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tresult_(I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tcomptype_(I : I) : (comptype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfinal : final + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "final" => FINAL_final + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tsubtype_(I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypedef_(I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`id?` : char?, st : subtype, I' : I} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Trectype_(I : I) : (rectype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Taddrtype : addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_addrtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tlimits : limits + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypeuse_(I : I) : (typeidx, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') + -- if (I.TYPEDEFS_I[x!`%`_uN.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, `t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*, I' : I, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') + -- if (I.TYPEDEFS_I[x!`%`_uN.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) + -- Idctxt_ok: `|-%:OK`(I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttagtype_(I : I) : tagtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tglobaltype_(I : I) : globaltype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tmemtype_(I : I) : memtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttabletype_(I : I) : tabletype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Texterntype_(I : I) : (externtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`id?` : char?, jt : tagtype} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`id?` : char?, gt : globaltype} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`id?` : char?, tt : tabletype} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`id?` : char?, x : idx, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlabel_(I : I) : (name?, I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) + -- if ~ (?(id) <- I.LABELS_I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[x!`%`_uN.0] = ?()]) + -- if (?(id) = I.LABELS_I[x!`%`_uN.0]) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tblocktype_(I : I) : blocktype + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tcatch_(I : I) : catch + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tfoldedinstr_(I : I) : instr* + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlaneidx : laneidx + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : u8} i:Tu8 => i + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Talign_(N : N) : u64 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) + -- if (m = (2 ^ n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u64(N) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Toffset : u64 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u64(0) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tmemarg_(N : N) : memarg + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u32(m)} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tplaininstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "unreachable" => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "nop" => NOP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "drop" => DROP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "return" => RETURN_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "throw_ref" => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => LOCAL.GET_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => LOCAL.SET_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => LOCAL.TEE_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => GLOBAL.GET_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => GLOBAL.SET_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => TABLE.GET_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => TABLE.SET_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => TABLE.SIZE_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => TABLE.GROW_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => TABLE.FILL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => TABLE.COPY_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => TABLE.INIT_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => ELEM.DROP_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => MEMORY.SIZE_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => MEMORY.GROW_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => MEMORY.FILL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => MEMORY.COPY_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => MEMORY.INIT_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => DATA.DROP_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => REF.NULL_instr(ht) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => REF.FUNC_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.is_null" => REF.IS_NULL_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.as_non_null" => REF.AS_NON_NULL_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.eq" => REF.EQ_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => REF.TEST_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => REF.CAST_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.i31" => REF.I31_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_s" => I31.GET_instr(S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_u" => I31.GET_instr(U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => STRUCT.NEW_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => STRUCT.NEW_DEFAULT_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.SET_instr(x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => ARRAY.NEW_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => ARRAY.NEW_DEFAULT_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.NEW_DATA_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.NEW_ELEM_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => ARRAY.SET_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "array.len" => ARRAY.LEN_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => ARRAY.FILL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => ARRAY.COPY_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.INIT_DATA_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.INIT_ELEM_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "any.convert_extern" => ANY.CONVERT_EXTERN_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "extern.convert_any" => EXTERN.CONVERT_ANY_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 +grammar Tinstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 + prod{in : instr} in:Tplaininstr_(I) => in + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 + prod{in : instr} in:Tblockinstr_(I) => in + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 +grammar Tinstrs_(I : I) : instr* + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 + prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 + prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 +grammar Tblockinstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 + prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 + prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 + prod{`id?` : char?, I' : I, bt : blocktype, `in_1*` : instr*, `id_1?` : char?, `in_2*` : instr*, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 + prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) +} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Texpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Ttype_(I : I) : (type, idctxt) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{qt : rectype, I' : I, I'' : I, `st*` : subtype*, n : n, `i*` : nat*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') + -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) + -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Tglobal_(I : I) : (global, idctxt) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`id?` : char?, gt : globaltype, e : expr} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Tmem_(I : I) : (mem, idctxt) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Ttable_(I : I) : (table, idctxt) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`id?` : char?, tt : tabletype, e : expr} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Tlocal_(I : I) : (local*, idctxt) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`id?` : char?, t : valtype} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Tfunc_(I : I) : (func, idctxt) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) + -- Idctxt_ok: `|-%:OK`(I') + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Tdatastring : byte* + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Tmemuse_(I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Toffset_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Tdata_(I : I) : (data, idctxt) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`id?` : char?, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`id?` : char?, x : idx, e : expr, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Telemlist_(I : I) : (reftype, expr*) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Ttableuse_(I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Telem_(I : I) : (elem, idctxt) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`id?` : char?, x : idx, e' : expr, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Telemexpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Tstart_(I : I) : (start, idctxt) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Timport_(I : I) : (import, idctxt) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Texport_(I : I) : (export, idctxt) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Texportdots : () + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Timportdots : () + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +def $dots : () + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Texporttagdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Texportglobaldots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Texportmemdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Texporttabledots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Texportfuncdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Texporttag_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Texportglobal_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Texportmem_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Texporttable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Texportfunc_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Tdatamem_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Telemtable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +syntax decl = + | TYPE{rectype : rectype}(rectype : rectype) + | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) + | TAG{tagtype : tagtype}(tagtype : tagtype) + | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) + | MEMORY{memtype : memtype}(memtype : memtype) + | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) + | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) + | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) + | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) + | START{funcidx : funcidx}(funcidx : funcidx) + | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +relation wf_decl: `%`(decl) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + rule decl_case_0{rectype : rectype}: + `%`(TYPE_decl(rectype)) + + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + rule decl_case_1{name : name, externtype : externtype, var_0 : name}: + `%`(IMPORT_decl(name, var_0, externtype)) + -- wf_name: `%`(name) + -- wf_externtype: `%`(externtype) + -- wf_name: `%`(var_0) + + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + rule decl_case_2{tagtype : tagtype}: + `%`(TAG_decl(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + rule decl_case_3{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_decl(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + rule decl_case_4{memtype : memtype}: + `%`(MEMORY_decl(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + rule decl_case_5{tabletype : tabletype, expr : expr}: + `%`(TABLE_decl(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + rule decl_case_6{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_decl(typeidx, local*{local <- `local*`}, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + rule decl_case_7{`byte*` : byte*, datamode : datamode}: + `%`(DATA_decl(byte*{byte <- `byte*`}, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + rule decl_case_8{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_decl(reftype, expr*{expr <- `expr*`}, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + rule decl_case_9{funcidx : funcidx}: + `%`(START_decl(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + rule decl_case_10{name : name, externidx : externidx}: + `%`(EXPORT_decl(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 +def $typesd(decl*) : type* + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 + def $typesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 + def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 + def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 +def $importsd(decl*) : import* + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 + def $importsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 + def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 + def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 +def $tagsd(decl*) : tag* + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 + def $tagsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 + def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 + def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 +def $globalsd(decl*) : global* + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 + def $globalsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 + def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 + def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 +def $memsd(decl*) : mem* + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 + def $memsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 + def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 + def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 +def $tablesd(decl*) : table* + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 + def $tablesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 + def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 + def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 +def $funcsd(decl*) : func* + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 + def $funcsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 + def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 + def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 +def $datasd(decl*) : data* + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 + def $datasd([]) = [] + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 + def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 + def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 +def $elemsd(decl*) : elem* + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 + def $elemsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 + def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 + def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 +def $startsd(decl*) : start* + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 + def $startsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 + def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 + def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 +def $exportsd(decl*) : export* + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 + def $exportsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 + def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 + def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +def $ordered(decl*) : bool + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = true + -- if ($importsd(decl'*{decl' <- `decl'*`}) = []) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Tdecl_(I : I) : (decl, idctxt) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Tmodule : module + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) + -- if (I' = $concat_idctxt(I*{I <- `I*`})) + -- Idctxt_ok: `|-%:OK`(I') + -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) + -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) + -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) + -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) + -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) + -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) + -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) + -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) + -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) + -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) + -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) + -- if $ordered(decl*{decl <- `decl*`}) + +;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +grammar Tdecldots_(I : I) : (decl, idctxt)* + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax A = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax B = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax sym = + | _FIRST{A_1 : A}(A_1 : A) + | _DOTS + | _LAST{A_n : A}(A_n : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax symsplit = + | _FIRST{A_1 : A}(A_1 : A) + | _LAST{A_2 : A}(A_2 : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax recorddots = () + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax record = +{ + FIELD_1{A_1 : A} A, + FIELD_2{A_2 : A} A, + `...`{recorddots : recorddots} recorddots +} + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax pth = + | PTHSYNTAX + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +syntax T = nat + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremise: `%`(nat) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremisedots: `...` + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingScheme: `%`(nat) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec + rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: + `%`(conclusion) + -- NotationTypingPremise: `%`(premise_1) + -- NotationTypingPremise: `%`(premise_2) + -- NotationTypingPremisedots: `...` + -- NotationTypingPremise: `%`(premise_n) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 +relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 + rule i32.add{C : context}: + `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 + rule global.get{C : context, x : idx, t : valtype, mut : mut}: + `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(mut), t)) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 + rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation NotationReduct: `~>%`(instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 3{q_1 : num_, q_5 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 4{q_6 : num_}: + `~>%`([CONST_instr(F64_numtype, q_6)]) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $instrdots : instr* + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax label = + | `LABEL_%{%}`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_label: `%`(label) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule label_case_0{n : n, `instr*` : instr*}: + `%`(`LABEL_%{%}`_label(n, instr*{instr <- `instr*`})) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax callframe = + | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_callframe: `%`(callframe) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule callframe_case_0{n : n, frame : frame}: + `%`(`FRAME_%{%}`_callframe(n, frame)) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 +def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 + def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 + def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} + -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +syntax symdots = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +relation wf_symdots: `%`(symdots) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + rule symdots_case_0{i : nat}: + `%`(`%`_symdots(i)) + -- if (i = 0) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +def $var(syntax X) : nat + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + def $var{syntax X}(syntax X) = 0 + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bvar(syntax X) : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod 0x00 => () + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsym : A + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod Bvar(syntax B) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsymsplit : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => `` + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => `` + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tvar(syntax X) : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod 0x00 => () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsym : A + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod Tvar(syntax T) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsymsplit : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => `` + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => `` + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax abbreviated = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax expanded = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax syntax = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tabbrev : () + diff --git a/spectec/test-middlend/specification.exp/07-uncase-removal.il b/spectec/test-middlend/specification.exp/08-uncase-removal.il similarity index 83% rename from spectec/test-middlend/specification.exp/07-uncase-removal.il rename to spectec/test-middlend/specification.exp/08-uncase-removal.il index ee012a0045..da7278caf0 100644 --- a/spectec/test-middlend/specification.exp/07-uncase-removal.il +++ b/spectec/test-middlend/specification.exp/08-uncase-removal.il @@ -317,19 +317,16 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -383,29 +380,18 @@ def $utf8(char*) : byte* def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) -- if ($proj_char_0(ch).0 < 128) -- where b = `%`_byte($proj_char_0(ch).0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -599,7 +585,6 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -610,7 +595,6 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -619,55 +603,46 @@ def $free_list(free*) : free def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -1044,73 +1019,61 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1411,7 +1374,6 @@ def $unpack(storagetype : storagetype) : valtype def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype - -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1446,10 +1408,8 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1543,9 +1503,6 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } @@ -1587,7 +1544,6 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1599,7 +1555,6 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1612,32 +1567,25 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1660,97 +1608,79 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) - -- wf_externtype: `%`(FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4280,13 +4192,10 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4317,7 +4226,6 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4384,13 +4292,10 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4399,13 +4304,10 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4428,7 +4330,6 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4439,10 +4340,8 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4498,7 +4397,6 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] - -- wf_free: `%`(free) -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } @@ -4742,7 +4640,6 @@ def $free_datamode(datamode : datamode) : free def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -4755,10 +4652,8 @@ def $free_elemmode(elemmode : elemmode) : free def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -4912,14 +4807,12 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -4948,28 +4841,24 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype}: `%~~%`(deftype, comptype) - -- wf_comptype: `%`(comptype) -- if ($expanddt(deftype) = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -4977,7 +4866,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool @@ -5005,13 +4893,10 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -5019,8 +4904,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -5028,49 +4911,37 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) - -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) - -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) - -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -5078,8 +4949,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -5087,8 +4956,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -5096,14 +4963,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) - -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -5111,22 +4975,16 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -5135,10 +4993,6 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} @@ -5150,27 +5004,16 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -5178,11 +5021,6 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} @@ -5194,17 +5032,10 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) @@ -5213,9 +5044,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) - -- wf_context: `%`(C) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) @@ -5225,25 +5053,16 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) @@ -5252,14 +5071,11 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) @@ -5268,16 +5084,10 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) - -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5285,144 +5095,88 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) - -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) - -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) - -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5430,38 +5184,27 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) - -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) - -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 @@ -5469,15 +5212,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) - -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5485,17 +5224,11 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5505,9 +5238,6 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} @@ -5517,16 +5247,11 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5534,8 +5259,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} @@ -5544,9 +5267,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5555,8 +5275,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5564,8 +5282,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5573,8 +5289,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5583,37 +5297,26 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5622,11 +5325,6 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) @@ -5637,9 +5335,6 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5648,7 +5343,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5657,17 +5351,11 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -5676,9 +5364,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5686,9 +5371,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -5698,41 +5380,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) - -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5740,18 +5407,11 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5759,49 +5419,35 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) - -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) - -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) - -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) - -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -5810,7 +5456,6 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5826,41 +5471,25 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) @@ -5868,35 +5497,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5904,27 +5516,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5932,27 +5534,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5962,10 +5554,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5975,30 +5563,16 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6006,22 +5580,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6030,12 +5594,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6044,14 +5602,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6062,31 +5612,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} @@ -6094,56 +5630,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref.null{C : context, ht : heaptype}: `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref.i31{C : context}: `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref.is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref.as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref.eq{C : context}: `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.TEST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6151,9 +5666,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.CAST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6161,37 +5673,21 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31.get{C : context, sx : sx}: `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6199,59 +5695,34 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.SET_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) @@ -6259,46 +5730,26 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array.set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array.len{C : context}: `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.LEN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array.fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) @@ -6306,20 +5757,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[$proj_uN_0(y).0] : reftype <: storagetype), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) @@ -6327,117 +5770,66 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local.get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local.set{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local.tee{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global.set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6445,11 +5837,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6457,155 +5844,91 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem.drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(ELEM.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data.drop{C : context, x : idx}: `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DATA.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -6613,20 +5936,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -6634,221 +5949,127 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) @@ -6856,10 +6077,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') - -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -6867,10 +6084,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) } @@ -6880,9 +6093,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6890,7 +6100,6 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6898,91 +6107,59 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.null{C : context, ht : heaptype}: `%|-%CONST`(C, REF.NULL_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: `%|-%CONST`(C, REF.I31_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.func{C : context, x : idx}: `%|-%CONST`(C, REF.FUNC_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_fixed{C : context, x : idx, n : n}: `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern.convert_any{C : context}: `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global.get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL.GET_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -6991,8 +6168,6 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7000,9 +6175,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) @@ -7011,9 +6183,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) @@ -7023,8 +6192,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7032,9 +6199,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) @@ -7044,8 +6208,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7053,9 +6215,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) @@ -7065,17 +6224,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7083,10 +6236,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -7096,15 +6245,10 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -7113,8 +6257,6 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7122,24 +6264,14 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -7149,8 +6281,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) @@ -7160,9 +6290,6 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7170,8 +6297,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7179,41 +6304,26 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7221,9 +6331,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7234,16 +6341,10 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } @@ -7256,13 +6357,10 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } @@ -7285,23 +6383,12 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) - -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) - -- wf_context: `%`(C) - -- wf_context: `%`(C') - -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) - -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} @@ -7472,10 +6559,8 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7504,7 +6589,6 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -7524,28 +6608,23 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7553,7 +6632,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7561,7 +6639,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7569,12 +6646,10 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7603,19 +6678,15 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7666,61 +6737,49 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -7834,10 +6893,8 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) - -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7845,7 +6902,6 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -7853,7 +6909,6 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7861,103 +6916,72 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -7995,32 +7019,23 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] - -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] - -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8070,21 +7085,16 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -8092,9 +7102,6 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} @@ -8102,10 +7109,6 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8114,10 +7117,6 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8126,9 +7125,6 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -8137,9 +7133,6 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -8148,9 +7141,6 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -8160,9 +7150,6 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -8172,9 +7159,6 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -8182,9 +7166,6 @@ def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} @@ -8192,9 +7173,6 @@ def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8203,9 +7181,6 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8214,10 +7189,6 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8227,9 +7198,6 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -8237,9 +7205,6 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -8247,10 +7212,6 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) @@ -8258,10 +7219,6 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{Jnn : Jnn, M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} @@ -8270,10 +7227,6 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{Jnn : Jnn, M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} @@ -8303,213 +7256,146 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} @@ -8519,43 +7405,30 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8566,19 +7439,12 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} @@ -8587,36 +7453,23 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8632,37 +7485,15 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9069,7 +7900,6 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) - -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -9077,7 +7907,6 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -9263,87 +8092,71 @@ def $local(state : state, localidx : localidx) : val? def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) - -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f) - -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f) - -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) - -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') - -- wf_tableinst: `%`(tableinst') - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) @@ -9354,9 +8167,6 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') - -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) @@ -9368,16 +8178,12 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -9387,76 +8193,44 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.I31_NUM_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) - -- wf_store: `%`(s) - -- wf_exninst: `%`(exn) - -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.EXTERN_ref(addrref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) - -- wf_reftype: `%`(rt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -9466,23 +8240,16 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) - -- wf_store: `%`(s) - -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -9493,45 +8260,31 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) - -- wf_externtype: `%`(xt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -9566,83 +8319,11 @@ def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.is_null-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-true_0`{ref : ref, ht : heaptype}: - `%`([(ref : ref <: instr) REF.IS_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-null_0`{ref : ref, ht : heaptype}: - `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) - -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.eq-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true_0`{ref_1 : ref, ref_2 : ref}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- if (ref_1 = ref_2) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-null_1`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9650,640 +8331,384 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if ($proj_uN_0(l).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if ($proj_uN_0(l).0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-addr`{val : val, l : labelidx}: + rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- ~ `Step_pure_before_br_on_null-addr`: `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-addr`{val : val, l : labelidx}: + rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instr: `%`(LOCAL.SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-false`{ref : ref}: + rule `ref.is_null-false`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.is_null-false`: `%`([(ref : ref <: instr) REF.IS_NULL_instr]) + -- if (ref =/= REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-addr`{ref : ref}: + rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) + -- if (ref =/= REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.eq-false`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(REF.I31_NUM_instr(i)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) -- if ($unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) -- if ($binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_uN: `%%`(128, `%`_uN(0)) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) - -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) - -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) @@ -10292,69 +8717,14 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_throw_ref-handler-next`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) - -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) - -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) - -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) - -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10362,8 +8732,6 @@ relation `Step_read_before_table.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10371,46 +8739,12 @@ relation `Step_read_before_table.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10418,24 +8752,6 @@ relation `Step_read_before_table.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10443,24 +8759,6 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10468,8 +8766,6 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10477,46 +8773,12 @@ relation `Step_read_before_memory.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10524,24 +8786,6 @@ relation `Step_read_before_memory.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10549,10 +8793,6 @@ relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -10561,9 +8801,6 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -10572,24 +8809,6 @@ relation `Step_read_before_array.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10597,15 +8816,11 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10613,22 +8828,17 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10636,18 +8846,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -10655,22 +8853,17 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10678,38 +8871,11 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.init_elem-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10717,17 +8883,12 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10735,24 +8896,18 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10760,73 +8915,47 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) @@ -10835,323 +8964,205 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr, x : idx, `val*` : val*, x : idx, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- if (((($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0]) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) \/ ($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0])) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0] : ref <: instr)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[(($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -11160,33 +9171,22 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) @@ -11195,350 +9195,212 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) - -- wf_instr: `%`(REF.NULL_instr(($type(z, x) : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) - -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]) : val <: instr)]) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]) : val <: instr)]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) @@ -11546,87 +9408,53 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -11639,52 +9467,32 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) @@ -11692,103 +9500,72 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) @@ -11796,29 +9573,19 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) @@ -11826,46 +9593,30 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -11877,14 +9628,10 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } @@ -11894,8 +9641,6 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11907,7 +9652,6 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} - -- wf_uN: `%%`(32, x) -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) @@ -11918,8 +9662,6 @@ def $alloctypes(type*) : deftype* def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11931,8 +9673,6 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } @@ -11941,8 +9681,6 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11954,8 +9692,6 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } @@ -11964,8 +9700,6 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11977,8 +9711,6 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } @@ -11987,8 +9719,6 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12000,8 +9730,6 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } @@ -12010,8 +9738,6 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12023,8 +9749,6 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } @@ -12033,8 +9757,6 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12046,8 +9768,6 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } @@ -12056,8 +9776,6 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12069,8 +9787,6 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } @@ -12079,19 +9795,14 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -12102,24 +9813,6 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) - -- wf_store: `%`(s_1) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_3) - -- wf_store: `%`(s_4) - -- wf_store: `%`(s_5) - -- wf_store: `%`(s_6) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} - -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} @@ -12151,10 +9844,6 @@ def $rundata_(dataidx : dataidx, data : data) : instr* def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) - -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -12162,13 +9851,8 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] - -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(TABLE.INIT_instr(y, x)) - -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12179,11 +9863,6 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) - -- wf_state: `%`(z') - -- wf_val: `%`(val) - -- (wf_val: `%`(val'))*{val' <- `val'*`} - -- wf_state: `%`(`%;%`_state(s, f)) - -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- where `%;%`_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, val) {a, s'} @@ -12194,24 +9873,6 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) - -- wf_state: `%`(z) - -- wf_state: `%`(z') - -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} - -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} - -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} - -- (wf_start: `%`(START_start(x)))?{x <- `x?`} - -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} - -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} - -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} @@ -12234,8 +9895,6 @@ def $instantiate(store : store, module : module, externaddr*) : config def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -14332,7 +11991,6 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) } @@ -14342,8 +12000,6 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I) - -- wf_idctxt: `%`(I) - -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) @@ -16229,26 +13885,15 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32.add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global.get{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -16258,23 +13903,14 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -16313,8 +13949,6 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} } diff --git a/spectec/test-middlend/specification.exp/08-sideconditions.il b/spectec/test-middlend/specification.exp/09-sideconditions.il similarity index 83% rename from spectec/test-middlend/specification.exp/08-sideconditions.il rename to spectec/test-middlend/specification.exp/09-sideconditions.il index c38f176816..b2fdcf6e33 100644 --- a/spectec/test-middlend/specification.exp/08-sideconditions.il +++ b/spectec/test-middlend/specification.exp/09-sideconditions.il @@ -317,19 +317,16 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -383,29 +380,18 @@ def $utf8(char*) : byte* def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) -- if ($proj_char_0(ch).0 < 128) -- where b = `%`_byte($proj_char_0(ch).0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -599,7 +585,6 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -610,7 +595,6 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -619,55 +603,46 @@ def $free_list(free*) : free def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -1044,73 +1019,61 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1411,7 +1374,6 @@ def $unpack(storagetype : storagetype) : valtype def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype - -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1446,10 +1408,8 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1543,9 +1503,6 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } @@ -1587,7 +1544,6 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1599,7 +1555,6 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1612,32 +1567,25 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1660,97 +1608,79 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) - -- wf_externtype: `%`(FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4280,13 +4192,10 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4317,7 +4226,6 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4384,13 +4292,10 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4399,13 +4304,10 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4428,7 +4330,6 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4439,10 +4340,8 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4498,7 +4397,6 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] - -- wf_free: `%`(free) -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } @@ -4742,7 +4640,6 @@ def $free_datamode(datamode : datamode) : free def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -4755,10 +4652,8 @@ def $free_elemmode(elemmode : elemmode) : free def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -4912,14 +4807,12 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -4948,28 +4841,24 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype}: `%~~%`(deftype, comptype) - -- wf_comptype: `%`(comptype) -- if ($expanddt(deftype) = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -4977,7 +4866,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool @@ -5005,13 +4893,10 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -5019,8 +4904,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -5028,51 +4911,39 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) - -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) - -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) - -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -5080,8 +4951,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -5089,8 +4958,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -5098,14 +4965,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) - -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -5113,22 +4977,16 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -5137,14 +4995,10 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- if (|`comptype'*`| = |`x'**`|) - -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} -- if (|`comptype'*`| = |`x*`|) + -- if (|`comptype'*`| = |`x'**`|) -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) @@ -5155,27 +5009,16 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -5183,15 +5026,10 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- if (|`comptype'*`| = |`typeuse'**`|) - -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} -- if (|`comptype'*`| = |`typeuse*`|) + -- if (|`comptype'*`| = |`typeuse'**`|) -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5201,17 +5039,10 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) @@ -5220,9 +5051,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) - -- wf_context: `%`(C) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) @@ -5232,26 +5060,17 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) @@ -5260,14 +5079,11 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) @@ -5277,16 +5093,10 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) - -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5294,76 +5104,48 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype)) @@ -5371,71 +5153,43 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) -- if (j < |typeuse*{typeuse <- `typeuse*`}|) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) - -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) - -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) - -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5443,38 +5197,27 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) - -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) - -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} @@ -5483,15 +5226,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) - -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5499,17 +5238,11 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5519,9 +5252,6 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- if (|`lct*`| = |`x*`|) @@ -5533,16 +5263,11 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) @@ -5551,8 +5276,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} @@ -5561,9 +5284,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5572,8 +5292,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5581,8 +5299,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5590,8 +5306,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5600,37 +5314,26 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5639,11 +5342,6 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) @@ -5656,9 +5354,6 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5667,7 +5362,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5676,17 +5370,11 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -5695,9 +5383,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5705,9 +5390,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -5717,41 +5399,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) - -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5759,18 +5426,11 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5779,9 +5439,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -5790,9 +5447,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -5801,16 +5455,12 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) @@ -5818,16 +5468,12 @@ relation Catch_ok: `%|-%:OK`(context, catch) def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) - -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) - -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) - -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) - -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -5836,7 +5482,6 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5852,41 +5497,25 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) @@ -5894,35 +5523,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5930,10 +5542,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5941,18 +5549,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} -- if ($proj_uN_0(l').0 < |C.LABELS_context|) @@ -5962,9 +5564,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -5972,19 +5571,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -5995,10 +5587,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -6009,32 +5597,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -6044,22 +5618,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) @@ -6069,12 +5633,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) @@ -6084,14 +5642,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -6104,11 +5654,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6116,20 +5661,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} @@ -6137,17 +5673,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref.null{C : context, ht : heaptype}: `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (|C.REFS_context| > 0) @@ -6156,39 +5686,24 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref.i31{C : context}: `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref.is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref.as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref.eq{C : context}: `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.TEST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6196,9 +5711,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.CAST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6206,27 +5718,16 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31.get{C : context, sx : sx}: `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} @@ -6234,11 +5735,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) @@ -6248,11 +5744,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.SET_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) @@ -6261,20 +5752,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) @@ -6282,20 +5765,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6304,10 +5779,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) @@ -6317,10 +5788,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6328,38 +5795,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array.set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array.len{C : context}: `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.LEN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array.fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) @@ -6369,10 +5820,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6381,10 +5828,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) @@ -6394,127 +5837,76 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local.get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local.set{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local.tee{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global.set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) @@ -6524,11 +5916,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6538,51 +5925,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem.drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(ELEM.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) @@ -6591,10 +5957,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) @@ -6603,19 +5965,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data.drop{C : context, x : idx}: `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DATA.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6623,10 +5978,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6634,10 +5985,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6645,10 +5992,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6656,10 +5999,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6667,10 +6006,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) @@ -6678,10 +6013,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6689,10 +6020,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6700,10 +6027,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6712,10 +6035,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6723,10 +6042,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6735,223 +6050,129 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`t*`|) - -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (|`init*`| = |`t*`|) -- if (|`init*`| = |`x_1*`|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} @@ -6960,10 +6181,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') - -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -6971,10 +6188,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) } @@ -6984,9 +6197,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6994,7 +6204,6 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7002,92 +6211,60 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.null{C : context, ht : heaptype}: `%|-%CONST`(C, REF.NULL_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: `%|-%CONST`(C, REF.I31_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.func{C : context, x : idx}: `%|-%CONST`(C, REF.FUNC_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_fixed{C : context, x : idx, n : n}: `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern.convert_any{C : context}: `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global.get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL.GET_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -7096,8 +6273,6 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7105,9 +6280,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) @@ -7116,9 +6288,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) @@ -7128,8 +6297,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7137,9 +6304,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) @@ -7149,8 +6313,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7158,9 +6320,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) @@ -7170,17 +6329,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7189,10 +6342,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} @@ -7203,15 +6352,10 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -7221,8 +6365,6 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7230,24 +6372,14 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -7258,8 +6390,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) @@ -7269,9 +6399,6 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) @@ -7280,8 +6407,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7289,45 +6414,30 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) @@ -7336,9 +6446,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7349,16 +6456,10 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } @@ -7371,13 +6472,10 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } @@ -7400,23 +6498,12 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) - -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) - -- wf_context: `%`(C) - -- wf_context: `%`(C') - -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) - -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) -- if (|`import*`| = |`xt_I*`|) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} @@ -7596,10 +6683,8 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7628,7 +6713,6 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -7648,28 +6732,23 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7677,7 +6756,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7685,7 +6763,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7693,12 +6770,10 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7727,19 +6802,15 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7790,61 +6861,49 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -7958,10 +7017,8 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) - -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7969,7 +7026,6 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -7977,7 +7033,6 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7985,103 +7040,72 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -8119,32 +7143,23 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] - -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] - -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8194,21 +7209,16 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -8216,9 +7226,6 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} @@ -8226,10 +7233,6 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8238,10 +7241,6 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8250,9 +7249,6 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -8261,9 +7257,6 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -8272,9 +7265,6 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -8284,9 +7274,6 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -8296,9 +7283,6 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -8306,9 +7290,6 @@ def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} @@ -8316,9 +7297,6 @@ def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8327,9 +7305,6 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8338,10 +7313,6 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8351,9 +7322,6 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -8361,9 +7329,6 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -8371,10 +7336,6 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) @@ -8382,10 +7343,6 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{Jnn : Jnn, M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} @@ -8394,10 +7351,6 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{Jnn : Jnn, M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} @@ -8427,213 +7380,146 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} @@ -8643,43 +7529,30 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8690,19 +7563,12 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} @@ -8711,36 +7577,23 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8756,37 +7609,15 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9193,7 +8024,6 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) - -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -9201,7 +8031,6 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -9387,87 +8216,71 @@ def $local(state : state, localidx : localidx) : val? def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) - -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f) - -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f) - -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) - -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') - -- wf_tableinst: `%`(tableinst') - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) @@ -9478,9 +8291,6 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') - -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) @@ -9492,16 +8302,12 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -9511,80 +8317,48 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.I31_NUM_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) - -- wf_store: `%`(s) - -- wf_exninst: `%`(exn) - -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.EXTERN_ref(addrref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) - -- wf_reftype: `%`(rt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -9594,23 +8368,16 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) - -- wf_store: `%`(s) - -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -9621,50 +8388,36 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) - -- wf_externtype: `%`(xt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -9699,83 +8452,11 @@ def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.is_null-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-true_0`{ref : ref, ht : heaptype}: - `%`([(ref : ref <: instr) REF.IS_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-null_0`{ref : ref, ht : heaptype}: - `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) - -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.eq-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true_0`{ref_1 : ref, ref_2 : ref}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- if (ref_1 = ref_2) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-null_1`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9783,96 +8464,66 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if ($proj_uN_0(l).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if ($proj_uN_0(l).0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) @@ -9881,491 +8532,296 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-addr`{val : val, l : labelidx}: + rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- ~ `Step_pure_before_br_on_null-addr`: `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-addr`{val : val, l : labelidx}: + rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instr: `%`(LOCAL.SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-false`{ref : ref}: + rule `ref.is_null-false`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.is_null-false`: `%`([(ref : ref <: instr) REF.IS_NULL_instr]) + -- if (ref =/= REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-addr`{ref : ref}: + rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) + -- if (ref =/= REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.eq-false`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(REF.I31_NUM_instr(i)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) -- if ($unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) -- if ($binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_uN: `%%`(128, `%`_uN(0)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if ($proj_num__0(i) =/= ?()) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) - -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) - -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) -- if ($proj_num__0(c_2) =/= ?()) -- if ($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)|) @@ -10374,77 +8830,46 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) @@ -10453,74 +8878,14 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_throw_ref-handler-next`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) - -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) - -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) @@ -10529,8 +8894,6 @@ relation `Step_read_before_table.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -10540,50 +8903,12 @@ relation `Step_read_before_table.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -10593,26 +8918,6 @@ relation `Step_read_before_table.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) @@ -10622,25 +8927,6 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) @@ -10649,8 +8935,6 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -10660,50 +8944,12 @@ relation `Step_read_before_memory.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -10713,26 +8959,6 @@ relation `Step_read_before_memory.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) @@ -10742,10 +8968,6 @@ relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -10754,9 +8976,6 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -10765,26 +8984,6 @@ relation `Step_read_before_array.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -10794,8 +8993,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -10803,8 +9000,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -10814,15 +9009,12 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -10830,8 +9022,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -10841,36 +9031,21 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -10878,8 +9053,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -10889,42 +9062,12 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.init_elem-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -10934,9 +9077,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -10944,8 +9084,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -10955,16 +9093,12 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -10972,8 +9106,6 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -10983,75 +9115,49 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if (a < |$funcinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) -- if (a < |$funcinst(z)|) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) @@ -11062,81 +9168,51 @@ relation Step_read: `%~>%`(config, instr*) rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if (a < |$funcinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) -- if (a < |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) @@ -11145,10 +9221,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) -- if (a < |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) @@ -11157,50 +9229,36 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr, x : idx, `val*` : val*, x : idx, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if (((($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0]) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) \/ ($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0])) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) @@ -11209,98 +9267,65 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0] : ref <: instr)]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) @@ -11308,8 +9333,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11318,78 +9344,53 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) @@ -11418,17 +9413,12 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) @@ -11436,18 +9426,12 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) @@ -11457,44 +9441,31 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -11502,8 +9473,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11511,16 +9483,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11528,22 +9491,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) @@ -11551,8 +9503,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11561,69 +9514,42 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) - -- wf_instr: `%`(REF.NULL_instr(($type(z, x) : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) - -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} @@ -11631,8 +9557,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -11640,43 +9564,29 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) -- if (a < |$structinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -11685,10 +9595,6 @@ relation Step_read: `%~>%`(config, instr*) rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) -- (if ($cunpack(zt) =/= ?()))^n{c <- `c*`} - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -11696,14 +9602,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11714,34 +9616,24 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) -- if (a < |$arrayinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11749,40 +9641,29 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- if (a < |$arrayinst(z)|) + -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -11790,8 +9671,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -11799,8 +9678,11 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11808,19 +9690,9 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if (a_2 < |$arrayinst(z)|) + -- if (a_1 < |$arrayinst(z)|) + -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -11829,18 +9701,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) @@ -11848,14 +9708,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11863,16 +9719,16 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- if ($proj_num__0(j) =/= ?()) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if ((($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11880,30 +9736,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- if (a < |$arrayinst(z)|) + -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11911,9 +9755,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -11921,7 +9762,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) @@ -11931,16 +9771,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($cunpack(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -11953,74 +9783,48 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) @@ -12028,35 +9832,25 @@ relation Step: `%~>%`(config, config) rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -12064,15 +9858,11 @@ relation Step: `%~>%`(config, config) rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -12080,16 +9870,12 @@ relation Step: `%~>%`(config, config) rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -12097,15 +9883,11 @@ relation Step: `%~>%`(config, config) rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) @@ -12113,42 +9895,29 @@ relation Step: `%~>%`(config, config) rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) - -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) - -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if ($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) + -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) @@ -12156,39 +9925,26 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -12197,9 +9953,6 @@ relation Step: `%~>%`(config, config) rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -12211,14 +9964,10 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } @@ -12228,8 +9977,6 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12241,7 +9988,6 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} - -- wf_uN: `%%`(32, x) -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) @@ -12252,8 +9998,6 @@ def $alloctypes(type*) : deftype* def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12265,8 +10009,6 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } @@ -12275,8 +10017,6 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12288,8 +10028,6 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } @@ -12298,8 +10036,6 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12311,8 +10047,6 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } @@ -12321,8 +10055,6 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12334,8 +10066,6 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } @@ -12344,8 +10074,6 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12357,8 +10085,6 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } @@ -12367,8 +10093,6 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12380,8 +10104,6 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } @@ -12390,8 +10112,6 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12403,8 +10123,6 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } @@ -12413,19 +10131,14 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -12436,24 +10149,6 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) - -- wf_store: `%`(s_1) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_3) - -- wf_store: `%`(s_4) - -- wf_store: `%`(s_5) - -- wf_store: `%`(s_6) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} - -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} @@ -12485,10 +10180,6 @@ def $rundata_(dataidx : dataidx, data : data) : instr* def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) - -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -12496,13 +10187,8 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] - -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(TABLE.INIT_instr(y, x)) - -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12513,11 +10199,6 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) - -- wf_state: `%`(z') - -- wf_val: `%`(val) - -- (wf_val: `%`(val'))*{val' <- `val'*`} - -- wf_state: `%`(`%;%`_state(s, f)) - -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- where `%;%`_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, val) {a, s'} @@ -12528,24 +10209,6 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) - -- wf_state: `%`(z) - -- wf_state: `%`(z') - -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} - -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} - -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} - -- (wf_start: `%`(START_start(x)))?{x <- `x?`} - -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} - -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} - -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} @@ -12568,8 +10231,6 @@ def $instantiate(store : store, module : module, externaddr*) : config def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -14666,7 +12327,6 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) } @@ -14676,8 +12336,6 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I) - -- wf_idctxt: `%`(I) - -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) @@ -16563,27 +14221,16 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32.add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global.get{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -16593,23 +14240,14 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -16648,8 +14286,6 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} } diff --git a/spectec/test-middlend/specification.exp/09-sub-expansion.il b/spectec/test-middlend/specification.exp/10-sub-expansion.il similarity index 81% rename from spectec/test-middlend/specification.exp/09-sub-expansion.il rename to spectec/test-middlend/specification.exp/10-sub-expansion.il index ac60af0b04..20619ad224 100644 --- a/spectec/test-middlend/specification.exp/09-sub-expansion.il +++ b/spectec/test-middlend/specification.exp/10-sub-expansion.il @@ -317,19 +317,16 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -383,29 +380,18 @@ def $utf8(char*) : byte* def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) -- if ($proj_char_0(ch).0 < 128) -- where b = `%`_byte($proj_char_0(ch).0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -599,7 +585,6 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -610,7 +595,6 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -619,55 +603,46 @@ def $free_list(free*) : free def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -1044,73 +1019,61 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1447,10 +1410,8 @@ def $unpack(storagetype : storagetype) : valtype def $unpack(I32_storagetype) = I32_valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I8_storagetype) = I32_valtype - -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I16_storagetype) = I32_valtype - -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1513,10 +1474,8 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1610,9 +1569,6 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } @@ -1658,7 +1614,6 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1676,7 +1631,6 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(REF_reftype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1703,32 +1657,25 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1751,97 +1698,79 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(_DEF_typeuse(rectype, n)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) - -- wf_externtype: `%`(FUNC_externtype(($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4447,13 +4354,10 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4484,7 +4388,6 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4551,13 +4454,10 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4566,13 +4466,10 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4595,7 +4492,6 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4606,10 +4502,8 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4665,7 +4559,6 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] - -- wf_free: `%`(free) -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } @@ -4909,7 +4802,6 @@ def $free_datamode(datamode : datamode) : free def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -4922,10 +4814,8 @@ def $free_elemmode(elemmode : elemmode) : free def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -5079,14 +4969,12 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5115,28 +5003,24 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype}: `%~~%`(deftype, comptype) - -- wf_comptype: `%`(comptype) -- if ($expanddt(deftype) = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5144,7 +5028,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool @@ -5172,13 +5055,10 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -5186,8 +5066,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -5195,51 +5073,39 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) - -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) - -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) - -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -5247,8 +5113,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -5256,8 +5120,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -5265,14 +5127,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) - -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -5280,22 +5139,16 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -5304,14 +5157,10 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- if (|`comptype'*`| = |`x'**`|) - -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} -- if (|`comptype'*`| = |`x*`|) + -- if (|`comptype'*`| = |`x'**`|) -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) @@ -5322,27 +5171,16 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -5350,15 +5188,10 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- if (|`comptype'*`| = |`typeuse'**`|) - -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} -- if (|`comptype'*`| = |`typeuse*`|) + -- if (|`comptype'*`| = |`typeuse'**`|) -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5368,17 +5201,10 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) @@ -5387,9 +5213,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) - -- wf_context: `%`(C) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) @@ -5399,26 +5222,17 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) @@ -5427,14 +5241,11 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) @@ -5444,16 +5255,10 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) - -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5461,76 +5266,48 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype)) @@ -5538,71 +5315,43 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) -- if (j < |typeuse*{typeuse <- `typeuse*`}|) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) - -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) - -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) - -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5610,38 +5359,27 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) - -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) - -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} @@ -5650,15 +5388,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) - -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5666,17 +5400,11 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5686,9 +5414,6 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- if (|`lct*`| = |`x*`|) @@ -5700,16 +5425,11 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) @@ -5718,8 +5438,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} @@ -5728,9 +5446,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5739,8 +5454,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5748,8 +5461,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5757,8 +5468,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5767,37 +5476,26 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5806,11 +5504,6 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) @@ -5823,9 +5516,6 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5834,7 +5524,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5843,17 +5532,11 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -5862,9 +5545,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5872,9 +5552,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -5884,41 +5561,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) - -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5926,18 +5588,11 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5946,9 +5601,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -5957,9 +5609,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -5968,16 +5617,12 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) @@ -5985,22 +5630,16 @@ relation Catch_ok: `%|-%:OK`(context, catch) def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I32_valtype) = ?(CONST_val((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_val: `%`(CONST_val((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I64_valtype) = ?(CONST_val((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, `%`_uN(0)))) - -- wf_val: `%`(CONST_val((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F32_valtype) = ?(CONST_val((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $fzero($size((F32_Fnn : Fnn <: numtype)))))) - -- wf_val: `%`(CONST_val((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $fzero($size((F32_Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F64_valtype) = ?(CONST_val((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $fzero($size((F64_Fnn : Fnn <: numtype)))))) - -- wf_val: `%`(CONST_val((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $fzero($size((F64_Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(V128_valtype) = ?(VCONST_val(V128_vectype, `%`_vec_(0))) - -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) - -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -6009,7 +5648,6 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6025,41 +5663,25 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) @@ -6067,35 +5689,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6103,10 +5708,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6114,18 +5715,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} -- if ($proj_uN_0(l').0 < |C.LABELS_context|) @@ -6135,9 +5730,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -6145,19 +5737,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -6168,10 +5753,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -6182,32 +5763,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -6217,22 +5784,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) @@ -6242,12 +5799,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) @@ -6257,14 +5808,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -6277,11 +5820,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6289,20 +5827,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} @@ -6310,17 +5839,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref.null{C : context, ht : heaptype}: `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (|C.REFS_context| > 0) @@ -6329,39 +5852,24 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref.i31{C : context}: `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref.is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref.as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref.eq{C : context}: `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.TEST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6369,9 +5877,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.CAST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6379,27 +5884,16 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31.get{C : context, sx : sx}: `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} @@ -6407,11 +5901,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) @@ -6421,11 +5910,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.SET_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) @@ -6434,20 +5918,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) @@ -6455,20 +5931,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6477,10 +5945,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) @@ -6490,10 +5954,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6501,38 +5961,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array.set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array.len{C : context}: `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.LEN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array.fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) @@ -6542,10 +5986,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6554,10 +5994,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) @@ -6567,127 +6003,76 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local.get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local.set{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local.tee{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global.set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) @@ -6697,11 +6082,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6711,51 +6091,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem.drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(ELEM.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) @@ -6764,10 +6123,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) @@ -6776,19 +6131,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data.drop{C : context, x : idx}: `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DATA.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6796,10 +6144,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6807,10 +6151,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6818,10 +6158,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6829,10 +6165,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6840,10 +6172,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) @@ -6851,10 +6179,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6862,10 +6186,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6873,10 +6193,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6885,10 +6201,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6896,10 +6208,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6908,223 +6216,129 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`t*`|) - -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (|`init*`| = |`t*`|) -- if (|`init*`| = |`x_1*`|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} @@ -7133,10 +6347,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') - -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -7144,10 +6354,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) } @@ -7157,9 +6363,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7167,7 +6370,6 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7175,92 +6377,60 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.null{C : context, ht : heaptype}: `%|-%CONST`(C, REF.NULL_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: `%|-%CONST`(C, REF.I31_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.func{C : context, x : idx}: `%|-%CONST`(C, REF.FUNC_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_fixed{C : context, x : idx, n : n}: `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern.convert_any{C : context}: `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global.get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL.GET_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -7269,8 +6439,6 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7278,9 +6446,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) @@ -7289,9 +6454,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) @@ -7301,8 +6463,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7310,9 +6470,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) @@ -7322,8 +6479,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7331,9 +6486,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) @@ -7343,17 +6495,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7362,10 +6508,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} @@ -7376,15 +6518,10 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -7394,8 +6531,6 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7403,24 +6538,14 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -7431,8 +6556,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) @@ -7442,9 +6565,6 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) @@ -7453,8 +6573,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7462,45 +6580,30 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) @@ -7509,9 +6612,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7522,16 +6622,10 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } @@ -7544,13 +6638,10 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } @@ -7573,23 +6664,12 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) - -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) - -- wf_context: `%`(C) - -- wf_context: `%`(C') - -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) - -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) -- if (|`import*`| = |`xt_I*`|) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} @@ -7779,22 +6859,16 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F32_lanetype) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $fzero($size((F32_Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $fzero($size((F32_Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F64_lanetype) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $fzero($size((F64_Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $fzero($size((F64_Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7823,7 +6897,6 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -7843,28 +6916,23 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7872,7 +6940,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7880,7 +6947,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7888,12 +6954,10 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7922,19 +6986,15 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7985,61 +7045,49 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -8153,22 +7201,16 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) - -- wf_lane_: `%%`((I32_numtype : numtype <: lanetype), mk_lane__0_lane_(I32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) - -- wf_lane_: `%%`((I64_numtype : numtype <: lanetype), mk_lane__0_lane_(I64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) - -- wf_lane_: `%%`((F32_numtype : numtype <: lanetype), mk_lane__0_lane_(F32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) - -- wf_lane_: `%%`((F64_numtype : numtype <: lanetype), mk_lane__0_lane_(F64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack((I8_packtype : packtype <: lanetype))), $psize(I8_packtype), c)) - -- wf_lane_: `%%`((I8_packtype : packtype <: lanetype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack((I8_packtype : packtype <: lanetype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack((I16_packtype : packtype <: lanetype))), $psize(I16_packtype), c)) - -- wf_lane_: `%%`((I16_packtype : packtype <: lanetype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack((I16_packtype : packtype <: lanetype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -8184,10 +7226,8 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack((I8_packtype : packtype <: lanetype))), $psize(I8_packtype), c)) - -- wf_lit_: `%%`((I8_packtype : packtype <: storagetype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack((I8_packtype : packtype <: lanetype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack((I16_packtype : packtype <: lanetype))), $psize(I16_packtype), c)) - -- wf_lit_: `%%`((I16_packtype : packtype <: storagetype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack((I16_packtype : packtype <: lanetype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -8201,10 +7241,8 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack((I8_packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((I8_packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack((I8_packtype : packtype <: lanetype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack((I16_packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((I16_packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack((I16_packtype : packtype <: lanetype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -8220,196 +7258,134 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack((I8_packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`((!($cunpack((I8_packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack((I8_packtype : packtype <: lanetype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack((I16_packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`((!($cunpack((I16_packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack((I16_packtype : packtype <: lanetype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn((I32_Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $iclz_($sizenn((I32_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn((I64_Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $iclz_($sizenn((I64_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn((I32_Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ictz_($sizenn((I32_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn((I64_Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ictz_($sizenn((I64_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn((I32_Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn((I32_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn((I64_Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn((I64_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn((I32_Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $iextend_($sizenn((I32_Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn((I64_Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $iextend_($sizenn((I64_Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((F32_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((F64_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((F32_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((F64_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((F32_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((F64_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((F32_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((F64_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((F32_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((F64_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((F32_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((F64_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((F32_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((F64_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $iadd_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $iadd_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $isub_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $isub_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $imul_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $imul_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $iand_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $iand_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ior_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ior_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ixor_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ixor_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn((I32_Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ishl_($sizenn((I32_Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn((I64_Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ishl_($sizenn((I64_Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ishr_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ishr_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $irotl_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $irotl_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $irotr_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $irotr_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -8473,119 +7449,83 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $extend__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $extend__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $extend__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $extend__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $wrap__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $wrap__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $wrap__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $wrap__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $convert__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $convert__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $convert__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $convert__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__((I32_Inn : addrtype <: numtype), (F32_Fnn : Fnn <: numtype), mk_num__0_num_(I32_Inn, i_1))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, i_1)) -- if ($size((I32_Inn : addrtype <: numtype)) = $size((F32_Fnn : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__((I64_Inn : addrtype <: numtype), (F32_Fnn : Fnn <: numtype), mk_num__0_num_(I64_Inn, i_1))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, i_1)) -- if ($size((I64_Inn : addrtype <: numtype)) = $size((F32_Fnn : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__((I32_Inn : addrtype <: numtype), (F64_Fnn : Fnn <: numtype), mk_num__0_num_(I32_Inn, i_1))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, i_1)) -- if ($size((I32_Inn : addrtype <: numtype)) = $size((F64_Fnn : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__((I64_Inn : addrtype <: numtype), (F64_Fnn : Fnn <: numtype), mk_num__0_num_(I64_Inn, i_1))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, i_1)) -- if ($size((I64_Inn : addrtype <: numtype)) = $size((F64_Fnn : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__((F32_Fnn : Fnn <: numtype), (I32_Inn : addrtype <: numtype), mk_num__1_num_(F32_Fnn, f_1))] - -- wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size((F32_Fnn : Fnn <: numtype)) = $size((I32_Inn : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__((F64_Fnn : Fnn <: numtype), (I32_Inn : addrtype <: numtype), mk_num__1_num_(F64_Fnn, f_1))] - -- wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size((F64_Fnn : Fnn <: numtype)) = $size((I32_Inn : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__((F32_Fnn : Fnn <: numtype), (I64_Inn : addrtype <: numtype), mk_num__1_num_(F32_Fnn, f_1))] - -- wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size((F32_Fnn : Fnn <: numtype)) = $size((I64_Inn : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__((F64_Fnn : Fnn <: numtype), (I64_Inn : addrtype <: numtype), mk_num__1_num_(F64_Fnn, f_1))] - -- wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size((F64_Fnn : Fnn <: numtype)) = $size((I64_Inn : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8803,42 +7743,28 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -8846,16 +7772,10 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} @@ -8863,37 +7783,21 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8902,37 +7806,21 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8941,33 +7829,21 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -8976,17 +7852,11 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -8995,36 +7865,24 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -9034,18 +7892,12 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -9055,30 +7907,18 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -9086,16 +7926,10 @@ def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} @@ -9103,33 +7937,21 @@ def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -9138,33 +7960,21 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -9173,20 +7983,12 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn((F32_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} -- if ($isize(Inn) = $fsize(F32_Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn((F64_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -9196,30 +7998,18 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -9227,30 +8017,18 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -9258,34 +8036,18 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) @@ -9293,37 +8055,21 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} @@ -9332,37 +8078,21 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} @@ -9392,741 +8122,520 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I32_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I64_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I8_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I16_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} @@ -10136,70 +8645,48 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10207,13 +8694,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10221,13 +8701,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10235,13 +8708,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10249,13 +8715,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10263,13 +8722,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10277,13 +8729,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10291,13 +8736,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10305,13 +8743,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10319,13 +8750,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10333,13 +8757,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10347,13 +8764,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10361,13 +8771,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10375,13 +8778,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10389,13 +8785,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10403,13 +8792,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10420,169 +8802,87 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} @@ -10591,96 +8891,53 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10688,13 +8945,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10702,13 +8952,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10716,13 +8959,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10730,13 +8966,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10744,13 +8973,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10758,13 +8980,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10772,13 +8987,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10786,13 +8994,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10800,13 +9001,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10814,13 +9008,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10828,13 +9015,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10842,13 +9022,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10856,13 +9029,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10870,13 +9036,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10884,13 +9043,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10906,307 +9058,105 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11214,16 +9164,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11231,16 +9171,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11248,16 +9178,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11265,16 +9185,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11282,16 +9192,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11299,16 +9199,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11316,16 +9206,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11333,16 +9213,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11350,16 +9220,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11367,16 +9227,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11384,16 +9234,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11401,16 +9241,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11418,16 +9248,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11435,16 +9255,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11452,16 +9262,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11880,10 +9680,8 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{val : val}(I32_storagetype, val) = (val : val <: fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)) - -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)) - -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -12029,10 +9827,8 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{numtype : numtype, num_ : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -12218,87 +10014,71 @@ def $local(state : state, localidx : localidx) : val? def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) - -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f) - -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f) - -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) - -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') - -- wf_tableinst: `%`(tableinst') - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) @@ -12309,9 +10089,6 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') - -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) @@ -12323,16 +10100,12 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -12342,80 +10115,48 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.I31_NUM_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) - -- wf_store: `%`(s) - -- wf_exninst: `%`(exn) - -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.EXTERN_ref(addrref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) - -- wf_reftype: `%`(rt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -12425,23 +10166,16 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) - -- wf_store: `%`(s) - -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -12452,50 +10186,36 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) - -- wf_externtype: `%`(xt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -12530,83 +10250,11 @@ def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.is_null-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-true_0`{ref : ref, ht : heaptype}: - `%`([(ref : ref <: instr) REF.IS_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-null_0`{ref : ref, ht : heaptype}: - `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) - -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.eq-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true_0`{ref_1 : ref, ref_2 : ref}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- if (ref_1 = ref_2) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-null_1`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12614,96 +10262,66 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if ($proj_uN_0(l).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if ($proj_uN_0(l).0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) @@ -12712,491 +10330,296 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-addr`{val : val, l : labelidx}: + rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- ~ `Step_pure_before_br_on_null-addr`: `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-addr`{val : val, l : labelidx}: + rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instr: `%`(LOCAL.SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-false`{ref : ref}: + rule `ref.is_null-false`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.is_null-false`: `%`([(ref : ref <: instr) REF.IS_NULL_instr]) + -- if (ref =/= REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-addr`{ref : ref}: + rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) + -- if (ref =/= REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.eq-false`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(REF.I31_NUM_instr(i)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) -- if ($unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) -- if ($binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_uN: `%%`(128, `%`_uN(0)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if ($proj_num__0(i) =/= ?()) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) - -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) - -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) -- if ($proj_num__0(c_2) =/= ?()) -- if ($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)|) @@ -13205,77 +10628,46 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) @@ -13284,74 +10676,14 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_throw_ref-handler-next`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) - -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) - -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) @@ -13360,8 +10692,6 @@ relation `Step_read_before_table.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -13371,50 +10701,12 @@ relation `Step_read_before_table.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -13424,26 +10716,6 @@ relation `Step_read_before_table.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) @@ -13453,25 +10725,6 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) @@ -13480,8 +10733,6 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -13491,50 +10742,12 @@ relation `Step_read_before_memory.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -13544,26 +10757,6 @@ relation `Step_read_before_memory.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) @@ -13573,10 +10766,6 @@ relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -13585,9 +10774,6 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -13596,26 +10782,6 @@ relation `Step_read_before_array.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -13625,8 +10791,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -13634,8 +10798,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -13645,15 +10807,12 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -13661,8 +10820,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -13672,36 +10829,21 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -13709,8 +10851,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -13720,42 +10860,12 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.init_elem-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -13765,9 +10875,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -13775,8 +10882,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -13786,16 +10891,12 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -13803,8 +10904,6 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -13814,75 +10913,49 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if (a < |$funcinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) -- if (a < |$funcinst(z)|) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) @@ -13893,81 +10966,51 @@ relation Step_read: `%~>%`(config, instr*) rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if (a < |$funcinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) -- if (a < |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) @@ -13976,10 +11019,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) -- if (a < |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) @@ -13988,50 +11027,36 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr, x : idx, `val*` : val*, x : idx, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if (((($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0]) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) \/ ($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0])) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) @@ -14040,98 +11065,65 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0] : ref <: instr)]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) @@ -14139,8 +11131,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14149,78 +11142,53 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) @@ -14249,17 +11211,12 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) @@ -14267,18 +11224,12 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) @@ -14288,44 +11239,31 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -14333,8 +11271,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14342,16 +11281,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14359,22 +11289,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) @@ -14382,8 +11301,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14392,69 +11312,42 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) - -- wf_instr: `%`(REF.NULL_instr(($type(z, x) : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) - -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} @@ -14462,8 +11355,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -14471,43 +11362,29 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) -- if (a < |$structinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -14516,10 +11393,6 @@ relation Step_read: `%~>%`(config, instr*) rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) -- (if ($cunpack(zt) =/= ?()))^n{c <- `c*`} - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -14527,14 +11400,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -14545,34 +11414,24 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) -- if (a < |$arrayinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -14580,40 +11439,29 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- if (a < |$arrayinst(z)|) + -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -14621,8 +11469,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -14630,8 +11476,11 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14639,19 +11488,9 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if (a_2 < |$arrayinst(z)|) + -- if (a_1 < |$arrayinst(z)|) + -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -14660,18 +11499,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) @@ -14679,14 +11506,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -14694,16 +11517,16 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- if ($proj_num__0(j) =/= ?()) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if ((($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14711,30 +11534,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- if (a < |$arrayinst(z)|) + -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -14742,9 +11553,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -14752,7 +11560,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) @@ -14762,16 +11569,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($cunpack(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -14784,74 +11581,48 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) @@ -14859,35 +11630,25 @@ relation Step: `%~>%`(config, config) rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -14895,15 +11656,11 @@ relation Step: `%~>%`(config, config) rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -14911,16 +11668,12 @@ relation Step: `%~>%`(config, config) rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -14928,15 +11681,11 @@ relation Step: `%~>%`(config, config) rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) @@ -14944,42 +11693,29 @@ relation Step: `%~>%`(config, config) rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) - -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) - -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if ($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) + -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) @@ -14987,39 +11723,26 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -15028,9 +11751,6 @@ relation Step: `%~>%`(config, config) rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -15042,14 +11762,10 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } @@ -15059,8 +11775,6 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15072,7 +11786,6 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} - -- wf_uN: `%%`(32, x) -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) @@ -15083,8 +11796,6 @@ def $alloctypes(type*) : deftype* def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15096,8 +11807,6 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } @@ -15106,8 +11815,6 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15119,8 +11826,6 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } @@ -15129,8 +11834,6 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15142,8 +11845,6 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } @@ -15152,8 +11853,6 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15165,8 +11864,6 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } @@ -15175,8 +11872,6 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15188,8 +11883,6 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } @@ -15198,8 +11891,6 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15211,8 +11902,6 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } @@ -15221,8 +11910,6 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15234,8 +11921,6 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } @@ -15244,19 +11929,14 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -15267,24 +11947,6 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) - -- wf_store: `%`(s_1) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_3) - -- wf_store: `%`(s_4) - -- wf_store: `%`(s_5) - -- wf_store: `%`(s_6) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} - -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} @@ -15316,10 +11978,6 @@ def $rundata_(dataidx : dataidx, data : data) : instr* def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) - -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -15327,13 +11985,8 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] - -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(TABLE.INIT_instr(y, x)) - -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -15344,11 +11997,6 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) - -- wf_state: `%`(z') - -- wf_val: `%`(val) - -- (wf_val: `%`(val'))*{val' <- `val'*`} - -- wf_state: `%`(`%;%`_state(s, f)) - -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- where `%;%`_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, val) {a, s'} @@ -15359,24 +12007,6 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) - -- wf_state: `%`(z) - -- wf_state: `%`(z') - -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} - -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} - -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} - -- (wf_start: `%`(START_start(x)))?{x <- `x?`} - -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} - -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} - -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} @@ -15399,8 +12029,6 @@ def $instantiate(store : store, module : module, externaddr*) : config def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -17497,7 +14125,6 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) } @@ -17507,8 +14134,6 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I) - -- wf_idctxt: `%`(I) - -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) @@ -19394,27 +16019,16 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32.add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global.get{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -19424,23 +16038,14 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -19479,8 +16084,6 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} } diff --git a/spectec/test-middlend/specification.exp/10-sub.il b/spectec/test-middlend/specification.exp/11-sub.il similarity index 81% rename from spectec/test-middlend/specification.exp/10-sub.il rename to spectec/test-middlend/specification.exp/11-sub.il index 850b12d269..215b0475ce 100644 --- a/spectec/test-middlend/specification.exp/10-sub.il +++ b/spectec/test-middlend/specification.exp/11-sub.il @@ -317,19 +317,16 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -383,29 +380,18 @@ def $utf8(char*) : byte* def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) -- if ($proj_char_0(ch).0 < 128) -- where b = `%`_byte($proj_char_0(ch).0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -599,7 +585,6 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -610,7 +595,6 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -619,55 +603,46 @@ def $free_list(free*) : free def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -833,13 +808,6 @@ def $valtype_addrtype(addrtype) : valtype def $valtype_addrtype(I32_addrtype) = I32_valtype def $valtype_addrtype(I64_addrtype) = I64_valtype -def $storagetype_consttype(consttype) : storagetype - def $storagetype_consttype(I32_consttype) = I32_storagetype - def $storagetype_consttype(I64_consttype) = I64_storagetype - def $storagetype_consttype(F32_consttype) = F32_storagetype - def $storagetype_consttype(F64_consttype) = F64_storagetype - def $storagetype_consttype(V128_consttype) = V128_storagetype - def $storagetype_numtype(numtype) : storagetype def $storagetype_numtype(I32_numtype) = I32_storagetype def $storagetype_numtype(I64_numtype) = I64_storagetype @@ -1132,73 +1100,61 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1567,10 +1523,8 @@ def $unpack(storagetype : storagetype) : valtype def $unpack(I32_storagetype) = I32_valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I8_storagetype) = I32_valtype - -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I16_storagetype) = I32_valtype - -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1633,10 +1587,8 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1730,9 +1682,6 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } @@ -1778,7 +1727,6 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1796,7 +1744,6 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $valtype_reftype($subst_reftype(REF_reftype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1823,32 +1770,25 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1871,97 +1811,79 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(_DEF_typeuse(rectype, n)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4588,13 +4488,10 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4625,7 +4522,6 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4692,13 +4588,10 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4707,13 +4600,10 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4736,7 +4626,6 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4747,10 +4636,8 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4806,7 +4693,6 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] - -- wf_free: `%`(free) -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } @@ -5050,7 +4936,6 @@ def $free_datamode(datamode : datamode) : free def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -5063,10 +4948,8 @@ def $free_elemmode(elemmode : elemmode) : free def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -5220,14 +5103,12 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5256,28 +5137,24 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype}: `%~~%`(deftype, comptype) - -- wf_comptype: `%`(comptype) -- if ($expanddt(deftype) = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5285,7 +5162,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool @@ -5313,13 +5189,10 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, $heaptype_absheaptype(absheaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, $heaptype_typeuse(typeuse)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -5327,8 +5200,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -5336,51 +5207,39 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, $valtype_numtype(numtype)) - -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, $valtype_vectype(vectype)) - -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, $valtype_reftype(reftype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, $typeuse_deftype(deftype)) - -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -5388,8 +5247,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -5397,8 +5254,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -5406,14 +5261,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, $storagetype_valtype(valtype)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, $storagetype_packtype(packtype)) - -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -5421,22 +5273,16 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -5445,14 +5291,10 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- if (|`comptype'*`| = |`x'**`|) - -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} -- if (|`comptype'*`| = |`x*`|) + -- if (|`comptype'*`| = |`x'**`|) -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) @@ -5463,27 +5305,16 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -5491,15 +5322,10 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- if (|`comptype'*`| = |`typeuse'**`|) - -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} -- if (|`comptype'*`| = |`typeuse*`|) + -- if (|`comptype'*`| = |`typeuse'**`|) -- (if ($unrollht(C, $heaptype_typeuse(typeuse)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5509,17 +5335,10 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) @@ -5528,9 +5347,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) - -- wf_context: `%`(C) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) @@ -5540,26 +5356,17 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) @@ -5568,14 +5375,11 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) @@ -5585,16 +5389,10 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) - -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5602,76 +5400,48 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, $heaptype_deftype(deftype), STRUCT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, $heaptype_deftype(deftype), ARRAY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, $heaptype_deftype(deftype), FUNC_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) @@ -5679,71 +5449,43 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[j])) -- if (j < |typeuse*{typeuse <- `typeuse*`}|) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) - -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) - -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) - -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5751,38 +5493,27 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) - -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) - -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} @@ -5791,15 +5522,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) - -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5807,17 +5534,11 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5827,9 +5548,6 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- if (|`lct*`| = |`x*`|) @@ -5841,16 +5559,11 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`($typeuse_deftype(deftype), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) @@ -5859,8 +5572,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} @@ -5869,9 +5580,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5880,8 +5588,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5889,8 +5595,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5898,8 +5602,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5908,37 +5610,26 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5947,11 +5638,6 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) @@ -5964,9 +5650,6 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5975,7 +5658,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5984,17 +5666,11 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -6003,9 +5679,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -6013,9 +5686,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -6025,41 +5695,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6067,18 +5722,11 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6087,9 +5735,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -6098,9 +5743,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -6109,16 +5751,12 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) @@ -6126,22 +5764,16 @@ relation Catch_ok: `%|-%:OK`(context, catch) def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I32_valtype) = ?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I64_valtype) = ?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) - -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F32_valtype) = ?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F64_valtype) = ?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(V128_valtype) = ?(VCONST_val(V128_vectype, `%`_vec_(0))) - -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) - -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -6150,7 +5782,6 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6166,41 +5797,25 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = $valtype_numtype(numtype)) \/ (t' = $valtype_vectype(vectype))) @@ -6208,35 +5823,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6244,10 +5842,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6255,18 +5849,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} -- if ($proj_uN_0(l').0 < |C.LABELS_context|) @@ -6276,9 +5864,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -6286,19 +5871,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -6309,10 +5887,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -6323,32 +5897,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -6358,22 +5918,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) @@ -6383,12 +5933,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) @@ -6398,14 +5942,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -6418,11 +5954,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6430,20 +5961,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} @@ -6451,17 +5973,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref.null{C : context, ht : heaptype}: `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (|C.REFS_context| > 0) @@ -6470,39 +5986,24 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref.i31{C : context}: `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref.is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref.as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref.eq{C : context}: `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.TEST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6510,9 +6011,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.CAST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6520,27 +6018,16 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31.get{C : context, sx : sx}: `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} @@ -6548,11 +6035,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) @@ -6562,11 +6044,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.SET_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) @@ -6575,20 +6052,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) @@ -6596,20 +6065,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6618,10 +6079,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) @@ -6631,10 +6088,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6642,38 +6095,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array.set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array.len{C : context}: `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.LEN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array.fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) @@ -6683,10 +6120,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6695,10 +6128,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) @@ -6708,127 +6137,76 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local.get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local.set{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local.tee{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global.set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([I32_valtype]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) @@ -6838,11 +6216,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6852,51 +6225,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem.drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(ELEM.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) @@ -6905,10 +6257,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) @@ -6917,19 +6265,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data.drop{C : context, x : idx}: `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DATA.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6937,10 +6278,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6948,10 +6285,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6959,10 +6292,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6970,10 +6299,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6981,10 +6306,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) @@ -6992,10 +6313,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -7003,10 +6320,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -7014,10 +6327,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -7026,10 +6335,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -7037,10 +6342,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -7049,223 +6350,129 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`t*`|) - -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (|`init*`| = |`t*`|) -- if (|`init*`| = |`x_1*`|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} @@ -7274,10 +6481,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') - -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -7285,10 +6488,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) } @@ -7298,9 +6497,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7308,7 +6504,6 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7316,92 +6511,60 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.null{C : context, ht : heaptype}: `%|-%CONST`(C, REF.NULL_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: `%|-%CONST`(C, REF.I31_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.func{C : context, x : idx}: `%|-%CONST`(C, REF.FUNC_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_fixed{C : context, x : idx, n : n}: `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern.convert_any{C : context}: `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global.get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL.GET_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr($numtype_addrtype(Inn), binop)) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr($numtype_addrtype(Inn), binop)) - -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, ADD_binop_Inn)) - -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, SUB_binop_Inn)) - -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -7410,8 +6573,6 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7419,9 +6580,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) @@ -7430,9 +6588,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) @@ -7442,8 +6597,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7451,9 +6604,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) @@ -7463,8 +6613,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7472,9 +6620,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(rt)) @@ -7484,17 +6629,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7503,10 +6642,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} @@ -7517,15 +6652,10 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) @@ -7535,8 +6665,6 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7544,24 +6672,14 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -7572,8 +6690,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(elemtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) @@ -7583,9 +6699,6 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) @@ -7594,8 +6707,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7603,45 +6714,30 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) @@ -7650,9 +6746,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7663,16 +6756,10 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } @@ -7685,13 +6772,10 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } @@ -7714,23 +6798,12 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) - -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) - -- wf_context: `%`(C) - -- wf_context: `%`(C') - -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) - -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) -- if (|`import*`| = |`xt_I*`|) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} @@ -7920,22 +6993,16 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7964,7 +7031,6 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -7984,28 +7050,23 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -8013,7 +7074,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8021,7 +7081,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -8029,12 +7088,10 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8063,19 +7120,15 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8126,61 +7179,49 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -8294,22 +7335,16 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) - -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) - -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -8325,10 +7360,8 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) - -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) - -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -8342,10 +7375,8 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) - -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) - -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -8361,196 +7392,134 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) - -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) - -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -8614,119 +7583,83 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8944,42 +7877,28 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -8987,16 +7906,10 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} @@ -9004,37 +7917,21 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -9043,37 +7940,21 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -9082,33 +7963,21 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -9117,17 +7986,11 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -9136,36 +7999,24 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -9175,18 +8026,12 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -9196,30 +8041,18 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -9227,16 +8060,10 @@ def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} @@ -9244,33 +8071,21 @@ def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -9279,33 +8094,21 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -9314,20 +8117,12 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} -- if ($isize(Inn) = $fsize(F32_Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -9337,30 +8132,18 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -9368,30 +8151,18 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -9399,34 +8170,18 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) @@ -9434,37 +8189,21 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} @@ -9473,37 +8212,21 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} @@ -9533,741 +8256,520 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I32_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I64_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I8_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I16_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} @@ -10277,70 +8779,48 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10348,13 +8828,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10362,13 +8835,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10376,13 +8842,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10390,13 +8849,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10404,13 +8856,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10418,13 +8863,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10432,13 +8870,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10446,13 +8877,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10460,13 +8884,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10474,13 +8891,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10488,13 +8898,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10502,13 +8905,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10516,13 +8912,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10530,13 +8919,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10544,13 +8926,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10561,169 +8936,87 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} @@ -10732,96 +9025,53 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10829,13 +9079,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10843,13 +9086,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10857,13 +9093,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10871,13 +9100,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10885,13 +9107,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10899,13 +9114,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10913,13 +9121,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10927,13 +9128,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10941,13 +9135,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10955,13 +9142,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10969,13 +9149,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10983,13 +9156,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10997,13 +9163,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -11011,13 +9170,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -11025,13 +9177,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -11047,307 +9192,105 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11355,16 +9298,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11372,16 +9305,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11389,16 +9312,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11406,16 +9319,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11423,16 +9326,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11440,16 +9333,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11457,16 +9340,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11474,16 +9347,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11491,16 +9354,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11508,16 +9361,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11525,16 +9368,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11542,16 +9375,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11559,16 +9382,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11576,16 +9389,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11593,16 +9396,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -12068,10 +9861,8 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{val : val}(I32_storagetype, val) = $fieldval_val(val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)) - -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)) - -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -12217,10 +10008,8 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{numtype : numtype, num_ : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -12406,87 +10195,71 @@ def $local(state : state, localidx : localidx) : val? def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) - -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f) - -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f) - -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) - -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') - -- wf_tableinst: `%`(tableinst') - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) @@ -12497,9 +10270,6 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') - -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) @@ -12511,16 +10281,12 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -12530,80 +10296,48 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.I31_NUM_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) - -- wf_store: `%`(s) - -- wf_exninst: `%`(exn) - -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.EXTERN_ref(addrref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, $ref_addrref(addrref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) - -- wf_reftype: `%`(rt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -12613,23 +10347,16 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, $val_num(num), $valtype_numtype(nt)) - -- wf_store: `%`(s) - -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, $val_vec(vec), $valtype_vectype(vt)) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, $val_ref(ref), $valtype_reftype(rt)) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -12640,50 +10367,36 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) - -- wf_externtype: `%`(xt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -12718,83 +10431,11 @@ def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, $typeuse_deftype(dt)*{dt <- `dt*`}) -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([$instr_val(val) BR_ON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([$instr_val(val) BR_ON_NON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.is_null-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-true_0`{ref : ref, ht : heaptype}: - `%`([$instr_ref(ref) REF.IS_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-null_0`{ref : ref, ht : heaptype}: - `%`([$instr_ref(ref) REF.AS_NON_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) - -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.eq-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true_0`{ref_1 : ref, ref_2 : ref}: - `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) - -- if (ref_1 = ref_2) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-null_1`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12802,96 +10443,66 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([$instr_val(val) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_1)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_2)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if ($proj_uN_0(l).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if ($proj_uN_0(l).0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) @@ -12900,491 +10511,296 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-addr`{val : val, l : labelidx}: + rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [$instr_val(val)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- ~ `Step_pure_before_br_on_null-addr`: `%`([$instr_val(val) BR_ON_NULL_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-addr`{val : val, l : labelidx}: + rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], [$instr_val(val) BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([$instr_val(val) BR_ON_NON_NULL_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})], $instr_val(val)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`($instr_val(val)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: `%~>%`([$instr_val(val) LOCAL.TEE_instr(x)], [$instr_val(val) $instr_val(val) LOCAL.SET_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instr: `%`(LOCAL.SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-false`{ref : ref}: + rule `ref.is_null-false`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.is_null-false`: `%`([$instr_ref(ref) REF.IS_NULL_instr]) + -- if (ref =/= REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.AS_NON_NULL_instr], [TRAP_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-addr`{ref : ref}: + rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.AS_NON_NULL_instr], [$instr_ref(ref)]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([$instr_ref(ref) REF.AS_NON_NULL_instr]) + -- if (ref =/= REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.eq-false`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) + -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(REF.I31_NUM_instr(i)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: `%~>%`([$instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], $instr_val(val)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: `%~>%`([$instr_addrref(addrref) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [$instr_addrref(addrref)]) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) -- if ($unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) -- if ($binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_uN: `%%`(128, `%`_uN(0)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if ($proj_num__0(i) =/= ?()) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) - -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) - -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) -- if ($proj_num__0(c_2) =/= ?()) -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)|) @@ -13393,77 +10809,46 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) @@ -13472,74 +10857,14 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_throw_ref-handler-next`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) - -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) - -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) @@ -13548,8 +10873,6 @@ relation `Step_read_before_table.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -13559,50 +10882,12 @@ relation `Step_read_before_table.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -13612,26 +10897,6 @@ relation `Step_read_before_table.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) @@ -13641,25 +10906,6 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) @@ -13668,8 +10914,6 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -13679,50 +10923,12 @@ relation `Step_read_before_memory.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -13732,26 +10938,6 @@ relation `Step_read_before_memory.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) @@ -13761,10 +10947,6 @@ relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -13773,9 +10955,6 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -13784,26 +10963,6 @@ relation `Step_read_before_array.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -13813,8 +10972,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -13822,8 +10979,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -13833,15 +10988,12 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -13849,8 +11001,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -13860,36 +11010,21 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -13897,8 +11032,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -13908,42 +11041,12 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.init_elem-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -13953,9 +11056,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -13963,8 +11063,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -13974,16 +11072,12 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -13991,8 +11085,6 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -14002,75 +11094,49 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) -- if (a < |$funcinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) -- if (a < |$funcinst(z)|) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) @@ -14081,81 +11147,51 @@ relation Step_read: `%~>%`(config, instr*) rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) -- if (a < |$funcinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) -- if (a < |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) @@ -14164,10 +11200,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) -- if (a < |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) @@ -14176,50 +11208,36 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr, x : idx, `val*` : val*, x : idx, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if (((($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0]) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) \/ ($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0])) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [$instr_val(val)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [$instr_val(val)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) @@ -14228,98 +11246,65 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) @@ -14327,8 +11312,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14337,78 +11323,53 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) @@ -14437,17 +11392,12 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) @@ -14455,18 +11405,12 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) @@ -14476,44 +11420,31 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -14521,8 +11452,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14530,16 +11462,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14547,22 +11470,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) @@ -14570,8 +11482,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14580,69 +11493,42 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr($heaptype_deftype($type(z, x)))]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) - -- wf_instr: `%`(REF.NULL_instr($heaptype_deftype($type(z, x)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) - -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)]), [$instr_ref(ref)]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), $instr_val(val)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} @@ -14650,8 +11536,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -14659,43 +11543,29 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) -- if (a < |$structinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), $instr_val(val)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), $instr_ref(ref)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -14704,10 +11574,6 @@ relation Step_read: `%~>%`(config, instr*) rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) -- (if ($cunpack(zt) =/= ?()))^n{c <- `c*`} - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -14715,14 +11581,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -14733,34 +11595,24 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) -- if (a < |$arrayinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -14768,40 +11620,29 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- if (a < |$arrayinst(z)|) + -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -14809,8 +11650,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -14818,8 +11657,11 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14827,19 +11669,9 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if (a_2 < |$arrayinst(z)|) + -- if (a_1 < |$arrayinst(z)|) + -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -14848,18 +11680,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) @@ -14867,14 +11687,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -14882,16 +11698,16 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- if ($proj_num__0(j) =/= ?()) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if ((($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14899,30 +11715,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- if (a < |$arrayinst(z)|) + -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -14930,9 +11734,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -14940,7 +11741,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) @@ -14950,16 +11750,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($cunpack(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -14972,74 +11762,48 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [$instr_val(val) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) LOCAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [$instr_val(val) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) GLOBAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) @@ -15047,35 +11811,25 @@ relation Step: `%~>%`(config, config) rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -15083,15 +11837,11 @@ relation Step: `%~>%`(config, config) rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -15099,16 +11849,12 @@ relation Step: `%~>%`(config, config) rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -15116,15 +11862,11 @@ relation Step: `%~>%`(config, config) rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) @@ -15132,42 +11874,29 @@ relation Step: `%~>%`(config, config) rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) - -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) - -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) + -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) @@ -15175,39 +11904,26 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) $instr_val(val) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -15216,9 +11932,6 @@ relation Step: `%~>%`(config, config) rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -15230,14 +11943,10 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } @@ -15247,8 +11956,6 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`})) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15260,7 +11967,6 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} - -- wf_uN: `%%`(32, x) -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), $typeuse_deftype(deftype')*{deftype' <- `deftype'*`})) @@ -15271,8 +11977,6 @@ def $alloctypes(type*) : deftype* def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15284,8 +11988,6 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } @@ -15294,8 +11996,6 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15307,8 +12007,6 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } @@ -15317,8 +12015,6 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15330,8 +12026,6 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } @@ -15340,8 +12034,6 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15353,8 +12045,6 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } @@ -15363,8 +12053,6 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15376,8 +12064,6 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } @@ -15386,8 +12072,6 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15399,8 +12083,6 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } @@ -15409,8 +12091,6 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15422,8 +12102,6 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } @@ -15432,19 +12110,14 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -15455,24 +12128,6 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) - -- wf_store: `%`(s_1) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_3) - -- wf_store: `%`(s_4) - -- wf_store: `%`(s_5) - -- wf_store: `%`(s_6) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} - -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} @@ -15504,10 +12159,6 @@ def $rundata_(dataidx : dataidx, data : data) : instr* def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) - -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -15515,13 +12166,8 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] - -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(TABLE.INIT_instr(y, x)) - -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -15532,11 +12178,6 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) - -- wf_state: `%`(z') - -- wf_val: `%`(val) - -- (wf_val: `%`(val'))*{val' <- `val'*`} - -- wf_state: `%`(`%;%`_state(s, f)) - -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- where `%;%`_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, val) {a, s'} @@ -15547,24 +12188,6 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) - -- wf_state: `%`(z) - -- wf_state: `%`(z') - -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} - -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} - -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} - -- (wf_start: `%`(START_start(x)))?{x <- `x?`} - -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} - -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} - -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} @@ -15587,8 +12210,6 @@ def $instantiate(store : store, module : module, externaddr*) : config def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -17685,7 +14306,6 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) } @@ -17695,8 +14315,6 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I) - -- wf_idctxt: `%`(I) - -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) @@ -19615,27 +16233,16 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32.add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global.get{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -19645,23 +16252,14 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -19700,8 +16298,6 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} } diff --git a/spectec/test-middlend/specification.exp/11-alias-demut.il b/spectec/test-middlend/specification.exp/12-alias-demut.il similarity index 81% rename from spectec/test-middlend/specification.exp/11-alias-demut.il rename to spectec/test-middlend/specification.exp/12-alias-demut.il index 4f52e985d7..0a655847a9 100644 --- a/spectec/test-middlend/specification.exp/11-alias-demut.il +++ b/spectec/test-middlend/specification.exp/12-alias-demut.il @@ -317,19 +317,16 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -383,29 +380,18 @@ def $utf8(char*) : byte* def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) -- if ($proj_char_0(ch).0 < 128) -- where b = `%`_byte($proj_char_0(ch).0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -599,7 +585,6 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -610,7 +595,6 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -619,55 +603,46 @@ def $free_list(free*) : free def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -833,13 +808,6 @@ def $valtype_addrtype(addrtype) : valtype def $valtype_addrtype(I32_addrtype) = I32_valtype def $valtype_addrtype(I64_addrtype) = I64_valtype -def $storagetype_consttype(consttype) : storagetype - def $storagetype_consttype(I32_consttype) = I32_storagetype - def $storagetype_consttype(I64_consttype) = I64_storagetype - def $storagetype_consttype(F32_consttype) = F32_storagetype - def $storagetype_consttype(F64_consttype) = F64_storagetype - def $storagetype_consttype(V128_consttype) = V128_storagetype - def $storagetype_numtype(numtype) : storagetype def $storagetype_numtype(I32_numtype) = I32_storagetype def $storagetype_numtype(I64_numtype) = I64_storagetype @@ -1132,73 +1100,61 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1567,10 +1523,8 @@ def $unpack(storagetype : storagetype) : valtype def $unpack(I32_storagetype) = I32_valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I8_storagetype) = I32_valtype - -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I16_storagetype) = I32_valtype - -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1633,10 +1587,8 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1730,9 +1682,6 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } @@ -1778,7 +1727,6 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1796,7 +1744,6 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $valtype_reftype($subst_reftype(REF_reftype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1823,32 +1770,25 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1871,97 +1811,79 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(_DEF_typeuse(rectype, n)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4588,13 +4488,10 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4625,7 +4522,6 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4692,13 +4588,10 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4707,13 +4600,10 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4736,7 +4626,6 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4747,10 +4636,8 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4806,7 +4693,6 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] - -- wf_free: `%`(free) -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } @@ -5050,7 +4936,6 @@ def $free_datamode(datamode : datamode) : free def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -5063,10 +4948,8 @@ def $free_elemmode(elemmode : elemmode) : free def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -5220,14 +5103,12 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5256,28 +5137,24 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype}: `%~~%`(deftype, comptype) - -- wf_comptype: `%`(comptype) -- if ($expanddt(deftype) = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5285,7 +5162,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool @@ -5313,13 +5189,10 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, $heaptype_absheaptype(absheaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, $heaptype_typeuse(typeuse)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -5327,8 +5200,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -5336,51 +5207,39 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, $valtype_numtype(numtype)) - -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, $valtype_vectype(vectype)) - -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, $valtype_reftype(reftype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, $typeuse_deftype(deftype)) - -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -5388,8 +5247,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -5397,8 +5254,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -5406,14 +5261,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, $storagetype_valtype(valtype)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, $storagetype_packtype(packtype)) - -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -5421,22 +5273,16 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -5445,14 +5291,10 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- if (|`comptype'*`| = |`x'**`|) - -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} -- if (|`comptype'*`| = |`x*`|) + -- if (|`comptype'*`| = |`x'**`|) -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) @@ -5463,27 +5305,16 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -5491,15 +5322,10 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- if (|`comptype'*`| = |`typeuse'**`|) - -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} -- if (|`comptype'*`| = |`typeuse*`|) + -- if (|`comptype'*`| = |`typeuse'**`|) -- (if ($unrollht(C, $heaptype_typeuse(typeuse)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5509,17 +5335,10 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) @@ -5528,9 +5347,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) - -- wf_context: `%`(C) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) @@ -5540,26 +5356,17 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) @@ -5568,14 +5375,11 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) @@ -5585,16 +5389,10 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) - -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5602,76 +5400,48 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, $heaptype_deftype(deftype), STRUCT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, $heaptype_deftype(deftype), ARRAY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, $heaptype_deftype(deftype), FUNC_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) @@ -5679,71 +5449,43 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[j])) -- if (j < |typeuse*{typeuse <- `typeuse*`}|) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) - -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) - -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) - -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5751,38 +5493,27 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) - -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) - -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} @@ -5791,15 +5522,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) - -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5807,17 +5534,11 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5827,9 +5548,6 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- if (|`lct*`| = |`x*`|) @@ -5841,16 +5559,11 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`($typeuse_deftype(deftype), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) @@ -5859,8 +5572,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} @@ -5869,9 +5580,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5880,8 +5588,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5889,8 +5595,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5898,8 +5602,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5908,37 +5610,26 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5947,11 +5638,6 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) @@ -5964,9 +5650,6 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5975,7 +5658,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5984,17 +5666,11 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -6003,9 +5679,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -6013,9 +5686,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -6025,41 +5695,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6067,18 +5722,11 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6087,9 +5735,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -6098,9 +5743,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -6109,16 +5751,12 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) @@ -6126,22 +5764,16 @@ relation Catch_ok: `%|-%:OK`(context, catch) def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I32_valtype) = ?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I64_valtype) = ?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) - -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F32_valtype) = ?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F64_valtype) = ?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(V128_valtype) = ?(VCONST_val(V128_vectype, `%`_vec_(0))) - -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) - -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -6150,7 +5782,6 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6166,41 +5797,25 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = $valtype_numtype(numtype)) \/ (t' = $valtype_vectype(vectype))) @@ -6208,35 +5823,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6244,10 +5842,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6255,18 +5849,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} -- if ($proj_uN_0(l').0 < |C.LABELS_context|) @@ -6276,9 +5864,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -6286,19 +5871,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -6309,10 +5887,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -6323,32 +5897,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -6358,22 +5918,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) @@ -6383,12 +5933,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) @@ -6398,14 +5942,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -6418,11 +5954,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6430,20 +5961,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} @@ -6451,17 +5973,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref.null{C : context, ht : heaptype}: `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (|C.REFS_context| > 0) @@ -6470,39 +5986,24 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref.i31{C : context}: `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref.is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref.as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref.eq{C : context}: `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.TEST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6510,9 +6011,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.CAST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6520,27 +6018,16 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31.get{C : context, sx : sx}: `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} @@ -6548,11 +6035,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) @@ -6562,11 +6044,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.SET_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) @@ -6575,20 +6052,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) @@ -6596,20 +6065,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6618,10 +6079,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) @@ -6631,10 +6088,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6642,38 +6095,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array.set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array.len{C : context}: `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.LEN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array.fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) @@ -6683,10 +6120,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6695,10 +6128,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) @@ -6708,127 +6137,76 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local.get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local.set{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local.tee{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global.set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([I32_valtype]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) @@ -6838,11 +6216,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6852,51 +6225,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem.drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(ELEM.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) @@ -6905,10 +6257,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) @@ -6917,19 +6265,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data.drop{C : context, x : idx}: `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DATA.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6937,10 +6278,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6948,10 +6285,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6959,10 +6292,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6970,10 +6299,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6981,10 +6306,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) @@ -6992,10 +6313,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -7003,10 +6320,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -7014,10 +6327,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -7026,10 +6335,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -7037,10 +6342,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -7049,223 +6350,129 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`t*`|) - -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (|`init*`| = |`t*`|) -- if (|`init*`| = |`x_1*`|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} @@ -7274,10 +6481,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') - -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -7285,10 +6488,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) } @@ -7298,9 +6497,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7308,7 +6504,6 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7316,92 +6511,60 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.null{C : context, ht : heaptype}: `%|-%CONST`(C, REF.NULL_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: `%|-%CONST`(C, REF.I31_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.func{C : context, x : idx}: `%|-%CONST`(C, REF.FUNC_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_fixed{C : context, x : idx, n : n}: `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern.convert_any{C : context}: `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global.get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL.GET_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr($numtype_addrtype(Inn), binop)) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr($numtype_addrtype(Inn), binop)) - -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, ADD_binop_Inn)) - -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, SUB_binop_Inn)) - -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -7410,8 +6573,6 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7419,9 +6580,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) @@ -7430,9 +6588,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) @@ -7442,8 +6597,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7451,9 +6604,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) @@ -7463,8 +6613,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7472,9 +6620,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(rt)) @@ -7484,17 +6629,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7503,10 +6642,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} @@ -7517,15 +6652,10 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) @@ -7535,8 +6665,6 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7544,24 +6672,14 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -7572,8 +6690,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(elemtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) @@ -7583,9 +6699,6 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) @@ -7594,8 +6707,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7603,45 +6714,30 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) @@ -7650,9 +6746,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7663,16 +6756,10 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } @@ -7685,13 +6772,10 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } @@ -7714,23 +6798,12 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) - -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) - -- wf_context: `%`(C) - -- wf_context: `%`(C') - -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) - -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) -- if (|`import*`| = |`xt_I*`|) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} @@ -7920,22 +6993,16 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7964,7 +7031,6 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -7984,28 +7050,23 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -8013,7 +7074,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8021,7 +7081,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -8029,12 +7088,10 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8063,19 +7120,15 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8126,61 +7179,49 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -8294,22 +7335,16 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) - -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) - -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -8325,10 +7360,8 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) - -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) - -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -8342,10 +7375,8 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) - -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) - -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -8361,196 +7392,134 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) - -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) - -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -8614,119 +7583,83 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8944,42 +7877,28 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -8987,16 +7906,10 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} @@ -9004,37 +7917,21 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -9043,37 +7940,21 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -9082,33 +7963,21 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -9117,17 +7986,11 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -9136,36 +7999,24 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -9175,18 +8026,12 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -9196,30 +8041,18 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -9227,16 +8060,10 @@ def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} @@ -9244,33 +8071,21 @@ def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -9279,33 +8094,21 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -9314,20 +8117,12 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} -- if ($isize(Inn) = $fsize(F32_Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -9337,30 +8132,18 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -9368,30 +8151,18 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -9399,34 +8170,18 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) @@ -9434,37 +8189,21 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} @@ -9473,37 +8212,21 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} @@ -9533,741 +8256,520 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I32_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I64_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I8_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I16_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} @@ -10277,70 +8779,48 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10348,13 +8828,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10362,13 +8835,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10376,13 +8842,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10390,13 +8849,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10404,13 +8856,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10418,13 +8863,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10432,13 +8870,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10446,13 +8877,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10460,13 +8884,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10474,13 +8891,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10488,13 +8898,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10502,13 +8905,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10516,13 +8912,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10530,13 +8919,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10544,13 +8926,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10561,169 +8936,87 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} @@ -10732,96 +9025,53 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10829,13 +9079,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10843,13 +9086,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10857,13 +9093,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10871,13 +9100,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10885,13 +9107,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10899,13 +9114,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10913,13 +9121,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10927,13 +9128,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10941,13 +9135,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10955,13 +9142,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10969,13 +9149,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10983,13 +9156,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -10997,13 +9163,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -11011,13 +9170,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -11025,13 +9177,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -11047,307 +9192,105 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11355,16 +9298,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11372,16 +9305,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11389,16 +9312,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11406,16 +9319,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11423,16 +9326,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11440,16 +9333,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11457,16 +9340,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11474,16 +9347,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11491,16 +9354,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11508,16 +9361,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11525,16 +9368,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11542,16 +9375,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11559,16 +9382,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11576,16 +9389,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11593,16 +9396,6 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -12068,10 +9861,8 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{val : val}(I32_storagetype, val) = $fieldval_val(val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)) - -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)) - -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -12217,10 +10008,8 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{numtype : numtype, num_ : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -12406,87 +10195,71 @@ def $local(state : state, localidx : localidx) : val? def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) - -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f) - -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f) - -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) - -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') - -- wf_tableinst: `%`(tableinst') - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) @@ -12497,9 +10270,6 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') - -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) @@ -12511,16 +10281,12 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -12530,80 +10296,48 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.I31_NUM_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) - -- wf_store: `%`(s) - -- wf_exninst: `%`(exn) - -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.EXTERN_ref(addrref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, $ref_addrref(addrref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) - -- wf_reftype: `%`(rt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -12613,23 +10347,16 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, $val_num(num), $valtype_numtype(nt)) - -- wf_store: `%`(s) - -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, $val_vec(vec), $valtype_vectype(vt)) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, $val_ref(ref), $valtype_reftype(rt)) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -12640,50 +10367,36 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) - -- wf_externtype: `%`(xt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -12718,83 +10431,11 @@ def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, $typeuse_deftype(dt)*{dt <- `dt*`}) -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([$instr_val(val) BR_ON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([$instr_val(val) BR_ON_NON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.is_null-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-true_0`{ref : ref, ht : heaptype}: - `%`([$instr_ref(ref) REF.IS_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-null_0`{ref : ref, ht : heaptype}: - `%`([$instr_ref(ref) REF.AS_NON_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) - -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.eq-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true_0`{ref_1 : ref, ref_2 : ref}: - `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) - -- if (ref_1 = ref_2) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-null_1`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12802,96 +10443,66 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([$instr_val(val) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_1)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_2)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if ($proj_uN_0(l).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if ($proj_uN_0(l).0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) @@ -12900,491 +10511,296 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-addr`{val : val, l : labelidx}: + rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [$instr_val(val)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- ~ `Step_pure_before_br_on_null-addr`: `%`([$instr_val(val) BR_ON_NULL_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-addr`{val : val, l : labelidx}: + rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], [$instr_val(val) BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([$instr_val(val) BR_ON_NON_NULL_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})], $instr_val(val)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`($instr_val(val)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: `%~>%`([$instr_val(val) LOCAL.TEE_instr(x)], [$instr_val(val) $instr_val(val) LOCAL.SET_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instr: `%`(LOCAL.SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-false`{ref : ref}: + rule `ref.is_null-false`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.is_null-false`: `%`([$instr_ref(ref) REF.IS_NULL_instr]) + -- if (ref =/= REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.AS_NON_NULL_instr], [TRAP_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-addr`{ref : ref}: + rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.AS_NON_NULL_instr], [$instr_ref(ref)]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([$instr_ref(ref) REF.AS_NON_NULL_instr]) + -- if (ref =/= REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.eq-false`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) + -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(REF.I31_NUM_instr(i)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: `%~>%`([$instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], $instr_val(val)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: `%~>%`([$instr_addrref(addrref) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [$instr_addrref(addrref)]) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) -- if ($unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) -- if ($binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_uN: `%%`(128, `%`_uN(0)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if ($proj_num__0(i) =/= ?()) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) - -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) - -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) -- if ($proj_num__0(c_2) =/= ?()) -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)|) @@ -13393,77 +10809,46 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) @@ -13472,74 +10857,14 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_throw_ref-handler-next`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) - -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) - -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) @@ -13548,8 +10873,6 @@ relation `Step_read_before_table.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -13559,50 +10882,12 @@ relation `Step_read_before_table.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -13612,26 +10897,6 @@ relation `Step_read_before_table.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) @@ -13641,25 +10906,6 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) @@ -13668,8 +10914,6 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -13679,50 +10923,12 @@ relation `Step_read_before_memory.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -13732,26 +10938,6 @@ relation `Step_read_before_memory.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) @@ -13761,10 +10947,6 @@ relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -13773,9 +10955,6 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -13784,26 +10963,6 @@ relation `Step_read_before_array.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -13813,8 +10972,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -13822,8 +10979,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -13833,15 +10988,12 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -13849,8 +11001,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -13860,36 +11010,21 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -13897,8 +11032,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -13908,42 +11041,12 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.init_elem-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -13953,9 +11056,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -13963,8 +11063,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -13974,16 +11072,12 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -13991,8 +11085,6 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -14002,75 +11094,49 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) -- if (a < |$funcinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) -- if (a < |$funcinst(z)|) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) @@ -14081,81 +11147,51 @@ relation Step_read: `%~>%`(config, instr*) rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) -- if (a < |$funcinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) -- if (a < |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) @@ -14164,10 +11200,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) -- if (a < |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) @@ -14176,50 +11208,36 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr, x : idx, `val*` : val*, x : idx, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if (((($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0]) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) \/ ($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0])) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [$instr_val(val)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [$instr_val(val)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) @@ -14228,98 +11246,65 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) @@ -14327,8 +11312,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14337,78 +11323,53 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) @@ -14437,17 +11392,12 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) @@ -14455,18 +11405,12 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) @@ -14476,44 +11420,31 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -14521,8 +11452,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14530,16 +11462,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14547,22 +11470,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) @@ -14570,8 +11482,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14580,69 +11493,42 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr($heaptype_deftype($type(z, x)))]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) - -- wf_instr: `%`(REF.NULL_instr($heaptype_deftype($type(z, x)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) - -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)]), [$instr_ref(ref)]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), $instr_val(val)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} @@ -14650,8 +11536,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -14659,43 +11543,29 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) -- if (a < |$structinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), $instr_val(val)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), $instr_ref(ref)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -14704,10 +11574,6 @@ relation Step_read: `%~>%`(config, instr*) rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) -- (if ($cunpack(zt) =/= ?()))^n{c <- `c*`} - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -14715,14 +11581,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -14733,34 +11595,24 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) -- if (a < |$arrayinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -14768,40 +11620,29 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- if (a < |$arrayinst(z)|) + -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -14809,8 +11650,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -14818,8 +11657,11 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14827,19 +11669,9 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if (a_2 < |$arrayinst(z)|) + -- if (a_1 < |$arrayinst(z)|) + -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -14848,18 +11680,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) @@ -14867,14 +11687,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -14882,16 +11698,16 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- if ($proj_num__0(j) =/= ?()) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if ((($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14899,30 +11715,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- if (a < |$arrayinst(z)|) + -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -14930,9 +11734,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -14940,7 +11741,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) @@ -14950,16 +11750,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($cunpack(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -14972,74 +11762,48 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [$instr_val(val) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) LOCAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [$instr_val(val) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) GLOBAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) @@ -15047,35 +11811,25 @@ relation Step: `%~>%`(config, config) rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -15083,15 +11837,11 @@ relation Step: `%~>%`(config, config) rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -15099,16 +11849,12 @@ relation Step: `%~>%`(config, config) rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -15116,15 +11862,11 @@ relation Step: `%~>%`(config, config) rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) @@ -15132,42 +11874,29 @@ relation Step: `%~>%`(config, config) rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) - -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) - -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) + -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) @@ -15175,39 +11904,26 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) $instr_val(val) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -15216,9 +11932,6 @@ relation Step: `%~>%`(config, config) rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -15230,14 +11943,10 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } @@ -15247,8 +11956,6 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`})) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15260,7 +11967,6 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} - -- wf_uN: `%%`(32, x) -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), $typeuse_deftype(deftype')*{deftype' <- `deftype'*`})) @@ -15271,8 +11977,6 @@ def $alloctypes(type*) : deftype* def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15284,8 +11988,6 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } @@ -15294,8 +11996,6 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15307,8 +12007,6 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } @@ -15317,8 +12015,6 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15330,8 +12026,6 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } @@ -15340,8 +12034,6 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15353,8 +12045,6 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } @@ -15363,8 +12053,6 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15376,8 +12064,6 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } @@ -15386,8 +12072,6 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15399,8 +12083,6 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } @@ -15409,8 +12091,6 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15422,8 +12102,6 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } @@ -15432,19 +12110,14 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -15455,24 +12128,6 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) - -- wf_store: `%`(s_1) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_3) - -- wf_store: `%`(s_4) - -- wf_store: `%`(s_5) - -- wf_store: `%`(s_6) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} - -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} @@ -15504,10 +12159,6 @@ def $rundata_(dataidx : dataidx, data : data) : instr* def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) - -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -15515,13 +12166,8 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] - -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(TABLE.INIT_instr(y, x)) - -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -15532,11 +12178,6 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) - -- wf_state: `%`(z') - -- wf_val: `%`(val) - -- (wf_val: `%`(val'))*{val' <- `val'*`} - -- wf_state: `%`(`%;%`_state(s, f)) - -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- where `%;%`_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, val) {a, s'} @@ -15547,24 +12188,6 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) - -- wf_state: `%`(z) - -- wf_state: `%`(z') - -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} - -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} - -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} - -- (wf_start: `%`(START_start(x)))?{x <- `x?`} - -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} - -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} - -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} @@ -15587,8 +12210,6 @@ def $instantiate(store : store, module : module, externaddr*) : config def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -17685,7 +14306,6 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) } @@ -17695,8 +14315,6 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I) - -- wf_idctxt: `%`(I) - -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) @@ -19615,27 +16233,16 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32.add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global.get{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -19645,23 +16252,14 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -19700,8 +16298,6 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} } diff --git a/spectec/test-middlend/specification.exp/12-improve-ids.il b/spectec/test-middlend/specification.exp/13-improve-ids.il similarity index 81% rename from spectec/test-middlend/specification.exp/12-improve-ids.il rename to spectec/test-middlend/specification.exp/13-improve-ids.il index 96280ad289..732fbb5f79 100644 --- a/spectec/test-middlend/specification.exp/12-improve-ids.il +++ b/spectec/test-middlend/specification.exp/13-improve-ids.il @@ -317,19 +317,16 @@ syntax f64 = fN def $fzero(v_N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{v_N : nat}(v_N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(v_N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(v_N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{v_N : nat, v_n : nat}(v_N, v_n) = POS_fN(NORM_fNmag(v_n, (0 : nat <:> int))) - -- wf_fN: `%%`(v_N, POS_fN(NORM_fNmag(v_n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(v_N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{v_N : nat}(v_N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(v_N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(v_N : N) : nat @@ -383,29 +380,18 @@ def $utf8(var_0 : char*) : byte* def $utf8{ch_lst : char*}(ch_lst) = $concat_(syntax byte, $utf8([ch])*{ch <- ch_lst}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(mk_byte_byte($proj_char_0(ch).0)) -- if ($proj_char_0(ch).0 < 128) -- where b = mk_byte_byte($proj_char_0(ch).0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -599,7 +585,6 @@ relation wf_free: `%`(free) def $free_opt(var_0 : free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{v_free : free}(?(v_free)) = v_free @@ -610,7 +595,6 @@ rec { def $free_list(var_0 : free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{v_free : free, free'_lst : free*}([v_free] ++ free'_lst) = v_free +++ $free_list(free'_lst) } @@ -619,55 +603,46 @@ def $free_list(var_0 : free*) : free def $free_typeidx(v_typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{v_typeidx : uN}(v_typeidx) = {TYPES [v_typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [v_typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(v_funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{v_funcidx : uN}(v_funcidx) = {TYPES [], FUNCS [v_funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [v_funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(v_globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{v_globalidx : uN}(v_globalidx) = {TYPES [], FUNCS [], GLOBALS [v_globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [v_globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(v_tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{v_tableidx : uN}(v_tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [v_tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [v_tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(v_memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{v_memidx : uN}(v_memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [v_memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [v_memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(v_elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{v_elemidx : uN}(v_elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [v_elemidx], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [v_elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(v_dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{v_dataidx : uN}(v_dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [v_dataidx], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [v_dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(v_localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{v_localidx : uN}(v_localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [v_localidx], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [v_localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(v_labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{v_labelidx : uN}(v_labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [v_labelidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [v_labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(v_externidx : externidx) : free @@ -833,13 +808,6 @@ def $valtype_addrtype(var_0 : addrtype) : valtype def $valtype_addrtype(I32_addrtype) = I32_valtype def $valtype_addrtype(I64_addrtype) = I64_valtype -def $storagetype_consttype(var_0 : consttype) : storagetype - def $storagetype_consttype(I32_consttype) = I32_storagetype - def $storagetype_consttype(I64_consttype) = I64_storagetype - def $storagetype_consttype(F32_consttype) = F32_storagetype - def $storagetype_consttype(F64_consttype) = F64_storagetype - def $storagetype_consttype(V128_consttype) = V128_storagetype - def $storagetype_numtype(var_0 : numtype) : storagetype def $storagetype_numtype(I32_numtype) = I32_storagetype def $storagetype_numtype(I64_numtype) = I64_storagetype @@ -1132,73 +1100,61 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1567,10 +1523,8 @@ def $unpack(v_storagetype : storagetype) : valtype def $unpack(I32_storagetype) = I32_valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I8_storagetype) = I32_valtype - -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I16_storagetype) = I32_valtype - -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(v_storagetype : storagetype) : numtype? @@ -1633,10 +1587,8 @@ def $minat(v_addrtype : addrtype, v_addrtype_0 : addrtype) : addrtype def $diffrt(v_reftype : reftype, v_reftype_0 : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{null_1_opt : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1_opt, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{null_1_opt : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1_opt, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1_opt, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1_opt, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(v_typeuse : typeuse) : deftype @@ -1730,9 +1682,6 @@ def $minus_recs(var_0 : typevar*, var_1 : typeuse*) : (typevar*, typeuse*) def $minus_recs{v_n : nat, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*}([REC_typevar(v_n)] ++ tv_lst, [tu_1] ++ tu_lst) = $minus_recs(tv_lst, tu_lst) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*, tv'_lst : typevar*, tu'_lst : typeuse*}([_IDX_typevar(x)] ++ tv_lst, [tu_1] ++ tu_lst) = ([_IDX_typevar(x)] ++ tv'_lst, [tu_1] ++ tu'_lst) - -- (wf_typevar: `%`(tv'))*{tv' <- tv'_lst} - -- (wf_typeuse: `%`(tu'))*{tu' <- tu'_lst} - -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'_lst, tu'_lst) = $minus_recs(tv_lst, tu_lst) {tu'_lst, tv'_lst} } @@ -1778,7 +1727,6 @@ def $subst_heaptype(v_heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*) : def $subst_reftype(v_reftype : reftype, var_0 : typevar*, var_1 : typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{null_opt : null?, ht : heaptype, tv_lst : typevar*, tu_lst : typeuse*}(REF_reftype(null_opt, ht), tv_lst, tu_lst) = REF_reftype(null_opt, $subst_heaptype(ht, tv_lst, tu_lst)) - -- wf_reftype: `%`(REF_reftype(null_opt, $subst_heaptype(ht, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(v_valtype : valtype, var_0 : typevar*, var_1 : typeuse*) : valtype @@ -1796,7 +1744,6 @@ def $subst_valtype(v_valtype : valtype, var_0 : typevar*, var_1 : typeuse*) : va def $subst_valtype{null_opt : null?, v_heaptype : heaptype, tv_lst : typevar*, tu_lst : typeuse*}(REF_valtype(null_opt, v_heaptype), tv_lst, tu_lst) = $valtype_reftype($subst_reftype(REF_reftype(null_opt, v_heaptype), tv_lst, tu_lst)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{tv_lst : typevar*, tu_lst : typeuse*}(BOT_valtype, tv_lst, tu_lst) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(v_storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*) : storagetype @@ -1823,32 +1770,25 @@ def $subst_storagetype(v_storagetype : storagetype, var_0 : typevar*, var_1 : ty def $subst_fieldtype(v_fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{mut_opt : mut?, zt : storagetype, tv_lst : typevar*, tu_lst : typeuse*}(mk_fieldtype_fieldtype(mut_opt, zt), tv_lst, tu_lst) = mk_fieldtype_fieldtype(mut_opt, $subst_storagetype(zt, tv_lst, tu_lst)) - -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(mut_opt, $subst_storagetype(zt, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(v_comptype : comptype, var_0 : typevar*, var_1 : typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{ft_lst : fieldtype*, tv_lst : typevar*, tu_lst : typeuse*}(STRUCT_comptype(mk_list_list(ft_lst)), tv_lst, tu_lst) = STRUCT_comptype(mk_list_list($subst_fieldtype(ft, tv_lst, tu_lst)*{ft <- ft_lst})) - -- wf_comptype: `%`(STRUCT_comptype(mk_list_list($subst_fieldtype(ft, tv_lst, tu_lst)*{ft <- ft_lst}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, tv_lst : typevar*, tu_lst : typeuse*}(ARRAY_comptype(ft), tv_lst, tu_lst) = ARRAY_comptype($subst_fieldtype(ft, tv_lst, tu_lst)) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{t_1_lst : valtype*, t_2_lst : valtype*, tv_lst : typevar*, tu_lst : typeuse*}(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)), tv_lst, tu_lst) = FUNC_comptype(mk_list_resulttype($subst_valtype(t_1, tv_lst, tu_lst)*{t_1 <- t_1_lst}), mk_list_resulttype($subst_valtype(t_2, tv_lst, tu_lst)*{t_2 <- t_2_lst})) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype($subst_valtype(t_1, tv_lst, tu_lst)*{t_1 <- t_1_lst}), mk_list_resulttype($subst_valtype(t_2, tv_lst, tu_lst)*{t_2 <- t_2_lst}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(v_subtype : subtype, var_0 : typevar*, var_1 : typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{final_opt : final?, tu'_lst : typeuse*, ct : comptype, tv_lst : typevar*, tu_lst : typeuse*}(SUB_subtype(final_opt, tu'_lst, ct), tv_lst, tu_lst) = SUB_subtype(final_opt, $subst_typeuse(tu', tv_lst, tu_lst)*{tu' <- tu'_lst}, $subst_comptype(ct, tv_lst, tu_lst)) - -- wf_subtype: `%`(SUB_subtype(final_opt, $subst_typeuse(tu', tv_lst, tu_lst)*{tu' <- tu'_lst}, $subst_comptype(ct, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(v_rectype : rectype, var_0 : typevar*, var_1 : typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{st_lst : subtype*, tv_lst : typevar*, tu_lst : typeuse*, tv'_lst : typevar*, tu'_lst : typeuse*}(REC_rectype(mk_list_list(st_lst)), tv_lst, tu_lst) = REC_rectype(mk_list_list($subst_subtype(st, tv'_lst, tu'_lst)*{st <- st_lst})) - -- (wf_typevar: `%`(tv'))*{tv' <- tv'_lst} - -- (wf_typeuse: `%`(tu'))*{tu' <- tu'_lst} -- where (tv'_lst, tu'_lst) = $minus_recs(tv_lst, tu_lst) {tu'_lst, tv'_lst} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1871,97 +1811,79 @@ def $subst_tagtype(v_tagtype : tagtype, var_0 : typevar*, var_1 : typeuse*) : ta def $subst_globaltype(v_globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{mut_opt : mut?, t : valtype, tv_lst : typevar*, tu_lst : typeuse*}(mk_globaltype_globaltype(mut_opt, t), tv_lst, tu_lst) = mk_globaltype_globaltype(mut_opt, $subst_valtype(t, tv_lst, tu_lst)) - -- wf_globaltype: `%`(mk_globaltype_globaltype(mut_opt, $subst_valtype(t, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(v_memtype : memtype, var_0 : typevar*, var_1 : typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, tv_lst : typevar*, tu_lst : typeuse*}(`%%PAGE`_memtype(at, lim), tv_lst, tu_lst) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(v_tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, tv_lst : typevar*, tu_lst : typeuse*}(mk_tabletype_tabletype(at, lim, rt), tv_lst, tu_lst) = mk_tabletype_tabletype(at, lim, $subst_reftype(rt, tv_lst, tu_lst)) - -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, $subst_reftype(rt, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(v_externtype : externtype, var_0 : typevar*, var_1 : typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, tv_lst : typevar*, tu_lst : typeuse*}(TAG_externtype(jt), tv_lst, tu_lst) = TAG_externtype($subst_tagtype(jt, tv_lst, tu_lst)) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, tv_lst : typevar*, tu_lst : typeuse*}(GLOBAL_externtype(gt), tv_lst, tu_lst) = GLOBAL_externtype($subst_globaltype(gt, tv_lst, tu_lst)) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, tv_lst : typevar*, tu_lst : typeuse*}(TABLE_externtype(tt), tv_lst, tu_lst) = TABLE_externtype($subst_tabletype(tt, tv_lst, tu_lst)) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, tv_lst : typevar*, tu_lst : typeuse*}(MEM_externtype(mt), tv_lst, tu_lst) = MEM_externtype($subst_memtype(mt, tv_lst, tu_lst)) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{v_rectype : rectype, v_n : n, tv_lst : typevar*, tu_lst : typeuse*}(FUNC_externtype(_DEF_typeuse(v_rectype, v_n)), tv_lst, tu_lst) = FUNC_externtype($typeuse_deftype($subst_deftype(_DEF_deftype(v_rectype, v_n), tv_lst, tu_lst))) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype($subst_deftype(_DEF_deftype(v_rectype, v_n), tv_lst, tu_lst)))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(v_moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{xt_1_lst : externtype*, xt_2_lst : externtype*, tv_lst : typevar*, tu_lst : typeuse*}(mk_moduletype_moduletype(xt_1_lst, xt_2_lst), tv_lst, tu_lst) = mk_moduletype_moduletype($subst_externtype(xt_1, tv_lst, tu_lst)*{xt_1 <- xt_1_lst}, $subst_externtype(xt_2, tv_lst, tu_lst)*{xt_2 <- xt_2_lst}) - -- wf_moduletype: `%`(mk_moduletype_moduletype($subst_externtype(xt_1, tv_lst, tu_lst)*{xt_1 <- xt_1_lst}, $subst_externtype(xt_2, tv_lst, tu_lst)*{xt_2 <- xt_2_lst})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(v_valtype : valtype, var_0 : typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, tu_lst : typeuse*, v_n : nat, i_lst : nat*}(t, tu_lst) = $subst_valtype(t, _IDX_typevar(mk_uN_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'_lst) - -- wf_uN: `%%`(32, mk_uN_uN(((($proj_uN_0(v_labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4588,13 +4488,10 @@ rec { def $free_instr(v_instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{valtype_lst_opt : valtype*?}(SELECT_instr(valtype_lst_opt)) = $free_opt($free_list($free_valtype(v_valtype)*{v_valtype <- valtype_lst})?{valtype_lst <- valtype_lst_opt}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4625,7 +4522,6 @@ def $free_instr(v_instr : instr) : free def $free_instr{v_tableidx : uN, v_typeuse : typeuse}(CALL_INDIRECT_instr(v_tableidx, v_typeuse)) = $free_tableidx(v_tableidx) +++ $free_typeuse(v_typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{v_funcidx : uN}(RETURN_CALL_instr(v_funcidx)) = $free_funcidx(v_funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4692,13 +4588,10 @@ def $free_instr(v_instr : instr) : free def $free_instr{v_heaptype : heaptype}(REF_NULL_instr(v_heaptype)) = $free_heaptype(v_heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF_IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF_AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF_EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{v_reftype : reftype}(REF_TEST_instr(v_reftype)) = $free_reftype(v_reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4707,13 +4600,10 @@ def $free_instr(v_instr : instr) : free def $free_instr{v_funcidx : uN}(REF_FUNC_instr(v_funcidx)) = $free_funcidx(v_funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF_I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{v_sx : sx}(I31_GET_instr(v_sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{v_typeidx : uN}(STRUCT_NEW_instr(v_typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{v_typeidx : uN}(STRUCT_NEW_DEFAULT_instr(v_typeidx)) = $free_typeidx(v_typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4736,7 +4626,6 @@ def $free_instr(v_instr : instr) : free def $free_instr{v_typeidx : uN}(ARRAY_SET_instr(v_typeidx)) = $free_typeidx(v_typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY_LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{v_typeidx : uN}(ARRAY_FILL_instr(v_typeidx)) = $free_typeidx(v_typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4747,10 +4636,8 @@ def $free_instr(v_instr : instr) : free def $free_instr{v_typeidx : uN, v_elemidx : uN}(ARRAY_INIT_ELEM_instr(v_typeidx, v_elemidx)) = $free_typeidx(v_typeidx) +++ $free_elemidx(v_elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN_CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY_CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{v_localidx : uN}(LOCAL_GET_instr(v_localidx)) = $free_localidx(v_localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4806,7 +4693,6 @@ def $free_instr(v_instr : instr) : free def $free_block(var_0 : instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{instr_lst : instr*, v_free : free}(instr_lst) = v_free[LABELS_free = $shift_labelidxs(v_free.LABELS_free)] - -- wf_free: `%`(v_free) -- where v_free = $free_list($free_instr(v_instr)*{v_instr <- instr_lst}) {v_free} } @@ -5050,7 +4936,6 @@ def $free_datamode(v_datamode : datamode) : free def $free_datamode{v_memidx : uN, v_expr : instr*}(ACTIVE_datamode(v_memidx, v_expr)) = $free_memidx(v_memidx) +++ $free_expr(v_expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(v_data : data) : free @@ -5063,10 +4948,8 @@ def $free_elemmode(v_elemmode : elemmode) : free def $free_elemmode{v_tableidx : uN, v_expr : instr*}(ACTIVE_elemmode(v_tableidx, v_expr)) = $free_tableidx(v_tableidx) +++ $free_expr(v_expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(v_elem : elem) : free @@ -5220,14 +5103,12 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Numtype_ok{C : context, v_numtype : numtype}: `%|-%:OK`(C, v_numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Vectype_ok{C : context, v_vectype : vectype}: `%|-%:OK`(C, v_vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5256,28 +5137,24 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Packtype_ok{C : context, v_packtype : packtype}: `%|-%:OK`(C, v_packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Packtype_sub{C : context, v_packtype : packtype}: `%|-%<:%`(C, v_packtype, v_packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Numtype_sub{C : context, v_numtype : numtype}: `%|-%<:%`(C, v_numtype, v_numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Expand{v_deftype : deftype, v_comptype : comptype}: `%~~%`(v_deftype, v_comptype) - -- wf_comptype: `%`(v_comptype) -- if ($expanddt(v_deftype) = v_comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5285,7 +5162,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Vectype_sub{C : context, v_vectype : vectype}: `%|-%<:%`(C, v_vectype, v_vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(v_typeuse : typeuse, v_typeidx : typeidx, nat : nat) : bool @@ -5313,13 +5189,10 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, v_absheaptype : absheaptype}: `%|-%:OK`(C, $heaptype_absheaptype(v_absheaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, v_typeuse : typeuse}: `%|-%:OK`(C, $heaptype_typeuse(v_typeuse)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(v_typeuse) -- Typeuse_ok: `%|-%:OK`(C, v_typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -5327,8 +5200,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule mk_Reftype_ok{C : context, v_heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), v_heaptype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), v_heaptype)) -- Heaptype_ok: `%|-%:OK`(C, v_heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -5336,51 +5207,39 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, v_numtype : numtype}: `%|-%:OK`(C, $valtype_numtype(v_numtype)) - -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, v_numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, v_vectype : vectype}: `%|-%:OK`(C, $valtype_vectype(v_vectype)) - -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, v_vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, v_reftype : reftype}: `%|-%:OK`(C, $valtype_reftype(v_reftype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(v_reftype) -- Reftype_ok: `%|-%:OK`(C, v_reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, v_typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(v_typeidx)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(v_typeidx)) -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(v_typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, v_deftype : deftype}: `%|-%:OK`(C, $typeuse_deftype(v_deftype)) - -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, v_deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -5388,8 +5247,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule mk_Resulttype_ok{C : context, t_lst : valtype*}: `%|-%:OK`(C, mk_list_resulttype(t_lst)) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- t_lst} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- t_lst} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -5397,8 +5254,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule mk_Fieldtype_ok{C : context, v_storagetype : storagetype}: `%|-%:OK`(C, mk_fieldtype_fieldtype(?(MUT_mut), v_storagetype)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(MUT_mut), v_storagetype)) -- Storagetype_ok: `%|-%:OK`(C, v_storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -5406,14 +5261,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, v_valtype : valtype}: `%|-%:OK`(C, $storagetype_valtype(v_valtype)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(v_valtype) -- Valtype_ok: `%|-%:OK`(C, v_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, v_packtype : packtype}: `%|-%:OK`(C, $storagetype_packtype(v_packtype)) - -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, v_packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -5421,22 +5273,16 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, fieldtype_lst : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(mk_list_list(fieldtype_lst))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(fieldtype_lst))) -- (Fieldtype_ok: `%|-%:OK`(C, v_fieldtype))*{v_fieldtype <- fieldtype_lst} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, v_fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(v_fieldtype)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(v_fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, v_fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:OK`(C, FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_1_lst)) -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_2_lst)) @@ -5445,14 +5291,10 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule mk_Subtype_ok{C : context, x_lst : idx*, v_comptype : comptype, x_0 : idx, x'_lst_lst : idx**, comptype'_lst : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- x_lst}, v_comptype), OK_oktypeidx(x_0)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- x_lst}, v_comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- if (|comptype'_lst| = |x'_lst_lst|) - -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- x'_lst}, comptype')))*{comptype' <- comptype'_lst, x'_lst <- x'_lst_lst} -- if (|x_lst| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- x_lst} -- if (|comptype'_lst| = |x_lst|) + -- if (|comptype'_lst| = |x'_lst_lst|) -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- x_lst} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- x'_lst}, comptype')))*{comptype' <- comptype'_lst, x <- x_lst, x'_lst <- x'_lst_lst} -- Comptype_ok: `%|-%:OK`(C, v_comptype) @@ -5463,27 +5305,16 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(mk_list_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, subtype_lst : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(mk_list_list([subtype_1] ++ subtype_lst)), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(v_subtype))*{v_subtype <- subtype_lst} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_oktypeidx: `%`(OK_oktypeidx(mk_uN_typeidx(($proj_uN_0(x).0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(mk_list_list(subtype_lst)), OK_oktypeidx(mk_uN_typeidx(($proj_uN_0(x).0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, subtype_lst : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(mk_list_list(subtype_lst)), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_context: `%`({TYPES [], RECS subtype_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(mk_list_list(subtype_lst)), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -5491,15 +5322,10 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule mk_Subtype_ok2{C : context, typeuse_lst : typeuse*, compttype : comptype, x : idx, i : nat, typeuse'_lst_lst : typeuse**, comptype'_lst : comptype*, v_comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse_lst, compttype), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(v_comptype) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse_lst, compttype)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- if (|comptype'_lst| = |typeuse'_lst_lst|) - -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'_lst, comptype')))*{comptype' <- comptype'_lst, typeuse'_lst <- typeuse'_lst_lst} -- if (|typeuse_lst| <= 1) -- (if $before(v_typeuse, x, i))*{v_typeuse <- typeuse_lst} -- if (|comptype'_lst| = |typeuse_lst|) + -- if (|comptype'_lst| = |typeuse'_lst_lst|) -- (if ($unrollht(C, $heaptype_typeuse(v_typeuse)) = SUB_subtype(?(), typeuse'_lst, comptype')))*{comptype' <- comptype'_lst, v_typeuse <- typeuse_lst, typeuse'_lst <- typeuse'_lst_lst} -- Comptype_ok: `%|-%:OK`(C, v_comptype) -- (Comptype_sub: `%|-%<:%`(C, v_comptype, comptype'))*{comptype' <- comptype'_lst} @@ -5509,17 +5335,10 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(mk_list_list([])), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, subtype_lst : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(mk_list_list([subtype_1] ++ subtype_lst)), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(v_subtype))*{v_subtype <- subtype_lst} - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(mk_uN_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(mk_list_list(subtype_lst)), OK_oktypeidxnat(mk_uN_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) @@ -5528,9 +5347,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule mk_Deftype_ok{C : context, v_rectype : rectype, i : n, x : idx, subtype_lst : subtype*, v_n : n}: `%|-%:OK`(C, _DEF_deftype(v_rectype, i)) - -- wf_context: `%`(C) - -- (wf_subtype: `%`(v_subtype))*{v_subtype <- subtype_lst} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, v_rectype, OK_oktypeidx(x)) -- if (v_rectype = REC_rectype(mk_list_list(subtype_lst))) -- if (i < v_n) @@ -5540,26 +5356,17 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, ft_1_lst : fieldtype*, ft'_1_lst : fieldtype*, ft_2_lst : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(mk_list_list(ft_1_lst ++ ft'_1_lst)), STRUCT_comptype(mk_list_list(ft_2_lst))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_1_lst ++ ft'_1_lst))) - -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_2_lst))) -- if (|ft_1_lst| = |ft_2_lst|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- ft_1_lst, ft_2 <- ft_2_lst} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, t_11_lst : valtype*, t_12_lst : valtype*, t_21_lst : valtype*, t_22_lst : valtype*}: `%|-%<:%`(C, FUNC_comptype(mk_list_resulttype(t_11_lst), mk_list_resulttype(t_12_lst)), FUNC_comptype(mk_list_resulttype(t_21_lst), mk_list_resulttype(t_22_lst))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_11_lst), mk_list_resulttype(t_12_lst))) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_21_lst), mk_list_resulttype(t_22_lst))) -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_21_lst), mk_list_resulttype(t_11_lst)) -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_12_lst), mk_list_resulttype(t_22_lst)) @@ -5568,14 +5375,11 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, final_opt : final?, typeuse_lst : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(final_opt, typeuse_lst, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final_opt, typeuse_lst, ct)) -- if (i < |typeuse_lst|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse_lst[i]), $heaptype_deftype(deftype_2)) @@ -5585,16 +5389,10 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, v_heaptype : heaptype}: `%|-%<:%`(C, v_heaptype, v_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(v_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) - -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5602,76 +5400,48 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule eq_any{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule i31_eq{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule struct_eq{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule array_eq{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, v_deftype : deftype, fieldtype_lst : fieldtype*}: `%|-%<:%`(C, $heaptype_deftype(v_deftype), STRUCT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(fieldtype_lst))) -- Expand: `%~~%`(v_deftype, STRUCT_comptype(mk_list_list(fieldtype_lst))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, v_deftype : deftype, v_fieldtype : fieldtype}: `%|-%<:%`(C, $heaptype_deftype(v_deftype), ARRAY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_comptype: `%`(ARRAY_comptype(v_fieldtype)) -- Expand: `%~~%`(v_deftype, ARRAY_comptype(v_fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, v_deftype : deftype, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%<:%`(C, $heaptype_deftype(v_deftype), FUNC_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- Expand: `%~~%`(v_deftype, FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule typeidx_l{C : context, v_typeidx : typeidx, v_heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(v_typeidx), v_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(v_heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(v_typeidx)) -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(v_typeidx).0]), v_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule typeidx_r{C : context, v_heaptype : heaptype, v_typeidx : typeidx}: `%|-%<:%`(C, v_heaptype, _IDX_heaptype(v_typeidx)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(v_heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(v_typeidx)) -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(v_typeidx).0])) @@ -5679,71 +5449,43 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) rule rec{C : context, i : n, typeuse_lst : typeuse*, j : nat, final_opt : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse_lst[j])) -- if (j < |typeuse_lst|) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_subtype: `%`(SUB_subtype(final_opt, typeuse_lst, ct)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final_opt, typeuse_lst, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, v_heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, v_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(v_heaptype) - -- wf_heaptype: `%`(NONE_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, v_heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, v_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(v_heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) - -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, v_heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, v_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(v_heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) - -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, v_heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, v_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(v_heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) - -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, v_heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, v_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(v_heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5751,38 +5493,27 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) - -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) - -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, v_valtype : valtype}: `%|-%<:%`(C, BOT_valtype, v_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(v_valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule mk_Resulttype_sub{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%<:%`(C, mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- t_1_lst} - -- (wf_valtype: `%`(t_2))*{t_2 <- t_2_lst} -- if (|t_1_lst| = |t_2_lst|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- t_1_lst, t_2 <- t_2_lst} @@ -5791,15 +5522,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) - -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5807,17 +5534,11 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, mk_fieldtype_fieldtype(?(), zt_1), mk_fieldtype_fieldtype(?(), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, mk_fieldtype_fieldtype(?(MUT_mut), zt_1), mk_fieldtype_fieldtype(?(MUT_mut), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5827,9 +5548,6 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Instrtype_ok{C : context, t_1_lst : valtype*, x_lst : idx*, t_2_lst : valtype*, lct_lst : localtype*}: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- (wf_localtype: `%`(lct))*{lct <- lct_lst} - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_1_lst)) -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_2_lst)) -- if (|lct_lst| = |x_lst|) @@ -5841,16 +5559,11 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{v_deftype : deftype, C : context, v_comptype : comptype}: `%~~_%%`($typeuse_deftype(v_deftype), C, v_comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(v_comptype) -- Expand: `%~~%`(v_deftype, v_comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{v_typeidx : typeidx, C : context, v_comptype : comptype}: `%~~_%%`(_IDX_typeuse(v_typeidx), C, v_comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(v_comptype) - -- wf_typeuse: `%`(_IDX_typeuse(v_typeidx)) -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(v_typeidx).0], v_comptype) @@ -5859,8 +5572,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Limits_ok{C : context, v_n : n, m_opt : m?, k : nat}: `%|-%:%`(C, mk_limits_limits(mk_uN_u64(v_n), mk_uN_u64(v_m)?{v_m <- m_opt}), k) - -- wf_context: `%`(C) - -- wf_limits: `%`(mk_limits_limits(mk_uN_u64(v_n), mk_uN_u64(v_m)?{v_m <- m_opt})) -- if (v_n <= k) -- (if ((v_n <= v_m) /\ (v_m <= k)))?{v_m <- m_opt} @@ -5869,9 +5580,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Tagtype_ok{C : context, v_typeuse : typeuse, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:OK`(C, v_typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(v_typeuse) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- Typeuse_ok: `%|-%:OK`(C, v_typeuse) -- Expand_use: `%~~_%%`(v_typeuse, C, FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) @@ -5880,8 +5588,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Globaltype_ok{C : context, t : valtype}: `%|-%:OK`(C, mk_globaltype_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(mk_globaltype_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5889,8 +5595,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Memtype_ok{C : context, v_addrtype : addrtype, v_limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(v_addrtype, v_limits)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(v_addrtype, v_limits)) -- Limits_ok: `%|-%:%`(C, v_limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5898,8 +5602,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Tabletype_ok{C : context, v_addrtype : addrtype, v_limits : limits, v_reftype : reftype}: `%|-%:OK`(C, mk_tabletype_tabletype(v_addrtype, v_limits, v_reftype)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(mk_tabletype_tabletype(v_addrtype, v_limits, v_reftype)) -- Limits_ok: `%|-%:%`(C, v_limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, v_reftype) @@ -5908,37 +5610,26 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, v_tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(v_tagtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(v_tagtype)) -- Tagtype_ok: `%|-%:OK`(C, v_tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, v_globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(v_globaltype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(v_globaltype)) -- Globaltype_ok: `%|-%:OK`(C, v_globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, v_memtype : memtype}: `%|-%:OK`(C, MEM_externtype(v_memtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(v_memtype)) -- Memtype_ok: `%|-%:OK`(C, v_memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, v_tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(v_tabletype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(v_tabletype)) -- Tabletype_ok: `%|-%:OK`(C, v_tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, v_typeuse : typeuse, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:OK`(C, FUNC_externtype(v_typeuse)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(v_typeuse)) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- Typeuse_ok: `%|-%:OK`(C, v_typeuse) -- Expand_use: `%~~_%%`(v_typeuse, C, FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) @@ -5947,11 +5638,6 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Instrtype_sub{C : context, t_11_lst : valtype*, x_1_lst : idx*, t_12_lst : valtype*, t_21_lst : valtype*, x_2_lst : idx*, t_22_lst : valtype*, x_lst : idx*, t_lst : valtype*}: `%|-%<:%`(C, mk_instrtype_instrtype(mk_list_resulttype(t_11_lst), x_1_lst, mk_list_resulttype(t_12_lst)), mk_instrtype_instrtype(mk_list_resulttype(t_21_lst), x_2_lst, mk_list_resulttype(t_22_lst))) - -- wf_context: `%`(C) - -- (wf_uN: `%%`(32, x))*{x <- x_lst} - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_11_lst), x_1_lst, mk_list_resulttype(t_12_lst))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_21_lst), x_2_lst, mk_list_resulttype(t_22_lst))) - -- (wf_localtype: `%`(mk_localtype_localtype(SET_init, t)))*{t <- t_lst} -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_21_lst), mk_list_resulttype(t_11_lst)) -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_12_lst), mk_list_resulttype(t_22_lst)) -- if (x_lst = $setminus_(syntax localidx, x_2_lst, x_1_lst)) @@ -5964,9 +5650,6 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Limits_sub{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, mk_limits_limits(mk_uN_u64(n_1), ?(mk_uN_u64(m_1))), mk_limits_limits(mk_uN_u64(n_2), ?(mk_uN_u64(m_2)))) - -- wf_context: `%`(C) - -- wf_limits: `%`(mk_limits_limits(mk_uN_u64(n_1), ?(mk_uN_u64(m_1)))) - -- wf_limits: `%`(mk_limits_limits(mk_uN_u64(n_2), ?(mk_uN_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5975,7 +5658,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Tagtype_sub{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) - -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5984,17 +5666,11 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, mk_globaltype_globaltype(?(), valtype_1), mk_globaltype_globaltype(?(), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(mk_globaltype_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(mk_globaltype_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, mk_globaltype_globaltype(?(MUT_mut), valtype_1), mk_globaltype_globaltype(?(MUT_mut), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(mk_globaltype_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(mk_globaltype_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -6003,9 +5679,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Memtype_sub{C : context, v_addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(v_addrtype, limits_1), `%%PAGE`_memtype(v_addrtype, limits_2)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(v_addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(v_addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -6013,9 +5686,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Tabletype_sub{C : context, v_addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, mk_tabletype_tabletype(v_addrtype, limits_1, reftype_1), mk_tabletype_tabletype(v_addrtype, limits_2, reftype_2)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(mk_tabletype_tabletype(v_addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(mk_tabletype_tabletype(v_addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -6025,41 +5695,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6067,18 +5722,11 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, valtype_opt : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype_opt), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(lift(valtype_opt)))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype_opt)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(lift(valtype_opt)))) -- (Valtype_ok: `%|-%:OK`(C, v_valtype))?{v_valtype <- valtype_opt} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, v_typeidx : typeidx, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, _IDX_blocktype(v_typeidx), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(v_typeidx)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(v_typeidx).0], FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) @@ -6087,9 +5735,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, t_lst : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -6098,9 +5743,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, t_lst : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -6109,16 +5751,12 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) @@ -6126,22 +5764,16 @@ relation Catch_ok: `%|-%:OK`(context, catch) def $default_(v_valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I32_valtype) = ?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) - -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I64_valtype) = ?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, mk_uN_uN(0)))) - -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, mk_uN_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F32_valtype) = ?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F64_valtype) = ?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(V128_valtype) = ?(VCONST_val(V128_vectype, mk_uN_vec_(0))) - -- wf_val: `%`(VCONST_val(V128_vectype, mk_uN_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF_NULL_val(ht)) - -- wf_val: `%`(REF_NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -6150,7 +5782,6 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule mk_Defaultable{t : valtype}: `|-%DEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6166,41 +5797,25 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, mk_instrtype_instrtype(mk_list_resulttype([t]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t]), [], mk_list_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule select_expl{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), mk_instrtype_instrtype(mk_list_resulttype([t t I32_valtype]), [], mk_list_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t t I32_valtype]), [], mk_list_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule select_impl{C : context, t : valtype, t' : valtype, v_numtype : numtype, v_vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), mk_instrtype_instrtype(mk_list_resulttype([t t I32_valtype]), [], mk_list_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t t I32_valtype]), [], mk_list_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = $valtype_numtype(v_numtype)) \/ (t' = $valtype_vectype(v_vectype))) @@ -6208,35 +5823,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_lst : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr_lst)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) -- Blocktype_ok: `%|-%:%`(C, bt, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_lst : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr_lst)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_1_lst)], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) -- Blocktype_ok: `%|-%:%`(C, bt, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_1_lst)], RETURN ?(), REFS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, instr_1_lst : instr*, instr_2_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_1_lst : idx*, x_2_lst : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [I32_valtype]), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [I32_valtype]), [], mk_list_resulttype(t_2_lst))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_2_lst, mk_list_resulttype(t_2_lst))) -- Blocktype_ok: `%|-%:%`(C, bt, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []} +++ C, instr_1_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []} +++ C, instr_2_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_2_lst, mk_list_resulttype(t_2_lst))) @@ -6244,10 +5842,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, BR_instr(l), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t_lst) -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) @@ -6255,18 +5849,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, t_lst : valtype*}: `%|-%:%`(C, BR_IF_instr(l), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [I32_valtype]), [], mk_list_resulttype(t_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [I32_valtype]), [], mk_list_resulttype(t_lst))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t_lst) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, l_lst : labelidx*, l' : labelidx, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l_lst, l'), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst ++ [I32_valtype]), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l_lst, l')) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst ++ [I32_valtype]), [], mk_list_resulttype(t_2_lst))) -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- l_lst} -- (Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_lst), C.LABELS_context[$proj_uN_0(l).0]))*{l <- l_lst} -- if ($proj_uN_0(l').0 < |C.LABELS_context|) @@ -6276,9 +5864,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, t_lst : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype(t_lst ++ [REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype(t_lst ++ [REF_valtype(?(), ht)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t_lst) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -6286,19 +5871,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, t_lst : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype(t_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype(t_lst))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, t_lst : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = mk_list_resulttype(t_lst ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -6309,10 +5887,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, t_lst : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_2)]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_2)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = mk_list_resulttype(t_lst ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -6323,32 +5897,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, CALL_instr(x), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype(t_2_lst))) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, t_1_lst : valtype*, at : addrtype, t_2_lst : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [$valtype_addrtype(at)]), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [$valtype_addrtype(at)]), [], mk_list_resulttype(t_2_lst))) - -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -6358,22 +5918,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, RETURN_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- if (C.RETURN_context = ?(mk_list_resulttype(t_lst))) -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, t_3_lst : valtype*, t_1_lst : valtype*, t_4_lst : valtype*, t_2_lst : valtype*, t'_2_lst : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst), [], mk_list_resulttype(t_4_lst))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- t'_2_lst} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst), [], mk_list_resulttype(t_4_lst))) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if (C.RETURN_context = ?(mk_list_resulttype(t'_2_lst))) @@ -6383,12 +5933,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, t_3_lst : valtype*, t_1_lst : valtype*, t_4_lst : valtype*, t_2_lst : valtype*, t'_2_lst : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype(t_4_lst))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- t'_2_lst} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype(t_4_lst))) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if (C.RETURN_context = ?(mk_list_resulttype(t'_2_lst))) @@ -6398,14 +5942,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, t_3_lst : valtype*, t_1_lst : valtype*, at : addrtype, t_4_lst : valtype*, lim : limits, rt : reftype, t_2_lst : valtype*, t'_2_lst : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst ++ [$valtype_addrtype(at)]), [], mk_list_resulttype(t_4_lst))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- t'_2_lst} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst ++ [$valtype_addrtype(at)]), [], mk_list_resulttype(t_4_lst))) - -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -6418,11 +5954,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, THROW_instr(x), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) @@ -6430,20 +5961,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, THROW_REF_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], mk_list_resulttype(t_2_lst))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, catch_lst : catch*, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_lst : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, mk_list_list(catch_lst), instr_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, mk_list_list(catch_lst), instr_lst)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) -- Blocktype_ok: `%|-%:%`(C, bt, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) -- (Catch_ok: `%|-%:OK`(C, v_catch))*{v_catch <- catch_lst} @@ -6451,17 +5973,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref_null{C : context, ht : heaptype}: `%|-%:%`(C, REF_NULL_instr(ht), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(NULL_null), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF_NULL_instr(ht)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref_func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF_FUNC_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF_FUNC_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (|C.REFS_context| > 0) @@ -6470,39 +5986,24 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref_i31{C : context}: `%|-%:%`(C, REF_I31_instr, mk_instrtype_instrtype(mk_list_resulttype([I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF_I31_instr) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref_is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF_IS_NULL_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF_IS_NULL_instr) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref_as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF_AS_NON_NULL_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype([REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF_AS_NON_NULL_instr) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref_eq{C : context}: `%|-%:%`(C, REF_EQ_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], mk_list_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF_EQ_instr) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref_test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF_TEST_instr(rt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt')]), [], mk_list_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF_TEST_instr(rt)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt')]), [], mk_list_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6510,9 +6011,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref_cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF_CAST_instr(rt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt')]), [], mk_list_resulttype([$valtype_reftype(rt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF_CAST_instr(rt)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt')]), [], mk_list_resulttype([$valtype_reftype(rt)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6520,27 +6018,16 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31_get{C : context, v_sx : sx}: `%|-%:%`(C, I31_GET_instr(v_sx), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], mk_list_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(I31_GET_instr(v_sx)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct_new{C : context, x : idx, zt_lst : storagetype*, mut_opt_lst : mut?*}: `%|-%:%`(C, STRUCT_NEW_instr(x), mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)*{zt <- zt_lst}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT_NEW_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)*{zt <- zt_lst}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct_new_default{C : context, x : idx, mut_opt_lst : mut?*, zt_lst : storagetype*}: `%|-%:%`(C, STRUCT_NEW_DEFAULT_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT_NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- zt_lst} @@ -6548,11 +6035,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct_get{C : context, sx_opt : sx?, x : idx, i : u32, zt : storagetype, ft_lst : fieldtype*, mut_opt : mut?}: `%|-%:%`(C, STRUCT_GET_instr(sx_opt, x, i), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT_GET_instr(sx_opt, x, i)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_lst))) - -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(mut_opt, zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(ft_lst))) -- if ($proj_uN_0(i).0 < |ft_lst|) @@ -6562,11 +6044,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct_set{C : context, x : idx, i : u32, zt : storagetype, ft_lst : fieldtype*}: `%|-%:%`(C, STRUCT_SET_instr(x, i), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT_SET_instr(x, i)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], mk_list_resulttype([]))) - -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_lst))) - -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(MUT_mut), zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(ft_lst))) -- if ($proj_uN_0(i).0 < |ft_lst|) @@ -6575,20 +6052,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array_new{C : context, x : idx, zt : storagetype, mut_opt : mut?}: `%|-%:%`(C, ARRAY_NEW_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$unpack(zt) I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY_NEW_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$unpack(zt) I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array_new_default{C : context, x : idx, mut_opt : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY_NEW_DEFAULT_instr(x), mk_instrtype_instrtype(mk_list_resulttype([I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY_NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) @@ -6596,20 +6065,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array_new_fixed{C : context, x : idx, v_n : n, zt : storagetype, mut_opt : mut?}: `%|-%:%`(C, ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n)), mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)^v_n{}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)^v_n{}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array_new_elem{C : context, x : idx, y : idx, mut_opt : mut?, rt : reftype}: `%|-%:%`(C, ARRAY_NEW_ELEM_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY_NEW_ELEM_instr(x, y)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, $storagetype_reftype(rt)))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, $storagetype_reftype(rt)))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6618,10 +6079,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array_new_data{C : context, x : idx, y : idx, mut_opt : mut?, zt : storagetype, v_numtype : numtype, v_vectype : vectype}: `%|-%:%`(C, ARRAY_NEW_DATA_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY_NEW_DATA_instr(x, y)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if (($unpack(zt) = $valtype_numtype(v_numtype)) \/ ($unpack(zt) = $valtype_vectype(v_vectype))) @@ -6631,10 +6088,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array_get{C : context, sx_opt : sx?, x : idx, zt : storagetype, mut_opt : mut?}: `%|-%:%`(C, ARRAY_GET_instr(sx_opt, x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], mk_list_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY_GET_instr(sx_opt, x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], mk_list_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ((sx_opt = ?()) <=> $is_packtype(zt)) @@ -6642,38 +6095,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array_set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY_SET_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], mk_list_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array_len{C : context}: `%|-%:%`(C, ARRAY_LEN_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], mk_list_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY_LEN_instr) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array_fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY_FILL_instr(x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY_FILL_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], mk_list_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array_copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, mut_opt : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY_COPY_instr(x_1, x_2), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY_COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt_1))) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt_1))) -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) @@ -6683,10 +6120,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array_init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY_INIT_ELEM_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY_INIT_ELEM_instr(x, y)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], mk_list_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6695,10 +6128,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array_init_data{C : context, x : idx, y : idx, zt : storagetype, v_numtype : numtype, v_vectype : vectype}: `%|-%:%`(C, ARRAY_INIT_DATA_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY_INIT_DATA_instr(x, y)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], mk_list_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = $valtype_numtype(v_numtype)) \/ ($unpack(zt) = $valtype_vectype(v_vectype))) @@ -6708,127 +6137,76 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern_convert_any{C : context, null_1_opt : null?, null_2_opt : null?}: `%|-%:%`(C, EXTERN_CONVERT_ANY_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(null_1_opt, ANY_heaptype)]), [], mk_list_resulttype([REF_valtype(null_2_opt, EXTERN_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN_CONVERT_ANY_instr) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(null_1_opt, ANY_heaptype)]), [], mk_list_resulttype([REF_valtype(null_2_opt, EXTERN_heaptype)]))) -- if (null_1_opt = null_2_opt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any_convert_extern{C : context, null_1_opt : null?, null_2_opt : null?}: `%|-%:%`(C, ANY_CONVERT_EXTERN_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(null_1_opt, EXTERN_heaptype)]), [], mk_list_resulttype([REF_valtype(null_2_opt, ANY_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY_CONVERT_EXTERN_instr) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(null_1_opt, EXTERN_heaptype)]), [], mk_list_resulttype([REF_valtype(null_2_opt, ANY_heaptype)]))) -- if (null_1_opt = null_2_opt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local_get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL_GET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL_GET_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) - -- wf_localtype: `%`(mk_localtype_localtype(SET_init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = mk_localtype_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local_set{C : context, x : idx, t : valtype, v_init : init}: `%|-%:%`(C, LOCAL_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([t]), [x], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL_SET_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t]), [x], mk_list_resulttype([]))) - -- wf_localtype: `%`(mk_localtype_localtype(v_init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = mk_localtype_localtype(v_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local_tee{C : context, x : idx, t : valtype, v_init : init}: `%|-%:%`(C, LOCAL_TEE_instr(x), mk_instrtype_instrtype(mk_list_resulttype([t]), [x], mk_list_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL_TEE_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t]), [x], mk_list_resulttype([t]))) - -- wf_localtype: `%`(mk_localtype_localtype(v_init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = mk_localtype_localtype(v_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global_get{C : context, x : idx, t : valtype, mut_opt : mut?}: `%|-%:%`(C, GLOBAL_GET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL_GET_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) - -- wf_globaltype: `%`(mk_globaltype_globaltype(mut_opt, t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = mk_globaltype_globaltype(mut_opt, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global_set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([t]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL_SET_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t]), [], mk_list_resulttype([]))) - -- wf_globaltype: `%`(mk_globaltype_globaltype(?(MUT_mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = mk_globaltype_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table_get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE_GET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_reftype(rt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE_GET_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_reftype(rt)]))) - -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table_set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE_SET_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], mk_list_resulttype([]))) - -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table_size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_SIZE_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_addrtype(at)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE_SIZE_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_addrtype(at)]))) - -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table_grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE_GROW_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], mk_list_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE_GROW_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], mk_list_resulttype([I32_valtype]))) - -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table_fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE_FILL_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE_FILL_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], mk_list_resulttype([]))) - -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table_copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE_COPY_instr(x_1, x_2), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE_COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], mk_list_resulttype([]))) - -- wf_tabletype: `%`(mk_tabletype_tabletype(at_1, lim_1, rt_1)) - -- wf_tabletype: `%`(mk_tabletype_tabletype(at_2, lim_2, rt_2)) -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = mk_tabletype_tabletype(at_1, lim_1, rt_1)) -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) @@ -6838,11 +6216,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table_init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE_INIT_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(TABLE_INIT_instr(x, y)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) - -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6852,51 +6225,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem_drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM_DROP_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(ELEM_DROP_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory_size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY_SIZE_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_addrtype(at)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY_SIZE_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_addrtype(at)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory_grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY_GROW_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_addrtype(at)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY_GROW_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_addrtype(at)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory_fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY_FILL_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY_FILL_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], mk_list_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory_copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY_COPY_instr(x_1, x_2), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY_COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], mk_list_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) @@ -6905,10 +6257,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory_init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY_INIT_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY_INIT_instr(x, y)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) @@ -6917,19 +6265,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data_drop{C : context, x : idx}: `%|-%:%`(C, DATA_DROP_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DATA_DROP_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule load_val{C : context, nt : numtype, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, v_memarg)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6937,10 +6278,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule load_pack{C : context, v_Inn : Inn, v_M : M, v_sx : sx, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_M), v_sx))), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_addrtype(v_Inn)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_M), v_sx))), x, v_memarg)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_addrtype(v_Inn)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= ((v_M : nat <:> rat) / (8 : nat <:> rat))) @@ -6948,10 +6285,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule store_val{C : context, nt : numtype, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, v_memarg)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], mk_list_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6959,10 +6292,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule store_pack{C : context, v_Inn : Inn, v_M : M, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_M)))), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_addrtype(v_Inn)]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_M)))), x, v_memarg)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_addrtype(v_Inn)]), [], mk_list_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= ((v_M : nat <:> rat) / (8 : nat <:> rat))) @@ -6970,10 +6299,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule vload_val{C : context, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, v_memarg)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6981,10 +6306,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule vload_pack{C : context, v_M : M, v_N : N, v_sx : sx, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_N, v_sx)), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_N, v_sx)), x, v_memarg)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= (((v_M : nat <:> rat) / (8 : nat <:> rat)) * (v_N : nat <:> rat))) @@ -6992,10 +6313,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule vload_splat{C : context, v_N : N, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, v_memarg)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= ((v_N : nat <:> rat) / (8 : nat <:> rat))) @@ -7003,10 +6320,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule vload_zero{C : context, v_N : N, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, v_memarg)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= ((v_N : nat <:> rat) / (8 : nat <:> rat))) @@ -7014,10 +6327,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, v_N : N, x : idx, v_memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, v_memarg, i), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, v_memarg, i)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= ((v_N : nat <:> rat) / (8 : nat <:> rat))) @@ -7026,10 +6335,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, v_memarg)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -7037,10 +6342,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, v_N : N, x : idx, v_memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, v_memarg, i), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, v_memarg, i)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= ((v_N : nat <:> rat) / (8 : nat <:> rat))) @@ -7049,223 +6350,129 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt)]), [], mk_list_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt)]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], mk_list_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt_2)]), [], mk_list_resulttype([$valtype_numtype(nt_1)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt_2)]), [], mk_list_resulttype([$valtype_numtype(nt_1)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, v_vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, v_vvunop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, v_vvunop)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, v_vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, v_vvbinop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, v_vvbinop)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, v_vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, v_vvternop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, v_vvternop)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, v_vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, v_vvtestop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, v_vvtestop)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype I32_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype I32_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, i_lst : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i_lst), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i_lst)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($fun_dim($proj_bshape_0(sh).0)).0)))*{i <- i_lst} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype($unpackshape(sh))]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype($unpackshape(sh))]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, sx_opt : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx_opt, i), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([$valtype_numtype($unpackshape(sh))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx_opt, i)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([$valtype_numtype($unpackshape(sh))]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($fun_dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], mk_list_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($fun_dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, v_sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, v_sx), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, v_sx)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, instr_2_lst : instr*, t_1_lst : valtype*, x_1_lst : idx*, x_2_lst : idx*, t_3_lst : valtype*, t_2_lst : valtype*, init_lst : init*, t_lst : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst ++ x_2_lst, mk_list_resulttype(t_3_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- instr_2_lst} - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst ++ x_2_lst, mk_list_resulttype(t_3_lst))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) - -- if (|init_lst| = |t_lst|) - -- (wf_localtype: `%`(mk_localtype_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst} - -- (wf_localtype: `%`(mk_localtype_localtype(SET_init, t)))*{t <- t_lst} - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_2_lst), x_2_lst, mk_list_resulttype(t_3_lst))) -- Instr_ok: `%|-%:%`(C, instr_1, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) + -- if (|init_lst| = |t_lst|) -- if (|init_lst| = |x_1_lst|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- x_1_lst} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = mk_localtype_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst, x_1 <- x_1_lst} @@ -7274,10 +6481,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, instr_lst : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr_lst, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} - -- wf_instrtype: `%`(it') - -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr_lst, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -7285,10 +6488,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, instr_lst : instr*, t_lst : valtype*, t_1_lst : valtype*, x_lst : idx*, t_2_lst : valtype*}: `%|-%:%`(C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ t_1_lst), x_lst, mk_list_resulttype(t_lst ++ t_2_lst))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ t_1_lst), x_lst, mk_list_resulttype(t_lst ++ t_2_lst))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) -- Instrs_ok: `%|-%:%`(C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_lst)) } @@ -7298,9 +6497,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule mk_Expr_ok{C : context, instr_lst : instr*, t_lst : valtype*}: `%|-%:%`(C, instr_lst, mk_list_resulttype(t_lst)) - -- wf_context: `%`(C) - -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) -- Instrs_ok: `%|-%:%`(C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7308,7 +6504,6 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule mk_Nondefaultable{t : valtype}: `|-%NONDEFAULTABLE`(t) - -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7316,92 +6511,60 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref_null{C : context, ht : heaptype}: `%|-%CONST`(C, REF_NULL_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF_NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref_i31{C : context}: `%|-%CONST`(C, REF_I31_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF_I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref_func{C : context, x : idx}: `%|-%CONST`(C, REF_FUNC_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF_FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct_new{C : context, x : idx}: `%|-%CONST`(C, STRUCT_NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT_NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct_new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT_NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT_NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array_new{C : context, x : idx}: `%|-%CONST`(C, ARRAY_NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY_NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array_new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY_NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY_NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array_new_fixed{C : context, x : idx, v_n : n}: `%|-%CONST`(C, ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any_convert_extern{C : context}: `%|-%CONST`(C, ANY_CONVERT_EXTERN_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY_CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern_convert_any{C : context}: `%|-%CONST`(C, EXTERN_CONVERT_ANY_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN_CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global_get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL_GET_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL_GET_instr(x)) - -- wf_globaltype: `%`(mk_globaltype_globaltype(?(), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = mk_globaltype_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, v_Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr($numtype_addrtype(v_Inn), binop)) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr($numtype_addrtype(v_Inn), binop)) - -- wf_binop_: `%%`($numtype_addrtype(v_Inn), mk_binop__0_binop_(v_Inn, ADD_binop_Inn)) - -- wf_binop_: `%%`($numtype_addrtype(v_Inn), mk_binop__0_binop_(v_Inn, SUB_binop_Inn)) - -- wf_binop_: `%%`($numtype_addrtype(v_Inn), mk_binop__0_binop_(v_Inn, MUL_binop_Inn)) -- if (v_Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(v_Inn, ADD_binop_Inn) mk_binop__0_binop_(v_Inn, SUB_binop_Inn) mk_binop__0_binop_(v_Inn, MUL_binop_Inn)]) @@ -7410,8 +6573,6 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule mk_Expr_const{C : context, instr_lst : instr*}: `%|-%CONST`(C, instr_lst) - -- wf_context: `%`(C) - -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} -- (Instr_const: `%|-%CONST`(C, v_instr))*{v_instr <- instr_lst} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7419,9 +6580,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule mk_Expr_ok_const{C : context, v_expr : expr, t : valtype}: `%|-%:%CONST`(C, v_expr, t) - -- wf_context: `%`(C) - -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} - -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, v_expr, mk_list_resulttype([t])) -- Expr_const: `%|-%CONST`(C, v_expr) @@ -7430,9 +6588,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Type_ok{C : context, v_rectype : rectype, dt_lst : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(v_rectype), dt_lst) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt_lst, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt_lst = $rolldt(x, v_rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt_lst, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, v_rectype, OK_oktypeidx(x)) @@ -7442,8 +6597,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Tag_ok{C : context, v_tagtype : tagtype}: `%|-%:%`(C, TAG_tag(v_tagtype), $clos_tagtype(C, v_tagtype)) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(v_tagtype)) -- Tagtype_ok: `%|-%:OK`(C, v_tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7451,9 +6604,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Global_ok{C : context, v_globaltype : globaltype, v_expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(v_globaltype, v_expr), v_globaltype) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(v_globaltype, v_expr)) - -- wf_globaltype: `%`(mk_globaltype_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, v_globaltype) -- if (v_globaltype = mk_globaltype_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, v_expr, t) @@ -7463,8 +6613,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Mem_ok{C : context, v_memtype : memtype}: `%|-%:%`(C, MEMORY_mem(v_memtype), v_memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(v_memtype)) -- Memtype_ok: `%|-%:OK`(C, v_memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7472,9 +6620,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Table_ok{C : context, v_tabletype : tabletype, v_expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(v_tabletype, v_expr), v_tabletype) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(v_tabletype, v_expr)) - -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, v_tabletype) -- if (v_tabletype = mk_tabletype_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, v_expr, $valtype_reftype(rt)) @@ -7484,17 +6629,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), mk_localtype_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(mk_localtype_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), mk_localtype_localtype(UNSET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(mk_localtype_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7503,10 +6642,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) rule mk_Func_ok{C : context, x : idx, local_lst : local*, v_expr : expr, t_1_lst : valtype*, t_2_lst : valtype*, lct_lst : localtype*}: `%|-%:%`(C, FUNC_func(x, local_lst, v_expr), C.TYPES_context[$proj_uN_0(x).0]) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local_lst, v_expr)) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS mk_localtype_localtype(SET_init, t_1)*{t_1 <- t_1_lst} ++ lct_lst, LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(mk_list_resulttype(t_2_lst)), REFS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if (|lct_lst| = |local_lst|) -- (Local_ok: `%|-%:%`(C, v_local, lct))*{lct <- lct_lst, v_local <- local_lst} @@ -7517,15 +6652,10 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, v_expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, v_expr), OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, v_expr)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, v_expr, $valtype_addrtype(at)) @@ -7535,8 +6665,6 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Data_ok{C : context, b_lst : byte*, v_datamode : datamode}: `%|-%:%`(C, DATA_data(b_lst, v_datamode), OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b_lst, v_datamode)) -- Datamode_ok: `%|-%:%`(C, v_datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7544,24 +6672,14 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, v_expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, v_expr), rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, v_expr)) - -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt')) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -7572,8 +6690,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Elem_ok{C : context, v_elemtype : elemtype, expr_lst : expr*, v_elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(v_elemtype, expr_lst, v_elemmode), v_elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(v_elemtype, expr_lst, v_elemmode)) -- Reftype_ok: `%|-%:OK`(C, v_elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, v_expr, $valtype_reftype(v_elemtype)))*{v_expr <- expr_lst} -- Elemmode_ok: `%|-%:%`(C, v_elemmode, v_elemtype) @@ -7583,9 +6699,6 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Start_ok{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype([]), mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], FUNC_comptype(mk_list_resulttype([]), mk_list_resulttype([]))) @@ -7594,8 +6707,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Import_ok{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7603,45 +6714,30 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) @@ -7650,9 +6746,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Export_ok{C : context, v_name : name, v_externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(v_name, v_externidx), v_name, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(v_name, v_externidx)) -- Externidx_ok: `%|-%:%`(C, v_externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7663,16 +6756,10 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, global_lst : global*, gt_1 : globaltype, gt_lst : globaltype*}: `%|-%:%`(C, [global_1] ++ global_lst, [gt_1] ++ gt_lst) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(v_global))*{v_global <- global_lst} - -- (wf_globaltype: `%`(gt))*{gt <- gt_lst} - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global_lst, gt_lst) } @@ -7685,13 +6772,10 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, type_lst : type*, dt_1_lst : deftype*, dt_lst : deftype*}: `%|-%:%`(C, [type_1] ++ type_lst, dt_1_lst ++ dt_lst) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt_1_lst, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1_lst) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1_lst, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type_lst, dt_lst) } @@ -7714,23 +6798,12 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(v_nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{global_lst : global*, mem_lst : mem*, table_lst : table*, elem_lst : elem*}(mk_nonfuncs_nonfuncs(global_lst, mem_lst, table_lst, elem_lst)) = $funcidx_module(MODULE_module([], [], [], global_lst, mem_lst, table_lst, [], [], elem_lst, ?(), [])) - -- wf_module: `%`(MODULE_module([], [], [], global_lst, mem_lst, table_lst, [], [], elem_lst, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Module_ok{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, C : context, xt_I_lst : externtype*, xt_E_lst : externtype*, dt'_lst : deftype*, C' : context, jt_lst : tagtype*, gt_lst : globaltype*, mt_lst : memtype*, tt_lst : tabletype*, dt_lst : deftype*, ok_lst : datatype*, rt_lst : reftype*, nm_lst : name*, jt_I_lst : tagtype*, mt_I_lst : memtype*, tt_I_lst : tabletype*, gt_I_lst : globaltype*, dt_I_lst : deftype*, x_lst : idx*}: `|-%:%`(MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst), $clos_moduletype(C, mk_moduletype_moduletype(xt_I_lst, xt_E_lst))) - -- wf_context: `%`(C) - -- wf_context: `%`(C') - -- (wf_name: `%`(nm))*{nm <- nm_lst} - -- wf_module: `%`(MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst)) - -- wf_moduletype: `%`(mk_moduletype_moduletype(xt_I_lst, xt_E_lst)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'_lst, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I_lst ++ jt_lst, GLOBALS gt_lst, MEMS mt_I_lst ++ mt_lst, TABLES tt_I_lst ++ tt_lst, FUNCS [], DATAS ok_lst, ELEMS rt_lst, LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'_lst, RECS [], TAGS [], GLOBALS gt_I_lst, MEMS [], TABLES [], FUNCS dt_I_lst ++ dt_lst, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x_lst}) - -- wf_nonfuncs: `%`(mk_nonfuncs_nonfuncs(global_lst, mem_lst, table_lst, elem_lst)) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type_lst, dt'_lst) -- if (|import_lst| = |xt_I_lst|) -- (Import_ok: `%|-%:%`({TYPES dt'_lst, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, v_import, xt_I))*{v_import <- import_lst, xt_I <- xt_I_lst} @@ -7920,22 +6993,16 @@ def $fun_sx(v_storagetype : storagetype) : sx? def $fun_zero(v_lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, mk_uN_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, mk_uN_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, mk_uN_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, mk_uN_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, mk_uN_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, mk_uN_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, mk_uN_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, mk_uN_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(v_bool : bool) : nat @@ -7964,7 +7031,6 @@ def $sat_s_(v_N : N, int : int) : int def $ineg_(v_N : N, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{v_N : nat, i_1 : uN}(v_N, i_1) = mk_uN_iN((((((2 ^ v_N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ v_N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(v_N, mk_uN_uN((((((2 ^ v_N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ v_N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(v_N : N, v_iN : iN) : iN @@ -7984,28 +7050,23 @@ def $ipopcnt_(v_N : N, v_iN : iN) : iN def $iextend_(v_N : N, v_M : M, v_sx : sx, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{v_N : nat, v_M : nat, i : uN}(v_N, v_M, U_sx, i) = mk_uN_iN(($proj_uN_0(i).0 \ (2 ^ v_M))) - -- wf_uN: `%%`(v_N, mk_uN_uN(($proj_uN_0(i).0 \ (2 ^ v_M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{v_N : nat, v_M : nat, i : uN}(v_N, v_M, S_sx, i) = mk_uN_iN($inv_signed_(v_N, $signed_(v_M, ($proj_uN_0(i).0 \ (2 ^ v_M))))) - -- wf_uN: `%%`(v_N, mk_uN_uN($inv_signed_(v_N, $signed_(v_M, ($proj_uN_0(i).0 \ (2 ^ v_M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ v_N))) - -- wf_uN: `%%`(v_N, mk_uN_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ v_N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_iN(((((((2 ^ v_N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ v_N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(v_N, mk_uN_uN(((((((2 ^ v_N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ v_N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ v_N))) - -- wf_uN: `%%`(v_N, mk_uN_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ v_N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN? @@ -8013,7 +7074,6 @@ def $idiv_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN? def $idiv_{v_N : nat, i_1 : uN}(v_N, U_sx, i_1, mk_uN_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = ?(mk_uN_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(v_N, mk_uN_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{v_N : nat, i_1 : uN}(v_N, S_sx, i_1, mk_uN_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8021,7 +7081,6 @@ def $idiv_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN? -- if ((($signed_(v_N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(v_N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = ?(mk_uN_iN($inv_signed_(v_N, $truncz((($signed_(v_N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(v_N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(v_N, mk_uN_uN($inv_signed_(v_N, $truncz((($signed_(v_N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(v_N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN? @@ -8029,12 +7088,10 @@ def $irem_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN? def $irem_{v_N : nat, i_1 : uN}(v_N, U_sx, i_1, mk_uN_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = ?(mk_uN_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(v_N, mk_uN_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{v_N : nat, i_1 : uN}(v_N, S_sx, i_1, mk_uN_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{v_N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(v_N, S_sx, i_1, i_2) = ?(mk_uN_iN($inv_signed_(v_N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- wf_uN: `%%`(v_N, mk_uN_uN($inv_signed_(v_N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(v_N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(v_N, $proj_uN_0(i_2).0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8063,19 +7120,15 @@ def $imax_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN def $iadd_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_iN($sat_u_(v_N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) - -- wf_uN: `%%`(v_N, mk_uN_uN($sat_u_(v_N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_iN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) + $signed_(v_N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(v_N, mk_uN_uN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) + $signed_(v_N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_iN($sat_u_(v_N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) - -- wf_uN: `%%`(v_N, mk_uN_uN($sat_u_(v_N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_iN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) - $signed_(v_N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(v_N, mk_uN_uN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) - $signed_(v_N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN @@ -8126,61 +7179,49 @@ def $irelaxed_laneselect_(v_N : N, v_iN : iN, v_iN_0 : iN, v_iN_1 : iN) : iN* def $ieqz_(v_N : N, v_iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{v_N : nat, i_1 : uN}(v_N, i_1) = mk_uN_u32($bool(($proj_uN_0(i_1).0 = 0))) - -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(v_N : N, v_iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{v_N : nat, i_1 : uN}(v_N, i_1) = mk_uN_u32($bool(($proj_uN_0(i_1).0 =/= 0))) - -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(v_N : N, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, mk_uN_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(v_N : N, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, mk_uN_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) < $signed_(v_N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, mk_uN_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) < $signed_(v_N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) > $signed_(v_N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, mk_uN_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) > $signed_(v_N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) <= $signed_(v_N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, mk_uN_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) <= $signed_(v_N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) >= $signed_(v_N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, mk_uN_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) >= $signed_(v_N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(v_N : N, v_fN : fN) : fN* @@ -8294,22 +7335,16 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, v_num_ : num_) : nu def $lpacknum_(v_lanetype : lanetype, v_num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) - -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) - -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ @@ -8325,10 +7360,8 @@ def $cpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ def $cpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) - -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) - -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(v_lanetype : lanetype, v_lane_ : lane_) : num_ @@ -8342,10 +7375,8 @@ def $lunpacknum_(v_lanetype : lanetype, v_lane_ : lane_) : num_ def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) - -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) - -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ @@ -8361,196 +7392,134 @@ def $cunpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ def $cunpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) - -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) - -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_(v_numtype : numtype, v_unop_ : unop_, v_num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{v_M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(v_M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), v_M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), v_M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{v_M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(v_M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), v_M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), v_M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_(v_numtype : numtype, v_binop_ : binop_, v_num_ : num_, v_num__0 : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_testop_(v_numtype : numtype, v_testop_ : testop_, v_num_ : num_) : u32 @@ -8614,119 +7583,83 @@ def $fun_relop_(v_numtype : numtype, v_relop_ : relop_, v_num_ : num_, v_num__0 def $fun_cvtop__(numtype_1 : numtype, numtype_2 : numtype, v_cvtop__ : cvtop__, v_num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8944,42 +7877,28 @@ def $fun_half(v_half : half, nat : nat, nat_0 : nat) : nat def $iswizzle_lane_(v_N : N, var_0 : iN*, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{v_N : nat, c_lst : iN*, i : uN}(v_N, c_lst, i) = (if ($proj_uN_0(i).0 < |c_lst|) then c_lst[$proj_uN_0(i).0] else mk_uN_iN(0)) - -- wf_uN: `%%`(v_N, mk_uN_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(v_N : N, var_0 : iN*, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{v_N : nat, c_lst : iN*, i : uN}(v_N, c_lst, i) = (if ($proj_uN_0(i).0 < |c_lst|) then c_lst[$proj_uN_0(i).0] else (if ($signed_(v_N, $proj_uN_0(i).0) < (0 : nat <:> int)) then mk_uN_iN(0) else $fun_relaxed2($R_swizzle, syntax iN, mk_uN_iN(0), c_lst[($proj_uN_0(i).0 \ |c_lst|)]))) - -- wf_uN: `%%`(v_N, mk_uN_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(v_shape : shape, def $f_(v_N : N, v_iN : iN) : iN, v_vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst})] - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst})] - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst})] - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst})] - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} @@ -8987,16 +7906,10 @@ def $ivunop_(v_shape : shape, def $f_(v_N : N, v_iN : iN) : iN, v_vec_ : vec_) : def $fvunop_(v_shape : shape, def $f_(v_N : N, v_fN : fN) : fN*, v_vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{v_M : nat, def $f_(v_N : N, v_fN : fN) : fN*, v_1 : uN, c_lst_lst : lane_**, c_1_lst : lane_*}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- c_1_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- c_1_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{v_M : nat, def $f_(v_N : N, v_fN : fN) : fN*, v_1 : uN, c_lst_lst : lane_**, c_1_lst : lane_*}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- c_1_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- c_1_lst}) {c_lst_lst} @@ -9004,37 +7917,21 @@ def $fvunop_(v_shape : shape, def $f_(v_N : N, v_fN : fN) : fN*, v_vec_ : vec_) def $ivbinop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_vec_ : vec_, v_vec__0 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst})] - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst})] - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst})] - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst})] - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} @@ -9043,37 +7940,21 @@ def $ivbinop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_ve def $ivbinopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst})] - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst})] - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst})] - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst})] - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} @@ -9082,33 +7963,21 @@ def $ivbinopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : i def $ivbinopsxnd_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} @@ -9117,17 +7986,11 @@ def $ivbinopsxnd_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : def $fvbinop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_vec_ : vec_, v_vec__0 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} @@ -9136,36 +7999,24 @@ def $fvbinop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_v def $ivternopnd_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*, c_3_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_3) {c_3_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*, c_3_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_3) {c_3_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*, c_3_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_3) {c_3_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*, c_3_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_3) {c_3_lst} @@ -9175,18 +8026,12 @@ def $ivternopnd_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : def $fvternop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN) : fN*, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*, c_3_lst : lane_*}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_3) {c_3_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*, c_3_lst : lane_*}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_3) {c_3_lst} @@ -9196,30 +8041,18 @@ def $fvternop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN def $ivtestop_(v_shape : shape, def $f_(v_N : N, v_iN : iN) : u32, v_vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : u32, v_1 : uN, c_lst : u32*, c_1_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = mk_uN_u32($prod($proj_uN_0(c).0*{c <- c_lst})) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_uN: `%%`(32, mk_uN_uN($prod($proj_uN_0(c).0*{c <- c_lst}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : u32, v_1 : uN, c_lst : u32*, c_1_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = mk_uN_u32($prod($proj_uN_0(c).0*{c <- c_lst})) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_uN: `%%`(32, mk_uN_uN($prod($proj_uN_0(c).0*{c <- c_lst}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : u32, v_1 : uN, c_lst : u32*, c_1_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = mk_uN_u32($prod($proj_uN_0(c).0*{c <- c_lst})) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_uN: `%%`(32, mk_uN_uN($prod($proj_uN_0(c).0*{c <- c_lst}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : u32, v_1 : uN, c_lst : u32*, c_1_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = mk_uN_u32($prod($proj_uN_0(c).0*{c <- c_lst})) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_uN: `%%`(32, mk_uN_uN($prod($proj_uN_0(c).0*{c <- c_lst}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} @@ -9227,16 +8060,10 @@ def $ivtestop_(v_shape : shape, def $f_(v_N : N, v_iN : iN) : u32, v_vec_ : vec_ def $fvtestop_(v_shape : shape, def $f_(v_N : N, v_fN : fN) : u32, v_vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{v_M : nat, def $f_(v_N : N, v_fN : fN) : u32, v_1 : uN, c_lst : u32*, c_1_lst : lane_*}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = mk_uN_u32($prod($proj_uN_0(c).0*{c <- c_lst})) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_uN: `%%`(32, mk_uN_uN($prod($proj_uN_0(c).0*{c <- c_lst}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{v_M : nat, def $f_(v_N : N, v_fN : fN) : u32, v_1 : uN, c_lst : u32*, c_1_lst : lane_*}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = mk_uN_u32($prod($proj_uN_0(c).0*{c <- c_lst})) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_uN: `%%`(32, mk_uN_uN($prod($proj_uN_0(c).0*{c <- c_lst}))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- c_1_lst} {c_lst} @@ -9244,33 +8071,21 @@ def $fvtestop_(v_shape : shape, def $f_(v_N : N, v_fN : fN) : u32, v_vec_ : vec_ def $ivrelop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} - -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} - -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} - -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} - -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} @@ -9279,33 +8094,21 @@ def $ivrelop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_v def $ivrelopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} - -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} - -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} - -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} - -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} @@ -9314,20 +8117,12 @@ def $ivrelopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : i def $fvrelop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_1 : uN, v_2 : uN, v_Inn : addrtype, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M)), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, mk_uN_uN($proj_uN_0(c).0)))*{c <- c_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M))), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, mk_uN_uN($proj_uN_0(c).0)))))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) - -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, mk_uN_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} -- if ($isize(v_Inn) = $fsize(F32_Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_1 : uN, v_2 : uN, v_Inn : addrtype, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M)), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, mk_uN_uN($proj_uN_0(c).0)))*{c <- c_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M))), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, mk_uN_uN($proj_uN_0(c).0)))))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) - -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, mk_uN_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} @@ -9337,30 +8132,18 @@ def $fvrelop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_v def $ivshiftop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_vec_ : vec_, v_u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} @@ -9368,30 +8151,18 @@ def $ivshiftop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, def $ivshiftopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_vec_ : vec_, v_u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} @@ -9399,34 +8170,18 @@ def $ivshiftopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 def $ivbitmaskop_(v_shape : shape, v_vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) - -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)))*{c_1 <- c_1_lst} - -- wf_bit: `%`(mk_bit_bit(0)) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)*{c_1 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) - -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)))*{c_1 <- c_1_lst} - -- wf_bit: `%`(mk_bit_bit(0)) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)*{c_1 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) - -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)))*{c_1 <- c_1_lst} - -- wf_bit: `%`(mk_bit_bit(0)) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)*{c_1 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) - -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)))*{c_1 <- c_1_lst} - -- wf_bit: `%`(mk_bit_bit(0)) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)*{c_1 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) @@ -9434,37 +8189,21 @@ def $ivbitmaskop_(v_shape : shape, v_vec_ : vec_) : u32 def $ivswizzlop_(v_shape : shape, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1))*{c_1 <- c_1_lst}, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1))*{c_1 <- c_1_lst}, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1))*{c_1 <- c_1_lst}, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1))*{c_1 <- c_1_lst}, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c_lst} @@ -9473,37 +8212,21 @@ def $ivswizzlop_(v_shape : shape, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_vec_ def $ivshufflop_(v_shape : shape, var_0 : laneidx*, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), c_lst) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), c_lst) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), c_lst) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), c_lst) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst} {c_lst} @@ -9533,741 +8256,520 @@ def $vvternop_(v_vectype : vectype, v_vvternop : vvternop, v_vec_ : vec_, v_vec_ def $fun_vunop_(v_shape : shape, v_vunop_ : vunop_, v_vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_(v_shape : shape, v_vbinop_ : vbinop_, v_vec_ : vec_, v_vec__0 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_(v_shape : shape, v_vternop_ : vternop_, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I32_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I64_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I8_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I16_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, v_M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, v_M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, v_M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, v_M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vtestop_(v_shape : shape, v_vtestop_ : vtestop_, v_vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vtestop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vtestop__0_vtestop_(I32_Jnn, v_M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vtestop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vtestop__0_vtestop_(I64_Jnn, v_M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vtestop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vtestop__0_vtestop_(I8_Jnn, v_M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vtestop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vtestop__0_vtestop_(I16_Jnn, v_M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_(v_shape : shape, v_vrelop_ : vrelop_, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__, v_lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vcvtop__(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__, v_vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vcvtop__{Lnn_1 : lanetype, v_M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**}(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(v_M))) -- if (($halfop(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop) = ?())) -- where c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, c_1)*{c_1 <- c_1_lst}) {c_lst_lst} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, v_half : half, c_1_lst : lane_*, c_lst_lst : lane_**}(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop) = ?(v_half)) -- where c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1)[$fun_half(v_half, 0, M_2) : M_2] {c_1_lst} -- where c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1)*{c_1 <- c_1_lst}) {c_lst_lst} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst)*{c_lst <- c_lst_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**}(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1)*{c_1 <- c_1_lst} ++ [$fun_zero(Lnn_2)]^M_1{}) {c_lst_lst} @@ -10277,70 +8779,48 @@ def $fun_vcvtop__(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__, v_vec def $fun_vshiftop_(v_ishape : ishape, v_vshiftop_ : vshiftop_, v_vec_ : vec_, v_u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(v_ishape : ishape, v_vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{v_M : nat, v : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{v_M : nat, v : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{v_M : nat, v : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{v_M : nat, v : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vswizzlop_(v_bshape : bshape, v_vswizzlop_ : vswizzlop_, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vswizzlop_{v_M : nat, v_1 : uN, v_2 : uN}(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vswizzlop__0_vswizzlop_(v_M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vswizzlop_{v_M : nat, v_1 : uN, v_2 : uN}(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vswizzlop__0_vswizzlop_(v_M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(v_bshape : bshape, var_0 : laneidx*, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), i_lst, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10348,13 +8828,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10362,13 +8835,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10376,13 +8842,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10390,13 +8849,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10404,13 +8856,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10418,13 +8863,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10432,13 +8870,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10446,13 +8877,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10460,13 +8884,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10474,13 +8891,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10488,13 +8898,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10502,13 +8905,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10516,13 +8912,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10530,13 +8919,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10544,13 +8926,6 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10561,169 +8936,87 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v def $ivadd_pairwise_(v_N : N, var_0 : iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{v_N : nat, i_lst : iN*, j_1_lst : N*, j_2_lst : N*}(v_N, i_lst) = $iadd_(v_N, mk_uN_iN(j_1), mk_uN_iN(j_2))*{j_1 <- j_1_lst, j_2 <- j_2_lst} - -- (wf_uN: `%%`(v_N, mk_uN_uN(j_1)))*{j_1 <- j_1_lst} - -- (wf_uN: `%%`(v_N, mk_uN_uN(j_2)))*{j_2 <- j_2_lst} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- j_1_lst, j_2 <- j_2_lst}) = $proj_uN_0(i).0*{i <- i_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) {c_lst} @@ -10732,96 +9025,53 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, def $fun_vextunop__(ishape_1 : ishape, ishape_2 : ishape, v_vextunop__ : vextunop__, v_vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(v_N : N, var_0 : iN*, var_1 : iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{v_N : nat, i_1_lst : iN*, i_2_lst : iN*, j_1_lst : iN*, j_2_lst : iN*}(v_N, i_1_lst, i_2_lst) = $iadd_(v_N, j_1, j_2)*{j_1 <- j_1_lst, j_2 <- j_2_lst} - -- (wf_uN: `%%`(v_N, j_1))*{j_1 <- j_1_lst} - -- (wf_uN: `%%`(v_N, j_2))*{j_2 <- j_2_lst} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- j_1_lst, j_2 <- j_2_lst}) = $imul_(v_N, i_1, i_2)*{i_1 <- i_1_lst, i_2 <- i_2_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(v_N : N, var_0 : iN*, var_1 : iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{v_N : nat, i_1_lst : iN*, i_2_lst : iN*, j_1_lst : iN*, j_2_lst : iN*}(v_N, i_1_lst, i_2_lst) = $iadd_sat_(v_N, S_sx, j_1, j_2)*{j_1 <- j_1_lst, j_2 <- j_2_lst} - -- (wf_uN: `%%`(v_N, j_1))*{j_1 <- j_1_lst} - -- (wf_uN: `%%`(v_N, j_2))*{j_2 <- j_2_lst} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- j_1_lst, j_2 <- j_2_lst}) = $imul_(v_N, i_1, i_2)*{i_1 <- i_1_lst, i_2 <- i_2_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : iN*, v_sx : sx, v_sx_0 : sx, v_laneidx : laneidx, v_laneidx_0 : laneidx, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- c'_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10829,13 +9079,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- c'_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10843,13 +9086,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- c'_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10857,13 +9093,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- c'_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10871,13 +9100,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- c'_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10885,13 +9107,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- c'_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10899,13 +9114,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- c'_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10913,13 +9121,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- c'_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10927,13 +9128,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- c'_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10941,13 +9135,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- c'_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10955,13 +9142,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- c'_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10969,13 +9149,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- c'_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10983,13 +9156,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- c'_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -10997,13 +9163,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- c'_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -11011,13 +9170,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- c'_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -11025,13 +9177,6 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- c'_1_lst} - -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- c'_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -11047,307 +9192,105 @@ def $ivmul_(v_N : N, var_0 : iN*, var_1 : iN*) : iN* def $fun_vextbinop__(ishape_1 : ishape, ishape_2 : ishape, v_vextbinop__ : vextbinop__, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- wf_uN: `%%`(8, mk_uN_uN(0)) - -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vextternop__, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)))) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) - -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)))) - -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11355,16 +9298,6 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)))) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) - -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)))) - -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11372,16 +9305,6 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)))) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) - -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)))) - -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11389,16 +9312,6 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)))) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) - -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)))) - -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11406,16 +9319,6 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)))) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) - -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)))) - -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11423,16 +9326,6 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)))) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) - -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)))) - -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11440,16 +9333,6 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)))) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) - -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)))) - -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11457,16 +9340,6 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)))) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) - -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)))) - -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11474,16 +9347,6 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)))) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) - -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)))) - -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11491,16 +9354,6 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)))) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) - -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)))) - -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11508,16 +9361,6 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)))) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) - -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)))) - -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11525,16 +9368,6 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)))) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) - -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)))) - -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11542,16 +9375,6 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)))) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) - -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)))) - -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11559,16 +9382,6 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)))) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) - -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)))) - -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11576,16 +9389,6 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)))) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) - -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)))) - -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -11593,16 +9396,6 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)))) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) - -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)))) - -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -12068,10 +9861,8 @@ def $packfield_(v_storagetype : storagetype, v_val : val) : fieldval def $packfield_{v_val : val}(I32_storagetype, v_val) = $fieldval_val(v_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)) - -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)) - -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(v_storagetype : storagetype, var_0 : sx?, v_fieldval : fieldval) : val @@ -12217,10 +10008,8 @@ def $unpackfield_(v_storagetype : storagetype, var_0 : sx?, v_fieldval : fieldva def $unpackfield_{v_numtype : numtype, v_num_ : num_}(I32_storagetype, ?(), CONST_fieldval(v_numtype, v_num_)) = CONST_val(v_numtype, v_num_) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{v_sx : sx, i : uN}(I8_storagetype, ?(v_sx), PACK_fieldval(I8_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, v_sx, i))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, v_sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{v_sx : sx, i : uN}(I16_storagetype, ?(v_sx), PACK_fieldval(I16_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, v_sx, i))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, v_sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -12406,87 +10195,71 @@ def $fun_local(v_state : state, v_localidx : localidx) : val? def $with_local(v_state : state, v_localidx : localidx, v_val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(mk_state_state(s, f), x, v) = mk_state_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) - -- wf_state: `%`(mk_state_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(v_state : state, v_globalidx : globalidx, v_val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(mk_state_state(s, f), x, v) = mk_state_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f) - -- wf_state: `%`(mk_state_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(v_state : state, v_tableidx : tableidx, nat : nat, v_ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(mk_state_state(s, f), x, i, r) = mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f) - -- wf_state: `%`(mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(v_state : state, v_tableidx : tableidx, v_tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(mk_state_state(s, f), x, ti) = mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f) - -- wf_state: `%`(mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(v_state : state, v_memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, b_lst : byte*}(mk_state_state(s, f), x, i, j, b_lst) = mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b_lst], f) - -- wf_state: `%`(mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(v_state : state, v_memidx : memidx, v_meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(mk_state_state(s, f), x, mi) = mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f) - -- wf_state: `%`(mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(v_state : state, v_elemidx : elemidx, var_0 : ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, r_lst : ref*}(mk_state_state(s, f), x, r_lst) = mk_state_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r_lst], f) - -- wf_state: `%`(mk_state_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(v_state : state, v_dataidx : dataidx, var_0 : byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, b_lst : byte*}(mk_state_state(s, f), x, b_lst) = mk_state_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b_lst], f) - -- wf_state: `%`(mk_state_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(v_state : state, v_structaddr : structaddr, nat : nat, v_fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(mk_state_state(s, f), a, i, fv) = mk_state_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) - -- wf_state: `%`(mk_state_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(v_state : state, v_arrayaddr : arrayaddr, nat : nat, v_fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(mk_state_state(s, f), a, i, fv) = mk_state_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) - -- wf_state: `%`(mk_state_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(v_state : state, var_0 : structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, si_lst : structinst*}(mk_state_state(s, f), si_lst) = mk_state_state(s[STRUCTS_store =++ si_lst], f) - -- wf_state: `%`(mk_state_state(s[STRUCTS_store =++ si_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(v_state : state, var_0 : arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, ai_lst : arrayinst*}(mk_state_state(s, f), ai_lst) = mk_state_state(s[ARRAYS_store =++ ai_lst], f) - -- wf_state: `%`(mk_state_state(s[ARRAYS_store =++ ai_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(v_state : state, var_0 : exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, exn_lst : exninst*}(mk_state_state(s, f), exn_lst) = mk_state_state(s[EXNS_store =++ exn_lst], f) - -- wf_state: `%`(mk_state_state(s[EXNS_store =++ exn_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(v_tableinst : tableinst, nat : nat, v_ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{v_tableinst : tableinst, v_n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, j_opt : u64?, rt : reftype, r'_lst : ref*, i' : uN}(v_tableinst, v_n, r) = ?(tableinst') - -- wf_tableinst: `%`(tableinst') - -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS r'_lst}) - -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) -- where {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS r'_lst} = v_tableinst {at, i, j_opt, r'_lst, rt} -- if (tableinst' = {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) -- if ($proj_uN_0(i').0 = (|r'_lst| + v_n)) @@ -12497,9 +10270,6 @@ def $growtable(v_tableinst : tableinst, nat : nat, v_ref : ref) : tableinst? def $growmem(v_meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{v_meminst : meminst, v_n : nat, meminst' : meminst, at : addrtype, i : uN, j_opt : u64?, b_lst : byte*, i' : uN}(v_meminst, v_n) = ?(meminst') - -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES b_lst}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i', j_opt)), BYTES b_lst ++ mk_byte_byte(0)^(v_n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES b_lst} = v_meminst {at, b_lst, i, j_opt} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i', j_opt)), BYTES b_lst ++ mk_byte_byte(0)^(v_n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b_lst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (v_n : nat <:> rat))) @@ -12511,16 +10281,12 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule mk_Num_ok{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule mk_Vec_ok{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -12530,80 +10296,48 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF_NULL_ref(ht), REF_reftype(?(NULL_null), ht')) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF_NULL_ref(ht)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF_I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF_I31_NUM_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF_STRUCT_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF_STRUCT_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF_ARRAY_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF_ARRAY_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF_FUNC_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF_FUNC_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF_EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) - -- wf_store: `%`(s) - -- wf_exninst: `%`(exn) - -- wf_ref: `%`(REF_EXN_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF_HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF_HOST_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, v_addrref : addrref}: `%|-%:%`(s, REF_EXTERN_ref(v_addrref), REF_reftype(?(), EXTERN_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF_EXTERN_ref(v_addrref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, $ref_addrref(v_addrref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, v_ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, v_ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(v_ref) - -- wf_reftype: `%`(rt) - -- wf_reftype: `%`(rt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -12613,23 +10347,16 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, v_num : num, nt : numtype}: `%|-%:%`(s, $val_num(v_num), $valtype_numtype(nt)) - -- wf_store: `%`(s) - -- wf_num: `%`(v_num) -- Num_ok: `%|-%:%`(s, v_num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, v_vec : vec, vt : vectype}: `%|-%:%`(s, $val_vec(v_vec), $valtype_vectype(vt)) - -- wf_store: `%`(s) - -- wf_vec: `%`(v_vec) -- Vec_ok: `%|-%:%`(s, v_vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, v_ref : ref, rt : reftype}: `%|-%:%`(s, $val_ref(v_ref), $valtype_reftype(rt)) - -- wf_store: `%`(s) - -- wf_ref: `%`(v_ref) - -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, v_ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -12640,50 +10367,36 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, v_taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(v_taginst.TYPE_taginst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(v_taginst.TYPE_taginst)) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = v_taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, v_globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(v_globalinst.TYPE_globalinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(v_globalinst.TYPE_globalinst)) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = v_globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, v_meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(v_meminst.TYPE_meminst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(v_meminst.TYPE_meminst)) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = v_meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, v_tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(v_tableinst.TYPE_tableinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(v_tableinst.TYPE_tableinst)) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = v_tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, v_funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(v_funcinst.TYPE_funcinst))) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(v_funcinst.TYPE_funcinst))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = v_funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, v_externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, v_externaddr, xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) - -- wf_externtype: `%`(xt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, v_externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -12718,83 +10431,11 @@ def $inst_tabletype(v_moduleinst : moduleinst, v_tabletype : tabletype) : tablet def $inst_tabletype{v_moduleinst : moduleinst, tt : tabletype, dt_lst : deftype*}(v_moduleinst, tt) = $subst_all_tabletype(tt, $typeuse_deftype(dt)*{dt <- dt_lst}) -- where dt_lst = v_moduleinst.TYPES_moduleinst {dt_lst} -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_pure_before_br_on_null_addr: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule br_on_null_null_0{v_val : val, l : labelidx, ht : heaptype}: - `%`([$instr_val(v_val) BR_ON_NULL_instr(l)]) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF_NULL_val(ht)) - -- if (v_val = REF_NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_pure_before_br_on_non_null_addr: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule br_on_non_null_null_0{v_val : val, l : labelidx, ht : heaptype}: - `%`([$instr_val(v_val) BR_ON_NON_NULL_instr(l)]) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF_NULL_val(ht)) - -- if (v_val = REF_NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_pure_before_ref_is_null_false: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_is_null_true_0{v_ref : ref, ht : heaptype}: - `%`([$instr_ref(v_ref) REF_IS_NULL_instr]) - -- wf_ref: `%`(v_ref) - -- wf_instr: `%`(REF_IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) - -- wf_ref: `%`(REF_NULL_ref(ht)) - -- if (v_ref = REF_NULL_ref(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_pure_before_ref_as_non_null_addr: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_as_non_null_null_0{v_ref : ref, ht : heaptype}: - `%`([$instr_ref(v_ref) REF_AS_NON_NULL_instr]) - -- wf_ref: `%`(v_ref) - -- wf_instr: `%`(REF_AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF_NULL_ref(ht)) - -- if (v_ref = REF_NULL_ref(ht)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure_before_ref_eq_true: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_eq_null_0{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF_EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) - -- wf_ref: `%`(REF_NULL_ref(ht_1)) - -- wf_ref: `%`(REF_NULL_ref(ht_2)) - -- if ((ref_1 = REF_NULL_ref(ht_1)) /\ (ref_2 = REF_NULL_ref(ht_2))) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_pure_before_ref_eq_false: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_eq_true_0{ref_1 : ref, ref_2 : ref}: - `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF_EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) - -- ~ Step_pure_before_ref_eq_true: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr]) - -- if (ref_1 = ref_2) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_eq_null_1{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF_EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) - -- wf_ref: `%`(REF_NULL_ref(ht_1)) - -- wf_ref: `%`(REF_NULL_ref(ht_2)) -- if ((ref_1 = REF_NULL_ref(ht_1)) /\ (ref_2 = REF_NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12802,96 +10443,66 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{v_val : val}: `%~>%`([$instr_val(v_val) DROP_instr], []) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule select_true{val_1 : val, val_2 : val, c : num_, t_lst_opt : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t_lst_opt)], [$instr_val(val_1)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t_lst_opt)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule select_false{val_1 : val, val_2 : val, c : num_, t_lst_opt : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t_lst_opt)], [$instr_val(val_2)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t_lst_opt)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule if_true{c : num_, bt : blocktype, instr_1_lst : instr*, instr_2_lst : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)], [BLOCK_instr(bt, instr_1_lst)]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1_lst)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule if_false{c : num_, bt : blocktype, instr_1_lst : instr*, instr_2_lst : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)], [BLOCK_instr(bt, instr_2_lst)]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2_lst)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule label_vals{v_n : n, instr_lst : instr*, val_lst : val*}: `%~>%`([LABEL__instr(v_n, instr_lst, $instr_val(v_val)*{v_val <- val_lst})], $instr_val(v_val)*{v_val <- val_lst}) - -- wf_instr: `%`(LABEL__instr(v_n, instr_lst, $instr_val(v_val)*{v_val <- val_lst})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_label_zero{v_n : n, instr'_lst : instr*, val'_lst : val*, val_lst : val*, l : labelidx, instr_lst : instr*}: `%~>%`([LABEL__instr(v_n, instr'_lst, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)], $instr_val(v_val)^v_n{v_val <- val_lst} ++ instr'_lst) - -- wf_instr: `%`(LABEL__instr(v_n, instr'_lst, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)) -- if ($proj_uN_0(l).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_label_succ{v_n : n, instr'_lst : instr*, val_lst : val*, l : labelidx, instr_lst : instr*}: `%~>%`([LABEL__instr(v_n, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)], $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(mk_uN_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) - -- wf_instr: `%`(LABEL__instr(v_n, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)) - -- wf_instr: `%`(BR_instr(mk_uN_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if ($proj_uN_0(l).0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_handler{v_n : n, catch_lst : catch*, val_lst : val*, l : labelidx, instr_lst : instr*}: `%~>%`([HANDLER__instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)], $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)]) - -- wf_instr: `%`(HANDLER__instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_if_true{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_if_false{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) @@ -12900,491 +10511,296 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l_lst, l')], [BR_instr(l_lst[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l_lst|) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l_lst, l')) - -- wf_instr: `%`(BR_instr(l_lst[$proj_uN_0(!($proj_num__0(i))).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_table_ge{i : num_, l_lst : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l_lst, l')], [BR_instr(l')]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l_lst, l')) - -- wf_instr: `%`(BR_instr(l')) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l_lst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_null_null{v_val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(v_val) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF_NULL_val(ht)) -- if (v_val = REF_NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule br_on_null_addr{v_val : val, l : labelidx}: + rule br_on_null_addr{v_val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(v_val) BR_ON_NULL_instr(l)], [$instr_val(v_val)]) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- ~ Step_pure_before_br_on_null_addr: `%`([$instr_val(v_val) BR_ON_NULL_instr(l)]) + -- if (v_val =/= REF_NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_non_null_null{v_val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(v_val) BR_ON_NON_NULL_instr(l)], []) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF_NULL_val(ht)) -- if (v_val = REF_NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule br_on_non_null_addr{v_val : val, l : labelidx}: + rule br_on_non_null_addr{v_val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(v_val) BR_ON_NON_NULL_instr(l)], [$instr_val(v_val) BR_instr(l)]) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- ~ Step_pure_before_br_on_non_null_addr: `%`([$instr_val(v_val) BR_ON_NON_NULL_instr(l)]) + -- if (v_val =/= REF_NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE_GET_instr(x) REF_CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE_GET_instr(x)) - -- wf_instr: `%`(REF_CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE_GET_instr(x) REF_CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE_GET_instr(x)) - -- wf_instr: `%`(REF_CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule frame_vals{v_n : n, f : frame, val_lst : val*}: `%~>%`([FRAME__instr(v_n, f, $instr_val(v_val)^v_n{v_val <- val_lst})], $instr_val(v_val)^v_n{v_val <- val_lst}) - -- wf_instr: `%`(FRAME__instr(v_n, f, $instr_val(v_val)^v_n{v_val <- val_lst})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_frame{v_n : n, f : frame, val'_lst : val*, val_lst : val*, instr_lst : instr*}: `%~>%`([FRAME__instr(v_n, f, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)], $instr_val(v_val)^v_n{v_val <- val_lst}) - -- wf_instr: `%`(FRAME__instr(v_n, f, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_label{v_n : n, instr'_lst : instr*, val_lst : val*, instr_lst : instr*}: `%~>%`([LABEL__instr(v_n, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)], $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr]) - -- wf_instr: `%`(LABEL__instr(v_n, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_handler{v_n : n, catch_lst : catch*, val_lst : val*, instr_lst : instr*}: `%~>%`([HANDLER__instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)], $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr]) - -- wf_instr: `%`(HANDLER__instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule handler_vals{v_n : n, catch_lst : catch*, val_lst : val*}: `%~>%`([HANDLER__instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst})], $instr_val(v_val)*{v_val <- val_lst}) - -- wf_instr: `%`(HANDLER__instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule trap_instrs{val_lst : val*, instr_lst : instr*}: `%~>%`($instr_val(v_val)*{v_val <- val_lst} ++ [TRAP_instr] ++ instr_lst, [TRAP_instr]) - -- (wf_val: `%`(v_val))*{v_val <- val_lst} - -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} - -- wf_instr: `%`(TRAP_instr) -- if ((val_lst =/= []) \/ (instr_lst =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule trap_label{v_n : n, instr'_lst : instr*}: `%~>%`([LABEL__instr(v_n, instr'_lst, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(LABEL__instr(v_n, instr'_lst, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule trap_frame{v_n : n, f : frame}: `%~>%`([FRAME__instr(v_n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(FRAME__instr(v_n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local_tee{v_val : val, x : idx}: `%~>%`([$instr_val(v_val) LOCAL_TEE_instr(x)], [$instr_val(v_val) $instr_val(v_val) LOCAL_SET_instr(x)]) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(LOCAL_TEE_instr(x)) - -- wf_instr: `%`(LOCAL_SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF_I31_instr], [REF_I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(REF_I31_instr) - -- wf_instr: `%`(REF_I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_is_null_true{v_ref : ref, ht : heaptype}: `%~>%`([$instr_ref(v_ref) REF_IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) - -- wf_ref: `%`(v_ref) - -- wf_instr: `%`(REF_IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) - -- wf_ref: `%`(REF_NULL_ref(ht)) -- if (v_ref = REF_NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_is_null_false{v_ref : ref}: + rule ref_is_null_false{v_ref : ref, ht : heaptype}: `%~>%`([$instr_ref(v_ref) REF_IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))]) - -- wf_ref: `%`(v_ref) - -- wf_instr: `%`(REF_IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) - -- ~ Step_pure_before_ref_is_null_false: `%`([$instr_ref(v_ref) REF_IS_NULL_instr]) + -- if (v_ref =/= REF_NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_as_non_null_null{v_ref : ref, ht : heaptype}: `%~>%`([$instr_ref(v_ref) REF_AS_NON_NULL_instr], [TRAP_instr]) - -- wf_ref: `%`(v_ref) - -- wf_instr: `%`(REF_AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF_NULL_ref(ht)) -- if (v_ref = REF_NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_as_non_null_addr{v_ref : ref}: + rule ref_as_non_null_addr{v_ref : ref, ht : heaptype}: `%~>%`([$instr_ref(v_ref) REF_AS_NON_NULL_instr], [$instr_ref(v_ref)]) - -- wf_ref: `%`(v_ref) - -- wf_instr: `%`(REF_AS_NON_NULL_instr) - -- ~ Step_pure_before_ref_as_non_null_addr: `%`([$instr_ref(v_ref) REF_AS_NON_NULL_instr]) + -- if (v_ref =/= REF_NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_eq_null{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF_EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) - -- wf_ref: `%`(REF_NULL_ref(ht_1)) - -- wf_ref: `%`(REF_NULL_ref(ht_2)) -- if ((ref_1 = REF_NULL_ref(ht_1)) /\ (ref_2 = REF_NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_eq_true{ref_1 : ref, ref_2 : ref}: + rule ref_eq_true{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF_EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) - -- ~ Step_pure_before_ref_eq_true: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr]) + -- if ((ref_1 =/= REF_NULL_ref(ht_1)) \/ (ref_2 =/= REF_NULL_ref(ht_2))) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_eq_false{ref_1 : ref, ref_2 : ref}: + rule ref_eq_false{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF_EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) - -- ~ Step_pure_before_ref_eq_false: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr]) + -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF_NULL_ref(ht_1)) \/ (ref_2 =/= REF_NULL_ref(ht_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule i31_get_null{ht : heaptype, v_sx : sx}: `%~>%`([REF_NULL_instr(ht) I31_GET_instr(v_sx)], [TRAP_instr]) - -- wf_instr: `%`(REF_NULL_instr(ht)) - -- wf_instr: `%`(I31_GET_instr(v_sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule i31_get_num{i : u31, v_sx : sx}: `%~>%`([REF_I31_NUM_instr(i) I31_GET_instr(v_sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, v_sx, i)))]) - -- wf_instr: `%`(REF_I31_NUM_instr(i)) - -- wf_instr: `%`(I31_GET_instr(v_sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, v_sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new{v_val : val, v_n : n, x : idx}: `%~>%`([$instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_instr(x)], $instr_val(v_val)^v_n{} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n)))) - -- wf_instr: `%`(ARRAY_NEW_instr(x)) - -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule extern_convert_any_null{ht : heaptype}: `%~>%`([REF_NULL_instr(ht) EXTERN_CONVERT_ANY_instr], [REF_NULL_instr(EXTERN_heaptype)]) - -- wf_instr: `%`(REF_NULL_instr(ht)) - -- wf_instr: `%`(EXTERN_CONVERT_ANY_instr) - -- wf_instr: `%`(REF_NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule extern_convert_any_addr{v_addrref : addrref}: `%~>%`([$instr_addrref(v_addrref) EXTERN_CONVERT_ANY_instr], [REF_EXTERN_instr(v_addrref)]) - -- wf_instr: `%`(EXTERN_CONVERT_ANY_instr) - -- wf_instr: `%`(REF_EXTERN_instr(v_addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule any_convert_extern_null{ht : heaptype}: `%~>%`([REF_NULL_instr(ht) ANY_CONVERT_EXTERN_instr], [REF_NULL_instr(ANY_heaptype)]) - -- wf_instr: `%`(REF_NULL_instr(ht)) - -- wf_instr: `%`(ANY_CONVERT_EXTERN_instr) - -- wf_instr: `%`(REF_NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule any_convert_extern_addr{v_addrref : addrref}: `%~>%`([REF_EXTERN_instr(v_addrref) ANY_CONVERT_EXTERN_instr], [$instr_addrref(v_addrref)]) - -- wf_instr: `%`(REF_EXTERN_instr(v_addrref)) - -- wf_instr: `%`(ANY_CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unop_val{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$fun_unop_(nt, unop, c_1)| > 0) -- if (c <- $fun_unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unop_trap{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) -- if ($fun_unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule binop_val{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$fun_binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $fun_binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule binop_trap{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) -- if ($fun_binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $fun_testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $fun_relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule cvtop_val{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (|$fun_cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $fun_cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule cvtop_trap{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) -- if ($fun_cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, v_vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, v_vvunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, v_vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvunop_(V128_vectype, v_vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, v_vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, v_vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, v_vvbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, v_vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvbinop_(V128_vectype, v_vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, v_vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, v_vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, v_vvternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, v_vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvternop_(V128_vectype, v_vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, v_vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_uN: `%%`(128, mk_uN_uN(0)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, mk_uN_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vunop_val{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$fun_vunop_(sh, vunop, c_1)| > 0) -- if (c <- $fun_vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vunop_trap{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) -- if ($fun_vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbinop_val{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$fun_vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $fun_vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbinop_trap{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) -- if ($fun_vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vternop_val{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$fun_vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $fun_vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vternop_trap{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) -- if ($fun_vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if ($proj_num__0(i) =/= ?()) -- if (!($proj_num__0(i)) = $fun_vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $fun_vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if (c = $fun_vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $fun_vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, i_lst : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i_lst)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i_lst)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i_lst, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{v_Lnn : Lnn, c_1 : num_, v_M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(v_Lnn), c_1) VSPLAT_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)))], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(CONST_instr($lunpack(v_Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(v_Lnn, mk_dim_dim(v_M))) -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), $lpacknum_(v_Lnn, c_1)^v_M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextract_lane_num{c_1 : vec_, nt : numtype, v_M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M)), ?(), i)], [CONST_instr(nt, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M))), mk_lane__0_lane_(nt, c_2)) - -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M))) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextract_lane_pack{c_1 : vec_, pt : packtype, v_M : M, v_sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), ?(v_sx), i)], [CONST_instr(I32_numtype, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), ?(v_sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) - -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M))) -- if ($proj_num__0(c_2) =/= ?()) -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), c_1)[$proj_uN_0(i).0]) =/= ?()) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), c_1)|) @@ -13393,77 +10809,46 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, v_Lnn : Lnn, c_2 : num_, v_M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(v_Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), i)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(v_Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(v_Lnn, mk_dim_dim(v_M))) -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), $lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(v_Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($fun_vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($fun_vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($fun_vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, v_sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, v_sx)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, v_sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, v_sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $fun_vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(v_state : state, v_blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, t_1_lst : valtype*, t_2_lst : valtype*}(z, _IDX_blocktype(x)) = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- Expand: `%~~%`($fun_type(z, x), FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, t_opt : valtype?}(z, _RESULT_blocktype(t_opt)) = mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(lift(t_opt))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(lift(t_opt)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_br_on_cast_fail: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_succeed_0{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) @@ -13472,74 +10857,14 @@ relation Step_read_before_br_on_cast_fail_fail: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_fail_succeed_0{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_throw_ref_handler_next: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule throw_ref_handler_catch_all_ref_0{z : state, v_n : n, l : labelidx, catch'_lst : catch*, a : addr}: - `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule throw_ref_handler_catch_all_0{z : state, v_n : n, l : labelidx, catch'_lst : catch*, a : addr}: - `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule throw_ref_handler_catch_ref_0{z : state, v_n : n, x : idx, l : labelidx, catch'_lst : catch*, a : addr, val_lst : val*}: - `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) - -- (wf_val: `%`(v_val))*{v_val <- val_lst} - -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$fun_exninst(z)|) - -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) - -- if ($fun_exninst(z)[a].TAG_exninst = $fun_tagaddr(z)[$proj_uN_0(x).0]) - -- if (val_lst = $fun_exninst(z)[a].FIELDS_exninst) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule throw_ref_handler_catch_0{z : state, v_n : n, x : idx, l : labelidx, catch'_lst : catch*, a : addr, val_lst : val*}: - `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) - -- (wf_val: `%`(v_val))*{v_val <- val_lst} - -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$fun_exninst(z)|) - -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) - -- if ($fun_exninst(z)[a].TAG_exninst = $fun_tagaddr(z)[$proj_uN_0(x).0]) - -- if (val_lst = $fun_exninst(z)[a].FIELDS_exninst) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_table_fill_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_fill_oob_0{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_table_fill_succ: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_fill_zero_0{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) - -- ~ Step_read_before_table_fill_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) - -- if (v_n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_fill_oob_1{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) @@ -13548,8 +10873,6 @@ relation Step_read_before_table_copy_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_oob_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) @@ -13559,50 +10882,12 @@ relation Step_read_before_table_copy_le: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_zero_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) -- ~ Step_read_before_table_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_oob_1{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_table_copy_gt: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_copy_le_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(TABLE_GET_instr(y)) - -- wf_instr: `%`(TABLE_SET_instr(x)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE_COPY_instr(x, y)) - -- ~ Step_read_before_table_copy_le: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_copy_zero_1{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) - -- ~ Step_read_before_table_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) - -- if (v_n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_copy_oob_2{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) @@ -13612,26 +10897,6 @@ relation Step_read_before_table_init_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_init_oob_0{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_table_init_succ: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_init_zero_0{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) - -- ~ Step_read_before_table_init_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) - -- if (v_n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_init_oob_1{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|)) @@ -13641,25 +10906,6 @@ relation Step_read_before_memory_fill_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_fill_oob_0{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_memory_fill_succ: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_fill_zero_0{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) - -- ~ Step_read_before_memory_fill_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) - -- if (v_n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_fill_oob_1{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) @@ -13668,8 +10914,6 @@ relation Step_read_before_memory_copy_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_oob_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_mem(z, x_2).BYTES_meminst|)) @@ -13679,50 +10923,12 @@ relation Step_read_before_memory_copy_le: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_zero_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) -- ~ Step_read_before_memory_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_oob_1{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_mem(z, x_2).BYTES_meminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_memory_copy_gt: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_copy_le_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY_COPY_instr(x_1, x_2)) - -- ~ Step_read_before_memory_copy_le: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_copy_zero_1{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- ~ Step_read_before_memory_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- if (v_n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_copy_oob_2{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_mem(z, x_2).BYTES_meminst|)) @@ -13732,26 +10938,6 @@ relation Step_read_before_memory_init_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_init_oob_0{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_data(z, y).BYTES_datainst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_memory_init_succ: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_init_zero_0{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) - -- ~ Step_read_before_memory_init_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) - -- if (v_n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_init_oob_1{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_data(z, y).BYTES_datainst|)) @@ -13761,10 +10947,6 @@ relation Step_read_before_ref_test_false: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_test_true_0{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -13773,9 +10955,6 @@ relation Step_read_before_ref_cast_fail: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_cast_succeed_0{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -13784,26 +10963,6 @@ relation Step_read_before_array_fill_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_fill_oob_0{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$fun_arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_array_fill_succ: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_fill_zero_0{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: - `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) - -- ~ Step_read_before_array_fill_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) - -- if (v_n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_fill_oob_1{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: - `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -13813,8 +10972,6 @@ relation Step_read_before_array_copy_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob2_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -13822,8 +10979,6 @@ relation Step_read_before_array_copy_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob1_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -13833,15 +10988,12 @@ relation Step_read_before_array_copy_le: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_zero_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- ~ Step_read_before_array_copy_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob2_1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -13849,8 +11001,6 @@ relation Step_read_before_array_copy_le: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob1_1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -13860,36 +11010,21 @@ relation Step_read_before_array_copy_gt: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_le_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY_GET_instr(sx_opt, x_2)) - -- wf_instr: `%`(ARRAY_SET_instr(x_1)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY_COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) -- ~ Step_read_before_array_copy_le: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = $fun_sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_zero_1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- ~ Step_read_before_array_copy_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob2_2{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -13897,8 +11032,6 @@ relation Step_read_before_array_copy_gt: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob1_2{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -13908,42 +11041,12 @@ relation Step_read_before_array_init_elem_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_oob2_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_oob1_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$fun_arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_array_init_elem_succ: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_init_elem_zero_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- ~ Step_read_before_array_init_elem_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- if (v_n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_init_elem_oob2_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_init_elem_oob1_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -13953,9 +11056,6 @@ relation Step_read_before_array_init_data_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob2_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) @@ -13963,8 +11063,6 @@ relation Step_read_before_array_init_data_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob1_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -13974,16 +11072,12 @@ relation Step_read_before_array_init_data_num: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_zero_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) -- ~ Step_read_before_array_init_data_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob2_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) @@ -13991,8 +11085,6 @@ relation Step_read_before_array_init_data_num: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob1_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -14002,75 +11094,49 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, val_lst : val*, v_m : m, bt : blocktype, instr_lst : instr*, v_n : n, t_1_lst : valtype*, t_2_lst : valtype*}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [BLOCK_instr(bt, instr_lst)]), [LABEL__instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)]) - -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [BLOCK_instr(bt, instr_lst)])) - -- wf_instr: `%`(LABEL__instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- if ($blocktype_(z, bt) = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, val_lst : val*, v_m : m, bt : blocktype, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, v_n : n}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [LOOP_instr(bt, instr_lst)]), [LABEL__instr(v_m, [LOOP_instr(bt, instr_lst)], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)]) - -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [LOOP_instr(bt, instr_lst)])) - -- wf_instr: `%`(LABEL__instr(v_m, [LOOP_instr(bt, instr_lst)], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- if ($blocktype_(z, bt) = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_succeed{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref) BR_instr(l)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_fail{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref)]) - -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- ~ Step_read_before_br_on_cast_fail: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_fail_succeed{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_fail_fail{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref) BR_instr(l)]) - -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) -- ~ Step_read_before_br_on_cast_fail_fail: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(mk_config_config(z, [CALL_instr(x)]), [REF_FUNC_ADDR_instr(a) CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))]) -- if (a < |$fun_funcinst(z)|) - -- wf_config: `%`(mk_config_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(REF_FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))) -- if ($proj_uN_0(x).0 < |$fun_moduleinst(z).FUNCS_moduleinst|) -- if ($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_ref_null{z : state, ht : heaptype, yy : typeuse}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_ref_func{z : state, val_lst : val*, v_n : n, a : addr, yy : typeuse, v_m : m, f : frame, instr_lst : instr*, fi : funcinst, t_1_lst : valtype*, t_2_lst : valtype*, x : idx, t_lst : valtype*}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [FRAME__instr(v_m, f, [LABEL__instr(v_m, [], instr_lst)])]) - -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(FRAME__instr(v_m, f, [LABEL__instr(v_m, [], instr_lst)])) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) - -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- t_lst}, instr_lst)) - -- wf_frame: `%`({LOCALS ?(v_val)^v_n{v_val <- val_lst} ++ $default_(t)*{t <- t_lst}, MODULE fi.MODULE_funcinst}) -- if (a < |$fun_funcinst(z)|) -- if ($fun_funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) @@ -14081,81 +11147,51 @@ relation Step_read: `%~>%`(config, instr*) rule return_call{z : state, x : idx, a : addr}: `%~>%`(mk_config_config(z, [RETURN_CALL_instr(x)]), [REF_FUNC_ADDR_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))]) -- if (a < |$fun_funcinst(z)|) - -- wf_config: `%`(mk_config_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(REF_FUNC_ADDR_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))) -- if ($proj_uN_0(x).0 < |$fun_moduleinst(z).FUNCS_moduleinst|) -- if ($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_ref_label{z : state, k : n, instr'_lst : instr*, val_lst : val*, yy : typeuse, instr_lst : instr*}: `%~>%`(mk_config_config(z, [LABEL__instr(k, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(mk_config_config(z, [LABEL__instr(k, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_ref_handler{z : state, k : n, catch_lst : catch*, val_lst : val*, yy : typeuse, instr_lst : instr*}: `%~>%`(mk_config_config(z, [HANDLER__instr(k, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(k, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_ref_frame_null{z : state, k : n, f : frame, val_lst : val*, ht : heaptype, yy : typeuse, instr_lst : instr*}: `%~>%`(mk_config_config(z, [FRAME__instr(k, f, $instr_val(v_val)*{v_val <- val_lst} ++ [REF_NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [FRAME__instr(k, f, $instr_val(v_val)*{v_val <- val_lst} ++ [REF_NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_ref_frame_addr{z : state, k : n, f : frame, val'_lst : val*, val_lst : val*, v_n : n, a : addr, yy : typeuse, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, v_m : m}: `%~>%`(mk_config_config(z, [FRAME__instr(k, f, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) - -- wf_config: `%`(mk_config_config(z, [FRAME__instr(k, f, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)])) - -- wf_instr: `%`(REF_FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if (a < |$fun_funcinst(z)|) -- Expand: `%~~%`($fun_funcinst(z)[a].TYPE_funcinst, FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_null{z : state, ht : heaptype}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_instrs{z : state, val_lst : val*, a : addr, instr_lst : instr*}: `%~>%`(mk_config_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ [REF_EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr_lst), [REF_EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ [REF_EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr_lst)) - -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) -- if ((val_lst =/= []) \/ (instr_lst =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_label{z : state, v_n : n, instr'_lst : instr*, a : addr}: `%~>%`(mk_config_config(z, [LABEL__instr(v_n, instr'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [REF_EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(mk_config_config(z, [LABEL__instr(v_n, instr'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_frame{z : state, v_n : n, f : frame, a : addr}: `%~>%`(mk_config_config(z, [FRAME__instr(v_n, f, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [REF_EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(mk_config_config(z, [FRAME__instr(v_n, f, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_empty{z : state, v_n : n, a : addr}: `%~>%`(mk_config_config(z, [HANDLER__instr(v_n, [], [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [REF_EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [], [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_catch{z : state, v_n : n, x : idx, l : labelidx, catch'_lst : catch*, a : addr, val_lst : val*}: `%~>%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)]) - -- (wf_val: `%`(v_val))*{v_val <- val_lst} - -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) -- if (a < |$fun_exninst(z)|) -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) -- if ($fun_exninst(z)[a].TAG_exninst = $fun_tagaddr(z)[$proj_uN_0(x).0]) @@ -14164,10 +11200,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_catch_ref{z : state, v_n : n, x : idx, l : labelidx, catch'_lst : catch*, a : addr, val_lst : val*}: `%~>%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(v_val)*{v_val <- val_lst} ++ [REF_EXN_ADDR_instr(a) BR_instr(l)]) - -- (wf_val: `%`(v_val))*{v_val <- val_lst} - -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) -- if (a < |$fun_exninst(z)|) -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) -- if ($fun_exninst(z)[a].TAG_exninst = $fun_tagaddr(z)[$proj_uN_0(x).0]) @@ -14176,50 +11208,36 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_catch_all{z : state, v_n : n, l : labelidx, catch'_lst : catch*, a : addr}: `%~>%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_catch_all_ref{z : state, v_n : n, l : labelidx, catch'_lst : catch*, a : addr}: `%~>%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [REF_EXN_ADDR_instr(a) BR_instr(l)]) - -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule throw_ref_handler_next{z : state, v_n : n, v_catch : catch, catch'_lst : catch*, a : addr}: + rule throw_ref_handler_next{z : state, v_n : n, v_catch : catch, catch'_lst : catch*, a : addr, x : idx, val_lst : val*, x : idx, val_lst : val*}: `%~>%`(mk_config_config(z, [HANDLER__instr(v_n, [v_catch] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [HANDLER__instr(v_n, catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]) - -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [v_catch] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(HANDLER__instr(v_n, catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])) - -- ~ Step_read_before_throw_ref_handler_next: `%`(mk_config_config(z, [HANDLER__instr(v_n, [v_catch] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- if (a < |$fun_exninst(z)|) + -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) + -- if (((($fun_exninst(z)[a].TAG_exninst =/= $fun_tagaddr(z)[$proj_uN_0(x).0]) \/ (val_lst =/= $fun_exninst(z)[a].FIELDS_exninst)) \/ ($fun_exninst(z)[a].TAG_exninst =/= $fun_tagaddr(z)[$proj_uN_0(x).0])) \/ (val_lst =/= $fun_exninst(z)[a].FIELDS_exninst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, val_lst : val*, v_m : m, bt : blocktype, catch_lst : catch*, instr_lst : instr*, v_n : n, t_1_lst : valtype*, t_2_lst : valtype*}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [TRY_TABLE_instr(bt, mk_list_list(catch_lst), instr_lst)]), [HANDLER__instr(v_n, catch_lst, [LABEL__instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)])]) - -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [TRY_TABLE_instr(bt, mk_list_list(catch_lst), instr_lst)])) - -- wf_instr: `%`(HANDLER__instr(v_n, catch_lst, [LABEL__instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)])) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- if ($blocktype_(z, bt) = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local_get{z : state, x : idx, v_val : val}: `%~>%`(mk_config_config(z, [LOCAL_GET_instr(x)]), [$instr_val(v_val)]) - -- wf_val: `%`(v_val) - -- wf_config: `%`(mk_config_config(z, [LOCAL_GET_instr(x)])) -- if ($fun_local(z, x) = ?(v_val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global_get{z : state, x : idx, v_val : val}: `%~>%`(mk_config_config(z, [GLOBAL_GET_instr(x)]), [$instr_val(v_val)]) - -- wf_val: `%`(v_val) - -- wf_config: `%`(mk_config_config(z, [GLOBAL_GET_instr(x)])) -- if ($fun_global(z, x).VALUE_globalinst = v_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_get_oob{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE_GET_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE_GET_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_table(z, x).REFS_tableinst|) @@ -14228,98 +11246,65 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE_GET_instr(x)]), [$instr_ref($fun_table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_table(z, x).REFS_tableinst|) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE_GET_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_size{z : state, x : idx, at : addrtype, v_n : n, lim : limits, rt : reftype}: `%~>%`(mk_config_config(z, [TABLE_SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n)))]) - -- wf_config: `%`(mk_config_config(z, [TABLE_SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n)))) - -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) -- if (|$fun_table(z, x).REFS_tableinst| = v_n) -- if ($fun_table(z, x).TYPE_tableinst = mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_fill_oob{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_fill_zero{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)]), []) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) - -- ~ Step_read_before_table_fill_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_fill_succ{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(TABLE_SET_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE_FILL_instr(x)) - -- ~ Step_read_before_table_fill_succ: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) + -- if ((v_n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_oob{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_copy_zero{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: + rule table_copy_zero{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)]), []) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) - -- ~ Step_read_before_table_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_table(z, x_2).REFS_tableinst|)) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_copy_le{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: + rule table_copy_le{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) TABLE_GET_instr(y) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(TABLE_GET_instr(y)) - -- wf_instr: `%`(TABLE_SET_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE_COPY_instr(x, y)) - -- ~ Step_read_before_table_copy_le: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- if ((v_n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_table(z, x_2).REFS_tableinst|))) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_copy_gt{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: + rule table_copy_gt{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_GET_instr(y) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE_GET_instr(y)) - -- wf_instr: `%`(TABLE_SET_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE_COPY_instr(x, y)) - -- ~ Step_read_before_table_copy_gt: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (v_n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_table(z, x_2).REFS_tableinst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_init_oob{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|)) @@ -14327,8 +11312,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_init_zero{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)]), []) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) - -- ~ Step_read_before_table_init_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|)) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14337,78 +11323,53 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$fun_elem(z, y).REFS_eleminst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(TABLE_SET_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE_INIT_instr(x, y)) - -- ~ Step_read_before_table_init_succ: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) + -- if ((v_n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule load_num_oob{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule load_num_val{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule load_pack_oob{z : state, at : addrtype, i : num_, v_Inn : Inn, v_n : n, v_sx : sx, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_n), v_sx))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_n), v_sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule load_pack_val{z : state, at : addrtype, i : num_, v_Inn : Inn, v_n : n, v_sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_n), v_sx))), x, ao)]), [CONST_instr($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, $extend__(v_n, $size($numtype_addrtype(v_Inn)), v_sx, c)))]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_n), v_sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, $extend__(v_n, $size($numtype_addrtype(v_Inn)), v_sx, c)))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(v_n, c) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_oob{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_val{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_pack_oob{z : state, at : addrtype, i : num_, v_M : M, v_K : K, v_sx : sx, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_K, v_sx)), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_K, v_sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((v_M * v_K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_pack_val{z : state, at : addrtype, i : num_, v_M : M, v_K : K, v_sx : sx, x : idx, ao : memarg, c : vec_, j_lst : iN*, k_lst : nat*, v_Jnn : Jnn}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_K, v_sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_K, v_sx)), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_K))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_K))), mk_lane__2_lane_(v_Jnn, $extend__(v_M, $jsizenn(v_Jnn), v_sx, j))))^v_K{j <- j_lst} -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((v_M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_splat_oob{z : state, at : addrtype, i : num_, v_N : N, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_splat_val{z : state, at : addrtype, i : num_, v_N : N, x : idx, ao : memarg, c : vec_, j : iN, v_Jnn : Jnn, v_M : M}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(v_Jnn, mk_uN_uN($proj_uN_0(j).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(v_N, j) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (v_N = $jsize(v_Jnn)) @@ -14437,17 +11392,12 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_zero_oob{z : state, at : addrtype, i : num_, v_N : N, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_zero_val{z : state, at : addrtype, i : num_, v_N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_uN: `%%`(v_N, j) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(v_N, j) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(v_N, 128, U_sx, j)) @@ -14455,18 +11405,12 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_lane_oob{z : state, at : addrtype, i : num_, c_1 : vec_, v_N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_lane_val{z : state, at : addrtype, i : num_, c_1 : vec_, v_N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, v_Jnn : Jnn, v_M : M}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(v_Jnn, mk_uN_uN($proj_uN_0(k).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(v_N, k) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (v_N = $jsize(v_Jnn)) @@ -14476,44 +11420,31 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_size{z : state, x : idx, at : addrtype, v_n : n, lim : limits}: `%~>%`(mk_config_config(z, [MEMORY_SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n)))]) - -- wf_config: `%`(mk_config_config(z, [MEMORY_SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n)))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((v_n * (64 * $Ki)) = |$fun_mem(z, x).BYTES_meminst|) -- if ($fun_mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_fill_oob{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_fill_zero{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)]), []) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) - -- ~ Step_read_before_memory_fill_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_fill_succ{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY_FILL_instr(x)) - -- ~ Step_read_before_memory_fill_succ: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) + -- if ((v_n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_oob{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_mem(z, x_2).BYTES_meminst|)) @@ -14521,8 +11452,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_zero{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- ~ Step_read_before_memory_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|)) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14530,16 +11462,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY_COPY_instr(x_1, x_2)) - -- ~ Step_read_before_memory_copy_le: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- if ((v_n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|))) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14547,22 +11470,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY_COPY_instr(x_1, x_2)) - -- ~ Step_read_before_memory_copy_gt: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (v_n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_init_oob{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_data(z, y).BYTES_datainst|)) @@ -14570,8 +11482,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_init_zero{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)]), []) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) - -- ~ Step_read_before_memory_init_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_data(z, y).BYTES_datainst|)) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14580,69 +11493,42 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$fun_data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN($proj_byte_0($fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY_INIT_instr(x, y)) - -- ~ Step_read_before_memory_init_succ: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) + -- if ((v_n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_data(z, y).BYTES_datainst|))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_null_idx{z : state, x : idx}: `%~>%`(mk_config_config(z, [REF_NULL_instr(_IDX_heaptype(x))]), [REF_NULL_instr($heaptype_deftype($fun_type(z, x)))]) - -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(_IDX_heaptype(x))])) - -- wf_instr: `%`(REF_NULL_instr($heaptype_deftype($fun_type(z, x)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_func{z : state, x : idx}: `%~>%`(mk_config_config(z, [REF_FUNC_instr(x)]), [REF_FUNC_ADDR_instr($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) -- if ($proj_uN_0(x).0 < |$fun_moduleinst(z).FUNCS_moduleinst|) - -- wf_config: `%`(mk_config_config(z, [REF_FUNC_instr(x)])) - -- wf_instr: `%`(REF_FUNC_ADDR_instr($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_test_true{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_test_false{s : store, f : frame, v_ref : ref, rt : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))]) - -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) -- ~ Step_read_before_ref_test_false: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_cast_succeed{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)]), [$instr_ref(v_ref)]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_cast_fail{s : store, f : frame, v_ref : ref, rt : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) -- ~ Step_read_before_ref_cast_fail: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct_new_default{z : state, x : idx, val_lst : val*, mut_opt_lst : mut?*, zt_lst : storagetype*}: `%~>%`(mk_config_config(z, [STRUCT_NEW_DEFAULT_instr(x)]), $instr_val(v_val)*{v_val <- val_lst} ++ [STRUCT_NEW_instr(x)]) - -- (wf_val: `%`(v_val))*{v_val <- val_lst} - -- wf_config: `%`(mk_config_config(z, [STRUCT_NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(STRUCT_NEW_instr(x)) - -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if (|val_lst| = |zt_lst|) -- (if ($default_($unpack(zt)) = ?(v_val)))*{v_val <- val_lst, zt <- zt_lst} @@ -14650,8 +11536,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct_get_null{z : state, ht : heaptype, sx_opt : sx?, x : idx, i : u32}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) STRUCT_GET_instr(sx_opt, x, i)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) STRUCT_GET_instr(sx_opt, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct_get_struct{z : state, a : addr, sx_opt : sx?, x : idx, i : u32, zt_lst : storagetype*, mut_opt_lst : mut?*}: @@ -14659,43 +11543,29 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(i).0 < |zt_lst|) -- if ($proj_uN_0(i).0 < |$fun_structinst(z)[a].FIELDS_structinst|) -- if (a < |$fun_structinst(z)|) - -- wf_config: `%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) STRUCT_GET_instr(sx_opt, x, i)])) - -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new_default{z : state, v_n : n, x : idx, v_val : val, mut_opt : mut?, zt : storagetype}: `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DEFAULT_instr(x)]), $instr_val(v_val)^v_n{} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) - -- wf_val: `%`(v_val) - -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($default_($unpack(zt)) = ?(v_val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new_elem_oob{z : state, i : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new_elem_alloc{z : state, i : num_, v_n : n, x : idx, y : idx, ref_lst : ref*}: `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_ELEM_instr(x, y)]), $instr_ref(v_ref)^v_n{v_ref <- ref_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) - -- (wf_ref: `%`(v_ref))*{v_ref <- ref_lst} - -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) -- if ($proj_num__0(i) =/= ?()) -- if (ref_lst = $fun_elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : v_n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new_data_oob{z : state, i : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((v_n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) @@ -14704,10 +11574,6 @@ relation Step_read: `%~>%`(config, instr*) rule array_new_data_num{z : state, i : num_, v_n : n, x : idx, y : idx, zt : storagetype, c_lst : lit_*, mut_opt : mut?}: `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^v_n{c <- c_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) -- (if ($cunpack(zt) =/= ?()))^v_n{c <- c_lst} - -- (wf_lit_: `%%`(zt, c))*{c <- c_lst} - -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^v_n{c <- c_lst}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((v_n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -14715,14 +11581,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_get_null{z : state, ht : heaptype, i : num_, sx_opt : sx?, x : idx}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_get_oob{z : state, a : addr, i : num_, sx_opt : sx?, x : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -14733,34 +11595,24 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$fun_arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)])) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_len_null{z : state, ht : heaptype}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) ARRAY_LEN_instr]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) ARRAY_LEN_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_len_array{z : state, a : addr}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) ARRAY_LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(|$fun_arrayinst(z)[a].FIELDS_arrayinst|)))]) -- if (a < |$fun_arrayinst(z)|) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) ARRAY_LEN_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(|$fun_arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_fill_null{z : state, ht : heaptype, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_fill_oob{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -14768,40 +11620,29 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_fill_zero{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)]), []) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) - -- ~ Step_read_before_array_fill_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$fun_arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_fill_succ{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)]), [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x) REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) - -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY_SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY_FILL_instr(x)) - -- ~ Step_read_before_array_fill_succ: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- if (a < |$fun_arrayinst(z)|) + -- if ((v_n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_null1{z : state, ht_1 : heaptype, i_1 : num_, v_ref : ref, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(v_ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(v_ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_null2{z : state, v_ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr(I32_numtype, i_1) REF_NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr(I32_numtype, i_1) REF_NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -14809,8 +11650,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob2{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -14818,8 +11657,11 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_zero{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- ~ Step_read_before_array_copy_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$fun_arrayinst(z)|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$fun_arrayinst(z)|) + -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|)) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14827,19 +11669,9 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY_GET_instr(sx_opt, x_2) ARRAY_SET_instr(x_1) REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY_GET_instr(sx_opt, x_2)) - -- wf_instr: `%`(ARRAY_SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY_COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) - -- ~ Step_read_before_array_copy_le: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- if (a_2 < |$fun_arrayinst(z)|) + -- if (a_1 < |$fun_arrayinst(z)|) + -- if (((v_n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|)) -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = $fun_sx(zt_2))) @@ -14848,18 +11680,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_GET_instr(sx_opt, x_2) ARRAY_SET_instr(x_1) REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY_GET_instr(sx_opt, x_2)) - -- wf_instr: `%`(ARRAY_SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY_COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) -- ~ Step_read_before_array_copy_gt: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) -- if (sx_opt = $fun_sx(zt_2)) @@ -14867,14 +11687,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_null{z : state, ht : heaptype, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_oob1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -14882,16 +11698,16 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_oob2{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_zero{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), []) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- ~ Step_read_before_array_init_elem_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- if ($proj_num__0(j) =/= ?()) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$fun_arrayinst(z)|) + -- if ((($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|)) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14899,30 +11715,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_ref(v_ref) ARRAY_SET_instr(x) REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_INIT_ELEM_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- wf_ref: `%`(v_ref) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY_SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY_INIT_ELEM_instr(x, y)) - -- ~ Step_read_before_array_init_elem_succ: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- if (a < |$fun_arrayinst(z)|) + -- if (((v_n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|)) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$fun_elem(z, y).REFS_eleminst|) -- if (v_ref = $fun_elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_null{z : state, ht : heaptype, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -14930,9 +11734,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob2{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) @@ -14940,7 +11741,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_zero{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), []) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) -- ~ Step_read_before_array_init_data_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) -- if (v_n = 0) @@ -14950,16 +11750,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($cunpack(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY_SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY_INIT_DATA_instr(x, y)) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- ~ Step_read_before_array_init_data_num: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($zbytes_(zt, c) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -14972,74 +11762,48 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, instr_lst : instr*, instr'_lst : instr*}: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z, instr'_lst)) - -- wf_config: `%`(mk_config_config(z, instr_lst)) - -- wf_config: `%`(mk_config_config(z, instr'_lst)) -- Step_pure: `%~>%`(instr_lst, instr'_lst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, instr_lst : instr*, instr'_lst : instr*}: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z, instr'_lst)) - -- wf_config: `%`(mk_config_config(z, instr_lst)) - -- wf_config: `%`(mk_config_config(z, instr'_lst)) -- Step_read: `%~>%`(mk_config_config(z, instr_lst), instr'_lst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule ctxt_instrs{z : state, val_lst : val*, instr_lst : instr*, instr_1_lst : instr*, z' : state, instr'_lst : instr*}: `%~>%`(mk_config_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ instr_lst ++ instr_1_lst), mk_config_config(z', $instr_val(v_val)*{v_val <- val_lst} ++ instr'_lst ++ instr_1_lst)) - -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ instr_lst ++ instr_1_lst)) - -- wf_config: `%`(mk_config_config(z', $instr_val(v_val)*{v_val <- val_lst} ++ instr'_lst ++ instr_1_lst)) - -- wf_config: `%`(mk_config_config(z, instr_lst)) - -- wf_config: `%`(mk_config_config(z', instr'_lst)) -- Step: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z', instr'_lst)) -- if ((val_lst =/= []) \/ (instr_1_lst =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule ctxt_label{z : state, v_n : n, instr_0_lst : instr*, instr_lst : instr*, z' : state, instr'_lst : instr*}: `%~>%`(mk_config_config(z, [LABEL__instr(v_n, instr_0_lst, instr_lst)]), mk_config_config(z', [LABEL__instr(v_n, instr_0_lst, instr'_lst)])) - -- wf_config: `%`(mk_config_config(z, [LABEL__instr(v_n, instr_0_lst, instr_lst)])) - -- wf_config: `%`(mk_config_config(z', [LABEL__instr(v_n, instr_0_lst, instr'_lst)])) - -- wf_config: `%`(mk_config_config(z, instr_lst)) - -- wf_config: `%`(mk_config_config(z', instr'_lst)) -- Step: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z', instr'_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule ctxt_frame{s : store, f : frame, v_n : n, f' : frame, instr_lst : instr*, s' : store, f'' : frame, instr'_lst : instr*}: `%~>%`(mk_config_config(mk_state_state(s, f), [FRAME__instr(v_n, f', instr_lst)]), mk_config_config(mk_state_state(s', f), [FRAME__instr(v_n, f'', instr'_lst)])) - -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [FRAME__instr(v_n, f', instr_lst)])) - -- wf_config: `%`(mk_config_config(mk_state_state(s', f), [FRAME__instr(v_n, f'', instr'_lst)])) - -- wf_config: `%`(mk_config_config(mk_state_state(s, f'), instr_lst)) - -- wf_config: `%`(mk_config_config(mk_state_state(s', f''), instr'_lst)) -- Step: `%~>%`(mk_config_config(mk_state_state(s, f'), instr_lst), mk_config_config(mk_state_state(s', f''), instr'_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, val_lst : val*, v_n : n, x : idx, exn : exninst, a : addr, t_lst : valtype*}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [THROW_instr(x)]), mk_config_config($add_exninst(z, [exn]), [REF_EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [THROW_instr(x)])) - -- wf_config: `%`(mk_config_config($add_exninst(z, [exn]), [REF_EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) - -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) - -- wf_exninst: `%`({TAG $fun_tagaddr(z)[$proj_uN_0(x).0], FIELDS val_lst}) -- Expand: `%~~%`($as_deftype($fun_tag(z, x).TYPE_taginst), FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if (a = |$fun_exninst(z)|) + -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) -- if (exn = {TAG $fun_tagaddr(z)[$proj_uN_0(x).0], FIELDS val_lst}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local_set{z : state, v_val : val, x : idx}: `%~>%`(mk_config_config(z, [$instr_val(v_val) LOCAL_SET_instr(x)]), mk_config_config($with_local(z, x, v_val), [])) - -- wf_config: `%`(mk_config_config(z, [$instr_val(v_val) LOCAL_SET_instr(x)])) - -- wf_config: `%`(mk_config_config($with_local(z, x, v_val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global_set{z : state, v_val : val, x : idx}: `%~>%`(mk_config_config(z, [$instr_val(v_val) GLOBAL_SET_instr(x)]), mk_config_config($with_global(z, x, v_val), [])) - -- wf_config: `%`(mk_config_config(z, [$instr_val(v_val) GLOBAL_SET_instr(x)])) - -- wf_config: `%`(mk_config_config($with_global(z, x, v_val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule table_set_oob{z : state, at : addrtype, i : num_, v_ref : ref, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)]), mk_config_config(z, [TRAP_instr])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_table(z, x).REFS_tableinst|) @@ -15047,35 +11811,25 @@ relation Step: `%~>%`(config, config) rule table_set_val{z : state, at : addrtype, i : num_, v_ref : ref, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)]), mk_config_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, v_ref), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)])) - -- wf_config: `%`(mk_config_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, v_ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule table_grow_succeed{z : state, v_ref : ref, at : addrtype, v_n : n, x : idx, ti : tableinst}: `%~>%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)]), mk_config_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(|$fun_table(z, x).REFS_tableinst|)))])) - -- wf_config: `%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)])) - -- wf_config: `%`(mk_config_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(|$fun_table(z, x).REFS_tableinst|)))])) -- if ($growtable($fun_table(z, x), v_n, v_ref) =/= ?()) -- if (ti = !($growtable($fun_table(z, x), v_n, v_ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule table_grow_fail{z : state, v_ref : ref, at : addrtype, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)]), mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem_drop{z : state, x : idx}: `%~>%`(mk_config_config(z, [ELEM_DROP_instr(x)]), mk_config_config($with_elem(z, x, []), [])) - -- wf_config: `%`(mk_config_config(z, [ELEM_DROP_instr(x)])) - -- wf_config: `%`(mk_config_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule store_num_oob{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), mk_config_config(z, [TRAP_instr])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) @@ -15083,15 +11837,11 @@ relation Step: `%~>%`(config, config) rule store_num_val{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, b_lst : byte*}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if (b_lst = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule store_pack_oob{z : state, at : addrtype, i : num_, v_Inn : Inn, c : num_, v_n : n, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)]), mk_config_config(z, [TRAP_instr])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)])) - -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) @@ -15099,16 +11849,12 @@ relation Step: `%~>%`(config, config) rule store_pack_val{z : state, at : addrtype, i : num_, v_Inn : Inn, c : num_, v_n : n, x : idx, ao : memarg, b_lst : byte*}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)])) - -- wf_config: `%`(mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if ($proj_num__0(c) =/= ?()) -- if (b_lst = $ibytes_(v_n, $wrap__($size($numtype_addrtype(v_Inn)), v_n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule vstore_oob{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), mk_config_config(z, [TRAP_instr])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) @@ -15116,15 +11862,11 @@ relation Step: `%~>%`(config, config) rule vstore_val{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, b_lst : byte*}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if (b_lst = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule vstore_lane_oob{z : state, at : addrtype, i : num_, c : vec_, v_N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), mk_config_config(z, [TRAP_instr])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)])) - -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + v_N) > |$fun_mem(z, x).BYTES_meminst|) @@ -15132,42 +11874,29 @@ relation Step: `%~>%`(config, config) rule vstore_lane_val{z : state, at : addrtype, i : num_, c : vec_, v_N : N, x : idx, ao : memarg, j : laneidx, b_lst : byte*, v_Jnn : Jnn, v_M : M}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)])) - -- wf_config: `%`(mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) - -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]) =/= ?()) - -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)|) - -- wf_uN: `%%`(v_N, mk_uN_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]))).0)) -- if (v_N = $jsize(v_Jnn)) -- if ((v_M : nat <:> rat) = ((128 : nat <:> rat) / (v_N : nat <:> rat))) + -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]) =/= ?()) + -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)|) -- if (b_lst = $ibytes_(v_N, mk_uN_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]))).0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule memory_grow_succeed{z : state, at : addrtype, v_n : n, x : idx, mi : meminst}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)]), mk_config_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((|$fun_mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)])) - -- wf_config: `%`(mk_config_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((|$fun_mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if ($growmem($fun_mem(z, x), v_n) =/= ?()) -- if (mi = !($growmem($fun_mem(z, x), v_n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule memory_grow_fail{z : state, at : addrtype, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)]), mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data_drop{z : state, x : idx}: `%~>%`(mk_config_config(z, [DATA_DROP_instr(x)]), mk_config_config($with_data(z, x, []), [])) - -- wf_config: `%`(mk_config_config(z, [DATA_DROP_instr(x)])) - -- wf_config: `%`(mk_config_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct_new{z : state, val_lst : val*, v_n : n, x : idx, si : structinst, a : addr, mut_opt_lst : mut?*, zt_lst : storagetype*}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [STRUCT_NEW_instr(x)]), mk_config_config($add_structinst(z, [si]), [REF_STRUCT_ADDR_instr(a)])) - -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [STRUCT_NEW_instr(x)])) - -- wf_config: `%`(mk_config_config($add_structinst(z, [si]), [REF_STRUCT_ADDR_instr(a)])) - -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)^v_n{mut_opt <- mut_opt_lst, zt <- zt_lst}))) - -- wf_structinst: `%`({TYPE $fun_type(z, x), FIELDS $packfield_(zt, v_val)^v_n{v_val <- val_lst, zt <- zt_lst}}) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)^v_n{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if (a = |$fun_structinst(z)|) -- if (si = {TYPE $fun_type(z, x), FIELDS $packfield_(zt, v_val)^v_n{v_val <- val_lst, zt <- zt_lst}}) @@ -15175,39 +11904,26 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule struct_set_null{z : state, ht : heaptype, v_val : val, x : idx, i : u32}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) $instr_val(v_val) STRUCT_SET_instr(x, i)]), mk_config_config(z, [TRAP_instr])) - -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) $instr_val(v_val) STRUCT_SET_instr(x, i)])) - -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule struct_set_struct{z : state, a : addr, v_val : val, x : idx, i : u32, zt_lst : storagetype*, mut_opt_lst : mut?*}: `%~>%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) $instr_val(v_val) STRUCT_SET_instr(x, i)]), mk_config_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt_lst[$proj_uN_0(i).0], v_val)), [])) -- if ($proj_uN_0(i).0 < |zt_lst|) - -- wf_config: `%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) $instr_val(v_val) STRUCT_SET_instr(x, i)])) - -- wf_config: `%`(mk_config_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt_lst[$proj_uN_0(i).0], v_val)), [])) - -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array_new_fixed{z : state, val_lst : val*, v_n : n, x : idx, ai : arrayinst, a : addr, mut_opt : mut?, zt : storagetype}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]), mk_config_config($add_arrayinst(z, [ai]), [REF_ARRAY_ADDR_instr(a)])) - -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))])) - -- wf_config: `%`(mk_config_config($add_arrayinst(z, [ai]), [REF_ARRAY_ADDR_instr(a)])) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) - -- wf_arrayinst: `%`({TYPE $fun_type(z, x), FIELDS $packfield_(zt, v_val)^v_n{v_val <- val_lst}}) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ((a = |$fun_arrayinst(z)|) /\ (ai = {TYPE $fun_type(z, x), FIELDS $packfield_(zt, v_val)^v_n{v_val <- val_lst}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule array_set_null{z : state, ht : heaptype, i : num_, v_val : val, x : idx}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)]), mk_config_config(z, [TRAP_instr])) - -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule array_set_oob{z : state, a : addr, i : num_, v_val : val, x : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)]), mk_config_config(z, [TRAP_instr])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -15216,9 +11932,6 @@ relation Step: `%~>%`(config, config) rule array_set_array{z : state, a : addr, i : num_, v_val : val, x : idx, zt : storagetype, mut_opt : mut?}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)]), mk_config_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, v_val)), [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)])) - -- wf_config: `%`(mk_config_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, v_val)), [])) - -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) } @@ -15230,14 +11943,10 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, instr_lst : instr*}: `%~>*%`(mk_config_config(z, instr_lst), mk_config_config(z, instr_lst)) - -- wf_config: `%`(mk_config_config(z, instr_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, instr_lst : instr*, z'' : state, instr''_lst : instr*, z' : state, instr'_lst : instr*}: `%~>*%`(mk_config_config(z, instr_lst), mk_config_config(z'', instr''_lst)) - -- wf_config: `%`(mk_config_config(z, instr_lst)) - -- wf_config: `%`(mk_config_config(z'', instr''_lst)) - -- wf_config: `%`(mk_config_config(z', instr'_lst)) -- Step: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z', instr'_lst)) -- Steps: `%~>*%`(mk_config_config(z', instr'_lst), mk_config_config(z'', instr''_lst)) } @@ -15247,8 +11956,6 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule mk_Eval_expr{z : state, instr_lst : instr*, z' : state, val_lst : val*}: `%;%~>*%;%`(z, instr_lst, z', val_lst) - -- wf_config: `%`(mk_config_config(z, instr_lst)) - -- wf_config: `%`(mk_config_config(z', $instr_val(v_val)*{v_val <- val_lst})) -- Steps: `%~>*%`(mk_config_config(z, instr_lst), mk_config_config(z', $instr_val(v_val)*{v_val <- val_lst})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15260,7 +11967,6 @@ def $alloctypes(var_0 : type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{type'_lst : type*, v_type : type, deftype'_lst : deftype*, deftype_lst : deftype*, v_rectype : rectype, x : uN}(type'_lst ++ [v_type]) = deftype'_lst ++ deftype_lst - -- wf_uN: `%%`(32, x) -- where deftype'_lst = $alloctypes(type'_lst) {deftype'_lst} -- where TYPE_type(v_rectype) = v_type {v_rectype} -- if (deftype_lst = $subst_all_deftypes($rolldt(x, v_rectype), $typeuse_deftype(deftype')*{deftype' <- deftype'_lst})) @@ -15271,8 +11977,6 @@ def $alloctypes(var_0 : type*) : deftype* def $alloctag(v_store : store, v_tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, v_tagtype : typeuse, v_taginst : taginst}(s, v_tagtype) = (s +++ {TAGS [v_taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) - -- wf_store: `%`({TAGS [v_taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_taginst: `%`({TYPE v_tagtype}) -- if (v_taginst = {TYPE v_tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15284,8 +11988,6 @@ def $alloctags(v_store : store, var_0 : tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, v_tagtype : typeuse, tagtype'_lst : tagtype*, s_2 : store, ja : nat, ja'_lst : tagaddr*, s_1 : store}(s, [v_tagtype] ++ tagtype'_lst) = (s_2, [ja] ++ ja'_lst) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, v_tagtype) {ja, s_1} -- where (s_2, ja'_lst) = $alloctags(s_1, tagtype'_lst) {ja'_lst, s_2} } @@ -15294,8 +11996,6 @@ def $alloctags(v_store : store, var_0 : tagtype*) : (store, tagaddr*) def $allocglobal(v_store : store, v_globaltype : globaltype, v_val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, v_globaltype : globaltype, v_val : val, v_globalinst : globalinst}(s, v_globaltype, v_val) = (s +++ {TAGS [], GLOBALS [v_globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [v_globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_globalinst: `%`({TYPE v_globaltype, VALUE v_val}) -- if (v_globalinst = {TYPE v_globaltype, VALUE v_val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15307,8 +12007,6 @@ def $allocglobals(v_store : store, var_0 : globaltype*, var_1 : val*) : (store, def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, v_globaltype : globaltype, globaltype'_lst : globaltype*, v_val : val, val'_lst : val*, s_2 : store, ga : nat, ga'_lst : globaladdr*, s_1 : store}(s, [v_globaltype] ++ globaltype'_lst, [v_val] ++ val'_lst) = (s_2, [ga] ++ ga'_lst) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, v_globaltype, v_val) {ga, s_1} -- where (s_2, ga'_lst) = $allocglobals(s_1, globaltype'_lst, val'_lst) {ga'_lst, s_2} } @@ -15317,8 +12015,6 @@ def $allocglobals(v_store : store, var_0 : globaltype*, var_1 : val*) : (store, def $allocmem(v_store : store, v_memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, j_opt : u64?, v_meminst : meminst}(s, `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt))) = (s +++ {TAGS [], GLOBALS [], MEMS [v_meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [v_meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES mk_byte_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) -- if (v_meminst = {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES mk_byte_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15330,8 +12026,6 @@ def $allocmems(v_store : store, var_0 : memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, v_memtype : memtype, memtype'_lst : memtype*, s_2 : store, ma : nat, ma'_lst : memaddr*, s_1 : store}(s, [v_memtype] ++ memtype'_lst) = (s_2, [ma] ++ ma'_lst) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, v_memtype) {ma, s_1} -- where (s_2, ma'_lst) = $allocmems(s_1, memtype'_lst) {ma'_lst, s_2} } @@ -15340,8 +12034,6 @@ def $allocmems(v_store : store, var_0 : memtype*) : (store, memaddr*) def $alloctable(v_store : store, v_tabletype : tabletype, v_ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, j_opt : u64?, rt : reftype, v_ref : ref, v_tableinst : tableinst}(s, mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), v_ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [v_tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [v_tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS v_ref^$proj_uN_0(i).0{}}) -- if (v_tableinst = {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS v_ref^$proj_uN_0(i).0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15353,8 +12045,6 @@ def $alloctables(v_store : store, var_0 : tabletype*, var_1 : ref*) : (store, ta def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, v_tabletype : tabletype, tabletype'_lst : tabletype*, v_ref : ref, ref'_lst : ref*, s_2 : store, ta : nat, ta'_lst : tableaddr*, s_1 : store}(s, [v_tabletype] ++ tabletype'_lst, [v_ref] ++ ref'_lst) = (s_2, [ta] ++ ta'_lst) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, v_tabletype, v_ref) {s_1, ta} -- where (s_2, ta'_lst) = $alloctables(s_1, tabletype'_lst, ref'_lst) {s_2, ta'_lst} } @@ -15363,8 +12053,6 @@ def $alloctables(v_store : store, var_0 : tabletype*, var_1 : ref*) : (store, ta def $allocfunc(v_store : store, v_deftype : deftype, v_funccode : funccode, v_moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, v_deftype : deftype, v_funccode : funccode, v_moduleinst : moduleinst, v_funcinst : funcinst}(s, v_deftype, v_funccode, v_moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [v_funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [v_funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_funcinst: `%`({TYPE v_deftype, MODULE v_moduleinst, CODE v_funccode}) -- if (v_funcinst = {TYPE v_deftype, MODULE v_moduleinst, CODE v_funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15376,8 +12064,6 @@ def $allocfuncs(v_store : store, var_0 : deftype*, var_1 : funccode*, var_2 : mo def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, dt'_lst : deftype*, v_funccode : funccode, funccode'_lst : funccode*, v_moduleinst : moduleinst, moduleinst'_lst : moduleinst*, s_2 : store, fa : nat, fa'_lst : funcaddr*, s_1 : store}(s, [dt] ++ dt'_lst, [v_funccode] ++ funccode'_lst, [v_moduleinst] ++ moduleinst'_lst) = (s_2, [fa] ++ fa'_lst) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, v_funccode, v_moduleinst) {fa, s_1} -- where (s_2, fa'_lst) = $allocfuncs(s_1, dt'_lst, funccode'_lst, moduleinst'_lst) {fa'_lst, s_2} } @@ -15386,8 +12072,6 @@ def $allocfuncs(v_store : store, var_0 : deftype*, var_1 : funccode*, var_2 : mo def $allocdata(v_store : store, v_datatype : datatype, var_0 : byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, byte_lst : byte*, v_datainst : datainst}(s, OK_datatype, byte_lst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [v_datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [v_datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_datainst: `%`({BYTES byte_lst}) -- if (v_datainst = {BYTES byte_lst}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15399,8 +12083,6 @@ def $allocdatas(v_store : store, var_0 : datatype*, var_1 : byte**) : (store, da def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, ok'_lst : datatype*, b_lst : byte*, b'_lst_lst : byte**, s_2 : store, da : nat, da'_lst : dataaddr*, s_1 : store}(s, [ok] ++ ok'_lst, [b_lst] ++ b'_lst_lst) = (s_2, [da] ++ da'_lst) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b_lst) {da, s_1} -- where (s_2, da'_lst) = $allocdatas(s_1, ok'_lst, b'_lst_lst) {da'_lst, s_2} } @@ -15409,8 +12091,6 @@ def $allocdatas(v_store : store, var_0 : datatype*, var_1 : byte**) : (store, da def $allocelem(v_store : store, v_elemtype : elemtype, var_0 : ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, v_elemtype : reftype, ref_lst : ref*, v_eleminst : eleminst}(s, v_elemtype, ref_lst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [v_eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [v_eleminst], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_eleminst: `%`({TYPE v_elemtype, REFS ref_lst}) -- if (v_eleminst = {TYPE v_elemtype, REFS ref_lst}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15422,8 +12102,6 @@ def $allocelems(v_store : store, var_0 : elemtype*, var_1 : ref**) : (store, ele def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, rt'_lst : reftype*, ref_lst : ref*, ref'_lst_lst : ref**, s_2 : store, ea : nat, ea'_lst : elemaddr*, s_1 : store}(s, [rt] ++ rt'_lst, [ref_lst] ++ ref'_lst_lst) = (s_2, [ea] ++ ea'_lst) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref_lst) {ea, s_1} -- where (s_2, ea'_lst) = $allocelems(s_1, rt'_lst, ref'_lst_lst) {ea'_lst, s_2} } @@ -15432,19 +12110,14 @@ def $allocelems(v_store : store, var_0 : elemtype*, var_1 : ref**) : (store, ele def $allocexport(v_moduleinst : moduleinst, v_export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, TAG_externidx(x))) = {NAME v_name, ADDR TAG_externaddr(v_moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME v_name, ADDR TAG_externaddr(v_moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, GLOBAL_externidx(x))) = {NAME v_name, ADDR GLOBAL_externaddr(v_moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME v_name, ADDR GLOBAL_externaddr(v_moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, MEM_externidx(x))) = {NAME v_name, ADDR MEM_externaddr(v_moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME v_name, ADDR MEM_externaddr(v_moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, TABLE_externidx(x))) = {NAME v_name, ADDR TABLE_externaddr(v_moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME v_name, ADDR TABLE_externaddr(v_moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, FUNC_externidx(x))) = {NAME v_name, ADDR FUNC_externaddr(v_moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME v_name, ADDR FUNC_externaddr(v_moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(v_moduleinst : moduleinst, var_0 : export*) : exportinst* @@ -15455,24 +12128,6 @@ def $allocexports(v_moduleinst : moduleinst, var_0 : export*) : exportinst* def $allocmodule(v_store : store, v_module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, v_module : module, externaddr_lst : externaddr*, val_G_lst : val*, ref_T_lst : ref*, ref_E_lst_lst : ref**, s_7 : store, v_moduleinst : moduleinst, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, tagtype_lst : tagtype*, globaltype_lst : globaltype*, expr_G_lst : expr*, memtype_lst : memtype*, tabletype_lst : tabletype*, expr_T_lst : expr*, x_lst : idx*, local_lst_lst : local**, expr_F_lst : expr*, byte_lst_lst : byte**, datamode_lst : datamode*, elemtype_lst : elemtype*, expr_E_lst_lst : expr**, elemmode_lst : elemmode*, aa_I_lst : tagaddr*, ga_I_lst : globaladdr*, ma_I_lst : memaddr*, ta_I_lst : tableaddr*, fa_I_lst : funcaddr*, dt_lst : deftype*, fa_lst : nat*, i_F_lst : nat*, s_1 : store, aa_lst : tagaddr*, s_2 : store, ga_lst : globaladdr*, s_3 : store, ma_lst : memaddr*, s_4 : store, ta_lst : tableaddr*, s_5 : store, da_lst : dataaddr*, s_6 : store, ea_lst : elemaddr*, xi_lst : exportinst*}(s, v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst) = (s_7, v_moduleinst) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(v_moduleinst) - -- wf_store: `%`(s_1) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_3) - -- wf_store: `%`(s_4) - -- wf_store: `%`(s_5) - -- wf_store: `%`(s_6) - -- wf_module: `%`(MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst)) - -- (wf_tag: `%`(TAG_tag(v_tagtype)))*{v_tagtype <- tagtype_lst} - -- (wf_global: `%`(GLOBAL_global(v_globaltype, expr_G)))*{expr_G <- expr_G_lst, v_globaltype <- globaltype_lst} - -- (wf_mem: `%`(MEMORY_mem(v_memtype)))*{v_memtype <- memtype_lst} - -- (wf_table: `%`(TABLE_table(v_tabletype, expr_T)))*{expr_T <- expr_T_lst, v_tabletype <- tabletype_lst} - -- (wf_func: `%`(FUNC_func(x, local_lst, expr_F)))*{expr_F <- expr_F_lst, local_lst <- local_lst_lst, x <- x_lst} - -- (wf_data: `%`(DATA_data(byte_lst, v_datamode)))*{byte_lst <- byte_lst_lst, v_datamode <- datamode_lst} - -- (wf_elem: `%`(ELEM_elem(v_elemtype, expr_E_lst, v_elemmode)))*{v_elemmode <- elemmode_lst, v_elemtype <- elemtype_lst, expr_E_lst <- expr_E_lst_lst} - -- wf_moduleinst: `%`({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}) - -- wf_moduleinst: `%`({TYPES dt_lst, TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS da_lst, ELEMS ea_lst, EXPORTS xi_lst}) -- where MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst) = v_module {data_lst, elem_lst, export_lst, func_lst, global_lst, import_lst, mem_lst, start_opt, table_lst, tag_lst, type_lst} -- where TAG_tag(v_tagtype)*{v_tagtype <- tagtype_lst} = tag_lst {tagtype_lst, v_tagtype} -- where GLOBAL_global(v_globaltype, expr_G)*{expr_G <- expr_G_lst, v_globaltype <- globaltype_lst} = global_lst {expr_G, expr_G_lst, globaltype_lst, v_globaltype} @@ -15504,10 +12159,6 @@ def $rundata_(v_dataidx : dataidx, v_data : data) : instr* def $rundata_{x : uN, b_lst : byte*, v_n : nat}(x, DATA_data(b_lst, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, b_lst : byte*, v_n : nat, y : uN, instr_lst : instr*}(x, DATA_data(b_lst, ACTIVE_datamode(y, instr_lst))) = instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(y, x) DATA_DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n)))) - -- wf_instr: `%`(MEMORY_INIT_instr(y, x)) - -- wf_instr: `%`(DATA_DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(v_elemidx : elemidx, v_elem : elem) : instr* @@ -15515,13 +12166,8 @@ def $runelem_(v_elemidx : elemidx, v_elem : elem) : instr* def $runelem_{x : uN, rt : reftype, e_lst : expr*, v_n : nat}(x, ELEM_elem(rt, e_lst, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, e_lst : expr*, v_n : nat}(x, ELEM_elem(rt, e_lst, DECLARE_elemmode)) = [ELEM_DROP_instr(x)] - -- wf_instr: `%`(ELEM_DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, e_lst : expr*, v_n : nat, y : uN, instr_lst : instr*}(x, ELEM_elem(rt, e_lst, ACTIVE_elemmode(y, instr_lst))) = instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(y, x) ELEM_DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n)))) - -- wf_instr: `%`(TABLE_INIT_instr(y, x)) - -- wf_instr: `%`(ELEM_DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -15532,11 +12178,6 @@ def $evalglobals(v_state : state, var_0 : globaltype*, var_1 : expr*) : (state, def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, gt'_lst : globaltype*, v_expr : instr*, expr'_lst : expr*, z' : state, v_val : val, val'_lst : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'_lst, [v_expr] ++ expr'_lst) = (z', [v_val] ++ val'_lst) - -- wf_state: `%`(z') - -- wf_val: `%`(v_val) - -- (wf_val: `%`(val'))*{val' <- val'_lst} - -- wf_state: `%`(mk_state_state(s, f)) - -- wf_state: `%`(mk_state_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, v_expr, z, [v_val]) -- where mk_state_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, v_val) {a, s'} @@ -15547,24 +12188,6 @@ def $evalglobals(v_state : state, var_0 : globaltype*, var_1 : expr*) : (state, def $instantiate(v_store : store, v_module : module, var_0 : externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, v_module : module, externaddr_lst : externaddr*, s' : store, v_moduleinst : moduleinst, instr_E_lst : instr*, instr_D_lst : instr*, instr_S_opt : instr?, xt_I_lst : externtype*, xt_E_lst : externtype*, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, globaltype_lst : globaltype*, expr_G_lst : expr*, tabletype_lst : tabletype*, expr_T_lst : expr*, byte_lst_lst : byte**, datamode_lst : datamode*, reftype_lst : reftype*, expr_E_lst_lst : expr**, elemmode_lst : elemmode*, x_opt : idx?, moduleinst_0 : moduleinst, i_F_lst : nat*, z : state, z' : state, val_G_lst : val*, ref_T_lst : ref*, ref_E_lst_lst : ref**, i_D_lst : nat*, i_E_lst : nat*}(s, v_module, externaddr_lst) = mk_config_config(mk_state_state(s', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt)) - -- wf_state: `%`(z) - -- wf_state: `%`(z') - -- (wf_val: `%`(val_G))*{val_G <- val_G_lst} - -- (wf_ref: `%`(ref_T))*{ref_T <- ref_T_lst} - -- (wf_ref: `%`(ref_E))*{ref_E <- ref_E_lst}*{ref_E_lst <- ref_E_lst_lst} - -- wf_config: `%`(mk_config_config(mk_state_state(s', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt))) - -- wf_moduletype: `%`(mk_moduletype_moduletype(xt_I_lst, xt_E_lst)) - -- wf_module: `%`(MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst)) - -- (wf_global: `%`(GLOBAL_global(v_globaltype, expr_G)))*{expr_G <- expr_G_lst, v_globaltype <- globaltype_lst} - -- (wf_table: `%`(TABLE_table(v_tabletype, expr_T)))*{expr_T <- expr_T_lst, v_tabletype <- tabletype_lst} - -- (wf_data: `%`(DATA_data(byte_lst, v_datamode)))*{byte_lst <- byte_lst_lst, v_datamode <- datamode_lst} - -- (wf_elem: `%`(ELEM_elem(v_reftype, expr_E_lst, v_elemmode)))*{v_elemmode <- elemmode_lst, expr_E_lst <- expr_E_lst_lst, v_reftype <- reftype_lst} - -- (wf_start: `%`(START_start(x)))?{x <- x_opt} - -- wf_moduleinst: `%`({TYPES $alloctypes(type_lst), TAGS [], GLOBALS $globalsxa(externaddr_lst), MEMS [], TABLES [], FUNCS $funcsxa(externaddr_lst) ++ (|s.FUNCS_store| + i_F)^(i_F<|func_lst|){i_F <- i_F_lst}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_state: `%`(mk_state_state(s, {LOCALS [], MODULE moduleinst_0})) - -- (wf_uN: `%%`(32, mk_uN_uN(i_D)))^(i_D<|data_lst|){i_D <- i_D_lst} - -- (wf_uN: `%%`(32, mk_uN_uN(i_E)))^(i_E<|elem_lst|){i_E <- i_E_lst} - -- (wf_instr: `%`(CALL_instr(x)))?{x <- x_opt} -- Module_ok: `|-%:%`(v_module, mk_moduletype_moduletype(xt_I_lst, xt_E_lst)) -- (Externaddr_ok: `%|-%:%`(s, v_externaddr, xt_I))*{v_externaddr <- externaddr_lst, xt_I <- xt_I_lst} -- where MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst) = v_module {data_lst, elem_lst, export_lst, func_lst, global_lst, import_lst, mem_lst, start_opt, table_lst, tag_lst, type_lst} @@ -15587,8 +12210,6 @@ def $instantiate(v_store : store, v_module : module, var_0 : externaddr*) : conf def $invoke(v_store : store, v_funcaddr : funcaddr, var_0 : val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, v_funcaddr : nat, val_lst : val*, t_1_lst : valtype*, t_2_lst : valtype*}(s, v_funcaddr, val_lst) = mk_config_config(mk_state_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(v_val)*{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(v_funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[v_funcaddr].TYPE_funcinst))]) - -- wf_config: `%`(mk_config_config(mk_state_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(v_val)*{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(v_funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[v_funcaddr].TYPE_funcinst))])) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- Expand: `%~~%`(s.FUNCS_store[v_funcaddr].TYPE_funcinst, FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- (Val_ok: `%|-%:%`(s, v_val, t_1))*{t_1 <- t_1_lst, v_val <- val_lst} @@ -17685,7 +14306,6 @@ rec { def $concat_idctxt(var_0 : idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{v_I : idctxt, I' : idctxt}([v_I I']) = v_I +++ $concat_idctxt(I'*{}) } @@ -17695,8 +14315,6 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule mk_Idctxt_ok{v_I : I, field_lst_lst : char**}: `|-%:OK`(v_I) - -- wf_idctxt: `%`(v_I) - -- (wf_name: `%`(mk_name_name(field_lst)))*{field_lst <- field_lst_lst} -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.GLOBALS_I)) @@ -19615,27 +16233,16 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32_add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global_get{C : context, x : idx, t : valtype, v_mut : mut}: `%|-%:%`(C, [GLOBAL_GET_instr(x)], mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL_GET_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) - -- wf_globaltype: `%`(mk_globaltype_globaltype(?(v_mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = mk_globaltype_globaltype(?(v_mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, v_blocktype : blocktype, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, [BLOCK_instr(v_blocktype, instr_lst)], mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(v_blocktype, instr_lst)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, v_blocktype, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) } @@ -19645,23 +16252,14 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule r_2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule r_3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule r_4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -19700,8 +16298,6 @@ def $allocXs(syntax X, syntax Y, v_store : store, var_0 : X*, var_1 : Y*) : (sto def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, X'_lst : X*, Y : Y, Y'_lst : Y*, s_2 : store, a : nat, a'_lst : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'_lst, [Y] ++ Y'_lst) = (s_2, [a] ++ a'_lst) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'_lst) = $allocXs(syntax X, syntax Y, s_1, X'_lst, Y'_lst) {a'_lst, s_2} } diff --git a/spectec/test-middlend/test.spectec.exp b/spectec/test-middlend/test.spectec.exp index 5b5aee3b28..404184343b 100644 --- a/spectec/test-middlend/test.spectec.exp +++ b/spectec/test-middlend/test.spectec.exp @@ -90,6 +90,19 @@ relation TestNestedIter: `%|-%`(nat***, nat**) -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} == IL Validation after pass else... +== Running pass else-simplification... + +;; test.spectec +relation HasSize: `%|-%`(nat, nat) + +;; test.spectec +relation TestNestedIter: `%|-%`(nat***, nat**) + ;; test.spectec + rule _{`n***` : nat***, `m**` : nat**}: + `%|-%`(n*{n <- `n*`}*{`n*` <- `n**`}+{`n**` <- `n***`}, m*{m <- `m*`}+{`m*` <- `m**`}) + -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} + +== IL Validation after pass else-simplification... == Running pass uncase-removal... ;; test.spectec From 066a296e67e6178f257690bd33746a920843d28c Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 19 Jan 2026 16:45:06 +0000 Subject: [PATCH 009/115] fix tests, adding wf relations again (removed by accident) --- .../04-remove-indexed-types.il | 2020 +++++++++++ .../specification.exp/05-totalize.il | 2020 +++++++++++ .../specification.exp/06-else.il | 2182 +++++++++++ .../07-else-simplification.il | 2139 ++++++++++- .../specification.exp/08-uncase-removal.il | 2139 ++++++++++- .../specification.exp/09-sideconditions.il | 2161 ++++++++++- .../specification.exp/10-sub-expansion.il | 3194 +++++++++++++++- .../test-middlend/specification.exp/11-sub.il | 3201 ++++++++++++++++- .../specification.exp/12-alias-demut.il | 3201 ++++++++++++++++- .../specification.exp/13-improve-ids.il | 3201 ++++++++++++++++- 10 files changed, 25394 insertions(+), 64 deletions(-) diff --git a/spectec/test-middlend/specification.exp/04-remove-indexed-types.il b/spectec/test-middlend/specification.exp/04-remove-indexed-types.il index 50ecdd925e..fcacfbcf35 100644 --- a/spectec/test-middlend/specification.exp/04-remove-indexed-types.il +++ b/spectec/test-middlend/specification.exp/04-remove-indexed-types.il @@ -302,16 +302,19 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -355,18 +358,29 @@ def $utf8(char*) : byte* def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] + -- wf_byte: `%`(b) + -- wf_byte: `%`(`%`_byte(ch!`%`_char.0)) -- if (ch!`%`_char.0 < 128) -- where b = `%`_byte(ch!`%`_char.0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) + -- wf_byte: `%`(b_4) -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -555,6 +569,7 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -565,6 +580,7 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -573,46 +589,55 @@ def $free_list(free*) : free def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -989,61 +1014,73 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1340,6 +1377,7 @@ def $unpack(storagetype : storagetype) : valtype def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype + -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype @@ -1371,8 +1409,10 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1466,6 +1506,9 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} + -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } @@ -1507,6 +1550,7 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1518,6 +1562,7 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1530,25 +1575,32 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1571,79 +1623,97 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) + -- wf_externtype: `%`(FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + -- wf_uN: `%%`(32, `%`_uN((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4135,10 +4223,13 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4169,6 +4260,7 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4235,10 +4327,13 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4247,10 +4342,13 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4273,6 +4371,7 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4283,8 +4382,10 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4340,6 +4441,7 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + -- wf_free: `%`(free) -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } @@ -4583,6 +4685,7 @@ def $free_datamode(datamode : datamode) : free def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -4595,8 +4698,10 @@ def $free_elemmode(elemmode : elemmode) : free def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -4750,12 +4855,14 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -4784,24 +4891,28 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype}: `%~~%`(deftype, comptype) + -- wf_comptype: `%`(comptype) -- if ($expanddt(deftype) = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -4809,6 +4920,7 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool @@ -4836,10 +4948,13 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -4847,6 +4962,8 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -4854,37 +4971,49 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) + -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) + -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_uN.0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) + -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -4892,6 +5021,8 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -4899,6 +5030,8 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -4906,11 +5039,14 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) + -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -4918,16 +5054,22 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -4936,6 +5078,10 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if (x!`%`_uN.0 < x_0!`%`_uN.0))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[x!`%`_uN.0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} @@ -4947,16 +5093,27 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -4964,6 +5121,11 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} @@ -4975,10 +5137,17 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx((x!`%`_uN.0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx((x!`%`_uN.0 + 1)), (i + 1))) @@ -4987,6 +5156,9 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- wf_context: `%`(C) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) @@ -4996,16 +5168,25 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) @@ -5014,11 +5195,14 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) @@ -5027,10 +5211,16 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5038,88 +5228,144 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5127,27 +5373,38 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) + -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) + -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 @@ -5155,11 +5412,15 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) + -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5167,11 +5428,17 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5181,6 +5448,9 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (if (C.LOCALS_context[x!`%`_uN.0] = lct))*{lct <- `lct*`, x <- `x*`} @@ -5190,11 +5460,16 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5202,6 +5477,8 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} @@ -5210,6 +5487,9 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5218,6 +5498,8 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5225,6 +5507,8 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5232,6 +5516,8 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5240,26 +5526,37 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5268,6 +5565,11 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) @@ -5278,6 +5580,9 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5286,6 +5591,7 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5294,11 +5600,17 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -5307,6 +5619,9 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5314,6 +5629,9 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -5323,26 +5641,41 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) + -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5350,11 +5683,18 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5362,35 +5702,49 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) + -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) + -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -5399,6 +5753,7 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5414,25 +5769,41 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) @@ -5440,18 +5811,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5459,17 +5847,27 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]))*{l <- `l*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_uN.0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5477,17 +5875,27 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5497,6 +5905,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5506,16 +5918,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5523,12 +5949,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -5537,6 +5973,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -5545,6 +5987,14 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5555,17 +6005,31 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} @@ -5573,35 +6037,56 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref.null{C : context, ht : heaptype}: `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref.i31{C : context}: `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref.is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref.as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref.eq{C : context}: `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.TEST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -5609,6 +6094,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.CAST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -5616,21 +6104,37 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31.get{C : context, sx : sx}: `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -5638,34 +6142,59 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.SET_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_uN.0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) @@ -5673,26 +6202,46 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array.set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array.len{C : context}: `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.LEN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array.fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) @@ -5700,12 +6249,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_uN.0] : reftype <: storagetype), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) @@ -5713,66 +6270,117 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local.get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local.set{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local.tee{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global.set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if (C.TABLES_context[x_1!`%`_uN.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_uN.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -5780,6 +6388,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_uN.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -5787,91 +6400,155 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem.drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(ELEM.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.ELEMS_context[x!`%`_uN.0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if (C.MEMS_context[x_1!`%`_uN.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_uN.0] = `%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data.drop{C : context, x : idx}: `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DATA.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.DATAS_context[x!`%`_uN.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -5879,12 +6556,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -5892,127 +6577,221 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if (i!`%`_uN.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_uN.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) @@ -6020,6 +6799,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -6027,6 +6810,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) } @@ -6036,6 +6823,9 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6043,6 +6833,7 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6050,59 +6841,91 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.null{C : context, ht : heaptype}: `%|-%CONST`(C, REF.NULL_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: `%|-%CONST`(C, REF.I31_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.func{C : context, x : idx}: `%|-%CONST`(C, REF.FUNC_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_fixed{C : context, x : idx, n : n}: `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern.convert_any{C : context}: `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global.get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL.GET_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -6111,6 +6934,8 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6118,6 +6943,9 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) @@ -6126,6 +6954,9 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if (x!`%`_uN.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) @@ -6135,6 +6966,8 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + -- wf_context: `%`(C) + -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6142,6 +6975,9 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) @@ -6151,6 +6987,8 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6158,6 +6996,9 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) @@ -6167,11 +7008,17 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6179,6 +7026,10 @@ relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[x!`%`_uN.0]) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -6188,10 +7039,15 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -6200,6 +7056,8 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6207,14 +7065,24 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -6224,6 +7092,8 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) @@ -6233,6 +7103,9 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6240,6 +7113,8 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + -- wf_context: `%`(C) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6247,26 +7122,41 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) -- if (C.TAGS_context[x!`%`_uN.0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if (C.GLOBALS_context[x!`%`_uN.0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) -- if (C.MEMS_context[x!`%`_uN.0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) -- if (C.TABLES_context[x!`%`_uN.0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6274,6 +7164,9 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6284,10 +7177,16 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } @@ -6300,10 +7199,13 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } @@ -6326,12 +7228,23 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) + -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} @@ -6492,8 +7405,10 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) + -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) + -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -6522,6 +7437,7 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -6541,23 +7457,28 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN((i!`%`_uN.0 \ (2 ^ M))) + -- wf_uN: `%%`(N, `%`_uN((i!`%`_uN.0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -6565,6 +7486,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -6572,6 +7494,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -6579,10 +7502,12 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, i_1!`%`_uN.0)) /\ (j_2 = $signed_(N, i_2!`%`_uN.0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -6611,15 +7536,19 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -6670,49 +7599,61 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 = 0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 =/= 0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -6826,8 +7767,10 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) + -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) + -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -6835,6 +7778,7 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) + -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -6842,6 +7786,7 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) + -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -6849,72 +7794,103 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) + -- wf_lit_: `%%`(($cunpack((packtype : packtype <: storagetype)) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -6952,23 +7928,32 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] + -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] + -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] + -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] + -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] + -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -7018,16 +8003,21 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else `%`_iN(0)) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else (if ($signed_(N, i!`%`_uN.0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[(i!`%`_uN.0 \ |c*{c <- `c*`}|)]))) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -7035,6 +8025,9 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} @@ -7042,6 +8035,10 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7050,6 +8047,10 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7058,6 +8059,9 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7066,6 +8070,9 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7074,6 +8081,9 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -7083,6 +8093,9 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -7092,6 +8105,9 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_uN.0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod(c!`%`_uN.0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -7099,6 +8115,9 @@ def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_uN.0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod(c!`%`_uN.0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} @@ -7106,6 +8125,9 @@ def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7114,6 +8136,9 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7122,6 +8147,10 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7131,6 +8160,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -7138,6 +8170,9 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -7145,6 +8180,10 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) @@ -7152,6 +8191,10 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{Jnn : Jnn, M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} @@ -7160,6 +8203,10 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{Jnn : Jnn, M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`} {c, `c*`} @@ -7189,146 +8236,213 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} @@ -7338,30 +8452,43 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -7372,12 +8499,19 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_uN.0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} @@ -7386,23 +8520,36 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_uN.0 : k!`%`_uN.0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_uN.0 : k!`%`_uN.0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -7418,15 +8565,37 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -7833,6 +9002,7 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) + -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -7840,6 +9010,7 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -8025,71 +9196,87 @@ def $local(state : state, localidx : localidx) : val? def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[x!`%`_uN.0] = ?(v)]) + -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[x!`%`_uN.0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], f) + -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], f) + -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = tableinst' + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if (i'!`%`_uN.0 = (|r'*{r' <- `r'*`}| + n)) @@ -8099,6 +9286,9 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst def $growmem(meminst : meminst, nat : nat) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = meminst' + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if ((i'!`%`_uN.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) @@ -8109,12 +9299,16 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -8124,44 +9318,76 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.I31_NUM_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.EXTERN_ref(addrref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -8171,16 +9397,23 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) + -- wf_store: `%`(s) + -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -8191,31 +9424,45 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -8255,425 +9502,703 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if (l!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if (l!`%`_uN.0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])) -- if (!($proj_num__0(i))!`%`_uN.0 < |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) -- if (!($proj_num__0(i))!`%`_uN.0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instr: `%`(LOCAL.SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- otherwise -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(REF.I31_NUM_instr(i)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) -- if ($unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) -- if ($binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(128, `%`_uN(0)) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_uN.0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) @@ -8682,205 +10207,323 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[!($proj_num__0(i))!`%`_uN.0] : ref <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.FILL_instr(x)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- otherwise -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -8889,22 +10532,33 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_uN: `%%`(N, j) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) @@ -8913,205 +10567,331 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- otherwise -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) + -- wf_instr: `%`(REF.NULL_instr(($type(z, x) : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])]) + -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_uN.0]) : val <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[!($proj_num__0(i))!`%`_uN.0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(i))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[!($proj_num__0(i))!`%`_uN.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[!($proj_num__0(i))!`%`_uN.0]) : val <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -9119,6 +10899,18 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) @@ -9126,53 +10918,87 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) + -- wf_ref: `%`(ref) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- otherwise -- if (ref = $elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const($cunpack(zt), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) + -- wf_lit_: `%%`(zt, c) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- otherwise -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -9185,32 +11011,52 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- wf_exninst: `%`({TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) @@ -9218,72 +11064,103 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if (ti = $growtable($table(z, x), n, ref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_uN: `%%`(N, `%`_uN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0))) @@ -9291,19 +11168,29 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if (mi = $growmem($mem(z, x), n)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) @@ -9311,30 +11198,46 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -9346,10 +11249,14 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } @@ -9359,6 +11266,8 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9370,6 +11279,7 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- wf_uN: `%%`(32, x) -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) @@ -9380,6 +11290,8 @@ def $alloctypes(type*) : deftype* def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9391,6 +11303,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } @@ -9399,6 +11313,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9410,6 +11326,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } @@ -9418,6 +11336,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9429,6 +11349,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } @@ -9437,6 +11359,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9448,6 +11372,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } @@ -9456,6 +11382,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9467,6 +11395,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } @@ -9475,6 +11405,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9486,6 +11418,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } @@ -9494,6 +11428,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9505,6 +11441,8 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } @@ -9513,14 +11451,19 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -9531,6 +11474,24 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + -- wf_store: `%`(s_7) + -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`(s_1) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_3) + -- wf_store: `%`(s_4) + -- wf_store: `%`(s_5) + -- wf_store: `%`(s_6) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} @@ -9562,6 +11523,10 @@ def $rundata_(dataidx : dataidx, data : data) : instr* def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) + -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -9569,8 +11534,13 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(TABLE.INIT_instr(y, x)) + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -9581,6 +11551,11 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) + -- wf_state: `%`(z') + -- wf_val: `%`(val) + -- (wf_val: `%`(val'))*{val' <- `val'*`} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- where `%;%`_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, val) {a, s'} @@ -9591,6 +11566,24 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- wf_state: `%`(z) + -- wf_state: `%`(z') + -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} + -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} + -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} + -- (wf_start: `%`(START_start(x)))?{x <- `x?`} + -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} + -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} + -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} @@ -9613,6 +11606,8 @@ def $instantiate(store : store, module : module, externaddr*) : config def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -11709,6 +13704,7 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) } @@ -11718,6 +13714,8 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I) + -- wf_idctxt: `%`(I) + -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) @@ -13603,15 +15601,26 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32.add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global.get{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -13621,14 +15630,23 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -13667,6 +15685,8 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} } diff --git a/spectec/test-middlend/specification.exp/05-totalize.il b/spectec/test-middlend/specification.exp/05-totalize.il index 691ffa27ff..4071a3cf68 100644 --- a/spectec/test-middlend/specification.exp/05-totalize.il +++ b/spectec/test-middlend/specification.exp/05-totalize.il @@ -302,16 +302,19 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -355,18 +358,29 @@ def $utf8(char*) : byte* def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] + -- wf_byte: `%`(b) + -- wf_byte: `%`(`%`_byte(ch!`%`_char.0)) -- if (ch!`%`_char.0 < 128) -- where b = `%`_byte(ch!`%`_char.0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) + -- wf_byte: `%`(b_4) -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -555,6 +569,7 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -565,6 +580,7 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -573,46 +589,55 @@ def $free_list(free*) : free def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -989,61 +1014,73 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1344,6 +1381,7 @@ def $unpack(storagetype : storagetype) : valtype def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype + -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1378,8 +1416,10 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1473,6 +1513,9 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} + -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } @@ -1514,6 +1557,7 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1525,6 +1569,7 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1537,25 +1582,32 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1578,79 +1630,97 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) + -- wf_externtype: `%`(FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + -- wf_uN: `%%`(32, `%`_uN((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4142,10 +4230,13 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4176,6 +4267,7 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4242,10 +4334,13 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4254,10 +4349,13 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4280,6 +4378,7 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4290,8 +4389,10 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4347,6 +4448,7 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + -- wf_free: `%`(free) -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } @@ -4590,6 +4692,7 @@ def $free_datamode(datamode : datamode) : free def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -4602,8 +4705,10 @@ def $free_elemmode(elemmode : elemmode) : free def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -4757,12 +4862,14 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -4791,24 +4898,28 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype}: `%~~%`(deftype, comptype) + -- wf_comptype: `%`(comptype) -- if ($expanddt(deftype) = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -4816,6 +4927,7 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool @@ -4843,10 +4955,13 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -4854,6 +4969,8 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -4861,37 +4978,49 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) + -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) + -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_uN.0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) + -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -4899,6 +5028,8 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -4906,6 +5037,8 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -4913,11 +5046,14 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) + -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -4925,16 +5061,22 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -4943,6 +5085,10 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if (x!`%`_uN.0 < x_0!`%`_uN.0))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[x!`%`_uN.0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} @@ -4954,16 +5100,27 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -4971,6 +5128,11 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} @@ -4982,10 +5144,17 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx((x!`%`_uN.0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx((x!`%`_uN.0 + 1)), (i + 1))) @@ -4994,6 +5163,9 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- wf_context: `%`(C) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) @@ -5003,16 +5175,25 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) @@ -5021,11 +5202,14 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) @@ -5034,10 +5218,16 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5045,88 +5235,144 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5134,27 +5380,38 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) + -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) + -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 @@ -5162,11 +5419,15 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) + -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5174,11 +5435,17 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5188,6 +5455,9 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (if (C.LOCALS_context[x!`%`_uN.0] = lct))*{lct <- `lct*`, x <- `x*`} @@ -5197,11 +5467,16 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5209,6 +5484,8 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} @@ -5217,6 +5494,9 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5225,6 +5505,8 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5232,6 +5514,8 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5239,6 +5523,8 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5247,26 +5533,37 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5275,6 +5572,11 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) @@ -5285,6 +5587,9 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5293,6 +5598,7 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5301,11 +5607,17 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -5314,6 +5626,9 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5321,6 +5636,9 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -5330,26 +5648,41 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) + -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5357,11 +5690,18 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5369,35 +5709,49 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) + -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) + -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -5406,6 +5760,7 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5421,25 +5776,41 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) @@ -5447,18 +5818,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5466,17 +5854,27 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]))*{l <- `l*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_uN.0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5484,17 +5882,27 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5504,6 +5912,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5513,16 +5925,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5530,12 +5956,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -5544,6 +5980,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -5552,6 +5994,14 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5562,17 +6012,31 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} @@ -5580,35 +6044,56 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref.null{C : context, ht : heaptype}: `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref.i31{C : context}: `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref.is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref.as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref.eq{C : context}: `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.TEST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -5616,6 +6101,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.CAST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -5623,21 +6111,37 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31.get{C : context, sx : sx}: `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -5645,34 +6149,59 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.SET_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_uN.0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) @@ -5680,26 +6209,46 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array.set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array.len{C : context}: `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.LEN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array.fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) @@ -5707,12 +6256,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_uN.0] : reftype <: storagetype), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) @@ -5720,66 +6277,117 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local.get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local.set{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local.tee{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global.set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if (C.TABLES_context[x_1!`%`_uN.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_uN.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -5787,6 +6395,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_uN.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -5794,91 +6407,155 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem.drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(ELEM.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.ELEMS_context[x!`%`_uN.0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if (C.MEMS_context[x_1!`%`_uN.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_uN.0] = `%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data.drop{C : context, x : idx}: `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DATA.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.DATAS_context[x!`%`_uN.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -5886,12 +6563,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -5899,127 +6584,221 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if (i!`%`_uN.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_uN.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) @@ -6027,6 +6806,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -6034,6 +6817,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) } @@ -6043,6 +6830,9 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6050,6 +6840,7 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6057,59 +6848,91 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.null{C : context, ht : heaptype}: `%|-%CONST`(C, REF.NULL_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: `%|-%CONST`(C, REF.I31_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.func{C : context, x : idx}: `%|-%CONST`(C, REF.FUNC_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_fixed{C : context, x : idx, n : n}: `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern.convert_any{C : context}: `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global.get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL.GET_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -6118,6 +6941,8 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6125,6 +6950,9 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) @@ -6133,6 +6961,9 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if (x!`%`_uN.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) @@ -6142,6 +6973,8 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + -- wf_context: `%`(C) + -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6149,6 +6982,9 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) @@ -6158,6 +6994,8 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6165,6 +7003,9 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) @@ -6174,11 +7015,17 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6186,6 +7033,10 @@ relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[x!`%`_uN.0]) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -6195,10 +7046,15 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -6207,6 +7063,8 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6214,14 +7072,24 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -6231,6 +7099,8 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) @@ -6240,6 +7110,9 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6247,6 +7120,8 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + -- wf_context: `%`(C) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6254,26 +7129,41 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) -- if (C.TAGS_context[x!`%`_uN.0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if (C.GLOBALS_context[x!`%`_uN.0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) -- if (C.MEMS_context[x!`%`_uN.0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) -- if (C.TABLES_context[x!`%`_uN.0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6281,6 +7171,9 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6291,10 +7184,16 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } @@ -6307,10 +7206,13 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } @@ -6333,12 +7235,23 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) + -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} @@ -6499,8 +7412,10 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) + -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) + -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -6529,6 +7444,7 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -6548,23 +7464,28 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN((i!`%`_uN.0 \ (2 ^ M))) + -- wf_uN: `%%`(N, `%`_uN((i!`%`_uN.0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -6572,6 +7493,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -6579,6 +7501,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -6586,10 +7509,12 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, i_1!`%`_uN.0)) /\ (j_2 = $signed_(N, i_2!`%`_uN.0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -6618,15 +7543,19 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -6677,49 +7606,61 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 = 0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 =/= 0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -6833,8 +7774,10 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) + -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) + -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -6842,6 +7785,7 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) + -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -6849,6 +7793,7 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) + -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -6856,72 +7801,103 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) + -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -6959,23 +7935,32 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] + -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] + -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] + -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] + -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] + -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -7025,16 +8010,21 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else `%`_iN(0)) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else (if ($signed_(N, i!`%`_uN.0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[(i!`%`_uN.0 \ |c*{c <- `c*`}|)]))) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -7042,6 +8032,9 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} @@ -7049,6 +8042,10 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7057,6 +8054,10 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7065,6 +8066,9 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7073,6 +8077,9 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7081,6 +8088,9 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -7090,6 +8100,9 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -7099,6 +8112,9 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_uN.0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod(c!`%`_uN.0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -7106,6 +8122,9 @@ def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_uN.0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod(c!`%`_uN.0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} @@ -7113,6 +8132,9 @@ def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7121,6 +8143,9 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7129,6 +8154,10 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7138,6 +8167,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -7145,6 +8177,9 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -7152,6 +8187,10 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) @@ -7159,6 +8198,10 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{Jnn : Jnn, M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} @@ -7167,6 +8210,10 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{Jnn : Jnn, M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`} {c, `c*`} @@ -7196,146 +8243,213 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} @@ -7345,30 +8459,43 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -7379,12 +8506,19 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_uN.0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} @@ -7393,23 +8527,36 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_uN.0 : k!`%`_uN.0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_uN.0 : k!`%`_uN.0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -7425,15 +8572,37 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -7840,6 +9009,7 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) + -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -7847,6 +9017,7 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -8032,71 +9203,87 @@ def $local(state : state, localidx : localidx) : val? def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[x!`%`_uN.0] = ?(v)]) + -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[x!`%`_uN.0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], f) + -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], f) + -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if (i'!`%`_uN.0 = (|r'*{r' <- `r'*`}| + n)) @@ -8107,6 +9294,9 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if ((i'!`%`_uN.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) @@ -8118,12 +9308,16 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -8133,44 +9327,76 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.I31_NUM_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.EXTERN_ref(addrref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -8180,16 +9406,23 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) + -- wf_store: `%`(s) + -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -8200,31 +9433,45 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -8264,425 +9511,703 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if (l!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if (l!`%`_uN.0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])) -- if (!($proj_num__0(i))!`%`_uN.0 < |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) -- if (!($proj_num__0(i))!`%`_uN.0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instr: `%`(LOCAL.SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- otherwise -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(REF.I31_NUM_instr(i)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) -- if ($unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) -- if ($binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(128, `%`_uN(0)) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_uN.0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) @@ -8691,205 +10216,323 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[!($proj_num__0(i))!`%`_uN.0] : ref <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.FILL_instr(x)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- otherwise -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -8898,22 +10541,33 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_uN: `%%`(N, j) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) @@ -8922,205 +10576,331 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- otherwise -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) + -- wf_instr: `%`(REF.NULL_instr(($type(z, x) : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])]) + -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_uN.0]) : val <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[!($proj_num__0(i))!`%`_uN.0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(i))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[!($proj_num__0(i))!`%`_uN.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[!($proj_num__0(i))!`%`_uN.0]) : val <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -9128,6 +10908,18 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) @@ -9135,53 +10927,87 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) + -- wf_ref: `%`(ref) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- otherwise -- if (ref = $elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) + -- wf_lit_: `%%`(zt, c) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- otherwise -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -9194,32 +11020,52 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- wf_exninst: `%`({TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) @@ -9227,72 +11073,103 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_uN: `%%`(N, `%`_uN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0))) @@ -9300,19 +11177,29 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) @@ -9320,30 +11207,46 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -9355,10 +11258,14 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } @@ -9368,6 +11275,8 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9379,6 +11288,7 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- wf_uN: `%%`(32, x) -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) @@ -9389,6 +11299,8 @@ def $alloctypes(type*) : deftype* def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9400,6 +11312,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } @@ -9408,6 +11322,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9419,6 +11335,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } @@ -9427,6 +11345,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9438,6 +11358,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } @@ -9446,6 +11368,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9457,6 +11381,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } @@ -9465,6 +11391,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9476,6 +11404,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } @@ -9484,6 +11414,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9495,6 +11427,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } @@ -9503,6 +11437,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9514,6 +11450,8 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } @@ -9522,14 +11460,19 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -9540,6 +11483,24 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + -- wf_store: `%`(s_7) + -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`(s_1) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_3) + -- wf_store: `%`(s_4) + -- wf_store: `%`(s_5) + -- wf_store: `%`(s_6) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} @@ -9571,6 +11532,10 @@ def $rundata_(dataidx : dataidx, data : data) : instr* def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) + -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -9578,8 +11543,13 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(TABLE.INIT_instr(y, x)) + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -9590,6 +11560,11 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) + -- wf_state: `%`(z') + -- wf_val: `%`(val) + -- (wf_val: `%`(val'))*{val' <- `val'*`} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- where `%;%`_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, val) {a, s'} @@ -9600,6 +11575,24 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- wf_state: `%`(z) + -- wf_state: `%`(z') + -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} + -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} + -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} + -- (wf_start: `%`(START_start(x)))?{x <- `x?`} + -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} + -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} + -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} @@ -9622,6 +11615,8 @@ def $instantiate(store : store, module : module, externaddr*) : config def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -11718,6 +13713,7 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) } @@ -11727,6 +13723,8 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I) + -- wf_idctxt: `%`(I) + -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) @@ -13612,15 +15610,26 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32.add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global.get{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -13630,14 +15639,23 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -13676,6 +15694,8 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} } diff --git a/spectec/test-middlend/specification.exp/06-else.il b/spectec/test-middlend/specification.exp/06-else.il index 7a95fe65dd..c0455f7d84 100644 --- a/spectec/test-middlend/specification.exp/06-else.il +++ b/spectec/test-middlend/specification.exp/06-else.il @@ -302,16 +302,19 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -355,18 +358,29 @@ def $utf8(char*) : byte* def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] + -- wf_byte: `%`(b) + -- wf_byte: `%`(`%`_byte(ch!`%`_char.0)) -- if (ch!`%`_char.0 < 128) -- where b = `%`_byte(ch!`%`_char.0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) + -- wf_byte: `%`(b_4) -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -555,6 +569,7 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -565,6 +580,7 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -573,46 +589,55 @@ def $free_list(free*) : free def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -989,61 +1014,73 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1344,6 +1381,7 @@ def $unpack(storagetype : storagetype) : valtype def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype + -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1378,8 +1416,10 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1473,6 +1513,9 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} + -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } @@ -1514,6 +1557,7 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1525,6 +1569,7 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1537,25 +1582,32 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1578,79 +1630,97 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) + -- wf_externtype: `%`(FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + -- wf_uN: `%%`(32, `%`_uN((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4142,10 +4230,13 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4176,6 +4267,7 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4242,10 +4334,13 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4254,10 +4349,13 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4280,6 +4378,7 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4290,8 +4389,10 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4347,6 +4448,7 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + -- wf_free: `%`(free) -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } @@ -4590,6 +4692,7 @@ def $free_datamode(datamode : datamode) : free def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -4602,8 +4705,10 @@ def $free_elemmode(elemmode : elemmode) : free def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -4757,12 +4862,14 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -4791,24 +4898,28 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype}: `%~~%`(deftype, comptype) + -- wf_comptype: `%`(comptype) -- if ($expanddt(deftype) = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -4816,6 +4927,7 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool @@ -4843,10 +4955,13 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -4854,6 +4969,8 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -4861,37 +4978,49 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) + -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) + -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_uN.0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) + -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -4899,6 +5028,8 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -4906,6 +5037,8 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -4913,11 +5046,14 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) + -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -4925,16 +5061,22 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -4943,6 +5085,10 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if (x!`%`_uN.0 < x_0!`%`_uN.0))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[x!`%`_uN.0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} @@ -4954,16 +5100,27 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -4971,6 +5128,11 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} @@ -4982,10 +5144,17 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx((x!`%`_uN.0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx((x!`%`_uN.0 + 1)), (i + 1))) @@ -4994,6 +5163,9 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- wf_context: `%`(C) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) @@ -5003,16 +5175,25 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) @@ -5021,11 +5202,14 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) @@ -5034,10 +5218,16 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5045,88 +5235,144 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5134,27 +5380,38 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) + -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) + -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 @@ -5162,11 +5419,15 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) + -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5174,11 +5435,17 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5188,6 +5455,9 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (if (C.LOCALS_context[x!`%`_uN.0] = lct))*{lct <- `lct*`, x <- `x*`} @@ -5197,11 +5467,16 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5209,6 +5484,8 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} @@ -5217,6 +5494,9 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5225,6 +5505,8 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5232,6 +5514,8 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5239,6 +5523,8 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5247,26 +5533,37 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5275,6 +5572,11 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) @@ -5285,6 +5587,9 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5293,6 +5598,7 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5301,11 +5607,17 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -5314,6 +5626,9 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5321,6 +5636,9 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -5330,26 +5648,41 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) + -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5357,11 +5690,18 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5369,35 +5709,49 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) + -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) + -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -5406,6 +5760,7 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5421,25 +5776,41 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) @@ -5447,18 +5818,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5466,17 +5854,27 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]))*{l <- `l*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_uN.0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5484,17 +5882,27 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5504,6 +5912,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5513,16 +5925,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5530,12 +5956,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -5544,6 +5980,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -5552,6 +5994,14 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5562,17 +6012,31 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} @@ -5580,35 +6044,56 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref.null{C : context, ht : heaptype}: `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref.i31{C : context}: `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref.is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref.as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref.eq{C : context}: `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.TEST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -5616,6 +6101,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.CAST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -5623,21 +6111,37 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31.get{C : context, sx : sx}: `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -5645,34 +6149,59 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.SET_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_uN.0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) @@ -5680,26 +6209,46 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array.set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array.len{C : context}: `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.LEN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array.fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) @@ -5707,12 +6256,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_uN.0] : reftype <: storagetype), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) @@ -5720,66 +6277,117 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local.get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local.set{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local.tee{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global.set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if (C.TABLES_context[x_1!`%`_uN.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_uN.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -5787,6 +6395,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_uN.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -5794,91 +6407,155 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem.drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(ELEM.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.ELEMS_context[x!`%`_uN.0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if (C.MEMS_context[x_1!`%`_uN.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_uN.0] = `%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data.drop{C : context, x : idx}: `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DATA.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.DATAS_context[x!`%`_uN.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -5886,12 +6563,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -5899,127 +6584,221 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if (i!`%`_uN.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_uN.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) @@ -6027,6 +6806,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -6034,6 +6817,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) } @@ -6043,6 +6830,9 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6050,6 +6840,7 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6057,59 +6848,91 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.null{C : context, ht : heaptype}: `%|-%CONST`(C, REF.NULL_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: `%|-%CONST`(C, REF.I31_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.func{C : context, x : idx}: `%|-%CONST`(C, REF.FUNC_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_fixed{C : context, x : idx, n : n}: `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern.convert_any{C : context}: `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global.get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL.GET_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -6118,6 +6941,8 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6125,6 +6950,9 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) @@ -6133,6 +6961,9 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if (x!`%`_uN.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) @@ -6142,6 +6973,8 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + -- wf_context: `%`(C) + -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6149,6 +6982,9 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) @@ -6158,6 +6994,8 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6165,6 +7003,9 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) @@ -6174,11 +7015,17 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6186,6 +7033,10 @@ relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[x!`%`_uN.0]) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -6195,10 +7046,15 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -6207,6 +7063,8 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6214,14 +7072,24 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -6231,6 +7099,8 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) @@ -6240,6 +7110,9 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6247,6 +7120,8 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + -- wf_context: `%`(C) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6254,26 +7129,41 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) -- if (C.TAGS_context[x!`%`_uN.0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if (C.GLOBALS_context[x!`%`_uN.0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) -- if (C.MEMS_context[x!`%`_uN.0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) -- if (C.TABLES_context[x!`%`_uN.0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6281,6 +7171,9 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6291,10 +7184,16 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } @@ -6307,10 +7206,13 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } @@ -6333,12 +7235,23 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) + -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} @@ -6499,8 +7412,10 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) + -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) + -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -6529,6 +7444,7 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -6548,23 +7464,28 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN((i!`%`_uN.0 \ (2 ^ M))) + -- wf_uN: `%%`(N, `%`_uN((i!`%`_uN.0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -6572,6 +7493,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -6579,6 +7501,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -6586,10 +7509,12 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, i_1!`%`_uN.0)) /\ (j_2 = $signed_(N, i_2!`%`_uN.0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -6618,15 +7543,19 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -6677,49 +7606,61 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 = 0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 =/= 0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -6833,8 +7774,10 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) + -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) + -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -6842,6 +7785,7 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) + -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -6849,6 +7793,7 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) + -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -6856,72 +7801,103 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) + -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -6959,23 +7935,32 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] + -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] + -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] + -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] + -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] + -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -7025,16 +8010,21 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else `%`_iN(0)) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else (if ($signed_(N, i!`%`_uN.0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[(i!`%`_uN.0 \ |c*{c <- `c*`}|)]))) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -7042,6 +8032,9 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} @@ -7049,6 +8042,10 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7057,6 +8054,10 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7065,6 +8066,9 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7073,6 +8077,9 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7081,6 +8088,9 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -7090,6 +8100,9 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -7099,6 +8112,9 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_uN.0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod(c!`%`_uN.0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -7106,6 +8122,9 @@ def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_uN.0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod(c!`%`_uN.0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} @@ -7113,6 +8132,9 @@ def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7121,6 +8143,9 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7129,6 +8154,10 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7138,6 +8167,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -7145,6 +8177,9 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -7152,6 +8187,10 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) @@ -7159,6 +8198,10 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{Jnn : Jnn, M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} @@ -7167,6 +8210,10 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{Jnn : Jnn, M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`} {c, `c*`} @@ -7196,146 +8243,213 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} @@ -7345,30 +8459,43 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -7379,12 +8506,19 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_uN.0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} @@ -7393,23 +8527,36 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_uN.0 : k!`%`_uN.0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_uN.0 : k!`%`_uN.0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -7425,15 +8572,37 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -7840,6 +9009,7 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) + -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -7847,6 +9017,7 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -8032,71 +9203,87 @@ def $local(state : state, localidx : localidx) : val? def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[x!`%`_uN.0] = ?(v)]) + -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[x!`%`_uN.0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], f) + -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], f) + -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if (i'!`%`_uN.0 = (|r'*{r' <- `r'*`}| + n)) @@ -8107,6 +9294,9 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if ((i'!`%`_uN.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) @@ -8118,12 +9308,16 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -8133,44 +9327,76 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.I31_NUM_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.EXTERN_ref(addrref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -8180,16 +9406,23 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) + -- wf_store: `%`(s) + -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -8200,31 +9433,45 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -8264,6 +9511,10 @@ relation `Step_pure_before_br_on_null-addr`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null_0`{val : val, l : labelidx, ht : heaptype}: `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8271,6 +9522,9 @@ relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null_0`{val : val, l : labelidx, ht : heaptype}: `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8278,6 +9532,10 @@ relation `Step_pure_before_ref.is_null-false`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true_0`{ref : ref, ht : heaptype}: `%`([(ref : ref <: instr) REF.IS_NULL_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8285,6 +9543,10 @@ relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null_0`{ref : ref, ht : heaptype}: `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8292,6 +9554,12 @@ relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8299,12 +9567,22 @@ relation `Step_pure_before_ref.eq-false`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true_0`{ref_1 : ref, ref_2 : ref}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_1`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8312,384 +9590,640 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if (l!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if (l!`%`_uN.0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])) -- if (!($proj_num__0(i))!`%`_uN.0 < |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) -- if (!($proj_num__0(i))!`%`_uN.0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- ~ `Step_pure_before_br_on_null-addr`: `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instr: `%`(LOCAL.SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- ~ `Step_pure_before_ref.is_null-false`: `%`([(ref : ref <: instr) REF.IS_NULL_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- ~ `Step_pure_before_ref.eq-false`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(REF.I31_NUM_instr(i)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) -- if ($unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) -- if ($binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(128, `%`_uN(0)) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_uN.0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) @@ -8698,6 +10232,9 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) @@ -8706,20 +10243,32 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -8728,6 +10277,8 @@ relation `Step_read_before_table.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8735,12 +10286,15 @@ relation `Step_read_before_table.fill-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8748,6 +10302,8 @@ relation `Step_read_before_table.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8755,12 +10311,15 @@ relation `Step_read_before_table.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8768,18 +10327,30 @@ relation `Step_read_before_table.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8787,6 +10358,8 @@ relation `Step_read_before_table.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8794,12 +10367,15 @@ relation `Step_read_before_table.init-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8807,6 +10383,8 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8814,12 +10392,15 @@ relation `Step_read_before_memory.fill-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8827,6 +10408,8 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8834,12 +10417,15 @@ relation `Step_read_before_memory.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8847,18 +10433,30 @@ relation `Step_read_before_memory.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8866,6 +10464,8 @@ relation `Step_read_before_memory.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8873,12 +10473,15 @@ relation `Step_read_before_memory.init-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8886,6 +10489,10 @@ relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -8894,6 +10501,9 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -8902,6 +10512,8 @@ relation `Step_read_before_array.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8909,12 +10521,15 @@ relation `Step_read_before_array.fill-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8922,11 +10537,15 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8934,17 +10553,22 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8952,6 +10576,18 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -8959,17 +10595,22 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8977,11 +10618,15 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8989,17 +10634,22 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9007,12 +10657,17 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9020,18 +10675,24 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9039,47 +10700,73 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) @@ -9088,205 +10775,323 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[!($proj_num__0(i))!`%`_uN.0] : ref <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.FILL_instr(x)) -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -9295,22 +11100,33 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_uN: `%%`(N, j) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) @@ -9319,205 +11135,331 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) + -- wf_instr: `%`(REF.NULL_instr(($type(z, x) : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])]) + -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_uN.0]) : val <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[!($proj_num__0(i))!`%`_uN.0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(i))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[!($proj_num__0(i))!`%`_uN.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[!($proj_num__0(i))!`%`_uN.0]) : val <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -9525,6 +11467,18 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) @@ -9532,53 +11486,87 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) + -- wf_ref: `%`(ref) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (ref = $elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) + -- wf_lit_: `%%`(zt, c) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -9591,32 +11579,52 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- wf_exninst: `%`({TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) @@ -9624,72 +11632,103 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_uN: `%%`(N, `%`_uN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0))) @@ -9697,19 +11736,29 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) @@ -9717,30 +11766,46 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -9752,10 +11817,14 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } @@ -9765,6 +11834,8 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9776,6 +11847,7 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- wf_uN: `%%`(32, x) -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) @@ -9786,6 +11858,8 @@ def $alloctypes(type*) : deftype* def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9797,6 +11871,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } @@ -9805,6 +11881,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9816,6 +11894,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } @@ -9824,6 +11904,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9835,6 +11917,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } @@ -9843,6 +11927,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9854,6 +11940,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } @@ -9862,6 +11950,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9873,6 +11963,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } @@ -9881,6 +11973,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9892,6 +11986,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } @@ -9900,6 +11996,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9911,6 +12009,8 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } @@ -9919,14 +12019,19 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -9937,6 +12042,24 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + -- wf_store: `%`(s_7) + -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`(s_1) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_3) + -- wf_store: `%`(s_4) + -- wf_store: `%`(s_5) + -- wf_store: `%`(s_6) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} @@ -9968,6 +12091,10 @@ def $rundata_(dataidx : dataidx, data : data) : instr* def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) + -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -9975,8 +12102,13 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(TABLE.INIT_instr(y, x)) + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -9987,6 +12119,11 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) + -- wf_state: `%`(z') + -- wf_val: `%`(val) + -- (wf_val: `%`(val'))*{val' <- `val'*`} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- where `%;%`_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, val) {a, s'} @@ -9997,6 +12134,24 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- wf_state: `%`(z) + -- wf_state: `%`(z') + -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} + -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} + -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} + -- (wf_start: `%`(START_start(x)))?{x <- `x?`} + -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} + -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} + -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} @@ -10019,6 +12174,8 @@ def $instantiate(store : store, module : module, externaddr*) : config def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -12115,6 +14272,7 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) } @@ -12124,6 +14282,8 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I) + -- wf_idctxt: `%`(I) + -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) @@ -14009,15 +16169,26 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32.add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global.get{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -14027,14 +16198,23 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -14073,6 +16253,8 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} } diff --git a/spectec/test-middlend/specification.exp/07-else-simplification.il b/spectec/test-middlend/specification.exp/07-else-simplification.il index f7d7d70ad9..653a0523e1 100644 --- a/spectec/test-middlend/specification.exp/07-else-simplification.il +++ b/spectec/test-middlend/specification.exp/07-else-simplification.il @@ -302,16 +302,19 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -355,18 +358,29 @@ def $utf8(char*) : byte* def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] + -- wf_byte: `%`(b) + -- wf_byte: `%`(`%`_byte(ch!`%`_char.0)) -- if (ch!`%`_char.0 < 128) -- where b = `%`_byte(ch!`%`_char.0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) + -- wf_byte: `%`(b_4) -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -555,6 +569,7 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -565,6 +580,7 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -573,46 +589,55 @@ def $free_list(free*) : free def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -989,61 +1014,73 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1344,6 +1381,7 @@ def $unpack(storagetype : storagetype) : valtype def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype + -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1378,8 +1416,10 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1473,6 +1513,9 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} + -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } @@ -1514,6 +1557,7 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1525,6 +1569,7 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1537,25 +1582,32 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1578,79 +1630,97 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) + -- wf_externtype: `%`(FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + -- wf_uN: `%%`(32, `%`_uN((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4142,10 +4230,13 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4176,6 +4267,7 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4242,10 +4334,13 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4254,10 +4349,13 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4280,6 +4378,7 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4290,8 +4389,10 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4347,6 +4448,7 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + -- wf_free: `%`(free) -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } @@ -4590,6 +4692,7 @@ def $free_datamode(datamode : datamode) : free def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -4602,8 +4705,10 @@ def $free_elemmode(elemmode : elemmode) : free def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -4757,12 +4862,14 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -4791,24 +4898,28 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype}: `%~~%`(deftype, comptype) + -- wf_comptype: `%`(comptype) -- if ($expanddt(deftype) = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -4816,6 +4927,7 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool @@ -4843,10 +4955,13 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -4854,6 +4969,8 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -4861,37 +4978,49 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) + -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) + -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_uN.0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) + -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -4899,6 +5028,8 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -4906,6 +5037,8 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -4913,11 +5046,14 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) + -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -4925,16 +5061,22 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -4943,6 +5085,10 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if (x!`%`_uN.0 < x_0!`%`_uN.0))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[x!`%`_uN.0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} @@ -4954,16 +5100,27 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -4971,6 +5128,11 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} @@ -4982,10 +5144,17 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx((x!`%`_uN.0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx((x!`%`_uN.0 + 1)), (i + 1))) @@ -4994,6 +5163,9 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- wf_context: `%`(C) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) @@ -5003,16 +5175,25 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) @@ -5021,11 +5202,14 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) @@ -5034,10 +5218,16 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5045,88 +5235,144 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5134,27 +5380,38 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) + -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) + -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 @@ -5162,11 +5419,15 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) + -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5174,11 +5435,17 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5188,6 +5455,9 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (if (C.LOCALS_context[x!`%`_uN.0] = lct))*{lct <- `lct*`, x <- `x*`} @@ -5197,11 +5467,16 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5209,6 +5484,8 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} @@ -5217,6 +5494,9 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5225,6 +5505,8 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5232,6 +5514,8 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5239,6 +5523,8 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5247,26 +5533,37 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5275,6 +5572,11 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) @@ -5285,6 +5587,9 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5293,6 +5598,7 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5301,11 +5607,17 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -5314,6 +5626,9 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5321,6 +5636,9 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -5330,26 +5648,41 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) + -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5357,11 +5690,18 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5369,35 +5709,49 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) + -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) + -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -5406,6 +5760,7 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5421,25 +5776,41 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) @@ -5447,18 +5818,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5466,17 +5854,27 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]))*{l <- `l*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_uN.0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5484,17 +5882,27 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5504,6 +5912,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5513,16 +5925,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5530,12 +5956,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -5544,6 +5980,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -5552,6 +5994,14 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5562,17 +6012,31 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} @@ -5580,35 +6044,56 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref.null{C : context, ht : heaptype}: `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref.i31{C : context}: `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref.is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref.as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref.eq{C : context}: `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.TEST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -5616,6 +6101,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.CAST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -5623,21 +6111,37 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31.get{C : context, sx : sx}: `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -5645,34 +6149,59 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.SET_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_uN.0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) @@ -5680,26 +6209,46 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array.set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array.len{C : context}: `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.LEN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array.fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) @@ -5707,12 +6256,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_uN.0] : reftype <: storagetype), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) @@ -5720,66 +6277,117 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local.get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local.set{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local.tee{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global.set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if (C.TABLES_context[x_1!`%`_uN.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_uN.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -5787,6 +6395,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_uN.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -5794,91 +6407,155 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem.drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(ELEM.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.ELEMS_context[x!`%`_uN.0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if (C.MEMS_context[x_1!`%`_uN.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_uN.0] = `%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data.drop{C : context, x : idx}: `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DATA.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.DATAS_context[x!`%`_uN.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -5886,12 +6563,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ memarg.ALIGN_memarg!`%`_uN.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -5899,127 +6584,221 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if (i!`%`_uN.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_uN.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) @@ -6027,6 +6806,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -6034,6 +6817,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) } @@ -6043,6 +6830,9 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6050,6 +6840,7 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6057,59 +6848,91 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.null{C : context, ht : heaptype}: `%|-%CONST`(C, REF.NULL_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: `%|-%CONST`(C, REF.I31_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.func{C : context, x : idx}: `%|-%CONST`(C, REF.FUNC_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_fixed{C : context, x : idx, n : n}: `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern.convert_any{C : context}: `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global.get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL.GET_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -6118,6 +6941,8 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6125,6 +6950,9 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) @@ -6133,6 +6961,9 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if (x!`%`_uN.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) @@ -6142,6 +6973,8 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + -- wf_context: `%`(C) + -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6149,6 +6982,9 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) @@ -6158,6 +6994,8 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6165,6 +7003,9 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) @@ -6174,11 +7015,17 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6186,6 +7033,10 @@ relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[x!`%`_uN.0]) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -6195,10 +7046,15 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -6207,6 +7063,8 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6214,14 +7072,24 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -6231,6 +7099,8 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) @@ -6240,6 +7110,9 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6247,6 +7120,8 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + -- wf_context: `%`(C) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6254,26 +7129,41 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) -- if (C.TAGS_context[x!`%`_uN.0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if (C.GLOBALS_context[x!`%`_uN.0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) -- if (C.MEMS_context[x!`%`_uN.0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) -- if (C.TABLES_context[x!`%`_uN.0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6281,6 +7171,9 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6291,10 +7184,16 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } @@ -6307,10 +7206,13 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } @@ -6333,12 +7235,23 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) + -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} @@ -6499,8 +7412,10 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) + -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) + -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -6529,6 +7444,7 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -6548,23 +7464,28 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN((i!`%`_uN.0 \ (2 ^ M))) + -- wf_uN: `%%`(N, `%`_uN((i!`%`_uN.0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -6572,6 +7493,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -6579,6 +7501,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -6586,10 +7509,12 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, i_1!`%`_uN.0)) /\ (j_2 = $signed_(N, i_2!`%`_uN.0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -6618,15 +7543,19 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -6677,49 +7606,61 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 = 0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 =/= 0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -6833,8 +7774,10 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) + -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) + -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -6842,6 +7785,7 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) + -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -6849,6 +7793,7 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) + -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -6856,72 +7801,103 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) + -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -6959,23 +7935,32 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] + -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] + -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] + -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] + -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] + -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -7025,16 +8010,21 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else `%`_iN(0)) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else (if ($signed_(N, i!`%`_uN.0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[(i!`%`_uN.0 \ |c*{c <- `c*`}|)]))) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -7042,6 +8032,9 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} @@ -7049,6 +8042,10 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7057,6 +8054,10 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7065,6 +8066,9 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7073,6 +8077,9 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7081,6 +8088,9 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -7090,6 +8100,9 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -7099,6 +8112,9 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_uN.0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod(c!`%`_uN.0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -7106,6 +8122,9 @@ def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_uN.0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod(c!`%`_uN.0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} @@ -7113,6 +8132,9 @@ def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7121,6 +8143,9 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7129,6 +8154,10 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7138,6 +8167,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -7145,6 +8177,9 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -7152,6 +8187,10 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) @@ -7159,6 +8198,10 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{Jnn : Jnn, M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} @@ -7167,6 +8210,10 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{Jnn : Jnn, M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`} {c, `c*`} @@ -7196,146 +8243,213 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} @@ -7345,30 +8459,43 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -7379,12 +8506,19 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_uN.0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} @@ -7393,23 +8527,36 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_uN.0 : k!`%`_uN.0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_uN.0 : k!`%`_uN.0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -7425,15 +8572,37 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -7840,6 +9009,7 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) + -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -7847,6 +9017,7 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -8032,71 +9203,87 @@ def $local(state : state, localidx : localidx) : val? def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[x!`%`_uN.0] = ?(v)]) + -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[x!`%`_uN.0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], f) + -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], f) + -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if (i'!`%`_uN.0 = (|r'*{r' <- `r'*`}| + n)) @@ -8107,6 +9294,9 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if ((i'!`%`_uN.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) @@ -8118,12 +9308,16 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -8133,44 +9327,76 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.I31_NUM_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.EXTERN_ref(addrref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -8180,16 +9406,23 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) + -- wf_store: `%`(s) + -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -8200,31 +9433,45 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -8264,6 +9511,12 @@ relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8271,384 +9524,640 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if (l!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if (l!`%`_uN.0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])) -- if (!($proj_num__0(i))!`%`_uN.0 < |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) -- if (!($proj_num__0(i))!`%`_uN.0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instr: `%`(LOCAL.SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(REF.I31_NUM_instr(i)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) -- if ($unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) -- if ($binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(128, `%`_uN(0)) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_uN.0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) @@ -8657,14 +10166,53 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_throw_ref-handler-next`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8672,6 +10220,8 @@ relation `Step_read_before_table.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8679,12 +10229,15 @@ relation `Step_read_before_table.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8692,6 +10245,8 @@ relation `Step_read_before_table.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8699,6 +10254,8 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8706,6 +10263,8 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8713,12 +10272,15 @@ relation `Step_read_before_memory.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8726,6 +10288,8 @@ relation `Step_read_before_memory.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8733,6 +10297,10 @@ relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -8741,6 +10309,9 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -8749,6 +10320,8 @@ relation `Step_read_before_array.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8756,11 +10329,15 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8768,17 +10345,22 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8786,6 +10368,18 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -8793,17 +10387,22 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8811,11 +10410,15 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8823,12 +10426,17 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8836,18 +10444,24 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8855,47 +10469,73 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) @@ -8904,205 +10544,323 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr, x : idx, `val*` : val*, x : idx, `val*` : val*}: + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) - -- if (((($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[x!`%`_uN.0]) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) \/ ($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[x!`%`_uN.0])) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[!($proj_num__0(i))!`%`_uN.0] : ref <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) -- if ((n =/= 0) \/ ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$table(z, x_2).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ((n =/= 0) \/ (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if (((!($proj_num__0(i_1))!`%`_uN.0 > !($proj_num__0(i_2))!`%`_uN.0) \/ (n =/= 0)) \/ (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) -- if ((n =/= 0) \/ (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -9111,22 +10869,33 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_uN: `%%`(N, j) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) @@ -9135,212 +10904,350 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) -- if ((n =/= 0) \/ ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ((n =/= 0) \/ (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if (((!($proj_num__0(i_1))!`%`_uN.0 > !($proj_num__0(i_2))!`%`_uN.0) \/ (n =/= 0)) \/ (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$data(z, y).BYTES_datainst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) -- if ((n =/= 0) \/ (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$data(z, y).BYTES_datainst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) + -- wf_instr: `%`(REF.NULL_instr(($type(z, x) : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])]) + -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_uN.0]) : val <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[!($proj_num__0(i))!`%`_uN.0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(i))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[!($proj_num__0(i))!`%`_uN.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[!($proj_num__0(i))!`%`_uN.0]) : val <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) -- if ((n =/= 0) \/ ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) -- if (((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ ((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if (((n =/= 0) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ ((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) @@ -9348,53 +11255,87 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) -- if (((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|) \/ ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) -- if (((n =/= 0) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_ref: `%`(ref) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- if (ref = $elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) + -- wf_lit_: `%%`(zt, c) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -9407,32 +11348,52 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- wf_exninst: `%`({TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) @@ -9440,72 +11401,103 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_uN: `%%`(N, `%`_uN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0))) @@ -9513,19 +11505,29 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) @@ -9533,30 +11535,46 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -9568,10 +11586,14 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } @@ -9581,6 +11603,8 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9592,6 +11616,7 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- wf_uN: `%%`(32, x) -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) @@ -9602,6 +11627,8 @@ def $alloctypes(type*) : deftype* def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9613,6 +11640,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } @@ -9621,6 +11650,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9632,6 +11663,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } @@ -9640,6 +11673,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9651,6 +11686,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } @@ -9659,6 +11696,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9670,6 +11709,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } @@ -9678,6 +11719,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9689,6 +11732,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } @@ -9697,6 +11742,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9708,6 +11755,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } @@ -9716,6 +11765,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9727,6 +11778,8 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } @@ -9735,14 +11788,19 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -9753,6 +11811,24 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + -- wf_store: `%`(s_7) + -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`(s_1) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_3) + -- wf_store: `%`(s_4) + -- wf_store: `%`(s_5) + -- wf_store: `%`(s_6) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} @@ -9784,6 +11860,10 @@ def $rundata_(dataidx : dataidx, data : data) : instr* def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) + -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -9791,8 +11871,13 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(TABLE.INIT_instr(y, x)) + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -9803,6 +11888,11 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) + -- wf_state: `%`(z') + -- wf_val: `%`(val) + -- (wf_val: `%`(val'))*{val' <- `val'*`} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- where `%;%`_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, val) {a, s'} @@ -9813,6 +11903,24 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- wf_state: `%`(z) + -- wf_state: `%`(z') + -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} + -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} + -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} + -- (wf_start: `%`(START_start(x)))?{x <- `x?`} + -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} + -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} + -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} @@ -9835,6 +11943,8 @@ def $instantiate(store : store, module : module, externaddr*) : config def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -11931,6 +14041,7 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) } @@ -11940,6 +14051,8 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I) + -- wf_idctxt: `%`(I) + -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) @@ -13825,15 +15938,26 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32.add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global.get{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -13843,14 +15967,23 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -13889,6 +16022,8 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} } diff --git a/spectec/test-middlend/specification.exp/08-uncase-removal.il b/spectec/test-middlend/specification.exp/08-uncase-removal.il index da7278caf0..89e66ae069 100644 --- a/spectec/test-middlend/specification.exp/08-uncase-removal.il +++ b/spectec/test-middlend/specification.exp/08-uncase-removal.il @@ -317,16 +317,19 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -380,18 +383,29 @@ def $utf8(char*) : byte* def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] + -- wf_byte: `%`(b) + -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) -- if ($proj_char_0(ch).0 < 128) -- where b = `%`_byte($proj_char_0(ch).0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) + -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -585,6 +599,7 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -595,6 +610,7 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -603,46 +619,55 @@ def $free_list(free*) : free def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -1019,61 +1044,73 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1374,6 +1411,7 @@ def $unpack(storagetype : storagetype) : valtype def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype + -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1408,8 +1446,10 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1503,6 +1543,9 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} + -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } @@ -1544,6 +1587,7 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1555,6 +1599,7 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1567,25 +1612,32 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1608,79 +1660,97 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) + -- wf_externtype: `%`(FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4192,10 +4280,13 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4226,6 +4317,7 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4292,10 +4384,13 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4304,10 +4399,13 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4330,6 +4428,7 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4340,8 +4439,10 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4397,6 +4498,7 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + -- wf_free: `%`(free) -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } @@ -4640,6 +4742,7 @@ def $free_datamode(datamode : datamode) : free def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -4652,8 +4755,10 @@ def $free_elemmode(elemmode : elemmode) : free def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -4807,12 +4912,14 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -4841,24 +4948,28 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype}: `%~~%`(deftype, comptype) + -- wf_comptype: `%`(comptype) -- if ($expanddt(deftype) = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -4866,6 +4977,7 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool @@ -4893,10 +5005,13 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -4904,6 +5019,8 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -4911,37 +5028,49 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) + -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) + -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) + -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -4949,6 +5078,8 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -4956,6 +5087,8 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -4963,11 +5096,14 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) + -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -4975,16 +5111,22 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -4993,6 +5135,10 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} @@ -5004,16 +5150,27 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -5021,6 +5178,11 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} @@ -5032,10 +5194,17 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) @@ -5044,6 +5213,9 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- wf_context: `%`(C) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) @@ -5053,16 +5225,25 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) @@ -5071,11 +5252,14 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) @@ -5084,10 +5268,16 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5095,88 +5285,144 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5184,27 +5430,38 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) + -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) + -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 @@ -5212,11 +5469,15 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) + -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5224,11 +5485,17 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5238,6 +5505,9 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} @@ -5247,11 +5517,16 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5259,6 +5534,8 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} @@ -5267,6 +5544,9 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5275,6 +5555,8 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5282,6 +5564,8 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5289,6 +5573,8 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5297,26 +5583,37 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5325,6 +5622,11 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) @@ -5335,6 +5637,9 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5343,6 +5648,7 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5351,11 +5657,17 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -5364,6 +5676,9 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5371,6 +5686,9 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -5380,26 +5698,41 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) + -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5407,11 +5740,18 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5419,35 +5759,49 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) + -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) + -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -5456,6 +5810,7 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5471,25 +5826,41 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) @@ -5497,18 +5868,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5516,17 +5904,27 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5534,17 +5932,27 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5554,6 +5962,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -5563,16 +5975,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5580,12 +6006,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -5594,6 +6030,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -5602,6 +6044,14 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5612,17 +6062,31 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} @@ -5630,35 +6094,56 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref.null{C : context, ht : heaptype}: `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref.i31{C : context}: `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref.is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref.as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref.eq{C : context}: `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.TEST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -5666,6 +6151,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.CAST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -5673,21 +6161,37 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31.get{C : context, sx : sx}: `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -5695,34 +6199,59 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.SET_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) @@ -5730,26 +6259,46 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array.set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array.len{C : context}: `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.LEN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array.fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) @@ -5757,12 +6306,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[$proj_uN_0(y).0] : reftype <: storagetype), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) @@ -5770,66 +6327,117 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local.get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local.set{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local.tee{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global.set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -5837,6 +6445,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -5844,91 +6457,155 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem.drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(ELEM.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data.drop{C : context, x : idx}: `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DATA.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -5936,12 +6613,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -5949,127 +6634,221 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) @@ -6077,6 +6856,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -6084,6 +6867,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) } @@ -6093,6 +6880,9 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6100,6 +6890,7 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6107,59 +6898,91 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.null{C : context, ht : heaptype}: `%|-%CONST`(C, REF.NULL_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: `%|-%CONST`(C, REF.I31_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.func{C : context, x : idx}: `%|-%CONST`(C, REF.FUNC_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_fixed{C : context, x : idx, n : n}: `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern.convert_any{C : context}: `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global.get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL.GET_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -6168,6 +6991,8 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6175,6 +7000,9 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) @@ -6183,6 +7011,9 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) @@ -6192,6 +7023,8 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + -- wf_context: `%`(C) + -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6199,6 +7032,9 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) @@ -6208,6 +7044,8 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6215,6 +7053,9 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) @@ -6224,11 +7065,17 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6236,6 +7083,10 @@ relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -6245,10 +7096,15 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -6257,6 +7113,8 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6264,14 +7122,24 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -6281,6 +7149,8 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) @@ -6290,6 +7160,9 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6297,6 +7170,8 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + -- wf_context: `%`(C) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6304,26 +7179,41 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6331,6 +7221,9 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6341,10 +7234,16 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } @@ -6357,10 +7256,13 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } @@ -6383,12 +7285,23 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) + -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} @@ -6559,8 +7472,10 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) + -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) + -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -6589,6 +7504,7 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -6608,23 +7524,28 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) + -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -6632,6 +7553,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -6639,6 +7561,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -6646,10 +7569,12 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -6678,15 +7603,19 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -6737,49 +7666,61 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -6893,8 +7834,10 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) + -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) + -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -6902,6 +7845,7 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) + -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -6909,6 +7853,7 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) + -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -6916,72 +7861,103 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) + -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -7019,23 +7995,32 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] + -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] + -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] + -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] + -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] + -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -7085,16 +8070,21 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -7102,6 +8092,9 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} @@ -7109,6 +8102,10 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7117,6 +8114,10 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7125,6 +8126,9 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7133,6 +8137,9 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7141,6 +8148,9 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -7150,6 +8160,9 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -7159,6 +8172,9 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -7166,6 +8182,9 @@ def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} @@ -7173,6 +8192,9 @@ def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7181,6 +8203,9 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7189,6 +8214,10 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7198,6 +8227,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -7205,6 +8237,9 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -7212,6 +8247,10 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) @@ -7219,6 +8258,10 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{Jnn : Jnn, M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} @@ -7227,6 +8270,10 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{Jnn : Jnn, M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} @@ -7256,146 +8303,213 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} @@ -7405,30 +8519,43 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -7439,12 +8566,19 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} @@ -7453,23 +8587,36 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -7485,15 +8632,37 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -7900,6 +9069,7 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) + -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -7907,6 +9077,7 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -8092,71 +9263,87 @@ def $local(state : state, localidx : localidx) : val? def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f) + -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f) + -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) @@ -8167,6 +9354,9 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) @@ -8178,12 +9368,16 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -8193,44 +9387,76 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.I31_NUM_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.EXTERN_ref(addrref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -8240,16 +9466,23 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) + -- wf_store: `%`(s) + -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -8260,31 +9493,45 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -8324,6 +9571,12 @@ relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8331,384 +9584,640 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if ($proj_uN_0(l).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if ($proj_uN_0(l).0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instr: `%`(LOCAL.SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(REF.I31_NUM_instr(i)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) -- if ($unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) -- if ($binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(128, `%`_uN(0)) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) @@ -8717,14 +10226,53 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_throw_ref-handler-next`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8732,6 +10280,8 @@ relation `Step_read_before_table.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8739,12 +10289,15 @@ relation `Step_read_before_table.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8752,6 +10305,8 @@ relation `Step_read_before_table.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8759,6 +10314,8 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8766,6 +10323,8 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8773,12 +10332,15 @@ relation `Step_read_before_memory.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8786,6 +10348,8 @@ relation `Step_read_before_memory.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8793,6 +10357,10 @@ relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -8801,6 +10369,9 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -8809,6 +10380,8 @@ relation `Step_read_before_array.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8816,11 +10389,15 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8828,17 +10405,22 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8846,6 +10428,18 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -8853,17 +10447,22 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8871,11 +10470,15 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8883,12 +10486,17 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8896,18 +10504,24 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8915,47 +10529,73 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) @@ -8964,205 +10604,323 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr, x : idx, `val*` : val*, x : idx, `val*` : val*}: + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) - -- if (((($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0]) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) \/ ($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0])) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0] : ref <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[(($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -9171,22 +10929,33 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_uN: `%%`(N, j) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) @@ -9195,212 +10964,350 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) + -- wf_instr: `%`(REF.NULL_instr(($type(z, x) : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) + -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]) : val <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]) : val <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) @@ -9408,53 +11315,87 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) -- if ((($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_ref: `%`(ref) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) + -- wf_lit_: `%%`(zt, c) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -9467,32 +11408,52 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) @@ -9500,72 +11461,103 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) @@ -9573,19 +11565,29 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) @@ -9593,30 +11595,46 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -9628,10 +11646,14 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } @@ -9641,6 +11663,8 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9652,6 +11676,7 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- wf_uN: `%%`(32, x) -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) @@ -9662,6 +11687,8 @@ def $alloctypes(type*) : deftype* def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9673,6 +11700,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } @@ -9681,6 +11710,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9692,6 +11723,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } @@ -9700,6 +11733,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9711,6 +11746,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } @@ -9719,6 +11756,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9730,6 +11769,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } @@ -9738,6 +11779,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9749,6 +11792,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } @@ -9757,6 +11802,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9768,6 +11815,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } @@ -9776,6 +11825,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9787,6 +11838,8 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } @@ -9795,14 +11848,19 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -9813,6 +11871,24 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + -- wf_store: `%`(s_7) + -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`(s_1) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_3) + -- wf_store: `%`(s_4) + -- wf_store: `%`(s_5) + -- wf_store: `%`(s_6) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} @@ -9844,6 +11920,10 @@ def $rundata_(dataidx : dataidx, data : data) : instr* def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) + -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -9851,8 +11931,13 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(TABLE.INIT_instr(y, x)) + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -9863,6 +11948,11 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) + -- wf_state: `%`(z') + -- wf_val: `%`(val) + -- (wf_val: `%`(val'))*{val' <- `val'*`} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- where `%;%`_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, val) {a, s'} @@ -9873,6 +11963,24 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- wf_state: `%`(z) + -- wf_state: `%`(z') + -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} + -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} + -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} + -- (wf_start: `%`(START_start(x)))?{x <- `x?`} + -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} + -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} + -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} @@ -9895,6 +12003,8 @@ def $instantiate(store : store, module : module, externaddr*) : config def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -11991,6 +14101,7 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) } @@ -12000,6 +14111,8 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I) + -- wf_idctxt: `%`(I) + -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) @@ -13885,15 +15998,26 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32.add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global.get{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -13903,14 +16027,23 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -13949,6 +16082,8 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} } diff --git a/spectec/test-middlend/specification.exp/09-sideconditions.il b/spectec/test-middlend/specification.exp/09-sideconditions.il index b2fdcf6e33..b22aa1be2e 100644 --- a/spectec/test-middlend/specification.exp/09-sideconditions.il +++ b/spectec/test-middlend/specification.exp/09-sideconditions.il @@ -317,16 +317,19 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -380,18 +383,29 @@ def $utf8(char*) : byte* def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] + -- wf_byte: `%`(b) + -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) -- if ($proj_char_0(ch).0 < 128) -- where b = `%`_byte($proj_char_0(ch).0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) + -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -585,6 +599,7 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -595,6 +610,7 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -603,46 +619,55 @@ def $free_list(free*) : free def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -1019,61 +1044,73 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1374,6 +1411,7 @@ def $unpack(storagetype : storagetype) : valtype def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype + -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1408,8 +1446,10 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1503,6 +1543,9 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} + -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } @@ -1544,6 +1587,7 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1555,6 +1599,7 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1567,25 +1612,32 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1608,79 +1660,97 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) + -- wf_externtype: `%`(FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4192,10 +4280,13 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4226,6 +4317,7 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4292,10 +4384,13 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4304,10 +4399,13 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4330,6 +4428,7 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4340,8 +4439,10 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4397,6 +4498,7 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + -- wf_free: `%`(free) -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } @@ -4640,6 +4742,7 @@ def $free_datamode(datamode : datamode) : free def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -4652,8 +4755,10 @@ def $free_elemmode(elemmode : elemmode) : free def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -4807,12 +4912,14 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -4841,24 +4948,28 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype}: `%~~%`(deftype, comptype) + -- wf_comptype: `%`(comptype) -- if ($expanddt(deftype) = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -4866,6 +4977,7 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool @@ -4893,10 +5005,13 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -4904,6 +5019,8 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -4911,39 +5028,51 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) + -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) + -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) + -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -4951,6 +5080,8 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -4958,6 +5089,8 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -4965,11 +5098,14 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) + -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -4977,16 +5113,22 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -4995,10 +5137,14 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- if (|`comptype'*`| = |`x'**`|) + -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} -- if (|`comptype'*`| = |`x*`|) - -- if (|`comptype'*`| = |`x'**`|) -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) @@ -5009,16 +5155,27 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -5026,10 +5183,15 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- if (|`comptype'*`| = |`typeuse'**`|) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} -- if (|`comptype'*`| = |`typeuse*`|) - -- if (|`comptype'*`| = |`typeuse'**`|) -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5039,10 +5201,17 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) @@ -5051,6 +5220,9 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- wf_context: `%`(C) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) @@ -5060,17 +5232,26 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) @@ -5079,11 +5260,14 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) @@ -5093,10 +5277,16 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5104,48 +5294,76 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype)) @@ -5153,43 +5371,71 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) -- if (j < |typeuse*{typeuse <- `typeuse*`}|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5197,27 +5443,38 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) + -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) + -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} @@ -5226,11 +5483,15 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) + -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5238,11 +5499,17 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5252,6 +5519,9 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- if (|`lct*`| = |`x*`|) @@ -5263,11 +5533,16 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) @@ -5276,6 +5551,8 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} @@ -5284,6 +5561,9 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5292,6 +5572,8 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5299,6 +5581,8 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5306,6 +5590,8 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5314,26 +5600,37 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5342,6 +5639,11 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) @@ -5354,6 +5656,9 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5362,6 +5667,7 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5370,11 +5676,17 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -5383,6 +5695,9 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5390,6 +5705,9 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -5399,26 +5717,41 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) + -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5426,11 +5759,18 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5439,6 +5779,9 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -5447,6 +5790,9 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -5455,12 +5801,16 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) @@ -5468,12 +5818,16 @@ relation Catch_ok: `%|-%:OK`(context, catch) def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) + -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) + -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -5482,6 +5836,7 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5497,25 +5852,41 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) @@ -5523,18 +5894,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5542,6 +5930,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5549,12 +5941,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} -- if ($proj_uN_0(l').0 < |C.LABELS_context|) @@ -5564,6 +5962,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -5571,12 +5972,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -5587,6 +5995,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -5597,18 +6009,32 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -5618,12 +6044,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) @@ -5633,6 +6069,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) @@ -5642,6 +6084,14 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -5654,6 +6104,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5661,11 +6116,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} @@ -5673,11 +6137,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref.null{C : context, ht : heaptype}: `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (|C.REFS_context| > 0) @@ -5686,24 +6156,39 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref.i31{C : context}: `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref.is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref.as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref.eq{C : context}: `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.TEST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -5711,6 +6196,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.CAST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -5718,16 +6206,27 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31.get{C : context, sx : sx}: `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} @@ -5735,6 +6234,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) @@ -5744,6 +6248,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.SET_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) @@ -5752,12 +6261,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) @@ -5765,12 +6282,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -5779,6 +6304,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) @@ -5788,6 +6317,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -5795,22 +6328,38 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array.set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array.len{C : context}: `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.LEN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array.fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) @@ -5820,6 +6369,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -5828,6 +6381,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) @@ -5837,76 +6394,127 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local.get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local.set{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local.tee{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global.set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) @@ -5916,6 +6524,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -5925,30 +6538,51 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem.drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(ELEM.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) @@ -5957,6 +6591,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) @@ -5965,12 +6603,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data.drop{C : context, x : idx}: `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DATA.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -5978,6 +6623,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -5985,6 +6634,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -5992,6 +6645,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -5999,6 +6656,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6006,6 +6667,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) @@ -6013,6 +6678,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6020,6 +6689,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6027,6 +6700,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6035,6 +6712,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6042,6 +6723,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6050,129 +6735,223 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (|`init*`| = |`t*`|) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (|`init*`| = |`x_1*`|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} @@ -6181,6 +6960,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -6188,6 +6971,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) } @@ -6197,6 +6984,9 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6204,6 +6994,7 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6211,60 +7002,92 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.null{C : context, ht : heaptype}: `%|-%CONST`(C, REF.NULL_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: `%|-%CONST`(C, REF.I31_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.func{C : context, x : idx}: `%|-%CONST`(C, REF.FUNC_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_fixed{C : context, x : idx, n : n}: `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern.convert_any{C : context}: `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global.get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL.GET_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -6273,6 +7096,8 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6280,6 +7105,9 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) @@ -6288,6 +7116,9 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) @@ -6297,6 +7128,8 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + -- wf_context: `%`(C) + -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6304,6 +7137,9 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) @@ -6313,6 +7149,8 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6320,6 +7158,9 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) @@ -6329,11 +7170,17 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6342,6 +7189,10 @@ relation Func_ok: `%|-%:%`(context, func, deftype) rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} @@ -6352,10 +7203,15 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -6365,6 +7221,8 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6372,14 +7230,24 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6390,6 +7258,8 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) @@ -6399,6 +7269,9 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) @@ -6407,6 +7280,8 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + -- wf_context: `%`(C) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6414,30 +7289,45 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) @@ -6446,6 +7336,9 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6456,10 +7349,16 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } @@ -6472,10 +7371,13 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } @@ -6498,12 +7400,23 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) + -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) -- if (|`import*`| = |`xt_I*`|) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} @@ -6683,8 +7596,10 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) + -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) + -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -6713,6 +7628,7 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -6732,23 +7648,28 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) + -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -6756,6 +7677,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -6763,6 +7685,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -6770,10 +7693,12 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -6802,15 +7727,19 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -6861,49 +7790,61 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -7017,8 +7958,10 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) + -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) + -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7026,6 +7969,7 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) + -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -7033,6 +7977,7 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) + -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7040,72 +7985,103 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) + -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -7143,23 +8119,32 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] + -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] + -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] + -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] + -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] + -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -7209,16 +8194,21 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -7226,6 +8216,9 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} @@ -7233,6 +8226,10 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7241,6 +8238,10 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7249,6 +8250,9 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7257,6 +8261,9 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7265,6 +8272,9 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -7274,6 +8284,9 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -7283,6 +8296,9 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -7290,6 +8306,9 @@ def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} @@ -7297,6 +8316,9 @@ def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7305,6 +8327,9 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7313,6 +8338,10 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7322,6 +8351,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -7329,6 +8361,9 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -7336,6 +8371,10 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) @@ -7343,6 +8382,10 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{Jnn : Jnn, M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} @@ -7351,6 +8394,10 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{Jnn : Jnn, M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} @@ -7380,146 +8427,213 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} @@ -7529,30 +8643,43 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -7563,12 +8690,19 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} @@ -7577,23 +8711,36 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -7609,15 +8756,37 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -8024,6 +9193,7 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) + -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -8031,6 +9201,7 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -8216,71 +9387,87 @@ def $local(state : state, localidx : localidx) : val? def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f) + -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f) + -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) @@ -8291,6 +9478,9 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) @@ -8302,12 +9492,16 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -8317,48 +9511,80 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.I31_NUM_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.EXTERN_ref(addrref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -8368,16 +9594,23 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) + -- wf_store: `%`(s) + -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -8388,36 +9621,50 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -8457,6 +9704,12 @@ relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -8464,66 +9717,96 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if ($proj_uN_0(l).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if ($proj_uN_0(l).0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) @@ -8532,296 +9815,491 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instr: `%`(LOCAL.SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(REF.I31_NUM_instr(i)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) -- if ($unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) -- if ($binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(128, `%`_uN(0)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if ($proj_num__0(i) =/= ?()) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) -- if ($proj_num__0(c_2) =/= ?()) -- if ($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)|) @@ -8830,46 +10308,77 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) @@ -8878,14 +10387,57 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_throw_ref-handler-next`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) @@ -8894,6 +10446,8 @@ relation `Step_read_before_table.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -8903,12 +10457,15 @@ relation `Step_read_before_table.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -8918,6 +10475,8 @@ relation `Step_read_before_table.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) @@ -8927,6 +10486,8 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) @@ -8935,6 +10496,8 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -8944,12 +10507,15 @@ relation `Step_read_before_memory.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -8959,6 +10525,8 @@ relation `Step_read_before_memory.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) @@ -8968,6 +10536,10 @@ relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -8976,6 +10548,9 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -8984,6 +10559,8 @@ relation `Step_read_before_array.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -8993,6 +10570,8 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -9000,6 +10579,8 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -9009,12 +10590,15 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -9022,6 +10606,8 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -9031,21 +10617,36 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) -- if ($proj_num__0(i_1) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) -- if ($proj_num__0(i_2) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -9053,6 +10654,8 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -9062,12 +10665,16 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -9077,6 +10684,9 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -9084,6 +10694,8 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -9093,12 +10705,16 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -9106,6 +10722,8 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -9115,49 +10733,75 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if (a < |$funcinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) -- if (a < |$funcinst(z)|) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) @@ -9168,51 +10812,81 @@ relation Step_read: `%~>%`(config, instr*) rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if (a < |$funcinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) -- if (a < |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) @@ -9221,6 +10895,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) -- if (a < |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) @@ -9229,36 +10907,50 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr, x : idx, `val*` : val*, x : idx, `val*` : val*}: + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- if (((($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0]) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) \/ ($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0])) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) @@ -9267,16 +10959,22 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0] : ref <: instr)]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) @@ -9285,6 +10983,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9292,10 +10991,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -9306,6 +11013,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9314,6 +11022,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9322,10 +11039,21 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) @@ -9336,6 +11064,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9345,52 +11074,77 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) @@ -9413,12 +11173,17 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_uN: `%%`(N, j) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) @@ -9426,12 +11191,18 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) @@ -9441,12 +11212,17 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) @@ -9455,6 +11231,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9462,10 +11239,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -9476,6 +11261,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9484,6 +11270,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9492,10 +11287,21 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) @@ -9506,6 +11312,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9515,41 +11322,68 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) + -- wf_instr: `%`(REF.NULL_instr(($type(z, x) : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} @@ -9557,6 +11391,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -9564,29 +11400,43 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) -- if (a < |$structinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -9595,6 +11445,10 @@ relation Step_read: `%~>%`(config, instr*) rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) -- (if ($cunpack(zt) =/= ?()))^n{c <- `c*`} + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -9602,10 +11456,14 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -9616,24 +11474,34 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) -- if (a < |$arrayinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -9644,6 +11512,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9652,18 +11521,31 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -9671,6 +11553,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -9683,6 +11567,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9693,6 +11578,18 @@ relation Step_read: `%~>%`(config, instr*) -- if (a_2 < |$arrayinst(z)|) -- if (a_1 < |$arrayinst(z)|) -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -9701,6 +11598,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) @@ -9708,10 +11617,14 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -9719,6 +11632,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) @@ -9729,6 +11644,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ((($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9738,16 +11654,29 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_ref: `%`(ref) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -9755,6 +11684,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -9762,6 +11694,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) @@ -9771,6 +11704,16 @@ relation Step_read: `%~>%`(config, instr*) -- if ($cunpack(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) + -- wf_lit_: `%%`(zt, c) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -9783,48 +11726,74 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) @@ -9832,25 +11801,35 @@ relation Step: `%~>%`(config, config) rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -9858,11 +11837,15 @@ relation Step: `%~>%`(config, config) rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -9870,12 +11853,16 @@ relation Step: `%~>%`(config, config) rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -9883,11 +11870,15 @@ relation Step: `%~>%`(config, config) rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) @@ -9895,29 +11886,42 @@ relation Step: `%~>%`(config, config) rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) + -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) @@ -9925,26 +11929,39 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -9953,6 +11970,9 @@ relation Step: `%~>%`(config, config) rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -9964,10 +11984,14 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } @@ -9977,6 +12001,8 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -9988,6 +12014,7 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- wf_uN: `%%`(32, x) -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) @@ -9998,6 +12025,8 @@ def $alloctypes(type*) : deftype* def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -10009,6 +12038,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } @@ -10017,6 +12048,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -10028,6 +12061,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } @@ -10036,6 +12071,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -10047,6 +12084,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } @@ -10055,6 +12094,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -10066,6 +12107,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } @@ -10074,6 +12117,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -10085,6 +12130,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } @@ -10093,6 +12140,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -10104,6 +12153,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } @@ -10112,6 +12163,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -10123,6 +12176,8 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } @@ -10131,14 +12186,19 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -10149,6 +12209,24 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + -- wf_store: `%`(s_7) + -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`(s_1) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_3) + -- wf_store: `%`(s_4) + -- wf_store: `%`(s_5) + -- wf_store: `%`(s_6) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} @@ -10180,6 +12258,10 @@ def $rundata_(dataidx : dataidx, data : data) : instr* def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) + -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -10187,8 +12269,13 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(TABLE.INIT_instr(y, x)) + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -10199,6 +12286,11 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) + -- wf_state: `%`(z') + -- wf_val: `%`(val) + -- (wf_val: `%`(val'))*{val' <- `val'*`} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- where `%;%`_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, val) {a, s'} @@ -10209,6 +12301,24 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- wf_state: `%`(z) + -- wf_state: `%`(z') + -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} + -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} + -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} + -- (wf_start: `%`(START_start(x)))?{x <- `x?`} + -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} + -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} + -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} @@ -10231,6 +12341,8 @@ def $instantiate(store : store, module : module, externaddr*) : config def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -12327,6 +14439,7 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) } @@ -12336,6 +14449,8 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I) + -- wf_idctxt: `%`(I) + -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) @@ -14221,16 +16336,27 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32.add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global.get{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -14240,14 +16366,23 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -14286,6 +16421,8 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} } diff --git a/spectec/test-middlend/specification.exp/10-sub-expansion.il b/spectec/test-middlend/specification.exp/10-sub-expansion.il index 20619ad224..71c986f4db 100644 --- a/spectec/test-middlend/specification.exp/10-sub-expansion.il +++ b/spectec/test-middlend/specification.exp/10-sub-expansion.il @@ -317,16 +317,19 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -380,18 +383,29 @@ def $utf8(char*) : byte* def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] + -- wf_byte: `%`(b) + -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) -- if ($proj_char_0(ch).0 < 128) -- where b = `%`_byte($proj_char_0(ch).0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) + -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -585,6 +599,7 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -595,6 +610,7 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -603,46 +619,55 @@ def $free_list(free*) : free def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -1019,61 +1044,73 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1410,8 +1447,10 @@ def $unpack(storagetype : storagetype) : valtype def $unpack(I32_storagetype) = I32_valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I8_storagetype) = I32_valtype + -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I16_storagetype) = I32_valtype + -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1474,8 +1513,10 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1569,6 +1610,9 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} + -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } @@ -1614,6 +1658,7 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1631,6 +1676,7 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(REF_reftype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1657,25 +1703,32 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1698,79 +1751,97 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(_DEF_typeuse(rectype, n)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) + -- wf_externtype: `%`(FUNC_externtype(($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4354,10 +4447,13 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4388,6 +4484,7 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4454,10 +4551,13 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4466,10 +4566,13 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4492,6 +4595,7 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4502,8 +4606,10 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4559,6 +4665,7 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + -- wf_free: `%`(free) -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } @@ -4802,6 +4909,7 @@ def $free_datamode(datamode : datamode) : free def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -4814,8 +4922,10 @@ def $free_elemmode(elemmode : elemmode) : free def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -4969,12 +5079,14 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5003,24 +5115,28 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype}: `%~~%`(deftype, comptype) + -- wf_comptype: `%`(comptype) -- if ($expanddt(deftype) = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5028,6 +5144,7 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool @@ -5055,10 +5172,13 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -5066,6 +5186,8 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -5073,39 +5195,51 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) + -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) + -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) + -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -5113,6 +5247,8 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -5120,6 +5256,8 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -5127,11 +5265,14 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) + -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -5139,16 +5280,22 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -5157,10 +5304,14 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- if (|`comptype'*`| = |`x'**`|) + -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} -- if (|`comptype'*`| = |`x*`|) - -- if (|`comptype'*`| = |`x'**`|) -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) @@ -5171,16 +5322,27 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -5188,10 +5350,15 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- if (|`comptype'*`| = |`typeuse'**`|) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} -- if (|`comptype'*`| = |`typeuse*`|) - -- if (|`comptype'*`| = |`typeuse'**`|) -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5201,10 +5368,17 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) @@ -5213,6 +5387,9 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- wf_context: `%`(C) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) @@ -5222,17 +5399,26 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) @@ -5241,11 +5427,14 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) @@ -5255,10 +5444,16 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5266,48 +5461,76 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype)) @@ -5315,43 +5538,71 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) -- if (j < |typeuse*{typeuse <- `typeuse*`}|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5359,27 +5610,38 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) + -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) + -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} @@ -5388,11 +5650,15 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) + -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5400,11 +5666,17 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5414,6 +5686,9 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- if (|`lct*`| = |`x*`|) @@ -5425,11 +5700,16 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) @@ -5438,6 +5718,8 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} @@ -5446,6 +5728,9 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5454,6 +5739,8 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5461,6 +5748,8 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5468,6 +5757,8 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5476,26 +5767,37 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5504,6 +5806,11 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) @@ -5516,6 +5823,9 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5524,6 +5834,7 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5532,11 +5843,17 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -5545,6 +5862,9 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5552,6 +5872,9 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -5561,26 +5884,41 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) + -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5588,11 +5926,18 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5601,6 +5946,9 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -5609,6 +5957,9 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -5617,12 +5968,16 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) @@ -5630,16 +5985,22 @@ relation Catch_ok: `%|-%:OK`(context, catch) def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I32_valtype) = ?(CONST_val((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_val: `%`(CONST_val((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I64_valtype) = ?(CONST_val((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, `%`_uN(0)))) + -- wf_val: `%`(CONST_val((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F32_valtype) = ?(CONST_val((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $fzero($size((F32_Fnn : Fnn <: numtype)))))) + -- wf_val: `%`(CONST_val((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $fzero($size((F32_Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F64_valtype) = ?(CONST_val((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $fzero($size((F64_Fnn : Fnn <: numtype)))))) + -- wf_val: `%`(CONST_val((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $fzero($size((F64_Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(V128_valtype) = ?(VCONST_val(V128_vectype, `%`_vec_(0))) + -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -5648,6 +6009,7 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5663,25 +6025,41 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) @@ -5689,18 +6067,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5708,6 +6103,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5715,12 +6114,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} -- if ($proj_uN_0(l').0 < |C.LABELS_context|) @@ -5730,6 +6135,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -5737,12 +6145,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -5753,6 +6168,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -5763,18 +6182,32 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -5784,12 +6217,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) @@ -5799,6 +6242,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) @@ -5808,6 +6257,14 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -5820,6 +6277,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5827,11 +6289,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} @@ -5839,11 +6310,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref.null{C : context, ht : heaptype}: `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (|C.REFS_context| > 0) @@ -5852,24 +6329,39 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref.i31{C : context}: `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref.is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref.as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref.eq{C : context}: `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.TEST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -5877,6 +6369,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.CAST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -5884,16 +6379,27 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31.get{C : context, sx : sx}: `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} @@ -5901,6 +6407,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) @@ -5910,6 +6421,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.SET_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) @@ -5918,12 +6434,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) @@ -5931,12 +6455,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -5945,6 +6477,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) @@ -5954,6 +6490,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -5961,22 +6501,38 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array.set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array.len{C : context}: `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.LEN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array.fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) @@ -5986,6 +6542,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -5994,6 +6554,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) @@ -6003,76 +6567,127 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local.get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local.set{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local.tee{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global.set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) @@ -6082,6 +6697,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6091,30 +6711,51 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem.drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(ELEM.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) @@ -6123,6 +6764,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) @@ -6131,12 +6776,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data.drop{C : context, x : idx}: `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DATA.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6144,6 +6796,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6151,6 +6807,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6158,6 +6818,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6165,6 +6829,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6172,6 +6840,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) @@ -6179,6 +6851,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6186,6 +6862,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6193,6 +6873,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6201,6 +6885,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6208,6 +6896,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6216,129 +6908,223 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (|`init*`| = |`t*`|) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (|`init*`| = |`x_1*`|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} @@ -6347,6 +7133,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -6354,6 +7144,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) } @@ -6363,6 +7157,9 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6370,6 +7167,7 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6377,60 +7175,92 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.null{C : context, ht : heaptype}: `%|-%CONST`(C, REF.NULL_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: `%|-%CONST`(C, REF.I31_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.func{C : context, x : idx}: `%|-%CONST`(C, REF.FUNC_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_fixed{C : context, x : idx, n : n}: `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern.convert_any{C : context}: `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global.get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL.GET_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -6439,6 +7269,8 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6446,6 +7278,9 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) @@ -6454,6 +7289,9 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) @@ -6463,6 +7301,8 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + -- wf_context: `%`(C) + -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6470,6 +7310,9 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) @@ -6479,6 +7322,8 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6486,6 +7331,9 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) @@ -6495,11 +7343,17 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6508,6 +7362,10 @@ relation Func_ok: `%|-%:%`(context, func, deftype) rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} @@ -6518,10 +7376,15 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -6531,6 +7394,8 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6538,14 +7403,24 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6556,6 +7431,8 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) @@ -6565,6 +7442,9 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) @@ -6573,6 +7453,8 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + -- wf_context: `%`(C) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6580,30 +7462,45 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) @@ -6612,6 +7509,9 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6622,10 +7522,16 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } @@ -6638,10 +7544,13 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } @@ -6664,12 +7573,23 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) + -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) -- if (|`import*`| = |`xt_I*`|) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} @@ -6859,16 +7779,22 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) + -- wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) + -- wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) + -- wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) + -- wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F32_lanetype) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $fzero($size((F32_Fnn : Fnn <: numtype))))) + -- wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $fzero($size((F32_Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F64_lanetype) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $fzero($size((F64_Fnn : Fnn <: numtype))))) + -- wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $fzero($size((F64_Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -6897,6 +7823,7 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -6916,23 +7843,28 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) + -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -6940,6 +7872,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -6947,6 +7880,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -6954,10 +7888,12 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -6986,15 +7922,19 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7045,49 +7985,61 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -7201,16 +8153,22 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) + -- wf_lane_: `%%`((I32_numtype : numtype <: lanetype), mk_lane__0_lane_(I32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) + -- wf_lane_: `%%`((I64_numtype : numtype <: lanetype), mk_lane__0_lane_(I64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) + -- wf_lane_: `%%`((F32_numtype : numtype <: lanetype), mk_lane__0_lane_(F32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) + -- wf_lane_: `%%`((F64_numtype : numtype <: lanetype), mk_lane__0_lane_(F64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack((I8_packtype : packtype <: lanetype))), $psize(I8_packtype), c)) + -- wf_lane_: `%%`((I8_packtype : packtype <: lanetype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack((I8_packtype : packtype <: lanetype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack((I16_packtype : packtype <: lanetype))), $psize(I16_packtype), c)) + -- wf_lane_: `%%`((I16_packtype : packtype <: lanetype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack((I16_packtype : packtype <: lanetype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7226,8 +8184,10 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack((I8_packtype : packtype <: lanetype))), $psize(I8_packtype), c)) + -- wf_lit_: `%%`((I8_packtype : packtype <: storagetype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack((I8_packtype : packtype <: lanetype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack((I16_packtype : packtype <: lanetype))), $psize(I16_packtype), c)) + -- wf_lit_: `%%`((I16_packtype : packtype <: storagetype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack((I16_packtype : packtype <: lanetype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -7241,8 +8201,10 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack((I8_packtype : packtype <: lanetype))), U_sx, c)) + -- wf_num_: `%%`($lunpack((I8_packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack((I8_packtype : packtype <: lanetype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack((I16_packtype : packtype <: lanetype))), U_sx, c)) + -- wf_num_: `%%`($lunpack((I16_packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack((I16_packtype : packtype <: lanetype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7258,134 +8220,196 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack((I8_packtype : packtype <: lanetype))), U_sx, c))) + -- wf_lit_: `%%`((!($cunpack((I8_packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack((I8_packtype : packtype <: lanetype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack((I16_packtype : packtype <: lanetype))), U_sx, c))) + -- wf_lit_: `%%`((!($cunpack((I16_packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack((I16_packtype : packtype <: lanetype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn((I32_Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $iclz_($sizenn((I32_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn((I64_Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $iclz_($sizenn((I64_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn((I32_Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ictz_($sizenn((I32_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn((I64_Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ictz_($sizenn((I64_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn((I32_Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn((I32_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn((I64_Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn((I64_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn((I32_Inn : addrtype <: numtype)), M, S_sx, i))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $iextend_($sizenn((I32_Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn((I64_Inn : addrtype <: numtype)), M, S_sx, i))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $iextend_($sizenn((I64_Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $iadd_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $iadd_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $isub_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $isub_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $imul_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $imul_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $iand_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $iand_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ior_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ior_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ixor_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ixor_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn((I32_Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ishl_($sizenn((I32_Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn((I64_Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ishl_($sizenn((I64_Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ishr_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ishr_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $irotl_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $irotl_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $irotr_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $irotr_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -7449,83 +8473,119 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, i_1))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $extend__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, i_1))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $extend__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, i_1))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $extend__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, i_1))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $extend__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), i_1))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $wrap__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), i_1))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $wrap__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), i_1))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $wrap__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), i_1))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $wrap__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), sx, i_1))] + -- wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $convert__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), sx, i_1))] + -- wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $convert__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), sx, i_1))] + -- wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $convert__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), sx, i_1))] + -- wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $convert__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__((I32_Inn : addrtype <: numtype), (F32_Fnn : Fnn <: numtype), mk_num__0_num_(I32_Inn, i_1))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, i_1)) -- if ($size((I32_Inn : addrtype <: numtype)) = $size((F32_Fnn : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__((I64_Inn : addrtype <: numtype), (F32_Fnn : Fnn <: numtype), mk_num__0_num_(I64_Inn, i_1))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, i_1)) -- if ($size((I64_Inn : addrtype <: numtype)) = $size((F32_Fnn : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__((I32_Inn : addrtype <: numtype), (F64_Fnn : Fnn <: numtype), mk_num__0_num_(I32_Inn, i_1))] + -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, i_1)) -- if ($size((I32_Inn : addrtype <: numtype)) = $size((F64_Fnn : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__((I64_Inn : addrtype <: numtype), (F64_Fnn : Fnn <: numtype), mk_num__0_num_(I64_Inn, i_1))] + -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, i_1)) -- if ($size((I64_Inn : addrtype <: numtype)) = $size((F64_Fnn : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__((F32_Fnn : Fnn <: numtype), (I32_Inn : addrtype <: numtype), mk_num__1_num_(F32_Fnn, f_1))] + -- wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size((F32_Fnn : Fnn <: numtype)) = $size((I32_Inn : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__((F64_Fnn : Fnn <: numtype), (I32_Inn : addrtype <: numtype), mk_num__1_num_(F64_Fnn, f_1))] + -- wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size((F64_Fnn : Fnn <: numtype)) = $size((I32_Inn : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__((F32_Fnn : Fnn <: numtype), (I64_Inn : addrtype <: numtype), mk_num__1_num_(F32_Fnn, f_1))] + -- wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size((F32_Fnn : Fnn <: numtype)) = $size((I64_Inn : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__((F64_Fnn : Fnn <: numtype), (I64_Inn : addrtype <: numtype), mk_num__1_num_(F64_Fnn, f_1))] + -- wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size((F64_Fnn : Fnn <: numtype)) = $size((I64_Inn : addrtype <: numtype))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -7743,28 +8803,42 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -7772,10 +8846,16 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} @@ -7783,21 +8863,37 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7806,21 +8902,37 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7829,21 +8941,33 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7852,11 +8976,17 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7865,24 +8995,36 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -7892,12 +9034,18 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -7907,18 +9055,30 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -7926,10 +9086,16 @@ def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} @@ -7937,21 +9103,33 @@ def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7960,21 +9138,33 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7983,12 +9173,20 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn((F32_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} -- if ($isize(Inn) = $fsize(F32_Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn((F64_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7998,18 +9196,30 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -8017,18 +9227,30 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -8036,18 +9258,34 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) @@ -8055,21 +9293,37 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} @@ -8078,21 +9332,37 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} @@ -8122,520 +9392,741 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I32_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I64_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I8_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I16_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} @@ -8645,48 +10136,70 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8694,6 +10207,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8701,6 +10221,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8708,6 +10235,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8715,6 +10249,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8722,6 +10263,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8729,6 +10277,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8736,6 +10291,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8743,6 +10305,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8750,6 +10319,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8757,6 +10333,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8764,6 +10347,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8771,6 +10361,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8778,6 +10375,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8785,6 +10389,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8792,6 +10403,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8802,87 +10420,169 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} @@ -8891,53 +10591,96 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8945,6 +10688,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8952,6 +10702,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8959,6 +10716,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8966,6 +10730,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8973,6 +10744,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8980,6 +10758,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8987,6 +10772,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8994,6 +10786,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9001,6 +10800,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9008,6 +10814,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9015,6 +10828,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9022,6 +10842,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9029,6 +10856,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9036,6 +10870,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9043,6 +10884,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9058,105 +10906,307 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9164,6 +11214,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9171,6 +11231,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9178,6 +11248,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9185,6 +11265,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9192,6 +11282,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9199,6 +11299,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9206,6 +11316,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9213,6 +11333,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9220,6 +11350,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9227,6 +11367,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9234,6 +11384,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9241,6 +11401,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9248,6 +11418,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9255,6 +11435,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9262,6 +11452,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9680,8 +11880,10 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{val : val}(I32_storagetype, val) = (val : val <: fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)) + -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)) + -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -9827,8 +12029,10 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{numtype : numtype, num_ : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -10014,71 +12218,87 @@ def $local(state : state, localidx : localidx) : val? def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f) + -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f) + -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) @@ -10089,6 +12309,9 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) @@ -10100,12 +12323,16 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -10115,48 +12342,80 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.I31_NUM_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.EXTERN_ref(addrref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -10166,16 +12425,23 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) + -- wf_store: `%`(s) + -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -10186,36 +12452,50 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -10255,6 +12535,12 @@ relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10262,66 +12548,96 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if ($proj_uN_0(l).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if ($proj_uN_0(l).0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) @@ -10330,296 +12646,491 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instr: `%`(LOCAL.SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(REF.I31_NUM_instr(i)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) -- if ($unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) -- if ($binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(128, `%`_uN(0)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if ($proj_num__0(i) =/= ?()) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) -- if ($proj_num__0(c_2) =/= ?()) -- if ($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)|) @@ -10628,46 +13139,77 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) @@ -10676,14 +13218,57 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_throw_ref-handler-next`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) @@ -10692,6 +13277,8 @@ relation `Step_read_before_table.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -10701,12 +13288,15 @@ relation `Step_read_before_table.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -10716,6 +13306,8 @@ relation `Step_read_before_table.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) @@ -10725,6 +13317,8 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) @@ -10733,6 +13327,8 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -10742,12 +13338,15 @@ relation `Step_read_before_memory.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -10757,6 +13356,8 @@ relation `Step_read_before_memory.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) @@ -10766,6 +13367,10 @@ relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -10774,6 +13379,9 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -10782,6 +13390,8 @@ relation `Step_read_before_array.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -10791,6 +13401,8 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -10798,6 +13410,8 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -10807,12 +13421,15 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -10820,6 +13437,8 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -10829,21 +13448,36 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) -- if ($proj_num__0(i_1) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) -- if ($proj_num__0(i_2) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -10851,6 +13485,8 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -10860,12 +13496,16 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -10875,6 +13515,9 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -10882,6 +13525,8 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -10891,12 +13536,16 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -10904,6 +13553,8 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -10913,49 +13564,75 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if (a < |$funcinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) -- if (a < |$funcinst(z)|) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) @@ -10966,51 +13643,81 @@ relation Step_read: `%~>%`(config, instr*) rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if (a < |$funcinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) -- if (a < |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) @@ -11019,6 +13726,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) -- if (a < |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) @@ -11027,36 +13738,50 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr, x : idx, `val*` : val*, x : idx, `val*` : val*}: + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- if (((($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0]) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) \/ ($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0])) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) @@ -11065,16 +13790,22 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0] : ref <: instr)]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) @@ -11083,6 +13814,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11090,10 +13822,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -11104,6 +13844,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11112,6 +13853,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11120,10 +13870,21 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) @@ -11134,6 +13895,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11143,52 +13905,77 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) @@ -11211,12 +14004,17 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_uN: `%%`(N, j) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) @@ -11224,12 +14022,18 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) @@ -11239,12 +14043,17 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) @@ -11253,6 +14062,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11260,10 +14070,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -11274,6 +14092,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11282,6 +14101,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11290,10 +14118,21 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) @@ -11304,6 +14143,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11313,41 +14153,68 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) + -- wf_instr: `%`(REF.NULL_instr(($type(z, x) : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} @@ -11355,6 +14222,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -11362,29 +14231,43 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) -- if (a < |$structinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -11393,6 +14276,10 @@ relation Step_read: `%~>%`(config, instr*) rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) -- (if ($cunpack(zt) =/= ?()))^n{c <- `c*`} + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -11400,10 +14287,14 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11414,24 +14305,34 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) -- if (a < |$arrayinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11442,6 +14343,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11450,18 +14352,31 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -11469,6 +14384,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -11481,6 +14398,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11491,6 +14409,18 @@ relation Step_read: `%~>%`(config, instr*) -- if (a_2 < |$arrayinst(z)|) -- if (a_1 < |$arrayinst(z)|) -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -11499,6 +14429,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) @@ -11506,10 +14448,14 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11517,6 +14463,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) @@ -11527,6 +14475,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ((($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11536,16 +14485,29 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_ref: `%`(ref) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11553,6 +14515,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -11560,6 +14525,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) @@ -11569,6 +14535,16 @@ relation Step_read: `%~>%`(config, instr*) -- if ($cunpack(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) + -- wf_lit_: `%%`(zt, c) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -11581,48 +14557,74 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) @@ -11630,25 +14632,35 @@ relation Step: `%~>%`(config, config) rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -11656,11 +14668,15 @@ relation Step: `%~>%`(config, config) rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -11668,12 +14684,16 @@ relation Step: `%~>%`(config, config) rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -11681,11 +14701,15 @@ relation Step: `%~>%`(config, config) rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) @@ -11693,29 +14717,42 @@ relation Step: `%~>%`(config, config) rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) + -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) @@ -11723,26 +14760,39 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11751,6 +14801,9 @@ relation Step: `%~>%`(config, config) rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -11762,10 +14815,14 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } @@ -11775,6 +14832,8 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11786,6 +14845,7 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- wf_uN: `%%`(32, x) -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) @@ -11796,6 +14856,8 @@ def $alloctypes(type*) : deftype* def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11807,6 +14869,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } @@ -11815,6 +14879,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11826,6 +14892,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } @@ -11834,6 +14902,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11845,6 +14915,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } @@ -11853,6 +14925,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11864,6 +14938,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } @@ -11872,6 +14948,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11883,6 +14961,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } @@ -11891,6 +14971,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11902,6 +14984,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } @@ -11910,6 +14994,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11921,6 +15007,8 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } @@ -11929,14 +15017,19 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -11947,6 +15040,24 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + -- wf_store: `%`(s_7) + -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`(s_1) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_3) + -- wf_store: `%`(s_4) + -- wf_store: `%`(s_5) + -- wf_store: `%`(s_6) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} @@ -11978,6 +15089,10 @@ def $rundata_(dataidx : dataidx, data : data) : instr* def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) + -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -11985,8 +15100,13 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(TABLE.INIT_instr(y, x)) + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11997,6 +15117,11 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) + -- wf_state: `%`(z') + -- wf_val: `%`(val) + -- (wf_val: `%`(val'))*{val' <- `val'*`} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- where `%;%`_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, val) {a, s'} @@ -12007,6 +15132,24 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- wf_state: `%`(z) + -- wf_state: `%`(z') + -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} + -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} + -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} + -- (wf_start: `%`(START_start(x)))?{x <- `x?`} + -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} + -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} + -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} @@ -12029,6 +15172,8 @@ def $instantiate(store : store, module : module, externaddr*) : config def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -14125,6 +17270,7 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) } @@ -14134,6 +17280,8 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I) + -- wf_idctxt: `%`(I) + -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) @@ -16019,16 +19167,27 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32.add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global.get{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -16038,14 +19197,23 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -16084,6 +19252,8 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} } diff --git a/spectec/test-middlend/specification.exp/11-sub.il b/spectec/test-middlend/specification.exp/11-sub.il index 215b0475ce..94f77aee7d 100644 --- a/spectec/test-middlend/specification.exp/11-sub.il +++ b/spectec/test-middlend/specification.exp/11-sub.il @@ -317,16 +317,19 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -380,18 +383,29 @@ def $utf8(char*) : byte* def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] + -- wf_byte: `%`(b) + -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) -- if ($proj_char_0(ch).0 < 128) -- where b = `%`_byte($proj_char_0(ch).0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) + -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -585,6 +599,7 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -595,6 +610,7 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -603,46 +619,55 @@ def $free_list(free*) : free def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -808,6 +833,13 @@ def $valtype_addrtype(addrtype) : valtype def $valtype_addrtype(I32_addrtype) = I32_valtype def $valtype_addrtype(I64_addrtype) = I64_valtype +def $storagetype_consttype(consttype) : storagetype + def $storagetype_consttype(I32_consttype) = I32_storagetype + def $storagetype_consttype(I64_consttype) = I64_storagetype + def $storagetype_consttype(F32_consttype) = F32_storagetype + def $storagetype_consttype(F64_consttype) = F64_storagetype + def $storagetype_consttype(V128_consttype) = V128_storagetype + def $storagetype_numtype(numtype) : storagetype def $storagetype_numtype(I32_numtype) = I32_storagetype def $storagetype_numtype(I64_numtype) = I64_storagetype @@ -1100,61 +1132,73 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1523,8 +1567,10 @@ def $unpack(storagetype : storagetype) : valtype def $unpack(I32_storagetype) = I32_valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I8_storagetype) = I32_valtype + -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I16_storagetype) = I32_valtype + -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1587,8 +1633,10 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1682,6 +1730,9 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} + -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } @@ -1727,6 +1778,7 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1744,6 +1796,7 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $valtype_reftype($subst_reftype(REF_reftype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1770,25 +1823,32 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1811,79 +1871,97 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(_DEF_typeuse(rectype, n)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4488,10 +4588,13 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4522,6 +4625,7 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4588,10 +4692,13 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4600,10 +4707,13 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4626,6 +4736,7 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4636,8 +4747,10 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4693,6 +4806,7 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + -- wf_free: `%`(free) -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } @@ -4936,6 +5050,7 @@ def $free_datamode(datamode : datamode) : free def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -4948,8 +5063,10 @@ def $free_elemmode(elemmode : elemmode) : free def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -5103,12 +5220,14 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5137,24 +5256,28 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype}: `%~~%`(deftype, comptype) + -- wf_comptype: `%`(comptype) -- if ($expanddt(deftype) = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5162,6 +5285,7 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool @@ -5189,10 +5313,13 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, $heaptype_absheaptype(absheaptype)) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, $heaptype_typeuse(typeuse)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -5200,6 +5327,8 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -5207,39 +5336,51 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, $valtype_numtype(numtype)) + -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, $valtype_vectype(vectype)) + -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, $valtype_reftype(reftype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, $typeuse_deftype(deftype)) + -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -5247,6 +5388,8 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -5254,6 +5397,8 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -5261,11 +5406,14 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, $storagetype_valtype(valtype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, $storagetype_packtype(packtype)) + -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -5273,16 +5421,22 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -5291,10 +5445,14 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- if (|`comptype'*`| = |`x'**`|) + -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} -- if (|`comptype'*`| = |`x*`|) - -- if (|`comptype'*`| = |`x'**`|) -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) @@ -5305,16 +5463,27 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -5322,10 +5491,15 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- if (|`comptype'*`| = |`typeuse'**`|) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} -- if (|`comptype'*`| = |`typeuse*`|) - -- if (|`comptype'*`| = |`typeuse'**`|) -- (if ($unrollht(C, $heaptype_typeuse(typeuse)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5335,10 +5509,17 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) @@ -5347,6 +5528,9 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- wf_context: `%`(C) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) @@ -5356,17 +5540,26 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) @@ -5375,11 +5568,14 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) @@ -5389,10 +5585,16 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5400,48 +5602,76 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, $heaptype_deftype(deftype), STRUCT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, $heaptype_deftype(deftype), ARRAY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, $heaptype_deftype(deftype), FUNC_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) @@ -5449,43 +5679,71 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[j])) -- if (j < |typeuse*{typeuse <- `typeuse*`}|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5493,27 +5751,38 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) + -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) + -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} @@ -5522,11 +5791,15 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) + -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5534,11 +5807,17 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5548,6 +5827,9 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- if (|`lct*`| = |`x*`|) @@ -5559,11 +5841,16 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`($typeuse_deftype(deftype), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) @@ -5572,6 +5859,8 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} @@ -5580,6 +5869,9 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5588,6 +5880,8 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5595,6 +5889,8 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5602,6 +5898,8 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5610,26 +5908,37 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5638,6 +5947,11 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) @@ -5650,6 +5964,9 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5658,6 +5975,7 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5666,11 +5984,17 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -5679,6 +6003,9 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5686,6 +6013,9 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -5695,26 +6025,41 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5722,11 +6067,18 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5735,6 +6087,9 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -5743,6 +6098,9 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -5751,12 +6109,16 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) @@ -5764,16 +6126,22 @@ relation Catch_ok: `%|-%:OK`(context, catch) def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I32_valtype) = ?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I64_valtype) = ?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) + -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F32_valtype) = ?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) + -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F64_valtype) = ?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) + -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(V128_valtype) = ?(VCONST_val(V128_vectype, `%`_vec_(0))) + -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -5782,6 +6150,7 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5797,25 +6166,41 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = $valtype_numtype(numtype)) \/ (t' = $valtype_vectype(vectype))) @@ -5823,18 +6208,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5842,6 +6244,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5849,12 +6255,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} -- if ($proj_uN_0(l').0 < |C.LABELS_context|) @@ -5864,6 +6276,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -5871,12 +6286,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -5887,6 +6309,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -5897,18 +6323,32 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -5918,12 +6358,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) @@ -5933,6 +6383,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) @@ -5942,6 +6398,14 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -5954,6 +6418,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5961,11 +6430,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} @@ -5973,11 +6451,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref.null{C : context, ht : heaptype}: `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (|C.REFS_context| > 0) @@ -5986,24 +6470,39 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref.i31{C : context}: `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref.is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref.as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref.eq{C : context}: `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.TEST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6011,6 +6510,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.CAST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6018,16 +6520,27 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31.get{C : context, sx : sx}: `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} @@ -6035,6 +6548,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) @@ -6044,6 +6562,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.SET_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) @@ -6052,12 +6575,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) @@ -6065,12 +6596,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6079,6 +6618,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) @@ -6088,6 +6631,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6095,22 +6642,38 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array.set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array.len{C : context}: `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.LEN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array.fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) @@ -6120,6 +6683,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6128,6 +6695,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) @@ -6137,76 +6708,127 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local.get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local.set{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local.tee{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global.set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([I32_valtype]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) @@ -6216,6 +6838,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6225,30 +6852,51 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem.drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(ELEM.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) @@ -6257,6 +6905,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) @@ -6265,12 +6917,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data.drop{C : context, x : idx}: `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DATA.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6278,6 +6937,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6285,6 +6948,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6292,6 +6959,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6299,6 +6970,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6306,6 +6981,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) @@ -6313,6 +6992,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6320,6 +7003,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6327,6 +7014,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6335,6 +7026,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6342,6 +7037,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6350,129 +7049,223 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (|`init*`| = |`t*`|) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (|`init*`| = |`x_1*`|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} @@ -6481,6 +7274,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -6488,6 +7285,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) } @@ -6497,6 +7298,9 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6504,6 +7308,7 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6511,60 +7316,92 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.null{C : context, ht : heaptype}: `%|-%CONST`(C, REF.NULL_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: `%|-%CONST`(C, REF.I31_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.func{C : context, x : idx}: `%|-%CONST`(C, REF.FUNC_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_fixed{C : context, x : idx, n : n}: `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern.convert_any{C : context}: `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global.get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL.GET_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr($numtype_addrtype(Inn), binop)) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr($numtype_addrtype(Inn), binop)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -6573,6 +7410,8 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6580,6 +7419,9 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) @@ -6588,6 +7430,9 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) @@ -6597,6 +7442,8 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + -- wf_context: `%`(C) + -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6604,6 +7451,9 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) @@ -6613,6 +7463,8 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6620,6 +7472,9 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(rt)) @@ -6629,11 +7484,17 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6642,6 +7503,10 @@ relation Func_ok: `%|-%:%`(context, func, deftype) rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} @@ -6652,10 +7517,15 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) @@ -6665,6 +7535,8 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6672,14 +7544,24 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6690,6 +7572,8 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(elemtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) @@ -6699,6 +7583,9 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) @@ -6707,6 +7594,8 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + -- wf_context: `%`(C) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6714,30 +7603,45 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) @@ -6746,6 +7650,9 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6756,10 +7663,16 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } @@ -6772,10 +7685,13 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } @@ -6798,12 +7714,23 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) + -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) -- if (|`import*`| = |`xt_I*`|) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} @@ -6993,16 +7920,22 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) + -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) + -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) + -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) + -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) + -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) + -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7031,6 +7964,7 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -7050,23 +7984,28 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) + -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7074,6 +8013,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7081,6 +8021,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7088,10 +8029,12 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7120,15 +8063,19 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7179,49 +8126,61 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -7335,16 +8294,22 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) + -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) + -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) + -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) + -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7360,8 +8325,10 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -7375,8 +8342,10 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) + -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) + -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7392,134 +8361,196 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -7583,83 +8614,119 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))] + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))] + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))] + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))] + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -7877,28 +8944,42 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -7906,10 +8987,16 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} @@ -7917,21 +9004,37 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7940,21 +9043,37 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7963,21 +9082,33 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7986,11 +9117,17 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7999,24 +9136,36 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -8026,12 +9175,18 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -8041,18 +9196,30 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -8060,10 +9227,16 @@ def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} @@ -8071,21 +9244,33 @@ def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8094,21 +9279,33 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8117,12 +9314,20 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} -- if ($isize(Inn) = $fsize(F32_Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8132,18 +9337,30 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -8151,18 +9368,30 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -8170,18 +9399,34 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) @@ -8189,21 +9434,37 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} @@ -8212,21 +9473,37 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} @@ -8256,520 +9533,741 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I32_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I64_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I8_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I16_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} @@ -8779,48 +10277,70 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8828,6 +10348,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8835,6 +10362,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8842,6 +10376,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8849,6 +10390,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8856,6 +10404,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8863,6 +10418,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8870,6 +10432,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8877,6 +10446,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8884,6 +10460,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8891,6 +10474,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8898,6 +10488,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8905,6 +10502,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8912,6 +10516,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8919,6 +10530,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8926,6 +10544,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8936,87 +10561,169 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} @@ -9025,53 +10732,96 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9079,6 +10829,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9086,6 +10843,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9093,6 +10857,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9100,6 +10871,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9107,6 +10885,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9114,6 +10899,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9121,6 +10913,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9128,6 +10927,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9135,6 +10941,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9142,6 +10955,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9149,6 +10969,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9156,6 +10983,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9163,6 +10997,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9170,6 +11011,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9177,6 +11025,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9192,105 +11047,307 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9298,6 +11355,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9305,6 +11372,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9312,6 +11389,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9319,6 +11406,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9326,6 +11423,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9333,6 +11440,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9340,6 +11457,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9347,6 +11474,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9354,6 +11491,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9361,6 +11508,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9368,6 +11525,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9375,6 +11542,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9382,6 +11559,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9389,6 +11576,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9396,6 +11593,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9861,8 +12068,10 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{val : val}(I32_storagetype, val) = $fieldval_val(val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)) + -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)) + -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -10008,8 +12217,10 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{numtype : numtype, num_ : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -10195,71 +12406,87 @@ def $local(state : state, localidx : localidx) : val? def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f) + -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f) + -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) @@ -10270,6 +12497,9 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) @@ -10281,12 +12511,16 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -10296,48 +12530,80 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.I31_NUM_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.EXTERN_ref(addrref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, $ref_addrref(addrref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -10347,16 +12613,23 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, $val_num(num), $valtype_numtype(nt)) + -- wf_store: `%`(s) + -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, $val_vec(vec), $valtype_vectype(vt)) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, $val_ref(ref), $valtype_reftype(rt)) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -10367,36 +12640,50 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -10436,6 +12723,12 @@ relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10443,66 +12736,96 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([$instr_val(val) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_1)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_2)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if ($proj_uN_0(l).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if ($proj_uN_0(l).0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) @@ -10511,296 +12834,491 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [$instr_val(val)]) -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], [$instr_val(val) BR_instr(l)]) -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`($instr_val(val)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: `%~>%`([$instr_val(val) LOCAL.TEE_instr(x)], [$instr_val(val) $instr_val(val) LOCAL.SET_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instr: `%`(LOCAL.SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.AS_NON_NULL_instr], [TRAP_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.AS_NON_NULL_instr], [$instr_ref(ref)]) -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(REF.I31_NUM_instr(i)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: `%~>%`([$instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], $instr_val(val)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: `%~>%`([$instr_addrref(addrref) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [$instr_addrref(addrref)]) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) -- if ($unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) -- if ($binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(128, `%`_uN(0)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if ($proj_num__0(i) =/= ?()) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) -- if ($proj_num__0(c_2) =/= ?()) -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)|) @@ -10809,46 +13327,77 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) @@ -10857,14 +13406,57 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_throw_ref-handler-next`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) @@ -10873,6 +13465,8 @@ relation `Step_read_before_table.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -10882,12 +13476,15 @@ relation `Step_read_before_table.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -10897,6 +13494,8 @@ relation `Step_read_before_table.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) @@ -10906,6 +13505,8 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) @@ -10914,6 +13515,8 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -10923,12 +13526,15 @@ relation `Step_read_before_memory.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -10938,6 +13544,8 @@ relation `Step_read_before_memory.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) @@ -10947,6 +13555,10 @@ relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -10955,6 +13567,9 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -10963,6 +13578,8 @@ relation `Step_read_before_array.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -10972,6 +13589,8 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -10979,6 +13598,8 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -10988,12 +13609,15 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -11001,6 +13625,8 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -11010,21 +13636,36 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) -- if ($proj_num__0(i_1) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) -- if ($proj_num__0(i_2) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -11032,6 +13673,8 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -11041,12 +13684,16 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11056,6 +13703,9 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -11063,6 +13713,8 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11072,12 +13724,16 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -11085,6 +13741,8 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11094,49 +13752,75 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) -- if (a < |$funcinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) -- if (a < |$funcinst(z)|) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) @@ -11147,51 +13831,81 @@ relation Step_read: `%~>%`(config, instr*) rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) -- if (a < |$funcinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) -- if (a < |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) @@ -11200,6 +13914,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) -- if (a < |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) @@ -11208,36 +13926,50 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr, x : idx, `val*` : val*, x : idx, `val*` : val*}: + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- if (((($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0]) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) \/ ($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0])) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [$instr_val(val)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [$instr_val(val)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) @@ -11246,16 +13978,22 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) @@ -11264,6 +14002,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11271,10 +14010,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -11285,6 +14032,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11293,6 +14041,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11301,10 +14058,21 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) @@ -11315,6 +14083,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11324,52 +14093,77 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) @@ -11392,12 +14192,17 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_uN: `%%`(N, j) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) @@ -11405,12 +14210,18 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) @@ -11420,12 +14231,17 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) @@ -11434,6 +14250,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11441,10 +14258,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -11455,6 +14280,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11463,6 +14289,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11471,10 +14306,21 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) @@ -11485,6 +14331,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11494,41 +14341,68 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr($heaptype_deftype($type(z, x)))]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) + -- wf_instr: `%`(REF.NULL_instr($heaptype_deftype($type(z, x)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)]), [$instr_ref(ref)]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), $instr_val(val)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} @@ -11536,6 +14410,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -11543,29 +14419,43 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) -- if (a < |$structinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), $instr_val(val)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), $instr_ref(ref)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -11574,6 +14464,10 @@ relation Step_read: `%~>%`(config, instr*) rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) -- (if ($cunpack(zt) =/= ?()))^n{c <- `c*`} + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -11581,10 +14475,14 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11595,24 +14493,34 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) -- if (a < |$arrayinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11623,6 +14531,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11631,18 +14540,31 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -11650,6 +14572,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -11662,6 +14586,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11672,6 +14597,18 @@ relation Step_read: `%~>%`(config, instr*) -- if (a_2 < |$arrayinst(z)|) -- if (a_1 < |$arrayinst(z)|) -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -11680,6 +14617,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) @@ -11687,10 +14636,14 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11698,6 +14651,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) @@ -11708,6 +14663,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ((($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11717,16 +14673,29 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_ref: `%`(ref) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11734,6 +14703,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -11741,6 +14713,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) @@ -11750,6 +14723,16 @@ relation Step_read: `%~>%`(config, instr*) -- if ($cunpack(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) + -- wf_lit_: `%%`(zt, c) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -11762,48 +14745,74 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [$instr_val(val) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) LOCAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [$instr_val(val) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) GLOBAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) @@ -11811,25 +14820,35 @@ relation Step: `%~>%`(config, config) rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -11837,11 +14856,15 @@ relation Step: `%~>%`(config, config) rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -11849,12 +14872,16 @@ relation Step: `%~>%`(config, config) rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -11862,11 +14889,15 @@ relation Step: `%~>%`(config, config) rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) @@ -11874,29 +14905,42 @@ relation Step: `%~>%`(config, config) rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) + -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) @@ -11904,26 +14948,39 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) $instr_val(val) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11932,6 +14989,9 @@ relation Step: `%~>%`(config, config) rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -11943,10 +15003,14 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } @@ -11956,6 +15020,8 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`})) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11967,6 +15033,7 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- wf_uN: `%%`(32, x) -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), $typeuse_deftype(deftype')*{deftype' <- `deftype'*`})) @@ -11977,6 +15044,8 @@ def $alloctypes(type*) : deftype* def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11988,6 +15057,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } @@ -11996,6 +15067,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12007,6 +15080,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } @@ -12015,6 +15090,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12026,6 +15103,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } @@ -12034,6 +15113,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12045,6 +15126,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } @@ -12053,6 +15136,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12064,6 +15149,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } @@ -12072,6 +15159,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12083,6 +15172,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } @@ -12091,6 +15182,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12102,6 +15195,8 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } @@ -12110,14 +15205,19 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -12128,6 +15228,24 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + -- wf_store: `%`(s_7) + -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`(s_1) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_3) + -- wf_store: `%`(s_4) + -- wf_store: `%`(s_5) + -- wf_store: `%`(s_6) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} @@ -12159,6 +15277,10 @@ def $rundata_(dataidx : dataidx, data : data) : instr* def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) + -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -12166,8 +15288,13 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(TABLE.INIT_instr(y, x)) + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12178,6 +15305,11 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) + -- wf_state: `%`(z') + -- wf_val: `%`(val) + -- (wf_val: `%`(val'))*{val' <- `val'*`} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- where `%;%`_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, val) {a, s'} @@ -12188,6 +15320,24 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- wf_state: `%`(z) + -- wf_state: `%`(z') + -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} + -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} + -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} + -- (wf_start: `%`(START_start(x)))?{x <- `x?`} + -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} + -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} + -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} @@ -12210,6 +15360,8 @@ def $instantiate(store : store, module : module, externaddr*) : config def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -14306,6 +17458,7 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) } @@ -14315,6 +17468,8 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I) + -- wf_idctxt: `%`(I) + -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) @@ -16233,16 +19388,27 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32.add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global.get{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -16252,14 +19418,23 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -16298,6 +19473,8 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} } diff --git a/spectec/test-middlend/specification.exp/12-alias-demut.il b/spectec/test-middlend/specification.exp/12-alias-demut.il index 0a655847a9..1e45d14581 100644 --- a/spectec/test-middlend/specification.exp/12-alias-demut.il +++ b/spectec/test-middlend/specification.exp/12-alias-demut.il @@ -317,16 +317,19 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -380,18 +383,29 @@ def $utf8(char*) : byte* def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] + -- wf_byte: `%`(b) + -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) -- if ($proj_char_0(ch).0 < 128) -- where b = `%`_byte($proj_char_0(ch).0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) + -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -585,6 +599,7 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -595,6 +610,7 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -603,46 +619,55 @@ def $free_list(free*) : free def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -808,6 +833,13 @@ def $valtype_addrtype(addrtype) : valtype def $valtype_addrtype(I32_addrtype) = I32_valtype def $valtype_addrtype(I64_addrtype) = I64_valtype +def $storagetype_consttype(consttype) : storagetype + def $storagetype_consttype(I32_consttype) = I32_storagetype + def $storagetype_consttype(I64_consttype) = I64_storagetype + def $storagetype_consttype(F32_consttype) = F32_storagetype + def $storagetype_consttype(F64_consttype) = F64_storagetype + def $storagetype_consttype(V128_consttype) = V128_storagetype + def $storagetype_numtype(numtype) : storagetype def $storagetype_numtype(I32_numtype) = I32_storagetype def $storagetype_numtype(I64_numtype) = I64_storagetype @@ -1100,61 +1132,73 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1523,8 +1567,10 @@ def $unpack(storagetype : storagetype) : valtype def $unpack(I32_storagetype) = I32_valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I8_storagetype) = I32_valtype + -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I16_storagetype) = I32_valtype + -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1587,8 +1633,10 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1682,6 +1730,9 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} + -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } @@ -1727,6 +1778,7 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1744,6 +1796,7 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $valtype_reftype($subst_reftype(REF_reftype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1770,25 +1823,32 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1811,79 +1871,97 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(_DEF_typeuse(rectype, n)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4488,10 +4588,13 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4522,6 +4625,7 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4588,10 +4692,13 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4600,10 +4707,13 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4626,6 +4736,7 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4636,8 +4747,10 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4693,6 +4806,7 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + -- wf_free: `%`(free) -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } @@ -4936,6 +5050,7 @@ def $free_datamode(datamode : datamode) : free def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -4948,8 +5063,10 @@ def $free_elemmode(elemmode : elemmode) : free def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -5103,12 +5220,14 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5137,24 +5256,28 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype}: `%~~%`(deftype, comptype) + -- wf_comptype: `%`(comptype) -- if ($expanddt(deftype) = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5162,6 +5285,7 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool @@ -5189,10 +5313,13 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, $heaptype_absheaptype(absheaptype)) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, $heaptype_typeuse(typeuse)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -5200,6 +5327,8 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -5207,39 +5336,51 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, $valtype_numtype(numtype)) + -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, $valtype_vectype(vectype)) + -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, $valtype_reftype(reftype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, $typeuse_deftype(deftype)) + -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -5247,6 +5388,8 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -5254,6 +5397,8 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -5261,11 +5406,14 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, $storagetype_valtype(valtype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, $storagetype_packtype(packtype)) + -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -5273,16 +5421,22 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -5291,10 +5445,14 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- if (|`comptype'*`| = |`x'**`|) + -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} -- if (|`comptype'*`| = |`x*`|) - -- if (|`comptype'*`| = |`x'**`|) -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) @@ -5305,16 +5463,27 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -5322,10 +5491,15 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- if (|`comptype'*`| = |`typeuse'**`|) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} -- if (|`comptype'*`| = |`typeuse*`|) - -- if (|`comptype'*`| = |`typeuse'**`|) -- (if ($unrollht(C, $heaptype_typeuse(typeuse)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5335,10 +5509,17 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) @@ -5347,6 +5528,9 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- wf_context: `%`(C) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) @@ -5356,17 +5540,26 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) @@ -5375,11 +5568,14 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) @@ -5389,10 +5585,16 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5400,48 +5602,76 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, $heaptype_deftype(deftype), STRUCT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, $heaptype_deftype(deftype), ARRAY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, $heaptype_deftype(deftype), FUNC_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) @@ -5449,43 +5679,71 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[j])) -- if (j < |typeuse*{typeuse <- `typeuse*`}|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5493,27 +5751,38 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) + -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) + -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} @@ -5522,11 +5791,15 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) + -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5534,11 +5807,17 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5548,6 +5827,9 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- if (|`lct*`| = |`x*`|) @@ -5559,11 +5841,16 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`($typeuse_deftype(deftype), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) @@ -5572,6 +5859,8 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} @@ -5580,6 +5869,9 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5588,6 +5880,8 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5595,6 +5889,8 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5602,6 +5898,8 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5610,26 +5908,37 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5638,6 +5947,11 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) @@ -5650,6 +5964,9 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5658,6 +5975,7 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5666,11 +5984,17 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -5679,6 +6003,9 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5686,6 +6013,9 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -5695,26 +6025,41 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5722,11 +6067,18 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5735,6 +6087,9 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -5743,6 +6098,9 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -5751,12 +6109,16 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) @@ -5764,16 +6126,22 @@ relation Catch_ok: `%|-%:OK`(context, catch) def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I32_valtype) = ?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I64_valtype) = ?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) + -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F32_valtype) = ?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) + -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F64_valtype) = ?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) + -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(V128_valtype) = ?(VCONST_val(V128_vectype, `%`_vec_(0))) + -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -5782,6 +6150,7 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5797,25 +6166,41 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = $valtype_numtype(numtype)) \/ (t' = $valtype_vectype(vectype))) @@ -5823,18 +6208,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5842,6 +6244,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5849,12 +6255,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} -- if ($proj_uN_0(l').0 < |C.LABELS_context|) @@ -5864,6 +6276,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -5871,12 +6286,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -5887,6 +6309,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -5897,18 +6323,32 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -5918,12 +6358,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) @@ -5933,6 +6383,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) @@ -5942,6 +6398,14 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -5954,6 +6418,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5961,11 +6430,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} @@ -5973,11 +6451,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref.null{C : context, ht : heaptype}: `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (|C.REFS_context| > 0) @@ -5986,24 +6470,39 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref.i31{C : context}: `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref.is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref.as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref.eq{C : context}: `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.TEST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6011,6 +6510,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.CAST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6018,16 +6520,27 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31.get{C : context, sx : sx}: `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} @@ -6035,6 +6548,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) @@ -6044,6 +6562,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.SET_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) @@ -6052,12 +6575,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) @@ -6065,12 +6596,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6079,6 +6618,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) @@ -6088,6 +6631,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6095,22 +6642,38 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array.set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array.len{C : context}: `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.LEN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array.fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) @@ -6120,6 +6683,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6128,6 +6695,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) @@ -6137,76 +6708,127 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local.get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local.set{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local.tee{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global.set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([I32_valtype]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) @@ -6216,6 +6838,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6225,30 +6852,51 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem.drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(ELEM.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) @@ -6257,6 +6905,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) @@ -6265,12 +6917,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data.drop{C : context, x : idx}: `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DATA.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6278,6 +6937,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6285,6 +6948,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6292,6 +6959,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6299,6 +6970,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6306,6 +6981,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) @@ -6313,6 +6992,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6320,6 +7003,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6327,6 +7014,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6335,6 +7026,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6342,6 +7037,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6350,129 +7049,223 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (|`init*`| = |`t*`|) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (|`init*`| = |`x_1*`|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} @@ -6481,6 +7274,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -6488,6 +7285,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) } @@ -6497,6 +7298,9 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6504,6 +7308,7 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6511,60 +7316,92 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.null{C : context, ht : heaptype}: `%|-%CONST`(C, REF.NULL_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: `%|-%CONST`(C, REF.I31_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.func{C : context, x : idx}: `%|-%CONST`(C, REF.FUNC_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct.new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array.new_fixed{C : context, x : idx, n : n}: `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern.convert_any{C : context}: `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global.get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL.GET_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr($numtype_addrtype(Inn), binop)) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr($numtype_addrtype(Inn), binop)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -6573,6 +7410,8 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6580,6 +7419,9 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) @@ -6588,6 +7430,9 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) @@ -6597,6 +7442,8 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + -- wf_context: `%`(C) + -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6604,6 +7451,9 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) @@ -6613,6 +7463,8 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6620,6 +7472,9 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(rt)) @@ -6629,11 +7484,17 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6642,6 +7503,10 @@ relation Func_ok: `%|-%:%`(context, func, deftype) rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} @@ -6652,10 +7517,15 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) @@ -6665,6 +7535,8 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6672,14 +7544,24 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6690,6 +7572,8 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(elemtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) @@ -6699,6 +7583,9 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) @@ -6707,6 +7594,8 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + -- wf_context: `%`(C) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6714,30 +7603,45 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) @@ -6746,6 +7650,9 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6756,10 +7663,16 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } @@ -6772,10 +7685,13 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } @@ -6798,12 +7714,23 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) + -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) -- if (|`import*`| = |`xt_I*`|) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} @@ -6993,16 +7920,22 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) + -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) + -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) + -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) + -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) + -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) + -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7031,6 +7964,7 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -7050,23 +7984,28 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) + -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7074,6 +8013,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7081,6 +8021,7 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7088,10 +8029,12 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7120,15 +8063,19 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7179,49 +8126,61 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -7335,16 +8294,22 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) + -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) + -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) + -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) + -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7360,8 +8325,10 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -7375,8 +8342,10 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) + -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) + -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7392,134 +8361,196 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -7583,83 +8614,119 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))] + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))] + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))] + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))] + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -7877,28 +8944,42 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -7906,10 +8987,16 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} @@ -7917,21 +9004,37 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7940,21 +9043,37 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -7963,21 +9082,33 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7986,11 +9117,17 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} @@ -7999,24 +9136,36 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -8026,12 +9175,18 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3) {c_3, `c_3*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3) {c_3, `c_3*`} @@ -8041,18 +9196,30 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} @@ -8060,10 +9227,16 @@ def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`} {c, `c*`} @@ -8071,21 +9244,33 @@ def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8094,21 +9279,33 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8117,12 +9314,20 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} -- if ($isize(Inn) = $fsize(F32_Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} @@ -8132,18 +9337,30 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -8151,18 +9368,30 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} @@ -8170,18 +9399,34 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) @@ -8189,21 +9434,37 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} @@ -8212,21 +9473,37 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} @@ -8256,520 +9533,741 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I32_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I64_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I8_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vtestop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I16_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} @@ -8779,48 +10277,70 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8828,6 +10348,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8835,6 +10362,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8842,6 +10376,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8849,6 +10390,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8856,6 +10404,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8863,6 +10418,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8870,6 +10432,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8877,6 +10446,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8884,6 +10460,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8891,6 +10474,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8898,6 +10488,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8905,6 +10502,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8912,6 +10516,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8919,6 +10530,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8926,6 +10544,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -8936,87 +10561,169 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} @@ -9025,53 +10732,96 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9079,6 +10829,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9086,6 +10843,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9093,6 +10857,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9100,6 +10871,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9107,6 +10885,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9114,6 +10899,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9121,6 +10913,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9128,6 +10927,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9135,6 +10941,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9142,6 +10955,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9149,6 +10969,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9156,6 +10983,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9163,6 +10997,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9170,6 +11011,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9177,6 +11025,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} @@ -9192,105 +11047,307 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9298,6 +11355,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9305,6 +11372,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9312,6 +11389,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9319,6 +11406,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9326,6 +11423,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9333,6 +11440,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9340,6 +11457,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9347,6 +11474,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9354,6 +11491,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9361,6 +11508,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9368,6 +11525,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9375,6 +11542,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9382,6 +11559,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9389,6 +11576,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9396,6 +11593,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where M = (2 * M_2) {M} -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9861,8 +12068,10 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{val : val}(I32_storagetype, val) = $fieldval_val(val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)) + -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)) + -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -10008,8 +12217,10 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{numtype : numtype, num_ : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -10195,71 +12406,87 @@ def $local(state : state, localidx : localidx) : val? def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f) + -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f) + -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) @@ -10270,6 +12497,9 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) @@ -10281,12 +12511,16 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -10296,48 +12530,80 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.I31_NUM_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.EXTERN_ref(addrref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, $ref_addrref(addrref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -10347,16 +12613,23 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, $val_num(num), $valtype_numtype(nt)) + -- wf_store: `%`(s) + -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, $val_vec(vec), $valtype_vectype(vt)) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, $val_ref(ref), $valtype_reftype(rt)) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -10367,36 +12640,50 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -10436,6 +12723,12 @@ relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10443,66 +12736,96 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([$instr_val(val) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_1)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_2)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if ($proj_uN_0(l).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if ($proj_uN_0(l).0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) @@ -10511,296 +12834,491 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [$instr_val(val)]) -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], [$instr_val(val) BR_instr(l)]) -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`($instr_val(val)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: `%~>%`([$instr_val(val) LOCAL.TEE_instr(x)], [$instr_val(val) $instr_val(val) LOCAL.SET_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instr: `%`(LOCAL.SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.AS_NON_NULL_instr], [TRAP_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(REF.NULL_ref(ht)) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.AS_NON_NULL_instr], [$instr_ref(ref)]) -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(REF.I31_NUM_instr(i)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: `%~>%`([$instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], $instr_val(val)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: `%~>%`([$instr_addrref(addrref) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`{ht : heaptype}: `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [$instr_addrref(addrref)]) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) -- if ($unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) -- if ($binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(128, `%`_uN(0)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if ($proj_num__0(i) =/= ?()) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) -- if ($proj_num__0(c_2) =/= ?()) -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)|) @@ -10809,46 +13327,77 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) @@ -10857,14 +13406,57 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_throw_ref-handler-next`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) @@ -10873,6 +13465,8 @@ relation `Step_read_before_table.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -10882,12 +13476,15 @@ relation `Step_read_before_table.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -10897,6 +13494,8 @@ relation `Step_read_before_table.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) @@ -10906,6 +13505,8 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) @@ -10914,6 +13515,8 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -10923,12 +13526,15 @@ relation `Step_read_before_memory.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -10938,6 +13544,8 @@ relation `Step_read_before_memory.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) @@ -10947,6 +13555,10 @@ relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -10955,6 +13567,9 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -10963,6 +13578,8 @@ relation `Step_read_before_array.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -10972,6 +13589,8 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -10979,6 +13598,8 @@ relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -10988,12 +13609,15 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -11001,6 +13625,8 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -11010,21 +13636,36 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) -- if ($proj_num__0(i_1) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) -- if ($proj_num__0(i_2) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -11032,6 +13673,8 @@ relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -11041,12 +13684,16 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11056,6 +13703,9 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -11063,6 +13713,8 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11072,12 +13724,16 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -11085,6 +13741,8 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11094,49 +13752,75 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) -- if (a < |$funcinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) -- if (a < |$funcinst(z)|) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) @@ -11147,51 +13831,81 @@ relation Step_read: `%~>%`(config, instr*) rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) -- if (a < |$funcinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) -- if (a < |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) @@ -11200,6 +13914,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) -- if (a < |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) @@ -11208,36 +13926,50 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr, x : idx, `val*` : val*, x : idx, `val*` : val*}: + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- if (((($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0]) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) \/ ($exninst(z)[a].TAG_exninst =/= $tagaddr(z)[$proj_uN_0(x).0])) \/ (val*{val <- `val*`} =/= $exninst(z)[a].FIELDS_exninst)) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [$instr_val(val)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [$instr_val(val)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) @@ -11246,16 +13978,22 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) @@ -11264,6 +14002,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11271,10 +14010,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) @@ -11285,6 +14032,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11293,6 +14041,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11301,10 +14058,21 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) @@ -11315,6 +14083,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11324,52 +14093,77 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) @@ -11392,12 +14192,17 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_uN: `%%`(N, j) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) @@ -11405,12 +14210,18 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) @@ -11420,12 +14231,17 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) @@ -11434,6 +14250,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11441,10 +14258,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) @@ -11455,6 +14280,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11463,6 +14289,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11471,10 +14306,21 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) @@ -11485,6 +14331,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11494,41 +14341,68 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr($heaptype_deftype($type(z, x)))]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) + -- wf_instr: `%`(REF.NULL_instr($heaptype_deftype($type(z, x)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)]), [$instr_ref(ref)]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), $instr_val(val)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} @@ -11536,6 +14410,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -11543,29 +14419,43 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) -- if (a < |$structinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), $instr_val(val)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), $instr_ref(ref)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -11574,6 +14464,10 @@ relation Step_read: `%~>%`(config, instr*) rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) -- (if ($cunpack(zt) =/= ?()))^n{c <- `c*`} + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -11581,10 +14475,14 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11595,24 +14493,34 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) -- if (a < |$arrayinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11623,6 +14531,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11631,18 +14540,31 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -11650,6 +14572,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -11662,6 +14586,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11672,6 +14597,18 @@ relation Step_read: `%~>%`(config, instr*) -- if (a_2 < |$arrayinst(z)|) -- if (a_1 < |$arrayinst(z)|) -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) @@ -11680,6 +14617,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) @@ -11687,10 +14636,14 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11698,6 +14651,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) @@ -11708,6 +14663,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ((($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11717,16 +14673,29 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_ref: `%`(ref) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11734,6 +14703,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) @@ -11741,6 +14713,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- if (n = 0) @@ -11750,6 +14723,16 @@ relation Step_read: `%~>%`(config, instr*) -- if ($cunpack(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) + -- wf_lit_: `%%`(zt, c) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -11762,48 +14745,74 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [$instr_val(val) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) LOCAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global.set{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [$instr_val(val) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) GLOBAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) @@ -11811,25 +14820,35 @@ relation Step: `%~>%`(config, config) rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -11837,11 +14856,15 @@ relation Step: `%~>%`(config, config) rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -11849,12 +14872,16 @@ relation Step: `%~>%`(config, config) rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) @@ -11862,11 +14889,15 @@ relation Step: `%~>%`(config, config) rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) @@ -11874,29 +14905,42 @@ relation Step: `%~>%`(config, config) rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) - -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) + -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) @@ -11904,26 +14948,39 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) $instr_val(val) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) @@ -11932,6 +14989,9 @@ relation Step: `%~>%`(config, config) rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -11943,10 +15003,14 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } @@ -11956,6 +15020,8 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`})) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11967,6 +15033,7 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- wf_uN: `%%`(32, x) -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), $typeuse_deftype(deftype')*{deftype' <- `deftype'*`})) @@ -11977,6 +15044,8 @@ def $alloctypes(type*) : deftype* def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11988,6 +15057,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } @@ -11996,6 +15067,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12007,6 +15080,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } @@ -12015,6 +15090,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12026,6 +15103,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } @@ -12034,6 +15113,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12045,6 +15126,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } @@ -12053,6 +15136,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12064,6 +15149,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } @@ -12072,6 +15159,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12083,6 +15172,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } @@ -12091,6 +15182,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12102,6 +15195,8 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } @@ -12110,14 +15205,19 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -12128,6 +15228,24 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + -- wf_store: `%`(s_7) + -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`(s_1) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_3) + -- wf_store: `%`(s_4) + -- wf_store: `%`(s_5) + -- wf_store: `%`(s_6) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} @@ -12159,6 +15277,10 @@ def $rundata_(dataidx : dataidx, data : data) : instr* def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) + -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -12166,8 +15288,13 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(TABLE.INIT_instr(y, x)) + -- wf_instr: `%`(ELEM.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12178,6 +15305,11 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) + -- wf_state: `%`(z') + -- wf_val: `%`(val) + -- (wf_val: `%`(val'))*{val' <- `val'*`} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- where `%;%`_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, val) {a, s'} @@ -12188,6 +15320,24 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- wf_state: `%`(z) + -- wf_state: `%`(z') + -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} + -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} + -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} + -- (wf_start: `%`(START_start(x)))?{x <- `x?`} + -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} + -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} + -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} @@ -12210,6 +15360,8 @@ def $instantiate(store : store, module : module, externaddr*) : config def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -14306,6 +17458,7 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) } @@ -14315,6 +17468,8 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I) + -- wf_idctxt: `%`(I) + -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) @@ -16233,16 +19388,27 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32.add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global.get{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -16252,14 +19418,23 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -16298,6 +19473,8 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) {a', `a'*`, s_2} } diff --git a/spectec/test-middlend/specification.exp/13-improve-ids.il b/spectec/test-middlend/specification.exp/13-improve-ids.il index 732fbb5f79..ecff133c68 100644 --- a/spectec/test-middlend/specification.exp/13-improve-ids.il +++ b/spectec/test-middlend/specification.exp/13-improve-ids.il @@ -317,16 +317,19 @@ syntax f64 = fN def $fzero(v_N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{v_N : nat}(v_N) = POS_fN(SUBNORM_fNmag(0)) + -- wf_fN: `%%`(v_N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(v_N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{v_N : nat, v_n : nat}(v_N, v_n) = POS_fN(NORM_fNmag(v_n, (0 : nat <:> int))) + -- wf_fN: `%%`(v_N, POS_fN(NORM_fNmag(v_n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(v_N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{v_N : nat}(v_N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + -- wf_fN: `%%`(v_N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(v_N : N) : nat @@ -380,18 +383,29 @@ def $utf8(var_0 : char*) : byte* def $utf8{ch_lst : char*}(ch_lst) = $concat_(syntax byte, $utf8([ch])*{ch <- ch_lst}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 def $utf8{ch : char, b : byte}([ch]) = [b] + -- wf_byte: `%`(b) + -- wf_byte: `%`(mk_byte_byte($proj_char_0(ch).0)) -- if ($proj_char_0(ch).0 < 128) -- where b = mk_byte_byte($proj_char_0(ch).0) {b} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) + -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } @@ -585,6 +599,7 @@ relation wf_free: `%`(free) def $free_opt(var_0 : free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{v_free : free}(?(v_free)) = v_free @@ -595,6 +610,7 @@ rec { def $free_list(var_0 : free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{v_free : free, free'_lst : free*}([v_free] ++ free'_lst) = v_free +++ $free_list(free'_lst) } @@ -603,46 +619,55 @@ def $free_list(var_0 : free*) : free def $free_typeidx(v_typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{v_typeidx : uN}(v_typeidx) = {TYPES [v_typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [v_typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(v_funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{v_funcidx : uN}(v_funcidx) = {TYPES [], FUNCS [v_funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [v_funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(v_globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{v_globalidx : uN}(v_globalidx) = {TYPES [], FUNCS [], GLOBALS [v_globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [v_globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(v_tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{v_tableidx : uN}(v_tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [v_tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [v_tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(v_memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{v_memidx : uN}(v_memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [v_memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [v_memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(v_elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{v_elemidx : uN}(v_elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [v_elemidx], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [v_elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(v_dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{v_dataidx : uN}(v_dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [v_dataidx], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [v_dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(v_localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{v_localidx : uN}(v_localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [v_localidx], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [v_localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(v_labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{v_labelidx : uN}(v_labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [v_labelidx]} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [v_labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(v_externidx : externidx) : free @@ -808,6 +833,13 @@ def $valtype_addrtype(var_0 : addrtype) : valtype def $valtype_addrtype(I32_addrtype) = I32_valtype def $valtype_addrtype(I64_addrtype) = I64_valtype +def $storagetype_consttype(var_0 : consttype) : storagetype + def $storagetype_consttype(I32_consttype) = I32_storagetype + def $storagetype_consttype(I64_consttype) = I64_storagetype + def $storagetype_consttype(F32_consttype) = F32_storagetype + def $storagetype_consttype(F64_consttype) = F64_storagetype + def $storagetype_consttype(V128_consttype) = V128_storagetype + def $storagetype_numtype(var_0 : numtype) : storagetype def $storagetype_numtype(I32_numtype) = I32_storagetype def $storagetype_numtype(I64_numtype) = I64_storagetype @@ -1100,61 +1132,73 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1523,8 +1567,10 @@ def $unpack(v_storagetype : storagetype) : valtype def $unpack(I32_storagetype) = I32_valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I8_storagetype) = I32_valtype + -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I16_storagetype) = I32_valtype + -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(v_storagetype : storagetype) : numtype? @@ -1587,8 +1633,10 @@ def $minat(v_addrtype : addrtype, v_addrtype_0 : addrtype) : addrtype def $diffrt(v_reftype : reftype, v_reftype_0 : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{null_1_opt : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1_opt, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{null_1_opt : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1_opt, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1_opt, ht_1) + -- wf_reftype: `%`(REF_reftype(null_1_opt, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(v_typeuse : typeuse) : deftype @@ -1682,6 +1730,9 @@ def $minus_recs(var_0 : typevar*, var_1 : typeuse*) : (typevar*, typeuse*) def $minus_recs{v_n : nat, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*}([REC_typevar(v_n)] ++ tv_lst, [tu_1] ++ tu_lst) = $minus_recs(tv_lst, tu_lst) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*, tv'_lst : typevar*, tu'_lst : typeuse*}([_IDX_typevar(x)] ++ tv_lst, [tu_1] ++ tu_lst) = ([_IDX_typevar(x)] ++ tv'_lst, [tu_1] ++ tu'_lst) + -- (wf_typevar: `%`(tv'))*{tv' <- tv'_lst} + -- (wf_typeuse: `%`(tu'))*{tu' <- tu'_lst} + -- wf_typevar: `%`(_IDX_typevar(x)) -- where (tv'_lst, tu'_lst) = $minus_recs(tv_lst, tu_lst) {tu'_lst, tv'_lst} } @@ -1727,6 +1778,7 @@ def $subst_heaptype(v_heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*) : def $subst_reftype(v_reftype : reftype, var_0 : typevar*, var_1 : typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{null_opt : null?, ht : heaptype, tv_lst : typevar*, tu_lst : typeuse*}(REF_reftype(null_opt, ht), tv_lst, tu_lst) = REF_reftype(null_opt, $subst_heaptype(ht, tv_lst, tu_lst)) + -- wf_reftype: `%`(REF_reftype(null_opt, $subst_heaptype(ht, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(v_valtype : valtype, var_0 : typevar*, var_1 : typeuse*) : valtype @@ -1744,6 +1796,7 @@ def $subst_valtype(v_valtype : valtype, var_0 : typevar*, var_1 : typeuse*) : va def $subst_valtype{null_opt : null?, v_heaptype : heaptype, tv_lst : typevar*, tu_lst : typeuse*}(REF_valtype(null_opt, v_heaptype), tv_lst, tu_lst) = $valtype_reftype($subst_reftype(REF_reftype(null_opt, v_heaptype), tv_lst, tu_lst)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{tv_lst : typevar*, tu_lst : typeuse*}(BOT_valtype, tv_lst, tu_lst) = BOT_valtype + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(v_storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*) : storagetype @@ -1770,25 +1823,32 @@ def $subst_storagetype(v_storagetype : storagetype, var_0 : typevar*, var_1 : ty def $subst_fieldtype(v_fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{mut_opt : mut?, zt : storagetype, tv_lst : typevar*, tu_lst : typeuse*}(mk_fieldtype_fieldtype(mut_opt, zt), tv_lst, tu_lst) = mk_fieldtype_fieldtype(mut_opt, $subst_storagetype(zt, tv_lst, tu_lst)) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(mut_opt, $subst_storagetype(zt, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(v_comptype : comptype, var_0 : typevar*, var_1 : typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{ft_lst : fieldtype*, tv_lst : typevar*, tu_lst : typeuse*}(STRUCT_comptype(mk_list_list(ft_lst)), tv_lst, tu_lst) = STRUCT_comptype(mk_list_list($subst_fieldtype(ft, tv_lst, tu_lst)*{ft <- ft_lst})) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list($subst_fieldtype(ft, tv_lst, tu_lst)*{ft <- ft_lst}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, tv_lst : typevar*, tu_lst : typeuse*}(ARRAY_comptype(ft), tv_lst, tu_lst) = ARRAY_comptype($subst_fieldtype(ft, tv_lst, tu_lst)) + -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{t_1_lst : valtype*, t_2_lst : valtype*, tv_lst : typevar*, tu_lst : typeuse*}(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)), tv_lst, tu_lst) = FUNC_comptype(mk_list_resulttype($subst_valtype(t_1, tv_lst, tu_lst)*{t_1 <- t_1_lst}), mk_list_resulttype($subst_valtype(t_2, tv_lst, tu_lst)*{t_2 <- t_2_lst})) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype($subst_valtype(t_1, tv_lst, tu_lst)*{t_1 <- t_1_lst}), mk_list_resulttype($subst_valtype(t_2, tv_lst, tu_lst)*{t_2 <- t_2_lst}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(v_subtype : subtype, var_0 : typevar*, var_1 : typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{final_opt : final?, tu'_lst : typeuse*, ct : comptype, tv_lst : typevar*, tu_lst : typeuse*}(SUB_subtype(final_opt, tu'_lst, ct), tv_lst, tu_lst) = SUB_subtype(final_opt, $subst_typeuse(tu', tv_lst, tu_lst)*{tu' <- tu'_lst}, $subst_comptype(ct, tv_lst, tu_lst)) + -- wf_subtype: `%`(SUB_subtype(final_opt, $subst_typeuse(tu', tv_lst, tu_lst)*{tu' <- tu'_lst}, $subst_comptype(ct, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(v_rectype : rectype, var_0 : typevar*, var_1 : typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{st_lst : subtype*, tv_lst : typevar*, tu_lst : typeuse*, tv'_lst : typevar*, tu'_lst : typeuse*}(REC_rectype(mk_list_list(st_lst)), tv_lst, tu_lst) = REC_rectype(mk_list_list($subst_subtype(st, tv'_lst, tu'_lst)*{st <- st_lst})) + -- (wf_typevar: `%`(tv'))*{tv' <- tv'_lst} + -- (wf_typeuse: `%`(tu'))*{tu' <- tu'_lst} -- where (tv'_lst, tu'_lst) = $minus_recs(tv_lst, tu_lst) {tu'_lst, tv'_lst} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1811,79 +1871,97 @@ def $subst_tagtype(v_tagtype : tagtype, var_0 : typevar*, var_1 : typeuse*) : ta def $subst_globaltype(v_globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{mut_opt : mut?, t : valtype, tv_lst : typevar*, tu_lst : typeuse*}(mk_globaltype_globaltype(mut_opt, t), tv_lst, tu_lst) = mk_globaltype_globaltype(mut_opt, $subst_valtype(t, tv_lst, tu_lst)) + -- wf_globaltype: `%`(mk_globaltype_globaltype(mut_opt, $subst_valtype(t, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(v_memtype : memtype, var_0 : typevar*, var_1 : typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, tv_lst : typevar*, tu_lst : typeuse*}(`%%PAGE`_memtype(at, lim), tv_lst, tu_lst) = `%%PAGE`_memtype(at, lim) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(v_tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, tv_lst : typevar*, tu_lst : typeuse*}(mk_tabletype_tabletype(at, lim, rt), tv_lst, tu_lst) = mk_tabletype_tabletype(at, lim, $subst_reftype(rt, tv_lst, tu_lst)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, $subst_reftype(rt, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(v_externtype : externtype, var_0 : typevar*, var_1 : typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, tv_lst : typevar*, tu_lst : typeuse*}(TAG_externtype(jt), tv_lst, tu_lst) = TAG_externtype($subst_tagtype(jt, tv_lst, tu_lst)) + -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, tv_lst : typevar*, tu_lst : typeuse*}(GLOBAL_externtype(gt), tv_lst, tu_lst) = GLOBAL_externtype($subst_globaltype(gt, tv_lst, tu_lst)) + -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, tv_lst : typevar*, tu_lst : typeuse*}(TABLE_externtype(tt), tv_lst, tu_lst) = TABLE_externtype($subst_tabletype(tt, tv_lst, tu_lst)) + -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, tv_lst : typevar*, tu_lst : typeuse*}(MEM_externtype(mt), tv_lst, tu_lst) = MEM_externtype($subst_memtype(mt, tv_lst, tu_lst)) + -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{v_rectype : rectype, v_n : n, tv_lst : typevar*, tu_lst : typeuse*}(FUNC_externtype(_DEF_typeuse(v_rectype, v_n)), tv_lst, tu_lst) = FUNC_externtype($typeuse_deftype($subst_deftype(_DEF_deftype(v_rectype, v_n), tv_lst, tu_lst))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype($subst_deftype(_DEF_deftype(v_rectype, v_n), tv_lst, tu_lst)))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(v_moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{xt_1_lst : externtype*, xt_2_lst : externtype*, tv_lst : typevar*, tu_lst : typeuse*}(mk_moduletype_moduletype(xt_1_lst, xt_2_lst), tv_lst, tu_lst) = mk_moduletype_moduletype($subst_externtype(xt_1, tv_lst, tu_lst)*{xt_1 <- xt_1_lst}, $subst_externtype(xt_2, tv_lst, tu_lst)*{xt_2 <- xt_2_lst}) + -- wf_moduletype: `%`(mk_moduletype_moduletype($subst_externtype(xt_1, tv_lst, tu_lst)*{xt_1 <- xt_1_lst}, $subst_externtype(xt_2, tv_lst, tu_lst)*{xt_2 <- xt_2_lst})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(v_valtype : valtype, var_0 : typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, tu_lst : typeuse*, v_n : nat, i_lst : nat*}(t, tu_lst) = $subst_valtype(t, _IDX_typevar(mk_uN_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'_lst) + -- wf_uN: `%%`(32, mk_uN_uN(((($proj_uN_0(v_labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4488,10 +4588,13 @@ rec { def $free_instr(v_instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 def $free_instr{valtype_lst_opt : valtype*?}(SELECT_instr(valtype_lst_opt)) = $free_opt($free_list($free_valtype(v_valtype)*{v_valtype <- valtype_lst})?{valtype_lst <- valtype_lst_opt}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 @@ -4522,6 +4625,7 @@ def $free_instr(v_instr : instr) : free def $free_instr{v_tableidx : uN, v_typeuse : typeuse}(CALL_INDIRECT_instr(v_tableidx, v_typeuse)) = $free_tableidx(v_tableidx) +++ $free_typeuse(v_typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 def $free_instr{v_funcidx : uN}(RETURN_CALL_instr(v_funcidx)) = $free_funcidx(v_funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 @@ -4588,10 +4692,13 @@ def $free_instr(v_instr : instr) : free def $free_instr{v_heaptype : heaptype}(REF_NULL_instr(v_heaptype)) = $free_heaptype(v_heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 def $free_instr(REF_IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 def $free_instr(REF_AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 def $free_instr(REF_EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 def $free_instr{v_reftype : reftype}(REF_TEST_instr(v_reftype)) = $free_reftype(v_reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 @@ -4600,10 +4707,13 @@ def $free_instr(v_instr : instr) : free def $free_instr{v_funcidx : uN}(REF_FUNC_instr(v_funcidx)) = $free_funcidx(v_funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 def $free_instr(REF_I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 def $free_instr{v_sx : sx}(I31_GET_instr(v_sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 def $free_instr{v_typeidx : uN}(STRUCT_NEW_instr(v_typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 def $free_instr{v_typeidx : uN}(STRUCT_NEW_DEFAULT_instr(v_typeidx)) = $free_typeidx(v_typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 @@ -4626,6 +4736,7 @@ def $free_instr(v_instr : instr) : free def $free_instr{v_typeidx : uN}(ARRAY_SET_instr(v_typeidx)) = $free_typeidx(v_typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 def $free_instr(ARRAY_LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 def $free_instr{v_typeidx : uN}(ARRAY_FILL_instr(v_typeidx)) = $free_typeidx(v_typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 @@ -4636,8 +4747,10 @@ def $free_instr(v_instr : instr) : free def $free_instr{v_typeidx : uN, v_elemidx : uN}(ARRAY_INIT_ELEM_instr(v_typeidx, v_elemidx)) = $free_typeidx(v_typeidx) +++ $free_elemidx(v_elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 def $free_instr(EXTERN_CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 def $free_instr(ANY_CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 def $free_instr{v_localidx : uN}(LOCAL_GET_instr(v_localidx)) = $free_localidx(v_localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 @@ -4693,6 +4806,7 @@ def $free_instr(v_instr : instr) : free def $free_block(var_0 : instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{instr_lst : instr*, v_free : free}(instr_lst) = v_free[LABELS_free = $shift_labelidxs(v_free.LABELS_free)] + -- wf_free: `%`(v_free) -- where v_free = $free_list($free_instr(v_instr)*{v_instr <- instr_lst}) {v_free} } @@ -4936,6 +5050,7 @@ def $free_datamode(v_datamode : datamode) : free def $free_datamode{v_memidx : uN, v_expr : instr*}(ACTIVE_datamode(v_memidx, v_expr)) = $free_memidx(v_memidx) +++ $free_expr(v_expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(v_data : data) : free @@ -4948,8 +5063,10 @@ def $free_elemmode(v_elemmode : elemmode) : free def $free_elemmode{v_tableidx : uN, v_expr : instr*}(ACTIVE_elemmode(v_tableidx, v_expr)) = $free_tableidx(v_tableidx) +++ $free_expr(v_expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(v_elem : elem) : free @@ -5103,12 +5220,14 @@ relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Numtype_ok{C : context, v_numtype : numtype}: `%|-%:OK`(C, v_numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Vectype_ok{C : context, v_vectype : vectype}: `%|-%:OK`(C, v_vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5137,24 +5256,28 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Packtype_ok{C : context, v_packtype : packtype}: `%|-%:OK`(C, v_packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Packtype_sub{C : context, v_packtype : packtype}: `%|-%<:%`(C, v_packtype, v_packtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Numtype_sub{C : context, v_numtype : numtype}: `%|-%<:%`(C, v_numtype, v_numtype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Expand{v_deftype : deftype, v_comptype : comptype}: `%~~%`(v_deftype, v_comptype) + -- wf_comptype: `%`(v_comptype) -- if ($expanddt(v_deftype) = v_comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5162,6 +5285,7 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Vectype_sub{C : context, v_vectype : vectype}: `%|-%<:%`(C, v_vectype, v_vectype) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(v_typeuse : typeuse, v_typeidx : typeidx, nat : nat) : bool @@ -5189,10 +5313,13 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, v_absheaptype : absheaptype}: `%|-%:OK`(C, $heaptype_absheaptype(v_absheaptype)) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, v_typeuse : typeuse}: `%|-%:OK`(C, $heaptype_typeuse(v_typeuse)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(v_typeuse) -- Typeuse_ok: `%|-%:OK`(C, v_typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 @@ -5200,6 +5327,8 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 rule mk_Reftype_ok{C : context, v_heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), v_heaptype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), v_heaptype)) -- Heaptype_ok: `%|-%:OK`(C, v_heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -5207,39 +5336,51 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, v_numtype : numtype}: `%|-%:OK`(C, $valtype_numtype(v_numtype)) + -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, v_numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, v_vectype : vectype}: `%|-%:OK`(C, $valtype_vectype(v_vectype)) + -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, v_vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, v_reftype : reftype}: `%|-%:OK`(C, $valtype_reftype(v_reftype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(v_reftype) -- Reftype_ok: `%|-%:OK`(C, v_reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 rule typeidx{C : context, v_typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(v_typeidx)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(v_typeidx)) -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(v_typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, v_deftype : deftype}: `%|-%:OK`(C, $typeuse_deftype(v_deftype)) + -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, v_deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 @@ -5247,6 +5388,8 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 rule mk_Resulttype_ok{C : context, t_lst : valtype*}: `%|-%:OK`(C, mk_list_resulttype(t_lst)) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- t_lst} -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- t_lst} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 @@ -5254,6 +5397,8 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 rule mk_Fieldtype_ok{C : context, v_storagetype : storagetype}: `%|-%:OK`(C, mk_fieldtype_fieldtype(?(MUT_mut), v_storagetype)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(MUT_mut), v_storagetype)) -- Storagetype_ok: `%|-%:OK`(C, v_storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -5261,11 +5406,14 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, v_valtype : valtype}: `%|-%:OK`(C, $storagetype_valtype(v_valtype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(v_valtype) -- Valtype_ok: `%|-%:OK`(C, v_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, v_packtype : packtype}: `%|-%:OK`(C, $storagetype_packtype(v_packtype)) + -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, v_packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 @@ -5273,16 +5421,22 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 rule struct{C : context, fieldtype_lst : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(mk_list_list(fieldtype_lst))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(fieldtype_lst))) -- (Fieldtype_ok: `%|-%:OK`(C, v_fieldtype))*{v_fieldtype <- fieldtype_lst} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 rule array{C : context, v_fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(v_fieldtype)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(v_fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, v_fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 rule func{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:OK`(C, FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_1_lst)) -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_2_lst)) @@ -5291,10 +5445,14 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule mk_Subtype_ok{C : context, x_lst : idx*, v_comptype : comptype, x_0 : idx, x'_lst_lst : idx**, comptype'_lst : comptype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- x_lst}, v_comptype), OK_oktypeidx(x_0)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- x_lst}, v_comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- if (|comptype'_lst| = |x'_lst_lst|) + -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- x'_lst}, comptype')))*{comptype' <- comptype'_lst, x'_lst <- x'_lst_lst} -- if (|x_lst| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- x_lst} -- if (|comptype'_lst| = |x_lst|) - -- if (|comptype'_lst| = |x'_lst_lst|) -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- x_lst} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- x'_lst}, comptype')))*{comptype' <- comptype'_lst, x <- x_lst, x'_lst <- x'_lst_lst} -- Comptype_ok: `%|-%:OK`(C, v_comptype) @@ -5305,16 +5463,27 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(mk_list_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 rule cons{C : context, subtype_1 : subtype, subtype_lst : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(mk_list_list([subtype_1] ++ subtype_lst)), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(v_subtype))*{v_subtype <- subtype_lst} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(mk_uN_typeidx(($proj_uN_0(x).0 + 1)))) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(mk_list_list(subtype_lst)), OK_oktypeidx(mk_uN_typeidx(($proj_uN_0(x).0 + 1)))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 rule _rec2{C : context, subtype_lst : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(mk_list_list(subtype_lst)), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_context: `%`({TYPES [], RECS subtype_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(mk_list_list(subtype_lst)), OK_oktypeidxnat(x, 0)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 @@ -5322,10 +5491,15 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule mk_Subtype_ok2{C : context, typeuse_lst : typeuse*, compttype : comptype, x : idx, i : nat, typeuse'_lst_lst : typeuse**, comptype'_lst : comptype*, v_comptype : comptype}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse_lst, compttype), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(v_comptype) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse_lst, compttype)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- if (|comptype'_lst| = |typeuse'_lst_lst|) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'_lst, comptype')))*{comptype' <- comptype'_lst, typeuse'_lst <- typeuse'_lst_lst} -- if (|typeuse_lst| <= 1) -- (if $before(v_typeuse, x, i))*{v_typeuse <- typeuse_lst} -- if (|comptype'_lst| = |typeuse_lst|) - -- if (|comptype'_lst| = |typeuse'_lst_lst|) -- (if ($unrollht(C, $heaptype_typeuse(v_typeuse)) = SUB_subtype(?(), typeuse'_lst, comptype')))*{comptype' <- comptype'_lst, v_typeuse <- typeuse_lst, typeuse'_lst <- typeuse'_lst_lst} -- Comptype_ok: `%|-%:OK`(C, v_comptype) -- (Comptype_sub: `%|-%<:%`(C, v_comptype, comptype'))*{comptype' <- comptype'_lst} @@ -5335,10 +5509,17 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 rule empty{C : context, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(mk_list_list([])), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 rule cons{C : context, subtype_1 : subtype, subtype_lst : subtype*, x : idx, i : nat}: `%|-%:%`(C, REC_rectype(mk_list_list([subtype_1] ++ subtype_lst)), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(v_subtype))*{v_subtype <- subtype_lst} + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(mk_uN_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(mk_list_list(subtype_lst)), OK_oktypeidxnat(mk_uN_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) @@ -5347,6 +5528,9 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 rule mk_Deftype_ok{C : context, v_rectype : rectype, i : n, x : idx, subtype_lst : subtype*, v_n : n}: `%|-%:OK`(C, _DEF_deftype(v_rectype, i)) + -- wf_context: `%`(C) + -- (wf_subtype: `%`(v_subtype))*{v_subtype <- subtype_lst} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, v_rectype, OK_oktypeidx(x)) -- if (v_rectype = REC_rectype(mk_list_list(subtype_lst))) -- if (i < v_n) @@ -5356,17 +5540,26 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 rule struct{C : context, ft_1_lst : fieldtype*, ft'_1_lst : fieldtype*, ft_2_lst : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(mk_list_list(ft_1_lst ++ ft'_1_lst)), STRUCT_comptype(mk_list_list(ft_2_lst))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_1_lst ++ ft'_1_lst))) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_2_lst))) -- if (|ft_1_lst| = |ft_2_lst|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- ft_1_lst, ft_2 <- ft_2_lst} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 rule func{C : context, t_11_lst : valtype*, t_12_lst : valtype*, t_21_lst : valtype*, t_22_lst : valtype*}: `%|-%<:%`(C, FUNC_comptype(mk_list_resulttype(t_11_lst), mk_list_resulttype(t_12_lst)), FUNC_comptype(mk_list_resulttype(t_21_lst), mk_list_resulttype(t_22_lst))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_11_lst), mk_list_resulttype(t_12_lst))) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_21_lst), mk_list_resulttype(t_22_lst))) -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_21_lst), mk_list_resulttype(t_11_lst)) -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_12_lst), mk_list_resulttype(t_22_lst)) @@ -5375,11 +5568,14 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, final_opt : final?, typeuse_lst : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(final_opt, typeuse_lst, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final_opt, typeuse_lst, ct)) -- if (i < |typeuse_lst|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse_lst[i]), $heaptype_deftype(deftype_2)) @@ -5389,10 +5585,16 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, v_heaptype : heaptype}: `%|-%<:%`(C, v_heaptype, v_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(v_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) @@ -5400,48 +5602,76 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule eq_any{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule i31_eq{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule struct_eq{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule array_eq{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, v_deftype : deftype, fieldtype_lst : fieldtype*}: `%|-%<:%`(C, $heaptype_deftype(v_deftype), STRUCT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(fieldtype_lst))) -- Expand: `%~~%`(v_deftype, STRUCT_comptype(mk_list_list(fieldtype_lst))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, v_deftype : deftype, v_fieldtype : fieldtype}: `%|-%<:%`(C, $heaptype_deftype(v_deftype), ARRAY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(v_fieldtype)) -- Expand: `%~~%`(v_deftype, ARRAY_comptype(v_fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, v_deftype : deftype, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%<:%`(C, $heaptype_deftype(v_deftype), FUNC_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- Expand: `%~~%`(v_deftype, FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule typeidx_l{C : context, v_typeidx : typeidx, v_heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(v_typeidx), v_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(v_heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(v_typeidx)) -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(v_typeidx).0]), v_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule typeidx_r{C : context, v_heaptype : heaptype, v_typeidx : typeidx}: `%|-%<:%`(C, v_heaptype, _IDX_heaptype(v_typeidx)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(v_heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(v_typeidx)) -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(v_typeidx).0])) @@ -5449,43 +5679,71 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) rule rec{C : context, i : n, typeuse_lst : typeuse*, j : nat, final_opt : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse_lst[j])) -- if (j < |typeuse_lst|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final_opt, typeuse_lst, ct)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final_opt, typeuse_lst, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 rule none{C : context, v_heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, v_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(v_heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 rule nofunc{C : context, v_heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, v_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(v_heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, FUNC_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 rule noexn{C : context, v_heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, v_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(v_heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, EXN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 rule noextern{C : context, v_heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, v_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(v_heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, EXTERN_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 rule bot{C : context, v_heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, v_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(v_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -5493,27 +5751,38 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) + -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) + -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, v_valtype : valtype}: `%|-%<:%`(C, BOT_valtype, v_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(v_valtype) + -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 rule mk_Resulttype_sub{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%<:%`(C, mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- t_1_lst} + -- (wf_valtype: `%`(t_2))*{t_2 <- t_2_lst} -- if (|t_1_lst| = |t_2_lst|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- t_1_lst, t_2 <- t_2_lst} @@ -5522,11 +5791,15 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) + -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 @@ -5534,11 +5807,17 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, mk_fieldtype_fieldtype(?(), zt_1), mk_fieldtype_fieldtype(?(), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, mk_fieldtype_fieldtype(?(MUT_mut), zt_1), mk_fieldtype_fieldtype(?(MUT_mut), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -5548,6 +5827,9 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Instrtype_ok{C : context, t_1_lst : valtype*, x_lst : idx*, t_2_lst : valtype*, lct_lst : localtype*}: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- lct_lst} + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_1_lst)) -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_2_lst)) -- if (|lct_lst| = |x_lst|) @@ -5559,11 +5841,16 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{v_deftype : deftype, C : context, v_comptype : comptype}: `%~~_%%`($typeuse_deftype(v_deftype), C, v_comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(v_comptype) -- Expand: `%~~%`(v_deftype, v_comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{v_typeidx : typeidx, C : context, v_comptype : comptype}: `%~~_%%`(_IDX_typeuse(v_typeidx), C, v_comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(v_comptype) + -- wf_typeuse: `%`(_IDX_typeuse(v_typeidx)) -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(v_typeidx).0], v_comptype) @@ -5572,6 +5859,8 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Limits_ok{C : context, v_n : n, m_opt : m?, k : nat}: `%|-%:%`(C, mk_limits_limits(mk_uN_u64(v_n), mk_uN_u64(v_m)?{v_m <- m_opt}), k) + -- wf_context: `%`(C) + -- wf_limits: `%`(mk_limits_limits(mk_uN_u64(v_n), mk_uN_u64(v_m)?{v_m <- m_opt})) -- if (v_n <= k) -- (if ((v_n <= v_m) /\ (v_m <= k)))?{v_m <- m_opt} @@ -5580,6 +5869,9 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Tagtype_ok{C : context, v_typeuse : typeuse, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:OK`(C, v_typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(v_typeuse) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- Typeuse_ok: `%|-%:OK`(C, v_typeuse) -- Expand_use: `%~~_%%`(v_typeuse, C, FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) @@ -5588,6 +5880,8 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Globaltype_ok{C : context, t : valtype}: `%|-%:OK`(C, mk_globaltype_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5595,6 +5889,8 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Memtype_ok{C : context, v_addrtype : addrtype, v_limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(v_addrtype, v_limits)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(v_addrtype, v_limits)) -- Limits_ok: `%|-%:%`(C, v_limits, (2 ^ 16)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5602,6 +5898,8 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Tabletype_ok{C : context, v_addrtype : addrtype, v_limits : limits, v_reftype : reftype}: `%|-%:OK`(C, mk_tabletype_tabletype(v_addrtype, v_limits, v_reftype)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(mk_tabletype_tabletype(v_addrtype, v_limits, v_reftype)) -- Limits_ok: `%|-%:%`(C, v_limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, v_reftype) @@ -5610,26 +5908,37 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule tag{C : context, v_tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(v_tagtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(v_tagtype)) -- Tagtype_ok: `%|-%:OK`(C, v_tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, v_globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(v_globaltype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(v_globaltype)) -- Globaltype_ok: `%|-%:OK`(C, v_globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, v_memtype : memtype}: `%|-%:OK`(C, MEM_externtype(v_memtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(v_memtype)) -- Memtype_ok: `%|-%:OK`(C, v_memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, v_tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(v_tabletype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(v_tabletype)) -- Tabletype_ok: `%|-%:OK`(C, v_tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, v_typeuse : typeuse, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:OK`(C, FUNC_externtype(v_typeuse)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(v_typeuse)) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- Typeuse_ok: `%|-%:OK`(C, v_typeuse) -- Expand_use: `%~~_%%`(v_typeuse, C, FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) @@ -5638,6 +5947,11 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Instrtype_sub{C : context, t_11_lst : valtype*, x_1_lst : idx*, t_12_lst : valtype*, t_21_lst : valtype*, x_2_lst : idx*, t_22_lst : valtype*, x_lst : idx*, t_lst : valtype*}: `%|-%<:%`(C, mk_instrtype_instrtype(mk_list_resulttype(t_11_lst), x_1_lst, mk_list_resulttype(t_12_lst)), mk_instrtype_instrtype(mk_list_resulttype(t_21_lst), x_2_lst, mk_list_resulttype(t_22_lst))) + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- x_lst} + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_11_lst), x_1_lst, mk_list_resulttype(t_12_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_21_lst), x_2_lst, mk_list_resulttype(t_22_lst))) + -- (wf_localtype: `%`(mk_localtype_localtype(SET_init, t)))*{t <- t_lst} -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_21_lst), mk_list_resulttype(t_11_lst)) -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_12_lst), mk_list_resulttype(t_22_lst)) -- if (x_lst = $setminus_(syntax localidx, x_2_lst, x_1_lst)) @@ -5650,6 +5964,9 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Limits_sub{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: `%|-%<:%`(C, mk_limits_limits(mk_uN_u64(n_1), ?(mk_uN_u64(m_1))), mk_limits_limits(mk_uN_u64(n_2), ?(mk_uN_u64(m_2)))) + -- wf_context: `%`(C) + -- wf_limits: `%`(mk_limits_limits(mk_uN_u64(n_1), ?(mk_uN_u64(m_1)))) + -- wf_limits: `%`(mk_limits_limits(mk_uN_u64(n_2), ?(mk_uN_u64(m_2)))) -- if (n_1 >= n_2) -- if (m_1 <= m_2) @@ -5658,6 +5975,7 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Tagtype_sub{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) + -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5666,11 +5984,17 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, mk_globaltype_globaltype(?(), valtype_1), mk_globaltype_globaltype(?(), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, mk_globaltype_globaltype(?(MUT_mut), valtype_1), mk_globaltype_globaltype(?(MUT_mut), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) @@ -5679,6 +6003,9 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Memtype_sub{C : context, v_addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(v_addrtype, limits_1), `%%PAGE`_memtype(v_addrtype, limits_2)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(v_addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(v_addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5686,6 +6013,9 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Tabletype_sub{C : context, v_addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, mk_tabletype_tabletype(v_addrtype, limits_1, reftype_1), mk_tabletype_tabletype(v_addrtype, limits_2, reftype_2)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(mk_tabletype_tabletype(v_addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(v_addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) @@ -5695,26 +6025,41 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5722,11 +6067,18 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, valtype_opt : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype_opt), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(lift(valtype_opt)))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype_opt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(lift(valtype_opt)))) -- (Valtype_ok: `%|-%:OK`(C, v_valtype))?{v_valtype <- valtype_opt} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, v_typeidx : typeidx, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, _IDX_blocktype(v_typeidx), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(v_typeidx)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(v_typeidx).0], FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) @@ -5735,6 +6087,9 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, t_lst : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -5743,6 +6098,9 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, t_lst : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) @@ -5751,12 +6109,16 @@ relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) @@ -5764,16 +6126,22 @@ relation Catch_ok: `%|-%:OK`(context, catch) def $default_(v_valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I32_valtype) = ?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) + -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I64_valtype) = ?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, mk_uN_uN(0)))) + -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, mk_uN_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F32_valtype) = ?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) + -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F64_valtype) = ?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) + -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(V128_valtype) = ?(VCONST_val(V128_vectype, mk_uN_vec_(0))) + -- wf_val: `%`(VCONST_val(V128_vectype, mk_uN_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF_NULL_val(ht)) + -- wf_val: `%`(REF_NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -5782,6 +6150,7 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule mk_Defaultable{t : valtype}: `|-%DEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5797,25 +6166,41 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, mk_instrtype_instrtype(mk_list_resulttype([t]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t]), [], mk_list_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule select_expl{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), mk_instrtype_instrtype(mk_list_resulttype([t t I32_valtype]), [], mk_list_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t t I32_valtype]), [], mk_list_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule select_impl{C : context, t : valtype, t' : valtype, v_numtype : numtype, v_vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), mk_instrtype_instrtype(mk_list_resulttype([t t I32_valtype]), [], mk_list_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t t I32_valtype]), [], mk_list_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = $valtype_numtype(v_numtype)) \/ (t' = $valtype_vectype(v_vectype))) @@ -5823,18 +6208,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_lst : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) -- Blocktype_ok: `%|-%:%`(C, bt, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_lst : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_1_lst)], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) -- Blocktype_ok: `%|-%:%`(C, bt, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_1_lst)], RETURN ?(), REFS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, instr_1_lst : instr*, instr_2_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_1_lst : idx*, x_2_lst : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [I32_valtype]), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [I32_valtype]), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_2_lst, mk_list_resulttype(t_2_lst))) -- Blocktype_ok: `%|-%:%`(C, bt, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []} +++ C, instr_1_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []} +++ C, instr_2_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_2_lst, mk_list_resulttype(t_2_lst))) @@ -5842,6 +6244,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, BR_instr(l), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t_lst) -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) @@ -5849,12 +6255,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, t_lst : valtype*}: `%|-%:%`(C, BR_IF_instr(l), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [I32_valtype]), [], mk_list_resulttype(t_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [I32_valtype]), [], mk_list_resulttype(t_lst))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t_lst) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, l_lst : labelidx*, l' : labelidx, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l_lst, l'), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst ++ [I32_valtype]), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l_lst, l')) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst ++ [I32_valtype]), [], mk_list_resulttype(t_2_lst))) -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- l_lst} -- (Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_lst), C.LABELS_context[$proj_uN_0(l).0]))*{l <- l_lst} -- if ($proj_uN_0(l').0 < |C.LABELS_context|) @@ -5864,6 +6276,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, t_lst : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype(t_lst ++ [REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype(t_lst ++ [REF_valtype(?(), ht)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t_lst) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -5871,12 +6286,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, t_lst : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype(t_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype(t_lst))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, t_lst : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = mk_list_resulttype(t_lst ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -5887,6 +6309,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, t_lst : valtype*, rt : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_2)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_2)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = mk_list_resulttype(t_lst ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -5897,18 +6323,32 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, CALL_instr(x), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, t_1_lst : valtype*, at : addrtype, t_2_lst : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [$valtype_addrtype(at)]), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [$valtype_addrtype(at)]), [], mk_list_resulttype(t_2_lst))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -5918,12 +6358,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, RETURN_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- if (C.RETURN_context = ?(mk_list_resulttype(t_lst))) -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, t_3_lst : valtype*, t_1_lst : valtype*, t_4_lst : valtype*, t_2_lst : valtype*, t'_2_lst : valtype*}: `%|-%:%`(C, RETURN_CALL_instr(x), mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst), [], mk_list_resulttype(t_4_lst))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- t'_2_lst} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst), [], mk_list_resulttype(t_4_lst))) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if (C.RETURN_context = ?(mk_list_resulttype(t'_2_lst))) @@ -5933,6 +6383,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, t_3_lst : valtype*, t_1_lst : valtype*, t_4_lst : valtype*, t_2_lst : valtype*, t'_2_lst : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype(t_4_lst))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- t'_2_lst} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype(t_4_lst))) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if (C.RETURN_context = ?(mk_list_resulttype(t'_2_lst))) @@ -5942,6 +6398,14 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, t_3_lst : valtype*, t_1_lst : valtype*, at : addrtype, t_4_lst : valtype*, lim : limits, rt : reftype, t_2_lst : valtype*, t'_2_lst : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst ++ [$valtype_addrtype(at)]), [], mk_list_resulttype(t_4_lst))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- t'_2_lst} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst ++ [$valtype_addrtype(at)]), [], mk_list_resulttype(t_4_lst))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) @@ -5954,6 +6418,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, THROW_instr(x), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) @@ -5961,11 +6430,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, THROW_REF_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, catch_lst : catch*, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_lst : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, mk_list_list(catch_lst), instr_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, mk_list_list(catch_lst), instr_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) -- Blocktype_ok: `%|-%:%`(C, bt, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) -- (Catch_ok: `%|-%:OK`(C, v_catch))*{v_catch <- catch_lst} @@ -5973,11 +6451,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref_null{C : context, ht : heaptype}: `%|-%:%`(C, REF_NULL_instr(ht), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_NULL_instr(ht)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref_func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, REF_FUNC_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_FUNC_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (|C.REFS_context| > 0) @@ -5986,24 +6470,39 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref_i31{C : context}: `%|-%:%`(C, REF_I31_instr, mk_instrtype_instrtype(mk_list_resulttype([I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_I31_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref_is_null{C : context, ht : heaptype}: `%|-%:%`(C, REF_IS_NULL_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_IS_NULL_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref_as_non_null{C : context, ht : heaptype}: `%|-%:%`(C, REF_AS_NON_NULL_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype([REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_AS_NON_NULL_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref_eq{C : context}: `%|-%:%`(C, REF_EQ_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_EQ_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref_test{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF_TEST_instr(rt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt')]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_TEST_instr(rt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt')]), [], mk_list_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6011,6 +6510,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref_cast{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, REF_CAST_instr(rt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt')]), [], mk_list_resulttype([$valtype_reftype(rt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_CAST_instr(rt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt')]), [], mk_list_resulttype([$valtype_reftype(rt)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6018,16 +6520,27 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31_get{C : context, v_sx : sx}: `%|-%:%`(C, I31_GET_instr(v_sx), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(I31_GET_instr(v_sx)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct_new{C : context, x : idx, zt_lst : storagetype*, mut_opt_lst : mut?*}: `%|-%:%`(C, STRUCT_NEW_instr(x), mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)*{zt <- zt_lst}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT_NEW_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)*{zt <- zt_lst}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct_new_default{C : context, x : idx, mut_opt_lst : mut?*, zt_lst : storagetype*}: `%|-%:%`(C, STRUCT_NEW_DEFAULT_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT_NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- zt_lst} @@ -6035,6 +6548,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 rule struct_get{C : context, sx_opt : sx?, x : idx, i : u32, zt : storagetype, ft_lst : fieldtype*, mut_opt : mut?}: `%|-%:%`(C, STRUCT_GET_instr(sx_opt, x, i), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT_GET_instr(sx_opt, x, i)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_lst))) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(mut_opt, zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(ft_lst))) -- if ($proj_uN_0(i).0 < |ft_lst|) @@ -6044,6 +6562,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct_set{C : context, x : idx, i : u32, zt : storagetype, ft_lst : fieldtype*}: `%|-%:%`(C, STRUCT_SET_instr(x, i), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT_SET_instr(x, i)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], mk_list_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_lst))) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(MUT_mut), zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(ft_lst))) -- if ($proj_uN_0(i).0 < |ft_lst|) @@ -6052,12 +6575,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array_new{C : context, x : idx, zt : storagetype, mut_opt : mut?}: `%|-%:%`(C, ARRAY_NEW_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$unpack(zt) I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_NEW_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$unpack(zt) I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array_new_default{C : context, x : idx, mut_opt : mut?, zt : storagetype}: `%|-%:%`(C, ARRAY_NEW_DEFAULT_instr(x), mk_instrtype_instrtype(mk_list_resulttype([I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) @@ -6065,12 +6596,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array_new_fixed{C : context, x : idx, v_n : n, zt : storagetype, mut_opt : mut?}: `%|-%:%`(C, ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n)), mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)^v_n{}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)^v_n{}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array_new_elem{C : context, x : idx, y : idx, mut_opt : mut?, rt : reftype}: `%|-%:%`(C, ARRAY_NEW_ELEM_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_NEW_ELEM_instr(x, y)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, $storagetype_reftype(rt)))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, $storagetype_reftype(rt)))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6079,6 +6618,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array_new_data{C : context, x : idx, y : idx, mut_opt : mut?, zt : storagetype, v_numtype : numtype, v_vectype : vectype}: `%|-%:%`(C, ARRAY_NEW_DATA_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_NEW_DATA_instr(x, y)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if (($unpack(zt) = $valtype_numtype(v_numtype)) \/ ($unpack(zt) = $valtype_vectype(v_vectype))) @@ -6088,6 +6631,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 rule array_get{C : context, sx_opt : sx?, x : idx, zt : storagetype, mut_opt : mut?}: `%|-%:%`(C, ARRAY_GET_instr(sx_opt, x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], mk_list_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_GET_instr(sx_opt, x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], mk_list_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ((sx_opt = ?()) <=> $is_packtype(zt)) @@ -6095,22 +6642,38 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array_set{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_SET_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], mk_list_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array_len{C : context}: `%|-%:%`(C, ARRAY_LEN_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_LEN_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array_fill{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, ARRAY_FILL_instr(x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_FILL_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], mk_list_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array_copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, mut_opt : mut?, zt_2 : storagetype}: `%|-%:%`(C, ARRAY_COPY_instr(x_1, x_2), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt_1))) -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) @@ -6120,6 +6683,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array_init_elem{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, ARRAY_INIT_ELEM_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_INIT_ELEM_instr(x, y)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6128,6 +6695,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array_init_data{C : context, x : idx, y : idx, zt : storagetype, v_numtype : numtype, v_vectype : vectype}: `%|-%:%`(C, ARRAY_INIT_DATA_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_INIT_DATA_instr(x, y)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = $valtype_numtype(v_numtype)) \/ ($unpack(zt) = $valtype_vectype(v_vectype))) @@ -6137,76 +6708,127 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern_convert_any{C : context, null_1_opt : null?, null_2_opt : null?}: `%|-%:%`(C, EXTERN_CONVERT_ANY_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(null_1_opt, ANY_heaptype)]), [], mk_list_resulttype([REF_valtype(null_2_opt, EXTERN_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN_CONVERT_ANY_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(null_1_opt, ANY_heaptype)]), [], mk_list_resulttype([REF_valtype(null_2_opt, EXTERN_heaptype)]))) -- if (null_1_opt = null_2_opt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any_convert_extern{C : context, null_1_opt : null?, null_2_opt : null?}: `%|-%:%`(C, ANY_CONVERT_EXTERN_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(null_1_opt, EXTERN_heaptype)]), [], mk_list_resulttype([REF_valtype(null_2_opt, ANY_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY_CONVERT_EXTERN_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(null_1_opt, EXTERN_heaptype)]), [], mk_list_resulttype([REF_valtype(null_2_opt, ANY_heaptype)]))) -- if (null_1_opt = null_2_opt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local_get{C : context, x : idx, t : valtype}: `%|-%:%`(C, LOCAL_GET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL_GET_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) + -- wf_localtype: `%`(mk_localtype_localtype(SET_init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = mk_localtype_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local_set{C : context, x : idx, t : valtype, v_init : init}: `%|-%:%`(C, LOCAL_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([t]), [x], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL_SET_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t]), [x], mk_list_resulttype([]))) + -- wf_localtype: `%`(mk_localtype_localtype(v_init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = mk_localtype_localtype(v_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local_tee{C : context, x : idx, t : valtype, v_init : init}: `%|-%:%`(C, LOCAL_TEE_instr(x), mk_instrtype_instrtype(mk_list_resulttype([t]), [x], mk_list_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL_TEE_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t]), [x], mk_list_resulttype([t]))) + -- wf_localtype: `%`(mk_localtype_localtype(v_init, t)) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = mk_localtype_localtype(v_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global_get{C : context, x : idx, t : valtype, mut_opt : mut?}: `%|-%:%`(C, GLOBAL_GET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL_GET_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) + -- wf_globaltype: `%`(mk_globaltype_globaltype(mut_opt, t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = mk_globaltype_globaltype(mut_opt, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global_set{C : context, x : idx, t : valtype}: `%|-%:%`(C, GLOBAL_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([t]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL_SET_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t]), [], mk_list_resulttype([]))) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(MUT_mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = mk_globaltype_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table_get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE_GET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_reftype(rt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE_GET_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_reftype(rt)]))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table_set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE_SET_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], mk_list_resulttype([]))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table_size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_SIZE_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE_SIZE_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_addrtype(at)]))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table_grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, TABLE_GROW_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE_GROW_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], mk_list_resulttype([I32_valtype]))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table_fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, TABLE_FILL_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE_FILL_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], mk_list_resulttype([]))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table_copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, TABLE_COPY_instr(x_1, x_2), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE_COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], mk_list_resulttype([]))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at_2, lim_2, rt_2)) -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = mk_tabletype_tabletype(at_1, lim_1, rt_1)) -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) @@ -6216,6 +6838,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table_init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, TABLE_INIT_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(TABLE_INIT_instr(x, y)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) @@ -6225,30 +6852,51 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem_drop{C : context, x : idx, rt : reftype}: `%|-%:%`(C, ELEM_DROP_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(ELEM_DROP_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory_size{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY_SIZE_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY_SIZE_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory_grow{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY_GROW_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY_GROW_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory_fill{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY_FILL_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY_FILL_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], mk_list_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory_copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, MEMORY_COPY_instr(x_1, x_2), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY_COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], mk_list_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) @@ -6257,6 +6905,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory_init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, MEMORY_INIT_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY_INIT_instr(x, y)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) @@ -6265,12 +6917,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 rule data_drop{C : context, x : idx}: `%|-%:%`(C, DATA_DROP_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DATA_DROP_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule load_val{C : context, nt : numtype, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6278,6 +6937,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule load_pack{C : context, v_Inn : Inn, v_M : M, v_sx : sx, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_M), v_sx))), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_addrtype(v_Inn)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_M), v_sx))), x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_addrtype(v_Inn)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= ((v_M : nat <:> rat) / (8 : nat <:> rat))) @@ -6285,6 +6948,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule store_val{C : context, nt : numtype, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], mk_list_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6292,6 +6959,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule store_pack{C : context, v_Inn : Inn, v_M : M, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_M)))), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_addrtype(v_Inn)]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_M)))), x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_addrtype(v_Inn)]), [], mk_list_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= ((v_M : nat <:> rat) / (8 : nat <:> rat))) @@ -6299,6 +6970,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule vload_val{C : context, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6306,6 +6981,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule vload_pack{C : context, v_M : M, v_N : N, v_sx : sx, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_N, v_sx)), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_N, v_sx)), x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= (((v_M : nat <:> rat) / (8 : nat <:> rat)) * (v_N : nat <:> rat))) @@ -6313,6 +6992,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule vload_splat{C : context, v_N : N, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= ((v_N : nat <:> rat) / (8 : nat <:> rat))) @@ -6320,6 +7003,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule vload_zero{C : context, v_N : N, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= ((v_N : nat <:> rat) / (8 : nat <:> rat))) @@ -6327,6 +7014,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, v_N : N, x : idx, v_memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, v_memarg, i), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, v_memarg, i)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= ((v_N : nat <:> rat) / (8 : nat <:> rat))) @@ -6335,6 +7026,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6342,6 +7037,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, v_N : N, x : idx, v_memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, v_memarg, i), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, v_memarg, i)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(v_memarg.ALIGN_memarg).0) : nat <:> rat) <= ((v_N : nat <:> rat) / (8 : nat <:> rat))) @@ -6350,129 +7049,223 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt)]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt)]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt_2)]), [], mk_list_resulttype([$valtype_numtype(nt_1)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt_2)]), [], mk_list_resulttype([$valtype_numtype(nt_1)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 rule vvunop{C : context, v_vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, v_vvunop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, v_vvunop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 rule vvbinop{C : context, v_vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, v_vvbinop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, v_vvbinop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 rule vvternop{C : context, v_vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, v_vvternop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, v_vvternop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 rule vvtestop{C : context, v_vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, v_vvtestop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, v_vvtestop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype I32_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype I32_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 rule vshuffle{C : context, sh : bshape, i_lst : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i_lst), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($fun_dim($proj_bshape_0(sh).0)).0)))*{i <- i_lst} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype($unpackshape(sh))]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype($unpackshape(sh))]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 rule vextract_lane{C : context, sh : shape, sx_opt : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx_opt, i), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx_opt, i)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([$valtype_numtype($unpackshape(sh))]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($fun_dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], mk_list_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($fun_dim(sh)).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, v_sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, v_sx), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, v_sx)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 rule empty{C : context}: `%|-%:%`(C, [], mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 rule seq{C : context, instr_1 : instr, instr_2_lst : instr*, t_1_lst : valtype*, x_1_lst : idx*, x_2_lst : idx*, t_3_lst : valtype*, t_2_lst : valtype*, init_lst : init*, t_lst : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst ++ x_2_lst, mk_list_resulttype(t_3_lst))) - -- Instr_ok: `%|-%:%`(C, instr_1, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- instr_2_lst} + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst ++ x_2_lst, mk_list_resulttype(t_3_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) -- if (|init_lst| = |t_lst|) + -- (wf_localtype: `%`(mk_localtype_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst} + -- (wf_localtype: `%`(mk_localtype_localtype(SET_init, t)))*{t <- t_lst} + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_2_lst), x_2_lst, mk_list_resulttype(t_3_lst))) + -- Instr_ok: `%|-%:%`(C, instr_1, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) -- if (|init_lst| = |x_1_lst|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- x_1_lst} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = mk_localtype_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst, x_1 <- x_1_lst} @@ -6481,6 +7274,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 rule sub{C : context, instr_lst : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr_lst, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) -- Instrs_ok: `%|-%:%`(C, instr_lst, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') @@ -6488,6 +7285,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 rule frame{C : context, instr_lst : instr*, t_lst : valtype*, t_1_lst : valtype*, x_lst : idx*, t_2_lst : valtype*}: `%|-%:%`(C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ t_1_lst), x_lst, mk_list_resulttype(t_lst ++ t_2_lst))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ t_1_lst), x_lst, mk_list_resulttype(t_lst ++ t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) -- Instrs_ok: `%|-%:%`(C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_lst)) } @@ -6497,6 +7298,9 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule mk_Expr_ok{C : context, instr_lst : instr*, t_lst : valtype*}: `%|-%:%`(C, instr_lst, mk_list_resulttype(t_lst)) + -- wf_context: `%`(C) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) -- Instrs_ok: `%|-%:%`(C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6504,6 +7308,7 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule mk_Nondefaultable{t : valtype}: `|-%NONDEFAULTABLE`(t) + -- wf_valtype: `%`(t) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6511,60 +7316,92 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref_null{C : context, ht : heaptype}: `%|-%CONST`(C, REF_NULL_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref_i31{C : context}: `%|-%CONST`(C, REF_I31_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref_func{C : context, x : idx}: `%|-%CONST`(C, REF_FUNC_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct_new{C : context, x : idx}: `%|-%CONST`(C, STRUCT_NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT_NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct_new_default{C : context, x : idx}: `%|-%CONST`(C, STRUCT_NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT_NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array_new{C : context, x : idx}: `%|-%CONST`(C, ARRAY_NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array_new_default{C : context, x : idx}: `%|-%CONST`(C, ARRAY_NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array_new_fixed{C : context, x : idx, v_n : n}: `%|-%CONST`(C, ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any_convert_extern{C : context}: `%|-%CONST`(C, ANY_CONVERT_EXTERN_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY_CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern_convert_any{C : context}: `%|-%CONST`(C, EXTERN_CONVERT_ANY_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN_CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global_get{C : context, x : idx, t : valtype}: `%|-%CONST`(C, GLOBAL_GET_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL_GET_instr(x)) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = mk_globaltype_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, v_Inn : Inn, binop : binop_}: `%|-%CONST`(C, BINOP_instr($numtype_addrtype(v_Inn), binop)) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr($numtype_addrtype(v_Inn), binop)) + -- wf_binop_: `%%`($numtype_addrtype(v_Inn), mk_binop__0_binop_(v_Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(v_Inn), mk_binop__0_binop_(v_Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(v_Inn), mk_binop__0_binop_(v_Inn, MUL_binop_Inn)) -- if (v_Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(v_Inn, ADD_binop_Inn) mk_binop__0_binop_(v_Inn, SUB_binop_Inn) mk_binop__0_binop_(v_Inn, MUL_binop_Inn)]) @@ -6573,6 +7410,8 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule mk_Expr_const{C : context, instr_lst : instr*}: `%|-%CONST`(C, instr_lst) + -- wf_context: `%`(C) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} -- (Instr_const: `%|-%CONST`(C, v_instr))*{v_instr <- instr_lst} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6580,6 +7419,9 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule mk_Expr_ok_const{C : context, v_expr : expr, t : valtype}: `%|-%:%CONST`(C, v_expr, t) + -- wf_context: `%`(C) + -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} + -- wf_valtype: `%`(t) -- Expr_ok: `%|-%:%`(C, v_expr, mk_list_resulttype([t])) -- Expr_const: `%|-%CONST`(C, v_expr) @@ -6588,6 +7430,9 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Type_ok{C : context, v_rectype : rectype, dt_lst : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(v_rectype), dt_lst) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_lst, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt_lst = $rolldt(x, v_rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt_lst, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, v_rectype, OK_oktypeidx(x)) @@ -6597,6 +7442,8 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Tag_ok{C : context, v_tagtype : tagtype}: `%|-%:%`(C, TAG_tag(v_tagtype), $clos_tagtype(C, v_tagtype)) + -- wf_context: `%`(C) + -- wf_tag: `%`(TAG_tag(v_tagtype)) -- Tagtype_ok: `%|-%:OK`(C, v_tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6604,6 +7451,9 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Global_ok{C : context, v_globaltype : globaltype, v_expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(v_globaltype, v_expr), v_globaltype) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(v_globaltype, v_expr)) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(MUT_mut), t)) -- Globaltype_ok: `%|-%:OK`(C, v_globaltype) -- if (v_globaltype = mk_globaltype_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, v_expr, t) @@ -6613,6 +7463,8 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Mem_ok{C : context, v_memtype : memtype}: `%|-%:%`(C, MEMORY_mem(v_memtype), v_memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(v_memtype)) -- Memtype_ok: `%|-%:OK`(C, v_memtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6620,6 +7472,9 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Table_ok{C : context, v_tabletype : tabletype, v_expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(v_tabletype, v_expr), v_tabletype) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(v_tabletype, v_expr)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, v_tabletype) -- if (v_tabletype = mk_tabletype_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, v_expr, $valtype_reftype(rt)) @@ -6629,11 +7484,17 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), mk_localtype_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(mk_localtype_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), mk_localtype_localtype(UNSET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(mk_localtype_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6642,6 +7503,10 @@ relation Func_ok: `%|-%:%`(context, func, deftype) rule mk_Func_ok{C : context, x : idx, local_lst : local*, v_expr : expr, t_1_lst : valtype*, t_2_lst : valtype*, lct_lst : localtype*}: `%|-%:%`(C, FUNC_func(x, local_lst, v_expr), C.TYPES_context[$proj_uN_0(x).0]) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local_lst, v_expr)) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS mk_localtype_localtype(SET_init, t_1)*{t_1 <- t_1_lst} ++ lct_lst, LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(mk_list_resulttype(t_2_lst)), REFS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if (|lct_lst| = |local_lst|) -- (Local_ok: `%|-%:%`(C, v_local, lct))*{lct <- lct_lst, v_local <- local_lst} @@ -6652,10 +7517,15 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, v_expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, v_expr), OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, v_expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, v_expr, $valtype_addrtype(at)) @@ -6665,6 +7535,8 @@ relation Data_ok: `%|-%:%`(context, data, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Data_ok{C : context, b_lst : byte*, v_datamode : datamode}: `%|-%:%`(C, DATA_data(b_lst, v_datamode), OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b_lst, v_datamode)) -- Datamode_ok: `%|-%:%`(C, v_datamode, OK_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6672,14 +7544,24 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, v_expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, v_expr), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, v_expr)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt')) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6690,6 +7572,8 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Elem_ok{C : context, v_elemtype : elemtype, expr_lst : expr*, v_elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(v_elemtype, expr_lst, v_elemmode), v_elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(v_elemtype, expr_lst, v_elemmode)) -- Reftype_ok: `%|-%:OK`(C, v_elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, v_expr, $valtype_reftype(v_elemtype)))*{v_expr <- expr_lst} -- Elemmode_ok: `%|-%:%`(C, v_elemmode, v_elemtype) @@ -6699,6 +7583,9 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Start_ok{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype([]), mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], FUNC_comptype(mk_list_resulttype([]), mk_list_resulttype([]))) @@ -6707,6 +7594,8 @@ relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Import_ok{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + -- wf_context: `%`(C) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6714,30 +7603,45 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) @@ -6746,6 +7650,9 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Export_ok{C : context, v_name : name, v_externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(v_name, v_externidx), v_name, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(v_name, v_externidx)) -- Externidx_ok: `%|-%:%`(C, v_externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -6756,10 +7663,16 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 rule cons{C : context, global_1 : global, global_lst : global*, gt_1 : globaltype, gt_lst : globaltype*}: `%|-%:%`(C, [global_1] ++ global_lst, [gt_1] ++ gt_lst) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(v_global))*{v_global <- global_lst} + -- (wf_globaltype: `%`(gt))*{gt <- gt_lst} + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global_lst, gt_lst) } @@ -6772,10 +7685,13 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 rule empty{C : context}: `%|-%:%`(C, [], []) + -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 rule cons{C : context, type_1 : type, type_lst : type*, dt_1_lst : deftype*, dt_lst : deftype*}: `%|-%:%`(C, [type_1] ++ type_lst, dt_1_lst ++ dt_lst) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1_lst, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Type_ok: `%|-%:%`(C, type_1, dt_1_lst) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1_lst, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type_lst, dt_lst) } @@ -6798,12 +7714,23 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(v_nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{global_lst : global*, mem_lst : mem*, table_lst : table*, elem_lst : elem*}(mk_nonfuncs_nonfuncs(global_lst, mem_lst, table_lst, elem_lst)) = $funcidx_module(MODULE_module([], [], [], global_lst, mem_lst, table_lst, [], [], elem_lst, ?(), [])) + -- wf_module: `%`(MODULE_module([], [], [], global_lst, mem_lst, table_lst, [], [], elem_lst, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Module_ok{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, C : context, xt_I_lst : externtype*, xt_E_lst : externtype*, dt'_lst : deftype*, C' : context, jt_lst : tagtype*, gt_lst : globaltype*, mt_lst : memtype*, tt_lst : tabletype*, dt_lst : deftype*, ok_lst : datatype*, rt_lst : reftype*, nm_lst : name*, jt_I_lst : tagtype*, mt_I_lst : memtype*, tt_I_lst : tabletype*, gt_I_lst : globaltype*, dt_I_lst : deftype*, x_lst : idx*}: `|-%:%`(MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst), $clos_moduletype(C, mk_moduletype_moduletype(xt_I_lst, xt_E_lst))) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- nm_lst} + -- wf_module: `%`(MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst)) + -- wf_moduletype: `%`(mk_moduletype_moduletype(xt_I_lst, xt_E_lst)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'_lst, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I_lst ++ jt_lst, GLOBALS gt_lst, MEMS mt_I_lst ++ mt_lst, TABLES tt_I_lst ++ tt_lst, FUNCS [], DATAS ok_lst, ELEMS rt_lst, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'_lst, RECS [], TAGS [], GLOBALS gt_I_lst, MEMS [], TABLES [], FUNCS dt_I_lst ++ dt_lst, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x_lst}) + -- wf_nonfuncs: `%`(mk_nonfuncs_nonfuncs(global_lst, mem_lst, table_lst, elem_lst)) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type_lst, dt'_lst) -- if (|import_lst| = |xt_I_lst|) -- (Import_ok: `%|-%:%`({TYPES dt'_lst, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, v_import, xt_I))*{v_import <- import_lst, xt_I <- xt_I_lst} @@ -6993,16 +7920,22 @@ def $fun_sx(v_storagetype : storagetype) : sx? def $fun_zero(v_lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, mk_uN_uN(0)) + -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, mk_uN_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, mk_uN_uN(0)) + -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, mk_uN_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, mk_uN_uN(0)) + -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, mk_uN_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, mk_uN_uN(0)) + -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, mk_uN_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) + -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) + -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(v_bool : bool) : nat @@ -7031,6 +7964,7 @@ def $sat_s_(v_N : N, int : int) : int def $ineg_(v_N : N, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{v_N : nat, i_1 : uN}(v_N, i_1) = mk_uN_iN((((((2 ^ v_N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ v_N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(v_N, mk_uN_uN((((((2 ^ v_N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ v_N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(v_N : N, v_iN : iN) : iN @@ -7050,23 +7984,28 @@ def $ipopcnt_(v_N : N, v_iN : iN) : iN def $iextend_(v_N : N, v_M : M, v_sx : sx, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{v_N : nat, v_M : nat, i : uN}(v_N, v_M, U_sx, i) = mk_uN_iN(($proj_uN_0(i).0 \ (2 ^ v_M))) + -- wf_uN: `%%`(v_N, mk_uN_uN(($proj_uN_0(i).0 \ (2 ^ v_M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{v_N : nat, v_M : nat, i : uN}(v_N, v_M, S_sx, i) = mk_uN_iN($inv_signed_(v_N, $signed_(v_M, ($proj_uN_0(i).0 \ (2 ^ v_M))))) + -- wf_uN: `%%`(v_N, mk_uN_uN($inv_signed_(v_N, $signed_(v_M, ($proj_uN_0(i).0 \ (2 ^ v_M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ v_N))) + -- wf_uN: `%%`(v_N, mk_uN_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ v_N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_iN(((((((2 ^ v_N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ v_N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(v_N, mk_uN_uN(((((((2 ^ v_N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ v_N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ v_N))) + -- wf_uN: `%%`(v_N, mk_uN_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ v_N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN? @@ -7074,6 +8013,7 @@ def $idiv_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN? def $idiv_{v_N : nat, i_1 : uN}(v_N, U_sx, i_1, mk_uN_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = ?(mk_uN_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + -- wf_uN: `%%`(v_N, mk_uN_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{v_N : nat, i_1 : uN}(v_N, S_sx, i_1, mk_uN_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7081,6 +8021,7 @@ def $idiv_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN? -- if ((($signed_(v_N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(v_N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = ?(mk_uN_iN($inv_signed_(v_N, $truncz((($signed_(v_N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(v_N, $proj_uN_0(i_2).0) : int <:> rat)))))) + -- wf_uN: `%%`(v_N, mk_uN_uN($inv_signed_(v_N, $truncz((($signed_(v_N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(v_N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN? @@ -7088,10 +8029,12 @@ def $irem_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN? def $irem_{v_N : nat, i_1 : uN}(v_N, U_sx, i_1, mk_uN_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = ?(mk_uN_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + -- wf_uN: `%%`(v_N, mk_uN_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{v_N : nat, i_1 : uN}(v_N, S_sx, i_1, mk_uN_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{v_N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(v_N, S_sx, i_1, i_2) = ?(mk_uN_iN($inv_signed_(v_N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- wf_uN: `%%`(v_N, mk_uN_uN($inv_signed_(v_N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(v_N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(v_N, $proj_uN_0(i_2).0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7120,15 +8063,19 @@ def $imax_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN def $iadd_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_iN($sat_u_(v_N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) + -- wf_uN: `%%`(v_N, mk_uN_uN($sat_u_(v_N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_iN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) + $signed_(v_N, $proj_uN_0(i_2).0))))) + -- wf_uN: `%%`(v_N, mk_uN_uN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) + $signed_(v_N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_iN($sat_u_(v_N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) + -- wf_uN: `%%`(v_N, mk_uN_uN($sat_u_(v_N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_iN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) - $signed_(v_N, $proj_uN_0(i_2).0))))) + -- wf_uN: `%%`(v_N, mk_uN_uN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) - $signed_(v_N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN @@ -7179,49 +8126,61 @@ def $irelaxed_laneselect_(v_N : N, v_iN : iN, v_iN_0 : iN, v_iN_1 : iN) : iN* def $ieqz_(v_N : N, v_iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{v_N : nat, i_1 : uN}(v_N, i_1) = mk_uN_u32($bool(($proj_uN_0(i_1).0 = 0))) + -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(v_N : N, v_iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{v_N : nat, i_1 : uN}(v_N, i_1) = mk_uN_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(v_N : N, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_u32($bool((i_1 = i_2))) + -- wf_uN: `%%`(32, mk_uN_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(v_N : N, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_u32($bool((i_1 =/= i_2))) + -- wf_uN: `%%`(32, mk_uN_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) < $signed_(v_N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, mk_uN_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) < $signed_(v_N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) > $signed_(v_N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, mk_uN_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) > $signed_(v_N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) <= $signed_(v_N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, mk_uN_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) <= $signed_(v_N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) >= $signed_(v_N, $proj_uN_0(i_2).0)))) + -- wf_uN: `%%`(32, mk_uN_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) >= $signed_(v_N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(v_N : N, v_fN : fN) : fN* @@ -7335,16 +8294,22 @@ def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, v_num_ : num_) : nu def $lpacknum_(v_lanetype : lanetype, v_num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) + -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) + -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) + -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) + -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ @@ -7360,8 +8325,10 @@ def $cpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ def $cpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(v_lanetype : lanetype, v_lane_ : lane_) : num_ @@ -7375,8 +8342,10 @@ def $lunpacknum_(v_lanetype : lanetype, v_lane_ : lane_) : num_ def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) + -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) + -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ @@ -7392,134 +8361,196 @@ def $cunpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ def $cunpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_(v_numtype : numtype, v_unop_ : unop_, v_num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{v_M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(v_M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), v_M, S_sx, i))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), v_M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{v_M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(v_M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), v_M, S_sx, i))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), v_M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_(v_numtype : numtype, v_binop_ : binop_, v_num_ : num_, v_num__0 : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_testop_(v_numtype : numtype, v_testop_ : testop_, v_num_ : num_) : u32 @@ -7583,83 +8614,119 @@ def $fun_relop_(v_numtype : numtype, v_relop_ : relop_, v_num_ : num_, v_num__0 def $fun_cvtop__(numtype_1 : numtype, numtype_2 : numtype, v_cvtop__ : cvtop__, v_num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))] + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))] + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))] + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))] + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))] + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))] + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))] + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))] + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))] + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -7877,28 +8944,42 @@ def $fun_half(v_half : half, nat : nat, nat_0 : nat) : nat def $iswizzle_lane_(v_N : N, var_0 : iN*, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{v_N : nat, c_lst : iN*, i : uN}(v_N, c_lst, i) = (if ($proj_uN_0(i).0 < |c_lst|) then c_lst[$proj_uN_0(i).0] else mk_uN_iN(0)) + -- wf_uN: `%%`(v_N, mk_uN_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(v_N : N, var_0 : iN*, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{v_N : nat, c_lst : iN*, i : uN}(v_N, c_lst, i) = (if ($proj_uN_0(i).0 < |c_lst|) then c_lst[$proj_uN_0(i).0] else (if ($signed_(v_N, $proj_uN_0(i).0) < (0 : nat <:> int)) then mk_uN_iN(0) else $fun_relaxed2($R_swizzle, syntax iN, mk_uN_iN(0), c_lst[($proj_uN_0(i).0 \ |c_lst|)]))) + -- wf_uN: `%%`(v_N, mk_uN_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(v_shape : shape, def $f_(v_N : N, v_iN : iN) : iN, v_vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst})] + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst})] + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst})] + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst})] + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} @@ -7906,10 +8987,16 @@ def $ivunop_(v_shape : shape, def $f_(v_N : N, v_iN : iN) : iN, v_vec_ : vec_) : def $fvunop_(v_shape : shape, def $f_(v_N : N, v_fN : fN) : fN*, v_vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{v_M : nat, def $f_(v_N : N, v_fN : fN) : fN*, v_1 : uN, c_lst_lst : lane_**, c_1_lst : lane_*}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- c_1_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- c_1_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{v_M : nat, def $f_(v_N : N, v_fN : fN) : fN*, v_1 : uN, c_lst_lst : lane_**, c_1_lst : lane_*}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- c_1_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- c_1_lst}) {c_lst_lst} @@ -7917,21 +9004,37 @@ def $fvunop_(v_shape : shape, def $f_(v_N : N, v_fN : fN) : fN*, v_vec_ : vec_) def $ivbinop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_vec_ : vec_, v_vec__0 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst})] + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst})] + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst})] + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst})] + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} @@ -7940,21 +9043,37 @@ def $ivbinop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_ve def $ivbinopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst})] + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst})] + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst})] + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst})] + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} @@ -7963,21 +9082,33 @@ def $ivbinopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : i def $ivbinopsxnd_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} @@ -7986,11 +9117,17 @@ def $ivbinopsxnd_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : def $fvbinop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_vec_ : vec_, v_vec__0 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} @@ -7999,24 +9136,36 @@ def $fvbinop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_v def $ivternopnd_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*, c_3_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_3) {c_3_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*, c_3_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_3) {c_3_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*, c_3_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_3) {c_3_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*, c_3_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_3) {c_3_lst} @@ -8026,12 +9175,18 @@ def $ivternopnd_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : def $fvternop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN) : fN*, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*, c_3_lst : lane_*}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_3) {c_3_lst} -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*, c_3_lst : lane_*}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_3) {c_3_lst} @@ -8041,18 +9196,30 @@ def $fvternop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN def $ivtestop_(v_shape : shape, def $f_(v_N : N, v_iN : iN) : u32, v_vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : u32, v_1 : uN, c_lst : u32*, c_1_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = mk_uN_u32($prod($proj_uN_0(c).0*{c <- c_lst})) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_uN: `%%`(32, mk_uN_uN($prod($proj_uN_0(c).0*{c <- c_lst}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : u32, v_1 : uN, c_lst : u32*, c_1_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = mk_uN_u32($prod($proj_uN_0(c).0*{c <- c_lst})) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_uN: `%%`(32, mk_uN_uN($prod($proj_uN_0(c).0*{c <- c_lst}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : u32, v_1 : uN, c_lst : u32*, c_1_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = mk_uN_u32($prod($proj_uN_0(c).0*{c <- c_lst})) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_uN: `%%`(32, mk_uN_uN($prod($proj_uN_0(c).0*{c <- c_lst}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivtestop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : u32, v_1 : uN, c_lst : u32*, c_1_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = mk_uN_u32($prod($proj_uN_0(c).0*{c <- c_lst})) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_uN: `%%`(32, mk_uN_uN($prod($proj_uN_0(c).0*{c <- c_lst}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} @@ -8060,10 +9227,16 @@ def $ivtestop_(v_shape : shape, def $f_(v_N : N, v_iN : iN) : u32, v_vec_ : vec_ def $fvtestop_(v_shape : shape, def $f_(v_N : N, v_fN : fN) : u32, v_vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{v_M : nat, def $f_(v_N : N, v_fN : fN) : u32, v_1 : uN, c_lst : u32*, c_1_lst : lane_*}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = mk_uN_u32($prod($proj_uN_0(c).0*{c <- c_lst})) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_uN: `%%`(32, mk_uN_uN($prod($proj_uN_0(c).0*{c <- c_lst}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvtestop_{v_M : nat, def $f_(v_N : N, v_fN : fN) : u32, v_1 : uN, c_lst : u32*, c_1_lst : lane_*}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = mk_uN_u32($prod($proj_uN_0(c).0*{c <- c_lst})) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_uN: `%%`(32, mk_uN_uN($prod($proj_uN_0(c).0*{c <- c_lst}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- c_1_lst} {c_lst} @@ -8071,21 +9244,33 @@ def $fvtestop_(v_shape : shape, def $f_(v_N : N, v_fN : fN) : u32, v_vec_ : vec_ def $ivrelop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} @@ -8094,21 +9279,33 @@ def $ivrelop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_v def $ivrelopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} @@ -8117,12 +9314,20 @@ def $ivrelopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : i def $fvrelop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_1 : uN, v_2 : uN, v_Inn : addrtype, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M)), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, mk_uN_uN($proj_uN_0(c).0)))*{c <- c_lst}) + -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M))), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, mk_uN_uN($proj_uN_0(c).0)))))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, mk_uN_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} -- if ($isize(v_Inn) = $fsize(F32_Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_1 : uN, v_2 : uN, v_Inn : addrtype, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M)), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, mk_uN_uN($proj_uN_0(c).0)))*{c <- c_lst}) + -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M))), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, mk_uN_uN($proj_uN_0(c).0)))))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, mk_uN_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} @@ -8132,18 +9337,30 @@ def $fvrelop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_v def $ivshiftop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_vec_ : vec_, v_u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} @@ -8151,18 +9368,30 @@ def $ivshiftop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, def $ivshiftopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_vec_ : vec_, v_u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} @@ -8170,18 +9399,34 @@ def $ivshiftopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 def $ivbitmaskop_(v_shape : shape, v_vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)))*{c_1 <- c_1_lst} + -- wf_bit: `%`(mk_bit_bit(0)) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)*{c_1 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)))*{c_1 <- c_1_lst} + -- wf_bit: `%`(mk_bit_bit(0)) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)*{c_1 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)))*{c_1 <- c_1_lst} + -- wf_bit: `%`(mk_bit_bit(0)) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)*{c_1 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)))*{c_1 <- c_1_lst} + -- wf_bit: `%`(mk_bit_bit(0)) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)*{c_1 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) @@ -8189,21 +9434,37 @@ def $ivbitmaskop_(v_shape : shape, v_vec_ : vec_) : u32 def $ivswizzlop_(v_shape : shape, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1))*{c_1 <- c_1_lst}, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1))*{c_1 <- c_1_lst}, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1))*{c_1 <- c_1_lst}, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1))*{c_1 <- c_1_lst}, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c_lst} @@ -8212,21 +9473,37 @@ def $ivswizzlop_(v_shape : shape, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_vec_ def $ivshufflop_(v_shape : shape, var_0 : laneidx*, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), c_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), c_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), c_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), c_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} -- where c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst} {c_lst} @@ -8256,520 +9533,741 @@ def $vvternop_(v_vectype : vectype, v_vvternop : vvternop, v_vec_ : vec_, v_vec_ def $fun_vunop_(v_shape : shape, v_vunop_ : vunop_, v_vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fneg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fneg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fsqrt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fsqrt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fceil_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fceil_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $ffloor_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $ffloor_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $ftrunc_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $ftrunc_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fnearest_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fnearest_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_(v_shape : shape, v_vbinop_ : vbinop_, v_vec_ : vec_, v_vec__0 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fsub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fsub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fdiv_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fdiv_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fpmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fpmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fpmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fpmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_min_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_min_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_max_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_max_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_(v_shape : shape, v_vternop_ : vternop_, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I32_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I64_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I8_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I16_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, v_M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, v_M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, v_M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, v_M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vtestop_(v_shape : shape, v_vtestop_ : vtestop_, v_vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vtestop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vtestop__0_vtestop_(I32_Jnn, v_M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vtestop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vtestop__0_vtestop_(I64_Jnn, v_M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vtestop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vtestop__0_vtestop_(I8_Jnn, v_M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vtestop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vtestop__0_vtestop_(I16_Jnn, v_M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $inez_, v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_(v_shape : shape, v_vrelop_ : vrelop_, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $feq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $feq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fne_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fne_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $flt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $flt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fgt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fgt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fle_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fle_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fge_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fge_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__, v_lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vcvtop__(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__, v_vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vcvtop__{Lnn_1 : lanetype, v_M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**}(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- c_lst}*{c_lst <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(v_M))) -- if (($halfop(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop) = ?())) -- where c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), v_1) {c_1_lst} -- where c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, c_1)*{c_1 <- c_1_lst}) {c_lst_lst} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, v_half : half, c_1_lst : lane_*, c_lst_lst : lane_**}(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- c_lst}*{c_lst <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop) = ?(v_half)) -- where c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1)[$fun_half(v_half, 0, M_2) : M_2] {c_1_lst} -- where c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1)*{c_1 <- c_1_lst}) {c_lst_lst} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst)*{c_lst <- c_lst_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**}(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- c_lst}*{c_lst <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop) = ?(ZERO_zero)) -- where c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1)*{c_1 <- c_1_lst} ++ [$fun_zero(Lnn_2)]^M_1{}) {c_lst_lst} @@ -8779,48 +10277,70 @@ def $fun_vcvtop__(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__, v_vec def $fun_vshiftop_(v_ishape : ishape, v_vshiftop_ : vshiftop_, v_vec_ : vec_, v_u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(v_ishape : ishape, v_vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{v_M : nat, v : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{v_M : nat, v : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{v_M : nat, v : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{v_M : nat, v : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vswizzlop_(v_bshape : bshape, v_vswizzlop_ : vswizzlop_, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vswizzlop_{v_M : nat, v_1 : uN, v_2 : uN}(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vswizzlop__0_vswizzlop_(v_M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $iswizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vswizzlop_{v_M : nat, v_1 : uN, v_2 : uN}(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vswizzlop__0_vswizzlop_(v_M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $irelaxed_swizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(v_bshape : bshape, var_0 : laneidx*, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), i_lst, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -8828,6 +10348,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -8835,6 +10362,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -8842,6 +10376,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -8849,6 +10390,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -8856,6 +10404,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -8863,6 +10418,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -8870,6 +10432,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -8877,6 +10446,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -8884,6 +10460,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -8891,6 +10474,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -8898,6 +10488,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -8905,6 +10502,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -8912,6 +10516,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -8919,6 +10530,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -8926,6 +10544,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -8936,87 +10561,169 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v def $ivadd_pairwise_(v_N : N, var_0 : iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{v_N : nat, i_lst : iN*, j_1_lst : N*, j_2_lst : N*}(v_N, i_lst) = $iadd_(v_N, mk_uN_iN(j_1), mk_uN_iN(j_2))*{j_1 <- j_1_lst, j_2 <- j_2_lst} + -- (wf_uN: `%%`(v_N, mk_uN_uN(j_1)))*{j_1 <- j_1_lst} + -- (wf_uN: `%%`(v_N, mk_uN_uN(j_2)))*{j_2 <- j_2_lst} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- j_1_lst, j_2 <- j_2_lst}) = $proj_uN_0(i).0*{i <- i_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) {c_lst} @@ -9025,53 +10732,96 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, def $fun_vextunop__(ishape_1 : ishape, ishape_2 : ishape, v_vextunop__ : vextunop__, v_vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(v_N : N, var_0 : iN*, var_1 : iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{v_N : nat, i_1_lst : iN*, i_2_lst : iN*, j_1_lst : iN*, j_2_lst : iN*}(v_N, i_1_lst, i_2_lst) = $iadd_(v_N, j_1, j_2)*{j_1 <- j_1_lst, j_2 <- j_2_lst} + -- (wf_uN: `%%`(v_N, j_1))*{j_1 <- j_1_lst} + -- (wf_uN: `%%`(v_N, j_2))*{j_2 <- j_2_lst} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- j_1_lst, j_2 <- j_2_lst}) = $imul_(v_N, i_1, i_2)*{i_1 <- i_1_lst, i_2 <- i_2_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(v_N : N, var_0 : iN*, var_1 : iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{v_N : nat, i_1_lst : iN*, i_2_lst : iN*, j_1_lst : iN*, j_2_lst : iN*}(v_N, i_1_lst, i_2_lst) = $iadd_sat_(v_N, S_sx, j_1, j_2)*{j_1 <- j_1_lst, j_2 <- j_2_lst} + -- (wf_uN: `%%`(v_N, j_1))*{j_1 <- j_1_lst} + -- (wf_uN: `%%`(v_N, j_2))*{j_2 <- j_2_lst} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- j_1_lst, j_2 <- j_2_lst}) = $imul_(v_N, i_1, i_2)*{i_1 <- i_1_lst, i_2 <- i_2_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : iN*, v_sx : sx, v_sx_0 : sx, v_laneidx : laneidx, v_laneidx_0 : laneidx, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- c'_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -9079,6 +10829,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- c'_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -9086,6 +10843,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- c'_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -9093,6 +10857,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- c'_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -9100,6 +10871,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- c'_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -9107,6 +10885,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- c'_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -9114,6 +10899,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- c'_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -9121,6 +10913,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- c'_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -9128,6 +10927,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- c'_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -9135,6 +10941,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- c'_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -9142,6 +10955,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- c'_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -9149,6 +10969,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- c'_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -9156,6 +10983,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- c'_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -9163,6 +10997,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- c'_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -9170,6 +11011,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- c'_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -9177,6 +11025,13 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- c'_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- c'_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} @@ -9192,105 +11047,307 @@ def $ivmul_(v_N : N, var_0 : iN*, var_1 : iN*) : iN* def $fun_vextbinop__(ishape_1 : ishape, ishape_2 : ishape, v_vextbinop__ : vextbinop__, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_uN: `%%`(8, mk_uN_uN(0)) + -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vextternop__, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9298,6 +11355,16 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9305,6 +11372,16 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9312,6 +11389,16 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9319,6 +11406,16 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9326,6 +11423,16 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9333,6 +11440,16 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9340,6 +11457,16 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9347,6 +11474,16 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9354,6 +11491,16 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9361,6 +11508,16 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9368,6 +11525,16 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9375,6 +11542,16 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9382,6 +11559,16 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9389,6 +11576,16 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9396,6 +11593,16 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- where v_M = (2 * M_2) {v_M} -- where c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} @@ -9861,8 +12068,10 @@ def $packfield_(v_storagetype : storagetype, v_val : val) : fieldval def $packfield_{v_val : val}(I32_storagetype, v_val) = $fieldval_val(v_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)) + -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)) + -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(v_storagetype : storagetype, var_0 : sx?, v_fieldval : fieldval) : val @@ -10008,8 +12217,10 @@ def $unpackfield_(v_storagetype : storagetype, var_0 : sx?, v_fieldval : fieldva def $unpackfield_{v_numtype : numtype, v_num_ : num_}(I32_storagetype, ?(), CONST_fieldval(v_numtype, v_num_)) = CONST_val(v_numtype, v_num_) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{v_sx : sx, i : uN}(I8_storagetype, ?(v_sx), PACK_fieldval(I8_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, v_sx, i))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, v_sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{v_sx : sx, i : uN}(I16_storagetype, ?(v_sx), PACK_fieldval(I16_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, v_sx, i))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, v_sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -10195,71 +12406,87 @@ def $fun_local(v_state : state, v_localidx : localidx) : val? def $with_local(v_state : state, v_localidx : localidx, v_val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{s : store, f : frame, x : uN, v : val}(mk_state_state(s, f), x, v) = mk_state_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + -- wf_state: `%`(mk_state_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(v_state : state, v_globalidx : globalidx, v_val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{s : store, f : frame, x : uN, v : val}(mk_state_state(s, f), x, v) = mk_state_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f) + -- wf_state: `%`(mk_state_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(v_state : state, v_tableidx : tableidx, nat : nat, v_ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(mk_state_state(s, f), x, i, r) = mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f) + -- wf_state: `%`(mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(v_state : state, v_tableidx : tableidx, v_tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(mk_state_state(s, f), x, ti) = mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f) + -- wf_state: `%`(mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(v_state : state, v_memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, b_lst : byte*}(mk_state_state(s, f), x, i, j, b_lst) = mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b_lst], f) + -- wf_state: `%`(mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(v_state : state, v_memidx : memidx, v_meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(mk_state_state(s, f), x, mi) = mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f) + -- wf_state: `%`(mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(v_state : state, v_elemidx : elemidx, var_0 : ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{s : store, f : frame, x : uN, r_lst : ref*}(mk_state_state(s, f), x, r_lst) = mk_state_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r_lst], f) + -- wf_state: `%`(mk_state_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(v_state : state, v_dataidx : dataidx, var_0 : byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{s : store, f : frame, x : uN, b_lst : byte*}(mk_state_state(s, f), x, b_lst) = mk_state_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b_lst], f) + -- wf_state: `%`(mk_state_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(v_state : state, v_structaddr : structaddr, nat : nat, v_fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(mk_state_state(s, f), a, i, fv) = mk_state_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + -- wf_state: `%`(mk_state_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(v_state : state, v_arrayaddr : arrayaddr, nat : nat, v_fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(mk_state_state(s, f), a, i, fv) = mk_state_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + -- wf_state: `%`(mk_state_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(v_state : state, var_0 : structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{s : store, f : frame, si_lst : structinst*}(mk_state_state(s, f), si_lst) = mk_state_state(s[STRUCTS_store =++ si_lst], f) + -- wf_state: `%`(mk_state_state(s[STRUCTS_store =++ si_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(v_state : state, var_0 : arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{s : store, f : frame, ai_lst : arrayinst*}(mk_state_state(s, f), ai_lst) = mk_state_state(s[ARRAYS_store =++ ai_lst], f) + -- wf_state: `%`(mk_state_state(s[ARRAYS_store =++ ai_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(v_state : state, var_0 : exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{s : store, f : frame, exn_lst : exninst*}(mk_state_state(s, f), exn_lst) = mk_state_state(s[EXNS_store =++ exn_lst], f) + -- wf_state: `%`(mk_state_state(s[EXNS_store =++ exn_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(v_tableinst : tableinst, nat : nat, v_ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{v_tableinst : tableinst, v_n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, j_opt : u64?, rt : reftype, r'_lst : ref*, i' : uN}(v_tableinst, v_n, r) = ?(tableinst') + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS r'_lst}) + -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) -- where {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS r'_lst} = v_tableinst {at, i, j_opt, r'_lst, rt} -- if (tableinst' = {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) -- if ($proj_uN_0(i').0 = (|r'_lst| + v_n)) @@ -10270,6 +12497,9 @@ def $growtable(v_tableinst : tableinst, nat : nat, v_ref : ref) : tableinst? def $growmem(v_meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{v_meminst : meminst, v_n : nat, meminst' : meminst, at : addrtype, i : uN, j_opt : u64?, b_lst : byte*, i' : uN}(v_meminst, v_n) = ?(meminst') + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES b_lst}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i', j_opt)), BYTES b_lst ++ mk_byte_byte(0)^(v_n * (64 * $Ki)){}}) -- where {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES b_lst} = v_meminst {at, b_lst, i, j_opt} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i', j_opt)), BYTES b_lst ++ mk_byte_byte(0)^(v_n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b_lst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (v_n : nat <:> rat))) @@ -10281,12 +12511,16 @@ relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule mk_Num_ok{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule mk_Vec_ok{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -10296,48 +12530,80 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF_NULL_ref(ht), REF_reftype(?(NULL_null), ht')) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF_NULL_ref(ht)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF_I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF_I31_NUM_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF_STRUCT_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF_STRUCT_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF_ARRAY_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF_ARRAY_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF_FUNC_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF_FUNC_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF_EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(REF_EXN_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF_HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF_HOST_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 rule extern{s : store, v_addrref : addrref}: `%|-%:%`(s, REF_EXTERN_ref(v_addrref), REF_reftype(?(), EXTERN_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF_EXTERN_ref(v_addrref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, $ref_addrref(v_addrref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, v_ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, v_ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(v_ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) } @@ -10347,16 +12613,23 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, v_num : num, nt : numtype}: `%|-%:%`(s, $val_num(v_num), $valtype_numtype(nt)) + -- wf_store: `%`(s) + -- wf_num: `%`(v_num) -- Num_ok: `%|-%:%`(s, v_num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, v_vec : vec, vt : vectype}: `%|-%:%`(s, $val_vec(v_vec), $valtype_vectype(vt)) + -- wf_store: `%`(s) + -- wf_vec: `%`(v_vec) -- Vec_ok: `%|-%:%`(s, v_vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, v_ref : ref, rt : reftype}: `%|-%:%`(s, $val_ref(v_ref), $valtype_reftype(rt)) + -- wf_store: `%`(s) + -- wf_ref: `%`(v_ref) + -- wf_reftype: `%`(rt) -- Ref_ok: `%|-%:%`(s, v_ref, rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -10367,36 +12640,50 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 rule tag{s : store, a : addr, v_taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(v_taginst.TYPE_taginst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(v_taginst.TYPE_taginst)) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = v_taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 rule global{s : store, a : addr, v_globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(v_globalinst.TYPE_globalinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(v_globalinst.TYPE_globalinst)) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = v_globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 rule mem{s : store, a : addr, v_meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(v_meminst.TYPE_meminst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(v_meminst.TYPE_meminst)) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = v_meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 rule table{s : store, a : addr, v_tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(v_tableinst.TYPE_tableinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(v_tableinst.TYPE_tableinst)) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = v_tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, v_funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(v_funcinst.TYPE_funcinst))) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(v_funcinst.TYPE_funcinst))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = v_funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 rule sub{s : store, v_externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, v_externaddr, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Externaddr_ok: `%|-%:%`(s, v_externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) } @@ -10436,6 +12723,12 @@ relation Step_pure_before_ref_eq_true: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_eq_null_0{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF_EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) + -- wf_ref: `%`(REF_NULL_ref(ht_1)) + -- wf_ref: `%`(REF_NULL_ref(ht_2)) -- if ((ref_1 = REF_NULL_ref(ht_1)) /\ (ref_2 = REF_NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10443,66 +12736,96 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{v_val : val}: `%~>%`([$instr_val(v_val) DROP_instr], []) + -- wf_val: `%`(v_val) + -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule select_true{val_1 : val, val_2 : val, c : num_, t_lst_opt : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t_lst_opt)], [$instr_val(val_1)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t_lst_opt)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule select_false{val_1 : val, val_2 : val, c : num_, t_lst_opt : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t_lst_opt)], [$instr_val(val_2)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t_lst_opt)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule if_true{c : num_, bt : blocktype, instr_1_lst : instr*, instr_2_lst : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)], [BLOCK_instr(bt, instr_1_lst)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1_lst)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule if_false{c : num_, bt : blocktype, instr_1_lst : instr*, instr_2_lst : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)], [BLOCK_instr(bt, instr_2_lst)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2_lst)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule label_vals{v_n : n, instr_lst : instr*, val_lst : val*}: `%~>%`([LABEL__instr(v_n, instr_lst, $instr_val(v_val)*{v_val <- val_lst})], $instr_val(v_val)*{v_val <- val_lst}) + -- wf_instr: `%`(LABEL__instr(v_n, instr_lst, $instr_val(v_val)*{v_val <- val_lst})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_label_zero{v_n : n, instr'_lst : instr*, val'_lst : val*, val_lst : val*, l : labelidx, instr_lst : instr*}: `%~>%`([LABEL__instr(v_n, instr'_lst, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)], $instr_val(v_val)^v_n{v_val <- val_lst} ++ instr'_lst) + -- wf_instr: `%`(LABEL__instr(v_n, instr'_lst, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)) -- if ($proj_uN_0(l).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_label_succ{v_n : n, instr'_lst : instr*, val_lst : val*, l : labelidx, instr_lst : instr*}: `%~>%`([LABEL__instr(v_n, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)], $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(mk_uN_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- wf_instr: `%`(LABEL__instr(v_n, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)) + -- wf_instr: `%`(BR_instr(mk_uN_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if ($proj_uN_0(l).0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_handler{v_n : n, catch_lst : catch*, val_lst : val*, l : labelidx, instr_lst : instr*}: `%~>%`([HANDLER__instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)], $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)]) + -- wf_instr: `%`(HANDLER__instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_if_true{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_if_false{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) @@ -10511,296 +12834,491 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l_lst, l')], [BR_instr(l_lst[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l_lst|) -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l_lst, l')) + -- wf_instr: `%`(BR_instr(l_lst[$proj_uN_0(!($proj_num__0(i))).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_table_ge{i : num_, l_lst : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l_lst, l')], [BR_instr(l')]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l_lst, l')) + -- wf_instr: `%`(BR_instr(l')) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l_lst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_null_null{v_val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(v_val) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- wf_val: `%`(v_val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(REF_NULL_val(ht)) -- if (v_val = REF_NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_null_addr{v_val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(v_val) BR_ON_NULL_instr(l)], [$instr_val(v_val)]) -- if (v_val =/= REF_NULL_val(ht)) + -- wf_val: `%`(v_val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_non_null_null{v_val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(v_val) BR_ON_NON_NULL_instr(l)], []) + -- wf_val: `%`(v_val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(REF_NULL_val(ht)) -- if (v_val = REF_NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_non_null_addr{v_val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(v_val) BR_ON_NON_NULL_instr(l)], [$instr_val(v_val) BR_instr(l)]) -- if (v_val =/= REF_NULL_val(ht)) + -- wf_val: `%`(v_val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE_GET_instr(x) REF_CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE_GET_instr(x)) + -- wf_instr: `%`(REF_CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE_GET_instr(x) REF_CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE_GET_instr(x)) + -- wf_instr: `%`(REF_CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule frame_vals{v_n : n, f : frame, val_lst : val*}: `%~>%`([FRAME__instr(v_n, f, $instr_val(v_val)^v_n{v_val <- val_lst})], $instr_val(v_val)^v_n{v_val <- val_lst}) + -- wf_instr: `%`(FRAME__instr(v_n, f, $instr_val(v_val)^v_n{v_val <- val_lst})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_frame{v_n : n, f : frame, val'_lst : val*, val_lst : val*, instr_lst : instr*}: `%~>%`([FRAME__instr(v_n, f, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)], $instr_val(v_val)^v_n{v_val <- val_lst}) + -- wf_instr: `%`(FRAME__instr(v_n, f, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_label{v_n : n, instr'_lst : instr*, val_lst : val*, instr_lst : instr*}: `%~>%`([LABEL__instr(v_n, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)], $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr]) + -- wf_instr: `%`(LABEL__instr(v_n, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_handler{v_n : n, catch_lst : catch*, val_lst : val*, instr_lst : instr*}: `%~>%`([HANDLER__instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)], $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr]) + -- wf_instr: `%`(HANDLER__instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)) + -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule handler_vals{v_n : n, catch_lst : catch*, val_lst : val*}: `%~>%`([HANDLER__instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst})], $instr_val(v_val)*{v_val <- val_lst}) + -- wf_instr: `%`(HANDLER__instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule trap_instrs{val_lst : val*, instr_lst : instr*}: `%~>%`($instr_val(v_val)*{v_val <- val_lst} ++ [TRAP_instr] ++ instr_lst, [TRAP_instr]) + -- (wf_val: `%`(v_val))*{v_val <- val_lst} + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + -- wf_instr: `%`(TRAP_instr) -- if ((val_lst =/= []) \/ (instr_lst =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule trap_label{v_n : n, instr'_lst : instr*}: `%~>%`([LABEL__instr(v_n, instr'_lst, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(LABEL__instr(v_n, instr'_lst, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule trap_frame{v_n : n, f : frame}: `%~>%`([FRAME__instr(v_n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(FRAME__instr(v_n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local_tee{v_val : val, x : idx}: `%~>%`([$instr_val(v_val) LOCAL_TEE_instr(x)], [$instr_val(v_val) $instr_val(v_val) LOCAL_SET_instr(x)]) + -- wf_val: `%`(v_val) + -- wf_instr: `%`(LOCAL_TEE_instr(x)) + -- wf_instr: `%`(LOCAL_SET_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF_I31_instr], [REF_I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(REF_I31_instr) + -- wf_instr: `%`(REF_I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_is_null_true{v_ref : ref, ht : heaptype}: `%~>%`([$instr_ref(v_ref) REF_IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) + -- wf_ref: `%`(v_ref) + -- wf_instr: `%`(REF_IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) + -- wf_ref: `%`(REF_NULL_ref(ht)) -- if (v_ref = REF_NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_is_null_false{v_ref : ref, ht : heaptype}: `%~>%`([$instr_ref(v_ref) REF_IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))]) -- if (v_ref =/= REF_NULL_ref(ht)) + -- wf_ref: `%`(v_ref) + -- wf_instr: `%`(REF_IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_as_non_null_null{v_ref : ref, ht : heaptype}: `%~>%`([$instr_ref(v_ref) REF_AS_NON_NULL_instr], [TRAP_instr]) + -- wf_ref: `%`(v_ref) + -- wf_instr: `%`(REF_AS_NON_NULL_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(REF_NULL_ref(ht)) -- if (v_ref = REF_NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_as_non_null_addr{v_ref : ref, ht : heaptype}: `%~>%`([$instr_ref(v_ref) REF_AS_NON_NULL_instr], [$instr_ref(v_ref)]) -- if (v_ref =/= REF_NULL_ref(ht)) + -- wf_ref: `%`(v_ref) + -- wf_instr: `%`(REF_AS_NON_NULL_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_eq_null{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF_EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) + -- wf_ref: `%`(REF_NULL_ref(ht_1)) + -- wf_ref: `%`(REF_NULL_ref(ht_2)) -- if ((ref_1 = REF_NULL_ref(ht_1)) /\ (ref_2 = REF_NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_eq_true{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) -- if ((ref_1 =/= REF_NULL_ref(ht_1)) \/ (ref_2 =/= REF_NULL_ref(ht_2))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF_EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_eq_false{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))]) -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF_NULL_ref(ht_1)) \/ (ref_2 =/= REF_NULL_ref(ht_2)))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF_EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule i31_get_null{ht : heaptype, v_sx : sx}: `%~>%`([REF_NULL_instr(ht) I31_GET_instr(v_sx)], [TRAP_instr]) + -- wf_instr: `%`(REF_NULL_instr(ht)) + -- wf_instr: `%`(I31_GET_instr(v_sx)) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule i31_get_num{i : u31, v_sx : sx}: `%~>%`([REF_I31_NUM_instr(i) I31_GET_instr(v_sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, v_sx, i)))]) + -- wf_instr: `%`(REF_I31_NUM_instr(i)) + -- wf_instr: `%`(I31_GET_instr(v_sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, v_sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new{v_val : val, v_n : n, x : idx}: `%~>%`([$instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_instr(x)], $instr_val(v_val)^v_n{} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) + -- wf_val: `%`(v_val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n)))) + -- wf_instr: `%`(ARRAY_NEW_instr(x)) + -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule extern_convert_any_null{ht : heaptype}: `%~>%`([REF_NULL_instr(ht) EXTERN_CONVERT_ANY_instr], [REF_NULL_instr(EXTERN_heaptype)]) + -- wf_instr: `%`(REF_NULL_instr(ht)) + -- wf_instr: `%`(EXTERN_CONVERT_ANY_instr) + -- wf_instr: `%`(REF_NULL_instr(EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule extern_convert_any_addr{v_addrref : addrref}: `%~>%`([$instr_addrref(v_addrref) EXTERN_CONVERT_ANY_instr], [REF_EXTERN_instr(v_addrref)]) + -- wf_instr: `%`(EXTERN_CONVERT_ANY_instr) + -- wf_instr: `%`(REF_EXTERN_instr(v_addrref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule any_convert_extern_null{ht : heaptype}: `%~>%`([REF_NULL_instr(ht) ANY_CONVERT_EXTERN_instr], [REF_NULL_instr(ANY_heaptype)]) + -- wf_instr: `%`(REF_NULL_instr(ht)) + -- wf_instr: `%`(ANY_CONVERT_EXTERN_instr) + -- wf_instr: `%`(REF_NULL_instr(ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule any_convert_extern_addr{v_addrref : addrref}: `%~>%`([REF_EXTERN_instr(v_addrref) ANY_CONVERT_EXTERN_instr], [$instr_addrref(v_addrref)]) + -- wf_instr: `%`(REF_EXTERN_instr(v_addrref)) + -- wf_instr: `%`(ANY_CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unop_val{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$fun_unop_(nt, unop, c_1)| > 0) -- if (c <- $fun_unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unop_trap{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) -- if ($fun_unop_(nt, unop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule binop_val{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if (|$fun_binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $fun_binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule binop_trap{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) -- if ($fun_binop_(nt, binop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $fun_testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $fun_relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule cvtop_val{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) -- if (|$fun_cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $fun_cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule cvtop_trap{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) -- if ($fun_cvtop__(nt_1, nt_2, cvtop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, v_vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, v_vvunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, v_vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvunop_(V128_vectype, v_vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, v_vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, v_vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, v_vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, v_vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvbinop_(V128_vectype, v_vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, v_vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, v_vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, v_vvternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, v_vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$vvternop_(V128_vectype, v_vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, v_vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(128, mk_uN_uN(0)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, mk_uN_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vunop_val{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$fun_vunop_(sh, vunop, c_1)| > 0) -- if (c <- $fun_vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vunop_trap{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) -- if ($fun_vunop_(sh, vunop, c_1) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbinop_val{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$fun_vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $fun_vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbinop_trap{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) -- if ($fun_vbinop_(sh, vbinop, c_1, c_2) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vternop_val{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (|$fun_vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $fun_vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vternop_trap{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) -- if ($fun_vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- if ($proj_num__0(i) =/= ?()) -- if (!($proj_num__0(i)) = $fun_vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $fun_vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if (c = $fun_vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $fun_vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, i_lst : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i_lst)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i_lst)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vshufflop_(sh, i_lst, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{v_Lnn : Lnn, c_1 : num_, v_M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(v_Lnn), c_1) VSPLAT_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)))], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(CONST_instr($lunpack(v_Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(v_Lnn, mk_dim_dim(v_M))) -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), $lpacknum_(v_Lnn, c_1)^v_M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextract_lane_num{c_1 : vec_, nt : numtype, v_M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M))) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextract_lane_pack{c_1 : vec_, pt : packtype, v_M : M, v_sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), ?(v_sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), ?(v_sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M))) -- if ($proj_num__0(c_2) =/= ?()) -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), c_1)[$proj_uN_0(i).0]) =/= ?()) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), c_1)|) @@ -10809,46 +13327,77 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, v_Lnn : Lnn, c_2 : num_, v_M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(v_Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), i)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(v_Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(v_Lnn, mk_dim_dim(v_M))) -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), $lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(v_Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($fun_vextunop__(sh_1, sh_2, vextunop, c_1) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($fun_vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($fun_vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, v_sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, v_sx)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, v_sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, v_sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if (c = $fun_vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(v_state : state, v_blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, t_1_lst : valtype*, t_2_lst : valtype*}(z, _IDX_blocktype(x)) = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- Expand: `%~~%`($fun_type(z, x), FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, t_opt : valtype?}(z, _RESULT_blocktype(t_opt)) = mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(lift(t_opt))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(lift(t_opt)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_br_on_cast_fail: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_succeed_0{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) @@ -10857,14 +13406,57 @@ relation Step_read_before_br_on_cast_fail_fail: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_fail_succeed_0{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_throw_ref_handler_next: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_handler_catch_all_ref_0{z : state, v_n : n, l : labelidx, catch'_lst : catch*, a : addr}: + `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_handler_catch_all_0{z : state, v_n : n, l : labelidx, catch'_lst : catch*, a : addr}: + `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_handler_catch_ref_0{z : state, v_n : n, x : idx, l : labelidx, catch'_lst : catch*, a : addr, val_lst : val*}: + `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(v_val))*{v_val <- val_lst} + -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$fun_exninst(z)|) + -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) + -- if ($fun_exninst(z)[a].TAG_exninst = $fun_tagaddr(z)[$proj_uN_0(x).0]) + -- if (val_lst = $fun_exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_handler_catch_0{z : state, v_n : n, x : idx, l : labelidx, catch'_lst : catch*, a : addr, val_lst : val*}: + `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(v_val))*{v_val <- val_lst} + -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$fun_exninst(z)|) + -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) + -- if ($fun_exninst(z)[a].TAG_exninst = $fun_tagaddr(z)[$proj_uN_0(x).0]) + -- if (val_lst = $fun_exninst(z)[a].FIELDS_exninst) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_table_fill_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_fill_oob_0{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) @@ -10873,6 +13465,8 @@ relation Step_read_before_table_copy_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_oob_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) @@ -10882,12 +13476,15 @@ relation Step_read_before_table_copy_le: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_zero_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) -- ~ Step_read_before_table_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_oob_1{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) @@ -10897,6 +13494,8 @@ relation Step_read_before_table_init_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_init_oob_0{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|)) @@ -10906,6 +13505,8 @@ relation Step_read_before_memory_fill_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_fill_oob_0{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) @@ -10914,6 +13515,8 @@ relation Step_read_before_memory_copy_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_oob_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_mem(z, x_2).BYTES_meminst|)) @@ -10923,12 +13526,15 @@ relation Step_read_before_memory_copy_le: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_zero_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) -- ~ Step_read_before_memory_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_oob_1{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_mem(z, x_2).BYTES_meminst|)) @@ -10938,6 +13544,8 @@ relation Step_read_before_memory_init_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_init_oob_0{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_data(z, y).BYTES_datainst|)) @@ -10947,6 +13555,10 @@ relation Step_read_before_ref_test_false: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_test_true_0{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -10955,6 +13567,9 @@ relation Step_read_before_ref_cast_fail: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_cast_succeed_0{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) @@ -10963,6 +13578,8 @@ relation Step_read_before_array_fill_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_fill_oob_0{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -10972,6 +13589,8 @@ relation Step_read_before_array_copy_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob2_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -10979,6 +13598,8 @@ relation Step_read_before_array_copy_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob1_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -10988,12 +13609,15 @@ relation Step_read_before_array_copy_le: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_zero_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- ~ Step_read_before_array_copy_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob2_1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -11001,6 +13625,8 @@ relation Step_read_before_array_copy_le: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob1_1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -11010,21 +13636,36 @@ relation Step_read_before_array_copy_gt: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_le_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- ~ Step_read_before_array_copy_le: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY_GET_instr(sx_opt, x_2)) + -- wf_instr: `%`(ARRAY_SET_instr(x_1)) -- if ($proj_num__0(i_1) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) -- if ($proj_num__0(i_2) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY_COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) + -- ~ Step_read_before_array_copy_le: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = $fun_sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_zero_1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- ~ Step_read_before_array_copy_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob2_2{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -11032,6 +13673,8 @@ relation Step_read_before_array_copy_gt: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob1_2{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -11041,12 +13684,16 @@ relation Step_read_before_array_init_elem_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_oob2_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_oob1_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -11056,6 +13703,9 @@ relation Step_read_before_array_init_data_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob2_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) @@ -11063,6 +13713,8 @@ relation Step_read_before_array_init_data_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob1_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -11072,12 +13724,16 @@ relation Step_read_before_array_init_data_num: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_zero_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) -- ~ Step_read_before_array_init_data_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob2_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) @@ -11085,6 +13741,8 @@ relation Step_read_before_array_init_data_num: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob1_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -11094,49 +13752,75 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, val_lst : val*, v_m : m, bt : blocktype, instr_lst : instr*, v_n : n, t_1_lst : valtype*, t_2_lst : valtype*}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [BLOCK_instr(bt, instr_lst)]), [LABEL__instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)]) + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [BLOCK_instr(bt, instr_lst)])) + -- wf_instr: `%`(LABEL__instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- if ($blocktype_(z, bt) = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, val_lst : val*, v_m : m, bt : blocktype, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, v_n : n}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [LOOP_instr(bt, instr_lst)]), [LABEL__instr(v_m, [LOOP_instr(bt, instr_lst)], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)]) + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [LOOP_instr(bt, instr_lst)])) + -- wf_instr: `%`(LABEL__instr(v_m, [LOOP_instr(bt, instr_lst)], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- if ($blocktype_(z, bt) = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_succeed{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref) BR_instr(l)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_fail{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref)]) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- ~ Step_read_before_br_on_cast_fail: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_fail_succeed{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_fail_fail{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref) BR_instr(l)]) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) -- ~ Step_read_before_br_on_cast_fail_fail: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(mk_config_config(z, [CALL_instr(x)]), [REF_FUNC_ADDR_instr(a) CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))]) -- if (a < |$fun_funcinst(z)|) + -- wf_config: `%`(mk_config_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(REF_FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))) -- if ($proj_uN_0(x).0 < |$fun_moduleinst(z).FUNCS_moduleinst|) -- if ($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_ref_null{z : state, ht : heaptype, yy : typeuse}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_ref_func{z : state, val_lst : val*, v_n : n, a : addr, yy : typeuse, v_m : m, f : frame, instr_lst : instr*, fi : funcinst, t_1_lst : valtype*, t_2_lst : valtype*, x : idx, t_lst : valtype*}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [FRAME__instr(v_m, f, [LABEL__instr(v_m, [], instr_lst)])]) + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(FRAME__instr(v_m, f, [LABEL__instr(v_m, [], instr_lst)])) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- t_lst}, instr_lst)) + -- wf_frame: `%`({LOCALS ?(v_val)^v_n{v_val <- val_lst} ++ $default_(t)*{t <- t_lst}, MODULE fi.MODULE_funcinst}) -- if (a < |$fun_funcinst(z)|) -- if ($fun_funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) @@ -11147,51 +13831,81 @@ relation Step_read: `%~>%`(config, instr*) rule return_call{z : state, x : idx, a : addr}: `%~>%`(mk_config_config(z, [RETURN_CALL_instr(x)]), [REF_FUNC_ADDR_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))]) -- if (a < |$fun_funcinst(z)|) + -- wf_config: `%`(mk_config_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(REF_FUNC_ADDR_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))) -- if ($proj_uN_0(x).0 < |$fun_moduleinst(z).FUNCS_moduleinst|) -- if ($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_ref_label{z : state, k : n, instr'_lst : instr*, val_lst : val*, yy : typeuse, instr_lst : instr*}: `%~>%`(mk_config_config(z, [LABEL__instr(k, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(mk_config_config(z, [LABEL__instr(k, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_ref_handler{z : state, k : n, catch_lst : catch*, val_lst : val*, yy : typeuse, instr_lst : instr*}: `%~>%`(mk_config_config(z, [HANDLER__instr(k, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(k, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_ref_frame_null{z : state, k : n, f : frame, val_lst : val*, ht : heaptype, yy : typeuse, instr_lst : instr*}: `%~>%`(mk_config_config(z, [FRAME__instr(k, f, $instr_val(v_val)*{v_val <- val_lst} ++ [REF_NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [FRAME__instr(k, f, $instr_val(v_val)*{v_val <- val_lst} ++ [REF_NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_ref_frame_addr{z : state, k : n, f : frame, val'_lst : val*, val_lst : val*, v_n : n, a : addr, yy : typeuse, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, v_m : m}: `%~>%`(mk_config_config(z, [FRAME__instr(k, f, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + -- wf_config: `%`(mk_config_config(z, [FRAME__instr(k, f, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)])) + -- wf_instr: `%`(REF_FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if (a < |$fun_funcinst(z)|) -- Expand: `%~~%`($fun_funcinst(z)[a].TYPE_funcinst, FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_null{z : state, ht : heaptype}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_instrs{z : state, val_lst : val*, a : addr, instr_lst : instr*}: `%~>%`(mk_config_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ [REF_EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr_lst), [REF_EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ [REF_EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr_lst)) + -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) -- if ((val_lst =/= []) \/ (instr_lst =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_label{z : state, v_n : n, instr'_lst : instr*, a : addr}: `%~>%`(mk_config_config(z, [LABEL__instr(v_n, instr'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [REF_EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(mk_config_config(z, [LABEL__instr(v_n, instr'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_frame{z : state, v_n : n, f : frame, a : addr}: `%~>%`(mk_config_config(z, [FRAME__instr(v_n, f, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [REF_EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(mk_config_config(z, [FRAME__instr(v_n, f, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_empty{z : state, v_n : n, a : addr}: `%~>%`(mk_config_config(z, [HANDLER__instr(v_n, [], [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [REF_EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [], [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_catch{z : state, v_n : n, x : idx, l : labelidx, catch'_lst : catch*, a : addr, val_lst : val*}: `%~>%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)]) + -- (wf_val: `%`(v_val))*{v_val <- val_lst} + -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) -- if (a < |$fun_exninst(z)|) -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) -- if ($fun_exninst(z)[a].TAG_exninst = $fun_tagaddr(z)[$proj_uN_0(x).0]) @@ -11200,6 +13914,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_catch_ref{z : state, v_n : n, x : idx, l : labelidx, catch'_lst : catch*, a : addr, val_lst : val*}: `%~>%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(v_val)*{v_val <- val_lst} ++ [REF_EXN_ADDR_instr(a) BR_instr(l)]) + -- (wf_val: `%`(v_val))*{v_val <- val_lst} + -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) -- if (a < |$fun_exninst(z)|) -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) -- if ($fun_exninst(z)[a].TAG_exninst = $fun_tagaddr(z)[$proj_uN_0(x).0]) @@ -11208,36 +13926,50 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_catch_all{z : state, v_n : n, l : labelidx, catch'_lst : catch*, a : addr}: `%~>%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_catch_all_ref{z : state, v_n : n, l : labelidx, catch'_lst : catch*, a : addr}: `%~>%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [REF_EXN_ADDR_instr(a) BR_instr(l)]) + -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule throw_ref_handler_next{z : state, v_n : n, v_catch : catch, catch'_lst : catch*, a : addr, x : idx, val_lst : val*, x : idx, val_lst : val*}: + rule throw_ref_handler_next{z : state, v_n : n, v_catch : catch, catch'_lst : catch*, a : addr}: `%~>%`(mk_config_config(z, [HANDLER__instr(v_n, [v_catch] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [HANDLER__instr(v_n, catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]) - -- if (a < |$fun_exninst(z)|) - -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) - -- if (((($fun_exninst(z)[a].TAG_exninst =/= $fun_tagaddr(z)[$proj_uN_0(x).0]) \/ (val_lst =/= $fun_exninst(z)[a].FIELDS_exninst)) \/ ($fun_exninst(z)[a].TAG_exninst =/= $fun_tagaddr(z)[$proj_uN_0(x).0])) \/ (val_lst =/= $fun_exninst(z)[a].FIELDS_exninst)) + -- wf_config: `%`(mk_config_config(z, [HANDLER__instr(v_n, [v_catch] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(HANDLER__instr(v_n, catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])) + -- ~ Step_read_before_throw_ref_handler_next: `%`(mk_config_config(z, [HANDLER__instr(v_n, [v_catch] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, val_lst : val*, v_m : m, bt : blocktype, catch_lst : catch*, instr_lst : instr*, v_n : n, t_1_lst : valtype*, t_2_lst : valtype*}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [TRY_TABLE_instr(bt, mk_list_list(catch_lst), instr_lst)]), [HANDLER__instr(v_n, catch_lst, [LABEL__instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)])]) + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [TRY_TABLE_instr(bt, mk_list_list(catch_lst), instr_lst)])) + -- wf_instr: `%`(HANDLER__instr(v_n, catch_lst, [LABEL__instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)])) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- if ($blocktype_(z, bt) = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local_get{z : state, x : idx, v_val : val}: `%~>%`(mk_config_config(z, [LOCAL_GET_instr(x)]), [$instr_val(v_val)]) + -- wf_val: `%`(v_val) + -- wf_config: `%`(mk_config_config(z, [LOCAL_GET_instr(x)])) -- if ($fun_local(z, x) = ?(v_val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global_get{z : state, x : idx, v_val : val}: `%~>%`(mk_config_config(z, [GLOBAL_GET_instr(x)]), [$instr_val(v_val)]) + -- wf_val: `%`(v_val) + -- wf_config: `%`(mk_config_config(z, [GLOBAL_GET_instr(x)])) -- if ($fun_global(z, x).VALUE_globalinst = v_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_get_oob{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE_GET_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE_GET_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_table(z, x).REFS_tableinst|) @@ -11246,16 +13978,22 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE_GET_instr(x)]), [$instr_ref($fun_table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_table(z, x).REFS_tableinst|) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE_GET_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_size{z : state, x : idx, at : addrtype, v_n : n, lim : limits, rt : reftype}: `%~>%`(mk_config_config(z, [TABLE_SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n)))]) + -- wf_config: `%`(mk_config_config(z, [TABLE_SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n)))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) -- if (|$fun_table(z, x).REFS_tableinst| = v_n) -- if ($fun_table(z, x).TYPE_tableinst = mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_fill_oob{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) @@ -11264,6 +14002,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)]), []) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11271,10 +14010,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) -- if ((v_n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(TABLE_SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE_FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_oob{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) @@ -11285,6 +14032,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_table(z, x_2).REFS_tableinst|)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11293,6 +14041,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((v_n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_table(z, x_2).REFS_tableinst|))) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(TABLE_GET_instr(y)) + -- wf_instr: `%`(TABLE_SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE_COPY_instr(x, y)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11301,10 +14058,21 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (v_n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_table(z, x_2).REFS_tableinst|))) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE_GET_instr(y)) + -- wf_instr: `%`(TABLE_SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE_COPY_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_init_oob{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|)) @@ -11315,6 +14083,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11324,52 +14093,77 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ((v_n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|))) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(TABLE_SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE_INIT_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule load_num_oob{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule load_num_val{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule load_pack_oob{z : state, at : addrtype, i : num_, v_Inn : Inn, v_n : n, v_sx : sx, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_n), v_sx))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_n), v_sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule load_pack_val{z : state, at : addrtype, i : num_, v_Inn : Inn, v_n : n, v_sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_n), v_sx))), x, ao)]), [CONST_instr($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, $extend__(v_n, $size($numtype_addrtype(v_Inn)), v_sx, c)))]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_n), v_sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, $extend__(v_n, $size($numtype_addrtype(v_Inn)), v_sx, c)))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(v_n, c) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_oob{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_val{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_pack_oob{z : state, at : addrtype, i : num_, v_M : M, v_K : K, v_sx : sx, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_K, v_sx)), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_K, v_sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((v_M * v_K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_pack_val{z : state, at : addrtype, i : num_, v_M : M, v_K : K, v_sx : sx, x : idx, ao : memarg, c : vec_, j_lst : iN*, k_lst : nat*, v_Jnn : Jnn}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_K, v_sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_K, v_sx)), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_K))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_K))), mk_lane__2_lane_(v_Jnn, $extend__(v_M, $jsizenn(v_Jnn), v_sx, j))))^v_K{j <- j_lst} -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((v_M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_splat_oob{z : state, at : addrtype, i : num_, v_N : N, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_splat_val{z : state, at : addrtype, i : num_, v_N : N, x : idx, ao : memarg, c : vec_, j : iN, v_Jnn : Jnn, v_M : M}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(v_Jnn, mk_uN_uN($proj_uN_0(j).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(v_N, j) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (v_N = $jsize(v_Jnn)) @@ -11392,12 +14192,17 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_zero_oob{z : state, at : addrtype, i : num_, v_N : N, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_zero_val{z : state, at : addrtype, i : num_, v_N : N, x : idx, ao : memarg, c : vec_, j : iN}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_uN: `%%`(v_N, j) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(v_N, j) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(v_N, 128, U_sx, j)) @@ -11405,12 +14210,18 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_lane_oob{z : state, at : addrtype, i : num_, c_1 : vec_, v_N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_lane_val{z : state, at : addrtype, i : num_, c_1 : vec_, v_N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, v_Jnn : Jnn, v_M : M}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(v_Jnn, mk_uN_uN($proj_uN_0(k).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(v_N, k) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (v_N = $jsize(v_Jnn)) @@ -11420,12 +14231,17 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_size{z : state, x : idx, at : addrtype, v_n : n, lim : limits}: `%~>%`(mk_config_config(z, [MEMORY_SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n)))]) + -- wf_config: `%`(mk_config_config(z, [MEMORY_SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((v_n * (64 * $Ki)) = |$fun_mem(z, x).BYTES_meminst|) -- if ($fun_mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_fill_oob{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) @@ -11434,6 +14250,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)]), []) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11441,10 +14258,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) -- if ((v_n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY_FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_oob{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_mem(z, x_2).BYTES_meminst|)) @@ -11455,6 +14280,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11463,6 +14289,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((v_n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|))) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY_COPY_instr(x_1, x_2)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11471,10 +14306,21 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (v_n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|))) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY_COPY_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_init_oob{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_data(z, y).BYTES_datainst|)) @@ -11485,6 +14331,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_data(z, y).BYTES_datainst|)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11494,41 +14341,68 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ((v_n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_data(z, y).BYTES_datainst|))) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN($proj_byte_0($fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY_INIT_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_null_idx{z : state, x : idx}: `%~>%`(mk_config_config(z, [REF_NULL_instr(_IDX_heaptype(x))]), [REF_NULL_instr($heaptype_deftype($fun_type(z, x)))]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(_IDX_heaptype(x))])) + -- wf_instr: `%`(REF_NULL_instr($heaptype_deftype($fun_type(z, x)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_func{z : state, x : idx}: `%~>%`(mk_config_config(z, [REF_FUNC_instr(x)]), [REF_FUNC_ADDR_instr($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) -- if ($proj_uN_0(x).0 < |$fun_moduleinst(z).FUNCS_moduleinst|) + -- wf_config: `%`(mk_config_config(z, [REF_FUNC_instr(x)])) + -- wf_instr: `%`(REF_FUNC_ADDR_instr($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_test_true{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_test_false{s : store, f : frame, v_ref : ref, rt : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))]) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) -- ~ Step_read_before_ref_test_false: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_cast_succeed{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)]), [$instr_ref(v_ref)]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_cast_fail{s : store, f : frame, v_ref : ref, rt : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) -- ~ Step_read_before_ref_cast_fail: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct_new_default{z : state, x : idx, val_lst : val*, mut_opt_lst : mut?*, zt_lst : storagetype*}: `%~>%`(mk_config_config(z, [STRUCT_NEW_DEFAULT_instr(x)]), $instr_val(v_val)*{v_val <- val_lst} ++ [STRUCT_NEW_instr(x)]) + -- (wf_val: `%`(v_val))*{v_val <- val_lst} + -- wf_config: `%`(mk_config_config(z, [STRUCT_NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(STRUCT_NEW_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if (|val_lst| = |zt_lst|) -- (if ($default_($unpack(zt)) = ?(v_val)))*{v_val <- val_lst, zt <- zt_lst} @@ -11536,6 +14410,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct_get_null{z : state, ht : heaptype, sx_opt : sx?, x : idx, i : u32}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) STRUCT_GET_instr(sx_opt, x, i)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) STRUCT_GET_instr(sx_opt, x, i)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct_get_struct{z : state, a : addr, sx_opt : sx?, x : idx, i : u32, zt_lst : storagetype*, mut_opt_lst : mut?*}: @@ -11543,29 +14419,43 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(i).0 < |zt_lst|) -- if ($proj_uN_0(i).0 < |$fun_structinst(z)[a].FIELDS_structinst|) -- if (a < |$fun_structinst(z)|) + -- wf_config: `%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) STRUCT_GET_instr(sx_opt, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new_default{z : state, v_n : n, x : idx, v_val : val, mut_opt : mut?, zt : storagetype}: `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DEFAULT_instr(x)]), $instr_val(v_val)^v_n{} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) + -- wf_val: `%`(v_val) + -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($default_($unpack(zt)) = ?(v_val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new_elem_oob{z : state, i : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new_elem_alloc{z : state, i : num_, v_n : n, x : idx, y : idx, ref_lst : ref*}: `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_ELEM_instr(x, y)]), $instr_ref(v_ref)^v_n{v_ref <- ref_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) + -- (wf_ref: `%`(v_ref))*{v_ref <- ref_lst} + -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) -- if ($proj_num__0(i) =/= ?()) -- if (ref_lst = $fun_elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : v_n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new_data_oob{z : state, i : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((v_n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) @@ -11574,6 +14464,10 @@ relation Step_read: `%~>%`(config, instr*) rule array_new_data_num{z : state, i : num_, v_n : n, x : idx, y : idx, zt : storagetype, c_lst : lit_*, mut_opt : mut?}: `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^v_n{c <- c_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) -- (if ($cunpack(zt) =/= ?()))^v_n{c <- c_lst} + -- (wf_lit_: `%%`(zt, c))*{c <- c_lst} + -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^v_n{c <- c_lst}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((v_n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -11581,10 +14475,14 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_get_null{z : state, ht : heaptype, i : num_, sx_opt : sx?, x : idx}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_get_oob{z : state, a : addr, i : num_, sx_opt : sx?, x : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -11595,24 +14493,34 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$fun_arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)])) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_len_null{z : state, ht : heaptype}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) ARRAY_LEN_instr]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) ARRAY_LEN_instr])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_len_array{z : state, a : addr}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) ARRAY_LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(|$fun_arrayinst(z)[a].FIELDS_arrayinst|)))]) -- if (a < |$fun_arrayinst(z)|) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) ARRAY_LEN_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(|$fun_arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_fill_null{z : state, ht : heaptype, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_fill_oob{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -11623,6 +14531,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11631,18 +14540,31 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if ((v_n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY_SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY_FILL_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_null1{z : state, ht_1 : heaptype, i_1 : num_, v_ref : ref, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(v_ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(v_ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_null2{z : state, v_ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr(I32_numtype, i_1) REF_NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr(I32_numtype, i_1) REF_NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) @@ -11650,6 +14572,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob2{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) @@ -11662,6 +14586,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$fun_arrayinst(z)|) -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11672,6 +14597,18 @@ relation Step_read: `%~>%`(config, instr*) -- if (a_2 < |$fun_arrayinst(z)|) -- if (a_1 < |$fun_arrayinst(z)|) -- if (((v_n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY_GET_instr(sx_opt, x_2)) + -- wf_instr: `%`(ARRAY_SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY_COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = $fun_sx(zt_2))) @@ -11680,6 +14617,18 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_GET_instr(sx_opt, x_2) ARRAY_SET_instr(x_1) REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY_GET_instr(sx_opt, x_2)) + -- wf_instr: `%`(ARRAY_SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY_COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) -- ~ Step_read_before_array_copy_gt: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) -- if (sx_opt = $fun_sx(zt_2)) @@ -11687,10 +14636,14 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_null{z : state, ht : heaptype, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_oob1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -11698,6 +14651,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_oob2{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|) @@ -11708,6 +14663,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if ((($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11717,16 +14673,29 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (((v_n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|)) + -- wf_ref: `%`(v_ref) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY_SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY_INIT_ELEM_instr(x, y)) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$fun_elem(z, y).REFS_eleminst|) -- if (v_ref = $fun_elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_null{z : state, ht : heaptype, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -11734,6 +14703,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob2{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) @@ -11741,6 +14713,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_zero{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), []) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) -- ~ Step_read_before_array_init_data_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) -- if (v_n = 0) @@ -11750,6 +14723,16 @@ relation Step_read: `%~>%`(config, instr*) -- if ($cunpack(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) + -- wf_lit_: `%%`(zt, c) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY_SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY_INIT_DATA_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- ~ Step_read_before_array_init_data_num: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($zbytes_(zt, c) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -11762,48 +14745,74 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, instr_lst : instr*, instr'_lst : instr*}: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z, instr'_lst)) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z, instr'_lst)) -- Step_pure: `%~>%`(instr_lst, instr'_lst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, instr_lst : instr*, instr'_lst : instr*}: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z, instr'_lst)) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z, instr'_lst)) -- Step_read: `%~>%`(mk_config_config(z, instr_lst), instr'_lst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule ctxt_instrs{z : state, val_lst : val*, instr_lst : instr*, instr_1_lst : instr*, z' : state, instr'_lst : instr*}: `%~>%`(mk_config_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ instr_lst ++ instr_1_lst), mk_config_config(z', $instr_val(v_val)*{v_val <- val_lst} ++ instr'_lst ++ instr_1_lst)) + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ instr_lst ++ instr_1_lst)) + -- wf_config: `%`(mk_config_config(z', $instr_val(v_val)*{v_val <- val_lst} ++ instr'_lst ++ instr_1_lst)) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z', instr'_lst)) -- Step: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z', instr'_lst)) -- if ((val_lst =/= []) \/ (instr_1_lst =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule ctxt_label{z : state, v_n : n, instr_0_lst : instr*, instr_lst : instr*, z' : state, instr'_lst : instr*}: `%~>%`(mk_config_config(z, [LABEL__instr(v_n, instr_0_lst, instr_lst)]), mk_config_config(z', [LABEL__instr(v_n, instr_0_lst, instr'_lst)])) + -- wf_config: `%`(mk_config_config(z, [LABEL__instr(v_n, instr_0_lst, instr_lst)])) + -- wf_config: `%`(mk_config_config(z', [LABEL__instr(v_n, instr_0_lst, instr'_lst)])) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z', instr'_lst)) -- Step: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z', instr'_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 rule ctxt_frame{s : store, f : frame, v_n : n, f' : frame, instr_lst : instr*, s' : store, f'' : frame, instr'_lst : instr*}: `%~>%`(mk_config_config(mk_state_state(s, f), [FRAME__instr(v_n, f', instr_lst)]), mk_config_config(mk_state_state(s', f), [FRAME__instr(v_n, f'', instr'_lst)])) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [FRAME__instr(v_n, f', instr_lst)])) + -- wf_config: `%`(mk_config_config(mk_state_state(s', f), [FRAME__instr(v_n, f'', instr'_lst)])) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f'), instr_lst)) + -- wf_config: `%`(mk_config_config(mk_state_state(s', f''), instr'_lst)) -- Step: `%~>%`(mk_config_config(mk_state_state(s, f'), instr_lst), mk_config_config(mk_state_state(s', f''), instr'_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, val_lst : val*, v_n : n, x : idx, exn : exninst, a : addr, t_lst : valtype*}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [THROW_instr(x)]), mk_config_config($add_exninst(z, [exn]), [REF_EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [THROW_instr(x)])) + -- wf_config: `%`(mk_config_config($add_exninst(z, [exn]), [REF_EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) + -- wf_exninst: `%`({TAG $fun_tagaddr(z)[$proj_uN_0(x).0], FIELDS val_lst}) -- Expand: `%~~%`($as_deftype($fun_tag(z, x).TYPE_taginst), FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if (a = |$fun_exninst(z)|) - -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) -- if (exn = {TAG $fun_tagaddr(z)[$proj_uN_0(x).0], FIELDS val_lst}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 rule local_set{z : state, v_val : val, x : idx}: `%~>%`(mk_config_config(z, [$instr_val(v_val) LOCAL_SET_instr(x)]), mk_config_config($with_local(z, x, v_val), [])) + -- wf_config: `%`(mk_config_config(z, [$instr_val(v_val) LOCAL_SET_instr(x)])) + -- wf_config: `%`(mk_config_config($with_local(z, x, v_val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 rule global_set{z : state, v_val : val, x : idx}: `%~>%`(mk_config_config(z, [$instr_val(v_val) GLOBAL_SET_instr(x)]), mk_config_config($with_global(z, x, v_val), [])) + -- wf_config: `%`(mk_config_config(z, [$instr_val(v_val) GLOBAL_SET_instr(x)])) + -- wf_config: `%`(mk_config_config($with_global(z, x, v_val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule table_set_oob{z : state, at : addrtype, i : num_, v_ref : ref, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)]), mk_config_config(z, [TRAP_instr])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)])) + -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_table(z, x).REFS_tableinst|) @@ -11811,25 +14820,35 @@ relation Step: `%~>%`(config, config) rule table_set_val{z : state, at : addrtype, i : num_, v_ref : ref, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)]), mk_config_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, v_ref), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)])) + -- wf_config: `%`(mk_config_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, v_ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 rule table_grow_succeed{z : state, v_ref : ref, at : addrtype, v_n : n, x : idx, ti : tableinst}: `%~>%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)]), mk_config_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(|$fun_table(z, x).REFS_tableinst|)))])) + -- wf_config: `%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)])) + -- wf_config: `%`(mk_config_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(|$fun_table(z, x).REFS_tableinst|)))])) -- if ($growtable($fun_table(z, x), v_n, v_ref) =/= ?()) -- if (ti = !($growtable($fun_table(z, x), v_n, v_ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 rule table_grow_fail{z : state, v_ref : ref, at : addrtype, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)]), mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 rule elem_drop{z : state, x : idx}: `%~>%`(mk_config_config(z, [ELEM_DROP_instr(x)]), mk_config_config($with_elem(z, x, []), [])) + -- wf_config: `%`(mk_config_config(z, [ELEM_DROP_instr(x)])) + -- wf_config: `%`(mk_config_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule store_num_oob{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), mk_config_config(z, [TRAP_instr])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) @@ -11837,11 +14856,15 @@ relation Step: `%~>%`(config, config) rule store_num_val{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, b_lst : byte*}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if (b_lst = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule store_pack_oob{z : state, at : addrtype, i : num_, v_Inn : Inn, c : num_, v_n : n, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)]), mk_config_config(z, [TRAP_instr])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)])) + -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) @@ -11849,12 +14872,16 @@ relation Step: `%~>%`(config, config) rule store_pack_val{z : state, at : addrtype, i : num_, v_Inn : Inn, c : num_, v_n : n, x : idx, ao : memarg, b_lst : byte*}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)])) + -- wf_config: `%`(mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if ($proj_num__0(c) =/= ?()) -- if (b_lst = $ibytes_(v_n, $wrap__($size($numtype_addrtype(v_Inn)), v_n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule vstore_oob{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), mk_config_config(z, [TRAP_instr])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) @@ -11862,11 +14889,15 @@ relation Step: `%~>%`(config, config) rule vstore_val{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, b_lst : byte*}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if (b_lst = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule vstore_lane_oob{z : state, at : addrtype, i : num_, c : vec_, v_N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), mk_config_config(z, [TRAP_instr])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)])) + -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + v_N) > |$fun_mem(z, x).BYTES_meminst|) @@ -11874,29 +14905,42 @@ relation Step: `%~>%`(config, config) rule vstore_lane_val{z : state, at : addrtype, i : num_, c : vec_, v_N : N, x : idx, ao : memarg, j : laneidx, b_lst : byte*, v_Jnn : Jnn, v_M : M}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if ($proj_num__0(i) =/= ?()) - -- if (v_N = $jsize(v_Jnn)) - -- if ((v_M : nat <:> rat) = ((128 : nat <:> rat) / (v_N : nat <:> rat))) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)])) + -- wf_config: `%`(mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]) =/= ?()) -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)|) + -- wf_uN: `%%`(v_N, mk_uN_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]))).0)) + -- if (v_N = $jsize(v_Jnn)) + -- if ((v_M : nat <:> rat) = ((128 : nat <:> rat) / (v_N : nat <:> rat))) -- if (b_lst = $ibytes_(v_N, mk_uN_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]))).0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 rule memory_grow_succeed{z : state, at : addrtype, v_n : n, x : idx, mi : meminst}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)]), mk_config_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((|$fun_mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)])) + -- wf_config: `%`(mk_config_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((|$fun_mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if ($growmem($fun_mem(z, x), v_n) =/= ?()) -- if (mi = !($growmem($fun_mem(z, x), v_n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 rule memory_grow_fail{z : state, at : addrtype, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)]), mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 rule data_drop{z : state, x : idx}: `%~>%`(mk_config_config(z, [DATA_DROP_instr(x)]), mk_config_config($with_data(z, x, []), [])) + -- wf_config: `%`(mk_config_config(z, [DATA_DROP_instr(x)])) + -- wf_config: `%`(mk_config_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 rule struct_new{z : state, val_lst : val*, v_n : n, x : idx, si : structinst, a : addr, mut_opt_lst : mut?*, zt_lst : storagetype*}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [STRUCT_NEW_instr(x)]), mk_config_config($add_structinst(z, [si]), [REF_STRUCT_ADDR_instr(a)])) + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [STRUCT_NEW_instr(x)])) + -- wf_config: `%`(mk_config_config($add_structinst(z, [si]), [REF_STRUCT_ADDR_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)^v_n{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- wf_structinst: `%`({TYPE $fun_type(z, x), FIELDS $packfield_(zt, v_val)^v_n{v_val <- val_lst, zt <- zt_lst}}) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)^v_n{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if (a = |$fun_structinst(z)|) -- if (si = {TYPE $fun_type(z, x), FIELDS $packfield_(zt, v_val)^v_n{v_val <- val_lst, zt <- zt_lst}}) @@ -11904,26 +14948,39 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule struct_set_null{z : state, ht : heaptype, v_val : val, x : idx, i : u32}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) $instr_val(v_val) STRUCT_SET_instr(x, i)]), mk_config_config(z, [TRAP_instr])) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) $instr_val(v_val) STRUCT_SET_instr(x, i)])) + -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule struct_set_struct{z : state, a : addr, v_val : val, x : idx, i : u32, zt_lst : storagetype*, mut_opt_lst : mut?*}: `%~>%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) $instr_val(v_val) STRUCT_SET_instr(x, i)]), mk_config_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt_lst[$proj_uN_0(i).0], v_val)), [])) -- if ($proj_uN_0(i).0 < |zt_lst|) + -- wf_config: `%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) $instr_val(v_val) STRUCT_SET_instr(x, i)])) + -- wf_config: `%`(mk_config_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt_lst[$proj_uN_0(i).0], v_val)), [])) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 rule array_new_fixed{z : state, val_lst : val*, v_n : n, x : idx, ai : arrayinst, a : addr, mut_opt : mut?, zt : storagetype}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]), mk_config_config($add_arrayinst(z, [ai]), [REF_ARRAY_ADDR_instr(a)])) + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))])) + -- wf_config: `%`(mk_config_config($add_arrayinst(z, [ai]), [REF_ARRAY_ADDR_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- wf_arrayinst: `%`({TYPE $fun_type(z, x), FIELDS $packfield_(zt, v_val)^v_n{v_val <- val_lst}}) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ((a = |$fun_arrayinst(z)|) /\ (ai = {TYPE $fun_type(z, x), FIELDS $packfield_(zt, v_val)^v_n{v_val <- val_lst}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule array_set_null{z : state, ht : heaptype, i : num_, v_val : val, x : idx}: `%~>%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)]), mk_config_config(z, [TRAP_instr])) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)])) + -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule array_set_oob{z : state, a : addr, i : num_, v_val : val, x : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)]), mk_config_config(z, [TRAP_instr])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)])) + -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) @@ -11932,6 +14989,9 @@ relation Step: `%~>%`(config, config) rule array_set_array{z : state, a : addr, i : num_, v_val : val, x : idx, zt : storagetype, mut_opt : mut?}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)]), mk_config_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, v_val)), [])) -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)])) + -- wf_config: `%`(mk_config_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, v_val)), [])) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) } @@ -11943,10 +15003,14 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, instr_lst : instr*}: `%~>*%`(mk_config_config(z, instr_lst), mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z, instr_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, instr_lst : instr*, z'' : state, instr''_lst : instr*, z' : state, instr'_lst : instr*}: `%~>*%`(mk_config_config(z, instr_lst), mk_config_config(z'', instr''_lst)) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z'', instr''_lst)) + -- wf_config: `%`(mk_config_config(z', instr'_lst)) -- Step: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z', instr'_lst)) -- Steps: `%~>*%`(mk_config_config(z', instr'_lst), mk_config_config(z'', instr''_lst)) } @@ -11956,6 +15020,8 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule mk_Eval_expr{z : state, instr_lst : instr*, z' : state, val_lst : val*}: `%;%~>*%;%`(z, instr_lst, z', val_lst) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z', $instr_val(v_val)*{v_val <- val_lst})) -- Steps: `%~>*%`(mk_config_config(z, instr_lst), mk_config_config(z', $instr_val(v_val)*{v_val <- val_lst})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11967,6 +15033,7 @@ def $alloctypes(var_0 : type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{type'_lst : type*, v_type : type, deftype'_lst : deftype*, deftype_lst : deftype*, v_rectype : rectype, x : uN}(type'_lst ++ [v_type]) = deftype'_lst ++ deftype_lst + -- wf_uN: `%%`(32, x) -- where deftype'_lst = $alloctypes(type'_lst) {deftype'_lst} -- where TYPE_type(v_rectype) = v_type {v_rectype} -- if (deftype_lst = $subst_all_deftypes($rolldt(x, v_rectype), $typeuse_deftype(deftype')*{deftype' <- deftype'_lst})) @@ -11977,6 +15044,8 @@ def $alloctypes(var_0 : type*) : deftype* def $alloctag(v_store : store, v_tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, v_tagtype : typeuse, v_taginst : taginst}(s, v_tagtype) = (s +++ {TAGS [v_taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- wf_store: `%`({TAGS [v_taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_taginst: `%`({TYPE v_tagtype}) -- if (v_taginst = {TYPE v_tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11988,6 +15057,8 @@ def $alloctags(v_store : store, var_0 : tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, v_tagtype : typeuse, tagtype'_lst : tagtype*, s_2 : store, ja : nat, ja'_lst : tagaddr*, s_1 : store}(s, [v_tagtype] ++ tagtype'_lst) = (s_2, [ja] ++ ja'_lst) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ja) = $alloctag(s, v_tagtype) {ja, s_1} -- where (s_2, ja'_lst) = $alloctags(s_1, tagtype'_lst) {ja'_lst, s_2} } @@ -11996,6 +15067,8 @@ def $alloctags(v_store : store, var_0 : tagtype*) : (store, tagaddr*) def $allocglobal(v_store : store, v_globaltype : globaltype, v_val : val) : (store, globaladdr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, v_globaltype : globaltype, v_val : val, v_globalinst : globalinst}(s, v_globaltype, v_val) = (s +++ {TAGS [], GLOBALS [v_globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [v_globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_globalinst: `%`({TYPE v_globaltype, VALUE v_val}) -- if (v_globalinst = {TYPE v_globaltype, VALUE v_val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12007,6 +15080,8 @@ def $allocglobals(v_store : store, var_0 : globaltype*, var_1 : val*) : (store, def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, v_globaltype : globaltype, globaltype'_lst : globaltype*, v_val : val, val'_lst : val*, s_2 : store, ga : nat, ga'_lst : globaladdr*, s_1 : store}(s, [v_globaltype] ++ globaltype'_lst, [v_val] ++ val'_lst) = (s_2, [ga] ++ ga'_lst) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ga) = $allocglobal(s, v_globaltype, v_val) {ga, s_1} -- where (s_2, ga'_lst) = $allocglobals(s_1, globaltype'_lst, val'_lst) {ga'_lst, s_2} } @@ -12015,6 +15090,8 @@ def $allocglobals(v_store : store, var_0 : globaltype*, var_1 : val*) : (store, def $allocmem(v_store : store, v_memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, j_opt : u64?, v_meminst : meminst}(s, `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt))) = (s +++ {TAGS [], GLOBALS [], MEMS [v_meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [v_meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES mk_byte_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) -- if (v_meminst = {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES mk_byte_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12026,6 +15103,8 @@ def $allocmems(v_store : store, var_0 : memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, v_memtype : memtype, memtype'_lst : memtype*, s_2 : store, ma : nat, ma'_lst : memaddr*, s_1 : store}(s, [v_memtype] ++ memtype'_lst) = (s_2, [ma] ++ ma'_lst) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ma) = $allocmem(s, v_memtype) {ma, s_1} -- where (s_2, ma'_lst) = $allocmems(s_1, memtype'_lst) {ma'_lst, s_2} } @@ -12034,6 +15113,8 @@ def $allocmems(v_store : store, var_0 : memtype*) : (store, memaddr*) def $alloctable(v_store : store, v_tabletype : tabletype, v_ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, j_opt : u64?, rt : reftype, v_ref : ref, v_tableinst : tableinst}(s, mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), v_ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [v_tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [v_tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS v_ref^$proj_uN_0(i).0{}}) -- if (v_tableinst = {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS v_ref^$proj_uN_0(i).0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12045,6 +15126,8 @@ def $alloctables(v_store : store, var_0 : tabletype*, var_1 : ref*) : (store, ta def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, v_tabletype : tabletype, tabletype'_lst : tabletype*, v_ref : ref, ref'_lst : ref*, s_2 : store, ta : nat, ta'_lst : tableaddr*, s_1 : store}(s, [v_tabletype] ++ tabletype'_lst, [v_ref] ++ ref'_lst) = (s_2, [ta] ++ ta'_lst) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ta) = $alloctable(s, v_tabletype, v_ref) {s_1, ta} -- where (s_2, ta'_lst) = $alloctables(s_1, tabletype'_lst, ref'_lst) {s_2, ta'_lst} } @@ -12053,6 +15136,8 @@ def $alloctables(v_store : store, var_0 : tabletype*, var_1 : ref*) : (store, ta def $allocfunc(v_store : store, v_deftype : deftype, v_funccode : funccode, v_moduleinst : moduleinst) : (store, funcaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, v_deftype : deftype, v_funccode : funccode, v_moduleinst : moduleinst, v_funcinst : funcinst}(s, v_deftype, v_funccode, v_moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [v_funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [v_funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_funcinst: `%`({TYPE v_deftype, MODULE v_moduleinst, CODE v_funccode}) -- if (v_funcinst = {TYPE v_deftype, MODULE v_moduleinst, CODE v_funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12064,6 +15149,8 @@ def $allocfuncs(v_store : store, var_0 : deftype*, var_1 : funccode*, var_2 : mo def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, dt'_lst : deftype*, v_funccode : funccode, funccode'_lst : funccode*, v_moduleinst : moduleinst, moduleinst'_lst : moduleinst*, s_2 : store, fa : nat, fa'_lst : funcaddr*, s_1 : store}(s, [dt] ++ dt'_lst, [v_funccode] ++ funccode'_lst, [v_moduleinst] ++ moduleinst'_lst) = (s_2, [fa] ++ fa'_lst) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, fa) = $allocfunc(s, dt, v_funccode, v_moduleinst) {fa, s_1} -- where (s_2, fa'_lst) = $allocfuncs(s_1, dt'_lst, funccode'_lst, moduleinst'_lst) {fa'_lst, s_2} } @@ -12072,6 +15159,8 @@ def $allocfuncs(v_store : store, var_0 : deftype*, var_1 : funccode*, var_2 : mo def $allocdata(v_store : store, v_datatype : datatype, var_0 : byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, byte_lst : byte*, v_datainst : datainst}(s, OK_datatype, byte_lst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [v_datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [v_datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_datainst: `%`({BYTES byte_lst}) -- if (v_datainst = {BYTES byte_lst}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12083,6 +15172,8 @@ def $allocdatas(v_store : store, var_0 : datatype*, var_1 : byte**) : (store, da def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, ok'_lst : datatype*, b_lst : byte*, b'_lst_lst : byte**, s_2 : store, da : nat, da'_lst : dataaddr*, s_1 : store}(s, [ok] ++ ok'_lst, [b_lst] ++ b'_lst_lst) = (s_2, [da] ++ da'_lst) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, da) = $allocdata(s, ok, b_lst) {da, s_1} -- where (s_2, da'_lst) = $allocdatas(s_1, ok'_lst, b'_lst_lst) {da'_lst, s_2} } @@ -12091,6 +15182,8 @@ def $allocdatas(v_store : store, var_0 : datatype*, var_1 : byte**) : (store, da def $allocelem(v_store : store, v_elemtype : elemtype, var_0 : ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, v_elemtype : reftype, ref_lst : ref*, v_eleminst : eleminst}(s, v_elemtype, ref_lst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [v_eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [v_eleminst], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_eleminst: `%`({TYPE v_elemtype, REFS ref_lst}) -- if (v_eleminst = {TYPE v_elemtype, REFS ref_lst}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12102,6 +15195,8 @@ def $allocelems(v_store : store, var_0 : elemtype*, var_1 : ref**) : (store, ele def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, rt'_lst : reftype*, ref_lst : ref*, ref'_lst_lst : ref**, s_2 : store, ea : nat, ea'_lst : elemaddr*, s_1 : store}(s, [rt] ++ rt'_lst, [ref_lst] ++ ref'_lst_lst) = (s_2, [ea] ++ ea'_lst) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, ea) = $allocelem(s, rt, ref_lst) {ea, s_1} -- where (s_2, ea'_lst) = $allocelems(s_1, rt'_lst, ref'_lst_lst) {ea'_lst, s_2} } @@ -12110,14 +15205,19 @@ def $allocelems(v_store : store, var_0 : elemtype*, var_1 : ref**) : (store, ele def $allocexport(v_moduleinst : moduleinst, v_export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, TAG_externidx(x))) = {NAME v_name, ADDR TAG_externaddr(v_moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME v_name, ADDR TAG_externaddr(v_moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, GLOBAL_externidx(x))) = {NAME v_name, ADDR GLOBAL_externaddr(v_moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME v_name, ADDR GLOBAL_externaddr(v_moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, MEM_externidx(x))) = {NAME v_name, ADDR MEM_externaddr(v_moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME v_name, ADDR MEM_externaddr(v_moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, TABLE_externidx(x))) = {NAME v_name, ADDR TABLE_externaddr(v_moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME v_name, ADDR TABLE_externaddr(v_moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, FUNC_externidx(x))) = {NAME v_name, ADDR FUNC_externaddr(v_moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + -- wf_exportinst: `%`({NAME v_name, ADDR FUNC_externaddr(v_moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(v_moduleinst : moduleinst, var_0 : export*) : exportinst* @@ -12128,6 +15228,24 @@ def $allocexports(v_moduleinst : moduleinst, var_0 : export*) : exportinst* def $allocmodule(v_store : store, v_module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, v_module : module, externaddr_lst : externaddr*, val_G_lst : val*, ref_T_lst : ref*, ref_E_lst_lst : ref**, s_7 : store, v_moduleinst : moduleinst, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, tagtype_lst : tagtype*, globaltype_lst : globaltype*, expr_G_lst : expr*, memtype_lst : memtype*, tabletype_lst : tabletype*, expr_T_lst : expr*, x_lst : idx*, local_lst_lst : local**, expr_F_lst : expr*, byte_lst_lst : byte**, datamode_lst : datamode*, elemtype_lst : elemtype*, expr_E_lst_lst : expr**, elemmode_lst : elemmode*, aa_I_lst : tagaddr*, ga_I_lst : globaladdr*, ma_I_lst : memaddr*, ta_I_lst : tableaddr*, fa_I_lst : funcaddr*, dt_lst : deftype*, fa_lst : nat*, i_F_lst : nat*, s_1 : store, aa_lst : tagaddr*, s_2 : store, ga_lst : globaladdr*, s_3 : store, ma_lst : memaddr*, s_4 : store, ta_lst : tableaddr*, s_5 : store, da_lst : dataaddr*, s_6 : store, ea_lst : elemaddr*, xi_lst : exportinst*}(s, v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst) = (s_7, v_moduleinst) + -- wf_store: `%`(s_7) + -- wf_moduleinst: `%`(v_moduleinst) + -- wf_store: `%`(s_1) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_3) + -- wf_store: `%`(s_4) + -- wf_store: `%`(s_5) + -- wf_store: `%`(s_6) + -- wf_module: `%`(MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst)) + -- (wf_tag: `%`(TAG_tag(v_tagtype)))*{v_tagtype <- tagtype_lst} + -- (wf_global: `%`(GLOBAL_global(v_globaltype, expr_G)))*{expr_G <- expr_G_lst, v_globaltype <- globaltype_lst} + -- (wf_mem: `%`(MEMORY_mem(v_memtype)))*{v_memtype <- memtype_lst} + -- (wf_table: `%`(TABLE_table(v_tabletype, expr_T)))*{expr_T <- expr_T_lst, v_tabletype <- tabletype_lst} + -- (wf_func: `%`(FUNC_func(x, local_lst, expr_F)))*{expr_F <- expr_F_lst, local_lst <- local_lst_lst, x <- x_lst} + -- (wf_data: `%`(DATA_data(byte_lst, v_datamode)))*{byte_lst <- byte_lst_lst, v_datamode <- datamode_lst} + -- (wf_elem: `%`(ELEM_elem(v_elemtype, expr_E_lst, v_elemmode)))*{v_elemmode <- elemmode_lst, v_elemtype <- elemtype_lst, expr_E_lst <- expr_E_lst_lst} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt_lst, TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS da_lst, ELEMS ea_lst, EXPORTS xi_lst}) -- where MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst) = v_module {data_lst, elem_lst, export_lst, func_lst, global_lst, import_lst, mem_lst, start_opt, table_lst, tag_lst, type_lst} -- where TAG_tag(v_tagtype)*{v_tagtype <- tagtype_lst} = tag_lst {tagtype_lst, v_tagtype} -- where GLOBAL_global(v_globaltype, expr_G)*{expr_G <- expr_G_lst, v_globaltype <- globaltype_lst} = global_lst {expr_G, expr_G_lst, globaltype_lst, v_globaltype} @@ -12159,6 +15277,10 @@ def $rundata_(v_dataidx : dataidx, v_data : data) : instr* def $rundata_{x : uN, b_lst : byte*, v_n : nat}(x, DATA_data(b_lst, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, b_lst : byte*, v_n : nat, y : uN, instr_lst : instr*}(x, DATA_data(b_lst, ACTIVE_datamode(y, instr_lst))) = instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(y, x) DATA_DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n)))) + -- wf_instr: `%`(MEMORY_INIT_instr(y, x)) + -- wf_instr: `%`(DATA_DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(v_elemidx : elemidx, v_elem : elem) : instr* @@ -12166,8 +15288,13 @@ def $runelem_(v_elemidx : elemidx, v_elem : elem) : instr* def $runelem_{x : uN, rt : reftype, e_lst : expr*, v_n : nat}(x, ELEM_elem(rt, e_lst, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, e_lst : expr*, v_n : nat}(x, ELEM_elem(rt, e_lst, DECLARE_elemmode)) = [ELEM_DROP_instr(x)] + -- wf_instr: `%`(ELEM_DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, e_lst : expr*, v_n : nat, y : uN, instr_lst : instr*}(x, ELEM_elem(rt, e_lst, ACTIVE_elemmode(y, instr_lst))) = instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(y, x) ELEM_DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n)))) + -- wf_instr: `%`(TABLE_INIT_instr(y, x)) + -- wf_instr: `%`(ELEM_DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12178,6 +15305,11 @@ def $evalglobals(v_state : state, var_0 : globaltype*, var_1 : expr*) : (state, def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, gt'_lst : globaltype*, v_expr : instr*, expr'_lst : expr*, z' : state, v_val : val, val'_lst : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'_lst, [v_expr] ++ expr'_lst) = (z', [v_val] ++ val'_lst) + -- wf_state: `%`(z') + -- wf_val: `%`(v_val) + -- (wf_val: `%`(val'))*{val' <- val'_lst} + -- wf_state: `%`(mk_state_state(s, f)) + -- wf_state: `%`(mk_state_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, v_expr, z, [v_val]) -- where mk_state_state(s, f) = z {f, s} -- where (s', a) = $allocglobal(s, gt, v_val) {a, s'} @@ -12188,6 +15320,24 @@ def $evalglobals(v_state : state, var_0 : globaltype*, var_1 : expr*) : (state, def $instantiate(v_store : store, v_module : module, var_0 : externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, v_module : module, externaddr_lst : externaddr*, s' : store, v_moduleinst : moduleinst, instr_E_lst : instr*, instr_D_lst : instr*, instr_S_opt : instr?, xt_I_lst : externtype*, xt_E_lst : externtype*, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, globaltype_lst : globaltype*, expr_G_lst : expr*, tabletype_lst : tabletype*, expr_T_lst : expr*, byte_lst_lst : byte**, datamode_lst : datamode*, reftype_lst : reftype*, expr_E_lst_lst : expr**, elemmode_lst : elemmode*, x_opt : idx?, moduleinst_0 : moduleinst, i_F_lst : nat*, z : state, z' : state, val_G_lst : val*, ref_T_lst : ref*, ref_E_lst_lst : ref**, i_D_lst : nat*, i_E_lst : nat*}(s, v_module, externaddr_lst) = mk_config_config(mk_state_state(s', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt)) + -- wf_state: `%`(z) + -- wf_state: `%`(z') + -- (wf_val: `%`(val_G))*{val_G <- val_G_lst} + -- (wf_ref: `%`(ref_T))*{ref_T <- ref_T_lst} + -- (wf_ref: `%`(ref_E))*{ref_E <- ref_E_lst}*{ref_E_lst <- ref_E_lst_lst} + -- wf_config: `%`(mk_config_config(mk_state_state(s', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt))) + -- wf_moduletype: `%`(mk_moduletype_moduletype(xt_I_lst, xt_E_lst)) + -- wf_module: `%`(MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst)) + -- (wf_global: `%`(GLOBAL_global(v_globaltype, expr_G)))*{expr_G <- expr_G_lst, v_globaltype <- globaltype_lst} + -- (wf_table: `%`(TABLE_table(v_tabletype, expr_T)))*{expr_T <- expr_T_lst, v_tabletype <- tabletype_lst} + -- (wf_data: `%`(DATA_data(byte_lst, v_datamode)))*{byte_lst <- byte_lst_lst, v_datamode <- datamode_lst} + -- (wf_elem: `%`(ELEM_elem(v_reftype, expr_E_lst, v_elemmode)))*{v_elemmode <- elemmode_lst, expr_E_lst <- expr_E_lst_lst, v_reftype <- reftype_lst} + -- (wf_start: `%`(START_start(x)))?{x <- x_opt} + -- wf_moduleinst: `%`({TYPES $alloctypes(type_lst), TAGS [], GLOBALS $globalsxa(externaddr_lst), MEMS [], TABLES [], FUNCS $funcsxa(externaddr_lst) ++ (|s.FUNCS_store| + i_F)^(i_F<|func_lst|){i_F <- i_F_lst}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(mk_state_state(s, {LOCALS [], MODULE moduleinst_0})) + -- (wf_uN: `%%`(32, mk_uN_uN(i_D)))^(i_D<|data_lst|){i_D <- i_D_lst} + -- (wf_uN: `%%`(32, mk_uN_uN(i_E)))^(i_E<|elem_lst|){i_E <- i_E_lst} + -- (wf_instr: `%`(CALL_instr(x)))?{x <- x_opt} -- Module_ok: `|-%:%`(v_module, mk_moduletype_moduletype(xt_I_lst, xt_E_lst)) -- (Externaddr_ok: `%|-%:%`(s, v_externaddr, xt_I))*{v_externaddr <- externaddr_lst, xt_I <- xt_I_lst} -- where MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst) = v_module {data_lst, elem_lst, export_lst, func_lst, global_lst, import_lst, mem_lst, start_opt, table_lst, tag_lst, type_lst} @@ -12210,6 +15360,8 @@ def $instantiate(v_store : store, v_module : module, var_0 : externaddr*) : conf def $invoke(v_store : store, v_funcaddr : funcaddr, var_0 : val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, v_funcaddr : nat, val_lst : val*, t_1_lst : valtype*, t_2_lst : valtype*}(s, v_funcaddr, val_lst) = mk_config_config(mk_state_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(v_val)*{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(v_funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[v_funcaddr].TYPE_funcinst))]) + -- wf_config: `%`(mk_config_config(mk_state_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(v_val)*{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(v_funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[v_funcaddr].TYPE_funcinst))])) + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- Expand: `%~~%`(s.FUNCS_store[v_funcaddr].TYPE_funcinst, FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- (Val_ok: `%|-%:%`(s, v_val, t_1))*{t_1 <- t_1_lst, v_val <- val_lst} @@ -14306,6 +17458,7 @@ rec { def $concat_idctxt(var_0 : idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 def $concat_idctxt{v_I : idctxt, I' : idctxt}([v_I I']) = v_I +++ $concat_idctxt(I'*{}) } @@ -14315,6 +17468,8 @@ relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rule mk_Idctxt_ok{v_I : I, field_lst_lst : char**}: `|-%:OK`(v_I) + -- wf_idctxt: `%`(v_I) + -- (wf_name: `%`(mk_name_name(field_lst)))*{field_lst <- field_lst_lst} -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.TYPES_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.TAGS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.GLOBALS_I)) @@ -16233,16 +19388,27 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32_add{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global_get{C : context, x : idx, t : valtype, v_mut : mut}: `%|-%:%`(C, [GLOBAL_GET_instr(x)], mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL_GET_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(v_mut), t)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = mk_globaltype_globaltype(?(v_mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, v_blocktype : blocktype, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, [BLOCK_instr(v_blocktype, instr_lst)], mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(v_blocktype, instr_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []}) -- Blocktype_ok: `%|-%:%`(C, v_blocktype, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) } @@ -16252,14 +19418,23 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule r_2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule r_3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule r_4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* @@ -16298,6 +19473,8 @@ def $allocXs(syntax X, syntax Y, v_store : store, var_0 : X*, var_1 : Y*) : (sto def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, X'_lst : X*, Y : Y, Y'_lst : Y*, s_2 : store, a : nat, a'_lst : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'_lst, [Y] ++ Y'_lst) = (s_2, [a] ++ a'_lst) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) -- where (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) {a, s_1} -- where (s_2, a'_lst) = $allocXs(syntax X, syntax Y, s_1, X'_lst, Y'_lst) {a'_lst, s_2} } From 6e28e189471a688796d88f2da49f731a74f6437a Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 20 Jan 2026 13:24:04 +0000 Subject: [PATCH 010/115] Changed generated otherwise to be conjunction instead of disjunction. --- spectec/src/middlend/elsesimp.ml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/spectec/src/middlend/elsesimp.ml b/spectec/src/middlend/elsesimp.ml index eba54cc8e0..578dfe766a 100644 --- a/spectec/src/middlend/elsesimp.ml +++ b/spectec/src/middlend/elsesimp.ml @@ -115,13 +115,9 @@ let t_rule env else_ids rule = if prems' = [] || not (List.for_all is_boolean_prem prems') then None else let neg_exps = List.filter_map get_exp prems' in - match neg_exps with - | [] -> None - | x :: xs -> - let new_exp = List.fold_left (fun acc exp -> BinE (`OrOp, `BoolT, acc, exp) $$ x.at % (BoolT $ x.at)) x xs in - let new_prem = IfPr new_exp $ x.at in - bind_else_set env else_id; - Some { rule with it = RuleD (id, binds @ binds', m, exp, new_prem :: Lib.List.filter_not (is_neg_prem else_ids) prems) } + let new_prems = List.map (fun e -> IfPr e $ e.at) neg_exps in + bind_else_set env else_id; + Some { rule with it = RuleD (id, binds @ binds', m, exp, new_prems @ Lib.List.filter_not (is_neg_prem else_ids) prems) } let rec t_def env d = {d with it = From 67c5e5696aaed50983bc222d4549f096550cbe8b Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 20 Jan 2026 13:24:23 +0000 Subject: [PATCH 011/115] fix tests --- .../07-else-simplification.il | 46 +++++++++++++------ .../specification.exp/08-uncase-removal.il | 46 +++++++++++++------ .../specification.exp/09-sideconditions.il | 46 +++++++++++++------ .../specification.exp/10-sub-expansion.il | 46 +++++++++++++------ .../test-middlend/specification.exp/11-sub.il | 46 +++++++++++++------ .../specification.exp/12-alias-demut.il | 46 +++++++++++++------ .../specification.exp/13-improve-ids.il | 46 +++++++++++++------ 7 files changed, 224 insertions(+), 98 deletions(-) diff --git a/spectec/test-middlend/specification.exp/07-else-simplification.il b/spectec/test-middlend/specification.exp/07-else-simplification.il index 653a0523e1..9bfce8d2f4 100644 --- a/spectec/test-middlend/specification.exp/07-else-simplification.il +++ b/spectec/test-middlend/specification.exp/07-else-simplification.il @@ -9793,7 +9793,8 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) @@ -10711,7 +10712,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) - -- if ((n =/= 0) \/ ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|)) + -- if (n =/= 0) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -10736,7 +10738,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- if ((n =/= 0) \/ (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- if (n =/= 0) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) @@ -10751,7 +10754,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- if (((!($proj_num__0(i_1))!`%`_uN.0 > !($proj_num__0(i_2))!`%`_uN.0) \/ (n =/= 0)) \/ (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- if (!($proj_num__0(i_1))!`%`_uN.0 > !($proj_num__0(i_2))!`%`_uN.0) + -- if (n =/= 0) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -10779,7 +10784,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) - -- if ((n =/= 0) \/ (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|))) + -- if (n =/= 0) + -- if (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -10927,7 +10933,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) - -- if ((n =/= 0) \/ ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|)) + -- if (n =/= 0) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) @@ -10952,7 +10959,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- if ((n =/= 0) \/ (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- if (n =/= 0) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) @@ -10967,7 +10975,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- if (((!($proj_num__0(i_1))!`%`_uN.0 > !($proj_num__0(i_2))!`%`_uN.0) \/ (n =/= 0)) \/ (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- if (!($proj_num__0(i_1))!`%`_uN.0 > !($proj_num__0(i_2))!`%`_uN.0) + -- if (n =/= 0) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -10995,7 +11005,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) - -- if ((n =/= 0) \/ (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$data(z, y).BYTES_datainst|))) + -- if (n =/= 0) + -- if (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$data(z, y).BYTES_datainst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0)))) @@ -11172,7 +11183,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) - -- if ((n =/= 0) \/ ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (n =/= 0) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) @@ -11210,14 +11222,17 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) - -- if (((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ ((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- if (((n =/= 0) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ ((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- if (n =/= 0) + -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -11275,14 +11290,17 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) - -- if (((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|) \/ ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) - -- if (((n =/= 0) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (n =/= 0) + -- if ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_ref: `%`(ref) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) diff --git a/spectec/test-middlend/specification.exp/08-uncase-removal.il b/spectec/test-middlend/specification.exp/08-uncase-removal.il index 89e66ae069..ebb4c24d4b 100644 --- a/spectec/test-middlend/specification.exp/08-uncase-removal.il +++ b/spectec/test-middlend/specification.exp/08-uncase-removal.il @@ -9853,7 +9853,8 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) @@ -10771,7 +10772,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) - -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|)) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -10796,7 +10798,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) @@ -10811,7 +10814,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -10839,7 +10844,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -10987,7 +10993,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) - -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|)) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) @@ -11012,7 +11019,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) @@ -11027,7 +11035,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -11055,7 +11065,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) @@ -11232,7 +11243,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) - -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) @@ -11270,14 +11282,17 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) - -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -11335,14 +11350,17 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) - -- if ((($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) - -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_ref: `%`(ref) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) diff --git a/spectec/test-middlend/specification.exp/09-sideconditions.il b/spectec/test-middlend/specification.exp/09-sideconditions.il index b22aa1be2e..c6cbcab8eb 100644 --- a/spectec/test-middlend/specification.exp/09-sideconditions.il +++ b/spectec/test-middlend/specification.exp/09-sideconditions.il @@ -9995,7 +9995,8 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) @@ -10990,7 +10991,8 @@ relation Step_read: `%~>%`(config, instr*) rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|)) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -11021,7 +11023,8 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) @@ -11038,7 +11041,9 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -11073,7 +11078,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -11238,7 +11244,8 @@ relation Step_read: `%~>%`(config, instr*) rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|)) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) @@ -11269,7 +11276,8 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) @@ -11286,7 +11294,9 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -11321,7 +11331,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) @@ -11519,8 +11530,9 @@ relation Step_read: `%~>%`(config, instr*) rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) -- if (a < |$arrayinst(z)|) - -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) @@ -11564,9 +11576,10 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) - -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) @@ -11575,9 +11588,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- if (n =/= 0) -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) -- if (a_1 < |$arrayinst(z)|) - -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -11641,9 +11656,10 @@ relation Step_read: `%~>%`(config, instr*) rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) - -- if ((($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) @@ -11652,8 +11668,10 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) -- if (a < |$arrayinst(z)|) - -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_ref: `%`(ref) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) diff --git a/spectec/test-middlend/specification.exp/10-sub-expansion.il b/spectec/test-middlend/specification.exp/10-sub-expansion.il index 71c986f4db..1d6a5f155b 100644 --- a/spectec/test-middlend/specification.exp/10-sub-expansion.il +++ b/spectec/test-middlend/specification.exp/10-sub-expansion.il @@ -12826,7 +12826,8 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) @@ -13821,7 +13822,8 @@ relation Step_read: `%~>%`(config, instr*) rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|)) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -13852,7 +13854,8 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) @@ -13869,7 +13872,9 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -13904,7 +13909,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -14069,7 +14075,8 @@ relation Step_read: `%~>%`(config, instr*) rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|)) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) @@ -14100,7 +14107,8 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) @@ -14117,7 +14125,9 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14152,7 +14162,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) @@ -14350,8 +14361,9 @@ relation Step_read: `%~>%`(config, instr*) rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) -- if (a < |$arrayinst(z)|) - -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) @@ -14395,9 +14407,10 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) - -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) @@ -14406,9 +14419,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- if (n =/= 0) -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) -- if (a_1 < |$arrayinst(z)|) - -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -14472,9 +14487,10 @@ relation Step_read: `%~>%`(config, instr*) rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) - -- if ((($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) @@ -14483,8 +14499,10 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) -- if (a < |$arrayinst(z)|) - -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_ref: `%`(ref) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) diff --git a/spectec/test-middlend/specification.exp/11-sub.il b/spectec/test-middlend/specification.exp/11-sub.il index 94f77aee7d..c9d50bd72d 100644 --- a/spectec/test-middlend/specification.exp/11-sub.il +++ b/spectec/test-middlend/specification.exp/11-sub.il @@ -13014,7 +13014,8 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) @@ -14009,7 +14010,8 @@ relation Step_read: `%~>%`(config, instr*) rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|)) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -14040,7 +14042,8 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -14057,7 +14060,9 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14092,7 +14097,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -14257,7 +14263,8 @@ relation Step_read: `%~>%`(config, instr*) rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|)) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) @@ -14288,7 +14295,8 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -14305,7 +14313,9 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14340,7 +14350,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) @@ -14538,8 +14549,9 @@ relation Step_read: `%~>%`(config, instr*) rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) -- if (a < |$arrayinst(z)|) - -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) @@ -14583,9 +14595,10 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) - -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) @@ -14594,9 +14607,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- if (n =/= 0) -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) -- if (a_1 < |$arrayinst(z)|) - -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -14660,9 +14675,10 @@ relation Step_read: `%~>%`(config, instr*) rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) - -- if ((($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) @@ -14671,8 +14687,10 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) -- if (a < |$arrayinst(z)|) - -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_ref: `%`(ref) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) diff --git a/spectec/test-middlend/specification.exp/12-alias-demut.il b/spectec/test-middlend/specification.exp/12-alias-demut.il index 1e45d14581..f9d1343e4f 100644 --- a/spectec/test-middlend/specification.exp/12-alias-demut.il +++ b/spectec/test-middlend/specification.exp/12-alias-demut.il @@ -13014,7 +13014,8 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2)))) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) @@ -14009,7 +14010,8 @@ relation Step_read: `%~>%`(config, instr*) rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|)) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -14040,7 +14042,8 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -14057,7 +14060,9 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|))) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14092,7 +14097,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -14257,7 +14263,8 @@ relation Step_read: `%~>%`(config, instr*) rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|)) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) @@ -14288,7 +14295,8 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -14305,7 +14313,9 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|))) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14340,7 +14350,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- if ((n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|))) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) @@ -14538,8 +14549,9 @@ relation Step_read: `%~>%`(config, instr*) rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) -- if (a < |$arrayinst(z)|) - -- if ((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) @@ -14583,9 +14595,10 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) - -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) @@ -14594,9 +14607,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- if (n =/= 0) -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) -- if (a_1 < |$arrayinst(z)|) - -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -14660,9 +14675,10 @@ relation Step_read: `%~>%`(config, instr*) rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) - -- if ((($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) @@ -14671,8 +14687,10 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) -- if (a < |$arrayinst(z)|) - -- if (((n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_ref: `%`(ref) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) diff --git a/spectec/test-middlend/specification.exp/13-improve-ids.il b/spectec/test-middlend/specification.exp/13-improve-ids.il index ecff133c68..e37d7a2fcf 100644 --- a/spectec/test-middlend/specification.exp/13-improve-ids.il +++ b/spectec/test-middlend/specification.exp/13-improve-ids.il @@ -13014,7 +13014,8 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_eq_false{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))]) - -- if ((ref_1 =/= ref_2) \/ ((ref_1 =/= REF_NULL_ref(ht_1)) \/ (ref_2 =/= REF_NULL_ref(ht_2)))) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= REF_NULL_ref(ht_1)) \/ (ref_2 =/= REF_NULL_ref(ht_2))) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF_EQ_instr) @@ -14009,7 +14010,8 @@ relation Step_read: `%~>%`(config, instr*) rule table_fill_succ{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- if ((v_n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|)) + -- if (v_n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(TABLE_SET_instr(x)) @@ -14040,7 +14042,8 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) TABLE_GET_instr(y) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((v_n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_table(z, x_2).REFS_tableinst|))) + -- if (v_n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -14057,7 +14060,9 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_GET_instr(y) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (v_n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_table(z, x_2).REFS_tableinst|))) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (v_n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14092,7 +14097,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$fun_elem(z, y).REFS_eleminst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- if ((v_n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|))) + -- if (v_n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|)) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(TABLE_SET_instr(x)) @@ -14257,7 +14263,8 @@ relation Step_read: `%~>%`(config, instr*) rule memory_fill_succ{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- if ((v_n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|)) + -- if (v_n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0)) @@ -14288,7 +14295,8 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((v_n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|))) + -- if (v_n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -14305,7 +14313,9 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) \/ (v_n =/= 0)) \/ ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|))) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (v_n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14340,7 +14350,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$fun_data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- if ((v_n =/= 0) \/ ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_data(z, y).BYTES_datainst|))) + -- if (v_n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_data(z, y).BYTES_datainst|)) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN($proj_byte_0($fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) @@ -14538,8 +14549,9 @@ relation Step_read: `%~>%`(config, instr*) rule array_fill_succ{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)]), [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x) REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) + -- if (v_n =/= 0) -- if (a < |$fun_arrayinst(z)|) - -- if ((v_n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) @@ -14583,9 +14595,10 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), []) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$fun_arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$fun_arrayinst(z)|) - -- if ((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- if (v_n = 0) @@ -14594,9 +14607,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY_GET_instr(sx_opt, x_2) ARRAY_SET_instr(x_1) REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- if (v_n =/= 0) -- if (a_2 < |$fun_arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) -- if (a_1 < |$fun_arrayinst(z)|) - -- if (((v_n =/= 0) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|)) \/ (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -14660,9 +14675,10 @@ relation Step_read: `%~>%`(config, instr*) rule array_init_elem_zero{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), []) -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) - -- if ((($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|) \/ (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) -- if (v_n = 0) @@ -14671,8 +14687,10 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_ref(v_ref) ARRAY_SET_instr(x) REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_INIT_ELEM_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) + -- if (v_n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|) -- if (a < |$fun_arrayinst(z)|) - -- if (((v_n =/= 0) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|)) \/ (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|)) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) -- wf_ref: `%`(v_ref) -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a)) From 122dc2d802419318d7dc5395b369ab7cee1f8632 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 20 Jan 2026 14:51:39 +0000 Subject: [PATCH 012/115] Made fallthrough only when otherwise is present. Refactored a bit using new traversal method --- spectec/src/middlend/deftorel.ml | 133 ++++++++++--------------------- 1 file changed, 42 insertions(+), 91 deletions(-) diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index 8fd944d5da..e6df7ccbbd 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -1,5 +1,6 @@ open Il.Ast open Il +open Il.Walk open Util.Source open Util @@ -65,54 +66,28 @@ let filter_iter_binds args iter_binds = ) (free_vars, []) iter_binds) |> snd |> List.rev -let rec collect_fcalls_exp iter_binds env e = +let rec create_collector iterexps env = + let base_collector_iters = base_collector [] (@) in + { base_collector_iters with collect_exp = collect_fcalls_exp iterexps env; collect_prem = collect_fcalls_prem iterexps env } + +and collect_fcalls_exp iterexps env e = match e.it with | CallE (id, args) when StringSet.mem id.it env.rel_set -> - let new_iter_binds = filter_iter_binds args iter_binds in - ((fun_prefix ^ id.it $ id.at, args, e.note), new_iter_binds, List.length new_iter_binds) :: - List.concat_map (collect_fcalls_arg iter_binds env) args - | CallE (_, args) -> List.concat_map (collect_fcalls_arg iter_binds env) args - | StrE fields -> List.concat_map (fun (_a, e1) -> collect_fcalls_exp iter_binds env e1) fields - | UnE (_, _, e1) | CvtE (e1, _, _) | LiftE e1 | TheE e1 | OptE (Some e1) - | ProjE (e1, _) | UncaseE (e1, _) - | CaseE (_, e1) | LenE e1 | DotE (e1, _) - | SubE (e1, _, _) -> collect_fcalls_exp iter_binds env e1 - | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) - | CompE (e1, e2) | MemE (e1, e2) - | CatE (e1, e2) | IdxE (e1, e2) -> collect_fcalls_exp iter_binds env e1 @ collect_fcalls_exp iter_binds env e2 - | TupE exps | ListE exps -> List.concat_map (collect_fcalls_exp iter_binds env) exps - | SliceE (e1, e2, e3) | IfE (e1, e2, e3) -> collect_fcalls_exp iter_binds env e1 @ collect_fcalls_exp iter_binds env e2 @ collect_fcalls_exp iter_binds env e3 - | UpdE (e1, p, e2) - | ExtE (e1, p, e2) -> collect_fcalls_exp iter_binds env e1 @ collect_fcalls_path iter_binds env p @ collect_fcalls_exp iter_binds env e2 - | IterE (e1,( (iter, id_exp_pairs) as iterexp)) -> - collect_fcalls_exp (iterexp :: iter_binds) env e1 @ collect_fcalls_iter (iterexp :: iter_binds) env iter @ - List.concat_map (fun (_, exp) -> collect_fcalls_exp iter_binds env exp) id_exp_pairs - | _ -> [] - -and collect_fcalls_iter iter_binds env i = - match i with - | ListN (e1, _) -> collect_fcalls_exp iter_binds env e1 - | _ -> [] - -and collect_fcalls_arg iter_binds env a = - match a.it with - | ExpA exp -> collect_fcalls_exp iter_binds env exp - | _ -> (* TODO - possibly need to go through all types of args *) - [] - -and collect_fcalls_prem iter_binds env p = - match p.it with - | IfPr e | RulePr (_, _, e) -> collect_fcalls_exp iter_binds env e - | LetPr (e1, e2, _) -> collect_fcalls_exp iter_binds env e1 @ collect_fcalls_exp iter_binds env e2 - | IterPr (p', iterexp) -> collect_fcalls_prem (iterexp :: iter_binds) env p' - | _ -> [] - -and collect_fcalls_path iter_binds env p = + let new_iter_binds = filter_iter_binds args iterexps in + ([((fun_prefix ^ id.it $ id.at, args, e.note), new_iter_binds, List.length new_iter_binds)], true) + | IterE (e1, iterexp) -> + let c1 = create_collector iterexps env in + let c2 = create_collector (iterexp :: iterexps) env in + (collect_exp c2 e1 @ collect_iterexp c1 iterexp, false) + | _ -> ([], true) + +and collect_fcalls_prem iterexps env p = match p.it with - | RootP -> [] - | IdxP (p, e) -> collect_fcalls_path iter_binds env p @ collect_fcalls_exp iter_binds env e - | SliceP (p, e1, e2) -> collect_fcalls_path iter_binds env p @ collect_fcalls_exp iter_binds env e1 @ collect_fcalls_exp iter_binds env e2 - | DotP (p, _) -> collect_fcalls_path iter_binds env p + | IterPr (p', iterexp) -> + let c1 = create_collector iterexps env in + let c2 = create_collector (iterexp :: iterexps) env in + (collect_prem c2 p' @ collect_iterexp c1 iterexp, false) + | _ -> ([], true) let create_fun_prem ids ((id, args, r_typ), iterexps, _) = let fresh_var = Utils.generate_var ids "" in @@ -424,8 +399,9 @@ and transform_prem_normal call_map env prem = fst (transform_prem call_map env p let transform_rule env rule = (match rule.it with - | RuleD (id, binds, m, exp, prems) -> - let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in + | RuleD (id, binds, m, exp, prems) -> + let c = create_collector [] env in + let fcalls = collect_exp c exp @ List.concat_map (collect_prem c) prems in let call_map, new_binds, new_prems = create_call_map fcalls binds in RuleD (id.it $ no_region, List.map (transform_bind env) (binds @ new_binds), @@ -437,7 +413,8 @@ let transform_rule env rule = let transform_clause env clause = (match clause.it with | DefD (binds, args, exp, prems) -> - let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in + let c = create_collector [] env in + let fcalls = collect_exp c exp @ List.concat_map (collect_prem c) prems in let call_map, new_binds, new_prems = create_call_map fcalls binds in DefD ( List.map (transform_bind env) (binds @ new_binds), @@ -449,7 +426,8 @@ let transform_clause env clause = let transform_prod env prod = match prod.it with | ProdD (binds, sym, exp, prems) -> - let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in + let c = create_collector [] env in + let fcalls = collect_exp c exp @ List.concat_map (collect_prem c) prems in let call_map, new_binds, new_prems = create_call_map fcalls binds in ProdD (List.map (transform_bind env) (binds @ new_binds), sym, @@ -491,45 +469,10 @@ and has_sub_exp_path p = | SliceP (p, e1, e2) -> has_sub_exp_path p || has_sub_exp e1 || has_sub_exp e2 | DotP (p, _) -> has_sub_exp_path p -let rec utilizes_rel_def env e = +let utilizes_rel_def env e = match e.it with - | CallE (id, args) -> StringSet.mem id.it env.rel_set || List.exists (utilizes_rel_def_arg env) args - | StrE fields -> List.exists (fun (_a, e1) -> utilizes_rel_def env e1) fields - | UnE (_, _, e1) | CvtE (e1, _, _) | LiftE e1 | TheE e1 | OptE (Some e1) - | ProjE (e1, _) | UncaseE (e1, _) - | CaseE (_, e1) | LenE e1 | DotE (e1, _) - | SubE (e1, _, _) -> utilizes_rel_def env e1 - | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) - | CompE (e1, e2) | MemE (e1, e2) - | CatE (e1, e2) | IdxE (e1, e2) -> utilizes_rel_def env e1 || utilizes_rel_def env e2 - | TupE exps | ListE exps -> List.exists (utilizes_rel_def env) exps - | SliceE (e1, e2, e3) | IfE (e1, e2, e3) -> utilizes_rel_def env e1 || utilizes_rel_def env e2 || utilizes_rel_def env e3 - | UpdE (e1, p, e2) - | ExtE (e1, p, e2) -> utilizes_rel_def env e1 || utilizes_rel_def_path env p || utilizes_rel_def env e2 - | IterE (e1, (_, id_exp_pairs)) -> utilizes_rel_def env e1 || List.exists (fun (_, exp) -> utilizes_rel_def env exp) id_exp_pairs - | _ -> false - -and utilizes_rel_def_arg env a = - match a.it with - | ExpA e -> utilizes_rel_def env e - | _ -> false - -and utilizes_rel_def_path env p = - match p.it with - | RootP -> false - | IdxP (p, e) -> utilizes_rel_def_path env p || utilizes_rel_def env e - | SliceP (p, e1, e2) -> utilizes_rel_def_path env p || utilizes_rel_def env e1 || utilizes_rel_def env e2 - | DotP (p, _) -> utilizes_rel_def_path env p - -and utilizes_rel_def_prem env p = - match p.it with - | IfPr e -> utilizes_rel_def env e - | RulePr (_, _, e) -> utilizes_rel_def env e - | LetPr (e1, e2, _) -> utilizes_rel_def env e1 || utilizes_rel_def env e2 - | IterPr (p', (_, id_exp_pairs)) -> - utilizes_rel_def_prem env p' || - List.exists (fun (_, exp) -> utilizes_rel_def env exp) id_exp_pairs - | _ -> false + | CallE (id, _) -> (StringSet.mem id.it env.rel_set, true) + | _ -> (false, true) let collect_list_length_vars () : StringSet.t ref * (module Iter.Arg) = let module Arg = @@ -546,6 +489,7 @@ let collect_list_length_vars () : StringSet.t ref * (module Iter.Arg) = let must_be_relation env id params clauses = let listn_set, (module Arg : Iter.Arg) = collect_list_length_vars () in + let rel_def_checker = { exists_base_checker with collect_exp = utilizes_rel_def env} in assert (!listn_set = StringSet.empty); let module Acc = Iter.Make(Arg) in (* Current limitation of relations - can only have standard types. @@ -561,8 +505,8 @@ let must_be_relation env id params clauses = (* Premises might not be decidable *) prems <> [] || (* Functions that have function calls transformed to relations must also be relations *) - utilizes_rel_def env exp || - List.exists (utilizes_rel_def_prem env) prems || + collect_exp rel_def_checker exp || + List.exists (collect_prem rel_def_checker) prems || (* Checking if equality binding is active *) fst (List.fold_left (fun (acc_bool, free_set) arg -> let free_vars = Free.free_arg arg in @@ -619,13 +563,18 @@ let generate_matching_rules env args tupt r = {r with it = RuleD (id, binds, List.tl mixop, new_exp, filter_return_prems prems)} ) +let is_otherwise prem = + match prem.it with + | ElsePr -> true + | _ -> false + let fall_through_prems env id mixop typs rules = let gen_rel_name rid = id.it ^ "_before_" ^ rid.it $ id.at in let rec go prev_rules = function | [] -> [ RelD (id, mixop, TupT typs $ id.at, List.rev prev_rules) $ id.at ] - | ({it = RuleD (rid, binds, m, exp, prems); _} as r) :: rs -> + | ({it = RuleD (rid, binds, m, exp, prems); _} as r) :: rs when List.exists is_otherwise prems -> let (args, _) = Lib.List.split_last (get_tuple_exp exp) in let (typs', _) = Lib.List.split_last typs in let tupt = TupT typs' $ id.at in @@ -638,6 +587,7 @@ let fall_through_prems env id mixop typs rules = let negrulepr = NegPr (RulePr (gen_rel_name rid, List.tl mixop, TupE args $$ exp.at % tupt) $ rid.at) $ rid.at in let new_rule = { r with it = RuleD (rid, binds, m, exp, negrulepr :: prems') } in relation :: go (new_rule :: prev_rules) rs + | r :: rs -> go (r :: prev_rules) rs in go [] rules @@ -654,7 +604,8 @@ let cvt_def_to_rel env id params r_typ clauses = match clause.it with | DefD (binds, args, exp, prems) -> let exps = List.map get_exp_arg args in - let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in + let c = create_collector [] env in + let fcalls = collect_exp c exp @ List.concat_map (collect_prem c) prems in let call_map, new_binds, new_prems = create_call_map fcalls binds in let tupe = TupE (exps @ [transform_exp_normal call_map env exp]) $$ id.at % (TupT tup_types $ id.at) in RuleD (fun_prefix ^ id.it ^ "_case_" ^ Int.to_string i $ id.at, binds @ new_binds, new_mixop, tupe, List.map (transform_prem_normal call_map env) (new_prems @ prems)) $ id.at From 3d64cfb50b4b3e1018db543e5d59ad7ecbb9706c Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 20 Jan 2026 14:52:56 +0000 Subject: [PATCH 013/115] Removed subtyping matching check --- spectec/src/middlend/deftorel.ml | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index e6df7ccbbd..f945a4c387 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -439,36 +439,6 @@ let is_exp_param param = | ExpP _ -> true | _ -> false -let rec has_sub_exp e = - match e.it with - | SubE _ -> true - | StrE fields -> List.exists (fun (_a, e1) -> has_sub_exp e1) fields - | UnE (_, _, e1) | CvtE (e1, _, _) | LiftE e1 | TheE e1 | OptE (Some e1) - | ProjE (e1, _) | UncaseE (e1, _) - | CaseE (_, e1) | LenE e1 | DotE (e1, _) -> has_sub_exp e1 - | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) - | CompE (e1, e2) | MemE (e1, e2) - | CatE (e1, e2) | IdxE (e1, e2) -> has_sub_exp e1 || has_sub_exp e2 - | TupE exps | ListE exps -> List.exists has_sub_exp exps - | SliceE (e1, e2, e3) | IfE (e1, e2, e3) -> has_sub_exp e1 || has_sub_exp e2 || has_sub_exp e3 - | UpdE (e1, p, e2) - | ExtE (e1, p, e2) -> has_sub_exp e1 || has_sub_exp_path p || has_sub_exp e2 - | CallE (_id, args) -> List.exists has_sub_exp_arg args - | IterE (e1, (_, id_exp_pairs)) -> has_sub_exp e1 || List.exists (fun (_, exp) -> has_sub_exp exp) id_exp_pairs - | _ -> false - -and has_sub_exp_arg a = - match a.it with - | ExpA e -> has_sub_exp e - | _ -> false - -and has_sub_exp_path p = - match p.it with - | RootP -> false - | IdxP (p, e) -> has_sub_exp_path p || has_sub_exp e - | SliceP (p, e1, e2) -> has_sub_exp_path p || has_sub_exp e1 || has_sub_exp e2 - | DotP (p, _) -> has_sub_exp_path p - let utilizes_rel_def env e = match e.it with | CallE (id, _) -> (StringSet.mem id.it env.rel_set, true) @@ -500,8 +470,6 @@ let must_be_relation env id params clauses = List.exists (fun c -> match c.it with | DefD (binds, args, exp, prems) -> Acc.args args; - (* Can't have subtyping matching *) - List.exists has_sub_exp_arg args || (* Premises might not be decidable *) prems <> [] || (* Functions that have function calls transformed to relations must also be relations *) From f4f1fc87ca1aef8add83befb66d03ff5ce825757 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 20 Jan 2026 14:56:51 +0000 Subject: [PATCH 014/115] reordering so generated deftorel relations get implicit sideconditions. Fix tests --- spectec/src/exe-spectec/main.ml | 2 +- spectec/test-middlend/dune.inc | 8 +- ...8-sub-expansion.il => 07-sub-expansion.il} | 339 +- .../{09-sub.il => 08-sub.il} | 339 +- ...itions.il => 09-definition-to-relation.il} | 10696 ++++++++++++---- ...on-to-relation.il => 10-sideconditions.il} | 1035 +- .../specification.exp/11-alias-demut.il | 1035 +- .../specification.exp/12-improve-ids.il | 1035 +- spectec/test-middlend/test.spectec.exp | 22 +- 9 files changed, 8742 insertions(+), 5769 deletions(-) rename spectec/test-middlend/specification.exp/{08-sub-expansion.il => 07-sub-expansion.il} (99%) rename spectec/test-middlend/specification.exp/{09-sub.il => 08-sub.il} (99%) rename spectec/test-middlend/specification.exp/{07-sideconditions.il => 09-definition-to-relation.il} (57%) rename spectec/test-middlend/specification.exp/{10-definition-to-relation.il => 10-sideconditions.il} (95%) diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index adb85728db..f5c326b17e 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -43,10 +43,10 @@ let all_passes = [ Totalize; Else; Uncaseremoval; - Sideconditions; SubExpansion; Sub; DefToRel; + Sideconditions; AliasDemut; ImproveIds ] diff --git a/spectec/test-middlend/dune.inc b/spectec/test-middlend/dune.inc index 0eadeb54ad..77b46dda81 100644 --- a/spectec/test-middlend/dune.inc +++ b/spectec/test-middlend/dune.inc @@ -5,9 +5,9 @@ (rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/04-totalize.il specification.act/04-totalize.il)))) (rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/05-else.il specification.act/05-else.il)))) (rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/06-uncase-removal.il specification.act/06-uncase-removal.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/07-sideconditions.il specification.act/07-sideconditions.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/08-sub-expansion.il specification.act/08-sub-expansion.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/09-sub.il specification.act/09-sub.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/10-definition-to-relation.il specification.act/10-definition-to-relation.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/07-sub-expansion.il specification.act/07-sub-expansion.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/08-sub.il specification.act/08-sub.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/09-definition-to-relation.il specification.act/09-definition-to-relation.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/10-sideconditions.il specification.act/10-sideconditions.il)))) (rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/11-alias-demut.il specification.act/11-alias-demut.il)))) (rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/12-improve-ids.il specification.act/12-improve-ids.il)))) diff --git a/spectec/test-middlend/specification.exp/08-sub-expansion.il b/spectec/test-middlend/specification.exp/07-sub-expansion.il similarity index 99% rename from spectec/test-middlend/specification.exp/08-sub-expansion.il rename to spectec/test-middlend/specification.exp/07-sub-expansion.il index 7d9651d6c0..2f12aa25c1 100644 --- a/spectec/test-middlend/specification.exp/08-sub-expansion.il +++ b/spectec/test-middlend/specification.exp/07-sub-expansion.il @@ -5224,7 +5224,6 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- wf_context: `%`(C) -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 @@ -5233,7 +5232,6 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) -- wf_context: `%`(C) -- wf_subtype: `%`(st) -- wf_typeuse: `%`(REC_typeuse(i)) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 @@ -5307,12 +5305,9 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- if (|`comptype'*`| = |`x'**`|) -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} - -- if (|`comptype'*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5354,11 +5349,9 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) -- wf_comptype: `%`(comptype) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- if (|`comptype'*`| = |`typeuse'**`|) -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} - -- if (|`comptype'*`| = |`typeuse*`|) -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5402,7 +5395,6 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 @@ -5436,7 +5428,6 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 @@ -5522,7 +5513,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 @@ -5531,17 +5521,14 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) - -- if (j < |typeuse*{typeuse <- `typeuse*`}|) -- wf_context: `%`(C) -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 @@ -5642,7 +5629,6 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) -- wf_context: `%`(C) -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} - -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 @@ -5691,8 +5677,6 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- if (|`lct*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5710,7 +5694,6 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(comptype) -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5814,8 +5797,6 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) - -- if (|`t*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5938,7 +5919,6 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5949,9 +5929,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5960,9 +5938,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5970,7 +5946,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_catch(l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_ALL_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5978,7 +5953,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -6107,7 +6081,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(BR_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6117,7 +6090,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_IF_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 @@ -6126,9 +6098,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} - -- if ($proj_uN_0(l').0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6138,7 +6108,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -6148,7 +6117,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 @@ -6158,7 +6126,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -6172,7 +6139,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -6186,7 +6152,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(CALL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 @@ -6196,7 +6161,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 @@ -6208,10 +6172,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 @@ -6233,7 +6195,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6248,7 +6209,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6265,10 +6225,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6282,7 +6240,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6321,9 +6278,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(REF.FUNC_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) - -- if (|C.REFS_context| > 0) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 @@ -6390,7 +6345,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STRUCT.NEW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 @@ -6400,7 +6354,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} @@ -6412,9 +6365,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6426,9 +6377,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 @@ -6438,7 +6387,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 @@ -6448,7 +6396,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) @@ -6459,7 +6406,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 @@ -6469,9 +6415,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 @@ -6481,10 +6425,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 @@ -6494,7 +6436,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6505,7 +6446,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 @@ -6522,7 +6462,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.FILL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 @@ -6533,9 +6472,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) @@ -6546,9 +6483,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[$proj_uN_0(y).0] : reftype <: storagetype), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 @@ -6558,10 +6493,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 @@ -6587,7 +6520,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOCAL.GET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 @@ -6597,7 +6529,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOCAL.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 @@ -6607,7 +6538,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOCAL.TEE_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 @@ -6617,7 +6547,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(GLOBAL.GET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 @@ -6627,7 +6556,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(GLOBAL.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 @@ -6637,7 +6565,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.GET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 @@ -6647,7 +6574,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 @@ -6657,7 +6583,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.SIZE_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 @@ -6667,7 +6592,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.GROW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 @@ -6677,7 +6601,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.FILL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 @@ -6688,9 +6611,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) - -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) - -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6702,9 +6623,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.INIT_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6715,7 +6634,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(ELEM.DROP_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 @@ -6725,7 +6643,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(MEMORY.SIZE_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 @@ -6735,7 +6652,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(MEMORY.GROW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 @@ -6745,7 +6661,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(MEMORY.FILL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 @@ -6756,9 +6671,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) - -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) - -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 @@ -6768,9 +6681,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 @@ -6779,7 +6690,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(DATA.DROP_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 @@ -6789,7 +6699,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6800,7 +6709,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6811,7 +6719,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6822,7 +6729,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6833,7 +6739,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6844,7 +6749,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) @@ -6855,7 +6759,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6866,7 +6769,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -6877,7 +6779,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -6889,7 +6790,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6900,7 +6800,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -7120,13 +7019,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`t*`|) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`x_1*`|) - -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) @@ -7250,7 +7146,6 @@ relation Instr_const: `%|-%CONST`(context, instr) -- wf_context: `%`(C) -- wf_instr: `%`(GLOBAL.GET_instr(x)) -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7361,13 +7256,11 @@ relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- wf_context: `%`(C) -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -7385,7 +7278,6 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) -- wf_context: `%`(C) -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -7421,7 +7313,6 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- wf_reftype: `%`(rt) -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -7445,7 +7336,6 @@ relation Start_ok: `%|-%:OK`(context, start) -- wf_context: `%`(C) -- wf_start: `%`(START_start(x)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7465,7 +7355,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(TAG_externidx(x)) -- wf_externtype: `%`(TAG_externtype(jt)) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7474,7 +7363,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(GLOBAL_externidx(x)) -- wf_externtype: `%`(GLOBAL_externtype(gt)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7483,7 +7371,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(MEM_externidx(x)) -- wf_externtype: `%`(MEM_externtype(mt)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7492,7 +7379,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(TABLE_externidx(x)) -- wf_externtype: `%`(TABLE_externtype(tt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7501,7 +7387,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(FUNC_externidx(x)) -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7591,24 +7476,15 @@ relation Module_ok: `|-%:%`(module, moduletype) -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) - -- if (|`import*`| = |`xt_I*`|) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} - -- if (|`jt*`| = |`tag*`|) -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- if (|`mem*`| = |`mt*`|) -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} - -- if (|`table*`| = |`tt*`|) -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} - -- if (|`dt*`| = |`func*`|) -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} - -- if (|`data*`| = |`ok*`|) -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} - -- if (|`elem*`| = |`rt*`|) -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} - -- if (|`export*`| = |`nm*`|) - -- if (|`export*`| = |`xt_E*`|) -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) -- if (C = C' +++ {TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) @@ -12361,7 +12237,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_store: `%`(s) -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) - -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 @@ -12370,7 +12245,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_store: `%`(s) -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) - -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 @@ -12379,7 +12253,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_store: `%`(s) -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) - -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 @@ -12389,7 +12262,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_exninst: `%`(exn) -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) - -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 @@ -12454,7 +12326,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) - -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 @@ -12462,7 +12333,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 @@ -12470,7 +12340,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- wf_store: `%`(s) -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) - -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 @@ -12478,7 +12347,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) - -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 @@ -12486,7 +12354,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- wf_store: `%`(s) -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) - -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 @@ -12635,7 +12502,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12645,7 +12511,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12654,7 +12519,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12663,7 +12527,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12696,7 +12559,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(BR_IF_instr(l)) -- wf_instr: `%`(BR_instr(l)) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12704,17 +12566,15 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(BR_IF_instr(l)) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) - -- if ($proj_num__0(i) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: @@ -12722,7 +12582,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instr: `%`(BR_instr(l')) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12830,7 +12689,6 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- if ($proj_num__0(i) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(REF.I31_instr) -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) @@ -12952,7 +12810,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12970,7 +12827,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12988,7 +12844,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(TESTOP_instr(nt, testop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12998,7 +12853,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(RELOP_instr(nt, relop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13007,7 +12861,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(CONST_instr(nt_2, c)) - -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13024,7 +12877,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13034,7 +12886,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13045,7 +12896,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13055,7 +12905,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_uN: `%%`(128, `%`_uN(0)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13064,7 +12913,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13082,7 +12930,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13102,7 +12949,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13121,7 +12967,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- if ($proj_num__0(i) =/= ?()) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13140,7 +12985,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13149,7 +12993,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VBITMASK_instr(sh)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13187,7 +13030,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13197,9 +13039,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) - -- if ($proj_num__0(c_2) =/= ?()) - -- if ($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)|) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13312,8 +13151,6 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -13323,8 +13160,6 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -13335,7 +13170,6 @@ relation `Step_read_before_table.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13352,7 +13186,6 @@ relation `Step_read_before_table.fill-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13362,8 +13195,6 @@ relation `Step_read_before_table.copy-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13380,8 +13211,6 @@ relation `Step_read_before_table.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13394,9 +13223,7 @@ relation `Step_read_before_table.copy-gt`: `%`(config) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) -- wf_instr: `%`(TABLE.GET_instr(y)) -- wf_instr: `%`(TABLE.SET_instr(x)) - -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.COPY_instr(x, y)) @@ -13415,8 +13242,6 @@ relation `Step_read_before_table.copy-gt`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13426,8 +13251,6 @@ relation `Step_read_before_table.init-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13444,8 +13267,6 @@ relation `Step_read_before_table.init-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13455,7 +13276,6 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13472,7 +13292,6 @@ relation `Step_read_before_memory.fill-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13482,8 +13301,6 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13500,8 +13317,6 @@ relation `Step_read_before_memory.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13514,9 +13329,7 @@ relation `Step_read_before_memory.copy-gt`: `%`(config) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) @@ -13535,8 +13348,6 @@ relation `Step_read_before_memory.copy-gt`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13546,8 +13357,6 @@ relation `Step_read_before_memory.init-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13564,8 +13373,6 @@ relation `Step_read_before_memory.init-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13598,8 +13405,6 @@ relation `Step_read_before_array.fill-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13616,8 +13421,6 @@ relation `Step_read_before_array.fill-succ`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13627,8 +13430,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13636,8 +13437,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13654,8 +13453,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13663,8 +13460,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13679,9 +13474,7 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) @@ -13702,8 +13495,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13711,8 +13502,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13722,7 +13511,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13730,8 +13518,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13748,7 +13534,6 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13756,8 +13541,6 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13769,7 +13552,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13777,8 +13559,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13797,7 +13577,6 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13805,8 +13584,6 @@ relation `Step_read_before_array.init_data-num`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13862,11 +13639,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- if (a < |$funcinst(z)|) -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13883,7 +13658,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- if (a < |$funcinst(z)|) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) @@ -13892,11 +13666,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- if (a < |$funcinst(z)|) -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13924,7 +13696,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) -- wf_instr: `%`(CALL_REF_instr(yy)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13968,8 +13739,6 @@ relation Step_read: `%~>%`(config, instr*) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -13980,8 +13749,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -14032,15 +13799,13 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0] : ref <: instr)]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: @@ -14056,7 +13821,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14069,7 +13833,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -14083,8 +13846,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14097,8 +13858,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) @@ -14114,8 +13873,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14132,8 +13889,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14146,9 +13901,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -14163,7 +13915,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14171,7 +13922,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14179,7 +13929,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14187,7 +13936,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14195,7 +13943,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14203,7 +13950,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14211,7 +13957,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14221,7 +13966,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} - -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14240,7 +13983,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -14251,7 +13993,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14260,7 +14001,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_uN: `%%`(N, j) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) @@ -14269,7 +14009,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14279,7 +14018,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) @@ -14299,7 +14037,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14312,7 +14049,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) @@ -14326,8 +14062,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14340,8 +14074,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) @@ -14357,8 +14089,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14375,8 +14105,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14389,9 +14117,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) @@ -14411,7 +14136,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) @@ -14456,7 +14180,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(STRUCT.NEW_instr(x)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14468,9 +14191,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]) : val <: instr)]) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) - -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) - -- if (a < |$structinst(z)|) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -14490,7 +14210,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14499,7 +14218,6 @@ relation Step_read: `%~>%`(config, instr*) -- (wf_ref: `%`(ref))*{ref <- `ref*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14509,19 +14227,16 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (if ($cunpack(zt) =/= ?()))^n{c <- `c*`} -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14535,16 +14250,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]) : val <: instr)]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) - -- if (a < |$arrayinst(z)|) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -14558,7 +14268,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- if (a < |$arrayinst(z)|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) @@ -14573,8 +14282,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14587,7 +14294,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) @@ -14614,8 +14320,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14623,8 +14327,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14637,8 +14339,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -14658,8 +14358,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14687,8 +14385,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14696,7 +14392,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14709,8 +14404,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- wf_ref: `%`(ref) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) @@ -14721,7 +14414,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14735,8 +14427,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14746,7 +14436,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14759,9 +14448,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) - -- if ($cunpack(zt) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) @@ -14829,7 +14515,6 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) @@ -14852,13 +14537,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) @@ -14868,7 +14551,6 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 @@ -14888,13 +14570,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) @@ -14904,16 +14584,13 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 @@ -14921,13 +14598,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) @@ -14937,17 +14612,13 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) - -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -14958,7 +14629,6 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 @@ -14993,7 +14663,6 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -15020,14 +14689,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -19405,7 +19071,6 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) -- wf_instr: `%`(GLOBAL.GET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 diff --git a/spectec/test-middlend/specification.exp/09-sub.il b/spectec/test-middlend/specification.exp/08-sub.il similarity index 99% rename from spectec/test-middlend/specification.exp/09-sub.il rename to spectec/test-middlend/specification.exp/08-sub.il index 727531f8fe..0824b72b8b 100644 --- a/spectec/test-middlend/specification.exp/09-sub.il +++ b/spectec/test-middlend/specification.exp/08-sub.il @@ -5365,7 +5365,6 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- wf_context: `%`(C) -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 @@ -5374,7 +5373,6 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) -- wf_context: `%`(C) -- wf_subtype: `%`(st) -- wf_typeuse: `%`(REC_typeuse(i)) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 @@ -5448,12 +5446,9 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- if (|`comptype'*`| = |`x'**`|) -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} - -- if (|`comptype'*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5495,11 +5490,9 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) -- wf_comptype: `%`(comptype) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- if (|`comptype'*`| = |`typeuse'**`|) -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} - -- if (|`comptype'*`| = |`typeuse*`|) -- (if ($unrollht(C, $heaptype_typeuse(typeuse)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5543,7 +5536,6 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 @@ -5577,7 +5569,6 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 @@ -5663,7 +5654,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 @@ -5672,17 +5662,14 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[j])) - -- if (j < |typeuse*{typeuse <- `typeuse*`}|) -- wf_context: `%`(C) -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 @@ -5783,7 +5770,6 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) -- wf_context: `%`(C) -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} - -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 @@ -5832,8 +5818,6 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- if (|`lct*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5851,7 +5835,6 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(comptype) -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5955,8 +5938,6 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) - -- if (|`t*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -6079,7 +6060,6 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6090,9 +6070,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6101,9 +6079,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6111,7 +6087,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_catch(l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_ALL_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6119,7 +6094,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -6248,7 +6222,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(BR_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6258,7 +6231,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_IF_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 @@ -6267,9 +6239,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} - -- if ($proj_uN_0(l').0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6279,7 +6249,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -6289,7 +6258,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 @@ -6299,7 +6267,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -6313,7 +6280,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -6327,7 +6293,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(CALL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 @@ -6337,7 +6302,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 @@ -6349,10 +6313,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 @@ -6374,7 +6336,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6389,7 +6350,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6406,10 +6366,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6423,7 +6381,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6462,9 +6419,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(REF.FUNC_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) - -- if (|C.REFS_context| > 0) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 @@ -6531,7 +6486,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STRUCT.NEW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 @@ -6541,7 +6495,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} @@ -6553,9 +6506,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6567,9 +6518,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 @@ -6579,7 +6528,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 @@ -6589,7 +6537,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) @@ -6600,7 +6547,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 @@ -6610,9 +6556,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 @@ -6622,10 +6566,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 @@ -6635,7 +6577,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6646,7 +6587,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 @@ -6663,7 +6603,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.FILL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 @@ -6674,9 +6613,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) @@ -6687,9 +6624,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 @@ -6699,10 +6634,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 @@ -6728,7 +6661,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOCAL.GET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 @@ -6738,7 +6670,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOCAL.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 @@ -6748,7 +6679,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOCAL.TEE_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 @@ -6758,7 +6688,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(GLOBAL.GET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 @@ -6768,7 +6697,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(GLOBAL.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 @@ -6778,7 +6706,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.GET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 @@ -6788,7 +6715,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 @@ -6798,7 +6724,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.SIZE_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 @@ -6808,7 +6733,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.GROW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([I32_valtype]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 @@ -6818,7 +6742,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.FILL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 @@ -6829,9 +6752,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) - -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) - -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6843,9 +6764,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.INIT_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6856,7 +6775,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(ELEM.DROP_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 @@ -6866,7 +6784,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(MEMORY.SIZE_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 @@ -6876,7 +6793,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(MEMORY.GROW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 @@ -6886,7 +6802,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(MEMORY.FILL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 @@ -6897,9 +6812,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) - -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) - -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 @@ -6909,9 +6822,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 @@ -6920,7 +6831,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(DATA.DROP_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 @@ -6930,7 +6840,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6941,7 +6850,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6952,7 +6860,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) @@ -6963,7 +6870,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) @@ -6974,7 +6880,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -6985,7 +6890,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) @@ -6996,7 +6900,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -7007,7 +6910,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) @@ -7018,7 +6920,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -7030,7 +6931,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) @@ -7041,7 +6941,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -7261,13 +7160,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`t*`|) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`x_1*`|) - -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) @@ -7391,7 +7287,6 @@ relation Instr_const: `%|-%CONST`(context, instr) -- wf_context: `%`(C) -- wf_instr: `%`(GLOBAL.GET_instr(x)) -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7502,13 +7397,11 @@ relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- wf_context: `%`(C) -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -7526,7 +7419,6 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) -- wf_context: `%`(C) -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) @@ -7562,7 +7454,6 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- wf_reftype: `%`(rt) -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) @@ -7586,7 +7477,6 @@ relation Start_ok: `%|-%:OK`(context, start) -- wf_context: `%`(C) -- wf_start: `%`(START_start(x)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7606,7 +7496,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(TAG_externidx(x)) -- wf_externtype: `%`(TAG_externtype(jt)) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7615,7 +7504,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(GLOBAL_externidx(x)) -- wf_externtype: `%`(GLOBAL_externtype(gt)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7624,7 +7512,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(MEM_externidx(x)) -- wf_externtype: `%`(MEM_externtype(mt)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7633,7 +7520,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(TABLE_externidx(x)) -- wf_externtype: `%`(TABLE_externtype(tt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7642,7 +7528,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(FUNC_externidx(x)) -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7732,24 +7617,15 @@ relation Module_ok: `|-%:%`(module, moduletype) -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) - -- if (|`import*`| = |`xt_I*`|) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} - -- if (|`jt*`| = |`tag*`|) -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- if (|`mem*`| = |`mt*`|) -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} - -- if (|`table*`| = |`tt*`|) -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} - -- if (|`dt*`| = |`func*`|) -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} - -- if (|`data*`| = |`ok*`|) -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} - -- if (|`elem*`| = |`rt*`|) -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} - -- if (|`export*`| = |`nm*`|) - -- if (|`export*`| = |`xt_E*`|) -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) -- if (C = C' +++ {TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) @@ -12549,7 +12425,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_store: `%`(s) -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) - -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 @@ -12558,7 +12433,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_store: `%`(s) -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) - -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 @@ -12567,7 +12441,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_store: `%`(s) -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) - -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 @@ -12577,7 +12450,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_exninst: `%`(exn) -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) - -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 @@ -12642,7 +12514,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) - -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 @@ -12650,7 +12521,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 @@ -12658,7 +12528,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- wf_store: `%`(s) -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) - -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 @@ -12666,7 +12535,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) - -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 @@ -12674,7 +12542,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) -- wf_store: `%`(s) -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) - -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 @@ -12823,7 +12690,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12833,7 +12699,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12842,7 +12707,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12851,7 +12715,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12884,7 +12747,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(BR_IF_instr(l)) -- wf_instr: `%`(BR_instr(l)) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12892,17 +12754,15 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(BR_IF_instr(l)) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) - -- if ($proj_num__0(i) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: @@ -12910,7 +12770,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instr: `%`(BR_instr(l')) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13018,7 +12877,6 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- if ($proj_num__0(i) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(REF.I31_instr) -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) @@ -13140,7 +12998,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13158,7 +13015,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13176,7 +13032,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(TESTOP_instr(nt, testop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13186,7 +13041,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(RELOP_instr(nt, relop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13195,7 +13049,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(CONST_instr(nt_2, c)) - -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13212,7 +13065,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13222,7 +13074,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13233,7 +13084,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13243,7 +13093,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_uN: `%%`(128, `%`_uN(0)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13252,7 +13101,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13270,7 +13118,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13290,7 +13137,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13309,7 +13155,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- if ($proj_num__0(i) =/= ?()) -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13328,7 +13173,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13337,7 +13181,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VBITMASK_instr(sh)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13375,7 +13218,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13385,9 +13227,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) - -- if ($proj_num__0(c_2) =/= ?()) - -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)|) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13500,8 +13339,6 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -13511,8 +13348,6 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -13523,7 +13358,6 @@ relation `Step_read_before_table.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13540,7 +13374,6 @@ relation `Step_read_before_table.fill-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13550,8 +13383,6 @@ relation `Step_read_before_table.copy-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13568,8 +13399,6 @@ relation `Step_read_before_table.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13582,9 +13411,7 @@ relation `Step_read_before_table.copy-gt`: `%`(config) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) -- wf_instr: `%`(TABLE.GET_instr(y)) -- wf_instr: `%`(TABLE.SET_instr(x)) - -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.COPY_instr(x, y)) @@ -13603,8 +13430,6 @@ relation `Step_read_before_table.copy-gt`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13614,8 +13439,6 @@ relation `Step_read_before_table.init-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13632,8 +13455,6 @@ relation `Step_read_before_table.init-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13643,7 +13464,6 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13660,7 +13480,6 @@ relation `Step_read_before_memory.fill-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13670,8 +13489,6 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13688,8 +13505,6 @@ relation `Step_read_before_memory.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13702,9 +13517,7 @@ relation `Step_read_before_memory.copy-gt`: `%`(config) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) @@ -13723,8 +13536,6 @@ relation `Step_read_before_memory.copy-gt`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13734,8 +13545,6 @@ relation `Step_read_before_memory.init-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13752,8 +13561,6 @@ relation `Step_read_before_memory.init-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13786,8 +13593,6 @@ relation `Step_read_before_array.fill-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13804,8 +13609,6 @@ relation `Step_read_before_array.fill-succ`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13815,8 +13618,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13824,8 +13625,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13842,8 +13641,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13851,8 +13648,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13867,9 +13662,7 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) @@ -13890,8 +13683,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13899,8 +13690,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13910,7 +13699,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13918,8 +13706,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13936,7 +13722,6 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13944,8 +13729,6 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13957,7 +13740,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13965,8 +13747,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13985,7 +13765,6 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13993,8 +13772,6 @@ relation `Step_read_before_array.init_data-num`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14050,11 +13827,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) - -- if (a < |$funcinst(z)|) -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14071,7 +13846,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- if (a < |$funcinst(z)|) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) @@ -14080,11 +13854,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) - -- if (a < |$funcinst(z)|) -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14112,7 +13884,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) -- wf_instr: `%`(CALL_REF_instr(yy)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14156,8 +13927,6 @@ relation Step_read: `%~>%`(config, instr*) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -14168,8 +13937,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -14220,15 +13987,13 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: @@ -14244,7 +14009,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14257,7 +14021,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -14271,8 +14034,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14285,8 +14046,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -14302,8 +14061,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14320,8 +14077,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14334,9 +14089,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) $instr_ref($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -14351,7 +14103,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14359,7 +14110,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14367,7 +14117,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14375,7 +14124,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14383,7 +14131,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14391,7 +14138,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14399,7 +14145,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14409,7 +14154,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} - -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14428,7 +14171,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -14439,7 +14181,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14448,7 +14189,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_uN: `%%`(N, j) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) @@ -14457,7 +14197,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14467,7 +14206,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) @@ -14487,7 +14225,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14500,7 +14237,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) @@ -14514,8 +14250,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14528,8 +14262,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -14545,8 +14277,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14563,8 +14293,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14577,9 +14305,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) @@ -14599,7 +14324,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) @@ -14644,7 +14368,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(STRUCT.NEW_instr(x)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14656,9 +14379,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]))]) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) - -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) - -- if (a < |$structinst(z)|) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -14678,7 +14398,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14687,7 +14406,6 @@ relation Step_read: `%~>%`(config, instr*) -- (wf_ref: `%`(ref))*{ref <- `ref*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14697,19 +14415,16 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (if ($cunpack(zt) =/= ?()))^n{c <- `c*`} -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14723,16 +14438,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [$instr_val($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]))]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) - -- if (a < |$arrayinst(z)|) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -14746,7 +14456,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- if (a < |$arrayinst(z)|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) @@ -14761,8 +14470,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14775,7 +14482,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) @@ -14802,8 +14508,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14811,8 +14515,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14825,8 +14527,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -14846,8 +14546,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14875,8 +14573,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14884,7 +14580,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14897,8 +14592,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- wf_ref: `%`(ref) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) @@ -14909,7 +14602,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14923,8 +14615,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14934,7 +14624,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14947,9 +14636,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) - -- if ($cunpack(zt) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) @@ -15017,7 +14703,6 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) @@ -15040,13 +14725,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) @@ -15056,7 +14739,6 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 @@ -15076,13 +14758,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) @@ -15092,16 +14772,13 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 @@ -15109,13 +14786,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) @@ -15125,17 +14800,13 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) - -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -15146,7 +14817,6 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 @@ -15181,7 +14851,6 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)])) -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -15208,14 +14877,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -19626,7 +19292,6 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) -- wf_instr: `%`(GLOBAL.GET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 diff --git a/spectec/test-middlend/specification.exp/07-sideconditions.il b/spectec/test-middlend/specification.exp/09-definition-to-relation.il similarity index 57% rename from spectec/test-middlend/specification.exp/07-sideconditions.il rename to spectec/test-middlend/specification.exp/09-definition-to-relation.il index 14229f6c6a..8c8c53171d 100644 --- a/spectec/test-middlend/specification.exp/07-sideconditions.il +++ b/spectec/test-middlend/specification.exp/09-definition-to-relation.il @@ -314,21 +314,24 @@ syntax f32 = fN syntax f64 = fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fzero(N : N) : fN +relation fun_fzero: `%%`(N, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + rule fun_fzero_case_0{N : nat}: + `%%`(N, POS_fN(SUBNORM_fNmag(0))) -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fnat(N : N, nat : nat) : fN +relation fun_fnat: `%%%`(N, nat, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + rule fun_fnat_case_0{N : nat, n : nat}: + `%%%`(N, n, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fone(N : N) : fN +relation fun_fone: `%%`(N, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + rule fun_fone_case_0{N : nat}: + `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -369,45 +372,62 @@ relation wf_char: `%`(char) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -def $cont(byte : byte) : nat +relation fun_cont: `%%`(byte, nat) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $cont{b : byte}(b) = ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) + rule fun_cont_case_0{b : byte}: + `%%`(b, ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat)) -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.1-89.25 -def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:48.1-48.44 - def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 - def $utf8{ch : char, b : byte}([ch]) = [b] +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 +relation fun_utf8: `%%`(char*, byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 + rule fun_utf8_case_0{`ch*` : char*, `var_0*` : byte**}: + `%%`(ch*{ch <- `ch*`}, $concat_(syntax byte, var_0*{var_0 <- `var_0*`})) + -- (fun_utf8: `%%`([ch], var_0))*{var_0 <- `var_0*`, ch <- `ch*`} + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 + rule fun_utf8_case_1{ch : char, b : byte}: + `%%`([ch], [b]) -- wf_byte: `%`(b) -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) -- if ($proj_char_0(ch).0 < 128) -- if (`%`_byte($proj_char_0(ch).0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 - def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 + rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: + `%%`([ch], [b_1 b_2]) + -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) - -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 + rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3]) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) - -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * var_0)) + var_1)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 + rule fun_utf8_case_4{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, var_2 : nat, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3 b_4]) + -- fun_cont: `%%`(b_4, var_2) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- wf_byte: `%`(b_3) -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) - -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) + -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * var_0)) + ((2 ^ 6) * var_1)) + var_2)) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -422,10 +442,11 @@ def $proj_name_0(x : name) : (char*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_name: `%`(name) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule name_case_0{`char*` : char*}: + rule name_case_0{`char*` : char*, var_0 : byte*}: `%`(`%`_name(char*{char <- `char*`})) + -- fun_utf8: `%%`(char*{char <- `char*`}, var_0) -- (wf_char: `%`(char))*{char <- `char*`} - -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) + -- if (|var_0| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax idx = u32 @@ -596,89 +617,116 @@ relation wf_free: `%`(free) -- (wf_uN: `%%`(32, var_8))*{var_8 <- var_8} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_opt(free?) : free +relation fun_free_opt: `%%`(free?, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_opt_case_0: + `%%`(?(), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt{free : free}(?(free)) = free + rule fun_free_opt_case_1{free : free}: + `%%`(?(free), free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:170.1-170.29 -def $free_list(free*) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 - def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:170.6-170.16 +relation fun_free_list: `%%`(free*, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:170.6-170.16 + rule fun_free_list_case_0: + `%%`([], {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 - def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:170.6-170.16 + rule fun_free_list_case_1{free : free, `free'*` : free*, var_0 : free}: + `%%`([free] ++ free'*{free' <- `free'*`}, free +++ var_0) + -- fun_free_list: `%%`(free'*{free' <- `free'*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_typeidx(typeidx : typeidx) : free +relation fun_free_typeidx: `%%`(typeidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_typeidx_case_0{typeidx : uN}: + `%%`(typeidx, {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_funcidx(funcidx : funcidx) : free +relation fun_free_funcidx: `%%`(funcidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_funcidx_case_0{funcidx : uN}: + `%%`(funcidx, {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_globalidx(globalidx : globalidx) : free +relation fun_free_globalidx: `%%`(globalidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_globalidx_case_0{globalidx : uN}: + `%%`(globalidx, {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_tableidx(tableidx : tableidx) : free +relation fun_free_tableidx: `%%`(tableidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_tableidx_case_0{tableidx : uN}: + `%%`(tableidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_memidx(memidx : memidx) : free +relation fun_free_memidx: `%%`(memidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_memidx_case_0{memidx : uN}: + `%%`(memidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_elemidx(elemidx : elemidx) : free +relation fun_free_elemidx: `%%`(elemidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + rule fun_free_elemidx_case_0{elemidx : uN}: + `%%`(elemidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_dataidx(dataidx : dataidx) : free +relation fun_free_dataidx: `%%`(dataidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + rule fun_free_dataidx_case_0{dataidx : uN}: + `%%`(dataidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_localidx(localidx : localidx) : free +relation fun_free_localidx: `%%`(localidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + rule fun_free_localidx_case_0{localidx : uN}: + `%%`(localidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_labelidx(labelidx : labelidx) : free +relation fun_free_labelidx: `%%`(labelidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + rule fun_free_labelidx_case_0{labelidx : uN}: + `%%`(labelidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_externidx(externidx : externidx) : free +relation fun_free_externidx: `%%`(externidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{funcidx : uN}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) + rule fun_free_externidx_case_0{funcidx : uN, var_0 : free}: + `%%`(FUNC_externidx(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{globalidx : uN}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) + rule fun_free_externidx_case_1{globalidx : uN, var_0 : free}: + `%%`(GLOBAL_externidx(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) + rule fun_free_externidx_case_2{tableidx : uN, var_0 : free}: + `%%`(TABLE_externidx(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + rule fun_free_externidx_case_3{memidx : uN, var_0 : free}: + `%%`(MEM_externidx(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -696,6 +744,10 @@ syntax numtype = | F32 | F64 +def $numtype_addrtype(addrtype) : numtype + def $numtype_addrtype(I32_addrtype) = I32_numtype + def $numtype_addrtype(I64_addrtype) = I64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax vectype = | V128 @@ -708,6 +760,12 @@ syntax consttype = | F64 | V128 +def $consttype_numtype(numtype) : consttype + def $consttype_numtype(I32_numtype) = I32_consttype + def $consttype_numtype(I64_numtype) = I64_consttype + def $consttype_numtype(F32_numtype) = F32_consttype + def $consttype_numtype(F64_numtype) = F64_consttype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax absheaptype = | ANY @@ -804,6 +862,64 @@ syntax rectype = | REC{list : list(syntax subtype)}(list : list(syntax subtype)) } +def $heaptype_absheaptype(absheaptype) : heaptype + def $heaptype_absheaptype(ANY_absheaptype) = ANY_heaptype + def $heaptype_absheaptype(EQ_absheaptype) = EQ_heaptype + def $heaptype_absheaptype(I31_absheaptype) = I31_heaptype + def $heaptype_absheaptype(STRUCT_absheaptype) = STRUCT_heaptype + def $heaptype_absheaptype(ARRAY_absheaptype) = ARRAY_heaptype + def $heaptype_absheaptype(NONE_absheaptype) = NONE_heaptype + def $heaptype_absheaptype(FUNC_absheaptype) = FUNC_heaptype + def $heaptype_absheaptype(NOFUNC_absheaptype) = NOFUNC_heaptype + def $heaptype_absheaptype(EXN_absheaptype) = EXN_heaptype + def $heaptype_absheaptype(NOEXN_absheaptype) = NOEXN_heaptype + def $heaptype_absheaptype(EXTERN_absheaptype) = EXTERN_heaptype + def $heaptype_absheaptype(NOEXTERN_absheaptype) = NOEXTERN_heaptype + def $heaptype_absheaptype(BOT_absheaptype) = BOT_heaptype + +def $valtype_addrtype(addrtype) : valtype + def $valtype_addrtype(I32_addrtype) = I32_valtype + def $valtype_addrtype(I64_addrtype) = I64_valtype + +def $storagetype_consttype(consttype) : storagetype + def $storagetype_consttype(I32_consttype) = I32_storagetype + def $storagetype_consttype(I64_consttype) = I64_storagetype + def $storagetype_consttype(F32_consttype) = F32_storagetype + def $storagetype_consttype(F64_consttype) = F64_storagetype + def $storagetype_consttype(V128_consttype) = V128_storagetype + +def $storagetype_numtype(numtype) : storagetype + def $storagetype_numtype(I32_numtype) = I32_storagetype + def $storagetype_numtype(I64_numtype) = I64_storagetype + def $storagetype_numtype(F32_numtype) = F32_storagetype + def $storagetype_numtype(F64_numtype) = F64_storagetype + +def $valtype_numtype(numtype) : valtype + def $valtype_numtype(I32_numtype) = I32_valtype + def $valtype_numtype(I64_numtype) = I64_valtype + def $valtype_numtype(F32_numtype) = F32_valtype + def $valtype_numtype(F64_numtype) = F64_valtype + +def $heaptype_typeuse(typeuse) : heaptype + def $heaptype_typeuse{x0 : typeidx}(_IDX_typeuse(x0)) = _IDX_heaptype(x0) + def $heaptype_typeuse{x0 : rectype, x1 : n}(_DEF_typeuse(x0, x1)) = _DEF_heaptype(x0, x1) + def $heaptype_typeuse{x0 : n}(REC_typeuse(x0)) = REC_heaptype(x0) + +def $storagetype_valtype(valtype) : storagetype + def $storagetype_valtype(I32_valtype) = I32_storagetype + def $storagetype_valtype(I64_valtype) = I64_storagetype + def $storagetype_valtype(F32_valtype) = F32_storagetype + def $storagetype_valtype(F64_valtype) = F64_storagetype + def $storagetype_valtype(V128_valtype) = V128_storagetype + def $storagetype_valtype{x0 : null?, x1 : heaptype}(REF_valtype(x0, x1)) = REF_storagetype(x0, x1) + def $storagetype_valtype(BOT_valtype) = BOT_storagetype + +def $storagetype_vectype(vectype) : storagetype + def $storagetype_vectype(V128_vectype) = V128_storagetype + +def $valtype_vectype(vectype) : valtype + def $valtype_vectype(V128_vectype) = V128_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { @@ -994,11 +1110,21 @@ relation wf_subtype: `%`(subtype) syntax deftype = | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) +def $heaptype_deftype(deftype) : heaptype + def $heaptype_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_heaptype(x0, x1) + +def $typeuse_deftype(deftype) : typeuse + def $typeuse_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_typeuse(x0, x1) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax typevar = | _IDX{typeidx : typeidx}(typeidx : typeidx) | REC{n : n}(n : n) +def $typeuse_typevar(typevar) : typeuse + def $typeuse_typevar{x0 : typeidx}(_IDX_typevar(x0)) = _IDX_typeuse(x0) + def $typeuse_typevar{x0 : n}(REC_typevar(x0)) = REC_typeuse(x0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation wf_typevar: `%`(typevar) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1014,6 +1140,12 @@ relation wf_typevar: `%`(typevar) syntax reftype = | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) +def $storagetype_reftype(reftype) : storagetype + def $storagetype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_storagetype(x0, x1) + +def $valtype_reftype(reftype) : valtype + def $valtype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_valtype(x0, x1) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation wf_reftype: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1029,6 +1161,10 @@ syntax Fnn = | F32 | F64 +def $numtype_Fnn(Fnn) : numtype + def $numtype_Fnn(F32_Fnn) = F32_numtype + def $numtype_Fnn(F64_Fnn) = F64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Vnn = vectype @@ -1041,75 +1177,87 @@ syntax Cnn = | V128 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $ANYREF : reftype +relation fun_ANYREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + rule fun_ANYREF_case_0: + `%`(REF_reftype(?(NULL_null), ANY_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EQREF : reftype +relation fun_EQREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + rule fun_EQREF_case_0: + `%`(REF_reftype(?(NULL_null), EQ_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $I31REF : reftype +relation fun_I31REF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + rule fun_I31REF_case_0: + `%`(REF_reftype(?(NULL_null), I31_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $STRUCTREF : reftype +relation fun_STRUCTREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + rule fun_STRUCTREF_case_0: + `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $ARRAYREF : reftype +relation fun_ARRAYREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + rule fun_ARRAYREF_case_0: + `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FUNCREF : reftype +relation fun_FUNCREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + rule fun_FUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EXNREF : reftype +relation fun_EXNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + rule fun_EXNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EXTERNREF : reftype +relation fun_EXTERNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + rule fun_EXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLREF : reftype +relation fun_NULLREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + rule fun_NULLREF_case_0: + `%`(REF_reftype(?(NULL_null), NONE_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLFUNCREF : reftype +relation fun_NULLFUNCREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + rule fun_NULLFUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLEXNREF : reftype +relation fun_NULLEXNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + rule fun_NULLEXNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLEXTERNREF : reftype +relation fun_NULLEXTERNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + rule fun_NULLEXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1117,6 +1265,10 @@ syntax packtype = | I8 | I16 +def $storagetype_packtype(packtype) : storagetype + def $storagetype_packtype(I8_packtype) = I8_storagetype + def $storagetype_packtype(I16_packtype) = I16_storagetype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax lanetype = | I32 @@ -1126,6 +1278,24 @@ syntax lanetype = | I8 | I16 +def $lanetype_Fnn(Fnn) : lanetype + def $lanetype_Fnn(F32_Fnn) = F32_lanetype + def $lanetype_Fnn(F64_Fnn) = F64_lanetype + +def $lanetype_addrtype(addrtype) : lanetype + def $lanetype_addrtype(I32_addrtype) = I32_lanetype + def $lanetype_addrtype(I64_addrtype) = I64_lanetype + +def $lanetype_numtype(numtype) : lanetype + def $lanetype_numtype(I32_numtype) = I32_lanetype + def $lanetype_numtype(I64_numtype) = I64_lanetype + def $lanetype_numtype(F32_numtype) = F32_lanetype + def $lanetype_numtype(F64_numtype) = F64_lanetype + +def $lanetype_packtype(packtype) : lanetype + def $lanetype_packtype(I8_packtype) = I8_lanetype + def $lanetype_packtype(I16_packtype) = I16_lanetype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Pnn = packtype @@ -1136,6 +1306,16 @@ syntax Jnn = | I8 | I16 +def $lanetype_Jnn(Jnn) : lanetype + def $lanetype_Jnn(I32_Jnn) = I32_lanetype + def $lanetype_Jnn(I64_Jnn) = I64_lanetype + def $lanetype_Jnn(I8_Jnn) = I8_lanetype + def $lanetype_Jnn(I16_Jnn) = I16_lanetype + +def $Jnn_addrtype(addrtype) : Jnn + def $Jnn_addrtype(I32_addrtype) = I32_Jnn + def $Jnn_addrtype(I64_addrtype) = I64_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Lnn = lanetype @@ -1293,33 +1473,49 @@ def $psize(packtype : packtype) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $lsize(lanetype : lanetype) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lsize{numtype : numtype}((numtype : numtype <: lanetype)) = $size(numtype) + def $lsize(I32_lanetype) = $size(I32_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lsize{packtype : packtype}((packtype : packtype <: lanetype)) = $psize(packtype) + def $lsize(I64_lanetype) = $size(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F32_lanetype) = $size(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F64_lanetype) = $size(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I8_lanetype) = $psize(I8_packtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I16_lanetype) = $psize(I16_packtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $zsize(storagetype : storagetype) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = $size(numtype) + def $zsize(I32_storagetype) = $size(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I64_storagetype) = $size(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F32_storagetype) = $size(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F64_storagetype) = $size(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(V128_storagetype) = $vsize(V128_vectype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = $vsize(vectype) + def $zsize(I8_storagetype) = $psize(I8_packtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = $psize(packtype) + def $zsize(I16_storagetype) = $psize(I16_packtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $isize(Inn : Inn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $isize{Inn : addrtype}(Inn) = $size((Inn : addrtype <: numtype)) + def $isize{Inn : addrtype}(Inn) = $size($numtype_addrtype(Inn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $jsize(Jnn : Jnn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $jsize{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) + def $jsize{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $fsize(Fnn : Fnn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $fsize{Fnn : Fnn}(Fnn) = $size((Fnn : Fnn <: numtype)) + def $fsize{Fnn : Fnn}(Fnn) = $size($numtype_Fnn(Fnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_isize(nat : nat) : Inn? @@ -1336,7 +1532,7 @@ def $inv_jsize(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsize(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{n : nat}(n) = ?((!($inv_isize(n)) : addrtype <: Jnn)) + def $inv_jsize{n : nat}(n) = ?($Jnn_addrtype(!($inv_isize(n)))) def $inv_jsize{x0 : nat}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1390,7 +1586,7 @@ def $lsizenn2(lanetype : lanetype) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $jsizenn(Jnn : Jnn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $jsizenn{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) + def $jsizenn{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsizenn(nat : nat) : Jnn? @@ -1401,60 +1597,131 @@ def $inv_jsizenn(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $lunpack(lanetype : lanetype) : numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lunpack{numtype : numtype}((numtype : numtype <: lanetype)) = numtype + def $lunpack(I32_lanetype) = I32_numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lunpack{packtype : packtype}((packtype : packtype <: lanetype)) = I32_numtype + def $lunpack(I64_lanetype) = I64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F32_lanetype) = F32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F64_lanetype) = F64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I8_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I16_lanetype) = I32_numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $unpack(storagetype : storagetype) : valtype +relation fun_unpack: `%%`(storagetype, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_0: + `%%`(BOT_storagetype, BOT_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_1{`null?` : null?, heaptype : heaptype}: + `%%`(REF_storagetype(null?{null <- `null?`}, heaptype), REF_valtype(null?{null <- `null?`}, heaptype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_2: + `%%`(V128_storagetype, V128_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_3: + `%%`(F64_storagetype, F64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_4: + `%%`(F32_storagetype, F32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_5: + `%%`(I64_storagetype, I64_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype + rule fun_unpack_case_6: + `%%`(I32_storagetype, I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_7: + `%%`(I8_storagetype, I32_valtype) + -- wf_valtype: `%`(I32_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype + rule fun_unpack_case_8: + `%%`(I16_storagetype, I32_valtype) -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack{numtype : numtype}((numtype : numtype <: storagetype)) = ?(numtype) + def $nunpack(I32_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I64_storagetype) = ?(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F32_storagetype) = ?(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F64_storagetype) = ?(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I8_storagetype) = ?(I32_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack{packtype : packtype}((packtype : packtype <: storagetype)) = ?(I32_numtype) + def $nunpack(I16_storagetype) = ?(I32_numtype) def $nunpack{x0 : storagetype}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $vunpack(storagetype : storagetype) : vectype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $vunpack{vectype : vectype}((vectype : vectype <: storagetype)) = ?(vectype) + def $vunpack(V128_storagetype) = ?(V128_vectype) def $vunpack{x0 : storagetype}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $cunpack(storagetype : storagetype) : consttype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack{consttype : consttype}((consttype : consttype <: storagetype)) = ?(consttype) + def $cunpack(I32_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?(I64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?(F32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?(F64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(V128_storagetype) = ?(V128_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?($consttype_numtype($lunpack(I32_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?($consttype_numtype($lunpack(I64_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack{packtype : packtype}((packtype : packtype <: storagetype)) = ?(I32_consttype) + def $cunpack(F32_storagetype) = ?($consttype_numtype($lunpack(F32_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack{lanetype : lanetype}((lanetype : lanetype <: storagetype)) = ?(($lunpack(lanetype) : numtype <: consttype)) + def $cunpack(F64_storagetype) = ?($consttype_numtype($lunpack(F64_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?($consttype_numtype($lunpack(I8_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?($consttype_numtype($lunpack(I16_lanetype))) def $cunpack{x0 : storagetype}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size((at_1 : addrtype <: numtype)) <= $size((at_2 : addrtype <: numtype))) then at_1 else at_2) + def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size($numtype_addrtype(at_1)) <= $size($numtype_addrtype(at_2))) then at_1 else at_2) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $diffrt(reftype : reftype, reftype : reftype) : reftype +relation fun_diffrt: `%%%`(reftype, reftype, reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + rule fun_diffrt_case_0{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2), REF_reftype(?(), ht_1)) -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + rule fun_diffrt_case_1{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2), REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = dt + def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = _DEF_deftype(rectype, n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { @@ -1516,7 +1783,7 @@ def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 def $funcsxt([]) = [] ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 - def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) + def $funcsxt{rectype : rectype, n : n, `xt*` : externtype*}([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt*{xt <- `xt*`}) = [_DEF_deftype(rectype, n)] ++ $funcsxt(xt*{xt <- `xt*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) } @@ -1527,7 +1794,7 @@ rec { ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 - def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) + def $subst_typevar{tv : typevar}(tv, [], []) = $typeuse_typevar(tv) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = (if (tv = tv_1) then tu_1 else $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})) } @@ -1535,18 +1802,25 @@ def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 -def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 - def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 - def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 - def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_0: + `%%%`([], [], ([], [])) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)}: + `%%%`([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}, var_0) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_0 : (typevar*, typeuse*)}: + `%%%`([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}, ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- wf_typevar: `%`(_IDX_typevar(x)) - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1567,83 +1841,180 @@ def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 -def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 - def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 - def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 -def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 - def $subst_heaptype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 - def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 -def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 - def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 -def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 - def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 - def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation fun_subst_typeuse: `%%%%`(typeuse, typevar*, typeuse*, typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(REC_typeuse(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $subst_typevar(REC_typevar(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(_IDX_typeuse(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $subst_typevar(_IDX_typevar(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_typeuse(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $typeuse_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation fun_subst_heaptype: `%%%%`(heaptype, typevar*, typeuse*, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(REC_heaptype(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $heaptype_typeuse($subst_typevar(REC_typevar(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(_IDX_heaptype(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $heaptype_typeuse($subst_typevar(_IDX_typevar(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_heaptype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $heaptype_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_3{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, ht) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule fun_subst_reftype_case_0{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : heaptype}: + `%%%%`(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, REF_reftype(null?{null <- `null?`}, var_0)) + -- fun_subst_heaptype: `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation fun_subst_valtype: `%%%%`(valtype, typevar*, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_0{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_numtype($subst_numtype(I32_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_1{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_numtype($subst_numtype(I64_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_2{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_numtype($subst_numtype(F32_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_3{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_numtype($subst_numtype(F64_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_4{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(V128_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_vectype($subst_vectype(V128_vectype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_5{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : reftype}: + `%%%%`(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_reftype(var_0)) + -- fun_subst_reftype: `%%%%`(REF_reftype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_6{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, BOT_valtype) -- wf_valtype: `%`(BOT_valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 -def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 - def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 -def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 - def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 -def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 - def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 - def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 - def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 -def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 - def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 -def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 - def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation fun_subst_storagetype: `%%%%`(storagetype, typevar*, typeuse*, storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_0{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(BOT_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_1{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_2{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(V128_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(V128_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_3{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F64_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_4{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F32_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_5{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I64_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_6{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I32_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_7{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I8_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_packtype($subst_packtype(I8_packtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_8{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I16_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_packtype($subst_packtype(I16_packtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation fun_subst_fieldtype: `%%%%`(fieldtype, typevar*, typeuse*, fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule fun_subst_fieldtype_case_0{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : storagetype}: + `%%%%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%%`_fieldtype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_storagetype: `%%%%`(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_0{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_0*` : fieldtype*}: + `%%%%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- (fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, ft <- `ft*`} + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_1{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : fieldtype}: + `%%%%`(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, ARRAY_comptype(var_0)) + -- fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_comptype: `%`(ARRAY_comptype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_2{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : valtype*, `var_0*` : valtype*}: + `%%%%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + -- (fun_subst_valtype: `%%%%`(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, t_2 <- `t_2*`} + -- (fun_subst_valtype: `%%%%`(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, t_1 <- `t_1*`} + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule fun_subst_subtype_case_0{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : comptype, `var_0*` : typeuse*}: + `%%%%`(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) + -- fun_subst_comptype: `%%%%`(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- (fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, tu' <- `tu'*`} + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 +relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 + rule fun_subst_rectype_case_0{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_1 : (typevar*, typeuse*), `var_0*` : subtype*}: + `%%%%`(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, REC_rectype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 -def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 - def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) + -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = var_1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 +relation fun_subst_deftype: `%%%%`(deftype, typevar*, typeuse*, deftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 + rule fun_subst_deftype_case_0{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*, var_0 : rectype}: + `%%%%`(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, _DEF_deftype(var_0, i)) + -- fun_subst_rectype: `%%%%`(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1652,328 +2023,651 @@ def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = at ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype +relation fun_subst_tagtype: `%%%%`(tagtype, typevar*, typeuse*, tagtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + rule fun_subst_tagtype_case_0{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tagtype}: + `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype +relation fun_subst_globaltype: `%%%%`(globaltype, typevar*, typeuse*, globaltype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_subst_globaltype_case_0{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%%`_globaltype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_valtype: `%%%%`(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, var_0)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype +relation fun_subst_memtype: `%%%%`(memtype, typevar*, typeuse*, memtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) + rule fun_subst_memtype_case_0{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%%PAGE`_memtype(at, lim)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype +relation fun_subst_tabletype: `%%%%`(tabletype, typevar*, typeuse*, tabletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_subst_tabletype_case_0{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : reftype}: + `%%%%`(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%%%`_tabletype(at, lim, var_0)) + -- fun_subst_reftype: `%%%%`(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, var_0)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype +relation fun_subst_externtype: `%%%%`(externtype, typevar*, typeuse*, externtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_subst_externtype_case_0{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tagtype}: + `%%%%`(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, TAG_externtype(var_0)) + -- fun_subst_tagtype: `%%%%`(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(TAG_externtype(var_0)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_subst_externtype_case_1{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : globaltype}: + `%%%%`(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, GLOBAL_externtype(var_0)) + -- fun_subst_globaltype: `%%%%`(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(GLOBAL_externtype(var_0)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_subst_externtype_case_2{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tabletype}: + `%%%%`(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, TABLE_externtype(var_0)) + -- fun_subst_tabletype: `%%%%`(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(TABLE_externtype(var_0)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_subst_externtype_case_3{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : memtype}: + `%%%%`(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, MEM_externtype(var_0)) + -- fun_subst_memtype: `%%%%`(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(MEM_externtype(var_0)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) - -- wf_externtype: `%`(FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))) + rule fun_subst_externtype_case_4{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(FUNC_externtype(_DEF_typeuse(rectype, n)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, FUNC_externtype($typeuse_deftype(var_0))) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(var_0))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype +relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) + rule fun_subst_moduletype_case_0{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : externtype*, `var_0*` : externtype*}: + `%%%%`(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) + -- (fun_subst_externtype: `%%%%`(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, xt_2 <- `xt_2*`} + -- (fun_subst_externtype: `%%%%`(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, xt_1 <- `xt_1*`} + -- wf_moduletype: `%`(`%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_all_valtype(valtype : valtype, typeuse*) : valtype +relation fun_subst_all_valtype: `%%%`(valtype, typeuse*, valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 -def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 - def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.1-495.34 -def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.70 - def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.1-523.34 -def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:524.1-524.59 - def $free_deftype{rectype : rectype, n : nat}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.22 +relation fun_free_resulttype: `%%`(resulttype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.22 + rule fun_free_resulttype_case_0{`valtype*` : valtype*, `var_1*` : free*, var_0 : free}: + `%%`(`%`_resulttype(valtype*{valtype <- `valtype*`}), var_0) + -- (fun_free_valtype: `%%`(valtype, var_1))*{var_1 <- `var_1*`, valtype <- `valtype*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.23 +relation fun_free_storagetype: `%%`(storagetype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.23 + rule fun_free_storagetype_case_0{var_0 : free}: + `%%`(BOT_storagetype, var_0) + -- fun_free_valtype: `%%`(BOT_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.23 + rule fun_free_storagetype_case_1{`null?` : null?, heaptype : heaptype, var_0 : free}: + `%%`(REF_storagetype(null?{null <- `null?`}, heaptype), var_0) + -- fun_free_valtype: `%%`(REF_valtype(null?{null <- `null?`}, heaptype), var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.23 + rule fun_free_storagetype_case_2{var_0 : free}: + `%%`(V128_storagetype, var_0) + -- fun_free_valtype: `%%`(V128_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.23 + rule fun_free_storagetype_case_3{var_0 : free}: + `%%`(F64_storagetype, var_0) + -- fun_free_valtype: `%%`(F64_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.23 + rule fun_free_storagetype_case_4{var_0 : free}: + `%%`(F32_storagetype, var_0) + -- fun_free_valtype: `%%`(F32_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.23 + rule fun_free_storagetype_case_5{var_0 : free}: + `%%`(I64_storagetype, var_0) + -- fun_free_valtype: `%%`(I64_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.23 + rule fun_free_storagetype_case_6{var_0 : free}: + `%%`(I32_storagetype, var_0) + -- fun_free_valtype: `%%`(I32_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.23 + rule fun_free_storagetype_case_7{var_0 : free}: + `%%`(I8_storagetype, var_0) + -- fun_free_packtype: `%%`(I8_packtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.23 + rule fun_free_storagetype_case_8{var_0 : free}: + `%%`(I16_storagetype, var_0) + -- fun_free_packtype: `%%`(I16_packtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.21 +relation fun_free_fieldtype: `%%`(fieldtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.21 + rule fun_free_fieldtype_case_0{`mut?` : mut?, storagetype : storagetype, var_0 : free}: + `%%`(`%%`_fieldtype(mut?{mut <- `mut?`}, storagetype), var_0) + -- fun_free_storagetype: `%%`(storagetype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:493.6-493.20 +relation fun_free_comptype: `%%`(comptype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:493.6-493.20 + rule fun_free_comptype_case_0{`fieldtype*` : fieldtype*, `var_1*` : free*, var_0 : free}: + `%%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})), var_0) + -- (fun_free_fieldtype: `%%`(fieldtype, var_1))*{var_1 <- `var_1*`, fieldtype <- `fieldtype*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:493.6-493.20 + rule fun_free_comptype_case_1{fieldtype : fieldtype, var_0 : free}: + `%%`(ARRAY_comptype(fieldtype), var_0) + -- fun_free_fieldtype: `%%`(fieldtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:493.6-493.20 + rule fun_free_comptype_case_2{resulttype_1 : list(syntax valtype), resulttype_2 : list(syntax valtype), var_1 : free, var_0 : free}: + `%%`(`FUNC%->%`_comptype(resulttype_1, resulttype_2), var_0 +++ var_1) + -- fun_free_resulttype: `%%`(resulttype_2, var_1) + -- fun_free_resulttype: `%%`(resulttype_1, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.6-494.19 +relation fun_free_subtype: `%%`(subtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.6-494.19 + rule fun_free_subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype), var_0 +++ var_2) + -- fun_free_comptype: `%%`(comptype, var_2) + -- (fun_free_typeuse: `%%`(typeuse, var_1))*{var_1 <- `var_1*`, typeuse <- `typeuse*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.6-495.19 +relation fun_free_rectype: `%%`(rectype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.6-495.19 + rule fun_free_rectype_case_0{`subtype*` : subtype*, `var_1*` : free*, var_0 : free}: + `%%`(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), var_0) + -- (fun_free_subtype: `%%`(subtype, var_1))*{var_1 <- `var_1*`, subtype <- `subtype*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.6-523.19 +relation fun_free_deftype: `%%`(deftype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.6-523.19 + rule fun_free_deftype_case_0{rectype : rectype, n : nat, var_0 : free}: + `%%`(_DEF_deftype(rectype, n), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_tagtype(tagtype : tagtype) : free +relation fun_free_tagtype: `%%`(tagtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tagtype{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) + rule fun_free_tagtype_case_0{rectype : rectype, n : n, var_0 : free}: + `%%`(_DEF_tagtype(rectype, n), var_0) + -- fun_free_deftype: `%%`(_DEF_deftype(rectype, n), var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_globaltype(globaltype : globaltype) : free +relation fun_free_globaltype: `%%`(globaltype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_globaltype{`mut?` : mut?, valtype : valtype}(`%%`_globaltype(mut?{mut <- `mut?`}, valtype)) = $free_valtype(valtype) + rule fun_free_globaltype_case_0{`mut?` : mut?, valtype : valtype, var_0 : free}: + `%%`(`%%`_globaltype(mut?{mut <- `mut?`}, valtype), var_0) + -- fun_free_valtype: `%%`(valtype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_memtype(memtype : memtype) : free +relation fun_free_memtype: `%%`(memtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) + rule fun_free_memtype_case_0{addrtype : addrtype, limits : limits, var_0 : free}: + `%%`(`%%PAGE`_memtype(addrtype, limits), var_0) + -- fun_free_addrtype: `%%`($numtype_addrtype(addrtype), var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_tabletype(tabletype : tabletype) : free +relation fun_free_tabletype: `%%`(tabletype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) + rule fun_free_tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype, var_1 : free, var_0 : free}: + `%%`(`%%%`_tabletype(addrtype, limits, reftype), var_0 +++ var_1) + -- fun_free_reftype: `%%`(reftype, var_1) + -- fun_free_addrtype: `%%`($numtype_addrtype(addrtype), var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_datatype(datatype : datatype) : free +relation fun_free_datatype: `%%`(datatype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_datatype_case_0: + `%%`(OK_datatype, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_elemtype(elemtype : elemtype) : free +relation fun_free_elemtype: `%%`(elemtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) + rule fun_free_elemtype_case_0{reftype : reftype, var_0 : free}: + `%%`(reftype, var_0) + -- fun_free_reftype: `%%`(reftype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_externtype(externtype : externtype) : free +relation fun_free_externtype: `%%`(externtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{tagtype : typeuse}(TAG_externtype(tagtype)) = $free_tagtype(tagtype) + rule fun_free_externtype_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_externtype(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{globaltype : globaltype}(GLOBAL_externtype(globaltype)) = $free_globaltype(globaltype) + rule fun_free_externtype_case_1{globaltype : globaltype, var_0 : free}: + `%%`(GLOBAL_externtype(globaltype), var_0) + -- fun_free_globaltype: `%%`(globaltype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{memtype : memtype}(MEM_externtype(memtype)) = $free_memtype(memtype) + rule fun_free_externtype_case_2{memtype : memtype, var_0 : free}: + `%%`(MEM_externtype(memtype), var_0) + -- fun_free_memtype: `%%`(memtype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) + rule fun_free_externtype_case_3{tabletype : tabletype, var_0 : free}: + `%%`(TABLE_externtype(tabletype), var_0) + -- fun_free_tabletype: `%%`(tabletype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) + rule fun_free_externtype_case_4{typeuse : typeuse, var_0 : free}: + `%%`(FUNC_externtype(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_moduletype(moduletype : moduletype) : free +relation fun_free_moduletype: `%%`(moduletype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_moduletype{`externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) + rule fun_free_moduletype_case_0{`externtype_1*` : externtype*, `externtype_2*` : externtype*, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(`%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`}), var_0 +++ var_2) + -- (fun_free_externtype: `%%`(externtype_2, var_3))*{var_3 <- `var_3*`, externtype_2 <- `externtype_2*`} + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- (fun_free_externtype: `%%`(externtype_1, var_1))*{var_1 <- `var_1*`, externtype_1 <- `externtype_1*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax num_ = @@ -1985,14 +2679,14 @@ relation wf_num_: `%%`(numtype, num_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule num__case_0{numtype : numtype, Inn : Inn, var_x : iN}: `%%`(numtype, mk_num__0_num_(Inn, var_x)) - -- wf_uN: `%%`($size((Inn : addrtype <: numtype)), var_x) - -- if (numtype = (Inn : addrtype <: numtype)) + -- wf_uN: `%%`($size($numtype_addrtype(Inn)), var_x) + -- if (numtype = $numtype_addrtype(Inn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule num__case_1{numtype : numtype, Fnn : Fnn, var_x : fN}: `%%`(numtype, mk_num__1_num_(Fnn, var_x)) - -- wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), var_x) - -- if (numtype = (Fnn : Fnn <: numtype)) + -- wf_fN: `%%`($sizenn($numtype_Fnn(Fnn)), var_x) + -- if (numtype = $numtype_Fnn(Fnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_num__0(var_x : num_) : iN? @@ -2023,19 +2717,19 @@ relation wf_lane_: `%%`(lanetype, lane_) rule lane__case_0{lanetype : lanetype, numtype : numtype, var_x : num_}: `%%`(lanetype, mk_lane__0_lane_(numtype, var_x)) -- wf_num_: `%%`(numtype, var_x) - -- if (lanetype = (numtype : numtype <: lanetype)) + -- if (lanetype = $lanetype_numtype(numtype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule lane__case_1{lanetype : lanetype, packtype : packtype, var_x : pack_}: `%%`(lanetype, mk_lane__1_lane_(packtype, var_x)) -- wf_uN: `%%`($psize(packtype), var_x) - -- if (lanetype = (packtype : packtype <: lanetype)) + -- if (lanetype = $lanetype_packtype(packtype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule lane__case_2{lanetype : lanetype, Jnn : Jnn, var_x : iN}: `%%`(lanetype, mk_lane__2_lane_(Jnn, var_x)) - -- wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), var_x) - -- if (lanetype = (Jnn : Jnn <: lanetype)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(Jnn)), var_x) + -- if (lanetype = $lanetype_Jnn(Jnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_lane__0(var_x : lane_) : num_? @@ -2073,19 +2767,19 @@ relation wf_lit_: `%%`(storagetype, lit_) rule lit__case_0{storagetype : storagetype, numtype : numtype, var_x : num_}: `%%`(storagetype, mk_lit__0_lit_(numtype, var_x)) -- wf_num_: `%%`(numtype, var_x) - -- if (storagetype = (numtype : numtype <: storagetype)) + -- if (storagetype = $storagetype_numtype(numtype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule lit__case_1{storagetype : storagetype, vectype : vectype, var_x : vec_}: `%%`(storagetype, mk_lit__1_lit_(vectype, var_x)) -- wf_uN: `%%`($vsize(vectype), var_x) - -- if (storagetype = (vectype : vectype <: storagetype)) + -- if (storagetype = $storagetype_vectype(vectype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule lit__case_2{storagetype : storagetype, packtype : packtype, var_x : pack_}: `%%`(storagetype, mk_lit__2_lit_(packtype, var_x)) -- wf_uN: `%%`($psize(packtype), var_x) - -- if (storagetype = (packtype : packtype <: storagetype)) + -- if (storagetype = $storagetype_packtype(packtype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_lit__0(var_x : lit_) : num_? @@ -2154,7 +2848,7 @@ relation wf_unop_Inn: `%%`(Inn, unop_Inn) rule unop_Inn_case_3{Inn : Inn, sz : sz}: `%%`(Inn, EXTEND_unop_Inn(sz)) -- wf_sz: `%`(sz) - -- if ($proj_sz_0(sz).0 < $sizenn((Inn : addrtype <: numtype))) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax unop_Fnn = @@ -2177,12 +2871,12 @@ relation wf_unop_: `%%`(numtype, unop_) rule unop__case_0{numtype : numtype, Inn : Inn, var_x : unop_Inn}: `%%`(numtype, mk_unop__0_unop_(Inn, var_x)) -- wf_unop_Inn: `%%`(Inn, var_x) - -- if (numtype = (Inn : addrtype <: numtype)) + -- if (numtype = $numtype_addrtype(Inn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule unop__case_1{numtype : numtype, Fnn : Fnn, var_x : unop_Fnn}: `%%`(numtype, mk_unop__1_unop_(Fnn, var_x)) - -- if (numtype = (Fnn : Fnn <: numtype)) + -- if (numtype = $numtype_Fnn(Fnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_unop__0(var_x : unop_) : unop_Inn? @@ -2233,12 +2927,12 @@ relation wf_binop_: `%%`(numtype, binop_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule binop__case_0{numtype : numtype, Inn : Inn, var_x : binop_Inn}: `%%`(numtype, mk_binop__0_binop_(Inn, var_x)) - -- if (numtype = (Inn : addrtype <: numtype)) + -- if (numtype = $numtype_addrtype(Inn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule binop__case_1{numtype : numtype, Fnn : Fnn, var_x : binop_Fnn}: `%%`(numtype, mk_binop__1_binop_(Fnn, var_x)) - -- if (numtype = (Fnn : Fnn <: numtype)) + -- if (numtype = $numtype_Fnn(Fnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_binop__0(var_x : binop_) : binop_Inn? @@ -2267,7 +2961,7 @@ relation wf_testop_: `%%`(numtype, testop_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule testop__case_0{numtype : numtype, Inn : Inn, var_x : testop_Inn}: `%%`(numtype, mk_testop__0_testop_(Inn, var_x)) - -- if (numtype = (Inn : addrtype <: numtype)) + -- if (numtype = $numtype_addrtype(Inn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_testop__0(var_x : testop_) : testop_Inn @@ -2302,12 +2996,12 @@ relation wf_relop_: `%%`(numtype, relop_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule relop__case_0{numtype : numtype, Inn : Inn, var_x : relop_Inn}: `%%`(numtype, mk_relop__0_relop_(Inn, var_x)) - -- if (numtype = (Inn : addrtype <: numtype)) + -- if (numtype = $numtype_addrtype(Inn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule relop__case_1{numtype : numtype, Fnn : Fnn, var_x : relop_Fnn}: `%%`(numtype, mk_relop__1_relop_(Fnn, var_x)) - -- if (numtype = (Fnn : Fnn <: numtype)) + -- if (numtype = $numtype_Fnn(Fnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_relop__0(var_x : relop_) : relop_Inn? @@ -2333,12 +3027,12 @@ relation wf_cvtop__Inn_1_Inn_2: `%%%`(Inn, Inn, cvtop__Inn_1_Inn_2) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop__Inn_1_Inn_2_case_0{Inn_1 : Inn, Inn_2 : Inn, sx : sx}: `%%%`(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)) - -- if ($sizenn1((Inn_1 : addrtype <: numtype)) < $sizenn2((Inn_2 : addrtype <: numtype))) + -- if ($sizenn1($numtype_addrtype(Inn_1)) < $sizenn2($numtype_addrtype(Inn_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop__Inn_1_Inn_2_case_1{Inn_1 : Inn, Inn_2 : Inn}: `%%%`(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2) - -- if ($sizenn1((Inn_1 : addrtype <: numtype)) > $sizenn2((Inn_2 : addrtype <: numtype))) + -- if ($sizenn1($numtype_addrtype(Inn_1)) > $sizenn2($numtype_addrtype(Inn_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__Inn_1_Fnn_2 = @@ -2354,7 +3048,7 @@ relation wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn, Fnn, cvtop__Inn_1_Fnn_2) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop__Inn_1_Fnn_2_case_1{Inn_1 : Inn, Fnn_2 : Fnn}: `%%%`(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2) - -- if ($sizenn1((Inn_1 : addrtype <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype))) + -- if ($sizenn1($numtype_addrtype(Inn_1)) = $sizenn2($numtype_Fnn(Fnn_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__Fnn_1_Inn_2 = @@ -2375,7 +3069,7 @@ relation wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn, Inn, cvtop__Fnn_1_Inn_2) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop__Fnn_1_Inn_2_case_2{Fnn_1 : Fnn, Inn_2 : Inn}: `%%%`(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2) - -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : addrtype <: numtype))) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = $sizenn2($numtype_addrtype(Inn_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__Fnn_1_Fnn_2 = @@ -2387,12 +3081,12 @@ relation wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn, Fnn, cvtop__Fnn_1_Fnn_2) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop__Fnn_1_Fnn_2_case_0{Fnn_1 : Fnn, Fnn_2 : Fnn}: `%%%`(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2) - -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) < $sizenn2((Fnn_2 : Fnn <: numtype))) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) < $sizenn2($numtype_Fnn(Fnn_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop__Fnn_1_Fnn_2_case_1{Fnn_1 : Fnn, Fnn_2 : Fnn}: `%%%`(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2) - -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) > $sizenn2($numtype_Fnn(Fnn_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__ = @@ -2407,29 +3101,29 @@ relation wf_cvtop__: `%%%`(numtype, numtype, cvtop__) rule cvtop___case_0{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}: `%%%`(numtype_1, numtype_2, mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) -- wf_cvtop__Inn_1_Inn_2: `%%%`(Inn_1, Inn_2, var_x) - -- if (numtype_1 = (Inn_1 : addrtype <: numtype)) - -- if (numtype_2 = (Inn_2 : addrtype <: numtype)) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop___case_1{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}: `%%%`(numtype_1, numtype_2, mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) -- wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn_1, Fnn_2, var_x) - -- if (numtype_1 = (Inn_1 : addrtype <: numtype)) - -- if (numtype_2 = (Fnn_2 : Fnn <: numtype)) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop___case_2{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}: `%%%`(numtype_1, numtype_2, mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) -- wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn_1, Inn_2, var_x) - -- if (numtype_1 = (Fnn_1 : Fnn <: numtype)) - -- if (numtype_2 = (Inn_2 : addrtype <: numtype)) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop___case_3{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}: `%%%`(numtype_1, numtype_2, mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) -- wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn_1, Fnn_2, var_x) - -- if (numtype_1 = (Fnn_1 : Fnn <: numtype)) - -- if (numtype_2 = (Fnn_2 : Fnn <: numtype)) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_cvtop___0(var_x : cvtop__) : cvtop__Inn_1_Inn_2? @@ -2488,9 +3182,10 @@ relation wf_shape: `%`(shape) -- if (($lsize(lanetype) * $proj_dim_0(dim).0) = 128) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $dim(shape : shape) : dim +relation fun_dim: `%%`(shape, dim) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) + rule fun_dim_case_0{Lnn : lanetype, N : nat}: + `%%`(`%X%`_shape(Lnn, `%`_dim(N)), `%`_dim(N)) -- wf_dim: `%`(`%`_dim(N)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -2518,7 +3213,7 @@ relation wf_ishape: `%`(ishape) rule ishape_case_0{shape : shape, Jnn : Jnn}: `%`(`%`_ishape(shape)) -- wf_shape: `%`(shape) - -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) + -- if ($lanetype(shape) = $lanetype_Jnn(Jnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax bshape = @@ -2584,7 +3279,7 @@ relation wf_vunop_Jnn_M: `%%%`(Jnn, M, vunop_Jnn_M) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vunop_Jnn_M_case_2{Jnn : Jnn, M : M}: `%%%`(Jnn, M, POPCNT_vunop_Jnn_M) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 8) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vunop_Fnn_M = @@ -2607,12 +3302,12 @@ relation wf_vunop_: `%%`(shape, vunop_) rule vunop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vunop_Jnn_M}: `%%`(shape, mk_vunop__0_vunop_(Jnn, M, var_x)) -- wf_vunop_Jnn_M: `%%%`(Jnn, M, var_x) - -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vunop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vunop_Fnn_M}: `%%`(shape, mk_vunop__1_vunop_(Fnn, M, var_x)) - -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vunop__0(var_x : vunop_) : vunop_Jnn_M? @@ -2654,42 +3349,42 @@ relation wf_vbinop_Jnn_M: `%%%`(Jnn, M, vbinop_Jnn_M) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: `%%%`(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: `%%%`(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop_Jnn_M_case_4{Jnn : Jnn, M : M}: `%%%`(Jnn, M, MUL_vbinop_Jnn_M) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) + -- if ($lsizenn($lanetype_Jnn(Jnn)) >= 16) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop_Jnn_M_case_5{Jnn : Jnn, M : M}: `%%%`(Jnn, M, `AVGRU`_vbinop_Jnn_M) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop_Jnn_M_case_6{Jnn : Jnn, M : M}: `%%%`(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop_Jnn_M_case_7{Jnn : Jnn, M : M}: `%%%`(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop_Jnn_M_case_8{Jnn : Jnn, M : M, sx : sx}: `%%%`(Jnn, M, MIN_vbinop_Jnn_M(sx)) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop_Jnn_M_case_9{Jnn : Jnn, M : M, sx : sx}: `%%%`(Jnn, M, MAX_vbinop_Jnn_M(sx)) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vbinop_Fnn_M = @@ -2715,12 +3410,12 @@ relation wf_vbinop_: `%%`(shape, vbinop_) rule vbinop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}: `%%`(shape, mk_vbinop__0_vbinop_(Jnn, M, var_x)) -- wf_vbinop_Jnn_M: `%%%`(Jnn, M, var_x) - -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}: `%%`(shape, mk_vbinop__1_vbinop_(Fnn, M, var_x)) - -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vbinop__0(var_x : vbinop_) : vbinop_Jnn_M? @@ -2755,12 +3450,12 @@ relation wf_vternop_: `%%`(shape, vternop_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vternop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vternop_Jnn_M}: `%%`(shape, mk_vternop__0_vternop_(Jnn, M, var_x)) - -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vternop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vternop_Fnn_M}: `%%`(shape, mk_vternop__1_vternop_(Fnn, M, var_x)) - -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vternop__0(var_x : vternop_) : vternop_Jnn_M? @@ -2789,7 +3484,7 @@ relation wf_vtestop_: `%%`(shape, vtestop_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vtestop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}: `%%`(shape, mk_vtestop__0_vtestop_(Jnn, M, var_x)) - -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vtestop__0(var_x : vtestop_) : vtestop_Jnn_M @@ -2818,22 +3513,22 @@ relation wf_vrelop_Jnn_M: `%%%`(Jnn, M, vrelop_Jnn_M) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vrelop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: `%%%`(Jnn, M, LT_vrelop_Jnn_M(sx)) - -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vrelop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: `%%%`(Jnn, M, GT_vrelop_Jnn_M(sx)) - -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vrelop_Jnn_M_case_4{Jnn : Jnn, M : M, sx : sx}: `%%%`(Jnn, M, LE_vrelop_Jnn_M(sx)) - -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vrelop_Jnn_M_case_5{Jnn : Jnn, M : M, sx : sx}: `%%%`(Jnn, M, GE_vrelop_Jnn_M(sx)) - -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vrelop_Fnn_M = @@ -2855,12 +3550,12 @@ relation wf_vrelop_: `%%`(shape, vrelop_) rule vrelop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}: `%%`(shape, mk_vrelop__0_vrelop_(Jnn, M, var_x)) -- wf_vrelop_Jnn_M: `%%%`(Jnn, M, var_x) - -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vrelop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}: `%%`(shape, mk_vrelop__1_vrelop_(Fnn, M, var_x)) - -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vrelop__0(var_x : vrelop_) : vrelop_Jnn_M? @@ -2890,7 +3585,7 @@ relation wf_vshiftop_: `%%`(ishape, vshiftop_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vshiftop__case_0{ishape : ishape, Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}: `%%`(ishape, mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) - -- if (ishape = `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- if (ishape = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vshiftop__0(var_x : vshiftop_) : vshiftop_Jnn_M @@ -2927,7 +3622,7 @@ relation wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextunop__Jnn ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vextunop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx}: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)) - -- if ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))) + -- if ((16 <= (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) <= 32))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vextunop__ = @@ -2939,8 +3634,8 @@ relation wf_vextunop__: `%%%`(ishape, ishape, vextunop__) rule vextunop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}: `%%%`(ishape_1, ishape_2, mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) -- wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) - -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) - -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vextunop___0(var_x : vextunop__) : vextunop__Jnn_1_M_1_Jnn_2_M_2 @@ -2958,17 +3653,17 @@ relation wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextbinop__J ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) - -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) >= 16)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_1{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2) - -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_2{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2) - -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 16)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vextbinop__ = @@ -2980,8 +3675,8 @@ relation wf_vextbinop__: `%%%`(ishape, ishape, vextbinop__) rule vextbinop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}: `%%%`(ishape_1, ishape_2, mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) -- wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) - -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) - -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vextbinop___0(var_x : vextbinop__) : vextbinop__Jnn_1_M_1_Jnn_2_M_2 @@ -2997,7 +3692,7 @@ relation wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextternop_ ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vextternop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2) - -- if (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) + -- if (((4 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vextternop__ = @@ -3009,8 +3704,8 @@ relation wf_vextternop__: `%%%`(ishape, ishape, vextternop__) rule vextternop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}: `%%%`(ishape_1, ishape_2, mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) -- wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) - -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) - -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vextternop___0(var_x : vextternop__) : vextternop__Jnn_1_M_1_Jnn_2_M_2 @@ -3026,7 +3721,7 @@ relation wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vcvtop__Jnn_1_M ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) - -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) + -- if ($lsizenn2($lanetype_Jnn(Jnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vcvtop__Jnn_1_M_1_Fnn_2_M_2 = @@ -3037,7 +3732,7 @@ relation wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn, M, Fnn, M, vcvtop__Jnn_1_M ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop__Jnn_1_M_1_Fnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)) - -- if (((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) + -- if (((($sizenn2($numtype_Fnn(Fnn_2)) = $lsizenn1($lanetype_Jnn(Jnn_1))) /\ ($lsizenn1($lanetype_Jnn(Jnn_1)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2($numtype_Fnn(Fnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vcvtop__Fnn_1_M_1_Jnn_2_M_2 = @@ -3049,12 +3744,12 @@ relation wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn, M, Jnn, M, vcvtop__Fnn_1_M ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})) - -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})) - -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vcvtop__Fnn_1_M_1_Fnn_2_M_2 = @@ -3066,12 +3761,12 @@ relation wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn, M, Fnn, M, vcvtop__Fnn_1_M ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)) - -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $sizenn2($numtype_Fnn(Fnn_2)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2) - -- if ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype))) + -- if ((2 * $sizenn1($numtype_Fnn(Fnn_1))) = $sizenn2($numtype_Fnn(Fnn_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vcvtop__ = @@ -3086,29 +3781,29 @@ relation wf_vcvtop__: `%%%`(shape, shape, vcvtop__) rule vcvtop___case_0{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}: `%%%`(shape_1, shape_2, mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) -- wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) - -- if (shape_1 = `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (shape_2 = `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop___case_1{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}: `%%%`(shape_1, shape_2, mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) -- wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, var_x) - -- if (shape_1 = `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (shape_2 = `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop___case_2{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}: `%%%`(shape_1, shape_2, mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) -- wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, var_x) - -- if (shape_1 = `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))) - -- if (shape_2 = `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop___case_3{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}: `%%%`(shape_1, shape_2, mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) -- wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, var_x) - -- if (shape_1 = `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))) - -- if (shape_2 = `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vcvtop___0(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Jnn_2_M_2? @@ -3163,7 +3858,7 @@ relation wf_loadop_Inn: `%%`(Inn, loadop_Inn) rule loadop_Inn_case_0{Inn : Inn, sz : sz, sx : sx}: `%%`(Inn, `%_%`_loadop_Inn(sz, sx)) -- wf_sz: `%`(sz) - -- if ($proj_sz_0(sz).0 < $sizenn((Inn : addrtype <: numtype))) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax loadop_ = @@ -3175,7 +3870,7 @@ relation wf_loadop_: `%%`(numtype, loadop_) rule loadop__case_0{numtype : numtype, Inn : Inn, var_x : loadop_Inn}: `%%`(numtype, mk_loadop__0_loadop_(Inn, var_x)) -- wf_loadop_Inn: `%%`(Inn, var_x) - -- if (numtype = (Inn : addrtype <: numtype)) + -- if (numtype = $numtype_addrtype(Inn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_loadop__0(var_x : loadop_) : loadop_Inn @@ -3192,7 +3887,7 @@ relation wf_storeop_Inn: `%%`(Inn, storeop_Inn) rule storeop_Inn_case_0{Inn : Inn, sz : sz}: `%%`(Inn, `%`_storeop_Inn(sz)) -- wf_sz: `%`(sz) - -- if ($proj_sz_0(sz).0 < $sizenn((Inn : addrtype <: numtype))) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax storeop_ = @@ -3204,7 +3899,7 @@ relation wf_storeop_: `%%`(numtype, storeop_) rule storeop__case_0{numtype : numtype, Inn : Inn, var_x : storeop_Inn}: `%%`(numtype, mk_storeop__0_storeop_(Inn, var_x)) -- wf_storeop_Inn: `%%`(Inn, var_x) - -- if (numtype = (Inn : addrtype <: numtype)) + -- if (numtype = $numtype_addrtype(Inn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_storeop__0(var_x : storeop_) : storeop_Inn @@ -3609,6 +4304,27 @@ syntax instr = | TRAP } +def $instr_addrref(addrref) : instr + def $instr_addrref{x0 : u31}(REF.I31_NUM_addrref(x0)) = REF.I31_NUM_instr(x0) + def $instr_addrref{x0 : structaddr}(REF.STRUCT_ADDR_addrref(x0)) = REF.STRUCT_ADDR_instr(x0) + def $instr_addrref{x0 : arrayaddr}(REF.ARRAY_ADDR_addrref(x0)) = REF.ARRAY_ADDR_instr(x0) + def $instr_addrref{x0 : funcaddr}(REF.FUNC_ADDR_addrref(x0)) = REF.FUNC_ADDR_instr(x0) + def $instr_addrref{x0 : exnaddr}(REF.EXN_ADDR_addrref(x0)) = REF.EXN_ADDR_instr(x0) + def $instr_addrref{x0 : hostaddr}(REF.HOST_ADDR_addrref(x0)) = REF.HOST_ADDR_instr(x0) + def $instr_addrref{x0 : addrref}(REF.EXTERN_addrref(x0)) = REF.EXTERN_instr(x0) + +def $instr_val(val) : instr + def $instr_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_instr(x0, x1) + def $instr_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_instr(x0, x1) + def $instr_val{x0 : heaptype}(REF.NULL_val(x0)) = REF.NULL_instr(x0) + def $instr_val{x0 : u31}(REF.I31_NUM_val(x0)) = REF.I31_NUM_instr(x0) + def $instr_val{x0 : structaddr}(REF.STRUCT_ADDR_val(x0)) = REF.STRUCT_ADDR_instr(x0) + def $instr_val{x0 : arrayaddr}(REF.ARRAY_ADDR_val(x0)) = REF.ARRAY_ADDR_instr(x0) + def $instr_val{x0 : funcaddr}(REF.FUNC_ADDR_val(x0)) = REF.FUNC_ADDR_instr(x0) + def $instr_val{x0 : exnaddr}(REF.EXN_ADDR_val(x0)) = REF.EXN_ADDR_instr(x0) + def $instr_val{x0 : hostaddr}(REF.HOST_ADDR_val(x0)) = REF.HOST_ADDR_instr(x0) + def $instr_val{x0 : addrref}(REF.EXTERN_val(x0)) = REF.EXTERN_instr(x0) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -4117,11 +4833,12 @@ relation wf_instr: `%`(instr) -- wf_vswizzlop_: `%%`(bshape, vswizzlop_) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*}: + rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*, var_0 : dim}: `%`(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) + -- fun_dim: `%%`($proj_bshape_0(bshape).0, var_0) -- wf_bshape: `%`(bshape) -- (wf_uN: `%%`(8, laneidx))*{laneidx <- `laneidx*`} - -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim($proj_bshape_0(bshape).0)) + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = var_0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__}: @@ -4233,279 +4950,644 @@ relation wf_instr: `%`(instr) syntax expr = instr* ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $memarg0 : memarg +relation fun_memarg0: `%`(memarg) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u32(0)} + rule fun_memarg0_case_0: + `%`({ALIGN `%`_u32(0), OFFSET `%`_u32(0)}) -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u32(0)}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $const(consttype : consttype, lit_ : lit_) : instr +relation fun_const: `%%%`(consttype, lit_, instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_0{c : num_}: + `%%%`(I32_consttype, mk_lit__0_lit_(I32_numtype, c), CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_1{c : num_}: + `%%%`(I64_consttype, mk_lit__0_lit_(I64_numtype, c), CONST_instr(I64_numtype, c)) + -- wf_instr: `%`(CONST_instr(I64_numtype, c)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_2{c : num_}: + `%%%`(F32_consttype, mk_lit__0_lit_(F32_numtype, c), CONST_instr(F32_numtype, c)) + -- wf_instr: `%`(CONST_instr(F32_numtype, c)) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{numtype : numtype, c : num_}((numtype : numtype <: consttype), mk_lit__0_lit_(numtype, c)) = CONST_instr(numtype, c) - -- wf_instr: `%`(CONST_instr(numtype, c)) + rule fun_const_case_3{c : num_}: + `%%%`(F64_consttype, mk_lit__0_lit_(F64_numtype, c), CONST_instr(F64_numtype, c)) + -- wf_instr: `%`(CONST_instr(F64_numtype, c)) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{vectype : vectype, c : uN}((vectype : vectype <: consttype), mk_lit__1_lit_(vectype, c)) = VCONST_instr(vectype, c) - -- wf_instr: `%`(VCONST_instr(vectype, c)) + rule fun_const_case_4{c : uN}: + `%%%`(V128_consttype, mk_lit__1_lit_(V128_vectype, c), VCONST_instr(V128_vectype, c)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_shape(shape : shape) : free +relation fun_free_shape: `%%`(shape, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) + rule fun_free_shape_case_0{lanetype : lanetype, dim : dim, var_0 : free}: + `%%`(`%X%`_shape(lanetype, dim), var_0) + -- fun_free_lanetype: `%%`(lanetype, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_blocktype(blocktype : blocktype) : free +relation fun_free_blocktype: `%%`(blocktype, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) + rule fun_free_blocktype_case_0{`valtype?` : valtype?, `var_1?` : free?, var_0 : free}: + `%%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`}), var_0) + -- (fun_free_valtype: `%%`(valtype, var_1))?{var_1 <- `var_1?`, valtype <- `valtype?`} + -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{funcidx : uN}(_IDX_blocktype(funcidx)) = $free_funcidx(funcidx) + rule fun_free_blocktype_case_1{funcidx : uN, var_0 : free}: + `%%`(_IDX_blocktype(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.44 -def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.32 - def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.66 - def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.91 - def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 +relation fun_shift_labelidxs: `%%`(labelidx*, labelidx*) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 + rule fun_shift_labelidxs_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 + rule fun_shift_labelidxs_case_1{`labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}, var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 + rule fun_shift_labelidxs_case_2{labelidx : uN, `labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}, [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.1-417.30 -def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 - def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 +relation fun_free_instr: `%%`(instr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_0: + `%%`(NOP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 - def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_1: + `%%`(UNREACHABLE_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 - def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_2: + `%%`(DROP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 - def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 - def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:434.1-434.91 - def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-436.79 - def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.56 - def $free_instr{labelidx : uN}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.59 - def $free_instr{labelidx : uN}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-441.69 - def $free_instr{`labelidx*` : labelidx*, labelidx' : uN}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.64 - def $free_instr{labelidx : uN}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.68 - def $free_instr{labelidx : uN}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-445.83 - def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-447.83 - def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.55 - def $free_instr{funcidx : uN}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.59 - def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-452.53 - def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 - def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_3{`valtype*?` : valtype*?, `var_2*?` : free*?, `var_1?` : free?, var_0 : free}: + `%%`(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`}), var_0) + -- (fun_free_valtype: `%%`(valtype, var_2))*{var_2 <- `var_2*`, valtype <- `valtype*`}?{`var_2*` <- `var_2*?`, `valtype*` <- `valtype*?`} + -- (fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1))?{`var_2*` <- `var_2*?`, var_1 <- `var_1?`} + -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_4{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_5{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(LOOP_instr(blocktype, instr*{instr <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_6{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, var_2 : free, var_1 : free, var_0 : free}: + `%%`(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), var_0 +++ var_1 +++ var_2) + -- fun_free_block: `%%`(instr_2*{instr_2 <- `instr_2*`}, var_2) + -- fun_free_block: `%%`(instr_1*{instr_1 <- `instr_1*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_7{labelidx : uN, var_0 : free}: + `%%`(BR_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_8{labelidx : uN, var_0 : free}: + `%%`(BR_IF_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_9{`labelidx*` : labelidx*, labelidx' : uN, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx'), var_0 +++ var_2) + -- fun_free_labelidx: `%%`(labelidx', var_2) + -- (fun_free_labelidx: `%%`(labelidx, var_1))*{var_1 <- `var_1*`, labelidx <- `labelidx*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_10{labelidx : uN, var_0 : free}: + `%%`(BR_ON_NULL_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_11{labelidx : uN, var_0 : free}: + `%%`(BR_ON_NON_NULL_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_12{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_13{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_14{funcidx : uN, var_0 : free}: + `%%`(CALL_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_15{typeuse : typeuse, var_0 : free}: + `%%`(CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_16{tableidx : uN, typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(CALL_INDIRECT_instr(tableidx, typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(typeuse, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_17: + `%%`(RETURN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 - def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 - def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.53 - def $free_instr{tableidx : uN, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.63 - def $free_instr{numtype : numtype, numlit : num_}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.60 - def $free_instr{numtype : numtype, unop : unop_}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 - def $free_instr{numtype : numtype, binop : binop_}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.64 - def $free_instr{numtype : numtype, testop : testop_}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.62 - def $free_instr{numtype : numtype, relop : relop_}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.55 - def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.64 - def $free_instr{vectype : vectype, veclit : uN}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.64 - def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-469.66 - def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:470.1-470.68 - def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.68 - def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.56 - def $free_instr{shape : shape, vunop : vunop_}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.58 - def $free_instr{shape : shape, vbinop : vbinop_}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.60 - def $free_instr{shape : shape, vternop : vternop_}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.60 - def $free_instr{shape : shape, vtestop : vtestop_}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-476.58 - def $free_instr{shape : shape, vrelop : vrelop_}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.64 - def $free_instr{ishape : ishape, vshiftop : vshiftop_}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape($proj_ishape_0(ishape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.55 - def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape($proj_ishape_0(ishape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.66 - def $free_instr{bshape : bshape, vswizzlop : vswizzlop_}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape($proj_bshape_0(bshape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 - def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape($proj_bshape_0(bshape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-482.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-484.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-486.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-488.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-490.47 - def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.51 - def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.70 - def $free_instr{shape : shape, `sx?` : sx?, laneidx : uN}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.66 - def $free_instr{shape : shape, laneidx : uN}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-495.62 - def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 - def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_18{funcidx : uN, var_0 : free}: + `%%`(RETURN_CALL_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_19{typeuse : typeuse, var_0 : free}: + `%%`(RETURN_CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_20{tableidx : uN, typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(typeuse, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_21{numtype : numtype, numlit : num_, var_0 : free}: + `%%`(CONST_instr(numtype, numlit), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_22{numtype : numtype, unop : unop_, var_0 : free}: + `%%`(UNOP_instr(numtype, unop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_23{numtype : numtype, binop : binop_, var_0 : free}: + `%%`(BINOP_instr(numtype, binop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_24{numtype : numtype, testop : testop_, var_0 : free}: + `%%`(TESTOP_instr(numtype, testop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_25{numtype : numtype, relop : relop_, var_0 : free}: + `%%`(RELOP_instr(numtype, relop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_26{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__, var_1 : free, var_0 : free}: + `%%`(CVTOP_instr(numtype_1, numtype_2, cvtop), var_0 +++ var_1) + -- fun_free_numtype: `%%`(numtype_2, var_1) + -- fun_free_numtype: `%%`(numtype_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_27{vectype : vectype, veclit : uN, var_0 : free}: + `%%`(VCONST_instr(vectype, veclit), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_28{vectype : vectype, vvunop : vvunop, var_0 : free}: + `%%`(VVUNOP_instr(vectype, vvunop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_29{vectype : vectype, vvbinop : vvbinop, var_0 : free}: + `%%`(VVBINOP_instr(vectype, vvbinop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_30{vectype : vectype, vvternop : vvternop, var_0 : free}: + `%%`(VVTERNOP_instr(vectype, vvternop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_31{vectype : vectype, vvtestop : vvtestop, var_0 : free}: + `%%`(VVTESTOP_instr(vectype, vvtestop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_32{shape : shape, vunop : vunop_, var_0 : free}: + `%%`(VUNOP_instr(shape, vunop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_33{shape : shape, vbinop : vbinop_, var_0 : free}: + `%%`(VBINOP_instr(shape, vbinop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_34{shape : shape, vternop : vternop_, var_0 : free}: + `%%`(VTERNOP_instr(shape, vternop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_35{shape : shape, vtestop : vtestop_, var_0 : free}: + `%%`(VTESTOP_instr(shape, vtestop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_36{shape : shape, vrelop : vrelop_, var_0 : free}: + `%%`(VRELOP_instr(shape, vrelop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_37{ishape : ishape, vshiftop : vshiftop_, var_0 : free}: + `%%`(VSHIFTOP_instr(ishape, vshiftop), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_38{ishape : ishape, var_0 : free}: + `%%`(VBITMASK_instr(ishape), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_39{bshape : bshape, vswizzlop : vswizzlop_, var_0 : free}: + `%%`(VSWIZZLOP_instr(bshape, vswizzlop), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_40{bshape : bshape, `laneidx*` : laneidx*, var_0 : free}: + `%%`(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`}), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_41{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__, var_1 : free, var_0 : free}: + `%%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_42{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__, var_1 : free, var_0 : free}: + `%%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_43{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__, var_1 : free, var_0 : free}: + `%%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_44{ishape_1 : ishape, ishape_2 : ishape, sx : sx, var_1 : free, var_0 : free}: + `%%`(VNARROW_instr(ishape_1, ishape_2, sx), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_45{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__, var_1 : free, var_0 : free}: + `%%`(VCVTOP_instr(shape_1, shape_2, vcvtop), var_0 +++ var_1) + -- fun_free_shape: `%%`(shape_2, var_1) + -- fun_free_shape: `%%`(shape_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_46{shape : shape, var_0 : free}: + `%%`(VSPLAT_instr(shape), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_47{shape : shape, `sx?` : sx?, laneidx : uN, var_0 : free}: + `%%`(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_48{shape : shape, laneidx : uN, var_0 : free}: + `%%`(VREPLACE_LANE_instr(shape, laneidx), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_49{heaptype : heaptype, var_0 : free}: + `%%`(REF.NULL_instr(heaptype), var_0) + -- fun_free_heaptype: `%%`(heaptype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_50: + `%%`(REF.IS_NULL_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 - def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_51: + `%%`(REF.AS_NON_NULL_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 - def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_52: + `%%`(REF.EQ_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 - def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 - def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.59 - def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 - def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_53{reftype : reftype, var_0 : free}: + `%%`(REF.TEST_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_54{reftype : reftype, var_0 : free}: + `%%`(REF.CAST_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_55{funcidx : uN, var_0 : free}: + `%%`(REF.FUNC_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_56: + `%%`(REF.I31_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 - def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_57{sx : sx}: + `%%`(I31.GET_instr(sx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 - def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_58{typeidx : uN}: + `%%`(STRUCT.NEW_instr(typeidx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 - def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 - def $free_instr{`sx?` : sx?, typeidx : uN, u32 : uN}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.65 - def $free_instr{typeidx : uN, u32 : uN}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.60 - def $free_instr{typeidx : uN}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.68 - def $free_instr{typeidx : uN}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.70 - def $free_instr{typeidx : uN, u32 : uN}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-515.51 - def $free_instr{typeidx : uN, dataidx : uN}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-517.51 - def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.64 - def $free_instr{`sx?` : sx?, typeidx : uN}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.60 - def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 - def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_59{typeidx : uN, var_0 : free}: + `%%`(STRUCT.NEW_DEFAULT_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_60{`sx?` : sx?, typeidx : uN, u32 : uN, var_0 : free}: + `%%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_61{typeidx : uN, u32 : uN, var_0 : free}: + `%%`(STRUCT.SET_instr(typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_62{typeidx : uN, var_0 : free}: + `%%`(ARRAY.NEW_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_63{typeidx : uN, var_0 : free}: + `%%`(ARRAY.NEW_DEFAULT_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_64{typeidx : uN, u32 : uN, var_0 : free}: + `%%`(ARRAY.NEW_FIXED_instr(typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_65{typeidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.NEW_DATA_instr(typeidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_66{typeidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.NEW_ELEM_instr(typeidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_67{`sx?` : sx?, typeidx : uN, var_0 : free}: + `%%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_68{typeidx : uN, var_0 : free}: + `%%`(ARRAY.SET_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_69: + `%%`(ARRAY.LEN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 - def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 - def $free_instr{typeidx_1 : uN, typeidx_2 : uN}(ARRAY.COPY_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 - def $free_instr{typeidx : uN, dataidx : uN}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 - def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 - def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_70{typeidx : uN, var_0 : free}: + `%%`(ARRAY.FILL_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_71{typeidx_1 : uN, typeidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.COPY_instr(typeidx_1, typeidx_2), var_0 +++ var_1) + -- fun_free_typeidx: `%%`(typeidx_2, var_1) + -- fun_free_typeidx: `%%`(typeidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_72{typeidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.INIT_DATA_instr(typeidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_73{typeidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.INIT_ELEM_instr(typeidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_74: + `%%`(EXTERN.CONVERT_ANY_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 - def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_75: + `%%`(ANY.CONVERT_EXTERN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 - def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 - def $free_instr{localidx : uN}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.63 - def $free_instr{localidx : uN}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.67 - def $free_instr{globalidx : uN}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-537.67 - def $free_instr{globalidx : uN}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.63 - def $free_instr{tableidx : uN}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.63 - def $free_instr{tableidx : uN}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 - def $free_instr{tableidx : uN}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.64 - def $free_instr{tableidx : uN}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.64 - def $free_instr{tableidx : uN}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-545.59 - def $free_instr{tableidx_1 : uN, tableidx_2 : uN}(TABLE.COPY_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-547.53 - def $free_instr{tableidx : uN, elemidx : uN}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.60 - def $free_instr{elemidx : uN}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-551.49 - def $free_instr{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-553.49 - def $free_instr{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.49 - def $free_instr{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.49 - def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.49 - def $free_instr{vectype : vectype, memidx : uN, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 - def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.59 - def $free_instr{memidx : uN}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.59 - def $free_instr{memidx : uN}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.59 - def $free_instr{memidx : uN}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.51 - def $free_instr{memidx_1 : uN, memidx_2 : uN}(MEMORY.COPY_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 - def $free_instr{memidx : uN, dataidx : uN}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-569.60 - def $free_instr{dataidx : uN}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.1-418.31 -def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 - def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_76{localidx : uN, var_0 : free}: + `%%`(LOCAL.GET_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_77{localidx : uN, var_0 : free}: + `%%`(LOCAL.SET_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_78{localidx : uN, var_0 : free}: + `%%`(LOCAL.TEE_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_79{globalidx : uN, var_0 : free}: + `%%`(GLOBAL.GET_instr(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_80{globalidx : uN, var_0 : free}: + `%%`(GLOBAL.SET_instr(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_81{tableidx : uN, var_0 : free}: + `%%`(TABLE.GET_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_82{tableidx : uN, var_0 : free}: + `%%`(TABLE.SET_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_83{tableidx : uN, var_0 : free}: + `%%`(TABLE.SIZE_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_84{tableidx : uN, var_0 : free}: + `%%`(TABLE.GROW_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_85{tableidx : uN, var_0 : free}: + `%%`(TABLE.FILL_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_86{tableidx_1 : uN, tableidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(TABLE.COPY_instr(tableidx_1, tableidx_2), var_0 +++ var_1) + -- fun_free_tableidx: `%%`(tableidx_2, var_1) + -- fun_free_tableidx: `%%`(tableidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_87{tableidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(TABLE.INIT_instr(tableidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_88{elemidx : uN, var_0 : free}: + `%%`(ELEM.DROP_instr(elemidx), var_0) + -- fun_free_elemidx: `%%`(elemidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_89{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_90{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_91{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_92{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_93{vectype : vectype, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VSTORE_instr(vectype, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_94{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_95{memidx : uN, var_0 : free}: + `%%`(MEMORY.SIZE_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_96{memidx : uN, var_0 : free}: + `%%`(MEMORY.GROW_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_97{memidx : uN, var_0 : free}: + `%%`(MEMORY.FILL_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_98{memidx_1 : uN, memidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(MEMORY.COPY_instr(memidx_1, memidx_2), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx_2, var_1) + -- fun_free_memidx: `%%`(memidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_99{memidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(MEMORY.INIT_instr(memidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_100{dataidx : uN, var_0 : free}: + `%%`(DATA.DROP_instr(dataidx), var_0) + -- fun_free_dataidx: `%%`(dataidx, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.6-418.17 +relation fun_free_block: `%%`(instr*, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.6-418.17 + rule fun_free_block_case_0{`instr*` : instr*, free : free, `var_2*` : free*, var_1 : free, var_0 : labelidx*}: + `%%`(instr*{instr <- `instr*`}, free[LABELS_free = var_0]) + -- (fun_free_instr: `%%`(instr, var_2))*{var_2 <- `var_2*`, instr <- `instr*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_shift_labelidxs: `%%`(free.LABELS_free, var_0) -- wf_free: `%`(free) - -- if (free = $free_list($free_instr(instr)*{instr <- `instr*`})) + -- if (free = var_1) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_expr(expr : expr) : free +relation fun_free_expr: `%%`(expr, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) + rule fun_free_expr_case_0{`instr*` : instr*, `var_1*` : free*, var_0 : free}: + `%%`(instr*{instr <- `instr*`}, var_0) + -- (fun_free_instr: `%%`(instr, var_1))*{var_1 <- `var_1*`, instr <- `instr*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = @@ -4702,98 +5784,170 @@ relation wf_module: `%`(module) -- (wf_export: `%`(export))*{export <- `export*`} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_type(type : type) : free +relation fun_free_type: `%%`(type, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) + rule fun_free_type_case_0{rectype : rectype, var_0 : free}: + `%%`(TYPE_type(rectype), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_tag(tag : tag) : free +relation fun_free_tag: `%%`(tag, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) + rule fun_free_tag_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_tag(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_global(global : global) : free +relation fun_free_global: `%%`(global, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) + rule fun_free_global_case_0{globaltype : globaltype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(GLOBAL_global(globaltype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_globaltype: `%%`(globaltype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_mem(mem : mem) : free +relation fun_free_mem: `%%`(mem, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) + rule fun_free_mem_case_0{memtype : memtype, var_0 : free}: + `%%`(MEMORY_mem(memtype), var_0) + -- fun_free_memtype: `%%`(memtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_table(table : table) : free +relation fun_free_table: `%%`(table, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) + rule fun_free_table_case_0{tabletype : tabletype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(TABLE_table(tabletype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_tabletype: `%%`(tabletype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_local(local : local) : free +relation fun_free_local: `%%`(local, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) + rule fun_free_local_case_0{t : valtype, var_0 : free}: + `%%`(LOCAL_local(t), var_0) + -- fun_free_valtype: `%%`(t, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_func(func : func) : free +relation fun_free_func: `%%`(func, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] + rule fun_free_func_case_0{typeidx : uN, `local*` : local*, expr : instr*, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(FUNC_func(typeidx, local*{local <- `local*`}, expr), var_0 +++ var_1 +++ var_3[LOCALS_free = []]) + -- fun_free_block: `%%`(expr, var_3) + -- (fun_free_local: `%%`(local, var_2))*{var_2 <- `var_2*`, local <- `local*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_datamode(datamode : datamode) : free +relation fun_free_datamode: `%%`(datamode, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) + rule fun_free_datamode_case_0{memidx : uN, expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_datamode(memidx, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_memidx: `%%`(memidx, var_0) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_datamode_case_1: + `%%`(PASSIVE_datamode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_data(data : data) : free +relation fun_free_data: `%%`(data, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) + rule fun_free_data_case_0{`byte*` : byte*, datamode : datamode, var_0 : free}: + `%%`(DATA_data(byte*{byte <- `byte*`}, datamode), var_0) + -- fun_free_datamode: `%%`(datamode, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_elemmode(elemmode : elemmode) : free +relation fun_free_elemmode: `%%`(elemmode, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) + rule fun_free_elemmode_case_0{tableidx : uN, expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_elemmode(tableidx, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_elemmode_case_1: + `%%`(PASSIVE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_elemmode_case_2: + `%%`(DECLARE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_elem(elem : elem) : free +relation fun_free_elem: `%%`(elem, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) + rule fun_free_elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode), var_0 +++ var_1 +++ var_3) + -- fun_free_elemmode: `%%`(elemmode, var_3) + -- (fun_free_expr: `%%`(expr, var_2))*{var_2 <- `var_2*`, expr <- `expr*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_reftype: `%%`(reftype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_start(start : start) : free +relation fun_free_start: `%%`(start, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) + rule fun_free_start_case_0{funcidx : uN, var_0 : free}: + `%%`(START_start(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_import(import : import) : free +relation fun_free_import: `%%`(import, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) + rule fun_free_import_case_0{name_1 : name, name_2 : name, externtype : externtype, var_0 : free}: + `%%`(IMPORT_import(name_1, name_2, externtype), var_0) + -- fun_free_externtype: `%%`(externtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_export(export : export) : free +relation fun_free_export: `%%`(export, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) + rule fun_free_export_case_0{name : name, externidx : externidx, var_0 : free}: + `%%`(EXPORT_export(name, externidx), var_0) + -- fun_free_externidx: `%%`(externidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_module(module : module) : free +relation fun_free_module: `%%`(module, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) + rule fun_free_module_case_0{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `var_21*` : free*, var_20 : free, `var_19*` : free*, var_18 : free, `var_17?` : free?, var_16 : free, `var_15*` : free*, var_14 : free, `var_13*` : free*, var_12 : free, `var_11*` : free*, var_10 : free, `var_9*` : free*, var_8 : free, `var_7*` : free*, var_6 : free, `var_5*` : free*, var_4 : free, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_0 +++ var_2 +++ var_4 +++ var_6 +++ var_8 +++ var_10 +++ var_12 +++ var_14 +++ var_16 +++ var_18 +++ var_20) + -- (fun_free_export: `%%`(export, var_21))*{var_21 <- `var_21*`, export <- `export*`} + -- fun_free_list: `%%`(var_21*{var_21 <- `var_21*`}, var_20) + -- (fun_free_import: `%%`(import, var_19))*{var_19 <- `var_19*`, import <- `import*`} + -- fun_free_list: `%%`(var_19*{var_19 <- `var_19*`}, var_18) + -- (fun_free_start: `%%`(start, var_17))?{var_17 <- `var_17?`, start <- `start?`} + -- fun_free_opt: `%%`(var_17?{var_17 <- `var_17?`}, var_16) + -- (fun_free_elem: `%%`(elem, var_15))*{var_15 <- `var_15*`, elem <- `elem*`} + -- fun_free_list: `%%`(var_15*{var_15 <- `var_15*`}, var_14) + -- (fun_free_data: `%%`(data, var_13))*{var_13 <- `var_13*`, data <- `data*`} + -- fun_free_list: `%%`(var_13*{var_13 <- `var_13*`}, var_12) + -- (fun_free_func: `%%`(func, var_11))*{var_11 <- `var_11*`, func <- `func*`} + -- fun_free_list: `%%`(var_11*{var_11 <- `var_11*`}, var_10) + -- (fun_free_table: `%%`(table, var_9))*{var_9 <- `var_9*`, table <- `table*`} + -- fun_free_list: `%%`(var_9*{var_9 <- `var_9*`}, var_8) + -- (fun_free_mem: `%%`(mem, var_7))*{var_7 <- `var_7*`, mem <- `mem*`} + -- fun_free_list: `%%`(var_7*{var_7 <- `var_7*`}, var_6) + -- (fun_free_global: `%%`(global, var_5))*{var_5 <- `var_5*`, global <- `global*`} + -- fun_free_list: `%%`(var_5*{var_5 <- `var_5*`}, var_4) + -- (fun_free_tag: `%%`(tag, var_3))*{var_3 <- `var_3*`, tag <- `tag*`} + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- (fun_free_type: `%%`(type, var_1))*{var_1 <- `var_1*`, type <- `type*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $funcidx_module(module : module) : funcidx* +relation fun_funcidx_module: `%%`(module, funcidx*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $funcidx_module{module : module}(module) = $free_module(module).FUNCS_free + rule fun_funcidx_module_case_0{module : module, var_0 : free}: + `%%`(module, var_0.FUNCS_free) + -- fun_free_module: `%%`(module, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $dataidx_funcs(func*) : dataidx* +relation fun_dataidx_funcs: `%%`(func*, dataidx*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $dataidx_funcs{`func*` : func*}(func*{func <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).DATAS_free + rule fun_dataidx_funcs_case_0{`func*` : func*, `var_1*` : free*, var_0 : free}: + `%%`(func*{func <- `func*`}, var_0.DATAS_free) + -- (fun_free_func: `%%`(func, var_1))*{var_1 <- `var_1*`, func <- `func*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax init = @@ -4868,44 +6022,64 @@ def $with_locals(context : context, localidx*, localtype*) : context ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 -def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 - def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 - def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.6-59.20 +relation fun_clos_deftypes: `%%`(deftype*, deftype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.6-59.20 + rule fun_clos_deftypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.6-59.20 + rule fun_clos_deftypes_case_1{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%`(dt*{dt <- `dt*`} ++ [dt_n], dt'*{dt' <- `dt'*`} ++ [var_0]) + -- fun_clos_deftypes: `%%`(dt*{dt <- `dt*`}, var_1) + -- fun_subst_all_deftype: `%%%`(dt_n, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) + -- if (dt'*{dt' <- `dt'*`} = var_1) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_valtype(context : context, valtype : valtype) : valtype +relation fun_clos_valtype: `%%%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_valtype_case_0{C : context, t : valtype, `dt*` : deftype*, var_1 : deftype*, var_0 : valtype}: + `%%%`(C, t, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- if (dt*{dt <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_deftype(context : context, deftype : deftype) : deftype +relation fun_clos_deftype: `%%%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_deftype_case_0{C : context, dt : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%%`(C, dt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_deftype: `%%%`(dt, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) + -- if (dt'*{dt' <- `dt'*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_tagtype(context : context, tagtype : tagtype) : tagtype +relation fun_clos_tagtype: `%%%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_tagtype{C : context, jt : typeuse, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_tagtype_case_0{C : context, jt : typeuse, `dt*` : deftype*, var_1 : deftype*, var_0 : tagtype}: + `%%%`(C, jt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_tagtype: `%%%`(jt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- if (dt*{dt <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_externtype(context : context, externtype : externtype) : externtype +relation fun_clos_externtype: `%%%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_externtype_case_0{C : context, xt : externtype, `dt*` : deftype*, var_1 : deftype*, var_0 : externtype}: + `%%%`(C, xt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_externtype: `%%%`(xt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- if (dt*{dt <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_moduletype(context : context, moduletype : moduletype) : moduletype +relation fun_clos_moduletype: `%%%`(context, moduletype, moduletype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_moduletype_case_0{C : context, mmt : moduletype, `dt*` : deftype*, var_1 : deftype*, var_0 : moduletype}: + `%%%`(C, mmt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_moduletype: `%%%`(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- if (dt*{dt <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -4967,10 +6141,11 @@ relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{deftype : deftype, comptype : comptype}: + rule _{deftype : deftype, comptype : comptype, var_0 : comptype}: `%~~%`(deftype, comptype) + -- fun_expanddt: `%%`(deftype, var_0) -- wf_comptype: `%`(comptype) - -- if ($expanddt(deftype) = comptype) + -- if (var_0 = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) @@ -4982,20 +6157,27 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{deftype : deftype, x : uN, i : nat}((deftype : deftype <: typeuse), x, i) = true + def $before{rectype : rectype, n : n, x : uN, i : nat}(_DEF_typeuse(rectype, n), x, i) = true ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before{typeidx : uN, x : uN, i : nat}(_IDX_typeuse(typeidx), x, i) = ($proj_uN_0(typeidx).0 < $proj_uN_0(x).0) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before{j : nat, x : uN, i : nat}(REC_typeuse(j), x, i) = (j < i) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -def $unrollht(context : context, heaptype : heaptype) : subtype +relation fun_unrollht: `%%%`(context, heaptype, subtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) + rule fun_unrollht_case_0{rectype : rectype, n : n, C : context, var_0 : subtype}: + `%%%`(C, _DEF_heaptype(rectype, n), var_0) + -- fun_unrolldt: `%%`(_DEF_deftype(rectype, n), var_0) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, typeidx : uN}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[$proj_uN_0(typeidx).0]) + rule fun_unrollht_case_1{C : context, typeidx : uN, var_0 : subtype}: + `%%%`(C, _IDX_heaptype(typeidx), var_0) + -- fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(typeidx).0], var_0) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] + rule fun_unrollht_case_2{C : context, i : nat}: + `%%%`(C, REC_heaptype(i), C.RECS_context[i]) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -5004,12 +6186,12 @@ rec { relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: - `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) + `%|-%:OK`(C, $heaptype_absheaptype(absheaptype)) -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: - `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) + `%|-%:OK`(C, $heaptype_typeuse(typeuse)) -- wf_context: `%`(C) -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) @@ -5027,19 +6209,19 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 rule num{C : context, numtype : numtype}: - `%|-%:OK`(C, (numtype : numtype <: valtype)) + `%|-%:OK`(C, $valtype_numtype(numtype)) -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 rule vec{C : context, vectype : vectype}: - `%|-%:OK`(C, (vectype : vectype <: valtype)) + `%|-%:OK`(C, $valtype_vectype(vectype)) -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 rule ref{C : context, reftype : reftype}: - `%|-%:OK`(C, (reftype : reftype <: valtype)) + `%|-%:OK`(C, $valtype_reftype(reftype)) -- wf_context: `%`(C) -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5057,7 +6239,6 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- wf_context: `%`(C) -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 @@ -5066,12 +6247,11 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) -- wf_context: `%`(C) -- wf_subtype: `%`(st) -- wf_typeuse: `%`(REC_typeuse(i)) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: - `%|-%:OK`(C, (deftype : deftype <: typeuse)) + `%|-%:OK`(C, $typeuse_deftype(deftype)) -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) @@ -5097,14 +6277,14 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 rule val{C : context, valtype : valtype}: - `%|-%:OK`(C, (valtype : valtype <: storagetype)) + `%|-%:OK`(C, $storagetype_valtype(valtype)) -- wf_context: `%`(C) -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 rule pack{C : context, packtype : packtype}: - `%|-%:OK`(C, (packtype : packtype <: storagetype)) + `%|-%:OK`(C, $storagetype_packtype(packtype)) -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) @@ -5135,18 +6315,16 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:88.1-88.126 relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 - rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: + rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*, `var_0*` : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- (fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(x).0], var_0))*{var_0 <- `var_0*`, x <- `x*`} -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- if (|`comptype'*`| = |`x'**`|) -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} - -- if (|`comptype'*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} - -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} + -- (if (var_0 = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `x'*` <- `x'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5181,18 +6359,17 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 - rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: + rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype, `var_0*` : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- (fun_unrollht: `%%%`(C, $heaptype_typeuse(typeuse), var_0))*{var_0 <- `var_0*`, typeuse <- `typeuse*`} -- wf_context: `%`(C) -- wf_comptype: `%`(comptype) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- if (|`comptype'*`| = |`typeuse'**`|) -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} - -- if (|`comptype'*`| = |`typeuse*`|) - -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} + -- (if (var_0 = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5235,7 +6412,6 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 @@ -5258,19 +6434,21 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 - rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype, var_1 : deftype, var_0 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) + -- fun_clos_deftype: `%%%`(C, deftype_2, var_1) + -- fun_clos_deftype: `%%%`(C, deftype_1, var_0) -- wf_context: `%`(C) - -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) + -- if (var_0 = var_1) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 - rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat, var_0 : subtype}: `%|-%<:%`(C, deftype_1, deftype_2) + -- fun_unrolldt: `%%`(deftype_1, var_0) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |typeuse*{typeuse <- `typeuse*`}|) - -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) + -- if (var_0 = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) @@ -5321,7 +6499,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) + `%|-%<:%`(C, $heaptype_deftype(deftype), STRUCT_heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) @@ -5329,7 +6507,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) + `%|-%<:%`(C, $heaptype_deftype(deftype), ARRAY_heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) @@ -5337,7 +6515,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) + `%|-%<:%`(C, $heaptype_deftype(deftype), FUNC_heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(FUNC_heaptype) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5345,7 +6523,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) + `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) @@ -5355,8 +6533,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) - -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype), heaptype) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: @@ -5364,17 +6541,14 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) - -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype)) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: - `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) - -- if (j < |typeuse*{typeuse <- `typeuse*`}|) + `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[j])) -- wf_context: `%`(C) -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 @@ -5442,19 +6616,19 @@ relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: - `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) + `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: - `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) + `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: - `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) + `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) -- wf_context: `%`(C) -- wf_reftype: `%`(reftype_1) -- wf_reftype: `%`(reftype_2) @@ -5475,14 +6649,13 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) -- wf_context: `%`(C) -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} - -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: - `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) + `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) -- wf_context: `%`(C) -- wf_valtype: `%`(valtype_1) -- wf_valtype: `%`(valtype_2) @@ -5490,7 +6663,7 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: - `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) + `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) @@ -5524,15 +6697,13 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- if (|`lct*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: - `%~~_%%`((deftype : deftype <: typeuse), C, comptype) + `%~~_%%`($typeuse_deftype(deftype), C, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) @@ -5543,7 +6714,6 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(comptype) -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5647,8 +6817,6 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) - -- if (|`t*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5666,7 +6834,7 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) + `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5748,10 +6916,10 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) - -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5771,7 +6939,6 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5782,9 +6949,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5793,9 +6958,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5803,7 +6966,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_catch(l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_ALL_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5811,38 +6973,61 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec -def $default_(valtype : valtype) : val? +relation fun_default_: `%%`(valtype, val?) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) - -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) + rule fun_default__case_0: + `%%`(I32_valtype, ?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0))))) + -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_1: + `%%`(I64_valtype, ?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0))))) + -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_2{var_0 : fN}: + `%%`(F32_valtype, ?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0)))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) - -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + rule fun_default__case_3{var_0 : fN}: + `%%`(F64_valtype, ?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0)))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) - -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) + rule fun_default__case_4: + `%%`(V128_valtype, ?(VCONST_val(V128_vectype, `%`_vec_(0)))) + -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + rule fun_default__case_5{ht : heaptype}: + `%%`(REF_valtype(?(NULL_null), ht), ?(REF.NULL_val(ht))) -- wf_val: `%`(REF.NULL_val(ht)) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() + rule fun_default__case_6{ht : heaptype}: + `%%`(REF_valtype(?(), ht), ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule _{t : valtype}: + rule _{t : valtype, var_0 : val?}: `|-%DEFAULTABLE`(t) + -- fun_default_: `%%`(t, var_0) -- wf_valtype: `%`(t) - -- if ($default_(t) =/= ?()) + -- if (var_0 =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -def $is_packtype(storagetype : storagetype) : bool +relation fun_is_packtype: `%%`(storagetype, bool) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - def $is_packtype{zt : storagetype}(zt) = (zt = ($unpack(zt) : valtype <: storagetype)) + rule fun_is_packtype_case_0{zt : storagetype, var_0 : valtype}: + `%%`(zt, (zt = $storagetype_valtype(var_0))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rec { @@ -5889,7 +7074,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') - -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) + -- if ((t' = $valtype_numtype(numtype)) \/ (t' = $valtype_vectype(vectype))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: @@ -5934,7 +7119,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(BR_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5944,7 +7128,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_IF_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 @@ -5953,9 +7136,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} - -- if ($proj_uN_0(l').0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5965,7 +7146,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -5975,36 +7155,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 - rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, var_0 : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(var_0)]))) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) -- wf_context: `%`(C) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(var_0)]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 - rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, var_0 : reftype}: + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) -- wf_context: `%`(C) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + -- Reftype_sub: `%|-%<:%`(C, var_0, rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: @@ -6013,7 +7192,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(CALL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 @@ -6023,22 +7201,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: - `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`(C) -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 @@ -6060,7 +7235,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6075,7 +7249,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6083,19 +7256,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6109,7 +7280,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6144,13 +7314,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref.func{C : context, x : idx, dt : deftype}: - `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) -- wf_context: `%`(C) -- wf_instr: `%`(REF.FUNC_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) - -- if (|C.REFS_context| > 0) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 @@ -6185,20 +7353,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref.test{C : context, rt : reftype, rt' : reftype}: - `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(REF.TEST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref.cast{C : context, rt : reftype, rt' : reftype}: - `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- wf_context: `%`(C) -- wf_instr: `%`(REF.CAST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6211,82 +7379,81 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 - rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: - `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*, `var_0*` : valtype*}: + `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 - rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*, `var_0*` : valtype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} + -- (Defaultable: `|-%DEFAULTABLE`(var_0))*{var_0 <- `var_0*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 - rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: - `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([var_0]))) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([var_0]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + -- if ((sx?{sx <- `sx?`} = ?()) <=> var_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 - rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: - `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, var_0 : valtype}: + `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], `%`_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT.SET_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 - rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?, var_0 : valtype}: + `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([var_0 I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([var_0 I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 - rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: + rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype, var_0 : valtype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + -- Defaultable: `|-%DEFAULTABLE`(var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 - rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?, var_0 : valtype}: + `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype(var_0^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(var_0^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 @@ -6295,44 +7462,42 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 - rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: + rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype, var_0 : valtype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- if ((var_0 = $valtype_numtype(numtype)) \/ (var_0 = $valtype_vectype(vectype))) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 - rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([var_0]))) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([var_0]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + -- if ((sx?{sx <- `sx?`} = ?()) <=> var_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 - rule array.set{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + rule array.set{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], `%`_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 @@ -6343,13 +7508,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 - rule array.fill{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + rule array.fill{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], `%`_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 @@ -6360,9 +7525,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) @@ -6373,22 +7536,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) - -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[$proj_uN_0(y).0] : reftype <: storagetype), zt) + -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 - rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: + rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype, var_0 : valtype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- if ((var_0 = $valtype_numtype(numtype)) \/ (var_0 = $valtype_vectype(vectype))) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 @@ -6414,7 +7574,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOCAL.GET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 @@ -6424,7 +7583,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOCAL.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 @@ -6434,7 +7592,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOCAL.TEE_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 @@ -6444,7 +7601,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(GLOBAL.GET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 @@ -6454,84 +7610,74 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(GLOBAL.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- wf_context: `%`(C) -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: - `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_context: `%`(C) -- wf_instr: `%`(TABLE.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: - `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([I32_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(TABLE.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([I32_valtype]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: - `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) - -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) - -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: - `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_reftype: `%`(rt_2) -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6542,62 +7688,54 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(ELEM.DROP_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_context: `%`(C) -- wf_instr: `%`(MEMORY.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.32 rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_context: `%`(C) -- wf_instr: `%`(MEMORY.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.38 rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: - `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) - -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) - -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.24 rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 @@ -6606,173 +7744,161 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(DATA.DROP_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) -- wf_context: `%`(C) -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + `%|-%:%`(C, LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: - `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (((2 ^ $proj_uN_0(memarg.ALIGN_memarg).0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 rule const{C : context, nt : numtype, c_nt : num_}: - `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) -- wf_context: `%`(C) -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: - `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) -- wf_context: `%`(C) -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: - `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) -- wf_context: `%`(C) -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: - `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: - `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: - `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) -- wf_context: `%`(C) -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 rule vconst{C : context, c : vec_}: @@ -6866,35 +7992,38 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 - rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: + rule vshuffle{C : context, sh : bshape, `i*` : laneidx*, var_0 : dim}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- fun_dim: `%%`($proj_bshape_0(sh).0, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} + -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0(var_0).0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 rule vsplat{C : context, sh : shape}: - `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 - rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: - `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx, var_0 : dim}: + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- fun_dim: `%%`(sh, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) - -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 - rule vreplace_lane{C : context, sh : shape, i : laneidx}: - `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + rule vreplace_lane{C : context, sh : shape, i : laneidx, var_0 : dim}: + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- fun_dim: `%%`(sh, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: @@ -6947,13 +8076,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`t*`|) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`x_1*`|) - -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) @@ -6992,10 +8118,11 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule _{t : valtype}: + rule _{t : valtype, var_0 : val?}: `|-%NONDEFAULTABLE`(t) + -- fun_default_: `%%`(t, var_0) -- wf_valtype: `%`(t) - -- if ($default_(t) = ?()) + -- if (var_0 = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) @@ -7077,17 +8204,16 @@ relation Instr_const: `%|-%CONST`(context, instr) -- wf_context: `%`(C) -- wf_instr: `%`(GLOBAL.GET_instr(x)) -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: - `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) + `%|-%CONST`(C, BINOP_instr($numtype_addrtype(Inn), binop)) -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) + -- wf_instr: `%`(BINOP_instr($numtype_addrtype(Inn), binop)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) @@ -7114,20 +8240,22 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: + rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx, var_0 : deftype*}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- fun_rolldt: `%%%`(x, rectype, var_0) -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) - -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) + -- if (dt*{dt <- `dt*`} = var_0) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, tagtype : tagtype}: - `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + rule _{C : context, tagtype : tagtype, var_0 : tagtype}: + `%|-%:%`(C, TAG_tag(tagtype), var_0) + -- fun_clos_tagtype: `%%%`(C, tagtype, var_0) -- wf_context: `%`(C) -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) @@ -7163,7 +8291,7 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) - -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(rt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Local_ok: `%|-%:%`(context, local, localtype) @@ -7188,13 +8316,11 @@ relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- wf_context: `%`(C) -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -7212,9 +8338,8 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) -- wf_context: `%`(C) -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Data_ok: `%|-%:%`(context, data, datatype) @@ -7248,10 +8373,9 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- wf_reftype: `%`(rt) -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Elem_ok: `%|-%:%`(context, elem, elemtype) @@ -7261,7 +8385,7 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) -- wf_context: `%`(C) -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) - -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} + -- (Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(elemtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7272,14 +8396,14 @@ relation Start_ok: `%|-%:OK`(context, start) -- wf_context: `%`(C) -- wf_start: `%`(START_start(x)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: - `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + rule _{C : context, name_1 : name, name_2 : name, xt : externtype, var_0 : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), var_0) + -- fun_clos_externtype: `%%%`(C, xt, var_0) -- wf_context: `%`(C) -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) @@ -7292,7 +8416,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(TAG_externidx(x)) -- wf_externtype: `%`(TAG_externtype(jt)) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7301,7 +8424,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(GLOBAL_externidx(x)) -- wf_externtype: `%`(GLOBAL_externtype(gt)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7310,7 +8432,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(MEM_externidx(x)) -- wf_externtype: `%`(MEM_externtype(mt)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7319,16 +8440,14 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(TABLE_externidx(x)) -- wf_externtype: `%`(TABLE_externtype(tt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: - `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) -- wf_context: `%`(C) -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7397,16 +8516,20 @@ relation wf_nonfuncs: `%`(nonfuncs) -- (wf_elem: `%`(elem))*{elem <- `elem*`} ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* +relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + rule fun_funcidx_nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, var_0 : funcidx*}: + `%%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}), var_0) + -- fun_funcidx_module: `%%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), []), var_0) -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: - `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*, var_1 : funcidx*, var_0 : moduletype}: + `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_0) + -- fun_funcidx_nonfuncs: `%%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}), var_1) + -- fun_clos_moduletype: `%%%`(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}), var_0) -- wf_context: `%`(C) -- wf_context: `%`(C') -- (wf_name: `%`(nm))*{nm <- `nm*`} @@ -7418,29 +8541,20 @@ relation Module_ok: `|-%:%`(module, moduletype) -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) - -- if (|`import*`| = |`xt_I*`|) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} - -- if (|`jt*`| = |`tag*`|) -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- if (|`mem*`| = |`mt*`|) -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} - -- if (|`table*`| = |`tt*`|) -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} - -- if (|`dt*`| = |`func*`|) -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} - -- if (|`data*`| = |`ok*`|) -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} - -- if (|`elem*`| = |`rt*`|) -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} - -- if (|`export*`| = |`nm*`|) - -- if (|`export*`| = |`xt_E*`|) -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) -- if (C = C' +++ {TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) - -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}))) + -- if (x*{x <- `x*`} = var_1) -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) @@ -7568,38 +8682,79 @@ def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $signed_(N : N, nat : nat) : int +relation fun_signed_: `%%%`(N, nat, int) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $signed_{N : nat, i : nat}(N, i) = (i : nat <:> int) + rule fun_signed__case_0{N : nat, i : nat}: + `%%%`(N, i, (i : nat <:> int)) -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $signed_{N : nat, i : nat}(N, i) = ((i : nat <:> int) - ((2 ^ N) : nat <:> int)) + rule fun_signed__case_1{N : nat, i : nat}: + `%%%`(N, i, ((i : nat <:> int) - ((2 ^ N) : nat <:> int))) -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inv_signed_(N : N, int : int) : nat +relation fun_inv_signed_: `%%%`(N, int, nat) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inv_signed_{N : nat, i : int}(N, i) = (i : int <:> nat) + rule fun_inv_signed__case_0{N : nat, i : int}: + `%%%`(N, i, (i : int <:> nat)) -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inv_signed_{N : nat, i : int}(N, i) = ((i + ((2 ^ N) : nat <:> int)) : int <:> nat) + rule fun_inv_signed__case_1{N : nat, i : int}: + `%%%`(N, i, ((i + ((2 ^ N) : nat <:> int)) : int <:> nat)) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $sx(storagetype : storagetype) : sx? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?() + def $sx(I32_storagetype) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I64_storagetype) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(F32_storagetype) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(S_sx) + def $sx(F64_storagetype) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(V128_storagetype) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I8_storagetype) = ?(S_sx) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I16_storagetype) = ?(S_sx) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $zero(lanetype : lanetype) : lane_ +relation fun_zero: `%%`(lanetype, lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_0: + `%%`(I32_lanetype, mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_1: + `%%`(I64_lanetype, mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_2: + `%%`(I8_lanetype, mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_3: + `%%`(I16_lanetype, mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) + rule fun_zero_case_4{var_0 : fN}: + `%%`(F32_lanetype, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + rule fun_zero_case_5{var_0 : fN}: + `%%`(F64_lanetype, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7633,7 +8788,8 @@ def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iabs_{N : nat, i_1 : uN}(N, i_1) = (if ($signed_(N, $proj_uN_0(i_1).0) >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + def $iabs_{N : nat, i_1 : uN, var_0 : int}(N, i_1) = (if (var_0 >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iclz_(N : N, iN : iN) : iN @@ -7645,13 +8801,18 @@ def $ictz_(N : N, iN : iN) : iN def $ipopcnt_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN +relation fun_iextend_: `%%%%%`(N, M, sx, iN, iN) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) + rule fun_iextend__case_0{N : nat, M : nat, i : uN}: + `%%%%%`(N, M, U_sx, i, `%`_iN(($proj_uN_0(i).0 \ (2 ^ M)))) -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) + rule fun_iextend__case_1{N : nat, M : nat, i : uN, var_1 : int, var_0 : nat}: + `%%%%%`(N, M, S_sx, i, `%`_iN(var_0)) + -- fun_signed_: `%%%`(M, ($proj_uN_0(i).0 \ (2 ^ M)), var_1) + -- fun_inv_signed_: `%%%`(N, var_1, var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN @@ -7672,34 +8833,58 @@ def $imul_(N : N, iN : iN, iN : iN) : iN -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? +relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + rule fun_idiv__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + rule fun_idiv__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)))) -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + rule fun_idiv__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?() - -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + rule fun_idiv__case_3{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: + `%%%%%`(N, S_sx, i_1, i_2, ?()) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) + rule fun_idiv__case_4{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? +relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + rule fun_irem__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + rule fun_irem__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))) -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + rule fun_irem__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) + rule fun_irem__case_3{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + -- if ((j_1 = var_1) /\ (j_2 = var_2)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7710,7 +8895,9 @@ def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 -- if ($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)) then i_1 else i_2) + def $imin_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 <= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7721,7 +8908,9 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 -- if ($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)) then i_1 else i_2) + def $imax_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 >= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7729,8 +8918,11 @@ def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 + var_2)), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7738,8 +8930,11 @@ def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 - var_2)), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7787,9 +8982,10 @@ def $ibitselect_(N : N, iN : iN, iN : iN, iN : iN) : iN def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ieqz_(N : N, iN : iN) : u32 +relation fun_ieqz_: `%%%`(N, iN, u32) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) + rule fun_ieqz__case_0{N : nat, i_1 : uN}: + `%%%`(N, i_1, `%`_u32($bool(($proj_uN_0(i_1).0 = 0)))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7816,8 +9012,10 @@ def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) + def $ilt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 < var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 < var_1)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 @@ -7825,8 +9023,10 @@ def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) + def $igt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 > var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 > var_1)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 @@ -7834,8 +9034,10 @@ def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) + def $ile_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 <= var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 <= var_1)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 @@ -7843,8 +9045,10 @@ def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) + def $ige_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 >= var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 >= var_1)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -7955,848 +9159,4470 @@ def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ +relation fun_lpacknum_: `%%%`(lanetype, num_, lane_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) - -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) + rule fun_lpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, c, mk_lane__0_lane_(I32_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + rule fun_lpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, c, mk_lane__0_lane_(I64_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c + rule fun_lpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, c, mk_lane__0_lane_(F32_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + rule fun_lpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, c, mk_lane__0_lane_(F64_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c + rule fun_lpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) + rule fun_lpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ +relation fun_cpacknum_: `%%%`(storagetype, lit_, lit_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c + rule fun_cpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) + rule fun_cpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) + rule fun_cpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) + rule fun_cpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) + rule fun_cpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) + rule fun_cpacknum__case_5{c : uN}: + `%%%`(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} + rule fun_cpacknum__case_6{c : uN}: + `%%%`(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_lunpacknum_: `%%%`(lanetype, lane_, num_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} + rule fun_lunpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, mk_lane__0_lane_(I32_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} + rule fun_lunpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, mk_lane__0_lane_(I64_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} + rule fun_lunpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, mk_lane__0_lane_(F32_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} + rule fun_lunpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, mk_lane__0_lane_(F64_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} + rule fun_lunpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_lane__1_lane_(I8_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} + rule fun_lunpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_lane__1_lane_(I16_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* +relation fun_cunpacknum_: `%%%`(storagetype, lit_, lit_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + rule fun_cunpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + rule fun_cunpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + rule fun_cunpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + rule fun_cunpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + rule fun_cunpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + rule fun_cunpacknum__case_5{c : uN}: + `%%%`(I8_storagetype, mk_lit__2_lit_(I8_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + rule fun_cunpacknum__case_6{c : uN}: + `%%%`(I16_storagetype, mk_lit__2_lit_(I16_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + rule fun_unop__case_0{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))) + rule fun_unop__case_1{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + rule fun_unop__case_2{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + rule fun_unop__case_3{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + rule fun_unop__case_4{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + rule fun_unop__case_5{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + rule fun_unop__case_6{M : nat, i : uN, var_0 : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, var_0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + rule fun_unop__case_7{M : nat, i : uN, var_0 : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, var_0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + rule fun_unop__case_8{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + rule fun_unop__case_9{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + rule fun_unop__case_10{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + rule fun_unop__case_11{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $testop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_testop__0_testop_(Inn, EQZ_testop_Inn), mk_num__0_num_(Inn, i)) = $ieqz_($sizenn((Inn : addrtype <: numtype)), i) + rule fun_unop__case_12{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, EQ_relop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ieq_($sizenn((Inn : addrtype <: numtype)), i_1, i_2) + rule fun_unop__case_13{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, NE_relop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ine_($sizenn((Inn : addrtype <: numtype)), i_1, i_2) + rule fun_unop__case_14{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, LT_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ilt_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + rule fun_unop__case_15{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, GT_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $igt_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + rule fun_unop__case_16{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, LE_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ile_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + rule fun_unop__case_17{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, GE_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ige_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + rule fun_unop__case_18{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, EQ_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $feq_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + rule fun_unop__case_19{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, NE_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fne_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + rule fun_unop__case_20{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, LT_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $flt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + rule fun_unop__case_21{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_binop_: `%%%%%`(numtype, binop_, num_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, GT_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fgt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + rule fun_binop__case_0{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, LE_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fle_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + rule fun_binop__case_1{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, GE_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fge_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + rule fun_binop__case_2{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) + rule fun_binop__case_3{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) + rule fun_binop__case_4{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + rule fun_binop__case_5{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + rule fun_binop__case_6{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) + rule fun_binop__case_7{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + rule fun_binop__case_8{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + rule fun_binop__case_9{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] - -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) - -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) + rule fun_binop__case_10{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] - -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) - -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) + rule fun_binop__case_11{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $lanes_(shape : shape, vec_ : vec_) : lane_* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_12{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $inv_lanes_(shape : shape, lane_*) : vec_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_13{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : zero? - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_14{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : half? - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = half?{half <- `half?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_15{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $half(half : half, nat : nat, nat : nat) : nat - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $half{i : nat, j : nat}(LOW_half, i, j) = i - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $half{i : nat, j : nat}(HIGH_half, i, j) = j + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_16{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $iswizzle_lane_(N : N, iN*, iN : iN) : iN - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_17{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_18{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_19{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_20{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_21{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_22{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_23{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_24{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_25{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_26{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_27{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_28{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_29{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_30{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_31{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_32{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_33{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_34{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_35{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_36{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_37{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_testop_: `%%%%`(numtype, testop_, num_, u32) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_testop__case_0{i : uN, var_0 : u32}: + `%%%%`(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I32_Inn)), i, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_testop__case_1{i : uN, var_0 : u32}: + `%%%%`(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I64_Inn)), i, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_cvtop__: `%%%%%`(numtype, numtype, cvtop__, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_0{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_1{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_2{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_3{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_4{i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_5{i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_6{i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_7{i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_8{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_9{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_10{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_11{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_12{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_13{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_14{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_15{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_16{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_17{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_18{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_19{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_20{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_21{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_22{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_23{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_24{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_25{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_26{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_27{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_28{i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_29{i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_30{i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_31{i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_32{f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_33{f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_34{f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_35{f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lanes_(shape : shape, vec_ : vec_) : lane_* + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $inv_lanes_(shape : shape, lane_*) : vec_ + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_zeroop: `%%%%`(shape, shape, vcvtop__, zero?) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_40{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_41{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_42{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_43{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_halfop: `%%%%`(shape, shape, vcvtop__, half?) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_40{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_41{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_42{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_43{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $half(half : half, nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(LOW_half, i, j) = i + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(HIGH_half, i, j) = j + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $iswizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) + -- wf_uN: `%%`(N, `%`_uN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN, var_0 : int}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if (var_0 < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i).0, var_0) + -- wf_uN: `%%`(N, `%`_uN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivtestop_{M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvtestop_{M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvtestop_{M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- if ($isize(Inn) = $fsize(F32_Fnn)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- if ($isize(Inn) = $fsize(F64_Fnn)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_0{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_1{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_2{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_3{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_1{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_2{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_3{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvunop_{Vnn : vectype, v : uN}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vunop_: `%%%%`(shape, vunop_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_0{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_1{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_2{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_3{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_4{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_5{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_6{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_7{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_8{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_9{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_10{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_11{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_12{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_13{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_14{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_15{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_16{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_17{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_18{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_19{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_20{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_21{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_22{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_23{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_24{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_25{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vbinop_: `%%%%%`(shape, vbinop_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_2{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_3{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_4{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_5{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_6{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_7{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_8{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_9{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_10{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_11{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_24{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_25{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_26{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_27{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_28{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_29{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_30{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_31{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_32{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_33{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_34{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_35{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_36{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_37{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_38{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_39{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_40{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_41{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_42{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_43{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_44{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_45{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_46{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_47{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_48{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_49{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_50{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_51{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_52{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_53{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_54{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_55{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_56{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_57{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_58{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_59{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vternop_: `%%%%%%`(shape, vternop_, vec_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_0{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_1{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_2{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_3{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_4{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_5{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_6{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_7{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vtestop_: `%%%%`(shape, vtestop_, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vtestop__case_0{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I32_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v, $ivtestop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $inez_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vtestop__case_1{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I64_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v, $ivtestop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $inez_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vtestop__case_2{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I8_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v, $ivtestop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $inez_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vtestop__case_3{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vtestop__0_vtestop_(I16_Jnn, M, ALL_TRUE_vtestop_Jnn_M), v, $ivtestop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $inez_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vrelop_: `%%%%%`(shape, vrelop_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_2{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_3{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_4{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_5{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_6{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_7{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_8{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_9{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_10{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_11{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_24{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_25{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_26{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_27{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_28{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_29{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_30{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_31{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_32{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_33{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_34{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_35{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_43{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_47{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_51{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_55{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_56{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_57{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_58{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_59{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_60{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_61{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_62{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_63{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_64{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_65{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_66{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_67{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_68{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_69{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_70{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_71{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN +relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) + rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1, v) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1, var_2))*{var_2 <- `var_2*`, c_1 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) + -- if ((var_0 = ?()) /\ (var_1 = ?())) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**, `var_1*` : lane_**, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- `var_1*`, c_1 <- `c_1*`} + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- if (var_0 = ?(half)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, var_2 : lane_, `var_1*` : lane_**, var_0 : zero?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- fun_zero: `%%`(Lnn_2, var_2) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- `var_1*`, c_1 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- if (var_0 = ?(ZERO_zero)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`} ++ [var_2]^M_1{})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* +relation fun_vshiftop_: `%%%%%`(ishape, vshiftop_, vec_, u32, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_0{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_1{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_2{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_3{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_4{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_5{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_6{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + rule fun_vshiftop__case_7{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* +relation fun_vbitmaskop_: `%%%`(ishape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_0{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_1{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_2{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})) + rule fun_vbitmaskop__case_3{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* +relation fun_vswizzlop_: `%%%%%`(bshape, vswizzlop_, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + rule fun_vswizzlop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vswizzlop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* +relation fun_vshufflop_: `%%%%%`(bshape, laneidx*, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + rule fun_vshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, var_0 : vec_}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2, var_0) + -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, var_0) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* +relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + rule fun_vnarrowop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* +def $ivadd_pairwise_(N : N, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} + -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvbinop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* +relation fun_vextunop__: `%%%%%`(ishape, ishape, vextunop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + rule fun_vextunop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvternop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + rule fun_vextunop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivtestop_(shape : shape, def $f_(N : N, iN : iN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivtestop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + rule fun_vextunop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fvtestop_(shape : shape, def $f_(N : N, fN : fN) : u32, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvtestop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : u32, v_1 : uN, `c*` : u32*, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod($proj_uN_0(c).0*{c <- `c*`})) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_uN: `%%`(32, `%`_uN($prod($proj_uN_0(c).0*{c <- `c*`}))) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))*{c_1 <- `c_1*`}) + rule fun_vextunop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + rule fun_vextunop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + rule fun_vextunop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvrelop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) - -- if ($isize(Inn) = $fsize(Fnn)) + rule fun_vextunop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + rule fun_vextunop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + rule fun_vextunop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + rule fun_vextunop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{Jnn : Jnn, M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + rule fun_vextunop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{Jnn : Jnn, M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) +def $ivdot_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* +def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvunop_{Vnn : vectype, v : uN}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] + def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_, vec_ : vec_) : vec_* +def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivmul_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* +relation fun_vextbinop__: `%%%%%%`(ishape, ishape, vextbinop__, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_16{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_17{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_18{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_19{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_20{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_21{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_22{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vtestop_(shape : shape, vtestop_ : vtestop_, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vtestop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M), v) = $ivtestop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_23{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_24{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_25{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_26{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_27{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_28{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_29{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_30{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_31{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_32{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_33{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_34{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_35{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) - -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) + rule fun_vextbinop___case_36{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) - -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) + rule fun_vextbinop___case_37{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)) + rule fun_vextbinop___case_38{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)) + rule fun_vextbinop___case_39{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) + rule fun_vextbinop___case_40{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) + rule fun_vextbinop___case_41{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) - -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) + rule fun_vextbinop___case_42{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) - -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + rule fun_vextbinop___case_43{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) - -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + rule fun_vextbinop___case_44{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_45{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_46{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_vextbinop___case_47{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ +relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + rule fun_vextternop___case_0{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + rule fun_vextternop___case_1{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + rule fun_vextternop___case_2{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`})) + rule fun_vextternop___case_3{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} - -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) + rule fun_vextternop___case_4{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_5{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + rule fun_vextternop___case_6{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + rule fun_vextternop___case_7{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} - -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) + rule fun_vextternop___case_8{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} - -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) + rule fun_vextternop___case_9{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + rule fun_vextternop___case_10{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivmul_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + rule fun_vextternop___case_11{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) + rule fun_vextternop___case_12{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) + rule fun_vextternop___case_13{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) + rule fun_vextternop___case_14{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_15{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) - -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax num = | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) +def $val_num(num) : val + def $val_num{x0 : numtype, x1 : num_}(CONST_num(x0, x1)) = CONST_val(x0, x1) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec relation wf_num: `%`(num) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -8808,6 +13634,9 @@ relation wf_num: `%`(num) syntax vec = | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) +def $val_vec(vec) : val + def $val_vec{x0 : vectype, x1 : vec_}(VCONST_vec(x0, x1)) = VCONST_val(x0, x1) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec relation wf_vec: `%`(vec) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -8826,6 +13655,35 @@ syntax ref = | REF.EXTERN{addrref : addrref}(addrref : addrref) | REF.NULL{heaptype : heaptype}(heaptype : heaptype) +def $ref_addrref(addrref) : ref + def $ref_addrref{x0 : u31}(REF.I31_NUM_addrref(x0)) = REF.I31_NUM_ref(x0) + def $ref_addrref{x0 : structaddr}(REF.STRUCT_ADDR_addrref(x0)) = REF.STRUCT_ADDR_ref(x0) + def $ref_addrref{x0 : arrayaddr}(REF.ARRAY_ADDR_addrref(x0)) = REF.ARRAY_ADDR_ref(x0) + def $ref_addrref{x0 : funcaddr}(REF.FUNC_ADDR_addrref(x0)) = REF.FUNC_ADDR_ref(x0) + def $ref_addrref{x0 : exnaddr}(REF.EXN_ADDR_addrref(x0)) = REF.EXN_ADDR_ref(x0) + def $ref_addrref{x0 : hostaddr}(REF.HOST_ADDR_addrref(x0)) = REF.HOST_ADDR_ref(x0) + def $ref_addrref{x0 : addrref}(REF.EXTERN_addrref(x0)) = REF.EXTERN_ref(x0) + +def $instr_ref(ref) : instr + def $instr_ref{x0 : u31}(REF.I31_NUM_ref(x0)) = REF.I31_NUM_instr(x0) + def $instr_ref{x0 : structaddr}(REF.STRUCT_ADDR_ref(x0)) = REF.STRUCT_ADDR_instr(x0) + def $instr_ref{x0 : arrayaddr}(REF.ARRAY_ADDR_ref(x0)) = REF.ARRAY_ADDR_instr(x0) + def $instr_ref{x0 : funcaddr}(REF.FUNC_ADDR_ref(x0)) = REF.FUNC_ADDR_instr(x0) + def $instr_ref{x0 : exnaddr}(REF.EXN_ADDR_ref(x0)) = REF.EXN_ADDR_instr(x0) + def $instr_ref{x0 : hostaddr}(REF.HOST_ADDR_ref(x0)) = REF.HOST_ADDR_instr(x0) + def $instr_ref{x0 : addrref}(REF.EXTERN_ref(x0)) = REF.EXTERN_instr(x0) + def $instr_ref{x0 : heaptype}(REF.NULL_ref(x0)) = REF.NULL_instr(x0) + +def $val_ref(ref) : val + def $val_ref{x0 : u31}(REF.I31_NUM_ref(x0)) = REF.I31_NUM_val(x0) + def $val_ref{x0 : structaddr}(REF.STRUCT_ADDR_ref(x0)) = REF.STRUCT_ADDR_val(x0) + def $val_ref{x0 : arrayaddr}(REF.ARRAY_ADDR_ref(x0)) = REF.ARRAY_ADDR_val(x0) + def $val_ref{x0 : funcaddr}(REF.FUNC_ADDR_ref(x0)) = REF.FUNC_ADDR_val(x0) + def $val_ref{x0 : exnaddr}(REF.EXN_ADDR_ref(x0)) = REF.EXN_ADDR_val(x0) + def $val_ref{x0 : hostaddr}(REF.HOST_ADDR_ref(x0)) = REF.HOST_ADDR_val(x0) + def $val_ref{x0 : addrref}(REF.EXTERN_ref(x0)) = REF.EXTERN_val(x0) + def $val_ref{x0 : heaptype}(REF.NULL_ref(x0)) = REF.NULL_val(x0) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec relation wf_ref: `%`(ref) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9033,6 +13891,18 @@ syntax fieldval = | REF.EXTERN{addrref : addrref}(addrref : addrref) | PACK{packtype : packtype, iN : iN}(packtype : packtype, iN : iN) +def $fieldval_val(val) : fieldval + def $fieldval_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_fieldval(x0, x1) + def $fieldval_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_fieldval(x0, x1) + def $fieldval_val{x0 : heaptype}(REF.NULL_val(x0)) = REF.NULL_fieldval(x0) + def $fieldval_val{x0 : u31}(REF.I31_NUM_val(x0)) = REF.I31_NUM_fieldval(x0) + def $fieldval_val{x0 : structaddr}(REF.STRUCT_ADDR_val(x0)) = REF.STRUCT_ADDR_fieldval(x0) + def $fieldval_val{x0 : arrayaddr}(REF.ARRAY_ADDR_val(x0)) = REF.ARRAY_ADDR_fieldval(x0) + def $fieldval_val{x0 : funcaddr}(REF.FUNC_ADDR_val(x0)) = REF.FUNC_ADDR_fieldval(x0) + def $fieldval_val{x0 : exnaddr}(REF.EXN_ADDR_val(x0)) = REF.EXN_ADDR_fieldval(x0) + def $fieldval_val{x0 : hostaddr}(REF.HOST_ADDR_val(x0)) = REF.HOST_ADDR_fieldval(x0) + def $fieldval_val{x0 : addrref}(REF.EXTERN_val(x0)) = REF.EXTERN_fieldval(x0) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec relation wf_fieldval: `%`(fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9188,20 +14058,336 @@ def $Ki : nat def $Ki = 1024 ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $packfield_(storagetype : storagetype, val : val) : fieldval +relation fun_packfield_: `%%%`(storagetype, val, fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_0{val : val}: + `%%%`(BOT_storagetype, val, $fieldval_val(val)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_1{`null?` : null?, heaptype : heaptype, val : val}: + `%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), val, $fieldval_val(val)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_2{val : val}: + `%%%`(V128_storagetype, val, $fieldval_val(val)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_3{val : val}: + `%%%`(F64_storagetype, val, $fieldval_val(val)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_4{val : val}: + `%%%`(F32_storagetype, val, $fieldval_val(val)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_5{val : val}: + `%%%`(I64_storagetype, val, $fieldval_val(val)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_6{val : val}: + `%%%`(I32_storagetype, val, $fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) + rule fun_packfield__case_7{i : uN}: + `%%%`(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) - -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) + rule fun_packfield__case_8{i : uN}: + `%%%`(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val +relation fun_unpackfield_: `%%%%`(storagetype, sx?, fieldval, val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_0{addrref : addrref}: + `%%%%`(BOT_storagetype, ?(), REF.EXTERN_fieldval(addrref), REF.EXTERN_val(addrref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_1{addrref : addrref, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXTERN_fieldval(addrref), REF.EXTERN_val(addrref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_2{addrref : addrref}: + `%%%%`(V128_storagetype, ?(), REF.EXTERN_fieldval(addrref), REF.EXTERN_val(addrref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_3{addrref : addrref}: + `%%%%`(F64_storagetype, ?(), REF.EXTERN_fieldval(addrref), REF.EXTERN_val(addrref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_4{addrref : addrref}: + `%%%%`(F32_storagetype, ?(), REF.EXTERN_fieldval(addrref), REF.EXTERN_val(addrref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_5{addrref : addrref}: + `%%%%`(I64_storagetype, ?(), REF.EXTERN_fieldval(addrref), REF.EXTERN_val(addrref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_6{addrref : addrref}: + `%%%%`(I32_storagetype, ?(), REF.EXTERN_fieldval(addrref), REF.EXTERN_val(addrref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_7{hostaddr : hostaddr}: + `%%%%`(BOT_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), REF.HOST_ADDR_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_8{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.HOST_ADDR_fieldval(hostaddr), REF.HOST_ADDR_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_9{hostaddr : hostaddr}: + `%%%%`(V128_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), REF.HOST_ADDR_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_10{hostaddr : hostaddr}: + `%%%%`(F64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), REF.HOST_ADDR_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_11{hostaddr : hostaddr}: + `%%%%`(F32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), REF.HOST_ADDR_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_12{hostaddr : hostaddr}: + `%%%%`(I64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), REF.HOST_ADDR_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_13{hostaddr : hostaddr}: + `%%%%`(I32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), REF.HOST_ADDR_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_14{exnaddr : exnaddr}: + `%%%%`(BOT_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), REF.EXN_ADDR_val(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_15{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXN_ADDR_fieldval(exnaddr), REF.EXN_ADDR_val(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_16{exnaddr : exnaddr}: + `%%%%`(V128_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), REF.EXN_ADDR_val(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_17{exnaddr : exnaddr}: + `%%%%`(F64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), REF.EXN_ADDR_val(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_18{exnaddr : exnaddr}: + `%%%%`(F32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), REF.EXN_ADDR_val(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_19{exnaddr : exnaddr}: + `%%%%`(I64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), REF.EXN_ADDR_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val + rule fun_unpackfield__case_20{exnaddr : exnaddr}: + `%%%%`(I32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), REF.EXN_ADDR_val(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_21{funcaddr : funcaddr}: + `%%%%`(BOT_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), REF.FUNC_ADDR_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_22{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.FUNC_ADDR_fieldval(funcaddr), REF.FUNC_ADDR_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_23{funcaddr : funcaddr}: + `%%%%`(V128_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), REF.FUNC_ADDR_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_24{funcaddr : funcaddr}: + `%%%%`(F64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), REF.FUNC_ADDR_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_25{funcaddr : funcaddr}: + `%%%%`(F32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), REF.FUNC_ADDR_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_26{funcaddr : funcaddr}: + `%%%%`(I64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), REF.FUNC_ADDR_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_27{funcaddr : funcaddr}: + `%%%%`(I32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), REF.FUNC_ADDR_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_28{arrayaddr : arrayaddr}: + `%%%%`(BOT_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), REF.ARRAY_ADDR_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_29{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), REF.ARRAY_ADDR_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_30{arrayaddr : arrayaddr}: + `%%%%`(V128_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), REF.ARRAY_ADDR_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_31{arrayaddr : arrayaddr}: + `%%%%`(F64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), REF.ARRAY_ADDR_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_32{arrayaddr : arrayaddr}: + `%%%%`(F32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), REF.ARRAY_ADDR_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_33{arrayaddr : arrayaddr}: + `%%%%`(I64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), REF.ARRAY_ADDR_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_34{arrayaddr : arrayaddr}: + `%%%%`(I32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), REF.ARRAY_ADDR_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_35{structaddr : structaddr}: + `%%%%`(BOT_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), REF.STRUCT_ADDR_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_36{structaddr : structaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.STRUCT_ADDR_fieldval(structaddr), REF.STRUCT_ADDR_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_37{structaddr : structaddr}: + `%%%%`(V128_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), REF.STRUCT_ADDR_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_38{structaddr : structaddr}: + `%%%%`(F64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), REF.STRUCT_ADDR_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_39{structaddr : structaddr}: + `%%%%`(F32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), REF.STRUCT_ADDR_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_40{structaddr : structaddr}: + `%%%%`(I64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), REF.STRUCT_ADDR_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_41{structaddr : structaddr}: + `%%%%`(I32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), REF.STRUCT_ADDR_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_42{u31 : u31}: + `%%%%`(BOT_storagetype, ?(), REF.I31_NUM_fieldval(u31), REF.I31_NUM_val(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_43{u31 : u31, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.I31_NUM_fieldval(u31), REF.I31_NUM_val(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_44{u31 : u31}: + `%%%%`(V128_storagetype, ?(), REF.I31_NUM_fieldval(u31), REF.I31_NUM_val(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_45{u31 : u31}: + `%%%%`(F64_storagetype, ?(), REF.I31_NUM_fieldval(u31), REF.I31_NUM_val(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_46{u31 : u31}: + `%%%%`(F32_storagetype, ?(), REF.I31_NUM_fieldval(u31), REF.I31_NUM_val(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_47{u31 : u31}: + `%%%%`(I64_storagetype, ?(), REF.I31_NUM_fieldval(u31), REF.I31_NUM_val(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_48{u31 : u31}: + `%%%%`(I32_storagetype, ?(), REF.I31_NUM_fieldval(u31), REF.I31_NUM_val(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_49{heaptype_0 : heaptype}: + `%%%%`(BOT_storagetype, ?(), REF.NULL_fieldval(heaptype_0), REF.NULL_val(heaptype_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_50{heaptype_0 : heaptype, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.NULL_fieldval(heaptype_0), REF.NULL_val(heaptype_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_51{heaptype_0 : heaptype}: + `%%%%`(V128_storagetype, ?(), REF.NULL_fieldval(heaptype_0), REF.NULL_val(heaptype_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_52{heaptype_0 : heaptype}: + `%%%%`(F64_storagetype, ?(), REF.NULL_fieldval(heaptype_0), REF.NULL_val(heaptype_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_53{heaptype_0 : heaptype}: + `%%%%`(F32_storagetype, ?(), REF.NULL_fieldval(heaptype_0), REF.NULL_val(heaptype_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_54{heaptype_0 : heaptype}: + `%%%%`(I64_storagetype, ?(), REF.NULL_fieldval(heaptype_0), REF.NULL_val(heaptype_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_55{heaptype_0 : heaptype}: + `%%%%`(I32_storagetype, ?(), REF.NULL_fieldval(heaptype_0), REF.NULL_val(heaptype_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_56{vectype : vectype, vec_ : vec_}: + `%%%%`(BOT_storagetype, ?(), VCONST_fieldval(vectype, vec_), VCONST_val(vectype, vec_)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_57{vectype : vectype, vec_ : vec_, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), VCONST_fieldval(vectype, vec_), VCONST_val(vectype, vec_)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_58{vectype : vectype, vec_ : vec_}: + `%%%%`(V128_storagetype, ?(), VCONST_fieldval(vectype, vec_), VCONST_val(vectype, vec_)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_59{vectype : vectype, vec_ : vec_}: + `%%%%`(F64_storagetype, ?(), VCONST_fieldval(vectype, vec_), VCONST_val(vectype, vec_)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_60{vectype : vectype, vec_ : vec_}: + `%%%%`(F32_storagetype, ?(), VCONST_fieldval(vectype, vec_), VCONST_val(vectype, vec_)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_61{vectype : vectype, vec_ : vec_}: + `%%%%`(I64_storagetype, ?(), VCONST_fieldval(vectype, vec_), VCONST_val(vectype, vec_)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_62{vectype : vectype, vec_ : vec_}: + `%%%%`(I32_storagetype, ?(), VCONST_fieldval(vectype, vec_), VCONST_val(vectype, vec_)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_63{numtype : numtype, num_ : num_}: + `%%%%`(BOT_storagetype, ?(), CONST_fieldval(numtype, num_), CONST_val(numtype, num_)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_64{numtype : numtype, num_ : num_, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), CONST_fieldval(numtype, num_), CONST_val(numtype, num_)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_65{numtype : numtype, num_ : num_}: + `%%%%`(V128_storagetype, ?(), CONST_fieldval(numtype, num_), CONST_val(numtype, num_)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_66{numtype : numtype, num_ : num_}: + `%%%%`(F64_storagetype, ?(), CONST_fieldval(numtype, num_), CONST_val(numtype, num_)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_67{numtype : numtype, num_ : num_}: + `%%%%`(F32_storagetype, ?(), CONST_fieldval(numtype, num_), CONST_val(numtype, num_)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_68{numtype : numtype, num_ : num_}: + `%%%%`(I64_storagetype, ?(), CONST_fieldval(numtype, num_), CONST_val(numtype, num_)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_69{numtype : numtype, num_ : num_}: + `%%%%`(I32_storagetype, ?(), CONST_fieldval(numtype, num_), CONST_val(numtype, num_)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_70{sx : sx, i : uN}: + `%%%%`(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) + rule fun_unpackfield__case_71{sx : sx, i : uN}: + `%%%%`(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -9384,87 +14570,101 @@ def $local(state : state, localidx : localidx) : val? def $local{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = f.LOCALS_frame[$proj_uN_0(x).0] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_local(state : state, localidx : localidx, val : val) : state +relation fun_with_local: `%%%%`(state, localidx, val, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + rule fun_with_local_case_0{s : store, f : frame, x : uN, v : val}: + `%%%%`(`%;%`_state(s, f), x, v, `%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_global(state : state, globalidx : globalidx, val : val) : state +relation fun_with_global: `%%%%`(state, globalidx, val, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f) + rule fun_with_global_case_0{s : store, f : frame, x : uN, v : val}: + `%%%%`(`%;%`_state(s, f), x, v, `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state +relation fun_with_table: `%%%%%`(state, tableidx, nat, ref, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f) + rule fun_with_table_case_0{s : store, f : frame, x : uN, i : nat, r : ref}: + `%%%%%`(`%;%`_state(s, f), x, i, r, `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state +relation fun_with_tableinst: `%%%%`(state, tableidx, tableinst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f) + rule fun_with_tableinst_case_0{s : store, f : frame, x : uN, ti : tableinst}: + `%%%%`(`%;%`_state(s, f), x, ti, `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state +relation fun_with_mem: `%%%%%%`(state, memidx, nat, nat, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + rule fun_with_mem_case_0{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}: + `%%%%%%`(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}, `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state +relation fun_with_meminst: `%%%%`(state, memidx, meminst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f) + rule fun_with_meminst_case_0{s : store, f : frame, x : uN, mi : meminst}: + `%%%%`(`%;%`_state(s, f), x, mi, `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_elem(state : state, elemidx : elemidx, ref*) : state +relation fun_with_elem: `%%%%`(state, elemidx, ref*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f) + rule fun_with_elem_case_0{s : store, f : frame, x : uN, `r*` : ref*}: + `%%%%`(`%;%`_state(s, f), x, r*{r <- `r*`}, `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_data(state : state, dataidx : dataidx, byte*) : state +relation fun_with_data: `%%%%`(state, dataidx, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f) + rule fun_with_data_case_0{s : store, f : frame, x : uN, `b*` : byte*}: + `%%%%`(`%;%`_state(s, f), x, b*{b <- `b*`}, `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state +relation fun_with_struct: `%%%%%`(state, structaddr, nat, fieldval, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + rule fun_with_struct_case_0{s : store, f : frame, a : nat, i : nat, fv : fieldval}: + `%%%%%`(`%;%`_state(s, f), a, i, fv, `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state +relation fun_with_array: `%%%%%`(state, arrayaddr, nat, fieldval, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + rule fun_with_array_case_0{s : store, f : frame, a : nat, i : nat, fv : fieldval}: + `%%%%%`(`%;%`_state(s, f), a, i, fv, `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_structinst(state : state, structinst*) : state +relation fun_add_structinst: `%%%`(state, structinst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + rule fun_add_structinst_case_0{s : store, f : frame, `si*` : structinst*}: + `%%%`(`%;%`_state(s, f), si*{si <- `si*`}, `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_arrayinst(state : state, arrayinst*) : state +relation fun_add_arrayinst: `%%%`(state, arrayinst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + rule fun_add_arrayinst_case_0{s : store, f : frame, `ai*` : arrayinst*}: + `%%%`(`%;%`_state(s, f), ai*{ai <- `ai*`}, `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_exninst(state : state, exninst*) : state +relation fun_add_exninst: `%%%`(state, exninst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + rule fun_add_exninst_case_0{s : store, f : frame, `exn*` : exninst*}: + `%%%`(`%;%`_state(s, f), exn*{exn <- `exn*`}, `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? +relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') + rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}: + `%%%%`(tableinst, n, r, ?(tableinst')) -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) @@ -9472,12 +14672,16 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} - def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_1{x0 : tableinst, x1 : nat, x2 : ref}: + `%%%%`(x0, x1, x2, ?()) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $growmem(meminst : meminst, nat : nat) : meminst? +relation fun_growmem: `%%%`(meminst, nat, meminst?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') + rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}: + `%%%`(meminst, n, ?(meminst')) -- wf_meminst: `%`(meminst') -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) @@ -9485,7 +14689,10 @@ def $growmem(meminst : meminst, nat : nat) : meminst? -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} - def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_1{x0 : meminst, x1 : nat}: + `%%%`(x0, x1, ?()) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) @@ -9526,29 +14733,26 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 rule struct{s : store, a : addr, dt : deftype}: - `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- wf_store: `%`(s) -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) - -- if (a < |s.STRUCTS_store|) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 rule array{s : store, a : addr, dt : deftype}: - `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- wf_store: `%`(s) -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) - -- if (a < |s.ARRAYS_store|) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 rule func{s : store, a : addr, dt : deftype}: - `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- wf_store: `%`(s) -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) - -- if (a < |s.FUNCS_store|) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 @@ -9558,7 +14762,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_exninst: `%`(exn) -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) - -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 @@ -9575,7 +14778,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_ref: `%`(REF.EXTERN_ref(addrref)) -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) - -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) + -- Ref_ok: `%|-%:%`(s, $ref_addrref(addrref), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: @@ -9593,21 +14796,21 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: - `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) + `%|-%:%`(s, $val_num(num), $valtype_numtype(nt)) -- wf_store: `%`(s) -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: - `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) + `%|-%:%`(s, $val_vec(vec), $valtype_vectype(vt)) -- wf_store: `%`(s) -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: - `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) + `%|-%:%`(s, $val_ref(ref), $valtype_reftype(rt)) -- wf_store: `%`(s) -- wf_ref: `%`(ref) -- wf_reftype: `%`(rt) @@ -9623,7 +14826,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) - -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 @@ -9631,7 +14833,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 @@ -9639,7 +14840,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- wf_store: `%`(s) -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) - -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 @@ -9647,15 +14847,13 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) - -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 rule func{s : store, a : addr, funcinst : funcinst}: - `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) - -- if (a < |s.FUNCS_store|) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 @@ -9670,40 +14868,50 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) } ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype +relation fun_inst_valtype: `%%%`(moduleinst, valtype, valtype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) + rule fun_inst_valtype_case_0{moduleinst : moduleinst, t : valtype, `dt*` : deftype*, var_0 : valtype}: + `%%%`(moduleinst, t, var_0) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype +relation fun_inst_reftype: `%%%`(moduleinst, reftype, reftype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + rule fun_inst_reftype_case_0{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*, var_0 : reftype}: + `%%%`(moduleinst, rt, var_0) + -- fun_subst_all_reftype: `%%%`(rt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype +relation fun_inst_globaltype: `%%%`(moduleinst, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + rule fun_inst_globaltype_case_0{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*, var_0 : globaltype}: + `%%%`(moduleinst, gt, var_0) + -- fun_subst_all_globaltype: `%%%`(gt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype +relation fun_inst_memtype: `%%%`(moduleinst, memtype, memtype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + rule fun_inst_memtype_case_0{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*, var_0 : memtype}: + `%%%`(moduleinst, mt, var_0) + -- fun_subst_all_memtype: `%%%`(mt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype +relation fun_inst_tabletype: `%%%`(moduleinst, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + rule fun_inst_tabletype_case_0{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*, var_0 : tabletype}: + `%%%`(moduleinst, tt, var_0) + -- fun_subst_all_tabletype: `%%%`(tt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_br_on_null-addr`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) + `%`([$instr_val(val) BR_ON_NULL_instr(l)]) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- wf_instr: `%`(BR_instr(l)) @@ -9714,7 +14922,7 @@ relation `Step_pure_before_br_on_null-addr`: `%`(instr*) relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) + `%`([$instr_val(val) BR_ON_NON_NULL_instr(l)]) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_val: `%`(REF.NULL_val(ht)) @@ -9724,7 +14932,7 @@ relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) relation `Step_pure_before_ref.is_null-false`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true_0`{ref : ref, ht : heaptype}: - `%`([(ref : ref <: instr) REF.IS_NULL_instr]) + `%`([$instr_ref(ref) REF.IS_NULL_instr]) -- wf_ref: `%`(ref) -- wf_instr: `%`(REF.IS_NULL_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) @@ -9735,7 +14943,7 @@ relation `Step_pure_before_ref.is_null-false`: `%`(instr*) relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null_0`{ref : ref, ht : heaptype}: - `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) + `%`([$instr_ref(ref) REF.AS_NON_NULL_instr]) -- wf_ref: `%`(ref) -- wf_instr: `%`(REF.AS_NON_NULL_instr) -- wf_instr: `%`(TRAP_instr) @@ -9746,7 +14954,7 @@ relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) @@ -9759,17 +14967,17 @@ relation `Step_pure_before_ref.eq-true`: `%`(instr*) relation `Step_pure_before_ref.eq-false`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true_0`{ref_1 : ref, ref_2 : ref}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- ~ `Step_pure_before_ref.eq-true`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_1`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) @@ -9793,28 +15001,26 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: - `%~>%`([(val : val <: instr) DROP_instr], []) + `%~>%`([$instr_val(val) DROP_instr], []) -- wf_val: `%`(val) -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: - `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_1)]) -- wf_val: `%`(val_1) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: - `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_2)]) -- wf_val: `%`(val_1) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9823,7 +15029,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9832,31 +15037,30 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: - `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) + `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: - `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if ($proj_uN_0(l).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: - `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if ($proj_uN_0(l).0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: - `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9865,7 +15069,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(BR_IF_instr(l)) -- wf_instr: `%`(BR_instr(l)) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9873,17 +15076,15 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(BR_IF_instr(l)) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) - -- if ($proj_num__0(i) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: @@ -9891,12 +15092,11 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instr: `%`(BR_instr(l')) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: - `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [BR_instr(l)]) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- wf_instr: `%`(BR_instr(l)) @@ -9905,14 +15105,14 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: - `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [$instr_val(val)]) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- ~ `Step_pure_before_br_on_null-addr`: `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) + -- ~ `Step_pure_before_br_on_null-addr`: `%`([$instr_val(val) BR_ON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: - `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], []) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_val: `%`(REF.NULL_val(ht)) @@ -9920,58 +15120,58 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: - `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], [$instr_val(val) BR_instr(l)]) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_instr: `%`(BR_instr(l)) - -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) + -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([$instr_val(val) BR_ON_NON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: - `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: - `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: - `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: - `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: - `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: - `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: - `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: - `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + `%~>%`($instr_val(val)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) -- (wf_val: `%`(val))*{val <- `val*`} -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instr: `%`(TRAP_instr) @@ -9991,7 +15191,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.tee{val : val, x : idx}: - `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) + `%~>%`([$instr_val(val) LOCAL.TEE_instr(x)], [$instr_val(val) $instr_val(val) LOCAL.SET_instr(x)]) -- wf_val: `%`(val) -- wf_instr: `%`(LOCAL.TEE_instr(x)) -- wf_instr: `%`(LOCAL.SET_instr(x)) @@ -9999,14 +15199,13 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- if ($proj_num__0(i) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(REF.I31_instr) -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref, ht : heaptype}: - `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + `%~>%`([$instr_ref(ref) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- wf_ref: `%`(ref) -- wf_instr: `%`(REF.IS_NULL_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) @@ -10015,15 +15214,15 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: - `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + `%~>%`([$instr_ref(ref) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- wf_ref: `%`(ref) -- wf_instr: `%`(REF.IS_NULL_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.is_null-false`: `%`([(ref : ref <: instr) REF.IS_NULL_instr]) + -- ~ `Step_pure_before_ref.is_null-false`: `%`([$instr_ref(ref) REF.IS_NULL_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: - `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) + `%~>%`([$instr_ref(ref) REF.AS_NON_NULL_instr], [TRAP_instr]) -- wf_ref: `%`(ref) -- wf_instr: `%`(REF.AS_NON_NULL_instr) -- wf_instr: `%`(TRAP_instr) @@ -10032,14 +15231,14 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: - `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) + `%~>%`([$instr_ref(ref) REF.AS_NON_NULL_instr], [$instr_ref(ref)]) -- wf_ref: `%`(ref) -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) + -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([$instr_ref(ref) REF.AS_NON_NULL_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) @@ -10050,22 +15249,22 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- ~ `Step_pure_before_ref.eq-true`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.eq-false`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- ~ `Step_pure_before_ref.eq-false`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: @@ -10083,7 +15282,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array.new{val : val, n : n, x : idx}: - `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + `%~>%`([$instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], $instr_val(val)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) -- wf_val: `%`(val) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) -- wf_instr: `%`(ARRAY.NEW_instr(x)) @@ -10098,7 +15297,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{addrref : addrref}: - `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + `%~>%`([$instr_addrref(addrref) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) -- wf_instr: `%`(REF.EXTERN_instr(addrref)) @@ -10111,54 +15310,56 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{addrref : addrref}: - `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) + `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [$instr_addrref(addrref)]) -- wf_instr: `%`(REF.EXTERN_instr(addrref)) -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: + rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$unop_(nt, unop, c_1)| > 0) - -- if (c <- $unop_(nt, unop, c_1)) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: + rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(TRAP_instr) - -- if ($unop_(nt, unop, c_1) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: + rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$binop_(nt, binop, c_1, c_2)| > 0) - -- if (c <- $binop_(nt, binop, c_1, c_2)) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: + rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(TRAP_instr) - -- if ($binop_(nt, binop, c_1, c_2) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_, var_0 : u32}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- fun_testop_: `%%%%`(nt, testop, c_1, var_0) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(TESTOP_instr(nt, testop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) + -- if (!($proj_num__0(c)) = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: @@ -10167,25 +15368,25 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(RELOP_instr(nt, relop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: + rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(CONST_instr(nt_2, c)) - -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) - -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: + rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, var_0 : num_*}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(TRAP_instr) - -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: @@ -10193,7 +15394,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10203,7 +15403,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10214,7 +15413,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10224,240 +15422,253 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_uN: `%%`(128, `%`_uN(0)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: + rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vunop_(sh, vunop, c_1)| > 0) - -- if (c <- $vunop_(sh, vunop, c_1)) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: + rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(TRAP_instr) - -- if ($vunop_(sh, vunop, c_1) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: + rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) - -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: + rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(TRAP_instr) - -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: + rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) - -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: + rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(TRAP_instr) - -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_}: + rule vtestop{c_1 : vec_, sh : shape, vtestop : vtestop_, i : num_, var_0 : u32}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) + -- fun_vtestop_: `%%%%`(sh, vtestop, c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- if ($proj_num__0(i) =/= ?()) - -- if (!($proj_num__0(i)) = $vtestop_(sh, vtestop, c_1)) + -- if (!($proj_num__0(i)) = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vrelop_: `%%%%%`(sh, vrelop, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vshiftop_: `%%%%%`(sh, vshiftop, c_1, !($proj_num__0(i)), var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) - -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: + rule vbitmask{c_1 : vec_, sh : ishape, c : num_, var_0 : u32}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- fun_vbitmaskop_: `%%%`(sh, c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VBITMASK_instr(sh)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) + -- if (!($proj_num__0(c)) = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vswizzlop_: `%%%%%`(sh, swizzlop, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- fun_vshufflop_: `%%%%%`(sh, i*{i <- `i*`}, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: + rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_, var_0 : lane_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- fun_lpacknum_: `%%%`(Lnn, c_1, var_0) -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), var_0^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)) -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) - -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)|) - -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) + -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) - -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) - -- if ($proj_num__0(c_2) =/= ?()) - -- if ($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)|) - -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) + -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: + rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_, var_0 : lane_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- fun_lpacknum_: `%%%`(Lnn, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = var_0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vextunop__: `%%%%%`(sh_1, sh_2, vextunop, c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) + -- if (var_0 = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vextbinop__: `%%%%%%`(sh_1, sh_2, vextbinop, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) + -- if (var_0 = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vextternop__: `%%%%%%%`(sh_1, sh_2, vextternop, c_1, c_2, c_3, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) + -- if (var_0 = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- fun_vnarrowop__: `%%%%%%`($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vcvtop__: `%%%%%`(sh_1, sh_2, vcvtop, c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -def $blocktype_(state : state, blocktype : blocktype) : instrtype +relation fun_blocktype_: `%%%`(state, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + rule fun_blocktype__case_0{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%`(z, _IDX_blocktype(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + rule fun_blocktype__case_1{z : state, `t?` : valtype?}: + `%%%`(z, _RESULT_blocktype(t?{t <- `t?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: - `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- wf_instr: `%`(BR_instr(l)) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: - `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_throw_ref-handler-next`: `%`(config) @@ -10481,8 +15692,6 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -10492,8 +15701,6 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -10501,292 +15708,263 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) relation `Step_read_before_table.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) -- wf_instr: `%`(TABLE.GET_instr(y)) -- wf_instr: `%`(TABLE.SET_instr(x)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.init-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.fill-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- fun_memarg0: `%`(var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.init-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_ref.cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.fill-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10796,8 +15974,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10805,8 +15981,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10823,8 +15997,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10832,8 +16004,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10848,9 +16018,7 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) @@ -10871,8 +16039,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10880,8 +16046,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10891,7 +16055,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10899,8 +16062,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10917,7 +16078,6 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10925,8 +16085,6 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10938,7 +16096,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10946,8 +16103,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10966,7 +16121,6 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10974,68 +16128,68 @@ relation `Step_read_before_array.init_data-num`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- fun_blocktype_: `%%%`(z, bt, var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- fun_blocktype_: `%%%`(z, bt, var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- wf_instr: `%`(BR_instr(l)) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- wf_instr: `%`(BR_instr(l)) - -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: - `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- if (a < |$funcinst(z)|) + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11045,55 +16199,52 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) + rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*, `var_0*` : val?*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- (fun_default_: `%%`(t, var_0))*{var_0 <- `var_0*`, t <- `t*`} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- if (a < |$funcinst(z)|) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ var_0*{var_0 <- `var_0*`}, MODULE fi.MODULE_funcinst}) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ var_0*{var_0 <- `var_0*`}, MODULE fi.MODULE_funcinst}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: - `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- if (a < |$funcinst(z)|) + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) -- wf_instr: `%`(CALL_REF_instr(yy)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11104,8 +16255,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) @@ -11133,24 +16284,20 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -11175,458 +16322,423 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- fun_blocktype_: `%%%`(z, bt, var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: - `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) + `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [$instr_val(val)]) -- wf_val: `%`(val) -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global.get{z : state, x : idx, val : val}: - `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) + `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [$instr_val(val)]) -- wf_val: `%`(val) -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0] : ref <: instr)]) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: - `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) -- wf_instr: `%`(TABLE.GET_instr(y)) -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.GET_instr(y)) -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) $instr_ref($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) - -- if ($proj_num__0(i) =/= ?()) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} - -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) - -- if ($proj_num__0(i) =/= ?()) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) - -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) - -- if ($proj_num__0(i) =/= ?()) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) - -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: - `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) + -- fun_memarg0: `%`(var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- fun_memarg0: `%`(var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- fun_memarg0: `%`(var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) + -- fun_memarg0: `%`(var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) + `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr($heaptype_deftype($type(z, x)))]) -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) - -- wf_instr: `%`(REF.NULL_instr(($type(z, x) : deftype <: heaptype))) + -- wf_instr: `%`(REF.NULL_instr($heaptype_deftype($type(z, x)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)]), [$instr_ref(ref)]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) -- wf_instr: `%`(TRAP_instr) - -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: - `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*, `var_1*` : valtype*, `var_0*` : val?*}: + `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), $instr_val(val)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- (fun_unpack: `%%`(zt, var_1))*{var_1 <- `var_1*`, zt <- `zt*`} + -- (fun_default_: `%%`(var_1, var_0))*{var_1 <- `var_1*`, var_0 <- `var_0*`} -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) -- wf_instr: `%`(STRUCT.NEW_instr(x)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`val*`| = |`zt*`|) - -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} + -- (if (var_0 = ?(val)))*{var_0 <- `var_0*`, val <- `val*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: @@ -11635,40 +16747,38 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]) : val <: instr)]) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) - -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) - -- if (a < |$structinst(z)|) + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*, var_0 : val}: + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val(var_0)]) + -- fun_unpackfield_: `%%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0], var_0) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype, var_1 : valtype, var_0 : val?}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), $instr_val(val)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- fun_unpack: `%%`(zt, var_1) + -- fun_default_: `%%`(var_1, var_0) -- wf_val: `%`(val) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($default_($unpack(zt)) = ?(val)) + -- if (var_0 = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), $instr_ref(ref)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) -- (wf_ref: `%`(ref))*{ref <- `ref*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11678,19 +16788,18 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (if ($cunpack(zt) =/= ?()))^n{c <- `c*`} + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?, `var_1*` : lit_*, `var_0*` : instr*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), var_0^n{var_0 <- `var_0*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (fun_cunpacknum_: `%%%`(zt, c, var_1))^n{var_1 <- `var_1*`, c <- `c*`} + -- (fun_const: `%%%`(!($cunpack(zt)), var_1, var_0))^n{var_1 <- `var_1*`, var_0 <- `var_0*`} -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11704,16 +16813,12 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]) : val <: instr)]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) - -- if (a < |$arrayinst(z)|) - -- if ($proj_num__0(i) =/= ?()) + rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?, var_0 : val}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [$instr_val(var_0)]) + -- fun_unpackfield_: `%%%%`(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0], var_0) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -11727,55 +16832,51 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- if (a < |$arrayinst(z)|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(ARRAY.SET_instr(x)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11783,8 +16884,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11792,8 +16891,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11806,8 +16903,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -11827,8 +16922,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -11856,8 +16949,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11865,7 +16956,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11877,9 +16967,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) -- wf_ref: `%`(ref) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) @@ -11890,7 +16978,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11904,8 +16991,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11915,7 +17000,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11926,11 +17010,10 @@ relation Step_read: `%~>%`(config, instr*) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) - -- if ($cunpack(zt) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?, var_1 : lit_, var_0 : instr}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) var_0 ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) + -- fun_cunpacknum_: `%%%`(zt, c, var_1) + -- fun_const: `%%%`(!($cunpack(zt)), var_1, var_0) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) @@ -11966,9 +17049,9 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11993,212 +17076,216 @@ relation Step: `%~>%`(config, config) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 - rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config(var_0, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- fun_add_exninst: `%%%`(z, [exn], var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 - rule local.set{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) + rule local.set{z : state, val : val, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_val(val) LOCAL.SET_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_local: `%%%%`(z, x, val, var_0) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) LOCAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 - rule global.set{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) + rule global.set{z : state, val : val, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_val(val) GLOBAL.SET_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_global: `%%%%`(z, x, val, var_0) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) GLOBAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 - rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_table: `%%%%%`(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 - rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- if ($growtable($table(z, x), n, ref) =/= ?()) - -- if (ti = !($growtable($table(z, x), n, ref))) + rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst, var_1 : tableinst?, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- fun_growtable: `%%%%`($table(z, x), n, ref, var_1) + -- fun_with_tableinst: `%%%%`(z, x, ti, var_0) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- if (ti = !(var_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 - rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 - rule elem.drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + rule elem.drop{z : state, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_elem: `%%%%`(z, x, [], var_0) -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 - rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(var_0, [])) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 - rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(c) =/= ?()) - -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) + rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(var_0, [])) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 - rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(var_0, [])) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 - rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) - -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) - -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) + rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(var_0, [])) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) - -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) + -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 - rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- if ($growmem($mem(z, x), n) =/= ?()) - -- if (mi = !($growmem($mem(z, x), n))) + rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst, var_1 : meminst?, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- fun_growmem: `%%%`($mem(z, x), n, var_1) + -- fun_with_meminst: `%%%%`(z, x, mi, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (mi = !(var_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 - rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 - rule data.drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + rule data.drop{z : state, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_data: `%%%%`(z, x, [], var_0) -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 - rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*, `var_1*` : fieldval*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config(var_0, [REF.STRUCT_ADDR_instr(a)])) + -- (fun_packfield_: `%%%`(zt, val, var_1))^n{var_1 <- `var_1*`, val <- `val*`, zt <- `zt*`} + -- fun_add_structinst: `%%%`(z, [si], var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [REF.STRUCT_ADDR_instr(a)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS var_1^n{var_1 <- `var_1*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) - -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + -- if (si = {TYPE $type(z, x), FIELDS var_1^n{var_1 <- `var_1*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)])) + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) $instr_val(val) STRUCT.SET_instr(x, i)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 - rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) + rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*, var_1 : fieldval, var_0 : state}: + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config(var_0, [])) + -- fun_packfield_: `%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val, var_1) + -- fun_with_struct: `%%%%%`(z, a, $proj_uN_0(i).0, var_1, var_0) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 - rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype, `var_1*` : fieldval*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config(var_0, [REF.ARRAY_ADDR_instr(a)])) + -- (fun_packfield_: `%%%`(zt, val, var_1))^n{var_1 <- `var_1*`, val <- `val*`} + -- fun_add_arrayinst: `%%%`(z, [ai], var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config(var_0, [REF.ARRAY_ADDR_instr(a)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS var_1^n{var_1 <- `var_1*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS var_1^n{var_1 <- `var_1*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 - rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) + rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?, var_1 : fieldval, var_0 : state}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(var_0, [])) + -- fun_packfield_: `%%%`(zt, val, var_1) + -- fun_with_array: `%%%%%`(z, a, $proj_uN_0(!($proj_num__0(i))).0, var_1, var_0) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -12229,29 +17316,36 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) - -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`})) + -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 -def $alloctypes(type*) : deftype* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 - def $alloctypes([]) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 - def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 +relation fun_alloctypes: `%%`(type*, deftype*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_1{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN, var_2 : deftype*, var_1 : deftype*, var_0 : deftype*}: + `%%`(type'*{type' <- `type'*`} ++ [type], deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`}) + -- fun_rolldt: `%%%`(x, rectype, var_2) + -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype')*{deftype' <- `deftype'*`}, var_1) + -- fun_alloctypes: `%%`(type'*{type' <- `type'*`}, var_0) -- wf_uN: `%%`(32, x) - -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) + -- if (deftype'*{deftype' <- `deftype'*`} = var_0) -- if (type = TYPE_type(rectype)) - -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) + -- if (deftype*{deftype <- `deftype*`} = var_1) -- if ($proj_uN_0(x).0 = |deftype'*{deftype' <- `deftype'*`}|) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) +relation fun_alloctag: `%%%`(store, tagtype, (store, tagaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + rule fun_alloctag_case_0{s : store, tagtype : typeuse, taginst : taginst}: + `%%%`(s, tagtype, (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|)) -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) @@ -12259,22 +17353,28 @@ def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 -def $alloctags(store : store, tagtype*) : (store, tagaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 - def $alloctags{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 - def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation fun_alloctags: `%%%`(store, tagtype*, (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_1{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store, var_1 : (store, tagaddr*), var_0 : (store, tagaddr)}: + `%%%`(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}, (s_2, [ja] ++ ja'*{ja' <- `ja'*`})) + -- fun_alloctags: `%%%`(s_1, tagtype'*{tagtype' <- `tagtype'*`}, var_1) + -- fun_alloctag: `%%%`(s, tagtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ja) = $alloctag(s, tagtype)) - -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) + -- if ((s_1, ja) = var_0) + -- if ((s_2, ja'*{ja' <- `ja'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) +relation fun_allocglobal: `%%%%`(store, globaltype, val, (store, globaladdr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + rule fun_allocglobal_case_0{s : store, globaltype : globaltype, val : val, globalinst : globalinst}: + `%%%%`(s, globaltype, val, (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) @@ -12282,22 +17382,28 @@ def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, gl ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 -def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 - def $allocglobals{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 - def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation fun_allocglobals: `%%%%`(store, globaltype*, val*, (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_1{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store, var_1 : (store, globaladdr*), var_0 : (store, globaladdr)}: + `%%%%`(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}, (s_2, [ga] ++ ga'*{ga' <- `ga'*`})) + -- fun_allocglobals: `%%%%`(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, globaltype, val, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) - -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) + -- if ((s_1, ga) = var_0) + -- if ((s_2, ga'*{ga' <- `ga'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmem(store : store, memtype : memtype) : (store, memaddr) +relation fun_allocmem: `%%%`(store, memtype, (store, memaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + rule fun_allocmem_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}: + `%%%`(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) @@ -12305,22 +17411,28 @@ def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 -def $allocmems(store : store, memtype*) : (store, memaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 - def $allocmems{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 - def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation fun_allocmems: `%%%`(store, memtype*, (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_1{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store, var_1 : (store, memaddr*), var_0 : (store, memaddr)}: + `%%%`(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}, (s_2, [ma] ++ ma'*{ma' <- `ma'*`})) + -- fun_allocmems: `%%%`(s_1, memtype'*{memtype' <- `memtype'*`}, var_1) + -- fun_allocmem: `%%%`(s, memtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ma) = $allocmem(s, memtype)) - -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) + -- if ((s_1, ma) = var_0) + -- if ((s_2, ma'*{ma' <- `ma'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) +relation fun_alloctable: `%%%%`(store, tabletype, ref, (store, tableaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + rule fun_alloctable_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}: + `%%%%`(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) @@ -12328,22 +17440,28 @@ def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, table ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 -def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 - def $alloctables{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 - def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation fun_alloctables: `%%%%`(store, tabletype*, ref*, (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_1{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store, var_1 : (store, tableaddr*), var_0 : (store, tableaddr)}: + `%%%%`(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}, (s_2, [ta] ++ ta'*{ta' <- `ta'*`})) + -- fun_alloctables: `%%%%`(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}, var_1) + -- fun_alloctable: `%%%%`(s, tabletype, ref, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) - -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) + -- if ((s_1, ta) = var_0) + -- if ((s_2, ta'*{ta' <- `ta'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) +relation fun_allocfunc: `%%%%%`(store, deftype, funccode, moduleinst, (store, funcaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + rule fun_allocfunc_case_0{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}: + `%%%%%`(s, deftype, funccode, moduleinst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) @@ -12351,22 +17469,28 @@ def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 -def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 - def $allocfuncs{s : store}(s, [], [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 - def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation fun_allocfuncs: `%%%%%`(store, deftype*, funccode*, moduleinst*, (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_0{s : store}: + `%%%%%`(s, [], [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_1{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store, var_1 : (store, funcaddr*), var_0 : (store, funcaddr)}: + `%%%%%`(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}, (s_2, [fa] ++ fa'*{fa' <- `fa'*`})) + -- fun_allocfuncs: `%%%%%`(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}, var_1) + -- fun_allocfunc: `%%%%%`(s, dt, funccode, moduleinst, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) - -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) + -- if ((s_1, fa) = var_0) + -- if ((s_2, fa'*{fa' <- `fa'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) +relation fun_allocdata: `%%%%`(store, datatype, byte*, (store, dataaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + rule fun_allocdata_case_0{s : store, `byte*` : byte*, datainst : datainst}: + `%%%%`(s, OK_datatype, byte*{byte <- `byte*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) @@ -12374,22 +17498,28 @@ def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 -def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 - def $allocdatas{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 - def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation fun_allocdatas: `%%%%`(store, datatype*, byte**, (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_1{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store, var_1 : (store, dataaddr*), var_0 : (store, dataaddr)}: + `%%%%`(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}, (s_2, [da] ++ da'*{da' <- `da'*`})) + -- fun_allocdatas: `%%%%`(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}, var_1) + -- fun_allocdata: `%%%%`(s, ok, b*{b <- `b*`}, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) - -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) + -- if ((s_1, da) = var_0) + -- if ((s_2, da'*{da' <- `da'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) +relation fun_allocelem: `%%%%`(store, elemtype, ref*, (store, elemaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + rule fun_allocelem_case_0{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}: + `%%%%`(s, elemtype, ref*{ref <- `ref*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) @@ -12397,45 +17527,76 @@ def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 -def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 - def $allocelems{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 - def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation fun_allocelems: `%%%%`(store, elemtype*, ref**, (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_1{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store, var_1 : (store, elemaddr*), var_0 : (store, elemaddr)}: + `%%%%`(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}, (s_2, [ea] ++ ea'*{ea' <- `ea'*`})) + -- fun_allocelems: `%%%%`(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}, var_1) + -- fun_allocelem: `%%%%`(s, rt, ref*{ref <- `ref*`}, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) - -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) + -- if ((s_1, ea) = var_0) + -- if ((s_2, ea'*{ea' <- `ea'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexport(moduleinst : moduleinst, export : export) : exportinst +relation fun_allocexport: `%%%`(moduleinst, export, exportinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_0{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, TAG_externidx(x)), {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_1{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, GLOBAL_externidx(x)), {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_2{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, MEM_externidx(x)), {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_3{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, TABLE_externidx(x)), {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_4{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, FUNC_externidx(x)), {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexports(moduleinst : moduleinst, export*) : exportinst* +relation fun_allocexports: `%%%`(moduleinst, export*, exportinst*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + rule fun_allocexports_case_0{moduleinst : moduleinst, `export*` : export*, `var_0*` : exportinst*}: + `%%%`(moduleinst, export*{export <- `export*`}, var_0*{var_0 <- `var_0*`}) + -- (fun_allocexport: `%%%`(moduleinst, export, var_0))*{var_0 <- `var_0*`, export <- `export*`} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) +relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref**, (store, moduleinst)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_13 : exportinst*, var_12 : (store, funcaddr*), `var_11*` : elemtype*, var_10 : (store, elemaddr*), var_9 : (store, dataaddr*), `var_8*` : tabletype*, var_7 : (store, tableaddr*), `var_6*` : memtype*, var_5 : (store, memaddr*), `var_4*` : globaltype*, var_3 : (store, globaladdr*), `var_2*` : tagtype*, var_1 : (store, tagaddr*), var_0 : deftype*}: + `%%%%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, (s_7, moduleinst)) + -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`}, var_13) + -- fun_allocfuncs: `%%%%%`(s_6, dt*{dt <- `dt*`}[$proj_uN_0(x).0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{}, var_12) + -- (fun_subst_all_reftype: `%%%`(elemtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_11))*{var_11 <- `var_11*`, elemtype <- `elemtype*`} + -- fun_allocelems: `%%%%`(s_5, var_11*{var_11 <- `var_11*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, var_10) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}, var_9) + -- (fun_subst_all_tabletype: `%%%`(tabletype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_8))*{var_8 <- `var_8*`, tabletype <- `tabletype*`} + -- fun_alloctables: `%%%%`(s_3, var_8*{var_8 <- `var_8*`}, ref_T*{ref_T <- `ref_T*`}, var_7) + -- (fun_subst_all_memtype: `%%%`(memtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_6))*{var_6 <- `var_6*`, memtype <- `memtype*`} + -- fun_allocmems: `%%%`(s_2, var_6*{var_6 <- `var_6*`}, var_5) + -- (fun_subst_all_globaltype: `%%%`(globaltype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_4))*{var_4 <- `var_4*`, globaltype <- `globaltype*`} + -- fun_allocglobals: `%%%%`(s_1, var_4*{var_4 <- `var_4*`}, val_G*{val_G <- `val_G*`}, var_3) + -- (fun_subst_all_tagtype: `%%%`(tagtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_2))*{var_2 <- `var_2*`, tagtype <- `tagtype*`} + -- fun_alloctags: `%%%`(s, var_2*{var_2 <- `var_2*`}, var_1) + -- fun_alloctypes: `%%`(type*{type <- `type*`}, var_0) -- wf_store: `%`(s_7) -- wf_moduleinst: `%`(moduleinst) -- wf_store: `%`(s_1) @@ -12467,38 +17628,46 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- if (ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`})) -- if (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`})) -- if (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`})) + -- if (dt*{dt <- `dt*`} = var_0) -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) - -- if ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`})) - -- if ((s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})) - -- if ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`})) - -- if ((s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`})) - -- if ((s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`})) - -- if ((s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) - -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[$proj_uN_0(x).0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) - -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) + -- if ((s_1, aa*{aa <- `aa*`}) = var_1) + -- if ((s_2, ga*{ga <- `ga*`}) = var_3) + -- if ((s_3, ma*{ma <- `ma*`}) = var_5) + -- if ((s_4, ta*{ta <- `ta*`}) = var_7) + -- if ((s_5, da*{da <- `da*`}) = var_9) + -- if ((s_6, ea*{ea <- `ea*`}) = var_10) + -- if ((s_7, fa*{fa <- `fa*`}) = var_12) + -- if (xi*{xi <- `xi*`} = var_13) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $rundata_(dataidx : dataidx, data : data) : instr* +relation fun_rundata_: `%%%`(dataidx, data, instr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] + rule fun_rundata__case_0{x : uN, `b*` : byte*, n : nat}: + `%%%`(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode), []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] + rule fun_rundata__case_1{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}: + `%%%`(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)]) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $runelem_(elemidx : elemidx, elem : elem) : instr* +relation fun_runelem_: `%%%`(elemidx, elem, instr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] + rule fun_runelem__case_0{x : uN, rt : reftype, `e*` : expr*, n : nat}: + `%%%`(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode), []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] + rule fun_runelem__case_1{x : uN, rt : reftype, `e*` : expr*, n : nat}: + `%%%`(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode), [ELEM.DROP_instr(x)]) -- wf_instr: `%`(ELEM.DROP_instr(x)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] + rule fun_runelem__case_2{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}: + `%%%`(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)]) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) -- wf_instr: `%`(TABLE.INIT_instr(y, x)) @@ -12507,12 +17676,17 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.94 -def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.41 - def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 - def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.18 +relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.18 + rule fun_evalglobals_case_0{z : state}: + `%%%%`(z, [], [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.18 + rule fun_evalglobals_case_1{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat, var_1 : (state, val*), var_0 : (store, globaladdr)}: + `%%%%`(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}, (z', [val] ++ val'*{val' <- `val'*`})) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, gt, val, var_0) -- wf_state: `%`(z') -- wf_val: `%`(val) -- (wf_val: `%`(val'))*{val' <- `val'*`} @@ -12520,14 +17694,20 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) -- if (z = `%;%`_state(s, f)) - -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) + -- if ((s', a) = var_0) + -- if ((z', val'*{val' <- `val'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $instantiate(store : store, module : module, externaddr*) : config +relation fun_instantiate: `%%%%`(store, module, externaddr*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*, `var_4*` : instr**, `var_3*` : instr**, var_2 : (store, moduleinst), var_1 : (state, val*), var_0 : deftype*}: + `%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E], var_4))^(i_E<|elem*{elem <- `elem*`}|){var_4 <- `var_4*`, i_E <- `i_E*`} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D), data*{data <- `data*`}[i_D], var_3))^(i_D<|data*{data <- `data*`}|){var_3 <- `var_3*`, i_D <- `i_D*`} + -- fun_allocmodule: `%%%%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, var_2) + -- fun_evalglobals: `%%%%`(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}, var_1) + -- fun_alloctypes: `%%`(type*{type <- `type*`}, var_0) -- wf_state: `%`(z) -- wf_state: `%`(z') -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} @@ -12541,7 +17721,7 @@ def $instantiate(store : store, module : module, externaddr*) : config -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} -- (wf_start: `%`(START_start(x)))?{x <- `x?`} - -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} @@ -12554,21 +17734,22 @@ def $instantiate(store : store, module : module, externaddr*) : config -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) -- if (elem*{elem <- `elem*`} = ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}) -- if (start?{start <- `start?`} = START_start(x)?{x <- `x?`}) - -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- if (moduleinst_0 = {TYPES var_0, TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})) - -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [(ref_T : ref <: val)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} - -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [(ref_E : ref <: val)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} - -- if ((s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) - -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`})) - -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`})) + -- if ((z', val_G*{val_G <- `val_G*`}) = var_1) + -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [$val_ref(ref_T)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} + -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [$val_ref(ref_E)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} + -- if ((s', moduleinst) = var_2) + -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, var_3^(i_D<|data*{data <- `data*`}|){var_3 <- `var_3*`})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, var_4^(i_E<|elem*{elem <- `elem*`}|){var_4 <- `var_4*`})) -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $invoke(store : store, funcaddr : funcaddr, val*) : config +relation fun_invoke: `%%%%`(store, funcaddr, val*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) + rule fun_invoke_case_0{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%%`(s, funcaddr, val*{val <- `val*`}, `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} @@ -12606,7 +17787,8 @@ grammar BsN(N : N) : sN ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar BiN(N : N) : iN ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN} i:BsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) + prod{i : sN, var_0 : nat} i:BsN(N) => `%`_iN(var_0) + -- fun_inv_signed_: `%%%`(N, $proj_sN_0(i).0, var_0) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar BfN(N : N) : fN @@ -12646,8 +17828,9 @@ grammar Blist(syntax el, grammar BX : el) : el* ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bname : name ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*, name : name} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name - -- if ($utf8($proj_name_0(name).0) = b*{b <- `b*`}) + prod{`b*` : byte*, name : name, var_0 : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name + -- fun_utf8: `%%`($proj_name_0(name).0, var_0) + -- if (var_0 = b*{b <- `b*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Btypeidx : typeidx @@ -12775,11 +17958,11 @@ grammar Breftype : reftype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bvaltype : valtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) + prod{nt : numtype} nt:Bnumtype => $valtype_numtype(nt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) + prod{vt : vectype} vt:Bvectype => $valtype_vectype(vt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) + prod{rt : reftype} rt:Breftype => $valtype_reftype(rt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bresulttype : resulttype @@ -12803,9 +17986,9 @@ grammar Bpacktype : packtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bstoragetype : storagetype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) + prod{t : valtype} t:Bvaltype => $storagetype_valtype(t) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) + prod{pt : packtype} pt:Bpacktype => $storagetype_packtype(pt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bfieldtype : fieldtype @@ -14140,9 +19323,10 @@ grammar Bversion : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmodule : module ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) + prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*, var_0 : dataidx*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) + -- fun_dataidx_funcs: `%%`(func*{func <- `func*`}, var_0) -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} - -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) + -- if ((n?{n <- `n?`} =/= ?()) \/ (var_0 = [])) -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec @@ -14314,7 +19498,8 @@ grammar Tstringchar : char ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tstringelem : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tstringchar => $utf8([c]) + prod{c : char, var_0 : byte*} c:Tstringchar => var_0 + -- fun_utf8: `%%`([c], var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] @@ -14327,8 +19512,9 @@ grammar Tstring : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tname : name ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b*` : byte*, `c*` : char*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) - -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) + prod{`b*` : byte*, `c*` : char*, var_0 : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) + -- fun_utf8: `%%`(c*{c <- `c*`}, var_0) + -- if (b*{b <- `b*`} = var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tid : name @@ -14492,7 +19678,8 @@ grammar TiN(N : N) : iN ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN} i:TsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) + prod{i : sN, var_0 : nat} i:TsN(N) => `%`_iN(var_0) + -- fun_inv_signed_: `%%%`(N, $proj_sN_0(i).0, var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rec { @@ -14662,13 +19849,17 @@ syntax I = idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.6-155.20 +relation fun_concat_idctxt: `%%`(idctxt*, idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.6-155.20 + rule fun_concat_idctxt_case_0: + `%%`([], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 - def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt([I']) + + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.6-155.20 + rule fun_concat_idctxt_case_1{I : idctxt, I' : idctxt, var_0 : idctxt}: + `%%`([I I'], I +++ var_0) + -- fun_concat_idctxt: `%%`([I'], var_0) } ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -14830,11 +20021,11 @@ grammar Treftype_(I : I) : reftype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tvaltype_(I : I) : valtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) + prod{nt : numtype} nt:Tnumtype => $valtype_numtype(nt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) + prod{vt : vectype} vt:Tvectype => $valtype_vectype(vt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) + prod{rt : reftype} rt:Treftype_(I) => $valtype_reftype(rt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tpacktype : packtype @@ -14846,9 +20037,9 @@ grammar Tpacktype : packtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tstoragetype_(I : I) : storagetype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) + prod{t : valtype} t:Tvaltype_(I) => $storagetype_valtype(t) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) + prod{pt : packtype} pt:Tpacktype => $storagetype_packtype(pt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tfieldtype_(I : I) : fieldtype @@ -14899,7 +20090,8 @@ grammar Ttypedef_(I : I) : (subtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Trectype_(I : I) : (rectype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) + prod{`st*` : subtype*, `I'*` : I*, var_0 : idctxt} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), var_0) + -- fun_concat_idctxt: `%%`(I'*{I' <- `I'*`}, var_0) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Taddrtype : addrtype @@ -16086,8 +21278,9 @@ grammar Tlocal_(I : I) : (local*, idctxt) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec grammar Tfunc_(I : I) : (func, idctxt) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) + prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I, var_0 : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + -- fun_concat_idctxt: `%%`(I_2*{I_2 <- `I_2*`}, var_0) + -- if (I' = I +++ I_1 +++ var_0) -- Idctxt_ok: `|-%:OK`(I') ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec @@ -16238,6 +21431,39 @@ syntax decl = | START{funcidx : funcidx}(funcidx : funcidx) | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) +def $decl_data(data) : decl + def $decl_data{x0 : byte*, x1 : datamode}(DATA_data(x0, x1)) = DATA_decl(x0, x1) + +def $decl_elem(elem) : decl + def $decl_elem{x0 : reftype, x1 : expr*, x2 : elemmode}(ELEM_elem(x0, x1, x2)) = ELEM_decl(x0, x1, x2) + +def $decl_export(export) : decl + def $decl_export{x0 : name, x1 : externidx}(EXPORT_export(x0, x1)) = EXPORT_decl(x0, x1) + +def $decl_func(func) : decl + def $decl_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_decl(x0, x1, x2) + +def $decl_global(global) : decl + def $decl_global{x0 : globaltype, x1 : expr}(GLOBAL_global(x0, x1)) = GLOBAL_decl(x0, x1) + +def $decl_import(import) : decl + def $decl_import{x0 : name, x1 : name, x2 : externtype}(IMPORT_import(x0, x1, x2)) = IMPORT_decl(x0, x1, x2) + +def $decl_mem(mem) : decl + def $decl_mem{x0 : memtype}(MEMORY_mem(x0)) = MEMORY_decl(x0) + +def $decl_start(start) : decl + def $decl_start{x0 : funcidx}(START_start(x0)) = START_decl(x0) + +def $decl_table(table) : decl + def $decl_table{x0 : tabletype, x1 : expr}(TABLE_table(x0, x1)) = TABLE_decl(x0, x1) + +def $decl_tag(tag) : decl + def $decl_tag{x0 : tagtype}(TAG_tag(x0)) = TAG_decl(x0) + +def $decl_type(type) : decl + def $decl_type{x0 : rectype}(TYPE_type(x0)) = TYPE_decl(x0) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec relation wf_decl: `%`(decl) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec @@ -16312,7 +21538,7 @@ def $typesd(decl*) : type* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 def $typesd([]) = [] ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 - def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) + def $typesd{rectype : rectype, `decl'*` : decl*}([TYPE_decl(rectype)] ++ decl'*{decl' <- `decl'*`}) = [TYPE_type(rectype)] ++ $typesd(decl'*{decl' <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) } @@ -16325,7 +21551,7 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 def $importsd([]) = [] ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 - def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) + def $importsd{name : name, var_0 : name, externtype : externtype, `decl'*` : decl*}([IMPORT_decl(name, var_0, externtype)] ++ decl'*{decl' <- `decl'*`}) = [IMPORT_import(name, var_0, externtype)] ++ $importsd(decl'*{decl' <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) } @@ -16338,7 +21564,7 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 def $tagsd([]) = [] ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 - def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) + def $tagsd{tagtype : tagtype, `decl'*` : decl*}([TAG_decl(tagtype)] ++ decl'*{decl' <- `decl'*`}) = [TAG_tag(tagtype)] ++ $tagsd(decl'*{decl' <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) } @@ -16351,7 +21577,7 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 def $globalsd([]) = [] ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 - def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) + def $globalsd{globaltype : globaltype, expr : expr, `decl'*` : decl*}([GLOBAL_decl(globaltype, expr)] ++ decl'*{decl' <- `decl'*`}) = [GLOBAL_global(globaltype, expr)] ++ $globalsd(decl'*{decl' <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) } @@ -16364,7 +21590,7 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 def $memsd([]) = [] ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 - def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) + def $memsd{memtype : memtype, `decl'*` : decl*}([MEMORY_decl(memtype)] ++ decl'*{decl' <- `decl'*`}) = [MEMORY_mem(memtype)] ++ $memsd(decl'*{decl' <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) } @@ -16377,7 +21603,7 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 def $tablesd([]) = [] ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 - def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) + def $tablesd{tabletype : tabletype, expr : expr, `decl'*` : decl*}([TABLE_decl(tabletype, expr)] ++ decl'*{decl' <- `decl'*`}) = [TABLE_table(tabletype, expr)] ++ $tablesd(decl'*{decl' <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) } @@ -16390,7 +21616,7 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 def $funcsd([]) = [] ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 - def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) + def $funcsd{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*}([FUNC_decl(typeidx, local*{local <- `local*`}, expr)] ++ decl'*{decl' <- `decl'*`}) = [FUNC_func(typeidx, local*{local <- `local*`}, expr)] ++ $funcsd(decl'*{decl' <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) } @@ -16403,7 +21629,7 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 def $datasd([]) = [] ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 - def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) + def $datasd{`byte*` : byte*, datamode : datamode, `decl'*` : decl*}([DATA_decl(byte*{byte <- `byte*`}, datamode)] ++ decl'*{decl' <- `decl'*`}) = [DATA_data(byte*{byte <- `byte*`}, datamode)] ++ $datasd(decl'*{decl' <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) } @@ -16416,7 +21642,7 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 def $elemsd([]) = [] ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 - def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) + def $elemsd{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*}([ELEM_decl(reftype, expr*{expr <- `expr*`}, elemmode)] ++ decl'*{decl' <- `decl'*`}) = [ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)] ++ $elemsd(decl'*{decl' <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) } @@ -16429,7 +21655,7 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 def $startsd([]) = [] ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 - def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) + def $startsd{funcidx : funcidx, `decl'*` : decl*}([START_decl(funcidx)] ++ decl'*{decl' <- `decl'*`}) = [START_start(funcidx)] ++ $startsd(decl'*{decl' <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) } @@ -16442,49 +21668,54 @@ def $exportsd(decl*) : export* ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 def $exportsd([]) = [] ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 - def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) + def $exportsd{name : name, externidx : externidx, `decl'*` : decl*}([EXPORT_decl(name, externidx)] ++ decl'*{decl' <- `decl'*`}) = [EXPORT_export(name, externidx)] ++ $exportsd(decl'*{decl' <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) } ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $ordered(decl*) : bool +relation fun_ordered: `%%`(decl*, bool) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = true + rule fun_ordered_case_0{`decl'*` : decl*}: + `%%`(decl'*{decl' <- `decl'*`}, true) -- if ($importsd(decl'*{decl' <- `decl'*`}) = []) + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) + rule fun_ordered_case_1{name : name, var_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*}: + `%%`(decl_1*{decl_1 <- `decl_1*`} ++ [IMPORT_decl(name, var_0, externtype)] ++ decl_2*{decl_2 <- `decl_2*`}, (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = []))) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec grammar Tdecl_(I : I) : (decl, idctxt) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) + prod{`` : (type, idctxt)} ``:Ttype_(I) => ($decl_type(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) + prod{`` : (import, idctxt)} ``:Timport_(I) => ($decl_import(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) + prod{`` : (tag, idctxt)} ``:Ttag_(I) => ($decl_tag(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) + prod{`` : (global, idctxt)} ``:Tglobal_(I) => ($decl_global(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) + prod{`` : (mem, idctxt)} ``:Tmem_(I) => ($decl_mem(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) + prod{`` : (table, idctxt)} ``:Ttable_(I) => ($decl_table(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) + prod{`` : (func, idctxt)} ``:Tfunc_(I) => ($decl_func(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) + prod{`` : (data, idctxt)} ``:Tdata_(I) => ($decl_data(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) + prod{`` : (elem, idctxt)} ``:Telem_(I) => ($decl_elem(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) + prod{`` : (start, idctxt)} ``:Tstart_(I) => ($decl_start(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) + prod{`` : (export, idctxt)} ``:Texport_(I) => ($decl_export(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec grammar Tmodule : module ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- if (I' = $concat_idctxt(I*{I <- `I*`})) + prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, var_1 : bool, var_0 : idctxt} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) + -- fun_ordered: `%%`(decl*{decl <- `decl*`}, var_1) + -- fun_concat_idctxt: `%%`(I*{I <- `I*`}, var_0) + -- if (I' = var_0) -- Idctxt_ok: `|-%:OK`(I') -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) @@ -16497,7 +21728,7 @@ grammar Tmodule : module -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if $ordered(decl*{decl <- `decl*`}) + -- if var_1 ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec grammar Tdecldots_(I : I) : (decl, idctxt)* @@ -16574,7 +21805,6 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) -- wf_instr: `%`(GLOBAL.GET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 diff --git a/spectec/test-middlend/specification.exp/10-definition-to-relation.il b/spectec/test-middlend/specification.exp/10-sideconditions.il similarity index 95% rename from spectec/test-middlend/specification.exp/10-definition-to-relation.il rename to spectec/test-middlend/specification.exp/10-sideconditions.il index a12b400646..4f516b67a2 100644 --- a/spectec/test-middlend/specification.exp/10-definition-to-relation.il +++ b/spectec/test-middlend/specification.exp/10-sideconditions.il @@ -378,68 +378,6 @@ relation fun_cont: `%%`(byte, nat) `%%`(b, ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat)) -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_utf8_before_fun_utf8_case_2: `%`(char*) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_1{ch : char, b : byte}: - `%`([ch]) - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) - -- if ($proj_char_0(ch).0 < 128) - -- if (`%`_byte($proj_char_0(ch).0) = b) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_utf8_before_fun_utf8_case_3: `%`(char*) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: - `%`([ch]) - -- ~ fun_utf8_before_fun_utf8_case_2: `%`([ch]) - -- fun_cont: `%%`(b_2, var_0) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) - -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_1{ch : char, b : byte}: - `%`([ch]) - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) - -- if ($proj_char_0(ch).0 < 128) - -- if (`%`_byte($proj_char_0(ch).0) = b) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_utf8_before_fun_utf8_case_4: `%`(char*) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: - `%`([ch]) - -- ~ fun_utf8_before_fun_utf8_case_3: `%`([ch]) - -- fun_cont: `%%`(b_3, var_1) - -- fun_cont: `%%`(b_2, var_0) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) - -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * var_0)) + var_1)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: - `%`([ch]) - -- ~ fun_utf8_before_fun_utf8_case_2: `%`([ch]) - -- fun_cont: `%%`(b_2, var_0) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) - -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_1{ch : char, b : byte}: - `%`([ch]) - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) - -- if ($proj_char_0(ch).0 < 128) - -- if (`%`_byte($proj_char_0(ch).0) = b) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -448,6 +386,7 @@ relation fun_utf8: `%%`(char*, byte*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 rule fun_utf8_case_0{`ch*` : char*, `var_0*` : byte**}: `%%`(ch*{ch <- `ch*`}, $concat_(syntax byte, var_0*{var_0 <- `var_0*`})) + -- if (|`var_0*`| = |`ch*`|) -- (fun_utf8: `%%`([ch], var_0))*{var_0 <- `var_0*`, ch <- `ch*`} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 @@ -461,7 +400,6 @@ relation fun_utf8: `%%`(char*, byte*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: `%%`([ch], [b_1 b_2]) - -- ~ fun_utf8_before_fun_utf8_case_2: `%`([ch]) -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) @@ -471,7 +409,6 @@ relation fun_utf8: `%%`(char*, byte*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: `%%`([ch], [b_1 b_2 b_3]) - -- ~ fun_utf8_before_fun_utf8_case_3: `%`([ch]) -- fun_cont: `%%`(b_3, var_1) -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) @@ -483,7 +420,6 @@ relation fun_utf8: `%%`(char*, byte*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 rule fun_utf8_case_4{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, var_2 : nat, var_1 : nat, var_0 : nat}: `%%`([ch], [b_1 b_2 b_3 b_4]) - -- ~ fun_utf8_before_fun_utf8_case_4: `%`([ch]) -- fun_cont: `%%`(b_4, var_2) -- fun_cont: `%%`(b_3, var_1) -- fun_cont: `%%`(b_2, var_0) @@ -1903,20 +1839,6 @@ def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = vt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_subst_heaptype_before_fun_subst_heaptype_case_3: `%%%`(heaptype, typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_subst_heaptype_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: - `%%%`(_DEF_heaptype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_subst_heaptype_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}: - `%%%`(_IDX_heaptype(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_subst_heaptype_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*}: - `%%%`(REC_heaptype(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { @@ -1953,7 +1875,6 @@ relation fun_subst_heaptype: `%%%%`(heaptype, typevar*, typeuse*, heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 rule fun_subst_heaptype_case_3{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}: `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, ht) - -- ~ fun_subst_heaptype_before_fun_subst_heaptype_case_3: `%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) @@ -2053,6 +1974,7 @@ relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_0{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_0*` : fieldtype*}: `%%%%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- if (|`var_0*`| = |`ft*`|) -- (fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, ft <- `ft*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) @@ -2065,7 +1987,9 @@ relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_2{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : valtype*, `var_0*` : valtype*}: `%%%%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + -- if (|`var_1*`| = |`t_2*`|) -- (fun_subst_valtype: `%%%%`(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, t_2 <- `t_2*`} + -- if (|`var_0*`| = |`t_1*`|) -- (fun_subst_valtype: `%%%%`(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, t_1 <- `t_1*`} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) @@ -2075,6 +1999,7 @@ relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) rule fun_subst_subtype_case_0{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : comptype, `var_0*` : typeuse*}: `%%%%`(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) -- fun_subst_comptype: `%%%%`(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- if (|`var_0*`| = |`tu'*`|) -- (fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, tu' <- `tu'*`} -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) @@ -2084,6 +2009,7 @@ relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) rule fun_subst_rectype_case_0{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_1 : (typevar*, typeuse*), `var_0*` : subtype*}: `%%%%`(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, REC_rectype(`%`_list(var_0*{var_0 <- `var_0*`}))) -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- if (|`var_0*`| = |`st*`|) -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} @@ -2169,7 +2095,9 @@ relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_moduletype_case_0{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : externtype*, `var_0*` : externtype*}: `%%%%`(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) + -- if (|`var_1*`| = |`xt_2*`|) -- (fun_subst_externtype: `%%%%`(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, xt_2 <- `xt_2*`} + -- if (|`var_0*`| = |`xt_1*`|) -- (fun_subst_externtype: `%%%%`(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, xt_1 <- `xt_1*`} -- wf_moduletype: `%`(`%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) @@ -2293,6 +2221,7 @@ relation fun_unrolldt: `%%`(deftype, subtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_unrolldt_case_0{rectype : rectype, i : nat, `subtype*` : subtype*, var_0 : rectype}: `%%`(_DEF_deftype(rectype, i), subtype*{subtype <- `subtype*`}[i]) + -- if (i < |subtype*{subtype <- `subtype*`}|) -- fun_unrollrt: `%%`(rectype, var_0) -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} -- if (var_0 = REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) @@ -2568,6 +2497,7 @@ relation fun_free_resulttype: `%%`(resulttype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.22 rule fun_free_resulttype_case_0{`valtype*` : valtype*, `var_1*` : free*, var_0 : free}: `%%`(`%`_resulttype(valtype*{valtype <- `valtype*`}), var_0) + -- if (|`var_1*`| = |`valtype*`|) -- (fun_free_valtype: `%%`(valtype, var_1))*{var_1 <- `var_1*`, valtype <- `valtype*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -2630,6 +2560,7 @@ relation fun_free_comptype: `%%`(comptype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:493.6-493.20 rule fun_free_comptype_case_0{`fieldtype*` : fieldtype*, `var_1*` : free*, var_0 : free}: `%%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})), var_0) + -- if (|`var_1*`| = |`fieldtype*`|) -- (fun_free_fieldtype: `%%`(fieldtype, var_1))*{var_1 <- `var_1*`, fieldtype <- `fieldtype*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -2650,6 +2581,7 @@ relation fun_free_subtype: `%%`(subtype, free) rule fun_free_subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype, var_2 : free, `var_1*` : free*, var_0 : free}: `%%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype), var_0 +++ var_2) -- fun_free_comptype: `%%`(comptype, var_2) + -- if (|`var_1*`| = |`typeuse*`|) -- (fun_free_typeuse: `%%`(typeuse, var_1))*{var_1 <- `var_1*`, typeuse <- `typeuse*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -2658,6 +2590,7 @@ relation fun_free_rectype: `%%`(rectype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.6-495.19 rule fun_free_rectype_case_0{`subtype*` : subtype*, `var_1*` : free*, var_0 : free}: `%%`(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), var_0) + -- if (|`var_1*`| = |`subtype*`|) -- (fun_free_subtype: `%%`(subtype, var_1))*{var_1 <- `var_1*`, subtype <- `subtype*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -2744,8 +2677,10 @@ relation fun_free_moduletype: `%%`(moduletype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_free_moduletype_case_0{`externtype_1*` : externtype*, `externtype_2*` : externtype*, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: `%%`(`%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`}), var_0 +++ var_2) + -- if (|`var_3*`| = |`externtype_2*`|) -- (fun_free_externtype: `%%`(externtype_2, var_3))*{var_3 <- `var_3*`, externtype_2 <- `externtype_2*`} -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- if (|`var_1*`| = |`externtype_1*`|) -- (fun_free_externtype: `%%`(externtype_1, var_1))*{var_1 <- `var_1*`, externtype_1 <- `externtype_1*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -5075,6 +5010,7 @@ relation fun_free_blocktype: `%%`(blocktype, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule fun_free_blocktype_case_0{`valtype?` : valtype?, `var_1?` : free?, var_0 : free}: `%%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`}), var_0) + -- if ((`var_1?` = ?()) <=> (`valtype?` = ?())) -- (fun_free_valtype: `%%`(valtype, var_1))?{var_1 <- `var_1?`, valtype <- `valtype?`} -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) @@ -5127,7 +5063,10 @@ relation fun_free_instr: `%%`(instr, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 rule fun_free_instr_case_3{`valtype*?` : valtype*?, `var_2*?` : free*?, `var_1?` : free?, var_0 : free}: `%%`(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`}), var_0) + -- if ((`var_2*?` = ?()) <=> (`valtype*?` = ?())) + -- (if (|`var_2*`| = |`valtype*`|))?{`var_2*` <- `var_2*?`, `valtype*` <- `valtype*?`} -- (fun_free_valtype: `%%`(valtype, var_2))*{var_2 <- `var_2*`, valtype <- `valtype*`}?{`var_2*` <- `var_2*?`, `valtype*` <- `valtype*?`} + -- if ((`var_2*?` = ?()) <=> (`var_1?` = ?())) -- (fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1))?{`var_2*` <- `var_2*?`, var_1 <- `var_1?`} -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) @@ -5164,6 +5103,7 @@ relation fun_free_instr: `%%`(instr, free) rule fun_free_instr_case_9{`labelidx*` : labelidx*, labelidx' : uN, var_2 : free, `var_1*` : free*, var_0 : free}: `%%`(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx'), var_0 +++ var_2) -- fun_free_labelidx: `%%`(labelidx', var_2) + -- if (|`var_1*`| = |`labelidx*`|) -- (fun_free_labelidx: `%%`(labelidx, var_1))*{var_1 <- `var_1*`, labelidx <- `labelidx*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -5654,6 +5594,7 @@ relation fun_free_block: `%%`(instr*, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.6-418.17 rule fun_free_block_case_0{`instr*` : instr*, free : free, `var_2*` : free*, var_1 : free, var_0 : labelidx*}: `%%`(instr*{instr <- `instr*`}, free[LABELS_free = var_0]) + -- if (|`var_2*`| = |`instr*`|) -- (fun_free_instr: `%%`(instr, var_2))*{var_2 <- `var_2*`, instr <- `instr*`} -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) -- fun_shift_labelidxs: `%%`(free.LABELS_free, var_0) @@ -5666,6 +5607,7 @@ relation fun_free_expr: `%%`(expr, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule fun_free_expr_case_0{`instr*` : instr*, `var_1*` : free*, var_0 : free}: `%%`(instr*{instr <- `instr*`}, var_0) + -- if (|`var_1*`| = |`instr*`|) -- (fun_free_instr: `%%`(instr, var_1))*{var_1 <- `var_1*`, instr <- `instr*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -5913,6 +5855,7 @@ relation fun_free_func: `%%`(func, free) rule fun_free_func_case_0{typeidx : uN, `local*` : local*, expr : instr*, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: `%%`(FUNC_func(typeidx, local*{local <- `local*`}, expr), var_0 +++ var_1 +++ var_3[LOCALS_free = []]) -- fun_free_block: `%%`(expr, var_3) + -- if (|`var_2*`| = |`local*`|) -- (fun_free_local: `%%`(local, var_2))*{var_2 <- `var_2*`, local <- `local*`} -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) -- fun_free_typeidx: `%%`(typeidx, var_0) @@ -5961,6 +5904,7 @@ relation fun_free_elem: `%%`(elem, free) rule fun_free_elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: `%%`(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode), var_0 +++ var_1 +++ var_3) -- fun_free_elemmode: `%%`(elemmode, var_3) + -- if (|`var_2*`| = |`expr*`|) -- (fun_free_expr: `%%`(expr, var_2))*{var_2 <- `var_2*`, expr <- `expr*`} -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) -- fun_free_reftype: `%%`(reftype, var_0) @@ -5991,26 +5935,37 @@ relation fun_free_module: `%%`(module, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec rule fun_free_module_case_0{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `var_21*` : free*, var_20 : free, `var_19*` : free*, var_18 : free, `var_17?` : free?, var_16 : free, `var_15*` : free*, var_14 : free, `var_13*` : free*, var_12 : free, `var_11*` : free*, var_10 : free, `var_9*` : free*, var_8 : free, `var_7*` : free*, var_6 : free, `var_5*` : free*, var_4 : free, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: `%%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_0 +++ var_2 +++ var_4 +++ var_6 +++ var_8 +++ var_10 +++ var_12 +++ var_14 +++ var_16 +++ var_18 +++ var_20) + -- if (|`var_21*`| = |`export*`|) -- (fun_free_export: `%%`(export, var_21))*{var_21 <- `var_21*`, export <- `export*`} -- fun_free_list: `%%`(var_21*{var_21 <- `var_21*`}, var_20) + -- if (|`var_19*`| = |`import*`|) -- (fun_free_import: `%%`(import, var_19))*{var_19 <- `var_19*`, import <- `import*`} -- fun_free_list: `%%`(var_19*{var_19 <- `var_19*`}, var_18) + -- if ((`var_17?` = ?()) <=> (`start?` = ?())) -- (fun_free_start: `%%`(start, var_17))?{var_17 <- `var_17?`, start <- `start?`} -- fun_free_opt: `%%`(var_17?{var_17 <- `var_17?`}, var_16) + -- if (|`var_15*`| = |`elem*`|) -- (fun_free_elem: `%%`(elem, var_15))*{var_15 <- `var_15*`, elem <- `elem*`} -- fun_free_list: `%%`(var_15*{var_15 <- `var_15*`}, var_14) + -- if (|`var_13*`| = |`data*`|) -- (fun_free_data: `%%`(data, var_13))*{var_13 <- `var_13*`, data <- `data*`} -- fun_free_list: `%%`(var_13*{var_13 <- `var_13*`}, var_12) + -- if (|`var_11*`| = |`func*`|) -- (fun_free_func: `%%`(func, var_11))*{var_11 <- `var_11*`, func <- `func*`} -- fun_free_list: `%%`(var_11*{var_11 <- `var_11*`}, var_10) + -- if (|`var_9*`| = |`table*`|) -- (fun_free_table: `%%`(table, var_9))*{var_9 <- `var_9*`, table <- `table*`} -- fun_free_list: `%%`(var_9*{var_9 <- `var_9*`}, var_8) + -- if (|`var_7*`| = |`mem*`|) -- (fun_free_mem: `%%`(mem, var_7))*{var_7 <- `var_7*`, mem <- `mem*`} -- fun_free_list: `%%`(var_7*{var_7 <- `var_7*`}, var_6) + -- if (|`var_5*`| = |`global*`|) -- (fun_free_global: `%%`(global, var_5))*{var_5 <- `var_5*`, global <- `global*`} -- fun_free_list: `%%`(var_5*{var_5 <- `var_5*`}, var_4) + -- if (|`var_3*`| = |`tag*`|) -- (fun_free_tag: `%%`(tag, var_3))*{var_3 <- `var_3*`, tag <- `tag*`} -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- if (|`var_1*`| = |`type*`|) -- (fun_free_type: `%%`(type, var_1))*{var_1 <- `var_1*`, type <- `type*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -6026,6 +5981,7 @@ relation fun_dataidx_funcs: `%%`(func*, dataidx*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec rule fun_dataidx_funcs_case_0{`func*` : func*, `var_1*` : free*, var_0 : free}: `%%`(func*{func <- `func*`}, var_0.DATAS_free) + -- if (|`var_1*`| = |`func*`|) -- (fun_free_func: `%%`(func, var_1))*{var_1 <- `var_1*`, func <- `func*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -6253,11 +6209,13 @@ relation fun_unrollht: `%%%`(context, heaptype, subtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule fun_unrollht_case_1{C : context, typeidx : uN, var_0 : subtype}: `%%%`(C, _IDX_heaptype(typeidx), var_0) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(typeidx).0], var_0) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule fun_unrollht_case_2{C : context, i : nat}: `%%%`(C, REC_heaptype(i), C.RECS_context[i]) + -- if (i < |C.RECS_context|) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -6399,6 +6357,8 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*, `var_0*` : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- if (|`var_0*`| = |`x*`|) + -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} -- (fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(x).0], var_0))*{var_0 <- `var_0*`, x <- `x*`} -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) @@ -6407,8 +6367,8 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} - -- if (|`comptype'*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} + -- if (|`var_0*`| = |`comptype'*`|) + -- if (|`var_0*`| = |`x'**`|) -- (if (var_0 = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `x'*` <- `x'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -6446,6 +6406,7 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype, `var_0*` : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- if (|`var_0*`| = |`typeuse*`|) -- (fun_unrollht: `%%%`(C, $heaptype_typeuse(typeuse), var_0))*{var_0 <- `var_0*`, typeuse <- `typeuse*`} -- wf_context: `%`(C) -- wf_comptype: `%`(comptype) @@ -6455,7 +6416,8 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} - -- if (|`comptype'*`| = |`typeuse*`|) + -- if (|`var_0*`| = |`comptype'*`|) + -- if (|`var_0*`| = |`typeuse'**`|) -- (if (var_0 = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -7506,6 +7468,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*, `var_0*` : valtype*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- if (|`var_0*`| = |`zt*`|) -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT.NEW_instr(x)) @@ -7517,6 +7480,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*, `var_0*` : valtype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- if (|`var_0*`| = |`zt*`|) -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) @@ -8885,13 +8849,6 @@ def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_signed__before_fun_signed__case_1: `%%`(N, nat) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_signed__case_0{N : nat, i : nat}: - `%%`(N, i) - -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_signed_: `%%%`(N, nat, int) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8902,16 +8859,8 @@ relation fun_signed_: `%%%`(N, nat, int) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_signed__case_1{N : nat, i : nat}: `%%%`(N, i, ((i : nat <:> int) - ((2 ^ N) : nat <:> int))) - -- ~ fun_signed__before_fun_signed__case_1: `%%`(N, i) -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_inv_signed__before_fun_inv_signed__case_1: `%%`(N, int) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_inv_signed__case_0{N : nat, i : int}: - `%%`(N, i) - -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_inv_signed_: `%%%`(N, int, nat) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8922,7 +8871,6 @@ relation fun_inv_signed_: `%%%`(N, int, nat) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_inv_signed__case_1{N : nat, i : int}: `%%%`(N, i, ((i + ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- ~ fun_inv_signed__before_fun_inv_signed__case_1: `%%`(N, i) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -9052,32 +9000,6 @@ def $imul_(N : N, iN : iN, iN : iN) : iN def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_idiv__before_fun_idiv__case_1: `%%%%`(N, sx, iN, iN) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_idiv__case_0{N : nat, i_1 : uN}: - `%%%%`(N, U_sx, i_1, `%`_iN(0)) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_idiv__before_fun_idiv__case_3: `%%%%`(N, sx, iN, iN) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_idiv__case_2{N : nat, i_1 : uN}: - `%%%%`(N, S_sx, i_1, `%`_iN(0)) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_idiv__before_fun_idiv__case_4: `%%%%`(N, sx, iN, iN) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_idiv__case_3{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: - `%%%%`(N, S_sx, i_1, i_2) - -- ~ fun_idiv__before_fun_idiv__case_3: `%%%%`(N, S_sx, i_1, i_2) - -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) - -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) - -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_idiv__case_2{N : nat, i_1 : uN}: - `%%%%`(N, S_sx, i_1, `%`_iN(0)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -9087,7 +9009,6 @@ relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_idiv__case_1{N : nat, i_1 : uN, i_2 : uN}: `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)))) - -- ~ fun_idiv__before_fun_idiv__case_1: `%%%%`(N, U_sx, i_1, i_2) -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -9097,7 +9018,6 @@ relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_idiv__case_3{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: `%%%%%`(N, S_sx, i_1, i_2, ?()) - -- ~ fun_idiv__before_fun_idiv__case_3: `%%%%`(N, S_sx, i_1, i_2) -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) @@ -9105,24 +9025,11 @@ relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_idiv__case_4{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) - -- ~ fun_idiv__before_fun_idiv__case_4: `%%%%`(N, S_sx, i_1, i_2) -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) -- fun_inv_signed_: `%%%`(N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) -- wf_uN: `%%`(N, `%`_uN(var_0)) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_irem__before_fun_irem__case_1: `%%%%`(N, sx, iN, iN) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_irem__case_0{N : nat, i_1 : uN}: - `%%%%`(N, U_sx, i_1, `%`_iN(0)) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_irem__before_fun_irem__case_3: `%%%%`(N, sx, iN, iN) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_irem__case_2{N : nat, i_1 : uN}: - `%%%%`(N, S_sx, i_1, `%`_iN(0)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -9132,7 +9039,6 @@ relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_irem__case_1{N : nat, i_1 : uN, i_2 : uN}: `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))) - -- ~ fun_irem__before_fun_irem__case_1: `%%%%`(N, U_sx, i_1, i_2) -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -9142,7 +9048,6 @@ relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_irem__case_3{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) - -- ~ fun_irem__before_fun_irem__case_3: `%%%%`(N, S_sx, i_1, i_2) -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) -- fun_inv_signed_: `%%%`(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) @@ -9538,11 +9443,13 @@ relation fun_cunpacknum_: `%%%`(storagetype, lit_, lit_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_cunpacknum__case_5{c : uN}: `%%%`(I8_storagetype, mk_lit__2_lit_(I8_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I8_packtype)) =/= ?()) -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_cunpacknum__case_6{c : uN}: `%%%`(I16_storagetype, mk_lit__2_lit_(I16_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I16_packtype)) =/= ?()) -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -10972,6 +10879,7 @@ relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) `%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) @@ -10982,6 +10890,7 @@ relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) `%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) @@ -10992,6 +10901,7 @@ relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) `%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) @@ -11002,6 +10912,7 @@ relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) `%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) @@ -11057,6 +10968,7 @@ relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- (if ($proj_uN_0(i).0 < |c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}|))*{i <- `i*`} -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -11068,6 +10980,7 @@ relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- (if ($proj_uN_0(i).0 < |c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}|))*{i <- `i*`} -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -11079,6 +10992,7 @@ relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- (if ($proj_uN_0(i).0 < |c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}|))*{i <- `i*`} -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -11090,6 +11004,7 @@ relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- (if ($proj_uN_0(i).0 < |c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}|))*{i <- `i*`} -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -11794,550 +11709,126 @@ relation fun_vrelop_: `%%%%%`(shape, vrelop_, vec_, vec_, vec_) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_25: `%%%%`(shape, shape, vcvtop__, lane_) +relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_26: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_25: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_27: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_26: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_25: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_29: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_30: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_29: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_31: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_30: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_29: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_33: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_34: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_33: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_35: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_34: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_33: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_37: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_38: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_37: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_39: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_38: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_37: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_41: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_42: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_41: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_43: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_42: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_41: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_45: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_46: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_45: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_47: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_46: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_45: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_49: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_50: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_49: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_51: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_50: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_49: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_53: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_54: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_53: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_55: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_54: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_53: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_57: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_56{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_59: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_58{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_61: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_60{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_63: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_62{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_65: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_64{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_67: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_66{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_69: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_68{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_71: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_70{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: - `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: - `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: - `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: - `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: @@ -12372,21 +11863,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_25: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_26: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_27: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) @@ -12399,21 +11887,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_29: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_30: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_31: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) @@ -12426,21 +11911,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_33: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_34: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_35: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) @@ -12453,21 +11935,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_37: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_38: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_39: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) @@ -12480,21 +11959,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_41: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_42: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_43{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_43: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) @@ -12507,21 +11983,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_45: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_46: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_47{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_47: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) @@ -12534,21 +12007,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_49: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_50: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_51{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_51: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) @@ -12561,21 +12031,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_53: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_54: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_55{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_55: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) @@ -12588,7 +12055,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_57{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_57: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) @@ -12601,7 +12067,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_59{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_59: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) @@ -12614,7 +12079,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_61{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_61: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) @@ -12627,7 +12091,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_63{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_63: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) @@ -12640,7 +12103,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_65{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_65: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) @@ -12653,7 +12115,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_67{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_67: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) @@ -12666,7 +12127,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_69{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_69: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) @@ -12679,67 +12139,15 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_71{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_71: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_vcvtop___before_fun_vcvtop___case_1: `%%%%`(shape, shape, vcvtop__, vec_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: - `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1, var_2))*{var_2 <- `var_2*`, c_1 <- `c_1*`} - -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) - -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) - -- if ((var_0 = ?()) /\ (var_1 = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_vcvtop___before_fun_vcvtop___case_2: `%%%%`(shape, shape, vcvtop__, vec_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**, `var_1*` : lane_**, var_0 : half?}: - `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) - -- ~ fun_vcvtop___before_fun_vcvtop___case_1: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- `var_1*`, c_1 <- `c_1*`} - -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) - -- if (var_0 = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: - `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1, var_2))*{var_2 <- `var_2*`, c_1 <- `c_1*`} - -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) - -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) - -- if ((var_0 = ?()) /\ (var_1 = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1, v) + -- if (|`var_2*`| = |`c_1*`|) -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1, var_2))*{var_2 <- `var_2*`, c_1 <- `c_1*`} -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) @@ -12751,12 +12159,13 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if ((var_0 = ?()) /\ (var_1 = ?())) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`})) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**, `var_1*` : lane_**, var_0 : half?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) - -- ~ fun_vcvtop___before_fun_vcvtop___case_1: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) + -- if (|`var_1*`| = |`c_1*`|) -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- `var_1*`, c_1 <- `c_1*`} -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) @@ -12767,13 +12176,14 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (var_0 = ?(half)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`})) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, var_2 : lane_, `var_1*` : lane_**, var_0 : zero?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) - -- ~ fun_vcvtop___before_fun_vcvtop___case_2: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) -- fun_zero: `%%`(Lnn_2, var_2) + -- if (|`var_1*`| = |`c_1*`|) -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- `var_1*`, c_1 <- `c_1*`} -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) @@ -12784,6 +12194,7 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (var_0 = ?(ZERO_zero)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`} ++ [var_2]^M_1{})) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -12888,7 +12299,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -12904,7 +12317,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -12920,7 +12335,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -12936,7 +12353,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -12952,7 +12371,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -12968,7 +12389,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -12984,7 +12407,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13000,7 +12425,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13016,7 +12443,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13032,7 +12461,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13048,7 +12479,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13064,7 +12497,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13080,7 +12515,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13096,7 +12533,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13112,7 +12551,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13128,7 +12569,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -14057,6 +13500,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14079,6 +13523,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14101,6 +13546,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14123,6 +13569,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14145,6 +13592,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14167,6 +13615,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14189,6 +13638,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14211,6 +13661,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14233,6 +13684,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14255,6 +13707,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14277,6 +13730,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14299,6 +13753,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14321,6 +13776,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14343,6 +13799,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14365,6 +13822,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14387,6 +13845,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15354,6 +14813,7 @@ relation fun_with_global: `%%%%`(state, globalidx, val, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_global_case_0{s : store, f : frame, x : uN, v : val}: `%%%%`(`%;%`_state(s, f), x, v, `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.GLOBALS_moduleinst|) -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15361,6 +14821,7 @@ relation fun_with_table: `%%%%%`(state, tableidx, nat, ref, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_table_case_0{s : store, f : frame, x : uN, i : nat, r : ref}: `%%%%%`(`%;%`_state(s, f), x, i, r, `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.TABLES_moduleinst|) -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15368,6 +14829,7 @@ relation fun_with_tableinst: `%%%%`(state, tableidx, tableinst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_tableinst_case_0{s : store, f : frame, x : uN, ti : tableinst}: `%%%%`(`%;%`_state(s, f), x, ti, `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.TABLES_moduleinst|) -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15375,6 +14837,7 @@ relation fun_with_mem: `%%%%%%`(state, memidx, nat, nat, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_mem_case_0{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}: `%%%%%%`(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}, `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.MEMS_moduleinst|) -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15382,6 +14845,7 @@ relation fun_with_meminst: `%%%%`(state, memidx, meminst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_meminst_case_0{s : store, f : frame, x : uN, mi : meminst}: `%%%%`(`%;%`_state(s, f), x, mi, `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.MEMS_moduleinst|) -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15389,6 +14853,7 @@ relation fun_with_elem: `%%%%`(state, elemidx, ref*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_elem_case_0{s : store, f : frame, x : uN, `r*` : ref*}: `%%%%`(`%;%`_state(s, f), x, r*{r <- `r*`}, `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.ELEMS_moduleinst|) -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15396,6 +14861,7 @@ relation fun_with_data: `%%%%`(state, dataidx, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_data_case_0{s : store, f : frame, x : uN, `b*` : byte*}: `%%%%`(`%;%`_state(s, f), x, b*{b <- `b*`}, `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.DATAS_moduleinst|) -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15433,19 +14899,6 @@ relation fun_add_exninst: `%%%`(state, exninst*, state) `%%%`(`%;%`_state(s, f), exn*{exn <- `exn*`}, `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation fun_growtable_before_fun_growtable_case_1: `%%%`(tableinst, nat, ref) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}: - `%%%`(tableinst, n, r) - -- wf_tableinst: `%`(tableinst') - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) - -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) - -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) - -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) - -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15462,20 +14915,6 @@ relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_growtable_case_1{x0 : tableinst, x1 : nat, x2 : ref}: `%%%%`(x0, x1, x2, ?()) - -- ~ fun_growtable_before_fun_growtable_case_1: `%%%`(x0, x1, x2) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation fun_growmem_before_fun_growmem_case_1: `%%`(meminst, nat) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}: - `%%`(meminst, n) - -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) - -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec relation fun_growmem: `%%%`(meminst, nat, meminst?) @@ -15493,7 +14932,6 @@ relation fun_growmem: `%%%`(meminst, nat, meminst?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_growmem_case_1{x0 : meminst, x1 : nat}: `%%%`(x0, x1, ?()) - -- ~ fun_growmem_before_fun_growmem_case_1: `%%`(x0, x1) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) @@ -16338,12 +15776,12 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- if ($proj_num__0(i) =/= ?()) -- fun_vshiftop_: `%%%%%`(sh, vshiftop, c_1, !($proj_num__0(i)), var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -17103,6 +16541,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*, `var_0*` : val?*}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- if (|`var_0*`| = |`t*`|) -- (fun_default_: `%%`(t, var_0))*{var_0 <- `var_0*`, t <- `t*`} -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) @@ -17448,7 +16887,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} - -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx, var_0 : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) - -- fun_memarg0: `%`(var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_memarg0: `%`(var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) @@ -17568,9 +17007,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- fun_memarg0: `%`(var_0) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- fun_memarg0: `%`(var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -17586,9 +17025,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- fun_memarg0: `%`(var_0) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- fun_memarg0: `%`(var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -17619,10 +17058,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx, var_0 : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) - -- fun_memarg0: `%`(var_0) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) + -- fun_memarg0: `%`(var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) @@ -17684,14 +17123,16 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*, `var_1*` : valtype*, `var_0*` : val?*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), $instr_val(val)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- if (|`var_1*`| = |`zt*`|) -- (fun_unpack: `%%`(zt, var_1))*{var_1 <- `var_1*`, zt <- `zt*`} + -- if (|`var_1*`| = |`var_0*`|) -- (fun_default_: `%%`(var_1, var_0))*{var_1 <- `var_1*`, var_0 <- `var_0*`} -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) -- wf_instr: `%`(STRUCT.NEW_instr(x)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`val*`| = |`zt*`|) + -- if (|`var_0*`| = |`val*`|) -- (if (var_0 = ?(val)))*{var_0 <- `var_0*`, val <- `val*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -17703,10 +17144,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*, var_0 : val}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val(var_0)]) - -- fun_unpackfield_: `%%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0], var_0) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) -- if (a < |$structinst(z)|) + -- fun_unpackfield_: `%%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0], var_0) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -17754,8 +17195,8 @@ relation Step_read: `%~>%`(config, instr*) rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?, `var_1*` : lit_*, `var_0*` : instr*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), var_0^n{var_0 <- `var_0*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) -- (fun_cunpacknum_: `%%%`(zt, c, var_1))^n{var_1 <- `var_1*`, c <- `c*`} + -- (if ($cunpack(zt) =/= ?()))^n{var_1 <- `var_1*`} -- (fun_const: `%%%`(!($cunpack(zt)), var_1, var_0))^n{var_1 <- `var_1*`, var_0 <- `var_0*`} - -- (if ($cunpack(zt) =/= ?()))^n{} -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) @@ -17782,10 +17223,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?, var_0 : val}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [$instr_val(var_0)]) - -- fun_unpackfield_: `%%%%`(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0], var_0) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) + -- fun_unpackfield_: `%%%%`(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0], var_0) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -18000,11 +17441,11 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?, var_1 : lit_, var_0 : instr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) var_0 ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) - -- fun_cunpacknum_: `%%%`(zt, c, var_1) - -- fun_const: `%%%`(!($cunpack(zt)), var_1, var_0) - -- if ($cunpack(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) + -- fun_cunpacknum_: `%%%`(zt, c, var_1) + -- if ($cunpack(zt) =/= ?()) + -- fun_const: `%%%`(!($cunpack(zt)), var_1, var_0) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) @@ -18104,8 +17545,8 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx, var_0 : state}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config(var_0, [])) - -- fun_with_table: `%%%%%`(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_table: `%%%%%`(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref, var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) -- wf_config: `%`(`%;%`_config(var_0, [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) @@ -18145,8 +17586,8 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(var_0, [])) - -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(`%;%`_config(var_0, [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) @@ -18162,8 +17603,8 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(var_0, [])) - -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) -- wf_config: `%`(`%;%`_config(var_0, [])) -- if ($proj_num__0(c) =/= ?()) @@ -18180,8 +17621,8 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(var_0, [])) - -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(`%;%`_config(var_0, [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) @@ -18197,8 +17638,8 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M, var_0 : state}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(var_0, [])) - -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_config: `%`(`%;%`_config(var_0, [])) -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) @@ -18254,9 +17695,9 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*, var_1 : fieldval, var_0 : state}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config(var_0, [])) + -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- fun_packfield_: `%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val, var_1) -- fun_with_struct: `%%%%%`(z, a, $proj_uN_0(i).0, var_1, var_0) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)])) -- wf_config: `%`(`%;%`_config(var_0, [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -18293,8 +17734,8 @@ relation Step: `%~>%`(config, config) rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?, var_1 : fieldval, var_0 : state}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(var_0, [])) -- fun_packfield_: `%%%`(zt, val, var_1) - -- fun_with_array: `%%%%%`(z, a, $proj_uN_0(!($proj_num__0(i))).0, var_1, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_array: `%%%%%`(z, a, $proj_uN_0(!($proj_num__0(i))).0, var_1, var_0) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) -- wf_config: `%`(`%;%`_config(var_0, [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -18560,26 +18001,31 @@ relation fun_allocexport: `%%%`(moduleinst, export, exportinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexport_case_0{moduleinst : moduleinst, name : name, x : uN}: `%%%`(moduleinst, EXPORT_export(name, TAG_externidx(x)), {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.TAGS_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexport_case_1{moduleinst : moduleinst, name : name, x : uN}: `%%%`(moduleinst, EXPORT_export(name, GLOBAL_externidx(x)), {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.GLOBALS_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexport_case_2{moduleinst : moduleinst, name : name, x : uN}: `%%%`(moduleinst, EXPORT_export(name, MEM_externidx(x)), {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.MEMS_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexport_case_3{moduleinst : moduleinst, name : name, x : uN}: `%%%`(moduleinst, EXPORT_export(name, TABLE_externidx(x)), {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.TABLES_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexport_case_4{moduleinst : moduleinst, name : name, x : uN}: `%%%`(moduleinst, EXPORT_export(name, FUNC_externidx(x)), {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.FUNCS_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18587,6 +18033,7 @@ relation fun_allocexports: `%%%`(moduleinst, export*, exportinst*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexports_case_0{moduleinst : moduleinst, `export*` : export*, `var_0*` : exportinst*}: `%%%`(moduleinst, export*{export <- `export*`}, var_0*{var_0 <- `var_0*`}) + -- if (|`var_0*`| = |`export*`|) -- (fun_allocexport: `%%%`(moduleinst, export, var_0))*{var_0 <- `var_0*`, export <- `export*`} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18595,16 +18042,22 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_13 : exportinst*, var_12 : (store, funcaddr*), `var_11*` : elemtype*, var_10 : (store, elemaddr*), var_9 : (store, dataaddr*), `var_8*` : tabletype*, var_7 : (store, tableaddr*), `var_6*` : memtype*, var_5 : (store, memaddr*), `var_4*` : globaltype*, var_3 : (store, globaladdr*), `var_2*` : tagtype*, var_1 : (store, tagaddr*), var_0 : deftype*}: `%%%%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, (s_7, moduleinst)) -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`}, var_13) + -- (if ($proj_uN_0(x).0 < |dt*{dt <- `dt*`}|))*{x <- `x*`} -- fun_allocfuncs: `%%%%%`(s_6, dt*{dt <- `dt*`}[$proj_uN_0(x).0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{}, var_12) + -- if (|`var_11*`| = |`elemtype*`|) -- (fun_subst_all_reftype: `%%%`(elemtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_11))*{var_11 <- `var_11*`, elemtype <- `elemtype*`} -- fun_allocelems: `%%%%`(s_5, var_11*{var_11 <- `var_11*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, var_10) -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}, var_9) + -- if (|`var_8*`| = |`tabletype*`|) -- (fun_subst_all_tabletype: `%%%`(tabletype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_8))*{var_8 <- `var_8*`, tabletype <- `tabletype*`} -- fun_alloctables: `%%%%`(s_3, var_8*{var_8 <- `var_8*`}, ref_T*{ref_T <- `ref_T*`}, var_7) + -- if (|`var_6*`| = |`memtype*`|) -- (fun_subst_all_memtype: `%%%`(memtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_6))*{var_6 <- `var_6*`, memtype <- `memtype*`} -- fun_allocmems: `%%%`(s_2, var_6*{var_6 <- `var_6*`}, var_5) + -- if (|`var_4*`| = |`globaltype*`|) -- (fun_subst_all_globaltype: `%%%`(globaltype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_4))*{var_4 <- `var_4*`, globaltype <- `globaltype*`} -- fun_allocglobals: `%%%%`(s_1, var_4*{var_4 <- `var_4*`}, val_G*{val_G <- `val_G*`}, var_3) + -- if (|`var_2*`| = |`tagtype*`|) -- (fun_subst_all_tagtype: `%%%`(tagtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_2))*{var_2 <- `var_2*`, tagtype <- `tagtype*`} -- fun_alloctags: `%%%`(s, var_2*{var_2 <- `var_2*`}, var_1) -- fun_alloctypes: `%%`(type*{type <- `type*`}, var_0) @@ -18618,11 +18071,18 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* -- wf_store: `%`(s_6) -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} + -- if (|`expr_G*`| = |`globaltype*`|) -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} + -- if (|`expr_T*`| = |`tabletype*`|) -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- if (|`expr_F*`| = |`local**`|) + -- if (|`expr_F*`| = |`x*`|) -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} + -- if (|`byte**`| = |`datamode*`|) -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- if (|`elemmode*`| = |`elemtype*`|) + -- if (|`elemmode*`| = |`expr_E**`|) -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) @@ -18714,7 +18174,9 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*, `var_4*` : instr**, `var_3*` : instr**, var_2 : (store, moduleinst), var_1 : (state, val*), var_0 : deftype*}: `%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- (if (i_E < |elem*{elem <- `elem*`}|))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} -- (fun_runelem_: `%%%`(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E], var_4))^(i_E<|elem*{elem <- `elem*`}|){var_4 <- `var_4*`, i_E <- `i_E*`} + -- (if (i_D < |data*{data <- `data*`}|))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} -- (fun_rundata_: `%%%`(`%`_dataidx(i_D), data*{data <- `data*`}[i_D], var_3))^(i_D<|data*{data <- `data*`}|){var_3 <- `var_3*`, i_D <- `i_D*`} -- fun_allocmodule: `%%%%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, var_2) -- fun_evalglobals: `%%%%`(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}, var_1) @@ -18727,9 +18189,14 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- if (|`expr_G*`| = |`globaltype*`|) -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- if (|`expr_T*`| = |`tabletype*`|) -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- if (|`byte**`| = |`datamode*`|) -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- if (|`elemmode*`| = |`expr_E**`|) + -- if (|`elemmode*`| = |`reftype*`|) -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} -- (wf_start: `%`(START_start(x)))?{x <- `x?`} -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) @@ -18738,6 +18205,7 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- if (|`externaddr*`| = |`xt_I*`|) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) @@ -18748,7 +18216,10 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- if (moduleinst_0 = {TYPES var_0, TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) -- if ((z', val_G*{val_G <- `val_G*`}) = var_1) + -- if (|`expr_T*`| = |`ref_T*`|) -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [$val_ref(ref_T)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} + -- if (|`expr_E**`| = |`ref_E**`|) + -- (if (|`expr_E*`| = |`ref_E*`|))*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [$val_ref(ref_E)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} -- if ((s', moduleinst) = var_2) -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, var_3^(i_D<|data*{data <- `data*`}|){var_3 <- `var_3*`})) @@ -18760,9 +18231,11 @@ relation fun_invoke: `%%%%`(store, funcaddr, val*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_invoke_case_0{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}: `%%%%`(s, funcaddr, val*{val <- `val*`}, `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) + -- if (funcaddr < |s.FUNCS_store|) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (|`t_1*`| = |`val*`|) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec diff --git a/spectec/test-middlend/specification.exp/11-alias-demut.il b/spectec/test-middlend/specification.exp/11-alias-demut.il index 8cd149abaf..928f4c69cb 100644 --- a/spectec/test-middlend/specification.exp/11-alias-demut.il +++ b/spectec/test-middlend/specification.exp/11-alias-demut.il @@ -378,68 +378,6 @@ relation fun_cont: `%%`(byte, nat) `%%`(b, ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat)) -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_utf8_before_fun_utf8_case_2: `%`(char*) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_1{ch : char, b : byte}: - `%`([ch]) - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) - -- if ($proj_char_0(ch).0 < 128) - -- if (`%`_byte($proj_char_0(ch).0) = b) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_utf8_before_fun_utf8_case_3: `%`(char*) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: - `%`([ch]) - -- ~ fun_utf8_before_fun_utf8_case_2: `%`([ch]) - -- fun_cont: `%%`(b_2, var_0) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) - -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_1{ch : char, b : byte}: - `%`([ch]) - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) - -- if ($proj_char_0(ch).0 < 128) - -- if (`%`_byte($proj_char_0(ch).0) = b) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_utf8_before_fun_utf8_case_4: `%`(char*) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: - `%`([ch]) - -- ~ fun_utf8_before_fun_utf8_case_3: `%`([ch]) - -- fun_cont: `%%`(b_3, var_1) - -- fun_cont: `%%`(b_2, var_0) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) - -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * var_0)) + var_1)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: - `%`([ch]) - -- ~ fun_utf8_before_fun_utf8_case_2: `%`([ch]) - -- fun_cont: `%%`(b_2, var_0) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) - -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_1{ch : char, b : byte}: - `%`([ch]) - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) - -- if ($proj_char_0(ch).0 < 128) - -- if (`%`_byte($proj_char_0(ch).0) = b) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -448,6 +386,7 @@ relation fun_utf8: `%%`(char*, byte*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 rule fun_utf8_case_0{`ch*` : char*, `var_0*` : byte**}: `%%`(ch*{ch <- `ch*`}, $concat_(syntax byte, var_0*{var_0 <- `var_0*`})) + -- if (|`var_0*`| = |`ch*`|) -- (fun_utf8: `%%`([ch], var_0))*{var_0 <- `var_0*`, ch <- `ch*`} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 @@ -461,7 +400,6 @@ relation fun_utf8: `%%`(char*, byte*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: `%%`([ch], [b_1 b_2]) - -- ~ fun_utf8_before_fun_utf8_case_2: `%`([ch]) -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) @@ -471,7 +409,6 @@ relation fun_utf8: `%%`(char*, byte*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: `%%`([ch], [b_1 b_2 b_3]) - -- ~ fun_utf8_before_fun_utf8_case_3: `%`([ch]) -- fun_cont: `%%`(b_3, var_1) -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) @@ -483,7 +420,6 @@ relation fun_utf8: `%%`(char*, byte*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 rule fun_utf8_case_4{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, var_2 : nat, var_1 : nat, var_0 : nat}: `%%`([ch], [b_1 b_2 b_3 b_4]) - -- ~ fun_utf8_before_fun_utf8_case_4: `%`([ch]) -- fun_cont: `%%`(b_4, var_2) -- fun_cont: `%%`(b_3, var_1) -- fun_cont: `%%`(b_2, var_0) @@ -1903,20 +1839,6 @@ def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = vt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_subst_heaptype_before_fun_subst_heaptype_case_3: `%%%`(heaptype, typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_subst_heaptype_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: - `%%%`(_DEF_heaptype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_subst_heaptype_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}: - `%%%`(_IDX_heaptype(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_subst_heaptype_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*}: - `%%%`(REC_heaptype(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { @@ -1953,7 +1875,6 @@ relation fun_subst_heaptype: `%%%%`(heaptype, typevar*, typeuse*, heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 rule fun_subst_heaptype_case_3{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}: `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, ht) - -- ~ fun_subst_heaptype_before_fun_subst_heaptype_case_3: `%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) @@ -2053,6 +1974,7 @@ relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_0{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_0*` : fieldtype*}: `%%%%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- if (|`var_0*`| = |`ft*`|) -- (fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, ft <- `ft*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) @@ -2065,7 +1987,9 @@ relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_2{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : valtype*, `var_0*` : valtype*}: `%%%%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + -- if (|`var_1*`| = |`t_2*`|) -- (fun_subst_valtype: `%%%%`(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, t_2 <- `t_2*`} + -- if (|`var_0*`| = |`t_1*`|) -- (fun_subst_valtype: `%%%%`(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, t_1 <- `t_1*`} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) @@ -2075,6 +1999,7 @@ relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) rule fun_subst_subtype_case_0{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : comptype, `var_0*` : typeuse*}: `%%%%`(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) -- fun_subst_comptype: `%%%%`(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- if (|`var_0*`| = |`tu'*`|) -- (fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, tu' <- `tu'*`} -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) @@ -2084,6 +2009,7 @@ relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) rule fun_subst_rectype_case_0{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_1 : (typevar*, typeuse*), `var_0*` : subtype*}: `%%%%`(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, REC_rectype(`%`_list(var_0*{var_0 <- `var_0*`}))) -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- if (|`var_0*`| = |`st*`|) -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} @@ -2169,7 +2095,9 @@ relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_moduletype_case_0{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : externtype*, `var_0*` : externtype*}: `%%%%`(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) + -- if (|`var_1*`| = |`xt_2*`|) -- (fun_subst_externtype: `%%%%`(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, xt_2 <- `xt_2*`} + -- if (|`var_0*`| = |`xt_1*`|) -- (fun_subst_externtype: `%%%%`(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, xt_1 <- `xt_1*`} -- wf_moduletype: `%`(`%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) @@ -2293,6 +2221,7 @@ relation fun_unrolldt: `%%`(deftype, subtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_unrolldt_case_0{rectype : rectype, i : nat, `subtype*` : subtype*, var_0 : rectype}: `%%`(_DEF_deftype(rectype, i), subtype*{subtype <- `subtype*`}[i]) + -- if (i < |subtype*{subtype <- `subtype*`}|) -- fun_unrollrt: `%%`(rectype, var_0) -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} -- if (var_0 = REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) @@ -2568,6 +2497,7 @@ relation fun_free_resulttype: `%%`(resulttype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.22 rule fun_free_resulttype_case_0{`valtype*` : valtype*, `var_1*` : free*, var_0 : free}: `%%`(`%`_resulttype(valtype*{valtype <- `valtype*`}), var_0) + -- if (|`var_1*`| = |`valtype*`|) -- (fun_free_valtype: `%%`(valtype, var_1))*{var_1 <- `var_1*`, valtype <- `valtype*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -2630,6 +2560,7 @@ relation fun_free_comptype: `%%`(comptype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:493.6-493.20 rule fun_free_comptype_case_0{`fieldtype*` : fieldtype*, `var_1*` : free*, var_0 : free}: `%%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})), var_0) + -- if (|`var_1*`| = |`fieldtype*`|) -- (fun_free_fieldtype: `%%`(fieldtype, var_1))*{var_1 <- `var_1*`, fieldtype <- `fieldtype*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -2650,6 +2581,7 @@ relation fun_free_subtype: `%%`(subtype, free) rule fun_free_subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype, var_2 : free, `var_1*` : free*, var_0 : free}: `%%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype), var_0 +++ var_2) -- fun_free_comptype: `%%`(comptype, var_2) + -- if (|`var_1*`| = |`typeuse*`|) -- (fun_free_typeuse: `%%`(typeuse, var_1))*{var_1 <- `var_1*`, typeuse <- `typeuse*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -2658,6 +2590,7 @@ relation fun_free_rectype: `%%`(rectype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.6-495.19 rule fun_free_rectype_case_0{`subtype*` : subtype*, `var_1*` : free*, var_0 : free}: `%%`(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), var_0) + -- if (|`var_1*`| = |`subtype*`|) -- (fun_free_subtype: `%%`(subtype, var_1))*{var_1 <- `var_1*`, subtype <- `subtype*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -2744,8 +2677,10 @@ relation fun_free_moduletype: `%%`(moduletype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_free_moduletype_case_0{`externtype_1*` : externtype*, `externtype_2*` : externtype*, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: `%%`(`%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`}), var_0 +++ var_2) + -- if (|`var_3*`| = |`externtype_2*`|) -- (fun_free_externtype: `%%`(externtype_2, var_3))*{var_3 <- `var_3*`, externtype_2 <- `externtype_2*`} -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- if (|`var_1*`| = |`externtype_1*`|) -- (fun_free_externtype: `%%`(externtype_1, var_1))*{var_1 <- `var_1*`, externtype_1 <- `externtype_1*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -5075,6 +5010,7 @@ relation fun_free_blocktype: `%%`(blocktype, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule fun_free_blocktype_case_0{`valtype?` : valtype?, `var_1?` : free?, var_0 : free}: `%%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`}), var_0) + -- if ((`var_1?` = ?()) <=> (`valtype?` = ?())) -- (fun_free_valtype: `%%`(valtype, var_1))?{var_1 <- `var_1?`, valtype <- `valtype?`} -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) @@ -5127,7 +5063,10 @@ relation fun_free_instr: `%%`(instr, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 rule fun_free_instr_case_3{`valtype*?` : valtype*?, `var_2*?` : free*?, `var_1?` : free?, var_0 : free}: `%%`(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`}), var_0) + -- if ((`var_2*?` = ?()) <=> (`valtype*?` = ?())) + -- (if (|`var_2*`| = |`valtype*`|))?{`var_2*` <- `var_2*?`, `valtype*` <- `valtype*?`} -- (fun_free_valtype: `%%`(valtype, var_2))*{var_2 <- `var_2*`, valtype <- `valtype*`}?{`var_2*` <- `var_2*?`, `valtype*` <- `valtype*?`} + -- if ((`var_2*?` = ?()) <=> (`var_1?` = ?())) -- (fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1))?{`var_2*` <- `var_2*?`, var_1 <- `var_1?`} -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) @@ -5164,6 +5103,7 @@ relation fun_free_instr: `%%`(instr, free) rule fun_free_instr_case_9{`labelidx*` : labelidx*, labelidx' : uN, var_2 : free, `var_1*` : free*, var_0 : free}: `%%`(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx'), var_0 +++ var_2) -- fun_free_labelidx: `%%`(labelidx', var_2) + -- if (|`var_1*`| = |`labelidx*`|) -- (fun_free_labelidx: `%%`(labelidx, var_1))*{var_1 <- `var_1*`, labelidx <- `labelidx*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -5654,6 +5594,7 @@ relation fun_free_block: `%%`(instr*, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.6-418.17 rule fun_free_block_case_0{`instr*` : instr*, free : free, `var_2*` : free*, var_1 : free, var_0 : labelidx*}: `%%`(instr*{instr <- `instr*`}, free[LABELS_free = var_0]) + -- if (|`var_2*`| = |`instr*`|) -- (fun_free_instr: `%%`(instr, var_2))*{var_2 <- `var_2*`, instr <- `instr*`} -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) -- fun_shift_labelidxs: `%%`(free.LABELS_free, var_0) @@ -5666,6 +5607,7 @@ relation fun_free_expr: `%%`(expr, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule fun_free_expr_case_0{`instr*` : instr*, `var_1*` : free*, var_0 : free}: `%%`(instr*{instr <- `instr*`}, var_0) + -- if (|`var_1*`| = |`instr*`|) -- (fun_free_instr: `%%`(instr, var_1))*{var_1 <- `var_1*`, instr <- `instr*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -5913,6 +5855,7 @@ relation fun_free_func: `%%`(func, free) rule fun_free_func_case_0{typeidx : uN, `local*` : local*, expr : instr*, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: `%%`(FUNC_func(typeidx, local*{local <- `local*`}, expr), var_0 +++ var_1 +++ var_3[LOCALS_free = []]) -- fun_free_block: `%%`(expr, var_3) + -- if (|`var_2*`| = |`local*`|) -- (fun_free_local: `%%`(local, var_2))*{var_2 <- `var_2*`, local <- `local*`} -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) -- fun_free_typeidx: `%%`(typeidx, var_0) @@ -5961,6 +5904,7 @@ relation fun_free_elem: `%%`(elem, free) rule fun_free_elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: `%%`(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode), var_0 +++ var_1 +++ var_3) -- fun_free_elemmode: `%%`(elemmode, var_3) + -- if (|`var_2*`| = |`expr*`|) -- (fun_free_expr: `%%`(expr, var_2))*{var_2 <- `var_2*`, expr <- `expr*`} -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) -- fun_free_reftype: `%%`(reftype, var_0) @@ -5991,26 +5935,37 @@ relation fun_free_module: `%%`(module, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec rule fun_free_module_case_0{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `var_21*` : free*, var_20 : free, `var_19*` : free*, var_18 : free, `var_17?` : free?, var_16 : free, `var_15*` : free*, var_14 : free, `var_13*` : free*, var_12 : free, `var_11*` : free*, var_10 : free, `var_9*` : free*, var_8 : free, `var_7*` : free*, var_6 : free, `var_5*` : free*, var_4 : free, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: `%%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_0 +++ var_2 +++ var_4 +++ var_6 +++ var_8 +++ var_10 +++ var_12 +++ var_14 +++ var_16 +++ var_18 +++ var_20) + -- if (|`var_21*`| = |`export*`|) -- (fun_free_export: `%%`(export, var_21))*{var_21 <- `var_21*`, export <- `export*`} -- fun_free_list: `%%`(var_21*{var_21 <- `var_21*`}, var_20) + -- if (|`var_19*`| = |`import*`|) -- (fun_free_import: `%%`(import, var_19))*{var_19 <- `var_19*`, import <- `import*`} -- fun_free_list: `%%`(var_19*{var_19 <- `var_19*`}, var_18) + -- if ((`var_17?` = ?()) <=> (`start?` = ?())) -- (fun_free_start: `%%`(start, var_17))?{var_17 <- `var_17?`, start <- `start?`} -- fun_free_opt: `%%`(var_17?{var_17 <- `var_17?`}, var_16) + -- if (|`var_15*`| = |`elem*`|) -- (fun_free_elem: `%%`(elem, var_15))*{var_15 <- `var_15*`, elem <- `elem*`} -- fun_free_list: `%%`(var_15*{var_15 <- `var_15*`}, var_14) + -- if (|`var_13*`| = |`data*`|) -- (fun_free_data: `%%`(data, var_13))*{var_13 <- `var_13*`, data <- `data*`} -- fun_free_list: `%%`(var_13*{var_13 <- `var_13*`}, var_12) + -- if (|`var_11*`| = |`func*`|) -- (fun_free_func: `%%`(func, var_11))*{var_11 <- `var_11*`, func <- `func*`} -- fun_free_list: `%%`(var_11*{var_11 <- `var_11*`}, var_10) + -- if (|`var_9*`| = |`table*`|) -- (fun_free_table: `%%`(table, var_9))*{var_9 <- `var_9*`, table <- `table*`} -- fun_free_list: `%%`(var_9*{var_9 <- `var_9*`}, var_8) + -- if (|`var_7*`| = |`mem*`|) -- (fun_free_mem: `%%`(mem, var_7))*{var_7 <- `var_7*`, mem <- `mem*`} -- fun_free_list: `%%`(var_7*{var_7 <- `var_7*`}, var_6) + -- if (|`var_5*`| = |`global*`|) -- (fun_free_global: `%%`(global, var_5))*{var_5 <- `var_5*`, global <- `global*`} -- fun_free_list: `%%`(var_5*{var_5 <- `var_5*`}, var_4) + -- if (|`var_3*`| = |`tag*`|) -- (fun_free_tag: `%%`(tag, var_3))*{var_3 <- `var_3*`, tag <- `tag*`} -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- if (|`var_1*`| = |`type*`|) -- (fun_free_type: `%%`(type, var_1))*{var_1 <- `var_1*`, type <- `type*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -6026,6 +5981,7 @@ relation fun_dataidx_funcs: `%%`(func*, dataidx*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec rule fun_dataidx_funcs_case_0{`func*` : func*, `var_1*` : free*, var_0 : free}: `%%`(func*{func <- `func*`}, var_0.DATAS_free) + -- if (|`var_1*`| = |`func*`|) -- (fun_free_func: `%%`(func, var_1))*{var_1 <- `var_1*`, func <- `func*`} -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) @@ -6253,11 +6209,13 @@ relation fun_unrollht: `%%%`(context, heaptype, subtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule fun_unrollht_case_1{C : context, typeidx : uN, var_0 : subtype}: `%%%`(C, _IDX_heaptype(typeidx), var_0) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(typeidx).0], var_0) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule fun_unrollht_case_2{C : context, i : nat}: `%%%`(C, REC_heaptype(i), C.RECS_context[i]) + -- if (i < |C.RECS_context|) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -6399,6 +6357,8 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*, `var_0*` : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- if (|`var_0*`| = |`x*`|) + -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} -- (fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(x).0], var_0))*{var_0 <- `var_0*`, x <- `x*`} -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) @@ -6407,8 +6367,8 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} - -- if (|`comptype'*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} + -- if (|`var_0*`| = |`comptype'*`|) + -- if (|`var_0*`| = |`x'**`|) -- (if (var_0 = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `x'*` <- `x'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -6446,6 +6406,7 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype, `var_0*` : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- if (|`var_0*`| = |`typeuse*`|) -- (fun_unrollht: `%%%`(C, $heaptype_typeuse(typeuse), var_0))*{var_0 <- `var_0*`, typeuse <- `typeuse*`} -- wf_context: `%`(C) -- wf_comptype: `%`(comptype) @@ -6455,7 +6416,8 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} - -- if (|`comptype'*`| = |`typeuse*`|) + -- if (|`var_0*`| = |`comptype'*`|) + -- if (|`var_0*`| = |`typeuse'**`|) -- (if (var_0 = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -7506,6 +7468,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*, `var_0*` : valtype*}: `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- if (|`var_0*`| = |`zt*`|) -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT.NEW_instr(x)) @@ -7517,6 +7480,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*, `var_0*` : valtype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- if (|`var_0*`| = |`zt*`|) -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) @@ -8885,13 +8849,6 @@ def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_signed__before_fun_signed__case_1: `%%`(N, nat) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_signed__case_0{N : nat, i : nat}: - `%%`(N, i) - -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_signed_: `%%%`(N, nat, int) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8902,16 +8859,8 @@ relation fun_signed_: `%%%`(N, nat, int) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_signed__case_1{N : nat, i : nat}: `%%%`(N, i, ((i : nat <:> int) - ((2 ^ N) : nat <:> int))) - -- ~ fun_signed__before_fun_signed__case_1: `%%`(N, i) -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_inv_signed__before_fun_inv_signed__case_1: `%%`(N, int) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_inv_signed__case_0{N : nat, i : int}: - `%%`(N, i) - -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_inv_signed_: `%%%`(N, int, nat) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8922,7 +8871,6 @@ relation fun_inv_signed_: `%%%`(N, int, nat) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_inv_signed__case_1{N : nat, i : int}: `%%%`(N, i, ((i + ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- ~ fun_inv_signed__before_fun_inv_signed__case_1: `%%`(N, i) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -9052,32 +9000,6 @@ def $imul_(N : N, iN : iN, iN : iN) : iN def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_idiv__before_fun_idiv__case_1: `%%%%`(N, sx, iN, iN) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_idiv__case_0{N : nat, i_1 : uN}: - `%%%%`(N, U_sx, i_1, `%`_iN(0)) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_idiv__before_fun_idiv__case_3: `%%%%`(N, sx, iN, iN) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_idiv__case_2{N : nat, i_1 : uN}: - `%%%%`(N, S_sx, i_1, `%`_iN(0)) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_idiv__before_fun_idiv__case_4: `%%%%`(N, sx, iN, iN) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_idiv__case_3{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: - `%%%%`(N, S_sx, i_1, i_2) - -- ~ fun_idiv__before_fun_idiv__case_3: `%%%%`(N, S_sx, i_1, i_2) - -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) - -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) - -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_idiv__case_2{N : nat, i_1 : uN}: - `%%%%`(N, S_sx, i_1, `%`_iN(0)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -9087,7 +9009,6 @@ relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_idiv__case_1{N : nat, i_1 : uN, i_2 : uN}: `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)))) - -- ~ fun_idiv__before_fun_idiv__case_1: `%%%%`(N, U_sx, i_1, i_2) -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -9097,7 +9018,6 @@ relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_idiv__case_3{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: `%%%%%`(N, S_sx, i_1, i_2, ?()) - -- ~ fun_idiv__before_fun_idiv__case_3: `%%%%`(N, S_sx, i_1, i_2) -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) @@ -9105,24 +9025,11 @@ relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_idiv__case_4{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) - -- ~ fun_idiv__before_fun_idiv__case_4: `%%%%`(N, S_sx, i_1, i_2) -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) -- fun_inv_signed_: `%%%`(N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) -- wf_uN: `%%`(N, `%`_uN(var_0)) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_irem__before_fun_irem__case_1: `%%%%`(N, sx, iN, iN) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_irem__case_0{N : nat, i_1 : uN}: - `%%%%`(N, U_sx, i_1, `%`_iN(0)) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_irem__before_fun_irem__case_3: `%%%%`(N, sx, iN, iN) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_irem__case_2{N : nat, i_1 : uN}: - `%%%%`(N, S_sx, i_1, `%`_iN(0)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -9132,7 +9039,6 @@ relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_irem__case_1{N : nat, i_1 : uN, i_2 : uN}: `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))) - -- ~ fun_irem__before_fun_irem__case_1: `%%%%`(N, U_sx, i_1, i_2) -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -9142,7 +9048,6 @@ relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_irem__case_3{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) - -- ~ fun_irem__before_fun_irem__case_3: `%%%%`(N, S_sx, i_1, i_2) -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) -- fun_inv_signed_: `%%%`(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) @@ -9538,11 +9443,13 @@ relation fun_cunpacknum_: `%%%`(storagetype, lit_, lit_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_cunpacknum__case_5{c : uN}: `%%%`(I8_storagetype, mk_lit__2_lit_(I8_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I8_packtype)) =/= ?()) -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_cunpacknum__case_6{c : uN}: `%%%`(I16_storagetype, mk_lit__2_lit_(I16_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I16_packtype)) =/= ?()) -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -10972,6 +10879,7 @@ relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) `%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) @@ -10982,6 +10890,7 @@ relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) `%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) @@ -10992,6 +10901,7 @@ relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) `%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) @@ -11002,6 +10912,7 @@ relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) `%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) @@ -11057,6 +10968,7 @@ relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- (if ($proj_uN_0(i).0 < |c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}|))*{i <- `i*`} -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -11068,6 +10980,7 @@ relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- (if ($proj_uN_0(i).0 < |c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}|))*{i <- `i*`} -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -11079,6 +10992,7 @@ relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- (if ($proj_uN_0(i).0 < |c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}|))*{i <- `i*`} -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -11090,6 +11004,7 @@ relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- (if ($proj_uN_0(i).0 < |c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}|))*{i <- `i*`} -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -11794,550 +11709,126 @@ relation fun_vrelop_: `%%%%%`(shape, vrelop_, vec_, vec_, vec_) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_25: `%%%%`(shape, shape, vcvtop__, lane_) +relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_26: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_25: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_27: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_26: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_25: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_29: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_30: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_29: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_31: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_30: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_29: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_33: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_34: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_33: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_35: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_34: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_33: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_37: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_38: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_37: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_39: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_38: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_37: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_41: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_42: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_41: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_43: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_42: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_41: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_45: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_46: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_45: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_47: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_46: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_45: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_49: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_50: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_49: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_51: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_50: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_49: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_53: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_54: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_53: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_55: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_54: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_53: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_57: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_56{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_59: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_58{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_61: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_60{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_63: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_62{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_65: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_64{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_67: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_66{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: - `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_69: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_68{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_71: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_70{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: - `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: - `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: - `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: - `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: - `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: @@ -12372,21 +11863,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_25: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_26: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_27: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) @@ -12399,21 +11887,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_29: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_30: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_31: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) @@ -12426,21 +11911,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_33: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_34: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_35: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) @@ -12453,21 +11935,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_37: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_38: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_39: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) @@ -12480,21 +11959,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_41: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_42: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_43{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_43: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) @@ -12507,21 +11983,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_45: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_46: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_47{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_47: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) @@ -12534,21 +12007,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_49: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_50: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_51{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_51: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) @@ -12561,21 +12031,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_53: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_54: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_55{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_55: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) @@ -12588,7 +12055,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_57{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_57: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) @@ -12601,7 +12067,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_59{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_59: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) @@ -12614,7 +12079,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_61{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_61: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) @@ -12627,7 +12091,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_63{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_63: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) @@ -12640,7 +12103,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_65{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_65: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) @@ -12653,7 +12115,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_67{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_67: `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) @@ -12666,7 +12127,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_69{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_69: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) @@ -12679,67 +12139,15 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_71{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_71: `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_vcvtop___before_fun_vcvtop___case_1: `%%%%`(shape, shape, vcvtop__, vec_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: - `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1, var_2))*{var_2 <- `var_2*`, c_1 <- `c_1*`} - -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) - -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) - -- if ((var_0 = ?()) /\ (var_1 = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_vcvtop___before_fun_vcvtop___case_2: `%%%%`(shape, shape, vcvtop__, vec_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**, `var_1*` : lane_**, var_0 : half?}: - `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) - -- ~ fun_vcvtop___before_fun_vcvtop___case_1: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- `var_1*`, c_1 <- `c_1*`} - -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) - -- if (var_0 = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: - `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1, var_2))*{var_2 <- `var_2*`, c_1 <- `c_1*`} - -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) - -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) - -- if ((var_0 = ?()) /\ (var_1 = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1, v) + -- if (|`var_2*`| = |`c_1*`|) -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1, var_2))*{var_2 <- `var_2*`, c_1 <- `c_1*`} -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) @@ -12751,12 +12159,13 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if ((var_0 = ?()) /\ (var_1 = ?())) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`})) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**, `var_1*` : lane_**, var_0 : half?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) - -- ~ fun_vcvtop___before_fun_vcvtop___case_1: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) + -- if (|`var_1*`| = |`c_1*`|) -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- `var_1*`, c_1 <- `c_1*`} -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) @@ -12767,13 +12176,14 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (var_0 = ?(half)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`})) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, var_2 : lane_, `var_1*` : lane_**, var_0 : zero?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) - -- ~ fun_vcvtop___before_fun_vcvtop___case_2: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) -- fun_zero: `%%`(Lnn_2, var_2) + -- if (|`var_1*`| = |`c_1*`|) -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- `var_1*`, c_1 <- `c_1*`} -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) @@ -12784,6 +12194,7 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (var_0 = ?(ZERO_zero)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`} ++ [var_2]^M_1{})) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -12888,7 +12299,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -12904,7 +12317,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -12920,7 +12335,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -12936,7 +12353,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -12952,7 +12371,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -12968,7 +12389,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -12984,7 +12407,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13000,7 +12425,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13016,7 +12443,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13032,7 +12461,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13048,7 +12479,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13064,7 +12497,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13080,7 +12515,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13096,7 +12533,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13112,7 +12551,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -13128,7 +12569,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) @@ -14057,6 +13500,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14079,6 +13523,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14101,6 +13546,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14123,6 +13569,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14145,6 +13592,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14167,6 +13615,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14189,6 +13638,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14211,6 +13661,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14233,6 +13684,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14255,6 +13707,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14277,6 +13730,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14299,6 +13753,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14321,6 +13776,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14343,6 +13799,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14365,6 +13822,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14387,6 +13845,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15354,6 +14813,7 @@ relation fun_with_global: `%%%%`(state, globalidx, val, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_global_case_0{s : store, f : frame, x : uN, v : val}: `%%%%`(`%;%`_state(s, f), x, v, `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.GLOBALS_moduleinst|) -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15361,6 +14821,7 @@ relation fun_with_table: `%%%%%`(state, tableidx, nat, ref, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_table_case_0{s : store, f : frame, x : uN, i : nat, r : ref}: `%%%%%`(`%;%`_state(s, f), x, i, r, `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.TABLES_moduleinst|) -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15368,6 +14829,7 @@ relation fun_with_tableinst: `%%%%`(state, tableidx, tableinst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_tableinst_case_0{s : store, f : frame, x : uN, ti : tableinst}: `%%%%`(`%;%`_state(s, f), x, ti, `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.TABLES_moduleinst|) -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15375,6 +14837,7 @@ relation fun_with_mem: `%%%%%%`(state, memidx, nat, nat, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_mem_case_0{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}: `%%%%%%`(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}, `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.MEMS_moduleinst|) -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15382,6 +14845,7 @@ relation fun_with_meminst: `%%%%`(state, memidx, meminst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_meminst_case_0{s : store, f : frame, x : uN, mi : meminst}: `%%%%`(`%;%`_state(s, f), x, mi, `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.MEMS_moduleinst|) -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15389,6 +14853,7 @@ relation fun_with_elem: `%%%%`(state, elemidx, ref*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_elem_case_0{s : store, f : frame, x : uN, `r*` : ref*}: `%%%%`(`%;%`_state(s, f), x, r*{r <- `r*`}, `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.ELEMS_moduleinst|) -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15396,6 +14861,7 @@ relation fun_with_data: `%%%%`(state, dataidx, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_data_case_0{s : store, f : frame, x : uN, `b*` : byte*}: `%%%%`(`%;%`_state(s, f), x, b*{b <- `b*`}, `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.DATAS_moduleinst|) -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15433,19 +14899,6 @@ relation fun_add_exninst: `%%%`(state, exninst*, state) `%%%`(`%;%`_state(s, f), exn*{exn <- `exn*`}, `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation fun_growtable_before_fun_growtable_case_1: `%%%`(tableinst, nat, ref) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}: - `%%%`(tableinst, n, r) - -- wf_tableinst: `%`(tableinst') - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) - -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) - -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) - -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) - -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15462,20 +14915,6 @@ relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_growtable_case_1{x0 : tableinst, x1 : nat, x2 : ref}: `%%%%`(x0, x1, x2, ?()) - -- ~ fun_growtable_before_fun_growtable_case_1: `%%%`(x0, x1, x2) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation fun_growmem_before_fun_growmem_case_1: `%%`(meminst, nat) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}: - `%%`(meminst, n) - -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) - -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec relation fun_growmem: `%%%`(meminst, nat, meminst?) @@ -15493,7 +14932,6 @@ relation fun_growmem: `%%%`(meminst, nat, meminst?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_growmem_case_1{x0 : meminst, x1 : nat}: `%%%`(x0, x1, ?()) - -- ~ fun_growmem_before_fun_growmem_case_1: `%%`(x0, x1) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) @@ -16338,12 +15776,12 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- if ($proj_num__0(i) =/= ?()) -- fun_vshiftop_: `%%%%%`(sh, vshiftop, c_1, !($proj_num__0(i)), var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -17103,6 +16541,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*, `var_0*` : val?*}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- if (|`var_0*`| = |`t*`|) -- (fun_default_: `%%`(t, var_0))*{var_0 <- `var_0*`, t <- `t*`} -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) @@ -17448,7 +16887,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} - -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx, var_0 : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) - -- fun_memarg0: `%`(var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_memarg0: `%`(var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) @@ -17568,9 +17007,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- fun_memarg0: `%`(var_0) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- fun_memarg0: `%`(var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -17586,9 +17025,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- fun_memarg0: `%`(var_0) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- fun_memarg0: `%`(var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -17619,10 +17058,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx, var_0 : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) - -- fun_memarg0: `%`(var_0) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) + -- fun_memarg0: `%`(var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) @@ -17684,14 +17123,16 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*, `var_1*` : valtype*, `var_0*` : val?*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), $instr_val(val)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- if (|`var_1*`| = |`zt*`|) -- (fun_unpack: `%%`(zt, var_1))*{var_1 <- `var_1*`, zt <- `zt*`} + -- if (|`var_1*`| = |`var_0*`|) -- (fun_default_: `%%`(var_1, var_0))*{var_1 <- `var_1*`, var_0 <- `var_0*`} -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) -- wf_instr: `%`(STRUCT.NEW_instr(x)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`val*`| = |`zt*`|) + -- if (|`var_0*`| = |`val*`|) -- (if (var_0 = ?(val)))*{var_0 <- `var_0*`, val <- `val*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -17703,10 +17144,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*, var_0 : val}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val(var_0)]) - -- fun_unpackfield_: `%%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0], var_0) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) -- if (a < |$structinst(z)|) + -- fun_unpackfield_: `%%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0], var_0) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -17754,8 +17195,8 @@ relation Step_read: `%~>%`(config, instr*) rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?, `var_1*` : lit_*, `var_0*` : instr*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), var_0^n{var_0 <- `var_0*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) -- (fun_cunpacknum_: `%%%`(zt, c, var_1))^n{var_1 <- `var_1*`, c <- `c*`} + -- (if ($cunpack(zt) =/= ?()))^n{var_1 <- `var_1*`} -- (fun_const: `%%%`(!($cunpack(zt)), var_1, var_0))^n{var_1 <- `var_1*`, var_0 <- `var_0*`} - -- (if ($cunpack(zt) =/= ?()))^n{} -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) @@ -17782,10 +17223,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?, var_0 : val}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [$instr_val(var_0)]) - -- fun_unpackfield_: `%%%%`(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0], var_0) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) + -- fun_unpackfield_: `%%%%`(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0], var_0) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -18000,11 +17441,11 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?, var_1 : lit_, var_0 : instr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) var_0 ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) - -- fun_cunpacknum_: `%%%`(zt, c, var_1) - -- fun_const: `%%%`(!($cunpack(zt)), var_1, var_0) - -- if ($cunpack(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) + -- fun_cunpacknum_: `%%%`(zt, c, var_1) + -- if ($cunpack(zt) =/= ?()) + -- fun_const: `%%%`(!($cunpack(zt)), var_1, var_0) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) @@ -18104,8 +17545,8 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx, var_0 : state}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config(var_0, [])) - -- fun_with_table: `%%%%%`(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_table: `%%%%%`(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref, var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) -- wf_config: `%`(`%;%`_config(var_0, [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) @@ -18145,8 +17586,8 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(var_0, [])) - -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(`%;%`_config(var_0, [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) @@ -18162,8 +17603,8 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(var_0, [])) - -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) -- wf_config: `%`(`%;%`_config(var_0, [])) -- if ($proj_num__0(c) =/= ?()) @@ -18180,8 +17621,8 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(var_0, [])) - -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(`%;%`_config(var_0, [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) @@ -18197,8 +17638,8 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M, var_0 : state}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(var_0, [])) - -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_config: `%`(`%;%`_config(var_0, [])) -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) @@ -18254,9 +17695,9 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*, var_1 : fieldval, var_0 : state}: `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config(var_0, [])) + -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- fun_packfield_: `%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val, var_1) -- fun_with_struct: `%%%%%`(z, a, $proj_uN_0(i).0, var_1, var_0) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)])) -- wf_config: `%`(`%;%`_config(var_0, [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -18293,8 +17734,8 @@ relation Step: `%~>%`(config, config) rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?, var_1 : fieldval, var_0 : state}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(var_0, [])) -- fun_packfield_: `%%%`(zt, val, var_1) - -- fun_with_array: `%%%%%`(z, a, $proj_uN_0(!($proj_num__0(i))).0, var_1, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_array: `%%%%%`(z, a, $proj_uN_0(!($proj_num__0(i))).0, var_1, var_0) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) -- wf_config: `%`(`%;%`_config(var_0, [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -18560,26 +18001,31 @@ relation fun_allocexport: `%%%`(moduleinst, export, exportinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexport_case_0{moduleinst : moduleinst, name : name, x : uN}: `%%%`(moduleinst, EXPORT_export(name, TAG_externidx(x)), {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.TAGS_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexport_case_1{moduleinst : moduleinst, name : name, x : uN}: `%%%`(moduleinst, EXPORT_export(name, GLOBAL_externidx(x)), {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.GLOBALS_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexport_case_2{moduleinst : moduleinst, name : name, x : uN}: `%%%`(moduleinst, EXPORT_export(name, MEM_externidx(x)), {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.MEMS_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexport_case_3{moduleinst : moduleinst, name : name, x : uN}: `%%%`(moduleinst, EXPORT_export(name, TABLE_externidx(x)), {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.TABLES_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexport_case_4{moduleinst : moduleinst, name : name, x : uN}: `%%%`(moduleinst, EXPORT_export(name, FUNC_externidx(x)), {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.FUNCS_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18587,6 +18033,7 @@ relation fun_allocexports: `%%%`(moduleinst, export*, exportinst*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexports_case_0{moduleinst : moduleinst, `export*` : export*, `var_0*` : exportinst*}: `%%%`(moduleinst, export*{export <- `export*`}, var_0*{var_0 <- `var_0*`}) + -- if (|`var_0*`| = |`export*`|) -- (fun_allocexport: `%%%`(moduleinst, export, var_0))*{var_0 <- `var_0*`, export <- `export*`} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18595,16 +18042,22 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_13 : exportinst*, var_12 : (store, funcaddr*), `var_11*` : elemtype*, var_10 : (store, elemaddr*), var_9 : (store, dataaddr*), `var_8*` : tabletype*, var_7 : (store, tableaddr*), `var_6*` : memtype*, var_5 : (store, memaddr*), `var_4*` : globaltype*, var_3 : (store, globaladdr*), `var_2*` : tagtype*, var_1 : (store, tagaddr*), var_0 : deftype*}: `%%%%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, (s_7, moduleinst)) -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`}, var_13) + -- (if ($proj_uN_0(x).0 < |dt*{dt <- `dt*`}|))*{x <- `x*`} -- fun_allocfuncs: `%%%%%`(s_6, dt*{dt <- `dt*`}[$proj_uN_0(x).0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{}, var_12) + -- if (|`var_11*`| = |`elemtype*`|) -- (fun_subst_all_reftype: `%%%`(elemtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_11))*{var_11 <- `var_11*`, elemtype <- `elemtype*`} -- fun_allocelems: `%%%%`(s_5, var_11*{var_11 <- `var_11*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, var_10) -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}, var_9) + -- if (|`var_8*`| = |`tabletype*`|) -- (fun_subst_all_tabletype: `%%%`(tabletype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_8))*{var_8 <- `var_8*`, tabletype <- `tabletype*`} -- fun_alloctables: `%%%%`(s_3, var_8*{var_8 <- `var_8*`}, ref_T*{ref_T <- `ref_T*`}, var_7) + -- if (|`var_6*`| = |`memtype*`|) -- (fun_subst_all_memtype: `%%%`(memtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_6))*{var_6 <- `var_6*`, memtype <- `memtype*`} -- fun_allocmems: `%%%`(s_2, var_6*{var_6 <- `var_6*`}, var_5) + -- if (|`var_4*`| = |`globaltype*`|) -- (fun_subst_all_globaltype: `%%%`(globaltype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_4))*{var_4 <- `var_4*`, globaltype <- `globaltype*`} -- fun_allocglobals: `%%%%`(s_1, var_4*{var_4 <- `var_4*`}, val_G*{val_G <- `val_G*`}, var_3) + -- if (|`var_2*`| = |`tagtype*`|) -- (fun_subst_all_tagtype: `%%%`(tagtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_2))*{var_2 <- `var_2*`, tagtype <- `tagtype*`} -- fun_alloctags: `%%%`(s, var_2*{var_2 <- `var_2*`}, var_1) -- fun_alloctypes: `%%`(type*{type <- `type*`}, var_0) @@ -18618,11 +18071,18 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* -- wf_store: `%`(s_6) -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} + -- if (|`expr_G*`| = |`globaltype*`|) -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} + -- if (|`expr_T*`| = |`tabletype*`|) -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- if (|`expr_F*`| = |`local**`|) + -- if (|`expr_F*`| = |`x*`|) -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} + -- if (|`byte**`| = |`datamode*`|) -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- if (|`elemmode*`| = |`elemtype*`|) + -- if (|`elemmode*`| = |`expr_E**`|) -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) @@ -18714,7 +18174,9 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*, `var_4*` : instr**, `var_3*` : instr**, var_2 : (store, moduleinst), var_1 : (state, val*), var_0 : deftype*}: `%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- (if (i_E < |elem*{elem <- `elem*`}|))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} -- (fun_runelem_: `%%%`(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E], var_4))^(i_E<|elem*{elem <- `elem*`}|){var_4 <- `var_4*`, i_E <- `i_E*`} + -- (if (i_D < |data*{data <- `data*`}|))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} -- (fun_rundata_: `%%%`(`%`_dataidx(i_D), data*{data <- `data*`}[i_D], var_3))^(i_D<|data*{data <- `data*`}|){var_3 <- `var_3*`, i_D <- `i_D*`} -- fun_allocmodule: `%%%%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, var_2) -- fun_evalglobals: `%%%%`(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}, var_1) @@ -18727,9 +18189,14 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- if (|`expr_G*`| = |`globaltype*`|) -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- if (|`expr_T*`| = |`tabletype*`|) -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- if (|`byte**`| = |`datamode*`|) -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- if (|`elemmode*`| = |`expr_E**`|) + -- if (|`elemmode*`| = |`reftype*`|) -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} -- (wf_start: `%`(START_start(x)))?{x <- `x?`} -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) @@ -18738,6 +18205,7 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- if (|`externaddr*`| = |`xt_I*`|) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) @@ -18748,7 +18216,10 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- if (moduleinst_0 = {TYPES var_0, TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) -- if ((z', val_G*{val_G <- `val_G*`}) = var_1) + -- if (|`expr_T*`| = |`ref_T*`|) -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [$val_ref(ref_T)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} + -- if (|`expr_E**`| = |`ref_E**`|) + -- (if (|`expr_E*`| = |`ref_E*`|))*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [$val_ref(ref_E)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} -- if ((s', moduleinst) = var_2) -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, var_3^(i_D<|data*{data <- `data*`}|){var_3 <- `var_3*`})) @@ -18760,9 +18231,11 @@ relation fun_invoke: `%%%%`(store, funcaddr, val*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_invoke_case_0{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}: `%%%%`(s, funcaddr, val*{val <- `val*`}, `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) + -- if (funcaddr < |s.FUNCS_store|) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (|`t_1*`| = |`val*`|) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec diff --git a/spectec/test-middlend/specification.exp/12-improve-ids.il b/spectec/test-middlend/specification.exp/12-improve-ids.il index 136eee9a12..b16dc5aef1 100644 --- a/spectec/test-middlend/specification.exp/12-improve-ids.il +++ b/spectec/test-middlend/specification.exp/12-improve-ids.il @@ -378,68 +378,6 @@ relation fun_cont: `%%`(byte, nat) `%%`(b, ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat)) -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_utf8_before_fun_utf8_case_2: `%`(char*) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_1{ch : char, b : byte}: - `%`([ch]) - -- wf_byte: `%`(b) - -- wf_byte: `%`(mk_byte_byte($proj_char_0(ch).0)) - -- if ($proj_char_0(ch).0 < 128) - -- if (mk_byte_byte($proj_char_0(ch).0) = b) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_utf8_before_fun_utf8_case_3: `%`(char*) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: - `%`([ch]) - -- ~ fun_utf8_before_fun_utf8_case_2: `%`([ch]) - -- fun_cont: `%%`(b_2, var_0) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) - -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_1{ch : char, b : byte}: - `%`([ch]) - -- wf_byte: `%`(b) - -- wf_byte: `%`(mk_byte_byte($proj_char_0(ch).0)) - -- if ($proj_char_0(ch).0 < 128) - -- if (mk_byte_byte($proj_char_0(ch).0) = b) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_utf8_before_fun_utf8_case_4: `%`(char*) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: - `%`([ch]) - -- ~ fun_utf8_before_fun_utf8_case_3: `%`([ch]) - -- fun_cont: `%%`(b_3, var_1) - -- fun_cont: `%%`(b_2, var_0) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) - -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * var_0)) + var_1)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: - `%`([ch]) - -- ~ fun_utf8_before_fun_utf8_case_2: `%`([ch]) - -- fun_cont: `%%`(b_2, var_0) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) - -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_utf8_case_1{ch : char, b : byte}: - `%`([ch]) - -- wf_byte: `%`(b) - -- wf_byte: `%`(mk_byte_byte($proj_char_0(ch).0)) - -- if ($proj_char_0(ch).0 < 128) - -- if (mk_byte_byte($proj_char_0(ch).0) = b) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -448,6 +386,7 @@ relation fun_utf8: `%%`(char*, byte*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 rule fun_utf8_case_0{ch_lst : char*, var_0_lst : byte**}: `%%`(ch_lst, $concat_(syntax byte, var_0_lst)) + -- if (|var_0_lst| = |ch_lst|) -- (fun_utf8: `%%`([ch], var_0))*{var_0 <- var_0_lst, ch <- ch_lst} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 @@ -461,7 +400,6 @@ relation fun_utf8: `%%`(char*, byte*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: `%%`([ch], [b_1 b_2]) - -- ~ fun_utf8_before_fun_utf8_case_2: `%`([ch]) -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) @@ -471,7 +409,6 @@ relation fun_utf8: `%%`(char*, byte*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: `%%`([ch], [b_1 b_2 b_3]) - -- ~ fun_utf8_before_fun_utf8_case_3: `%`([ch]) -- fun_cont: `%%`(b_3, var_1) -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) @@ -483,7 +420,6 @@ relation fun_utf8: `%%`(char*, byte*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.6-89.11 rule fun_utf8_case_4{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, var_2 : nat, var_1 : nat, var_0 : nat}: `%%`([ch], [b_1 b_2 b_3 b_4]) - -- ~ fun_utf8_before_fun_utf8_case_4: `%`([ch]) -- fun_cont: `%%`(b_4, var_2) -- fun_cont: `%%`(b_3, var_1) -- fun_cont: `%%`(b_2, var_0) @@ -1903,20 +1839,6 @@ def $subst_vectype(v_vectype : vectype, var_0 : typevar*, var_1 : typeuse*) : ve ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_vectype{vt : vectype, tv_lst : typevar*, tu_lst : typeuse*}(vt, tv_lst, tu_lst) = vt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_subst_heaptype_before_fun_subst_heaptype_case_3: `%%%`(heaptype, typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_subst_heaptype_case_2{v_rectype : rectype, v_n : n, tv_lst : typevar*, tu_lst : typeuse*, var_0 : deftype}: - `%%%`(_DEF_heaptype(v_rectype, v_n), tv_lst, tu_lst) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_subst_heaptype_case_1{v_typeidx : typeidx, tv_lst : typevar*, tu_lst : typeuse*}: - `%%%`(_IDX_heaptype(v_typeidx), tv_lst, tu_lst) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_subst_heaptype_case_0{v_n : n, tv_lst : typevar*, tu_lst : typeuse*}: - `%%%`(REC_heaptype(v_n), tv_lst, tu_lst) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { @@ -1953,7 +1875,6 @@ relation fun_subst_heaptype: `%%%%`(heaptype, typevar*, typeuse*, heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 rule fun_subst_heaptype_case_3{ht : heaptype, tv_lst : typevar*, tu_lst : typeuse*}: `%%%%`(ht, tv_lst, tu_lst, ht) - -- ~ fun_subst_heaptype_before_fun_subst_heaptype_case_3: `%%%`(ht, tv_lst, tu_lst) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) @@ -2053,6 +1974,7 @@ relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_0{ft_lst : fieldtype*, tv_lst : typevar*, tu_lst : typeuse*, var_0_lst : fieldtype*}: `%%%%`(STRUCT_comptype(mk_list_list(ft_lst)), tv_lst, tu_lst, STRUCT_comptype(mk_list_list(var_0_lst))) + -- if (|var_0_lst| = |ft_lst|) -- (fun_subst_fieldtype: `%%%%`(ft, tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, ft <- ft_lst} -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(var_0_lst))) @@ -2065,7 +1987,9 @@ relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_2{t_1_lst : valtype*, t_2_lst : valtype*, tv_lst : typevar*, tu_lst : typeuse*, var_1_lst : valtype*, var_0_lst : valtype*}: `%%%%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)), tv_lst, tu_lst, FUNC_comptype(mk_list_resulttype(var_0_lst), mk_list_resulttype(var_1_lst))) + -- if (|var_1_lst| = |t_2_lst|) -- (fun_subst_valtype: `%%%%`(t_2, tv_lst, tu_lst, var_1))*{var_1 <- var_1_lst, t_2 <- t_2_lst} + -- if (|var_0_lst| = |t_1_lst|) -- (fun_subst_valtype: `%%%%`(t_1, tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, t_1 <- t_1_lst} -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(var_0_lst), mk_list_resulttype(var_1_lst))) @@ -2075,6 +1999,7 @@ relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) rule fun_subst_subtype_case_0{final_opt : final?, tu'_lst : typeuse*, ct : comptype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : comptype, var_0_lst : typeuse*}: `%%%%`(SUB_subtype(final_opt, tu'_lst, ct), tv_lst, tu_lst, SUB_subtype(final_opt, var_0_lst, var_1)) -- fun_subst_comptype: `%%%%`(ct, tv_lst, tu_lst, var_1) + -- if (|var_0_lst| = |tu'_lst|) -- (fun_subst_typeuse: `%%%%`(tu', tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, tu' <- tu'_lst} -- wf_subtype: `%`(SUB_subtype(final_opt, var_0_lst, var_1)) @@ -2084,6 +2009,7 @@ relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) rule fun_subst_rectype_case_0{st_lst : subtype*, tv_lst : typevar*, tu_lst : typeuse*, tv'_lst : typevar*, tu'_lst : typeuse*, var_1 : (typevar*, typeuse*), var_0_lst : subtype*}: `%%%%`(REC_rectype(mk_list_list(st_lst)), tv_lst, tu_lst, REC_rectype(mk_list_list(var_0_lst))) -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_1) + -- if (|var_0_lst| = |st_lst|) -- (fun_subst_subtype: `%%%%`(st, tv'_lst, tu'_lst, var_0))*{var_0 <- var_0_lst, st <- st_lst} -- (wf_typevar: `%`(tv'))*{tv' <- tv'_lst} -- (wf_typeuse: `%`(tu'))*{tu' <- tu'_lst} @@ -2169,7 +2095,9 @@ relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_moduletype_case_0{xt_1_lst : externtype*, xt_2_lst : externtype*, tv_lst : typevar*, tu_lst : typeuse*, var_1_lst : externtype*, var_0_lst : externtype*}: `%%%%`(mk_moduletype_moduletype(xt_1_lst, xt_2_lst), tv_lst, tu_lst, mk_moduletype_moduletype(var_0_lst, var_1_lst)) + -- if (|var_1_lst| = |xt_2_lst|) -- (fun_subst_externtype: `%%%%`(xt_2, tv_lst, tu_lst, var_1))*{var_1 <- var_1_lst, xt_2 <- xt_2_lst} + -- if (|var_0_lst| = |xt_1_lst|) -- (fun_subst_externtype: `%%%%`(xt_1, tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, xt_1 <- xt_1_lst} -- wf_moduletype: `%`(mk_moduletype_moduletype(var_0_lst, var_1_lst)) @@ -2293,6 +2221,7 @@ relation fun_unrolldt: `%%`(deftype, subtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_unrolldt_case_0{v_rectype : rectype, i : nat, subtype_lst : subtype*, var_0 : rectype}: `%%`(_DEF_deftype(v_rectype, i), subtype_lst[i]) + -- if (i < |subtype_lst|) -- fun_unrollrt: `%%`(v_rectype, var_0) -- (wf_subtype: `%`(v_subtype))*{v_subtype <- subtype_lst} -- if (var_0 = REC_rectype(mk_list_list(subtype_lst))) @@ -2568,6 +2497,7 @@ relation fun_free_resulttype: `%%`(resulttype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.22 rule fun_free_resulttype_case_0{valtype_lst : valtype*, var_1_lst : free*, var_0 : free}: `%%`(mk_list_resulttype(valtype_lst), var_0) + -- if (|var_1_lst| = |valtype_lst|) -- (fun_free_valtype: `%%`(v_valtype, var_1))*{var_1 <- var_1_lst, v_valtype <- valtype_lst} -- fun_free_list: `%%`(var_1_lst, var_0) @@ -2630,6 +2560,7 @@ relation fun_free_comptype: `%%`(comptype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:493.6-493.20 rule fun_free_comptype_case_0{fieldtype_lst : fieldtype*, var_1_lst : free*, var_0 : free}: `%%`(STRUCT_comptype(mk_list_list(fieldtype_lst)), var_0) + -- if (|var_1_lst| = |fieldtype_lst|) -- (fun_free_fieldtype: `%%`(v_fieldtype, var_1))*{var_1 <- var_1_lst, v_fieldtype <- fieldtype_lst} -- fun_free_list: `%%`(var_1_lst, var_0) @@ -2650,6 +2581,7 @@ relation fun_free_subtype: `%%`(subtype, free) rule fun_free_subtype_case_0{final_opt : final?, typeuse_lst : typeuse*, v_comptype : comptype, var_2 : free, var_1_lst : free*, var_0 : free}: `%%`(SUB_subtype(final_opt, typeuse_lst, v_comptype), var_0 +++ var_2) -- fun_free_comptype: `%%`(v_comptype, var_2) + -- if (|var_1_lst| = |typeuse_lst|) -- (fun_free_typeuse: `%%`(v_typeuse, var_1))*{var_1 <- var_1_lst, v_typeuse <- typeuse_lst} -- fun_free_list: `%%`(var_1_lst, var_0) @@ -2658,6 +2590,7 @@ relation fun_free_rectype: `%%`(rectype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.6-495.19 rule fun_free_rectype_case_0{subtype_lst : subtype*, var_1_lst : free*, var_0 : free}: `%%`(REC_rectype(mk_list_list(subtype_lst)), var_0) + -- if (|var_1_lst| = |subtype_lst|) -- (fun_free_subtype: `%%`(v_subtype, var_1))*{var_1 <- var_1_lst, v_subtype <- subtype_lst} -- fun_free_list: `%%`(var_1_lst, var_0) @@ -2744,8 +2677,10 @@ relation fun_free_moduletype: `%%`(moduletype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_free_moduletype_case_0{externtype_1_lst : externtype*, externtype_2_lst : externtype*, var_3_lst : free*, var_2 : free, var_1_lst : free*, var_0 : free}: `%%`(mk_moduletype_moduletype(externtype_1_lst, externtype_2_lst), var_0 +++ var_2) + -- if (|var_3_lst| = |externtype_2_lst|) -- (fun_free_externtype: `%%`(externtype_2, var_3))*{var_3 <- var_3_lst, externtype_2 <- externtype_2_lst} -- fun_free_list: `%%`(var_3_lst, var_2) + -- if (|var_1_lst| = |externtype_1_lst|) -- (fun_free_externtype: `%%`(externtype_1, var_1))*{var_1 <- var_1_lst, externtype_1 <- externtype_1_lst} -- fun_free_list: `%%`(var_1_lst, var_0) @@ -5075,6 +5010,7 @@ relation fun_free_blocktype: `%%`(blocktype, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule fun_free_blocktype_case_0{valtype_opt : valtype?, var_1_opt : free?, var_0 : free}: `%%`(_RESULT_blocktype(valtype_opt), var_0) + -- if ((var_1_opt = ?()) <=> (valtype_opt = ?())) -- (fun_free_valtype: `%%`(v_valtype, var_1))?{var_1 <- var_1_opt, v_valtype <- valtype_opt} -- fun_free_opt: `%%`(var_1_opt, var_0) @@ -5127,7 +5063,10 @@ relation fun_free_instr: `%%`(instr, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 rule fun_free_instr_case_3{valtype_lst_opt : valtype*?, var_2_lst_opt : free*?, var_1_opt : free?, var_0 : free}: `%%`(SELECT_instr(valtype_lst_opt), var_0) + -- if ((var_2_lst_opt = ?()) <=> (valtype_lst_opt = ?())) + -- (if (|var_2_lst| = |valtype_lst|))?{var_2_lst <- var_2_lst_opt, valtype_lst <- valtype_lst_opt} -- (fun_free_valtype: `%%`(v_valtype, var_2))*{var_2 <- var_2_lst, v_valtype <- valtype_lst}?{var_2_lst <- var_2_lst_opt, valtype_lst <- valtype_lst_opt} + -- if ((var_2_lst_opt = ?()) <=> (var_1_opt = ?())) -- (fun_free_list: `%%`(var_2_lst, var_1))?{var_2_lst <- var_2_lst_opt, var_1 <- var_1_opt} -- fun_free_opt: `%%`(var_1_opt, var_0) @@ -5164,6 +5103,7 @@ relation fun_free_instr: `%%`(instr, free) rule fun_free_instr_case_9{labelidx_lst : labelidx*, labelidx' : uN, var_2 : free, var_1_lst : free*, var_0 : free}: `%%`(BR_TABLE_instr(labelidx_lst, labelidx'), var_0 +++ var_2) -- fun_free_labelidx: `%%`(labelidx', var_2) + -- if (|var_1_lst| = |labelidx_lst|) -- (fun_free_labelidx: `%%`(v_labelidx, var_1))*{var_1 <- var_1_lst, v_labelidx <- labelidx_lst} -- fun_free_list: `%%`(var_1_lst, var_0) @@ -5654,6 +5594,7 @@ relation fun_free_block: `%%`(instr*, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.6-418.17 rule fun_free_block_case_0{instr_lst : instr*, v_free : free, var_2_lst : free*, var_1 : free, var_0 : labelidx*}: `%%`(instr_lst, v_free[LABELS_free = var_0]) + -- if (|var_2_lst| = |instr_lst|) -- (fun_free_instr: `%%`(v_instr, var_2))*{var_2 <- var_2_lst, v_instr <- instr_lst} -- fun_free_list: `%%`(var_2_lst, var_1) -- fun_shift_labelidxs: `%%`(v_free.LABELS_free, var_0) @@ -5666,6 +5607,7 @@ relation fun_free_expr: `%%`(expr, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule fun_free_expr_case_0{instr_lst : instr*, var_1_lst : free*, var_0 : free}: `%%`(instr_lst, var_0) + -- if (|var_1_lst| = |instr_lst|) -- (fun_free_instr: `%%`(v_instr, var_1))*{var_1 <- var_1_lst, v_instr <- instr_lst} -- fun_free_list: `%%`(var_1_lst, var_0) @@ -5913,6 +5855,7 @@ relation fun_free_func: `%%`(func, free) rule fun_free_func_case_0{v_typeidx : uN, local_lst : local*, v_expr : instr*, var_3 : free, var_2_lst : free*, var_1 : free, var_0 : free}: `%%`(FUNC_func(v_typeidx, local_lst, v_expr), var_0 +++ var_1 +++ var_3[LOCALS_free = []]) -- fun_free_block: `%%`(v_expr, var_3) + -- if (|var_2_lst| = |local_lst|) -- (fun_free_local: `%%`(v_local, var_2))*{var_2 <- var_2_lst, v_local <- local_lst} -- fun_free_list: `%%`(var_2_lst, var_1) -- fun_free_typeidx: `%%`(v_typeidx, var_0) @@ -5961,6 +5904,7 @@ relation fun_free_elem: `%%`(elem, free) rule fun_free_elem_case_0{v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode, var_3 : free, var_2_lst : free*, var_1 : free, var_0 : free}: `%%`(ELEM_elem(v_reftype, expr_lst, v_elemmode), var_0 +++ var_1 +++ var_3) -- fun_free_elemmode: `%%`(v_elemmode, var_3) + -- if (|var_2_lst| = |expr_lst|) -- (fun_free_expr: `%%`(v_expr, var_2))*{var_2 <- var_2_lst, v_expr <- expr_lst} -- fun_free_list: `%%`(var_2_lst, var_1) -- fun_free_reftype: `%%`(v_reftype, var_0) @@ -5991,26 +5935,37 @@ relation fun_free_module: `%%`(module, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec rule fun_free_module_case_0{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, var_21_lst : free*, var_20 : free, var_19_lst : free*, var_18 : free, var_17_opt : free?, var_16 : free, var_15_lst : free*, var_14 : free, var_13_lst : free*, var_12 : free, var_11_lst : free*, var_10 : free, var_9_lst : free*, var_8 : free, var_7_lst : free*, var_6 : free, var_5_lst : free*, var_4 : free, var_3_lst : free*, var_2 : free, var_1_lst : free*, var_0 : free}: `%%`(MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst), var_0 +++ var_2 +++ var_4 +++ var_6 +++ var_8 +++ var_10 +++ var_12 +++ var_14 +++ var_16 +++ var_18 +++ var_20) + -- if (|var_21_lst| = |export_lst|) -- (fun_free_export: `%%`(v_export, var_21))*{var_21 <- var_21_lst, v_export <- export_lst} -- fun_free_list: `%%`(var_21_lst, var_20) + -- if (|var_19_lst| = |import_lst|) -- (fun_free_import: `%%`(v_import, var_19))*{var_19 <- var_19_lst, v_import <- import_lst} -- fun_free_list: `%%`(var_19_lst, var_18) + -- if ((var_17_opt = ?()) <=> (start_opt = ?())) -- (fun_free_start: `%%`(v_start, var_17))?{var_17 <- var_17_opt, v_start <- start_opt} -- fun_free_opt: `%%`(var_17_opt, var_16) + -- if (|var_15_lst| = |elem_lst|) -- (fun_free_elem: `%%`(v_elem, var_15))*{var_15 <- var_15_lst, v_elem <- elem_lst} -- fun_free_list: `%%`(var_15_lst, var_14) + -- if (|var_13_lst| = |data_lst|) -- (fun_free_data: `%%`(v_data, var_13))*{var_13 <- var_13_lst, v_data <- data_lst} -- fun_free_list: `%%`(var_13_lst, var_12) + -- if (|var_11_lst| = |func_lst|) -- (fun_free_func: `%%`(v_func, var_11))*{var_11 <- var_11_lst, v_func <- func_lst} -- fun_free_list: `%%`(var_11_lst, var_10) + -- if (|var_9_lst| = |table_lst|) -- (fun_free_table: `%%`(v_table, var_9))*{var_9 <- var_9_lst, v_table <- table_lst} -- fun_free_list: `%%`(var_9_lst, var_8) + -- if (|var_7_lst| = |mem_lst|) -- (fun_free_mem: `%%`(v_mem, var_7))*{var_7 <- var_7_lst, v_mem <- mem_lst} -- fun_free_list: `%%`(var_7_lst, var_6) + -- if (|var_5_lst| = |global_lst|) -- (fun_free_global: `%%`(v_global, var_5))*{var_5 <- var_5_lst, v_global <- global_lst} -- fun_free_list: `%%`(var_5_lst, var_4) + -- if (|var_3_lst| = |tag_lst|) -- (fun_free_tag: `%%`(v_tag, var_3))*{var_3 <- var_3_lst, v_tag <- tag_lst} -- fun_free_list: `%%`(var_3_lst, var_2) + -- if (|var_1_lst| = |type_lst|) -- (fun_free_type: `%%`(v_type, var_1))*{var_1 <- var_1_lst, v_type <- type_lst} -- fun_free_list: `%%`(var_1_lst, var_0) @@ -6026,6 +5981,7 @@ relation fun_dataidx_funcs: `%%`(func*, dataidx*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec rule fun_dataidx_funcs_case_0{func_lst : func*, var_1_lst : free*, var_0 : free}: `%%`(func_lst, var_0.DATAS_free) + -- if (|var_1_lst| = |func_lst|) -- (fun_free_func: `%%`(v_func, var_1))*{var_1 <- var_1_lst, v_func <- func_lst} -- fun_free_list: `%%`(var_1_lst, var_0) @@ -6253,11 +6209,13 @@ relation fun_unrollht: `%%%`(context, heaptype, subtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule fun_unrollht_case_1{C : context, v_typeidx : uN, var_0 : subtype}: `%%%`(C, _IDX_heaptype(v_typeidx), var_0) + -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) -- fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(v_typeidx).0], var_0) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule fun_unrollht_case_2{C : context, i : nat}: `%%%`(C, REC_heaptype(i), C.RECS_context[i]) + -- if (i < |C.RECS_context|) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -6399,6 +6357,8 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 rule mk_Subtype_ok{C : context, x_lst : idx*, v_comptype : comptype, x_0 : idx, x'_lst_lst : idx**, comptype'_lst : comptype*, var_0_lst : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- x_lst}, v_comptype), OK_oktypeidx(x_0)) + -- if (|var_0_lst| = |x_lst|) + -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- x_lst} -- (fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(x).0], var_0))*{var_0 <- var_0_lst, x <- x_lst} -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- x_lst}, v_comptype)) @@ -6407,8 +6367,8 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- x'_lst}, comptype')))*{comptype' <- comptype'_lst, x'_lst <- x'_lst_lst} -- if (|x_lst| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- x_lst} - -- if (|comptype'_lst| = |x_lst|) - -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- x_lst} + -- if (|var_0_lst| = |comptype'_lst|) + -- if (|var_0_lst| = |x'_lst_lst|) -- (if (var_0 = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- x'_lst}, comptype')))*{var_0 <- var_0_lst, comptype' <- comptype'_lst, x'_lst <- x'_lst_lst} -- Comptype_ok: `%|-%:OK`(C, v_comptype) -- (Comptype_sub: `%|-%<:%`(C, v_comptype, comptype'))*{comptype' <- comptype'_lst} @@ -6446,6 +6406,7 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 rule mk_Subtype_ok2{C : context, typeuse_lst : typeuse*, compttype : comptype, x : idx, i : nat, typeuse'_lst_lst : typeuse**, comptype'_lst : comptype*, v_comptype : comptype, var_0_lst : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse_lst, compttype), OK_oktypeidxnat(x, i)) + -- if (|var_0_lst| = |typeuse_lst|) -- (fun_unrollht: `%%%`(C, $heaptype_typeuse(v_typeuse), var_0))*{var_0 <- var_0_lst, v_typeuse <- typeuse_lst} -- wf_context: `%`(C) -- wf_comptype: `%`(v_comptype) @@ -6455,7 +6416,8 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'_lst, comptype')))*{comptype' <- comptype'_lst, typeuse'_lst <- typeuse'_lst_lst} -- if (|typeuse_lst| <= 1) -- (if $before(v_typeuse, x, i))*{v_typeuse <- typeuse_lst} - -- if (|comptype'_lst| = |typeuse_lst|) + -- if (|var_0_lst| = |comptype'_lst|) + -- if (|var_0_lst| = |typeuse'_lst_lst|) -- (if (var_0 = SUB_subtype(?(), typeuse'_lst, comptype')))*{var_0 <- var_0_lst, comptype' <- comptype'_lst, typeuse'_lst <- typeuse'_lst_lst} -- Comptype_ok: `%|-%:OK`(C, v_comptype) -- (Comptype_sub: `%|-%<:%`(C, v_comptype, comptype'))*{comptype' <- comptype'_lst} @@ -7506,6 +7468,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct_new{C : context, x : idx, zt_lst : storagetype*, mut_opt_lst : mut?*, var_0_lst : valtype*}: `%|-%:%`(C, STRUCT_NEW_instr(x), mk_instrtype_instrtype(mk_list_resulttype(var_0_lst), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- if (|var_0_lst| = |zt_lst|) -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- var_0_lst, zt <- zt_lst} -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT_NEW_instr(x)) @@ -7517,6 +7480,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct_new_default{C : context, x : idx, mut_opt_lst : mut?*, zt_lst : storagetype*, var_0_lst : valtype*}: `%|-%:%`(C, STRUCT_NEW_DEFAULT_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- if (|var_0_lst| = |zt_lst|) -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- var_0_lst, zt <- zt_lst} -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT_NEW_DEFAULT_instr(x)) @@ -8885,13 +8849,6 @@ def $inv_zbytes_(v_storagetype : storagetype, var_0 : byte*) : lit_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_cbytes_(v_Cnn : Cnn, var_0 : byte*) : lit_ -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_signed__before_fun_signed__case_1: `%%`(N, nat) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_signed__case_0{v_N : nat, i : nat}: - `%%`(v_N, i) - -- if (i < (2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_signed_: `%%%`(N, nat, int) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8902,16 +8859,8 @@ relation fun_signed_: `%%%`(N, nat, int) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_signed__case_1{v_N : nat, i : nat}: `%%%`(v_N, i, ((i : nat <:> int) - ((2 ^ v_N) : nat <:> int))) - -- ~ fun_signed__before_fun_signed__case_1: `%%`(v_N, i) -- if (((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ v_N))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_inv_signed__before_fun_inv_signed__case_1: `%%`(N, int) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_inv_signed__case_0{v_N : nat, i : int}: - `%%`(v_N, i) - -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_inv_signed_: `%%%`(N, int, nat) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8922,7 +8871,6 @@ relation fun_inv_signed_: `%%%`(N, int, nat) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_inv_signed__case_1{v_N : nat, i : int}: `%%%`(v_N, i, ((i + ((2 ^ v_N) : nat <:> int)) : int <:> nat)) - -- ~ fun_inv_signed__before_fun_inv_signed__case_1: `%%`(v_N, i) -- if ((- ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -9052,32 +9000,6 @@ def $imul_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN def $imul_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ v_N))) -- wf_uN: `%%`(v_N, mk_uN_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ v_N)))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_idiv__before_fun_idiv__case_1: `%%%%`(N, sx, iN, iN) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_idiv__case_0{v_N : nat, i_1 : uN}: - `%%%%`(v_N, U_sx, i_1, mk_uN_iN(0)) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_idiv__before_fun_idiv__case_3: `%%%%`(N, sx, iN, iN) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_idiv__case_2{v_N : nat, i_1 : uN}: - `%%%%`(v_N, S_sx, i_1, mk_uN_iN(0)) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_idiv__before_fun_idiv__case_4: `%%%%`(N, sx, iN, iN) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_idiv__case_3{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: - `%%%%`(v_N, S_sx, i_1, i_2) - -- ~ fun_idiv__before_fun_idiv__case_3: `%%%%`(v_N, S_sx, i_1, i_2) - -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) - -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) - -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_idiv__case_2{v_N : nat, i_1 : uN}: - `%%%%`(v_N, S_sx, i_1, mk_uN_iN(0)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -9087,7 +9009,6 @@ relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_idiv__case_1{v_N : nat, i_1 : uN, i_2 : uN}: `%%%%%`(v_N, U_sx, i_1, i_2, ?(mk_uN_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)))) - -- ~ fun_idiv__before_fun_idiv__case_1: `%%%%`(v_N, U_sx, i_1, i_2) -- wf_uN: `%%`(v_N, mk_uN_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -9097,7 +9018,6 @@ relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_idiv__case_3{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: `%%%%%`(v_N, S_sx, i_1, i_2, ?()) - -- ~ fun_idiv__before_fun_idiv__case_3: `%%%%`(v_N, S_sx, i_1, i_2) -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) @@ -9105,24 +9025,11 @@ relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_idiv__case_4{v_N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: `%%%%%`(v_N, S_sx, i_1, i_2, ?(mk_uN_iN(var_0))) - -- ~ fun_idiv__before_fun_idiv__case_4: `%%%%`(v_N, S_sx, i_1, i_2) -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_2) -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_1) -- fun_inv_signed_: `%%%`(v_N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) -- wf_uN: `%%`(v_N, mk_uN_uN(var_0)) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_irem__before_fun_irem__case_1: `%%%%`(N, sx, iN, iN) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_irem__case_0{v_N : nat, i_1 : uN}: - `%%%%`(v_N, U_sx, i_1, mk_uN_iN(0)) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_irem__before_fun_irem__case_3: `%%%%`(N, sx, iN, iN) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_irem__case_2{v_N : nat, i_1 : uN}: - `%%%%`(v_N, S_sx, i_1, mk_uN_iN(0)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -9132,7 +9039,6 @@ relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_irem__case_1{v_N : nat, i_1 : uN, i_2 : uN}: `%%%%%`(v_N, U_sx, i_1, i_2, ?(mk_uN_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))) - -- ~ fun_irem__before_fun_irem__case_1: `%%%%`(v_N, U_sx, i_1, i_2) -- wf_uN: `%%`(v_N, mk_uN_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -9142,7 +9048,6 @@ relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_irem__case_3{v_N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: `%%%%%`(v_N, S_sx, i_1, i_2, ?(mk_uN_iN(var_0))) - -- ~ fun_irem__before_fun_irem__case_3: `%%%%`(v_N, S_sx, i_1, i_2) -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_2) -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_1) -- fun_inv_signed_: `%%%`(v_N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) @@ -9538,11 +9443,13 @@ relation fun_cunpacknum_: `%%%`(storagetype, lit_, lit_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_cunpacknum__case_5{c : uN}: `%%%`(I8_storagetype, mk_lit__2_lit_(I8_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I8_packtype)) =/= ?()) -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_cunpacknum__case_6{c : uN}: `%%%`(I16_storagetype, mk_lit__2_lit_(I16_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I16_packtype)) =/= ?()) -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -10972,6 +10879,7 @@ relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) `%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)))*{c_1 <- c_1_lst} -- wf_bit: `%`(mk_bit_bit(0)) -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)) @@ -10982,6 +10890,7 @@ relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) `%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)))*{c_1 <- c_1_lst} -- wf_bit: `%`(mk_bit_bit(0)) -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)) @@ -10992,6 +10901,7 @@ relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) `%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)))*{c_1 <- c_1_lst} -- wf_bit: `%`(mk_bit_bit(0)) -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)) @@ -11002,6 +10912,7 @@ relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) `%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)))*{c_1 <- c_1_lst} -- wf_bit: `%`(mk_bit_bit(0)) -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)) @@ -11057,6 +10968,7 @@ relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)) + -- (if ($proj_uN_0(i).0 < |c_1_lst ++ c_2_lst|))*{i <- i_lst} -- if (c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -11068,6 +10980,7 @@ relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)) + -- (if ($proj_uN_0(i).0 < |c_1_lst ++ c_2_lst|))*{i <- i_lst} -- if (c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -11079,6 +10992,7 @@ relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)) + -- (if ($proj_uN_0(i).0 < |c_1_lst ++ c_2_lst|))*{i <- i_lst} -- if (c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -11090,6 +11004,7 @@ relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)) + -- (if ($proj_uN_0(i).0 < |c_1_lst ++ c_2_lst|))*{i <- i_lst} -- if (c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -11794,550 +11709,126 @@ relation fun_vrelop_: `%%%%%`(shape, vrelop_, vec_, vec_, vec_) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_25: `%%%%`(shape, shape, vcvtop__, lane_) +relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_26: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_25: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_27: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_26: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_25: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_29: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_30: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_29: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_31: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_30: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_29: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_33: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_34: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_33: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_35: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_34: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_33: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_37: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_38: `%%%%`(shape, shape, vcvtop__, lane_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_37: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_39: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_38: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_37: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_41: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_42: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_41: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_43: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_42: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_41: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_45: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_46: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_45: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_47: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_46: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_45: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_49: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_50: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_49: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_51: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_50: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_49: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_53: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_54: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_53: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_55: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_54: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- ~ fun_lcvtop___before_fun_lcvtop___case_53: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_57: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_56{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_59: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_58{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_61: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_60{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_63: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_62{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_65: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_64{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_67: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_66{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: - `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_69: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_68{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop___before_fun_lcvtop___case_71: `%%%%`(shape, shape, vcvtop__, lane_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_70{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: - `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: - `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: - `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: - `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: - `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: - `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) + rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_20{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: @@ -12372,21 +11863,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_25: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_26: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_27{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_27: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) @@ -12399,21 +11887,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_29: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_30: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_31{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_31: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) @@ -12426,21 +11911,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_33: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_34: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_35{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_35: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) @@ -12453,21 +11935,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_37: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_38: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_39{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_39: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) @@ -12480,21 +11959,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_41: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_42: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_43{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_43: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) @@ -12507,21 +11983,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_45: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_46: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_47{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_47: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) @@ -12534,21 +12007,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_49: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_50: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_51{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_51: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) @@ -12561,21 +12031,18 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_53: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_54: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_55{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) - -- ~ fun_lcvtop___before_fun_lcvtop___case_55: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) @@ -12588,7 +12055,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_57{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_57: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) @@ -12601,7 +12067,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_59{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_59: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) @@ -12614,7 +12079,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_61{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_61: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) @@ -12627,7 +12091,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_63{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_63: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) @@ -12640,7 +12103,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_65{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_65: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) @@ -12653,7 +12115,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_67{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_67: `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) @@ -12666,7 +12127,6 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_69{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_69: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) @@ -12679,67 +12139,15 @@ relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_lcvtop___case_71{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst}) - -- ~ fun_lcvtop___before_fun_lcvtop___case_71: `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_vcvtop___before_fun_vcvtop___case_1: `%%%%`(shape, shape, vcvtop__, vec_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_vcvtop___case_0{Lnn_1 : lanetype, v_M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**, var_2_lst : lane_**, var_1 : zero?, var_0 : half?}: - `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, v_1) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, c_1, var_2))*{var_2 <- var_2_lst, c_1 <- c_1_lst} - -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, var_1) - -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, var_0) - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(v_M))) - -- if ((var_0 = ?()) /\ (var_1 = ?())) - -- if (c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), v_1)) - -- if (c_lst_lst = $setproduct_(syntax lane_, var_2_lst)) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -relation fun_vcvtop___before_fun_vcvtop___case_2: `%%%%`(shape, shape, vcvtop__, vec_) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, v_half : half, c_1_lst : lane_*, c_lst_lst : lane_**, var_1_lst : lane_**, var_0 : half?}: - `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1) - -- ~ fun_vcvtop___before_fun_vcvtop___case_1: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- var_1_lst, c_1 <- c_1_lst} - -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, var_0) - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(M_2))) - -- if (var_0 = ?(v_half)) - -- if (c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1)[$fun_half(v_half, 0, M_2) : M_2]) - -- if (c_lst_lst = $setproduct_(syntax lane_, var_1_lst)) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst)*{c_lst <- c_lst_lst}) - - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - rule fun_vcvtop___case_0{Lnn_1 : lanetype, v_M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**, var_2_lst : lane_**, var_1 : zero?, var_0 : half?}: - `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, v_1) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, c_1, var_2))*{var_2 <- var_2_lst, c_1 <- c_1_lst} - -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, var_1) - -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, var_0) - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- c_lst}*{c_lst <- c_lst_lst} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(v_M))) - -- if ((var_0 = ?()) /\ (var_1 = ?())) - -- if (c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), v_1)) - -- if (c_lst_lst = $setproduct_(syntax lane_, var_2_lst)) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst}) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_0{Lnn_1 : lanetype, v_M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**, var_2_lst : lane_**, var_1 : zero?, var_0 : half?}: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, v_1, v) + -- if (|var_2_lst| = |c_1_lst|) -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, c_1, var_2))*{var_2 <- var_2_lst, c_1 <- c_1_lst} -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, var_1) -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, var_0) @@ -12751,12 +12159,13 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if ((var_0 = ?()) /\ (var_1 = ?())) -- if (c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), v_1)) -- if (c_lst_lst = $setproduct_(syntax lane_, var_2_lst)) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, v_half : half, c_1_lst : lane_*, c_lst_lst : lane_**, var_1_lst : lane_**, var_0 : half?}: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1, v) - -- ~ fun_vcvtop___before_fun_vcvtop___case_1: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1) + -- if (|var_1_lst| = |c_1_lst|) -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- var_1_lst, c_1 <- c_1_lst} -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) @@ -12767,13 +12176,14 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (var_0 = ?(v_half)) -- if (c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1)[$fun_half(v_half, 0, M_2) : M_2]) -- if (c_lst_lst = $setproduct_(syntax lane_, var_1_lst)) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst)*{c_lst <- c_lst_lst}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst)*{c_lst <- c_lst_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**, var_2 : lane_, var_1_lst : lane_**, var_0 : zero?}: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1, v) - -- ~ fun_vcvtop___before_fun_vcvtop___case_2: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1) -- fun_zero: `%%`(Lnn_2, var_2) + -- if (|var_1_lst| = |c_1_lst|) -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- var_1_lst, c_1 <- c_1_lst} -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) @@ -12784,6 +12194,7 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (var_0 = ?(ZERO_zero)) -- if (c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1)) -- if (c_lst_lst = $setproduct_(syntax lane_, var_1_lst ++ [var_2]^M_1{})) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst)*{c_lst <- c_lst_lst}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst)*{c_lst <- c_lst_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -12888,7 +12299,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst})) @@ -12904,7 +12317,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst})) @@ -12920,7 +12335,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst})) @@ -12936,7 +12353,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst})) @@ -12952,7 +12371,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst})) @@ -12968,7 +12389,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst})) @@ -12984,7 +12407,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst})) @@ -13000,7 +12425,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst})) @@ -13016,7 +12443,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst})) @@ -13032,7 +12461,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst})) @@ -13048,7 +12479,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst})) @@ -13064,7 +12497,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst})) @@ -13080,7 +12515,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst})) @@ -13096,7 +12533,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst})) @@ -13112,7 +12551,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst})) @@ -13128,7 +12569,9 @@ relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst})) @@ -14057,6 +13500,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (v_M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14079,6 +13523,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (v_M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14101,6 +13546,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (v_M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14123,6 +13569,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (v_M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14145,6 +13592,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (v_M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14167,6 +13615,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (v_M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14189,6 +13638,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (v_M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14211,6 +13661,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (v_M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14233,6 +13684,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (v_M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14255,6 +13707,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (v_M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14277,6 +13730,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (v_M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14299,6 +13753,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (v_M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14321,6 +13776,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (v_M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14343,6 +13799,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (v_M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14365,6 +13822,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (v_M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -14387,6 +13845,7 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (v_M = (2 * M_2)) -- if (c' = var_0) -- if (c'' = var_1) + -- if (|var_2| > 0) -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15354,6 +14813,7 @@ relation fun_with_global: `%%%%`(state, globalidx, val, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_global_case_0{s : store, f : frame, x : uN, v : val}: `%%%%`(mk_state_state(s, f), x, v, mk_state_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.GLOBALS_moduleinst|) -- wf_state: `%`(mk_state_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15361,6 +14821,7 @@ relation fun_with_table: `%%%%%`(state, tableidx, nat, ref, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_table_case_0{s : store, f : frame, x : uN, i : nat, r : ref}: `%%%%%`(mk_state_state(s, f), x, i, r, mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.TABLES_moduleinst|) -- wf_state: `%`(mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15368,6 +14829,7 @@ relation fun_with_tableinst: `%%%%`(state, tableidx, tableinst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_tableinst_case_0{s : store, f : frame, x : uN, ti : tableinst}: `%%%%`(mk_state_state(s, f), x, ti, mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.TABLES_moduleinst|) -- wf_state: `%`(mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15375,6 +14837,7 @@ relation fun_with_mem: `%%%%%%`(state, memidx, nat, nat, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_mem_case_0{s : store, f : frame, x : uN, i : nat, j : nat, b_lst : byte*}: `%%%%%%`(mk_state_state(s, f), x, i, j, b_lst, mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b_lst], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.MEMS_moduleinst|) -- wf_state: `%`(mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15382,6 +14845,7 @@ relation fun_with_meminst: `%%%%`(state, memidx, meminst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_meminst_case_0{s : store, f : frame, x : uN, mi : meminst}: `%%%%`(mk_state_state(s, f), x, mi, mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.MEMS_moduleinst|) -- wf_state: `%`(mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15389,6 +14853,7 @@ relation fun_with_elem: `%%%%`(state, elemidx, ref*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_elem_case_0{s : store, f : frame, x : uN, r_lst : ref*}: `%%%%`(mk_state_state(s, f), x, r_lst, mk_state_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r_lst], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.ELEMS_moduleinst|) -- wf_state: `%`(mk_state_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15396,6 +14861,7 @@ relation fun_with_data: `%%%%`(state, dataidx, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_with_data_case_0{s : store, f : frame, x : uN, b_lst : byte*}: `%%%%`(mk_state_state(s, f), x, b_lst, mk_state_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b_lst], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.DATAS_moduleinst|) -- wf_state: `%`(mk_state_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15433,19 +14899,6 @@ relation fun_add_exninst: `%%%`(state, exninst*, state) `%%%`(mk_state_state(s, f), exn_lst, mk_state_state(s[EXNS_store =++ exn_lst], f)) -- wf_state: `%`(mk_state_state(s[EXNS_store =++ exn_lst], f)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation fun_growtable_before_fun_growtable_case_1: `%%%`(tableinst, nat, ref) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fun_growtable_case_0{v_tableinst : tableinst, v_n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, j_opt : u64?, rt : reftype, r'_lst : ref*, i' : uN}: - `%%%`(v_tableinst, v_n, r) - -- wf_tableinst: `%`(tableinst') - -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS r'_lst}) - -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) - -- if (v_tableinst = {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS r'_lst}) - -- if (tableinst' = {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) - -- if ($proj_uN_0(i').0 = (|r'_lst| + v_n)) - -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- j_opt} - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -15462,20 +14915,6 @@ relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_growtable_case_1{x0 : tableinst, x1 : nat, x2 : ref}: `%%%%`(x0, x1, x2, ?()) - -- ~ fun_growtable_before_fun_growtable_case_1: `%%%`(x0, x1, x2) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation fun_growmem_before_fun_growmem_case_1: `%%`(meminst, nat) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fun_growmem_case_0{v_meminst : meminst, v_n : nat, meminst' : meminst, at : addrtype, i : uN, j_opt : u64?, b_lst : byte*, i' : uN}: - `%%`(v_meminst, v_n) - -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES b_lst}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i', j_opt)), BYTES b_lst ++ mk_byte_byte(0)^(v_n * (64 * $Ki)){}}) - -- if (v_meminst = {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES b_lst}) - -- if (meminst' = {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i', j_opt)), BYTES b_lst ++ mk_byte_byte(0)^(v_n * (64 * $Ki)){}}) - -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b_lst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (v_n : nat <:> rat))) - -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- j_opt} ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec relation fun_growmem: `%%%`(meminst, nat, meminst?) @@ -15493,7 +14932,6 @@ relation fun_growmem: `%%%`(meminst, nat, meminst?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fun_growmem_case_1{x0 : meminst, x1 : nat}: `%%%`(x0, x1, ?()) - -- ~ fun_growmem_before_fun_growmem_case_1: `%%`(x0, x1) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) @@ -16338,12 +15776,12 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- if ($proj_num__0(i) =/= ?()) -- fun_vshiftop_: `%%%%%`(sh, vshiftop, c_1, !($proj_num__0(i)), var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -17103,6 +16541,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_ref_func{z : state, val_lst : val*, v_n : n, a : addr, yy : typeuse, v_m : m, f : frame, instr_lst : instr*, fi : funcinst, t_1_lst : valtype*, t_2_lst : valtype*, x : idx, t_lst : valtype*, var_0_lst : val?*}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [FRAME__instr(v_m, f, [LABEL__instr(v_m, [], instr_lst)])]) + -- if (|var_0_lst| = |t_lst|) -- (fun_default_: `%%`(t, var_0))*{var_0 <- var_0_lst, t <- t_lst} -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) -- wf_instr: `%`(FRAME__instr(v_m, f, [LABEL__instr(v_m, [], instr_lst)])) @@ -17448,7 +16887,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_K))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_K))), mk_lane__2_lane_(v_Jnn, $extend__(v_M, $jsizenn(v_Jnn), v_sx, j))))^v_K{j <- j_lst} - -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((v_M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_fill_succ{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx, var_0 : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_FILL_instr(x)]) - -- fun_memarg0: `%`(var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_memarg0: `%`(var_0) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, var_0)) @@ -17568,9 +17007,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_le{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_COPY_instr(x_1, x_2)]) - -- fun_memarg0: `%`(var_0) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- fun_memarg0: `%`(var_0) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -17586,9 +17025,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_gt{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_COPY_instr(x_1, x_2)]) - -- fun_memarg0: `%`(var_0) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- fun_memarg0: `%`(var_0) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -17619,10 +17058,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_init_succ{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx, var_0 : memarg}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN($proj_byte_0($fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_INIT_instr(x, y)]) - -- fun_memarg0: `%`(var_0) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$fun_data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) + -- fun_memarg0: `%`(var_0) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN($proj_byte_0($fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) @@ -17684,14 +17123,16 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct_new_default{z : state, x : idx, val_lst : val*, mut_opt_lst : mut?*, zt_lst : storagetype*, var_1_lst : valtype*, var_0_lst : val?*}: `%~>%`(mk_config_config(z, [STRUCT_NEW_DEFAULT_instr(x)]), $instr_val(v_val)*{v_val <- val_lst} ++ [STRUCT_NEW_instr(x)]) + -- if (|var_1_lst| = |zt_lst|) -- (fun_unpack: `%%`(zt, var_1))*{var_1 <- var_1_lst, zt <- zt_lst} + -- if (|var_1_lst| = |var_0_lst|) -- (fun_default_: `%%`(var_1, var_0))*{var_1 <- var_1_lst, var_0 <- var_0_lst} -- (wf_val: `%`(v_val))*{v_val <- val_lst} -- wf_config: `%`(mk_config_config(z, [STRUCT_NEW_DEFAULT_instr(x)])) -- wf_instr: `%`(STRUCT_NEW_instr(x)) -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) - -- if (|val_lst| = |zt_lst|) + -- if (|var_0_lst| = |val_lst|) -- (if (var_0 = ?(v_val)))*{var_0 <- var_0_lst, v_val <- val_lst} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -17703,10 +17144,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct_get_struct{z : state, a : addr, sx_opt : sx?, x : idx, i : u32, zt_lst : storagetype*, mut_opt_lst : mut?*, var_0 : val}: `%~>%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) STRUCT_GET_instr(sx_opt, x, i)]), [$instr_val(var_0)]) - -- fun_unpackfield_: `%%%%`(zt_lst[$proj_uN_0(i).0], sx_opt, $fun_structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0], var_0) -- if ($proj_uN_0(i).0 < |zt_lst|) -- if ($proj_uN_0(i).0 < |$fun_structinst(z)[a].FIELDS_structinst|) -- if (a < |$fun_structinst(z)|) + -- fun_unpackfield_: `%%%%`(zt_lst[$proj_uN_0(i).0], sx_opt, $fun_structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0], var_0) -- wf_config: `%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) STRUCT_GET_instr(sx_opt, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) @@ -17754,8 +17195,8 @@ relation Step_read: `%~>%`(config, instr*) rule array_new_data_num{z : state, i : num_, v_n : n, x : idx, y : idx, zt : storagetype, c_lst : lit_*, mut_opt : mut?, var_1_lst : lit_*, var_0_lst : instr*}: `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)]), var_0_lst ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) -- (fun_cunpacknum_: `%%%`(zt, c, var_1))^v_n{var_1 <- var_1_lst, c <- c_lst} + -- (if ($cunpack(zt) =/= ?()))^v_n{var_1 <- var_1_lst} -- (fun_const: `%%%`(!($cunpack(zt)), var_1, var_0))^v_n{var_1 <- var_1_lst, var_0 <- var_0_lst} - -- (if ($cunpack(zt) =/= ?()))^v_n{} -- (wf_lit_: `%%`(zt, c))*{c <- c_lst} -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)])) -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) @@ -17782,10 +17223,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_get_array{z : state, a : addr, i : num_, sx_opt : sx?, x : idx, zt : storagetype, mut_opt : mut?, var_0 : val}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)]), [$instr_val(var_0)]) - -- fun_unpackfield_: `%%%%`(zt, sx_opt, $fun_arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0], var_0) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$fun_arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) + -- fun_unpackfield_: `%%%%`(zt, sx_opt, $fun_arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0], var_0) -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)])) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) @@ -18000,11 +17441,11 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_num{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, zt : storagetype, c : lit_, mut_opt : mut?, var_1 : lit_, var_0 : instr}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) var_0 ARRAY_SET_instr(x) REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_INIT_DATA_instr(x, y)]) - -- fun_cunpacknum_: `%%%`(zt, c, var_1) - -- fun_const: `%%%`(!($cunpack(zt)), var_1, var_0) - -- if ($cunpack(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) + -- fun_cunpacknum_: `%%%`(zt, c, var_1) + -- if ($cunpack(zt) =/= ?()) + -- fun_const: `%%%`(!($cunpack(zt)), var_1, var_0) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a)) @@ -18104,8 +17545,8 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 rule table_set_val{z : state, at : addrtype, i : num_, v_ref : ref, x : idx, var_0 : state}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)]), mk_config_config(var_0, [])) - -- fun_with_table: `%%%%%`(z, x, $proj_uN_0(!($proj_num__0(i))).0, v_ref, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_table: `%%%%%`(z, x, $proj_uN_0(!($proj_num__0(i))).0, v_ref, var_0) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)])) -- wf_config: `%`(mk_config_config(var_0, [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_table(z, x).REFS_tableinst|) @@ -18145,8 +17586,8 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 rule store_num_val{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, b_lst : byte*, var_0 : state}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), mk_config_config(var_0, [])) - -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst, var_0) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(mk_config_config(var_0, [])) -- if (b_lst = $nbytes_(nt, c)) @@ -18162,8 +17603,8 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 rule store_pack_val{z : state, at : addrtype, i : num_, v_Inn : Inn, c : num_, v_n : n, x : idx, ao : memarg, b_lst : byte*, var_0 : state}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)]), mk_config_config(var_0, [])) - -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst, var_0) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)])) -- wf_config: `%`(mk_config_config(var_0, [])) -- if ($proj_num__0(c) =/= ?()) @@ -18180,8 +17621,8 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 rule vstore_val{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, b_lst : byte*, var_0 : state}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), mk_config_config(var_0, [])) - -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst, var_0) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(mk_config_config(var_0, [])) -- if (b_lst = $vbytes_(V128_vectype, c)) @@ -18197,8 +17638,8 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 rule vstore_lane_val{z : state, at : addrtype, i : num_, c : vec_, v_N : N, x : idx, ao : memarg, j : laneidx, b_lst : byte*, v_Jnn : Jnn, v_M : M, var_0 : state}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), mk_config_config(var_0, [])) - -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst, var_0) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)])) -- wf_config: `%`(mk_config_config(var_0, [])) -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]) =/= ?()) @@ -18254,9 +17695,9 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule struct_set_struct{z : state, a : addr, v_val : val, x : idx, i : u32, zt_lst : storagetype*, mut_opt_lst : mut?*, var_1 : fieldval, var_0 : state}: `%~>%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) $instr_val(v_val) STRUCT_SET_instr(x, i)]), mk_config_config(var_0, [])) + -- if ($proj_uN_0(i).0 < |zt_lst|) -- fun_packfield_: `%%%`(zt_lst[$proj_uN_0(i).0], v_val, var_1) -- fun_with_struct: `%%%%%`(z, a, $proj_uN_0(i).0, var_1, var_0) - -- if ($proj_uN_0(i).0 < |zt_lst|) -- wf_config: `%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) $instr_val(v_val) STRUCT_SET_instr(x, i)])) -- wf_config: `%`(mk_config_config(var_0, [])) -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) @@ -18293,8 +17734,8 @@ relation Step: `%~>%`(config, config) rule array_set_array{z : state, a : addr, i : num_, v_val : val, x : idx, zt : storagetype, mut_opt : mut?, var_1 : fieldval, var_0 : state}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)]), mk_config_config(var_0, [])) -- fun_packfield_: `%%%`(zt, v_val, var_1) - -- fun_with_array: `%%%%%`(z, a, $proj_uN_0(!($proj_num__0(i))).0, var_1, var_0) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_array: `%%%%%`(z, a, $proj_uN_0(!($proj_num__0(i))).0, var_1, var_0) -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)])) -- wf_config: `%`(mk_config_config(var_0, [])) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) @@ -18560,26 +18001,31 @@ relation fun_allocexport: `%%%`(moduleinst, export, exportinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexport_case_0{v_moduleinst : moduleinst, v_name : name, x : uN}: `%%%`(v_moduleinst, EXPORT_export(v_name, TAG_externidx(x)), {NAME v_name, ADDR TAG_externaddr(v_moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |v_moduleinst.TAGS_moduleinst|) -- wf_exportinst: `%`({NAME v_name, ADDR TAG_externaddr(v_moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexport_case_1{v_moduleinst : moduleinst, v_name : name, x : uN}: `%%%`(v_moduleinst, EXPORT_export(v_name, GLOBAL_externidx(x)), {NAME v_name, ADDR GLOBAL_externaddr(v_moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |v_moduleinst.GLOBALS_moduleinst|) -- wf_exportinst: `%`({NAME v_name, ADDR GLOBAL_externaddr(v_moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexport_case_2{v_moduleinst : moduleinst, v_name : name, x : uN}: `%%%`(v_moduleinst, EXPORT_export(v_name, MEM_externidx(x)), {NAME v_name, ADDR MEM_externaddr(v_moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |v_moduleinst.MEMS_moduleinst|) -- wf_exportinst: `%`({NAME v_name, ADDR MEM_externaddr(v_moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexport_case_3{v_moduleinst : moduleinst, v_name : name, x : uN}: `%%%`(v_moduleinst, EXPORT_export(v_name, TABLE_externidx(x)), {NAME v_name, ADDR TABLE_externaddr(v_moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |v_moduleinst.TABLES_moduleinst|) -- wf_exportinst: `%`({NAME v_name, ADDR TABLE_externaddr(v_moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexport_case_4{v_moduleinst : moduleinst, v_name : name, x : uN}: `%%%`(v_moduleinst, EXPORT_export(v_name, FUNC_externidx(x)), {NAME v_name, ADDR FUNC_externaddr(v_moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |v_moduleinst.FUNCS_moduleinst|) -- wf_exportinst: `%`({NAME v_name, ADDR FUNC_externaddr(v_moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18587,6 +18033,7 @@ relation fun_allocexports: `%%%`(moduleinst, export*, exportinst*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocexports_case_0{v_moduleinst : moduleinst, export_lst : export*, var_0_lst : exportinst*}: `%%%`(v_moduleinst, export_lst, var_0_lst) + -- if (|var_0_lst| = |export_lst|) -- (fun_allocexport: `%%%`(v_moduleinst, v_export, var_0))*{var_0 <- var_0_lst, v_export <- export_lst} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18595,16 +18042,22 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* rule fun_allocmodule_case_0{s : store, v_module : module, externaddr_lst : externaddr*, val_G_lst : val*, ref_T_lst : ref*, ref_E_lst_lst : ref**, s_7 : store, v_moduleinst : moduleinst, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, tagtype_lst : tagtype*, globaltype_lst : globaltype*, expr_G_lst : expr*, memtype_lst : memtype*, tabletype_lst : tabletype*, expr_T_lst : expr*, x_lst : idx*, local_lst_lst : local**, expr_F_lst : expr*, byte_lst_lst : byte**, datamode_lst : datamode*, elemtype_lst : elemtype*, expr_E_lst_lst : expr**, elemmode_lst : elemmode*, aa_I_lst : tagaddr*, ga_I_lst : globaladdr*, ma_I_lst : memaddr*, ta_I_lst : tableaddr*, fa_I_lst : funcaddr*, dt_lst : deftype*, fa_lst : nat*, i_F_lst : nat*, s_1 : store, aa_lst : tagaddr*, s_2 : store, ga_lst : globaladdr*, s_3 : store, ma_lst : memaddr*, s_4 : store, ta_lst : tableaddr*, s_5 : store, da_lst : dataaddr*, s_6 : store, ea_lst : elemaddr*, xi_lst : exportinst*, var_13 : exportinst*, var_12 : (store, funcaddr*), var_11_lst : elemtype*, var_10 : (store, elemaddr*), var_9 : (store, dataaddr*), var_8_lst : tabletype*, var_7 : (store, tableaddr*), var_6_lst : memtype*, var_5 : (store, memaddr*), var_4_lst : globaltype*, var_3 : (store, globaladdr*), var_2_lst : tagtype*, var_1 : (store, tagaddr*), var_0 : deftype*}: `%%%%%%%`(s, v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst, (s_7, v_moduleinst)) -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}, export_lst, var_13) + -- (if ($proj_uN_0(x).0 < |dt_lst|))*{x <- x_lst} -- fun_allocfuncs: `%%%%%`(s_6, dt_lst[$proj_uN_0(x).0]*{x <- x_lst}, FUNC_funccode(x, local_lst, expr_F)*{expr_F <- expr_F_lst, local_lst <- local_lst_lst, x <- x_lst}, v_moduleinst^|func_lst|{}, var_12) + -- if (|var_11_lst| = |elemtype_lst|) -- (fun_subst_all_reftype: `%%%`(v_elemtype, $typeuse_deftype(dt)*{dt <- dt_lst}, var_11))*{var_11 <- var_11_lst, v_elemtype <- elemtype_lst} -- fun_allocelems: `%%%%`(s_5, var_11_lst, ref_E_lst_lst, var_10) -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data_lst|{}, byte_lst_lst, var_9) + -- if (|var_8_lst| = |tabletype_lst|) -- (fun_subst_all_tabletype: `%%%`(v_tabletype, $typeuse_deftype(dt)*{dt <- dt_lst}, var_8))*{var_8 <- var_8_lst, v_tabletype <- tabletype_lst} -- fun_alloctables: `%%%%`(s_3, var_8_lst, ref_T_lst, var_7) + -- if (|var_6_lst| = |memtype_lst|) -- (fun_subst_all_memtype: `%%%`(v_memtype, $typeuse_deftype(dt)*{dt <- dt_lst}, var_6))*{var_6 <- var_6_lst, v_memtype <- memtype_lst} -- fun_allocmems: `%%%`(s_2, var_6_lst, var_5) + -- if (|var_4_lst| = |globaltype_lst|) -- (fun_subst_all_globaltype: `%%%`(v_globaltype, $typeuse_deftype(dt)*{dt <- dt_lst}, var_4))*{var_4 <- var_4_lst, v_globaltype <- globaltype_lst} -- fun_allocglobals: `%%%%`(s_1, var_4_lst, val_G_lst, var_3) + -- if (|var_2_lst| = |tagtype_lst|) -- (fun_subst_all_tagtype: `%%%`(v_tagtype, $typeuse_deftype(dt)*{dt <- dt_lst}, var_2))*{var_2 <- var_2_lst, v_tagtype <- tagtype_lst} -- fun_alloctags: `%%%`(s, var_2_lst, var_1) -- fun_alloctypes: `%%`(type_lst, var_0) @@ -18618,11 +18071,18 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* -- wf_store: `%`(s_6) -- wf_module: `%`(MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst)) -- (wf_tag: `%`(TAG_tag(v_tagtype)))*{v_tagtype <- tagtype_lst} + -- if (|expr_G_lst| = |globaltype_lst|) -- (wf_global: `%`(GLOBAL_global(v_globaltype, expr_G)))*{expr_G <- expr_G_lst, v_globaltype <- globaltype_lst} -- (wf_mem: `%`(MEMORY_mem(v_memtype)))*{v_memtype <- memtype_lst} + -- if (|expr_T_lst| = |tabletype_lst|) -- (wf_table: `%`(TABLE_table(v_tabletype, expr_T)))*{expr_T <- expr_T_lst, v_tabletype <- tabletype_lst} + -- if (|expr_F_lst| = |local_lst_lst|) + -- if (|expr_F_lst| = |x_lst|) -- (wf_func: `%`(FUNC_func(x, local_lst, expr_F)))*{expr_F <- expr_F_lst, local_lst <- local_lst_lst, x <- x_lst} + -- if (|byte_lst_lst| = |datamode_lst|) -- (wf_data: `%`(DATA_data(byte_lst, v_datamode)))*{byte_lst <- byte_lst_lst, v_datamode <- datamode_lst} + -- if (|elemmode_lst| = |elemtype_lst|) + -- if (|elemmode_lst| = |expr_E_lst_lst|) -- (wf_elem: `%`(ELEM_elem(v_elemtype, expr_E_lst, v_elemmode)))*{v_elemmode <- elemmode_lst, v_elemtype <- elemtype_lst, expr_E_lst <- expr_E_lst_lst} -- wf_moduleinst: `%`({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt_lst, TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS da_lst, ELEMS ea_lst, EXPORTS xi_lst}) @@ -18714,7 +18174,9 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_instantiate_case_0{s : store, v_module : module, externaddr_lst : externaddr*, s' : store, v_moduleinst : moduleinst, instr_E_lst : instr*, instr_D_lst : instr*, instr_S_opt : instr?, xt_I_lst : externtype*, xt_E_lst : externtype*, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, globaltype_lst : globaltype*, expr_G_lst : expr*, tabletype_lst : tabletype*, expr_T_lst : expr*, byte_lst_lst : byte**, datamode_lst : datamode*, reftype_lst : reftype*, expr_E_lst_lst : expr**, elemmode_lst : elemmode*, x_opt : idx?, moduleinst_0 : moduleinst, i_F_lst : nat*, z : state, z' : state, val_G_lst : val*, ref_T_lst : ref*, ref_E_lst_lst : ref**, i_D_lst : nat*, i_E_lst : nat*, var_4_lst : instr**, var_3_lst : instr**, var_2 : (store, moduleinst), var_1 : (state, val*), var_0 : deftype*}: `%%%%`(s, v_module, externaddr_lst, mk_config_config(mk_state_state(s', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt))) + -- (if (i_E < |elem_lst|))^(i_E<|elem_lst|){i_E <- i_E_lst} -- (fun_runelem_: `%%%`(mk_uN_elemidx(i_E), elem_lst[i_E], var_4))^(i_E<|elem_lst|){var_4 <- var_4_lst, i_E <- i_E_lst} + -- (if (i_D < |data_lst|))^(i_D<|data_lst|){i_D <- i_D_lst} -- (fun_rundata_: `%%%`(mk_uN_dataidx(i_D), data_lst[i_D], var_3))^(i_D<|data_lst|){var_3 <- var_3_lst, i_D <- i_D_lst} -- fun_allocmodule: `%%%%%%%`(s, v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst, var_2) -- fun_evalglobals: `%%%%`(z, globaltype_lst, expr_G_lst, var_1) @@ -18727,9 +18189,14 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- wf_config: `%`(mk_config_config(mk_state_state(s', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt))) -- wf_moduletype: `%`(mk_moduletype_moduletype(xt_I_lst, xt_E_lst)) -- wf_module: `%`(MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst)) + -- if (|expr_G_lst| = |globaltype_lst|) -- (wf_global: `%`(GLOBAL_global(v_globaltype, expr_G)))*{expr_G <- expr_G_lst, v_globaltype <- globaltype_lst} + -- if (|expr_T_lst| = |tabletype_lst|) -- (wf_table: `%`(TABLE_table(v_tabletype, expr_T)))*{expr_T <- expr_T_lst, v_tabletype <- tabletype_lst} + -- if (|byte_lst_lst| = |datamode_lst|) -- (wf_data: `%`(DATA_data(byte_lst, v_datamode)))*{byte_lst <- byte_lst_lst, v_datamode <- datamode_lst} + -- if (|elemmode_lst| = |expr_E_lst_lst|) + -- if (|elemmode_lst| = |reftype_lst|) -- (wf_elem: `%`(ELEM_elem(v_reftype, expr_E_lst, v_elemmode)))*{v_elemmode <- elemmode_lst, expr_E_lst <- expr_E_lst_lst, v_reftype <- reftype_lst} -- (wf_start: `%`(START_start(x)))?{x <- x_opt} -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS $globalsxa(externaddr_lst), MEMS [], TABLES [], FUNCS $funcsxa(externaddr_lst) ++ (|s.FUNCS_store| + i_F)^(i_F<|func_lst|){i_F <- i_F_lst}, DATAS [], ELEMS [], EXPORTS []}) @@ -18738,6 +18205,7 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- (wf_uN: `%%`(32, mk_uN_uN(i_E)))^(i_E<|elem_lst|){i_E <- i_E_lst} -- (wf_instr: `%`(CALL_instr(x)))?{x <- x_opt} -- Module_ok: `|-%:%`(v_module, mk_moduletype_moduletype(xt_I_lst, xt_E_lst)) + -- if (|externaddr_lst| = |xt_I_lst|) -- (Externaddr_ok: `%|-%:%`(s, v_externaddr, xt_I))*{v_externaddr <- externaddr_lst, xt_I <- xt_I_lst} -- if (v_module = MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst)) -- if (global_lst = GLOBAL_global(v_globaltype, expr_G)*{expr_G <- expr_G_lst, v_globaltype <- globaltype_lst}) @@ -18748,7 +18216,10 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- if (moduleinst_0 = {TYPES var_0, TAGS [], GLOBALS $globalsxa(externaddr_lst), MEMS [], TABLES [], FUNCS $funcsxa(externaddr_lst) ++ (|s.FUNCS_store| + i_F)^(i_F<|func_lst|){i_F <- i_F_lst}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = mk_state_state(s, {LOCALS [], MODULE moduleinst_0})) -- if ((z', val_G_lst) = var_1) + -- if (|expr_T_lst| = |ref_T_lst|) -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [$val_ref(ref_T)]))*{expr_T <- expr_T_lst, ref_T <- ref_T_lst} + -- if (|expr_E_lst_lst| = |ref_E_lst_lst|) + -- (if (|expr_E_lst| = |ref_E_lst|))*{expr_E_lst <- expr_E_lst_lst, ref_E_lst <- ref_E_lst_lst} -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [$val_ref(ref_E)]))*{expr_E <- expr_E_lst, ref_E <- ref_E_lst}*{expr_E_lst <- expr_E_lst_lst, ref_E_lst <- ref_E_lst_lst} -- if ((s', v_moduleinst) = var_2) -- if (instr_D_lst = $concat_(syntax instr, var_3_lst)) @@ -18760,9 +18231,11 @@ relation fun_invoke: `%%%%`(store, funcaddr, val*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_invoke_case_0{s : store, v_funcaddr : nat, val_lst : val*, t_1_lst : valtype*, t_2_lst : valtype*}: `%%%%`(s, v_funcaddr, val_lst, mk_config_config(mk_state_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(v_val)*{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(v_funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[v_funcaddr].TYPE_funcinst))])) + -- if (v_funcaddr < |s.FUNCS_store|) -- wf_config: `%`(mk_config_config(mk_state_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(v_val)*{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(v_funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[v_funcaddr].TYPE_funcinst))])) -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- Expand: `%~~%`(s.FUNCS_store[v_funcaddr].TYPE_funcinst, FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- if (|t_1_lst| = |val_lst|) -- (Val_ok: `%|-%:%`(s, v_val, t_1))*{t_1 <- t_1_lst, v_val <- val_lst} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec diff --git a/spectec/test-middlend/test.spectec.exp b/spectec/test-middlend/test.spectec.exp index e1b1bfc6c3..5a538cbe61 100644 --- a/spectec/test-middlend/test.spectec.exp +++ b/spectec/test-middlend/test.spectec.exp @@ -90,7 +90,7 @@ relation TestNestedIter: `%|-%`(nat***, nat**) -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} == IL Validation after pass uncase-removal... -== Running pass sideconditions... +== Running pass sub-expansion... ;; test.spectec relation HasSize: `%|-%`(nat, nat) @@ -100,12 +100,10 @@ relation TestNestedIter: `%|-%`(nat***, nat**) ;; test.spectec rule _{`n***` : nat***, `m**` : nat**}: `%|-%`(n*{n <- `n*`}*{`n*` <- `n**`}+{`n**` <- `n***`}, m*{m <- `m*`}+{`m*` <- `m**`}) - -- if (|`m**`| = |`n***`|) - -- (if (|`m*`| = |`n**`|))+{`m*` <- `m**`, `n**` <- `n***`} -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} -== IL Validation after pass sideconditions... -== Running pass sub-expansion... +== IL Validation after pass sub-expansion... +== Running pass sub... ;; test.spectec relation HasSize: `%|-%`(nat, nat) @@ -115,12 +113,10 @@ relation TestNestedIter: `%|-%`(nat***, nat**) ;; test.spectec rule _{`n***` : nat***, `m**` : nat**}: `%|-%`(n*{n <- `n*`}*{`n*` <- `n**`}+{`n**` <- `n***`}, m*{m <- `m*`}+{`m*` <- `m**`}) - -- if (|`m**`| = |`n***`|) - -- (if (|`m*`| = |`n**`|))+{`m*` <- `m**`, `n**` <- `n***`} -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} -== IL Validation after pass sub-expansion... -== Running pass sub... +== IL Validation after pass sub... +== Running pass definition-to-relation... ;; test.spectec relation HasSize: `%|-%`(nat, nat) @@ -130,12 +126,10 @@ relation TestNestedIter: `%|-%`(nat***, nat**) ;; test.spectec rule _{`n***` : nat***, `m**` : nat**}: `%|-%`(n*{n <- `n*`}*{`n*` <- `n**`}+{`n**` <- `n***`}, m*{m <- `m*`}+{`m*` <- `m**`}) - -- if (|`m**`| = |`n***`|) - -- (if (|`m*`| = |`n**`|))+{`m*` <- `m**`, `n**` <- `n***`} -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} -== IL Validation after pass sub... -== Running pass definition-to-relation... +== IL Validation after pass definition-to-relation... +== Running pass sideconditions... ;; test.spectec relation HasSize: `%|-%`(nat, nat) @@ -149,7 +143,7 @@ relation TestNestedIter: `%|-%`(nat***, nat**) -- (if (|`m*`| = |`n**`|))+{`m*` <- `m**`, `n**` <- `n***`} -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} -== IL Validation after pass definition-to-relation... +== IL Validation after pass sideconditions... == Running pass alias-demut... ;; test.spectec From f21f9b70de5ff4f2aa224d194a68a5c31275c6cd Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Wed, 19 Nov 2025 16:29:05 +0000 Subject: [PATCH 015/115] move rocq translation to single branch --- spectec/src/backend-rocq/dune | 5 + spectec/src/backend-rocq/print.ml | 829 ++++++++++++++++++++++++++++++ spectec/src/dune | 1 + spectec/src/exe-spectec/main.ml | 29 +- 4 files changed, 863 insertions(+), 1 deletion(-) create mode 100644 spectec/src/backend-rocq/dune create mode 100644 spectec/src/backend-rocq/print.ml diff --git a/spectec/src/backend-rocq/dune b/spectec/src/backend-rocq/dune new file mode 100644 index 0000000000..7c2af6f8ef --- /dev/null +++ b/spectec/src/backend-rocq/dune @@ -0,0 +1,5 @@ +(library + (name backend_rocq) + (libraries il) + (modules print) +) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml new file mode 100644 index 0000000000..ef6170a5bf --- /dev/null +++ b/spectec/src/backend-rocq/print.ml @@ -0,0 +1,829 @@ +open Il.Ast +open Util.Source + +module StringSet = Set.Make(String) + +let iter_prem_rels_list = ["List.Forall"; "List.Forall2"; "List_Forall3"] +let iter_exp_lst_funcs = ["List.map"; "list_zipWith"; "list_map3"] +let iter_exp_opt_funcs = ["option_map"; "option_zipWith"; "option_map3"] +let error at msg = Util.Error.error at "Rocq translation" msg + +let rec list_split (f : 'a -> bool) = function + | [] -> ([], []) + | x :: xs when f x -> let x_true, x_false = list_split f xs in + (x :: x_true, x_false) + | xs -> ([], xs) + +type exptype = + | LHS + | RHS + | REL + +let var_prefix = "var_" + +let remove_iter_from_type t = + match t.it with + | IterT (t', _) -> t' + | _ -> t +let empty_name s = match s with + | "" -> "NO_NAME" + | _ -> s + +let is_typ_bind b = match b.it with + | TypB _ -> true + | _ -> false + +let string_of_list_prefix prefix delim str_func ls = + match ls with + | [] -> "" + | _ -> prefix ^ String.concat delim (List.map str_func ls) + +let string_of_list_suffix suffix delim str_func ls = + match ls with + | [] -> "" + | _ -> String.concat delim (List.map str_func ls) ^ suffix + +let string_of_list prefix suffix delim str_func ls = + match ls with + | [] -> "" + | _ -> prefix ^ String.concat delim (List.map str_func ls) ^ suffix + +let square_parens s = "[" ^ s ^ "]" +let parens s = "(" ^ s ^ ")" +let curly_parens s = "{" ^ s ^ "}" +let comment_parens s = "(* " ^ s ^ " *)" + +let family_type_suffix = "entry" + +let env_ref = ref Il.Env.empty + +let is_record_typ inst = + match inst.it with + | InstD (_, _, {it = StructT _; _}) -> true + | _ -> false + +let is_variant_typ inst = + match inst.it with + | InstD (_, _, {it = VariantT _; _}) -> true + | _ -> false + +let is_alias_typ inst = + match inst.it with + | InstD (_, _, {it = AliasT _; _}) -> true + | _ -> false + +let is_alias_typ_def def = + match def.it with + | TypD(_ , _, [{it = InstD (_, _, {it = AliasT _; _}); _}]) -> true + | _ -> false + +let rec check_trivial_append env typ = + match typ.it with + | IterT (t, _) -> check_trivial_append env t + | VarT (id, _) -> + begin match (Il.Env.find_opt_typ env id) with + | Some (_, [inst]) when is_record_typ inst -> true + | _ -> false + end + | _ -> false + +let is_inductive d = + match d.it with + | RelD _ -> true + | TypD(_, _, [inst]) when is_variant_typ inst || is_alias_typ inst -> true + | _ -> false + +let comment_desc_def d = + match d.it with + | TypD (_, _, [inst]) when is_alias_typ inst -> "Type Alias Definition" + | TypD (_, _, [inst]) when is_variant_typ inst -> "Inductive Type Definition" + | TypD (_, _, [inst]) when is_record_typ inst -> "Record Creation Definition" + | TypD _ -> "Type Family Definition" + | RecD _ -> "Mutual Recursion" + | DecD (_, _, _, []) -> "Axiom Definition" + | DecD _ -> "Auxiliary Definition" + | RelD _ -> "Inductive Relations Definition" + | HintD _ -> "Hint Definition" + | GramD _ -> "Grammar Production Definition" + +let render_unop unop = + match unop with + | `NotOp -> "negb " + | `PlusOp -> "" + | `MinusOp -> "0 - " +let render_binop binop = + match binop with + | `AndOp -> " && " + | `OrOp -> " || " + | `ImplOp -> " -> " + | `EquivOp -> " <-> " + | `AddOp -> " + " + | `SubOp -> " - " + | `MulOp -> " * " + | `DivOp -> " / " + | `ModOp -> " mod " + | `PowOp -> " ^ " + +let render_cmpop cmpop = + match cmpop with + | `EqOp -> " == " + | `NeOp -> " != " + | `LtOp -> " < " + | `GtOp -> " > " + | `LeOp -> " <= " + | `GeOp -> " >= " + +let is_atomid a = + match a.it with + | Xl.Atom.Atom _ -> true + | _ -> false + +let render_atom a = + match a.it with + | Xl.Atom.Atom a -> a + | _ -> "" + +let render_mixop (m : mixop) = + (match m with + | [{it = Atom a; _}] :: tail when List.for_all ((=) []) tail -> a + | mixop -> String.concat "" (List.map ( + fun atoms -> String.concat "" (List.filter is_atomid atoms |> List.map render_atom)) mixop + ) + ) + +let get_bind_id b = + match b.it with + | ExpB (id, _) | TypB id | DefB (id, _, _) | GramB (id, _, _) -> id.it + +let get_param_id b = + match b.it with + | ExpP (id, _) | TypP id | DefP (id, _, _) | GramP (id, _) -> id.it + +let render_numtyp nt = + match nt with + | `NatT -> "nat" + | `IntT -> "nat" + | `RatT -> "nat" + | `RealT -> "nat" + +let transform_case_tup e = + match e.it with + | TupE exps -> exps + | _ -> [e] + +let transform_case_typ t = + match t.it with + | TupT typs -> List.map snd typs + | _ -> [t] + +let transform_case_args t = + match t.it with + | TupT typs -> typs + | _ -> [(VarE ("_" $ t.at) $$ t.at % t, t)] + +let get_type_args t = + match t.it with + | VarT (_, args) -> args + | _ -> error t.at ("Following type should be a variable type: " ^ Il.Print.string_of_typ t) + +let rec render_param_type exp_type alias_set param = + match param.it with + | ExpP (_, typ) -> render_type exp_type alias_set typ + | TypP _ -> "eqType" + | DefP (_, params, typ) -> + string_of_list_suffix " -> " " -> " (render_param_type exp_type alias_set) params ^ render_type exp_type alias_set typ + | GramP _ -> comment_parens ("Unsupported param: " ^ Il.Print.string_of_param param) + +and render_type exp_type alias_set typ = + let rt_func = render_type exp_type alias_set in + match typ.it with + | VarT (id, []) when StringSet.mem id.it alias_set -> rt_func (Il.Eval.reduce_typ !env_ref typ) + | VarT (id, []) -> id.it + | VarT (id, args) -> parens (id.it ^ " " ^ String.concat " " (List.map (render_arg exp_type alias_set) args)) + | BoolT -> "bool" + | NumT nt -> render_numtyp nt + | TextT -> "string" + | TupT [] -> "unit" + | TupT typs -> String.concat " * " (List.map (fun (_, t) -> rt_func t) typs) + | IterT (t, Opt) -> parens ("option " ^ rt_func t) + | IterT (t, _) -> parens ("list " ^ rt_func t) + +and render_exp exp_type alias_set exp = + let r_func = render_exp exp_type alias_set in + match exp.it with + | VarE id -> id.it + | BoolE b -> string_of_bool b + | NumE (`Nat n) -> Z.to_string n (* TODO fix nums *) + | NumE (`Int n) -> Z.to_string n (* TODO fix nums *) + | NumE (`Rat n) -> Q.to_string n (* TODO fix nums *) + | NumE (`Real n) -> string_of_float n (* TODO fix nums *) + | TextE s -> "\"" ^ String.escaped s ^ "\"" + | UnE (unop, _, e1) -> parens (render_unop unop ^ r_func e1) + | BinE (binop, _, e1, e2) -> parens (r_func e1 ^ render_binop binop ^ r_func e2) + | CmpE (cmpop, _, e1, e2) -> parens (r_func e1 ^ render_cmpop cmpop ^ r_func e2) + | TupE [] -> "()" + | TupE exps -> parens (String.concat ", " (List.map r_func exps)) + | ProjE (e, i) -> + let typs = transform_case_typ e.note in + let rec make_proj_chain idx len e = + match idx, len with + | 0, 0 -> r_func e + | i, n when i <= n -> parens ("snd " ^ r_func e) + | _ -> parens ("fst " ^ (make_proj_chain idx (len - 1) e)) + in + begin match typs with + | [_] -> r_func e + | _ -> make_proj_chain i (List.length typs - 1) e + end + | CaseE (m, e) when exp_type = LHS -> + let exps = transform_case_tup e in + begin match exps with + | [] -> render_mixop m + | _ -> parens (render_mixop m ^ " " ^ String.concat " " (List.map r_func exps)) + end + | CaseE (m, e) -> + let exps = transform_case_tup e in + (* Reduce here to remove type aliasing *) + let args = get_type_args (Il.Eval.reduce_typ !env_ref exp.note) in + let implicit_args = if args = [] then "" else " " ^ String.concat " " (List.init (List.length args) (fun _ -> "_")) in + begin match exps with + | [] -> render_mixop m + | _ -> parens (render_mixop m ^ implicit_args ^ " " ^ String.concat " " (List.map r_func exps)) + end + | UncaseE _ -> error exp.at "Encountered uncase. Run uncase-removal pass" + | OptE (Some e) -> parens ("Some " ^ r_func e) + | OptE None -> "None" + | TheE e -> parens ("the " ^ r_func e) + | StrE fields -> "{| " ^ (String.concat "; " (List.map (fun (a, e) -> render_atom a ^ " := " ^ r_func e) fields)) ^ " |}" + | DotE (e, a) -> parens (render_atom a ^ " " ^ r_func e) + | CompE (e1, e2) -> parens (r_func e1 ^ " @@ " ^ r_func e2) + | ListE [] -> "[]" + | ListE exps -> square_parens (String.concat "; " (List.map r_func exps)) + | LiftE e -> parens ("option_to_list " ^ r_func e) + | MemE (e1, e2) -> parens (r_func e1 ^ " \\in " ^ r_func e2) + | LenE e1 -> parens ("List.length " ^ r_func e1) + | CatE ({it = ListE [e1]; _}, e2) when exp_type = LHS -> parens (r_func e1 ^ " :: " ^ r_func e2) + | CatE (e1, e2) -> parens (r_func e1 ^ " ++ " ^ r_func e2) + | IdxE (e1, e2) -> parens ("lookup_total " ^ r_func e1 ^ " " ^ r_func e2) + | SliceE (e1, e2, e3) -> parens ("list_slice" ^ r_func e1 ^ " " ^ r_func e2 ^ " " ^ r_func e3) + | UpdE (e1, p, e2) -> render_path_start p alias_set e1 false e2 + | ExtE (e1, p, e2) -> render_path_start p alias_set e1 true e2 + | CallE (id, args) -> parens (id.it ^ " " ^ String.concat " " (List.map (render_arg exp_type alias_set) args)) + (* Iter handling *) + | IterE (e, (ListN (n, _), [])) -> parens ("List.repeat " ^ (r_func e) ^ " " ^ (r_func n)) + | IterE (e, (_, [])) -> r_func e + | IterE (e, _) when exp_type = LHS -> r_func e + | IterE (e, (iter, iter_binds)) -> + let binds = List.map (fun (id, e) -> parens (id.it ^ " : " ^ render_type exp_type alias_set (remove_iter_from_type e.note))) iter_binds in + let iter_exps = List.map snd iter_binds in + let n = List.length iter_binds - 1 in + let lst = if iter = Opt then iter_exp_opt_funcs else iter_exp_lst_funcs in + let pred_name = match (List.nth_opt lst n) with + | Some s -> s + | None -> error exp.at "Iteration exceeded the supported amount for rocq translation" + in + parens (pred_name ^ " " ^ render_lambda binds (r_func e) ^ " " ^ + String.concat " " (List.map (render_exp exp_type alias_set) iter_exps)) + | CvtE (e1, _nt1, nt2) -> parens (r_func e1 ^ " : " ^ render_numtyp nt2) + | SubE _ -> error exp.at "Encountered subtype expression. Please run sub pass" + +and render_arg exp_type alias_set a = + match a.it with + | ExpA e -> render_exp exp_type alias_set e + | TypA t -> render_type exp_type alias_set t + | DefA id -> id.it + | _ -> comment_parens ("Unsupported arg: " ^ Il.Print.string_of_arg a) + +and render_bind exp_type alias_set b = + match b.it with + | ExpB (id, typ) -> parens (id.it ^ " : " ^ render_type exp_type alias_set typ) + | TypB id -> parens (id.it ^ " : Type") + | DefB (id, params, typ) -> + parens (id.it ^ " : " ^ + string_of_list_suffix " -> " " -> " (render_param_type exp_type alias_set) params ^ + render_type exp_type alias_set typ) + | GramB _ -> comment_parens ("Unsupported bind: " ^ Il.Print.string_of_bind b) + +and render_param exp_type alias_set param = + let get_id p = + match p.it with + | ExpP (id, _) | TypP id | DefP (id, _, _) | GramP (id, _) -> id.it + in + parens (get_id param ^ " : " ^ render_param_type exp_type alias_set param) + + +(* PATH Functions *) +and transform_list_path (p : path) = + match p.it with + | RootP -> [] + | IdxP (p', _) | SliceP (p', _, _) | DotP (p', _) when p'.it = RootP -> [] + | IdxP (p', _) | SliceP (p', _, _) | DotP (p', _) -> p' :: transform_list_path p' + +and render_lambda binds text = + parens ("fun " ^ String.concat " " binds ^ " => " ^ text) + +and render_path_start (p : path) alias_set start_exp is_extend end_exp = + let paths = List.rev (p :: transform_list_path p) in + (render_path paths alias_set (start_exp.note) p.at 0 (Some start_exp) is_extend end_exp) + +and render_path (paths : path list) alias_set typ at n name is_extend end_exp = + let render_record_update t1 t2 t3 = + parens (t1 ^ " <| " ^ t2 ^ " := " ^ t3 ^ " |>") + in + let r_func_e = render_exp RHS alias_set in + let is_dot p = (match p.it with + | DotP _ -> true + | _ -> false + ) in + let list_name num = (match name with + | Some exp -> exp + | None -> VarE ((var_prefix ^ string_of_int num) $ no_region) $$ no_region % typ + ) in + let new_name_typ = remove_iter_from_type (list_name n).note in + let new_name = var_prefix ^ string_of_int (n + 1) in + match paths with + (* End logic for extend *) + | [{it = IdxP (_, e); _}] when is_extend -> + let extend_term = parens (new_name ^ " ++ " ^ r_func_e end_exp) in + let bind = render_bind RHS alias_set (ExpB (new_name $ no_region, new_name_typ) $ no_region) in + parens ("list_update_func " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ render_lambda [bind] extend_term) + | [{it = DotP (_, a); _}] when is_extend -> + let projection_term = parens (render_atom a ^ " " ^ r_func_e (list_name n)) in + let extend_term = parens (projection_term ^ " ++ " ^ r_func_e end_exp) in + render_record_update (r_func_e (list_name n)) (render_atom a) extend_term + | [{it = SliceP (_, e1, e2); _}] when is_extend -> + let extend_term = parens (new_name ^ " ++ " ^ r_func_e end_exp) in + let bind = render_bind RHS alias_set (ExpB (new_name $ no_region, new_name_typ) $ no_region) in + parens ("list_slice_update " ^ r_func_e (list_name n) ^ " " ^ r_func_e e1 ^ " " ^ r_func_e e2 ^ " " ^ render_lambda [bind] extend_term) + (* End logic for update *) + | [{it = IdxP (_, e); _}] -> + let bind = render_bind RHS alias_set (ExpB ("_" $ no_region, new_name_typ) $ no_region) in + parens ("list_update_func " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ " " ^ render_lambda [bind] (r_func_e end_exp)) + | [{it = DotP (_, a); _}] -> + render_record_update (r_func_e (list_name n)) (render_atom a) (r_func_e end_exp) + | [{it = SliceP (_, e1, e2); _}] -> + parens ("list_slice_update " ^ r_func_e (list_name n) ^ " " ^ r_func_e e1 ^ " " ^ r_func_e e2 ^ " " ^ r_func_e end_exp) + (* Middle logic *) + | {it = IdxP (_, e); note; _} :: ps -> + let path_term = render_path ps alias_set note at (n + 1) None is_extend end_exp in + let new_name = var_prefix ^ string_of_int (n + 1) in + let bind = render_bind RHS alias_set (ExpB (new_name $ no_region, new_name_typ) $ no_region) in + parens ("list_update_func " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ " " ^ render_lambda [bind] path_term) + | ({it = DotP _; note; _} as p) :: ps -> + let (dot_paths, ps') = list_split is_dot (p :: ps) in + let (end_atom, dot_paths') = match List.rev dot_paths with + | {it = DotP (_, a'); _} :: ds -> (a', ds) + | _ -> assert false (* Impossible since it has p *) + in + let projection_term = List.fold_right (fun p acc -> + match p.it with + | DotP (_, a') -> + DotE (acc, a') $$ no_region % p.note + | _ -> error at "Should be a record access" (* Should not happen *) + ) dot_paths' (list_name n) in + let update_fields = String.concat ";" (List.map (fun p -> + match p.it with + | DotP (_, a) -> render_atom a + | _ -> error at "Should be a record access" + ) dot_paths) in + let new_term = parens (render_atom end_atom ^ " " ^ r_func_e projection_term) in + let new_exp = DotE (projection_term, end_atom) $$ no_region % note in + if ps' = [] + then ( + let final_term = if is_extend then parens (new_term ^ " ++ " ^ r_func_e end_exp) else r_func_e end_exp in + render_record_update (r_func_e (list_name n)) update_fields final_term + ) + else ( + let path_term = render_path ps' alias_set note at n (Some new_exp) is_extend end_exp in + render_record_update (r_func_e (list_name n)) update_fields path_term + ) + | ({it = SliceP (_, _e1, _e2); _} as p) :: _ps -> + (* TODO - this is not entirely correct. Still unsure how to implement this as a term *) + (* let new_typ = transform_type' NORMAL note in + let path_term = render_path ps new_typ at (n + 1) None is_extend end_exp $@ transform_type' NORMAL note in + let new_name = var_prefix ^ string_of_int (n + 1) in + let lambda_typ = T_arrowtype [new_name_typ; new_typ] in + T_app (T_exp_basic T_sliceupdate $@ anytype', + [list_name n; transform_exp NORMAL e1; transform_exp NORMAL e2; T_lambda ([(new_name, new_name_typ)], path_term) $@ lambda_typ]) *) + comment_parens (Il.Print.string_of_path p) + (* Catch all error if we encounter empty list or RootP *) + | _ -> error at "Paths should not be empty" + +and render_binders (alias_set : StringSet.t) (binds : bind list) = + string_of_list_prefix " " " " (render_bind RHS alias_set) binds + +let render_binders_ids (binds : bind list) = + string_of_list_prefix " " " " get_bind_id binds + +let render_match_binders params = + String.concat ", " (List.map get_param_id params) + +let render_params alias_set params = + string_of_list_prefix " " " " (render_param RHS alias_set) params + +let render_match_args alias_set args = + string_of_list_prefix " " ", " (render_arg LHS alias_set) args + + +let string_of_eqtype_proof recursive (cant_do_equality: bool) alias_set id (binds : bind list) = + let binders = render_binders alias_set binds in + let binder_ids = render_binders_ids binds in + (* Decidable equality proof *) + (* e.g. + Definition functype_eq_dec : forall (tf1 tf2 : functype), + {tf1 = tf2} + {tf1 <> tf2}. + Proof. decidable_equality. Defined. + Definition functype_eqb v1 v2 : bool := functype_eq_dec v1 v2. + Definition eqfunctypeP : Equality.axiom functype_eqb := + eq_dec_Equality_axiom functype functype_eq_dec. + + HB.instance Definition _ := hasDecEq.Build (functype) (eqfunctypeP). + *) + (if cant_do_equality then comment_parens "FIXME - No clear way to do decidable equality" ^ "\n" else "") ^ + (match recursive with + | true -> + + "Fixpoint " ^ id ^ "_eq_dec" ^ binders ^ " (v1 v2 : " ^ id ^ binder_ids ^ ") {struct v1} :\n" ^ + " {v1 = v2} + {v1 <> v2}.\n" ^ + let proof = if cant_do_equality then "Admitted" else "decide equality; do ? decidable_equality_step. Defined" in + "Proof. " ^ proof ^ ".\n\n" + | false -> + "Definition " ^ id ^ "_eq_dec : forall" ^ binders ^ " (v1 v2 : " ^ id ^ binder_ids ^ "),\n" ^ + " {v1 = v2} + {v1 <> v2}.\n" ^ + + let proof = if cant_do_equality then "Admitted" else "do ? decidable_equality_step. Defined" in + "Proof. " ^ proof ^ ".\n\n") ^ + + "Definition " ^ id ^ "_eqb" ^ binders ^ " (v1 v2 : " ^ id ^ binder_ids ^ ") : bool :=\n" ^ + "\tis_left" ^ parens (id ^ "_eq_dec" ^ binder_ids ^ " v1 v2") ^ ".\n" ^ + "Definition eq" ^ id ^ "P" ^ binders ^ " : Equality.axiom " ^ parens (id ^ "_eqb" ^ binder_ids) ^ " :=\n" ^ + "\teq_dec_Equality_axiom " ^ parens (id ^ binder_ids) ^ " " ^ parens (id ^ "_eq_dec" ^ binder_ids) ^ ".\n\n" ^ + "HB.instance Definition _" ^ binders ^ " := hasDecEq.Build " ^ parens (id ^ binder_ids) ^ " " ^ parens ("eq" ^ id ^ "P" ^ binder_ids) ^ ".\n" ^ + "Hint Resolve " ^ id ^ "_eq_dec : eq_dec_db" + +let string_of_relation_args alias_set typ = + string_of_list "" " -> " " -> " (render_type REL alias_set) (transform_case_typ typ) + +let rec render_prem alias_set prem = + let r_func = render_prem alias_set in + match prem.it with + | IfPr exp -> render_exp REL alias_set exp + | RulePr (id, _m, exp) -> parens (id.it ^ string_of_list_prefix " " " " (render_exp REL alias_set) (transform_case_tup exp)) + | NegPr p -> parens ("~" ^ r_func p) + | ElsePr -> "True " ^ comment_parens ("Unsupported premise: otherwise") (* Will be removed by an else pass *) + | IterPr (p, (_, [])) -> r_func p + | IterPr (p, (iter, ps)) -> + let option_conversion s = if iter = Opt then parens ("option_to_list " ^ s) else s in + let binds = List.map (fun (id, e) -> parens (id.it ^ " : " ^ render_type REL alias_set (remove_iter_from_type e.note))) ps in + let iter_exps = List.map snd ps in + let n = List.length ps - 1 in + let pred_name = match (List.nth_opt iter_prem_rels_list n) with + | Some s -> s + | None -> error prem.at "Iteration exceeded the supported amount for rocq translation" + in + pred_name ^ " " ^ render_lambda binds (r_func p) ^ " " ^ + String.concat " " (List.map (render_exp REL alias_set) iter_exps |> List.map option_conversion) + | LetPr _ -> + "True " ^ comment_parens ("Unsupported premise: " ^ Il.Print.string_of_prem prem) + +let render_typealias alias_set id binds typ = + "Definition " ^ id ^ render_binders alias_set binds ^ " : Type := " ^ render_type RHS alias_set typ + +let render_record recursive alias_set id binds fields = + let constructor_name = "MK" ^ id in + let inhabitance_binders = render_binders alias_set binds in + let binders = render_binders_ids binds in + + (* Standard Record definition *) + "Record " ^ id ^ inhabitance_binders ^ " := " ^ constructor_name ^ "\n{\t" ^ + String.concat "\n;\t" (List.map (fun (a, (_, typ, _), _) -> + render_atom a ^ " : " ^ render_type RHS alias_set typ) fields) ^ "\n}.\n\n" ^ + + (* Inhabitance proof for default values *) + "Global Instance Inhabited_" ^ id ^ inhabitance_binders ^ " : Inhabited " ^ parens (id ^ binders) ^ " := \n" ^ + "{default_val := {|\n\t" ^ + String.concat ";\n\t" (List.map (fun (a, _, _) -> + render_atom a ^ " := default_val") fields) ^ "|} }.\n\n" ^ + + (* Append instance *) + "Definition _append_" ^ id ^ inhabitance_binders ^ " (arg1 arg2 : " ^ parens (id ^ binders) ^ ") :=\n" ^ + "{|\n\t" ^ String.concat "\t" ((List.map (fun (a, (_, t, _), _) -> + let record_id' = render_atom a in + if (check_trivial_append !env_ref t) + then record_id' ^ " := " ^ "arg1.(" ^ record_id' ^ ") @@ arg2.(" ^ record_id' ^ ");\n" + else record_id' ^ " := " ^ "arg1.(" ^ record_id' ^ "); " ^ comment_parens "FIXME - Non-trivial append" ^ "\n" + )) fields) ^ "|}.\n\n" ^ + "Global Instance Append_" ^ id ^ " : Append " ^ id ^ " := { _append arg1 arg2 := _append_" ^ id ^ " arg1 arg2 }.\n\n" ^ + + (* Setter proof *) + "#[export] Instance eta__" ^ id ^ " : Settable _ := settable! " ^ constructor_name ^ " <" ^ + String.concat ";" (List.map (fun (a, _, _) -> render_atom a) fields) ^ ">" + ^ ".\n\n" ^ string_of_eqtype_proof recursive false alias_set id [] + +let rec has_typ id t = + match t.it with + | VarT (id', _) -> id'.it = id + | IterT (t', _) -> has_typ id t' + | TupT pairs -> List.exists (fun (_, t') -> has_typ id t') pairs + | _ -> false + +let inhabitance_proof alias_set id binds cases = + (* Inhabitance proof for default values *) + let inhabitance_binders = render_binders alias_set binds in + let binders = render_binders_ids binds in + "Global Instance Inhabited__" ^ id ^ inhabitance_binders ^ " : Inhabited " ^ parens (id ^ binders) ^ + let rec render_proof cs = + (match cs with + | [] -> "(* FIXME: no inhabitant found! *) .\n" ^ + "\tAdmitted" + | (m, (_, t, _), _) :: ts -> + let typs = transform_case_typ t in + if (List.exists (has_typ id) typs) then render_proof ts else + " := { default_val := " ^ render_mixop m ^ binders ^ + string_of_list_prefix " " " " (fun _ -> "default_val" ) (transform_case_typ t) ^ " }") + in + render_proof cases + +let cant_do_equality binds cases = + (List.exists is_typ_bind binds) || + (List.exists (fun (_, (binds', _, _), _) -> List.exists is_typ_bind binds') cases) + +let render_case_typs alias_set t = + let typs = transform_case_args t in + string_of_list_prefix " " " " (fun (e, t) -> + parens (render_exp RHS alias_set e ^ " : " ^ render_type RHS alias_set t)) typs + +let render_variant_typ alias_set is_recursive prefix id binds cases = + prefix ^ id ^ render_binders alias_set binds ^ " : Type :=\n\t" ^ + String.concat "\n\t" (List.map (fun (m, (_, t, _), _) -> + "| " ^ render_mixop m ^ render_case_typs alias_set t ^ " : " ^ id ^ render_binders_ids binds + ) cases) ^ + if is_recursive then "" else + (* Inhabitance proof *) + ".\n\n" ^ inhabitance_proof alias_set id binds cases ^ + (* Eq proof *) + ".\n\n" ^ string_of_eqtype_proof is_recursive (cant_do_equality binds cases) alias_set id binds + +let render_function_def alias_set prefix id params r_typ clauses = + prefix ^ id ^ render_params alias_set params ^ " : " ^ render_type RHS alias_set r_typ ^ " :=\n" ^ + "\tmatch " ^ render_match_binders params ^ " return " ^ render_type RHS alias_set r_typ ^ " with\n\t\t" ^ + String.concat "\n\t\t" (List.map (fun clause -> match clause.it with + | DefD (_, args, exp, _) -> + "|" ^ render_match_args alias_set args ^ " => " ^ render_exp RHS alias_set exp) clauses) ^ + "\n\tend" + +let render_relation alias_set prefix id typ rules = + prefix ^ id ^ " : " ^ string_of_relation_args alias_set typ ^ "Prop :=\n\t" ^ + String.concat "\n\t" (List.map (fun rule -> match rule.it with + | RuleD (rule_id, binds, _, exp, prems) -> + let string_prems = string_of_list "\n\t\t" " ->\n\t\t" " ->\n\t\t" (render_prem alias_set) prems in + let forall_quantifiers = string_of_list "forall " ", " " " (render_bind REL alias_set) binds in + "| " ^ rule_id.it ^ " : " ^ forall_quantifiers ^ string_prems ^ id ^ " " ^ String.concat " " (List.map (render_exp REL alias_set) (transform_case_tup exp)) + ) rules) + +let render_axiom prefix alias_set id params r_typ = + prefix ^ id.it ^ " : " ^ string_of_list "forall " ", " " " (render_param RHS alias_set) params ^ render_type RHS alias_set r_typ + +let render_rel_axiom alias_set prefix id typ = + prefix ^ id.it ^ " : " ^ string_of_relation_args alias_set typ ^ "Prop" + +let render_global_declaration id alias_set typ exp = + "Definition " ^ id.it ^ " : " ^ render_type RHS alias_set typ ^ " := " ^ render_exp RHS alias_set exp + +let render_extra_info alias_set def = + match def.it with + | TypD (id, _, [{it = InstD (binds, _, {it = AliasT typ; _}); _}]) -> + Some (render_typealias alias_set id.it binds typ) + | TypD (id, _, [{it = InstD (binds, _, {it = VariantT typcases; _}); _}]) -> + Some (inhabitance_proof alias_set id.it binds typcases ^ ".\n\n" ^ + string_of_eqtype_proof true (cant_do_equality binds typcases) alias_set id.it binds) + | _ -> None + +let get_type_alias_id def = + match def.it with + | TypD (id, _, [inst]) when is_alias_typ inst -> Some id.it + | _ -> None + +let has_prems c = + match c.it with + | DefD (_, _, _, prems) -> prems <> [] + +let start_prefix def = + match def.it with + | _ when is_inductive def -> "Inductive " + | DecD (_, _, _, []) -> "Axiom " + | DecD (_, _, _, _clauses) -> "Axiom " (* TODO add condition: when List.exists has_prems clauses*) + (* Enable this when deftorel comes in: | DecD _ -> "Fixpoint " *) + | TypD (_, _, [inst]) when is_record_typ inst -> "Record " + | _ -> "" + +let is_axiom def = + match def.it with + | DecD (_, _, _, _clauses) -> true + | _ -> false + +(* TODO - revise mutual recursion with other defs such as records and axioms *) +let rec string_of_def has_endline recursive (alias_set : StringSet.t) def = + let end_newline = if has_endline then ".\n\n" else "" in + let start = if recursive then "" else comment_parens (comment_desc_def def ^ " at: " ^ Util.Source.string_of_region def.at) ^ "\n" in + match def.it with + | TypD (id, _, [{it = InstD (binds, _, {it = AliasT typ; _}); _}]) -> + if recursive then "" else + start ^ render_typealias alias_set id.it binds typ ^ end_newline + | TypD (id, _, [{it = InstD (binds, _, {it = StructT typfields; _}); _}])-> + start ^ render_record recursive alias_set id.it binds typfields ^ end_newline + | TypD (id, _, [{it = InstD (binds, _, {it = VariantT typcases; _}); _}]) -> + let prefix = if recursive then "" else "Inductive " in + start ^ render_variant_typ alias_set recursive prefix id.it binds typcases ^ end_newline + | DecD (id, [], typ, [{it = DefD ([], [], exp, _); _}]) -> + start ^ render_global_declaration id alias_set typ exp ^ end_newline + | DecD (id, params, typ, []) -> + let prefix = if recursive then "" else "Axiom " in + start ^ render_axiom prefix alias_set id params typ ^ end_newline + | DecD (id, params, typ, _clauses) -> (* TODO add condition: when List.exists has_prems clauses*) + let prefix = if recursive then "" else "Axiom " in + start ^ render_axiom prefix alias_set id params typ ^ end_newline + (* TODO activate this when deftorel comes in *) + (* | DecD (id, params, typ, clauses) -> + let prefix = if recursive then "" else "Definition " in + start ^ render_function_def alias_set prefix id.it params typ clauses ^ end_newline *) + | RelD (id, _, typ, []) -> + let prefix = if recursive then "" else "Axiom " in + start ^ render_rel_axiom alias_set prefix id typ ^ end_newline + | RelD (id, _, typ, rules) -> + let prefix = if recursive then "" else "Inductive " in + start ^ render_relation alias_set prefix id.it typ rules ^ end_newline + (* Mutual recursion - special handling for rocq *) + | RecD defs -> start ^ (match defs with + | [] -> "" + | [d] -> + let extra_info = render_extra_info alias_set d in + start_prefix d ^ + string_of_def false true StringSet.empty d ^ + begin match extra_info with + | None -> end_newline + | Some s -> end_newline ^ s ^ end_newline + end + (* HACK - this is simply to deal with functions that are not supposed to be axioms. + The functions that are supposed to be axioms should not be mutually recursive anyways. + *) + | (d :: _defs') when List.exists is_axiom defs -> + let prefix = ".\n\n" ^ start_prefix d in + let aliases = StringSet.union alias_set (List.filter_map get_type_alias_id defs |> StringSet.of_list) in + let extra_info = String.concat ".\n\n" (List.filter_map (render_extra_info alias_set) defs) in + start_prefix d ^ + String.concat prefix ( + Util.Lib.List.filter_not is_alias_typ_def defs |> + List.map (string_of_def false true aliases) + ) ^ ".\n\n" ^ + extra_info ^ if extra_info = "" then "" else end_newline + | (d :: _defs') -> + let prefix = "\n\nwith\n\n" in + let aliases = StringSet.union alias_set (List.filter_map get_type_alias_id defs |> StringSet.of_list) in + let extra_info = String.concat ".\n\n" (List.filter_map (render_extra_info alias_set) defs) in + start_prefix d ^ + String.concat prefix ( + Util.Lib.List.filter_not is_alias_typ_def defs |> + List.map (string_of_def false true aliases) + ) ^ ".\n\n" ^ + extra_info ^ if extra_info = "" then "" else end_newline + ) + | _ -> error def.at ("Unsupported def: " ^ Il.Print.string_of_def def) + +let exported_string = + "(* Imported Code *)\n" ^ + "From Coq Require Import String List Unicode.Utf8 Reals.\n" ^ + "From mathcomp Require Import ssreflect ssrfun ssrnat ssrbool seq eqtype rat ssrint.\n" ^ + "From HB Require Import structures.\n" ^ + "From RecordUpdate Require Import RecordSet.\n" ^ + "Declare Scope wasm_scope.\n\n" ^ + "Class Inhabited (T: Type) := { default_val : T }.\n\n" ^ + "Definition lookup_total {T: Type} {_: Inhabited T} (l: list T) (n: nat) : T :=\n" ^ + "\tList.nth n l default_val.\n\n" ^ + "Definition the {T : Type} {_ : Inhabited T} (arg : option T) : T :=\n" ^ + "\tmatch arg with\n" ^ + "\t\t| None => default_val\n" ^ + "\t\t| Some v => v\n" ^ + "\tend.\n\n" ^ + "Definition list_zipWith {X Y Z : Type} (f : X -> Y -> Z) (xs : list X) (ys : list Y) : list Z :=\n" ^ + "\tList.map (fun '(x, y) => f x y) (List.combine xs ys).\n\n" ^ + "Definition option_zipWith {α β γ: Type} (f: α -> β -> γ) (x: option α) (y: option β): option γ := \n" ^ + "\tmatch x, y with\n" ^ + "\t\t| Some x, Some y => Some (f x y)\n" ^ + "\t\t| _, _ => None\n" ^ + "\tend.\n\n" ^ + "Fixpoint list_update {α: Type} (l: list α) (n: nat) (y: α): list α :=\n" ^ + "\tmatch l, n with\n" ^ + "\t\t| nil, _ => nil\n" ^ + "\t\t| x :: l', O => y :: l'\n" ^ + "\t\t| x :: l', S n => x :: list_update l' n y\n" ^ + "\tend.\n\n" ^ + "Definition option_append {α: Type} (x y: option α) : option α :=\n" ^ + "\tmatch x with\n" ^ + "\t\t| Some _ => x\n" ^ + "\t\t| None => y\n" ^ + "\tend.\n\n" ^ + "Definition option_map {α β : Type} (f : α -> β) (x : option α) : option β :=\n" ^ + "\tmatch x with\n" ^ + "\t\t| Some x => Some (f x)\n" ^ + "\t\t| _ => None\n" ^ + "\tend.\n\n" ^ + "Fixpoint list_update_func {α: Type} (l: list α) (n: nat) (y: α -> α): list α :=\n" ^ + "\tmatch l, n with\n" ^ + "\t\t| nil, _ => nil\n" ^ + "\t\t| x :: l', O => (y x) :: l'\n" ^ + "\t\t| x :: l', S n => x :: list_update_func l' n y\n" ^ + "\tend.\n\n" ^ + "Fixpoint list_slice {α: Type} (l: list α) (i: nat) (j: nat): list α :=\n" ^ + "\tmatch l, i, j with\n" ^ + "\t\t| nil, _, _ => nil\n" ^ + "\t\t| x :: l', O, O => nil\n" ^ + "\t\t| x :: l', S n, O => nil\n" ^ + "\t\t| x :: l', O, S m => x :: list_slice l' 0 m\n" ^ + "\t\t| x :: l', S n, m => list_slice l' n m\n" ^ + "\tend.\n\n" ^ + "Fixpoint list_slice_update {α: Type} (l: list α) (i: nat) (j: nat) (update_l: list α): list α :=\n" ^ + "\tmatch l, i, j, update_l with\n" ^ + "\t\t| nil, _, _, _ => nil\n" ^ + "\t\t| l', _, _, nil => l'\n" ^ + "\t\t| x :: l', O, O, _ => nil\n" ^ + "\t\t| x :: l', S n, O, _ => nil\n" ^ + "\t\t| x :: l', O, S m, y :: u_l' => y :: list_slice_update l' 0 m u_l'\n" ^ + "\t\t| x :: l', S n, m, _ => x :: list_slice_update l' n m update_l\n" ^ + "\tend.\n\n" ^ + "Definition list_extend {α: Type} (l: list α) (y: α): list α :=\n" ^ + "\ty :: l.\n\n" ^ + "Definition option_map3 {A B C D: Type} (f: A -> B -> C -> D) (x: option A) (y: option B) (z: option C): option D :=\n" ^ + "\tmatch x, y, z with\n" ^ + "\t\t| Some x, Some y, Some z => Some (f x y z)\n" ^ + "\t\t| _, _, _ => None\n" ^ + "\tend.\n\n" ^ + "Definition list_map3 {A B C D: Type} (f : A -> B -> C -> D) (xs : list A) (ys : list B) (zs : list C) : list D :=\n" ^ + "\tList.map (fun '(x, (y, z)) => f x y z) (List.combine xs (List.combine ys zs)).\n\n" ^ + "Inductive List_Forall3 {A B C: Type} (R : A -> B -> C -> Prop): list A -> list B -> list C -> Prop :=\n" ^ + "\t| Forall3_nil : List_Forall3 R nil nil nil\n" ^ + "\t| Forall3_cons : forall x y z l l' l'',\n"^ + "\t\tR x y z -> List_Forall3 R l l' l'' -> List_Forall3 R (x :: l) (y :: l') (z :: l'').\n\n" ^ + "Class Append (α: Type) := _append : α -> α -> α.\n\n" ^ + "Infix \"@@\" := _append (right associativity, at level 60) : wasm_scope.\n\n" ^ + "Global Instance Append_List_ {α: Type}: Append (list α) := { _append l1 l2 := List.app l1 l2 }.\n\n" ^ + "Global Instance Append_Option {α: Type}: Append (option α) := { _append o1 o2 := option_append o1 o2 }.\n\n" ^ + "Global Instance Append_nat : Append (nat) := { _append n1 n2 := n1 + n2}.\n\n" ^ + "Global Instance Inh_unit : Inhabited unit := { default_val := tt }.\n\n" ^ + "Global Instance Inh_nat : Inhabited nat := { default_val := O }.\n\n" ^ + "Global Instance Inh_list {T: Type} : Inhabited (list T) := { default_val := nil }.\n\n" ^ + "Global Instance Inh_option {T: Type} : Inhabited (option T) := { default_val := None }.\n\n" ^ + "Global Instance Inh_Z : Inhabited Z := { default_val := Z0 }.\n\n" ^ + "Global Instance Inh_prod {T1 T2: Type} {_: Inhabited T1} {_: Inhabited T2} : Inhabited (prod T1 T2) := { default_val := (default_val, default_val) }.\n\n" ^ + "Global Instance Inh_type : Inhabited Type := { default_val := nat }.\n\n" ^ + "Definition option_to_list {T: Type} (arg : option T) : list T :=\n" ^ + "\tmatch arg with\n" ^ + "\t\t| None => nil\n" ^ + "\t\t| Some a => a :: nil\n" ^ + "\tend.\n\n" ^ + "Coercion option_to_list: option >-> list.\n\n" ^ + "Coercion Z.to_nat: Z >-> nat.\n\n" ^ + "Coercion Z.of_nat: nat >-> Z.\n\n" ^ + "Coercion ratz: int >-> rat.\n\n" ^ + "Create HintDb eq_dec_db.\n\n" ^ + "Ltac decidable_equality_step :=\n" ^ + " do [ by eauto with eq_dec_db | decide equality ].\n\n" ^ + "Lemma eq_dec_Equality_axiom :\n" ^ + " forall (T : Type) (eq_dec : forall (x y : T), decidable (x = y)),\n" ^ + " let eqb v1 v2 := is_left (eq_dec v1 v2) in Equality.axiom eqb.\n" ^ + "Proof.\n" ^ + " move=> T eq_dec eqb x y. rewrite /eqb.\n" ^ + " case: (eq_dec x y); by [apply: ReflectT | apply: ReflectF].\n" ^ + "Qed.\n\n" ^ + "Class Coercion (A B : Type) := { coerce : A -> B }.\n\n" ^ + "Notation \"x ':>' B\" := (coerce (A:=_) (B:=B) x)\n" ^ + "(at level 70, right associativity).\n\n" ^ + "Definition option_coerce {A B : Type} `{Coercion A B} (a_opt : option A): option B :=\n" ^ + "\tmatch a_opt with\n" ^ + "\t\t| Some a => Some (coerce a)\n" ^ + "\t\t| None => None\n" ^ + "\tend.\n\n" ^ + "Definition list_coerce {A B : Type} `{Coercion A B} (a_list : list A): list B :=\n" ^ + "\tList.map (fun a => coerce a) a_list.\n\n" ^ + "Definition id_coerce {A : Type} (a : A) : A := a.\n\n" ^ + "Definition transitive_coerce {A B C : Type} `{Coercion A B} `{Coercion B C} (a : A): C :=\n" ^ + "\tcoerce (coerce a).\n\n" ^ + "Global Instance option_coercion (A B : Type) {_: Coercion A B}: Coercion (option A) (option B) := { coerce := option_coerce }.\n\n" ^ + "Global Instance list_coercion (A B : Type) {_: Coercion A B}: Coercion (list A) (list B) := { coerce := list_coerce }.\n\n" ^ + "Global Instance id_coercion (A : Type): Coercion A A := { coerce := id_coerce }.\n\n" ^ + "Global Instance transitive_coercion (A B C : Type) `{Coercion A B} `{Coercion B C}: Coercion A C := { coerce := transitive_coerce }.\n\n" ^ + "Open Scope wasm_scope.\n" ^ + "Import ListNotations.\n" ^ + "Import RecordSetNotations.\n\n" + +let rec is_valid_def def = + match def.it with + | GramD _ | HintD _ -> false + | RecD defs -> List.for_all is_valid_def defs + | _ -> true + +let string_of_script (il : script) = + env_ref := Il.Env.env_of_script il; + exported_string ^ + "(* Generated Code *)\n" ^ + String.concat "" (List.filter is_valid_def il |> List.map (string_of_def true false StringSet.empty)) \ No newline at end of file diff --git a/spectec/src/dune b/spectec/src/dune index aea839fdf3..6f4893d4f5 100644 --- a/spectec/src/dune +++ b/spectec/src/dune @@ -12,6 +12,7 @@ (re_export backend_prose) (re_export backend_splice) (re_export backend_interpreter) + (re_export backend_rocq) (re_export il2al) ) ) diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index f5c326b17e..026ffc5316 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -13,6 +13,7 @@ type target = | Prose of bool | Splice of Backend_splice.Config.t | Interpreter of string list + | Rocq type pass = | Sub @@ -200,6 +201,7 @@ let argspec = Arg.align ( "--prose-rst", Arg.Unit (fun () -> target := Prose false), " Generate prose"; "--interpreter", Arg.Rest_all (fun args -> target := Interpreter args), " Generate interpreter"; + "--rocq", Arg.Unit (fun () -> target := Rocq), " Generate Rocq Inductive Definitions"; "--debug", Arg.Unit (fun () -> Backend_interpreter.Debugger.debug := true), " Debug interpreter"; "--unified-vars", Arg.Unit (fun () -> Il2al.Unify.rename := false), @@ -249,6 +251,18 @@ let () = (match !target with | Prose _ | Splice _ | Interpreter _ -> enable_pass Sideconditions; + | Rocq -> + enable_pass Sideconditions; + enable_pass Totalize; + enable_pass Else; + enable_pass TypeFamilyRemoval; + enable_pass Undep; + enable_pass Uncaseremoval; + enable_pass Sub; + enable_pass SubExpansion; + enable_pass ImproveIds; + enable_pass AliasDemut; + enable_pass DefToRel | _ when !print_al || !print_al_o <> "" -> enable_pass Sideconditions; | _ -> () @@ -275,7 +289,7 @@ let () = if !print_final_il && not !print_all_il then print_il il; let al = - if not !print_al && !print_al_o = "" && (!target = Check || !target = Ast || !target = Latex) then [] + if not !print_al && !print_al_o = "" && (!target = Check || !target = Ast || !target = Latex || !target = Rocq) then [] else ( log "Translating to AL..."; let interp = match !target with @@ -385,6 +399,19 @@ let () = Backend_interpreter.Ds.init al; log "Interpreting..."; Backend_interpreter.Runner.run args + | Rocq -> + log "Rocq Generation..."; + (match !odsts with + | [] -> print_endline (Backend_rocq.Print.string_of_script il) + | [odst] -> + let coq_code = Backend_rocq.Print.string_of_script il in + let oc = Out_channel.open_text odst in + Fun.protect (fun () -> Out_channel.output_string oc coq_code) + ~finally:(fun () -> Out_channel.close oc) + | _ -> + prerr_endline "too many output file names"; + exit 2 + ) ); log "Complete." with From 4a8cfb8270949ac12cdc846824e4442d5adaab97 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Wed, 19 Nov 2025 17:22:54 +0000 Subject: [PATCH 016/115] Ensures that ids do not clash with reserved ids. Mixops also cannot be empty anymore (or have holes) --- spectec/src/backend-rocq/print.ml | 114 ++++++++++++++++++------------ 1 file changed, 70 insertions(+), 44 deletions(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index ef6170a5bf..17f1361b65 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -21,6 +21,19 @@ type exptype = let var_prefix = "var_" + +let reserved_ids = ["N"; "in"; "In"; + "S"; + "return"; + "if"; + "bool"; + "prod"; + "at"; + "()"; "tt"; + "Import"; "Export"; + "List"; "String"; + "Type"; "list"; "nat"] |> StringSet.of_list + let remove_iter_from_type t = match t.it with | IterT (t', _) -> t' @@ -77,9 +90,9 @@ let is_alias_typ_def def = | TypD(_ , _, [{it = InstD (_, _, {it = AliasT _; _}); _}]) -> true | _ -> false -let rec check_trivial_append env typ = +let check_trivial_append env typ = match typ.it with - | IterT (t, _) -> check_trivial_append env t + | IterT _ -> true | VarT (id, _) -> begin match (Il.Env.find_opt_typ env id) with | Some (_, [inst]) when is_record_typ inst -> true @@ -138,18 +151,28 @@ let is_atomid a = | Xl.Atom.Atom _ -> true | _ -> false +let render_id id = + match id with + | s when StringSet.mem s reserved_ids -> "res_" ^ s + | _ -> id + let render_atom a = match a.it with - | Xl.Atom.Atom a -> a + | Xl.Atom.Atom a -> render_id a | _ -> "" -let render_mixop (m : mixop) = - (match m with - | [{it = Atom a; _}] :: tail when List.for_all ((=) []) tail -> a +let render_mixop typ_id (m : mixop) = + let s = (match m with + | [{it = Atom a; _}] :: tail when List.for_all ((=) []) tail -> render_id a | mixop -> String.concat "" (List.map ( fun atoms -> String.concat "" (List.filter is_atomid atoms |> List.map render_atom)) mixop ) - ) + ) in + (* HACK - should be done in improve ids *) + match s with + | "_" -> "mk_" ^ typ_id + | s when Il.Env.mem_typ !env_ref (s $ no_region) -> "mk_" ^ s + | s -> s let get_bind_id b = match b.it with @@ -211,7 +234,7 @@ and render_type exp_type alias_set typ = and render_exp exp_type alias_set exp = let r_func = render_exp exp_type alias_set in match exp.it with - | VarE id -> id.it + | VarE id -> render_id id.it | BoolE b -> string_of_bool b | NumE (`Nat n) -> Z.to_string n (* TODO fix nums *) | NumE (`Int n) -> Z.to_string n (* TODO fix nums *) @@ -236,19 +259,21 @@ and render_exp exp_type alias_set exp = | _ -> make_proj_chain i (List.length typs - 1) e end | CaseE (m, e) when exp_type = LHS -> + let name = Il.Print.string_of_typ_name exp.note in let exps = transform_case_tup e in begin match exps with - | [] -> render_mixop m - | _ -> parens (render_mixop m ^ " " ^ String.concat " " (List.map r_func exps)) + | [] -> render_mixop name m + | _ -> parens (render_mixop name m ^ " " ^ String.concat " " (List.map r_func exps)) end | CaseE (m, e) -> let exps = transform_case_tup e in + let name = Il.Print.string_of_typ_name exp.note in (* Reduce here to remove type aliasing *) let args = get_type_args (Il.Eval.reduce_typ !env_ref exp.note) in let implicit_args = if args = [] then "" else " " ^ String.concat " " (List.init (List.length args) (fun _ -> "_")) in begin match exps with - | [] -> render_mixop m - | _ -> parens (render_mixop m ^ implicit_args ^ " " ^ String.concat " " (List.map r_func exps)) + | [] -> render_mixop name m + | _ -> parens (render_mixop name m ^ implicit_args ^ " " ^ String.concat " " (List.map r_func exps)) end | UncaseE _ -> error exp.at "Encountered uncase. Run uncase-removal pass" | OptE (Some e) -> parens ("Some " ^ r_func e) @@ -268,13 +293,13 @@ and render_exp exp_type alias_set exp = | SliceE (e1, e2, e3) -> parens ("list_slice" ^ r_func e1 ^ " " ^ r_func e2 ^ " " ^ r_func e3) | UpdE (e1, p, e2) -> render_path_start p alias_set e1 false e2 | ExtE (e1, p, e2) -> render_path_start p alias_set e1 true e2 - | CallE (id, args) -> parens (id.it ^ " " ^ String.concat " " (List.map (render_arg exp_type alias_set) args)) + | CallE (id, args) -> parens (render_id id.it ^ " " ^ String.concat " " (List.map (render_arg exp_type alias_set) args)) (* Iter handling *) | IterE (e, (ListN (n, _), [])) -> parens ("List.repeat " ^ (r_func e) ^ " " ^ (r_func n)) | IterE (e, (_, [])) -> r_func e | IterE (e, _) when exp_type = LHS -> r_func e | IterE (e, (iter, iter_binds)) -> - let binds = List.map (fun (id, e) -> parens (id.it ^ " : " ^ render_type exp_type alias_set (remove_iter_from_type e.note))) iter_binds in + let binds = List.map (fun (id, e) -> parens (render_id id.it ^ " : " ^ render_type exp_type alias_set (remove_iter_from_type e.note))) iter_binds in let iter_exps = List.map snd iter_binds in let n = List.length iter_binds - 1 in let lst = if iter = Opt then iter_exp_opt_funcs else iter_exp_lst_funcs in @@ -291,15 +316,15 @@ and render_arg exp_type alias_set a = match a.it with | ExpA e -> render_exp exp_type alias_set e | TypA t -> render_type exp_type alias_set t - | DefA id -> id.it + | DefA id -> render_id id.it | _ -> comment_parens ("Unsupported arg: " ^ Il.Print.string_of_arg a) and render_bind exp_type alias_set b = match b.it with - | ExpB (id, typ) -> parens (id.it ^ " : " ^ render_type exp_type alias_set typ) - | TypB id -> parens (id.it ^ " : Type") + | ExpB (id, typ) -> parens (render_id id.it ^ " : " ^ render_type exp_type alias_set typ) + | TypB id -> parens (render_id id.it ^ " : Type") | DefB (id, params, typ) -> - parens (id.it ^ " : " ^ + parens (render_id id.it ^ " : " ^ string_of_list_suffix " -> " " -> " (render_param_type exp_type alias_set) params ^ render_type exp_type alias_set typ) | GramB _ -> comment_parens ("Unsupported bind: " ^ Il.Print.string_of_bind b) @@ -307,7 +332,7 @@ and render_bind exp_type alias_set b = and render_param exp_type alias_set param = let get_id p = match p.it with - | ExpP (id, _) | TypP id | DefP (id, _, _) | GramP (id, _) -> id.it + | ExpP (id, _) | TypP id | DefP (id, _, _) | GramP (id, _) -> render_id id.it in parens (get_id param ^ " : " ^ render_param_type exp_type alias_set param) @@ -428,6 +453,7 @@ let render_match_args alias_set args = let string_of_eqtype_proof recursive (cant_do_equality: bool) alias_set id (binds : bind list) = let binders = render_binders alias_set binds in let binder_ids = render_binders_ids binds in + let id' = render_id id in (* Decidable equality proof *) (* e.g. Definition functype_eq_dec : forall (tf1 tf2 : functype), @@ -443,23 +469,23 @@ let string_of_eqtype_proof recursive (cant_do_equality: bool) alias_set id (bind (match recursive with | true -> - "Fixpoint " ^ id ^ "_eq_dec" ^ binders ^ " (v1 v2 : " ^ id ^ binder_ids ^ ") {struct v1} :\n" ^ + "Fixpoint " ^ id' ^ "_eq_dec" ^ binders ^ " (v1 v2 : " ^ id' ^ binder_ids ^ ") {struct v1} :\n" ^ " {v1 = v2} + {v1 <> v2}.\n" ^ let proof = if cant_do_equality then "Admitted" else "decide equality; do ? decidable_equality_step. Defined" in "Proof. " ^ proof ^ ".\n\n" | false -> - "Definition " ^ id ^ "_eq_dec : forall" ^ binders ^ " (v1 v2 : " ^ id ^ binder_ids ^ "),\n" ^ + "Definition " ^ id' ^ "_eq_dec : forall" ^ binders ^ " (v1 v2 : " ^ id' ^ binder_ids ^ "),\n" ^ " {v1 = v2} + {v1 <> v2}.\n" ^ let proof = if cant_do_equality then "Admitted" else "do ? decidable_equality_step. Defined" in "Proof. " ^ proof ^ ".\n\n") ^ - "Definition " ^ id ^ "_eqb" ^ binders ^ " (v1 v2 : " ^ id ^ binder_ids ^ ") : bool :=\n" ^ - "\tis_left" ^ parens (id ^ "_eq_dec" ^ binder_ids ^ " v1 v2") ^ ".\n" ^ - "Definition eq" ^ id ^ "P" ^ binders ^ " : Equality.axiom " ^ parens (id ^ "_eqb" ^ binder_ids) ^ " :=\n" ^ - "\teq_dec_Equality_axiom " ^ parens (id ^ binder_ids) ^ " " ^ parens (id ^ "_eq_dec" ^ binder_ids) ^ ".\n\n" ^ - "HB.instance Definition _" ^ binders ^ " := hasDecEq.Build " ^ parens (id ^ binder_ids) ^ " " ^ parens ("eq" ^ id ^ "P" ^ binder_ids) ^ ".\n" ^ - "Hint Resolve " ^ id ^ "_eq_dec : eq_dec_db" + "Definition " ^ id' ^ "_eqb" ^ binders ^ " (v1 v2 : " ^ id' ^ binder_ids ^ ") : bool :=\n" ^ + "\tis_left" ^ parens (id' ^ "_eq_dec" ^ binder_ids ^ " v1 v2") ^ ".\n" ^ + "Definition eq" ^ id' ^ "P" ^ binders ^ " : Equality.axiom " ^ parens (id' ^ "_eqb" ^ binder_ids) ^ " :=\n" ^ + "\teq_dec_Equality_axiom " ^ parens (id' ^ binder_ids) ^ " " ^ parens (id' ^ "_eq_dec" ^ binder_ids) ^ ".\n\n" ^ + "HB.instance Definition _" ^ binders ^ " := hasDecEq.Build " ^ parens (id' ^ binder_ids) ^ " " ^ parens ("eq" ^ id' ^ "P" ^ binder_ids) ^ ".\n" ^ + "Hint Resolve " ^ id' ^ "_eq_dec : eq_dec_db" let string_of_relation_args alias_set typ = string_of_list "" " -> " " -> " (render_type REL alias_set) (transform_case_typ typ) @@ -468,13 +494,13 @@ let rec render_prem alias_set prem = let r_func = render_prem alias_set in match prem.it with | IfPr exp -> render_exp REL alias_set exp - | RulePr (id, _m, exp) -> parens (id.it ^ string_of_list_prefix " " " " (render_exp REL alias_set) (transform_case_tup exp)) + | RulePr (id, _m, exp) -> parens (render_id id.it ^ string_of_list_prefix " " " " (render_exp REL alias_set) (transform_case_tup exp)) | NegPr p -> parens ("~" ^ r_func p) | ElsePr -> "True " ^ comment_parens ("Unsupported premise: otherwise") (* Will be removed by an else pass *) | IterPr (p, (_, [])) -> r_func p | IterPr (p, (iter, ps)) -> let option_conversion s = if iter = Opt then parens ("option_to_list " ^ s) else s in - let binds = List.map (fun (id, e) -> parens (id.it ^ " : " ^ render_type REL alias_set (remove_iter_from_type e.note))) ps in + let binds = List.map (fun (id, e) -> parens (render_id id.it ^ " : " ^ render_type REL alias_set (remove_iter_from_type e.note))) ps in let iter_exps = List.map snd ps in let n = List.length ps - 1 in let pred_name = match (List.nth_opt iter_prem_rels_list n) with @@ -539,7 +565,7 @@ let inhabitance_proof alias_set id binds cases = | (m, (_, t, _), _) :: ts -> let typs = transform_case_typ t in if (List.exists (has_typ id) typs) then render_proof ts else - " := { default_val := " ^ render_mixop m ^ binders ^ + " := { default_val := " ^ render_mixop id m ^ binders ^ string_of_list_prefix " " " " (fun _ -> "default_val" ) (transform_case_typ t) ^ " }") in render_proof cases @@ -556,7 +582,7 @@ let render_case_typs alias_set t = let render_variant_typ alias_set is_recursive prefix id binds cases = prefix ^ id ^ render_binders alias_set binds ^ " : Type :=\n\t" ^ String.concat "\n\t" (List.map (fun (m, (_, t, _), _) -> - "| " ^ render_mixop m ^ render_case_typs alias_set t ^ " : " ^ id ^ render_binders_ids binds + "| " ^ render_mixop id m ^ render_case_typs alias_set t ^ " : " ^ id ^ render_binders_ids binds ) cases) ^ if is_recursive then "" else (* Inhabitance proof *) @@ -578,17 +604,17 @@ let render_relation alias_set prefix id typ rules = | RuleD (rule_id, binds, _, exp, prems) -> let string_prems = string_of_list "\n\t\t" " ->\n\t\t" " ->\n\t\t" (render_prem alias_set) prems in let forall_quantifiers = string_of_list "forall " ", " " " (render_bind REL alias_set) binds in - "| " ^ rule_id.it ^ " : " ^ forall_quantifiers ^ string_prems ^ id ^ " " ^ String.concat " " (List.map (render_exp REL alias_set) (transform_case_tup exp)) + "| " ^ render_id rule_id.it ^ " : " ^ forall_quantifiers ^ string_prems ^ render_id id ^ " " ^ String.concat " " (List.map (render_exp REL alias_set) (transform_case_tup exp)) ) rules) let render_axiom prefix alias_set id params r_typ = - prefix ^ id.it ^ " : " ^ string_of_list "forall " ", " " " (render_param RHS alias_set) params ^ render_type RHS alias_set r_typ + prefix ^ id ^ " : " ^ string_of_list "forall " ", " " " (render_param RHS alias_set) params ^ render_type RHS alias_set r_typ let render_rel_axiom alias_set prefix id typ = - prefix ^ id.it ^ " : " ^ string_of_relation_args alias_set typ ^ "Prop" + prefix ^ id ^ " : " ^ string_of_relation_args alias_set typ ^ "Prop" let render_global_declaration id alias_set typ exp = - "Definition " ^ id.it ^ " : " ^ render_type RHS alias_set typ ^ " := " ^ render_exp RHS alias_set exp + "Definition " ^ id ^ " : " ^ render_type RHS alias_set typ ^ " := " ^ render_exp RHS alias_set exp let render_extra_info alias_set def = match def.it with @@ -629,30 +655,30 @@ let rec string_of_def has_endline recursive (alias_set : StringSet.t) def = match def.it with | TypD (id, _, [{it = InstD (binds, _, {it = AliasT typ; _}); _}]) -> if recursive then "" else - start ^ render_typealias alias_set id.it binds typ ^ end_newline + start ^ render_typealias alias_set (render_id id.it) binds typ ^ end_newline | TypD (id, _, [{it = InstD (binds, _, {it = StructT typfields; _}); _}])-> - start ^ render_record recursive alias_set id.it binds typfields ^ end_newline + start ^ render_record recursive alias_set (render_id id.it) binds typfields ^ end_newline | TypD (id, _, [{it = InstD (binds, _, {it = VariantT typcases; _}); _}]) -> let prefix = if recursive then "" else "Inductive " in - start ^ render_variant_typ alias_set recursive prefix id.it binds typcases ^ end_newline + start ^ render_variant_typ alias_set recursive prefix (render_id id.it) binds typcases ^ end_newline | DecD (id, [], typ, [{it = DefD ([], [], exp, _); _}]) -> - start ^ render_global_declaration id alias_set typ exp ^ end_newline + start ^ render_global_declaration (render_id id.it) alias_set typ exp ^ end_newline | DecD (id, params, typ, []) -> let prefix = if recursive then "" else "Axiom " in - start ^ render_axiom prefix alias_set id params typ ^ end_newline + start ^ render_axiom prefix alias_set (render_id id.it) params typ ^ end_newline | DecD (id, params, typ, _clauses) -> (* TODO add condition: when List.exists has_prems clauses*) let prefix = if recursive then "" else "Axiom " in - start ^ render_axiom prefix alias_set id params typ ^ end_newline + start ^ render_axiom prefix alias_set (render_id id.it) params typ ^ end_newline (* TODO activate this when deftorel comes in *) (* | DecD (id, params, typ, clauses) -> let prefix = if recursive then "" else "Definition " in start ^ render_function_def alias_set prefix id.it params typ clauses ^ end_newline *) | RelD (id, _, typ, []) -> let prefix = if recursive then "" else "Axiom " in - start ^ render_rel_axiom alias_set prefix id typ ^ end_newline + start ^ render_rel_axiom alias_set prefix (render_id id.it) typ ^ end_newline | RelD (id, _, typ, rules) -> let prefix = if recursive then "" else "Inductive " in - start ^ render_relation alias_set prefix id.it typ rules ^ end_newline + start ^ render_relation alias_set prefix (render_id id.it) typ rules ^ end_newline (* Mutual recursion - special handling for rocq *) | RecD defs -> start ^ (match defs with | [] -> "" @@ -824,6 +850,6 @@ let rec is_valid_def def = let string_of_script (il : script) = env_ref := Il.Env.env_of_script il; - exported_string ^ + exported_string ^ "(* Generated Code *)\n" ^ String.concat "" (List.filter is_valid_def il |> List.map (string_of_def true false StringSet.empty)) \ No newline at end of file From 41bc4102d19fe4b45e21ed074dcc53c4f3c87f4f Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Wed, 19 Nov 2025 17:28:42 +0000 Subject: [PATCH 017/115] Remove aliasing in mut checks since done in alias-mut pass now --- spectec/src/backend-rocq/print.ml | 221 ++++++++++++++---------------- 1 file changed, 101 insertions(+), 120 deletions(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index 17f1361b65..c5df8f8d11 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -209,20 +209,19 @@ let get_type_args t = | VarT (_, args) -> args | _ -> error t.at ("Following type should be a variable type: " ^ Il.Print.string_of_typ t) -let rec render_param_type exp_type alias_set param = +let rec render_param_type exp_type param = match param.it with - | ExpP (_, typ) -> render_type exp_type alias_set typ + | ExpP (_, typ) -> render_type exp_type typ | TypP _ -> "eqType" | DefP (_, params, typ) -> - string_of_list_suffix " -> " " -> " (render_param_type exp_type alias_set) params ^ render_type exp_type alias_set typ + string_of_list_suffix " -> " " -> " (render_param_type exp_type) params ^ render_type exp_type typ | GramP _ -> comment_parens ("Unsupported param: " ^ Il.Print.string_of_param param) -and render_type exp_type alias_set typ = - let rt_func = render_type exp_type alias_set in +and render_type exp_type typ = + let rt_func = render_type exp_type in match typ.it with - | VarT (id, []) when StringSet.mem id.it alias_set -> rt_func (Il.Eval.reduce_typ !env_ref typ) | VarT (id, []) -> id.it - | VarT (id, args) -> parens (id.it ^ " " ^ String.concat " " (List.map (render_arg exp_type alias_set) args)) + | VarT (id, args) -> parens (id.it ^ " " ^ String.concat " " (List.map (render_arg exp_type) args)) | BoolT -> "bool" | NumT nt -> render_numtyp nt | TextT -> "string" @@ -231,8 +230,8 @@ and render_type exp_type alias_set typ = | IterT (t, Opt) -> parens ("option " ^ rt_func t) | IterT (t, _) -> parens ("list " ^ rt_func t) -and render_exp exp_type alias_set exp = - let r_func = render_exp exp_type alias_set in +and render_exp exp_type exp = + let r_func = render_exp exp_type in match exp.it with | VarE id -> render_id id.it | BoolE b -> string_of_bool b @@ -291,15 +290,15 @@ and render_exp exp_type alias_set exp = | CatE (e1, e2) -> parens (r_func e1 ^ " ++ " ^ r_func e2) | IdxE (e1, e2) -> parens ("lookup_total " ^ r_func e1 ^ " " ^ r_func e2) | SliceE (e1, e2, e3) -> parens ("list_slice" ^ r_func e1 ^ " " ^ r_func e2 ^ " " ^ r_func e3) - | UpdE (e1, p, e2) -> render_path_start p alias_set e1 false e2 - | ExtE (e1, p, e2) -> render_path_start p alias_set e1 true e2 - | CallE (id, args) -> parens (render_id id.it ^ " " ^ String.concat " " (List.map (render_arg exp_type alias_set) args)) + | UpdE (e1, p, e2) -> render_path_start p e1 false e2 + | ExtE (e1, p, e2) -> render_path_start p e1 true e2 + | CallE (id, args) -> parens (render_id id.it ^ " " ^ String.concat " " (List.map (render_arg exp_type) args)) (* Iter handling *) | IterE (e, (ListN (n, _), [])) -> parens ("List.repeat " ^ (r_func e) ^ " " ^ (r_func n)) | IterE (e, (_, [])) -> r_func e | IterE (e, _) when exp_type = LHS -> r_func e | IterE (e, (iter, iter_binds)) -> - let binds = List.map (fun (id, e) -> parens (render_id id.it ^ " : " ^ render_type exp_type alias_set (remove_iter_from_type e.note))) iter_binds in + let binds = List.map (fun (id, e) -> parens (render_id id.it ^ " : " ^ render_type exp_type (remove_iter_from_type e.note))) iter_binds in let iter_exps = List.map snd iter_binds in let n = List.length iter_binds - 1 in let lst = if iter = Opt then iter_exp_opt_funcs else iter_exp_lst_funcs in @@ -308,33 +307,33 @@ and render_exp exp_type alias_set exp = | None -> error exp.at "Iteration exceeded the supported amount for rocq translation" in parens (pred_name ^ " " ^ render_lambda binds (r_func e) ^ " " ^ - String.concat " " (List.map (render_exp exp_type alias_set) iter_exps)) + String.concat " " (List.map (render_exp exp_type) iter_exps)) | CvtE (e1, _nt1, nt2) -> parens (r_func e1 ^ " : " ^ render_numtyp nt2) | SubE _ -> error exp.at "Encountered subtype expression. Please run sub pass" -and render_arg exp_type alias_set a = +and render_arg exp_type a = match a.it with - | ExpA e -> render_exp exp_type alias_set e - | TypA t -> render_type exp_type alias_set t + | ExpA e -> render_exp exp_type e + | TypA t -> render_type exp_type t | DefA id -> render_id id.it | _ -> comment_parens ("Unsupported arg: " ^ Il.Print.string_of_arg a) -and render_bind exp_type alias_set b = +and render_bind exp_type b = match b.it with - | ExpB (id, typ) -> parens (render_id id.it ^ " : " ^ render_type exp_type alias_set typ) + | ExpB (id, typ) -> parens (render_id id.it ^ " : " ^ render_type exp_type typ) | TypB id -> parens (render_id id.it ^ " : Type") | DefB (id, params, typ) -> parens (render_id id.it ^ " : " ^ - string_of_list_suffix " -> " " -> " (render_param_type exp_type alias_set) params ^ - render_type exp_type alias_set typ) + string_of_list_suffix " -> " " -> " (render_param_type exp_type) params ^ + render_type exp_type typ) | GramB _ -> comment_parens ("Unsupported bind: " ^ Il.Print.string_of_bind b) -and render_param exp_type alias_set param = +and render_param exp_type param = let get_id p = match p.it with | ExpP (id, _) | TypP id | DefP (id, _, _) | GramP (id, _) -> render_id id.it in - parens (get_id param ^ " : " ^ render_param_type exp_type alias_set param) + parens (get_id param ^ " : " ^ render_param_type exp_type param) (* PATH Functions *) @@ -347,15 +346,15 @@ and transform_list_path (p : path) = and render_lambda binds text = parens ("fun " ^ String.concat " " binds ^ " => " ^ text) -and render_path_start (p : path) alias_set start_exp is_extend end_exp = +and render_path_start (p : path) start_exp is_extend end_exp = let paths = List.rev (p :: transform_list_path p) in - (render_path paths alias_set (start_exp.note) p.at 0 (Some start_exp) is_extend end_exp) + (render_path paths (start_exp.note) p.at 0 (Some start_exp) is_extend end_exp) -and render_path (paths : path list) alias_set typ at n name is_extend end_exp = +and render_path (paths : path list) typ at n name is_extend end_exp = let render_record_update t1 t2 t3 = parens (t1 ^ " <| " ^ t2 ^ " := " ^ t3 ^ " |>") in - let r_func_e = render_exp RHS alias_set in + let r_func_e = render_exp RHS in let is_dot p = (match p.it with | DotP _ -> true | _ -> false @@ -370,7 +369,7 @@ and render_path (paths : path list) alias_set typ at n name is_extend end_exp = (* End logic for extend *) | [{it = IdxP (_, e); _}] when is_extend -> let extend_term = parens (new_name ^ " ++ " ^ r_func_e end_exp) in - let bind = render_bind RHS alias_set (ExpB (new_name $ no_region, new_name_typ) $ no_region) in + let bind = render_bind RHS (ExpB (new_name $ no_region, new_name_typ) $ no_region) in parens ("list_update_func " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ render_lambda [bind] extend_term) | [{it = DotP (_, a); _}] when is_extend -> let projection_term = parens (render_atom a ^ " " ^ r_func_e (list_name n)) in @@ -378,11 +377,11 @@ and render_path (paths : path list) alias_set typ at n name is_extend end_exp = render_record_update (r_func_e (list_name n)) (render_atom a) extend_term | [{it = SliceP (_, e1, e2); _}] when is_extend -> let extend_term = parens (new_name ^ " ++ " ^ r_func_e end_exp) in - let bind = render_bind RHS alias_set (ExpB (new_name $ no_region, new_name_typ) $ no_region) in + let bind = render_bind RHS (ExpB (new_name $ no_region, new_name_typ) $ no_region) in parens ("list_slice_update " ^ r_func_e (list_name n) ^ " " ^ r_func_e e1 ^ " " ^ r_func_e e2 ^ " " ^ render_lambda [bind] extend_term) (* End logic for update *) | [{it = IdxP (_, e); _}] -> - let bind = render_bind RHS alias_set (ExpB ("_" $ no_region, new_name_typ) $ no_region) in + let bind = render_bind RHS (ExpB ("_" $ no_region, new_name_typ) $ no_region) in parens ("list_update_func " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ " " ^ render_lambda [bind] (r_func_e end_exp)) | [{it = DotP (_, a); _}] -> render_record_update (r_func_e (list_name n)) (render_atom a) (r_func_e end_exp) @@ -390,9 +389,9 @@ and render_path (paths : path list) alias_set typ at n name is_extend end_exp = parens ("list_slice_update " ^ r_func_e (list_name n) ^ " " ^ r_func_e e1 ^ " " ^ r_func_e e2 ^ " " ^ r_func_e end_exp) (* Middle logic *) | {it = IdxP (_, e); note; _} :: ps -> - let path_term = render_path ps alias_set note at (n + 1) None is_extend end_exp in + let path_term = render_path ps note at (n + 1) None is_extend end_exp in let new_name = var_prefix ^ string_of_int (n + 1) in - let bind = render_bind RHS alias_set (ExpB (new_name $ no_region, new_name_typ) $ no_region) in + let bind = render_bind RHS (ExpB (new_name $ no_region, new_name_typ) $ no_region) in parens ("list_update_func " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ " " ^ render_lambda [bind] path_term) | ({it = DotP _; note; _} as p) :: ps -> let (dot_paths, ps') = list_split is_dot (p :: ps) in @@ -419,7 +418,7 @@ and render_path (paths : path list) alias_set typ at n name is_extend end_exp = render_record_update (r_func_e (list_name n)) update_fields final_term ) else ( - let path_term = render_path ps' alias_set note at n (Some new_exp) is_extend end_exp in + let path_term = render_path ps' note at n (Some new_exp) is_extend end_exp in render_record_update (r_func_e (list_name n)) update_fields path_term ) | ({it = SliceP (_, _e1, _e2); _} as p) :: _ps -> @@ -434,8 +433,8 @@ and render_path (paths : path list) alias_set typ at n name is_extend end_exp = (* Catch all error if we encounter empty list or RootP *) | _ -> error at "Paths should not be empty" -and render_binders (alias_set : StringSet.t) (binds : bind list) = - string_of_list_prefix " " " " (render_bind RHS alias_set) binds +and render_binders (binds : bind list) = + string_of_list_prefix " " " " (render_bind RHS) binds let render_binders_ids (binds : bind list) = string_of_list_prefix " " " " get_bind_id binds @@ -443,15 +442,15 @@ let render_binders_ids (binds : bind list) = let render_match_binders params = String.concat ", " (List.map get_param_id params) -let render_params alias_set params = - string_of_list_prefix " " " " (render_param RHS alias_set) params +let render_params params = + string_of_list_prefix " " " " (render_param RHS) params -let render_match_args alias_set args = - string_of_list_prefix " " ", " (render_arg LHS alias_set) args +let render_match_args args = + string_of_list_prefix " " ", " (render_arg LHS) args -let string_of_eqtype_proof recursive (cant_do_equality: bool) alias_set id (binds : bind list) = - let binders = render_binders alias_set binds in +let string_of_eqtype_proof recursive (cant_do_equality: bool) id (binds : bind list) = + let binders = render_binders binds in let binder_ids = render_binders_ids binds in let id' = render_id id in (* Decidable equality proof *) @@ -487,20 +486,20 @@ let string_of_eqtype_proof recursive (cant_do_equality: bool) alias_set id (bind "HB.instance Definition _" ^ binders ^ " := hasDecEq.Build " ^ parens (id' ^ binder_ids) ^ " " ^ parens ("eq" ^ id' ^ "P" ^ binder_ids) ^ ".\n" ^ "Hint Resolve " ^ id' ^ "_eq_dec : eq_dec_db" -let string_of_relation_args alias_set typ = - string_of_list "" " -> " " -> " (render_type REL alias_set) (transform_case_typ typ) +let string_of_relation_args typ = + string_of_list "" " -> " " -> " (render_type REL) (transform_case_typ typ) -let rec render_prem alias_set prem = - let r_func = render_prem alias_set in +let rec render_prem prem = + let r_func = render_prem in match prem.it with - | IfPr exp -> render_exp REL alias_set exp - | RulePr (id, _m, exp) -> parens (render_id id.it ^ string_of_list_prefix " " " " (render_exp REL alias_set) (transform_case_tup exp)) + | IfPr exp -> render_exp REL exp + | RulePr (id, _m, exp) -> parens (render_id id.it ^ string_of_list_prefix " " " " (render_exp REL) (transform_case_tup exp)) | NegPr p -> parens ("~" ^ r_func p) | ElsePr -> "True " ^ comment_parens ("Unsupported premise: otherwise") (* Will be removed by an else pass *) | IterPr (p, (_, [])) -> r_func p | IterPr (p, (iter, ps)) -> let option_conversion s = if iter = Opt then parens ("option_to_list " ^ s) else s in - let binds = List.map (fun (id, e) -> parens (render_id id.it ^ " : " ^ render_type REL alias_set (remove_iter_from_type e.note))) ps in + let binds = List.map (fun (id, e) -> parens (render_id id.it ^ " : " ^ render_type REL (remove_iter_from_type e.note))) ps in let iter_exps = List.map snd ps in let n = List.length ps - 1 in let pred_name = match (List.nth_opt iter_prem_rels_list n) with @@ -508,22 +507,22 @@ let rec render_prem alias_set prem = | None -> error prem.at "Iteration exceeded the supported amount for rocq translation" in pred_name ^ " " ^ render_lambda binds (r_func p) ^ " " ^ - String.concat " " (List.map (render_exp REL alias_set) iter_exps |> List.map option_conversion) + String.concat " " (List.map (render_exp REL) iter_exps |> List.map option_conversion) | LetPr _ -> "True " ^ comment_parens ("Unsupported premise: " ^ Il.Print.string_of_prem prem) -let render_typealias alias_set id binds typ = - "Definition " ^ id ^ render_binders alias_set binds ^ " : Type := " ^ render_type RHS alias_set typ +let render_typealias id binds typ = + "Definition " ^ id ^ render_binders binds ^ " : Type := " ^ render_type RHS typ -let render_record recursive alias_set id binds fields = +let render_record recursive id binds fields = let constructor_name = "MK" ^ id in - let inhabitance_binders = render_binders alias_set binds in + let inhabitance_binders = render_binders binds in let binders = render_binders_ids binds in (* Standard Record definition *) "Record " ^ id ^ inhabitance_binders ^ " := " ^ constructor_name ^ "\n{\t" ^ String.concat "\n;\t" (List.map (fun (a, (_, typ, _), _) -> - render_atom a ^ " : " ^ render_type RHS alias_set typ) fields) ^ "\n}.\n\n" ^ + render_atom a ^ " : " ^ render_type RHS typ) fields) ^ "\n}.\n\n" ^ (* Inhabitance proof for default values *) "Global Instance Inhabited_" ^ id ^ inhabitance_binders ^ " : Inhabited " ^ parens (id ^ binders) ^ " := \n" ^ @@ -544,7 +543,7 @@ let render_record recursive alias_set id binds fields = (* Setter proof *) "#[export] Instance eta__" ^ id ^ " : Settable _ := settable! " ^ constructor_name ^ " <" ^ String.concat ";" (List.map (fun (a, _, _) -> render_atom a) fields) ^ ">" - ^ ".\n\n" ^ string_of_eqtype_proof recursive false alias_set id [] + ^ ".\n\n" ^ string_of_eqtype_proof recursive false id [] let rec has_typ id t = match t.it with @@ -553,9 +552,9 @@ let rec has_typ id t = | TupT pairs -> List.exists (fun (_, t') -> has_typ id t') pairs | _ -> false -let inhabitance_proof alias_set id binds cases = +let inhabitance_proof id binds cases = (* Inhabitance proof for default values *) - let inhabitance_binders = render_binders alias_set binds in + let inhabitance_binders = render_binders binds in let binders = render_binders_ids binds in "Global Instance Inhabited__" ^ id ^ inhabitance_binders ^ " : Inhabited " ^ parens (id ^ binders) ^ let rec render_proof cs = @@ -574,55 +573,53 @@ let cant_do_equality binds cases = (List.exists is_typ_bind binds) || (List.exists (fun (_, (binds', _, _), _) -> List.exists is_typ_bind binds') cases) -let render_case_typs alias_set t = +let render_case_typs t = let typs = transform_case_args t in string_of_list_prefix " " " " (fun (e, t) -> - parens (render_exp RHS alias_set e ^ " : " ^ render_type RHS alias_set t)) typs + parens (render_exp RHS e ^ " : " ^ render_type RHS t)) typs -let render_variant_typ alias_set is_recursive prefix id binds cases = - prefix ^ id ^ render_binders alias_set binds ^ " : Type :=\n\t" ^ +let render_variant_typ is_recursive prefix id binds cases = + prefix ^ id ^ render_binders binds ^ " : Type :=\n\t" ^ String.concat "\n\t" (List.map (fun (m, (_, t, _), _) -> - "| " ^ render_mixop id m ^ render_case_typs alias_set t ^ " : " ^ id ^ render_binders_ids binds + "| " ^ render_mixop id m ^ render_case_typs t ^ " : " ^ id ^ render_binders_ids binds ) cases) ^ if is_recursive then "" else (* Inhabitance proof *) - ".\n\n" ^ inhabitance_proof alias_set id binds cases ^ + ".\n\n" ^ inhabitance_proof id binds cases ^ (* Eq proof *) - ".\n\n" ^ string_of_eqtype_proof is_recursive (cant_do_equality binds cases) alias_set id binds + ".\n\n" ^ string_of_eqtype_proof is_recursive (cant_do_equality binds cases) id binds -let render_function_def alias_set prefix id params r_typ clauses = - prefix ^ id ^ render_params alias_set params ^ " : " ^ render_type RHS alias_set r_typ ^ " :=\n" ^ - "\tmatch " ^ render_match_binders params ^ " return " ^ render_type RHS alias_set r_typ ^ " with\n\t\t" ^ +let render_function_def prefix id params r_typ clauses = + prefix ^ id ^ render_params params ^ " : " ^ render_type RHS r_typ ^ " :=\n" ^ + "\tmatch " ^ render_match_binders params ^ " return " ^ render_type RHS r_typ ^ " with\n\t\t" ^ String.concat "\n\t\t" (List.map (fun clause -> match clause.it with | DefD (_, args, exp, _) -> - "|" ^ render_match_args alias_set args ^ " => " ^ render_exp RHS alias_set exp) clauses) ^ + "|" ^ render_match_args args ^ " => " ^ render_exp RHS exp) clauses) ^ "\n\tend" -let render_relation alias_set prefix id typ rules = - prefix ^ id ^ " : " ^ string_of_relation_args alias_set typ ^ "Prop :=\n\t" ^ +let render_relation prefix id typ rules = + prefix ^ id ^ " : " ^ string_of_relation_args typ ^ "Prop :=\n\t" ^ String.concat "\n\t" (List.map (fun rule -> match rule.it with | RuleD (rule_id, binds, _, exp, prems) -> - let string_prems = string_of_list "\n\t\t" " ->\n\t\t" " ->\n\t\t" (render_prem alias_set) prems in - let forall_quantifiers = string_of_list "forall " ", " " " (render_bind REL alias_set) binds in - "| " ^ render_id rule_id.it ^ " : " ^ forall_quantifiers ^ string_prems ^ render_id id ^ " " ^ String.concat " " (List.map (render_exp REL alias_set) (transform_case_tup exp)) + let string_prems = string_of_list "\n\t\t" " ->\n\t\t" " ->\n\t\t" (render_prem) prems in + let forall_quantifiers = string_of_list "forall " ", " " " (render_bind REL) binds in + "| " ^ render_id rule_id.it ^ " : " ^ forall_quantifiers ^ string_prems ^ render_id id ^ " " ^ String.concat " " (List.map (render_exp REL) (transform_case_tup exp)) ) rules) -let render_axiom prefix alias_set id params r_typ = - prefix ^ id ^ " : " ^ string_of_list "forall " ", " " " (render_param RHS alias_set) params ^ render_type RHS alias_set r_typ +let render_axiom prefix id params r_typ = + prefix ^ id ^ " : " ^ string_of_list "forall " ", " " " (render_param RHS) params ^ render_type RHS r_typ -let render_rel_axiom alias_set prefix id typ = - prefix ^ id ^ " : " ^ string_of_relation_args alias_set typ ^ "Prop" +let render_rel_axiom prefix id typ = + prefix ^ id ^ " : " ^ string_of_relation_args typ ^ "Prop" -let render_global_declaration id alias_set typ exp = - "Definition " ^ id ^ " : " ^ render_type RHS alias_set typ ^ " := " ^ render_exp RHS alias_set exp +let render_global_declaration id typ exp = + "Definition " ^ id ^ " : " ^ render_type RHS typ ^ " := " ^ render_exp RHS exp -let render_extra_info alias_set def = +let render_extra_info def = match def.it with - | TypD (id, _, [{it = InstD (binds, _, {it = AliasT typ; _}); _}]) -> - Some (render_typealias alias_set id.it binds typ) | TypD (id, _, [{it = InstD (binds, _, {it = VariantT typcases; _}); _}]) -> - Some (inhabitance_proof alias_set id.it binds typcases ^ ".\n\n" ^ - string_of_eqtype_proof true (cant_do_equality binds typcases) alias_set id.it binds) + Some (inhabitance_proof id.it binds typcases ^ ".\n\n" ^ + string_of_eqtype_proof true (cant_do_equality binds typcases) id.it binds) | _ -> None let get_type_alias_id def = @@ -638,8 +635,8 @@ let start_prefix def = match def.it with | _ when is_inductive def -> "Inductive " | DecD (_, _, _, []) -> "Axiom " - | DecD (_, _, _, _clauses) -> "Axiom " (* TODO add condition: when List.exists has_prems clauses*) - (* Enable this when deftorel comes in: | DecD _ -> "Fixpoint " *) + | DecD (_, _, _, clauses) when List.exists has_prems clauses -> "Axiom " + | DecD _ -> "Fixpoint " | TypD (_, _, [inst]) when is_record_typ inst -> "Record " | _ -> "" @@ -649,68 +646,52 @@ let is_axiom def = | _ -> false (* TODO - revise mutual recursion with other defs such as records and axioms *) -let rec string_of_def has_endline recursive (alias_set : StringSet.t) def = +let rec string_of_def has_endline recursive def = let end_newline = if has_endline then ".\n\n" else "" in let start = if recursive then "" else comment_parens (comment_desc_def def ^ " at: " ^ Util.Source.string_of_region def.at) ^ "\n" in match def.it with | TypD (id, _, [{it = InstD (binds, _, {it = AliasT typ; _}); _}]) -> if recursive then "" else - start ^ render_typealias alias_set (render_id id.it) binds typ ^ end_newline + start ^ render_typealias (render_id id.it) binds typ ^ end_newline | TypD (id, _, [{it = InstD (binds, _, {it = StructT typfields; _}); _}])-> - start ^ render_record recursive alias_set (render_id id.it) binds typfields ^ end_newline + start ^ render_record recursive (render_id id.it) binds typfields ^ end_newline | TypD (id, _, [{it = InstD (binds, _, {it = VariantT typcases; _}); _}]) -> let prefix = if recursive then "" else "Inductive " in - start ^ render_variant_typ alias_set recursive prefix (render_id id.it) binds typcases ^ end_newline + start ^ render_variant_typ recursive prefix (render_id id.it) binds typcases ^ end_newline | DecD (id, [], typ, [{it = DefD ([], [], exp, _); _}]) -> - start ^ render_global_declaration (render_id id.it) alias_set typ exp ^ end_newline + start ^ render_global_declaration (render_id id.it) typ exp ^ end_newline | DecD (id, params, typ, []) -> let prefix = if recursive then "" else "Axiom " in - start ^ render_axiom prefix alias_set (render_id id.it) params typ ^ end_newline - | DecD (id, params, typ, _clauses) -> (* TODO add condition: when List.exists has_prems clauses*) + start ^ render_axiom prefix (render_id id.it) params typ ^ end_newline + | DecD (id, params, typ, clauses) when List.exists has_prems clauses -> let prefix = if recursive then "" else "Axiom " in - start ^ render_axiom prefix alias_set (render_id id.it) params typ ^ end_newline - (* TODO activate this when deftorel comes in *) - (* | DecD (id, params, typ, clauses) -> + start ^ render_axiom prefix (render_id id.it) params typ ^ end_newline + | DecD (id, params, typ, clauses) -> let prefix = if recursive then "" else "Definition " in - start ^ render_function_def alias_set prefix id.it params typ clauses ^ end_newline *) + start ^ render_function_def prefix (render_id id.it) params typ clauses ^ end_newline | RelD (id, _, typ, []) -> let prefix = if recursive then "" else "Axiom " in - start ^ render_rel_axiom alias_set prefix (render_id id.it) typ ^ end_newline + start ^ render_rel_axiom prefix (render_id id.it) typ ^ end_newline | RelD (id, _, typ, rules) -> let prefix = if recursive then "" else "Inductive " in - start ^ render_relation alias_set prefix (render_id id.it) typ rules ^ end_newline + start ^ render_relation prefix (render_id id.it) typ rules ^ end_newline (* Mutual recursion - special handling for rocq *) | RecD defs -> start ^ (match defs with | [] -> "" | [d] -> - let extra_info = render_extra_info alias_set d in + let extra_info = render_extra_info d in start_prefix d ^ - string_of_def false true StringSet.empty d ^ + string_of_def false true d ^ begin match extra_info with | None -> end_newline | Some s -> end_newline ^ s ^ end_newline end - (* HACK - this is simply to deal with functions that are not supposed to be axioms. - The functions that are supposed to be axioms should not be mutually recursive anyways. - *) - | (d :: _defs') when List.exists is_axiom defs -> - let prefix = ".\n\n" ^ start_prefix d in - let aliases = StringSet.union alias_set (List.filter_map get_type_alias_id defs |> StringSet.of_list) in - let extra_info = String.concat ".\n\n" (List.filter_map (render_extra_info alias_set) defs) in - start_prefix d ^ - String.concat prefix ( - Util.Lib.List.filter_not is_alias_typ_def defs |> - List.map (string_of_def false true aliases) - ) ^ ".\n\n" ^ - extra_info ^ if extra_info = "" then "" else end_newline - | (d :: _defs') -> + | (d :: _) -> let prefix = "\n\nwith\n\n" in - let aliases = StringSet.union alias_set (List.filter_map get_type_alias_id defs |> StringSet.of_list) in - let extra_info = String.concat ".\n\n" (List.filter_map (render_extra_info alias_set) defs) in + let extra_info = String.concat ".\n\n" (List.filter_map render_extra_info defs) in start_prefix d ^ String.concat prefix ( - Util.Lib.List.filter_not is_alias_typ_def defs |> - List.map (string_of_def false true aliases) + List.map (string_of_def false true) defs ) ^ ".\n\n" ^ extra_info ^ if extra_info = "" then "" else end_newline ) @@ -852,4 +833,4 @@ let string_of_script (il : script) = env_ref := Il.Env.env_of_script il; exported_string ^ "(* Generated Code *)\n" ^ - String.concat "" (List.filter is_valid_def il |> List.map (string_of_def true false StringSet.empty)) \ No newline at end of file + String.concat "" (List.filter is_valid_def il |> List.map (string_of_def true false)) \ No newline at end of file From af7bc34d88eece6405f9069baa756e37bb40d39e Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 20 Nov 2025 09:39:32 +0000 Subject: [PATCH 018/115] Made naive name resolving for now to make rocq compile. --- spectec/src/backend-rocq/print.ml | 88 ++++++++++++++++++------------- 1 file changed, 50 insertions(+), 38 deletions(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index c5df8f8d11..288f5aedb6 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -21,18 +21,20 @@ type exptype = let var_prefix = "var_" - -let reserved_ids = ["N"; "in"; "In"; - "S"; - "return"; - "if"; - "bool"; - "prod"; - "at"; - "()"; "tt"; - "Import"; "Export"; - "List"; "String"; - "Type"; "list"; "nat"] |> StringSet.of_list +let render_rule_id rel_id id = rel_id ^ "__" ^ id + +let reserved_ids = + ["N"; "in"; "In"; + "S"; + "return"; + "if"; + "bool"; + "prod"; + "at"; + "()"; "tt"; + "Import"; "Export"; + "List"; "String"; + "Type"; "list"; "nat"] |> StringSet.of_list let remove_iter_from_type t = match t.it with @@ -156,16 +158,16 @@ let render_id id = | s when StringSet.mem s reserved_ids -> "res_" ^ s | _ -> id -let render_atom a = +let render_atom typ_id a = match a.it with - | Xl.Atom.Atom a -> render_id a + | Xl.Atom.Atom a -> typ_id ^ "_" ^ render_id a | _ -> "" let render_mixop typ_id (m : mixop) = let s = (match m with - | [{it = Atom a; _}] :: tail when List.for_all ((=) []) tail -> render_id a + | [{it = Atom a; _}] :: tail when List.for_all ((=) []) tail -> typ_id ^ "_" ^ render_id a | mixop -> String.concat "" (List.map ( - fun atoms -> String.concat "" (List.filter is_atomid atoms |> List.map render_atom)) mixop + fun atoms -> String.concat "" (List.filter is_atomid atoms |> List.map (render_atom typ_id))) mixop ) ) in (* HACK - should be done in improve ids *) @@ -176,11 +178,11 @@ let render_mixop typ_id (m : mixop) = let get_bind_id b = match b.it with - | ExpB (id, _) | TypB id | DefB (id, _, _) | GramB (id, _, _) -> id.it + | ExpB (id, _) | TypB id | DefB (id, _, _) | GramB (id, _, _) -> render_id id.it let get_param_id b = match b.it with - | ExpP (id, _) | TypP id | DefP (id, _, _) | GramP (id, _) -> id.it + | ExpP (id, _) | TypP id | DefP (id, _, _) | GramP (id, _) -> render_id id.it let render_numtyp nt = match nt with @@ -220,8 +222,8 @@ let rec render_param_type exp_type param = and render_type exp_type typ = let rt_func = render_type exp_type in match typ.it with - | VarT (id, []) -> id.it - | VarT (id, args) -> parens (id.it ^ " " ^ String.concat " " (List.map (render_arg exp_type) args)) + | VarT (id, []) -> render_id id.it + | VarT (id, args) -> parens (render_id id.it ^ " " ^ String.concat " " (List.map (render_arg exp_type) args)) | BoolT -> "bool" | NumT nt -> render_numtyp nt | TextT -> "string" @@ -258,7 +260,7 @@ and render_exp exp_type exp = | _ -> make_proj_chain i (List.length typs - 1) e end | CaseE (m, e) when exp_type = LHS -> - let name = Il.Print.string_of_typ_name exp.note in + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref exp.note) |> render_id in let exps = transform_case_tup e in begin match exps with | [] -> render_mixop name m @@ -266,7 +268,7 @@ and render_exp exp_type exp = end | CaseE (m, e) -> let exps = transform_case_tup e in - let name = Il.Print.string_of_typ_name exp.note in + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref exp.note) |> render_id in (* Reduce here to remove type aliasing *) let args = get_type_args (Il.Eval.reduce_typ !env_ref exp.note) in let implicit_args = if args = [] then "" else " " ^ String.concat " " (List.init (List.length args) (fun _ -> "_")) in @@ -278,8 +280,12 @@ and render_exp exp_type exp = | OptE (Some e) -> parens ("Some " ^ r_func e) | OptE None -> "None" | TheE e -> parens ("the " ^ r_func e) - | StrE fields -> "{| " ^ (String.concat "; " (List.map (fun (a, e) -> render_atom a ^ " := " ^ r_func e) fields)) ^ " |}" - | DotE (e, a) -> parens (render_atom a ^ " " ^ r_func e) + | StrE fields -> "{| " ^ (String.concat "; " (List.map (fun (a, e) -> + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref exp.note) |> render_id in + render_atom name a ^ " := " ^ r_func e) fields)) ^ " |}" + | DotE (e, a) -> + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref e.note) |> render_id in + parens (render_atom name a ^ " " ^ r_func e) | CompE (e1, e2) -> parens (r_func e1 ^ " @@ " ^ r_func e2) | ListE [] -> "[]" | ListE exps -> square_parens (String.concat "; " (List.map r_func exps)) @@ -371,10 +377,11 @@ and render_path (paths : path list) typ at n name is_extend end_exp = let extend_term = parens (new_name ^ " ++ " ^ r_func_e end_exp) in let bind = render_bind RHS (ExpB (new_name $ no_region, new_name_typ) $ no_region) in parens ("list_update_func " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ render_lambda [bind] extend_term) - | [{it = DotP (_, a); _}] when is_extend -> - let projection_term = parens (render_atom a ^ " " ^ r_func_e (list_name n)) in + | [{it = DotP (p, a); _}] when is_extend -> + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref p.note) |> render_id in + let projection_term = parens (render_atom name a ^ " " ^ r_func_e (list_name n)) in let extend_term = parens (projection_term ^ " ++ " ^ r_func_e end_exp) in - render_record_update (r_func_e (list_name n)) (render_atom a) extend_term + render_record_update (r_func_e (list_name n)) (render_atom name a) extend_term | [{it = SliceP (_, e1, e2); _}] when is_extend -> let extend_term = parens (new_name ^ " ++ " ^ r_func_e end_exp) in let bind = render_bind RHS (ExpB (new_name $ no_region, new_name_typ) $ no_region) in @@ -383,8 +390,9 @@ and render_path (paths : path list) typ at n name is_extend end_exp = | [{it = IdxP (_, e); _}] -> let bind = render_bind RHS (ExpB ("_" $ no_region, new_name_typ) $ no_region) in parens ("list_update_func " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ " " ^ render_lambda [bind] (r_func_e end_exp)) - | [{it = DotP (_, a); _}] -> - render_record_update (r_func_e (list_name n)) (render_atom a) (r_func_e end_exp) + | [{it = DotP (p, a); _}] -> + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref p.note) |> render_id in + render_record_update (r_func_e (list_name n)) (render_atom name a) (r_func_e end_exp) | [{it = SliceP (_, e1, e2); _}] -> parens ("list_slice_update " ^ r_func_e (list_name n) ^ " " ^ r_func_e e1 ^ " " ^ r_func_e e2 ^ " " ^ r_func_e end_exp) (* Middle logic *) @@ -395,8 +403,10 @@ and render_path (paths : path list) typ at n name is_extend end_exp = parens ("list_update_func " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ " " ^ render_lambda [bind] path_term) | ({it = DotP _; note; _} as p) :: ps -> let (dot_paths, ps') = list_split is_dot (p :: ps) in - let (end_atom, dot_paths') = match List.rev dot_paths with - | {it = DotP (_, a'); _} :: ds -> (a', ds) + let (end_name, end_atom, dot_paths') = match List.rev dot_paths with + | {it = DotP (p, a'); _} :: ds -> + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref p.note) |> render_id in + (render_atom name a', a', ds) | _ -> assert false (* Impossible since it has p *) in let projection_term = List.fold_right (fun p acc -> @@ -407,10 +417,12 @@ and render_path (paths : path list) typ at n name is_extend end_exp = ) dot_paths' (list_name n) in let update_fields = String.concat ";" (List.map (fun p -> match p.it with - | DotP (_, a) -> render_atom a + | DotP (p', a) -> + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref p'.note) |> render_id in + render_atom name a | _ -> error at "Should be a record access" ) dot_paths) in - let new_term = parens (render_atom end_atom ^ " " ^ r_func_e projection_term) in + let new_term = parens (end_name ^ " " ^ r_func_e projection_term) in let new_exp = DotE (projection_term, end_atom) $$ no_region % note in if ps' = [] then ( @@ -522,18 +534,18 @@ let render_record recursive id binds fields = (* Standard Record definition *) "Record " ^ id ^ inhabitance_binders ^ " := " ^ constructor_name ^ "\n{\t" ^ String.concat "\n;\t" (List.map (fun (a, (_, typ, _), _) -> - render_atom a ^ " : " ^ render_type RHS typ) fields) ^ "\n}.\n\n" ^ + render_atom id a ^ " : " ^ render_type RHS typ) fields) ^ "\n}.\n\n" ^ (* Inhabitance proof for default values *) "Global Instance Inhabited_" ^ id ^ inhabitance_binders ^ " : Inhabited " ^ parens (id ^ binders) ^ " := \n" ^ "{default_val := {|\n\t" ^ String.concat ";\n\t" (List.map (fun (a, _, _) -> - render_atom a ^ " := default_val") fields) ^ "|} }.\n\n" ^ + render_atom id a ^ " := default_val") fields) ^ "|} }.\n\n" ^ (* Append instance *) "Definition _append_" ^ id ^ inhabitance_binders ^ " (arg1 arg2 : " ^ parens (id ^ binders) ^ ") :=\n" ^ "{|\n\t" ^ String.concat "\t" ((List.map (fun (a, (_, t, _), _) -> - let record_id' = render_atom a in + let record_id' = render_atom id a in if (check_trivial_append !env_ref t) then record_id' ^ " := " ^ "arg1.(" ^ record_id' ^ ") @@ arg2.(" ^ record_id' ^ ");\n" else record_id' ^ " := " ^ "arg1.(" ^ record_id' ^ "); " ^ comment_parens "FIXME - Non-trivial append" ^ "\n" @@ -542,7 +554,7 @@ let render_record recursive id binds fields = (* Setter proof *) "#[export] Instance eta__" ^ id ^ " : Settable _ := settable! " ^ constructor_name ^ " <" ^ - String.concat ";" (List.map (fun (a, _, _) -> render_atom a) fields) ^ ">" + String.concat ";" (List.map (fun (a, _, _) -> render_atom id a) fields) ^ ">" ^ ".\n\n" ^ string_of_eqtype_proof recursive false id [] let rec has_typ id t = @@ -603,7 +615,7 @@ let render_relation prefix id typ rules = | RuleD (rule_id, binds, _, exp, prems) -> let string_prems = string_of_list "\n\t\t" " ->\n\t\t" " ->\n\t\t" (render_prem) prems in let forall_quantifiers = string_of_list "forall " ", " " " (render_bind REL) binds in - "| " ^ render_id rule_id.it ^ " : " ^ forall_quantifiers ^ string_prems ^ render_id id ^ " " ^ String.concat " " (List.map (render_exp REL) (transform_case_tup exp)) + "| " ^ render_rule_id id rule_id.it ^ " : " ^ forall_quantifiers ^ string_prems ^ render_id id ^ " " ^ String.concat " " (List.map (render_exp REL) (transform_case_tup exp)) ) rules) let render_axiom prefix id params r_typ = From 3c0dd9aee3f526d47cbddeb3f145d8651f975038 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 20 Nov 2025 09:53:03 +0000 Subject: [PATCH 019/115] Added removal overlapping check only for rocq for now. --- spectec/src/backend-rocq/print.ml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index 288f5aedb6..d6a3b7d9f3 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -1,5 +1,6 @@ open Il.Ast open Util.Source +open Il module StringSet = Set.Make(String) @@ -657,6 +658,14 @@ let is_axiom def = | DecD (_, _, _, _clauses) -> true | _ -> false +let remove_overlapping_clauses clauses = + Util.Lib.List.nub (fun clause clause' -> match clause.it, clause'.it with + | DefD (_, args, exp, _), DefD (_, args', exp', _) -> + let reduced_exp = Eval.reduce_exp !env_ref exp in + let reduced_exp' = Eval.reduce_exp !env_ref exp' in + Eq.eq_list Eq.eq_arg args args' && Eq.eq_exp reduced_exp reduced_exp' + ) clauses + (* TODO - revise mutual recursion with other defs such as records and axioms *) let rec string_of_def has_endline recursive def = let end_newline = if has_endline then ".\n\n" else "" in @@ -680,7 +689,7 @@ let rec string_of_def has_endline recursive def = start ^ render_axiom prefix (render_id id.it) params typ ^ end_newline | DecD (id, params, typ, clauses) -> let prefix = if recursive then "" else "Definition " in - start ^ render_function_def prefix (render_id id.it) params typ clauses ^ end_newline + start ^ render_function_def prefix (render_id id.it) params typ (remove_overlapping_clauses clauses) ^ end_newline | RelD (id, _, typ, []) -> let prefix = if recursive then "" else "Axiom " in start ^ render_rel_axiom prefix (render_id id.it) typ ^ end_newline From 0fc4513850c2452bd5356c9eab28aae4df0addf1 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 8 Dec 2025 17:03:03 +0000 Subject: [PATCH 020/115] enable ITE introduction pass and added specific rendering to rocq --- spectec/src/backend-rocq/print.ml | 1 + spectec/src/exe-spectec/main.ml | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index d6a3b7d9f3..72a92cec58 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -317,6 +317,7 @@ and render_exp exp_type exp = String.concat " " (List.map (render_exp exp_type) iter_exps)) | CvtE (e1, _nt1, nt2) -> parens (r_func e1 ^ " : " ^ render_numtyp nt2) | SubE _ -> error exp.at "Encountered subtype expression. Please run sub pass" + | IfE (e1, e2, e3) -> parens ("if " ^ r_func e1 ^ " then " ^ r_func e2 ^ " else " ^ r_func e3) and render_arg exp_type a = match a.it with diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index 026ffc5316..fd51ca66ae 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -262,7 +262,8 @@ let () = enable_pass SubExpansion; enable_pass ImproveIds; enable_pass AliasDemut; - enable_pass DefToRel + enable_pass DefToRel; + enable_pass Ite | _ when !print_al || !print_al_o <> "" -> enable_pass Sideconditions; | _ -> () From 5fc268822fc5a8dedc706373569f34802ecd1e42 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 22 Jan 2026 15:00:47 +0000 Subject: [PATCH 021/115] Added extra clause to functions with type families. --- spectec/src/backend-rocq/dune | 2 +- spectec/src/backend-rocq/print.ml | 87 +++++++++++++++++----- spectec/src/middlend/typefamilyremoval.ml | 8 +- spectec/src/middlend/typefamilyremoval.mli | 1 + 4 files changed, 75 insertions(+), 23 deletions(-) diff --git a/spectec/src/backend-rocq/dune b/spectec/src/backend-rocq/dune index 7c2af6f8ef..c43e6cb749 100644 --- a/spectec/src/backend-rocq/dune +++ b/spectec/src/backend-rocq/dune @@ -1,5 +1,5 @@ (library (name backend_rocq) - (libraries il) + (libraries il middlend) (modules print) ) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index 72a92cec58..ad8ec0cb4d 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -4,17 +4,52 @@ open Il module StringSet = Set.Make(String) +type rocq_env = { + mutable tf_set : StringSet.t; + mutable il_env : Il.Env.t +} + +let new_env () = { + tf_set = StringSet.empty; + il_env = Il.Env.empty +} + let iter_prem_rels_list = ["List.Forall"; "List.Forall2"; "List_Forall3"] let iter_exp_lst_funcs = ["List.map"; "list_zipWith"; "list_map3"] let iter_exp_opt_funcs = ["option_map"; "option_zipWith"; "option_map3"] let error at msg = Util.Error.error at "Rocq translation" msg +let env_ref = ref (new_env ()) + let rec list_split (f : 'a -> bool) = function | [] -> ([], []) | x :: xs when f x -> let x_true, x_false = list_split f xs in (x :: x_true, x_false) | xs -> ([], xs) +let rec is_type_family t = + match t.it with + | VarT (id, _) -> StringSet.mem id.it !env_ref.tf_set + | IterT (t', _) -> is_type_family t' + | TupT typs -> List.exists (fun (_, t') -> is_type_family t') typs + | _ -> false + +let is_type_family_param p = + match p.it with + | ExpP (_, t) -> is_type_family t + | _ -> false + +let needs_inh_class e = + match e.it with + | IdxE _ -> (true, false) + | TheE _ -> (true, false) + | _ -> (false, true) + +let needs_inh_class_path p = + match p.it with + | IdxP _ -> (true, false) + | _ -> (false, true) + type exptype = | LHS | RHS @@ -71,8 +106,6 @@ let comment_parens s = "(* " ^ s ^ " *)" let family_type_suffix = "entry" -let env_ref = ref Il.Env.empty - let is_record_typ inst = match inst.it with | InstD (_, _, {it = StructT _; _}) -> true @@ -174,7 +207,7 @@ let render_mixop typ_id (m : mixop) = (* HACK - should be done in improve ids *) match s with | "_" -> "mk_" ^ typ_id - | s when Il.Env.mem_typ !env_ref (s $ no_region) -> "mk_" ^ s + | s when Il.Env.mem_typ !env_ref.il_env (s $ no_region) -> "mk_" ^ s | s -> s let get_bind_id b = @@ -261,7 +294,7 @@ and render_exp exp_type exp = | _ -> make_proj_chain i (List.length typs - 1) e end | CaseE (m, e) when exp_type = LHS -> - let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref exp.note) |> render_id in + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env exp.note) |> render_id in let exps = transform_case_tup e in begin match exps with | [] -> render_mixop name m @@ -269,9 +302,9 @@ and render_exp exp_type exp = end | CaseE (m, e) -> let exps = transform_case_tup e in - let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref exp.note) |> render_id in + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env exp.note) |> render_id in (* Reduce here to remove type aliasing *) - let args = get_type_args (Il.Eval.reduce_typ !env_ref exp.note) in + let args = get_type_args (Il.Eval.reduce_typ !env_ref.il_env exp.note) in let implicit_args = if args = [] then "" else " " ^ String.concat " " (List.init (List.length args) (fun _ -> "_")) in begin match exps with | [] -> render_mixop name m @@ -282,10 +315,10 @@ and render_exp exp_type exp = | OptE None -> "None" | TheE e -> parens ("the " ^ r_func e) | StrE fields -> "{| " ^ (String.concat "; " (List.map (fun (a, e) -> - let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref exp.note) |> render_id in + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env exp.note) |> render_id in render_atom name a ^ " := " ^ r_func e) fields)) ^ " |}" | DotE (e, a) -> - let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref e.note) |> render_id in + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env e.note) |> render_id in parens (render_atom name a ^ " " ^ r_func e) | CompE (e1, e2) -> parens (r_func e1 ^ " @@ " ^ r_func e2) | ListE [] -> "[]" @@ -380,7 +413,7 @@ and render_path (paths : path list) typ at n name is_extend end_exp = let bind = render_bind RHS (ExpB (new_name $ no_region, new_name_typ) $ no_region) in parens ("list_update_func " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ render_lambda [bind] extend_term) | [{it = DotP (p, a); _}] when is_extend -> - let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref p.note) |> render_id in + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p.note) |> render_id in let projection_term = parens (render_atom name a ^ " " ^ r_func_e (list_name n)) in let extend_term = parens (projection_term ^ " ++ " ^ r_func_e end_exp) in render_record_update (r_func_e (list_name n)) (render_atom name a) extend_term @@ -392,8 +425,8 @@ and render_path (paths : path list) typ at n name is_extend end_exp = | [{it = IdxP (_, e); _}] -> let bind = render_bind RHS (ExpB ("_" $ no_region, new_name_typ) $ no_region) in parens ("list_update_func " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ " " ^ render_lambda [bind] (r_func_e end_exp)) - | [{it = DotP (p, a); _}] -> - let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref p.note) |> render_id in + | [{it = DotP (p, a); _}] -> + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p.note) |> render_id in render_record_update (r_func_e (list_name n)) (render_atom name a) (r_func_e end_exp) | [{it = SliceP (_, e1, e2); _}] -> parens ("list_slice_update " ^ r_func_e (list_name n) ^ " " ^ r_func_e e1 ^ " " ^ r_func_e e2 ^ " " ^ r_func_e end_exp) @@ -407,7 +440,7 @@ and render_path (paths : path list) typ at n name is_extend end_exp = let (dot_paths, ps') = list_split is_dot (p :: ps) in let (end_name, end_atom, dot_paths') = match List.rev dot_paths with | {it = DotP (p, a'); _} :: ds -> - let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref p.note) |> render_id in + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p.note) |> render_id in (render_atom name a', a', ds) | _ -> assert false (* Impossible since it has p *) in @@ -420,7 +453,7 @@ and render_path (paths : path list) typ at n name is_extend end_exp = let update_fields = String.concat ";" (List.map (fun p -> match p.it with | DotP (p', a) -> - let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref p'.note) |> render_id in + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p'.note) |> render_id in render_atom name a | _ -> error at "Should be a record access" ) dot_paths) in @@ -462,7 +495,6 @@ let render_params params = let render_match_args args = string_of_list_prefix " " ", " (render_arg LHS) args - let string_of_eqtype_proof recursive (cant_do_equality: bool) id (binds : bind list) = let binders = render_binders binds in let binder_ids = render_binders_ids binds in @@ -548,7 +580,7 @@ let render_record recursive id binds fields = "Definition _append_" ^ id ^ inhabitance_binders ^ " (arg1 arg2 : " ^ parens (id ^ binders) ^ ") :=\n" ^ "{|\n\t" ^ String.concat "\t" ((List.map (fun (a, (_, t, _), _) -> let record_id' = render_atom id a in - if (check_trivial_append !env_ref t) + if (check_trivial_append !env_ref.il_env t) then record_id' ^ " := " ^ "arg1.(" ^ record_id' ^ ") @@ arg2.(" ^ record_id' ^ ");\n" else record_id' ^ " := " ^ "arg1.(" ^ record_id' ^ "); " ^ comment_parens "FIXME - Non-trivial append" ^ "\n" )) fields) ^ "|}.\n\n" ^ @@ -603,12 +635,18 @@ let render_variant_typ is_recursive prefix id binds cases = (* Eq proof *) ".\n\n" ^ string_of_eqtype_proof is_recursive (cant_do_equality binds cases) id binds +let render_extra_clause params = + "|" ^ string_of_list_prefix " " ", " (fun _ -> "_") params ^ " => default_val" + let render_function_def prefix id params r_typ clauses = + let has_typ_fam = List.length params > 1 && List.exists is_type_family_param params in prefix ^ id ^ render_params params ^ " : " ^ render_type RHS r_typ ^ " :=\n" ^ "\tmatch " ^ render_match_binders params ^ " return " ^ render_type RHS r_typ ^ " with\n\t\t" ^ String.concat "\n\t\t" (List.map (fun clause -> match clause.it with | DefD (_, args, exp, _) -> - "|" ^ render_match_args args ^ " => " ^ render_exp RHS exp) clauses) ^ + "|" ^ render_match_args args ^ " => " ^ render_exp RHS exp) clauses + ) ^ + (if has_typ_fam then "\n\t\t" ^ render_extra_clause params else "") ^ "\n\tend" let render_relation prefix id typ rules = @@ -662,8 +700,8 @@ let is_axiom def = let remove_overlapping_clauses clauses = Util.Lib.List.nub (fun clause clause' -> match clause.it, clause'.it with | DefD (_, args, exp, _), DefD (_, args', exp', _) -> - let reduced_exp = Eval.reduce_exp !env_ref exp in - let reduced_exp' = Eval.reduce_exp !env_ref exp' in + let reduced_exp = Eval.reduce_exp !env_ref.il_env exp in + let reduced_exp' = Eval.reduce_exp !env_ref.il_env exp' in Eq.eq_list Eq.eq_arg args args' && Eq.eq_exp reduced_exp reduced_exp' ) clauses @@ -850,9 +888,18 @@ let rec is_valid_def def = | GramD _ | HintD _ -> false | RecD defs -> List.for_all is_valid_def defs | _ -> true - + +let is_tf_hint h = h.hintid.it = Middlend.Typefamilyremoval.type_family_hint_id + +let register_tf_hint env def = + match def.it with + | HintD { it = TypH (id, hints); _} when List.exists is_tf_hint hints -> + env.tf_set <- StringSet.add id.it env.tf_set + | _ -> () + let string_of_script (il : script) = - env_ref := Il.Env.env_of_script il; + !env_ref.il_env <- Il.Env.env_of_script il; + List.iter (register_tf_hint !env_ref) il; exported_string ^ "(* Generated Code *)\n" ^ String.concat "" (List.filter is_valid_def il |> List.map (string_of_def true false)) \ No newline at end of file diff --git a/spectec/src/middlend/typefamilyremoval.ml b/spectec/src/middlend/typefamilyremoval.ml index 3ac4121b71..468bc1acf7 100644 --- a/spectec/src/middlend/typefamilyremoval.ml +++ b/spectec/src/middlend/typefamilyremoval.ml @@ -60,7 +60,10 @@ type family_data = (id * bind list * Subst.t * int * typ * typ) let error at msg = Error.error at "Type families removal" msg let projection_hint_id = "tf_projection_func" -let projection_hint = { hintid = projection_hint_id $ no_region; hintexp = El.Ast.SeqE [] $ no_region} +let projection_hint = { hintid = projection_hint_id $ no_region; hintexp = El.Ast.SeqE [] $ no_region } + +let type_family_hint_id = "type_family" +let type_family_hint = { hintid = type_family_hint_id $ no_region; hintexp = El.Ast.SeqE [] $ no_region } let bind_to_string bind = match bind.it with @@ -702,7 +705,8 @@ let rec transform_type_family def = in let proj_ids, projections = List.split (List.mapi (gen_family_projections id one_inst) insts) in - let hintdefs = List.map (fun id -> HintD (DecH (id, [projection_hint]) $ def.at)) proj_ids in + let hintdefs = HintD (TypH (id, [type_family_hint]) $ def.at) :: + List.map (fun id' -> HintD (DecH (id', [projection_hint]) $ def.at)) proj_ids in TypD (id, params, [inst]) :: projections @ hintdefs | RecD defs -> [RecD (List.concat_map transform_type_family defs)] | d -> [d] diff --git a/spectec/src/middlend/typefamilyremoval.mli b/spectec/src/middlend/typefamilyremoval.mli index 00b6c75145..73bca15b30 100644 --- a/spectec/src/middlend/typefamilyremoval.mli +++ b/spectec/src/middlend/typefamilyremoval.mli @@ -1,2 +1,3 @@ val projection_hint_id : string +val type_family_hint_id : string val transform : Il.Ast.script -> Il.Ast.script From 8efa035e32bcd4db45c073f741355cf81db1a6e8 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 22 Jan 2026 16:07:15 +0000 Subject: [PATCH 022/115] Added inhabited check for type variables in function definitions. --- spectec/src/backend-rocq/print.ml | 35 +++++++++++++++++++++---------- spectec/src/il/walk.ml | 17 ++++++++++----- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index ad8ec0cb4d..dee1dc686f 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -1,6 +1,7 @@ open Il.Ast open Util.Source open Il +open Il.Walk module StringSet = Set.Make(String) @@ -39,16 +40,20 @@ let is_type_family_param p = | ExpP (_, t) -> is_type_family t | _ -> false +let get_type_var t = + match t.it with + | VarT (id, _) when not (Il.Env.mem_typ !env_ref.il_env id) -> [id.it] + | _ -> [] + let needs_inh_class e = match e.it with - | IdxE _ -> (true, false) - | TheE _ -> (true, false) - | _ -> (false, true) + | IdxE _ | TheE _ -> (get_type_var e.note, false) + | _ -> ([], true) let needs_inh_class_path p = match p.it with - | IdxP _ -> (true, false) - | _ -> (false, true) + | IdxP _ -> (get_type_var p.note, false) + | _ -> ([], true) type exptype = | LHS @@ -638,9 +643,22 @@ let render_variant_typ is_recursive prefix id binds cases = let render_extra_clause params = "|" ^ string_of_list_prefix " " ", " (fun _ -> "_") params ^ " => default_val" +let render_inh_param inhib_type_vars param = + match param.it with + | TypP id when List.mem id.it inhib_type_vars -> Some ("{_ : Inhabited " ^ render_id id.it ^ "}") + | _ -> None + let render_function_def prefix id params r_typ clauses = let has_typ_fam = List.length params > 1 && List.exists is_type_family_param params in - prefix ^ id ^ render_params params ^ " : " ^ render_type RHS r_typ ^ " :=\n" ^ + let base_list_collector = base_collector [] (@) in + let c = { base_list_collector with collect_exp = needs_inh_class; collect_path = needs_inh_class_path } in + let inhabited_typ_vars = List.concat_map (fun clause -> + let DefD (_, _, exp, prems) = clause.it in + collect_exp c exp @ List.concat_map (collect_prem c) prems + ) clauses in + let extra_params = List.filter_map (render_inh_param inhabited_typ_vars) params in + let e_params_render = if extra_params = [] then "" else " " ^ String.concat " " extra_params in + prefix ^ id ^ render_params params ^ e_params_render ^ " : " ^ render_type RHS r_typ ^ " :=\n" ^ "\tmatch " ^ render_match_binders params ^ " return " ^ render_type RHS r_typ ^ " with\n\t\t" ^ String.concat "\n\t\t" (List.map (fun clause -> match clause.it with | DefD (_, args, exp, _) -> @@ -674,11 +692,6 @@ let render_extra_info def = string_of_eqtype_proof true (cant_do_equality binds typcases) id.it binds) | _ -> None -let get_type_alias_id def = - match def.it with - | TypD (id, _, [inst]) when is_alias_typ inst -> Some id.it - | _ -> None - let has_prems c = match c.it with | DefD (_, _, _, prems) -> prems <> [] diff --git a/spectec/src/il/walk.ml b/spectec/src/il/walk.ml index 8f580e709c..8868bb8b6e 100644 --- a/spectec/src/il/walk.ml +++ b/spectec/src/il/walk.ml @@ -226,6 +226,7 @@ type 'a collector = { default: 'a; compose: 'a -> 'a -> 'a; collect_exp: exp -> 'a * bool; + collect_path: path -> 'a * bool; collect_bind: bind -> 'a * bool; collect_prem: prem -> 'a * bool; collect_iterexp: iterexp -> 'a * bool; @@ -239,6 +240,7 @@ let base_collector default compose = { default = default; compose = compose; collect_exp = no_collect default; + collect_path = no_collect default; collect_bind = no_collect default; collect_prem = no_collect default; collect_iterexp = no_collect default; @@ -303,11 +305,16 @@ and collect_iterexp c iterexp = and collect_path c p = let ( $@ ) = c.compose in - match p.it with - | RootP -> c.default - | DotP (p', _) -> collect_path c p' - | IdxP (p', e) -> collect_path c p' $@ collect_exp c e - | SliceP (p', e1, e2) -> collect_path c p' $@ collect_exp c e1 $@ collect_exp c e2 + let f = c.collect_path in + let traverse_list = + match p.it with + | RootP -> c.default + | DotP (p', _) -> collect_path c p' + | IdxP (p', e) -> collect_path c p' $@ collect_exp c e + | SliceP (p', e1, e2) -> collect_path c p' $@ collect_exp c e1 $@ collect_exp c e2 + in + let (res, continue) = f p in + res $@ if continue then traverse_list else c.default and collect_arg c a = let f = c.collect_arg in From 5cbf2242314c9f2d6aa0adc99f0ffdcc70f32b5f Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 22 Jan 2026 16:46:07 +0000 Subject: [PATCH 023/115] Made recursive functions into relations due to not having immediate clear measure to prove termination --- spectec/src/middlend/deftorel.ml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index f945a4c387..65b0caba01 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -590,11 +590,11 @@ let uses_def ids_set def = | _ -> false let rec transform_def (env : env) def = - let must_be_rel_def d = + (* let must_be_rel_def d = match d.it with | DecD (id, params, _, clauses) -> must_be_relation env id params clauses | _ -> false - in + in *) let has_exp_params d = match d.it with | DecD (_, params, _, _) -> List.for_all is_exp_param params @@ -608,7 +608,7 @@ let rec transform_def (env : env) def = cvt_def_to_rel env id params typ clauses | DecD (id, params, typ, clauses) -> [{ def with it = DecD (id, params, typ, List.map (transform_clause env) clauses) }] - | RecD defs when List.exists must_be_rel_def defs && List.for_all has_exp_params defs -> + | RecD defs when List.for_all has_exp_params defs -> let ids_ref = ref StringSet.empty in List.iter (fun d -> match d.it with | DecD (id, _, _, _) -> From ef634329d75b9f16f6343f3c19b1c8c1d944a419 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 26 Jan 2026 12:40:23 +0000 Subject: [PATCH 024/115] small fix on sub to allow for nested sub transformation. --- spectec/src/middlend/sub.ml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spectec/src/middlend/sub.ml b/spectec/src/middlend/sub.ml index 99d6f9db72..b9a49bd1d0 100644 --- a/spectec/src/middlend/sub.ml +++ b/spectec/src/middlend/sub.ml @@ -167,7 +167,7 @@ let rec rename_params s = function let lookup_arg_typ typcases m = List.find_map (fun (m', (_, arg_typ, _), _) -> if Il.Eq.eq_mixop m m' then Some arg_typ else None) typcases -let insert_injections env (def : def) : def list = +let insert_injections transformer env (def : def) : def list = add_type_info env def; let pairs = ready_pairs env in [ def ] @ @@ -196,7 +196,7 @@ let insert_injections env (def : def) : def list = let xe is_lhs = TupE (xes is_lhs) $$ no_region % arg_typ in DefD (binds, [ExpA (CaseE (m, xe true) $$ no_region % real_ty) $ no_region], - t_exp env (CaseE (m, xe false) $$ no_region % sup_ty), []) $ no_region + transform_exp transformer (CaseE (m, xe false) $$ no_region % sup_ty), []) $ no_region | _ -> let x = "x" $ no_region in let xe = VarE x $$ no_region % arg_typ in @@ -213,6 +213,6 @@ let transform (defs : script) = let transformer = { base_transformer with transform_exp = t_exp env } in let defs' = List.map (transform_def transformer) defs in env.pairs_mutable <- false; - let defs'' = List.concat_map (insert_injections env) defs' in + let defs'' = List.concat_map (insert_injections transformer env) defs' in S.iter (fun (sub, sup) -> error sup.at ("left-over subtype coercion `" ^ sub.it ^ "` <: `" ^ sup.it ^ "`")) env.pairs; defs'' From 9c182a9ed602731954c5b34de6dadf50c0e770ad Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 26 Jan 2026 13:03:18 +0000 Subject: [PATCH 025/115] Once again, turning premises of an else relation into disjunction, and many else relations into conjunctions. --- spectec/src/middlend/elsesimp.ml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/spectec/src/middlend/elsesimp.ml b/spectec/src/middlend/elsesimp.ml index 578dfe766a..23b91ef38e 100644 --- a/spectec/src/middlend/elsesimp.ml +++ b/spectec/src/middlend/elsesimp.ml @@ -106,15 +106,21 @@ let t_rule env else_ids rule = let* else_relation = Il.Env.find_opt_rel env.il_env (else_id $ no_region) in let (_, _, rules) = else_relation in let free_vars_binds = Free.free_list Free.bound_bind binds in - let prems', binds' = List.map (fun r -> + let prems_list, binds' = List.map (fun r -> let RuleD (_, binds', _, _, prems') = r.it in let free_vars = Free.diff (Free.free_list Free.free_prem prems') free_vars_binds in Lib.List.filter_not (is_wf_or_neg_prem else_ids env) prems', List.filter (is_in_bind free_vars) binds' ) rules |> List.split in - let prems', binds' = List.concat prems', List.concat binds' in + let binds' = List.concat binds' in - if prems' = [] || not (List.for_all is_boolean_prem prems') then None else - let neg_exps = List.filter_map get_exp prems' in + if prems_list = [] || not (List.for_all (fun prems' -> List.for_all is_boolean_prem prems') prems_list) then None else + let neg_exps = List.filter_map (fun prems' -> + let exps = List.filter_map get_exp prems' in + match exps with + | [] -> None + | x :: xs -> + Some (List.fold_left (fun acc exp -> BinE (`OrOp, `BoolT, acc, exp) $$ x.at % (BoolT $ x.at)) x xs) + ) prems_list in let new_prems = List.map (fun e -> IfPr e $ e.at) neg_exps in bind_else_set env else_id; Some { rule with it = RuleD (id, binds @ binds', m, exp, new_prems @ Lib.List.filter_not (is_neg_prem else_ids) prems) } From c9421816f46e22a9c6315c178d8eeccd0af6b94d Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 26 Jan 2026 15:03:45 +0000 Subject: [PATCH 026/115] Fix recursive functions with hints being filtered out. --- spectec/src/backend-rocq/print.ml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index dee1dc686f..bca016bad6 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -896,11 +896,11 @@ let exported_string = "Import ListNotations.\n" ^ "Import RecordSetNotations.\n\n" -let rec is_valid_def def = +let rec filter_def def = match def.it with - | GramD _ | HintD _ -> false - | RecD defs -> List.for_all is_valid_def defs - | _ -> true + | GramD _ | HintD _ -> None + | RecD defs -> Some {def with it = RecD (List.filter_map filter_def defs) } + | _ -> Some def let is_tf_hint h = h.hintid.it = Middlend.Typefamilyremoval.type_family_hint_id @@ -915,4 +915,4 @@ let string_of_script (il : script) = List.iter (register_tf_hint !env_ref) il; exported_string ^ "(* Generated Code *)\n" ^ - String.concat "" (List.filter is_valid_def il |> List.map (string_of_def true false)) \ No newline at end of file + String.concat "" (List.filter_map filter_def il |> List.map (string_of_def true false)) \ No newline at end of file From 3ab9cc5b00e199db763849fc5cb7286e66e2dad3 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 26 Jan 2026 16:20:29 +0000 Subject: [PATCH 027/115] Enabled else simplification and improve notation for list access, list length and inverse opt --- spectec/src/backend-rocq/print.ml | 10 +++++++--- spectec/src/exe-spectec/main.ml | 3 ++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index bca016bad6..3ee3f4eda3 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -108,6 +108,7 @@ let square_parens s = "[" ^ s ^ "]" let parens s = "(" ^ s ^ ")" let curly_parens s = "{" ^ s ^ "}" let comment_parens s = "(* " ^ s ^ " *)" +let line_parens spc s = "|" ^ spc ^ s ^ spc ^ "|" let family_type_suffix = "entry" @@ -318,7 +319,7 @@ and render_exp exp_type exp = | UncaseE _ -> error exp.at "Encountered uncase. Run uncase-removal pass" | OptE (Some e) -> parens ("Some " ^ r_func e) | OptE None -> "None" - | TheE e -> parens ("the " ^ r_func e) + | TheE e -> parens ("!" ^ parens (r_func e)) | StrE fields -> "{| " ^ (String.concat "; " (List.map (fun (a, e) -> let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env exp.note) |> render_id in render_atom name a ^ " := " ^ r_func e) fields)) ^ " |}" @@ -330,10 +331,10 @@ and render_exp exp_type exp = | ListE exps -> square_parens (String.concat "; " (List.map r_func exps)) | LiftE e -> parens ("option_to_list " ^ r_func e) | MemE (e1, e2) -> parens (r_func e1 ^ " \\in " ^ r_func e2) - | LenE e1 -> parens ("List.length " ^ r_func e1) + | LenE e1 -> parens (line_parens "" (r_func e1)) | CatE ({it = ListE [e1]; _}, e2) when exp_type = LHS -> parens (r_func e1 ^ " :: " ^ r_func e2) | CatE (e1, e2) -> parens (r_func e1 ^ " ++ " ^ r_func e2) - | IdxE (e1, e2) -> parens ("lookup_total " ^ r_func e1 ^ " " ^ r_func e2) + | IdxE (e1, e2) -> parens (r_func e1 ^ square_parens (line_parens " " (r_func e2))) | SliceE (e1, e2, e3) -> parens ("list_slice" ^ r_func e1 ^ " " ^ r_func e2 ^ " " ^ r_func e3) | UpdE (e1, p, e2) -> render_path_start p e1 false e2 | ExtE (e1, p, e2) -> render_path_start p e1 true e2 @@ -892,6 +893,9 @@ let exported_string = "Global Instance list_coercion (A B : Type) {_: Coercion A B}: Coercion (list A) (list B) := { coerce := list_coerce }.\n\n" ^ "Global Instance id_coercion (A : Type): Coercion A A := { coerce := id_coerce }.\n\n" ^ "Global Instance transitive_coercion (A B C : Type) `{Coercion A B} `{Coercion B C}: Coercion A C := { coerce := transitive_coerce }.\n\n" ^ + "Notation \"| x |\" := (List.length x) (at level 60).\n" ^ + "Notation \"!( x )\" := (the x) (at level 60).\n" ^ + "Notation \"x '[|' a '|]'\" := (lookup_total x a) (at level 10).\n" ^ "Open Scope wasm_scope.\n" ^ "Import ListNotations.\n" ^ "Import RecordSetNotations.\n\n" diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index 160c28e09e..caf57da457 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -273,7 +273,8 @@ let () = enable_pass ImproveIds; enable_pass AliasDemut; enable_pass DefToRel; - enable_pass Ite + enable_pass Ite; + enable_pass ElseSimp | _ when !print_al || !print_al_o <> "" -> enable_pass Sideconditions; | _ -> () From 0f4d8862898b3cc5db901ccdefe560be39dc23b6 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 27 Jan 2026 15:12:12 +0000 Subject: [PATCH 028/115] Made uncase projection functions into coercions for nicer output. --- spectec/src/backend-rocq/print.ml | 40 +++++++++++++++++++++----- spectec/src/middlend/uncaseremoval.ml | 17 ++++++++--- spectec/src/middlend/uncaseremoval.mli | 1 + 3 files changed, 47 insertions(+), 11 deletions(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index 3ee3f4eda3..a207655122 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -7,12 +7,14 @@ module StringSet = Set.Make(String) type rocq_env = { mutable tf_set : StringSet.t; - mutable il_env : Il.Env.t + mutable il_env : Il.Env.t; + mutable proj_set : StringSet.t } let new_env () = { tf_set = StringSet.empty; - il_env = Il.Env.empty + il_env = Il.Env.empty; + proj_set = StringSet.empty } let iter_prem_rels_list = ["List.Forall"; "List.Forall2"; "List_Forall3"] @@ -338,6 +340,8 @@ and render_exp exp_type exp = | SliceE (e1, e2, e3) -> parens ("list_slice" ^ r_func e1 ^ " " ^ r_func e2 ^ " " ^ r_func e3) | UpdE (e1, p, e2) -> render_path_start p e1 false e2 | ExtE (e1, p, e2) -> render_path_start p e1 true e2 + | CallE (id, [a]) when StringSet.mem id.it !env_ref.proj_set -> + parens (render_arg exp_type a ^ " :> " ^ (render_type exp_type exp.note)) | CallE (id, args) -> parens (render_id id.it ^ " " ^ String.concat " " (List.map (render_arg exp_type) args)) (* Iter handling *) | IterE (e, (ListN (n, _), [])) -> parens ("List.repeat " ^ (r_func e) ^ " " ^ (r_func n)) @@ -621,6 +625,9 @@ let inhabitance_proof id binds cases = in render_proof cases +let render_coercion base_typ_id coerc_typ_id proj_func_id = + "Global Instance " ^ proj_func_id ^ "_coercion : Coercion " ^ base_typ_id ^ " " ^ coerc_typ_id ^ " := { coerce := " ^ proj_func_id ^ " }" + let cant_do_equality binds cases = (List.exists is_typ_bind binds) || (List.exists (fun (_, (binds', _, _), _) -> List.exists is_typ_bind binds') cases) @@ -649,8 +656,14 @@ let render_inh_param inhib_type_vars param = | TypP id when List.mem id.it inhib_type_vars -> Some ("{_ : Inhabited " ^ render_id id.it ^ "}") | _ -> None -let render_function_def prefix id params r_typ clauses = +let render_single_type id at params = + match params with + | [{it = ExpP (_, typ); _}] -> render_type RHS typ + | _ -> error at "Given projection function: " ^ id ^ " has no parameters!" + +let render_function_def prefix id at params r_typ clauses = let has_typ_fam = List.length params > 1 && List.exists is_type_family_param params in + let is_proj_func = StringSet.mem id !env_ref.proj_set in let base_list_collector = base_collector [] (@) in let c = { base_list_collector with collect_exp = needs_inh_class; collect_path = needs_inh_class_path } in let inhabited_typ_vars = List.concat_map (fun clause -> @@ -666,7 +679,12 @@ let render_function_def prefix id params r_typ clauses = "|" ^ render_match_args args ^ " => " ^ render_exp RHS exp) clauses ) ^ (if has_typ_fam then "\n\t\t" ^ render_extra_clause params else "") ^ - "\n\tend" + "\n\tend" ^ + if is_proj_func + then + ".\n\n" ^ + render_coercion (render_single_type id at params) (render_type RHS r_typ) id + else "" let render_relation prefix id typ rules = prefix ^ id ^ " : " ^ string_of_relation_args typ ^ "Prop :=\n\t" ^ @@ -742,7 +760,7 @@ let rec string_of_def has_endline recursive def = start ^ render_axiom prefix (render_id id.it) params typ ^ end_newline | DecD (id, params, typ, clauses) -> let prefix = if recursive then "" else "Definition " in - start ^ render_function_def prefix (render_id id.it) params typ (remove_overlapping_clauses clauses) ^ end_newline + start ^ render_function_def prefix (render_id id.it) id.at params typ (remove_overlapping_clauses clauses) ^ end_newline | RelD (id, _, typ, []) -> let prefix = if recursive then "" else "Axiom " in start ^ render_rel_axiom prefix (render_id id.it) typ ^ end_newline @@ -889,10 +907,13 @@ let exported_string = "Definition id_coerce {A : Type} (a : A) : A := a.\n\n" ^ "Definition transitive_coerce {A B C : Type} `{Coercion A B} `{Coercion B C} (a : A): C :=\n" ^ "\tcoerce (coerce a).\n\n" ^ + "Definition total_coerce {A B: Type} `{Coercion A (option B)} {_ : Inhabited B} (a : A): B :=\n" ^ + "\tthe (coerce a).\n\n" ^ "Global Instance option_coercion (A B : Type) {_: Coercion A B}: Coercion (option A) (option B) := { coerce := option_coerce }.\n\n" ^ "Global Instance list_coercion (A B : Type) {_: Coercion A B}: Coercion (list A) (list B) := { coerce := list_coerce }.\n\n" ^ "Global Instance id_coercion (A : Type): Coercion A A := { coerce := id_coerce }.\n\n" ^ "Global Instance transitive_coercion (A B C : Type) `{Coercion A B} `{Coercion B C}: Coercion A C := { coerce := transitive_coerce }.\n\n" ^ + "Global Instance total_coercion (A B : Type) `{Coercion A (option B)} {_ : Inhabited B}: Coercion A B := { coerce := total_coerce}.\n\n" ^ "Notation \"| x |\" := (List.length x) (at level 60).\n" ^ "Notation \"!( x )\" := (the x) (at level 60).\n" ^ "Notation \"x '[|' a '|]'\" := (lookup_total x a) (at level 10).\n" ^ @@ -908,15 +929,20 @@ let rec filter_def def = let is_tf_hint h = h.hintid.it = Middlend.Typefamilyremoval.type_family_hint_id -let register_tf_hint env def = +let is_proj_hint h = h.hintid.it = Middlend.Uncaseremoval.uncase_proj_hint_id + +let rec register_hints env def = match def.it with | HintD { it = TypH (id, hints); _} when List.exists is_tf_hint hints -> env.tf_set <- StringSet.add id.it env.tf_set + | HintD { it = DecH (id, hints); _} when List.exists is_proj_hint hints -> + env.proj_set <- StringSet.add id.it env.proj_set + | RecD defs -> List.iter (register_hints env) defs | _ -> () let string_of_script (il : script) = !env_ref.il_env <- Il.Env.env_of_script il; - List.iter (register_tf_hint !env_ref) il; + List.iter (register_hints !env_ref) il; exported_string ^ "(* Generated Code *)\n" ^ String.concat "" (List.filter_map filter_def il |> List.map (string_of_def true false)) \ No newline at end of file diff --git a/spectec/src/middlend/uncaseremoval.ml b/spectec/src/middlend/uncaseremoval.ml index 70197d931f..a15cbd44c3 100644 --- a/spectec/src/middlend/uncaseremoval.ml +++ b/spectec/src/middlend/uncaseremoval.ml @@ -103,10 +103,16 @@ let make_bind p = | GramP _ -> assert false (* Avoid this *) ) $ p.at +let uncase_proj_hint_id = "uncase-proj-func" + +let generate_proj_func_hint at: hint = { hintid = uncase_proj_hint_id $ at; hintexp = El.Ast.SeqE [] $ at} + + let create_projection_functions id params mixops inst = let get_deftyp inst' = (match inst'.it with | InstD (_binds, _args, deftyp) -> deftyp.it ) in + let proj_name idx = (proj_prefix ^ id.it ^ "_" ^ Int.to_string idx) $ id.at in let at = inst.at in let user_typ = VarT (id, List.map make_arg params) $ at in let param_ids = List.map (fun p -> (Utils.get_param_id p).it) params in @@ -124,7 +130,7 @@ let create_projection_functions id params mixops inst = let new_arg = ExpA new_case_exp $ at in if has_one_case then let clause = DefD (List.map make_bind params @ new_binds, List.map make_arg params @ [new_arg], new_tup, []) $ at in - DecD ((proj_prefix ^ id.it ^ "_" ^ Int.to_string idx) $ id.at, new_params, no_name_tupt, [clause]) + DecD (proj_name idx, new_params, no_name_tupt, [clause]) else (* extra handling in case that it has more than one case *) let extra_arg = ExpA (VarE (fresh_name $ at) $$ at % user_typ) $ at in @@ -134,10 +140,10 @@ let create_projection_functions id params mixops inst = let opt_tup = OptE (Some new_tup) $$ at % opt_type in let clause' = DefD (List.map make_bind params @ new_binds, List.map make_arg params @ [new_arg], opt_tup, []) $ at in let extra_clause = DefD (List.map make_bind params @ new_binds @ [new_bind], List.map make_arg params @ [extra_arg], none_exp, []) $ at in - DecD ((proj_prefix ^ id.it ^ "_" ^ Int.to_string idx) $ id.at, new_params, opt_type, [clause'; extra_clause]) + DecD (proj_name idx, new_params, opt_type, [clause'; extra_clause]) in - List.map (fun m -> + List.concat_map (fun m -> (match (get_deftyp inst) with (* Should not happen due to reduction while collecting uncase expressions *) | AliasT _typ -> error inst.at "Found type alias while constructing projection functions, should not happen" @@ -149,7 +155,10 @@ let create_projection_functions id params mixops inst = Some (i, m, t) ) (List.mapi (fun i t -> (i, t)) typcases) in begin match mixop_opt with - | Some (i, m, t) -> make_func m (get_case_typs t) (List.length typcases = 1) i + | Some (idx, m, t) -> + make_func m (get_case_typs t) (List.length typcases = 1) idx :: + (* Add hint to distinguish this projection function from other functions *) + [ HintD (DecH (proj_name idx, [generate_proj_func_hint id.at]) $ id.at) ] | None -> error inst.at ("Could not find mixop " ^ Il.Print.string_of_mixop m ^ " while constructing projection functions") diff --git a/spectec/src/middlend/uncaseremoval.mli b/spectec/src/middlend/uncaseremoval.mli index 542bbf8052..4bdedd6db3 100644 --- a/spectec/src/middlend/uncaseremoval.mli +++ b/spectec/src/middlend/uncaseremoval.mli @@ -1 +1,2 @@ +val uncase_proj_hint_id : string val transform : Il.Ast.script -> Il.Ast.script From 98e29a23b80ffec10053bcaa66fff3ba9066a2e3 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 27 Jan 2026 17:11:26 +0000 Subject: [PATCH 029/115] Made disambiguation pass (which has name mangling as a fallback solution) for Rocq only. --- spectec/src/backend-rocq/disamb.ml | 137 +++++++++++++++++++++++++++++ spectec/src/backend-rocq/dune | 4 +- spectec/src/backend-rocq/print.ml | 67 +++++++------- 3 files changed, 173 insertions(+), 35 deletions(-) create mode 100644 spectec/src/backend-rocq/disamb.ml diff --git a/spectec/src/backend-rocq/disamb.ml b/spectec/src/backend-rocq/disamb.ml new file mode 100644 index 0000000000..321c7374a1 --- /dev/null +++ b/spectec/src/backend-rocq/disamb.ml @@ -0,0 +1,137 @@ +open Il.Ast +open Util.Source +open Il.Walk +open Xl + +module StringMap = Map.Make(String) + +type env = { + mutable disamb_map: (string * string) list StringMap.t; + mutable il_env: Il.Env.t +} + +let new_env () = { + disamb_map = StringMap.empty; + il_env = Il.Env.empty +} + +let env_ref: env ref = ref (new_env ()) + +let _print_env () = + List.iter (fun (typ_id, ss) -> + print_endline "Entry: "; + print_endline ("Type id: " ^ typ_id); + print_endline (String.concat " " (List.map (fun (base_id, _) -> base_id) ss)) + ) (StringMap.bindings !env_ref.disamb_map) + +let error at msg = Util.Error.error at "Rocq Generation" msg + +let (let*) = Option.bind + +let register_id typ_id base_id id = + !env_ref.disamb_map <- StringMap.update typ_id (fun opt -> + match opt with + | Some ss -> Some ((base_id, id) :: ss) + | None -> Some [(base_id, id)] + ) !env_ref.disamb_map + + +let t_atom_opt typ_id a = + match a.it with + | Atom.Atom s -> + let* ss = StringMap.find_opt typ_id !env_ref.disamb_map in + let* _, s' = List.find_opt (fun (base_s, _) -> s = base_s) ss in + Some {a with it = Atom.Atom s'} + | _ -> Some a + +let t_atom typ_id a = + match (t_atom_opt typ_id a) with + | Some a -> a + | _ -> assert false + (* | None -> error a.at "Could not find modified atom id" *) + +let t_mixop typ_id m = + List.map (fun atoms -> List.map (t_atom typ_id) atoms) m + +let t_exp e = + match e.it with + | CaseE (m, e') -> + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env e.note) in + {e with it = CaseE (t_mixop name m, e')} + | StrE fields -> + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env e.note) in + let fields' = List.map (fun (a, e') -> (t_atom name a, e')) fields in + {e with it = StrE fields'} + | DotE (e', a) -> + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env e'.note) in + {e with it = DotE (e', t_atom name a)} + | _ -> e + +let t_path p = + match p.it with + | DotP (p', a) -> + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p'.note) in + {p with it = DotP (p', t_atom name a)} + | _ -> p + +let rec t_rule_new rel_id base_r_id r_id = + let new_id = rel_id ^ "__" ^ r_id in + let lst = StringMap.bindings !env_ref.disamb_map in + begin match (List.find_opt (fun (_, ss) -> List.exists (fun (_, s') -> r_id = s') ss) lst) with + | Some _ -> t_rule_new rel_id base_r_id new_id + | None when Il.Env.mem_typ !env_ref.il_env (r_id $ no_region) -> t_rule_new rel_id base_r_id new_id + | None -> + register_id rel_id base_r_id r_id; + r_id + end + +let rec t_atom_new typ_id base_a a = + match base_a.it, a.it with + | Atom.Atom base_s, Atom.Atom s -> + let lst = StringMap.bindings !env_ref.disamb_map in + begin match (List.find_opt (fun (_, ss) -> List.exists (fun (_, s') -> s = s') ss) lst) with + | Some _ -> + t_atom_new typ_id base_a {a with it = Xl.Atom.Atom (typ_id ^ "_" ^ s)} + | None when Il.Env.mem_typ !env_ref.il_env (s $ no_region) -> + t_atom_new typ_id base_a {a with it = Xl.Atom.Atom (typ_id ^ "_" ^ s)} + | None -> + register_id typ_id base_s s; + {a with it = Atom.Atom s} + end + | _-> a + +let t_mixop_new typ_id m = + List.map (fun atoms -> List.map (fun a -> t_atom_new typ_id a a) atoms) m + +let t_inst t typ_id inst = + let InstD (binds, args, deftyp) = inst.it in + let deftyp' = match deftyp.it with + | VariantT typcases -> VariantT (List.map (fun (m, (binds', typ, prems), h) -> + (t_mixop_new typ_id m, + (List.map (transform_bind t) binds', transform_typ t typ, List.map (transform_prem t) prems), + h) + ) typcases) + | StructT typfields -> StructT (List.map (fun (a, (binds', typ, prems), h) -> + (t_atom_new typ_id a a, (List.map (transform_bind t) binds', transform_typ t typ, List.map (transform_prem t) prems), h) + ) typfields) + | AliasT typ -> AliasT (transform_typ t typ) in + { inst with it = InstD (List.map (transform_bind t) binds, List.map (transform_arg t) args, {deftyp with it = deftyp'})} + +let rec t_def def = + let t = { base_transformer with transform_path = t_path; transform_exp = t_exp } in + match def.it with + | TypD (typ_id, params, insts) -> + { def with it = TypD (typ_id, List.map (transform_param t) params, List.map (t_inst t typ_id.it) insts) } + | RecD defs -> { def with it = RecD (List.map t_def defs) } + | RelD (id, m, typ, rules) -> + { def with it = RelD (id, m, typ, + List.map (fun rule -> + let RuleD (r_id, binds, m, exp, prems) = rule.it in + { rule with it = RuleD ((t_rule_new id.it r_id.it r_id.it) $ r_id.at, + List.map (transform_bind t) binds, m, transform_exp t exp, List.map (transform_prem t) prems) } + ) rules) } + | _ -> transform_def t def + +let transform il = + !env_ref.il_env <- Il.Env.env_of_script il; + List.map t_def il \ No newline at end of file diff --git a/spectec/src/backend-rocq/dune b/spectec/src/backend-rocq/dune index c43e6cb749..a9b1519f67 100644 --- a/spectec/src/backend-rocq/dune +++ b/spectec/src/backend-rocq/dune @@ -1,5 +1,5 @@ (library (name backend_rocq) - (libraries il middlend) - (modules print) + (libraries il middlend xl) + (modules print disamb) ) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index a207655122..e2c53f8926 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -64,7 +64,7 @@ type exptype = let var_prefix = "var_" -let render_rule_id rel_id id = rel_id ^ "__" ^ id +(* let render_rule_id rel_id id = rel_id ^ "__" ^ id *) let reserved_ids = ["N"; "in"; "In"; @@ -200,16 +200,16 @@ let render_id id = | s when StringSet.mem s reserved_ids -> "res_" ^ s | _ -> id -let render_atom typ_id a = +let render_atom a = match a.it with - | Xl.Atom.Atom a -> typ_id ^ "_" ^ render_id a + | Xl.Atom.Atom a -> render_id a | _ -> "" let render_mixop typ_id (m : mixop) = let s = (match m with - | [{it = Atom a; _}] :: tail when List.for_all ((=) []) tail -> typ_id ^ "_" ^ render_id a + | [{it = Atom a; _}] :: tail when List.for_all ((=) []) tail -> render_id a | mixop -> String.concat "" (List.map ( - fun atoms -> String.concat "" (List.filter is_atomid atoms |> List.map (render_atom typ_id))) mixop + fun atoms -> String.concat "" (List.filter is_atomid atoms |> List.map (render_atom))) mixop ) ) in (* HACK - should be done in improve ids *) @@ -323,11 +323,11 @@ and render_exp exp_type exp = | OptE None -> "None" | TheE e -> parens ("!" ^ parens (r_func e)) | StrE fields -> "{| " ^ (String.concat "; " (List.map (fun (a, e) -> - let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env exp.note) |> render_id in - render_atom name a ^ " := " ^ r_func e) fields)) ^ " |}" + (* let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env exp.note) |> render_id in *) + render_atom a ^ " := " ^ r_func e) fields)) ^ " |}" | DotE (e, a) -> - let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env e.note) |> render_id in - parens (render_atom name a ^ " " ^ r_func e) + (* let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env e.note) |> render_id in *) + parens (render_atom a ^ " " ^ r_func e) | CompE (e1, e2) -> parens (r_func e1 ^ " @@ " ^ r_func e2) | ListE [] -> "[]" | ListE exps -> square_parens (String.concat "; " (List.map r_func exps)) @@ -422,11 +422,11 @@ and render_path (paths : path list) typ at n name is_extend end_exp = let extend_term = parens (new_name ^ " ++ " ^ r_func_e end_exp) in let bind = render_bind RHS (ExpB (new_name $ no_region, new_name_typ) $ no_region) in parens ("list_update_func " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ render_lambda [bind] extend_term) - | [{it = DotP (p, a); _}] when is_extend -> - let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p.note) |> render_id in - let projection_term = parens (render_atom name a ^ " " ^ r_func_e (list_name n)) in + | [{it = DotP (_p, a); _}] when is_extend -> + (* let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p.note) |> render_id in *) + let projection_term = parens (render_atom a ^ " " ^ r_func_e (list_name n)) in let extend_term = parens (projection_term ^ " ++ " ^ r_func_e end_exp) in - render_record_update (r_func_e (list_name n)) (render_atom name a) extend_term + render_record_update (r_func_e (list_name n)) (render_atom a) extend_term | [{it = SliceP (_, e1, e2); _}] when is_extend -> let extend_term = parens (new_name ^ " ++ " ^ r_func_e end_exp) in let bind = render_bind RHS (ExpB (new_name $ no_region, new_name_typ) $ no_region) in @@ -435,9 +435,9 @@ and render_path (paths : path list) typ at n name is_extend end_exp = | [{it = IdxP (_, e); _}] -> let bind = render_bind RHS (ExpB ("_" $ no_region, new_name_typ) $ no_region) in parens ("list_update_func " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ " " ^ render_lambda [bind] (r_func_e end_exp)) - | [{it = DotP (p, a); _}] -> - let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p.note) |> render_id in - render_record_update (r_func_e (list_name n)) (render_atom name a) (r_func_e end_exp) + | [{it = DotP (_p, a); _}] -> + (* let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p.note) |> render_id in *) + render_record_update (r_func_e (list_name n)) (render_atom a) (r_func_e end_exp) | [{it = SliceP (_, e1, e2); _}] -> parens ("list_slice_update " ^ r_func_e (list_name n) ^ " " ^ r_func_e e1 ^ " " ^ r_func_e e2 ^ " " ^ r_func_e end_exp) (* Middle logic *) @@ -449,9 +449,9 @@ and render_path (paths : path list) typ at n name is_extend end_exp = | ({it = DotP _; note; _} as p) :: ps -> let (dot_paths, ps') = list_split is_dot (p :: ps) in let (end_name, end_atom, dot_paths') = match List.rev dot_paths with - | {it = DotP (p, a'); _} :: ds -> - let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p.note) |> render_id in - (render_atom name a', a', ds) + | {it = DotP (_p, a'); _} :: ds -> + (* let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p.note) |> render_id in *) + (render_atom a', a', ds) | _ -> assert false (* Impossible since it has p *) in let projection_term = List.fold_right (fun p acc -> @@ -462,9 +462,9 @@ and render_path (paths : path list) typ at n name is_extend end_exp = ) dot_paths' (list_name n) in let update_fields = String.concat ";" (List.map (fun p -> match p.it with - | DotP (p', a) -> - let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p'.note) |> render_id in - render_atom name a + | DotP (_p', a) -> + (* let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p'.note) |> render_id in *) + render_atom a | _ -> error at "Should be a record access" ) dot_paths) in let new_term = parens (end_name ^ " " ^ r_func_e projection_term) in @@ -578,18 +578,18 @@ let render_record recursive id binds fields = (* Standard Record definition *) "Record " ^ id ^ inhabitance_binders ^ " := " ^ constructor_name ^ "\n{\t" ^ String.concat "\n;\t" (List.map (fun (a, (_, typ, _), _) -> - render_atom id a ^ " : " ^ render_type RHS typ) fields) ^ "\n}.\n\n" ^ + render_atom a ^ " : " ^ render_type RHS typ) fields) ^ "\n}.\n\n" ^ (* Inhabitance proof for default values *) "Global Instance Inhabited_" ^ id ^ inhabitance_binders ^ " : Inhabited " ^ parens (id ^ binders) ^ " := \n" ^ "{default_val := {|\n\t" ^ String.concat ";\n\t" (List.map (fun (a, _, _) -> - render_atom id a ^ " := default_val") fields) ^ "|} }.\n\n" ^ + render_atom a ^ " := default_val") fields) ^ "|} }.\n\n" ^ (* Append instance *) "Definition _append_" ^ id ^ inhabitance_binders ^ " (arg1 arg2 : " ^ parens (id ^ binders) ^ ") :=\n" ^ "{|\n\t" ^ String.concat "\t" ((List.map (fun (a, (_, t, _), _) -> - let record_id' = render_atom id a in + let record_id' = render_atom a in if (check_trivial_append !env_ref.il_env t) then record_id' ^ " := " ^ "arg1.(" ^ record_id' ^ ") @@ arg2.(" ^ record_id' ^ ");\n" else record_id' ^ " := " ^ "arg1.(" ^ record_id' ^ "); " ^ comment_parens "FIXME - Non-trivial append" ^ "\n" @@ -598,7 +598,7 @@ let render_record recursive id binds fields = (* Setter proof *) "#[export] Instance eta__" ^ id ^ " : Settable _ := settable! " ^ constructor_name ^ " <" ^ - String.concat ";" (List.map (fun (a, _, _) -> render_atom id a) fields) ^ ">" + String.concat ";" (List.map (fun (a, _, _) -> render_atom a) fields) ^ ">" ^ ".\n\n" ^ string_of_eqtype_proof recursive false id [] let rec has_typ id t = @@ -659,7 +659,7 @@ let render_inh_param inhib_type_vars param = let render_single_type id at params = match params with | [{it = ExpP (_, typ); _}] -> render_type RHS typ - | _ -> error at "Given projection function: " ^ id ^ " has no parameters!" + | _ -> error at ("Given projection function: " ^ id ^ " has no parameters!") let render_function_def prefix id at params r_typ clauses = let has_typ_fam = List.length params > 1 && List.exists is_type_family_param params in @@ -681,10 +681,10 @@ let render_function_def prefix id at params r_typ clauses = (if has_typ_fam then "\n\t\t" ^ render_extra_clause params else "") ^ "\n\tend" ^ if is_proj_func - then - ".\n\n" ^ - render_coercion (render_single_type id at params) (render_type RHS r_typ) id - else "" + then + ".\n\n" ^ + render_coercion (render_single_type id at params) (render_type RHS r_typ) id + else "" let render_relation prefix id typ rules = prefix ^ id ^ " : " ^ string_of_relation_args typ ^ "Prop :=\n\t" ^ @@ -692,7 +692,7 @@ let render_relation prefix id typ rules = | RuleD (rule_id, binds, _, exp, prems) -> let string_prems = string_of_list "\n\t\t" " ->\n\t\t" " ->\n\t\t" (render_prem) prems in let forall_quantifiers = string_of_list "forall " ", " " " (render_bind REL) binds in - "| " ^ render_rule_id id rule_id.it ^ " : " ^ forall_quantifiers ^ string_prems ^ render_id id ^ " " ^ String.concat " " (List.map (render_exp REL) (transform_case_tup exp)) + "| " ^ render_id (rule_id.it) ^ " : " ^ forall_quantifiers ^ string_prems ^ render_id id ^ " " ^ String.concat " " (List.map (render_exp REL) (transform_case_tup exp)) ) rules) let render_axiom prefix id params r_typ = @@ -943,6 +943,7 @@ let rec register_hints env def = let string_of_script (il : script) = !env_ref.il_env <- Il.Env.env_of_script il; List.iter (register_hints !env_ref) il; + let il' = Disamb.transform il in exported_string ^ "(* Generated Code *)\n" ^ - String.concat "" (List.filter_map filter_def il |> List.map (string_of_def true false)) \ No newline at end of file + String.concat "" (List.filter_map filter_def il' |> List.map (string_of_def true false)) \ No newline at end of file From cf642f47e67854bdc6f6c3476be10f54b311f67a Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 27 Jan 2026 19:07:23 +0000 Subject: [PATCH 030/115] Moved overlapping clauses removal to disambiguation pass, and made uncase coercions support projections with type parameters --- spectec/src/backend-rocq/disamb.ml | 19 ++++++++++++++++- spectec/src/backend-rocq/print.ml | 34 ++++++++++++------------------ 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/spectec/src/backend-rocq/disamb.ml b/spectec/src/backend-rocq/disamb.ml index 321c7374a1..2982363ece 100644 --- a/spectec/src/backend-rocq/disamb.ml +++ b/spectec/src/backend-rocq/disamb.ml @@ -1,6 +1,7 @@ open Il.Ast open Util.Source open Il.Walk +open Il open Xl module StringMap = Map.Make(String) @@ -132,6 +133,22 @@ let rec t_def def = ) rules) } | _ -> transform_def t def +(* Remove overlaps created by sub expansion *) +let remove_overlapping_clauses clauses = + Util.Lib.List.nub (fun clause clause' -> match clause.it, clause'.it with + | DefD (_, args, exp, _), DefD (_, args', exp', _) -> + let reduced_exp = Eval.reduce_exp !env_ref.il_env exp in + let reduced_exp' = Eval.reduce_exp !env_ref.il_env exp' in + Eq.eq_list Eq.eq_arg args args' && Eq.eq_exp reduced_exp reduced_exp' + ) clauses + +let rec rem_overlap_def def = + match def.it with + | DecD (id, params, typ, clauses) -> {def with it = DecD (id, params, typ, remove_overlapping_clauses clauses)} + | RecD defs -> {def with it = RecD (List.map rem_overlap_def defs)} + | _ -> def + let transform il = !env_ref.il_env <- Il.Env.env_of_script il; - List.map t_def il \ No newline at end of file + List.map rem_overlap_def il |> + List.map t_def \ No newline at end of file diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index e2c53f8926..1bf2aa6bc0 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -1,6 +1,5 @@ open Il.Ast open Util.Source -open Il open Il.Walk module StringSet = Set.Make(String) @@ -380,12 +379,7 @@ and render_bind exp_type b = | GramB _ -> comment_parens ("Unsupported bind: " ^ Il.Print.string_of_bind b) and render_param exp_type param = - let get_id p = - match p.it with - | ExpP (id, _) | TypP id | DefP (id, _, _) | GramP (id, _) -> render_id id.it - in - parens (get_id param ^ " : " ^ render_param_type exp_type param) - + parens (get_param_id param ^ " : " ^ render_param_type exp_type param) (* PATH Functions *) and transform_list_path (p : path) = @@ -625,8 +619,9 @@ let inhabitance_proof id binds cases = in render_proof cases -let render_coercion base_typ_id coerc_typ_id proj_func_id = - "Global Instance " ^ proj_func_id ^ "_coercion : Coercion " ^ base_typ_id ^ " " ^ coerc_typ_id ^ " := { coerce := " ^ proj_func_id ^ " }" +let render_coercion (base_typ_id, typ_params) coerc_typ_id proj_func_id = + "Global Instance " ^ proj_func_id ^ "_coercion" ^ render_params typ_params ^ " : Coercion " ^ base_typ_id ^ " " ^ coerc_typ_id ^ " := { coerce := " ^ proj_func_id ^ + string_of_list_prefix " " " " get_param_id typ_params ^ " }" let cant_do_equality binds cases = (List.exists is_typ_bind binds) || @@ -657,9 +652,14 @@ let render_inh_param inhib_type_vars param = | _ -> None let render_single_type id at params = - match params with - | [{it = ExpP (_, typ); _}] -> render_type RHS typ - | _ -> error at ("Given projection function: " ^ id ^ " has no parameters!") + let is_typ_param p = + match p.it with + | TypP _ -> true + | _ -> false + in + match List.rev params with + | {it = ExpP (_, typ); _} :: ps when List.for_all is_typ_param ps -> (render_type RHS typ, ps) + | _ -> error at ("Given projection function: " ^ id ^ " has invalid parameters!") let render_function_def prefix id at params r_typ clauses = let has_typ_fam = List.length params > 1 && List.exists is_type_family_param params in @@ -729,14 +729,6 @@ let is_axiom def = | DecD (_, _, _, _clauses) -> true | _ -> false -let remove_overlapping_clauses clauses = - Util.Lib.List.nub (fun clause clause' -> match clause.it, clause'.it with - | DefD (_, args, exp, _), DefD (_, args', exp', _) -> - let reduced_exp = Eval.reduce_exp !env_ref.il_env exp in - let reduced_exp' = Eval.reduce_exp !env_ref.il_env exp' in - Eq.eq_list Eq.eq_arg args args' && Eq.eq_exp reduced_exp reduced_exp' - ) clauses - (* TODO - revise mutual recursion with other defs such as records and axioms *) let rec string_of_def has_endline recursive def = let end_newline = if has_endline then ".\n\n" else "" in @@ -760,7 +752,7 @@ let rec string_of_def has_endline recursive def = start ^ render_axiom prefix (render_id id.it) params typ ^ end_newline | DecD (id, params, typ, clauses) -> let prefix = if recursive then "" else "Definition " in - start ^ render_function_def prefix (render_id id.it) id.at params typ (remove_overlapping_clauses clauses) ^ end_newline + start ^ render_function_def prefix (render_id id.it) id.at params typ (clauses) ^ end_newline | RelD (id, _, typ, []) -> let prefix = if recursive then "" else "Axiom " in start ^ render_rel_axiom prefix (render_id id.it) typ ^ end_newline From e680422a63f7e3594706de0bec1f1536477b68ef Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 27 Jan 2026 19:36:43 +0000 Subject: [PATCH 031/115] Improve ids change: Now ensures variables don't have same name as constructors/fields. --- spectec/src/il/walk.ml | 4 ++-- spectec/src/middlend/improveids.ml | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/spectec/src/il/walk.ml b/spectec/src/il/walk.ml index 8868bb8b6e..8d9bbeede6 100644 --- a/spectec/src/il/walk.ml +++ b/spectec/src/il/walk.ml @@ -154,7 +154,7 @@ and transform_bind t b = let f = t.transform_bind in let it = match b.it with | ExpB (id, typ) -> ExpB (t.transform_var_id id, transform_typ t typ) - | TypB id -> TypB (t.transform_typ_id id) + | TypB id -> TypB (t.transform_var_id id) | DefB (id, params, typ) -> DefB (t.transform_def_id id, List.map (transform_param t) params, transform_typ t typ) | GramB (id, params, typ) -> GramB (t.transform_gram_id id, List.map (transform_param t) params, transform_typ t typ) in @@ -163,7 +163,7 @@ and transform_bind t b = and transform_param t p = { p with it = match p.it with | ExpP (id, typ) -> ExpP (t.transform_var_id id, transform_typ t typ) - | TypP id -> TypP (t.transform_typ_id id) + | TypP id -> TypP (t.transform_var_id id) | DefP (id, params, typ) -> DefP (t.transform_def_id id, List.map (transform_param t) params, transform_typ t typ) | GramP (id, typ) -> GramP (t.transform_gram_id id, transform_typ t typ) } diff --git a/spectec/src/middlend/improveids.ml b/spectec/src/middlend/improveids.ml index 64269293c7..0bc7381e05 100644 --- a/spectec/src/middlend/improveids.ml +++ b/spectec/src/middlend/improveids.ml @@ -75,17 +75,26 @@ let has_atom_hole m = | [{it = Atom "_"; _}] -> true | _ -> false +let register_atom_id env s = + env.atom_str_set <- StringSet.add s env.atom_str_set + (* Atom functions *) let transform_atom env typ_id a = match a.it with - | Atom s -> Atom (t_user_def_id env (s $ a.at)).it $$ a.at % a.note - | _ -> Atom (make_prefix ^ typ_id) $$ a.at % a.note + | Atom s -> + register_atom_id env (t_user_def_id env (s $ a.at)).it; + Atom (t_user_def_id env (s $ a.at)).it $$ a.at % a.note + | _ -> + register_atom_id env (make_prefix ^ typ_id); + Atom (make_prefix ^ typ_id) $$ a.at % a.note let transform_mixop env typ_id (m : mixop) = let m' = List.map (fun inner_m -> List.filter is_atomid inner_m) m in let len = List.length m' in match m' with - | _ when List.for_all (fun l -> l = [] || has_atom_hole l) m' -> [(Atom (make_prefix ^ typ_id) $$ empty_info)] :: List.init (len - 1) (fun _ -> []) + | _ when List.for_all (fun l -> l = [] || has_atom_hole l) m' -> + register_atom_id env (make_prefix ^ typ_id); + [(Atom (make_prefix ^ typ_id) $$ empty_info)] :: List.init (len - 1) (fun _ -> []) | _ -> List.map (List.map (transform_atom env typ_id)) m' let rec check_iteration_naming e iterexp = From 8cd4fe4c3095af86dd86486f2f714f7ad75b0aa7 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 27 Jan 2026 19:37:45 +0000 Subject: [PATCH 032/115] Removed disambiguation for mixops of more than 1 atom, since its name is generally complicated enough. --- spectec/src/backend-rocq/disamb.ml | 19 +++++++++++++++---- spectec/src/backend-rocq/print.ml | 8 +++++--- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/spectec/src/backend-rocq/disamb.ml b/spectec/src/backend-rocq/disamb.ml index 2982363ece..a66f4beaa6 100644 --- a/spectec/src/backend-rocq/disamb.ml +++ b/spectec/src/backend-rocq/disamb.ml @@ -52,7 +52,10 @@ let t_atom typ_id a = (* | None -> error a.at "Could not find modified atom id" *) let t_mixop typ_id m = - List.map (fun atoms -> List.map (t_atom typ_id) atoms) m + match m with + | [a] :: tail when List.for_all ((=) []) tail -> [t_atom typ_id a] :: tail + | _ -> m + (* List.map (fun atoms -> List.map (t_atom typ_id) atoms) m *) let t_exp e = match e.it with @@ -80,7 +83,10 @@ let rec t_rule_new rel_id base_r_id r_id = let lst = StringMap.bindings !env_ref.disamb_map in begin match (List.find_opt (fun (_, ss) -> List.exists (fun (_, s') -> r_id = s') ss) lst) with | Some _ -> t_rule_new rel_id base_r_id new_id - | None when Il.Env.mem_typ !env_ref.il_env (r_id $ no_region) -> t_rule_new rel_id base_r_id new_id + | None when + Il.Env.mem_typ !env_ref.il_env (r_id $ no_region) || + Il.Env.mem_def !env_ref.il_env (r_id $ no_region) -> + t_rule_new rel_id base_r_id new_id | None -> register_id rel_id base_r_id r_id; r_id @@ -93,7 +99,9 @@ let rec t_atom_new typ_id base_a a = begin match (List.find_opt (fun (_, ss) -> List.exists (fun (_, s') -> s = s') ss) lst) with | Some _ -> t_atom_new typ_id base_a {a with it = Xl.Atom.Atom (typ_id ^ "_" ^ s)} - | None when Il.Env.mem_typ !env_ref.il_env (s $ no_region) -> + | None when + Il.Env.mem_typ !env_ref.il_env (s $ no_region) || + Il.Env.mem_def !env_ref.il_env (s $ no_region) -> t_atom_new typ_id base_a {a with it = Xl.Atom.Atom (typ_id ^ "_" ^ s)} | None -> register_id typ_id base_s s; @@ -102,7 +110,10 @@ let rec t_atom_new typ_id base_a a = | _-> a let t_mixop_new typ_id m = - List.map (fun atoms -> List.map (fun a -> t_atom_new typ_id a a) atoms) m + match m with + | [a] :: tail when List.for_all ((=) []) tail -> [t_atom_new typ_id a a] :: tail + | _ -> m + (* List.map (fun atoms -> List.map (fun a -> t_atom_new typ_id a a) atoms) m *) let t_inst t typ_id inst = let InstD (binds, args, deftyp) = inst.it in diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index 1bf2aa6bc0..e91a3b25ca 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -76,7 +76,8 @@ let reserved_ids = "()"; "tt"; "Import"; "Export"; "List"; "String"; - "Type"; "list"; "nat"] |> StringSet.of_list + "Type"; "list"; "nat"; + "cons"] |> StringSet.of_list let remove_iter_from_type t = match t.it with @@ -199,8 +200,9 @@ let render_id id = | s when StringSet.mem s reserved_ids -> "res_" ^ s | _ -> id -let render_atom a = +let render_atom ?(in_mixop = false) a = match a.it with + | Xl.Atom.Atom a when in_mixop -> a | Xl.Atom.Atom a -> render_id a | _ -> "" @@ -208,7 +210,7 @@ let render_mixop typ_id (m : mixop) = let s = (match m with | [{it = Atom a; _}] :: tail when List.for_all ((=) []) tail -> render_id a | mixop -> String.concat "" (List.map ( - fun atoms -> String.concat "" (List.filter is_atomid atoms |> List.map (render_atom))) mixop + fun atoms -> String.concat "" (List.filter is_atomid atoms |> List.map (render_atom ~in_mixop:true))) mixop ) ) in (* HACK - should be done in improve ids *) From c0fb9f0a346529f57e096dc9e68b9a1a03fe3a50 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 27 Jan 2026 20:00:55 +0000 Subject: [PATCH 033/115] Disambiguation for mixop is now supported: it is turned into a simple atom for disambiguation. --- spectec/src/backend-rocq/disamb.ml | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/spectec/src/backend-rocq/disamb.ml b/spectec/src/backend-rocq/disamb.ml index a66f4beaa6..20f8aa77d9 100644 --- a/spectec/src/backend-rocq/disamb.ml +++ b/spectec/src/backend-rocq/disamb.ml @@ -16,6 +16,8 @@ let new_env () = { il_env = Il.Env.empty } +let empty_info: region * Xl.Atom.info = (no_region, {def = ""; case = ""}) + let env_ref: env ref = ref (new_env ()) let _print_env () = @@ -36,6 +38,20 @@ let register_id typ_id base_id id = | None -> Some [(base_id, id)] ) !env_ref.disamb_map +let is_atomid a = + match a.it with + | Atom.Atom _ -> true + | _ -> false + +let get_atom_id a = + match a.it with + | Atom.Atom s -> s + | _ -> "" + +let get_mixop_s m = + String.concat "" (List.map ( + fun atoms -> String.concat "" (List.filter is_atomid atoms |> List.map get_atom_id)) m + ) let t_atom_opt typ_id a = match a.it with @@ -54,7 +70,10 @@ let t_atom typ_id a = let t_mixop typ_id m = match m with | [a] :: tail when List.for_all ((=) []) tail -> [t_atom typ_id a] :: tail - | _ -> m + | _ -> + let s = get_mixop_s m in + let new_atom = Atom.Atom s $$ empty_info in + [[t_atom typ_id new_atom]] (* List.map (fun atoms -> List.map (t_atom typ_id) atoms) m *) let t_exp e = @@ -112,7 +131,12 @@ let rec t_atom_new typ_id base_a a = let t_mixop_new typ_id m = match m with | [a] :: tail when List.for_all ((=) []) tail -> [t_atom_new typ_id a a] :: tail - | _ -> m + | _ -> + let s = get_mixop_s m in + let new_atom = Atom.Atom s $$ empty_info in + [[t_atom_new typ_id new_atom new_atom]] + + (* List.map (fun atoms -> List.map (fun a -> t_atom_new typ_id a a) atoms) m *) let t_inst t typ_id inst = From fc781735edbeb4ed1504745563c15b78afaf0449 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Wed, 11 Feb 2026 15:32:28 +0000 Subject: [PATCH 034/115] Made most list operations into seq from ssreflect --- spectec/src/backend-rocq/print.ml | 54 ++++++++++++++++--------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index e91a3b25ca..093135866c 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -17,7 +17,7 @@ let new_env () = { } let iter_prem_rels_list = ["List.Forall"; "List.Forall2"; "List_Forall3"] -let iter_exp_lst_funcs = ["List.map"; "list_zipWith"; "list_map3"] +let iter_exp_lst_funcs = ["seq.map"; "list_zipWith"; "list_map3"] let iter_exp_opt_funcs = ["option_map"; "option_zipWith"; "option_map3"] let error at msg = Util.Error.error at "Rocq translation" msg @@ -74,7 +74,8 @@ let reserved_ids = "prod"; "at"; "()"; "tt"; - "Import"; "Export"; + "Import"; "Export"; + "seq"; "List"; "String"; "Type"; "list"; "nat"; "cons"] |> StringSet.of_list @@ -107,6 +108,7 @@ let string_of_list prefix suffix delim str_func ls = | _ -> prefix ^ String.concat delim (List.map str_func ls) ^ suffix let square_parens s = "[" ^ s ^ "]" +let ssreflect_square_parens s = "[::" ^ s ^ "]" let parens s = "(" ^ s ^ ")" let curly_parens s = "{" ^ s ^ "}" let comment_parens s = "(* " ^ s ^ " *)" @@ -273,7 +275,7 @@ and render_type exp_type typ = | TupT [] -> "unit" | TupT typs -> String.concat " * " (List.map (fun (_, t) -> rt_func t) typs) | IterT (t, Opt) -> parens ("option " ^ rt_func t) - | IterT (t, _) -> parens ("list " ^ rt_func t) + | IterT (t, _) -> parens ("seq " ^ rt_func t) and render_exp exp_type exp = let r_func = render_exp exp_type in @@ -330,8 +332,8 @@ and render_exp exp_type exp = (* let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env e.note) |> render_id in *) parens (render_atom a ^ " " ^ r_func e) | CompE (e1, e2) -> parens (r_func e1 ^ " @@ " ^ r_func e2) - | ListE [] -> "[]" - | ListE exps -> square_parens (String.concat "; " (List.map r_func exps)) + | ListE [] -> "[:: ]" + | ListE exps -> ssreflect_square_parens (String.concat "; " (List.map r_func exps)) | LiftE e -> parens ("option_to_list " ^ r_func e) | MemE (e1, e2) -> parens (r_func e1 ^ " \\in " ^ r_func e2) | LenE e1 -> parens (line_parens "" (r_func e1)) @@ -785,27 +787,27 @@ let rec string_of_def has_endline recursive def = let exported_string = "(* Imported Code *)\n" ^ - "From Coq Require Import String List Unicode.Utf8 Reals.\n" ^ + "From Stdlib Require Import String List Unicode.Utf8 Reals.\n" ^ "From mathcomp Require Import ssreflect ssrfun ssrnat ssrbool seq eqtype rat ssrint.\n" ^ "From HB Require Import structures.\n" ^ "From RecordUpdate Require Import RecordSet.\n" ^ "Declare Scope wasm_scope.\n\n" ^ "Class Inhabited (T: Type) := { default_val : T }.\n\n" ^ - "Definition lookup_total {T: Type} {_: Inhabited T} (l: list T) (n: nat) : T :=\n" ^ - "\tList.nth n l default_val.\n\n" ^ + "Definition lookup_total {T: Type} {_: Inhabited T} (l: seq T) (n: nat) : T :=\n" ^ + "\tseq.nth n l default_val.\n\n" ^ "Definition the {T : Type} {_ : Inhabited T} (arg : option T) : T :=\n" ^ "\tmatch arg with\n" ^ "\t\t| None => default_val\n" ^ "\t\t| Some v => v\n" ^ "\tend.\n\n" ^ - "Definition list_zipWith {X Y Z : Type} (f : X -> Y -> Z) (xs : list X) (ys : list Y) : list Z :=\n" ^ - "\tList.map (fun '(x, y) => f x y) (List.combine xs ys).\n\n" ^ + "Definition list_zipWith {X Y Z : Type} (f : X -> Y -> Z) (xs : seq X) (ys : seq Y) : seq Z :=\n" ^ + "\tseq.map (fun '(x, y) => f x y) (seq.zip xs ys).\n\n" ^ "Definition option_zipWith {α β γ: Type} (f: α -> β -> γ) (x: option α) (y: option β): option γ := \n" ^ "\tmatch x, y with\n" ^ "\t\t| Some x, Some y => Some (f x y)\n" ^ "\t\t| _, _ => None\n" ^ "\tend.\n\n" ^ - "Fixpoint list_update {α: Type} (l: list α) (n: nat) (y: α): list α :=\n" ^ + "Fixpoint list_update {α: Type} (l: seq α) (n: nat) (y: α): seq α :=\n" ^ "\tmatch l, n with\n" ^ "\t\t| nil, _ => nil\n" ^ "\t\t| x :: l', O => y :: l'\n" ^ @@ -821,13 +823,13 @@ let exported_string = "\t\t| Some x => Some (f x)\n" ^ "\t\t| _ => None\n" ^ "\tend.\n\n" ^ - "Fixpoint list_update_func {α: Type} (l: list α) (n: nat) (y: α -> α): list α :=\n" ^ + "Fixpoint list_update_func {α: Type} (l: seq α) (n: nat) (y: α -> α): seq α :=\n" ^ "\tmatch l, n with\n" ^ "\t\t| nil, _ => nil\n" ^ "\t\t| x :: l', O => (y x) :: l'\n" ^ "\t\t| x :: l', S n => x :: list_update_func l' n y\n" ^ "\tend.\n\n" ^ - "Fixpoint list_slice {α: Type} (l: list α) (i: nat) (j: nat): list α :=\n" ^ + "Fixpoint list_slice {α: Type} (l: seq α) (i: nat) (j: nat): seq α :=\n" ^ "\tmatch l, i, j with\n" ^ "\t\t| nil, _, _ => nil\n" ^ "\t\t| x :: l', O, O => nil\n" ^ @@ -835,7 +837,7 @@ let exported_string = "\t\t| x :: l', O, S m => x :: list_slice l' 0 m\n" ^ "\t\t| x :: l', S n, m => list_slice l' n m\n" ^ "\tend.\n\n" ^ - "Fixpoint list_slice_update {α: Type} (l: list α) (i: nat) (j: nat) (update_l: list α): list α :=\n" ^ + "Fixpoint list_slice_update {α: Type} (l: seq α) (i: nat) (j: nat) (update_l: seq α): seq α :=\n" ^ "\tmatch l, i, j, update_l with\n" ^ "\t\t| nil, _, _, _ => nil\n" ^ "\t\t| l', _, _, nil => l'\n" ^ @@ -844,37 +846,37 @@ let exported_string = "\t\t| x :: l', O, S m, y :: u_l' => y :: list_slice_update l' 0 m u_l'\n" ^ "\t\t| x :: l', S n, m, _ => x :: list_slice_update l' n m update_l\n" ^ "\tend.\n\n" ^ - "Definition list_extend {α: Type} (l: list α) (y: α): list α :=\n" ^ + "Definition list_extend {α: Type} (l: seq α) (y: α): seq α :=\n" ^ "\ty :: l.\n\n" ^ "Definition option_map3 {A B C D: Type} (f: A -> B -> C -> D) (x: option A) (y: option B) (z: option C): option D :=\n" ^ "\tmatch x, y, z with\n" ^ "\t\t| Some x, Some y, Some z => Some (f x y z)\n" ^ "\t\t| _, _, _ => None\n" ^ "\tend.\n\n" ^ - "Definition list_map3 {A B C D: Type} (f : A -> B -> C -> D) (xs : list A) (ys : list B) (zs : list C) : list D :=\n" ^ - "\tList.map (fun '(x, (y, z)) => f x y z) (List.combine xs (List.combine ys zs)).\n\n" ^ - "Inductive List_Forall3 {A B C: Type} (R : A -> B -> C -> Prop): list A -> list B -> list C -> Prop :=\n" ^ + "Definition list_map3 {A B C D: Type} (f : A -> B -> C -> D) (xs : seq A) (ys : seq B) (zs : seq C) : seq D :=\n" ^ + "\tseq.map (fun '(x, (y, z)) => f x y z) (seq.combine xs (seq.combine ys zs)).\n\n" ^ + "Inductive List_Forall3 {A B C: Type} (R : A -> B -> C -> Prop): seq A -> seq B -> seq C -> Prop :=\n" ^ "\t| Forall3_nil : List_Forall3 R nil nil nil\n" ^ "\t| Forall3_cons : forall x y z l l' l'',\n"^ "\t\tR x y z -> List_Forall3 R l l' l'' -> List_Forall3 R (x :: l) (y :: l') (z :: l'').\n\n" ^ "Class Append (α: Type) := _append : α -> α -> α.\n\n" ^ "Infix \"@@\" := _append (right associativity, at level 60) : wasm_scope.\n\n" ^ - "Global Instance Append_List_ {α: Type}: Append (list α) := { _append l1 l2 := List.app l1 l2 }.\n\n" ^ + "Global Instance Append_List_ {α: Type}: Append (seq α) := { _append l1 l2 := seq.app l1 l2 }.\n\n" ^ "Global Instance Append_Option {α: Type}: Append (option α) := { _append o1 o2 := option_append o1 o2 }.\n\n" ^ "Global Instance Append_nat : Append (nat) := { _append n1 n2 := n1 + n2}.\n\n" ^ "Global Instance Inh_unit : Inhabited unit := { default_val := tt }.\n\n" ^ "Global Instance Inh_nat : Inhabited nat := { default_val := O }.\n\n" ^ - "Global Instance Inh_list {T: Type} : Inhabited (list T) := { default_val := nil }.\n\n" ^ + "Global Instance Inh_list {T: Type} : Inhabited (seq T) := { default_val := nil }.\n\n" ^ "Global Instance Inh_option {T: Type} : Inhabited (option T) := { default_val := None }.\n\n" ^ "Global Instance Inh_Z : Inhabited Z := { default_val := Z0 }.\n\n" ^ "Global Instance Inh_prod {T1 T2: Type} {_: Inhabited T1} {_: Inhabited T2} : Inhabited (prod T1 T2) := { default_val := (default_val, default_val) }.\n\n" ^ "Global Instance Inh_type : Inhabited Type := { default_val := nat }.\n\n" ^ - "Definition option_to_list {T: Type} (arg : option T) : list T :=\n" ^ + "Definition option_to_list {T: Type} (arg : option T) : seq T :=\n" ^ "\tmatch arg with\n" ^ "\t\t| None => nil\n" ^ "\t\t| Some a => a :: nil\n" ^ "\tend.\n\n" ^ - "Coercion option_to_list: option >-> list.\n\n" ^ + "Coercion option_to_list: option >-> seq.\n\n" ^ "Coercion Z.to_nat: Z >-> nat.\n\n" ^ "Coercion Z.of_nat: nat >-> Z.\n\n" ^ "Coercion ratz: int >-> rat.\n\n" ^ @@ -896,19 +898,19 @@ let exported_string = "\t\t| Some a => Some (coerce a)\n" ^ "\t\t| None => None\n" ^ "\tend.\n\n" ^ - "Definition list_coerce {A B : Type} `{Coercion A B} (a_list : list A): list B :=\n" ^ - "\tList.map (fun a => coerce a) a_list.\n\n" ^ + "Definition list_coerce {A B : Type} `{Coercion A B} (a_list : seq A): seq B :=\n" ^ + "\t[seq (coerce a) | a <- a_list].\n\n" ^ "Definition id_coerce {A : Type} (a : A) : A := a.\n\n" ^ "Definition transitive_coerce {A B C : Type} `{Coercion A B} `{Coercion B C} (a : A): C :=\n" ^ "\tcoerce (coerce a).\n\n" ^ "Definition total_coerce {A B: Type} `{Coercion A (option B)} {_ : Inhabited B} (a : A): B :=\n" ^ "\tthe (coerce a).\n\n" ^ "Global Instance option_coercion (A B : Type) {_: Coercion A B}: Coercion (option A) (option B) := { coerce := option_coerce }.\n\n" ^ - "Global Instance list_coercion (A B : Type) {_: Coercion A B}: Coercion (list A) (list B) := { coerce := list_coerce }.\n\n" ^ + "Global Instance list_coercion (A B : Type) {_: Coercion A B}: Coercion (seq A) (seq B) := { coerce := list_coerce }.\n\n" ^ "Global Instance id_coercion (A : Type): Coercion A A := { coerce := id_coerce }.\n\n" ^ "Global Instance transitive_coercion (A B C : Type) `{Coercion A B} `{Coercion B C}: Coercion A C := { coerce := transitive_coerce }.\n\n" ^ "Global Instance total_coercion (A B : Type) `{Coercion A (option B)} {_ : Inhabited B}: Coercion A B := { coerce := total_coerce}.\n\n" ^ - "Notation \"| x |\" := (List.length x) (at level 60).\n" ^ + "Notation \"| x |\" := (seq.length x) (at level 60).\n" ^ "Notation \"!( x )\" := (the x) (at level 60).\n" ^ "Notation \"x '[|' a '|]'\" := (lookup_total x a) (at level 10).\n" ^ "Open Scope wasm_scope.\n" ^ From ad9484ba6111b3e725053bef958541fa8f936b7a Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Wed, 11 Feb 2026 15:33:18 +0000 Subject: [PATCH 035/115] Undep: made type family wf relations necessary --- spectec/src/middlend/undep.ml | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index 920d98496d..341df88bfc 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -52,13 +52,15 @@ module StringSet = Set.Make(String) type env = { mutable wf_set : StringSet.t; mutable proj_set : StringSet.t; + mutable tf_set : StringSet.t; mutable il_env : Il.Env.t; } let empty () = { wf_set = StringSet.empty; proj_set = StringSet.empty; - il_env = Il.Env.empty + tf_set = StringSet.empty; + il_env = Il.Env.empty; } let wf_pred_prefix = "wf_" @@ -67,7 +69,7 @@ let rule_prefix = "case_" let wf_hint_id = "wf-relation" (* flag that deactivates adding wellformedness predicates to relations *) -let deactivate_wfness = false +let deactivate_wfness = true let error at msg = error at "Undep error" msg @@ -322,13 +324,20 @@ let create_well_formed_predicate env id inst = [relation; hint] | _ -> [] +let rec has_type_family env typ = + match typ.it with + | VarT (id, _) -> StringSet.mem id.it env.tf_set + | IterT (typ, _) -> has_type_family env typ + | TupT typs -> List.exists (fun (_, t) -> has_type_family env t) typs + | _ -> false + let get_extra_prems env binds exp prems = - if deactivate_wfness then [] else let cl = create_collector [] in let wf_terms = collect_exp cl exp @ List.concat_map (collect_prem cl) prems in let unique_terms = Util.Lib.List.nub (fun ((e1, _t1), iterexp1) ((e2, _t2), iterexp2) -> Il.Eq.eq_exp e1 e2 && Il.Eq.eq_list Il.Eq.eq_iterexp iterexp1 iterexp2 ) wf_terms in + let unique_terms = if deactivate_wfness then List.filter (fun ((_, t), _) -> has_type_family env t) unique_terms else unique_terms in let more_prems = List.concat_map (fun (pair, iterexps) -> List.map (fun prem' -> List.fold_left (fun acc iterexp -> @@ -339,7 +348,7 @@ let get_extra_prems env binds exp prems = (* Leverage the fact that the wellformed predicates are "bubbled up" and remove unnecessary wf preds*) let free_vars = (Free.free_list Free.free_prem more_prems).varid in let binds_filtered = Lib.List.filter_not (fun b -> match b.it with - | ExpB (id, _) -> Free.Set.mem id.it free_vars + | ExpB (id, typ) -> Free.Set.mem id.it free_vars || (deactivate_wfness && (not (has_type_family env typ))) | _ -> true ) binds in let bind_prems = (List.filter_map get_exp_typ binds_filtered) |> List.concat_map (get_wf_pred env) in @@ -430,6 +439,7 @@ let rec t_def env def = | HintD hintdef -> (HintD hintdef $ def.at, []) let has_proj_hint (hint : hint) = hint.hintid.it = Typefamilyremoval.projection_hint_id +let has_tf_hint (hint : hint) = hint.hintid.it = Typefamilyremoval.type_family_hint_id let create_proj_map_def set (d : def) = match d.it with @@ -440,12 +450,24 @@ let create_proj_map_def set (d : def) = ) | _ -> () +let create_tf_set_def set (d : def) = + match d.it with + | HintD {it = TypH (id, hints); _} -> + (match (List.find_opt has_tf_hint hints) with + | Some _ -> set := StringSet.add id.it !set + | _ -> () + ) + | _ -> () + let transform (il : script): script = let env = empty () in env.il_env <- Il.Env.env_of_script il; let proj_set = ref StringSet.empty in + let tf_set = ref StringSet.empty in List.iter (create_proj_map_def proj_set) il; + List.iter (create_tf_set_def tf_set) il; env.proj_set <- !proj_set; + env.tf_set <- !tf_set; List.concat_map (fun d -> let (t_d, wf_relations) = t_def env d in t_d :: wf_relations From e68854308a9466548661633d9dc10cae4748cb91 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 17 Feb 2026 19:51:45 +0000 Subject: [PATCH 036/115] Modified some seq functions from imported code --- spectec/src/backend-rocq/print.ml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index 093135866c..21dcc636e3 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -794,7 +794,7 @@ let exported_string = "Declare Scope wasm_scope.\n\n" ^ "Class Inhabited (T: Type) := { default_val : T }.\n\n" ^ "Definition lookup_total {T: Type} {_: Inhabited T} (l: seq T) (n: nat) : T :=\n" ^ - "\tseq.nth n l default_val.\n\n" ^ + "\tseq.nth default_val l n.\n\n" ^ "Definition the {T : Type} {_ : Inhabited T} (arg : option T) : T :=\n" ^ "\tmatch arg with\n" ^ "\t\t| None => default_val\n" ^ @@ -854,14 +854,14 @@ let exported_string = "\t\t| _, _, _ => None\n" ^ "\tend.\n\n" ^ "Definition list_map3 {A B C D: Type} (f : A -> B -> C -> D) (xs : seq A) (ys : seq B) (zs : seq C) : seq D :=\n" ^ - "\tseq.map (fun '(x, (y, z)) => f x y z) (seq.combine xs (seq.combine ys zs)).\n\n" ^ + "\tseq.map (fun '(x, (y, z)) => f x y z) (seq.zip xs (seq.zip ys zs)).\n\n" ^ "Inductive List_Forall3 {A B C: Type} (R : A -> B -> C -> Prop): seq A -> seq B -> seq C -> Prop :=\n" ^ "\t| Forall3_nil : List_Forall3 R nil nil nil\n" ^ "\t| Forall3_cons : forall x y z l l' l'',\n"^ "\t\tR x y z -> List_Forall3 R l l' l'' -> List_Forall3 R (x :: l) (y :: l') (z :: l'').\n\n" ^ "Class Append (α: Type) := _append : α -> α -> α.\n\n" ^ "Infix \"@@\" := _append (right associativity, at level 60) : wasm_scope.\n\n" ^ - "Global Instance Append_List_ {α: Type}: Append (seq α) := { _append l1 l2 := seq.app l1 l2 }.\n\n" ^ + "Global Instance Append_List_ {α: Type}: Append (seq α) := { _append l1 l2 := seq.cat l1 l2 }.\n\n" ^ "Global Instance Append_Option {α: Type}: Append (option α) := { _append o1 o2 := option_append o1 o2 }.\n\n" ^ "Global Instance Append_nat : Append (nat) := { _append n1 n2 := n1 + n2}.\n\n" ^ "Global Instance Inh_unit : Inhabited unit := { default_val := tt }.\n\n" ^ @@ -910,7 +910,7 @@ let exported_string = "Global Instance id_coercion (A : Type): Coercion A A := { coerce := id_coerce }.\n\n" ^ "Global Instance transitive_coercion (A B C : Type) `{Coercion A B} `{Coercion B C}: Coercion A C := { coerce := transitive_coerce }.\n\n" ^ "Global Instance total_coercion (A B : Type) `{Coercion A (option B)} {_ : Inhabited B}: Coercion A B := { coerce := total_coerce}.\n\n" ^ - "Notation \"| x |\" := (seq.length x) (at level 60).\n" ^ + "Notation \"| x |\" := (seq.size x) (at level 60).\n" ^ "Notation \"!( x )\" := (the x) (at level 60).\n" ^ "Notation \"x '[|' a '|]'\" := (lookup_total x a) (at level 10).\n" ^ "Open Scope wasm_scope.\n" ^ From 971de81b016959f3aa31368686ca459a92dccefa Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Wed, 18 Feb 2026 10:30:31 +0000 Subject: [PATCH 037/115] Made new type family sub types have a unique name if there are no binds present. --- spectec/src/middlend/typefamilyremoval.ml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/spectec/src/middlend/typefamilyremoval.ml b/spectec/src/middlend/typefamilyremoval.ml index 468bc1acf7..80c720d911 100644 --- a/spectec/src/middlend/typefamilyremoval.ml +++ b/spectec/src/middlend/typefamilyremoval.ml @@ -79,7 +79,10 @@ let iter_var_name = "iter_" let name_prefix id = id.it ^ "_" let empty_info: region * Xl.Atom.info = (no_region, {def = ""; case = ""}) -let sub_type_name_binds binds = (String.concat "_" (List.map bind_to_string binds)) +let sub_type_name_binds binds i = + let s = (String.concat "_" (List.map bind_to_string binds)) in + if s = "" then "_" ^ Int.to_string i else s + let constructor_name' id case_num = make_prefix ^ name_prefix id ^ Int.to_string case_num let _constructor_name id binds = constructor_name' id binds $ id.at let constructor_name_mixop id binds case_num: mixop = [[ Xl.Atom.Atom (constructor_name' id case_num) $$ empty_info ]] @ List.init (List.length binds + 1) (fun _ -> []) @@ -600,7 +603,7 @@ let transform_inst env inst = [InstD (List.map (transform_bind env) binds, List.map (transform_arg StringMap.empty env) args, transform_deftyp env deftyp) $ inst.at] (* Creates new TypD's for each StructT and VariantT *) -let create_types id inst = +let create_types idx id inst = let make_param_from_bind b = (match b.it with | ExpB (id, typ) -> ExpP (id, typ) @@ -614,7 +617,7 @@ let create_types id inst = | AliasT _ -> [] | StructT _ | VariantT _ -> let inst = InstD(binds, List.map make_arg binds, deftyp) $ inst.at in - [TypD (id.it ^ sub_type_name_binds binds $ id.at, List.map make_param_from_bind binds, [inst])] + [TypD (id.it ^ sub_type_name_binds binds idx $ id.at, List.map make_param_from_bind binds, [inst])] ) let rec transform_def env def = @@ -661,10 +664,10 @@ let gen_family_projections id has_one_inst case_num inst = let rec create_types_from_instances def = (match def.it with | TypD (id, params, [inst]) when check_normal_type_creation inst -> [TypD (id, params, [inst])] - | TypD (id, params, insts) -> let types = List.concat_map (create_types id) insts in - let transformed_instances = List.map (fun inst -> match inst.it with + | TypD (id, params, insts) -> let types = List.mapi (fun i inst -> create_types i id inst) insts |> List.concat in + let transformed_instances = List.mapi (fun i inst -> match inst.it with | InstD (binds, args, {it = StructT _; at; _}) | InstD(binds, args, {it = VariantT _; at; _}) -> - InstD (binds, args, AliasT (VarT (id.it ^ sub_type_name_binds binds $ id.at, List.map make_arg binds) $ id.at) $ at) $ inst.at + InstD (binds, args, AliasT (VarT (id.it ^ sub_type_name_binds binds i $ id.at, List.map make_arg binds) $ id.at) $ at) $ inst.at | _ -> inst ) insts in types @ [TypD(id, params, transformed_instances)] From 3ba88f913dafc5dce628ce3f58087341df98fe09 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 26 Jan 2026 12:40:23 +0000 Subject: [PATCH 038/115] small fix on sub to allow for nested sub transformation. --- spectec/src/middlend/sub.ml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spectec/src/middlend/sub.ml b/spectec/src/middlend/sub.ml index bf692504b6..35617635c6 100644 --- a/spectec/src/middlend/sub.ml +++ b/spectec/src/middlend/sub.ml @@ -167,7 +167,7 @@ let rec rename_params s = function let lookup_arg_typ typcases m = List.find_map (fun (m', (arg_typ, _, _), _) -> if Il.Eq.eq_mixop m m' then Some arg_typ else None) typcases -let insert_injections env (def : def) : def list = +let insert_injections transformer env (def : def) : def list = add_type_info env def; let pairs = ready_pairs env in [ def ] @ @@ -196,7 +196,7 @@ let insert_injections env (def : def) : def list = let xe is_lhs = TupE (xes is_lhs) $$ no_region % arg_typ in DefD (quants, [ExpA (CaseE (m, xe true) $$ no_region % real_ty) $ no_region], - t_exp env (CaseE (m, xe false) $$ no_region % sup_ty), []) $ no_region + transform_exp transformer (CaseE (m, xe false) $$ no_region % sup_ty), []) $ no_region | _ -> let x = "x" $ no_region in let xe = VarE x $$ no_region % arg_typ in @@ -213,6 +213,6 @@ let transform (defs : script) = let transformer = { base_transformer with transform_exp = t_exp env } in let defs' = List.map (transform_def transformer) defs in env.pairs_mutable <- false; - let defs'' = List.concat_map (insert_injections env) defs' in + let defs'' = List.concat_map (insert_injections transformer env) defs' in S.iter (fun (sub, sup) -> error sup.at ("left-over subtype coercion `" ^ sub.it ^ "` <: `" ^ sup.it ^ "`")) env.pairs; defs'' From 451fce1fb020529e29d6f5f0fb90ce5ad699bf2c Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 10 Feb 2026 13:23:57 +0000 Subject: [PATCH 039/115] Expose uncase removal projection functions via hints --- spectec/src/middlend/uncaseremoval.ml | 17 +++++++++++++---- spectec/src/middlend/uncaseremoval.mli | 1 + 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/spectec/src/middlend/uncaseremoval.ml b/spectec/src/middlend/uncaseremoval.ml index 70362ea3a0..a04c5c1267 100644 --- a/spectec/src/middlend/uncaseremoval.ml +++ b/spectec/src/middlend/uncaseremoval.ml @@ -95,10 +95,16 @@ let make_arg p = | GramP (_, _, _) -> assert false (* Avoid this *) ) $ p.at +let uncase_proj_hint_id = "uncase-proj-func" + +let generate_proj_func_hint at: hint = { hintid = uncase_proj_hint_id $ at; hintexp = El.Ast.SeqE [] $ at} + + let create_projection_functions id params mixops inst = let get_deftyp inst' = (match inst'.it with | InstD (_quants, _args, deftyp) -> deftyp.it ) in + let proj_name idx = (proj_prefix ^ id.it ^ "_" ^ Int.to_string idx) $ id.at in let at = inst.at in let user_typ = VarT (id, List.map make_arg params) $ at in let param_ids = List.map (fun p -> (Utils.get_param_id p).it) params in @@ -116,7 +122,7 @@ let create_projection_functions id params mixops inst = let new_arg = ExpA new_case_exp $ at in if has_one_case then let clause = DefD (params @ new_quants, List.map make_arg params @ [new_arg], new_tup, []) $ at in - DecD ((proj_prefix ^ id.it ^ "_" ^ Int.to_string idx) $ id.at, new_params, no_name_tupt, [clause]) + DecD (proj_name idx, new_params, no_name_tupt, [clause]) else (* extra handling in case that it has more than one case *) let extra_arg = ExpA (VarE (fresh_name $ at) $$ at % user_typ) $ at in @@ -126,10 +132,10 @@ let create_projection_functions id params mixops inst = let opt_tup = OptE (Some new_tup) $$ at % opt_type in let clause' = DefD (params @ new_quants, List.map make_arg params @ [new_arg], opt_tup, []) $ at in let extra_clause = DefD (params @ new_quants @ [new_quant], List.map make_arg params @ [extra_arg], none_exp, []) $ at in - DecD ((proj_prefix ^ id.it ^ "_" ^ Int.to_string idx) $ id.at, new_params, opt_type, [clause'; extra_clause]) + DecD (proj_name idx, new_params, opt_type, [clause'; extra_clause]) in - List.map (fun m -> + List.concat_map (fun m -> (match (get_deftyp inst) with (* Should not happen due to reduction while collecting uncase expressions *) | AliasT _typ -> error inst.at "Found type alias while constructing projection functions, should not happen" @@ -141,7 +147,10 @@ let create_projection_functions id params mixops inst = Some (i, m, t) ) (List.mapi (fun i t -> (i, t)) typcases) in begin match mixop_opt with - | Some (i, m, t) -> make_func m (get_case_typs t) (List.length typcases = 1) i + | Some (idx, m, t) -> + make_func m (get_case_typs t) (List.length typcases = 1) idx :: + (* Add hint to distinguish this projection function from other functions *) + [ HintD (DecH (proj_name idx, [generate_proj_func_hint id.at]) $ id.at) ] | None -> error inst.at ("Could not find mixop " ^ Il.Print.string_of_mixop m ^ " while constructing projection functions") diff --git a/spectec/src/middlend/uncaseremoval.mli b/spectec/src/middlend/uncaseremoval.mli index 542bbf8052..d817bca894 100644 --- a/spectec/src/middlend/uncaseremoval.mli +++ b/spectec/src/middlend/uncaseremoval.mli @@ -1 +1,2 @@ val transform : Il.Ast.script -> Il.Ast.script +val uncase_proj_hint_id : string \ No newline at end of file From 30363ce20861614265939ea767f69116a354d3c1 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 27 Jan 2026 19:36:43 +0000 Subject: [PATCH 040/115] Improve ids change: Now ensures variables don't have same name as constructors/fields. --- spectec/src/il/walk.ml | 2 +- spectec/src/middlend/improveids.ml | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/spectec/src/il/walk.ml b/spectec/src/il/walk.ml index c723fe3def..dde8082eb2 100644 --- a/spectec/src/il/walk.ml +++ b/spectec/src/il/walk.ml @@ -151,7 +151,7 @@ and transform_prem t p = and transform_param t p = { p with it = match p.it with | ExpP (id, typ) -> ExpP (t.transform_var_id id, transform_typ t typ) - | TypP id -> TypP (t.transform_typ_id id) + | TypP id -> TypP (t.transform_var_id id) | DefP (id, params, typ) -> DefP (t.transform_def_id id, List.map (transform_param t) params, transform_typ t typ) | GramP (id, params, typ) -> GramP (t.transform_gram_id id, List.map (transform_param t) params, transform_typ t typ) } diff --git a/spectec/src/middlend/improveids.ml b/spectec/src/middlend/improveids.ml index 0d1125c8f4..b792cf7713 100644 --- a/spectec/src/middlend/improveids.ml +++ b/spectec/src/middlend/improveids.ml @@ -75,11 +75,18 @@ let has_atom_hole m = | [{it = Atom "_"; _}] -> true | _ -> false +let register_atom_id env s = + env.atom_str_set <- StringSet.add s env.atom_str_set + (* Atom functions *) let transform_atom env typ_id a = match a.it with - | Atom s -> Atom (t_user_def_id env (s $ a.at)).it $$ a.at % a.note - | _ -> Atom (make_prefix ^ typ_id) $$ a.at % a.note + | Atom s -> + register_atom_id env (t_user_def_id env (s $ a.at)).it; + Atom (t_user_def_id env (s $ a.at)).it $$ a.at % a.note + | _ -> + register_atom_id env (make_prefix ^ typ_id); + Atom (make_prefix ^ typ_id) $$ a.at % a.note let transform_mixop env typ_id (m : mixop) = (* TODO! Not sure what the expected result is for this one. *) From 6f7daf98b8064031146ca7576469d13b11cf0772 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 10 Feb 2026 13:31:11 +0000 Subject: [PATCH 041/115] Exposing wf relations via hints --- spectec/src/middlend/undep.ml | 27 +++++++++++++++++---------- spectec/src/middlend/undep.mli | 3 ++- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index acddaf5f7e..34c79adeaf 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -64,6 +64,8 @@ let empty () = { let wf_pred_prefix = "wf_" let rule_prefix = "case_" +let wf_hint_id = "wf-relation" + (* flag that deactivates adding wellformedness predicates to relations *) let deactivate_wfness = false @@ -151,9 +153,11 @@ and t_exp env e = (* Remove every arg but last for family projections *) | CallE (id, args) when StringSet.mem id.it env.proj_set && args <> [] -> CallE (id, [(Lib.List.last args)]) - (* HACK - Change IterE of option with no iteration variable into a OptE *) + (* HACK - Change IterE of option and list with no iteration variable into a OptE *) | IterE (e1, (Opt, [])) -> - OptE (Some e1) + OptE (Some e1) + | IterE (e1, (List, [])) | IterE (e1, (List1, [])) -> + ListE [e1] | exp -> exp ) $$ e.at % e.note @@ -229,7 +233,9 @@ let get_exp_typ q = match q.it with | ExpP (id, typ) -> Some (VarE id $$ id.at % typ, typ) | _ -> None - + +let generate_well_formed_rel_hint at: hint = { hintid = wf_hint_id $ at; hintexp = El.Ast.SeqE [] $ at} + let create_well_formed_predicate env id inst = let tf = { base_transformer with transform_exp = t_exp env; transform_typ = t_typ} in let at = id.at in @@ -240,6 +246,7 @@ let create_well_formed_predicate env id inst = | _ -> None ) quants) in let tupt pairs = TupT (pairs @ [("_" $ at, user_typ)]) $ at in + let hint = HintD (RelH (wf_pred_prefix ^ id.it $ id.at, [generate_well_formed_rel_hint at]) $ at) $ at in match inst.it with (* Variant well formedness predicate creation *) | InstD (quants, _args, {it = VariantT typcases; _}) -> @@ -265,10 +272,10 @@ let create_well_formed_predicate env id inst = let has_no_prems = List.for_all (fun rule -> match rule.it with | RuleD (_, _, _, _, prems) -> prems = [] ) rules in - if has_no_prems then None else - let relation = RelD (wf_pred_prefix ^ id.it $ id.at, [], new_mixop dep_exp_typ_pairs, tupt pairs_without_names, rules) $ at in + if has_no_prems then [] else + let relation = RelD (wf_pred_prefix ^ id.it $ id.at, [], new_mixop dep_exp_typ_pairs, tupt pairs_without_names, rules) $ at in bind_wf_set env id.it; - Some relation + [relation; hint] (* Struct/Record well formedness predicate creation *) | InstD (quants, _args, {it = StructT typfields; _}) -> @@ -299,11 +306,11 @@ let create_well_formed_predicate env id inst = List.map (transform_prem tf) (new_prems)) $ at in - if new_prems = [] then None else + if new_prems = [] then [] else let relation = RelD (wf_pred_prefix ^ id.it $ id.at, [], new_mixop dep_exp_typ_pairs, tupt pairs_without_names, [rule]) $ at in bind_wf_set env id.it; - Some relation - | _ -> None + [relation; hint] + | _ -> [] let get_extra_prems env quants exp prems = if deactivate_wfness then [] else @@ -387,7 +394,7 @@ let rec t_def env def = (TypD (id, List.map (transform_param tf) params |> List.filter is_type_param, [inst]) $ def.at, []) | TypD (id, params, [inst]) -> let relation = create_well_formed_predicate env id inst in - (TypD (id, List.map (transform_param tf) params |> List.filter is_type_param, [t_inst env inst]) $ def.at, Option.to_list relation) + (TypD (id, List.map (transform_param tf) params |> List.filter is_type_param, [t_inst env inst]) $ def.at, relation) | TypD (_, _, _) -> error def.at "Multiples instances encountered, please run type family removal pass first." | RelD (id, params, m, typ, rules) -> diff --git a/spectec/src/middlend/undep.mli b/spectec/src/middlend/undep.mli index 64d020ff9d..315a4012d4 100644 --- a/spectec/src/middlend/undep.mli +++ b/spectec/src/middlend/undep.mli @@ -1 +1,2 @@ -val transform : Il.Ast.script -> Il.Ast.script \ No newline at end of file +val transform : Il.Ast.script -> Il.Ast.script +val wf_hint_id : string \ No newline at end of file From ba34c3d696b4954e7dcce83f754cdd8ff20efdf2 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 10 Feb 2026 13:32:15 +0000 Subject: [PATCH 042/115] Expose type families via hints and added utility function to check if a bind is part of a free variable set. --- spectec/src/middlend/typefamilyremoval.ml | 8 ++++++-- spectec/src/middlend/typefamilyremoval.mli | 1 + spectec/src/middlend/utils.ml | 7 +++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/spectec/src/middlend/typefamilyremoval.ml b/spectec/src/middlend/typefamilyremoval.ml index 56b7101a15..8b1ba9f976 100644 --- a/spectec/src/middlend/typefamilyremoval.ml +++ b/spectec/src/middlend/typefamilyremoval.ml @@ -60,7 +60,10 @@ type family_data = (id * quant list * Subst.t * int * typ * typ) let error at msg = Error.error at "Type families removal" msg let projection_hint_id = "tf_projection_func" -let projection_hint = { hintid = projection_hint_id $ no_region; hintexp = El.Ast.SeqE [] $ no_region} +let projection_hint = { hintid = projection_hint_id $ no_region; hintexp = El.Ast.SeqE [] $ no_region } + +let type_family_hint_id = "type_family" +let type_family_hint = { hintid = type_family_hint_id $ no_region; hintexp = El.Ast.SeqE [] $ no_region } let quant_to_string quant = match quant.it with @@ -660,7 +663,8 @@ let rec transform_type_family def = in let proj_ids, projections = List.split (List.mapi (gen_family_projections id one_inst) insts) in - let hintdefs = List.map (fun id -> HintD (DecH (id, [projection_hint]) $ def.at)) proj_ids in + let hintdefs = HintD (TypH (id, [type_family_hint]) $ def.at) :: + List.map (fun id' -> HintD (DecH (id', [projection_hint]) $ def.at)) proj_ids in TypD (id, params, [inst]) :: projections @ hintdefs | RecD defs -> [RecD (List.concat_map transform_type_family defs)] | d -> [d] diff --git a/spectec/src/middlend/typefamilyremoval.mli b/spectec/src/middlend/typefamilyremoval.mli index 00b6c75145..73bca15b30 100644 --- a/spectec/src/middlend/typefamilyremoval.mli +++ b/spectec/src/middlend/typefamilyremoval.mli @@ -1,2 +1,3 @@ val projection_hint_id : string +val type_family_hint_id : string val transform : Il.Ast.script -> Il.Ast.script diff --git a/spectec/src/middlend/utils.ml b/spectec/src/middlend/utils.ml index 2096591915..116c4420ee 100644 --- a/spectec/src/middlend/utils.ml +++ b/spectec/src/middlend/utils.ml @@ -31,6 +31,13 @@ and reduce_inst_alias env args inst base_typ = ) | _ -> base_typ +let is_part_of_bind (free_set : Free.sets) b = + match b.it with + | ExpB (id, _) -> Free.Set.mem id.it free_set.varid + | TypB id -> Free.Set.mem id.it free_set.typid + | DefB (id, _, _) -> Free.Set.mem id.it free_set.defid + | GramB (id, _, _) -> Free.Set.mem id.it free_set.gramid + let generate_var ids id = let start = 0 in let fresh_prefix = "var" in From 61dfecd18e245a393cb125f053b4b5d27bceffa7 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 10 Feb 2026 13:32:49 +0000 Subject: [PATCH 043/115] Small IL changes adding more functionality to free, iter, and walk --- spectec/src/il/iter.ml | 5 ++++- spectec/src/il/walk.ml | 26 +++++++++++++++++++++----- spectec/src/middlend/utils.ml | 10 +++++----- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/spectec/src/il/iter.ml b/spectec/src/il/iter.ml index d7e9851a25..02c29ec7e9 100644 --- a/spectec/src/il/iter.ml +++ b/spectec/src/il/iter.ml @@ -19,6 +19,7 @@ sig val visit_typ : typ -> unit val visit_deftyp : deftyp -> unit val visit_exp : exp -> unit + val visit_arg : arg -> unit val visit_path : path -> unit val visit_sym : sym -> unit val visit_prem : prem -> unit @@ -46,6 +47,7 @@ struct let visit_typ _ = () let visit_deftyp _ = () let visit_exp _ = () + let visit_arg _ = () let visit_path _ = () let visit_sym _ = () let visit_prem _ = () @@ -219,6 +221,7 @@ and prems prs = list prem prs (* Definitions *) and arg a = + visit_arg a; match a.it with | ExpA e -> exp e | TypA t -> typ t @@ -268,4 +271,4 @@ let rec def d = | GramD (x, ps, t, prods) -> gramid x; params ps; typ t; list prod prods | RecD ds -> list def ds | HintD hd -> hintdef hd -end +end \ No newline at end of file diff --git a/spectec/src/il/walk.ml b/spectec/src/il/walk.ml index dde8082eb2..896404e6ac 100644 --- a/spectec/src/il/walk.ml +++ b/spectec/src/il/walk.ml @@ -214,6 +214,8 @@ type 'a collector = { default: 'a; compose: 'a -> 'a -> 'a; collect_exp: exp -> 'a * bool; + collect_path: path -> 'a * bool; + collect_quant: quant -> 'a * bool; collect_prem: prem -> 'a * bool; collect_iterexp: iterexp -> 'a * bool; collect_typ: typ -> 'a * bool; @@ -226,6 +228,8 @@ let base_collector default compose = { default = default; compose = compose; collect_exp = no_collect default; + collect_path = no_collect default; + collect_quant = no_collect default; collect_prem = no_collect default; collect_iterexp = no_collect default; collect_typ = no_collect default; @@ -289,11 +293,16 @@ and collect_iterexp c iterexp = and collect_path c p = let ( $@ ) = c.compose in - match p.it with - | RootP -> c.default - | DotP (p', _) -> collect_path c p' - | IdxP (p', e) -> collect_path c p' $@ collect_exp c e - | SliceP (p', e1, e2) -> collect_path c p' $@ collect_exp c e1 $@ collect_exp c e2 + let f = c.collect_path in + let traverse_list = + match p.it with + | RootP -> c.default + | DotP (p', _) -> collect_path c p' + | IdxP (p', e) -> collect_path c p' $@ collect_exp c e + | SliceP (p', e1, e2) -> collect_path c p' $@ collect_exp c e1 $@ collect_exp c e2 + in + let (res, continue) = f p in + res $@ if continue then traverse_list else c.default and collect_arg c a = let f = c.collect_arg in @@ -330,6 +339,13 @@ and collect_param c p = | DefP (_, params, typ) -> compose_list c (collect_param c) params $@ collect_typ c typ | GramP (_, params, typ) -> compose_list c (collect_param c) params $@ collect_typ c typ +and collect_quant c q = + let ( $@ ) = c.compose in + let f = c.collect_quant in + let traverse_list = collect_param c q in + let (res, continue) = f q in + res $@ if continue then traverse_list else c.default + and collect_sym c s = let ( $@ ) = c.compose in match s.it with diff --git a/spectec/src/middlend/utils.ml b/spectec/src/middlend/utils.ml index 116c4420ee..82dd40a513 100644 --- a/spectec/src/middlend/utils.ml +++ b/spectec/src/middlend/utils.ml @@ -31,12 +31,12 @@ and reduce_inst_alias env args inst base_typ = ) | _ -> base_typ -let is_part_of_bind (free_set : Free.sets) b = +let is_part_of_quant (free_set : Free.sets) b = match b.it with - | ExpB (id, _) -> Free.Set.mem id.it free_set.varid - | TypB id -> Free.Set.mem id.it free_set.typid - | DefB (id, _, _) -> Free.Set.mem id.it free_set.defid - | GramB (id, _, _) -> Free.Set.mem id.it free_set.gramid + | ExpP (id, _) -> Free.Set.mem id.it free_set.varid + | TypP id -> Free.Set.mem id.it free_set.typid + | DefP (id, _, _) -> Free.Set.mem id.it free_set.defid + | GramP (id, _, _) -> Free.Set.mem id.it free_set.gramid let generate_var ids id = let start = 0 in From 5c2fd8fe3927b340f88395bd13538e446252292a Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 10 Feb 2026 13:35:19 +0000 Subject: [PATCH 044/115] Fix tests (only changes a list IterE with no iteration variables into a ListE) --- .../specification.exp/03-remove-indexed-types.il | 6 +++--- spectec/test-middlend/specification.exp/04-totalize.il | 6 +++--- spectec/test-middlend/specification.exp/05-else.il | 6 +++--- .../test-middlend/specification.exp/06-uncase-removal.il | 6 +++--- .../test-middlend/specification.exp/07-sideconditions.il | 6 +++--- spectec/test-middlend/specification.exp/08-sub-expansion.il | 6 +++--- spectec/test-middlend/specification.exp/09-sub.il | 6 +++--- spectec/test-middlend/specification.exp/10-alias-demut.il | 6 +++--- spectec/test-middlend/specification.exp/11-improve-ids.il | 6 +++--- 9 files changed, 27 insertions(+), 27 deletions(-) diff --git a/spectec/test-middlend/specification.exp/03-remove-indexed-types.il b/spectec/test-middlend/specification.exp/03-remove-indexed-types.il index 06685429a1..e57e8b76bb 100644 --- a/spectec/test-middlend/specification.exp/03-remove-indexed-types.il +++ b/spectec/test-middlend/specification.exp/03-remove-indexed-types.il @@ -14454,7 +14454,7 @@ grammar Tblocktype_(I : I) : blocktype prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tcatch_(I : I) : catch @@ -14525,7 +14525,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "return" => RETURN_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -14534,7 +14534,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec diff --git a/spectec/test-middlend/specification.exp/04-totalize.il b/spectec/test-middlend/specification.exp/04-totalize.il index 42ec108ea7..4387089c25 100644 --- a/spectec/test-middlend/specification.exp/04-totalize.il +++ b/spectec/test-middlend/specification.exp/04-totalize.il @@ -14463,7 +14463,7 @@ grammar Tblocktype_(I : I) : blocktype prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tcatch_(I : I) : catch @@ -14534,7 +14534,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "return" => RETURN_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -14543,7 +14543,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec diff --git a/spectec/test-middlend/specification.exp/05-else.il b/spectec/test-middlend/specification.exp/05-else.il index 7fbb952f89..ba0ab44405 100644 --- a/spectec/test-middlend/specification.exp/05-else.il +++ b/spectec/test-middlend/specification.exp/05-else.il @@ -15022,7 +15022,7 @@ grammar Tblocktype_(I : I) : blocktype prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tcatch_(I : I) : catch @@ -15093,7 +15093,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "return" => RETURN_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -15102,7 +15102,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec diff --git a/spectec/test-middlend/specification.exp/06-uncase-removal.il b/spectec/test-middlend/specification.exp/06-uncase-removal.il index d3366f1433..379fbbf654 100644 --- a/spectec/test-middlend/specification.exp/06-uncase-removal.il +++ b/spectec/test-middlend/specification.exp/06-uncase-removal.il @@ -15082,7 +15082,7 @@ grammar Tblocktype_(I : I) : blocktype prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tcatch_(I : I) : catch @@ -15153,7 +15153,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "return" => RETURN_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -15162,7 +15162,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec diff --git a/spectec/test-middlend/specification.exp/07-sideconditions.il b/spectec/test-middlend/specification.exp/07-sideconditions.il index 8e7dc2314e..450211a6ee 100644 --- a/spectec/test-middlend/specification.exp/07-sideconditions.il +++ b/spectec/test-middlend/specification.exp/07-sideconditions.il @@ -15417,7 +15417,7 @@ grammar Tblocktype_(I : I) : blocktype prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tcatch_(I : I) : catch @@ -15488,7 +15488,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "return" => RETURN_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -15497,7 +15497,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec diff --git a/spectec/test-middlend/specification.exp/08-sub-expansion.il b/spectec/test-middlend/specification.exp/08-sub-expansion.il index 5120edf34c..19bbd4608f 100644 --- a/spectec/test-middlend/specification.exp/08-sub-expansion.il +++ b/spectec/test-middlend/specification.exp/08-sub-expansion.il @@ -18211,7 +18211,7 @@ grammar Tblocktype_(I : I) : blocktype prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tcatch_(I : I) : catch @@ -18282,7 +18282,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "return" => RETURN_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -18291,7 +18291,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec diff --git a/spectec/test-middlend/specification.exp/09-sub.il b/spectec/test-middlend/specification.exp/09-sub.il index cf5e270192..cb9ceda15f 100644 --- a/spectec/test-middlend/specification.exp/09-sub.il +++ b/spectec/test-middlend/specification.exp/09-sub.il @@ -18432,7 +18432,7 @@ grammar Tblocktype_(I : I) : blocktype prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tcatch_(I : I) : catch @@ -18503,7 +18503,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "return" => RETURN_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -18512,7 +18512,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec diff --git a/spectec/test-middlend/specification.exp/10-alias-demut.il b/spectec/test-middlend/specification.exp/10-alias-demut.il index 023c92df17..b32dad07d7 100644 --- a/spectec/test-middlend/specification.exp/10-alias-demut.il +++ b/spectec/test-middlend/specification.exp/10-alias-demut.il @@ -18432,7 +18432,7 @@ grammar Tblocktype_(I : I) : blocktype prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tcatch_(I : I) : catch @@ -18503,7 +18503,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "return" => RETURN_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -18512,7 +18512,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec diff --git a/spectec/test-middlend/specification.exp/11-improve-ids.il b/spectec/test-middlend/specification.exp/11-improve-ids.il index fa0ccad980..b735b1cd54 100644 --- a/spectec/test-middlend/specification.exp/11-improve-ids.il +++ b/spectec/test-middlend/specification.exp/11-improve-ids.il @@ -18432,7 +18432,7 @@ grammar Tblocktype_(v_I : I) : blocktype prod{t_opt : valtype?} t_opt:Tresult_(v_I)?{} => _RESULT_blocktype(t_opt) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(v_I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tcatch_(v_I : I) : catch @@ -18503,7 +18503,7 @@ grammar Tplaininstr_(v_I : I) : instr prod{x : idx} {{"call_ref"} {x:Ttypeidx_(v_I)}} => CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(v_I)} {(y, I'):Ttypeuse_(v_I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "return" => RETURN_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -18512,7 +18512,7 @@ grammar Tplaininstr_(v_I : I) : instr prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(v_I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(v_I)} {(y, I'):Ttypeuse_(v_I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(v_I)}} => THROW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec From 1f2b5e022ad0b68f28d9618406abae854a6f8cad Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 26 Feb 2026 12:04:15 +0000 Subject: [PATCH 045/115] Improve-ids: fixed transform mixop to have the intended effect, and some more misc changes to naming and letpr. --- spectec/src/middlend/improveids.ml | 35 ++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/spectec/src/middlend/improveids.ml b/spectec/src/middlend/improveids.ml index b792cf7713..277c8a8e48 100644 --- a/spectec/src/middlend/improveids.ml +++ b/spectec/src/middlend/improveids.ml @@ -8,6 +8,7 @@ open Il.Walk open Util.Source (* open Util *) open Xl.Atom +open Xl module StringMap = Map.Make(String) module StringSet = Set.Make(String) @@ -27,7 +28,7 @@ type id_type = | USERDEF (* Types, type constructors and relations *) | FUNCDEF (* function definitions *) -let empty_info: region * Xl.Atom.info = (no_region, {def = ""; case = ""}) +let empty_info typ_id: region * Xl.Atom.info = (no_region, {def = typ_id; case = ""}) (* Id transformation *) let rec transform_id' (env : env) (id_type : id_type) (s : text) = @@ -36,6 +37,7 @@ let rec transform_id' (env : env) (id_type : id_type) (s : text) = String.map (function | '.' -> '_' | '-' -> '_' + | '#' -> '_' | c -> c ) s' (* This suffixes any '*' with '_lst' and '?' with '_opt' for clarity *) @@ -88,16 +90,24 @@ let transform_atom env typ_id a = register_atom_id env (make_prefix ^ typ_id); Atom (make_prefix ^ typ_id) $$ a.at % a.note +(* Atom transformation where there might be other atom constructs, leave them be *) +let transform_atom' env a = + match a.it with + | Atom s -> + register_atom_id env (t_user_def_id env (s $ a.at)).it; + Atom (t_user_def_id env (s $ a.at)).it $$ a.at % a.note + | _ -> a + let transform_mixop env typ_id (m : mixop) = -(* TODO! Not sure what the expected result is for this one. *) -ignore (env, typ_id, empty_info, is_atomid, has_atom_hole, transform_atom); m -(* - let m' = List.map (fun inner_m -> List.filter is_atomid inner_m) m in + let m' = List.map (fun inner_m -> List.filter is_atomid inner_m) (Mixop.flatten m) in let len = List.length m' in match m' with - | _ when List.for_all (fun l -> l = [] || has_atom_hole l) m' -> [(Atom (make_prefix ^ typ_id) $$ empty_info)] :: List.init (len - 1) (fun _ -> []) - | _ -> Xl.Mixop.map_atoms (transform_atom env typ_id)) m' -*) + | _ when List.for_all (fun l -> l = [] || has_atom_hole l) m' -> + register_atom_id env (make_prefix ^ typ_id); + let atom = Xl.Mixop.Atom (Atom (make_prefix ^ typ_id) $$ empty_info typ_id) in + Xl.Mixop.(Seq (atom :: List.init (len - 1) (fun _ -> Arg ()))) + | _ -> Xl.Mixop.map_atoms (transform_atom' env) m + let rec check_iteration_naming e iterexp = match e.it, iterexp with @@ -160,6 +170,12 @@ let t_inst tf env id inst = ) ) $ inst.at +(* Necessary to reset ids due to change on iterE *) +let t_prem prem = + { prem with it = match prem.it with + | LetPr (e1, e2, _) -> LetPr (e1, e2, Free.Set.elements (Free.free_exp e1).varid) + | p -> p } + let transform_rule tf env rel_id rule = (match rule.it with | RuleD (id, quants, m, exp, prems) -> @@ -175,7 +191,8 @@ let rec t_def env def = let tf = { base_transformer with transform_exp = t_exp env; transform_typ = t_typ env; - transform_path = t_path env; + transform_path = t_path env; + transform_prem = t_prem; transform_var_id = t_var_id env; transform_typ_id = t_user_def_id env; transform_rel_id = t_user_def_id env; From e01b21cf40a2f59072b7924c848c438d6f2d209b Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 5 Mar 2026 13:44:05 +0000 Subject: [PATCH 046/115] Pattern simp pass made --- spectec/src/exe-spectec/main.ml | 6 +- spectec/src/il/walk.ml | 15 ++-- spectec/src/middlend/dune | 1 + spectec/src/middlend/patSimp.ml | 137 +++++++++++++++++++++++++++++ spectec/src/middlend/patSimp.mli | 1 + spectec/test-middlend/test.spectec | 25 +++++- 6 files changed, 173 insertions(+), 12 deletions(-) create mode 100644 spectec/src/middlend/patSimp.ml create mode 100644 spectec/src/middlend/patSimp.mli diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index ae86b09d9e..d0248ae53a 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -27,6 +27,7 @@ type pass = | AliasDemut | ImproveIds | Ite + | PatSimp (* This list declares the intended order of passes. @@ -37,6 +38,7 @@ flags on the command line. let _skip_passes = [ Unthe ] (* Not clear how to extend them to indexed types *) let all_passes = [ Ite; + PatSimp; TypeFamilyRemoval; Undep; Totalize; @@ -112,6 +114,7 @@ let pass_flag = function | Uncaseremoval -> "uncase-removal" | ImproveIds -> "improve-ids" | Ite -> "ite" + | PatSimp -> "pattern-simp" let pass_desc = function | Sub -> "Synthesize explicit subtype coercions" @@ -126,6 +129,7 @@ let pass_desc = function | AliasDemut -> "Lifts type aliases out of mutual groups" | ImproveIds -> "Disambiguates ids used from each other" | Ite -> "If-then-else introduction" + | PatSimp -> "Simplifies non-linear and definite iteration patterns" let run_pass : pass -> Il.Ast.script -> Il.Ast.script = function @@ -141,7 +145,7 @@ let run_pass : pass -> Il.Ast.script -> Il.Ast.script = function | AliasDemut -> Middlend.AliasDemut.transform | ImproveIds -> Middlend.Improveids.transform | Ite -> Middlend.Ite.transform - + | PatSimp -> Middlend.PatSimp.transform (* Argument parsing *) diff --git a/spectec/src/il/walk.ml b/spectec/src/il/walk.ml index d8d1d3e014..4a471d0946 100644 --- a/spectec/src/il/walk.ml +++ b/spectec/src/il/walk.ml @@ -35,7 +35,8 @@ type transformer = { transform_def_id: id -> id; transform_gram_id: id -> id; - filter_exp : exp -> exp option + (* Adjusting traversal *) + transform_types_of_exp : bool } let id = Fun.id @@ -55,7 +56,7 @@ let base_transformer = { transform_def_id = id; transform_gram_id = id; - filter_exp = op_id + transform_types_of_exp = true } let rec transform_typ t typ = @@ -72,7 +73,6 @@ let rec transform_typ t typ = and transform_exp t e = let f = t.transform_exp in - let g = t.filter_exp in let t_exp = transform_exp t in let it = match e.it with @@ -107,13 +107,8 @@ and transform_exp t e = | SubE (e1, _t1, t2) -> SubE (t_exp e1, _t1, t2) | IfE (e1, e2, e3) -> IfE (t_exp e1, t_exp e2, t_exp e3) in - - let e' = - match g {e with it; note = transform_typ t e.note } with - | Some e' -> f e' - | None -> e - in - f e' + let typ' = if t.transform_types_of_exp then transform_typ t e.note else e.note in + f { e with it; note = typ' } and transform_iter t iter = match iter with diff --git a/spectec/src/middlend/dune b/spectec/src/middlend/dune index c2bc064072..31f3bb2553 100644 --- a/spectec/src/middlend/dune +++ b/spectec/src/middlend/dune @@ -15,5 +15,6 @@ aliasDemut improveids ite + patSimp ) ) diff --git a/spectec/src/middlend/patSimp.ml b/spectec/src/middlend/patSimp.ml new file mode 100644 index 0000000000..ac59371272 --- /dev/null +++ b/spectec/src/middlend/patSimp.ml @@ -0,0 +1,137 @@ +(* + This pass simplifies definite iteration and non-linear patterns + by utilizing premises. + + It achieves this through the following steps: + - For non-linear patterns: + * For each clause, we traverse the arguments and keep track + of all variables in expressions. If a variable appears more + than once, we generate a fresh version of the variable and + keep it for later. + * Once we have traversed the entire argument list, we use + the variables tracked to generate new quantifiers and equality + premises. + - For definite iteration: + * For each clause, we traverse the arguments, and collect + all variables used for definite iteration (i.e. the e in ListN e _ ) + and the respective lists being iterated. + * Using the collected variables, we iterate through the list to create + the equality premises. + + + For example (for non-linear pattern), take the function: + + def $find(nat, nat* ) : bool + def $find(n, eps ) = false + def $find(n, n n'* ) = true + def $find(n, n_1 n'* ) = $find( n, n'* ) + Would be transformed as such: + + def $find(nat : nat, nat* ) : bool + def $find{n : nat}(n, []) = false + def $find{n : nat, `n'*` : nat*, n#1 : nat}(n, [n#1] ++ n'*{n' <- `n'*`}) = true + -- if (n = n#1) + def $find{n : nat, n_1 : nat, `n'*` : nat*}(n, [n_1] ++ n'*{n' <- `n'*`}) = $find(n, n'*{n' <- `n'*`}) + + For definite iteration: + + def $len( int* ) : nat + def $len(i^n) = n + + to + + def $len(int* ) : nat + def $len{n : nat, `i*` : int*}(i^n{i <- `i*`}) = n + -- if (n = |`i*`|) +*) + +open Il.Ast +open Il.Walk +open Util +open Source + +module StringMap = Map.Make(String) + +let (let*) = Option.bind + +let create_eq_prem id typ id' = + let idexp = VarE id $$ id.at % typ in + let idexp' = VarE (id' $ id.at) $$ id.at % typ in + let exp = CmpE (`EqOp, `BoolT, idexp, idexp') $$ id.at % (BoolT $ id.at) in + IfPr exp $ id.at + +let create_eq_prem_exp e e' = + let exp = CmpE (`EqOp, `BoolT, e, e') $$ e.at % (BoolT $ e.at) in + IfPr exp $ e.at + +let t_exp varmap exp = + match exp.it with + | VarE id -> + let fresh_var = ref id.it in + varmap := StringMap.update id.it (fun opt -> + match opt with + | Some lst -> + fresh_var := Il.Fresh.fresh_varid id.it; + Some (!fresh_var :: lst) + | None -> Some [] + ) !varmap; + { exp with it = VarE (!fresh_var $ id.at) } + | _ -> exp + +let c_exp exp = + match exp.it with + | IterE (_, (ListN (e'', _), eps)) -> ([e'', eps], true) + | _ -> ([], true) + +let t_exp2 exp = + match exp.it with + | IterE (e, (_, eps)) -> { exp with it = IterE (e, (List, eps)) } + | _ -> exp + +let t_typ2 typ = + match typ.it with + | IterT (t, ListN _) -> { typ with it = IterT (t, List) } + | _ -> typ + +let handle_non_linear clause = + let DefD (quants, args, exp, prs) = clause.it in + let varmap = ref StringMap.empty in + let tf = { base_transformer with transform_exp = t_exp varmap; transform_types_of_exp = false } in + + let args' = List.map (transform_arg tf) args in + let new_quants, new_prs = List.filter_map (fun q -> match q.it with + | ExpP (id, typ) -> + let* ts = StringMap.find_opt id.it !varmap in + if ts = [] then None else + let q' = List.map (fun id' -> ExpP (id' $ id.at, typ) $ id.at) ts in + let prs'= List.map (create_eq_prem id typ) ts in + Some (q', prs') + | _ -> None + ) quants |> List.split + in + + { clause with it = DefD (quants @ (List.concat new_quants), args', exp, prs @ (List.concat new_prs)) } + +let handle_definite_iter clause = + let DefD (quants, args, exp, prs) = clause.it in + let lst_cl = base_collector [] (@) in + let cl = { lst_cl with collect_exp = c_exp } in + let tf = { base_transformer with transform_exp = t_exp2; transform_typ = t_typ2 } in + + let lst = List.concat_map (collect_arg cl) args in + let new_prs = List.concat_map (fun (n, eps) -> + let lene e = LenE e $$ e.at % (NumT `NatT $ e.at) in + List.map (fun (_, e) -> create_eq_prem_exp n (lene e)) eps + ) lst + in + + { clause with it = DefD (quants, List.map (transform_arg tf) args, exp, prs @ new_prs) } + +let rec t_def def = + match def.it with + | DecD (id, params, rt, clauses) -> { def with it = DecD (id, params, rt, + clauses |> List.map handle_non_linear |> List.map handle_definite_iter) } + | RecD defs -> { def with it = RecD (List.map t_def defs) } + | _ -> def + +let transform il = List.map t_def il diff --git a/spectec/src/middlend/patSimp.mli b/spectec/src/middlend/patSimp.mli new file mode 100644 index 0000000000..64d020ff9d --- /dev/null +++ b/spectec/src/middlend/patSimp.mli @@ -0,0 +1 @@ +val transform : Il.Ast.script -> Il.Ast.script \ No newline at end of file diff --git a/spectec/test-middlend/test.spectec b/spectec/test-middlend/test.spectec index 933b224916..82d8a46852 100644 --- a/spectec/test-middlend/test.spectec +++ b/spectec/test-middlend/test.spectec @@ -33,4 +33,27 @@ def $t_totalize3(n) = $($t_totalize(n) + $t_totalize2($(n + 10))) ;; def $t_totalize3(n) = $($t_totalize(n) + $t_totalize2($t_totalize(n))) ;; ;; def $t_totalize4(nat) : nat hint(partial) -;; def $t_totalize4(n) = $t_totalize($t_totalize(n)) \ No newline at end of file +;; def $t_totalize4(n) = $t_totalize($t_totalize(n)) + +;; +;; Pattern Simp testing +;; + +syntax A = B nat + +def $t_patsimp(nat, nat) : nat +def $t_patsimp(n, n) = n +def $t_patsimp(n, m) = $(n + m) + +def $t_patsimp2(nat, nat, A) : nat +def $t_patsimp2(n, n, B n) = n +def $t_patsimp2(n, m, B m) = $(n + m) +def $t_patsimp2(n, m, B k) = $(n + m + k) + +def $find(nat, nat*) : bool +def $find(n, eps) = false +def $find(n, n n'*) = true +def $find(n, n_1 n'*) = $find(n, n'*) + +def $len(int*) : nat +def $len(i^n) = n \ No newline at end of file From 2cdcfc66698ad063fa3ffd7374b53918be13f367 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 5 Mar 2026 13:52:40 +0000 Subject: [PATCH 047/115] Make type families have a default name if there are no quantifiers. --- spectec/src/middlend/typefamilyremoval.ml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/spectec/src/middlend/typefamilyremoval.ml b/spectec/src/middlend/typefamilyremoval.ml index 8b1ba9f976..acd73ffac6 100644 --- a/spectec/src/middlend/typefamilyremoval.ml +++ b/spectec/src/middlend/typefamilyremoval.ml @@ -79,7 +79,9 @@ let iter_var_name = "iter_" let name_prefix id = id.it ^ "_" let empty_info typ_id: region * Xl.Atom.info = (no_region, {def = typ_id; case = ""}) -let sub_type_name_quants quants = (String.concat "_" (List.map quant_to_string quants)) +let sub_type_name_quants quants i = + let s = (String.concat "_" (List.map quant_to_string quants)) in + if s = "" then "_" ^ Int.to_string i else s let constructor_name' id case_num = make_prefix ^ name_prefix id ^ Int.to_string case_num let constructor_name_mixop id num_quants case_num: mixop = Xl.Mixop.(Seq (Atom (Xl.Atom.Atom (constructor_name' id case_num) $$ empty_info id.it) @@ -569,14 +571,14 @@ let transform_inst env inst = [InstD (List.map (transform_param env) quants, List.map (transform_arg StringMap.empty env) args, transform_deftyp env deftyp) $ inst.at] (* Creates new TypD's for each StructT and VariantT *) -let create_types id inst = +let create_types idx id inst = match inst.it with | InstD (quants, _, deftyp) -> (match deftyp.it with | AliasT _ -> [] | StructT _ | VariantT _ -> let inst = InstD (quants, List.map make_arg quants, deftyp) $ inst.at in - [TypD (id.it ^ sub_type_name_quants quants $ id.at, quants, [inst])] + [TypD (id.it ^ sub_type_name_quants quants idx $ id.at, quants, [inst])] ) let rec transform_def env def = @@ -623,10 +625,10 @@ let gen_family_projections id has_one_inst case_num inst = let rec create_types_from_instances def = (match def.it with | TypD (id, params, [inst]) when check_normal_type_creation inst -> [TypD (id, params, [inst])] - | TypD (id, params, insts) -> let types = List.concat_map (create_types id) insts in - let transformed_instances = List.map (fun inst -> match inst.it with + | TypD (id, params, insts) -> let types = List.mapi (fun i inst -> create_types i id inst) insts |> List.concat in + let transformed_instances = List.mapi (fun i inst -> match inst.it with | InstD (quants, args, {it = StructT _; at; _}) | InstD (quants, args, {it = VariantT _; at; _}) -> - InstD (quants, args, AliasT (VarT (id.it ^ sub_type_name_quants quants $ id.at, List.map make_arg quants) $ id.at) $ at) $ inst.at + InstD (quants, args, AliasT (VarT (id.it ^ sub_type_name_quants quants i $ id.at, List.map make_arg quants) $ id.at) $ at) $ inst.at | _ -> inst ) insts in types @ [TypD(id, params, transformed_instances)] From 15af140d5c631a7cf206a50d782f0159b56d2eed Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 21 Apr 2026 11:28:24 +0100 Subject: [PATCH 048/115] Extended definite iter pattern simplification to relations. --- spectec/src/middlend/patSimp.ml | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/spectec/src/middlend/patSimp.ml b/spectec/src/middlend/patSimp.ml index ac59371272..30caa37089 100644 --- a/spectec/src/middlend/patSimp.ml +++ b/spectec/src/middlend/patSimp.ml @@ -41,7 +41,7 @@ to def $len(int* ) : nat - def $len{n : nat, `i*` : int*}(i^n{i <- `i*`}) = n + def $len{n : nat, `i*` : int*}(i*{i <- `i*`}) = n -- if (n = |`i*`|) *) @@ -58,7 +58,7 @@ let create_eq_prem id typ id' = let idexp = VarE id $$ id.at % typ in let idexp' = VarE (id' $ id.at) $$ id.at % typ in let exp = CmpE (`EqOp, `BoolT, idexp, idexp') $$ id.at % (BoolT $ id.at) in - IfPr exp $ id.at + IfPr exp $ id.at let create_eq_prem_exp e e' = let exp = CmpE (`EqOp, `BoolT, e, e') $$ e.at % (BoolT $ e.at) in @@ -85,7 +85,7 @@ let c_exp exp = let t_exp2 exp = match exp.it with - | IterE (e, (_, eps)) -> { exp with it = IterE (e, (List, eps)) } + | IterE (e, (ListN _, eps)) -> { exp with it = IterE (e, (List, eps)) } | _ -> exp let t_typ2 typ = @@ -127,10 +127,30 @@ let handle_definite_iter clause = { clause with it = DefD (quants, List.map (transform_arg tf) args, exp, prs @ new_prs) } +let handle_definite_iter_rel rule = + let RuleD (id, quants, mixop, exp, prs) = rule.it in + let lst_cl = base_collector [] (@) in + let cl = { lst_cl with collect_exp = c_exp } in + + let def_lst = collect_exp cl exp @ List.concat_map (collect_prem cl) prs in + let def_lst_uniq = Lib.List.nub (fun (n1, eps1) (n2, eps2) -> + Il.Eq.eq_exp n1 n2 && List.length eps1 = List.length eps2 && + List.for_all2 (fun (id1, e1) (id2, e2) -> id1.it = id2.it && Il.Eq.eq_exp e1 e2) eps1 eps2 + ) def_lst in + let new_prs = List.concat_map (fun (n, eps) -> + let lene e = LenE e $$ e.at % (NumT `NatT $ e.at) in + List.map (fun (_, e) -> create_eq_prem_exp n (lene e)) eps + ) def_lst_uniq + in + + { rule with it = RuleD (id, quants, mixop, exp, prs @ new_prs) } + let rec t_def def = match def.it with | DecD (id, params, rt, clauses) -> { def with it = DecD (id, params, rt, clauses |> List.map handle_non_linear |> List.map handle_definite_iter) } + | RelD (id, qs, mixop, typ, rules) -> + { def with it = RelD (id, qs, mixop, typ, List.map handle_definite_iter_rel rules) } | RecD defs -> { def with it = RecD (List.map t_def defs) } | _ -> def From 7c03ab83d7b58bc6b08f7e82d1479d1b6edb6f21 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 21 Apr 2026 13:11:50 +0100 Subject: [PATCH 049/115] Undep: deactivating wfness now does not remove essential ones such as type family ones. --- spectec/src/middlend/undep.ml | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index 34c79adeaf..97644b611d 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -52,13 +52,15 @@ module StringSet = Set.Make(String) type env = { mutable wf_set : StringSet.t; mutable proj_set : StringSet.t; + mutable tf_set : StringSet.t; mutable il_env : Il.Env.t; } let empty () = { wf_set = StringSet.empty; proj_set = StringSet.empty; - il_env = Il.Env.empty + tf_set = StringSet.empty; + il_env = Il.Env.empty; } let wf_pred_prefix = "wf_" @@ -273,7 +275,7 @@ let create_well_formed_predicate env id inst = | RuleD (_, _, _, _, prems) -> prems = [] ) rules in if has_no_prems then [] else - let relation = RelD (wf_pred_prefix ^ id.it $ id.at, [], new_mixop dep_exp_typ_pairs, tupt pairs_without_names, rules) $ at in + let relation = RelD (wf_pred_prefix ^ id.it $ id.at, [], new_mixop dep_exp_typ_pairs, tupt pairs_without_names, rules) $ at in bind_wf_set env id.it; [relation; hint] @@ -312,13 +314,20 @@ let create_well_formed_predicate env id inst = [relation; hint] | _ -> [] +let rec has_type_family env typ = + match typ.it with + | VarT (id, _) -> StringSet.mem id.it env.tf_set + | IterT (typ, _) -> has_type_family env typ + | TupT typs -> List.exists (fun (_, t) -> has_type_family env t) typs + | _ -> false + let get_extra_prems env quants exp prems = - if deactivate_wfness then [] else let cl = create_collector [] in let wf_terms = collect_exp cl exp @ List.concat_map (collect_prem cl) prems in let unique_terms = Util.Lib.List.nub (fun ((e1, _t1), iterexp1) ((e2, _t2), iterexp2) -> Il.Eq.eq_exp e1 e2 && Il.Eq.eq_list Il.Eq.eq_iterexp iterexp1 iterexp2 ) wf_terms in + let unique_terms = if deactivate_wfness then List.filter (fun ((_, t), _) -> has_type_family env t) unique_terms else unique_terms in let more_prems = List.concat_map (fun (pair, iterexps) -> List.map (fun prem' -> List.fold_left (fun acc iterexp -> @@ -328,8 +337,8 @@ let get_extra_prems env quants exp prems = (* Leverage the fact that the wellformed predicates are "bubbled up" and remove unnecessary wf preds*) let free_vars = (Free.free_list Free.free_prem more_prems).varid in - let quants_filtered = Lib.List.filter_not (fun q -> match q.it with - | ExpP (id, _) -> Free.Set.mem id.it free_vars + let quants_filtered = Lib.List.filter_not (fun b -> match b.it with + | ExpP (id, typ) -> Free.Set.mem id.it free_vars || (deactivate_wfness && (not (has_type_family env typ))) | _ -> true ) quants in let quant_prems = (List.filter_map get_exp_typ quants_filtered) |> List.concat_map (get_wf_pred env) in @@ -420,6 +429,7 @@ let rec t_def env def = | HintD hintdef -> (HintD hintdef $ def.at, []) let has_proj_hint (hint : hint) = hint.hintid.it = Typefamilyremoval.projection_hint_id +let has_tf_hint (hint : hint) = hint.hintid.it = Typefamilyremoval.type_family_hint_id let create_proj_map_def set (d : def) = match d.it with @@ -430,12 +440,24 @@ let create_proj_map_def set (d : def) = ) | _ -> () +let create_tf_set_def set (d : def) = + match d.it with + | HintD {it = TypH (id, hints); _} -> + (match (List.find_opt has_tf_hint hints) with + | Some _ -> set := StringSet.add id.it !set + | _ -> () + ) + | _ -> () + let transform (il : script): script = let env = empty () in env.il_env <- Il.Env.env_of_script il; let proj_set = ref StringSet.empty in + let tf_set = ref StringSet.empty in List.iter (create_proj_map_def proj_set) il; + List.iter (create_tf_set_def tf_set) il; env.proj_set <- !proj_set; + env.tf_set <- !tf_set; List.concat_map (fun d -> let (t_d, wf_relations) = t_def env d in t_d :: wf_relations From 22ae0db188accc47e6dd129b930b2e42781bf9cd Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 21 Apr 2026 14:25:11 +0100 Subject: [PATCH 050/115] Moved patsimp pass as it is dependent on dependent types being removed. --- spectec/src/exe-spectec/main.ml | 2 +- spectec/src/middlend/patSimp.ml | 42 +++++++++++++++++++++++---------- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index d0248ae53a..6b76d45558 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -38,9 +38,9 @@ flags on the command line. let _skip_passes = [ Unthe ] (* Not clear how to extend them to indexed types *) let all_passes = [ Ite; - PatSimp; TypeFamilyRemoval; Undep; + PatSimp; Totalize; Else; Uncaseremoval; diff --git a/spectec/src/middlend/patSimp.ml b/spectec/src/middlend/patSimp.ml index 30caa37089..74aff0a904 100644 --- a/spectec/src/middlend/patSimp.ml +++ b/spectec/src/middlend/patSimp.ml @@ -43,6 +43,9 @@ def $len(int* ) : nat def $len{n : nat, `i*` : int*}(i*{i <- `i*`}) = n -- if (n = |`i*`|) + +NOTE: Currently does not work with dependent types. As such, it depends on the type family removal pass and undep pass. +This is a todo for the future. *) open Il.Ast @@ -64,6 +67,11 @@ let create_eq_prem_exp e e' = let exp = CmpE (`EqOp, `BoolT, e, e') $$ e.at % (BoolT $ e.at) in IfPr exp $ e.at +let create_iter_prem scope base_prem = + List.fold_left (fun prem iterexp -> + IterPr (prem, iterexp) $ prem.at + ) base_prem scope + let t_exp varmap exp = match exp.it with | VarE id -> @@ -78,9 +86,14 @@ let t_exp varmap exp = { exp with it = VarE (!fresh_var $ id.at) } | _ -> exp -let c_exp exp = +let rec c_exp scope exp = match exp.it with - | IterE (_, (ListN (e'', _), eps)) -> ([e'', eps], true) + | IterE (_, (ListN (e'', _), eps)) -> ([e'', eps, scope], true) + | IterE (e, (iter, eps)) -> + let lst_cl = base_collector [] (@) in + let cl = { lst_cl with collect_exp = c_exp ((iter, eps) :: scope) } in + let def_lst = collect_exp cl e in + (def_lst, false) | _ -> ([], true) let t_exp2 exp = @@ -97,7 +110,6 @@ let handle_non_linear clause = let DefD (quants, args, exp, prs) = clause.it in let varmap = ref StringMap.empty in let tf = { base_transformer with transform_exp = t_exp varmap; transform_types_of_exp = false } in - let args' = List.map (transform_arg tf) args in let new_quants, new_prs = List.filter_map (fun q -> match q.it with | ExpP (id, typ) -> @@ -115,14 +127,16 @@ let handle_non_linear clause = let handle_definite_iter clause = let DefD (quants, args, exp, prs) = clause.it in let lst_cl = base_collector [] (@) in - let cl = { lst_cl with collect_exp = c_exp } in + let cl = { lst_cl with collect_exp = c_exp [] } in let tf = { base_transformer with transform_exp = t_exp2; transform_typ = t_typ2 } in - let lst = List.concat_map (collect_arg cl) args in - let new_prs = List.concat_map (fun (n, eps) -> + let def_lst = List.concat_map (collect_arg cl) args in + let new_prs = List.concat_map (fun (n, eps, scope) -> let lene e = LenE e $$ e.at % (NumT `NatT $ e.at) in - List.map (fun (_, e) -> create_eq_prem_exp n (lene e)) eps - ) lst + List.map (fun (_, e) -> + let base_prem = create_eq_prem_exp n (lene e) in + create_iter_prem scope base_prem) eps + ) def_lst in { clause with it = DefD (quants, List.map (transform_arg tf) args, exp, prs @ new_prs) } @@ -130,16 +144,18 @@ let handle_definite_iter clause = let handle_definite_iter_rel rule = let RuleD (id, quants, mixop, exp, prs) = rule.it in let lst_cl = base_collector [] (@) in - let cl = { lst_cl with collect_exp = c_exp } in + let cl = { lst_cl with collect_exp = c_exp [] } in let def_lst = collect_exp cl exp @ List.concat_map (collect_prem cl) prs in - let def_lst_uniq = Lib.List.nub (fun (n1, eps1) (n2, eps2) -> + let def_lst_uniq = Lib.List.nub (fun (n1, eps1, _) (n2, eps2, _) -> Il.Eq.eq_exp n1 n2 && List.length eps1 = List.length eps2 && List.for_all2 (fun (id1, e1) (id2, e2) -> id1.it = id2.it && Il.Eq.eq_exp e1 e2) eps1 eps2 ) def_lst in - let new_prs = List.concat_map (fun (n, eps) -> + let new_prs = List.concat_map (fun (n, eps, scope) -> let lene e = LenE e $$ e.at % (NumT `NatT $ e.at) in - List.map (fun (_, e) -> create_eq_prem_exp n (lene e)) eps + List.map (fun (_, e) -> + let base_prem = create_eq_prem_exp n (lene e) in + create_iter_prem scope base_prem) eps ) def_lst_uniq in @@ -148,7 +164,7 @@ let handle_definite_iter_rel rule = let rec t_def def = match def.it with | DecD (id, params, rt, clauses) -> { def with it = DecD (id, params, rt, - clauses |> List.map handle_non_linear |> List.map handle_definite_iter) } + clauses |> List.map handle_definite_iter |> List.map (handle_non_linear)) } | RelD (id, qs, mixop, typ, rules) -> { def with it = RelD (id, qs, mixop, typ, List.map handle_definite_iter_rel rules) } | RecD defs -> { def with it = RecD (List.map t_def defs) } From 0ae8a5776717a671299cd75fee43780dbafd6f24 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 21 Apr 2026 15:21:41 +0100 Subject: [PATCH 051/115] enabled pass pat-simp and deactivated deftorel otherwise solution due to non-strictly positive occurence. --- spectec/src/backend-rocq/print.ml | 2 +- spectec/src/exe-spectec/main.ml | 3 ++- spectec/src/middlend/deftorel.ml | 6 ++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index e674c06f78..09f06e738d 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -270,7 +270,7 @@ and render_type exp_type typ = | NumT nt -> render_numtyp nt | TextT -> "string" | TupT [] -> "unit" - | TupT typs -> String.concat " * " (List.map (fun (_, t) -> rt_func t) typs) + | TupT typs -> parens (String.concat " * " (List.map (fun (_, t) -> rt_func t) typs)) | IterT (t, Opt) -> parens ("option " ^ rt_func t) | IterT (t, _) -> parens ("seq " ^ rt_func t) diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index c9f2100a4e..913ab26f26 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -280,7 +280,8 @@ let () = enable_pass AliasDemut; enable_pass DefToRel; enable_pass Ite; - enable_pass ElseSimp + enable_pass ElseSimp; + enable_pass PatSimp | _ when !print_al || !print_al_o <> "" -> enable_pass Sideconditions; | _ -> () diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index 4967b3883f..06c8fa1df8 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -526,7 +526,7 @@ let is_otherwise prem = | ElsePr -> true | _ -> false -let fall_through_prems env id mixop typs rules = +let _fall_through_prems env id mixop typs rules = let gen_rel_name rid = id.it ^ "_before_" ^ rid.it $ id.at in @@ -570,7 +570,9 @@ let cvt_def_to_rel env id params r_typ clauses = ) clauses in let new_id = { id with it = fun_prefix ^ id.it } in - fall_through_prems env new_id new_mixop tup_types rules + [RelD (new_id, [], new_mixop, TupT tup_types $ id.at, rules) $ new_id.at ] + (* TODO: Deactivated for now until I figure out a solution for recursive partial functions *) + (* fall_through_prems env new_id new_mixop tup_types rules *) let uses_def ids_set def = match def.it with From 7a41aa50e035794f5cd022afa630ce8bd6a8a197 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 21 Apr 2026 15:43:02 +0100 Subject: [PATCH 052/115] Made it so that if functions only have otherwise as a premise then it is allowed to be a function. --- spectec/src/middlend/deftorel.ml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index 06c8fa1df8..faf8af7b41 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -443,6 +443,11 @@ let collect_list_length_vars () : StringSet.t ref * (module Iter.Arg) = in Arg.acc, (module Arg) let must_be_relation env id params clauses = + let only_otherwise prems = + match prems with + | [{it = ElsePr; _}] -> true + | _ -> false + in let listn_set, (module Arg : Iter.Arg) = collect_list_length_vars () in let rel_def_checker = { exists_base_checker with collect_exp = utilizes_rel_def env} in assert (!listn_set = StringSet.empty); @@ -456,7 +461,10 @@ let must_be_relation env id params clauses = | DefD (quants, args, exp, prems) -> Acc.args args; (* Premises might not be decidable *) - prems <> [] || + (* NOTE: if its only otherwise premise, then fall-through semantics should be + able to handle it. + *) + (prems <> [] && not (only_otherwise prems)) || (* Functions that have function calls transformed to relations must also be relations *) collect_exp rel_def_checker exp || List.exists (collect_prem rel_def_checker) prems || From 6c9efcfe629417b3e97884664f3e945599f18c1a Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Wed, 22 Apr 2026 11:14:55 +0100 Subject: [PATCH 053/115] Made it so rendering function definitions take into account whether a function only has otherwise. --- spectec/src/backend-rocq/print.ml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index 09f06e738d..1e4211e18c 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -727,8 +727,13 @@ let render_extra_info def = | _ -> None let has_prems c = + let only_otherwise prems = + match prems with + | [{it = ElsePr; _}] -> true + | _ -> false + in match c.it with - | DefD (_, _, _, prems) -> prems <> [] + | DefD (_, _, _, prems) -> prems <> [] && not (only_otherwise prems) let start_prefix def = match def.it with From ee44ae1cfa76f1b23c50c2c034356f930377c7a3 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 4 May 2026 15:09:08 +0100 Subject: [PATCH 054/115] Undep: the wfness filter now checks the entire expression for a type family --- spectec/src/middlend/undep.ml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index f8ec3d0b47..c55aead170 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -321,13 +321,18 @@ let rec has_type_family env typ = | TupT typs -> List.exists (fun (_, t) -> has_type_family env t) typs | _ -> false +let has_type_family_term env e = (has_type_family env e.note, true) + let get_extra_prems env quants exp prems = let cl = create_collector [] in let wf_terms = collect_exp cl exp @ List.concat_map (collect_prem cl) prems in let unique_terms = Util.Lib.List.nub (fun ((e1, _t1), iterexp1) ((e2, _t2), iterexp2) -> Il.Eq.eq_exp e1 e2 && Il.Eq.eq_list Il.Eq.eq_iterexp iterexp1 iterexp2 ) wf_terms in - let unique_terms = if deactivate_wfness then List.filter (fun ((_, t), _) -> has_type_family env t) unique_terms else unique_terms in + let unique_terms = if deactivate_wfness then List.filter (fun ((e, t), _) -> + let ec = { exists_base_checker with collect_exp = has_type_family_term env } in + collect_exp ec e || has_type_family env t + ) unique_terms else unique_terms in let more_prems = List.concat_map (fun (pair, iterexps) -> List.map (fun prem' -> List.fold_left (fun acc iterexp -> From 96b907fd36db37f3275e96e67e29b883b4d4af7c Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 4 May 2026 15:10:10 +0100 Subject: [PATCH 055/115] Undep: the wfness filter now checks the entire expression for type families --- spectec/src/middlend/undep.ml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index 97644b611d..e20cbd9e6b 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -321,13 +321,18 @@ let rec has_type_family env typ = | TupT typs -> List.exists (fun (_, t) -> has_type_family env t) typs | _ -> false +let has_type_family_term env e = (has_type_family env e.note, true) + let get_extra_prems env quants exp prems = let cl = create_collector [] in let wf_terms = collect_exp cl exp @ List.concat_map (collect_prem cl) prems in let unique_terms = Util.Lib.List.nub (fun ((e1, _t1), iterexp1) ((e2, _t2), iterexp2) -> Il.Eq.eq_exp e1 e2 && Il.Eq.eq_list Il.Eq.eq_iterexp iterexp1 iterexp2 ) wf_terms in - let unique_terms = if deactivate_wfness then List.filter (fun ((_, t), _) -> has_type_family env t) unique_terms else unique_terms in + let unique_terms = if deactivate_wfness then List.filter (fun ((e, t), _) -> + let ec = { exists_base_checker with collect_exp = has_type_family_term env } in + collect_exp ec e || has_type_family env t + ) unique_terms else unique_terms in let more_prems = List.concat_map (fun (pair, iterexps) -> List.map (fun prem' -> List.fold_left (fun acc iterexp -> From 6b3edff04d9dbe4ef494eb5688b93de7e479c2df Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 4 May 2026 15:11:52 +0100 Subject: [PATCH 056/115] Pat simp: Now uses a different name generation and moved it after sub expansion in order to remove some non-linear bindings. --- spectec/src/exe-spectec/main.ml | 2 +- spectec/src/middlend/patSimp.ml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index 6b76d45558..3a52c7a05a 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -40,12 +40,12 @@ let all_passes = [ Ite; TypeFamilyRemoval; Undep; - PatSimp; Totalize; Else; Uncaseremoval; Sideconditions; SubExpansion; + PatSimp; Sub; AliasDemut; ImproveIds diff --git a/spectec/src/middlend/patSimp.ml b/spectec/src/middlend/patSimp.ml index 74aff0a904..cf9d0066a5 100644 --- a/spectec/src/middlend/patSimp.ml +++ b/spectec/src/middlend/patSimp.ml @@ -79,7 +79,7 @@ let t_exp varmap exp = varmap := StringMap.update id.it (fun opt -> match opt with | Some lst -> - fresh_var := Il.Fresh.fresh_varid id.it; + fresh_var := Utils.generate_var (List.map fst (StringMap.bindings !varmap) @ lst) id.it; Some (!fresh_var :: lst) | None -> Some [] ) !varmap; From bd64c60aa058211f73802ba589fef5d743e1efa9 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 4 May 2026 15:13:35 +0100 Subject: [PATCH 057/115] Patsimp: Now utilizes a different naem gneeration, and moved pattern simplification after sub expansion --- spectec/src/exe-spectec/main.ml | 2 +- spectec/src/middlend/patSimp.ml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index 913ab26f26..f32cc56f87 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -45,13 +45,13 @@ let all_passes = [ LetIntro; TypeFamilyRemoval; Undep; - PatSimp; Totalize; Else; ElseSimp; Uncaseremoval; SubExpansion; Sub; + PatSimp; DefToRel; Sideconditions; AliasDemut; diff --git a/spectec/src/middlend/patSimp.ml b/spectec/src/middlend/patSimp.ml index 74aff0a904..cf9d0066a5 100644 --- a/spectec/src/middlend/patSimp.ml +++ b/spectec/src/middlend/patSimp.ml @@ -79,7 +79,7 @@ let t_exp varmap exp = varmap := StringMap.update id.it (fun opt -> match opt with | Some lst -> - fresh_var := Il.Fresh.fresh_varid id.it; + fresh_var := Utils.generate_var (List.map fst (StringMap.bindings !varmap) @ lst) id.it; Some (!fresh_var :: lst) | None -> Some [] ) !varmap; From 2302a9109fd46fa29fec65ef38ac3b07347462ea Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 12 May 2026 10:45:05 +0100 Subject: [PATCH 058/115] Improved rendering for tuple projections --- spectec/src/backend-rocq/print.ml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index 1e4211e18c..505878b520 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -294,8 +294,8 @@ and render_exp exp_type exp = let rec make_proj_chain idx len e = match idx, len with | 0, 0 -> r_func e - | i, n when i <= n -> parens ("snd " ^ r_func e) - | _ -> parens ("fst " ^ (make_proj_chain idx (len - 1) e)) + | i', n when i' >= n -> r_func e ^ ".2" + | _ -> (make_proj_chain idx (len - 1) e) ^ ".1" in begin match typs with | [_] -> r_func e From 6f2ef13cee84db348b47258dbb934cb43c03375d Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 12 May 2026 10:50:52 +0100 Subject: [PATCH 059/115] Undep: Implemented three modes for wfness placement, all, none and minimal. --- spectec/src/middlend/undep.ml | 79 +++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 35 deletions(-) diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index e20cbd9e6b..f46a7e0074 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -68,8 +68,14 @@ let rule_prefix = "case_" let wf_hint_id = "wf-relation" -(* flag that deactivates adding wellformedness predicates to relations *) -let deactivate_wfness = false +[@@@warning "-37"] +type wfstate = + | ALL (* Places wf premises whenever it encounters a term/variable that needs well-formedness check*) + | MINIMAL (* Places only wf premises in terms in relations and functions that do not appear in the conclusion *) + | NONE (* Does not place any wf premises in relations/functions *) + +(* State that indicates what the placement algorithm should do *) +let wf_state = MINIMAL let error at msg = error at "Undep error" msg @@ -121,25 +127,26 @@ let filter_iter_quants exp iter_quants = ) (free_vars, []) iter_quants) |> snd |> List.rev -let rec create_collector iterexps = +let rec create_collector env iterexps = let base_collector_iters: ((exp * typ) * iterexp list) list collector = base_collector [] (@) in - { base_collector_iters with collect_exp = collect_userdef_exp iterexps; collect_prem = collect_userdef_prem iterexps } + { base_collector_iters with collect_exp = collect_userdef_exp env iterexps; collect_prem = collect_userdef_prem env iterexps } -and collect_userdef_exp iterexps e = +and collect_userdef_exp env iterexps e = match e.it with + | CallE (id, _) when not (StringSet.mem id.it env.proj_set) -> ([((e, e.note), filter_iter_quants e iterexps)], true) | CaseE _ | StrE _ -> ([((e, e.note), filter_iter_quants e iterexps)], false) | IterE (e1, ((_, id_exp_pairs) as iterexp)) -> - let c1 = create_collector iterexps in - let c2 = create_collector (iterexp :: iterexps) in + let c1 = create_collector env iterexps in + let c2 = create_collector env (iterexp :: iterexps) in (collect_exp c2 e1 @ List.concat_map (fun (_, exp) -> collect_exp c1 exp) id_exp_pairs, false) | _ -> ([], true) -and collect_userdef_prem iterexps p = +and collect_userdef_prem env iterexps p = match p.it with | IterPr (p', ((_, id_exp_pairs) as iterexp)) -> - let c1 = create_collector iterexps in - let c2 = create_collector (iterexp :: iterexps) in + let c1 = create_collector env iterexps in + let c2 = create_collector env (iterexp :: iterexps) in (collect_prem c2 p' @ List.concat_map (fun (_, exp) -> collect_exp c1 exp) id_exp_pairs, false) | _ -> ([], true) @@ -195,6 +202,7 @@ let needs_wfness env def = | _ -> false let rec get_wf_pred env (exp, t) = + let get_id iter exp = match exp.it with | VarE id -> id @@ -314,40 +322,41 @@ let create_well_formed_predicate env id inst = [relation; hint] | _ -> [] -let rec has_type_family env typ = - match typ.it with - | VarT (id, _) -> StringSet.mem id.it env.tf_set - | IterT (typ, _) -> has_type_family env typ - | TupT typs -> List.exists (fun (_, t) -> has_type_family env t) typs - | _ -> false - -let has_type_family_term env e = (has_type_family env e.note, true) +let get_wf_terms cl exp prems = + let is_calle e = match e.it with + | CallE _ -> true + | _ -> false + in + let wf_terms = (if wf_state = MINIMAL then [] else collect_exp cl exp) @ List.concat_map (collect_prem cl) prems in + let (call_prems, constr_prems) = List.partition (fun ((e1, _), _) -> is_calle e1) wf_terms in + let unique_func = Util.Lib.List.nub (fun ((e1, _t1), iterexp1) ((e2, _t2), iterexp2) -> + Il.Eq.eq_exp e1 e2 && Il.Eq.eq_list Il.Eq.eq_iterexp iterexp1 iterexp2 + ) in + match wf_state with + | NONE -> ([], []) + | _ -> (unique_func call_prems, unique_func constr_prems) let get_extra_prems env quants exp prems = - let cl = create_collector [] in - let wf_terms = collect_exp cl exp @ List.concat_map (collect_prem cl) prems in - let unique_terms = Util.Lib.List.nub (fun ((e1, _t1), iterexp1) ((e2, _t2), iterexp2) -> - Il.Eq.eq_exp e1 e2 && Il.Eq.eq_list Il.Eq.eq_iterexp iterexp1 iterexp2 - ) wf_terms in - let unique_terms = if deactivate_wfness then List.filter (fun ((e, t), _) -> - let ec = { exists_base_checker with collect_exp = has_type_family_term env } in - collect_exp ec e || has_type_family env t - ) unique_terms else unique_terms in - - let more_prems = List.concat_map (fun (pair, iterexps) -> + let cl = create_collector env [] in + let unique_call_terms, unique_constr_terms = get_wf_terms cl exp prems in + let wf_creation_func = List.concat_map (fun (pair, iterexps) -> List.map (fun prem' -> List.fold_left (fun acc iterexp -> IterPr (acc, iterexp) $ acc.at ) prem' iterexps) (get_wf_pred env pair) - ) unique_terms in + ) in + let call_prems, constr_prems = wf_creation_func unique_call_terms, wf_creation_func unique_constr_terms in - (* Leverage the fact that the wellformed predicates are "bubbled up" and remove unnecessary wf preds*) - let free_vars = (Free.free_list Free.free_prem more_prems).varid in - let quants_filtered = Lib.List.filter_not (fun b -> match b.it with - | ExpP (id, typ) -> Free.Set.mem id.it free_vars || (deactivate_wfness && (not (has_type_family env typ))) + (* Leverage the fact that the wellformed predicates are "bubbled up" and remove unnecessary wf preds *) + let free_vars_exp = (Free.free_exp exp).varid in + let free_vars = (Free.free_list Free.free_prem constr_prems).varid in + let quants_filtered = Lib.List.filter_not (fun b -> + match b.it, wf_state with + | ExpP (id, _), ALL -> Free.Set.mem id.it free_vars + | ExpP (id, _), MINIMAL -> Free.Set.mem id.it free_vars || Free.Set.mem id.it free_vars_exp | _ -> true ) quants in let quant_prems = (List.filter_map get_exp_typ quants_filtered) |> List.concat_map (get_wf_pred env) in - quant_prems @ more_prems + quant_prems @ call_prems @ constr_prems let t_rule env rule = let tf = { base_transformer with transform_exp = t_exp env; transform_typ = t_typ} in From c46c42b0fa6d08f485a24fe028c031f547f12cea Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 12 May 2026 10:51:54 +0100 Subject: [PATCH 060/115] Type family removal: Fixed a bug that made types of function calls not have the correct substitution. --- spectec/src/middlend/typefamilyremoval.ml | 55 +++++++++++------------ 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/spectec/src/middlend/typefamilyremoval.ml b/spectec/src/middlend/typefamilyremoval.ml index acd73ffac6..38989c0e03 100644 --- a/spectec/src/middlend/typefamilyremoval.ml +++ b/spectec/src/middlend/typefamilyremoval.ml @@ -179,13 +179,13 @@ let has_one_inst env family_typ = ) | _ -> false -let make_quant_set quants = - List.fold_left (fun acc q -> +let make_quant_set env quants = + List.fold_left (fun (env, bind_map) q -> match q.it with - | ExpP (id, typ) -> StringMap.add id.it typ acc - | DefP (id, _, typ) -> StringMap.add id.it typ acc - | _ -> acc - ) StringMap.empty quants + | ExpP (id, typ) -> (env, StringMap.add id.it typ bind_map) + | DefP (id, params, typ) -> (Env.bind_def env id (params, typ, []), bind_map) + | _ -> (env, bind_map) + ) (env, StringMap.empty) quants let rec check_type_equality env t t' = let r_t = reduce_type_aliasing env t in @@ -214,10 +214,7 @@ let rec get_real_typ_from_exp quant_map env e = let s_typ = Subst.subst_typ subst typ in s_typ | None -> - (match StringMap.find_opt id.it quant_map with - | Some typ -> typ - | None -> e.note - ) + e.note ) | CaseE (m, _) -> let r_typ = Eval.reduce_typ env e.note in @@ -515,12 +512,12 @@ let rec transform_prem quant_map env prem = let transform_rule env rule = match rule.it with | RuleD (id, quants, m, exp, prems) -> - let quant_map = make_quant_set quants in + let env', quant_map = make_quant_set env quants in RuleD (id, - List.map (transform_param env) quants, + List.map (transform_param env') quants, m, - transform_exp quant_map env exp, - List.map (transform_prem quant_map env) prems) $ rule.at + transform_exp quant_map env' exp, + List.map (transform_prem quant_map env') prems) $ rule.at (* Reducing quants as conversion functions actively change the type of variables when matching *) let reduce_quant env q = @@ -533,24 +530,24 @@ let transform_clause _id params env rt clause = | DefD (quants, args, exp, prems) -> let subst = create_arg_param_subst args params in let reduced_quants = List.map (reduce_quant env) quants in - let quant_map = make_quant_set reduced_quants in - let t_exp = transform_exp quant_map env exp in - let real_typ = get_real_typ_from_exp quant_map env t_exp in + let env', quant_map = make_quant_set env reduced_quants in + let t_exp = transform_exp quant_map env' exp in + let real_typ = get_real_typ_from_exp quant_map env' t_exp in let s_rt = Subst.subst_typ subst rt in - let new_exp = if check_type_equality env real_typ s_rt then t_exp else apply_conversion env t_exp real_typ s_rt in - DefD ((List.map (transform_param env) reduced_quants), - List.map (transform_arg quant_map env) args, + let new_exp = if check_type_equality env' real_typ s_rt then t_exp else apply_conversion env' t_exp real_typ s_rt in + DefD ((List.map (transform_param env') reduced_quants), + List.map (transform_arg quant_map env') args, new_exp, - List.map (transform_prem quant_map env) prems) $ clause.at + List.map (transform_prem quant_map env') prems) $ clause.at let transform_prod env prod = (match prod.it with | ProdD (quants, sym, exp, prems) -> - let quant_map = make_quant_set quants in + let env', quant_map = make_quant_set env quants in ProdD (List.map (transform_param env) quants, - transform_sym quant_map env sym, - transform_exp quant_map env exp, - List.map (transform_prem quant_map env) prems + transform_sym quant_map env' sym, + transform_exp quant_map env' exp, + List.map (transform_prem quant_map env') prems ) ) $ prod.at @@ -558,11 +555,11 @@ let transform_deftyp env deftyp = (match deftyp.it with | AliasT typ -> AliasT (transform_typ StringMap.empty env typ) | StructT typfields -> StructT (List.map (fun (a, (t, qs, prems), hints) -> - let quant_map = make_quant_set qs in - (a, (transform_typ quant_map env t, List.map (transform_param env) qs, List.map (transform_prem quant_map env) prems), hints)) typfields) + let env', quant_map = make_quant_set env qs in + (a, (transform_typ quant_map env' t, List.map (transform_param env') qs, List.map (transform_prem quant_map env') prems), hints)) typfields) | VariantT typcases -> VariantT (List.map (fun (m, (t, qs, prems), hints) -> - let quant_map = make_quant_set qs in - (m, (transform_typ quant_map env t, List.map (transform_param env) qs, List.map (transform_prem quant_map env) prems), hints)) typcases) + let env', quant_map = make_quant_set env qs in + (m, (transform_typ quant_map env t, List.map (transform_param env') qs, List.map (transform_prem quant_map env') prems), hints)) typcases) ) $ deftyp.at let transform_inst env inst = From 14d0cc5cdee0f9672dbf08ca8a19b0931dfda2e5 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 12 May 2026 10:52:39 +0100 Subject: [PATCH 061/115] Sideconditions: Only preserve the iteration of the generated premises if it is ListN. --- spectec/src/middlend/sideconditions.ml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spectec/src/middlend/sideconditions.ml b/spectec/src/middlend/sideconditions.ml index 754d851bb3..1efd65dcab 100644 --- a/spectec/src/middlend/sideconditions.ml +++ b/spectec/src/middlend/sideconditions.ml @@ -33,6 +33,7 @@ let iterPr (pr, (iter, vars)) = let vars' = List.filter (fun (id, _) -> Set.mem id.it frees.varid ) vars in + if iter <= List1 && vars' = [] then pr.it else IterPr (pr, (iter, vars')) let is_null e = CmpE (`EqOp, `BoolT, e, OptE None $$ e.at % e.note) $$ e.at % (BoolT $ e.at) @@ -80,6 +81,7 @@ let rec t_exp env e = collect_iter collector1 iter @ List.map (fun pr -> iterPr (pr, iterexp) $ e.at) (collect_exp collector2 e1), false) | _ -> ([], true) + and t_prem env prem = let res, continue = (match prem.it with | IterPr (prem', ((iter, _) as iterexp)) From 7207e77b676bb6e2a6b080b0c034291f6798dbf1 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 12 May 2026 10:50:52 +0100 Subject: [PATCH 062/115] Undep: Implemented three modes for wfness placement, all, none and minimal. --- spectec/src/middlend/undep.ml | 79 +++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 35 deletions(-) diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index c55aead170..f46a7e0074 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -68,8 +68,14 @@ let rule_prefix = "case_" let wf_hint_id = "wf-relation" -(* flag that deactivates adding wellformedness predicates to relations *) -let deactivate_wfness = true +[@@@warning "-37"] +type wfstate = + | ALL (* Places wf premises whenever it encounters a term/variable that needs well-formedness check*) + | MINIMAL (* Places only wf premises in terms in relations and functions that do not appear in the conclusion *) + | NONE (* Does not place any wf premises in relations/functions *) + +(* State that indicates what the placement algorithm should do *) +let wf_state = MINIMAL let error at msg = error at "Undep error" msg @@ -121,25 +127,26 @@ let filter_iter_quants exp iter_quants = ) (free_vars, []) iter_quants) |> snd |> List.rev -let rec create_collector iterexps = +let rec create_collector env iterexps = let base_collector_iters: ((exp * typ) * iterexp list) list collector = base_collector [] (@) in - { base_collector_iters with collect_exp = collect_userdef_exp iterexps; collect_prem = collect_userdef_prem iterexps } + { base_collector_iters with collect_exp = collect_userdef_exp env iterexps; collect_prem = collect_userdef_prem env iterexps } -and collect_userdef_exp iterexps e = +and collect_userdef_exp env iterexps e = match e.it with + | CallE (id, _) when not (StringSet.mem id.it env.proj_set) -> ([((e, e.note), filter_iter_quants e iterexps)], true) | CaseE _ | StrE _ -> ([((e, e.note), filter_iter_quants e iterexps)], false) | IterE (e1, ((_, id_exp_pairs) as iterexp)) -> - let c1 = create_collector iterexps in - let c2 = create_collector (iterexp :: iterexps) in + let c1 = create_collector env iterexps in + let c2 = create_collector env (iterexp :: iterexps) in (collect_exp c2 e1 @ List.concat_map (fun (_, exp) -> collect_exp c1 exp) id_exp_pairs, false) | _ -> ([], true) -and collect_userdef_prem iterexps p = +and collect_userdef_prem env iterexps p = match p.it with | IterPr (p', ((_, id_exp_pairs) as iterexp)) -> - let c1 = create_collector iterexps in - let c2 = create_collector (iterexp :: iterexps) in + let c1 = create_collector env iterexps in + let c2 = create_collector env (iterexp :: iterexps) in (collect_prem c2 p' @ List.concat_map (fun (_, exp) -> collect_exp c1 exp) id_exp_pairs, false) | _ -> ([], true) @@ -195,6 +202,7 @@ let needs_wfness env def = | _ -> false let rec get_wf_pred env (exp, t) = + let get_id iter exp = match exp.it with | VarE id -> id @@ -314,40 +322,41 @@ let create_well_formed_predicate env id inst = [relation; hint] | _ -> [] -let rec has_type_family env typ = - match typ.it with - | VarT (id, _) -> StringSet.mem id.it env.tf_set - | IterT (typ, _) -> has_type_family env typ - | TupT typs -> List.exists (fun (_, t) -> has_type_family env t) typs - | _ -> false - -let has_type_family_term env e = (has_type_family env e.note, true) +let get_wf_terms cl exp prems = + let is_calle e = match e.it with + | CallE _ -> true + | _ -> false + in + let wf_terms = (if wf_state = MINIMAL then [] else collect_exp cl exp) @ List.concat_map (collect_prem cl) prems in + let (call_prems, constr_prems) = List.partition (fun ((e1, _), _) -> is_calle e1) wf_terms in + let unique_func = Util.Lib.List.nub (fun ((e1, _t1), iterexp1) ((e2, _t2), iterexp2) -> + Il.Eq.eq_exp e1 e2 && Il.Eq.eq_list Il.Eq.eq_iterexp iterexp1 iterexp2 + ) in + match wf_state with + | NONE -> ([], []) + | _ -> (unique_func call_prems, unique_func constr_prems) let get_extra_prems env quants exp prems = - let cl = create_collector [] in - let wf_terms = collect_exp cl exp @ List.concat_map (collect_prem cl) prems in - let unique_terms = Util.Lib.List.nub (fun ((e1, _t1), iterexp1) ((e2, _t2), iterexp2) -> - Il.Eq.eq_exp e1 e2 && Il.Eq.eq_list Il.Eq.eq_iterexp iterexp1 iterexp2 - ) wf_terms in - let unique_terms = if deactivate_wfness then List.filter (fun ((e, t), _) -> - let ec = { exists_base_checker with collect_exp = has_type_family_term env } in - collect_exp ec e || has_type_family env t - ) unique_terms else unique_terms in - - let more_prems = List.concat_map (fun (pair, iterexps) -> + let cl = create_collector env [] in + let unique_call_terms, unique_constr_terms = get_wf_terms cl exp prems in + let wf_creation_func = List.concat_map (fun (pair, iterexps) -> List.map (fun prem' -> List.fold_left (fun acc iterexp -> IterPr (acc, iterexp) $ acc.at ) prem' iterexps) (get_wf_pred env pair) - ) unique_terms in + ) in + let call_prems, constr_prems = wf_creation_func unique_call_terms, wf_creation_func unique_constr_terms in - (* Leverage the fact that the wellformed predicates are "bubbled up" and remove unnecessary wf preds*) - let free_vars = (Free.free_list Free.free_prem more_prems).varid in - let quants_filtered = Lib.List.filter_not (fun b -> match b.it with - | ExpP (id, typ) -> Free.Set.mem id.it free_vars || (deactivate_wfness && (not (has_type_family env typ))) + (* Leverage the fact that the wellformed predicates are "bubbled up" and remove unnecessary wf preds *) + let free_vars_exp = (Free.free_exp exp).varid in + let free_vars = (Free.free_list Free.free_prem constr_prems).varid in + let quants_filtered = Lib.List.filter_not (fun b -> + match b.it, wf_state with + | ExpP (id, _), ALL -> Free.Set.mem id.it free_vars + | ExpP (id, _), MINIMAL -> Free.Set.mem id.it free_vars || Free.Set.mem id.it free_vars_exp | _ -> true ) quants in let quant_prems = (List.filter_map get_exp_typ quants_filtered) |> List.concat_map (get_wf_pred env) in - quant_prems @ more_prems + quant_prems @ call_prems @ constr_prems let t_rule env rule = let tf = { base_transformer with transform_exp = t_exp env; transform_typ = t_typ} in From 264470a87a82b88966817a55265123e66e7af0a3 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 12 May 2026 10:51:54 +0100 Subject: [PATCH 063/115] Type family removal: Fixed a bug that made types of function calls not have the correct substitution. --- spectec/src/middlend/typefamilyremoval.ml | 55 +++++++++++------------ 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/spectec/src/middlend/typefamilyremoval.ml b/spectec/src/middlend/typefamilyremoval.ml index acd73ffac6..38989c0e03 100644 --- a/spectec/src/middlend/typefamilyremoval.ml +++ b/spectec/src/middlend/typefamilyremoval.ml @@ -179,13 +179,13 @@ let has_one_inst env family_typ = ) | _ -> false -let make_quant_set quants = - List.fold_left (fun acc q -> +let make_quant_set env quants = + List.fold_left (fun (env, bind_map) q -> match q.it with - | ExpP (id, typ) -> StringMap.add id.it typ acc - | DefP (id, _, typ) -> StringMap.add id.it typ acc - | _ -> acc - ) StringMap.empty quants + | ExpP (id, typ) -> (env, StringMap.add id.it typ bind_map) + | DefP (id, params, typ) -> (Env.bind_def env id (params, typ, []), bind_map) + | _ -> (env, bind_map) + ) (env, StringMap.empty) quants let rec check_type_equality env t t' = let r_t = reduce_type_aliasing env t in @@ -214,10 +214,7 @@ let rec get_real_typ_from_exp quant_map env e = let s_typ = Subst.subst_typ subst typ in s_typ | None -> - (match StringMap.find_opt id.it quant_map with - | Some typ -> typ - | None -> e.note - ) + e.note ) | CaseE (m, _) -> let r_typ = Eval.reduce_typ env e.note in @@ -515,12 +512,12 @@ let rec transform_prem quant_map env prem = let transform_rule env rule = match rule.it with | RuleD (id, quants, m, exp, prems) -> - let quant_map = make_quant_set quants in + let env', quant_map = make_quant_set env quants in RuleD (id, - List.map (transform_param env) quants, + List.map (transform_param env') quants, m, - transform_exp quant_map env exp, - List.map (transform_prem quant_map env) prems) $ rule.at + transform_exp quant_map env' exp, + List.map (transform_prem quant_map env') prems) $ rule.at (* Reducing quants as conversion functions actively change the type of variables when matching *) let reduce_quant env q = @@ -533,24 +530,24 @@ let transform_clause _id params env rt clause = | DefD (quants, args, exp, prems) -> let subst = create_arg_param_subst args params in let reduced_quants = List.map (reduce_quant env) quants in - let quant_map = make_quant_set reduced_quants in - let t_exp = transform_exp quant_map env exp in - let real_typ = get_real_typ_from_exp quant_map env t_exp in + let env', quant_map = make_quant_set env reduced_quants in + let t_exp = transform_exp quant_map env' exp in + let real_typ = get_real_typ_from_exp quant_map env' t_exp in let s_rt = Subst.subst_typ subst rt in - let new_exp = if check_type_equality env real_typ s_rt then t_exp else apply_conversion env t_exp real_typ s_rt in - DefD ((List.map (transform_param env) reduced_quants), - List.map (transform_arg quant_map env) args, + let new_exp = if check_type_equality env' real_typ s_rt then t_exp else apply_conversion env' t_exp real_typ s_rt in + DefD ((List.map (transform_param env') reduced_quants), + List.map (transform_arg quant_map env') args, new_exp, - List.map (transform_prem quant_map env) prems) $ clause.at + List.map (transform_prem quant_map env') prems) $ clause.at let transform_prod env prod = (match prod.it with | ProdD (quants, sym, exp, prems) -> - let quant_map = make_quant_set quants in + let env', quant_map = make_quant_set env quants in ProdD (List.map (transform_param env) quants, - transform_sym quant_map env sym, - transform_exp quant_map env exp, - List.map (transform_prem quant_map env) prems + transform_sym quant_map env' sym, + transform_exp quant_map env' exp, + List.map (transform_prem quant_map env') prems ) ) $ prod.at @@ -558,11 +555,11 @@ let transform_deftyp env deftyp = (match deftyp.it with | AliasT typ -> AliasT (transform_typ StringMap.empty env typ) | StructT typfields -> StructT (List.map (fun (a, (t, qs, prems), hints) -> - let quant_map = make_quant_set qs in - (a, (transform_typ quant_map env t, List.map (transform_param env) qs, List.map (transform_prem quant_map env) prems), hints)) typfields) + let env', quant_map = make_quant_set env qs in + (a, (transform_typ quant_map env' t, List.map (transform_param env') qs, List.map (transform_prem quant_map env') prems), hints)) typfields) | VariantT typcases -> VariantT (List.map (fun (m, (t, qs, prems), hints) -> - let quant_map = make_quant_set qs in - (m, (transform_typ quant_map env t, List.map (transform_param env) qs, List.map (transform_prem quant_map env) prems), hints)) typcases) + let env', quant_map = make_quant_set env qs in + (m, (transform_typ quant_map env t, List.map (transform_param env') qs, List.map (transform_prem quant_map env') prems), hints)) typcases) ) $ deftyp.at let transform_inst env inst = From ee15f548f4d924446d14b592e81f026373ddc51e Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 12 May 2026 10:52:39 +0100 Subject: [PATCH 064/115] Sideconditions: Only preserve the iteration of the generated premises if it is ListN. --- spectec/src/middlend/sideconditions.ml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spectec/src/middlend/sideconditions.ml b/spectec/src/middlend/sideconditions.ml index 754d851bb3..1efd65dcab 100644 --- a/spectec/src/middlend/sideconditions.ml +++ b/spectec/src/middlend/sideconditions.ml @@ -33,6 +33,7 @@ let iterPr (pr, (iter, vars)) = let vars' = List.filter (fun (id, _) -> Set.mem id.it frees.varid ) vars in + if iter <= List1 && vars' = [] then pr.it else IterPr (pr, (iter, vars')) let is_null e = CmpE (`EqOp, `BoolT, e, OptE None $$ e.at % e.note) $$ e.at % (BoolT $ e.at) @@ -80,6 +81,7 @@ let rec t_exp env e = collect_iter collector1 iter @ List.map (fun pr -> iterPr (pr, iterexp) $ e.at) (collect_exp collector2 e1), false) | _ -> ([], true) + and t_prem env prem = let res, continue = (match prem.it with | IterPr (prem', ((iter, _) as iterexp)) From 5e30c1d55ae2ea0cf0c43a3693e09d48512cd0df Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 4 Nov 2025 19:07:57 +0000 Subject: [PATCH 065/115] Ported deftorel pass --- spectec/src/exe-spectec/main.ml | 5 + spectec/src/il/iter.ml | 3 + spectec/src/middlend/deftorel.ml | 617 ++++++++++++++++++++++++++++++ spectec/src/middlend/deftorel.mli | 1 + spectec/src/middlend/dune | 1 + 5 files changed, 627 insertions(+) create mode 100644 spectec/src/middlend/deftorel.ml create mode 100644 spectec/src/middlend/deftorel.mli diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index c8b9b79f2e..41500e9b1b 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -27,6 +27,7 @@ type pass = | AliasDemut | ImproveIds | Ite + | DefToRel (* This list declares the intended order of passes. @@ -43,6 +44,7 @@ let all_passes = [ Else; Uncaseremoval; Sideconditions; + DefToRel; SubExpansion; Sub; AliasDemut; @@ -112,6 +114,7 @@ let pass_flag = function | Uncaseremoval -> "uncase-removal" | ImproveIds -> "improve-ids" | Ite -> "ite" + | DefToRel -> "definition-to-relation" let pass_desc = function | Sub -> "Synthesize explicit subtype coercions" @@ -126,6 +129,7 @@ let pass_desc = function | AliasDemut -> "Lifts type aliases out of mutual groups" | ImproveIds -> "Disambiguates ids used from each other" | Ite -> "If-then-else introduction" + | DefToRel -> "Transform specific function definitions into relations" let run_pass : pass -> Il.Ast.script -> Il.Ast.script = function @@ -141,6 +145,7 @@ let run_pass : pass -> Il.Ast.script -> Il.Ast.script = function | AliasDemut -> Middlend.AliasDemut.transform | ImproveIds -> Middlend.Improveids.transform | Ite -> Middlend.Ite.transform + | DefToRel -> Middlend.Deftorel.transform (* Argument parsing *) diff --git a/spectec/src/il/iter.ml b/spectec/src/il/iter.ml index e20f4eff19..783bdc849c 100644 --- a/spectec/src/il/iter.ml +++ b/spectec/src/il/iter.ml @@ -19,6 +19,7 @@ sig val visit_typ : typ -> unit val visit_deftyp : deftyp -> unit val visit_exp : exp -> unit + val visit_arg : arg -> unit val visit_path : path -> unit val visit_sym : sym -> unit val visit_prem : prem -> unit @@ -46,6 +47,7 @@ struct let visit_typ _ = () let visit_deftyp _ = () let visit_exp _ = () + let visit_arg _ = () let visit_path _ = () let visit_sym _ = () let visit_prem _ = () @@ -219,6 +221,7 @@ and prems prs = list prem prs (* Definitions *) and arg a = + visit_arg a; match a.it with | ExpA e -> exp e | TypA t -> typ t diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml new file mode 100644 index 0000000000..d7dc3a0826 --- /dev/null +++ b/spectec/src/middlend/deftorel.ml @@ -0,0 +1,617 @@ +open Il.Ast +open Il +open Util.Source + +module StringSet = Set.Make(String) + +module ExpMap = Map.Make(struct + type t = exp + let compare exp1 exp2 = if Eq.eq_exp exp1 exp2 then 0 + (* HACK - Need better way to compare exps, only hurts performance *) + else String.compare (Print.string_of_exp exp1) (Print.string_of_exp exp2) +end) + +type env = { + mutable env : Il.Env.t; + mutable rel_set : StringSet.t; + mutable def_arg_set : StringSet.t +} + +let empty_env = { + env = Il.Env.empty; + rel_set = StringSet.empty; + def_arg_set = StringSet.empty +} + +let fun_prefix = "fun_" + +let apply_iter_to_var id iter = + match iter with + | Opt -> id ^ Il.Print.string_of_iter Opt + | _ -> id ^ Il.Print.string_of_iter List + + +let get_exp_arg a = + match a.it with + | ExpA exp -> exp + | _ -> assert false + +let transform_typ_iter i = + match i with + | ListN _ -> + (* Definite iterators not allowed in types *) + List + | _ -> i + +let filter_iter_quants args iter_quants = + let free_vars = (Free.free_list Free.free_arg args).varid in + (List.fold_left (fun (free_set, acc) (iter, id_exp_pairs) -> + let new_id_exp_pairs = List.filter (fun (id, _) -> + Free.Set.mem id.it free_set + ) id_exp_pairs in + if new_id_exp_pairs = [] then (free_set, acc) else + let iter_vars = List.fold_left (fun acc (_, e) -> + Free.Set.union acc (Free.free_exp e).varid + ) Free.Set.empty new_id_exp_pairs in + let new_set = Free.Set.union iter_vars free_set in + (new_set, (iter, new_id_exp_pairs) :: acc) + ) (free_vars, []) iter_quants) + |> snd |> List.rev + +let rec collect_fcalls_exp iter_quants env e = + match e.it with + | CallE (id, args) when StringSet.mem id.it env.rel_set -> + let new_iter_quants = filter_iter_quants args iter_quants in + ((fun_prefix ^ id.it $ id.at, args, e.note), new_iter_quants, List.length new_iter_quants) :: + List.concat_map (collect_fcalls_arg iter_quants env) args + | CallE (_, args) -> List.concat_map (collect_fcalls_arg iter_quants env) args + | StrE fields -> List.concat_map (fun (_a, e1) -> collect_fcalls_exp iter_quants env e1) fields + | UnE (_, _, e1) | CvtE (e1, _, _) | LiftE e1 | TheE e1 | OptE (Some e1) + | ProjE (e1, _) | UncaseE (e1, _) + | CaseE (_, e1) | LenE e1 | DotE (e1, _) + | SubE (e1, _, _) -> collect_fcalls_exp iter_quants env e1 + | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) + | CompE (e1, e2) | MemE (e1, e2) + | CatE (e1, e2) | IdxE (e1, e2) -> collect_fcalls_exp iter_quants env e1 @ collect_fcalls_exp iter_quants env e2 + | TupE exps | ListE exps -> List.concat_map (collect_fcalls_exp iter_quants env) exps + | SliceE (e1, e2, e3) -> collect_fcalls_exp iter_quants env e1 @ collect_fcalls_exp iter_quants env e2 @ collect_fcalls_exp iter_quants env e3 + | UpdE (e1, p, e2) + | ExtE (e1, p, e2) -> collect_fcalls_exp iter_quants env e1 @ collect_fcalls_path iter_quants env p @ collect_fcalls_exp iter_quants env e2 + | IterE (e1,( (iter, id_exp_pairs) as iterexp)) -> + collect_fcalls_exp (iterexp :: iter_quants) env e1 @ collect_fcalls_iter (iterexp :: iter_quants) env iter @ + List.concat_map (fun (_, exp) -> collect_fcalls_exp iter_quants env exp) id_exp_pairs + | _ -> [] + +and collect_fcalls_iter iter_quants env i = + match i with + | ListN (e1, _) -> collect_fcalls_exp iter_quants env e1 + | _ -> [] + +and collect_fcalls_arg iter_quants env a = + match a.it with + | ExpA exp -> collect_fcalls_exp iter_quants env exp + | _ -> (* TODO - possibly need to go through all types of args *) + [] + +and collect_fcalls_prem iter_quants env p = + match p.it with + | IfPr e | RulePr (_, _, _, e) -> collect_fcalls_exp iter_quants env e + | LetPr (e1, e2, _) -> collect_fcalls_exp iter_quants env e1 @ collect_fcalls_exp iter_quants env e2 + | IterPr (p', iterexp) -> collect_fcalls_prem (iterexp :: iter_quants) env p' + | _ -> [] + +and collect_fcalls_path iter_quants env p = + match p.it with + | RootP -> [] + | IdxP (p, e) -> collect_fcalls_path iter_quants env p @ collect_fcalls_exp iter_quants env e + | SliceP (p, e1, e2) -> collect_fcalls_path iter_quants env p @ collect_fcalls_exp iter_quants env e1 @ collect_fcalls_exp iter_quants env e2 + | DotP (p, _) -> collect_fcalls_path iter_quants env p + +let create_fun_prem ids ((id, args, r_typ), iterexps, _) = + let fresh_var = Utils.generate_var ids "" in + let var_exp = VarE (fresh_var $ id.at) $$ id.at % r_typ in + let new_mixop = Xl.Mixop.(Seq (List.init (List.length args + 1) (fun _ -> Arg ()))) in + let exps = List.map get_exp_arg args in + let r_typ_tup = ("_" $ id.at, r_typ) in + let tupt = TupT (List.map (fun e -> "_" $ id.at, e.note) exps @ [r_typ_tup]) $ id.at in + let tupe = TupE (exps @ [var_exp]) $$ id.at % tupt in + let rule_prem = RulePr (id, [], new_mixop, tupe) $ id.at in + let new_var, typ, prem = List.fold_left (fun (var, typ, prem) (iter, id_exp_pairs) -> + let new_typ = IterT (typ, transform_typ_iter iter) $ id.at in + let new_var = apply_iter_to_var var iter in + let var_exp = VarE (new_var $ id.at) $$ id.at % new_typ in + let new_id_exp_pairs = (var $ id.at, var_exp) :: id_exp_pairs in + (new_var, new_typ, IterPr (prem, (iter, new_id_exp_pairs)) $ id.at) + ) (fresh_var, r_typ, rule_prem) iterexps in + fresh_var, ExpP (new_var $ id.at, typ) $ id.at, prem + +let create_call_map fcalls quants = + let fcalls' = Util.Lib.List.nub (fun ((id, args, _), iterexps, _) ((id', args', _), iterexps', _) -> + Eq.eq_id id id' && + Eq.eq_list Eq.eq_arg args args' && + Eq.eq_list Eq.eq_iterexp iterexps iterexps' + ) fcalls in + let ids = List.map Utils.get_param_id quants |> List.map it in + let ids', new_quants, new_prems = List.fold_left (fun acc fcall -> + let ids', quants', prems = acc in + let new_var, bind, prem = create_fun_prem (ids @ ids') fcall in + new_var :: ids', bind :: quants', prem :: prems + ) ([], [], []) fcalls' + in + let call_map = List.fold_left2 (fun map var_id ((fun_id, args, typ), _, iter_num) -> + let var_exp = VarE (var_id $ fun_id.at) $$ fun_id.at % typ in + let call_exp = CallE (fun_id, args) $$ fun_id.at % typ in + ExpMap.add call_exp (var_exp, iter_num) map + ) ExpMap.empty (List.rev ids') fcalls' + in + call_map, new_quants, new_prems + +let rec transform_iter call_map env i = + match i with + | ListN (exp, id_opt) -> ListN (fst (transform_exp call_map env exp), id_opt) + | _ -> i + +and transform_typ call_map env t = + let it, iter_ids = (match t.it with + | VarT (id, args) -> + let args', iter_ids_list = List.split (List.map (transform_arg call_map env) args) in + VarT (id, args'), List.concat iter_ids_list + | TupT exp_typ_pairs -> + let pairs, iter_ids_list = List.split (List.map (fun (id, t) -> + let t', iter_ids2 = transform_typ call_map env t in + (id, t'), iter_ids2) exp_typ_pairs) in + TupT pairs, List.concat iter_ids_list + | IterT (typ, iter) -> + let typ', iter_ids = transform_typ call_map env typ in + IterT (typ', transform_iter call_map env iter), iter_ids + | typ -> typ, [] + ) in + {t with it}, iter_ids + +and transform_typ_normal call_map env t = fst (transform_typ call_map env t) +and transform_exp call_map env e: (exp * (id * typ * int) list) = + let t_func = transform_exp call_map env in + let it, iter_ids = (match e.it with + | CaseE (m, e1) -> + let e1', iter_ids = t_func e1 in + CaseE (m, e1'), iter_ids + | StrE fields -> + let fields', iter_ids = List.split (List.map (fun (a, e1) -> + let e1', iter_ids = t_func e1 in + (a, e1'), iter_ids) fields) in + StrE fields', List.concat iter_ids + | UnE (unop, optyp, e1) -> + let e1', iter_ids = t_func e1 in + UnE (unop, optyp, e1'), iter_ids + | BinE (binop, optyp, e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + BinE (binop, optyp, e1', e2'), iter_ids @ iter_ids2 + | CmpE (cmpop, optyp, e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + CmpE (cmpop, optyp, e1', e2'), iter_ids @ iter_ids2 + | TupE (exps) -> + let exps', iters_ids = List.split (List.map t_func exps) in + TupE exps', List.concat iters_ids + | ProjE (e1, n) -> + let e1', iter_ids = t_func e1 in + ProjE (e1', n), iter_ids + | UncaseE (e1, m) -> + let e1', iter_ids = t_func e1 in + UncaseE (e1', m), iter_ids + | OptE (Some e1) -> + let e1', iter_ids = t_func e1 in + OptE (Some e1'), iter_ids + | TheE e1 -> + let e1', iter_ids = t_func e1 in + TheE e1', iter_ids + | DotE (e1, a) -> + let e1', iter_ids = t_func e1 in + DotE (e1', a), iter_ids + | CompE (e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + CompE (e1', e2'), iter_ids @ iter_ids2 + | ListE exps -> + let exps', iters_ids = List.split (List.map t_func exps) in + ListE exps', List.concat iters_ids + | LiftE e1 -> + let e1', iter_ids = t_func e1 in + LiftE e1', iter_ids + | MemE (e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + MemE (e1', e2'), iter_ids @ iter_ids2 + | LenE e1 -> + let e1', iter_ids = t_func e1 in + LenE e1', iter_ids + | CatE (e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + CatE (e1', e2'), iter_ids @ iter_ids2 + | IdxE (e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + IdxE (e1', e2'), iter_ids @ iter_ids2 + | SliceE (e1, e2, e3) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + let e3', iter_ids3 = t_func e3 in + SliceE (e1', e2', e3'), iter_ids @ iter_ids2 @ iter_ids3 + | UpdE (e1, p, e2) -> + let e1', iter_ids = t_func e1 in + let p', iter_ids2 = transform_path call_map env p in + let e2', iter_ids3 = t_func e2 in + UpdE (e1', p', e2'), iter_ids @ iter_ids2 @ iter_ids3 + | ExtE (e1, p, e2) -> + let e1', iter_ids = t_func e1 in + let p', iter_ids2 = transform_path call_map env p in + let e2', iter_ids3 = t_func e2 in + ExtE (e1', p', e2'), iter_ids @ iter_ids2 @ iter_ids3 + | CallE (id, args) -> + let e' = {e with it = CallE (fun_prefix ^ id.it $ id.at, args)} in + begin match (ExpMap.find_opt e' call_map) with + | Some (e', 0) -> e'.it, [] + | Some ({it = VarE id; note; _} as e', n) -> e'.it, [(id, note, n - 1)] + | _ -> + let args', iter_ids_list = List.split (List.map (transform_arg call_map env) args) in + CallE (id, args'), List.concat iter_ids_list + end + | IterE (e1, (iter, id_exp_pairs)) -> + let e1', iter_ids = t_func e1 in + let free_vars = (Free.free_exp e1').varid in + let new_id_exp_pairs = List.map (fun (id, typ, _) -> + let itert = IterT (typ, transform_typ_iter iter) $ typ.at in + (id, VarE (apply_iter_to_var id.it iter $ id.at) $$ id.at % itert) + ) iter_ids in + let new_iter_ids = List.filter_map (fun (id, typ, num) -> + if num = 0 then None else + let itert = IterT (typ, transform_typ_iter iter) $ typ.at in + Some (apply_iter_to_var id.it iter $ id.at, itert, num - 1) + ) iter_ids in + let id_exp_pairs_filtered, more_iter_ids = List.split (List.filter_map (fun (id, iter_e) -> + if not (Free.Set.mem id.it free_vars) then None else + let iter_e', iter_ids = t_func iter_e in + Some ((id, iter_e'), iter_ids) + ) id_exp_pairs) + in + IterE (e1', (transform_iter call_map env iter, new_id_exp_pairs @ id_exp_pairs_filtered)), + new_iter_ids @ List.concat more_iter_ids + | CvtE (e1, nt1, nt2) -> + let e1', iter_ids = t_func e1 in + CvtE (e1', nt1, nt2), iter_ids + | SubE (e1, t1, t2) -> + let e1', iter_ids = t_func e1 in + let t1', iter_ids2 = transform_typ call_map env t1 in + let t2', iter_ids3 = transform_typ call_map env t2 in + SubE (e1', t1', t2'), iter_ids @ iter_ids2 @ iter_ids3 + | exp -> exp, []) in + {e with it}, iter_ids + + +and transform_path call_map env path = + let it, iter_ids = (match path.it with + | RootP -> RootP, [] + | IdxP (p, e1) -> + let p', iter_ids = transform_path call_map env p in + let e1', iter_ids2 = transform_exp call_map env e1 in + IdxP (p', e1'), iter_ids @ iter_ids2 + | SliceP (p, e1, e2) -> + let p', iter_ids = transform_path call_map env p in + let e1', iter_ids2 = transform_exp call_map env e1 in + let e2', iter_ids3 = transform_exp call_map env e2 in + SliceP (p', e1', e2'), iter_ids @ iter_ids2 @ iter_ids3 + | DotP (p, a) -> + let p', iter_ids = transform_path call_map env p in + DotP (p', a), iter_ids + ) in + {path with it}, iter_ids +and transform_exp_normal call_map env e = fst (transform_exp call_map env e) +and transform_sym call_map env s = + let it, iter_ids = (match s.it with + | VarG (id, args) -> + let args', iter_ids_list = List.split (List.map (transform_arg call_map env) args) in + VarG (id, args'), List.concat iter_ids_list + | SeqG syms -> + let syms', iter_ids_list = List.split (List.map (transform_sym call_map env) syms) in + SeqG syms', List.concat iter_ids_list + | AltG syms -> + let syms', iter_ids_list = List.split (List.map (transform_sym call_map env) syms) in + AltG syms', List.concat iter_ids_list + | RangeG (syml, symu) -> + let syml', iter_ids = transform_sym call_map env syml in + let symu', iter_ids2 = transform_sym call_map env symu in + RangeG (syml', symu'), iter_ids @ iter_ids2 + | IterG (sym, (iter, id_exp_pairs)) -> + let sym', iter_ids = transform_sym call_map env sym in + IterG (sym', (transform_iter call_map env iter, + List.map (fun (id, exp) -> (id, fst (transform_exp call_map env exp))) id_exp_pairs) + ), iter_ids + | AttrG (e, sym) -> + let e', iter_ids = transform_exp call_map env e in + let sym', iter_ids2 = transform_sym call_map env sym in + AttrG (e', sym'), iter_ids @ iter_ids2 + | sym -> sym, [] + ) in + {s with it}, iter_ids + +and transform_arg call_map env a: arg * (id * typ * int) list = + let it, iter_ids = (match a.it with + | ExpA exp -> + let exp', iter_ids = transform_exp call_map env exp in + ExpA exp', iter_ids + | TypA typ -> + let typ', iter_ids = transform_typ call_map env typ in + TypA typ', iter_ids + | DefA id -> DefA id, [] + | GramA sym -> + let sym', iter_ids = transform_sym call_map env sym in + GramA sym', iter_ids + ) in + {a with it}, iter_ids + +and transform_param call_map env p = + (match p.it with + | ExpP (id, typ) -> ExpP (id, transform_typ_normal call_map env typ) + | TypP id -> TypP id + | DefP (id, params, typ) -> DefP (id, List.map (transform_param call_map env) params, transform_typ_normal call_map env typ) + | GramP (id, quants, typ) -> GramP (id, List.map (transform_param call_map env) quants, transform_typ_normal call_map env typ) + ) $ p.at + +let rec transform_prem call_map env prem = + let it, iter_ids = match prem.it with + | RulePr (id, qs, m, e) -> + let e', iter_ids = transform_exp call_map env e in + RulePr (id, qs, m, e'), iter_ids + | IfPr e -> + let e', iter_ids = transform_exp call_map env e in + IfPr e', iter_ids + | LetPr (e1, e2, ids) -> + (* TODO - properly handle this if it actually gets used *) + let e1', iter_ids = transform_exp call_map env e1 in + let e2', iter_ids2 = transform_exp call_map env e2 in + LetPr (e1', e2', ids), iter_ids @ iter_ids2 + | ElsePr -> ElsePr, [] + | IterPr (prem1, (iter, id_exp_pairs)) -> + let prem1', iter_ids = transform_prem call_map env prem1 in + let free_vars = (Free.free_prem prem1').varid in + let new_id_exp_pairs = List.map (fun (id, typ, _) -> + let itert = IterT (typ, transform_typ_iter iter) $ typ.at in + (id, VarE (apply_iter_to_var id.it iter $ id.at) $$ id.at % itert) + ) iter_ids in + let new_iter_ids = List.filter_map (fun (id, typ, num) -> + if num = 0 then None else + let itert = IterT (typ, transform_typ_iter iter) $ typ.at in + Some (apply_iter_to_var id.it iter $ id.at, itert, num - 1) + ) iter_ids in + let id_exp_pairs_filtered, more_iter_ids = List.split (List.filter_map (fun (id, iter_e) -> + if not (Free.Set.mem id.it free_vars) then None else + let iter_e' , iter_ids = transform_exp call_map env iter_e in + Some ((id, iter_e'), iter_ids) + ) id_exp_pairs) in + IterPr (prem1', (transform_iter call_map env iter, new_id_exp_pairs @ id_exp_pairs_filtered)), + new_iter_ids @ List.concat more_iter_ids + | NegPr p -> + let p', iter_ids = transform_prem call_map env p in + NegPr p', iter_ids + in + {prem with it}, iter_ids + +and transform_prem_normal call_map env prem = fst (transform_prem call_map env prem) + +let transform_rule env rule = + (match rule.it with + | RuleD (id, quants, m, exp, prems) -> + let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in + let call_map, new_quants, new_prems = create_call_map fcalls quants in + RuleD (id.it $ no_region, + List.map (transform_param call_map env) (quants @ new_quants), + m, + transform_exp_normal call_map env exp, + List.map (transform_prem_normal call_map env) (new_prems @ prems)) + ) $ rule.at + +let transform_clause env clause = + (match clause.it with + | DefD (quants, args, exp, prems) -> + let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in + let call_map, new_quants, new_prems = create_call_map fcalls quants in + DefD ( + List.map (transform_param call_map env) (quants @ new_quants), + args, + transform_exp_normal call_map env exp, + List.map (transform_prem_normal call_map env) (new_prems @ prems)) + ) $ clause.at + +let transform_prod env prod = + match prod.it with + | ProdD (quants, sym, exp, prems) -> + let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in + let call_map, new_quants, new_prems = create_call_map fcalls quants in + ProdD (List.map (transform_param call_map env) (quants @ new_quants), + sym, + transform_exp_normal call_map env exp, + List.map (transform_prem_normal call_map env) (new_prems @ prems)) $ prod.at + +let is_exp_param param = + match param.it with + | ExpP _ -> true + | _ -> false + +let rec has_sub_exp e = + match e.it with + | SubE _ -> true + | StrE fields -> List.exists (fun (_a, e1) -> has_sub_exp e1) fields + | UnE (_, _, e1) | CvtE (e1, _, _) | LiftE e1 | TheE e1 | OptE (Some e1) + | ProjE (e1, _) | UncaseE (e1, _) + | CaseE (_, e1) | LenE e1 | DotE (e1, _) -> has_sub_exp e1 + | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) + | CompE (e1, e2) | MemE (e1, e2) + | CatE (e1, e2) | IdxE (e1, e2) -> has_sub_exp e1 || has_sub_exp e2 + | TupE exps | ListE exps -> List.exists has_sub_exp exps + | SliceE (e1, e2, e3) -> has_sub_exp e1 || has_sub_exp e2 || has_sub_exp e3 + | UpdE (e1, p, e2) + | ExtE (e1, p, e2) -> has_sub_exp e1 || has_sub_exp_path p || has_sub_exp e2 + | CallE (_id, args) -> List.exists has_sub_exp_arg args + | IterE (e1, (_, id_exp_pairs)) -> has_sub_exp e1 || List.exists (fun (_, exp) -> has_sub_exp exp) id_exp_pairs + | _ -> false + +and has_sub_exp_arg a = + match a.it with + | ExpA e -> has_sub_exp e + | _ -> false + +and has_sub_exp_path p = + match p.it with + | RootP -> false + | IdxP (p, e) -> has_sub_exp_path p || has_sub_exp e + | SliceP (p, e1, e2) -> has_sub_exp_path p || has_sub_exp e1 || has_sub_exp e2 + | DotP (p, _) -> has_sub_exp_path p + +let rec utilizes_rel_def env e = + match e.it with + | CallE (id, args) -> StringSet.mem id.it env.rel_set || List.exists (utilizes_rel_def_arg env) args + | StrE fields -> List.exists (fun (_a, e1) -> utilizes_rel_def env e1) fields + | UnE (_, _, e1) | CvtE (e1, _, _) | LiftE e1 | TheE e1 | OptE (Some e1) + | ProjE (e1, _) | UncaseE (e1, _) + | CaseE (_, e1) | LenE e1 | DotE (e1, _) + | SubE (e1, _, _) -> utilizes_rel_def env e1 + | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) + | CompE (e1, e2) | MemE (e1, e2) + | CatE (e1, e2) | IdxE (e1, e2) -> utilizes_rel_def env e1 || utilizes_rel_def env e2 + | TupE exps | ListE exps -> List.exists (utilizes_rel_def env) exps + | SliceE (e1, e2, e3) -> utilizes_rel_def env e1 || utilizes_rel_def env e2 || utilizes_rel_def env e3 + | UpdE (e1, p, e2) + | ExtE (e1, p, e2) -> utilizes_rel_def env e1 || utilizes_rel_def_path env p || utilizes_rel_def env e2 + | IterE (e1, (_, id_exp_pairs)) -> utilizes_rel_def env e1 || List.exists (fun (_, exp) -> utilizes_rel_def env exp) id_exp_pairs + | _ -> false + +and utilizes_rel_def_arg env a = + match a.it with + | ExpA e -> utilizes_rel_def env e + | _ -> false + +and utilizes_rel_def_path env p = + match p.it with + | RootP -> false + | IdxP (p, e) -> utilizes_rel_def_path env p || utilizes_rel_def env e + | SliceP (p, e1, e2) -> utilizes_rel_def_path env p || utilizes_rel_def env e1 || utilizes_rel_def env e2 + | DotP (p, _) -> utilizes_rel_def_path env p + +let collect_list_length_vars () : StringSet.t ref * (module Iter.Arg) = + let module Arg = + struct + include Iter.Skip + let acc = ref StringSet.empty + let visit_exp exp = + match exp.it with + | IterE (_, (ListN ({it = VarE id; _}, _), [_])) -> + acc := StringSet.add id.it !acc + | _ -> () + end + in Arg.acc, (module Arg) + +let must_be_relation env id params clauses = + let listn_set, (module Arg : Iter.Arg) = collect_list_length_vars () in + assert (!listn_set = StringSet.empty); + let module Acc = Iter.Make(Arg) in + (* Current limitation of relations - can only have standard types. + No type parameters or higher order functions *) + List.for_all is_exp_param params && + (* Limitation - functions used as def ids cannot be relations *) + not (StringSet.mem id.it env.def_arg_set) && + List.exists (fun c -> match c.it with + | DefD (quants, args, exp, prems) -> + Acc.args args; + (* Can't have subtyping matching *) + List.exists has_sub_exp_arg args || + (* Premises might not be decidable *) + prems <> [] || + (* Functions that have function calls transformed to relations must also be relations *) + utilizes_rel_def env exp || + (* Checking if equality binding is active *) + fst (List.fold_left (fun (acc_bool, free_set) arg -> + let free_vars = Free.free_arg arg in + (acc_bool || Free.inter free_vars free_set <> Free.empty, Free.union free_vars free_set) + ) (false, Free.empty) args) || + (* There are more binded variables than utilized in the arguments *) + let bounded_vars = Free.free_list Free.bound_quant quants in + let free_vars = Free.free_list Free.free_arg args in + Free.diff bounded_vars free_vars <> Free.empty || + (* HACK - dealing with list of a specified length with relations instead of functions *) + !listn_set <> StringSet.empty + ) clauses + + +let cvt_def_to_rel env id params r_typ clauses = + let get_param_typ p = + match p.it with + | ExpP (_, t) -> t + | _ -> assert false + in + let types = List.map get_param_typ params @ [r_typ] in + let tupt = TupT (List.map (fun t -> "_" $ id.at, t) types) $ id.at in + let new_mixop = Xl.Mixop.(Seq (List.init (List.length params + 1) (fun _ -> Arg ()))) in + let rules = List.mapi (fun i clause -> + match clause.it with + | DefD (quants, args, exp, prems) -> + let exps = List.map get_exp_arg args in + let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in + let call_map, new_quants, new_prems = create_call_map fcalls quants in + let tupe = TupE (exps @ [transform_exp_normal call_map env exp]) $$ id.at % tupt in + RuleD (fun_prefix ^ id.it ^ "_case_" ^ Int.to_string i $ id.at, quants @ new_quants, new_mixop, tupe, List.map (transform_prem_normal call_map env) (new_prems @ prems)) $ id.at + ) clauses + in + RelD (fun_prefix ^ id.it $ id.at, [], new_mixop, tupt, rules) + +let rec transform_def (env : env) def = + let must_be_rel_def d = + match d.it with + | DecD (id, params, _, clauses) -> must_be_relation env id params clauses + | _ -> false + in + let has_exp_params d = + match d.it with + | DecD (_, params, _, _) -> List.for_all is_exp_param params + | _ -> false + in + (match def.it with + | RelD (id, qs, m, typ, rules) -> + RelD (id, qs, m, typ, List.map (transform_rule env) rules) + | DecD (id, params, typ, clauses) when must_be_relation env id params clauses -> + env.rel_set <- StringSet.add id.it env.rel_set; + cvt_def_to_rel env id params typ clauses + | DecD (id, params, typ, clauses) -> + DecD (id, params, typ, List.map (transform_clause env) clauses) + | RecD defs when List.exists must_be_rel_def defs && List.for_all has_exp_params defs -> + List.iter (fun d -> match d.it with + | DecD (id, _, _, _) -> env.rel_set <- StringSet.add id.it env.rel_set + | _ -> () + ) defs; + RecD (List.map (transform_def env) defs) + | RecD defs -> RecD (List.map (transform_def env) defs) + | GramD (id, params, typ, prods) -> GramD (id, params, typ, List.map (transform_prod env) prods) + | d -> d + ) $ def.at + +let collect_def_args (): StringSet.t ref * (module Iter.Arg) = + let module Arg = + struct + include Iter.Skip + let acc = ref StringSet.empty + let visit_arg arg = + match arg.it with + | DefA id -> acc := StringSet.add id.it !acc + | _ -> () + end + in Arg.acc, (module Arg) + +let transform (il : script): script = + let env = empty_env in + env.env <- Il.Env.env_of_script il; + let acc, (module Arg : Iter.Arg) = collect_def_args () in + let module Acc = Iter.Make(Arg) in + List.iter Acc.def il; + env.def_arg_set <- !acc; + List.map (transform_def env) il \ No newline at end of file diff --git a/spectec/src/middlend/deftorel.mli b/spectec/src/middlend/deftorel.mli new file mode 100644 index 0000000000..64d020ff9d --- /dev/null +++ b/spectec/src/middlend/deftorel.mli @@ -0,0 +1 @@ +val transform : Il.Ast.script -> Il.Ast.script \ No newline at end of file diff --git a/spectec/src/middlend/dune b/spectec/src/middlend/dune index c2bc064072..101426c60f 100644 --- a/spectec/src/middlend/dune +++ b/spectec/src/middlend/dune @@ -15,5 +15,6 @@ aliasDemut improveids ite + deftorel ) ) From d612cfc00097b7e311798288d147b78928e4b475 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 18 Nov 2025 16:49:00 +0000 Subject: [PATCH 066/115] Added fallthrough semantics to converted defs, which conveniently handles otherwise. --- spectec/src/middlend/deftorel.ml | 85 ++++++++++++++++++++++++++------ spectec/src/middlend/utils.ml | 7 +++ 2 files changed, 76 insertions(+), 16 deletions(-) diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index d7dc3a0826..c568226779 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -1,6 +1,7 @@ open Il.Ast open Il open Util.Source +open Util module StringSet = Set.Make(String) @@ -12,13 +13,13 @@ module ExpMap = Map.Make(struct end) type env = { - mutable env : Il.Env.t; + mutable il_env : Il.Env.t; mutable rel_set : StringSet.t; mutable def_arg_set : StringSet.t } let empty_env = { - env = Il.Env.empty; + il_env = Il.Env.empty; rel_set = StringSet.empty; def_arg_set = StringSet.empty } @@ -289,7 +290,6 @@ and transform_exp call_map env e: (exp * (id * typ * int) list) = | exp -> exp, []) in {e with it}, iter_ids - and transform_path call_map env path = let it, iter_ids = (match path.it with | RootP -> RootP, [] @@ -307,7 +307,9 @@ and transform_path call_map env path = DotP (p', a), iter_ids ) in {path with it}, iter_ids + and transform_exp_normal call_map env e = fst (transform_exp call_map env e) + and transform_sym call_map env s = let it, iter_ids = (match s.it with | VarG (id, args) -> @@ -499,6 +501,16 @@ and utilizes_rel_def_path env p = | SliceP (p, e1, e2) -> utilizes_rel_def_path env p || utilizes_rel_def env e1 || utilizes_rel_def env e2 | DotP (p, _) -> utilizes_rel_def_path env p +and utilizes_rel_def_prem env p = + match p.it with + | IfPr e -> utilizes_rel_def env e + | RulePr (_, _, _, e) -> utilizes_rel_def env e + | LetPr (e1, e2, _) -> utilizes_rel_def env e1 || utilizes_rel_def env e2 + | IterPr (p', (_, id_exp_pairs)) -> + utilizes_rel_def_prem env p' || + List.exists (fun (_, exp) -> utilizes_rel_def env exp) id_exp_pairs + | _ -> false + let collect_list_length_vars () : StringSet.t ref * (module Iter.Arg) = let module Arg = struct @@ -530,6 +542,7 @@ let must_be_relation env id params clauses = prems <> [] || (* Functions that have function calls transformed to relations must also be relations *) utilizes_rel_def env exp || + List.exists (utilizes_rel_def_prem env) prems || (* Checking if equality binding is active *) fst (List.fold_left (fun (acc_bool, free_set) arg -> let free_vars = Free.free_arg arg in @@ -543,6 +556,45 @@ let must_be_relation env id params clauses = !listn_set <> StringSet.empty ) clauses +let get_tuple_exp e = + match e.it with + | TupE exps -> exps + | _ -> [e] + +let generate_matching_rules env args tupt r = + match r.it with + | RuleD (id, binds, mixop, exp', prems) -> + let (args', _) = Lib.List.split_last (get_tuple_exp exp') in + let new_exp = TupE args' $$ exp'.at % tupt in + (try Eval.match_list Eval.match_exp env.il_env Subst.empty args' args with Eval.Irred -> None) |> + Option.map (fun _ -> {r with it = RuleD (id, binds, List.tl mixop, new_exp, prems)}) + +let tail_mixop mixop = + match mixop with + | Xl.Mixop.Seq xs -> Xl.Mixop.Seq (List.tl xs) + | _ -> mixop + +let fall_through_prems env id mixop typs rules = + let gen_rel_name rid = + id.it ^ "_before_" ^ rid.it $ id.at + in + let rec go prev_rules = function + | [] -> [ RelD (id, [], mixop, TupT typs $ id.at, List.rev prev_rules) $ id.at ] + | ({it = RuleD (rid, binds, m, exp, prems); _} as r) :: rs -> + let (args, _) = Lib.List.split_last (get_tuple_exp exp) in + let (typs', _) = Lib.List.split_last typs in + let tupt = TupT typs' $ id.at in + let rules' = + List.filter_map (generate_matching_rules env args tupt) prev_rules + in + let prems' = List.filter (fun p -> p.it <> ElsePr) prems in + if rules' = [] then go ({ r with it = RuleD (rid, binds, m, exp, prems') } :: prev_rules) rs else + let relation = RelD (gen_rel_name rid, [], tail_mixop mixop, tupt, rules') $ id.at in + let negrulepr = NegPr (RulePr (gen_rel_name rid, [], tail_mixop mixop, TupE args $$ exp.at % tupt) $ rid.at) $ rid.at in + let new_rule = { r with it = RuleD (rid, binds, m, exp, negrulepr :: prems') } in + relation :: go (new_rule :: prev_rules) rs + in + go [] rules let cvt_def_to_rel env id params r_typ clauses = let get_param_typ p = @@ -551,19 +603,20 @@ let cvt_def_to_rel env id params r_typ clauses = | _ -> assert false in let types = List.map get_param_typ params @ [r_typ] in - let tupt = TupT (List.map (fun t -> "_" $ id.at, t) types) $ id.at in - let new_mixop = Xl.Mixop.(Seq (List.init (List.length params + 1) (fun _ -> Arg ()))) in + let tup_types = (List.map (fun t -> "_" $ id.at, t) types) in + let new_mixop = Xl.Mixop.(Seq (List.init (List.length params + 1) (fun _ -> Arg ()))) in let rules = List.mapi (fun i clause -> match clause.it with | DefD (quants, args, exp, prems) -> let exps = List.map get_exp_arg args in let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in let call_map, new_quants, new_prems = create_call_map fcalls quants in - let tupe = TupE (exps @ [transform_exp_normal call_map env exp]) $$ id.at % tupt in + let tupe = TupE (exps @ [transform_exp_normal call_map env exp]) $$ id.at % (TupT tup_types $ id.at) in RuleD (fun_prefix ^ id.it ^ "_case_" ^ Int.to_string i $ id.at, quants @ new_quants, new_mixop, tupe, List.map (transform_prem_normal call_map env) (new_prems @ prems)) $ id.at ) clauses in - RelD (fun_prefix ^ id.it $ id.at, [], new_mixop, tupt, rules) + let new_id = { id with it = fun_prefix ^ id.it } in + fall_through_prems env new_id new_mixop tup_types rules let rec transform_def (env : env) def = let must_be_rel_def d = @@ -578,22 +631,22 @@ let rec transform_def (env : env) def = in (match def.it with | RelD (id, qs, m, typ, rules) -> - RelD (id, qs, m, typ, List.map (transform_rule env) rules) + [{ def with it =RelD (id, qs, m, typ, List.map (transform_rule env) rules) }] | DecD (id, params, typ, clauses) when must_be_relation env id params clauses -> env.rel_set <- StringSet.add id.it env.rel_set; cvt_def_to_rel env id params typ clauses | DecD (id, params, typ, clauses) -> - DecD (id, params, typ, List.map (transform_clause env) clauses) + [{ def with it = DecD (id, params, typ, List.map (transform_clause env) clauses) }] | RecD defs when List.exists must_be_rel_def defs && List.for_all has_exp_params defs -> List.iter (fun d -> match d.it with | DecD (id, _, _, _) -> env.rel_set <- StringSet.add id.it env.rel_set | _ -> () ) defs; - RecD (List.map (transform_def env) defs) - | RecD defs -> RecD (List.map (transform_def env) defs) - | GramD (id, params, typ, prods) -> GramD (id, params, typ, List.map (transform_prod env) prods) - | d -> d - ) $ def.at + [{ def with it = RecD (List.concat_map (transform_def env) defs) }] + | RecD defs -> [{ def with it = RecD (List.concat_map (transform_def env) defs) }] + | GramD (id, params, typ, prods) -> [{ def with it = GramD (id, params, typ, List.map (transform_prod env) prods) }] + | d -> [d $ def.at] + ) let collect_def_args (): StringSet.t ref * (module Iter.Arg) = let module Arg = @@ -609,9 +662,9 @@ let collect_def_args (): StringSet.t ref * (module Iter.Arg) = let transform (il : script): script = let env = empty_env in - env.env <- Il.Env.env_of_script il; + env.il_env <- Il.Env.env_of_script il; let acc, (module Arg : Iter.Arg) = collect_def_args () in let module Acc = Iter.Make(Arg) in List.iter Acc.def il; env.def_arg_set <- !acc; - List.map (transform_def env) il \ No newline at end of file + List.concat_map (transform_def env) il \ No newline at end of file diff --git a/spectec/src/middlend/utils.ml b/spectec/src/middlend/utils.ml index 2096591915..116c4420ee 100644 --- a/spectec/src/middlend/utils.ml +++ b/spectec/src/middlend/utils.ml @@ -31,6 +31,13 @@ and reduce_inst_alias env args inst base_typ = ) | _ -> base_typ +let is_part_of_bind (free_set : Free.sets) b = + match b.it with + | ExpB (id, _) -> Free.Set.mem id.it free_set.varid + | TypB id -> Free.Set.mem id.it free_set.typid + | DefB (id, _, _) -> Free.Set.mem id.it free_set.defid + | GramB (id, _, _) -> Free.Set.mem id.it free_set.gramid + let generate_var ids id = let start = 0 in let fresh_prefix = "var" in From c769c77524469b7ebc8480dd69eae14179bdb315 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 8 Dec 2025 16:14:44 +0000 Subject: [PATCH 067/115] Remove created relations out of recursive groups if they don't call the recursive functions themselves. --- spectec/src/middlend/deftorel.ml | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index c568226779..c212a2373d 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -561,18 +561,20 @@ let get_tuple_exp e = | TupE exps -> exps | _ -> [e] +let tail_mixop mixop = + match mixop with + | Xl.Mixop.Seq xs -> Xl.Mixop.Seq (List.tl xs) + | _ -> mixop + let generate_matching_rules env args tupt r = match r.it with | RuleD (id, binds, mixop, exp', prems) -> let (args', _) = Lib.List.split_last (get_tuple_exp exp') in let new_exp = TupE args' $$ exp'.at % tupt in (try Eval.match_list Eval.match_exp env.il_env Subst.empty args' args with Eval.Irred -> None) |> - Option.map (fun _ -> {r with it = RuleD (id, binds, List.tl mixop, new_exp, prems)}) - -let tail_mixop mixop = - match mixop with - | Xl.Mixop.Seq xs -> Xl.Mixop.Seq (List.tl xs) - | _ -> mixop + Option.map (fun _ -> + {r with it = RuleD (id, binds, tail_mixop mixop, new_exp, prems)} + ) let fall_through_prems env id mixop typs rules = let gen_rel_name rid = @@ -618,6 +620,13 @@ let cvt_def_to_rel env id params r_typ clauses = let new_id = { id with it = fun_prefix ^ id.it } in fall_through_prems env new_id new_mixop tup_types rules +let uses_def ids_set def = + match def.it with + | RelD (_, _, _, _, rules) -> + let free_defs = (Free.free_list (Free.free_rule) rules).relid in + Free.Set.inter free_defs ids_set <> Free.Set.empty + | _ -> false + let rec transform_def (env : env) def = let must_be_rel_def d = match d.it with @@ -638,11 +647,18 @@ let rec transform_def (env : env) def = | DecD (id, params, typ, clauses) -> [{ def with it = DecD (id, params, typ, List.map (transform_clause env) clauses) }] | RecD defs when List.exists must_be_rel_def defs && List.for_all has_exp_params defs -> + let ids_ref = ref StringSet.empty in List.iter (fun d -> match d.it with - | DecD (id, _, _, _) -> env.rel_set <- StringSet.add id.it env.rel_set + | DecD (id, _, _, _) -> + ids_ref := StringSet.add (fun_prefix ^ id.it) !ids_ref; + env.rel_set <- StringSet.add id.it env.rel_set | _ -> () ) defs; - [{ def with it = RecD (List.concat_map (transform_def env) defs) }] + let rec_defs, filtered_defs = defs |> + List.concat_map (transform_def env) |> + List.partition (uses_def !ids_ref) + in + filtered_defs @ [{ def with it = RecD rec_defs }] | RecD defs -> [{ def with it = RecD (List.concat_map (transform_def env) defs) }] | GramD (id, params, typ, prods) -> [{ def with it = GramD (id, params, typ, List.map (transform_prod env) prods) }] | d -> [d $ def.at] From 6f5792e01f1d62df68f4719e29ecb70cca78992d Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 8 Dec 2025 17:04:45 +0000 Subject: [PATCH 068/115] Added a filter to the prems from the generated fallthrough relations that removes ones that have reference to the return expression. --- spectec/src/middlend/deftorel.ml | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index c212a2373d..09ace140cf 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -566,6 +566,34 @@ let tail_mixop mixop = | Xl.Mixop.Seq xs -> Xl.Mixop.Seq (List.tl xs) | _ -> mixop +(* + This function filters out premises that were function calls before. It only filters them out if they are + not being used in the premises following it. It assumes that the premises are in order (at the very least, + that function calls return variables are not used beforehand) which is true by the construction above. + This avoids the problem with violating strictly positive condition for inductive relations when the recursive + function call appears in the return expression. This does not however prevent the violation of the condition + completely, as any recursive function call that appears as a pattern guard will violate this (as long as the + fallthrough semantics is enforced). +*) +let rec filter_return_prems prems = + let pred p ps = + match p.it with + | RulePr (id, _, _, {it = TupE exps; _}) when String.starts_with ~prefix:fun_prefix id.it -> + let last_exp = Lib.List.last_opt exps in + begin match last_exp with + | None -> true + | Some exp -> + let free_vars = (Free.free_exp exp).varid in + let free_vars_prems = (Free.free_list Free.free_prem ps).varid in + Free.Set.inter free_vars free_vars_prems <> Free.Set.empty + end + | _ -> true + in + match prems with + | [] -> [] + | p :: ps when pred p ps -> p :: filter_return_prems ps + | _ :: ps -> filter_return_prems ps + let generate_matching_rules env args tupt r = match r.it with | RuleD (id, binds, mixop, exp', prems) -> @@ -573,7 +601,7 @@ let generate_matching_rules env args tupt r = let new_exp = TupE args' $$ exp'.at % tupt in (try Eval.match_list Eval.match_exp env.il_env Subst.empty args' args with Eval.Irred -> None) |> Option.map (fun _ -> - {r with it = RuleD (id, binds, tail_mixop mixop, new_exp, prems)} + {r with it = RuleD (id, binds, tail_mixop mixop, new_exp, filter_return_prems prems)} ) let fall_through_prems env id mixop typs rules = From c5334ccff5625f563fed1d8a09ef179e34b1c17e Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 20 Jan 2026 14:51:39 +0000 Subject: [PATCH 069/115] Made fallthrough only when otherwise is present. Refactored a bit using new traversal method --- spectec/src/middlend/deftorel.ml | 141 ++++++++++--------------------- spectec/src/middlend/utils.ml | 10 +-- 2 files changed, 51 insertions(+), 100 deletions(-) diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index 09ace140cf..0c7a234b3d 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -1,5 +1,6 @@ open Il.Ast open Il +open Il.Walk open Util.Source open Util @@ -59,54 +60,28 @@ let filter_iter_quants args iter_quants = ) (free_vars, []) iter_quants) |> snd |> List.rev -let rec collect_fcalls_exp iter_quants env e = +let rec create_collector iterexps env = + let base_collector_iters = base_collector [] (@) in + { base_collector_iters with collect_exp = collect_fcalls_exp iterexps env; collect_prem = collect_fcalls_prem iterexps env } + +and collect_fcalls_exp iterexps env e = match e.it with | CallE (id, args) when StringSet.mem id.it env.rel_set -> - let new_iter_quants = filter_iter_quants args iter_quants in - ((fun_prefix ^ id.it $ id.at, args, e.note), new_iter_quants, List.length new_iter_quants) :: - List.concat_map (collect_fcalls_arg iter_quants env) args - | CallE (_, args) -> List.concat_map (collect_fcalls_arg iter_quants env) args - | StrE fields -> List.concat_map (fun (_a, e1) -> collect_fcalls_exp iter_quants env e1) fields - | UnE (_, _, e1) | CvtE (e1, _, _) | LiftE e1 | TheE e1 | OptE (Some e1) - | ProjE (e1, _) | UncaseE (e1, _) - | CaseE (_, e1) | LenE e1 | DotE (e1, _) - | SubE (e1, _, _) -> collect_fcalls_exp iter_quants env e1 - | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) - | CompE (e1, e2) | MemE (e1, e2) - | CatE (e1, e2) | IdxE (e1, e2) -> collect_fcalls_exp iter_quants env e1 @ collect_fcalls_exp iter_quants env e2 - | TupE exps | ListE exps -> List.concat_map (collect_fcalls_exp iter_quants env) exps - | SliceE (e1, e2, e3) -> collect_fcalls_exp iter_quants env e1 @ collect_fcalls_exp iter_quants env e2 @ collect_fcalls_exp iter_quants env e3 - | UpdE (e1, p, e2) - | ExtE (e1, p, e2) -> collect_fcalls_exp iter_quants env e1 @ collect_fcalls_path iter_quants env p @ collect_fcalls_exp iter_quants env e2 - | IterE (e1,( (iter, id_exp_pairs) as iterexp)) -> - collect_fcalls_exp (iterexp :: iter_quants) env e1 @ collect_fcalls_iter (iterexp :: iter_quants) env iter @ - List.concat_map (fun (_, exp) -> collect_fcalls_exp iter_quants env exp) id_exp_pairs - | _ -> [] - -and collect_fcalls_iter iter_quants env i = - match i with - | ListN (e1, _) -> collect_fcalls_exp iter_quants env e1 - | _ -> [] - -and collect_fcalls_arg iter_quants env a = - match a.it with - | ExpA exp -> collect_fcalls_exp iter_quants env exp - | _ -> (* TODO - possibly need to go through all types of args *) - [] - -and collect_fcalls_prem iter_quants env p = - match p.it with - | IfPr e | RulePr (_, _, _, e) -> collect_fcalls_exp iter_quants env e - | LetPr (e1, e2, _) -> collect_fcalls_exp iter_quants env e1 @ collect_fcalls_exp iter_quants env e2 - | IterPr (p', iterexp) -> collect_fcalls_prem (iterexp :: iter_quants) env p' - | _ -> [] - -and collect_fcalls_path iter_quants env p = + let new_iter_quants = filter_iter_quants args iterexps in + ([((fun_prefix ^ id.it $ id.at, args, e.note), new_iter_quants, List.length new_iter_quants)], true) + | IterE (e1, iterexp) -> + let c1 = create_collector iterexps env in + let c2 = create_collector (iterexp :: iterexps) env in + (collect_exp c2 e1 @ collect_iterexp c1 iterexp, false) + | _ -> ([], true) + +and collect_fcalls_prem iterexps env p = match p.it with - | RootP -> [] - | IdxP (p, e) -> collect_fcalls_path iter_quants env p @ collect_fcalls_exp iter_quants env e - | SliceP (p, e1, e2) -> collect_fcalls_path iter_quants env p @ collect_fcalls_exp iter_quants env e1 @ collect_fcalls_exp iter_quants env e2 - | DotP (p, _) -> collect_fcalls_path iter_quants env p + | IterPr (p', iterexp) -> + let c1 = create_collector iterexps env in + let c2 = create_collector (iterexp :: iterexps) env in + (collect_prem c2 p' @ collect_iterexp c1 iterexp, false) + | _ -> ([], true) let create_fun_prem ids ((id, args, r_typ), iterexps, _) = let fresh_var = Utils.generate_var ids "" in @@ -404,8 +379,9 @@ and transform_prem_normal call_map env prem = fst (transform_prem call_map env p let transform_rule env rule = (match rule.it with - | RuleD (id, quants, m, exp, prems) -> - let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in + | RuleD (id, quants, m, exp, prems) -> + let c = create_collector [] env in + let fcalls = collect_exp c exp @ List.concat_map (collect_prem c) prems in let call_map, new_quants, new_prems = create_call_map fcalls quants in RuleD (id.it $ no_region, List.map (transform_param call_map env) (quants @ new_quants), @@ -417,7 +393,8 @@ let transform_rule env rule = let transform_clause env clause = (match clause.it with | DefD (quants, args, exp, prems) -> - let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in + let c = create_collector [] env in + let fcalls = collect_exp c exp @ List.concat_map (collect_prem c) prems in let call_map, new_quants, new_prems = create_call_map fcalls quants in DefD ( List.map (transform_param call_map env) (quants @ new_quants), @@ -429,7 +406,8 @@ let transform_clause env clause = let transform_prod env prod = match prod.it with | ProdD (quants, sym, exp, prems) -> - let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in + let c = create_collector [] env in + let fcalls = collect_exp c exp @ List.concat_map (collect_prem c) prems in let call_map, new_quants, new_prems = create_call_map fcalls quants in ProdD (List.map (transform_param call_map env) (quants @ new_quants), sym, @@ -471,45 +449,10 @@ and has_sub_exp_path p = | SliceP (p, e1, e2) -> has_sub_exp_path p || has_sub_exp e1 || has_sub_exp e2 | DotP (p, _) -> has_sub_exp_path p -let rec utilizes_rel_def env e = +let utilizes_rel_def env e = match e.it with - | CallE (id, args) -> StringSet.mem id.it env.rel_set || List.exists (utilizes_rel_def_arg env) args - | StrE fields -> List.exists (fun (_a, e1) -> utilizes_rel_def env e1) fields - | UnE (_, _, e1) | CvtE (e1, _, _) | LiftE e1 | TheE e1 | OptE (Some e1) - | ProjE (e1, _) | UncaseE (e1, _) - | CaseE (_, e1) | LenE e1 | DotE (e1, _) - | SubE (e1, _, _) -> utilizes_rel_def env e1 - | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) - | CompE (e1, e2) | MemE (e1, e2) - | CatE (e1, e2) | IdxE (e1, e2) -> utilizes_rel_def env e1 || utilizes_rel_def env e2 - | TupE exps | ListE exps -> List.exists (utilizes_rel_def env) exps - | SliceE (e1, e2, e3) -> utilizes_rel_def env e1 || utilizes_rel_def env e2 || utilizes_rel_def env e3 - | UpdE (e1, p, e2) - | ExtE (e1, p, e2) -> utilizes_rel_def env e1 || utilizes_rel_def_path env p || utilizes_rel_def env e2 - | IterE (e1, (_, id_exp_pairs)) -> utilizes_rel_def env e1 || List.exists (fun (_, exp) -> utilizes_rel_def env exp) id_exp_pairs - | _ -> false - -and utilizes_rel_def_arg env a = - match a.it with - | ExpA e -> utilizes_rel_def env e - | _ -> false - -and utilizes_rel_def_path env p = - match p.it with - | RootP -> false - | IdxP (p, e) -> utilizes_rel_def_path env p || utilizes_rel_def env e - | SliceP (p, e1, e2) -> utilizes_rel_def_path env p || utilizes_rel_def env e1 || utilizes_rel_def env e2 - | DotP (p, _) -> utilizes_rel_def_path env p - -and utilizes_rel_def_prem env p = - match p.it with - | IfPr e -> utilizes_rel_def env e - | RulePr (_, _, _, e) -> utilizes_rel_def env e - | LetPr (e1, e2, _) -> utilizes_rel_def env e1 || utilizes_rel_def env e2 - | IterPr (p', (_, id_exp_pairs)) -> - utilizes_rel_def_prem env p' || - List.exists (fun (_, exp) -> utilizes_rel_def env exp) id_exp_pairs - | _ -> false + | CallE (id, _) -> (StringSet.mem id.it env.rel_set, true) + | _ -> (false, true) let collect_list_length_vars () : StringSet.t ref * (module Iter.Arg) = let module Arg = @@ -526,6 +469,7 @@ let collect_list_length_vars () : StringSet.t ref * (module Iter.Arg) = let must_be_relation env id params clauses = let listn_set, (module Arg : Iter.Arg) = collect_list_length_vars () in + let rel_def_checker = { exists_base_checker with collect_exp = utilizes_rel_def env} in assert (!listn_set = StringSet.empty); let module Acc = Iter.Make(Arg) in (* Current limitation of relations - can only have standard types. @@ -541,8 +485,8 @@ let must_be_relation env id params clauses = (* Premises might not be decidable *) prems <> [] || (* Functions that have function calls transformed to relations must also be relations *) - utilizes_rel_def env exp || - List.exists (utilizes_rel_def_prem env) prems || + collect_exp rel_def_checker exp || + List.exists (collect_prem rel_def_checker) prems || (* Checking if equality binding is active *) fst (List.fold_left (fun (acc_bool, free_set) arg -> let free_vars = Free.free_arg arg in @@ -596,21 +540,26 @@ let rec filter_return_prems prems = let generate_matching_rules env args tupt r = match r.it with - | RuleD (id, binds, mixop, exp', prems) -> + | RuleD (id, quants, mixop, exp', prems) -> let (args', _) = Lib.List.split_last (get_tuple_exp exp') in let new_exp = TupE args' $$ exp'.at % tupt in (try Eval.match_list Eval.match_exp env.il_env Subst.empty args' args with Eval.Irred -> None) |> Option.map (fun _ -> - {r with it = RuleD (id, binds, tail_mixop mixop, new_exp, filter_return_prems prems)} + {r with it = RuleD (id, quants, tail_mixop mixop, new_exp, filter_return_prems prems)} ) +let is_otherwise prem = + match prem.it with + | ElsePr -> true + | _ -> false + let fall_through_prems env id mixop typs rules = let gen_rel_name rid = id.it ^ "_before_" ^ rid.it $ id.at in let rec go prev_rules = function | [] -> [ RelD (id, [], mixop, TupT typs $ id.at, List.rev prev_rules) $ id.at ] - | ({it = RuleD (rid, binds, m, exp, prems); _} as r) :: rs -> + | ({it = RuleD (rid, quants, m, exp, prems); _} as r) :: rs when List.exists is_otherwise prems -> let (args, _) = Lib.List.split_last (get_tuple_exp exp) in let (typs', _) = Lib.List.split_last typs in let tupt = TupT typs' $ id.at in @@ -618,11 +567,12 @@ let fall_through_prems env id mixop typs rules = List.filter_map (generate_matching_rules env args tupt) prev_rules in let prems' = List.filter (fun p -> p.it <> ElsePr) prems in - if rules' = [] then go ({ r with it = RuleD (rid, binds, m, exp, prems') } :: prev_rules) rs else + if rules' = [] then go ({ r with it = RuleD (rid, quants, m, exp, prems') } :: prev_rules) rs else let relation = RelD (gen_rel_name rid, [], tail_mixop mixop, tupt, rules') $ id.at in let negrulepr = NegPr (RulePr (gen_rel_name rid, [], tail_mixop mixop, TupE args $$ exp.at % tupt) $ rid.at) $ rid.at in - let new_rule = { r with it = RuleD (rid, binds, m, exp, negrulepr :: prems') } in + let new_rule = { r with it = RuleD (rid, quants, m, exp, negrulepr :: prems') } in relation :: go (new_rule :: prev_rules) rs + | r :: rs -> go (r :: prev_rules) rs in go [] rules @@ -639,7 +589,8 @@ let cvt_def_to_rel env id params r_typ clauses = match clause.it with | DefD (quants, args, exp, prems) -> let exps = List.map get_exp_arg args in - let fcalls = collect_fcalls_exp [] env exp @ List.concat_map (collect_fcalls_prem [] env) prems in + let c = create_collector [] env in + let fcalls = collect_exp c exp @ List.concat_map (collect_prem c) prems in let call_map, new_quants, new_prems = create_call_map fcalls quants in let tupe = TupE (exps @ [transform_exp_normal call_map env exp]) $$ id.at % (TupT tup_types $ id.at) in RuleD (fun_prefix ^ id.it ^ "_case_" ^ Int.to_string i $ id.at, quants @ new_quants, new_mixop, tupe, List.map (transform_prem_normal call_map env) (new_prems @ prems)) $ id.at diff --git a/spectec/src/middlend/utils.ml b/spectec/src/middlend/utils.ml index 116c4420ee..82dd40a513 100644 --- a/spectec/src/middlend/utils.ml +++ b/spectec/src/middlend/utils.ml @@ -31,12 +31,12 @@ and reduce_inst_alias env args inst base_typ = ) | _ -> base_typ -let is_part_of_bind (free_set : Free.sets) b = +let is_part_of_quant (free_set : Free.sets) b = match b.it with - | ExpB (id, _) -> Free.Set.mem id.it free_set.varid - | TypB id -> Free.Set.mem id.it free_set.typid - | DefB (id, _, _) -> Free.Set.mem id.it free_set.defid - | GramB (id, _, _) -> Free.Set.mem id.it free_set.gramid + | ExpP (id, _) -> Free.Set.mem id.it free_set.varid + | TypP id -> Free.Set.mem id.it free_set.typid + | DefP (id, _, _) -> Free.Set.mem id.it free_set.defid + | GramP (id, _, _) -> Free.Set.mem id.it free_set.gramid let generate_var ids id = let start = 0 in From 8807e55ee1fd10c099e41ae181e7b2ac80c535dd Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 20 Jan 2026 14:52:56 +0000 Subject: [PATCH 070/115] Removed subtyping matching check --- spectec/src/middlend/deftorel.ml | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index 0c7a234b3d..a51142affb 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -419,36 +419,6 @@ let is_exp_param param = | ExpP _ -> true | _ -> false -let rec has_sub_exp e = - match e.it with - | SubE _ -> true - | StrE fields -> List.exists (fun (_a, e1) -> has_sub_exp e1) fields - | UnE (_, _, e1) | CvtE (e1, _, _) | LiftE e1 | TheE e1 | OptE (Some e1) - | ProjE (e1, _) | UncaseE (e1, _) - | CaseE (_, e1) | LenE e1 | DotE (e1, _) -> has_sub_exp e1 - | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) - | CompE (e1, e2) | MemE (e1, e2) - | CatE (e1, e2) | IdxE (e1, e2) -> has_sub_exp e1 || has_sub_exp e2 - | TupE exps | ListE exps -> List.exists has_sub_exp exps - | SliceE (e1, e2, e3) -> has_sub_exp e1 || has_sub_exp e2 || has_sub_exp e3 - | UpdE (e1, p, e2) - | ExtE (e1, p, e2) -> has_sub_exp e1 || has_sub_exp_path p || has_sub_exp e2 - | CallE (_id, args) -> List.exists has_sub_exp_arg args - | IterE (e1, (_, id_exp_pairs)) -> has_sub_exp e1 || List.exists (fun (_, exp) -> has_sub_exp exp) id_exp_pairs - | _ -> false - -and has_sub_exp_arg a = - match a.it with - | ExpA e -> has_sub_exp e - | _ -> false - -and has_sub_exp_path p = - match p.it with - | RootP -> false - | IdxP (p, e) -> has_sub_exp_path p || has_sub_exp e - | SliceP (p, e1, e2) -> has_sub_exp_path p || has_sub_exp e1 || has_sub_exp e2 - | DotP (p, _) -> has_sub_exp_path p - let utilizes_rel_def env e = match e.it with | CallE (id, _) -> (StringSet.mem id.it env.rel_set, true) @@ -480,8 +450,6 @@ let must_be_relation env id params clauses = List.exists (fun c -> match c.it with | DefD (quants, args, exp, prems) -> Acc.args args; - (* Can't have subtyping matching *) - List.exists has_sub_exp_arg args || (* Premises might not be decidable *) prems <> [] || (* Functions that have function calls transformed to relations must also be relations *) From b25aaba3bebfc64e390f57cfd2aa4fb61289b8af Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 20 Jan 2026 14:56:51 +0000 Subject: [PATCH 071/115] reordering so generated deftorel relations get implicit sideconditions. Fix tests --- spectec/src/exe-spectec/main.ml | 4 +- spectec/src/middlend/deftorel.ml | 40 +- spectec/test-middlend/dune.inc | 11 +- ...8-sub-expansion.il => 07-sub-expansion.il} | 431 +- .../{09-sub.il => 08-sub.il} | 431 +- ...-demut.il => 09-definition-to-relation.il} | 8376 ++++-- ...sideconditions.il => 10-sideconditions.il} | 12946 +++++++-- .../specification.exp/11-alias-demut.il | 24137 ++++++++++++++++ .../{11-improve-ids.il => 12-improve-ids.il} | 8184 ++++-- spectec/test-middlend/test.spectec.exp | 202 +- 10 files changed, 45716 insertions(+), 9046 deletions(-) rename spectec/test-middlend/specification.exp/{08-sub-expansion.il => 07-sub-expansion.il} (98%) rename spectec/test-middlend/specification.exp/{09-sub.il => 08-sub.il} (98%) rename spectec/test-middlend/specification.exp/{10-alias-demut.il => 09-definition-to-relation.il} (77%) rename spectec/test-middlend/specification.exp/{07-sideconditions.il => 10-sideconditions.il} (55%) create mode 100644 spectec/test-middlend/specification.exp/11-alias-demut.il rename spectec/test-middlend/specification.exp/{11-improve-ids.il => 12-improve-ids.il} (77%) diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index 41500e9b1b..f4b9b3bf14 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -43,10 +43,10 @@ let all_passes = [ Totalize; Else; Uncaseremoval; - Sideconditions; - DefToRel; SubExpansion; Sub; + DefToRel; + Sideconditions; AliasDemut; ImproveIds ] diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index a51142affb..c6c3e05523 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -46,19 +46,34 @@ let transform_typ_iter i = | _ -> i let filter_iter_quants args iter_quants = + let check_iter free_set iter = + match iter with + | ListN (_, Some id) -> Free.Set.mem id.it free_set + | _ -> false + in let free_vars = (Free.free_list Free.free_arg args).varid in - (List.fold_left (fun (free_set, acc) (iter, id_exp_pairs) -> + (List.fold_left (fun (free_set, acc) (iter, id_exp_pairs) -> + let has_definite_iter = check_iter free_set iter in + let new_id_exp_pairs = List.filter (fun (id, _) -> Free.Set.mem id.it free_set ) id_exp_pairs in - if new_id_exp_pairs = [] then (free_set, acc) else + + (* Must preserve iteration if the iteration variable (i.e. i) is used, + * EVEN if the list itself is not being used. + *) + let new_id_exp_pairs' = if has_definite_iter then id_exp_pairs else + new_id_exp_pairs + in + + if new_id_exp_pairs' = [] && (not has_definite_iter) then (free_set, acc) else let iter_vars = List.fold_left (fun acc (_, e) -> Free.Set.union acc (Free.free_exp e).varid - ) Free.Set.empty new_id_exp_pairs in + ) Free.Set.empty new_id_exp_pairs' in let new_set = Free.Set.union iter_vars free_set in - (new_set, (iter, new_id_exp_pairs) :: acc) + (new_set, (iter, new_id_exp_pairs') :: acc) ) (free_vars, []) iter_quants) - |> snd |> List.rev + |> snd |> List.rev let rec create_collector iterexps env = let base_collector_iters = base_collector [] (@) in @@ -262,6 +277,11 @@ and transform_exp call_map env e: (exp * (id * typ * int) list) = let t1', iter_ids2 = transform_typ call_map env t1 in let t2', iter_ids3 = transform_typ call_map env t2 in SubE (e1', t1', t2'), iter_ids @ iter_ids2 @ iter_ids3 + | IfE (e1, e2, e3) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + let e3', iter_ids3 = t_func e3 in + IfE (e1', e2', e3'), iter_ids @ iter_ids2 @ iter_ids3 | exp -> exp, []) in {e with it}, iter_ids @@ -344,11 +364,11 @@ let rec transform_prem call_map env prem = | IfPr e -> let e', iter_ids = transform_exp call_map env e in IfPr e', iter_ids - | LetPr (e1, e2, ids) -> + | LetPr (ids, e1, e2) -> (* TODO - properly handle this if it actually gets used *) let e1', iter_ids = transform_exp call_map env e1 in let e2', iter_ids2 = transform_exp call_map env e2 in - LetPr (e1', e2', ids), iter_ids @ iter_ids2 + LetPr (ids, e1', e2'), iter_ids @ iter_ids2 | ElsePr -> ElsePr, [] | IterPr (prem1, (iter, id_exp_pairs)) -> let prem1', iter_ids = transform_prem call_map env prem1 in @@ -387,7 +407,7 @@ let transform_rule env rule = List.map (transform_param call_map env) (quants @ new_quants), m, transform_exp_normal call_map env exp, - List.map (transform_prem_normal call_map env) (new_prems @ prems)) + List.map (transform_prem_normal call_map env) (prems @ new_prems)) ) $ rule.at let transform_clause env clause = @@ -400,7 +420,7 @@ let transform_clause env clause = List.map (transform_param call_map env) (quants @ new_quants), args, transform_exp_normal call_map env exp, - List.map (transform_prem_normal call_map env) (new_prems @ prems)) + List.map (transform_prem_normal call_map env) (prems @ new_prems)) ) $ clause.at let transform_prod env prod = @@ -412,7 +432,7 @@ let transform_prod env prod = ProdD (List.map (transform_param call_map env) (quants @ new_quants), sym, transform_exp_normal call_map env exp, - List.map (transform_prem_normal call_map env) (new_prems @ prems)) $ prod.at + List.map (transform_prem_normal call_map env) (prems @ new_prems)) $ prod.at let is_exp_param param = match param.it with diff --git a/spectec/test-middlend/dune.inc b/spectec/test-middlend/dune.inc index e2588b991f..77b46dda81 100644 --- a/spectec/test-middlend/dune.inc +++ b/spectec/test-middlend/dune.inc @@ -5,8 +5,9 @@ (rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/04-totalize.il specification.act/04-totalize.il)))) (rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/05-else.il specification.act/05-else.il)))) (rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/06-uncase-removal.il specification.act/06-uncase-removal.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/07-sideconditions.il specification.act/07-sideconditions.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/08-sub-expansion.il specification.act/08-sub-expansion.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/09-sub.il specification.act/09-sub.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/10-alias-demut.il specification.act/10-alias-demut.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/11-improve-ids.il specification.act/11-improve-ids.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/07-sub-expansion.il specification.act/07-sub-expansion.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/08-sub.il specification.act/08-sub.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/09-definition-to-relation.il specification.act/09-definition-to-relation.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/10-sideconditions.il specification.act/10-sideconditions.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/11-alias-demut.il specification.act/11-alias-demut.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/12-improve-ids.il specification.act/12-improve-ids.il)))) diff --git a/spectec/test-middlend/specification.exp/08-sub-expansion.il b/spectec/test-middlend/specification.exp/07-sub-expansion.il similarity index 98% rename from spectec/test-middlend/specification.exp/08-sub-expansion.il rename to spectec/test-middlend/specification.exp/07-sub-expansion.il index 2f555f509d..6e9296aef5 100644 --- a/spectec/test-middlend/specification.exp/08-sub-expansion.il +++ b/spectec/test-middlend/specification.exp/07-sub-expansion.il @@ -1171,6 +1171,7 @@ relation wf_limits: `%`(limits) rule limits_case_0{u64 : u64, `u64?` : u64?}: `%`(`[%..%]`_limits(u64, `u64?`)) -- wf_uN: `%%`(64, u64) + -- (wf_uN: `%%`(64, u64))?{u64 <- `u64?`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax tagtype = typeuse @@ -4359,7 +4360,6 @@ relation wf_instr: `%`(instr) `%`(VEXTRACT_LANE_instr(shape, `sx?`, laneidx)) -- wf_shape: `%`(shape) -- wf_uN: `%%`(8, laneidx) - -- if (|[I32_lanetype I64_lanetype F32_lanetype F64_lanetype]| > 0) -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 @@ -5258,7 +5258,6 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- wf_context: `%`(C) -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 @@ -5267,7 +5266,6 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) -- wf_context: `%`(C) -- wf_subtype: `%`(st) -- wf_typeuse: `%`(REC_typeuse(i)) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 @@ -5340,12 +5338,10 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype), OK_oktypenat(i)) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) - -- if (|`comptype'*`| = |`typeuse'**`|) -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (Typeuse_ok: `%|-%:OK`(C, typeuse))*{typeuse <- `typeuse*`} -- (if $before(typeuse, i))*{typeuse <- `typeuse*`} - -- if (|`comptype'*`| = |`typeuse*`|) -- (if ($unrollht_(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5385,7 +5381,6 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 @@ -5419,7 +5414,6 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 @@ -5505,7 +5499,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 @@ -5514,7 +5507,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 @@ -5524,7 +5516,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 @@ -5534,7 +5525,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 @@ -5544,17 +5534,14 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_heaptype: `%`(FUNC_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) - -- if (j < |typeuse*{typeuse <- `typeuse*`}|) -- wf_context: `%`(C) -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 @@ -5663,7 +5650,6 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) -- wf_context: `%`(C) -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} - -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 @@ -5721,8 +5707,6 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- if (|`lct*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5740,7 +5724,6 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(comptype) -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5762,12 +5745,9 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- if (|`comptype'*`| = |`yy**`|) -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} - -- if (|`comptype'*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5896,8 +5876,6 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) - -- if (|`t*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -6028,7 +6006,6 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6039,10 +6016,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6051,10 +6025,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6062,7 +6033,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_catch(l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_ALL_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6070,7 +6040,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -6104,7 +6073,6 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) rule _{t : valtype}: `|-%DEFAULTABLE`(t) -- wf_valtype: `%`(t) - -- if ($default_(t) =/= ?()) -- if (!($default_(t)) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6211,7 +6179,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(BR_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6221,7 +6188,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_IF_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 @@ -6230,9 +6196,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} - -- if ($proj_uN_0(l').0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6242,7 +6206,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -6252,7 +6215,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 @@ -6262,7 +6224,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -6276,7 +6237,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -6290,7 +6250,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(CALL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 @@ -6300,7 +6259,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 @@ -6312,10 +6270,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 @@ -6337,7 +6293,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6352,7 +6307,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6369,10 +6323,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6386,8 +6338,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6426,9 +6376,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(`REF.FUNC`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) - -- if (|C.REFS_context| > 0) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 @@ -6495,7 +6443,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 @@ -6505,7 +6452,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} @@ -6517,9 +6463,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) @@ -6531,9 +6475,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 @@ -6543,7 +6485,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 @@ -6553,7 +6494,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) @@ -6564,7 +6504,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 @@ -6574,9 +6513,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 @@ -6586,10 +6523,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 @@ -6599,7 +6534,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) @@ -6610,7 +6544,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.SET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 @@ -6627,7 +6560,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 @@ -6638,9 +6570,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) @@ -6651,9 +6581,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[$proj_uN_0(y).0] : reftype <: storagetype), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 @@ -6663,10 +6591,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 @@ -6692,7 +6618,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`LOCAL.GET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 @@ -6702,7 +6627,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`LOCAL.SET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 @@ -6712,7 +6636,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 @@ -6722,7 +6645,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 @@ -6732,7 +6654,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 @@ -6742,7 +6663,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.GET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 @@ -6752,7 +6672,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.SET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 @@ -6762,7 +6681,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 @@ -6772,7 +6690,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.GROW`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 @@ -6782,7 +6699,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.FILL`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 @@ -6793,9 +6709,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) - -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) - -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6807,9 +6721,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6820,7 +6732,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(`ELEM.DROP`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 @@ -6830,7 +6741,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 @@ -6840,7 +6750,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 @@ -6850,7 +6759,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 @@ -6861,9 +6769,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) - -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) - -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 @@ -6873,9 +6779,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 @@ -6884,7 +6788,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(`DATA.DROP`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 @@ -6894,7 +6797,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) @@ -6905,7 +6807,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) @@ -6916,7 +6817,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) @@ -6927,7 +6827,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) @@ -6938,7 +6837,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) @@ -6949,7 +6847,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) @@ -6960,7 +6857,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) @@ -6971,7 +6867,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) @@ -6982,7 +6877,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -6994,7 +6888,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) @@ -7005,7 +6898,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -7225,15 +7117,11 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`t*`|) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`x_1*`|) - -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} - -- if ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}) =/= ?()) -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 @@ -7274,7 +7162,6 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) -- wf_valtype: `%`(t) - -- if ($default_(t) =/= ?()) -- if (!($default_(t)) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7357,7 +7244,6 @@ relation Instr_const: `%|-%CONST`(context, instr) -- wf_context: `%`(C) -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7368,9 +7254,7 @@ relation Instr_const: `%|-%CONST`(context, instr) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) - -- if (|[I32_Inn I64_Inn]| > 0) -- if (Inn <- [I32_Inn I64_Inn]) - -- if (|[mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]| > 0) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7470,13 +7354,11 @@ relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- wf_context: `%`(C) -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -7494,7 +7376,6 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) -- wf_context: `%`(C) -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -7530,7 +7411,6 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- wf_reftype: `%`(rt) -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -7554,7 +7434,6 @@ relation Start_ok: `%|-%:OK`(context, start) -- wf_context: `%`(C) -- wf_start: `%`(START_start(x)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7574,7 +7453,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(TAG_externidx(x)) -- wf_externtype: `%`(TAG_externtype(jt)) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7583,7 +7461,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(GLOBAL_externidx(x)) -- wf_externtype: `%`(GLOBAL_externtype(gt)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7592,7 +7469,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(MEM_externidx(x)) -- wf_externtype: `%`(MEM_externtype(mt)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7601,7 +7477,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(TABLE_externidx(x)) -- wf_externtype: `%`(TABLE_externtype(tt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7610,7 +7485,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(FUNC_externidx(x)) -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7702,24 +7576,15 @@ relation Module_ok: `|-%:%`(module, moduletype) -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) -- wf_nonfuncs: `%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) - -- if (|`import*`| = |`xt_I*`|) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} - -- if (|`jt*`| = |`tag*`|) -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- if (|`mem*`| = |`mt*`|) -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} - -- if (|`table*`| = |`tt*`|) -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} - -- if (|`dt*`| = |`func*`|) -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} - -- if (|`data*`| = |`ok*`|) -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} - -- if (|`elem*`| = |`rt*`|) -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} - -- if (|`export*`| = |`nm*`|) - -- if (|`export*`| = |`xt_E*`|) -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) -- if (C = C' +++ {TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -12378,7 +12243,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_store: `%`(s) -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) - -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 @@ -12387,7 +12251,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_store: `%`(s) -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) - -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 @@ -12396,7 +12259,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_store: `%`(s) -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) - -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 @@ -12406,7 +12268,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_exninst: `%`(exn) -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) - -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.35 @@ -12498,7 +12359,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) - -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-111.34 @@ -12506,7 +12366,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:113.1-115.28 @@ -12514,7 +12373,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- wf_store: `%`(s) -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) - -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:117.1-119.32 @@ -12522,7 +12380,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) - -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:121.1-123.30 @@ -12530,7 +12387,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- wf_store: `%`(s) -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) - -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:125.1-128.37 @@ -12682,7 +12538,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12692,7 +12547,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12701,7 +12555,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12710,7 +12563,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12743,7 +12595,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(BR_IF_instr(l)) -- wf_instr: `%`(BR_instr(l)) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12751,17 +12602,15 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(BR_IF_instr(l)) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) - -- if ($proj_num__0(i) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: @@ -12769,7 +12618,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instr: `%`(BR_instr(l')) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12883,7 +12731,6 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.i31`{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- if ($proj_num__0(i) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(`REF.I31`_instr) -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) @@ -13005,7 +12852,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13023,7 +12869,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13041,7 +12886,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(TESTOP_instr(nt, testop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13051,7 +12895,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(RELOP_instr(nt, relop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13060,7 +12903,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(CONST_instr(nt_2, c)) - -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13077,7 +12919,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13087,7 +12928,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13098,7 +12938,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13107,7 +12946,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13116,7 +12954,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13134,7 +12971,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13154,7 +12990,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13176,8 +13011,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)) - -- if ($proj_num__0(c) =/= ?()) - -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13196,7 +13029,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13205,7 +13037,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VBITMASK_instr(sh)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13243,7 +13074,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13253,9 +13083,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) - -- if ($proj_num__0(c_2) =/= ?()) - -- if ($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)|) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13368,8 +13195,6 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -13379,8 +13204,6 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -13391,7 +13214,6 @@ relation `Step_read_before_table.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13408,7 +13230,6 @@ relation `Step_read_before_table.fill-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13418,8 +13239,6 @@ relation `Step_read_before_table.copy-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13436,8 +13255,6 @@ relation `Step_read_before_table.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13450,9 +13267,7 @@ relation `Step_read_before_table.copy-gt`: `%`(config) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) -- wf_instr: `%`(`TABLE.GET`_instr(y)) -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) @@ -13471,8 +13286,6 @@ relation `Step_read_before_table.copy-gt`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13482,8 +13295,6 @@ relation `Step_read_before_table.init-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13500,8 +13311,6 @@ relation `Step_read_before_table.init-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13511,7 +13320,6 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13528,7 +13336,6 @@ relation `Step_read_before_memory.fill-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13538,8 +13345,6 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13556,8 +13361,6 @@ relation `Step_read_before_memory.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13570,9 +13373,7 @@ relation `Step_read_before_memory.copy-gt`: `%`(config) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) @@ -13591,8 +13392,6 @@ relation `Step_read_before_memory.copy-gt`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13602,8 +13401,6 @@ relation `Step_read_before_memory.init-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13620,8 +13417,6 @@ relation `Step_read_before_memory.init-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13654,8 +13449,6 @@ relation `Step_read_before_array.fill-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13672,8 +13465,6 @@ relation `Step_read_before_array.fill-succ`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13683,8 +13474,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13692,8 +13481,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13710,8 +13497,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13719,8 +13504,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13735,16 +13518,13 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($sx(zt_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13759,8 +13539,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13768,8 +13546,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13779,7 +13555,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13787,8 +13562,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13805,7 +13578,6 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13813,8 +13585,6 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13826,8 +13596,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13835,8 +13603,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13855,8 +13621,6 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13864,8 +13628,6 @@ relation `Step_read_before_array.init_data-num`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13921,11 +13683,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- if (a < |$funcinst(z)|) -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13941,9 +13701,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- (if ($default_(t) =/= ?()))*{t <- `t*`} -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- if (a < |$funcinst(z)|) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) @@ -13952,11 +13710,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- if (a < |$funcinst(z)|) -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13984,7 +13740,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) -- wf_instr: `%`(CALL_REF_instr(yy)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14028,8 +13783,6 @@ relation Step_read: `%~>%`(config, instr*) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -14040,8 +13793,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -14092,15 +13843,13 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0] : ref <: instr)]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: @@ -14116,7 +13865,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14129,7 +13877,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(`TABLE.SET`_instr(x)) @@ -14143,8 +13890,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14157,8 +13902,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) @@ -14174,8 +13917,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14192,8 +13933,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14206,9 +13945,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0] : ref <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(`TABLE.SET`_instr(x)) @@ -14223,7 +13959,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14231,7 +13966,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14239,7 +13973,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14247,7 +13980,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14255,7 +13987,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14263,7 +13994,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14271,7 +14001,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14281,7 +14010,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} - -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14300,7 +14027,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -14311,7 +14037,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14320,7 +14045,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_uN: `%%`(N, j) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) @@ -14329,7 +14053,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14339,7 +14062,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) @@ -14359,7 +14081,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14372,7 +14093,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) @@ -14386,8 +14106,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14400,8 +14118,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) @@ -14417,8 +14133,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14435,8 +14149,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14449,9 +14161,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) @@ -14471,7 +14180,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) @@ -14516,8 +14224,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`val*`| = |`zt*`|) - -- (if ($default_($unpack(zt)) =/= ?()))*{zt <- `zt*`} -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14529,10 +14235,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])) : val <: instr)]) - -- if ($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]) =/= ?()) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) - -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) - -- if (a < |$structinst(z)|) -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -14545,7 +14247,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($default_($unpack(zt)) =/= ?()) -- if (!($default_($unpack(zt))) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14553,7 +14254,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14562,7 +14262,6 @@ relation Step_read: `%~>%`(config, instr*) -- (wf_ref: `%`(ref))*{ref <- `ref*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14572,21 +14271,16 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(i) =/= ?()) - -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) - -- (if ($cunpack(zt) =/= ?()))^n{} -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zsize(zt) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14600,17 +14294,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])) : val <: instr)]) - -- if ($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]) =/= ?()) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) - -- if (a < |$arrayinst(z)|) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -14624,7 +14312,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- if (a < |$arrayinst(z)|) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) @@ -14639,8 +14326,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14653,7 +14338,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) @@ -14680,8 +14364,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14689,8 +14371,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14703,8 +14383,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -14719,14 +14397,11 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($sx(zt_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14741,7 +14416,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($sx(zt_2) =/= ?()) -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14755,8 +14429,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14764,7 +14436,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14777,8 +14448,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- wf_ref: `%`(ref) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) @@ -14789,7 +14458,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14803,8 +14471,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14814,8 +14480,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14828,10 +14492,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) - -- if ($cunpack(zt) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) @@ -14908,9 +14568,7 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- if ($as_deftype($tag(z, x).TYPE_taginst) =/= ?()) -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) @@ -14932,13 +14590,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:340.1-342.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) @@ -14948,7 +14604,6 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:356.1-357.87 @@ -14968,13 +14623,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:506.1-510.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) @@ -14984,16 +14637,13 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.63 @@ -15001,13 +14651,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-531.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) @@ -15017,17 +14665,13 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-544.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) - -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -15038,7 +14682,6 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:558.1-559.84 @@ -15059,7 +14702,6 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`, zt <- `zt*`} -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) @@ -15074,8 +14716,6 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:724.1-727.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) - -- if ($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val) =/= ?()) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)])) -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -15087,7 +14727,6 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`} -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) @@ -15103,15 +14742,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-795.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) - -- if ($proj_num__0(i) =/= ?()) - -- if ($packfield_(zt, val) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -15857,10 +15492,8 @@ relation Context_ok: `|-%:OK`(context) -- wf_context: `%`(C_0) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) - -- (wf_context: `%`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{t_1 <- `t_1*`, t_2 <- `t_2*`} -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -15871,8 +15504,6 @@ relation Context_ok: `|-%:OK`(context) -- (Memtype_ok: `%|-%:OK`(C_0, mt))*{mt <- `mt*`} -- (Tabletype_ok: `%|-%:OK`(C_0, tt))*{tt <- `tt*`} -- (Deftype_ok: `%|-%:OK`(C_0, dt_F))*{dt_F <- `dt_F*`} - -- if (|`dt_F*`| = |`t_1*`|) - -- if (|`dt_F*`| = |`t_2*`|) -- (Expand: `%~~%`(dt_F, `FUNC%->%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{dt_F <- `dt_F*`, t_1 <- `t_1*`, t_2 <- `t_2*`} -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- `et*`} -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- `lct*`} @@ -15940,25 +15571,15 @@ relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) -- (wf_externtype: `%`(MEM_externtype(memtype)))*{memtype <- `memtype*`} -- (wf_externtype: `%`(TABLE_externtype(tabletype)))*{tabletype <- `tabletype*`} -- (Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, deftype))*{deftype <- `deftype*`} - -- if (|`tagaddr*`| = |`tagtype*`|) -- (Externaddr_ok: `%|-%:%`(s, TAG_externaddr(tagaddr), TAG_externtype(tagtype)))*{tagaddr <- `tagaddr*`, tagtype <- `tagtype*`} - -- if (|`globaladdr*`| = |`globaltype*`|) -- (Externaddr_ok: `%|-%:%`(s, GLOBAL_externaddr(globaladdr), GLOBAL_externtype(globaltype)))*{globaladdr <- `globaladdr*`, globaltype <- `globaltype*`} - -- if (|`deftype_F*`| = |`funcaddr*`|) -- (Externaddr_ok: `%|-%:%`(s, FUNC_externaddr(funcaddr), FUNC_externtype((deftype_F : deftype <: typeuse))))*{deftype_F <- `deftype_F*`, funcaddr <- `funcaddr*`} - -- if (|`memaddr*`| = |`memtype*`|) -- (Externaddr_ok: `%|-%:%`(s, MEM_externaddr(memaddr), MEM_externtype(memtype)))*{memaddr <- `memaddr*`, memtype <- `memtype*`} - -- if (|`tableaddr*`| = |`tabletype*`|) -- (Externaddr_ok: `%|-%:%`(s, TABLE_externaddr(tableaddr), TABLE_externtype(tabletype)))*{tableaddr <- `tableaddr*`, tabletype <- `tabletype*`} - -- if (|`dataaddr*`| = |`datatype*`|) - -- (if (dataaddr < |s.DATAS_store|))*{dataaddr <- `dataaddr*`} -- (Datainst_ok: `%|-%:%`(s, s.DATAS_store[dataaddr], datatype))*{dataaddr <- `dataaddr*`, datatype <- `datatype*`} - -- if (|`elemaddr*`| = |`elemtype*`|) - -- (if (elemaddr < |s.ELEMS_store|))*{elemaddr <- `elemaddr*`} -- (Eleminst_ok: `%|-%:%`(s, s.ELEMS_store[elemaddr], elemtype))*{elemaddr <- `elemaddr*`, elemtype <- `elemtype*`} -- (Exportinst_ok: `%|-%:OK`(s, exportinst))*{exportinst <- `exportinst*`} -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) - -- if (|TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}| > 0) -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15971,7 +15592,6 @@ relation Frame_ok: `%|-%:%`(store, frame, context) -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) - -- if (|`lct*`| = |`val?*`|) -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16059,15 +15679,11 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`t*`|) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`x_1*`|) - -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} - -- if ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}) =/= ?()) -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:47.1-51.33 @@ -16175,7 +15791,6 @@ relation Structinst_ok: `%|-%:OK`(store, structinst) -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`fv*`| = |`zt*`|) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16197,10 +15812,8 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) -- wf_store: `%`(s) -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if (ta < |s.TAGS_store|) -- if ((dt : deftype <: typeuse) = s.TAGS_store[ta].TYPE_taginst) -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if (|`t*`| = |`val*`|) -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16221,21 +15834,16 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 rule `ref.struct`{a : addr, s : store, i : nat, `ft*` : fieldtype*, zt : storagetype}: `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) - -- if (i < |s.STRUCTS_store[a].FIELDS_structinst|) - -- if (a < |s.STRUCTS_store|) -- wf_store: `%`(s) -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if (i < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:232.1-234.42 rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) - -- if (i < |s.ARRAYS_store[a].FIELDS_arrayinst|) - -- if (a < |s.ARRAYS_store|) -- wf_store: `%`(s) -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) @@ -16244,8 +15852,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 rule `ref.exn`{a : addr, s : store, i : nat}: `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, (s.EXNS_store[a].FIELDS_exninst[i] : val <: fieldval)) - -- if (i < |s.EXNS_store[a].FIELDS_exninst|) - -- if (a < |s.EXNS_store|) -- wf_store: `%`(s) -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) @@ -16290,19 +15896,12 @@ relation Store_ok: `|-%:OK`(store) -- (wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} -- (wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} -- wf_store: `%`({TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) - -- if (|`taginst*`| = |`tagtype*`|) -- (Taginst_ok: `%|-%:%`(s, taginst, tagtype))*{taginst <- `taginst*`, tagtype <- `tagtype*`} - -- if (|`globalinst*`| = |`globaltype*`|) -- (Globalinst_ok: `%|-%:%`(s, globalinst, globaltype))*{globalinst <- `globalinst*`, globaltype <- `globaltype*`} - -- if (|`meminst*`| = |`memtype*`|) -- (Meminst_ok: `%|-%:%`(s, meminst, memtype))*{meminst <- `meminst*`, memtype <- `memtype*`} - -- if (|`tableinst*`| = |`tabletype*`|) -- (Tableinst_ok: `%|-%:%`(s, tableinst, tabletype))*{tableinst <- `tableinst*`, tabletype <- `tabletype*`} - -- if (|`deftype*`| = |`funcinst*`|) -- (Funcinst_ok: `%|-%:%`(s, funcinst, deftype))*{deftype <- `deftype*`, funcinst <- `funcinst*`} - -- if (|`datainst*`| = |`datatype*`|) -- (Datainst_ok: `%|-%:%`(s, datainst, datatype))*{datainst <- `datainst*`, datatype <- `datatype*`} - -- if (|`eleminst*`| = |`elemtype*`|) -- (Eleminst_ok: `%|-%:%`(s, eleminst, elemtype))*{eleminst <- `eleminst*`, elemtype <- `elemtype*`} -- (Structinst_ok: `%|-%:OK`(s, structinst))*{structinst <- `structinst*`} -- (Arrayinst_ok: `%|-%:OK`(s, arrayinst))*{arrayinst <- `arrayinst*`} @@ -16382,8 +15981,6 @@ relation Extend_structinst: `%<=%`(structinst, structinst) -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`fv*`| = |`fv'*`|) - -- if (|`fv*`| = |`mut?*`|) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16395,7 +15992,6 @@ relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (|`fv*`| = |`fv'*`|) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16412,35 +16008,15 @@ relation Extend_store: `%<=%`(store, store) `%<=%`(s, s') -- wf_store: `%`(s) -- wf_store: `%`(s') - -- (if (a < |s.TAGS_store|))^(a<|s.TAGS_store|){} - -- (if (a < |s'.TAGS_store|))^(a<|s.TAGS_store|){} -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} - -- (if (a < |s.GLOBALS_store|))^(a<|s.GLOBALS_store|){} - -- (if (a < |s'.GLOBALS_store|))^(a<|s.GLOBALS_store|){} -- (Extend_globalinst: `%<=%`(s.GLOBALS_store[a], s'.GLOBALS_store[a]))^(a<|s.GLOBALS_store|){} - -- (if (a < |s.MEMS_store|))^(a<|s.MEMS_store|){} - -- (if (a < |s'.MEMS_store|))^(a<|s.MEMS_store|){} -- (Extend_meminst: `%<=%`(s.MEMS_store[a], s'.MEMS_store[a]))^(a<|s.MEMS_store|){} - -- (if (a < |s.TABLES_store|))^(a<|s.TABLES_store|){} - -- (if (a < |s'.TABLES_store|))^(a<|s.TABLES_store|){} -- (Extend_tableinst: `%<=%`(s.TABLES_store[a], s'.TABLES_store[a]))^(a<|s.TABLES_store|){} - -- (if (a < |s.FUNCS_store|))^(a<|s.FUNCS_store|){} - -- (if (a < |s'.FUNCS_store|))^(a<|s.FUNCS_store|){} -- (Extend_funcinst: `%<=%`(s.FUNCS_store[a], s'.FUNCS_store[a]))^(a<|s.FUNCS_store|){} - -- (if (a < |s.DATAS_store|))^(a<|s.DATAS_store|){} - -- (if (a < |s'.DATAS_store|))^(a<|s.DATAS_store|){} -- (Extend_datainst: `%<=%`(s.DATAS_store[a], s'.DATAS_store[a]))^(a<|s.DATAS_store|){} - -- (if (a < |s.ELEMS_store|))^(a<|s.ELEMS_store|){} - -- (if (a < |s'.ELEMS_store|))^(a<|s.ELEMS_store|){} -- (Extend_eleminst: `%<=%`(s.ELEMS_store[a], s'.ELEMS_store[a]))^(a<|s.ELEMS_store|){} - -- (if (a < |s.STRUCTS_store|))^(a<|s.STRUCTS_store|){} - -- (if (a < |s'.STRUCTS_store|))^(a<|s.STRUCTS_store|){} -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} - -- (if (a < |s.ARRAYS_store|))^(a<|s.ARRAYS_store|){} - -- (if (a < |s'.ARRAYS_store|))^(a<|s.ARRAYS_store|){} -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} - -- (if (a < |s.EXNS_store|))^(a<|s.EXNS_store|){} - -- (if (a < |s'.EXNS_store|))^(a<|s.EXNS_store|){} -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16534,7 +16110,6 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 diff --git a/spectec/test-middlend/specification.exp/09-sub.il b/spectec/test-middlend/specification.exp/08-sub.il similarity index 98% rename from spectec/test-middlend/specification.exp/09-sub.il rename to spectec/test-middlend/specification.exp/08-sub.il index 32e024a639..e0171b45d7 100644 --- a/spectec/test-middlend/specification.exp/09-sub.il +++ b/spectec/test-middlend/specification.exp/08-sub.il @@ -1291,6 +1291,7 @@ relation wf_limits: `%`(limits) rule limits_case_0{u64 : u64, `u64?` : u64?}: `%`(`[%..%]`_limits(u64, `u64?`)) -- wf_uN: `%%`(64, u64) + -- (wf_uN: `%%`(64, u64))?{u64 <- `u64?`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax tagtype = typeuse @@ -4511,7 +4512,6 @@ relation wf_instr: `%`(instr) `%`(VEXTRACT_LANE_instr(shape, `sx?`, laneidx)) -- wf_shape: `%`(shape) -- wf_uN: `%%`(8, laneidx) - -- if (|[I32_lanetype I64_lanetype F32_lanetype F64_lanetype]| > 0) -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 @@ -5410,7 +5410,6 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- wf_context: `%`(C) -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 @@ -5419,7 +5418,6 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) -- wf_context: `%`(C) -- wf_subtype: `%`(st) -- wf_typeuse: `%`(REC_typeuse(i)) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 @@ -5492,12 +5490,10 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype), OK_oktypenat(i)) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) - -- if (|`comptype'*`| = |`typeuse'**`|) -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (Typeuse_ok: `%|-%:OK`(C, typeuse))*{typeuse <- `typeuse*`} -- (if $before(typeuse, i))*{typeuse <- `typeuse*`} - -- if (|`comptype'*`| = |`typeuse*`|) -- (if ($unrollht_(C, $heaptype_typeuse(typeuse)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5537,7 +5533,6 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 @@ -5571,7 +5566,6 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 @@ -5657,7 +5651,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 @@ -5666,7 +5659,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 @@ -5676,7 +5668,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 @@ -5686,7 +5677,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 @@ -5696,17 +5686,14 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_heaptype: `%`(FUNC_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[j])) - -- if (j < |typeuse*{typeuse <- `typeuse*`}|) -- wf_context: `%`(C) -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 @@ -5815,7 +5802,6 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) -- wf_context: `%`(C) -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} - -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 @@ -5873,8 +5859,6 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- if (|`lct*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5892,7 +5876,6 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(comptype) -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5914,12 +5897,9 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- if (|`comptype'*`| = |`yy**`|) -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} - -- if (|`comptype'*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -6048,8 +6028,6 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) - -- if (|`t*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -6180,7 +6158,6 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6191,10 +6168,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6203,10 +6177,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6214,7 +6185,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_catch(l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_ALL_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6222,7 +6192,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -6256,7 +6225,6 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) rule _{t : valtype}: `|-%DEFAULTABLE`(t) -- wf_valtype: `%`(t) - -- if ($default_(t) =/= ?()) -- if (!($default_(t)) =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6363,7 +6331,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(BR_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6373,7 +6340,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_IF_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 @@ -6382,9 +6348,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} - -- if ($proj_uN_0(l').0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6394,7 +6358,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -6404,7 +6367,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 @@ -6414,7 +6376,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -6428,7 +6389,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -6442,7 +6402,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(CALL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 @@ -6452,7 +6411,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 @@ -6464,10 +6422,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 @@ -6489,7 +6445,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6504,7 +6459,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6521,10 +6475,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6538,8 +6490,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6578,9 +6528,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(`REF.FUNC`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) - -- if (|C.REFS_context| > 0) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 @@ -6647,7 +6595,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 @@ -6657,7 +6604,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} @@ -6669,9 +6615,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) @@ -6683,9 +6627,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 @@ -6695,7 +6637,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 @@ -6705,7 +6646,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) @@ -6716,7 +6656,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 @@ -6726,9 +6665,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 @@ -6738,10 +6675,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 @@ -6751,7 +6686,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) @@ -6762,7 +6696,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.SET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 @@ -6779,7 +6712,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 @@ -6790,9 +6722,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) @@ -6803,9 +6733,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 @@ -6815,10 +6743,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 @@ -6844,7 +6770,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`LOCAL.GET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 @@ -6854,7 +6779,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`LOCAL.SET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 @@ -6864,7 +6788,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 @@ -6874,7 +6797,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 @@ -6884,7 +6806,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 @@ -6894,7 +6815,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.GET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 @@ -6904,7 +6824,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.SET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 @@ -6914,7 +6833,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 @@ -6924,7 +6842,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.GROW`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 @@ -6934,7 +6851,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.FILL`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 @@ -6945,9 +6861,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) - -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) - -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6959,9 +6873,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6972,7 +6884,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(`ELEM.DROP`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 @@ -6982,7 +6893,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 @@ -6992,7 +6902,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 @@ -7002,7 +6911,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 @@ -7013,9 +6921,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) - -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) - -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 @@ -7025,9 +6931,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 @@ -7036,7 +6940,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(`DATA.DROP`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 @@ -7046,7 +6949,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) @@ -7057,7 +6959,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) @@ -7068,7 +6969,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) @@ -7079,7 +6979,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) @@ -7090,7 +6989,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) @@ -7101,7 +6999,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) @@ -7112,7 +7009,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) @@ -7123,7 +7019,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) @@ -7134,7 +7029,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -7146,7 +7040,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) @@ -7157,7 +7050,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -7377,15 +7269,11 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`t*`|) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`x_1*`|) - -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} - -- if ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}) =/= ?()) -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 @@ -7426,7 +7314,6 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) -- wf_valtype: `%`(t) - -- if ($default_(t) =/= ?()) -- if (!($default_(t)) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7509,7 +7396,6 @@ relation Instr_const: `%|-%CONST`(context, instr) -- wf_context: `%`(C) -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7520,9 +7406,7 @@ relation Instr_const: `%|-%CONST`(context, instr) -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, ADD_binop_Inn)) -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, SUB_binop_Inn)) -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, MUL_binop_Inn)) - -- if (|[I32_Inn I64_Inn]| > 0) -- if (Inn <- [I32_Inn I64_Inn]) - -- if (|[mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]| > 0) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7622,13 +7506,11 @@ relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- wf_context: `%`(C) -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -7646,7 +7528,6 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) -- wf_context: `%`(C) -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) @@ -7682,7 +7563,6 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- wf_reftype: `%`(rt) -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) @@ -7706,7 +7586,6 @@ relation Start_ok: `%|-%:OK`(context, start) -- wf_context: `%`(C) -- wf_start: `%`(START_start(x)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7726,7 +7605,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(TAG_externidx(x)) -- wf_externtype: `%`(TAG_externtype(jt)) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7735,7 +7613,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(GLOBAL_externidx(x)) -- wf_externtype: `%`(GLOBAL_externtype(gt)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7744,7 +7621,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(MEM_externidx(x)) -- wf_externtype: `%`(MEM_externtype(mt)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7753,7 +7629,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(TABLE_externidx(x)) -- wf_externtype: `%`(TABLE_externtype(tt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7762,7 +7637,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(FUNC_externidx(x)) -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7854,24 +7728,15 @@ relation Module_ok: `|-%:%`(module, moduletype) -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) -- wf_nonfuncs: `%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) - -- if (|`import*`| = |`xt_I*`|) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} - -- if (|`jt*`| = |`tag*`|) -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- if (|`mem*`| = |`mt*`|) -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} - -- if (|`table*`| = |`tt*`|) -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} - -- if (|`dt*`| = |`func*`|) -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} - -- if (|`data*`| = |`ok*`|) -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} - -- if (|`elem*`| = |`rt*`|) -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} - -- if (|`export*`| = |`nm*`|) - -- if (|`export*`| = |`xt_E*`|) -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) -- if (C = C' +++ {TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -12564,7 +12429,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_store: `%`(s) -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) - -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 @@ -12573,7 +12437,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_store: `%`(s) -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) - -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 @@ -12582,7 +12445,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_store: `%`(s) -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) - -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 @@ -12592,7 +12454,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_exninst: `%`(exn) -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) - -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.35 @@ -12684,7 +12545,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) - -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-111.34 @@ -12692,7 +12552,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:113.1-115.28 @@ -12700,7 +12559,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- wf_store: `%`(s) -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) - -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:117.1-119.32 @@ -12708,7 +12566,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) - -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:121.1-123.30 @@ -12716,7 +12573,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) -- wf_store: `%`(s) -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) - -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:125.1-128.37 @@ -12868,7 +12724,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12878,7 +12733,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12887,7 +12741,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12896,7 +12749,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12929,7 +12781,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(BR_IF_instr(l)) -- wf_instr: `%`(BR_instr(l)) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12937,17 +12788,15 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(BR_IF_instr(l)) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) - -- if ($proj_num__0(i) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: @@ -12955,7 +12804,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instr: `%`(BR_instr(l')) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13069,7 +12917,6 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.i31`{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- if ($proj_num__0(i) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(`REF.I31`_instr) -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) @@ -13191,7 +13038,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13209,7 +13055,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13227,7 +13072,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(TESTOP_instr(nt, testop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13237,7 +13081,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(RELOP_instr(nt, relop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13246,7 +13089,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(CONST_instr(nt_2, c)) - -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13263,7 +13105,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13273,7 +13114,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13284,7 +13124,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13293,7 +13132,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13302,7 +13140,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13320,7 +13157,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13340,7 +13176,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13362,8 +13197,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)) - -- if ($proj_num__0(c) =/= ?()) - -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13382,7 +13215,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13391,7 +13223,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VBITMASK_instr(sh)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13429,7 +13260,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13439,9 +13269,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) - -- if ($proj_num__0(c_2) =/= ?()) - -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)|) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13554,8 +13381,6 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -13565,8 +13390,6 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -13577,7 +13400,6 @@ relation `Step_read_before_table.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13594,7 +13416,6 @@ relation `Step_read_before_table.fill-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13604,8 +13425,6 @@ relation `Step_read_before_table.copy-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13622,8 +13441,6 @@ relation `Step_read_before_table.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13636,9 +13453,7 @@ relation `Step_read_before_table.copy-gt`: `%`(config) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) -- wf_instr: `%`(`TABLE.GET`_instr(y)) -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) @@ -13657,8 +13472,6 @@ relation `Step_read_before_table.copy-gt`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13668,8 +13481,6 @@ relation `Step_read_before_table.init-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13686,8 +13497,6 @@ relation `Step_read_before_table.init-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13697,7 +13506,6 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13714,7 +13522,6 @@ relation `Step_read_before_memory.fill-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13724,8 +13531,6 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13742,8 +13547,6 @@ relation `Step_read_before_memory.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13756,9 +13559,7 @@ relation `Step_read_before_memory.copy-gt`: `%`(config) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) @@ -13777,8 +13578,6 @@ relation `Step_read_before_memory.copy-gt`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13788,8 +13587,6 @@ relation `Step_read_before_memory.init-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13806,8 +13603,6 @@ relation `Step_read_before_memory.init-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13840,8 +13635,6 @@ relation `Step_read_before_array.fill-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13858,8 +13651,6 @@ relation `Step_read_before_array.fill-succ`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13869,8 +13660,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13878,8 +13667,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13896,8 +13683,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13905,8 +13690,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13921,16 +13704,13 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($sx(zt_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13945,8 +13725,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13954,8 +13732,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13965,7 +13741,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13973,8 +13748,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13991,7 +13764,6 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13999,8 +13771,6 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14012,8 +13782,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14021,8 +13789,6 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14041,8 +13807,6 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14050,8 +13814,6 @@ relation `Step_read_before_array.init_data-num`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14107,11 +13869,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) - -- if (a < |$funcinst(z)|) -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14127,9 +13887,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- (if ($default_(t) =/= ?()))*{t <- `t*`} -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- if (a < |$funcinst(z)|) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) @@ -14138,11 +13896,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) - -- if (a < |$funcinst(z)|) -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14170,7 +13926,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) -- wf_instr: `%`(CALL_REF_instr(yy)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14214,8 +13969,6 @@ relation Step_read: `%~>%`(config, instr*) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -14226,8 +13979,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -14278,15 +14029,13 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: @@ -14302,7 +14051,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14315,7 +14063,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(`TABLE.SET`_instr(x)) @@ -14329,8 +14076,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14343,8 +14088,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -14360,8 +14103,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14378,8 +14119,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14392,9 +14131,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) $instr_ref($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(`TABLE.SET`_instr(x)) @@ -14409,7 +14145,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14417,7 +14152,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14425,7 +14159,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14433,7 +14166,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14441,7 +14173,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14449,7 +14180,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14457,7 +14187,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14467,7 +14196,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} - -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14486,7 +14213,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -14497,7 +14223,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14506,7 +14231,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_uN: `%%`(N, j) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) @@ -14515,7 +14239,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14525,7 +14248,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) @@ -14545,7 +14267,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14558,7 +14279,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) @@ -14572,8 +14292,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14586,8 +14304,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -14603,8 +14319,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14621,8 +14335,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14635,9 +14347,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) @@ -14657,7 +14366,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) @@ -14702,8 +14410,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`val*`| = |`zt*`|) - -- (if ($default_($unpack(zt)) =/= ?()))*{zt <- `zt*`} -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14715,10 +14421,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])))]) - -- if ($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]) =/= ?()) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) - -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) - -- if (a < |$structinst(z)|) -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -14731,7 +14433,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($default_($unpack(zt)) =/= ?()) -- if (!($default_($unpack(zt))) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14739,7 +14440,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14748,7 +14448,6 @@ relation Step_read: `%~>%`(config, instr*) -- (wf_ref: `%`(ref))*{ref <- `ref*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14758,21 +14457,16 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(i) =/= ?()) - -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) - -- (if ($cunpack(zt) =/= ?()))^n{} -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zsize(zt) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14786,17 +14480,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [$instr_val(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])))]) - -- if ($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]) =/= ?()) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) - -- if (a < |$arrayinst(z)|) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -14810,7 +14498,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- if (a < |$arrayinst(z)|) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) @@ -14825,8 +14512,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14839,7 +14524,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) @@ -14866,8 +14550,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14875,8 +14557,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14889,8 +14569,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -14905,14 +14583,11 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($sx(zt_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14927,7 +14602,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($sx(zt_2) =/= ?()) -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14941,8 +14615,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14950,7 +14622,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14963,8 +14634,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- wf_ref: `%`(ref) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) @@ -14975,7 +14644,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14989,8 +14657,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -15000,8 +14666,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -15014,10 +14678,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) - -- if ($cunpack(zt) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) @@ -15094,9 +14754,7 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- if ($as_deftype($tag(z, x).TYPE_taginst) =/= ?()) -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) @@ -15118,13 +14776,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:340.1-342.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) @@ -15134,7 +14790,6 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:356.1-357.87 @@ -15154,13 +14809,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:506.1-510.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) @@ -15170,16 +14823,13 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.63 @@ -15187,13 +14837,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-531.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) @@ -15203,17 +14851,13 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-544.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) - -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -15224,7 +14868,6 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:558.1-559.84 @@ -15245,7 +14888,6 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`, zt <- `zt*`} -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) @@ -15260,8 +14902,6 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:724.1-727.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) - -- if ($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val) =/= ?()) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)])) -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -15273,7 +14913,6 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`} -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) @@ -15289,15 +14928,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-795.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) - -- if ($proj_num__0(i) =/= ?()) - -- if ($packfield_(zt, val) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -16076,10 +15711,8 @@ relation Context_ok: `|-%:OK`(context) -- wf_context: `%`(C_0) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) - -- (wf_context: `%`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{t_1 <- `t_1*`, t_2 <- `t_2*`} -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -16090,8 +15723,6 @@ relation Context_ok: `|-%:OK`(context) -- (Memtype_ok: `%|-%:OK`(C_0, mt))*{mt <- `mt*`} -- (Tabletype_ok: `%|-%:OK`(C_0, tt))*{tt <- `tt*`} -- (Deftype_ok: `%|-%:OK`(C_0, dt_F))*{dt_F <- `dt_F*`} - -- if (|`dt_F*`| = |`t_1*`|) - -- if (|`dt_F*`| = |`t_2*`|) -- (Expand: `%~~%`(dt_F, `FUNC%->%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{dt_F <- `dt_F*`, t_1 <- `t_1*`, t_2 <- `t_2*`} -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- `et*`} -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- `lct*`} @@ -16159,25 +15790,15 @@ relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) -- (wf_externtype: `%`(MEM_externtype(memtype)))*{memtype <- `memtype*`} -- (wf_externtype: `%`(TABLE_externtype(tabletype)))*{tabletype <- `tabletype*`} -- (Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, deftype))*{deftype <- `deftype*`} - -- if (|`tagaddr*`| = |`tagtype*`|) -- (Externaddr_ok: `%|-%:%`(s, TAG_externaddr(tagaddr), TAG_externtype(tagtype)))*{tagaddr <- `tagaddr*`, tagtype <- `tagtype*`} - -- if (|`globaladdr*`| = |`globaltype*`|) -- (Externaddr_ok: `%|-%:%`(s, GLOBAL_externaddr(globaladdr), GLOBAL_externtype(globaltype)))*{globaladdr <- `globaladdr*`, globaltype <- `globaltype*`} - -- if (|`deftype_F*`| = |`funcaddr*`|) -- (Externaddr_ok: `%|-%:%`(s, FUNC_externaddr(funcaddr), FUNC_externtype($typeuse_deftype(deftype_F))))*{deftype_F <- `deftype_F*`, funcaddr <- `funcaddr*`} - -- if (|`memaddr*`| = |`memtype*`|) -- (Externaddr_ok: `%|-%:%`(s, MEM_externaddr(memaddr), MEM_externtype(memtype)))*{memaddr <- `memaddr*`, memtype <- `memtype*`} - -- if (|`tableaddr*`| = |`tabletype*`|) -- (Externaddr_ok: `%|-%:%`(s, TABLE_externaddr(tableaddr), TABLE_externtype(tabletype)))*{tableaddr <- `tableaddr*`, tabletype <- `tabletype*`} - -- if (|`dataaddr*`| = |`datatype*`|) - -- (if (dataaddr < |s.DATAS_store|))*{dataaddr <- `dataaddr*`} -- (Datainst_ok: `%|-%:%`(s, s.DATAS_store[dataaddr], datatype))*{dataaddr <- `dataaddr*`, datatype <- `datatype*`} - -- if (|`elemaddr*`| = |`elemtype*`|) - -- (if (elemaddr < |s.ELEMS_store|))*{elemaddr <- `elemaddr*`} -- (Eleminst_ok: `%|-%:%`(s, s.ELEMS_store[elemaddr], elemtype))*{elemaddr <- `elemaddr*`, elemtype <- `elemtype*`} -- (Exportinst_ok: `%|-%:OK`(s, exportinst))*{exportinst <- `exportinst*`} -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) - -- if (|TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}| > 0) -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16190,7 +15811,6 @@ relation Frame_ok: `%|-%:%`(store, frame, context) -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) - -- if (|`lct*`| = |`val?*`|) -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16278,15 +15898,11 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`t*`|) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`x_1*`|) - -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} - -- if ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}) =/= ?()) -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:47.1-51.33 @@ -16394,7 +16010,6 @@ relation Structinst_ok: `%|-%:OK`(store, structinst) -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`fv*`| = |`zt*`|) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16416,10 +16031,8 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) -- wf_store: `%`(s) -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if (ta < |s.TAGS_store|) -- if ($typeuse_deftype(dt) = s.TAGS_store[ta].TYPE_taginst) -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if (|`t*`| = |`val*`|) -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16440,21 +16053,16 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 rule `ref.struct`{a : addr, s : store, i : nat, `ft*` : fieldtype*, zt : storagetype}: `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) - -- if (i < |s.STRUCTS_store[a].FIELDS_structinst|) - -- if (a < |s.STRUCTS_store|) -- wf_store: `%`(s) -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if (i < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:232.1-234.42 rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) - -- if (i < |s.ARRAYS_store[a].FIELDS_arrayinst|) - -- if (a < |s.ARRAYS_store|) -- wf_store: `%`(s) -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) @@ -16463,8 +16071,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 rule `ref.exn`{a : addr, s : store, i : nat}: `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, $fieldval_val(s.EXNS_store[a].FIELDS_exninst[i])) - -- if (i < |s.EXNS_store[a].FIELDS_exninst|) - -- if (a < |s.EXNS_store|) -- wf_store: `%`(s) -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) @@ -16509,19 +16115,12 @@ relation Store_ok: `|-%:OK`(store) -- (wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} -- (wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} -- wf_store: `%`({TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) - -- if (|`taginst*`| = |`tagtype*`|) -- (Taginst_ok: `%|-%:%`(s, taginst, tagtype))*{taginst <- `taginst*`, tagtype <- `tagtype*`} - -- if (|`globalinst*`| = |`globaltype*`|) -- (Globalinst_ok: `%|-%:%`(s, globalinst, globaltype))*{globalinst <- `globalinst*`, globaltype <- `globaltype*`} - -- if (|`meminst*`| = |`memtype*`|) -- (Meminst_ok: `%|-%:%`(s, meminst, memtype))*{meminst <- `meminst*`, memtype <- `memtype*`} - -- if (|`tableinst*`| = |`tabletype*`|) -- (Tableinst_ok: `%|-%:%`(s, tableinst, tabletype))*{tableinst <- `tableinst*`, tabletype <- `tabletype*`} - -- if (|`deftype*`| = |`funcinst*`|) -- (Funcinst_ok: `%|-%:%`(s, funcinst, deftype))*{deftype <- `deftype*`, funcinst <- `funcinst*`} - -- if (|`datainst*`| = |`datatype*`|) -- (Datainst_ok: `%|-%:%`(s, datainst, datatype))*{datainst <- `datainst*`, datatype <- `datatype*`} - -- if (|`eleminst*`| = |`elemtype*`|) -- (Eleminst_ok: `%|-%:%`(s, eleminst, elemtype))*{eleminst <- `eleminst*`, elemtype <- `elemtype*`} -- (Structinst_ok: `%|-%:OK`(s, structinst))*{structinst <- `structinst*`} -- (Arrayinst_ok: `%|-%:OK`(s, arrayinst))*{arrayinst <- `arrayinst*`} @@ -16601,8 +16200,6 @@ relation Extend_structinst: `%<=%`(structinst, structinst) -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`fv*`| = |`fv'*`|) - -- if (|`fv*`| = |`mut?*`|) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16614,7 +16211,6 @@ relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (|`fv*`| = |`fv'*`|) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16631,35 +16227,15 @@ relation Extend_store: `%<=%`(store, store) `%<=%`(s, s') -- wf_store: `%`(s) -- wf_store: `%`(s') - -- (if (a < |s.TAGS_store|))^(a<|s.TAGS_store|){} - -- (if (a < |s'.TAGS_store|))^(a<|s.TAGS_store|){} -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} - -- (if (a < |s.GLOBALS_store|))^(a<|s.GLOBALS_store|){} - -- (if (a < |s'.GLOBALS_store|))^(a<|s.GLOBALS_store|){} -- (Extend_globalinst: `%<=%`(s.GLOBALS_store[a], s'.GLOBALS_store[a]))^(a<|s.GLOBALS_store|){} - -- (if (a < |s.MEMS_store|))^(a<|s.MEMS_store|){} - -- (if (a < |s'.MEMS_store|))^(a<|s.MEMS_store|){} -- (Extend_meminst: `%<=%`(s.MEMS_store[a], s'.MEMS_store[a]))^(a<|s.MEMS_store|){} - -- (if (a < |s.TABLES_store|))^(a<|s.TABLES_store|){} - -- (if (a < |s'.TABLES_store|))^(a<|s.TABLES_store|){} -- (Extend_tableinst: `%<=%`(s.TABLES_store[a], s'.TABLES_store[a]))^(a<|s.TABLES_store|){} - -- (if (a < |s.FUNCS_store|))^(a<|s.FUNCS_store|){} - -- (if (a < |s'.FUNCS_store|))^(a<|s.FUNCS_store|){} -- (Extend_funcinst: `%<=%`(s.FUNCS_store[a], s'.FUNCS_store[a]))^(a<|s.FUNCS_store|){} - -- (if (a < |s.DATAS_store|))^(a<|s.DATAS_store|){} - -- (if (a < |s'.DATAS_store|))^(a<|s.DATAS_store|){} -- (Extend_datainst: `%<=%`(s.DATAS_store[a], s'.DATAS_store[a]))^(a<|s.DATAS_store|){} - -- (if (a < |s.ELEMS_store|))^(a<|s.ELEMS_store|){} - -- (if (a < |s'.ELEMS_store|))^(a<|s.ELEMS_store|){} -- (Extend_eleminst: `%<=%`(s.ELEMS_store[a], s'.ELEMS_store[a]))^(a<|s.ELEMS_store|){} - -- (if (a < |s.STRUCTS_store|))^(a<|s.STRUCTS_store|){} - -- (if (a < |s'.STRUCTS_store|))^(a<|s.STRUCTS_store|){} -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} - -- (if (a < |s.ARRAYS_store|))^(a<|s.ARRAYS_store|){} - -- (if (a < |s'.ARRAYS_store|))^(a<|s.ARRAYS_store|){} -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} - -- (if (a < |s.EXNS_store|))^(a<|s.EXNS_store|){} - -- (if (a < |s'.EXNS_store|))^(a<|s.EXNS_store|){} -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16753,7 +16329,6 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 diff --git a/spectec/test-middlend/specification.exp/10-alias-demut.il b/spectec/test-middlend/specification.exp/09-definition-to-relation.il similarity index 77% rename from spectec/test-middlend/specification.exp/10-alias-demut.il rename to spectec/test-middlend/specification.exp/09-definition-to-relation.il index 4634e284d9..0ed7062260 100644 --- a/spectec/test-middlend/specification.exp/10-alias-demut.il +++ b/spectec/test-middlend/specification.exp/09-definition-to-relation.il @@ -244,32 +244,68 @@ syntax i64 = iN syntax i128 = iN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $signif(N : N) : nat? +relation fun_signif_before_fun_signif_case_2: `%`(N) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(32) = ?(23) + rule fun_signif_case_1: + `%`(64) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(64) = ?(52) - def $signif{x0 : N}(x0) = ?() - -- otherwise + rule fun_signif_case_0: + `%`(32) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $expon(N : N) : nat? +relation fun_signif: `%%`(N, nat?) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(32) = ?(8) + rule fun_signif_case_0: + `%%`(32, ?(23)) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(64) = ?(11) - def $expon{x0 : N}(x0) = ?() - -- otherwise + rule fun_signif_case_1: + `%%`(64, ?(52)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_signif_case_2{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_signif_before_fun_signif_case_2: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_expon_before_fun_expon_case_2: `%`(N) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_1: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_0: + `%`(32) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_expon: `%%`(N, nat?) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_0: + `%%`(32, ?(8)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_1: + `%%`(64, ?(11)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_2{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_expon_before_fun_expon_case_2: `%`(x0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $M(N : N) : nat +relation fun_M: `%%`(N, nat) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $M{N : nat}(N) = !($signif(N)) + rule fun_M_case_0{N : nat, var_0 : nat?}: + `%%`(N, !(var_0)) + -- fun_signif: `%%`(N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $E(N : N) : nat +relation fun_E: `%%`(N, nat) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $E{N : nat}(N) = !($expon(N)) + rule fun_E_case_0{N : nat, var_0 : nat?}: + `%%`(N, !(var_0)) + -- fun_expon: `%%`(N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax exp = int @@ -284,23 +320,28 @@ syntax fNmag = ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_fNmag: `%%`(N, fNmag) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_0{N : N, m : m, exp : exp}: + rule fNmag_case_0{N : N, m : m, exp : exp, var_1 : nat, var_0 : nat}: `%%`(N, NORM_fNmag(m, exp)) - -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + -- if ((m < (2 ^ var_0)) /\ ((((2 : nat <:> int) - ((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + -- fun_E: `%%`(N, var_1) + -- fun_M: `%%`(N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_1{N : N, exp : exp, m : m}: + rule fNmag_case_1{N : N, exp : exp, m : m, var_1 : nat, var_0 : nat}: `%%`(N, SUBNORM_fNmag(m)) - -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) + -- if ((m < (2 ^ var_0)) /\ (((2 : nat <:> int) - ((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) + -- fun_E: `%%`(N, var_1) + -- fun_M: `%%`(N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rule fNmag_case_2{N : N}: `%%`(N, INF_fNmag) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_3{N : N, m : m}: + rule fNmag_case_3{N : N, m : m, var_0 : nat}: `%%`(N, NAN_fNmag(m)) - -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) + -- if ((1 <= m) /\ (m < (2 ^ var_0))) + -- fun_M: `%%`(N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax fN = @@ -326,27 +367,32 @@ syntax f32 = fN syntax f64 = fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fzero(N : N) : fN +relation fun_fzero: `%%`(N, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + rule fun_fzero_case_0{N : nat}: + `%%`(N, POS_fN(SUBNORM_fNmag(0))) -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fnat(N : N, nat : nat) : fN +relation fun_fnat: `%%%`(N, nat, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + rule fun_fnat_case_0{N : nat, n : nat}: + `%%%`(N, n, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fone(N : N) : fN +relation fun_fone: `%%`(N, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + rule fun_fone_case_0{N : nat}: + `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $canon_(N : N) : nat +relation fun_canon_: `%%`(N, nat) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + rule fun_canon__case_0{N : nat, var_0 : nat?}: + `%%`(N, (2 ^ (((!(var_0) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + -- fun_signif: `%%`(N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax vN = uN @@ -381,45 +427,62 @@ relation wf_char: `%`(char) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -def $cont(byte : byte) : nat +relation fun_cont: `%%`(byte, nat) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $cont{b : byte}(b) = ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) + rule fun_cont_case_0{b : byte}: + `%%`(b, ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat)) -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 -def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 - def $utf8{`ch*` : char*}(ch#1*{ch#1 <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 - def $utf8{ch : char, b : byte}([ch]) = [b] +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation fun_utf8: `%%`(char*, byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_0{`ch*` : char*, `var_0*` : byte**}: + `%%`(ch#1*{ch#1 <- `ch*`}, $concat_(syntax byte, var_0*{var_0 <- `var_0*`})) + -- (fun_utf8: `%%`([ch], var_0))*{var_0 <- `var_0*`, ch <- `ch*`} + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_1{ch : char, b : byte}: + `%%`([ch], [b]) -- wf_byte: `%`(b) -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) -- if ($proj_char_0(ch).0 < 128) -- if (`%`_byte($proj_char_0(ch).0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 - def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: + `%%`([ch], [b_1 b_2]) + -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) - -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3]) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) - -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * var_0)) + var_1)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_4{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, var_2 : nat, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3 b_4]) + -- fun_cont: `%%`(b_4, var_2) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- wf_byte: `%`(b_3) -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) - -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) + -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * var_0)) + ((2 ^ 6) * var_1)) + var_2)) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -434,10 +497,11 @@ def $proj_name_0(x : name) : (char*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_name: `%`(name) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule name_case_0{`char*` : char*}: + rule name_case_0{`char*` : char*, var_0 : byte*}: `%`(`%`_name(`char*`)) -- (wf_char: `%`(char))*{char <- `char*`} - -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) + -- if (|var_0| < (2 ^ 32)) + -- fun_utf8: `%%`(char*{char <- `char*`}, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax idx = u32 @@ -610,97 +674,128 @@ relation wf_free: `%`(free) -- (wf_uN: `%%`(32, var_9))*{var_9 <- var_9} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_opt(free?) : free +relation fun_free_opt: `%%`(free?, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_opt_case_0: + `%%`(?(), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt{free : free}(?(free)) = free + rule fun_free_opt_case_1{free : free}: + `%%`(?(free), free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.1-173.29 -def $free_list(free*) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 - def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation fun_free_list: `%%`(free*, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule fun_free_list_case_0: + `%%`([], {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 - def $free_list{free : free, `free'*` : free*}([free] ++ free'#1*{free'#1 <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule fun_free_list_case_1{free : free, `free'*` : free*, var_0 : free}: + `%%`([free] ++ free'#1*{free'#1 <- `free'*`}, free +++ var_0) + -- fun_free_list: `%%`(free'*{free' <- `free'*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_typeidx(typeidx : typeidx) : free +relation fun_free_typeidx: `%%`(typeidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_typeidx_case_0{typeidx : uN}: + `%%`(typeidx, {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_funcidx(funcidx : funcidx) : free +relation fun_free_funcidx: `%%`(funcidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_funcidx_case_0{funcidx : uN}: + `%%`(funcidx, {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_globalidx(globalidx : globalidx) : free +relation fun_free_globalidx: `%%`(globalidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_globalidx_case_0{globalidx : uN}: + `%%`(globalidx, {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_tableidx(tableidx : tableidx) : free +relation fun_free_tableidx: `%%`(tableidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_tableidx_case_0{tableidx : uN}: + `%%`(tableidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_memidx(memidx : memidx) : free +relation fun_free_memidx: `%%`(memidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_memidx_case_0{memidx : uN}: + `%%`(memidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_elemidx(elemidx : elemidx) : free +relation fun_free_elemidx: `%%`(elemidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_elemidx_case_0{elemidx : uN}: + `%%`(elemidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_dataidx(dataidx : dataidx) : free +relation fun_free_dataidx: `%%`(dataidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} + rule fun_free_dataidx_case_0{dataidx : uN}: + `%%`(dataidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_localidx(localidx : localidx) : free +relation fun_free_localidx: `%%`(localidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} + rule fun_free_localidx_case_0{localidx : uN}: + `%%`(localidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_labelidx(labelidx : labelidx) : free +relation fun_free_labelidx: `%%`(labelidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} + rule fun_free_labelidx_case_0{labelidx : uN}: + `%%`(labelidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_tagidx(tagidx : tagidx) : free +relation fun_free_tagidx: `%%`(tagidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_tagidx{tagidx : uN}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} + rule fun_free_tagidx_case_0{tagidx : uN}: + `%%`(tagidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_externidx(externidx : externidx) : free +relation fun_free_externidx: `%%`(externidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{funcidx : uN}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) + rule fun_free_externidx_case_0{funcidx : uN, var_0 : free}: + `%%`(FUNC_externidx(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{globalidx : uN}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) + rule fun_free_externidx_case_1{globalidx : uN, var_0 : free}: + `%%`(GLOBAL_externidx(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) + rule fun_free_externidx_case_2{tableidx : uN, var_0 : free}: + `%%`(TABLE_externidx(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + rule fun_free_externidx_case_3{memidx : uN, var_0 : free}: + `%%`(MEM_externidx(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) + rule fun_free_externidx_case_4{tagidx : uN, var_0 : free}: + `%%`(TAG_externidx(tagidx), var_0) + -- fun_free_tagidx: `%%`(tagidx, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -814,6 +909,9 @@ syntax storagetype = | I8 | I16 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 +syntax resulttype = list(syntax valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 syntax fieldtype = | `%%`(`mut?` : mut?, storagetype : storagetype) @@ -822,7 +920,7 @@ syntax fieldtype = syntax comptype = | STRUCT(list(syntax fieldtype)) | ARRAY(fieldtype : fieldtype) - | `FUNC%->%`(resulttype : list(syntax valtype), resulttype : list(syntax valtype)) + | `FUNC%->%`(resulttype : resulttype, resulttype : resulttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 syntax subtype = @@ -833,9 +931,6 @@ syntax rectype = | REC(list(syntax subtype)) } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax resulttype = list(syntax valtype) - def $heaptype_absheaptype(absheaptype) : heaptype def $heaptype_absheaptype(ANY_absheaptype) = ANY_heaptype def $heaptype_absheaptype(EQ_absheaptype) = EQ_heaptype @@ -1151,75 +1246,87 @@ syntax Cnn = | V128 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $ANYREF : reftype +relation fun_ANYREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + rule fun_ANYREF_case_0: + `%`(REF_reftype(?(NULL_null), ANY_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EQREF : reftype +relation fun_EQREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + rule fun_EQREF_case_0: + `%`(REF_reftype(?(NULL_null), EQ_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $I31REF : reftype +relation fun_I31REF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + rule fun_I31REF_case_0: + `%`(REF_reftype(?(NULL_null), I31_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $STRUCTREF : reftype +relation fun_STRUCTREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + rule fun_STRUCTREF_case_0: + `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $ARRAYREF : reftype +relation fun_ARRAYREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + rule fun_ARRAYREF_case_0: + `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FUNCREF : reftype +relation fun_FUNCREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + rule fun_FUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EXNREF : reftype +relation fun_EXNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + rule fun_EXNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EXTERNREF : reftype +relation fun_EXTERNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + rule fun_EXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLREF : reftype +relation fun_NULLREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + rule fun_NULLREF_case_0: + `%`(REF_reftype(?(NULL_null), NONE_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLFUNCREF : reftype +relation fun_NULLFUNCREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + rule fun_NULLFUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLEXNREF : reftype +relation fun_NULLEXNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + rule fun_NULLEXNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLEXTERNREF : reftype +relation fun_NULLEXTERNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + rule fun_NULLEXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1291,6 +1398,7 @@ relation wf_limits: `%`(limits) rule limits_case_0{u64 : u64, `u64?` : u64?}: `%`(`[%..%]`_limits(u64, `u64?`)) -- wf_uN: `%%`(64, u64) + -- (wf_uN: `%%`(64, u64))?{u64 <- `u64?`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax tagtype = typeuse @@ -1384,35 +1492,95 @@ relation wf_moduletype: `%`(moduletype) -- (wf_externtype: `%`(`externtype*_0`))*{`externtype*_0` <- `externtype*_0`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $IN(N : N) : Inn? +relation fun_IN_before_fun_IN_case_2: `%`(N) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(32) = ?(I32_Inn) + rule fun_IN_case_1: + `%`(64) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(64) = ?(I64_Inn) - def $IN{x0 : N}(x0) = ?() - -- otherwise + rule fun_IN_case_0: + `%`(32) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FN(N : N) : Fnn? +relation fun_IN: `%%`(N, Inn?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(32) = ?(F32_Fnn) + rule fun_IN_case_0: + `%%`(32, ?(I32_Inn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(64) = ?(F64_Fnn) - def $FN{x0 : N}(x0) = ?() - -- otherwise + rule fun_IN_case_1: + `%%`(64, ?(I64_Inn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_IN_case_2{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_IN_before_fun_IN_case_2: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_FN_before_fun_FN_case_2: `%`(N) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_FN_case_1: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_FN_case_0: + `%`(32) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $JN(N : N) : Jnn? +relation fun_FN: `%%`(N, Fnn?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(8) = ?(I8_Jnn) + rule fun_FN_case_0: + `%%`(32, ?(F32_Fnn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(16) = ?(I16_Jnn) + rule fun_FN_case_1: + `%%`(64, ?(F64_Fnn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(32) = ?(I32_Jnn) + rule fun_FN_case_2{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_FN_before_fun_FN_case_2: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_JN_before_fun_JN_case_4: `%`(N) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(64) = ?(I64_Jnn) - def $JN{x0 : N}(x0) = ?() - -- otherwise + rule fun_JN_case_3: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_2: + `%`(32) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_1: + `%`(16) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_0: + `%`(8) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_JN: `%%`(N, Jnn?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_0: + `%%`(8, ?(I8_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_1: + `%%`(16, ?(I16_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_2: + `%%`(32, ?(I32_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_3: + `%%`(64, ?(I64_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_4{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_JN_before_fun_JN_case_4: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $size(numtype : numtype) : nat @@ -1453,23 +1621,69 @@ def $lsize(lanetype : lanetype) : nat def $lsize(I16_lanetype) = $psize(I16_packtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $zsize(storagetype : storagetype) : nat? +relation fun_zsize_before_fun_zsize_case_7: `%`(storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I32_storagetype) = ?($size(I32_numtype)) + rule fun_zsize_case_6: + `%`(I16_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I64_storagetype) = ?($size(I64_numtype)) + rule fun_zsize_case_5: + `%`(I8_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(F32_storagetype) = ?($size(F32_numtype)) + rule fun_zsize_case_4: + `%`(V128_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(F64_storagetype) = ?($size(F64_numtype)) + rule fun_zsize_case_3: + `%`(F64_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) + rule fun_zsize_case_2: + `%`(F32_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I8_storagetype) = ?($psize(I8_packtype)) + rule fun_zsize_case_1: + `%`(I64_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I16_storagetype) = ?($psize(I16_packtype)) - def $zsize{x0 : storagetype}(x0) = ?() - -- otherwise + rule fun_zsize_case_0: + `%`(I32_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_zsize: `%%`(storagetype, nat?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_0: + `%%`(I32_storagetype, ?($size(I32_numtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_1: + `%%`(I64_storagetype, ?($size(I64_numtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_2: + `%%`(F32_storagetype, ?($size(F32_numtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_3: + `%%`(F64_storagetype, ?($size(F64_numtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_4: + `%%`(V128_storagetype, ?($vsize(V128_vectype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_5: + `%%`(I8_storagetype, ?($psize(I8_packtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_6: + `%%`(I16_storagetype, ?($psize(I16_packtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_7{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_zsize_before_fun_zsize_case_7: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $isize(Inn : Inn) : nat @@ -1487,31 +1701,69 @@ def $fsize(Fnn : Fnn) : nat def $fsize{Fnn : Fnn}(Fnn) = $size($numtype_Fnn(Fnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $inv_isize(nat : nat) : Inn? +relation fun_inv_isize_before_fun_inv_isize_case_2: `%`(nat) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_isize(32) = ?(I32_Inn) + rule fun_inv_isize_case_1: + `%`(64) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_isize(64) = ?(I64_Inn) - def $inv_isize{x0 : nat}(x0) = ?() - -- otherwise + rule fun_inv_isize_case_0: + `%`(32) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $inv_jsize(nat : nat) : Jnn? +relation fun_inv_isize: `%%`(nat, Inn?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize(8) = ?(I8_Jnn) + rule fun_inv_isize_case_0: + `%%`(32, ?(I32_Inn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize(16) = ?(I16_Jnn) + rule fun_inv_isize_case_1: + `%%`(64, ?(I64_Inn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{n : nat}(n) = $Jnn_addrtype(iter_val#1)?{iter_val#1 <- $inv_isize(n)} + rule fun_inv_isize_case_2{x0 : nat}: + `%%`(x0, ?()) + -- ~ fun_inv_isize_before_fun_inv_isize_case_2: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $inv_fsize(nat : nat) : Fnn? +relation fun_inv_jsize: `%%`(nat, Jnn?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_fsize(32) = ?(F32_Fnn) + rule fun_inv_jsize_case_0: + `%%`(8, ?(I8_Jnn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_fsize(64) = ?(F64_Fnn) - def $inv_fsize{x0 : nat}(x0) = ?() - -- otherwise + rule fun_inv_jsize_case_1: + `%%`(16, ?(I16_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_jsize_case_2{n : nat, var_0 : Inn?}: + `%%`(n, $Jnn_addrtype(iter_val#1)?{iter_val#1 <- var_0}) + -- fun_inv_isize: `%%`(n, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_inv_fsize_before_fun_inv_fsize_case_2: `%`(nat) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_1: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_0: + `%`(32) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_inv_fsize: `%%`(nat, Fnn?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_0: + `%%`(32, ?(F32_Fnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_1: + `%%`(64, ?(F64_Fnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_2{x0 : nat}: + `%%`(x0, ?()) + -- ~ fun_inv_fsize_before_fun_inv_fsize_case_2: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $sizenn(numtype : numtype) : nat @@ -1559,9 +1811,11 @@ def $jsizenn(Jnn : Jnn) : nat def $jsizenn{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $inv_jsizenn(nat : nat) : Jnn? +relation fun_inv_jsizenn: `%%`(nat, Jnn?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsizenn{n : nat}(n) = $inv_jsize(n) + rule fun_inv_jsizenn_case_0{n : nat, var_0 : Jnn?}: + `%%`(n, var_0) + -- fun_inv_jsize: `%%`(n, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $lunpack(lanetype : lanetype) : numtype @@ -1579,82 +1833,231 @@ def $lunpack(lanetype : lanetype) : numtype def $lunpack(I16_lanetype) = I32_numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $unpack(storagetype : storagetype) : valtype +relation fun_unpack: `%%`(storagetype, valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(BOT_storagetype) = BOT_valtype + rule fun_unpack_case_0: + `%%`(BOT_storagetype, BOT_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack{`null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype)) = REF_valtype(`null?`, heaptype) + rule fun_unpack_case_1{`null?` : null?, heaptype : heaptype}: + `%%`(REF_storagetype(`null?`, heaptype), REF_valtype(`null?`, heaptype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(V128_storagetype) = V128_valtype + rule fun_unpack_case_2: + `%%`(V128_storagetype, V128_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(F64_storagetype) = F64_valtype + rule fun_unpack_case_3: + `%%`(F64_storagetype, F64_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(F32_storagetype) = F32_valtype + rule fun_unpack_case_4: + `%%`(F32_storagetype, F32_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(I64_storagetype) = I64_valtype + rule fun_unpack_case_5: + `%%`(I64_storagetype, I64_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(I32_storagetype) = I32_valtype + rule fun_unpack_case_6: + `%%`(I32_storagetype, I32_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(I8_storagetype) = I32_valtype + rule fun_unpack_case_7: + `%%`(I8_storagetype, I32_valtype) -- wf_valtype: `%`(I32_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(I16_storagetype) = I32_valtype + rule fun_unpack_case_8: + `%%`(I16_storagetype, I32_valtype) -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $nunpack(storagetype : storagetype) : numtype? +relation fun_nunpack_before_fun_nunpack_case_6: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_5: + `%`(I16_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_4: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_0: + `%`(I32_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_nunpack: `%%`(storagetype, numtype?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_0: + `%%`(I32_storagetype, ?(I32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack(I32_storagetype) = ?(I32_numtype) + rule fun_nunpack_case_1: + `%%`(I64_storagetype, ?(I64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack(I64_storagetype) = ?(I64_numtype) + rule fun_nunpack_case_2: + `%%`(F32_storagetype, ?(F32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack(F32_storagetype) = ?(F32_numtype) + rule fun_nunpack_case_3: + `%%`(F64_storagetype, ?(F64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack(F64_storagetype) = ?(F64_numtype) + rule fun_nunpack_case_4: + `%%`(I8_storagetype, ?(I32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack(I8_storagetype) = ?(I32_numtype) + rule fun_nunpack_case_5: + `%%`(I16_storagetype, ?(I32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack(I16_storagetype) = ?(I32_numtype) - def $nunpack{x0 : storagetype}(x0) = ?() - -- otherwise + rule fun_nunpack_case_6{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_nunpack_before_fun_nunpack_case_6: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $vunpack(storagetype : storagetype) : vectype? +relation fun_vunpack_before_fun_vunpack_case_1: `%`(storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $vunpack(V128_storagetype) = ?(V128_vectype) - def $vunpack{x0 : storagetype}(x0) = ?() - -- otherwise + rule fun_vunpack_case_0: + `%`(V128_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_vunpack: `%%`(storagetype, vectype?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_vunpack_case_0: + `%%`(V128_storagetype, ?(V128_vectype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_vunpack_case_1{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_vunpack_before_fun_vunpack_case_1: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $cunpack(storagetype : storagetype) : consttype? +relation fun_cunpack_before_fun_cunpack_case_13: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_12: + `%`(I16_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_11: + `%`(I8_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(I32_storagetype) = ?(I32_consttype) + rule fun_cunpack_case_10: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_9: + `%`(F32_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(I64_storagetype) = ?(I64_consttype) + rule fun_cunpack_case_8: + `%`(I64_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(F32_storagetype) = ?(F32_consttype) + rule fun_cunpack_case_7: + `%`(I32_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(F64_storagetype) = ?(F64_consttype) + rule fun_cunpack_case_6: + `%`(I16_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(V128_storagetype) = ?(V128_consttype) + rule fun_cunpack_case_5: + `%`(I8_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(I8_storagetype) = ?(I32_consttype) + rule fun_cunpack_case_4: + `%`(V128_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(I16_storagetype) = ?(I32_consttype) + rule fun_cunpack_case_3: + `%`(F64_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(I32_storagetype) = ?($consttype_numtype($lunpack(I32_lanetype))) + rule fun_cunpack_case_2: + `%`(F32_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(I64_storagetype) = ?($consttype_numtype($lunpack(I64_lanetype))) + rule fun_cunpack_case_1: + `%`(I64_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(F32_storagetype) = ?($consttype_numtype($lunpack(F32_lanetype))) + rule fun_cunpack_case_0: + `%`(I32_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_cunpack: `%%`(storagetype, consttype?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(F64_storagetype) = ?($consttype_numtype($lunpack(F64_lanetype))) + rule fun_cunpack_case_0: + `%%`(I32_storagetype, ?(I32_consttype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(I8_storagetype) = ?($consttype_numtype($lunpack(I8_lanetype))) + rule fun_cunpack_case_1: + `%%`(I64_storagetype, ?(I64_consttype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(I16_storagetype) = ?($consttype_numtype($lunpack(I16_lanetype))) - def $cunpack{x0 : storagetype}(x0) = ?() - -- otherwise + rule fun_cunpack_case_2: + `%%`(F32_storagetype, ?(F32_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_3: + `%%`(F64_storagetype, ?(F64_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_4: + `%%`(V128_storagetype, ?(V128_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_5: + `%%`(I8_storagetype, ?(I32_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_6: + `%%`(I16_storagetype, ?(I32_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_7: + `%%`(I32_storagetype, ?($consttype_numtype($lunpack(I32_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_8: + `%%`(I64_storagetype, ?($consttype_numtype($lunpack(I64_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_9: + `%%`(F32_storagetype, ?($consttype_numtype($lunpack(F32_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_10: + `%%`(F64_storagetype, ?($consttype_numtype($lunpack(F64_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_11: + `%%`(I8_storagetype, ?($consttype_numtype($lunpack(I8_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_12: + `%%`(I16_storagetype, ?($consttype_numtype($lunpack(I16_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_13{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_cunpack_before_fun_cunpack_case_13: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype @@ -1662,20 +2065,33 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size($numtype_addrtype(at_1)) <= $size($numtype_addrtype(at_2))) then at_1 else at_2) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $diffrt(reftype : reftype, reftype : reftype) : reftype +relation fun_diffrt: `%%%`(reftype, reftype, reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#1?{null_1#1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + rule fun_diffrt_case_0{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1#1?{null_1#1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2), REF_reftype(?(), ht_1)) -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#2?{null_1#2 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + rule fun_diffrt_case_1{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1#2?{null_1#2 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2), REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) -- wf_reftype: `%`(REF_reftype(null_1#3?{null_1#3 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $as_deftype(typeuse : typeuse) : deftype? +relation fun_as_deftype_before_fun_as_deftype_case_1: `%`(typeuse) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = ?(_DEF_deftype(rectype, n)) - def $as_deftype{x0 : typeuse}(x0) = ?() - -- otherwise + rule fun_as_deftype_case_0{rectype : rectype, n : n}: + `%`(_DEF_typeuse(rectype, n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_as_deftype: `%%`(typeuse, deftype?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_as_deftype_case_0{rectype : rectype, n : n}: + `%%`(_DEF_typeuse(rectype, n), ?(_DEF_deftype(rectype, n))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_as_deftype_case_1{x0 : typeuse}: + `%%`(x0, ?()) + -- ~ fun_as_deftype_before_fun_as_deftype_case_1: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { @@ -1742,36 +2158,82 @@ def $funcsxt(externtype*) : deftype* def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#11*{xt#11 <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_typevar_before_fun_subst_typevar_case_2: `%%%`(typevar, typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_typevar_case_1{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*, var_0 : typeuse?}: + `%%%`(tv, [tv_1] ++ tv'#1*{tv'#1 <- `tv'*`}, [tu_1] ++ tu'#1*{tu'#1 <- `tu'*`}) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%`(tv, [], []) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.126 -def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 - def $subst_typevar{tv : typevar}(tv, [], []) = ?($typeuse_typevar(tv)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 - def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'#1*{tv'#1 <- `tv'*`}, [tu_1] ++ tu'#1*{tu'#1 <- `tu'*`}) = (if (tv = tv_1) then tu_1 else iter_val#2)?{iter_val#2 <- $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})} - def $subst_typevar{x0 : typevar, x1 : typevar*, x2 : typeuse*}(x0, x1, x2) = ?() - -- otherwise +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation fun_subst_typevar: `%%%%`(typevar, typevar*, typeuse*, typeuse?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%%`(tv, [], [], ?($typeuse_typevar(tv))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_1{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*, var_0 : typeuse?}: + `%%%%`(tv, [tv_1] ++ tv'#1*{tv'#1 <- `tv'*`}, [tu_1] ++ tu'#1*{tu'#1 <- `tu'*`}, (if (tv = tv_1) then tu_1 else iter_val#2)?{iter_val#2 <- var_0}) + -- fun_subst_typevar: `%%%%`(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_2{x0 : typevar, x1 : typevar*, x2 : typeuse*}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_subst_typevar_before_fun_subst_typevar_case_2: `%%%`(x0, x1, x2) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.73 -def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 - def $minus_recs([], []) = ?(([], [])) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 - def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 - def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}) = ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation fun_minus_recs_before_fun_minus_recs_case_3: `%%`(typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}) + -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) -- (wf_typevar: `%`(tv'#2))*{tv'#2 <- `tv'*`} -- (wf_typeuse: `%`(tu'#2))*{tu'#2 <- `tu'*`} -- wf_typevar: `%`(_IDX_typevar(x)) - -- if ((tv'#3*{tv'#3 <- `tv'*`}, tu'#3*{tu'#3 <- `tu'*`}) = !($minus_recs(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}))) - def $minus_recs{x0 : typevar*, x1 : typeuse*}(x0, x1) = ?() - -- otherwise + -- if ((tv'#3*{tv'#3 <- `tv'*`}, tu'#3*{tu'#3 <- `tu'*`}) = !(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%`([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_0: + `%%`([], []) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_0: + `%%%`([], [], ?(([], []))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%%`([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}, var_0) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}, ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}))) + -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) + -- (wf_typevar: `%`(tv'#2))*{tv'#2 <- `tv'*`} + -- (wf_typeuse: `%`(tu'#2))*{tu'#2 <- `tu'*`} + -- wf_typevar: `%`(_IDX_typevar(x)) + -- if ((tv'#3*{tv'#3 <- `tv'*`}, tu'#3*{tu'#3 <- `tu'*`}) = !(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_3{x0 : typevar*, x1 : typeuse*}: + `%%%`(x0, x1, ?()) + -- ~ fun_minus_recs_before_fun_minus_recs_case_3: `%%`(x0, x1) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1792,107 +2254,192 @@ def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 -def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 - def $subst_typeuse{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_typeuse(n), tv#7*{tv#7 <- `tv*`}, tu#7*{tu#7 <- `tu*`}) = !($subst_typevar(REC_typevar(n), tv#8*{tv#8 <- `tv*`}, tu#8*{tu#8 <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 - def $subst_typeuse{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_typeuse(typeidx), tv#9*{tv#9 <- `tv*`}, tu#9*{tu#9 <- `tu*`}) = !($subst_typevar(_IDX_typevar(typeidx), tv#10*{tv#10 <- `tv*`}, tu#10*{tu#10 <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 - def $subst_typeuse{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_typeuse(rectype, n), tv#11*{tv#11 <- `tv*`}, tu#11*{tu#11 <- `tu*`}) = $typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv#12*{tv#12 <- `tv*`}, tu#12*{tu#12 <- `tu*`})) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 -def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_heaptype(n), tv#13*{tv#13 <- `tv*`}, tu#13*{tu#13 <- `tu*`}) = $heaptype_typeuse(!($subst_typevar(REC_typevar(n), tv#14*{tv#14 <- `tv*`}, tu#14*{tu#14 <- `tu*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_heaptype(typeidx), tv#15*{tv#15 <- `tv*`}, tu#15*{tu#15 <- `tu*`}) = $heaptype_typeuse(!($subst_typevar(_IDX_typevar(typeidx), tv#16*{tv#16 <- `tv*`}, tu#16*{tu#16 <- `tu*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 - def $subst_heaptype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_heaptype(rectype, n), tv#17*{tv#17 <- `tv*`}, tu#17*{tu#17 <- `tu*`}) = $heaptype_deftype($subst_deftype(_DEF_deftype(rectype, n), tv#18*{tv#18 <- `tv*`}, tu#18*{tu#18 <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 - def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv#19*{tv#19 <- `tv*`}, tu#19*{tu#19 <- `tu*`}) = ht - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 -def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 - def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null#2?{null#2 <- `null?`}, $subst_heaptype(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 -def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I32_valtype, tv#22*{tv#22 <- `tv*`}, tu#22*{tu#22 <- `tu*`}) = $valtype_numtype($subst_numtype(I32_numtype, tv#23*{tv#23 <- `tv*`}, tu#23*{tu#23 <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I64_valtype, tv#24*{tv#24 <- `tv*`}, tu#24*{tu#24 <- `tu*`}) = $valtype_numtype($subst_numtype(I64_numtype, tv#25*{tv#25 <- `tv*`}, tu#25*{tu#25 <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F32_valtype, tv#26*{tv#26 <- `tv*`}, tu#26*{tu#26 <- `tu*`}) = $valtype_numtype($subst_numtype(F32_numtype, tv#27*{tv#27 <- `tv*`}, tu#27*{tu#27 <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F64_valtype, tv#28*{tv#28 <- `tv*`}, tu#28*{tu#28 <- `tu*`}) = $valtype_numtype($subst_numtype(F64_numtype, tv#29*{tv#29 <- `tv*`}, tu#29*{tu#29 <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(V128_valtype, tv#30*{tv#30 <- `tv*`}, tu#30*{tu#30 <- `tu*`}) = $valtype_vectype($subst_vectype(V128_vectype, tv#31*{tv#31 <- `tv*`}, tu#31*{tu#31 <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 - def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(`null?`, heaptype), tv#32*{tv#32 <- `tv*`}, tu#32*{tu#32 <- `tu*`}) = $valtype_reftype($subst_reftype(REF_reftype(`null?`, heaptype), tv#33*{tv#33 <- `tv*`}, tu#33*{tu#33 <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv#34*{tv#34 <- `tv*`}, tu#34*{tu#34 <- `tu*`}) = BOT_valtype +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation fun_subst_typeuse: `%%%%`(typeuse, typevar*, typeuse*, typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(REC_typeuse(n), tv#7*{tv#7 <- `tv*`}, tu#7*{tu#7 <- `tu*`}, !(var_0)) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv#8*{tv#8 <- `tv*`}, tu#8*{tu#8 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(_IDX_typeuse(typeidx), tv#9*{tv#9 <- `tv*`}, tu#9*{tu#9 <- `tu*`}, !(var_0)) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv#10*{tv#10 <- `tv*`}, tu#10*{tu#10 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_typeuse(rectype, n), tv#11*{tv#11 <- `tv*`}, tu#11*{tu#11 <- `tu*`}, $typeuse_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv#12*{tv#12 <- `tv*`}, tu#12*{tu#12 <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation fun_subst_heaptype: `%%%%`(heaptype, typevar*, typeuse*, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(REC_heaptype(n), tv#13*{tv#13 <- `tv*`}, tu#13*{tu#13 <- `tu*`}, $heaptype_typeuse(!(var_0))) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv#14*{tv#14 <- `tv*`}, tu#14*{tu#14 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(_IDX_heaptype(typeidx), tv#15*{tv#15 <- `tv*`}, tu#15*{tu#15 <- `tu*`}, $heaptype_typeuse(!(var_0))) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv#16*{tv#16 <- `tv*`}, tu#16*{tu#16 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_heaptype(rectype, n), tv#17*{tv#17 <- `tv*`}, tu#17*{tu#17 <- `tu*`}, $heaptype_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv#18*{tv#18 <- `tv*`}, tu#18*{tu#18 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_3{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(ht, tv#19*{tv#19 <- `tv*`}, tu#19*{tu#19 <- `tu*`}, ht) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule fun_subst_reftype_case_0{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : heaptype, var_0 : heaptype}: + `%%%%`(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`}, REF_reftype(null?{null <- `null?`}, var_0)) + -- fun_subst_heaptype: `%%%%`(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}, var_1) + -- fun_subst_heaptype: `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_reftype: `%`(REF_reftype(null#2?{null#2 <- `null?`}, var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation fun_subst_valtype: `%%%%`(valtype, typevar*, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_0{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I32_valtype, tv#22*{tv#22 <- `tv*`}, tu#22*{tu#22 <- `tu*`}, $valtype_numtype($subst_numtype(I32_numtype, tv#23*{tv#23 <- `tv*`}, tu#23*{tu#23 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_1{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I64_valtype, tv#24*{tv#24 <- `tv*`}, tu#24*{tu#24 <- `tu*`}, $valtype_numtype($subst_numtype(I64_numtype, tv#25*{tv#25 <- `tv*`}, tu#25*{tu#25 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_2{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F32_valtype, tv#26*{tv#26 <- `tv*`}, tu#26*{tu#26 <- `tu*`}, $valtype_numtype($subst_numtype(F32_numtype, tv#27*{tv#27 <- `tv*`}, tu#27*{tu#27 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_3{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F64_valtype, tv#28*{tv#28 <- `tv*`}, tu#28*{tu#28 <- `tu*`}, $valtype_numtype($subst_numtype(F64_numtype, tv#29*{tv#29 <- `tv*`}, tu#29*{tu#29 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_4{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(V128_valtype, tv#30*{tv#30 <- `tv*`}, tu#30*{tu#30 <- `tu*`}, $valtype_vectype($subst_vectype(V128_vectype, tv#31*{tv#31 <- `tv*`}, tu#31*{tu#31 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_5{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : reftype}: + `%%%%`(REF_valtype(`null?`, heaptype), tv#32*{tv#32 <- `tv*`}, tu#32*{tu#32 <- `tu*`}, $valtype_reftype(var_0)) + -- fun_subst_reftype: `%%%%`(REF_reftype(`null?`, heaptype), tv#33*{tv#33 <- `tv*`}, tu#33*{tu#33 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_6{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(BOT_valtype, tv#34*{tv#34 <- `tv*`}, tu#34*{tu#34 <- `tu*`}, BOT_valtype) -- wf_valtype: `%`(BOT_valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 -def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_storagetype, tv#35*{tv#35 <- `tv*`}, tu#35*{tu#35 <- `tu*`}) = $storagetype_valtype($subst_valtype(BOT_valtype, tv#36*{tv#36 <- `tv*`}, tu#36*{tu#36 <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_storagetype(`null?`, heaptype), tv#37*{tv#37 <- `tv*`}, tu#37*{tu#37 <- `tu*`}) = $storagetype_valtype($subst_valtype(REF_valtype(`null?`, heaptype), tv#38*{tv#38 <- `tv*`}, tu#38*{tu#38 <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(V128_storagetype, tv#39*{tv#39 <- `tv*`}, tu#39*{tu#39 <- `tu*`}) = $storagetype_valtype($subst_valtype(V128_valtype, tv#40*{tv#40 <- `tv*`}, tu#40*{tu#40 <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F64_storagetype, tv#41*{tv#41 <- `tv*`}, tu#41*{tu#41 <- `tu*`}) = $storagetype_valtype($subst_valtype(F64_valtype, tv#42*{tv#42 <- `tv*`}, tu#42*{tu#42 <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F32_storagetype, tv#43*{tv#43 <- `tv*`}, tu#43*{tu#43 <- `tu*`}) = $storagetype_valtype($subst_valtype(F32_valtype, tv#44*{tv#44 <- `tv*`}, tu#44*{tu#44 <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I64_storagetype, tv#45*{tv#45 <- `tv*`}, tu#45*{tu#45 <- `tu*`}) = $storagetype_valtype($subst_valtype(I64_valtype, tv#46*{tv#46 <- `tv*`}, tu#46*{tu#46 <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I32_storagetype, tv#47*{tv#47 <- `tv*`}, tu#47*{tu#47 <- `tu*`}) = $storagetype_valtype($subst_valtype(I32_valtype, tv#48*{tv#48 <- `tv*`}, tu#48*{tu#48 <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I8_storagetype, tv#49*{tv#49 <- `tv*`}, tu#49*{tu#49 <- `tu*`}) = $storagetype_packtype($subst_packtype(I8_packtype, tv#50*{tv#50 <- `tv*`}, tu#50*{tu#50 <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I16_storagetype, tv#51*{tv#51 <- `tv*`}, tu#51*{tu#51 <- `tu*`}) = $storagetype_packtype($subst_packtype(I16_packtype, tv#52*{tv#52 <- `tv*`}, tu#52*{tu#52 <- `tu*`})) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 -def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 - def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut#2?{mut#2 <- `mut?`}, $subst_storagetype(zt, tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 -def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 - def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft#1*{ft#1 <- `ft*`})), tv#55*{tv#55 <- `tv*`}, tu#55*{tu#55 <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft#2, tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`})*{ft#2 <- `ft*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 - def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 - def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1#2, tv#60*{tv#60 <- `tv*`}, tu#60*{tu#60 <- `tu*`})*{t_1#2 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2#2, tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`})*{t_2#2 <- `t_2*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 -def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 - def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#4*{tu'#4 <- `tu'*`}, ct), tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final#2?{final#2 <- `final?`}, $subst_typeuse(tu'#5, tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`})*{tu'#5 <- `tu'*`}, $subst_comptype(ct, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 -def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 - def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation fun_subst_storagetype: `%%%%`(storagetype, typevar*, typeuse*, storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_0{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(BOT_storagetype, tv#35*{tv#35 <- `tv*`}, tu#35*{tu#35 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(BOT_valtype, tv#36*{tv#36 <- `tv*`}, tu#36*{tu#36 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_1{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(REF_storagetype(`null?`, heaptype), tv#37*{tv#37 <- `tv*`}, tu#37*{tu#37 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(REF_valtype(`null?`, heaptype), tv#38*{tv#38 <- `tv*`}, tu#38*{tu#38 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_2{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(V128_storagetype, tv#39*{tv#39 <- `tv*`}, tu#39*{tu#39 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(V128_valtype, tv#40*{tv#40 <- `tv*`}, tu#40*{tu#40 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_3{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F64_storagetype, tv#41*{tv#41 <- `tv*`}, tu#41*{tu#41 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F64_valtype, tv#42*{tv#42 <- `tv*`}, tu#42*{tu#42 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_4{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F32_storagetype, tv#43*{tv#43 <- `tv*`}, tu#43*{tu#43 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F32_valtype, tv#44*{tv#44 <- `tv*`}, tu#44*{tu#44 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_5{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I64_storagetype, tv#45*{tv#45 <- `tv*`}, tu#45*{tu#45 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I64_valtype, tv#46*{tv#46 <- `tv*`}, tu#46*{tu#46 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_6{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I32_storagetype, tv#47*{tv#47 <- `tv*`}, tu#47*{tu#47 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I32_valtype, tv#48*{tv#48 <- `tv*`}, tu#48*{tu#48 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_7{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I8_storagetype, tv#49*{tv#49 <- `tv*`}, tu#49*{tu#49 <- `tu*`}, $storagetype_packtype($subst_packtype(I8_packtype, tv#50*{tv#50 <- `tv*`}, tu#50*{tu#50 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_8{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I16_storagetype, tv#51*{tv#51 <- `tv*`}, tu#51*{tu#51 <- `tu*`}, $storagetype_packtype($subst_packtype(I16_packtype, tv#52*{tv#52 <- `tv*`}, tu#52*{tu#52 <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation fun_subst_fieldtype: `%%%%`(fieldtype, typevar*, typeuse*, fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule fun_subst_fieldtype_case_0{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : storagetype, var_0 : storagetype}: + `%%%%`(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`}, `%%`_fieldtype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_storagetype: `%%%%`(zt, tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}, var_1) + -- fun_subst_storagetype: `%%%%`(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut#2?{mut#2 <- `mut?`}, var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_0{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : fieldtype*, `var_0*` : fieldtype*}: + `%%%%`(STRUCT_comptype(`%`_list(ft#1*{ft#1 <- `ft*`})), tv#55*{tv#55 <- `tv*`}, tu#55*{tu#55 <- `tu*`}, STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- (fun_subst_fieldtype: `%%%%`(ft#2, tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`}, var_1))*{var_1 <- `var_1*`, ft#2 <- `ft*`} + -- (fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, ft <- `ft*`} + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_1*{var_1 <- `var_1*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_1{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : fieldtype, var_0 : fieldtype}: + `%%%%`(ARRAY_comptype(ft), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}, ARRAY_comptype(var_0)) + -- fun_subst_fieldtype: `%%%%`(ft, tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}, var_1) + -- fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_comptype: `%`(ARRAY_comptype(var_1)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_2{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_3*` : valtype*, `var_2*` : valtype*, `var_1*` : valtype*, `var_0*` : valtype*}: + `%%%%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}, `FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + -- (fun_subst_valtype: `%%%%`(t_2#2, tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`}, var_3))*{var_3 <- `var_3*`, t_2#2 <- `t_2*`} + -- (fun_subst_valtype: `%%%%`(t_1#2, tv#60*{tv#60 <- `tv*`}, tu#60*{tu#60 <- `tu*`}, var_2))*{var_2 <- `var_2*`, t_1#2 <- `t_1*`} + -- (fun_subst_valtype: `%%%%`(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, t_2 <- `t_2*`} + -- (fun_subst_valtype: `%%%%`(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, t_1 <- `t_1*`} + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_2*{var_2 <- `var_2*`}), `%`_resulttype(var_3*{var_3 <- `var_3*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule fun_subst_subtype_case_0{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, var_3 : comptype, `var_2*` : typeuse*, var_1 : comptype, `var_0*` : typeuse*}: + `%%%%`(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#4*{tu'#4 <- `tu'*`}, ct), tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`}, SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) + -- fun_subst_comptype: `%%%%`(ct, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}, var_3) + -- (fun_subst_typeuse: `%%%%`(tu'#5, tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`}, var_2))*{var_2 <- `var_2*`, tu'#5 <- `tu'*`} + -- fun_subst_comptype: `%%%%`(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- (fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, tu' <- `tu'*`} + -- wf_subtype: `%`(SUB_subtype(final#2?{final#2 <- `final?`}, var_2*{var_2 <- `var_2*`}, var_3)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 +relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 + rule fun_subst_rectype_case_0{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_1 : (typevar*, typeuse*)?, `var_0*` : subtype*}: + `%%%%`(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}, REC_rectype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- fun_minus_recs: `%%%`(tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}, var_1) + -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} -- (wf_typevar: `%`(tv'#4))*{tv'#4 <- `tv'*`} -- (wf_typeuse: `%`(tu'#6))*{tu'#6 <- `tu'*`} - -- if ((tv'#5*{tv'#5 <- `tv'*`}, tu'#7*{tu'#7 <- `tu'*`}) = !($minus_recs(tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 -def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 - def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv#67*{tv#67 <- `tv*`}, tu#67*{tu#67 <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) + -- if ((tv'#5*{tv'#5 <- `tv'*`}, tu'#7*{tu'#7 <- `tu'*`}) = !(var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 +relation fun_subst_deftype: `%%%%`(deftype, typevar*, typeuse*, deftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 + rule fun_subst_deftype_case_0{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*, var_0 : rectype}: + `%%%%`(_DEF_deftype(qt, i), tv#67*{tv#67 <- `tv*`}, tu#67*{tu#67 <- `tu*`}, _DEF_deftype(var_0, i)) + -- fun_subst_rectype: `%%%%`(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1901,385 +2448,646 @@ def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv#68*{tv#68 <- `tv*`}, tu#68*{tu#68 <- `tu*`}) = at ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype +relation fun_subst_tagtype: `%%%%`(tagtype, typevar*, typeuse*, tagtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv#69*{tv#69 <- `tv*`}, tu#69*{tu#69 <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + rule fun_subst_tagtype_case_0{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tagtype}: + `%%%%`(tu', tv#69*{tv#69 <- `tv*`}, tu#69*{tu#69 <- `tu*`}, var_0) + -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype +relation fun_subst_globaltype: `%%%%`(globaltype, typevar*, typeuse*, globaltype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut#3?{mut#3 <- `mut?`}, t), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, $subst_valtype(t, tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}))) + rule fun_subst_globaltype_case_0{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : valtype, var_0 : valtype}: + `%%%%`(`%%`_globaltype(mut#3?{mut#3 <- `mut?`}, t), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}, `%%`_globaltype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_valtype: `%%%%`(t, tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}, var_1) + -- fun_subst_valtype: `%%%%`(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_globaltype: `%`(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype +relation fun_subst_memtype: `%%%%`(memtype, typevar*, typeuse*, memtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv#72*{tv#72 <- `tv*`}, tu#72*{tu#72 <- `tu*`}) = `%%PAGE`_memtype(at, lim) + rule fun_subst_memtype_case_0{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(`%%PAGE`_memtype(at, lim), tv#72*{tv#72 <- `tv*`}, tu#72*{tu#72 <- `tu*`}, `%%PAGE`_memtype(at, lim)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype +relation fun_subst_tabletype: `%%%%`(tabletype, typevar*, typeuse*, tabletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}))) + rule fun_subst_tabletype_case_0{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : reftype, var_0 : reftype}: + `%%%%`(`%%%`_tabletype(at, lim, rt), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}, `%%%`_tabletype(at, lim, var_0)) + -- fun_subst_reftype: `%%%%`(rt, tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}, var_1) + -- fun_subst_reftype: `%%%%`(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype +relation fun_subst_externtype: `%%%%`(externtype, typevar*, typeuse*, externtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv#75*{tv#75 <- `tv*`}, tu#75*{tu#75 <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv#76*{tv#76 <- `tv*`}, tu#76*{tu#76 <- `tu*`}))) + rule fun_subst_externtype_case_0{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_1 : tagtype, var_0 : tagtype}: + `%%%%`(TAG_externtype(jt), tv#75*{tv#75 <- `tv*`}, tu#75*{tu#75 <- `tu*`}, TAG_externtype(var_0)) + -- fun_subst_tagtype: `%%%%`(jt, tv#76*{tv#76 <- `tv*`}, tu#76*{tu#76 <- `tu*`}, var_1) + -- fun_subst_tagtype: `%%%%`(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(TAG_externtype(var_1)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv#77*{tv#77 <- `tv*`}, tu#77*{tu#77 <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv#78*{tv#78 <- `tv*`}, tu#78*{tu#78 <- `tu*`}))) + rule fun_subst_externtype_case_1{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : globaltype, var_0 : globaltype}: + `%%%%`(GLOBAL_externtype(gt), tv#77*{tv#77 <- `tv*`}, tu#77*{tu#77 <- `tu*`}, GLOBAL_externtype(var_0)) + -- fun_subst_globaltype: `%%%%`(gt, tv#78*{tv#78 <- `tv*`}, tu#78*{tu#78 <- `tu*`}, var_1) + -- fun_subst_globaltype: `%%%%`(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(GLOBAL_externtype(var_1)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv#79*{tv#79 <- `tv*`}, tu#79*{tu#79 <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv#80*{tv#80 <- `tv*`}, tu#80*{tu#80 <- `tu*`}))) + rule fun_subst_externtype_case_2{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : tabletype, var_0 : tabletype}: + `%%%%`(TABLE_externtype(tt), tv#79*{tv#79 <- `tv*`}, tu#79*{tu#79 <- `tu*`}, TABLE_externtype(var_0)) + -- fun_subst_tabletype: `%%%%`(tt, tv#80*{tv#80 <- `tv*`}, tu#80*{tu#80 <- `tu*`}, var_1) + -- fun_subst_tabletype: `%%%%`(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(TABLE_externtype(var_1)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv#81*{tv#81 <- `tv*`}, tu#81*{tu#81 <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv#82*{tv#82 <- `tv*`}, tu#82*{tu#82 <- `tu*`}))) + rule fun_subst_externtype_case_3{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : memtype, var_0 : memtype}: + `%%%%`(MEM_externtype(mt), tv#81*{tv#81 <- `tv*`}, tu#81*{tu#81 <- `tu*`}, MEM_externtype(var_0)) + -- fun_subst_memtype: `%%%%`(mt, tv#82*{tv#82 <- `tv*`}, tu#82*{tu#82 <- `tu*`}, var_1) + -- fun_subst_memtype: `%%%%`(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(MEM_externtype(var_1)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv#83*{tv#83 <- `tv*`}, tu#83*{tu#83 <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(FUNC_externtype($subst_typeuse(tu', tv#84*{tv#84 <- `tv*`}, tu#84*{tu#84 <- `tu*`}))) + rule fun_subst_externtype_case_4{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_1 : typeuse, var_0 : typeuse}: + `%%%%`(FUNC_externtype(tu'), tv#83*{tv#83 <- `tv*`}, tu#83*{tu#83 <- `tu*`}, FUNC_externtype(var_0)) + -- fun_subst_typeuse: `%%%%`(tu', tv#84*{tv#84 <- `tv*`}, tu#84*{tu#84 <- `tu*`}, var_1) + -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(FUNC_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype +relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#85*{tv#85 <- `tv*`}, tu#85*{tu#85 <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1#2, tv#86*{tv#86 <- `tv*`}, tu#86*{tu#86 <- `tu*`})*{xt_1#2 <- `xt_1*`}, $subst_externtype(xt_2#2, tv#87*{tv#87 <- `tv*`}, tu#87*{tu#87 <- `tu*`})*{xt_2#2 <- `xt_2*`})) + rule fun_subst_moduletype_case_0{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_3*` : externtype*, `var_2*` : externtype*, `var_1*` : externtype*, `var_0*` : externtype*}: + `%%%%`(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#85*{tv#85 <- `tv*`}, tu#85*{tu#85 <- `tu*`}, `%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) + -- (fun_subst_externtype: `%%%%`(xt_2#2, tv#87*{tv#87 <- `tv*`}, tu#87*{tu#87 <- `tu*`}, var_3))*{var_3 <- `var_3*`, xt_2#2 <- `xt_2*`} + -- (fun_subst_externtype: `%%%%`(xt_1#2, tv#86*{tv#86 <- `tv*`}, tu#86*{tu#86 <- `tu*`}, var_2))*{var_2 <- `var_2*`, xt_1#2 <- `xt_1*`} + -- (fun_subst_externtype: `%%%%`(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, xt_2 <- `xt_2*`} + -- (fun_subst_externtype: `%%%%`(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, xt_1 <- `xt_1*`} + -- wf_moduletype: `%`(`%->%`_moduletype(var_2*{var_2 <- `var_2*`}, var_3*{var_3 <- `var_3*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_all_valtype(valtype : valtype, typeuse*) : valtype +relation fun_subst_all_valtype: `%%%`(valtype, typeuse*, valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_valtype{t : valtype, n : nat, `tu*` : typeuse*, i : nat}(t, tu#88^n{tu#88 <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.34 -def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:550.1-551.66 - def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final#3?{final#3 <- `final?`}, typeuse#1*{typeuse#1 <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.1-492.34 -def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-553.70 - def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype#9*{subtype#9 <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.1-520.34 -def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:521.1-521.59 - def $free_deftype{rectype : rectype, n : nat}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 +relation fun_free_resulttype: `%%`(resulttype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 + rule fun_free_resulttype_case_0{`valtype*` : valtype*, `var_1*` : free*, var_0 : free}: + `%%`(`%`_resulttype(valtype#503*{valtype#503 <- `valtype*`}), var_0) + -- (fun_free_valtype: `%%`(valtype, var_1))*{var_1 <- `var_1*`, valtype <- `valtype*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 +relation fun_free_storagetype: `%%`(storagetype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_0{var_0 : free}: + `%%`(BOT_storagetype, var_0) + -- fun_free_valtype: `%%`(BOT_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_1{`null?` : null?, heaptype : heaptype, var_0 : free}: + `%%`(REF_storagetype(`null?`, heaptype), var_0) + -- fun_free_valtype: `%%`(REF_valtype(`null?`, heaptype), var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_2{var_0 : free}: + `%%`(V128_storagetype, var_0) + -- fun_free_valtype: `%%`(V128_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_3{var_0 : free}: + `%%`(F64_storagetype, var_0) + -- fun_free_valtype: `%%`(F64_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_4{var_0 : free}: + `%%`(F32_storagetype, var_0) + -- fun_free_valtype: `%%`(F32_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_5{var_0 : free}: + `%%`(I64_storagetype, var_0) + -- fun_free_valtype: `%%`(I64_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_6{var_0 : free}: + `%%`(I32_storagetype, var_0) + -- fun_free_valtype: `%%`(I32_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_7{var_0 : free}: + `%%`(I8_storagetype, var_0) + -- fun_free_packtype: `%%`(I8_packtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_8{var_0 : free}: + `%%`(I16_storagetype, var_0) + -- fun_free_packtype: `%%`(I16_packtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 +relation fun_free_fieldtype: `%%`(fieldtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 + rule fun_free_fieldtype_case_0{`mut?` : mut?, storagetype : storagetype, var_0 : free}: + `%%`(`%%`_fieldtype(mut#5?{mut#5 <- `mut?`}, storagetype), var_0) + -- fun_free_storagetype: `%%`(storagetype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 +relation fun_free_comptype: `%%`(comptype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 + rule fun_free_comptype_case_0{`fieldtype*` : fieldtype*, `var_1*` : free*, var_0 : free}: + `%%`(STRUCT_comptype(`%`_list(fieldtype#1*{fieldtype#1 <- `fieldtype*`})), var_0) + -- (fun_free_fieldtype: `%%`(fieldtype, var_1))*{var_1 <- `var_1*`, fieldtype <- `fieldtype*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 + rule fun_free_comptype_case_1{fieldtype : fieldtype, var_0 : free}: + `%%`(ARRAY_comptype(fieldtype), var_0) + -- fun_free_fieldtype: `%%`(fieldtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 + rule fun_free_comptype_case_2{resulttype_1 : list(syntax valtype), resulttype_2 : list(syntax valtype), var_1 : free, var_0 : free}: + `%%`(`FUNC%->%`_comptype(resulttype_1, resulttype_2), var_0 +++ var_1) + -- fun_free_resulttype: `%%`(resulttype_2, var_1) + -- fun_free_resulttype: `%%`(resulttype_1, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 +relation fun_free_subtype: `%%`(subtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 + rule fun_free_subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(SUB_subtype(final#3?{final#3 <- `final?`}, typeuse#1*{typeuse#1 <- `typeuse*`}, comptype), var_0 +++ var_2) + -- fun_free_comptype: `%%`(comptype, var_2) + -- (fun_free_typeuse: `%%`(typeuse, var_1))*{var_1 <- `var_1*`, typeuse <- `typeuse*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 +relation fun_free_rectype: `%%`(rectype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 + rule fun_free_rectype_case_0{`subtype*` : subtype*, `var_1*` : free*, var_0 : free}: + `%%`(REC_rectype(`%`_list(subtype#9*{subtype#9 <- `subtype*`})), var_0) + -- (fun_free_subtype: `%%`(subtype, var_1))*{var_1 <- `var_1*`, subtype <- `subtype*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 +relation fun_free_deftype: `%%`(deftype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 + rule fun_free_deftype_case_0{rectype : rectype, n : nat, var_0 : free}: + `%%`(_DEF_deftype(rectype, n), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_tagtype(tagtype : tagtype) : free +relation fun_free_tagtype: `%%`(tagtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tagtype{rectype : rectype, n : n}(_DEF_tagtype(rectype, n)) = $free_deftype(_DEF_deftype(rectype, n)) + rule fun_free_tagtype_case_0{rectype : rectype, n : n, var_0 : free}: + `%%`(_DEF_tagtype(rectype, n), var_0) + -- fun_free_deftype: `%%`(_DEF_deftype(rectype, n), var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_globaltype(globaltype : globaltype) : free +relation fun_free_globaltype: `%%`(globaltype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_globaltype{`mut?` : mut?, valtype : valtype}(`%%`_globaltype(mut#6?{mut#6 <- `mut?`}, valtype)) = $free_valtype(valtype) + rule fun_free_globaltype_case_0{`mut?` : mut?, valtype : valtype, var_0 : free}: + `%%`(`%%`_globaltype(mut#6?{mut#6 <- `mut?`}, valtype), var_0) + -- fun_free_valtype: `%%`(valtype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_memtype(memtype : memtype) : free +relation fun_free_memtype: `%%`(memtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) + rule fun_free_memtype_case_0{addrtype : addrtype, limits : limits, var_0 : free}: + `%%`(`%%PAGE`_memtype(addrtype, limits), var_0) + -- fun_free_addrtype: `%%`(addrtype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_tabletype(tabletype : tabletype) : free +relation fun_free_tabletype: `%%`(tabletype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) + rule fun_free_tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype, var_1 : free, var_0 : free}: + `%%`(`%%%`_tabletype(addrtype, limits, reftype), var_0 +++ var_1) + -- fun_free_reftype: `%%`(reftype, var_1) + -- fun_free_addrtype: `%%`(addrtype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_datatype(datatype : datatype) : free +relation fun_free_datatype: `%%`(datatype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_datatype_case_0: + `%%`(OK_datatype, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_elemtype(elemtype : elemtype) : free +relation fun_free_elemtype: `%%`(elemtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) + rule fun_free_elemtype_case_0{reftype : reftype, var_0 : free}: + `%%`(reftype, var_0) + -- fun_free_reftype: `%%`(reftype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_externtype(externtype : externtype) : free +relation fun_free_externtype: `%%`(externtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{tagtype : typeuse}(TAG_externtype(tagtype)) = $free_tagtype(tagtype) + rule fun_free_externtype_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_externtype(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{globaltype : globaltype}(GLOBAL_externtype(globaltype)) = $free_globaltype(globaltype) + rule fun_free_externtype_case_1{globaltype : globaltype, var_0 : free}: + `%%`(GLOBAL_externtype(globaltype), var_0) + -- fun_free_globaltype: `%%`(globaltype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{memtype : memtype}(MEM_externtype(memtype)) = $free_memtype(memtype) + rule fun_free_externtype_case_2{memtype : memtype, var_0 : free}: + `%%`(MEM_externtype(memtype), var_0) + -- fun_free_memtype: `%%`(memtype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) + rule fun_free_externtype_case_3{tabletype : tabletype, var_0 : free}: + `%%`(TABLE_externtype(tabletype), var_0) + -- fun_free_tabletype: `%%`(tabletype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) + rule fun_free_externtype_case_4{typeuse : typeuse, var_0 : free}: + `%%`(FUNC_externtype(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_moduletype(moduletype : moduletype) : free +relation fun_free_moduletype: `%%`(moduletype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_moduletype{`externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype(externtype_1#1*{externtype_1#1 <- `externtype_1*`}, externtype_2#1*{externtype_2#1 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) + rule fun_free_moduletype_case_0{`externtype_1*` : externtype*, `externtype_2*` : externtype*, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(`%->%`_moduletype(externtype_1#1*{externtype_1#1 <- `externtype_1*`}, externtype_2#1*{externtype_2#1 <- `externtype_2*`}), var_0 +++ var_2) + -- (fun_free_externtype: `%%`(externtype_2, var_3))*{var_3 <- `var_3*`, externtype_2 <- `externtype_2*`} + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- (fun_free_externtype: `%%`(externtype_1, var_1))*{var_1 <- `var_1*`, externtype_1 <- `externtype_1*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax num_ = @@ -2794,9 +3602,10 @@ relation wf_shape: `%`(shape) -- if (($lsize(lanetype) * $proj_dim_0(dim).0) = 128) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $dim(shape : shape) : dim +relation fun_dim: `%%`(shape, dim) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) + rule fun_dim_case_0{Lnn : lanetype, N : nat}: + `%%`(`%X%`_shape(Lnn, `%`_dim(N)), `%`_dim(N)) -- wf_dim: `%`(`%`_dim(N)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4460,11 +5269,12 @@ relation wf_instr: `%`(instr) -- wf_vswizzlop_: `%%`(bshape, var_0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 - rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*}: + rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*, var_0 : dim}: `%`(VSHUFFLE_instr(bshape, `laneidx*`)) -- wf_bshape: `%`(bshape) -- (wf_uN: `%%`(8, laneidx))*{laneidx <- `laneidx*`} - -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim($proj_bshape_0(bshape).0)) + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = var_0) + -- fun_dim: `%%`($proj_bshape_0(bshape).0, var_0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextunop__}: @@ -4511,7 +5321,6 @@ relation wf_instr: `%`(instr) `%`(VEXTRACT_LANE_instr(shape, `sx?`, laneidx)) -- wf_shape: `%`(shape) -- wf_uN: `%%`(8, laneidx) - -- if (|[I32_lanetype I64_lanetype F32_lanetype F64_lanetype]| > 0) -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 @@ -4581,305 +5390,687 @@ relation wf_instr: `%`(instr) syntax expr = instr* ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $memarg0 : memarg +relation fun_memarg0: `%`(memarg) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} + rule fun_memarg0_case_0: + `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $const(consttype : consttype, lit_ : lit_) : instr +relation fun_const: `%%%`(consttype, lit_, instr) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{c : num_}(I32_consttype, mk_lit__0_lit_(I32_numtype, c)) = CONST_instr(I32_numtype, c) + rule fun_const_case_0{c : num_}: + `%%%`(I32_consttype, mk_lit__0_lit_(I32_numtype, c), CONST_instr(I32_numtype, c)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{c : num_}(I64_consttype, mk_lit__0_lit_(I64_numtype, c)) = CONST_instr(I64_numtype, c) + rule fun_const_case_1{c : num_}: + `%%%`(I64_consttype, mk_lit__0_lit_(I64_numtype, c), CONST_instr(I64_numtype, c)) -- wf_instr: `%`(CONST_instr(I64_numtype, c)) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{c : num_}(F32_consttype, mk_lit__0_lit_(F32_numtype, c)) = CONST_instr(F32_numtype, c) + rule fun_const_case_2{c : num_}: + `%%%`(F32_consttype, mk_lit__0_lit_(F32_numtype, c), CONST_instr(F32_numtype, c)) -- wf_instr: `%`(CONST_instr(F32_numtype, c)) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{c : num_}(F64_consttype, mk_lit__0_lit_(F64_numtype, c)) = CONST_instr(F64_numtype, c) + rule fun_const_case_3{c : num_}: + `%%%`(F64_consttype, mk_lit__0_lit_(F64_numtype, c), CONST_instr(F64_numtype, c)) -- wf_instr: `%`(CONST_instr(F64_numtype, c)) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{c : uN}(V128_consttype, mk_lit__1_lit_(V128_vectype, c)) = VCONST_instr(V128_vectype, c) + rule fun_const_case_4{c : uN}: + `%%%`(V128_consttype, mk_lit__1_lit_(V128_vectype, c), VCONST_instr(V128_vectype, c)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_shape(shape : shape) : free +relation fun_free_shape: `%%`(shape, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) + rule fun_free_shape_case_0{lanetype : lanetype, dim : dim, var_0 : free}: + `%%`(`%X%`_shape(lanetype, dim), var_0) + -- fun_free_lanetype: `%%`(lanetype, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_blocktype(blocktype : blocktype) : free +relation fun_free_blocktype: `%%`(blocktype, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype#505?{valtype#505 <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) + rule fun_free_blocktype_case_0{`valtype?` : valtype?, `var_1?` : free?, var_0 : free}: + `%%`(_RESULT_blocktype(valtype#505?{valtype#505 <- `valtype?`}), var_0) + -- (fun_free_valtype: `%%`(valtype, var_1))?{var_1 <- `var_1?`, valtype <- `valtype?`} + -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{typeidx : uN}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) + rule fun_free_blocktype_case_1{typeidx : uN, var_0 : free}: + `%%`(_IDX_blocktype(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_catch(catch : catch) : free +relation fun_free_catch: `%%`(catch, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_catch{tagidx : uN, labelidx : uN}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + rule fun_free_catch_case_0{tagidx : uN, labelidx : uN, var_1 : free, var_0 : free}: + `%%`(CATCH_catch(tagidx, labelidx), var_0 +++ var_1) + -- fun_free_labelidx: `%%`(labelidx, var_1) + -- fun_free_tagidx: `%%`(tagidx, var_0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_catch{tagidx : uN, labelidx : uN}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + rule fun_free_catch_case_1{tagidx : uN, labelidx : uN, var_1 : free, var_0 : free}: + `%%`(CATCH_REF_catch(tagidx, labelidx), var_0 +++ var_1) + -- fun_free_labelidx: `%%`(labelidx, var_1) + -- fun_free_tagidx: `%%`(tagidx, var_0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_catch{labelidx : uN}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) + rule fun_free_catch_case_2{labelidx : uN, var_0 : free}: + `%%`(CATCH_ALL_catch(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_catch{labelidx : uN}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) + rule fun_free_catch_case_3{labelidx : uN, var_0 : free}: + `%%`(CATCH_ALL_REF_catch(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.1-584.44 -def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.32 - def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.66 - def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'#1*{labelidx'#1 <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.91 - def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'#2*{labelidx'#2 <- `labelidx'*`}) = [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 +relation fun_shift_labelidxs: `%%`(labelidx*, labelidx*) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_1{`labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([`%`_labelidx(0)] ++ labelidx'#1*{labelidx'#1 <- `labelidx'*`}, var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_2{labelidx : uN, `labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([labelidx] ++ labelidx'#2*{labelidx'#2 <- `labelidx'*`}, [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.1-420.30 -def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-435.26 - def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation fun_free_instr: `%%`(instr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_0: + `%%`(NOP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.34 - def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_1: + `%%`(UNREACHABLE_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.27 - def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_2: + `%%`(DROP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.86 - def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype#506*{valtype#506 <- `valtype*#1`}?{`valtype*#1` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.92 - def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr#1*{instr#1 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.91 - def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr#2*{instr#2 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-443.79 - def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1#1*{instr_1#1 <- `instr_1*`}, instr_2#1*{instr_2#1 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:445.1-445.56 - def $free_instr{labelidx : uN}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.59 - def $free_instr{labelidx : uN}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-448.69 - def $free_instr{`labelidx*` : labelidx*, labelidx' : uN}(BR_TABLE_instr(labelidx#1*{labelidx#1 <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.64 - def $free_instr{labelidx : uN}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.68 - def $free_instr{labelidx : uN}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-452.83 - def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-454.83 - def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-456.55 - def $free_instr{funcidx : uN}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.59 - def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-459.53 - def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.29 - def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_3{`valtype*?` : valtype*?, `var_2*?` : free*?, `var_1?` : free?, var_0 : free}: + `%%`(SELECT_instr(valtype#506*{valtype#506 <- `valtype*#1`}?{`valtype*#1` <- `valtype*?`}), var_0) + -- (fun_free_valtype: `%%`(valtype, var_2))*{var_2 <- `var_2*`, valtype <- `valtype*`}?{`var_2*` <- `var_2*?`, `valtype*` <- `valtype*?`} + -- (fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1))?{`var_2*` <- `var_2*?`, var_1 <- `var_1?`} + -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_4{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(BLOCK_instr(blocktype, instr#1*{instr#1 <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_5{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(LOOP_instr(blocktype, instr#2*{instr#2 <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_6{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, var_2 : free, var_1 : free, var_0 : free}: + `%%`(`IF%%ELSE%`_instr(blocktype, instr_1#1*{instr_1#1 <- `instr_1*`}, instr_2#1*{instr_2#1 <- `instr_2*`}), var_0 +++ var_1 +++ var_2) + -- fun_free_block: `%%`(instr_2*{instr_2 <- `instr_2*`}, var_2) + -- fun_free_block: `%%`(instr_1*{instr_1 <- `instr_1*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_7{labelidx : uN, var_0 : free}: + `%%`(BR_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_8{labelidx : uN, var_0 : free}: + `%%`(BR_IF_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_9{`labelidx*` : labelidx*, labelidx' : uN, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(BR_TABLE_instr(labelidx#1*{labelidx#1 <- `labelidx*`}, labelidx'), var_0 +++ var_2) + -- fun_free_labelidx: `%%`(labelidx', var_2) + -- (fun_free_labelidx: `%%`(labelidx, var_1))*{var_1 <- `var_1*`, labelidx <- `labelidx*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_10{labelidx : uN, var_0 : free}: + `%%`(BR_ON_NULL_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_11{labelidx : uN, var_0 : free}: + `%%`(BR_ON_NON_NULL_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_12{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_13{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_14{funcidx : uN, var_0 : free}: + `%%`(CALL_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_15{typeuse : typeuse, var_0 : free}: + `%%`(CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_16{tableidx : uN, typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(CALL_INDIRECT_instr(tableidx, typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(typeuse, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_17: + `%%`(RETURN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 - def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.66 - def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-464.53 - def $free_instr{tableidx : uN, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:466.1-466.53 - def $free_instr{tagidx : uN}(THROW_instr(tagidx)) = $free_tagidx(tagidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.32 - def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_18{funcidx : uN, var_0 : free}: + `%%`(RETURN_CALL_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_19{typeuse : typeuse, var_0 : free}: + `%%`(RETURN_CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_20{tableidx : uN, typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(typeuse, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_21{tagidx : uN, var_0 : free}: + `%%`(THROW_instr(tagidx), var_0) + -- fun_free_tagidx: `%%`(tagidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_22: + `%%`(THROW_REF_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-469.99 - def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch#1*{catch#1 <- `catch*`}), instr#3*{instr#3 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.63 - def $free_instr{numtype : numtype, numlit : num_}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.60 - def $free_instr{numtype : numtype, unop : unop_}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.62 - def $free_instr{numtype : numtype, binop : binop_}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.64 - def $free_instr{numtype : numtype, testop : testop_}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.62 - def $free_instr{numtype : numtype, relop : relop_}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-477.55 - def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.64 - def $free_instr{vectype : vectype, veclit : uN}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 - def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-481.66 - def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:482.1-482.68 - def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.68 - def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.56 - def $free_instr{shape : shape, vunop : vunop_}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.58 - def $free_instr{shape : shape, vbinop : vbinop_}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.60 - def $free_instr{shape : shape, vternop : vternop_}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-487.60 - def $free_instr{shape : shape, vtestop : vtestop_}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:488.1-488.58 - def $free_instr{shape : shape, vrelop : vrelop_}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.64 - def $free_instr{ishape : ishape, vshiftop : vshiftop_}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape($proj_ishape_0(ishape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.55 - def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape($proj_ishape_0(ishape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.66 - def $free_instr{bshape : bshape, vswizzlop : vswizzlop_}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape($proj_bshape_0(bshape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.64 - def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx#1*{laneidx#1 <- `laneidx*`})) = $free_shape($proj_bshape_0(bshape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-494.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-496.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-498.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-500.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-502.47 - def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:503.1-503.51 - def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.70 - def $free_instr{shape : shape, `sx?` : sx?, laneidx : uN}(VEXTRACT_LANE_instr(shape, sx#43187?{sx#43187 <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:505.1-505.66 - def $free_instr{shape : shape, laneidx : uN}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.62 - def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.34 - def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_23{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*, `var_4*` : free*, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(TRY_TABLE_instr(blocktype, `%`_list(catch#1*{catch#1 <- `catch*`}), instr#3*{instr#3 <- `instr*`}), var_0 +++ var_1 +++ var_3) + -- (fun_free_instr: `%%`(instr, var_4))*{var_4 <- `var_4*`, instr <- `instr*`} + -- fun_free_list: `%%`(var_4*{var_4 <- `var_4*`}, var_3) + -- (fun_free_catch: `%%`(catch, var_2))*{var_2 <- `var_2*`, catch <- `catch*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_24{numtype : numtype, numlit : num_, var_0 : free}: + `%%`(CONST_instr(numtype, numlit), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_25{numtype : numtype, unop : unop_, var_0 : free}: + `%%`(UNOP_instr(numtype, unop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_26{numtype : numtype, binop : binop_, var_0 : free}: + `%%`(BINOP_instr(numtype, binop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_27{numtype : numtype, testop : testop_, var_0 : free}: + `%%`(TESTOP_instr(numtype, testop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_28{numtype : numtype, relop : relop_, var_0 : free}: + `%%`(RELOP_instr(numtype, relop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_29{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__, var_1 : free, var_0 : free}: + `%%`(CVTOP_instr(numtype_1, numtype_2, cvtop), var_0 +++ var_1) + -- fun_free_numtype: `%%`(numtype_2, var_1) + -- fun_free_numtype: `%%`(numtype_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_30{vectype : vectype, veclit : uN, var_0 : free}: + `%%`(VCONST_instr(vectype, veclit), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_31{vectype : vectype, vvunop : vvunop, var_0 : free}: + `%%`(VVUNOP_instr(vectype, vvunop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_32{vectype : vectype, vvbinop : vvbinop, var_0 : free}: + `%%`(VVBINOP_instr(vectype, vvbinop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_33{vectype : vectype, vvternop : vvternop, var_0 : free}: + `%%`(VVTERNOP_instr(vectype, vvternop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_34{vectype : vectype, vvtestop : vvtestop, var_0 : free}: + `%%`(VVTESTOP_instr(vectype, vvtestop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_35{shape : shape, vunop : vunop_, var_0 : free}: + `%%`(VUNOP_instr(shape, vunop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_36{shape : shape, vbinop : vbinop_, var_0 : free}: + `%%`(VBINOP_instr(shape, vbinop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_37{shape : shape, vternop : vternop_, var_0 : free}: + `%%`(VTERNOP_instr(shape, vternop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_38{shape : shape, vtestop : vtestop_, var_0 : free}: + `%%`(VTESTOP_instr(shape, vtestop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_39{shape : shape, vrelop : vrelop_, var_0 : free}: + `%%`(VRELOP_instr(shape, vrelop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_40{ishape : ishape, vshiftop : vshiftop_, var_0 : free}: + `%%`(VSHIFTOP_instr(ishape, vshiftop), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_41{ishape : ishape, var_0 : free}: + `%%`(VBITMASK_instr(ishape), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_42{bshape : bshape, vswizzlop : vswizzlop_, var_0 : free}: + `%%`(VSWIZZLOP_instr(bshape, vswizzlop), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_43{bshape : bshape, `laneidx*` : laneidx*, var_0 : free}: + `%%`(VSHUFFLE_instr(bshape, laneidx#1*{laneidx#1 <- `laneidx*`}), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_44{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__, var_1 : free, var_0 : free}: + `%%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_45{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__, var_1 : free, var_0 : free}: + `%%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_46{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__, var_1 : free, var_0 : free}: + `%%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_47{ishape_1 : ishape, ishape_2 : ishape, sx : sx, var_1 : free, var_0 : free}: + `%%`(VNARROW_instr(ishape_1, ishape_2, sx), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_48{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__, var_1 : free, var_0 : free}: + `%%`(VCVTOP_instr(shape_1, shape_2, vcvtop), var_0 +++ var_1) + -- fun_free_shape: `%%`(shape_2, var_1) + -- fun_free_shape: `%%`(shape_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_49{shape : shape, var_0 : free}: + `%%`(VSPLAT_instr(shape), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_50{shape : shape, `sx?` : sx?, laneidx : uN, var_0 : free}: + `%%`(VEXTRACT_LANE_instr(shape, sx#43187?{sx#43187 <- `sx?`}, laneidx), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_51{shape : shape, laneidx : uN, var_0 : free}: + `%%`(VREPLACE_LANE_instr(shape, laneidx), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_52{heaptype : heaptype, var_0 : free}: + `%%`(`REF.NULL`_instr(heaptype), var_0) + -- fun_free_heaptype: `%%`(heaptype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_53: + `%%`(`REF.IS_NULL`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.38 - def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_54: + `%%`(`REF.AS_NON_NULL`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.29 - def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_55: + `%%`(`REF.EQ`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 - def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 - def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.59 - def $free_instr{funcidx : uN}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.30 - def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_56{reftype : reftype, var_0 : free}: + `%%`(`REF.TEST`_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_57{reftype : reftype, var_0 : free}: + `%%`(`REF.CAST`_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_58{funcidx : uN, var_0 : free}: + `%%`(`REF.FUNC`_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_59: + `%%`(`REF.I31`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.33 - def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_60{sx : sx}: + `%%`(`I31.GET`_instr(sx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.61 - def $free_instr{typeidx : uN}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.69 - def $free_instr{typeidx : uN}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.69 - def $free_instr{`sx?` : sx?, typeidx : uN, u32 : uN}(`STRUCT.GET`_instr(sx#43188?{sx#43188 <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.65 - def $free_instr{typeidx : uN, u32 : uN}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.60 - def $free_instr{typeidx : uN}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.68 - def $free_instr{typeidx : uN}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.70 - def $free_instr{typeidx : uN, u32 : uN}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 - def $free_instr{typeidx : uN, dataidx : uN}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:528.1-529.51 - def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.64 - def $free_instr{`sx?` : sx?, typeidx : uN}(`ARRAY.GET`_instr(sx#43189?{sx#43189 <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.60 - def $free_instr{typeidx : uN}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.32 - def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_61{typeidx : uN, var_0 : free}: + `%%`(`STRUCT.NEW`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_62{typeidx : uN, var_0 : free}: + `%%`(`STRUCT.NEW_DEFAULT`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_63{`sx?` : sx?, typeidx : uN, u32 : uN, var_0 : free}: + `%%`(`STRUCT.GET`_instr(sx#43188?{sx#43188 <- `sx?`}, typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_64{typeidx : uN, u32 : uN, var_0 : free}: + `%%`(`STRUCT.SET`_instr(typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_65{typeidx : uN, var_0 : free}: + `%%`(`ARRAY.NEW`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_66{typeidx : uN, var_0 : free}: + `%%`(`ARRAY.NEW_DEFAULT`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_67{typeidx : uN, u32 : uN, var_0 : free}: + `%%`(`ARRAY.NEW_FIXED`_instr(typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_68{typeidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.NEW_DATA`_instr(typeidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_69{typeidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_70{`sx?` : sx?, typeidx : uN, var_0 : free}: + `%%`(`ARRAY.GET`_instr(sx#43189?{sx#43189 <- `sx?`}, typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_71{typeidx : uN, var_0 : free}: + `%%`(`ARRAY.SET`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_72: + `%%`(`ARRAY.LEN`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.61 - def $free_instr{typeidx : uN}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.55 - def $free_instr{typeidx_1 : uN, typeidx_2 : uN}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-537.51 - def $free_instr{typeidx : uN, dataidx : uN}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:538.1-539.51 - def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.41 - def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_73{typeidx : uN, var_0 : free}: + `%%`(`ARRAY.FILL`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_74{typeidx_1 : uN, typeidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.COPY`_instr(typeidx_1, typeidx_2), var_0 +++ var_1) + -- fun_free_typeidx: `%%`(typeidx_2, var_1) + -- fun_free_typeidx: `%%`(typeidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_75{typeidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.INIT_DATA`_instr(typeidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_76{typeidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_77: + `%%`(`EXTERN.CONVERT_ANY`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 - def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_78: + `%%`(`ANY.CONVERT_EXTERN`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 - def $free_instr{localidx : uN}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 - def $free_instr{localidx : uN}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.63 - def $free_instr{localidx : uN}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.67 - def $free_instr{globalidx : uN}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.67 - def $free_instr{globalidx : uN}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:551.1-551.63 - def $free_instr{tableidx : uN}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.63 - def $free_instr{tableidx : uN}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.64 - def $free_instr{tableidx : uN}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-554.64 - def $free_instr{tableidx : uN}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.64 - def $free_instr{tableidx : uN}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.59 - def $free_instr{tableidx_1 : uN, tableidx_2 : uN}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.53 - def $free_instr{tableidx : uN, elemidx : uN}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-560.60 - def $free_instr{elemidx : uN}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-563.49 - def $free_instr{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg}(LOAD_instr(numtype, loadop#1?{loadop#1 <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-565.49 - def $free_instr{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg}(STORE_instr(numtype, storeop#1?{storeop#1 <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-567.49 - def $free_instr{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg}(VLOAD_instr(vectype, vloadop#1?{vloadop#1 <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:568.1-569.49 - def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:570.1-571.49 - def $free_instr{vectype : vectype, memidx : uN, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-573.49 - def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.59 - def $free_instr{memidx : uN}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.59 - def $free_instr{memidx : uN}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:576.1-576.59 - def $free_instr{memidx : uN}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.51 - def $free_instr{memidx_1 : uN, memidx_2 : uN}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-580.49 - def $free_instr{memidx : uN, dataidx : uN}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:581.1-581.60 - def $free_instr{dataidx : uN}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.1-421.31 -def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:589.1-590.47 - def $free_block{`instr*` : instr*, free : free}(instr#4*{instr#4 <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_79{localidx : uN, var_0 : free}: + `%%`(`LOCAL.GET`_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_80{localidx : uN, var_0 : free}: + `%%`(`LOCAL.SET`_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_81{localidx : uN, var_0 : free}: + `%%`(`LOCAL.TEE`_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_82{globalidx : uN, var_0 : free}: + `%%`(`GLOBAL.GET`_instr(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_83{globalidx : uN, var_0 : free}: + `%%`(`GLOBAL.SET`_instr(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_84{tableidx : uN, var_0 : free}: + `%%`(`TABLE.GET`_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_85{tableidx : uN, var_0 : free}: + `%%`(`TABLE.SET`_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_86{tableidx : uN, var_0 : free}: + `%%`(`TABLE.SIZE`_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_87{tableidx : uN, var_0 : free}: + `%%`(`TABLE.GROW`_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_88{tableidx : uN, var_0 : free}: + `%%`(`TABLE.FILL`_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_89{tableidx_1 : uN, tableidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(`TABLE.COPY`_instr(tableidx_1, tableidx_2), var_0 +++ var_1) + -- fun_free_tableidx: `%%`(tableidx_2, var_1) + -- fun_free_tableidx: `%%`(tableidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_90{tableidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(`TABLE.INIT`_instr(tableidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_91{elemidx : uN, var_0 : free}: + `%%`(`ELEM.DROP`_instr(elemidx), var_0) + -- fun_free_elemidx: `%%`(elemidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_92{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(LOAD_instr(numtype, loadop#1?{loadop#1 <- `loadop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_93{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(STORE_instr(numtype, storeop#1?{storeop#1 <- `storeop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_94{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VLOAD_instr(vectype, vloadop#1?{vloadop#1 <- `vloadop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_95{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_96{vectype : vectype, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VSTORE_instr(vectype, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_97{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_98{memidx : uN, var_0 : free}: + `%%`(`MEMORY.SIZE`_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_99{memidx : uN, var_0 : free}: + `%%`(`MEMORY.GROW`_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_100{memidx : uN, var_0 : free}: + `%%`(`MEMORY.FILL`_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_101{memidx_1 : uN, memidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(`MEMORY.COPY`_instr(memidx_1, memidx_2), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx_2, var_1) + -- fun_free_memidx: `%%`(memidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_102{memidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(`MEMORY.INIT`_instr(memidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_103{dataidx : uN, var_0 : free}: + `%%`(`DATA.DROP`_instr(dataidx), var_0) + -- fun_free_dataidx: `%%`(dataidx, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation fun_free_block: `%%`(instr*, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule fun_free_block_case_0{`instr*` : instr*, free : free, `var_2*` : free*, var_1 : free, var_0 : labelidx*}: + `%%`(instr#4*{instr#4 <- `instr*`}, free[LABELS_free = var_0]) + -- (fun_free_instr: `%%`(instr#5, var_2))*{var_2 <- `var_2*`, instr#5 <- `instr*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_shift_labelidxs: `%%`(free.LABELS_free, var_0) -- wf_free: `%`(free) - -- if (free = $free_list($free_instr(instr#5)*{instr#5 <- `instr*`})) + -- if (free = var_1) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_expr(expr : expr) : free +relation fun_free_expr: `%%`(expr, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_expr{`instr*` : instr*}(instr#6*{instr#6 <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) + rule fun_free_expr_case_0{`instr*` : instr*, `var_1*` : free*, var_0 : free}: + `%%`(instr#6*{instr#6 <- `instr*`}, var_0) + -- (fun_free_instr: `%%`(instr, var_1))*{var_1 <- `var_1*`, instr <- `instr*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = @@ -5067,98 +6258,170 @@ relation wf_module: `%`(module) -- (wf_start: `%`(start))?{start <- `start?`} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_type(type : type) : free +relation fun_free_type: `%%`(type, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) + rule fun_free_type_case_0{rectype : rectype, var_0 : free}: + `%%`(TYPE_type(rectype), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_tag(tag : tag) : free +relation fun_free_tag: `%%`(tag, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) + rule fun_free_tag_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_tag(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_global(global : global) : free +relation fun_free_global: `%%`(global, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) + rule fun_free_global_case_0{globaltype : globaltype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(GLOBAL_global(globaltype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_globaltype: `%%`(globaltype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_mem(mem : mem) : free +relation fun_free_mem: `%%`(mem, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) + rule fun_free_mem_case_0{memtype : memtype, var_0 : free}: + `%%`(MEMORY_mem(memtype), var_0) + -- fun_free_memtype: `%%`(memtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_table(table : table) : free +relation fun_free_table: `%%`(table, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) + rule fun_free_table_case_0{tabletype : tabletype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(TABLE_table(tabletype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_tabletype: `%%`(tabletype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_local(local : local) : free +relation fun_free_local: `%%`(local, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) + rule fun_free_local_case_0{t : valtype, var_0 : free}: + `%%`(LOCAL_local(t), var_0) + -- fun_free_valtype: `%%`(t, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_func(func : func) : free +relation fun_free_func: `%%`(func, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local#1*{local#1 <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] + rule fun_free_func_case_0{typeidx : uN, `local*` : local*, expr : instr*, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(FUNC_func(typeidx, local#1*{local#1 <- `local*`}, expr), var_0 +++ var_1 +++ var_3[LOCALS_free = []]) + -- fun_free_block: `%%`(expr, var_3) + -- (fun_free_local: `%%`(local, var_2))*{var_2 <- `var_2*`, local <- `local*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_datamode(datamode : datamode) : free +relation fun_free_datamode: `%%`(datamode, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) + rule fun_free_datamode_case_0{memidx : uN, expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_datamode(memidx, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_memidx: `%%`(memidx, var_0) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_datamode_case_1: + `%%`(PASSIVE_datamode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_data(data : data) : free +relation fun_free_data: `%%`(data, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte#1*{byte#1 <- `byte*`}, datamode)) = $free_datamode(datamode) + rule fun_free_data_case_0{`byte*` : byte*, datamode : datamode, var_0 : free}: + `%%`(DATA_data(byte#1*{byte#1 <- `byte*`}, datamode), var_0) + -- fun_free_datamode: `%%`(datamode, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_elemmode(elemmode : elemmode) : free +relation fun_free_elemmode: `%%`(elemmode, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) + rule fun_free_elemmode_case_0{tableidx : uN, expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_elemmode(tableidx, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_elemmode_case_1: + `%%`(PASSIVE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_elemmode_case_2: + `%%`(DECLARE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_elem(elem : elem) : free +relation fun_free_elem: `%%`(elem, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr#358*{expr#358 <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) + rule fun_free_elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(ELEM_elem(reftype, expr#358*{expr#358 <- `expr*`}, elemmode), var_0 +++ var_1 +++ var_3) + -- fun_free_elemmode: `%%`(elemmode, var_3) + -- (fun_free_expr: `%%`(expr, var_2))*{var_2 <- `var_2*`, expr <- `expr*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_reftype: `%%`(reftype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_start(start : start) : free +relation fun_free_start: `%%`(start, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) + rule fun_free_start_case_0{funcidx : uN, var_0 : free}: + `%%`(START_start(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_import(import : import) : free +relation fun_free_import: `%%`(import, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) + rule fun_free_import_case_0{name_1 : name, name_2 : name, externtype : externtype, var_0 : free}: + `%%`(IMPORT_import(name_1, name_2, externtype), var_0) + -- fun_free_externtype: `%%`(externtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_export(export : export) : free +relation fun_free_export: `%%`(export, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) + rule fun_free_export_case_0{name : name, externidx : externidx, var_0 : free}: + `%%`(EXPORT_export(name, externidx), var_0) + -- fun_free_externidx: `%%`(externidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_module(module : module) : free +relation fun_free_module: `%%`(module, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_list(type#1*{type#1 <- `type*`}), `%`_list(import#1*{import#1 <- `import*`}), `%`_list(tag#1*{tag#1 <- `tag*`}), `%`_list(global#1*{global#1 <- `global*`}), `%`_list(mem#1*{mem#1 <- `mem*`}), `%`_list(table#1*{table#1 <- `table*`}), `%`_list(func#1*{func#1 <- `func*`}), `%`_list(data#1*{data#1 <- `data*`}), `%`_list(elem#1*{elem#1 <- `elem*`}), start#1?{start#1 <- `start?`}, `%`_list(export#1*{export#1 <- `export*`}))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) + rule fun_free_module_case_0{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `var_21*` : free*, var_20 : free, `var_19*` : free*, var_18 : free, `var_17?` : free?, var_16 : free, `var_15*` : free*, var_14 : free, `var_13*` : free*, var_12 : free, `var_11*` : free*, var_10 : free, `var_9*` : free*, var_8 : free, `var_7*` : free*, var_6 : free, `var_5*` : free*, var_4 : free, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(MODULE_module(`%`_list(type#1*{type#1 <- `type*`}), `%`_list(import#1*{import#1 <- `import*`}), `%`_list(tag#1*{tag#1 <- `tag*`}), `%`_list(global#1*{global#1 <- `global*`}), `%`_list(mem#1*{mem#1 <- `mem*`}), `%`_list(table#1*{table#1 <- `table*`}), `%`_list(func#1*{func#1 <- `func*`}), `%`_list(data#1*{data#1 <- `data*`}), `%`_list(elem#1*{elem#1 <- `elem*`}), start#1?{start#1 <- `start?`}, `%`_list(export#1*{export#1 <- `export*`})), var_0 +++ var_2 +++ var_4 +++ var_6 +++ var_8 +++ var_10 +++ var_12 +++ var_14 +++ var_16 +++ var_18 +++ var_20) + -- (fun_free_export: `%%`(export, var_21))*{var_21 <- `var_21*`, export <- `export*`} + -- fun_free_list: `%%`(var_21*{var_21 <- `var_21*`}, var_20) + -- (fun_free_import: `%%`(import, var_19))*{var_19 <- `var_19*`, import <- `import*`} + -- fun_free_list: `%%`(var_19*{var_19 <- `var_19*`}, var_18) + -- (fun_free_start: `%%`(start, var_17))?{var_17 <- `var_17?`, start <- `start?`} + -- fun_free_opt: `%%`(var_17?{var_17 <- `var_17?`}, var_16) + -- (fun_free_elem: `%%`(elem, var_15))*{var_15 <- `var_15*`, elem <- `elem*`} + -- fun_free_list: `%%`(var_15*{var_15 <- `var_15*`}, var_14) + -- (fun_free_data: `%%`(data, var_13))*{var_13 <- `var_13*`, data <- `data*`} + -- fun_free_list: `%%`(var_13*{var_13 <- `var_13*`}, var_12) + -- (fun_free_func: `%%`(func, var_11))*{var_11 <- `var_11*`, func <- `func*`} + -- fun_free_list: `%%`(var_11*{var_11 <- `var_11*`}, var_10) + -- (fun_free_table: `%%`(table, var_9))*{var_9 <- `var_9*`, table <- `table*`} + -- fun_free_list: `%%`(var_9*{var_9 <- `var_9*`}, var_8) + -- (fun_free_mem: `%%`(mem, var_7))*{var_7 <- `var_7*`, mem <- `mem*`} + -- fun_free_list: `%%`(var_7*{var_7 <- `var_7*`}, var_6) + -- (fun_free_global: `%%`(global, var_5))*{var_5 <- `var_5*`, global <- `global*`} + -- fun_free_list: `%%`(var_5*{var_5 <- `var_5*`}, var_4) + -- (fun_free_tag: `%%`(tag, var_3))*{var_3 <- `var_3*`, tag <- `tag*`} + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- (fun_free_type: `%%`(type, var_1))*{var_1 <- `var_1*`, type <- `type*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $funcidx_module(module : module) : funcidx* +relation fun_funcidx_module: `%%`(module, funcidx*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $funcidx_module{module : module}(module) = $free_module(module).FUNCS_free + rule fun_funcidx_module_case_0{module : module, var_0 : free}: + `%%`(module, var_0.FUNCS_free) + -- fun_free_module: `%%`(module, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $dataidx_funcs(func*) : dataidx* +relation fun_dataidx_funcs: `%%`(func*, dataidx*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $dataidx_funcs{`func*` : func*}(func#2*{func#2 <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).DATAS_free + rule fun_dataidx_funcs_case_0{`func*` : func*, `var_1*` : free*, var_0 : free}: + `%%`(func#2*{func#2 <- `func*`}, var_0.DATAS_free) + -- (fun_free_func: `%%`(func, var_1))*{var_1 <- `var_1*`, func <- `func*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax init = @@ -5219,60 +6482,97 @@ relation wf_context: `%`(context) -- (wf_uN: `%%`(32, var_11))*{var_11 <- var_11} -- (wf_subtype: `%`(var_12))*{var_12 <- var_12} +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_with_locals_before_fun_with_locals_case_2: `%%%`(context, localidx*, localtype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_with_locals_case_1{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, var_0 : context?}: + `%%%`(C, [x_1] ++ x#1*{x#1 <- `x*`}, [lct_1] ++ lct#1*{lct#1 <- `lct*`}) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_with_locals_case_0{C : context}: + `%%%`(C, [], []) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.158 -def $with_locals(context : context, localidx*, localtype*) : context? - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.34 - def $with_locals{C : context}(C, [], []) = ?(C) - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:52.1-52.90 - def $with_locals{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x#1*{x#1 <- `x*`}, [lct_1] ++ lct#1*{lct#1 <- `lct*`}) = $with_locals(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) - def $with_locals{x0 : context, x1 : localidx*, x2 : localtype*}(x0, x1, x2) = ?() - -- otherwise +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation fun_with_locals: `%%%%`(context, localidx*, localtype*, context?) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_0{C : context}: + `%%%%`(C, [], [], ?(C)) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_1{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, var_0 : context?}: + `%%%%`(C, [x_1] ++ x#1*{x#1 <- `x*`}, [lct_1] ++ lct#1*{lct#1 <- `lct*`}, var_0) + -- fun_with_locals: `%%%%`(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}, var_0) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_2{x0 : context, x1 : localidx*, x2 : localtype*}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_with_locals_before_fun_with_locals_case_2: `%%%`(x0, x1, x2) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 -def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 - def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:72.1-72.101 - def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt#2*{dt#2 <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, $typeuse_deftype(dt')*{dt' <- `dt'*`})] - -- if (dt'#1*{dt'#1 <- `dt'*`} = $clos_deftypes(dt#3*{dt#3 <- `dt*`})) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 +relation fun_clos_deftypes: `%%`(deftype*, deftype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 + rule fun_clos_deftypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 + rule fun_clos_deftypes_case_1{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%`(dt#2*{dt#2 <- `dt*`} ++ [dt_n], dt'*{dt' <- `dt'*`} ++ [var_0]) + -- fun_clos_deftypes: `%%`(dt#3*{dt#3 <- `dt*`}, var_1) + -- fun_subst_all_deftype: `%%%`(dt_n, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) + -- if (dt'#1*{dt'#1 <- `dt'*`} = var_1) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_valtype(context : context, valtype : valtype) : valtype +relation fun_clos_valtype: `%%%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt#4*{dt#4 <- `dt*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_valtype_case_0{C : context, t : valtype, `dt*` : deftype*, var_1 : deftype*, var_0 : valtype}: + `%%%`(C, t, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- if (dt#4*{dt#4 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_deftype(context : context, deftype : deftype) : deftype +relation fun_clos_deftype: `%%%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, $typeuse_deftype(dt')*{dt' <- `dt'*`}) - -- if (dt'#2*{dt'#2 <- `dt'*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_deftype_case_0{C : context, dt : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%%`(C, dt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_deftype: `%%%`(dt, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) + -- if (dt'#2*{dt'#2 <- `dt'*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_tagtype(context : context, tagtype : tagtype) : tagtype +relation fun_clos_tagtype: `%%%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_tagtype{C : context, jt : typeuse, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt#5*{dt#5 <- `dt*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_tagtype_case_0{C : context, jt : typeuse, `dt*` : deftype*, var_1 : deftype*, var_0 : tagtype}: + `%%%`(C, jt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_tagtype: `%%%`(jt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- if (dt#5*{dt#5 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_externtype(context : context, externtype : externtype) : externtype +relation fun_clos_externtype: `%%%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt#6*{dt#6 <- `dt*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_externtype_case_0{C : context, xt : externtype, `dt*` : deftype*, var_1 : deftype*, var_0 : externtype}: + `%%%`(C, xt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_externtype: `%%%`(xt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- if (dt#6*{dt#6 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_moduletype(context : context, moduletype : moduletype) : moduletype +relation fun_clos_moduletype: `%%%`(context, moduletype, moduletype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt#7*{dt#7 <- `dt*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_moduletype_case_0{C : context, mmt : moduletype, `dt*` : deftype*, var_1 : deftype*, var_0 : moduletype}: + `%%%`(C, mmt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_moduletype: `%%%`(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- if (dt#7*{dt#7 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -5316,10 +6616,11 @@ relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: + rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*, var_0 : subtype}: `%~~%`(deftype, comptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) - -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- if (var_0 = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- fun_unrolldt: `%%`(deftype, var_0) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) @@ -5336,13 +6637,20 @@ def $before(typeuse : typeuse, nat : nat) : bool def $before{typeuse : typeuse, i : nat}(typeuse, i) = true ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -def $unrollht_(context : context, heaptype : heaptype) : subtype +relation fun_unrollht_: `%%%`(context, heaptype, subtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht_{rectype : rectype, n : n, C : context}(C, _DEF_heaptype(rectype, n)) = $unrolldt(_DEF_deftype(rectype, n)) + rule fun_unrollht__case_0{rectype : rectype, n : n, C : context, var_0 : subtype}: + `%%%`(C, _DEF_heaptype(rectype, n), var_0) + -- fun_unrolldt: `%%`(_DEF_deftype(rectype, n), var_0) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht_{C : context, typeidx : uN}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[$proj_uN_0(typeidx).0]) + rule fun_unrollht__case_1{C : context, typeidx : uN, var_0 : subtype}: + `%%%`(C, _IDX_heaptype(typeidx), var_0) + -- fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(typeidx).0], var_0) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht_{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] + rule fun_unrollht__case_2{C : context, i : nat}: + `%%%`(C, REC_heaptype(i), C.RECS_context[i]) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -5410,7 +6718,6 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- wf_context: `%`(C) -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 @@ -5419,7 +6726,6 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) -- wf_context: `%`(C) -- wf_subtype: `%`(st) -- wf_typeuse: `%`(REC_typeuse(i)) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 @@ -5488,19 +6794,18 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:167.1-176.49 - rule _{C : context, `typeuse*` : typeuse*, comptype : comptype, i : nat, `comptype'*` : comptype*, `typeuse'**` : typeuse**}: + rule _{C : context, `typeuse*` : typeuse*, comptype : comptype, i : nat, `comptype'*` : comptype*, `typeuse'**` : typeuse**, `var_0*` : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype), OK_oktypenat(i)) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) - -- if (|`comptype'*`| = |`typeuse'**`|) -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (Typeuse_ok: `%|-%:OK`(C, typeuse))*{typeuse <- `typeuse*`} -- (if $before(typeuse, i))*{typeuse <- `typeuse*`} - -- if (|`comptype'*`| = |`typeuse*`|) - -- (if ($unrollht_(C, $heaptype_typeuse(typeuse)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} + -- (if (var_0 = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- (fun_unrollht_: `%%%`(C, $heaptype_typeuse(typeuse), var_0))*{var_0 <- `var_0*`, typeuse <- `typeuse*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) @@ -5537,7 +6842,6 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 @@ -5560,19 +6864,21 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 - rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype, var_1 : deftype, var_0 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- wf_context: `%`(C) - -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) + -- if (var_0 = var_1) + -- fun_clos_deftype: `%%%`(C, deftype_2, var_1) + -- fun_clos_deftype: `%%%`(C, deftype_1, var_0) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 - rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat, var_0 : subtype}: `%|-%<:%`(C, deftype_1, deftype_2) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |typeuse*{typeuse <- `typeuse*`}|) + -- if (var_0 = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) + -- fun_unrolldt: `%%`(deftype_1, var_0) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) @@ -5657,7 +6963,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 @@ -5666,7 +6971,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 @@ -5676,7 +6980,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 @@ -5686,7 +6989,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 @@ -5696,17 +6998,14 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_heaptype: `%`(FUNC_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[j])) - -- if (j < |typeuse*{typeuse <- `typeuse*`}|) -- wf_context: `%`(C) -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 @@ -5815,7 +7114,6 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) -- wf_context: `%`(C) -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} - -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 @@ -5873,8 +7171,6 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- if (|`lct*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5892,7 +7188,6 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(comptype) -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5909,20 +7204,18 @@ relation wf_oktypeidx: `%`(oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `comptype'*` : comptype*, `yy**` : typeuse**}: + rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `comptype'*` : comptype*, `yy**` : typeuse**, `var_0*` : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- if (|`comptype'*`| = |`yy**`|) -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} - -- if (|`comptype'*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} - -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} + -- (if (var_0 = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `yy*` <- `yy**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- (fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(x).0], var_0))*{var_0 <- `var_0*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -6048,8 +7341,6 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) - -- if (|`t*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -6180,41 +7471,35 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: + rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*, var_0 : deftype?}: `%|-%:OK`(C, CATCH_catch(x, l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) + -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: + rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*, var_0 : deftype?}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_ALL_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6222,42 +7507,97 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec -def $default_(valtype : valtype) : val?? +relation fun_default__before_fun_default__case_7: `%`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_6{ht : heaptype}: + `%`(REF_valtype(?(), ht)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_5{ht : heaptype}: + `%`(REF_valtype(?(NULL_null), ht)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_4: + `%`(V128_valtype) + -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_3{var_0 : fN}: + `%`(F64_valtype) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_2{var_0 : fN}: + `%`(F32_valtype) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_1: + `%`(I64_valtype) + -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_0: + `%`(I32_valtype) + -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation fun_default_: `%%`(valtype, val??) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(I32_valtype) = ?(?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0))))) + rule fun_default__case_0: + `%%`(I32_valtype, ?(?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))))) -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(I64_valtype) = ?(?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0))))) + rule fun_default__case_1: + `%%`(I64_valtype, ?(?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))))) -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(F32_valtype) = ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) + rule fun_default__case_2{var_0 : fN}: + `%%`(F32_valtype, ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(F64_valtype) = ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) + rule fun_default__case_3{var_0 : fN}: + `%%`(F64_valtype, ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(V128_valtype) = ?(?(VCONST_val(V128_vectype, `%`_vec_(0)))) + rule fun_default__case_4: + `%%`(V128_valtype, ?(?(VCONST_val(V128_vectype, `%`_vec_(0))))) -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) + rule fun_default__case_5{ht : heaptype}: + `%%`(REF_valtype(?(NULL_null), ht), ?(?(`REF.NULL_ADDR`_val))) -- wf_val: `%`(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) - def $default_{x0 : valtype}(x0) = ?() - -- otherwise + rule fun_default__case_6{ht : heaptype}: + `%%`(REF_valtype(?(), ht), ?(?())) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_7{x0 : valtype}: + `%%`(x0, ?()) + -- ~ fun_default__before_fun_default__case_7: `%`(x0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule _{t : valtype}: + rule _{t : valtype, var_0 : val??}: `|-%DEFAULTABLE`(t) -- wf_valtype: `%`(t) - -- if ($default_(t) =/= ?()) - -- if (!($default_(t)) =/= ?()) + -- if (!(var_0) =/= ?()) + -- fun_default_: `%%`(t, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) @@ -6269,9 +7609,11 @@ relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) -- if (m < (2 ^ $size($numtype_addrtype(at)))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -def $is_packtype(storagetype : storagetype) : bool +relation fun_is_packtype: `%%`(storagetype, bool) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - def $is_packtype{zt : storagetype}(zt) = (zt =/= $storagetype_valtype($unpack(zt))) + rule fun_is_packtype_case_0{zt : storagetype, var_0 : valtype}: + `%%`(zt, (zt =/= $storagetype_valtype(var_0))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rec { @@ -6363,7 +7705,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(BR_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6373,7 +7714,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_IF_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 @@ -6382,9 +7722,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} - -- if ($proj_uN_0(l').0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6394,7 +7732,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -6404,36 +7741,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 - rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, var_0 : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(var_0)]))) -- wf_context: `%`(C) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(var_0)]))) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 - rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, var_0 : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) -- wf_context: `%`(C) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + -- Reftype_sub: `%|-%<:%`(C, var_0, rt) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: @@ -6442,7 +7778,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(CALL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 @@ -6452,7 +7787,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 @@ -6464,10 +7798,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 @@ -6489,7 +7821,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6504,7 +7835,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6521,27 +7851,24 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 - rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*, var_0 : deftype?}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`(C) -- wf_instr: `%`(THROW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: @@ -6578,9 +7905,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(`REF.FUNC`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) - -- if (|C.REFS_context| > 0) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 @@ -6641,83 +7966,82 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 - rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: - `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*, `var_0*` : valtype*}: + `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 - rule `struct.new_default`{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + rule `struct.new_default`{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*, `var_0*` : valtype*}: `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} + -- (Defaultable: `|-%DEFAULTABLE`(var_0))*{var_0 <- `var_0*`} + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 - rule `struct.get`{C : context, `sx?` : sx?, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: - `%|-%:%`(C, `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + rule `struct.get`{C : context, `sx?` : sx?, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([var_0]))) -- wf_context: `%`(C) -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([var_0]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> var_1) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 - rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*}: - `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*, var_0 : valtype}: + `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 - rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([var_0 I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([var_0 I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 - rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype}: + rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype, var_0 : valtype}: `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + -- Defaultable: `|-%DEFAULTABLE`(var_0) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 - rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype(var_0^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(var_0^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule `array.new_elem`{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: @@ -6726,44 +8050,42 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 - rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: + rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype, var_0 : valtype}: `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- if ((var_0 = $valtype_numtype(numtype)) \/ (var_0 = $valtype_vectype(vectype))) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 - rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([var_0]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([var_0]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> var_1) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 - rule `array.set`{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + rule `array.set`{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule `array.len`{C : context}: @@ -6773,14 +8095,14 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 - rule `array.fill`{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + rule `array.fill`{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule `array.copy`{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: @@ -6790,9 +8112,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) @@ -6803,23 +8123,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 - rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: + rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype, var_0 : valtype}: `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- if ((var_0 = $valtype_numtype(numtype)) \/ (var_0 = $valtype_vectype(vectype))) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: @@ -6844,7 +8161,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`LOCAL.GET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 @@ -6854,7 +8170,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`LOCAL.SET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 @@ -6864,7 +8179,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 @@ -6874,7 +8188,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 @@ -6884,7 +8197,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 @@ -6894,7 +8206,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.GET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 @@ -6904,7 +8215,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.SET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 @@ -6914,7 +8224,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 @@ -6924,7 +8233,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.GROW`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 @@ -6934,7 +8242,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.FILL`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 @@ -6945,9 +8252,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) - -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) - -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6959,9 +8264,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6972,7 +8275,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(`ELEM.DROP`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 @@ -6982,7 +8284,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 @@ -6992,7 +8293,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 @@ -7002,7 +8302,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 @@ -7013,9 +8312,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) - -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) - -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 @@ -7025,9 +8322,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 @@ -7036,7 +8331,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(`DATA.DROP`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 @@ -7046,7 +8340,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) @@ -7057,7 +8350,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) @@ -7068,7 +8360,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) @@ -7079,7 +8370,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) @@ -7090,7 +8380,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) @@ -7101,7 +8390,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) @@ -7112,7 +8400,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) @@ -7123,7 +8410,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) @@ -7134,7 +8420,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -7146,7 +8431,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) @@ -7157,7 +8441,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -7296,12 +8579,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 - rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: + rule vshuffle{C : context, sh : bshape, `i*` : laneidx*, var_0 : dim}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} + -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0(var_0).0)))*{i <- `i*`} + -- fun_dim: `%%`($proj_bshape_0(sh).0, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: @@ -7311,20 +8595,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 - rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: + rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx, var_0 : dim}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) -- wf_context: `%`(C) -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) - -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) + -- fun_dim: `%%`(sh, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 - rule vreplace_lane{C : context, sh : shape, i : laneidx}: + rule vreplace_lane{C : context, sh : shape, i : laneidx, var_0 : dim}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) - -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) + -- fun_dim: `%%`(sh, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: @@ -7370,23 +8656,20 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 - rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: + rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*, var_0 : context?}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- wf_context: `%`(C) -- wf_instr: `%`(instr_1) -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`t*`|) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`x_1*`|) - -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} - -- if ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}) =/= ?()) - -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instrs_ok: `%|-%:%`(!(var_0), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- fun_with_locals: `%%%%`(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: @@ -7423,11 +8706,11 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule _{t : valtype}: + rule _{t : valtype, var_0 : val??}: `|-%NONDEFAULTABLE`(t) -- wf_valtype: `%`(t) - -- if ($default_(t) =/= ?()) - -- if (!($default_(t)) = ?()) + -- if (!(var_0) = ?()) + -- fun_default_: `%%`(t, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) @@ -7509,7 +8792,6 @@ relation Instr_const: `%|-%CONST`(context, instr) -- wf_context: `%`(C) -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7520,9 +8802,7 @@ relation Instr_const: `%|-%CONST`(context, instr) -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, ADD_binop_Inn)) -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, SUB_binop_Inn)) -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, MUL_binop_Inn)) - -- if (|[I32_Inn I64_Inn]| > 0) -- if (Inn <- [I32_Inn I64_Inn]) - -- if (|[mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]| > 0) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7548,23 +8828,25 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: + rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx, var_0 : deftype*}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) - -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) + -- if (dt*{dt <- `dt*`} = var_0) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) + -- fun_rolldt: `%%%`(x, rectype, var_0) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, tagtype : tagtype}: - `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + rule _{C : context, tagtype : tagtype, var_0 : tagtype}: + `%|-%:%`(C, TAG_tag(tagtype), var_0) -- wf_context: `%`(C) -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) + -- fun_clos_tagtype: `%%%`(C, tagtype, var_0) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Global_ok: `%|-%:%`(context, global, globaltype) @@ -7622,13 +8904,11 @@ relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- wf_context: `%`(C) -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -7646,7 +8926,6 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) -- wf_context: `%`(C) -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) @@ -7682,7 +8961,6 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- wf_reftype: `%`(rt) -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) @@ -7706,17 +8984,17 @@ relation Start_ok: `%|-%:OK`(context, start) -- wf_context: `%`(C) -- wf_start: `%`(START_start(x)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: - `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + rule _{C : context, name_1 : name, name_2 : name, xt : externtype, var_0 : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), var_0) -- wf_context: `%`(C) -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) + -- fun_clos_externtype: `%%%`(C, xt, var_0) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Externidx_ok: `%|-%:%`(context, externidx, externtype) @@ -7726,7 +9004,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(TAG_externidx(x)) -- wf_externtype: `%`(TAG_externtype(jt)) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7735,7 +9012,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(GLOBAL_externidx(x)) -- wf_externtype: `%`(GLOBAL_externtype(gt)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7744,7 +9020,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(MEM_externidx(x)) -- wf_externtype: `%`(MEM_externtype(mt)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7753,7 +9028,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(TABLE_externidx(x)) -- wf_externtype: `%`(TABLE_externtype(tt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7762,7 +9036,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(FUNC_externidx(x)) -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7833,16 +9106,18 @@ relation wf_nonfuncs: `%`(nonfuncs) -- (wf_export: `%`(export))*{export <- `export*`} ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* +relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}(`%%%%%%`_nonfuncs(global#2*{global#2 <- `global*`}, mem#2*{mem#2 <- `mem*`}, table#2*{table#2 <- `table*`}, elem#2*{elem#2 <- `elem*`}, start#2?{start#2 <- `start?`}, export#2*{export#2 <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) + rule fun_funcidx_nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*, var_0 : funcidx*}: + `%%`(`%%%%%%`_nonfuncs(global#2*{global#2 <- `global*`}, mem#2*{mem#2 <- `mem*`}, table#2*{table#2 <- `table*`}, elem#2*{elem#2 <- `elem*`}, start#2?{start#2 <- `start?`}, export#2*{export#2 <- `export*`}), var_0) + -- fun_funcidx_module: `%%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#3*{export#3 <- `export*`}))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: - `|-%:%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*, var_1 : funcidx*, var_0 : moduletype}: + `|-%:%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) -- wf_context: `%`(C) -- wf_context: `%`(C') -- (wf_name: `%`(nm))*{nm <- `nm*`} @@ -7854,34 +9129,27 @@ relation Module_ok: `|-%:%`(module, moduletype) -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) -- wf_nonfuncs: `%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) - -- if (|`import*`| = |`xt_I*`|) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} - -- if (|`jt*`| = |`tag*`|) -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- if (|`mem*`| = |`mt*`|) -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} - -- if (|`table*`| = |`tt*`|) -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} - -- if (|`dt*`| = |`func*`|) -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} - -- if (|`data*`| = |`ok*`|) -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} - -- if (|`elem*`| = |`rt*`|) -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} - -- if (|`export*`| = |`nm*`|) - -- if (|`export*`| = |`xt_E*`|) -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) -- if (C = C' +++ {TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) - -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}))) + -- if (x*{x <- `x*`} = var_1) -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) + -- fun_funcidx_nonfuncs: `%%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_1) + -- fun_clos_moduletype: `%%%`(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}), var_0) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed2 = @@ -8004,62 +9272,127 @@ def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $signed_(N : N, nat : nat) : int +relation fun_signed_: `%%%`(N, nat, int) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $signed_{N : nat, i : nat}(N, i) = (i : nat <:> int) + rule fun_signed__case_0{N : nat, i : nat}: + `%%%`(N, i, (i : nat <:> int)) -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $signed_{N : nat, i : nat}(N, i) = ((i : nat <:> int) - ((2 ^ N) : nat <:> int)) + rule fun_signed__case_1{N : nat, i : nat}: + `%%%`(N, i, ((i : nat <:> int) - ((2 ^ N) : nat <:> int))) -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inv_signed_(N : N, int : int) : nat +relation fun_inv_signed_: `%%%`(N, int, nat) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inv_signed_{N : nat, i : int}(N, i) = (i : int <:> nat) + rule fun_inv_signed__case_0{N : nat, i : int}: + `%%%`(N, i, (i : int <:> nat)) -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inv_signed_{N : nat, i : int}(N, i) = ((i + ((2 ^ N) : nat <:> int)) : int <:> nat) + rule fun_inv_signed__case_1{N : nat, i : int}: + `%%%`(N, i, ((i + ((2 ^ N) : nat <:> int)) : int <:> nat)) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $sx(storagetype : storagetype) : sx?? +relation fun_sx_before_fun_sx_case_7: `%`(storagetype) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(I32_storagetype) = ?(?()) + rule fun_sx_case_6: + `%`(I16_storagetype) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(I64_storagetype) = ?(?()) + rule fun_sx_case_5: + `%`(I8_storagetype) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(F32_storagetype) = ?(?()) + rule fun_sx_case_4: + `%`(V128_storagetype) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(F64_storagetype) = ?(?()) + rule fun_sx_case_3: + `%`(F64_storagetype) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(V128_storagetype) = ?(?()) + rule fun_sx_case_2: + `%`(F32_storagetype) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(I8_storagetype) = ?(?(S_sx)) + rule fun_sx_case_1: + `%`(I64_storagetype) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(I16_storagetype) = ?(?(S_sx)) - def $sx{x0 : storagetype}(x0) = ?() - -- otherwise + rule fun_sx_case_0: + `%`(I32_storagetype) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_sx: `%%`(storagetype, sx??) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_0: + `%%`(I32_storagetype, ?(?())) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_1: + `%%`(I64_storagetype, ?(?())) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_2: + `%%`(F32_storagetype, ?(?())) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_3: + `%%`(F64_storagetype, ?(?())) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_4: + `%%`(V128_storagetype, ?(?())) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_5: + `%%`(I8_storagetype, ?(?(S_sx))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_6: + `%%`(I16_storagetype, ?(?(S_sx))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_7{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_sx_before_fun_sx_case_7: `%`(x0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $zero(lanetype : lanetype) : lane_ +relation fun_zero: `%%`(lanetype, lane_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) + rule fun_zero_case_0: + `%%`(I32_lanetype, mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) + rule fun_zero_case_1: + `%%`(I64_lanetype, mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) + rule fun_zero_case_2: + `%%`(I8_lanetype, mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) + rule fun_zero_case_3: + `%%`(I16_lanetype, mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) + rule fun_zero_case_4{var_0 : fN}: + `%%`(F32_lanetype, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) + rule fun_zero_case_5{var_0 : fN}: + `%%`(F64_lanetype, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -8093,7 +9426,8 @@ def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iabs_{N : nat, i_1 : uN}(N, i_1) = (if ($signed_(N, $proj_uN_0(i_1).0) >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + def $iabs_{N : nat, i_1 : uN, var_0 : int}(N, i_1) = (if (var_0 >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iclz_(N : N, iN : iN) : iN @@ -8105,13 +9439,18 @@ def $ictz_(N : N, iN : iN) : iN def $ipopcnt_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN +relation fun_iextend_: `%%%%%`(N, M, sx, iN, iN) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) + rule fun_iextend__case_0{N : nat, M : nat, i : uN}: + `%%%%%`(N, M, U_sx, i, `%`_iN(($proj_uN_0(i).0 \ (2 ^ M)))) -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) + rule fun_iextend__case_1{N : nat, M : nat, i : uN, var_1 : int, var_0 : nat}: + `%%%%%`(N, M, S_sx, i, `%`_iN(var_0)) + -- fun_signed_: `%%%`(M, ($proj_uN_0(i).0 \ (2 ^ M)), var_1) + -- fun_inv_signed_: `%%%`(N, var_1, var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN @@ -8132,34 +9471,58 @@ def $imul_(N : N, iN : iN, iN : iN) : iN -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? +relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + rule fun_idiv__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + rule fun_idiv__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)))) -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + rule fun_idiv__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?() - -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + rule fun_idiv__case_3{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: + `%%%%%`(N, S_sx, i_1, i_2, ?()) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) + rule fun_idiv__case_4{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? +relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + rule fun_irem__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + rule fun_irem__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))) -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + rule fun_irem__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) + rule fun_irem__case_3{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + -- if ((j_1 = var_1) /\ (j_2 = var_2)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8170,7 +9533,9 @@ def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 -- if ($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)) then i_1 else i_2) + def $imin_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 <= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8181,7 +9546,9 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 -- if ($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)) then i_1 else i_2) + def $imax_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 >= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8189,8 +9556,11 @@ def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 + var_2)), var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8198,8 +9568,11 @@ def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 - var_2)), var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8247,15 +9620,17 @@ def $ibitselect_(N : N, iN : iN, iN : iN, iN : iN) : iN def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ieqz_(N : N, iN : iN) : u32 +relation fun_ieqz_: `%%%`(N, iN, u32) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) + rule fun_ieqz__case_0{N : nat, i_1 : uN}: + `%%%`(N, i_1, `%`_u32($bool(($proj_uN_0(i_1).0 = 0)))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inez_(N : N, iN : iN) : u32 +relation fun_inez_: `%%%`(N, iN, u32) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + rule fun_inez__case_0{N : nat, i_1 : uN}: + `%%%`(N, i_1, `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0)))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8276,8 +9651,10 @@ def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) + def $ilt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 < var_1))) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 < var_1)))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 @@ -8285,8 +9662,10 @@ def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) + def $igt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 > var_1))) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 > var_1)))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 @@ -8294,8 +9673,10 @@ def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) + def $ile_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 <= var_1))) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 <= var_1)))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 @@ -8303,8 +9684,10 @@ def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) + def $ige_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 >= var_1))) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 >= var_1)))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -8415,273 +9798,452 @@ def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ +relation fun_lpacknum_: `%%%`(lanetype, num_, lane_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) + rule fun_lpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, c, mk_lane__0_lane_(I32_numtype, c)) -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) + rule fun_lpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, c, mk_lane__0_lane_(I64_numtype, c)) -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) + rule fun_lpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, c, mk_lane__0_lane_(F32_numtype, c)) -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) + rule fun_lpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, c, mk_lane__0_lane_(F64_numtype, c)) -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + rule fun_lpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + rule fun_lpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ +relation fun_cpacknum_: `%%%`(storagetype, lit_, lit_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(I32_storagetype, c) = c + rule fun_cpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(I64_storagetype, c) = c + rule fun_cpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(F32_storagetype, c) = c + rule fun_cpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(F64_storagetype, c) = c + rule fun_cpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(V128_storagetype, c) = c + rule fun_cpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + rule fun_cpacknum__case_5{c : uN}: + `%%%`(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + rule fun_cpacknum__case_6{c : uN}: + `%%%`(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ +relation fun_lunpacknum_: `%%%`(lanetype, lane_, num_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : num_}(I32_lanetype, mk_lane__0_lane_(I32_numtype, c)) = c + rule fun_lunpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, mk_lane__0_lane_(I32_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : num_}(I64_lanetype, mk_lane__0_lane_(I64_numtype, c)) = c + rule fun_lunpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, mk_lane__0_lane_(I64_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : num_}(F32_lanetype, mk_lane__0_lane_(F32_numtype, c)) = c + rule fun_lunpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, mk_lane__0_lane_(F32_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c + rule fun_lunpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, mk_lane__0_lane_(F64_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) + rule fun_lunpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_lane__1_lane_(I8_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) + rule fun_lunpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_lane__1_lane_(I16_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ +relation fun_cunpacknum_: `%%%`(storagetype, lit_, lit_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(I32_storagetype, c) = c + rule fun_cunpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(I64_storagetype, c) = c + rule fun_cunpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(F32_storagetype, c) = c + rule fun_cunpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(F64_storagetype, c) = c + rule fun_cunpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(V128_storagetype, c) = c + rule fun_cunpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) - -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + rule fun_cunpacknum__case_5{c : uN, var_0 : consttype?}: + `%%%`(I8_storagetype, mk_lit__2_lit_(I8_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + -- fun_cunpack: `%%`($storagetype_packtype(I8_packtype), var_0) + -- wf_lit_: `%%`($storagetype_consttype(!(var_0)), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) - -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + rule fun_cunpacknum__case_6{c : uN, var_0 : consttype?}: + `%%%`(I16_storagetype, mk_lit__2_lit_(I16_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + -- fun_cunpack: `%%`($storagetype_packtype(I16_packtype), var_0) + -- wf_lit_: `%%`($storagetype_consttype(!(var_0)), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* +relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))] + rule fun_unop__case_0{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))] + rule fun_unop__case_1{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))] + rule fun_unop__case_2{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))] + rule fun_unop__case_3{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))] + rule fun_unop__case_4{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))] + rule fun_unop__case_5{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i))) + rule fun_unop__case_6{M : nat, i : uN, var_0 : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, var_0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i))) + rule fun_unop__case_7{M : nat, i : uN, var_0 : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, var_0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_8{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#1)))*{iter_0#1 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_9{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#3)))*{iter_0#3 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#6)*{iter_0#6 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_10{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#6)*{iter_0#6 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#5)))*{iter_0#5 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_11{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#7)))*{iter_0#7 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#10)*{iter_0#10 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_12{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#10)*{iter_0#10 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#9)))*{iter_0#9 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_13{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#11)))*{iter_0#11 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#14)*{iter_0#14 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_14{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#14)*{iter_0#14 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#13)))*{iter_0#13 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#16)*{iter_0#16 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_15{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#16)*{iter_0#16 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#15)))*{iter_0#15 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#18)*{iter_0#18 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_16{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#18)*{iter_0#18 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#17)))*{iter_0#17 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_17{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#19)))*{iter_0#19 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#22)*{iter_0#22 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_18{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#22)*{iter_0#22 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#21)))*{iter_0#21 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_19{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#23)))*{iter_0#23 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#26)*{iter_0#26 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_20{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#26)*{iter_0#26 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#25)))*{iter_0#25 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_21{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#27)))*{iter_0#27 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* +relation fun_binop_: `%%%%%`(numtype, binop_, num_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_0{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_1{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_2{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_3{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_4{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_5{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#30)*{iter_0#30 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#29)))*{iter_0#29 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} + rule fun_binop__case_6{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#30)*{iter_0#30 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#29)))*{iter_0#29 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#32)*{iter_0#32 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#31)))*{iter_0#31 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} + rule fun_binop__case_7{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#32)*{iter_0#32 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#31)))*{iter_0#31 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#33)))*{iter_0#33 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} + rule fun_binop__case_8{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#33)))*{iter_0#33 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#35)))*{iter_0#35 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} + rule fun_binop__case_9{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#35)))*{iter_0#35 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_10{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_11{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_12{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_13{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_14{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_15{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + rule fun_binop__case_16{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + rule fun_binop__case_17{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + rule fun_binop__case_18{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + rule fun_binop__case_19{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_20{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_21{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_22{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_23{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#38)*{iter_0#38 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_24{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#38)*{iter_0#38 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#37)))*{iter_0#37 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#40)*{iter_0#40 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_25{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#40)*{iter_0#40 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#39)))*{iter_0#39 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_26{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#41)))*{iter_0#41 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_27{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#43)))*{iter_0#43 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_28{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#45)))*{iter_0#45 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_29{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#47)))*{iter_0#47 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#50)*{iter_0#50 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_30{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#50)*{iter_0#50 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#49)))*{iter_0#49 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#52)*{iter_0#52 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_31{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#52)*{iter_0#52 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#51)))*{iter_0#51 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#54)*{iter_0#54 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_32{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#54)*{iter_0#54 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#53)))*{iter_0#53 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#56)*{iter_0#56 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_33{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#56)*{iter_0#56 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#55)))*{iter_0#55 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#58)*{iter_0#58 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_34{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#58)*{iter_0#58 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#57)))*{iter_0#57 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#60)*{iter_0#60 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_35{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#60)*{iter_0#60 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#59)))*{iter_0#59 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#62)*{iter_0#62 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_36{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#62)*{iter_0#62 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#61)))*{iter_0#61 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#64)*{iter_0#64 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_37{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#64)*{iter_0#64 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#63)))*{iter_0#63 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 +relation fun_testop_: `%%%%`(numtype, testop_, num_, u32) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $testop_{i : uN}(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I32_Inn)), i) + rule fun_testop__case_0{i : uN, var_0 : u32}: + `%%%%`(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I32_Inn)), i, var_0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $testop_{i : uN}(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I64_Inn)), i) + rule fun_testop__case_1{i : uN, var_0 : u32}: + `%%%%`(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I64_Inn)), i, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 @@ -8735,121 +10297,192 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* +relation fun_cvtop__: `%%%%%`(numtype, numtype, cvtop__, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] + rule fun_cvtop___case_0{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] + rule fun_cvtop___case_1{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] + rule fun_cvtop___case_2{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] + rule fun_cvtop___case_3{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] + rule fun_cvtop___case_4{i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] + rule fun_cvtop___case_5{i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] + rule fun_cvtop___case_6{i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] + rule fun_cvtop___case_7{i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#66)*{iter_0#66 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + rule fun_cvtop___case_8{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#66)*{iter_0#66 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#65)))*{iter_0#65 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#68)*{iter_0#68 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + rule fun_cvtop___case_9{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#68)*{iter_0#68 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#67)))*{iter_0#67 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#70)*{iter_0#70 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + rule fun_cvtop___case_10{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#70)*{iter_0#70 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#69)))*{iter_0#69 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#72)*{iter_0#72 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + rule fun_cvtop___case_11{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#72)*{iter_0#72 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#71)))*{iter_0#71 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#74)*{iter_0#74 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + rule fun_cvtop___case_12{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#74)*{iter_0#74 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#73)))*{iter_0#73 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#76)*{iter_0#76 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + rule fun_cvtop___case_13{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#76)*{iter_0#76 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#75)))*{iter_0#75 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#78)*{iter_0#78 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + rule fun_cvtop___case_14{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#78)*{iter_0#78 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#77)))*{iter_0#77 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#80)*{iter_0#80 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + rule fun_cvtop___case_15{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#80)*{iter_0#80 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#79)))*{iter_0#79 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] + rule fun_cvtop___case_16{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] + rule fun_cvtop___case_17{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] + rule fun_cvtop___case_18{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] + rule fun_cvtop___case_19{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#82)*{iter_0#82 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + rule fun_cvtop___case_20{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#82)*{iter_0#82 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#81)))*{iter_0#81 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#84)*{iter_0#84 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + rule fun_cvtop___case_21{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#84)*{iter_0#84 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#83)))*{iter_0#83 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#86)*{iter_0#86 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + rule fun_cvtop___case_22{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#86)*{iter_0#86 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#85)))*{iter_0#85 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#88)*{iter_0#88 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + rule fun_cvtop___case_23{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#88)*{iter_0#88 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#87)))*{iter_0#87 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#90)*{iter_0#90 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + rule fun_cvtop___case_24{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#90)*{iter_0#90 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#89)))*{iter_0#89 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#92)*{iter_0#92 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + rule fun_cvtop___case_25{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#92)*{iter_0#92 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#91)))*{iter_0#91 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#94)*{iter_0#94 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + rule fun_cvtop___case_26{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#94)*{iter_0#94 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#93)))*{iter_0#93 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#96)*{iter_0#96 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + rule fun_cvtop___case_27{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#96)*{iter_0#96 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#95)))*{iter_0#95 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))] + rule fun_cvtop___case_28{i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))] + rule fun_cvtop___case_29{i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))] + rule fun_cvtop___case_30{i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))] + rule fun_cvtop___case_31{i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))] + rule fun_cvtop___case_32{f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))]) -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))] + rule fun_cvtop___case_33{f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))]) -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))] + rule fun_cvtop___case_34{f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))]) -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))] + rule fun_cvtop___case_35{f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))]) -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) @@ -8860,202 +10493,392 @@ def $lanes_(shape : shape, vec_ : vec_) : lane_* def $inv_lanes_(shape : shape, lane_*) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : zero? +relation fun_zeroop: `%%%%`(shape, shape, vcvtop__, zero?) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2833?{half#2833 <- `half?`}, sx))) = ?() + rule fun_zeroop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2833?{half#2833 <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2834?{half#2834 <- `half?`}, sx))) = ?() + rule fun_zeroop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2834?{half#2834 <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2835?{half#2835 <- `half?`}, sx))) = ?() + rule fun_zeroop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2835?{half#2835 <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2836?{half#2836 <- `half?`}, sx))) = ?() + rule fun_zeroop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2836?{half#2836 <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2837?{half#2837 <- `half?`}, sx))) = ?() + rule fun_zeroop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2837?{half#2837 <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2838?{half#2838 <- `half?`}, sx))) = ?() + rule fun_zeroop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2838?{half#2838 <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2839?{half#2839 <- `half?`}, sx))) = ?() + rule fun_zeroop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2839?{half#2839 <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2840?{half#2840 <- `half?`}, sx))) = ?() + rule fun_zeroop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2840?{half#2840 <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3245?{zero#3245 <- `zero?`}))) = zero#3246?{zero#3246 <- `zero?`} + rule fun_zeroop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3245?{zero#3245 <- `zero?`})), zero#3246?{zero#3246 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3247?{zero#3247 <- `zero?`}))) = zero#3248?{zero#3248 <- `zero?`} + rule fun_zeroop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3247?{zero#3247 <- `zero?`})), zero#3248?{zero#3248 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3249?{zero#3249 <- `zero?`}))) = zero#3250?{zero#3250 <- `zero?`} + rule fun_zeroop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3249?{zero#3249 <- `zero?`})), zero#3250?{zero#3250 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3251?{zero#3251 <- `zero?`}))) = zero#3252?{zero#3252 <- `zero?`} + rule fun_zeroop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3251?{zero#3251 <- `zero?`})), zero#3252?{zero#3252 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3253?{zero#3253 <- `zero?`}))) = zero#3254?{zero#3254 <- `zero?`} + rule fun_zeroop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3253?{zero#3253 <- `zero?`})), zero#3254?{zero#3254 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3255?{zero#3255 <- `zero?`}))) = zero#3256?{zero#3256 <- `zero?`} + rule fun_zeroop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3255?{zero#3255 <- `zero?`})), zero#3256?{zero#3256 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3257?{zero#3257 <- `zero?`}))) = zero#3258?{zero#3258 <- `zero?`} + rule fun_zeroop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3257?{zero#3257 <- `zero?`})), zero#3258?{zero#3258 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3259?{zero#3259 <- `zero?`}))) = zero#3260?{zero#3260 <- `zero?`} + rule fun_zeroop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3259?{zero#3259 <- `zero?`})), zero#3260?{zero#3260 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3261?{zero#3261 <- `zero?`}))) = zero#3262?{zero#3262 <- `zero?`} + rule fun_zeroop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3261?{zero#3261 <- `zero?`})), zero#3262?{zero#3262 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3263?{zero#3263 <- `zero?`}))) = zero#3264?{zero#3264 <- `zero?`} + rule fun_zeroop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3263?{zero#3263 <- `zero?`})), zero#3264?{zero#3264 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3265?{zero#3265 <- `zero?`}))) = zero#3266?{zero#3266 <- `zero?`} + rule fun_zeroop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3265?{zero#3265 <- `zero?`})), zero#3266?{zero#3266 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3267?{zero#3267 <- `zero?`}))) = zero#3268?{zero#3268 <- `zero?`} + rule fun_zeroop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3267?{zero#3267 <- `zero?`})), zero#3268?{zero#3268 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3269?{zero#3269 <- `zero?`}))) = zero#3270?{zero#3270 <- `zero?`} + rule fun_zeroop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3269?{zero#3269 <- `zero?`})), zero#3270?{zero#3270 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3271?{zero#3271 <- `zero?`}))) = zero#3272?{zero#3272 <- `zero?`} + rule fun_zeroop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3271?{zero#3271 <- `zero?`})), zero#3272?{zero#3272 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3273?{zero#3273 <- `zero?`}))) = zero#3274?{zero#3274 <- `zero?`} + rule fun_zeroop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3273?{zero#3273 <- `zero?`})), zero#3274?{zero#3274 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3275?{zero#3275 <- `zero?`}))) = zero#3276?{zero#3276 <- `zero?`} + rule fun_zeroop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3275?{zero#3275 <- `zero?`})), zero#3276?{zero#3276 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + rule fun_zeroop_case_40{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + rule fun_zeroop_case_41{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + rule fun_zeroop_case_42{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + rule fun_zeroop_case_43{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + rule fun_zeroop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + rule fun_zeroop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + rule fun_zeroop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + rule fun_zeroop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : half? +relation fun_halfop: `%%%%`(shape, shape, vcvtop__, half?) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2841?{half#2841 <- `half?`}, sx))) = half#2842?{half#2842 <- `half?`} + rule fun_halfop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2841?{half#2841 <- `half?`}, sx)), half#2842?{half#2842 <- `half?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2843?{half#2843 <- `half?`}, sx))) = half#2844?{half#2844 <- `half?`} + rule fun_halfop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2843?{half#2843 <- `half?`}, sx)), half#2844?{half#2844 <- `half?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2845?{half#2845 <- `half?`}, sx))) = half#2846?{half#2846 <- `half?`} + rule fun_halfop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2845?{half#2845 <- `half?`}, sx)), half#2846?{half#2846 <- `half?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2847?{half#2847 <- `half?`}, sx))) = half#2848?{half#2848 <- `half?`} + rule fun_halfop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2847?{half#2847 <- `half?`}, sx)), half#2848?{half#2848 <- `half?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2849?{half#2849 <- `half?`}, sx))) = half#2850?{half#2850 <- `half?`} + rule fun_halfop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2849?{half#2849 <- `half?`}, sx)), half#2850?{half#2850 <- `half?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2851?{half#2851 <- `half?`}, sx))) = half#2852?{half#2852 <- `half?`} + rule fun_halfop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2851?{half#2851 <- `half?`}, sx)), half#2852?{half#2852 <- `half?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2853?{half#2853 <- `half?`}, sx))) = half#2854?{half#2854 <- `half?`} + rule fun_halfop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2853?{half#2853 <- `half?`}, sx)), half#2854?{half#2854 <- `half?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2855?{half#2855 <- `half?`}, sx))) = half#2856?{half#2856 <- `half?`} + rule fun_halfop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2855?{half#2855 <- `half?`}, sx)), half#2856?{half#2856 <- `half?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3277?{zero#3277 <- `zero?`}))) = ?() + rule fun_halfop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3277?{zero#3277 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3278?{zero#3278 <- `zero?`}))) = ?() + rule fun_halfop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3278?{zero#3278 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3279?{zero#3279 <- `zero?`}))) = ?() + rule fun_halfop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3279?{zero#3279 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3280?{zero#3280 <- `zero?`}))) = ?() + rule fun_halfop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3280?{zero#3280 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3281?{zero#3281 <- `zero?`}))) = ?() + rule fun_halfop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3281?{zero#3281 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3282?{zero#3282 <- `zero?`}))) = ?() + rule fun_halfop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3282?{zero#3282 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3283?{zero#3283 <- `zero?`}))) = ?() + rule fun_halfop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3283?{zero#3283 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3284?{zero#3284 <- `zero?`}))) = ?() + rule fun_halfop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3284?{zero#3284 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3285?{zero#3285 <- `zero?`}))) = ?() + rule fun_halfop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3285?{zero#3285 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3286?{zero#3286 <- `zero?`}))) = ?() + rule fun_halfop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3286?{zero#3286 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3287?{zero#3287 <- `zero?`}))) = ?() + rule fun_halfop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3287?{zero#3287 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3288?{zero#3288 <- `zero?`}))) = ?() + rule fun_halfop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3288?{zero#3288 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3289?{zero#3289 <- `zero?`}))) = ?() + rule fun_halfop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3289?{zero#3289 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3290?{zero#3290 <- `zero?`}))) = ?() + rule fun_halfop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3290?{zero#3290 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3291?{zero#3291 <- `zero?`}))) = ?() + rule fun_halfop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3291?{zero#3291 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3292?{zero#3292 <- `zero?`}))) = ?() + rule fun_halfop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3292?{zero#3292 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + rule fun_halfop_case_40{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + rule fun_halfop_case_41{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + rule fun_halfop_case_42{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + rule fun_halfop_case_43{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + rule fun_halfop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + rule fun_halfop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + rule fun_halfop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + rule fun_halfop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $half(half : half, nat : nat, nat : nat) : nat @@ -9073,8 +10896,9 @@ def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#2*{c#2 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN, var_0 : int}(N, c#2*{c#2 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if (var_0 < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) -- wf_uN: `%%`(N, `%`_uN(0)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i).0, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* @@ -9472,33 +11296,40 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i -- if (c#133*{c#133 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#132)), i)*{c_1#132 <- `c_1*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 +relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + rule fun_ivbitmaskop__case_0{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#133)), `%`_iN(0))).0)))*{c_1#133 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) -- if (c_1#134*{c_1#134 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#135)), `%`_iN(0))).0)*{c_1#135 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + rule fun_ivbitmaskop__case_1{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#136)), `%`_iN(0))).0)))*{c_1#136 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) -- if (c_1#137*{c_1#137 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#138)), `%`_iN(0))).0)*{c_1#138 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + rule fun_ivbitmaskop__case_2{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#139)), `%`_iN(0))).0)))*{c_1#139 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) -- if (c_1#140*{c_1#140 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#141)), `%`_iN(0))).0)*{c_1#141 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + rule fun_ivbitmaskop__case_3{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#142)), `%`_iN(0))).0)))*{c_1#142 <- `c_1*`} @@ -9546,9 +11377,10 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, -- if (c#145*{c#145 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#156))*{c_1#156 <- `c_1*`}, !($proj_lane__2(c_2#102)))*{c_2#102 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ +relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), i#128389*{i#128389 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#149*{c#149 <- `c*`}) + rule fun_ivshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), i#128389*{i#128389 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#149*{c#149 <- `c*`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c#147))*{c#147 <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1#157))*{c_1#157 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2#103))*{c_2#103 <- `c_2*`} @@ -9556,8 +11388,10 @@ def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ -- if (c_1#158*{c_1#158 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) -- if (c_2#104*{c_2#104 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) -- if (c#148*{c#148 <- `c*`} = c_1#159*{c_1#159 <- `c_1*`} ++ c_2#105*{c_2#105 <- `c_2*`}[$proj_uN_0(i#128396).0]*{i#128396 <- `i*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i#128399*{i#128399 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#152*{c#152 <- `c*`}) + rule fun_ivshufflop__case_1{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), i#128399*{i#128399 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#152*{c#152 <- `c*`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c#150))*{c#150 <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1#160))*{c_1#160 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2#106))*{c_2#106 <- `c_2*`} @@ -9565,8 +11399,10 @@ def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ -- if (c_1#161*{c_1#161 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) -- if (c_2#107*{c_2#107 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) -- if (c#151*{c#151 <- `c*`} = c_1#162*{c_1#162 <- `c_1*`} ++ c_2#108*{c_2#108 <- `c_2*`}[$proj_uN_0(i#128406).0]*{i#128406 <- `i*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i#128409*{i#128409 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#155*{c#155 <- `c*`}) + rule fun_ivshufflop__case_2{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i#128409*{i#128409 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#155*{c#155 <- `c*`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c#153))*{c#153 <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1#163))*{c_1#163 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2#109))*{c_2#109 <- `c_2*`} @@ -9574,8 +11410,10 @@ def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ -- if (c_1#164*{c_1#164 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) -- if (c_2#110*{c_2#110 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) -- if (c#154*{c#154 <- `c*`} = c_1#165*{c_1#165 <- `c_1*`} ++ c_2#111*{c_2#111 <- `c_2*`}[$proj_uN_0(i#128416).0]*{i#128416 <- `i*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i#128419*{i#128419 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#158*{c#158 <- `c*`}) + rule fun_ivshufflop__case_3{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), i#128419*{i#128419 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#158*{c#158 <- `c*`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c#156))*{c#156 <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1#166))*{c_1#166 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2#112))*{c_2#112 <- `c_2*`} @@ -9606,795 +11444,1239 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* +relation fun_vunop_: `%%%%`(shape, vunop_, vec_, vec_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v) + rule fun_vunop__case_0{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v) + rule fun_vunop__case_1{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v) + rule fun_vunop__case_2{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v) + rule fun_vunop__case_3{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v) + rule fun_vunop__case_4{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v) + rule fun_vunop__case_5{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v) + rule fun_vunop__case_6{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v) + rule fun_vunop__case_7{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v) + rule fun_vunop__case_8{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v) + rule fun_vunop__case_9{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v) + rule fun_vunop__case_10{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v) + rule fun_vunop__case_11{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v) + rule fun_vunop__case_12{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v) + rule fun_vunop__case_13{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v) + rule fun_vunop__case_14{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v) + rule fun_vunop__case_15{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v) + rule fun_vunop__case_16{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v) + rule fun_vunop__case_17{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v) + rule fun_vunop__case_18{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v) + rule fun_vunop__case_19{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v) + rule fun_vunop__case_20{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v) + rule fun_vunop__case_21{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v) + rule fun_vunop__case_22{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v) + rule fun_vunop__case_23{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v) + rule fun_vunop__case_24{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v) + rule fun_vunop__case_25{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* +relation fun_vbinop_: `%%%%%`(shape, vbinop_, vec_, vec_, vec_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + rule fun_vbinop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + rule fun_vbinop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + rule fun_vbinop__case_2{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + rule fun_vbinop__case_3{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + rule fun_vbinop__case_4{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + rule fun_vbinop__case_5{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + rule fun_vbinop__case_6{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + rule fun_vbinop__case_7{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + rule fun_vbinop__case_8{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + rule fun_vbinop__case_9{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + rule fun_vbinop__case_10{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + rule fun_vbinop__case_11{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + rule fun_vbinop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + rule fun_vbinop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + rule fun_vbinop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + rule fun_vbinop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + rule fun_vbinop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + rule fun_vbinop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + rule fun_vbinop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + rule fun_vbinop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + rule fun_vbinop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + rule fun_vbinop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + rule fun_vbinop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + rule fun_vbinop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + rule fun_vbinop__case_24{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + rule fun_vbinop__case_25{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + rule fun_vbinop__case_26{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + rule fun_vbinop__case_27{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + rule fun_vbinop__case_28{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + rule fun_vbinop__case_29{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + rule fun_vbinop__case_30{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + rule fun_vbinop__case_31{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + rule fun_vbinop__case_32{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + rule fun_vbinop__case_33{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + rule fun_vbinop__case_34{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + rule fun_vbinop__case_35{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + rule fun_vbinop__case_36{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + rule fun_vbinop__case_37{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + rule fun_vbinop__case_38{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + rule fun_vbinop__case_39{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) + rule fun_vbinop__case_40{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) + rule fun_vbinop__case_41{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) + rule fun_vbinop__case_42{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) + rule fun_vbinop__case_43{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) + rule fun_vbinop__case_44{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) + rule fun_vbinop__case_45{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) + rule fun_vbinop__case_46{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) + rule fun_vbinop__case_47{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) + rule fun_vbinop__case_48{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) + rule fun_vbinop__case_49{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) + rule fun_vbinop__case_50{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) + rule fun_vbinop__case_51{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) + rule fun_vbinop__case_52{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) + rule fun_vbinop__case_53{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) + rule fun_vbinop__case_54{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) + rule fun_vbinop__case_55{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + rule fun_vbinop__case_56{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + rule fun_vbinop__case_57{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + rule fun_vbinop__case_58{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + rule fun_vbinop__case_59{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* +relation fun_vternop_: `%%%%%%`(shape, vternop_, vec_, vec_, vec_, vec_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + rule fun_vternop__case_0{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + rule fun_vternop__case_1{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + rule fun_vternop__case_2{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + rule fun_vternop__case_3{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + rule fun_vternop__case_4{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + rule fun_vternop__case_5{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + rule fun_vternop__case_6{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + rule fun_vternop__case_7{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ +relation fun_vrelop_: `%%%%%`(shape, vrelop_, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + rule fun_vrelop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + rule fun_vrelop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + rule fun_vrelop__case_2{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + rule fun_vrelop__case_3{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + rule fun_vrelop__case_4{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + rule fun_vrelop__case_5{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + rule fun_vrelop__case_6{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + rule fun_vrelop__case_7{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + rule fun_vrelop__case_8{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + rule fun_vrelop__case_9{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + rule fun_vrelop__case_10{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + rule fun_vrelop__case_11{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + rule fun_vrelop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + rule fun_vrelop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + rule fun_vrelop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + rule fun_vrelop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + rule fun_vrelop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + rule fun_vrelop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + rule fun_vrelop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + rule fun_vrelop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + rule fun_vrelop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + rule fun_vrelop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + rule fun_vrelop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + rule fun_vrelop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) + rule fun_vrelop__case_24{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) + rule fun_vrelop__case_25{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) + rule fun_vrelop__case_26{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) + rule fun_vrelop__case_27{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) + rule fun_vrelop__case_28{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) + rule fun_vrelop__case_29{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) + rule fun_vrelop__case_30{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) + rule fun_vrelop__case_31{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) + rule fun_vrelop__case_32{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) + rule fun_vrelop__case_33{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) + rule fun_vrelop__case_34{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) + rule fun_vrelop__case_35{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* +relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2857?{half#2857 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2857?{half#2857 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2858?{half#2858 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2858?{half#2858 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2859?{half#2859 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2859?{half#2859 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2860?{half#2860 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2860?{half#2860 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2861?{half#2861 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + rule fun_lcvtop___case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2861?{half#2861 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2862?{half#2862 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + rule fun_lcvtop___case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2862?{half#2862 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2863?{half#2863 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + rule fun_lcvtop___case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2863?{half#2863 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2864?{half#2864 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + rule fun_lcvtop___case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2864?{half#2864 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3293?{zero#3293 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#161))?{c#161 <- `c?`}) + rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3293?{zero#3293 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#161))?{c#161 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#159))))?{c#159 <- `c?`} -- if (c#160?{c#160 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3294?{zero#3294 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#164))?{c#164 <- `c?`}) + rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3294?{zero#3294 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#164))?{c#164 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#162))))?{c#162 <- `c?`} -- if (c#163?{c#163 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3295?{zero#3295 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#167))?{c#167 <- `c?`}) + rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3295?{zero#3295 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#167))?{c#167 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#165))))?{c#165 <- `c?`} -- if (c#166?{c#166 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3296?{zero#3296 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#170))?{c#170 <- `c?`}) + rule fun_lcvtop___case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3296?{zero#3296 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#170))?{c#170 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#168))))?{c#168 <- `c?`} -- if (c#169?{c#169 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3297?{zero#3297 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#173))?{c#173 <- `c?`}) + rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3297?{zero#3297 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#173))?{c#173 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#171))))?{c#171 <- `c?`} -- if (c#172?{c#172 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3298?{zero#3298 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#176))?{c#176 <- `c?`}) + rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3298?{zero#3298 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#176))?{c#176 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#174))))?{c#174 <- `c?`} -- if (c#175?{c#175 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3299?{zero#3299 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#179))?{c#179 <- `c?`}) + rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3299?{zero#3299 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#179))?{c#179 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#177))))?{c#177 <- `c?`} -- if (c#178?{c#178 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3300?{zero#3300 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#182))?{c#182 <- `c?`}) + rule fun_lcvtop___case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3300?{zero#3300 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#182))?{c#182 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#180))))?{c#180 <- `c?`} -- if (c#181?{c#181 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3301?{zero#3301 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#185))?{c#185 <- `c?`}) + rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3301?{zero#3301 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#185))?{c#185 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#183))))?{c#183 <- `c?`} -- if (c#184?{c#184 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3302?{zero#3302 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#188))?{c#188 <- `c?`}) + rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3302?{zero#3302 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#188))?{c#188 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#186))))?{c#186 <- `c?`} -- if (c#187?{c#187 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3303?{zero#3303 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#191))?{c#191 <- `c?`}) + rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3303?{zero#3303 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#191))?{c#191 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#189))))?{c#189 <- `c?`} -- if (c#190?{c#190 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3304?{zero#3304 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#194))?{c#194 <- `c?`}) + rule fun_lcvtop___case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3304?{zero#3304 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#194))?{c#194 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#192))))?{c#192 <- `c?`} -- if (c#193?{c#193 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3305?{zero#3305 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#197))?{c#197 <- `c?`}) + rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3305?{zero#3305 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#197))?{c#197 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#195))))?{c#195 <- `c?`} -- if (c#196?{c#196 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3306?{zero#3306 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#200))?{c#200 <- `c?`}) + rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3306?{zero#3306 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#200))?{c#200 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#198))))?{c#198 <- `c?`} -- if (c#199?{c#199 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3307?{zero#3307 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#203))?{c#203 <- `c?`}) + rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3307?{zero#3307 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#203))?{c#203 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#201))))?{c#201 <- `c?`} -- if (c#202?{c#202 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3308?{zero#3308 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#206))?{c#206 <- `c?`}) + rule fun_lcvtop___case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3308?{zero#3308 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#206))?{c#206 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#204))))?{c#204 <- `c?`} -- if (c#205?{c#205 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3309?{zero#3309 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#209))?{c#209 <- `c?`}) + rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3309?{zero#3309 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#209))?{c#209 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#207))))?{c#207 <- `c?`} -- if (c#208?{c#208 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3310?{zero#3310 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#212))?{c#212 <- `c?`}) + rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3310?{zero#3310 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#212))?{c#212 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#210))))?{c#210 <- `c?`} -- if (c#211?{c#211 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3311?{zero#3311 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#215))?{c#215 <- `c?`}) + rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3311?{zero#3311 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#215))?{c#215 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#213))))?{c#213 <- `c?`} -- if (c#214?{c#214 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3312?{zero#3312 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#218))?{c#218 <- `c?`}) + rule fun_lcvtop___case_43{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3312?{zero#3312 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#218))?{c#218 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#216))))?{c#216 <- `c?`} -- if (c#217?{c#217 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3313?{zero#3313 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#221))?{c#221 <- `c?`}) + rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3313?{zero#3313 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#221))?{c#221 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#219))))?{c#219 <- `c?`} -- if (c#220?{c#220 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3314?{zero#3314 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#224))?{c#224 <- `c?`}) + rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3314?{zero#3314 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#224))?{c#224 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#222))))?{c#222 <- `c?`} -- if (c#223?{c#223 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3315?{zero#3315 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#227))?{c#227 <- `c?`}) + rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3315?{zero#3315 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#227))?{c#227 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#225))))?{c#225 <- `c?`} -- if (c#226?{c#226 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3316?{zero#3316 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#230))?{c#230 <- `c?`}) + rule fun_lcvtop___case_47{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3316?{zero#3316 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#230))?{c#230 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#228))))?{c#228 <- `c?`} -- if (c#229?{c#229 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3317?{zero#3317 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#233))?{c#233 <- `c?`}) + rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3317?{zero#3317 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#233))?{c#233 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#231))))?{c#231 <- `c?`} -- if (c#232?{c#232 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3318?{zero#3318 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#236))?{c#236 <- `c?`}) + rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3318?{zero#3318 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#236))?{c#236 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#234))))?{c#234 <- `c?`} -- if (c#235?{c#235 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3319?{zero#3319 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#239))?{c#239 <- `c?`}) + rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3319?{zero#3319 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#239))?{c#239 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#237))))?{c#237 <- `c?`} -- if (c#238?{c#238 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3320?{zero#3320 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#242))?{c#242 <- `c?`}) + rule fun_lcvtop___case_51{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3320?{zero#3320 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#242))?{c#242 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#240))))?{c#240 <- `c?`} -- if (c#241?{c#241 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3321?{zero#3321 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#245))?{c#245 <- `c?`}) + rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3321?{zero#3321 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#245))?{c#245 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#243))))?{c#243 <- `c?`} -- if (c#244?{c#244 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3322?{zero#3322 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#248))?{c#248 <- `c?`}) + rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3322?{zero#3322 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#248))?{c#248 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#246))))?{c#246 <- `c?`} -- if (c#247?{c#247 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3323?{zero#3323 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#251))?{c#251 <- `c?`}) + rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3323?{zero#3323 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#251))?{c#251 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#249))))?{c#249 <- `c?`} -- if (c#250?{c#250 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3324?{zero#3324 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#254))?{c#254 <- `c?`}) + rule fun_lcvtop___case_55{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3324?{zero#3324 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#254))?{c#254 <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#252))))?{c#252 <- `c?`} -- if (c#253?{c#253 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#257))*{c#257 <- `c*`} + rule fun_lcvtop___case_56{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#257))*{c#257 <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#255))))*{c#255 <- `c*`} -- if (c#256*{c#256 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#260))*{c#260 <- `c*`} + rule fun_lcvtop___case_57{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#260))*{c#260 <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#258))))*{c#258 <- `c*`} -- if (c#259*{c#259 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#263))*{c#263 <- `c*`} + rule fun_lcvtop___case_58{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#263))*{c#263 <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#261))))*{c#261 <- `c*`} -- if (c#262*{c#262 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#266))*{c#266 <- `c*`} + rule fun_lcvtop___case_59{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#266))*{c#266 <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#264))))*{c#264 <- `c*`} -- if (c#265*{c#265 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#269))*{c#269 <- `c*`} + rule fun_lcvtop___case_60{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#269))*{c#269 <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#267))))*{c#267 <- `c*`} -- if (c#268*{c#268 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#272))*{c#272 <- `c*`} + rule fun_lcvtop___case_61{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#272))*{c#272 <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#270))))*{c#270 <- `c*`} -- if (c#271*{c#271 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#275))*{c#275 <- `c*`} + rule fun_lcvtop___case_62{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#275))*{c#275 <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#273))))*{c#273 <- `c*`} -- if (c#274*{c#274 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#278))*{c#278 <- `c*`} + rule fun_lcvtop___case_63{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#278))*{c#278 <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#276))))*{c#276 <- `c*`} -- if (c#277*{c#277 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#281))*{c#281 <- `c*`} + rule fun_lcvtop___case_64{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#281))*{c#281 <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#279))))*{c#279 <- `c*`} -- if (c#280*{c#280 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#284))*{c#284 <- `c*`} + rule fun_lcvtop___case_65{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#284))*{c#284 <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#282))))*{c#282 <- `c*`} -- if (c#283*{c#283 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#287))*{c#287 <- `c*`} + rule fun_lcvtop___case_66{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#287))*{c#287 <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#285))))*{c#285 <- `c*`} -- if (c#286*{c#286 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#290))*{c#290 <- `c*`} + rule fun_lcvtop___case_67{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#290))*{c#290 <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#288))))*{c#288 <- `c*`} -- if (c#289*{c#289 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#293))*{c#293 <- `c*`} + rule fun_lcvtop___case_68{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#293))*{c#293 <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#291))))*{c#291 <- `c*`} -- if (c#292*{c#292 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#296))*{c#296 <- `c*`} + rule fun_lcvtop___case_69{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#296))*{c#296 <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#294))))*{c#294 <- `c*`} -- if (c#295*{c#295 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#299))*{c#299 <- `c*`} + rule fun_lcvtop___case_70{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#299))*{c#299 <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#297))))*{c#297 <- `c*`} -- if (c#298*{c#298 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#302))*{c#302 <- `c*`} + rule fun_lcvtop___case_71{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#302))*{c#302 <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#300))))*{c#300 <- `c*`} -- if (c#301*{c#301 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ +relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v + rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1, v) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#171, var_2))*{var_2 <- `var_2*`, c_1#171 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1#169))*{c_1#169 <- `c_1*`} -- (wf_lane_: `%%`(Lnn_2, c#303))*{c#303 <- `c*#43`}*{`c*#43` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) - -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) + -- if ((var_0 = ?()) /\ (var_1 = ?())) -- if (c_1#170*{c_1#170 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c#304*{c#304 <- `c*#44`}*{`c*#44` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#171)*{c_1#171 <- `c_1*`})) + -- if (c#304*{c#304 <- `c*#44`}*{`c*#44` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#305*{c#305 <- `c*#45`})*{`c*#45` <- `c**`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**, `var_1*` : lane_**, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#174, var_1))*{var_1 <- `var_1*`, c_1#174 <- `c_1*`} + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1#172))*{c_1#172 <- `c_1*`} -- (wf_lane_: `%%`(Lnn_2, c#306))*{c#306 <- `c*#46`}*{`c*#46` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) - -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) + -- if (var_0 = ?(half)) -- if (c_1#173*{c_1#173 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c#307*{c#307 <- `c*#47`}*{`c*#47` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#174)*{c_1#174 <- `c_1*`})) + -- if (c#307*{c#307 <- `c*#47`}*{`c*#47` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#308*{c#308 <- `c*#48`})*{`c*#48` <- `c**`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, var_2 : lane_, `var_1*` : lane_**, var_0 : zero?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- fun_zero: `%%`(Lnn_2, var_2) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#177, var_1))*{var_1 <- `var_1*`, c_1#177 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1#175))*{c_1#175 <- `c_1*`} -- (wf_lane_: `%%`(Lnn_2, c#309))*{c#309 <- `c*#49`}*{`c*#49` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) - -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) + -- if (var_0 = ?(ZERO_zero)) -- if (c_1#176*{c_1#176 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) - -- if (c#310*{c#310 <- `c*#50`}*{`c*#50` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#177)*{c_1#177 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})) + -- if (c#310*{c#310 <- `c*#50`}*{`c*#50` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`} ++ [var_2]^M_1{})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#311*{c#311 <- `c*#51`})*{`c*#51` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ +relation fun_vshiftop_: `%%%%%`(ishape, vshiftop_, vec_, u32, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i) + rule fun_vshiftop__case_0{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i) + rule fun_vshiftop__case_1{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i) + rule fun_vshiftop__case_2{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i) + rule fun_vshiftop__case_3{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + rule fun_vshiftop__case_4{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + rule fun_vshiftop__case_5{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + rule fun_vshiftop__case_6{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + rule fun_vshiftop__case_7{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 +relation fun_vbitmaskop_: `%%%`(ishape, vec_, u32) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v) + rule fun_vbitmaskop__case_0{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v) + rule fun_vbitmaskop__case_1{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v) + rule fun_vbitmaskop__case_2{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v) + rule fun_vbitmaskop__case_3{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ +relation fun_vswizzlop_: `%%%%%`(bshape, vswizzlop_, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + rule fun_vswizzlop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + rule fun_vswizzlop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ +relation fun_vshufflop_: `%%%%%`(bshape, laneidx*, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#129110*{i#129110 <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + rule fun_vshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, var_0 : vec_}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#129110*{i#129110 <- `i*`}, v_1, v_2, var_0) + -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, var_0) -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ +relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#178))*{c_1#178 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#115))*{c_2#115 <- `c_2*`} @@ -10407,8 +12689,10 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- if (c'_1#2*{c'_1#2 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#180)))*{c_1#180 <- `c_1*`}) -- if (c'_2#2*{c'_2#2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#117)))*{c_2#117 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#3)*{c'_1#3 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#3)*{c'_2#3 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#181))*{c_1#181 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#118))*{c_2#118 <- `c_2*`} @@ -10421,8 +12705,10 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- if (c'_1#5*{c'_1#5 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#183)))*{c_1#183 <- `c_1*`}) -- if (c'_2#5*{c'_2#5 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#120)))*{c_2#120 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#6)*{c'_1#6 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#6)*{c'_2#6 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#184))*{c_1#184 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#121))*{c_2#121 <- `c_2*`} @@ -10435,8 +12721,10 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- if (c'_1#8*{c'_1#8 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#186)))*{c_1#186 <- `c_1*`}) -- if (c'_2#8*{c'_2#8 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#123)))*{c_2#123 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#9)*{c'_1#9 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#9)*{c'_2#9 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#187))*{c_1#187 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#124))*{c_2#124 <- `c_2*`} @@ -10449,8 +12737,10 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- if (c'_1#11*{c'_1#11 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#189)))*{c_1#189 <- `c_1*`}) -- if (c'_2#11*{c'_2#11 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#126)))*{c_2#126 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#12)*{c'_1#12 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#12)*{c'_2#12 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#190))*{c_1#190 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#127))*{c_2#127 <- `c_2*`} @@ -10463,8 +12753,10 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- if (c'_1#14*{c'_1#14 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#192)))*{c_1#192 <- `c_1*`}) -- if (c'_2#14*{c'_2#14 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#129)))*{c_2#129 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#15)*{c'_1#15 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#15)*{c'_2#15 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#193))*{c_1#193 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#130))*{c_2#130 <- `c_2*`} @@ -10477,8 +12769,10 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- if (c'_1#17*{c'_1#17 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#195)))*{c_1#195 <- `c_1*`}) -- if (c'_2#17*{c'_2#17 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#132)))*{c_2#132 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#18)*{c'_1#18 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#18)*{c'_2#18 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#196))*{c_1#196 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#133))*{c_2#133 <- `c_2*`} @@ -10491,8 +12785,10 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- if (c'_1#20*{c'_1#20 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#198)))*{c_1#198 <- `c_1*`}) -- if (c'_2#20*{c'_2#20 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#135)))*{c_2#135 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#21)*{c'_1#21 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#21)*{c'_2#21 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#199))*{c_1#199 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#136))*{c_2#136 <- `c_2*`} @@ -10505,8 +12801,10 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- if (c'_1#23*{c'_1#23 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#201)))*{c_1#201 <- `c_1*`}) -- if (c'_2#23*{c'_2#23 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#138)))*{c_2#138 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#24)*{c'_1#24 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#24)*{c'_2#24 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#202))*{c_1#202 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#139))*{c_2#139 <- `c_2*`} @@ -10519,8 +12817,10 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- if (c'_1#26*{c'_1#26 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#204)))*{c_1#204 <- `c_1*`}) -- if (c'_2#26*{c'_2#26 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#141)))*{c_2#141 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#27)*{c'_1#27 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#27)*{c'_2#27 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#205))*{c_1#205 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#142))*{c_2#142 <- `c_2*`} @@ -10533,8 +12833,10 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- if (c'_1#29*{c'_1#29 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#207)))*{c_1#207 <- `c_1*`}) -- if (c'_2#29*{c'_2#29 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#144)))*{c_2#144 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#30)*{c'_1#30 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#30)*{c'_2#30 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#208))*{c_1#208 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#145))*{c_2#145 <- `c_2*`} @@ -10547,8 +12849,10 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- if (c'_1#32*{c'_1#32 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#210)))*{c_1#210 <- `c_1*`}) -- if (c'_2#32*{c'_2#32 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#147)))*{c_2#147 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#33)*{c'_1#33 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#33)*{c'_2#33 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#211))*{c_1#211 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#148))*{c_2#148 <- `c_2*`} @@ -10561,8 +12865,10 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- if (c'_1#35*{c'_1#35 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#213)))*{c_1#213 <- `c_1*`}) -- if (c'_2#35*{c'_2#35 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#150)))*{c_2#150 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#36)*{c'_1#36 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#36)*{c'_2#36 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#214))*{c_1#214 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#151))*{c_2#151 <- `c_2*`} @@ -10575,8 +12881,10 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- if (c'_1#38*{c'_1#38 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#216)))*{c_1#216 <- `c_1*`}) -- if (c'_2#38*{c'_2#38 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#153)))*{c_2#153 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#39)*{c'_1#39 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#39)*{c'_2#39 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#217))*{c_1#217 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#154))*{c_2#154 <- `c_2*`} @@ -10589,8 +12897,10 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- if (c'_1#41*{c'_1#41 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#219)))*{c_1#219 <- `c_1*`}) -- if (c'_2#41*{c'_2#41 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#156)))*{c_2#156 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#42)*{c'_1#42 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#42)*{c'_2#42 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#220))*{c_1#220 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#157))*{c_2#157 <- `c_2*`} @@ -10603,8 +12913,10 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- if (c'_1#44*{c'_1#44 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#222)))*{c_1#222 <- `c_1*`}) -- if (c'_2#44*{c'_2#44 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#159)))*{c_2#159 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#45)*{c'_1#45 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#45)*{c'_2#45 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#223))*{c_1#223 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#160))*{c_2#160 <- `c_2*`} @@ -10790,69 +13102,100 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- if (c#358*{c#358 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#96*{c'_1#96 <- `c'_1*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ +relation fun_vextunop__: `%%%%%`(ishape, ishape, vextunop__, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) @@ -11105,300 +13448,399 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1#5*{i_1#5 <- `i_1*`}, i_2#5*{i_2#5 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ +relation fun_vextbinop__: `%%%%%%`(ishape, ishape, vextbinop__, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_16{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_17{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_18{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_19{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_20{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_21{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_22{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_23{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_24{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_25{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_26{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_27{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_28{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_29{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_30{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_31{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_32{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_33{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_34{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_35{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_36{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_37{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_38{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_39{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_40{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_41{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_42{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_43{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_44{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_45{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_46{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_47{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ +relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_0{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11411,11 +13853,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_1{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11428,11 +13875,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_2{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11445,11 +13897,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_3{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11462,11 +13919,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_4{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11479,11 +13941,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_5{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11496,11 +13963,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_6{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11513,11 +13985,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_7{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11530,11 +14007,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_8{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11547,11 +14029,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_9{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11564,11 +14051,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_10{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11581,11 +14073,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_11{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11598,11 +14095,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_12{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11615,11 +14117,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_13{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11632,11 +14139,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_14{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11649,11 +14161,16 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_15{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11666,9 +14183,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax num = @@ -11896,334 +14413,832 @@ def $fieldval_val(val) : fieldval def $fieldval_val{x0 : hostaddr}(`REF.HOST_ADDR`_val(x0)) = `REF.HOST_ADDR`_fieldval(x0) def $fieldval_val{x0 : ref}(`REF.EXTERN`_val(x0)) = `REF.EXTERN`_fieldval(x0) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_fieldval: `%`(fieldval) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_fieldval: `%`(fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_fieldval(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_1{vectype : vectype, var_0 : vec_}: + `%`(VCONST_fieldval(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_2{u31 : u31}: + `%`(`REF.I31_NUM`_fieldval(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_3: + `%`(`REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_4{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_5{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_6{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_7{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_8{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_9{ref : ref}: + `%`(`REF.EXTERN`_fieldval(ref)) + -- wf_ref: `%`(ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_10{packtype : packtype, var_0 : iN}: + `%`(PACK_fieldval(packtype, var_0)) + -- wf_uN: `%%`($psize(packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_structinst: `%`(structinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_arrayinst: `%`(arrayinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exninst = +{ + TAG tagaddr, + FIELDS val* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exninst: `%`(exninst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_case_{var_0 : tagaddr, var_1 : val*}: + `%`({TAG var_0, FIELDS var_1}) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax store = +{ + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_store: `%`(store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: + `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) + -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} + -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} + -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} + -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} + -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} + -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} + -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} + -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} + -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} + -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax state = + | `%;%`(store : store, frame : frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_state: `%`(state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule state_case_0{store : store, frame : frame}: + `%`(`%;%`_state(store, frame)) + -- wf_store: `%`(store) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax config = + | `%;%`(state : state, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_config: `%`(config) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule config_case_0{state : state, `instr*` : instr*}: + `%`(`%;%`_config(state, `instr*`)) + -- wf_state: `%`(state) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $Ki : nat + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $Ki = 1024 + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_packfield__before_fun_packfield__case_9: `%%`(storagetype, val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_8{i : uN}: + `%%`(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) + -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_7{i : uN}: + `%%`(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) + -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_6{val : val}: + `%%`(I32_storagetype, val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_5{val : val}: + `%%`(I64_storagetype, val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_4{val : val}: + `%%`(F32_storagetype, val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_3{val : val}: + `%%`(F64_storagetype, val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_2{val : val}: + `%%`(V128_storagetype, val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_1{`null?` : null?, heaptype : heaptype, val : val}: + `%%`(REF_storagetype(`null?`, heaptype), val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_0{val : val}: + `%%`(BOT_storagetype, val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_packfield_: `%%%`(storagetype, val, fieldval?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_0{val : val}: + `%%%`(BOT_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_1{`null?` : null?, heaptype : heaptype, val : val}: + `%%%`(REF_storagetype(`null?`, heaptype), val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_2{val : val}: + `%%%`(V128_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_3{val : val}: + `%%%`(F64_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_4{val : val}: + `%%%`(F32_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_5{val : val}: + `%%%`(I64_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_6{val : val}: + `%%%`(I32_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_7{i : uN}: + `%%%`(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)))) + -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_8{i : uN}: + `%%%`(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)))) + -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_9{x0 : storagetype, x1 : val}: + `%%%`(x0, x1, ?()) + -- ~ fun_packfield__before_fun_packfield__case_9: `%%`(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_unpackfield__before_fun_unpackfield__case_72: `%%%`(storagetype, sx?, fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_71{sx : sx, i : uN}: + `%%%`(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_70{sx : sx, i : uN}: + `%%%`(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_69{numtype : numtype, var_0 : num_}: + `%%%`(I32_storagetype, ?(), CONST_fieldval(numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_68{numtype : numtype, var_0 : num_}: + `%%%`(I64_storagetype, ?(), CONST_fieldval(numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_67{numtype : numtype, var_0 : num_}: + `%%%`(F32_storagetype, ?(), CONST_fieldval(numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_66{numtype : numtype, var_0 : num_}: + `%%%`(F64_storagetype, ?(), CONST_fieldval(numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_65{numtype : numtype, var_0 : num_}: + `%%%`(V128_storagetype, ?(), CONST_fieldval(numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_64{numtype : numtype, var_0 : num_, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), CONST_fieldval(numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_63{numtype : numtype, var_0 : num_}: + `%%%`(BOT_storagetype, ?(), CONST_fieldval(numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_62{vectype : vectype, var_1 : vec_}: + `%%%`(I32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_61{vectype : vectype, var_1 : vec_}: + `%%%`(I64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_60{vectype : vectype, var_1 : vec_}: + `%%%`(F32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_59{vectype : vectype, var_1 : vec_}: + `%%%`(F64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_58{vectype : vectype, var_1 : vec_}: + `%%%`(V128_storagetype, ?(), VCONST_fieldval(vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_57{vectype : vectype, var_1 : vec_, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), VCONST_fieldval(vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_56{vectype : vectype, var_1 : vec_}: + `%%%`(BOT_storagetype, ?(), VCONST_fieldval(vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_55{u31 : u31}: + `%%%`(I32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_54{u31 : u31}: + `%%%`(I64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_53{u31 : u31}: + `%%%`(F32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_52{u31 : u31}: + `%%%`(F64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_51{u31 : u31}: + `%%%`(V128_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_50{u31 : u31, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_49{u31 : u31}: + `%%%`(BOT_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_48: + `%%%`(I32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_47: + `%%%`(I64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_46: + `%%%`(F32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_45: + `%%%`(F64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_44: + `%%%`(V128_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_43{`null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_42: + `%%%`(BOT_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_41{structaddr : structaddr}: + `%%%`(I32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_40{structaddr : structaddr}: + `%%%`(I64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_39{structaddr : structaddr}: + `%%%`(F32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_38{structaddr : structaddr}: + `%%%`(F64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_37{structaddr : structaddr}: + `%%%`(V128_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_36{structaddr : structaddr, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_35{structaddr : structaddr}: + `%%%`(BOT_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_0{numtype : numtype, var_0 : num_}: - `%`(CONST_fieldval(numtype, var_0)) - -- wf_num_: `%%`(numtype, var_0) + rule fun_unpackfield__case_34{arrayaddr : arrayaddr}: + `%%%`(I32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_1{vectype : vectype, var_0 : vec_}: - `%`(VCONST_fieldval(vectype, var_0)) - -- wf_uN: `%%`($vsize(vectype), var_0) + rule fun_unpackfield__case_33{arrayaddr : arrayaddr}: + `%%%`(I64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_2{u31 : u31}: - `%`(`REF.I31_NUM`_fieldval(u31)) - -- wf_uN: `%%`(31, u31) + rule fun_unpackfield__case_32{arrayaddr : arrayaddr}: + `%%%`(F32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_3: - `%`(`REF.NULL_ADDR`_fieldval) + rule fun_unpackfield__case_31{arrayaddr : arrayaddr}: + `%%%`(F64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_4{structaddr : structaddr}: - `%`(`REF.STRUCT_ADDR`_fieldval(structaddr)) + rule fun_unpackfield__case_30{arrayaddr : arrayaddr}: + `%%%`(V128_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_5{arrayaddr : arrayaddr}: - `%`(`REF.ARRAY_ADDR`_fieldval(arrayaddr)) + rule fun_unpackfield__case_29{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_6{funcaddr : funcaddr}: - `%`(`REF.FUNC_ADDR`_fieldval(funcaddr)) + rule fun_unpackfield__case_28{arrayaddr : arrayaddr}: + `%%%`(BOT_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_7{exnaddr : exnaddr}: - `%`(`REF.EXN_ADDR`_fieldval(exnaddr)) + rule fun_unpackfield__case_27{funcaddr : funcaddr}: + `%%%`(I32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_8{hostaddr : hostaddr}: - `%`(`REF.HOST_ADDR`_fieldval(hostaddr)) + rule fun_unpackfield__case_26{funcaddr : funcaddr}: + `%%%`(I64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_9{ref : ref}: - `%`(`REF.EXTERN`_fieldval(ref)) - -- wf_ref: `%`(ref) + rule fun_unpackfield__case_25{funcaddr : funcaddr}: + `%%%`(F32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_10{packtype : packtype, var_0 : iN}: - `%`(PACK_fieldval(packtype, var_0)) - -- wf_uN: `%%`($psize(packtype), var_0) + rule fun_unpackfield__case_24{funcaddr : funcaddr}: + `%%%`(F64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax structinst = -{ - TYPE deftype, - FIELDS fieldval* -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_23{funcaddr : funcaddr}: + `%%%`(V128_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_structinst: `%`(structinst) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: - `%`({TYPE var_0, FIELDS var_1}) - -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + rule fun_unpackfield__case_22{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax arrayinst = -{ - TYPE deftype, - FIELDS fieldval* -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_21{funcaddr : funcaddr}: + `%%%`(BOT_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_arrayinst: `%`(arrayinst) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: - `%`({TYPE var_0, FIELDS var_1}) - -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + rule fun_unpackfield__case_20{exnaddr : exnaddr}: + `%%%`(I32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax exninst = -{ - TAG tagaddr, - FIELDS val* -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_19{exnaddr : exnaddr}: + `%%%`(I64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_exninst: `%`(exninst) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule exninst_case_{var_0 : tagaddr, var_1 : val*}: - `%`({TAG var_0, FIELDS var_1}) - -- (wf_val: `%`(var_1))*{var_1 <- var_1} + rule fun_unpackfield__case_18{exnaddr : exnaddr}: + `%%%`(F32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax store = -{ - TAGS taginst*, - GLOBALS globalinst*, - MEMS meminst*, - TABLES tableinst*, - FUNCS funcinst*, - DATAS datainst*, - ELEMS eleminst*, - STRUCTS structinst*, - ARRAYS arrayinst*, - EXNS exninst* -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_17{exnaddr : exnaddr}: + `%%%`(F64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_store: `%`(store) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: - `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) - -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} - -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} - -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} - -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} - -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} - -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} - -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} - -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} - -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} - -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + rule fun_unpackfield__case_16{exnaddr : exnaddr}: + `%%%`(V128_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax state = - | `%;%`(store : store, frame : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_15{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_state: `%`(state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule state_case_0{store : store, frame : frame}: - `%`(`%;%`_state(store, frame)) - -- wf_store: `%`(store) - -- wf_frame: `%`(frame) + rule fun_unpackfield__case_14{exnaddr : exnaddr}: + `%%%`(BOT_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax config = - | `%;%`(state : state, `instr*` : instr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_13{hostaddr : hostaddr}: + `%%%`(I32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_config: `%`(config) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule config_case_0{state : state, `instr*` : instr*}: - `%`(`%;%`_config(state, `instr*`)) - -- wf_state: `%`(state) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} + rule fun_unpackfield__case_12{hostaddr : hostaddr}: + `%%%`(I64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $Ki : nat ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $Ki = 1024 + rule fun_unpackfield__case_11{hostaddr : hostaddr}: + `%%%`(F32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $packfield_(storagetype : storagetype, val : val) : fieldval? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(BOT_storagetype, val) = ?($fieldval_val(val)) + rule fun_unpackfield__case_10{hostaddr : hostaddr}: + `%%%`(F64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{`null?` : null?, heaptype : heaptype, val : val}(REF_storagetype(`null?`, heaptype), val) = ?($fieldval_val(val)) + rule fun_unpackfield__case_9{hostaddr : hostaddr}: + `%%%`(V128_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(V128_storagetype, val) = ?($fieldval_val(val)) + rule fun_unpackfield__case_8{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(F64_storagetype, val) = ?($fieldval_val(val)) + rule fun_unpackfield__case_7{hostaddr : hostaddr}: + `%%%`(BOT_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(F32_storagetype, val) = ?($fieldval_val(val)) + rule fun_unpackfield__case_6{ref : ref}: + `%%%`(I32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(I64_storagetype, val) = ?($fieldval_val(val)) + rule fun_unpackfield__case_5{ref : ref}: + `%%%`(I64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(I32_storagetype, val) = ?($fieldval_val(val)) + rule fun_unpackfield__case_4{ref : ref}: + `%%%`(F32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + rule fun_unpackfield__case_3{ref : ref}: + `%%%`(F64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) - def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() - -- otherwise + rule fun_unpackfield__case_2{ref : ref}: + `%%%`(V128_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_1{ref : ref, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.EXTERN`_fieldval(ref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_0{ref : ref}: + `%%%`(BOT_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? +relation fun_unpackfield_: `%%%%`(storagetype, sx?, fieldval, val?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{ref : ref}(BOT_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + rule fun_unpackfield__case_0{ref : ref}: + `%%%%`(BOT_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{ref : ref, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + rule fun_unpackfield__case_1{ref : ref, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{ref : ref}(V128_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + rule fun_unpackfield__case_2{ref : ref}: + `%%%%`(V128_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{ref : ref}(F64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + rule fun_unpackfield__case_3{ref : ref}: + `%%%%`(F64_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{ref : ref}(F32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + rule fun_unpackfield__case_4{ref : ref}: + `%%%%`(F32_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{ref : ref}(I64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + rule fun_unpackfield__case_5{ref : ref}: + `%%%%`(I64_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{ref : ref}(I32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + rule fun_unpackfield__case_6{ref : ref}: + `%%%%`(I32_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(BOT_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + rule fun_unpackfield__case_7{hostaddr : hostaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + rule fun_unpackfield__case_8{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(V128_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + rule fun_unpackfield__case_9{hostaddr : hostaddr}: + `%%%%`(V128_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(F64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + rule fun_unpackfield__case_10{hostaddr : hostaddr}: + `%%%%`(F64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(F32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + rule fun_unpackfield__case_11{hostaddr : hostaddr}: + `%%%%`(F32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(I64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + rule fun_unpackfield__case_12{hostaddr : hostaddr}: + `%%%%`(I64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(I32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + rule fun_unpackfield__case_13{hostaddr : hostaddr}: + `%%%%`(I32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(BOT_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + rule fun_unpackfield__case_14{exnaddr : exnaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + rule fun_unpackfield__case_15{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(V128_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + rule fun_unpackfield__case_16{exnaddr : exnaddr}: + `%%%%`(V128_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(F64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + rule fun_unpackfield__case_17{exnaddr : exnaddr}: + `%%%%`(F64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(F32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + rule fun_unpackfield__case_18{exnaddr : exnaddr}: + `%%%%`(F32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(I64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + rule fun_unpackfield__case_19{exnaddr : exnaddr}: + `%%%%`(I64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(I32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + rule fun_unpackfield__case_20{exnaddr : exnaddr}: + `%%%%`(I32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(BOT_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + rule fun_unpackfield__case_21{funcaddr : funcaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + rule fun_unpackfield__case_22{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(V128_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + rule fun_unpackfield__case_23{funcaddr : funcaddr}: + `%%%%`(V128_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(F64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + rule fun_unpackfield__case_24{funcaddr : funcaddr}: + `%%%%`(F64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(F32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + rule fun_unpackfield__case_25{funcaddr : funcaddr}: + `%%%%`(F32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(I64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + rule fun_unpackfield__case_26{funcaddr : funcaddr}: + `%%%%`(I64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(I32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + rule fun_unpackfield__case_27{funcaddr : funcaddr}: + `%%%%`(I32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(BOT_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + rule fun_unpackfield__case_28{arrayaddr : arrayaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + rule fun_unpackfield__case_29{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(V128_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + rule fun_unpackfield__case_30{arrayaddr : arrayaddr}: + `%%%%`(V128_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(F64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + rule fun_unpackfield__case_31{arrayaddr : arrayaddr}: + `%%%%`(F64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(F32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + rule fun_unpackfield__case_32{arrayaddr : arrayaddr}: + `%%%%`(F32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(I64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + rule fun_unpackfield__case_33{arrayaddr : arrayaddr}: + `%%%%`(I64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(I32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + rule fun_unpackfield__case_34{arrayaddr : arrayaddr}: + `%%%%`(I32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(BOT_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + rule fun_unpackfield__case_35{structaddr : structaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + rule fun_unpackfield__case_36{structaddr : structaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(V128_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + rule fun_unpackfield__case_37{structaddr : structaddr}: + `%%%%`(V128_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(F64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + rule fun_unpackfield__case_38{structaddr : structaddr}: + `%%%%`(F64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(F32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + rule fun_unpackfield__case_39{structaddr : structaddr}: + `%%%%`(F32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(I64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + rule fun_unpackfield__case_40{structaddr : structaddr}: + `%%%%`(I64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(I32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + rule fun_unpackfield__case_41{structaddr : structaddr}: + `%%%%`(I32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(BOT_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + rule fun_unpackfield__case_42: + `%%%%`(BOT_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{`null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + rule fun_unpackfield__case_43{`null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(V128_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + rule fun_unpackfield__case_44: + `%%%%`(V128_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(F64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + rule fun_unpackfield__case_45: + `%%%%`(F64_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(F32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + rule fun_unpackfield__case_46: + `%%%%`(F32_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(I64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + rule fun_unpackfield__case_47: + `%%%%`(I64_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(I32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + rule fun_unpackfield__case_48: + `%%%%`(I32_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(BOT_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + rule fun_unpackfield__case_49{u31 : u31}: + `%%%%`(BOT_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + rule fun_unpackfield__case_50{u31 : u31, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(V128_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + rule fun_unpackfield__case_51{u31 : u31}: + `%%%%`(V128_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(F64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + rule fun_unpackfield__case_52{u31 : u31}: + `%%%%`(F64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(F32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + rule fun_unpackfield__case_53{u31 : u31}: + `%%%%`(F32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(I64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + rule fun_unpackfield__case_54{u31 : u31}: + `%%%%`(I64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(I32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + rule fun_unpackfield__case_55{u31 : u31}: + `%%%%`(I32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, var_1 : vec_}(BOT_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + rule fun_unpackfield__case_56{vectype : vectype, var_1 : vec_}: + `%%%%`(BOT_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, var_1 : vec_, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + rule fun_unpackfield__case_57{vectype : vectype, var_1 : vec_, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, var_1 : vec_}(V128_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + rule fun_unpackfield__case_58{vectype : vectype, var_1 : vec_}: + `%%%%`(V128_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, var_1 : vec_}(F64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + rule fun_unpackfield__case_59{vectype : vectype, var_1 : vec_}: + `%%%%`(F64_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, var_1 : vec_}(F32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + rule fun_unpackfield__case_60{vectype : vectype, var_1 : vec_}: + `%%%%`(F32_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, var_1 : vec_}(I64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + rule fun_unpackfield__case_61{vectype : vectype, var_1 : vec_}: + `%%%%`(I64_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, var_1 : vec_}(I32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + rule fun_unpackfield__case_62{vectype : vectype, var_1 : vec_}: + `%%%%`(I32_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, var_0 : num_}(BOT_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + rule fun_unpackfield__case_63{numtype : numtype, var_0 : num_}: + `%%%%`(BOT_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, var_0 : num_, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + rule fun_unpackfield__case_64{numtype : numtype, var_0 : num_, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, var_0 : num_}(V128_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + rule fun_unpackfield__case_65{numtype : numtype, var_0 : num_}: + `%%%%`(V128_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, var_0 : num_}(F64_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + rule fun_unpackfield__case_66{numtype : numtype, var_0 : num_}: + `%%%%`(F64_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, var_0 : num_}(F32_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + rule fun_unpackfield__case_67{numtype : numtype, var_0 : num_}: + `%%%%`(F32_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, var_0 : num_}(I64_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + rule fun_unpackfield__case_68{numtype : numtype, var_0 : num_}: + `%%%%`(I64_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, var_0 : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + rule fun_unpackfield__case_69{numtype : numtype, var_0 : num_}: + `%%%%`(I32_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + rule fun_unpackfield__case_70{sx : sx, i : uN}: + `%%%%`(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i), ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i))))) -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + rule fun_unpackfield__case_71{sx : sx, i : uN}: + `%%%%`(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i), ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i))))) -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) - def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() - -- otherwise + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_72{x0 : storagetype, x1 : sx?, x2 : fieldval}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_unpackfield__before_fun_unpackfield__case_72: `%%%`(x0, x1, x2) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -12416,87 +15431,101 @@ def $local(state : state, localidx : localidx) : val? def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[$proj_uN_0(x).0] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_local(state : state, localidx : localidx, val : val) : state +relation fun_with_local: `%%%%`(state, localidx, val, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + rule fun_with_local_case_0{z : state, x : uN, v : val}: + `%%%%`(z, x, v, `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) -- wf_state: `%`(`%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_global(state : state, globalidx : globalidx, val : val) : state +relation fun_with_global: `%%%%`(state, globalidx, val, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z)) + rule fun_with_global_case_0{z : state, x : uN, v : val}: + `%%%%`(z, x, v, `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state +relation fun_with_table: `%%%%%`(state, tableidx, nat, ref, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z)) + rule fun_with_table_case_0{z : state, x : uN, i : nat, r : ref}: + `%%%%%`(z, x, i, r, `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state +relation fun_with_tableinst: `%%%%`(state, tableidx, tableinst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z)) + rule fun_with_tableinst_case_0{z : state, x : uN, ti : tableinst}: + `%%%%`(z, x, ti, `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state +relation fun_with_mem: `%%%%%%`(state, memidx, nat, nat, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_mem{z : state, x : uN, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b#1*{b#1 <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) + rule fun_with_mem_case_0{z : state, x : uN, i : nat, j : nat, `b*` : byte*}: + `%%%%%%`(z, x, i, j, b#1*{b#1 <- `b*`}, `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b#2*{b#2 <- `b*`}], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state +relation fun_with_meminst: `%%%%`(state, memidx, meminst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z)) + rule fun_with_meminst_case_0{z : state, x : uN, mi : meminst}: + `%%%%`(z, x, mi, `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_elem(state : state, elemidx : elemidx, ref*) : state +relation fun_with_elem: `%%%%`(state, elemidx, ref*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_elem{z : state, x : uN, `r*` : ref*}(z, x, r#1*{r#1 <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) + rule fun_with_elem_case_0{z : state, x : uN, `r*` : ref*}: + `%%%%`(z, x, r#1*{r#1 <- `r*`}, `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r#2*{r#2 <- `r*`}], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_data(state : state, dataidx : dataidx, byte*) : state +relation fun_with_data: `%%%%`(state, dataidx, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b#3*{b#3 <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) + rule fun_with_data_case_0{z : state, x : uN, `b*` : byte*}: + `%%%%`(z, x, b#3*{b#3 <- `b*`}, `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b#4*{b#4 <- `b*`}], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state +relation fun_with_struct: `%%%%%`(state, structaddr, nat, fieldval, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) + rule fun_with_struct_case_0{z : state, a : nat, i : nat, fv : fieldval}: + `%%%%%`(z, a, i, fv, `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state +relation fun_with_array: `%%%%%`(state, arrayaddr, nat, fieldval, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) + rule fun_with_array_case_0{z : state, a : nat, i : nat, fv : fieldval}: + `%%%%%`(z, a, i, fv, `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_structinst(state : state, structinst*) : state +relation fun_add_structinst: `%%%`(state, structinst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_structinst{z : state, `si*` : structinst*}(z, si#1*{si#1 <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) + rule fun_add_structinst_case_0{z : state, `si*` : structinst*}: + `%%%`(z, si#1*{si#1 <- `si*`}, `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store =++ si#2*{si#2 <- `si*`}], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_arrayinst(state : state, arrayinst*) : state +relation fun_add_arrayinst: `%%%`(state, arrayinst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai#1*{ai#1 <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) + rule fun_add_arrayinst_case_0{z : state, `ai*` : arrayinst*}: + `%%%`(z, ai#1*{ai#1 <- `ai*`}, `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store =++ ai#2*{ai#2 <- `ai*`}], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_exninst(state : state, exninst*) : state +relation fun_add_exninst: `%%%`(state, exninst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_exninst{z : state, `exn*` : exninst*}(z, exn#1*{exn#1 <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) + rule fun_add_exninst_case_0{z : state, `exn*` : exninst*}: + `%%%`(z, exn#1*{exn#1 <- `exn*`}, `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[EXNS_store =++ exn#2*{exn#2 <- `exn*`}], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? +relation fun_growtable_before_fun_growtable_case_1: `%%%`(tableinst, nat, ref) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') + rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}: + `%%%`(tableinst, n, r) -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#1?{j#1 <- `j?`}), rt), REFS r'#1*{r'#1 <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#2?{j#2 <- `j?`}), rt), REFS r'#2*{r'#2 <- `r'*`} ++ r^n{}}) @@ -12505,13 +15534,31 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- if ($proj_uN_0(i').0 = (|r'#5*{r'#5 <- `r'*`}| + n)) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#5).0))?{j#5 <- `j?`} -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) - def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() - -- otherwise ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $growmem(meminst : meminst, nat : nat) : meminst? +relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') + rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}: + `%%%%`(tableinst, n, r, ?(tableinst')) + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#1?{j#1 <- `j?`}), rt), REFS r'#1*{r'#1 <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#2?{j#2 <- `j?`}), rt), REFS r'#2*{r'#2 <- `r'*`} ++ r^n{}}) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#3?{j#3 <- `j?`}), rt), REFS r'#3*{r'#3 <- `r'*`}}) + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#4?{j#4 <- `j?`}), rt), REFS r'#4*{r'#4 <- `r'*`} ++ r^n{}}) + -- if ($proj_uN_0(i').0 = (|r'#5*{r'#5 <- `r'*`}| + n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#5).0))?{j#5 <- `j?`} + -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_1{x0 : tableinst, x1 : nat, x2 : ref}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_growtable_before_fun_growtable_case_1: `%%%`(x0, x1, x2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem_before_fun_growmem_case_1: `%%`(meminst, nat) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}: + `%%`(meminst, n) -- wf_meminst: `%`(meminst') -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#5*{b#5 <- `b*`}}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#6*{b#6 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) @@ -12520,8 +15567,25 @@ def $growmem(meminst : meminst, nat : nat) : meminst? -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#9*{b#9 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#10).0))?{j#10 <- `j?`} -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() - -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem: `%%%`(meminst, nat, meminst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}: + `%%%`(meminst, n, ?(meminst')) + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#5*{b#5 <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#6*{b#6 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#8?{j#8 <- `j?`})), BYTES b#7*{b#7 <- `b*`}}) + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#9?{j#9 <- `j?`})), BYTES b#8*{b#8 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#9*{b#9 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#10).0))?{j#10 <- `j?`} + -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_1{x0 : meminst, x1 : nat}: + `%%%`(x0, x1, ?()) + -- ~ fun_growmem_before_fun_growmem_case_1: `%%`(x0, x1) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) @@ -12564,7 +15628,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_store: `%`(s) -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) - -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 @@ -12573,7 +15636,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_store: `%`(s) -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) - -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 @@ -12582,7 +15644,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_store: `%`(s) -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) - -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 @@ -12592,7 +15653,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_exninst: `%`(exn) -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) - -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.35 @@ -12684,7 +15744,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) - -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-111.34 @@ -12692,7 +15751,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:113.1-115.28 @@ -12700,7 +15758,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- wf_store: `%`(s) -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) - -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:117.1-119.32 @@ -12708,7 +15765,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) - -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:121.1-123.30 @@ -12716,7 +15772,6 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) -- wf_store: `%`(s) -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) - -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:125.1-128.37 @@ -12731,29 +15786,39 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) } ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype +relation fun_inst_valtype: `%%%`(moduleinst, valtype, valtype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (iter_val#3 : deftype <: typeuse)*{iter_val#3 <- moduleinst.TYPES_moduleinst}) + rule fun_inst_valtype_case_0{moduleinst : moduleinst, t : valtype, var_0 : valtype}: + `%%%`(moduleinst, t, var_0) + -- fun_subst_all_valtype: `%%%`(t, (iter_val#3 : deftype <: typeuse)*{iter_val#3 <- moduleinst.TYPES_moduleinst}, var_0) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype +relation fun_inst_reftype: `%%%`(moduleinst, reftype, reftype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (iter_val#4 : deftype <: typeuse)*{iter_val#4 <- moduleinst.TYPES_moduleinst}) + rule fun_inst_reftype_case_0{moduleinst : moduleinst, rt : reftype, var_0 : reftype}: + `%%%`(moduleinst, rt, var_0) + -- fun_subst_all_reftype: `%%%`(rt, (iter_val#4 : deftype <: typeuse)*{iter_val#4 <- moduleinst.TYPES_moduleinst}, var_0) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype +relation fun_inst_globaltype: `%%%`(moduleinst, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (iter_val#5 : deftype <: typeuse)*{iter_val#5 <- moduleinst.TYPES_moduleinst}) + rule fun_inst_globaltype_case_0{moduleinst : moduleinst, gt : globaltype, var_0 : globaltype}: + `%%%`(moduleinst, gt, var_0) + -- fun_subst_all_globaltype: `%%%`(gt, (iter_val#5 : deftype <: typeuse)*{iter_val#5 <- moduleinst.TYPES_moduleinst}, var_0) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype +relation fun_inst_memtype: `%%%`(moduleinst, memtype, memtype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (iter_val#6 : deftype <: typeuse)*{iter_val#6 <- moduleinst.TYPES_moduleinst}) + rule fun_inst_memtype_case_0{moduleinst : moduleinst, mt : memtype, var_0 : memtype}: + `%%%`(moduleinst, mt, var_0) + -- fun_subst_all_memtype: `%%%`(mt, (iter_val#6 : deftype <: typeuse)*{iter_val#6 <- moduleinst.TYPES_moduleinst}, var_0) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype +relation fun_inst_tabletype: `%%%`(moduleinst, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (iter_val#7 : deftype <: typeuse)*{iter_val#7 <- moduleinst.TYPES_moduleinst}) + rule fun_inst_tabletype_case_0{moduleinst : moduleinst, tt : tabletype, var_0 : tabletype}: + `%%%`(moduleinst, tt, var_0) + -- fun_subst_all_tabletype: `%%%`(tt, (iter_val#7 : deftype <: typeuse)*{iter_val#7 <- moduleinst.TYPES_moduleinst}, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_br_on_null-addr`: `%`(instr*) @@ -12868,7 +15933,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12878,7 +15942,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12887,7 +15950,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12896,7 +15958,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12929,7 +15990,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(BR_IF_instr(l)) -- wf_instr: `%`(BR_instr(l)) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12937,17 +15997,15 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(BR_IF_instr(l)) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) - -- if ($proj_num__0(i) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: @@ -12955,7 +16013,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instr: `%`(BR_instr(l')) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13069,7 +16126,6 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.i31`{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- if ($proj_num__0(i) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(`REF.I31`_instr) -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) @@ -13186,49 +16242,51 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: + rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$unop_(nt, unop, c_1)| > 0) - -- if (c <- $unop_(nt, unop, c_1)) + -- if (c <- var_0) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: + rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(TRAP_instr) - -- if ($unop_(nt, unop, c_1) = []) + -- if (var_0 = []) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: + rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$binop_(nt, binop, c_1, c_2)| > 0) - -- if (c <- $binop_(nt, binop, c_1, c_2)) + -- if (c <- var_0) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: + rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(TRAP_instr) - -- if ($binop_(nt, binop, c_1, c_2) = []) + -- if (var_0 = []) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_, var_0 : u32}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(TESTOP_instr(nt, testop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) + -- if (!($proj_num__0(c)) = var_0) + -- fun_testop_: `%%%%`(nt, testop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: @@ -13237,25 +16295,25 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(RELOP_instr(nt, relop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: + rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(CONST_instr(nt_2, c)) - -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) - -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) + -- if (c <- var_0) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: + rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, var_0 : num_*}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(TRAP_instr) - -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) + -- if (var_0 = []) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: @@ -13263,7 +16321,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13273,7 +16330,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13284,77 +16340,79 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vvtestop{c_1 : vec_, c : num_}: + rule vvtestop{c_1 : vec_, c : num_, var_0 : u32}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) + -- if (!($proj_num__0(c)) = var_0) + -- fun_inez_: `%%%`($vsize(V128_vectype), c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: + rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vunop_(sh, vunop, c_1)| > 0) - -- if (c <- $vunop_(sh, vunop, c_1)) + -- if (c <- var_0) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: + rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(TRAP_instr) - -- if ($vunop_(sh, vunop, c_1) = []) + -- if (var_0 = []) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: + rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) - -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) + -- if (c <- var_0) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: + rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(TRAP_instr) - -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) + -- if (var_0 = []) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: + rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) - -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) + -- if (c <- var_0) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: + rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(TRAP_instr) - -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) + -- if (var_0 = []) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*}: + rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*, `var_0*` : uN*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), i))*{i <- `i*`} -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) @@ -13362,64 +16420,67 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)) - -- if ($proj_num__0(c) =/= ?()) - -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} - -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`})) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0(var_0).0*{var_0 <- `var_0*`})) + -- (fun_inez_: `%%%`($jsizenn(Jnn), !($proj_lane__2(i)), var_0))*{var_0 <- `var_0*`, i <- `i*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) + -- if (c = var_0) + -- fun_vrelop_: `%%%%%`(sh, vrelop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) - -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) + -- if (c = var_0) + -- fun_vshiftop_: `%%%%%`(sh, vshiftop, c_1, !($proj_num__0(i)), var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: + rule vbitmask{c_1 : vec_, sh : ishape, c : num_, var_0 : u32}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VBITMASK_instr(sh)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) + -- if (!($proj_num__0(c)) = var_0) + -- fun_vbitmaskop_: `%%%`(sh, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) + -- if (c = var_0) + -- fun_vswizzlop_: `%%%%%`(sh, swizzlop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) + -- if (c = var_0) + -- fun_vshufflop_: `%%%%%`(sh, i*{i <- `i*`}, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: + rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_, var_0 : lane_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), var_0^M{})) + -- fun_lpacknum_: `%%%`(Lnn, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: @@ -13429,7 +16490,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13439,98 +16499,106 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) - -- if ($proj_num__0(c_2) =/= ?()) - -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)|) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: + rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_, var_0 : lane_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = var_0])) + -- fun_lpacknum_: `%%%`(Lnn, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) + -- if (var_0 = c) + -- fun_vextunop__: `%%%%%`(sh_1, sh_2, vextunop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) + -- if (var_0 = c) + -- fun_vextbinop__: `%%%%%%`(sh_1, sh_2, vextbinop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) + -- if (var_0 = c) + -- fun_vextternop__: `%%%%%%%`(sh_1, sh_2, vextternop, c_1, c_2, c_3, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) + -- if (c = var_0) + -- fun_vnarrowop__: `%%%%%%`($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) + -- if (c = var_0) + -- fun_vcvtop__: `%%%%%`(sh_1, sh_2, vcvtop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -def $blocktype_(state : state, blocktype : blocktype) : instrtype +relation fun_blocktype_: `%%%`(state, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + rule fun_blocktype__case_0{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%`(z, _IDX_blocktype(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1#3*{t_1#3 <- `t_1*`}), [], `%`_resulttype(t_2#3*{t_2#3 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#4*{t_1#4 <- `t_1*`}), `%`_resulttype(t_2#4*{t_2#4 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1#5*{t_1#5 <- `t_1*`}), `%`_resulttype(t_2#5*{t_2#5 <- `t_2*`}))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t#1?{t#1 <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + rule fun_blocktype__case_1{z : state, `t?` : valtype?}: + `%%%`(z, _RESULT_blocktype(t#1?{t#1 <- `t?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t#2?{t#2 <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- wf_reftype: `%`(rt) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- wf_instr: `%`(BR_instr(l)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- wf_reftype: `%`(rt) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_throw_ref-handler-next`: `%`(config) @@ -13554,8 +16622,6 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -13565,8 +16631,6 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -13577,7 +16641,6 @@ relation `Step_read_before_table.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13594,7 +16657,6 @@ relation `Step_read_before_table.fill-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13604,8 +16666,6 @@ relation `Step_read_before_table.copy-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13622,8 +16682,6 @@ relation `Step_read_before_table.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13636,9 +16694,7 @@ relation `Step_read_before_table.copy-gt`: `%`(config) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) -- wf_instr: `%`(`TABLE.GET`_instr(y)) -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) @@ -13657,8 +16713,6 @@ relation `Step_read_before_table.copy-gt`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13668,8 +16722,6 @@ relation `Step_read_before_table.init-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13686,8 +16738,6 @@ relation `Step_read_before_table.init-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13697,7 +16747,6 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13714,7 +16763,6 @@ relation `Step_read_before_memory.fill-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13724,8 +16772,6 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13742,28 +16788,25 @@ relation `Step_read_before_memory.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- if ($proj_num__0(i_1) =/= ?()) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- fun_memarg0: `%`(var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -13777,8 +16820,6 @@ relation `Step_read_before_memory.copy-gt`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13788,8 +16829,6 @@ relation `Step_read_before_memory.init-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13806,32 +16845,32 @@ relation `Step_read_before_memory.init-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) -- wf_reftype: `%`(rt') -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_ref.cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) -- wf_reftype: `%`(rt') -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.fill-zero`: `%`(config) @@ -13840,8 +16879,6 @@ relation `Step_read_before_array.fill-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13858,8 +16895,6 @@ relation `Step_read_before_array.fill-succ`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13869,8 +16904,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13878,8 +16911,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13896,8 +16927,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13905,14 +16934,12 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) @@ -13921,17 +16948,15 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($sx(zt_2) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !(var_0))) + -- fun_sx: `%%`(zt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13945,8 +16970,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13954,8 +16977,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13965,7 +16986,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13973,8 +16993,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13991,7 +17009,6 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13999,30 +17016,25 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- fun_zsize: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14035,52 +17047,52 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- fun_zsize: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- fun_blocktype_: `%%%`(z, bt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: + rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*, var_0 : instrtype}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- fun_blocktype_: `%%%`(z, bt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) -- wf_reftype: `%`(rt) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- wf_instr: `%`(BR_instr(l)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: @@ -14089,13 +17101,14 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) -- wf_reftype: `%`(rt) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: @@ -14107,11 +17120,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) - -- if (a < |$funcinst(z)|) -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14121,28 +17132,25 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: + rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*, `var_0*` : val??*}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- (if ($default_(t) =/= ?()))*{t <- `t*`} - -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- if (a < |$funcinst(z)|) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !(var_0)*{var_0 <- `var_0*`}, MODULE fi.MODULE_funcinst}) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !(var_0)*{var_0 <- `var_0*`}, MODULE fi.MODULE_funcinst}) + -- (fun_default_: `%%`(t, var_0))*{var_0 <- `var_0*`, t <- `t*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) - -- if (a < |$funcinst(z)|) -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14170,7 +17178,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) -- wf_instr: `%`(CALL_REF_instr(yy)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14214,8 +17221,6 @@ relation Step_read: `%~>%`(config, instr*) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -14226,8 +17231,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -14252,12 +17255,13 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- fun_blocktype_: `%%%`(z, bt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.get`{z : state, x : idx, val : val}: @@ -14278,15 +17282,13 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: @@ -14302,7 +17304,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14315,7 +17316,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(`TABLE.SET`_instr(x)) @@ -14329,8 +17329,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14343,8 +17341,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -14360,8 +17356,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14378,8 +17372,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14392,9 +17384,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) $instr_ref($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(`TABLE.SET`_instr(x)) @@ -14409,7 +17398,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14417,7 +17405,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14425,7 +17412,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14433,7 +17419,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14441,7 +17426,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14449,7 +17433,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14457,7 +17440,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14467,7 +17449,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} - -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14486,7 +17466,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -14497,7 +17476,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14506,7 +17484,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_uN: `%%`(N, j) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) @@ -14515,7 +17492,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14525,7 +17501,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) @@ -14545,7 +17520,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14556,24 +17530,22 @@ relation Step_read: `%~>%`(config, instr*) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) + rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- fun_memarg0: `%`(var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14584,45 +17556,41 @@ relation Step_read: `%~>%`(config, instr*) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) + rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- fun_memarg0: `%`(var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) + rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- fun_memarg0: `%`(var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14633,20 +17601,18 @@ relation Step_read: `%~>%`(config, instr*) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) + rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- fun_memarg0: `%`(var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null`{z : state, ht : heaptype}: @@ -14657,19 +17623,19 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- wf_reftype: `%`(rt') -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: @@ -14679,13 +17645,14 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)]), [$instr_ref(ref)]) -- wf_reftype: `%`(rt') -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: @@ -14695,16 +17662,16 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*, `var_1*` : valtype*, `var_0*` : val??*}: `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), $instr_val(val)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`val*`| = |`zt*`|) - -- (if ($default_($unpack(zt)) =/= ?()))*{zt <- `zt*`} - -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} + -- (if (!(var_0) = ?(val)))*{var_0 <- `var_0*`, val <- `val*`} + -- (fun_unpack: `%%`(zt, var_1))*{var_1 <- `var_1*`, zt <- `zt*`} + -- (fun_default_: `%%`(var_1, var_0))*{var_1 <- `var_1*`, var_0 <- `var_0*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: @@ -14713,33 +17680,30 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])))]) - -- if ($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]) =/= ?()) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) - -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) - -- if (a < |$structinst(z)|) + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*, var_0 : val?}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val(!(var_0))]) -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- fun_unpackfield_: `%%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: + rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype, var_1 : valtype, var_0 : val??}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)]), $instr_val(val)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- wf_val: `%`(val) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($default_($unpack(zt)) =/= ?()) - -- if (!($default_($unpack(zt))) = ?(val)) + -- if (!(var_0) = ?(val)) + -- fun_unpack: `%%`(zt, var_1) + -- fun_default_: `%%`(var_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14748,32 +17712,31 @@ relation Step_read: `%~>%`(config, instr*) -- (wf_ref: `%`(ref))*{ref <- `ref*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(i) =/= ?()) - -- if ($zsize(zt) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- fun_zsize: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) - -- (if ($cunpack(zt) =/= ?()))^n{} + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?, var_3 : nat?, `var_2*` : lit_*, var_1 : consttype?, `var_0*` : instr*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), var_0^n{var_0 <- `var_0*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zsize(zt) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) - -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !(var_3)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- fun_zsize: `%%`(zt, var_3) + -- (fun_cunpacknum_: `%%%`(zt, c, var_2))^n{var_2 <- `var_2*`, c <- `c*`} + -- fun_cunpack: `%%`(zt, var_1) + -- (fun_const: `%%%`(!(var_1), var_2, var_0))^n{var_2 <- `var_2*`, var_0 <- `var_0*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: @@ -14786,20 +17749,15 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [$instr_val(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])))]) - -- if ($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]) =/= ?()) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) - -- if (a < |$arrayinst(z)|) - -- if ($proj_num__0(i) =/= ?()) + rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?, var_0 : val?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [$instr_val(!(var_0))]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- fun_unpackfield_: `%%%%`(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state}: @@ -14810,7 +17768,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- if (a < |$arrayinst(z)|) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) @@ -14825,8 +17782,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14839,7 +17794,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) @@ -14866,8 +17820,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14875,8 +17827,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14887,10 +17837,8 @@ relation Step_read: `%~>%`(config, instr*) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -14905,14 +17853,12 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($sx(zt_2) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !(var_0))) + -- fun_sx: `%%`(zt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14927,8 +17873,8 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($sx(zt_2) =/= ?()) - -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) + -- if (sx?{sx <- `sx?`} = !(var_0)) + -- fun_sx: `%%`(zt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14941,8 +17887,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14950,7 +17894,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14963,8 +17906,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- wf_ref: `%`(ref) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) @@ -14975,7 +17916,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14989,20 +17929,17 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- fun_zsize: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -15012,25 +17949,25 @@ relation Step_read: `%~>%`(config, instr*) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) - -- if ($cunpack(zt) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?, var_3 : nat?, var_2 : lit_, var_1 : consttype?, var_0 : instr}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) var_0 `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(`ARRAY.SET`_instr(x)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- fun_zsize: `%%`(zt, var_3) + -- fun_cunpacknum_: `%%%`(zt, c, var_2) + -- fun_cunpack: `%%`(zt, var_1) + -- fun_const: `%%%`(!(var_1), var_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rec { @@ -15089,167 +18026,168 @@ relation Step: `%~>%`(config, config) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:231.1-235.49 - rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*}: - `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*, var_1 : deftype?, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config(var_0, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_config: `%`(`%;%`_config(var_0, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- if ($as_deftype($tag(z, x).TYPE_taginst) =/= ?()) - -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!(var_1), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + -- fun_as_deftype: `%%`($tag(z, x).TYPE_taginst, var_1) + -- fun_add_exninst: `%%%`(z, [exn], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 - rule `local.set`{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + rule `local.set`{z : state, val : val, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- fun_with_local: `%%%%`(z, x, val, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:322.1-323.58 - rule `global.set`{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + rule `global.set`{z : state, val : val, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- fun_with_global: `%%%%`(z, x, val, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:340.1-342.32 - rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) - -- if ($proj_num__0(i) =/= ?()) + rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + -- fun_with_table: `%%%%%`(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-354.46 - rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: - `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst, var_1 : tableinst?, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- if ($growtable($table(z, x), n, ref) =/= ?()) - -- if (ti = !($growtable($table(z, x), n, ref))) + -- wf_config: `%`(`%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- if (ti = !(var_1)) + -- fun_growtable: `%%%%`($table(z, x), n, ref, var_1) + -- fun_with_tableinst: `%%%%`(z, x, ti, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:356.1-357.87 - rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:417.1-418.51 - rule `elem.drop`{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + rule `elem.drop`{z : state, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- fun_with_elem: `%%%%`(z, x, [], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:501.1-504.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:506.1-510.29 - rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) + rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.52 - rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) + rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(c) =/= ?()) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-531.31 - rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) + rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:534.1-537.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-544.49 - rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) + rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) - -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:553.1-556.37 - rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst, var_1 : meminst?, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- if ($growmem($mem(z, x), n) =/= ?()) - -- if (mi = !($growmem($mem(z, x), n))) + -- wf_config: `%`(`%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (mi = !(var_1)) + -- fun_growmem: `%%%`($mem(z, x), n, var_1) + -- fun_with_meminst: `%%%%`(z, x, mi, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:558.1-559.84 - rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:619.1-620.51 - rule `data.drop`{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + rule `data.drop`{z : state, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- fun_with_data: `%%%%`(z, x, [], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:700.1-704.65 - rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: - `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*, `var_1*` : fieldval?*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config(var_0, [`REF.STRUCT_ADDR`_instr(a)])) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- wf_config: `%`(`%;%`_config(var_0, [`REF.STRUCT_ADDR`_instr(a)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`, zt <- `zt*`} - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) - -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + -- if (si = {TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) + -- (fun_packfield_: `%%%`(zt, val, var_1))^n{var_1 <- `var_1*`, val <- `val*`, zt <- `zt*`} + -- fun_add_structinst: `%%%`(z, [si], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:721.1-722.55 rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: @@ -15258,25 +18196,26 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:724.1-727.46 - rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) - -- if ($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val) =/= ?()) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*, var_1 : fieldval?, var_0 : state}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- fun_packfield_: `%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val, var_1) + -- fun_with_struct: `%%%%%`(z, a, $proj_uN_0(i).0, !(var_1), var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:740.1-745.65 - rule `array.new_fixed`{z : state, n : n, `val*` : val*, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + rule `array.new_fixed`{z : state, n : n, `val*` : val*, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype, `var_1*` : fieldval?*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]), `%;%`_config(var_0, [`REF.ARRAY_ADDR`_instr(a)])) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- wf_config: `%`(`%;%`_config(var_0, [`REF.ARRAY_ADDR`_instr(a)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`} - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}})) + -- (fun_packfield_: `%%%`(zt, val, var_1))^n{var_1 <- `var_1*`, val <- `val*`} + -- fun_add_arrayinst: `%%%`(z, [ai], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-786.66 rule `array.set-null`{z : state, i : num_, val : val, x : idx}: @@ -15289,19 +18228,17 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-795.44 - rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) - -- if ($proj_num__0(i) =/= ?()) - -- if ($packfield_(zt, val) =/= ?()) + rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?, var_1 : fieldval?, var_0 : state}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- fun_packfield_: `%%%`(zt, val, var_1) + -- fun_with_array: `%%%%%`(z, a, $proj_uN_0(!($proj_num__0(i))).0, !(var_1), var_0) } ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -15336,23 +18273,30 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 -def $alloctypes(type*) : deftype* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 - def $alloctypes([]) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 - def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'#1*{type'#1 <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 +relation fun_alloctypes: `%%`(type*, deftype*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_1{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN, var_2 : deftype*, var_1 : deftype*, var_0 : deftype*}: + `%%`(type'#1*{type'#1 <- `type'*`} ++ [type], deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`}) + -- fun_rolldt: `%%%`(x, rectype, var_2) + -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype'#2)*{deftype'#2 <- `deftype'*`}, var_1) + -- fun_alloctypes: `%%`(type'#2*{type'#2 <- `type'*`}, var_0) -- wf_uN: `%%`(32, x) - -- if (deftype'#1*{deftype'#1 <- `deftype'*`} = $alloctypes(type'#2*{type'#2 <- `type'*`})) + -- if (deftype'#1*{deftype'#1 <- `deftype'*`} = var_0) -- if (type = TYPE_type(rectype)) - -- if (deftype#1*{deftype#1 <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), $typeuse_deftype(deftype'#2)*{deftype'#2 <- `deftype'*`})) + -- if (deftype#1*{deftype#1 <- `deftype*`} = var_1) -- if ($proj_uN_0(x).0 = |deftype'#3*{deftype'#3 <- `deftype'*`}|) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) +relation fun_alloctag: `%%%`(store, tagtype, (store, tagaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + rule fun_alloctag_case_0{s : store, tagtype : typeuse, taginst : taginst}: + `%%%`(s, tagtype, (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|)) -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) @@ -15360,22 +18304,28 @@ def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 -def $alloctags(store : store, tagtype*) : (store, tagaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 - def $alloctags{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 - def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'#1*{tagtype'#1 <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation fun_alloctags: `%%%`(store, tagtype*, (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_1{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store, var_1 : (store, tagaddr*), var_0 : (store, tagaddr)}: + `%%%`(s, [tagtype] ++ tagtype'#1*{tagtype'#1 <- `tagtype'*`}, (s_2, [ja] ++ ja'*{ja' <- `ja'*`})) + -- fun_alloctags: `%%%`(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}, var_1) + -- fun_alloctag: `%%%`(s, tagtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ja) = $alloctag(s, tagtype)) - -- if ((s_2, ja'#1*{ja'#1 <- `ja'*`}) = $alloctags(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`})) + -- if ((s_1, ja) = var_0) + -- if ((s_2, ja'#1*{ja'#1 <- `ja'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) +relation fun_allocglobal: `%%%%`(store, globaltype, val, (store, globaladdr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + rule fun_allocglobal_case_0{s : store, globaltype : globaltype, val : val, globalinst : globalinst}: + `%%%%`(s, globaltype, val, (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) @@ -15383,22 +18333,28 @@ def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, gl ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 -def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 - def $allocglobals{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 - def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'#1*{globaltype'#1 <- `globaltype'*`}, [val] ++ val'#1*{val'#1 <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation fun_allocglobals: `%%%%`(store, globaltype*, val*, (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_1{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store, var_1 : (store, globaladdr*), var_0 : (store, globaladdr)}: + `%%%%`(s, [globaltype] ++ globaltype'#1*{globaltype'#1 <- `globaltype'*`}, [val] ++ val'#1*{val'#1 <- `val'*`}, (s_2, [ga] ++ ga'*{ga' <- `ga'*`})) + -- fun_allocglobals: `%%%%`(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, globaltype, val, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) - -- if ((s_2, ga'#1*{ga'#1 <- `ga'*`}) = $allocglobals(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`})) + -- if ((s_1, ga) = var_0) + -- if ((s_2, ga'#1*{ga'#1 <- `ga'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmem(store : store, memtype : memtype) : (store, memaddr) +relation fun_allocmem: `%%%`(store, memtype, (store, memaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#11?{j#11 <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + rule fun_allocmem_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}: + `%%%`(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#11?{j#11 <- `j?`})), (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#12?{j#12 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#13?{j#13 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) @@ -15406,22 +18362,28 @@ def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 -def $allocmems(store : store, memtype*) : (store, memaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 - def $allocmems{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 - def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'#1*{memtype'#1 <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation fun_allocmems: `%%%`(store, memtype*, (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_1{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store, var_1 : (store, memaddr*), var_0 : (store, memaddr)}: + `%%%`(s, [memtype] ++ memtype'#1*{memtype'#1 <- `memtype'*`}, (s_2, [ma] ++ ma'*{ma' <- `ma'*`})) + -- fun_allocmems: `%%%`(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}, var_1) + -- fun_allocmem: `%%%`(s, memtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ma) = $allocmem(s, memtype)) - -- if ((s_2, ma'#1*{ma'#1 <- `ma'*`}) = $allocmems(s_1, memtype'#2*{memtype'#2 <- `memtype'*`})) + -- if ((s_1, ma) = var_0) + -- if ((s_2, ma'#1*{ma'#1 <- `ma'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) +relation fun_alloctable: `%%%%`(store, tabletype, ref, (store, tableaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j#14?{j#14 <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + rule fun_alloctable_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}: + `%%%%`(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j#14?{j#14 <- `j?`}), rt), ref, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#15?{j#15 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#16?{j#16 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) @@ -15429,22 +18391,28 @@ def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, table ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 -def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 - def $alloctables{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 - def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'#1*{tabletype'#1 <- `tabletype'*`}, [ref] ++ ref'#1*{ref'#1 <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation fun_alloctables: `%%%%`(store, tabletype*, ref*, (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_1{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store, var_1 : (store, tableaddr*), var_0 : (store, tableaddr)}: + `%%%%`(s, [tabletype] ++ tabletype'#1*{tabletype'#1 <- `tabletype'*`}, [ref] ++ ref'#1*{ref'#1 <- `ref'*`}, (s_2, [ta] ++ ta'*{ta' <- `ta'*`})) + -- fun_alloctables: `%%%%`(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}, var_1) + -- fun_alloctable: `%%%%`(s, tabletype, ref, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) - -- if ((s_2, ta'#1*{ta'#1 <- `ta'*`}) = $alloctables(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`})) + -- if ((s_1, ta) = var_0) + -- if ((s_2, ta'#1*{ta'#1 <- `ta'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) +relation fun_allocfunc: `%%%%%`(store, deftype, funccode, moduleinst, (store, funcaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + rule fun_allocfunc_case_0{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}: + `%%%%%`(s, deftype, funccode, moduleinst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) @@ -15452,22 +18420,28 @@ def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 -def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 - def $allocfuncs{s : store}(s, [], [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 - def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'#3*{dt'#3 <- `dt'*`}, [funccode] ++ funccode'#1*{funccode'#1 <- `funccode'*`}, [moduleinst] ++ moduleinst'#1*{moduleinst'#1 <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation fun_allocfuncs: `%%%%%`(store, deftype*, funccode*, moduleinst*, (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_0{s : store}: + `%%%%%`(s, [], [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_1{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store, var_1 : (store, funcaddr*), var_0 : (store, funcaddr)}: + `%%%%%`(s, [dt] ++ dt'#3*{dt'#3 <- `dt'*`}, [funccode] ++ funccode'#1*{funccode'#1 <- `funccode'*`}, [moduleinst] ++ moduleinst'#1*{moduleinst'#1 <- `moduleinst'*`}, (s_2, [fa] ++ fa'*{fa' <- `fa'*`})) + -- fun_allocfuncs: `%%%%%`(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}, var_1) + -- fun_allocfunc: `%%%%%`(s, dt, funccode, moduleinst, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) - -- if ((s_2, fa'#1*{fa'#1 <- `fa'*`}) = $allocfuncs(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`})) + -- if ((s_1, fa) = var_0) + -- if ((s_2, fa'#1*{fa'#1 <- `fa'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) +relation fun_allocdata: `%%%%`(store, datatype, byte*, (store, dataaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte#2*{byte#2 <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + rule fun_allocdata_case_0{s : store, `byte*` : byte*, datainst : datainst}: + `%%%%`(s, OK_datatype, byte#2*{byte#2 <- `byte*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_datainst: `%`({BYTES byte#3*{byte#3 <- `byte*`}}) -- if (datainst = {BYTES byte#4*{byte#4 <- `byte*`}}) @@ -15475,22 +18449,28 @@ def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 -def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 - def $allocdatas{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 - def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#10*{b#10 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation fun_allocdatas: `%%%%`(store, datatype*, byte**, (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_1{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store, var_1 : (store, dataaddr*), var_0 : (store, dataaddr)}: + `%%%%`(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#10*{b#10 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}, (s_2, [da] ++ da'*{da' <- `da'*`})) + -- fun_allocdatas: `%%%%`(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}, var_1) + -- fun_allocdata: `%%%%`(s, ok, b#11*{b#11 <- `b*`}, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, da) = $allocdata(s, ok, b#11*{b#11 <- `b*`})) - -- if ((s_2, da'#1*{da'#1 <- `da'*`}) = $allocdatas(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`})) + -- if ((s_1, da) = var_0) + -- if ((s_2, da'#1*{da'#1 <- `da'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) +relation fun_allocelem: `%%%%`(store, elemtype, ref*, (store, elemaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref#1*{ref#1 <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + rule fun_allocelem_case_0{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}: + `%%%%`(s, elemtype, ref#1*{ref#1 <- `ref*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) -- wf_eleminst: `%`({TYPE elemtype, REFS ref#2*{ref#2 <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref#3*{ref#3 <- `ref*`}}) @@ -15498,45 +18478,76 @@ def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 -def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 - def $allocelems{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 - def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#3*{ref'#3 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation fun_allocelems: `%%%%`(store, elemtype*, ref**, (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_1{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store, var_1 : (store, elemaddr*), var_0 : (store, elemaddr)}: + `%%%%`(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#3*{ref'#3 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}, (s_2, [ea] ++ ea'*{ea' <- `ea'*`})) + -- fun_allocelems: `%%%%`(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#4*{ref'#4 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}, var_1) + -- fun_allocelem: `%%%%`(s, rt, ref#5*{ref#5 <- `ref*`}, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ea) = $allocelem(s, rt, ref#5*{ref#5 <- `ref*`})) - -- if ((s_2, ea'#1*{ea'#1 <- `ea'*`}) = $allocelems(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#4*{ref'#4 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`})) + -- if ((s_1, ea) = var_0) + -- if ((s_2, ea'#1*{ea'#1 <- `ea'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexport(moduleinst : moduleinst, export : export) : exportinst +relation fun_allocexport: `%%%`(moduleinst, export, exportinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_0{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, TAG_externidx(x)), {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_1{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, GLOBAL_externidx(x)), {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_2{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, MEM_externidx(x)), {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_3{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, TABLE_externidx(x)), {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_4{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, FUNC_externidx(x)), {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexports(moduleinst : moduleinst, export*) : exportinst* +relation fun_allocexports: `%%%`(moduleinst, export*, exportinst*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export#4*{export#4 <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + rule fun_allocexports_case_0{moduleinst : moduleinst, `export*` : export*, `var_0*` : exportinst*}: + `%%%`(moduleinst, export#4*{export#4 <- `export*`}, var_0*{var_0 <- `var_0*`}) + -- (fun_allocexport: `%%%`(moduleinst, export, var_0))*{var_0 <- `var_0*`, export <- `export*`} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) +relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref**, (store, moduleinst)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}) = (s_7, moduleinst) + rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_13 : exportinst*, var_12 : (store, funcaddr*), `var_11*` : elemtype*, var_10 : (store, elemaddr*), var_9 : (store, dataaddr*), `var_8*` : tabletype*, var_7 : (store, tableaddr*), `var_6*` : memtype*, var_5 : (store, memaddr*), `var_4*` : globaltype*, var_3 : (store, globaladdr*), `var_2*` : tagtype*, var_1 : (store, tagaddr*), var_0 : deftype*}: + `%%%%%%%`(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}, (s_7, moduleinst)) + -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#7*{export#7 <- `export*`}, var_13) + -- fun_allocfuncs: `%%%%%`(s_6, dt#15*{dt#15 <- `dt*`}[$proj_uN_0(x#4).0]*{x#4 <- `x*`}, FUNC_funccode(x#5, local#4*{local#4 <- `local*#86`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#86` <- `local**`, x#5 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_12) + -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- `dt*`}, var_11))*{var_11 <- `var_11*`, elemtype#3 <- `elemtype*`} + -- fun_allocelems: `%%%%`(s_5, var_11*{var_11 <- `var_11*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_10) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#114`}*{`byte*#114` <- `byte**`}, var_9) + -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_8))*{var_8 <- `var_8*`, tabletype#160 <- `tabletype*`} + -- fun_alloctables: `%%%%`(s_3, var_8*{var_8 <- `var_8*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_7) + -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_6))*{var_6 <- `var_6*`, memtype#126 <- `memtype*`} + -- fun_allocmems: `%%%`(s_2, var_6*{var_6 <- `var_6*`}, var_5) + -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_4))*{var_4 <- `var_4*`, globaltype#126 <- `globaltype*`} + -- fun_allocglobals: `%%%%`(s_1, var_4*{var_4 <- `var_4*`}, val_G#2*{val_G#2 <- `val_G*`}, var_3) + -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_2))*{var_2 <- `var_2*`, tagtype#82 <- `tagtype*`} + -- fun_alloctags: `%%%`(s, var_2*{var_2 <- `var_2*`}, var_1) + -- fun_alloctypes: `%%`(type#4*{type#4 <- `type*`}, var_0) -- wf_store: `%`(s_7) -- wf_moduleinst: `%`(moduleinst) -- wf_store: `%`(s_1) @@ -15568,38 +18579,46 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- if (ma_I#3*{ma_I#3 <- `ma_I*`} = $memsxa(externaddr#4*{externaddr#4 <- `externaddr*`})) -- if (ta_I#3*{ta_I#3 <- `ta_I*`} = $tablesxa(externaddr#5*{externaddr#5 <- `externaddr*`})) -- if (fa_I#3*{fa_I#3 <- `fa_I*`} = $funcsxa(externaddr#6*{externaddr#6 <- `externaddr*`})) - -- if (dt#9*{dt#9 <- `dt*`} = $alloctypes(type#4*{type#4 <- `type*`})) + -- if (dt#9*{dt#9 <- `dt*`} = var_0) -- if (fa#3*{fa#3 <- `fa*`} = (|s.FUNCS_store| + i_F#1)^(i_F#1<|func#6*{func#6 <- `func*`}|){}) - -- if ((s_1, aa#3*{aa#3 <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`})*{tagtype#82 <- `tagtype*`})) - -- if ((s_2, ga#3*{ga#3 <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`})*{globaltype#126 <- `globaltype*`}, val_G#2*{val_G#2 <- `val_G*`})) - -- if ((s_3, ma#3*{ma#3 <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`})*{memtype#126 <- `memtype*`})) - -- if ((s_4, ta#3*{ta#3 <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`})*{tabletype#160 <- `tabletype*`}, ref_T#2*{ref_T#2 <- `ref_T*`})) - -- if ((s_5, da#2*{da#2 <- `da*`}) = $allocdatas(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#114`}*{`byte*#114` <- `byte**`})) - -- if ((s_6, ea#2*{ea#2 <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- `dt*`})*{elemtype#3 <- `elemtype*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`})) - -- if ((s_7, fa#4*{fa#4 <- `fa*`}) = $allocfuncs(s_6, dt#15*{dt#15 <- `dt*`}[$proj_uN_0(x#4).0]*{x#4 <- `x*`}, FUNC_funccode(x#5, local#4*{local#4 <- `local*#86`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#86` <- `local**`, x#5 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{})) - -- if (xi#2*{xi#2 <- `xi*`} = $allocexports({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#7*{export#7 <- `export*`})) + -- if ((s_1, aa#3*{aa#3 <- `aa*`}) = var_1) + -- if ((s_2, ga#3*{ga#3 <- `ga*`}) = var_3) + -- if ((s_3, ma#3*{ma#3 <- `ma*`}) = var_5) + -- if ((s_4, ta#3*{ta#3 <- `ta*`}) = var_7) + -- if ((s_5, da#2*{da#2 <- `da*`}) = var_9) + -- if ((s_6, ea#2*{ea#2 <- `ea*`}) = var_10) + -- if ((s_7, fa#4*{fa#4 <- `fa*`}) = var_12) + -- if (xi#2*{xi#2 <- `xi*`} = var_13) -- if (moduleinst = {TYPES dt#16*{dt#16 <- `dt*`}, TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $rundata_(dataidx : dataidx, data : data) : instr* +relation fun_rundata_: `%%%`(dataidx, data, instr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, n : nat, `b*` : byte*}(x, DATA_data(b#12^n{b#12 <- `b*`}, PASSIVE_datamode)) = [] + rule fun_rundata__case_0{x : uN, n : nat, `b*` : byte*}: + `%%%`(x, DATA_data(b#12^n{b#12 <- `b*`}, PASSIVE_datamode), []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}(x, DATA_data(b#13^n{b#13 <- `b*`}, ACTIVE_datamode(y, instr#7*{instr#7 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] + rule fun_rundata__case_1{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}: + `%%%`(x, DATA_data(b#13^n{b#13 <- `b*`}, ACTIVE_datamode(y, instr#7*{instr#7 <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)]) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) -- wf_instr: `%`(`MEMORY.INIT`_instr(y, x)) -- wf_instr: `%`(`DATA.DROP`_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $runelem_(elemidx : elemidx, elem : elem) : instr* +relation fun_runelem_: `%%%`(elemidx, elem, instr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e#1^n{e#1 <- `e*`}, PASSIVE_elemmode)) = [] + rule fun_runelem__case_0{x : uN, rt : reftype, n : nat, `e*` : expr*}: + `%%%`(x, ELEM_elem(rt, e#1^n{e#1 <- `e*`}, PASSIVE_elemmode), []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e#2^n{e#2 <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] + rule fun_runelem__case_1{x : uN, rt : reftype, n : nat, `e*` : expr*}: + `%%%`(x, ELEM_elem(rt, e#2^n{e#2 <- `e*`}, DECLARE_elemmode), [`ELEM.DROP`_instr(x)]) -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e#3^n{e#3 <- `e*`}, ACTIVE_elemmode(y, instr#8*{instr#8 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] + rule fun_runelem__case_2{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}: + `%%%`(x, ELEM_elem(rt, e#3^n{e#3 <- `e*`}, ACTIVE_elemmode(y, instr#8*{instr#8 <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)]) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) -- wf_instr: `%`(`TABLE.INIT`_instr(y, x)) @@ -15608,46 +18627,60 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.92 -def $evalexprs(state : state, expr*) : (state, ref*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.34 - def $evalexprs{z : state}(z, []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-165.46 - def $evalexprs{z : state, expr : instr*, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state}(z, [expr] ++ expr'#1*{expr'#1 <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation fun_evalexprs: `%%%`(state, expr*, (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule fun_evalexprs_case_0{z : state}: + `%%%`(z, [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule fun_evalexprs_case_1{z : state, expr : instr*, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state, var_0 : (state, ref*)}: + `%%%`(z, [expr] ++ expr'#1*{expr'#1 <- `expr'*`}, (z'', [ref] ++ ref'*{ref' <- `ref'*`})) + -- fun_evalexprs: `%%%`(z', expr'#2*{expr'#2 <- `expr'*`}, var_0) -- wf_state: `%`(z'') -- wf_ref: `%`(ref) -- (wf_ref: `%`(ref'#5))*{ref'#5 <- `ref'*`} -- wf_state: `%`(z') -- Eval_expr: `%;%~>*%;%`(z, expr, z', [$val_ref(ref)]) - -- if ((z'', ref'#6*{ref'#6 <- `ref'*`}) = $evalexprs(z', expr'#2*{expr'#2 <- `expr'*`})) + -- if ((z'', ref'#6*{ref'#6 <- `ref'*`}) = var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.1-167.96 -def $evalexprss(state : state, expr**) : (state, ref**) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:168.1-168.35 - def $evalexprss{z : state}(z, []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.1-172.49 - def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state}(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#3*{expr'#3 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation fun_evalexprss: `%%%`(state, expr**, (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule fun_evalexprss_case_0{z : state}: + `%%%`(z, [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule fun_evalexprss_case_1{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state, var_1 : (state, ref**), var_0 : (state, ref*)}: + `%%%`(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#3*{expr'#3 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}, (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) + -- fun_evalexprss: `%%%`(z', expr'#4*{expr'#4 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}, var_1) + -- fun_evalexprs: `%%%`(z, expr#366*{expr#366 <- `expr*`}, var_0) -- wf_state: `%`(z'') -- (wf_ref: `%`(ref#6))*{ref#6 <- `ref*`} -- (wf_ref: `%`(ref'#7))*{ref'#7 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`} -- wf_state: `%`(z') - -- if ((z', ref#7*{ref#7 <- `ref*`}) = $evalexprs(z, expr#366*{expr#366 <- `expr*`})) - -- if ((z'', ref'#8*{ref'#8 <- `ref'*#4`}*{`ref'*#4` <- `ref'**`}) = $evalexprss(z', expr'#4*{expr'#4 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`})) + -- if ((z', ref#7*{ref#7 <- `ref*`}) = var_0) + -- if ((z'', ref'#8*{ref'#8 <- `ref'*#4`}*{`ref'*#4` <- `ref'**`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.1-174.111 -def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:175.1-175.41 - def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 - def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#5*{expr'#5 <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule fun_evalglobals_case_0{z : state}: + `%%%%`(z, [], [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule fun_evalglobals_case_1{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, s : store, f : frame, s' : store, a : nat, var_1 : (state, val*), var_0 : (store, globaladdr)}: + `%%%%`(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#5*{expr'#5 <- `expr'*`}, (z'', [val] ++ val'*{val' <- `val'*`})) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#6*{expr'#6 <- `expr'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, gt, val, var_0) -- wf_state: `%`(z'') -- wf_val: `%`(val) -- (wf_val: `%`(val'#3))*{val'#3 <- `val'*`} @@ -15656,14 +18689,23 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) -- if (z' = `%;%`_state(s, f)) - -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z'', val'#4*{val'#4 <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#6*{expr'#6 <- `expr'*`})) + -- if ((s', a) = var_0) + -- if ((z'', val'#4*{val'#4 <- `val'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $instantiate(store : store, module : module, externaddr*) : config +relation fun_instantiate: `%%%%`(store, module, externaddr*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat}(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat, `var_7*` : instr**, `var_6*` : instr**, var_5 : (store, moduleinst), var_4 : (state, ref**), var_3 : (state, ref*), var_2 : (state, val*), var_1 : deftype*, var_0 : deftype*}: + `%%%%`(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}, `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#12*{elem#12 <- `elem*`}[i_E#2], var_7))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_7 <- `var_7*`} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#11*{data#11 <- `data*`}[i_D#2], var_6))^(i_D#2<|data#10*{data#10 <- `data*`}|){var_6 <- `var_6*`} + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_5) + -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_4) + -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_3) + -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_2) + -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_1) + -- fun_alloctypes: `%%`(type#6*{type#6 <- `type*`}, var_0) -- wf_state: `%`(z) -- wf_state: `%`(z') -- (wf_val: `%`(val_G#3))*{val_G#3 <- `val_G*`} @@ -15679,7 +18721,7 @@ def $instantiate(store : store, module : module, externaddr*) : config -- (wf_data: `%`(DATA_data(byte#8*{byte#8 <- `byte*#117`}, datamode#116)))*{`byte*#117` <- `byte**`, datamode#116 <- `datamode*`} -- (wf_elem: `%`(ELEM_elem(reftype#517, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)))*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#517 <- `reftype*`} -- (wf_start: `%`(START_start(x#6)))?{x#6 <- `x?`} - -- wf_moduleinst: `%`({TYPES $alloctypes(type#6*{type#6 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#8*{externaddr#8 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#9*{externaddr#9 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#9*{func#9 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS $globalsxa(externaddr#8*{externaddr#8 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#9*{externaddr#9 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#9*{func#9 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) -- wf_state: `%`(`%;%`_state(s''', f)) -- (wf_uN: `%%`(32, `%`_uN(i_D#1)))^(i_D#1<|data#7*{data#7 <- `data*`}|){} @@ -15693,21 +18735,22 @@ def $instantiate(store : store, module : module, externaddr*) : config -- if (data#9*{data#9 <- `data*`} = DATA_data(byte#9*{byte#9 <- `byte*#119`}, datamode#118)*{`byte*#119` <- `byte**`, datamode#118 <- `datamode*`}) -- if (elem#10*{elem#10 <- `elem*`} = ELEM_elem(reftype#519, expr_E#4*{expr_E#4 <- `expr_E*#4`}, elemmode#239)*{elemmode#239 <- `elemmode*`, `expr_E*#4` <- `expr_E**`, reftype#519 <- `reftype*`}) -- if (start#8?{start#8 <- `start?`} = START_start(x#8)?{x#8 <- `x?`}) - -- if (moduleinst_0 = {TYPES $alloctypes(type#8*{type#8 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#11*{externaddr#11 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#12*{externaddr#12 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#11*{func#11 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- if (moduleinst_0 = {TYPES var_1, TAGS [], GLOBALS $globalsxa(externaddr#11*{externaddr#11 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#12*{externaddr#12 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#11*{func#11 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G#4*{val_G#4 <- `val_G*`}) = $evalglobals(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`})) - -- if ((z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = $evalexprs(z', expr_T#5*{expr_T#5 <- `expr_T*`})) - -- if ((z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = $evalexprss(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`})) + -- if ((z', val_G#4*{val_G#4 <- `val_G*`}) = var_2) + -- if ((z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = var_3) + -- if ((z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = var_4) -- if (z''' = `%;%`_state(s''', f)) - -- if ((s'''', moduleinst) = $allocmodule(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`})) - -- if (instr_D#2*{instr_D#2 <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#2), data#11*{data#11 <- `data*`}[i_D#2])^(i_D#2<|data#10*{data#10 <- `data*`}|){})) - -- if (instr_E#2*{instr_E#2 <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#2), elem#12*{elem#12 <- `elem*`}[i_E#2])^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){})) + -- if ((s'''', moduleinst) = var_5) + -- if (instr_D#2*{instr_D#2 <- `instr_D*`} = $concat_(syntax instr, var_6^(i_D#2<|data#10*{data#10 <- `data*`}|){var_6 <- `var_6*`})) + -- if (instr_E#2*{instr_E#2 <- `instr_E*`} = $concat_(syntax instr, var_7^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_7 <- `var_7*`})) -- if (instr_S#2?{instr_S#2 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $invoke(store : store, funcaddr : funcaddr, val*) : config +relation fun_invoke: `%%%%`(store, funcaddr, val*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val#1*{val#1 <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))]) + rule fun_invoke_case_0{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%%`(s, funcaddr, val#1*{val#1 <- `val*`}, `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val#2)*{val#2 <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#6*{t_1#6 <- `t_1*`}), `%`_resulttype(t_2#6*{t_2#6 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1#7*{t_1#7 <- `t_1*`}), `%`_resulttype(t_2#7*{t_2#7 <- `t_2*`}))) @@ -15771,13 +18814,17 @@ syntax I = idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation fun_concat_idctxt: `%%`(idctxt*, idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule fun_concat_idctxt_case_0: + `%%`([], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 - def $concat_idctxt{I : idctxt, `I'*` : I*}([I] ++ I'#1*{I'#1 <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) + + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule fun_concat_idctxt_case_1{I : idctxt, `I'*` : I*, var_0 : idctxt}: + `%%`([I] ++ I'#1*{I'#1 <- `I'*`}, I +++ var_0) + -- fun_concat_idctxt: `%%`(I'*{I' <- `I'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -16060,12 +19107,15 @@ def $exportsd(decl*) : export* } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec -def $ordered(decl*) : bool +relation fun_ordered: `%%`(decl*, bool) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $ordered{`decl*` : decl*}(decl#1*{decl#1 <- `decl*`}) = true + rule fun_ordered_case_0{`decl*` : decl*}: + `%%`(decl#1*{decl#1 <- `decl*`}, true) -- if ($importsd(decl#2*{decl#2 <- `decl*`}) = []) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $ordered{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*}(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}) = (((((($importsd(decl_1#7*{decl_1#7 <- `decl_1*`}) = []) /\ ($tagsd(decl_1#6*{decl_1#6 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1#5*{decl_1#5 <- `decl_1*`}) = [])) /\ ($memsd(decl_1#4*{decl_1#4 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1#3*{decl_1#3 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1#2*{decl_1#2 <- `decl_1*`}) = [])) + rule fun_ordered_case_1{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*}: + `%%`(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}, (((((($importsd(decl_1#7*{decl_1#7 <- `decl_1*`}) = []) /\ ($tagsd(decl_1#6*{decl_1#6 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1#5*{decl_1#5 <- `decl_1*`}) = [])) /\ ($memsd(decl_1#4*{decl_1#4 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1#3*{decl_1#3 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1#2*{decl_1#2 <- `decl_1*`}) = []))) ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context) @@ -16077,9 +19127,7 @@ relation Context_ok: `|-%:OK`(context) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (wf_context: `%`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{t_1 <- `t_1*`, t_2 <- `t_2*`} -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -16090,8 +19138,6 @@ relation Context_ok: `|-%:OK`(context) -- (Memtype_ok: `%|-%:OK`(C_0, mt))*{mt <- `mt*`} -- (Tabletype_ok: `%|-%:OK`(C_0, tt))*{tt <- `tt*`} -- (Deftype_ok: `%|-%:OK`(C_0, dt_F))*{dt_F <- `dt_F*`} - -- if (|`dt_F*`| = |`t_1*`|) - -- if (|`dt_F*`| = |`t_2*`|) -- (Expand: `%~~%`(dt_F, `FUNC%->%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{dt_F <- `dt_F*`, t_1 <- `t_1*`, t_2 <- `t_2*`} -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- `et*`} -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- `lct*`} @@ -16159,25 +19205,15 @@ relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) -- (wf_externtype: `%`(MEM_externtype(memtype)))*{memtype <- `memtype*`} -- (wf_externtype: `%`(TABLE_externtype(tabletype)))*{tabletype <- `tabletype*`} -- (Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, deftype))*{deftype <- `deftype*`} - -- if (|`tagaddr*`| = |`tagtype*`|) -- (Externaddr_ok: `%|-%:%`(s, TAG_externaddr(tagaddr), TAG_externtype(tagtype)))*{tagaddr <- `tagaddr*`, tagtype <- `tagtype*`} - -- if (|`globaladdr*`| = |`globaltype*`|) -- (Externaddr_ok: `%|-%:%`(s, GLOBAL_externaddr(globaladdr), GLOBAL_externtype(globaltype)))*{globaladdr <- `globaladdr*`, globaltype <- `globaltype*`} - -- if (|`deftype_F*`| = |`funcaddr*`|) -- (Externaddr_ok: `%|-%:%`(s, FUNC_externaddr(funcaddr), FUNC_externtype($typeuse_deftype(deftype_F))))*{deftype_F <- `deftype_F*`, funcaddr <- `funcaddr*`} - -- if (|`memaddr*`| = |`memtype*`|) -- (Externaddr_ok: `%|-%:%`(s, MEM_externaddr(memaddr), MEM_externtype(memtype)))*{memaddr <- `memaddr*`, memtype <- `memtype*`} - -- if (|`tableaddr*`| = |`tabletype*`|) -- (Externaddr_ok: `%|-%:%`(s, TABLE_externaddr(tableaddr), TABLE_externtype(tabletype)))*{tableaddr <- `tableaddr*`, tabletype <- `tabletype*`} - -- if (|`dataaddr*`| = |`datatype*`|) - -- (if (dataaddr < |s.DATAS_store|))*{dataaddr <- `dataaddr*`} -- (Datainst_ok: `%|-%:%`(s, s.DATAS_store[dataaddr], datatype))*{dataaddr <- `dataaddr*`, datatype <- `datatype*`} - -- if (|`elemaddr*`| = |`elemtype*`|) - -- (if (elemaddr < |s.ELEMS_store|))*{elemaddr <- `elemaddr*`} -- (Eleminst_ok: `%|-%:%`(s, s.ELEMS_store[elemaddr], elemtype))*{elemaddr <- `elemaddr*`, elemtype <- `elemtype*`} -- (Exportinst_ok: `%|-%:OK`(s, exportinst))*{exportinst <- `exportinst*`} -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) - -- if (|TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}| > 0) -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16190,7 +19226,6 @@ relation Frame_ok: `%|-%:%`(store, frame, context) -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) - -- if (|`lct*`| = |`val?*`|) -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16270,7 +19305,7 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 - rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: + rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*, var_0 : context?}: `%;%|-%:%`(s, C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- wf_store: `%`(s) -- wf_context: `%`(C) @@ -16278,16 +19313,13 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`t*`|) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`x_1*`|) - -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} - -- if ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}) =/= ?()) - -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, !(var_0), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- fun_with_locals: `%%%%`(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}, var_0) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:47.1-51.33 rule sub{s : store, C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: @@ -16394,7 +19426,6 @@ relation Structinst_ok: `%|-%:OK`(store, structinst) -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`fv*`| = |`zt*`|) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16416,10 +19447,8 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) -- wf_store: `%`(s) -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if (ta < |s.TAGS_store|) -- if ($typeuse_deftype(dt) = s.TAGS_store[ta].TYPE_taginst) -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if (|`t*`| = |`val*`|) -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16440,21 +19469,16 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 rule `ref.struct`{a : addr, s : store, i : nat, `ft*` : fieldtype*, zt : storagetype}: `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) - -- if (i < |s.STRUCTS_store[a].FIELDS_structinst|) - -- if (a < |s.STRUCTS_store|) -- wf_store: `%`(s) -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if (i < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:232.1-234.42 rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) - -- if (i < |s.ARRAYS_store[a].FIELDS_arrayinst|) - -- if (a < |s.ARRAYS_store|) -- wf_store: `%`(s) -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) @@ -16463,8 +19487,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 rule `ref.exn`{a : addr, s : store, i : nat}: `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, $fieldval_val(s.EXNS_store[a].FIELDS_exninst[i])) - -- if (i < |s.EXNS_store[a].FIELDS_exninst|) - -- if (a < |s.EXNS_store|) -- wf_store: `%`(s) -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) @@ -16476,23 +19498,34 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) } ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec -def $NotImmutReachable(fieldval : fieldval, store : store, fieldval : fieldval) : bool +relation fun_NotImmutReachable_before_fun_NotImmutReachable_case_1: `%%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_0{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%`(fv_1, s, fv_2) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation fun_NotImmutReachable: `%%%%`(fieldval, store, fieldval, bool) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = false + rule fun_NotImmutReachable_case_0{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%%`(fv_1, s, fv_2, false) -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = true - -- otherwise + rule fun_NotImmutReachable_case_1{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%%`(fv_1, s, fv_2, true) + -- ~ fun_NotImmutReachable_before_fun_NotImmutReachable_case_1: `%%%`(fv_1, s, fv_2) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: + rule _{fv_1 : fieldval, s : store, fv_2 : fieldval, var_0 : bool}: `~%>>_%%`(fv_1, s, fv_2) -- wf_fieldval: `%`(fv_1) -- wf_store: `%`(s) -- wf_fieldval: `%`(fv_2) - -- if $NotImmutReachable(fv_1, s, fv_2) + -- if var_0 + -- fun_NotImmutReachable: `%%%%`(fv_1, s, fv_2, var_0) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Store_ok: `|-%:OK`(store) @@ -16509,19 +19542,12 @@ relation Store_ok: `|-%:OK`(store) -- (wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} -- (wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} -- wf_store: `%`({TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) - -- if (|`taginst*`| = |`tagtype*`|) -- (Taginst_ok: `%|-%:%`(s, taginst, tagtype))*{taginst <- `taginst*`, tagtype <- `tagtype*`} - -- if (|`globalinst*`| = |`globaltype*`|) -- (Globalinst_ok: `%|-%:%`(s, globalinst, globaltype))*{globalinst <- `globalinst*`, globaltype <- `globaltype*`} - -- if (|`meminst*`| = |`memtype*`|) -- (Meminst_ok: `%|-%:%`(s, meminst, memtype))*{meminst <- `meminst*`, memtype <- `memtype*`} - -- if (|`tableinst*`| = |`tabletype*`|) -- (Tableinst_ok: `%|-%:%`(s, tableinst, tabletype))*{tableinst <- `tableinst*`, tabletype <- `tabletype*`} - -- if (|`deftype*`| = |`funcinst*`|) -- (Funcinst_ok: `%|-%:%`(s, funcinst, deftype))*{deftype <- `deftype*`, funcinst <- `funcinst*`} - -- if (|`datainst*`| = |`datatype*`|) -- (Datainst_ok: `%|-%:%`(s, datainst, datatype))*{datainst <- `datainst*`, datatype <- `datatype*`} - -- if (|`eleminst*`| = |`elemtype*`|) -- (Eleminst_ok: `%|-%:%`(s, eleminst, elemtype))*{eleminst <- `eleminst*`, elemtype <- `elemtype*`} -- (Structinst_ok: `%|-%:OK`(s, structinst))*{structinst <- `structinst*`} -- (Arrayinst_ok: `%|-%:OK`(s, arrayinst))*{arrayinst <- `arrayinst*`} @@ -16601,8 +19627,6 @@ relation Extend_structinst: `%<=%`(structinst, structinst) -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`fv*`| = |`fv'*`|) - -- if (|`fv*`| = |`mut?*`|) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16614,7 +19638,6 @@ relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (|`fv*`| = |`fv'*`|) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16631,35 +19654,15 @@ relation Extend_store: `%<=%`(store, store) `%<=%`(s, s') -- wf_store: `%`(s) -- wf_store: `%`(s') - -- (if (a < |s.TAGS_store|))^(a<|s.TAGS_store|){} - -- (if (a < |s'.TAGS_store|))^(a<|s.TAGS_store|){} -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} - -- (if (a < |s.GLOBALS_store|))^(a<|s.GLOBALS_store|){} - -- (if (a < |s'.GLOBALS_store|))^(a<|s.GLOBALS_store|){} -- (Extend_globalinst: `%<=%`(s.GLOBALS_store[a], s'.GLOBALS_store[a]))^(a<|s.GLOBALS_store|){} - -- (if (a < |s.MEMS_store|))^(a<|s.MEMS_store|){} - -- (if (a < |s'.MEMS_store|))^(a<|s.MEMS_store|){} -- (Extend_meminst: `%<=%`(s.MEMS_store[a], s'.MEMS_store[a]))^(a<|s.MEMS_store|){} - -- (if (a < |s.TABLES_store|))^(a<|s.TABLES_store|){} - -- (if (a < |s'.TABLES_store|))^(a<|s.TABLES_store|){} -- (Extend_tableinst: `%<=%`(s.TABLES_store[a], s'.TABLES_store[a]))^(a<|s.TABLES_store|){} - -- (if (a < |s.FUNCS_store|))^(a<|s.FUNCS_store|){} - -- (if (a < |s'.FUNCS_store|))^(a<|s.FUNCS_store|){} -- (Extend_funcinst: `%<=%`(s.FUNCS_store[a], s'.FUNCS_store[a]))^(a<|s.FUNCS_store|){} - -- (if (a < |s.DATAS_store|))^(a<|s.DATAS_store|){} - -- (if (a < |s'.DATAS_store|))^(a<|s.DATAS_store|){} -- (Extend_datainst: `%<=%`(s.DATAS_store[a], s'.DATAS_store[a]))^(a<|s.DATAS_store|){} - -- (if (a < |s.ELEMS_store|))^(a<|s.ELEMS_store|){} - -- (if (a < |s'.ELEMS_store|))^(a<|s.ELEMS_store|){} -- (Extend_eleminst: `%<=%`(s.ELEMS_store[a], s'.ELEMS_store[a]))^(a<|s.ELEMS_store|){} - -- (if (a < |s.STRUCTS_store|))^(a<|s.STRUCTS_store|){} - -- (if (a < |s'.STRUCTS_store|))^(a<|s.STRUCTS_store|){} -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} - -- (if (a < |s.ARRAYS_store|))^(a<|s.ARRAYS_store|){} - -- (if (a < |s'.ARRAYS_store|))^(a<|s.ARRAYS_store|){} -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} - -- (if (a < |s.EXNS_store|))^(a<|s.EXNS_store|){} - -- (if (a < |s'.EXNS_store|))^(a<|s.EXNS_store|){} -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16753,7 +19756,6 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 @@ -16895,7 +19897,8 @@ grammar BsN(N : N) : sN ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar BiN(N : N) : iN ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN} i:BsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) + prod{i : sN, var_0 : nat} i:BsN(N) => `%`_iN(var_0) + -- fun_inv_signed_: `%%%`(N, $proj_sN_0(i).0, var_0) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar BfN(N : N) : fN @@ -16945,8 +19948,9 @@ grammar Blist(syntax el, grammar BX : el) : el* ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bname : name ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{name : name, `b*` : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name - -- if ($utf8($proj_name_0(name).0) = b*{b <- `b*`}) + prod{name : name, `b*` : byte*, var_0 : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name + -- if (var_0 = b*{b <- `b*`}) + -- fun_utf8: `%%`($proj_name_0(name).0, var_0) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Btypeidx : typeidx @@ -18433,10 +21437,11 @@ grammar Bversion : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmodule : module ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**, var_0 : dataidx*} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} - -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) + -- if ((n?{n <- `n?`} =/= ?()) \/ (var_0 = [])) -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} + -- fun_dataidx_funcs: `%%`(func*{func <- `func*`}, var_0) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec grammar Tchar : char @@ -18607,7 +21612,8 @@ grammar Tstringchar : char ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tstringelem : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tstringchar => $utf8([c]) + prod{c : char, var_0 : byte*} c:Tstringchar => var_0 + -- fun_utf8: `%%`([c], var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] @@ -18620,8 +21626,9 @@ grammar Tstring : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tname : name ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*, `b*` : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) - -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) + prod{`c*` : char*, `b*` : byte*, var_0 : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) + -- if (b*{b <- `b*`} = var_0) + -- fun_utf8: `%%`(c*{c <- `c*`}, var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tid : name @@ -18785,7 +21792,8 @@ grammar TiN(N : N) : iN ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN} i:TsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) + prod{i : sN, var_0 : nat} i:TsN(N) => `%`_iN(var_0) + -- fun_inv_signed_: `%%%`(N, $proj_sN_0(i).0, var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rec { @@ -18844,10 +21852,12 @@ grammar TfNmag(N : N) : fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod "inf" => INF_fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) + prod{var_0 : m} "nan" => NAN_fNmag(var_0) + -- fun_canon_: `%%`(N, var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) - -- if ((1 <= n) /\ (n < (2 ^ !($signif(N))))) + prod{n : n, var_0 : nat?} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + -- if ((1 <= n) /\ (n < (2 ^ !(var_0)))) + -- fun_signif: `%%`(N, var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TfN(N : N) : fN @@ -19115,7 +22125,8 @@ grammar Ttypedef_(I : I) : (subtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Trectype_(I : I) : (rectype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) + prod{`st*` : subtype*, `I'*` : I*, var_0 : idctxt} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), var_0) + -- fun_concat_idctxt: `%%`(I'*{I' <- `I'*`}, var_0) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Taddrtype : addrtype @@ -20302,9 +23313,10 @@ grammar Tlocal_(I : I) : (local*, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tfunc_(I : I) : (func, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I, var_0 : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = I +++ I_1 +++ var_0) -- Idctxt_ok: `|-%:OK`(I') + -- fun_concat_idctxt: `%%`(I_2*{I_2 <- `I_2*`}, var_0) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdatastring : byte* @@ -20465,8 +23477,8 @@ grammar Tdecl_(I : I) : (decl, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmodule : module ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) - -- if (I' = $concat_idctxt(I*{I <- `I*`})) + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I, var_1 : bool, var_0 : idctxt} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + -- if (I' = var_0) -- Idctxt_ok: `|-%:OK`(I') -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) @@ -20479,7 +23491,9 @@ grammar Tmodule : module -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if $ordered(decl*{decl <- `decl*`}) + -- if var_1 + -- fun_ordered: `%%`(decl*{decl <- `decl*`}, var_1) + -- fun_concat_idctxt: `%%`(I*{I <- `I*`}, var_0) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdecldots_(I : I) : (decl, idctxt)* diff --git a/spectec/test-middlend/specification.exp/07-sideconditions.il b/spectec/test-middlend/specification.exp/10-sideconditions.il similarity index 55% rename from spectec/test-middlend/specification.exp/07-sideconditions.il rename to spectec/test-middlend/specification.exp/10-sideconditions.il index d53f991c86..cea5af435d 100644 --- a/spectec/test-middlend/specification.exp/07-sideconditions.il +++ b/spectec/test-middlend/specification.exp/10-sideconditions.il @@ -27,7 +27,7 @@ def $sum(nat*) : nat ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 def $sum([]) = 0 ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 - def $sum{n : nat, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) + def $sum{n : nat, `n'*` : n*}([n] ++ n'#1*{n'#1 <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) } ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec @@ -38,7 +38,7 @@ def $prod(nat*) : nat ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 def $prod([]) = 1 ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 - def $prod{n : nat, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) + def $prod{n : nat, `n'*` : n*}([n] ++ n'#2*{n'#2 <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec @@ -58,7 +58,7 @@ def $concat_(syntax X, X**) : X* ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 def $concat_{syntax X}(syntax X, []) = [] ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 - def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w*{w <- `w*`}] ++ w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) + def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w#1*{w#1 <- `w*`}] ++ w'#1*{w'#1 <- `w'*#1`}*{`w'*#1` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec @@ -69,7 +69,7 @@ def $concatn_(syntax X, X**, nat : nat) : X* ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 def $concatn_{syntax X, n : nat}(syntax X, [], n) = [] ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 - def $concatn_{syntax X, n : nat, `w*` : X*, `w'**` : X**}(syntax X, [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) + def $concatn_{syntax X, n : nat, `w*` : X*, `w'**` : X**}(syntax X, [w#2^n{w#2 <- `w*`}] ++ w'#2^n{w'#2 <- `w'*#2`}*{`w'*#2` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec @@ -77,7 +77,7 @@ def $concatopt_(syntax X, X?*) : X* ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec def $concatopt_{syntax X}(syntax X, []) = [] ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w?{w <- `w?`}] ++ w'?{w' <- `w'?`}*{`w'?` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) + def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w#3?{w#3 <- `w?`}] ++ w'#3?{w'#3 <- `w'?#1`}*{`w'?#1` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec def $inv_concat_(syntax X, X*) : X** @@ -93,7 +93,7 @@ def $disjoint_(syntax X, X*) : bool ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 def $disjoint_{syntax X}(syntax X, []) = true ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 - def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'*{w' <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) + def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'#4*{w'#4 <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec @@ -104,7 +104,7 @@ def $setminus1_(syntax X, X : X, X*) : X* ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 - def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'*{w' <- `w'*`}) = (if (w = w_1) then [] else $setminus1_(syntax X, w, w'*{w' <- `w'*`})) + def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'#5*{w'#5 <- `w'*`}) = (if (w = w_1) then [] else $setminus1_(syntax X, w, w'*{w' <- `w'*`})) } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec @@ -113,9 +113,9 @@ rec { ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 def $setminus_(syntax X, X*, X*) : X* ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 - def $setminus_{syntax X, `w*` : X*}(syntax X, [], w*{w <- `w*`}) = [] + def $setminus_{syntax X, `w*` : X*}(syntax X, [], w#4*{w#4 <- `w*`}) = [] ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 - def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) + def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'#6*{w'#6 <- `w'*`}, w#5*{w#5 <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec @@ -126,7 +126,7 @@ def $setproduct2_(syntax X, X : X, X**) : X** ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 - def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'*{w' <- `w'*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) + def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'#7*{w'#7 <- `w'*`}] ++ w#6*{w#6 <- `w*#1`}*{`w*#1` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec @@ -135,9 +135,9 @@ rec { ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 def $setproduct1_(syntax X, X*, X**) : X** ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 - def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w*{w <- `w*`}*{`w*` <- `w**`}) = [] + def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w#7*{w#7 <- `w*#2`}*{`w*#2` <- `w**`}) = [] ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 - def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) + def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'#8*{w'#8 <- `w'*`}, w#8*{w#8 <- `w*#3`}*{`w*#3` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec @@ -148,7 +148,7 @@ def $setproduct_(syntax X, X**) : X** ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 def $setproduct_{syntax X}(syntax X, []) = [[]] ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 - def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1*{w_1 <- `w_1*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) + def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1#1*{w_1#1 <- `w_1*`}] ++ w#9*{w#9 <- `w*#4`}*{`w*#4` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) } ;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec @@ -244,32 +244,70 @@ syntax i64 = iN syntax i128 = iN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $signif(N : N) : nat? +relation fun_signif_before_fun_signif_case_2: `%`(N) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(32) = ?(23) + rule fun_signif_case_1: + `%`(64) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(64) = ?(52) - def $signif{x0 : N}(x0) = ?() - -- otherwise + rule fun_signif_case_0: + `%`(32) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $expon(N : N) : nat? +relation fun_signif: `%%`(N, nat?) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(32) = ?(8) + rule fun_signif_case_0: + `%%`(32, ?(23)) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(64) = ?(11) - def $expon{x0 : N}(x0) = ?() - -- otherwise + rule fun_signif_case_1: + `%%`(64, ?(52)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_signif_case_2{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_signif_before_fun_signif_case_2: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_expon_before_fun_expon_case_2: `%`(N) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_1: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_0: + `%`(32) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_expon: `%%`(N, nat?) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_0: + `%%`(32, ?(8)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_1: + `%%`(64, ?(11)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_2{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_expon_before_fun_expon_case_2: `%`(x0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $M(N : N) : nat +relation fun_M: `%%`(N, nat) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $M{N : nat}(N) = !($signif(N)) + rule fun_M_case_0{N : nat, var_0 : nat?}: + `%%`(N, !(var_0)) + -- if (var_0 =/= ?()) + -- fun_signif: `%%`(N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $E(N : N) : nat +relation fun_E: `%%`(N, nat) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $E{N : nat}(N) = !($expon(N)) + rule fun_E_case_0{N : nat, var_0 : nat?}: + `%%`(N, !(var_0)) + -- if (var_0 =/= ?()) + -- fun_expon: `%%`(N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax exp = int @@ -284,23 +322,28 @@ syntax fNmag = ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_fNmag: `%%`(N, fNmag) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_0{N : N, m : m, exp : exp}: + rule fNmag_case_0{N : N, m : m, exp : exp, var_1 : nat, var_0 : nat}: `%%`(N, NORM_fNmag(m, exp)) - -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + -- if ((m < (2 ^ var_0)) /\ ((((2 : nat <:> int) - ((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + -- fun_E: `%%`(N, var_1) + -- fun_M: `%%`(N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_1{N : N, exp : exp, m : m}: + rule fNmag_case_1{N : N, exp : exp, m : m, var_1 : nat, var_0 : nat}: `%%`(N, SUBNORM_fNmag(m)) - -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) + -- if ((m < (2 ^ var_0)) /\ (((2 : nat <:> int) - ((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) + -- fun_E: `%%`(N, var_1) + -- fun_M: `%%`(N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rule fNmag_case_2{N : N}: `%%`(N, INF_fNmag) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_3{N : N, m : m}: + rule fNmag_case_3{N : N, m : m, var_0 : nat}: `%%`(N, NAN_fNmag(m)) - -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) + -- if ((1 <= m) /\ (m < (2 ^ var_0))) + -- fun_M: `%%`(N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax fN = @@ -326,27 +369,33 @@ syntax f32 = fN syntax f64 = fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fzero(N : N) : fN +relation fun_fzero: `%%`(N, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + rule fun_fzero_case_0{N : nat}: + `%%`(N, POS_fN(SUBNORM_fNmag(0))) -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fnat(N : N, nat : nat) : fN +relation fun_fnat: `%%%`(N, nat, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + rule fun_fnat_case_0{N : nat, n : nat}: + `%%%`(N, n, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fone(N : N) : fN +relation fun_fone: `%%`(N, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + rule fun_fone_case_0{N : nat}: + `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $canon_(N : N) : nat +relation fun_canon_: `%%`(N, nat) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + rule fun_canon__case_0{N : nat, var_0 : nat?}: + `%%`(N, (2 ^ (((!(var_0) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + -- if (var_0 =/= ?()) + -- fun_signif: `%%`(N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax vN = uN @@ -381,45 +430,63 @@ relation wf_char: `%`(char) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -def $cont(byte : byte) : nat +relation fun_cont: `%%`(byte, nat) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $cont{b : byte}(b) = ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) + rule fun_cont_case_0{b : byte}: + `%%`(b, ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat)) -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 -def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 - def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 - def $utf8{ch : char, b : byte}([ch]) = [b] +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation fun_utf8: `%%`(char*, byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_0{`ch*` : char*, `var_0*` : byte**}: + `%%`(ch#1*{ch#1 <- `ch*`}, $concat_(syntax byte, var_0*{var_0 <- `var_0*`})) + -- if (|`var_0*`| = |`ch*`|) + -- (fun_utf8: `%%`([ch], var_0))*{var_0 <- `var_0*`, ch <- `ch*`} + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_1{ch : char, b : byte}: + `%%`([ch], [b]) -- wf_byte: `%`(b) -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) -- if ($proj_char_0(ch).0 < 128) -- if (`%`_byte($proj_char_0(ch).0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 - def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: + `%%`([ch], [b_1 b_2]) + -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) - -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3]) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) - -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * var_0)) + var_1)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_4{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, var_2 : nat, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3 b_4]) + -- fun_cont: `%%`(b_4, var_2) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- wf_byte: `%`(b_3) -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) - -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) + -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * var_0)) + ((2 ^ 6) * var_1)) + var_2)) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -434,10 +501,11 @@ def $proj_name_0(x : name) : (char*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_name: `%`(name) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule name_case_0{`char*` : char*}: + rule name_case_0{`char*` : char*, var_0 : byte*}: `%`(`%`_name(`char*`)) -- (wf_char: `%`(char))*{char <- `char*`} - -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) + -- if (|var_0| < (2 ^ 32)) + -- fun_utf8: `%%`(char*{char <- `char*`}, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax idx = u32 @@ -521,9 +589,9 @@ def $funcsxx(externidx*) : typeidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 def $funcsxx([]) = [] ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 - def $funcsxx{x : uN, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) + def $funcsxx{x : uN, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx#1*{xx#1 <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 - def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) + def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#2*{xx#2 <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -534,9 +602,9 @@ def $globalsxx(externidx*) : globalidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 def $globalsxx([]) = [] ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 - def $globalsxx{x : uN, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) + def $globalsxx{x : uN, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx#3*{xx#3 <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 - def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) + def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#4*{xx#4 <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -547,9 +615,9 @@ def $tablesxx(externidx*) : tableidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 def $tablesxx([]) = [] ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 - def $tablesxx{x : uN, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) + def $tablesxx{x : uN, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx#5*{xx#5 <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 - def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) + def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#6*{xx#6 <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -560,9 +628,9 @@ def $memsxx(externidx*) : memidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 def $memsxx([]) = [] ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 - def $memsxx{x : uN, `xx*` : externidx*}([MEM_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) + def $memsxx{x : uN, `xx*` : externidx*}([MEM_externidx(x)] ++ xx#7*{xx#7 <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 - def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) + def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#8*{xx#8 <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -573,9 +641,9 @@ def $tagsxx(externidx*) : tagidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 def $tagsxx([]) = [] ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 - def $tagsxx{x : uN, `xx*` : externidx*}([TAG_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) + def $tagsxx{x : uN, `xx*` : externidx*}([TAG_externidx(x)] ++ xx#9*{xx#9 <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 - def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) + def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#10*{xx#10 <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -610,97 +678,128 @@ relation wf_free: `%`(free) -- (wf_uN: `%%`(32, var_9))*{var_9 <- var_9} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_opt(free?) : free +relation fun_free_opt: `%%`(free?, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_opt_case_0: + `%%`(?(), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt{free : free}(?(free)) = free + rule fun_free_opt_case_1{free : free}: + `%%`(?(free), free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.1-173.29 -def $free_list(free*) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 - def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation fun_free_list: `%%`(free*, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule fun_free_list_case_0: + `%%`([], {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 - def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule fun_free_list_case_1{free : free, `free'*` : free*, var_0 : free}: + `%%`([free] ++ free'#1*{free'#1 <- `free'*`}, free +++ var_0) + -- fun_free_list: `%%`(free'*{free' <- `free'*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_typeidx(typeidx : typeidx) : free +relation fun_free_typeidx: `%%`(typeidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_typeidx_case_0{typeidx : uN}: + `%%`(typeidx, {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_funcidx(funcidx : funcidx) : free +relation fun_free_funcidx: `%%`(funcidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_funcidx_case_0{funcidx : uN}: + `%%`(funcidx, {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_globalidx(globalidx : globalidx) : free +relation fun_free_globalidx: `%%`(globalidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_globalidx_case_0{globalidx : uN}: + `%%`(globalidx, {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_tableidx(tableidx : tableidx) : free +relation fun_free_tableidx: `%%`(tableidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_tableidx_case_0{tableidx : uN}: + `%%`(tableidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_memidx(memidx : memidx) : free +relation fun_free_memidx: `%%`(memidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_memidx_case_0{memidx : uN}: + `%%`(memidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_elemidx(elemidx : elemidx) : free +relation fun_free_elemidx: `%%`(elemidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_elemidx_case_0{elemidx : uN}: + `%%`(elemidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_dataidx(dataidx : dataidx) : free +relation fun_free_dataidx: `%%`(dataidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} + rule fun_free_dataidx_case_0{dataidx : uN}: + `%%`(dataidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_localidx(localidx : localidx) : free +relation fun_free_localidx: `%%`(localidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} + rule fun_free_localidx_case_0{localidx : uN}: + `%%`(localidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_labelidx(labelidx : labelidx) : free +relation fun_free_labelidx: `%%`(labelidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} + rule fun_free_labelidx_case_0{labelidx : uN}: + `%%`(labelidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_tagidx(tagidx : tagidx) : free +relation fun_free_tagidx: `%%`(tagidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_tagidx{tagidx : uN}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} + rule fun_free_tagidx_case_0{tagidx : uN}: + `%%`(tagidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_externidx(externidx : externidx) : free +relation fun_free_externidx: `%%`(externidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{funcidx : uN}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) + rule fun_free_externidx_case_0{funcidx : uN, var_0 : free}: + `%%`(FUNC_externidx(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{globalidx : uN}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) + rule fun_free_externidx_case_1{globalidx : uN, var_0 : free}: + `%%`(GLOBAL_externidx(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) + rule fun_free_externidx_case_2{tableidx : uN, var_0 : free}: + `%%`(TABLE_externidx(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + rule fun_free_externidx_case_3{memidx : uN, var_0 : free}: + `%%`(MEM_externidx(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) + rule fun_free_externidx_case_4{tagidx : uN, var_0 : free}: + `%%`(TAG_externidx(tagidx), var_0) + -- fun_free_tagidx: `%%`(tagidx, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -718,6 +817,10 @@ syntax numtype = | F32 | F64 +def $numtype_addrtype(addrtype) : numtype + def $numtype_addrtype(I32_addrtype) = I32_numtype + def $numtype_addrtype(I64_addrtype) = I64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax vectype = | V128 @@ -730,6 +833,12 @@ syntax consttype = | F64 | V128 +def $consttype_numtype(numtype) : consttype + def $consttype_numtype(I32_numtype) = I32_consttype + def $consttype_numtype(I64_numtype) = I64_consttype + def $consttype_numtype(F32_numtype) = F32_consttype + def $consttype_numtype(F64_numtype) = F64_consttype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax absheaptype = | ANY @@ -826,6 +935,64 @@ syntax rectype = | REC(list(syntax subtype)) } +def $heaptype_absheaptype(absheaptype) : heaptype + def $heaptype_absheaptype(ANY_absheaptype) = ANY_heaptype + def $heaptype_absheaptype(EQ_absheaptype) = EQ_heaptype + def $heaptype_absheaptype(I31_absheaptype) = I31_heaptype + def $heaptype_absheaptype(STRUCT_absheaptype) = STRUCT_heaptype + def $heaptype_absheaptype(ARRAY_absheaptype) = ARRAY_heaptype + def $heaptype_absheaptype(NONE_absheaptype) = NONE_heaptype + def $heaptype_absheaptype(FUNC_absheaptype) = FUNC_heaptype + def $heaptype_absheaptype(NOFUNC_absheaptype) = NOFUNC_heaptype + def $heaptype_absheaptype(EXN_absheaptype) = EXN_heaptype + def $heaptype_absheaptype(NOEXN_absheaptype) = NOEXN_heaptype + def $heaptype_absheaptype(EXTERN_absheaptype) = EXTERN_heaptype + def $heaptype_absheaptype(NOEXTERN_absheaptype) = NOEXTERN_heaptype + def $heaptype_absheaptype(BOT_absheaptype) = BOT_heaptype + +def $valtype_addrtype(addrtype) : valtype + def $valtype_addrtype(I32_addrtype) = I32_valtype + def $valtype_addrtype(I64_addrtype) = I64_valtype + +def $storagetype_consttype(consttype) : storagetype + def $storagetype_consttype(I32_consttype) = I32_storagetype + def $storagetype_consttype(I64_consttype) = I64_storagetype + def $storagetype_consttype(F32_consttype) = F32_storagetype + def $storagetype_consttype(F64_consttype) = F64_storagetype + def $storagetype_consttype(V128_consttype) = V128_storagetype + +def $storagetype_numtype(numtype) : storagetype + def $storagetype_numtype(I32_numtype) = I32_storagetype + def $storagetype_numtype(I64_numtype) = I64_storagetype + def $storagetype_numtype(F32_numtype) = F32_storagetype + def $storagetype_numtype(F64_numtype) = F64_storagetype + +def $valtype_numtype(numtype) : valtype + def $valtype_numtype(I32_numtype) = I32_valtype + def $valtype_numtype(I64_numtype) = I64_valtype + def $valtype_numtype(F32_numtype) = F32_valtype + def $valtype_numtype(F64_numtype) = F64_valtype + +def $heaptype_typeuse(typeuse) : heaptype + def $heaptype_typeuse{x0 : typeidx}(_IDX_typeuse(x0)) = _IDX_heaptype(x0) + def $heaptype_typeuse{x0 : rectype, x1 : n}(_DEF_typeuse(x0, x1)) = _DEF_heaptype(x0, x1) + def $heaptype_typeuse{x0 : n}(REC_typeuse(x0)) = REC_heaptype(x0) + +def $storagetype_valtype(valtype) : storagetype + def $storagetype_valtype(I32_valtype) = I32_storagetype + def $storagetype_valtype(I64_valtype) = I64_storagetype + def $storagetype_valtype(F32_valtype) = F32_storagetype + def $storagetype_valtype(F64_valtype) = F64_storagetype + def $storagetype_valtype(V128_valtype) = V128_storagetype + def $storagetype_valtype{x0 : null?, x1 : heaptype}(REF_valtype(x0, x1)) = REF_storagetype(x0, x1) + def $storagetype_valtype(BOT_valtype) = BOT_storagetype + +def $storagetype_vectype(vectype) : storagetype + def $storagetype_vectype(V128_vectype) = V128_storagetype + +def $valtype_vectype(vectype) : valtype + def $valtype_vectype(V128_vectype) = V128_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { @@ -1016,11 +1183,21 @@ relation wf_subtype: `%`(subtype) syntax deftype = | _DEF(rectype : rectype, n : n) +def $heaptype_deftype(deftype) : heaptype + def $heaptype_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_heaptype(x0, x1) + +def $typeuse_deftype(deftype) : typeuse + def $typeuse_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_typeuse(x0, x1) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax typevar = | _IDX(typeidx : typeidx) | REC(n : n) +def $typeuse_typevar(typevar) : typeuse + def $typeuse_typevar{x0 : typeidx}(_IDX_typevar(x0)) = _IDX_typeuse(x0) + def $typeuse_typevar{x0 : n}(REC_typevar(x0)) = REC_typeuse(x0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation wf_typevar: `%`(typevar) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1036,6 +1213,12 @@ relation wf_typevar: `%`(typevar) syntax reftype = | REF(`null?` : null?, heaptype : heaptype) +def $storagetype_reftype(reftype) : storagetype + def $storagetype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_storagetype(x0, x1) + +def $valtype_reftype(reftype) : valtype + def $valtype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_valtype(x0, x1) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation wf_reftype: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1051,6 +1234,10 @@ syntax Fnn = | F32 | F64 +def $numtype_Fnn(Fnn) : numtype + def $numtype_Fnn(F32_Fnn) = F32_numtype + def $numtype_Fnn(F64_Fnn) = F64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Vnn = vectype @@ -1063,75 +1250,87 @@ syntax Cnn = | V128 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $ANYREF : reftype +relation fun_ANYREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + rule fun_ANYREF_case_0: + `%`(REF_reftype(?(NULL_null), ANY_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EQREF : reftype +relation fun_EQREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + rule fun_EQREF_case_0: + `%`(REF_reftype(?(NULL_null), EQ_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $I31REF : reftype +relation fun_I31REF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + rule fun_I31REF_case_0: + `%`(REF_reftype(?(NULL_null), I31_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $STRUCTREF : reftype +relation fun_STRUCTREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + rule fun_STRUCTREF_case_0: + `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $ARRAYREF : reftype +relation fun_ARRAYREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + rule fun_ARRAYREF_case_0: + `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FUNCREF : reftype +relation fun_FUNCREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + rule fun_FUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EXNREF : reftype +relation fun_EXNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + rule fun_EXNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EXTERNREF : reftype +relation fun_EXTERNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + rule fun_EXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLREF : reftype +relation fun_NULLREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + rule fun_NULLREF_case_0: + `%`(REF_reftype(?(NULL_null), NONE_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLFUNCREF : reftype +relation fun_NULLFUNCREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + rule fun_NULLFUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLEXNREF : reftype +relation fun_NULLEXNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + rule fun_NULLEXNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLEXTERNREF : reftype +relation fun_NULLEXTERNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + rule fun_NULLEXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1139,6 +1338,10 @@ syntax packtype = | I8 | I16 +def $storagetype_packtype(packtype) : storagetype + def $storagetype_packtype(I8_packtype) = I8_storagetype + def $storagetype_packtype(I16_packtype) = I16_storagetype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax lanetype = | I32 @@ -1148,6 +1351,24 @@ syntax lanetype = | I8 | I16 +def $lanetype_Fnn(Fnn) : lanetype + def $lanetype_Fnn(F32_Fnn) = F32_lanetype + def $lanetype_Fnn(F64_Fnn) = F64_lanetype + +def $lanetype_addrtype(addrtype) : lanetype + def $lanetype_addrtype(I32_addrtype) = I32_lanetype + def $lanetype_addrtype(I64_addrtype) = I64_lanetype + +def $lanetype_numtype(numtype) : lanetype + def $lanetype_numtype(I32_numtype) = I32_lanetype + def $lanetype_numtype(I64_numtype) = I64_lanetype + def $lanetype_numtype(F32_numtype) = F32_lanetype + def $lanetype_numtype(F64_numtype) = F64_lanetype + +def $lanetype_packtype(packtype) : lanetype + def $lanetype_packtype(I8_packtype) = I8_lanetype + def $lanetype_packtype(I16_packtype) = I16_lanetype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Pnn = packtype @@ -1158,6 +1379,16 @@ syntax Jnn = | I8 | I16 +def $lanetype_Jnn(Jnn) : lanetype + def $lanetype_Jnn(I32_Jnn) = I32_lanetype + def $lanetype_Jnn(I64_Jnn) = I64_lanetype + def $lanetype_Jnn(I8_Jnn) = I8_lanetype + def $lanetype_Jnn(I16_Jnn) = I16_lanetype + +def $Jnn_addrtype(addrtype) : Jnn + def $Jnn_addrtype(I32_addrtype) = I32_Jnn + def $Jnn_addrtype(I64_addrtype) = I64_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Lnn = lanetype @@ -1264,35 +1495,95 @@ relation wf_moduletype: `%`(moduletype) -- (wf_externtype: `%`(`externtype*_0`))*{`externtype*_0` <- `externtype*_0`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $IN(N : N) : Inn? +relation fun_IN_before_fun_IN_case_2: `%`(N) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(32) = ?(I32_Inn) + rule fun_IN_case_1: + `%`(64) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(64) = ?(I64_Inn) - def $IN{x0 : N}(x0) = ?() - -- otherwise + rule fun_IN_case_0: + `%`(32) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FN(N : N) : Fnn? +relation fun_IN: `%%`(N, Inn?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(32) = ?(F32_Fnn) + rule fun_IN_case_0: + `%%`(32, ?(I32_Inn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(64) = ?(F64_Fnn) - def $FN{x0 : N}(x0) = ?() - -- otherwise + rule fun_IN_case_1: + `%%`(64, ?(I64_Inn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_IN_case_2{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_IN_before_fun_IN_case_2: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $JN(N : N) : Jnn? +relation fun_FN_before_fun_FN_case_2: `%`(N) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(8) = ?(I8_Jnn) + rule fun_FN_case_1: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_FN_case_0: + `%`(32) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_FN: `%%`(N, Fnn?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(16) = ?(I16_Jnn) + rule fun_FN_case_0: + `%%`(32, ?(F32_Fnn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(32) = ?(I32_Jnn) + rule fun_FN_case_1: + `%%`(64, ?(F64_Fnn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(64) = ?(I64_Jnn) - def $JN{x0 : N}(x0) = ?() - -- otherwise + rule fun_FN_case_2{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_FN_before_fun_FN_case_2: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_JN_before_fun_JN_case_4: `%`(N) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_3: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_2: + `%`(32) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_1: + `%`(16) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_0: + `%`(8) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_JN: `%%`(N, Jnn?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_0: + `%%`(8, ?(I8_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_1: + `%%`(16, ?(I16_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_2: + `%%`(32, ?(I32_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_3: + `%%`(64, ?(I64_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_4{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_JN_before_fun_JN_case_4: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $size(numtype : numtype) : nat @@ -1320,62 +1611,162 @@ def $psize(packtype : packtype) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $lsize(lanetype : lanetype) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lsize{numtype : numtype}((numtype : numtype <: lanetype)) = $size(numtype) + def $lsize(I32_lanetype) = $size(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I64_lanetype) = $size(I64_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lsize{packtype : packtype}((packtype : packtype <: lanetype)) = $psize(packtype) + def $lsize(F32_lanetype) = $size(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F64_lanetype) = $size(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I8_lanetype) = $psize(I8_packtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I16_lanetype) = $psize(I16_packtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $zsize(storagetype : storagetype) : nat? +relation fun_zsize_before_fun_zsize_case_7: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_6: + `%`(I16_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = ?($size(numtype)) + rule fun_zsize_case_5: + `%`(I8_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = ?($vsize(vectype)) + rule fun_zsize_case_4: + `%`(V128_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = ?($psize(packtype)) - def $zsize{x0 : storagetype}(x0) = ?() - -- otherwise + rule fun_zsize_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_0: + `%`(I32_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_zsize: `%%`(storagetype, nat?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_0: + `%%`(I32_storagetype, ?($size(I32_numtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_1: + `%%`(I64_storagetype, ?($size(I64_numtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_2: + `%%`(F32_storagetype, ?($size(F32_numtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_3: + `%%`(F64_storagetype, ?($size(F64_numtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_4: + `%%`(V128_storagetype, ?($vsize(V128_vectype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_5: + `%%`(I8_storagetype, ?($psize(I8_packtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_6: + `%%`(I16_storagetype, ?($psize(I16_packtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_7{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_zsize_before_fun_zsize_case_7: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $isize(Inn : Inn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $isize{Inn : addrtype}(Inn) = $size((Inn : addrtype <: numtype)) + def $isize{Inn : addrtype}(Inn) = $size($numtype_addrtype(Inn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $jsize(Jnn : Jnn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $jsize{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) + def $jsize{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $fsize(Fnn : Fnn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $fsize{Fnn : Fnn}(Fnn) = $size((Fnn : Fnn <: numtype)) + def $fsize{Fnn : Fnn}(Fnn) = $size($numtype_Fnn(Fnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $inv_isize(nat : nat) : Inn? +relation fun_inv_isize_before_fun_inv_isize_case_2: `%`(nat) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_isize(32) = ?(I32_Inn) + rule fun_inv_isize_case_1: + `%`(64) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_isize(64) = ?(I64_Inn) - def $inv_isize{x0 : nat}(x0) = ?() - -- otherwise + rule fun_inv_isize_case_0: + `%`(32) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $inv_jsize(nat : nat) : Jnn? +relation fun_inv_isize: `%%`(nat, Inn?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize(8) = ?(I8_Jnn) + rule fun_inv_isize_case_0: + `%%`(32, ?(I32_Inn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize(16) = ?(I16_Jnn) + rule fun_inv_isize_case_1: + `%%`(64, ?(I64_Inn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{n : nat}(n) = (iter_val#1 : addrtype <: Jnn)?{iter_val#1 <- $inv_isize(n)} + rule fun_inv_isize_case_2{x0 : nat}: + `%%`(x0, ?()) + -- ~ fun_inv_isize_before_fun_inv_isize_case_2: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $inv_fsize(nat : nat) : Fnn? +relation fun_inv_jsize: `%%`(nat, Jnn?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_fsize(32) = ?(F32_Fnn) + rule fun_inv_jsize_case_0: + `%%`(8, ?(I8_Jnn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_fsize(64) = ?(F64_Fnn) - def $inv_fsize{x0 : nat}(x0) = ?() - -- otherwise + rule fun_inv_jsize_case_1: + `%%`(16, ?(I16_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_jsize_case_2{n : nat, var_0 : Inn?}: + `%%`(n, $Jnn_addrtype(iter_val#1)?{iter_val#1 <- var_0}) + -- fun_inv_isize: `%%`(n, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_inv_fsize_before_fun_inv_fsize_case_2: `%`(nat) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_1: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_0: + `%`(32) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_inv_fsize: `%%`(nat, Fnn?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_0: + `%%`(32, ?(F32_Fnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_1: + `%%`(64, ?(F64_Fnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_2{x0 : nat}: + `%%`(x0, ?()) + -- ~ fun_inv_fsize_before_fun_inv_fsize_case_2: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $sizenn(numtype : numtype) : nat @@ -1420,591 +1811,1313 @@ def $lsizenn2(lanetype : lanetype) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $jsizenn(Jnn : Jnn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $jsizenn{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) + def $jsizenn{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $inv_jsizenn(nat : nat) : Jnn? +relation fun_inv_jsizenn: `%%`(nat, Jnn?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsizenn{n : nat}(n) = $inv_jsize(n) + rule fun_inv_jsizenn_case_0{n : nat, var_0 : Jnn?}: + `%%`(n, var_0) + -- fun_inv_jsize: `%%`(n, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $lunpack(lanetype : lanetype) : numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lunpack{numtype : numtype}((numtype : numtype <: lanetype)) = numtype + def $lunpack(I32_lanetype) = I32_numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lunpack{packtype : packtype}((packtype : packtype <: lanetype)) = I32_numtype - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $unpack(storagetype : storagetype) : valtype + def $lunpack(I64_lanetype) = I64_numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype + def $lunpack(F32_lanetype) = F32_numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype - -- wf_valtype: `%`(I32_valtype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $nunpack(storagetype : storagetype) : numtype? + def $lunpack(F64_lanetype) = F64_numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack{numtype : numtype}((numtype : numtype <: storagetype)) = ?(numtype) + def $lunpack(I8_lanetype) = I32_numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack{packtype : packtype}((packtype : packtype <: storagetype)) = ?(I32_numtype) - def $nunpack{x0 : storagetype}(x0) = ?() - -- otherwise + def $lunpack(I16_lanetype) = I32_numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $vunpack(storagetype : storagetype) : vectype? +relation fun_unpack: `%%`(storagetype, valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $vunpack{vectype : vectype}((vectype : vectype <: storagetype)) = ?(vectype) - def $vunpack{x0 : storagetype}(x0) = ?() - -- otherwise + rule fun_unpack_case_0: + `%%`(BOT_storagetype, BOT_valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $cunpack(storagetype : storagetype) : consttype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack{consttype : consttype}((consttype : consttype <: storagetype)) = ?(consttype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack{packtype : packtype}((packtype : packtype <: storagetype)) = ?(I32_consttype) + rule fun_unpack_case_1{`null?` : null?, heaptype : heaptype}: + `%%`(REF_storagetype(`null?`, heaptype), REF_valtype(`null?`, heaptype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack{lanetype : lanetype}((lanetype : lanetype <: storagetype)) = ?(($lunpack(lanetype) : numtype <: consttype)) - def $cunpack{x0 : storagetype}(x0) = ?() - -- otherwise + rule fun_unpack_case_2: + `%%`(V128_storagetype, V128_valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size((at_1 : addrtype <: numtype)) <= $size((at_2 : addrtype <: numtype))) then at_1 else at_2) + rule fun_unpack_case_3: + `%%`(F64_storagetype, F64_valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + rule fun_unpack_case_4: + `%%`(F32_storagetype, F32_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) + rule fun_unpack_case_5: + `%%`(I64_storagetype, I64_valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $as_deftype(typeuse : typeuse) : deftype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = ?(dt) - def $as_deftype{x0 : typeuse}(x0) = ?() - -- otherwise + rule fun_unpack_case_6: + `%%`(I32_storagetype, I32_valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_7: + `%%`(I8_storagetype, I32_valtype) + -- wf_valtype: `%`(I32_valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 -def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 - def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 - def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 - def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) -} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_8: + `%%`(I16_storagetype, I32_valtype) + -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { +relation fun_nunpack_before_fun_nunpack_case_6: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_5: + `%`(I16_storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 -def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 - def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 - def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 - def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) -} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_4: + `%`(I8_storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_3: + `%`(F64_storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 -def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 - def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 - def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 - def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) -} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_2: + `%`(F32_storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_1: + `%`(I64_storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 -def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 - def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 - def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 - def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) -} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_0: + `%`(I32_storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 -def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 - def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 - def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 - def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) -} +relation fun_nunpack: `%%`(storagetype, numtype?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_0: + `%%`(I32_storagetype, ?(I32_numtype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_1: + `%%`(I64_storagetype, ?(I64_numtype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.126 -def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 - def $subst_typevar{tv : typevar}(tv, [], []) = ?((tv : typevar <: typeuse)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 - def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = (if (tv = tv_1) then tu_1 else iter_val#2)?{iter_val#2 <- $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})} - def $subst_typevar{x0 : typevar, x1 : typevar*, x2 : typeuse*}(x0, x1, x2) = ?() - -- otherwise -} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_2: + `%%`(F32_storagetype, ?(F32_numtype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_3: + `%%`(F64_storagetype, ?(F64_numtype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.73 -def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 - def $minus_recs([], []) = ?(([], [])) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 - def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 - def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- wf_typevar: `%`(_IDX_typevar(x)) - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - def $minus_recs{x0 : typevar*, x1 : typeuse*}(x0, x1) = ?() - -- otherwise -} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_4: + `%%`(I8_storagetype, ?(I32_numtype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = pt + rule fun_nunpack_case_5: + `%%`(I16_storagetype, ?(I32_numtype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = nt + rule fun_nunpack_case_6{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_nunpack_before_fun_nunpack_case_6: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype +relation fun_vunpack_before_fun_vunpack_case_1: `%`(storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = vt + rule fun_vunpack_case_0: + `%`(V128_storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 -def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 - def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = !($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 - def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 -def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = (!($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) : typeuse <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 - def $subst_heaptype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 - def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 -def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 - def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 -def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 - def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 - def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) +relation fun_vunpack: `%%`(storagetype, vectype?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_vunpack_case_0: + `%%`(V128_storagetype, ?(V128_vectype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 -def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 - def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 -def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 - def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 -def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 - def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 - def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 - def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 -def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 - def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 -def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 - def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 -def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 - def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) -} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_vunpack_case_1{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_vunpack_before_fun_vunpack_case_1: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype +relation fun_cunpack_before_fun_cunpack_case_13: `%`(storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = at + rule fun_cunpack_case_12: + `%`(I16_storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + rule fun_cunpack_case_11: + `%`(I8_storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_cunpack_case_10: + `%`(F64_storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + rule fun_cunpack_case_9: + `%`(F32_storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_cunpack_case_8: + `%`(I64_storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_cunpack_case_7: + `%`(I32_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_cunpack_case_6: + `%`(I16_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_cunpack_case_5: + `%`(I8_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_cunpack_case_4: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_0: + `%`(I32_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_cunpack: `%%`(storagetype, consttype?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_0: + `%%`(I32_storagetype, ?(I32_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_1: + `%%`(I64_storagetype, ?(I64_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_2: + `%%`(F32_storagetype, ?(F32_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_3: + `%%`(F64_storagetype, ?(F64_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_4: + `%%`(V128_storagetype, ?(V128_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_5: + `%%`(I8_storagetype, ?(I32_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_6: + `%%`(I16_storagetype, ?(I32_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_7: + `%%`(I32_storagetype, ?($consttype_numtype($lunpack(I32_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_8: + `%%`(I64_storagetype, ?($consttype_numtype($lunpack(I64_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_9: + `%%`(F32_storagetype, ?($consttype_numtype($lunpack(F32_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_10: + `%%`(F64_storagetype, ?($consttype_numtype($lunpack(F64_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_11: + `%%`(I8_storagetype, ?($consttype_numtype($lunpack(I8_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_12: + `%%`(I16_storagetype, ?($consttype_numtype($lunpack(I16_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_13{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_cunpack_before_fun_cunpack_case_13: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size($numtype_addrtype(at_1)) <= $size($numtype_addrtype(at_2))) then at_1 else at_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_diffrt: `%%%`(reftype, reftype, reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_diffrt_case_0{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1#1?{null_1#1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2), REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_diffrt_case_1{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1#2?{null_1#2 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2), REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) + -- wf_reftype: `%`(REF_reftype(null_1#3?{null_1#3 <- `null_1?`}, ht_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_as_deftype_before_fun_as_deftype_case_1: `%`(typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_as_deftype_case_0{rectype : rectype, n : n}: + `%`(_DEF_typeuse(rectype, n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_as_deftype: `%%`(typeuse, deftype?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_as_deftype_case_0{rectype : rectype, n : n}: + `%%`(_DEF_typeuse(rectype, n), ?(_DEF_deftype(rectype, n))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_as_deftype_case_1{x0 : typeuse}: + `%%`(x0, ?()) + -- ~ fun_as_deftype_before_fun_as_deftype_case_1: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +def $tagsxt(externtype*) : tagtype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + def $tagsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt#1*{xt#1 <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#2*{xt#2 <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +def $globalsxt(externtype*) : globaltype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + def $globalsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt#3*{xt#3 <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#4*{xt#4 <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +def $memsxt(externtype*) : memtype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + def $memsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt#5*{xt#5 <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#6*{xt#6 <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +def $tablesxt(externtype*) : tabletype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + def $tablesxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt#7*{xt#7 <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#8*{xt#8 <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +def $funcsxt(externtype*) : deftype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + def $funcsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + def $funcsxt{rectype : rectype, n : n, `xt*` : externtype*}([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt#9*{xt#9 <- `xt*`}) = [_DEF_deftype(rectype, n)] ++ $funcsxt(xt#10*{xt#10 <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 + def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#11*{xt#11 <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_typevar_before_fun_subst_typevar_case_2: `%%%`(typevar, typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_typevar_case_1{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*, var_0 : typeuse?}: + `%%%`(tv, [tv_1] ++ tv'#1*{tv'#1 <- `tv'*`}, [tu_1] ++ tu'#1*{tu'#1 <- `tu'*`}) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%`(tv, [], []) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation fun_subst_typevar: `%%%%`(typevar, typevar*, typeuse*, typeuse?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%%`(tv, [], [], ?($typeuse_typevar(tv))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_1{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*, var_0 : typeuse?}: + `%%%%`(tv, [tv_1] ++ tv'#1*{tv'#1 <- `tv'*`}, [tu_1] ++ tu'#1*{tu'#1 <- `tu'*`}, (if (tv = tv_1) then tu_1 else iter_val#2)?{iter_val#2 <- var_0}) + -- fun_subst_typevar: `%%%%`(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_2{x0 : typevar, x1 : typevar*, x2 : typeuse*}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_subst_typevar_before_fun_subst_typevar_case_2: `%%%`(x0, x1, x2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation fun_minus_recs_before_fun_minus_recs_case_3: `%%`(typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}) + -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) + -- (wf_typevar: `%`(tv'#2))*{tv'#2 <- `tv'*`} + -- (wf_typeuse: `%`(tu'#2))*{tu'#2 <- `tu'*`} + -- wf_typevar: `%`(_IDX_typevar(x)) + -- if (var_0 =/= ?()) + -- if ((tv'#3*{tv'#3 <- `tv'*`}, tu'#3*{tu'#3 <- `tu'*`}) = !(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%`([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_0: + `%%`([], []) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_0: + `%%%`([], [], ?(([], []))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%%`([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}, var_0) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}, ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}))) + -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) + -- (wf_typevar: `%`(tv'#2))*{tv'#2 <- `tv'*`} + -- (wf_typeuse: `%`(tu'#2))*{tu'#2 <- `tu'*`} + -- wf_typevar: `%`(_IDX_typevar(x)) + -- if (var_0 =/= ?()) + -- if ((tv'#3*{tv'#3 <- `tv'*`}, tu'#3*{tu'#3 <- `tu'*`}) = !(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_3{x0 : typevar*, x1 : typeuse*}: + `%%%`(x0, x1, ?()) + -- ~ fun_minus_recs_before_fun_minus_recs_case_3: `%%`(x0, x1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv#4*{tv#4 <- `tv*`}, tu#4*{tu#4 <- `tu*`}) = pt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv#5*{tv#5 <- `tv*`}, tu#5*{tu#5 <- `tu*`}) = nt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv#6*{tv#6 <- `tv*`}, tu#6*{tu#6 <- `tu*`}) = vt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation fun_subst_typeuse: `%%%%`(typeuse, typevar*, typeuse*, typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(REC_typeuse(n), tv#7*{tv#7 <- `tv*`}, tu#7*{tu#7 <- `tu*`}, !(var_0)) + -- if (var_0 =/= ?()) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv#8*{tv#8 <- `tv*`}, tu#8*{tu#8 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(_IDX_typeuse(typeidx), tv#9*{tv#9 <- `tv*`}, tu#9*{tu#9 <- `tu*`}, !(var_0)) + -- if (var_0 =/= ?()) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv#10*{tv#10 <- `tv*`}, tu#10*{tu#10 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_typeuse(rectype, n), tv#11*{tv#11 <- `tv*`}, tu#11*{tu#11 <- `tu*`}, $typeuse_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv#12*{tv#12 <- `tv*`}, tu#12*{tu#12 <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation fun_subst_heaptype: `%%%%`(heaptype, typevar*, typeuse*, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(REC_heaptype(n), tv#13*{tv#13 <- `tv*`}, tu#13*{tu#13 <- `tu*`}, $heaptype_typeuse(!(var_0))) + -- if (var_0 =/= ?()) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv#14*{tv#14 <- `tv*`}, tu#14*{tu#14 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(_IDX_heaptype(typeidx), tv#15*{tv#15 <- `tv*`}, tu#15*{tu#15 <- `tu*`}, $heaptype_typeuse(!(var_0))) + -- if (var_0 =/= ?()) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv#16*{tv#16 <- `tv*`}, tu#16*{tu#16 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_heaptype(rectype, n), tv#17*{tv#17 <- `tv*`}, tu#17*{tu#17 <- `tu*`}, $heaptype_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv#18*{tv#18 <- `tv*`}, tu#18*{tu#18 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_3{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(ht, tv#19*{tv#19 <- `tv*`}, tu#19*{tu#19 <- `tu*`}, ht) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule fun_subst_reftype_case_0{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : heaptype, var_0 : heaptype}: + `%%%%`(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`}, REF_reftype(null?{null <- `null?`}, var_0)) + -- fun_subst_heaptype: `%%%%`(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}, var_1) + -- fun_subst_heaptype: `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_reftype: `%`(REF_reftype(null#2?{null#2 <- `null?`}, var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation fun_subst_valtype: `%%%%`(valtype, typevar*, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_0{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I32_valtype, tv#22*{tv#22 <- `tv*`}, tu#22*{tu#22 <- `tu*`}, $valtype_numtype($subst_numtype(I32_numtype, tv#23*{tv#23 <- `tv*`}, tu#23*{tu#23 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_1{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I64_valtype, tv#24*{tv#24 <- `tv*`}, tu#24*{tu#24 <- `tu*`}, $valtype_numtype($subst_numtype(I64_numtype, tv#25*{tv#25 <- `tv*`}, tu#25*{tu#25 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_2{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F32_valtype, tv#26*{tv#26 <- `tv*`}, tu#26*{tu#26 <- `tu*`}, $valtype_numtype($subst_numtype(F32_numtype, tv#27*{tv#27 <- `tv*`}, tu#27*{tu#27 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_3{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F64_valtype, tv#28*{tv#28 <- `tv*`}, tu#28*{tu#28 <- `tu*`}, $valtype_numtype($subst_numtype(F64_numtype, tv#29*{tv#29 <- `tv*`}, tu#29*{tu#29 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_4{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(V128_valtype, tv#30*{tv#30 <- `tv*`}, tu#30*{tu#30 <- `tu*`}, $valtype_vectype($subst_vectype(V128_vectype, tv#31*{tv#31 <- `tv*`}, tu#31*{tu#31 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_5{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : reftype}: + `%%%%`(REF_valtype(`null?`, heaptype), tv#32*{tv#32 <- `tv*`}, tu#32*{tu#32 <- `tu*`}, $valtype_reftype(var_0)) + -- fun_subst_reftype: `%%%%`(REF_reftype(`null?`, heaptype), tv#33*{tv#33 <- `tv*`}, tu#33*{tu#33 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_6{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(BOT_valtype, tv#34*{tv#34 <- `tv*`}, tu#34*{tu#34 <- `tu*`}, BOT_valtype) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation fun_subst_storagetype: `%%%%`(storagetype, typevar*, typeuse*, storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_0{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(BOT_storagetype, tv#35*{tv#35 <- `tv*`}, tu#35*{tu#35 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(BOT_valtype, tv#36*{tv#36 <- `tv*`}, tu#36*{tu#36 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_1{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(REF_storagetype(`null?`, heaptype), tv#37*{tv#37 <- `tv*`}, tu#37*{tu#37 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(REF_valtype(`null?`, heaptype), tv#38*{tv#38 <- `tv*`}, tu#38*{tu#38 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_2{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(V128_storagetype, tv#39*{tv#39 <- `tv*`}, tu#39*{tu#39 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(V128_valtype, tv#40*{tv#40 <- `tv*`}, tu#40*{tu#40 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_3{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F64_storagetype, tv#41*{tv#41 <- `tv*`}, tu#41*{tu#41 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F64_valtype, tv#42*{tv#42 <- `tv*`}, tu#42*{tu#42 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_4{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F32_storagetype, tv#43*{tv#43 <- `tv*`}, tu#43*{tu#43 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F32_valtype, tv#44*{tv#44 <- `tv*`}, tu#44*{tu#44 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_5{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I64_storagetype, tv#45*{tv#45 <- `tv*`}, tu#45*{tu#45 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I64_valtype, tv#46*{tv#46 <- `tv*`}, tu#46*{tu#46 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_6{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I32_storagetype, tv#47*{tv#47 <- `tv*`}, tu#47*{tu#47 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I32_valtype, tv#48*{tv#48 <- `tv*`}, tu#48*{tu#48 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_7{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I8_storagetype, tv#49*{tv#49 <- `tv*`}, tu#49*{tu#49 <- `tu*`}, $storagetype_packtype($subst_packtype(I8_packtype, tv#50*{tv#50 <- `tv*`}, tu#50*{tu#50 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_8{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I16_storagetype, tv#51*{tv#51 <- `tv*`}, tu#51*{tu#51 <- `tu*`}, $storagetype_packtype($subst_packtype(I16_packtype, tv#52*{tv#52 <- `tv*`}, tu#52*{tu#52 <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation fun_subst_fieldtype: `%%%%`(fieldtype, typevar*, typeuse*, fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule fun_subst_fieldtype_case_0{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : storagetype, var_0 : storagetype}: + `%%%%`(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`}, `%%`_fieldtype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_storagetype: `%%%%`(zt, tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}, var_1) + -- fun_subst_storagetype: `%%%%`(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut#2?{mut#2 <- `mut?`}, var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_0{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : fieldtype*, `var_0*` : fieldtype*}: + `%%%%`(STRUCT_comptype(`%`_list(ft#1*{ft#1 <- `ft*`})), tv#55*{tv#55 <- `tv*`}, tu#55*{tu#55 <- `tu*`}, STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- if (|`var_1*`| = |`ft*`|) + -- (fun_subst_fieldtype: `%%%%`(ft#2, tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`}, var_1))*{var_1 <- `var_1*`, ft#2 <- `ft*`} + -- if (|`var_0*`| = |`ft*`|) + -- (fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, ft <- `ft*`} + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_1*{var_1 <- `var_1*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_1{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : fieldtype, var_0 : fieldtype}: + `%%%%`(ARRAY_comptype(ft), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}, ARRAY_comptype(var_0)) + -- fun_subst_fieldtype: `%%%%`(ft, tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}, var_1) + -- fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_comptype: `%`(ARRAY_comptype(var_1)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_2{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_3*` : valtype*, `var_2*` : valtype*, `var_1*` : valtype*, `var_0*` : valtype*}: + `%%%%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}, `FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + -- if (|`var_3*`| = |`t_2*`|) + -- (fun_subst_valtype: `%%%%`(t_2#2, tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`}, var_3))*{var_3 <- `var_3*`, t_2#2 <- `t_2*`} + -- if (|`var_2*`| = |`t_1*`|) + -- (fun_subst_valtype: `%%%%`(t_1#2, tv#60*{tv#60 <- `tv*`}, tu#60*{tu#60 <- `tu*`}, var_2))*{var_2 <- `var_2*`, t_1#2 <- `t_1*`} + -- if (|`var_1*`| = |`t_2*`|) + -- (fun_subst_valtype: `%%%%`(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, t_2 <- `t_2*`} + -- if (|`var_0*`| = |`t_1*`|) + -- (fun_subst_valtype: `%%%%`(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, t_1 <- `t_1*`} + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_2*{var_2 <- `var_2*`}), `%`_resulttype(var_3*{var_3 <- `var_3*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule fun_subst_subtype_case_0{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, var_3 : comptype, `var_2*` : typeuse*, var_1 : comptype, `var_0*` : typeuse*}: + `%%%%`(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#4*{tu'#4 <- `tu'*`}, ct), tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`}, SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) + -- fun_subst_comptype: `%%%%`(ct, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}, var_3) + -- if (|`var_2*`| = |`tu'*`|) + -- (fun_subst_typeuse: `%%%%`(tu'#5, tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`}, var_2))*{var_2 <- `var_2*`, tu'#5 <- `tu'*`} + -- fun_subst_comptype: `%%%%`(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- if (|`var_0*`| = |`tu'*`|) + -- (fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, tu' <- `tu'*`} + -- wf_subtype: `%`(SUB_subtype(final#2?{final#2 <- `final?`}, var_2*{var_2 <- `var_2*`}, var_3)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 +relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 + rule fun_subst_rectype_case_0{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_1 : (typevar*, typeuse*)?, `var_0*` : subtype*}: + `%%%%`(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}, REC_rectype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- fun_minus_recs: `%%%`(tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}, var_1) + -- if (|`var_0*`| = |`st*`|) + -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} + -- (wf_typevar: `%`(tv'#4))*{tv'#4 <- `tv'*`} + -- (wf_typeuse: `%`(tu'#6))*{tu'#6 <- `tu'*`} + -- if (var_1 =/= ?()) + -- if ((tv'#5*{tv'#5 <- `tv'*`}, tu'#7*{tu'#7 <- `tu'*`}) = !(var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 +relation fun_subst_deftype: `%%%%`(deftype, typevar*, typeuse*, deftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 + rule fun_subst_deftype_case_0{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*, var_0 : rectype}: + `%%%%`(_DEF_deftype(qt, i), tv#67*{tv#67 <- `tv*`}, tu#67*{tu#67 <- `tu*`}, _DEF_deftype(var_0, i)) + -- fun_subst_rectype: `%%%%`(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv#68*{tv#68 <- `tv*`}, tu#68*{tu#68 <- `tu*`}) = at + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_tagtype: `%%%%`(tagtype, typevar*, typeuse*, tagtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_tagtype_case_0{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tagtype}: + `%%%%`(tu', tv#69*{tv#69 <- `tv*`}, tu#69*{tu#69 <- `tu*`}, var_0) + -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_globaltype: `%%%%`(globaltype, typevar*, typeuse*, globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_globaltype_case_0{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : valtype, var_0 : valtype}: + `%%%%`(`%%`_globaltype(mut#3?{mut#3 <- `mut?`}, t), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}, `%%`_globaltype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_valtype: `%%%%`(t, tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}, var_1) + -- fun_subst_valtype: `%%%%`(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_globaltype: `%`(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_memtype: `%%%%`(memtype, typevar*, typeuse*, memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_memtype_case_0{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(`%%PAGE`_memtype(at, lim), tv#72*{tv#72 <- `tv*`}, tu#72*{tu#72 <- `tu*`}, `%%PAGE`_memtype(at, lim)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_tabletype: `%%%%`(tabletype, typevar*, typeuse*, tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_tabletype_case_0{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : reftype, var_0 : reftype}: + `%%%%`(`%%%`_tabletype(at, lim, rt), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}, `%%%`_tabletype(at, lim, var_0)) + -- fun_subst_reftype: `%%%%`(rt, tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}, var_1) + -- fun_subst_reftype: `%%%%`(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_externtype: `%%%%`(externtype, typevar*, typeuse*, externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_0{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_1 : tagtype, var_0 : tagtype}: + `%%%%`(TAG_externtype(jt), tv#75*{tv#75 <- `tv*`}, tu#75*{tu#75 <- `tu*`}, TAG_externtype(var_0)) + -- fun_subst_tagtype: `%%%%`(jt, tv#76*{tv#76 <- `tv*`}, tu#76*{tu#76 <- `tu*`}, var_1) + -- fun_subst_tagtype: `%%%%`(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(TAG_externtype(var_1)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_1{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : globaltype, var_0 : globaltype}: + `%%%%`(GLOBAL_externtype(gt), tv#77*{tv#77 <- `tv*`}, tu#77*{tu#77 <- `tu*`}, GLOBAL_externtype(var_0)) + -- fun_subst_globaltype: `%%%%`(gt, tv#78*{tv#78 <- `tv*`}, tu#78*{tu#78 <- `tu*`}, var_1) + -- fun_subst_globaltype: `%%%%`(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(GLOBAL_externtype(var_1)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_subst_externtype_case_2{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : tabletype, var_0 : tabletype}: + `%%%%`(TABLE_externtype(tt), tv#79*{tv#79 <- `tv*`}, tu#79*{tu#79 <- `tu*`}, TABLE_externtype(var_0)) + -- fun_subst_tabletype: `%%%%`(tt, tv#80*{tv#80 <- `tv*`}, tu#80*{tu#80 <- `tu*`}, var_1) + -- fun_subst_tabletype: `%%%%`(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(TABLE_externtype(var_1)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_3{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : memtype, var_0 : memtype}: + `%%%%`(MEM_externtype(mt), tv#81*{tv#81 <- `tv*`}, tu#81*{tu#81 <- `tu*`}, MEM_externtype(var_0)) + -- fun_subst_memtype: `%%%%`(mt, tv#82*{tv#82 <- `tv*`}, tu#82*{tu#82 <- `tu*`}, var_1) + -- fun_subst_memtype: `%%%%`(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(MEM_externtype(var_1)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_4{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_1 : typeuse, var_0 : typeuse}: + `%%%%`(FUNC_externtype(tu'), tv#83*{tv#83 <- `tv*`}, tu#83*{tu#83 <- `tu*`}, FUNC_externtype(var_0)) + -- fun_subst_typeuse: `%%%%`(tu', tv#84*{tv#84 <- `tv*`}, tu#84*{tu#84 <- `tu*`}, var_1) + -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(FUNC_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype +relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) + rule fun_subst_moduletype_case_0{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_3*` : externtype*, `var_2*` : externtype*, `var_1*` : externtype*, `var_0*` : externtype*}: + `%%%%`(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#85*{tv#85 <- `tv*`}, tu#85*{tu#85 <- `tu*`}, `%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) + -- if (|`var_3*`| = |`xt_2*`|) + -- (fun_subst_externtype: `%%%%`(xt_2#2, tv#87*{tv#87 <- `tv*`}, tu#87*{tu#87 <- `tu*`}, var_3))*{var_3 <- `var_3*`, xt_2#2 <- `xt_2*`} + -- if (|`var_2*`| = |`xt_1*`|) + -- (fun_subst_externtype: `%%%%`(xt_1#2, tv#86*{tv#86 <- `tv*`}, tu#86*{tu#86 <- `tu*`}, var_2))*{var_2 <- `var_2*`, xt_1#2 <- `xt_1*`} + -- if (|`var_1*`| = |`xt_2*`|) + -- (fun_subst_externtype: `%%%%`(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, xt_2 <- `xt_2*`} + -- if (|`var_0*`| = |`xt_1*`|) + -- (fun_subst_externtype: `%%%%`(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, xt_1 <- `xt_1*`} + -- wf_moduletype: `%`(`%->%`_moduletype(var_2*{var_2 <- `var_2*`}, var_3*{var_3 <- `var_3*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_all_valtype(valtype : valtype, typeuse*) : valtype +relation fun_subst_all_valtype: `%%%`(valtype, typeuse*, valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_valtype{t : valtype, n : nat, `tu*` : typeuse*, i : nat}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.34 -def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:550.1-551.66 - def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.1-492.34 -def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-553.70 - def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.1-520.34 -def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:521.1-521.59 - def $free_deftype{rectype : rectype, n : nat}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 +relation fun_free_resulttype: `%%`(resulttype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 + rule fun_free_resulttype_case_0{`valtype*` : valtype*, `var_1*` : free*, var_0 : free}: + `%%`(`%`_resulttype(valtype#503*{valtype#503 <- `valtype*`}), var_0) + -- if (|`var_1*`| = |`valtype*`|) + -- (fun_free_valtype: `%%`(valtype, var_1))*{var_1 <- `var_1*`, valtype <- `valtype*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 +relation fun_free_storagetype: `%%`(storagetype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_0{var_0 : free}: + `%%`(BOT_storagetype, var_0) + -- fun_free_valtype: `%%`(BOT_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_1{`null?` : null?, heaptype : heaptype, var_0 : free}: + `%%`(REF_storagetype(`null?`, heaptype), var_0) + -- fun_free_valtype: `%%`(REF_valtype(`null?`, heaptype), var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_2{var_0 : free}: + `%%`(V128_storagetype, var_0) + -- fun_free_valtype: `%%`(V128_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_3{var_0 : free}: + `%%`(F64_storagetype, var_0) + -- fun_free_valtype: `%%`(F64_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_4{var_0 : free}: + `%%`(F32_storagetype, var_0) + -- fun_free_valtype: `%%`(F32_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_5{var_0 : free}: + `%%`(I64_storagetype, var_0) + -- fun_free_valtype: `%%`(I64_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_6{var_0 : free}: + `%%`(I32_storagetype, var_0) + -- fun_free_valtype: `%%`(I32_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_7{var_0 : free}: + `%%`(I8_storagetype, var_0) + -- fun_free_packtype: `%%`(I8_packtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_8{var_0 : free}: + `%%`(I16_storagetype, var_0) + -- fun_free_packtype: `%%`(I16_packtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 +relation fun_free_fieldtype: `%%`(fieldtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 + rule fun_free_fieldtype_case_0{`mut?` : mut?, storagetype : storagetype, var_0 : free}: + `%%`(`%%`_fieldtype(mut#5?{mut#5 <- `mut?`}, storagetype), var_0) + -- fun_free_storagetype: `%%`(storagetype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 +relation fun_free_comptype: `%%`(comptype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 + rule fun_free_comptype_case_0{`fieldtype*` : fieldtype*, `var_1*` : free*, var_0 : free}: + `%%`(STRUCT_comptype(`%`_list(fieldtype#1*{fieldtype#1 <- `fieldtype*`})), var_0) + -- if (|`var_1*`| = |`fieldtype*`|) + -- (fun_free_fieldtype: `%%`(fieldtype, var_1))*{var_1 <- `var_1*`, fieldtype <- `fieldtype*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 + rule fun_free_comptype_case_1{fieldtype : fieldtype, var_0 : free}: + `%%`(ARRAY_comptype(fieldtype), var_0) + -- fun_free_fieldtype: `%%`(fieldtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 + rule fun_free_comptype_case_2{resulttype_1 : list(syntax valtype), resulttype_2 : list(syntax valtype), var_1 : free, var_0 : free}: + `%%`(`FUNC%->%`_comptype(resulttype_1, resulttype_2), var_0 +++ var_1) + -- fun_free_resulttype: `%%`(resulttype_2, var_1) + -- fun_free_resulttype: `%%`(resulttype_1, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 +relation fun_free_subtype: `%%`(subtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 + rule fun_free_subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(SUB_subtype(final#3?{final#3 <- `final?`}, typeuse#1*{typeuse#1 <- `typeuse*`}, comptype), var_0 +++ var_2) + -- fun_free_comptype: `%%`(comptype, var_2) + -- if (|`var_1*`| = |`typeuse*`|) + -- (fun_free_typeuse: `%%`(typeuse, var_1))*{var_1 <- `var_1*`, typeuse <- `typeuse*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 +relation fun_free_rectype: `%%`(rectype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 + rule fun_free_rectype_case_0{`subtype*` : subtype*, `var_1*` : free*, var_0 : free}: + `%%`(REC_rectype(`%`_list(subtype#9*{subtype#9 <- `subtype*`})), var_0) + -- if (|`var_1*`| = |`subtype*`|) + -- (fun_free_subtype: `%%`(subtype, var_1))*{var_1 <- `var_1*`, subtype <- `subtype*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 +relation fun_free_deftype: `%%`(deftype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 + rule fun_free_deftype_case_0{rectype : rectype, n : nat, var_0 : free}: + `%%`(_DEF_deftype(rectype, n), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_tagtype(tagtype : tagtype) : free +relation fun_free_tagtype: `%%`(tagtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tagtype{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) + rule fun_free_tagtype_case_0{rectype : rectype, n : n, var_0 : free}: + `%%`(_DEF_tagtype(rectype, n), var_0) + -- fun_free_deftype: `%%`(_DEF_deftype(rectype, n), var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_globaltype(globaltype : globaltype) : free +relation fun_free_globaltype: `%%`(globaltype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_globaltype{`mut?` : mut?, valtype : valtype}(`%%`_globaltype(mut?{mut <- `mut?`}, valtype)) = $free_valtype(valtype) + rule fun_free_globaltype_case_0{`mut?` : mut?, valtype : valtype, var_0 : free}: + `%%`(`%%`_globaltype(mut#6?{mut#6 <- `mut?`}, valtype), var_0) + -- fun_free_valtype: `%%`(valtype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_memtype(memtype : memtype) : free +relation fun_free_memtype: `%%`(memtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) + rule fun_free_memtype_case_0{addrtype : addrtype, limits : limits, var_0 : free}: + `%%`(`%%PAGE`_memtype(addrtype, limits), var_0) + -- fun_free_addrtype: `%%`(addrtype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_tabletype(tabletype : tabletype) : free +relation fun_free_tabletype: `%%`(tabletype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) + rule fun_free_tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype, var_1 : free, var_0 : free}: + `%%`(`%%%`_tabletype(addrtype, limits, reftype), var_0 +++ var_1) + -- fun_free_reftype: `%%`(reftype, var_1) + -- fun_free_addrtype: `%%`(addrtype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_datatype(datatype : datatype) : free +relation fun_free_datatype: `%%`(datatype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_datatype_case_0: + `%%`(OK_datatype, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_elemtype(elemtype : elemtype) : free +relation fun_free_elemtype: `%%`(elemtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) + rule fun_free_elemtype_case_0{reftype : reftype, var_0 : free}: + `%%`(reftype, var_0) + -- fun_free_reftype: `%%`(reftype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_externtype(externtype : externtype) : free +relation fun_free_externtype: `%%`(externtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{tagtype : typeuse}(TAG_externtype(tagtype)) = $free_tagtype(tagtype) + rule fun_free_externtype_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_externtype(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{globaltype : globaltype}(GLOBAL_externtype(globaltype)) = $free_globaltype(globaltype) + rule fun_free_externtype_case_1{globaltype : globaltype, var_0 : free}: + `%%`(GLOBAL_externtype(globaltype), var_0) + -- fun_free_globaltype: `%%`(globaltype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{memtype : memtype}(MEM_externtype(memtype)) = $free_memtype(memtype) + rule fun_free_externtype_case_2{memtype : memtype, var_0 : free}: + `%%`(MEM_externtype(memtype), var_0) + -- fun_free_memtype: `%%`(memtype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) + rule fun_free_externtype_case_3{tabletype : tabletype, var_0 : free}: + `%%`(TABLE_externtype(tabletype), var_0) + -- fun_free_tabletype: `%%`(tabletype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) + rule fun_free_externtype_case_4{typeuse : typeuse, var_0 : free}: + `%%`(FUNC_externtype(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_moduletype(moduletype : moduletype) : free +relation fun_free_moduletype: `%%`(moduletype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_moduletype{`externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) + rule fun_free_moduletype_case_0{`externtype_1*` : externtype*, `externtype_2*` : externtype*, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(`%->%`_moduletype(externtype_1#1*{externtype_1#1 <- `externtype_1*`}, externtype_2#1*{externtype_2#1 <- `externtype_2*`}), var_0 +++ var_2) + -- if (|`var_3*`| = |`externtype_2*`|) + -- (fun_free_externtype: `%%`(externtype_2, var_3))*{var_3 <- `var_3*`, externtype_2 <- `externtype_2*`} + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- if (|`var_1*`| = |`externtype_1*`|) + -- (fun_free_externtype: `%%`(externtype_1, var_1))*{var_1 <- `var_1*`, externtype_1 <- `externtype_1*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax num_ = @@ -2016,14 +3129,14 @@ relation wf_num_: `%%`(numtype, num_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule num__case_0{numtype : numtype, Inn : Inn, var_x : iN}: `%%`(numtype, mk_num__0_num_(Inn, var_x)) - -- wf_uN: `%%`($size((Inn : addrtype <: numtype)), var_x) - -- if (numtype = (Inn : addrtype <: numtype)) + -- wf_uN: `%%`($size($numtype_addrtype(Inn)), var_x) + -- if (numtype = $numtype_addrtype(Inn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule num__case_1{numtype : numtype, Fnn : Fnn, var_x : fN}: `%%`(numtype, mk_num__1_num_(Fnn, var_x)) - -- wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), var_x) - -- if (numtype = (Fnn : Fnn <: numtype)) + -- wf_fN: `%%`($sizenn($numtype_Fnn(Fnn)), var_x) + -- if (numtype = $numtype_Fnn(Fnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_num__0(var_x : num_) : iN? @@ -2054,19 +3167,19 @@ relation wf_lane_: `%%`(lanetype, lane_) rule lane__case_0{lanetype : lanetype, numtype : numtype, var_x : num_}: `%%`(lanetype, mk_lane__0_lane_(numtype, var_x)) -- wf_num_: `%%`(numtype, var_x) - -- if (lanetype = (numtype : numtype <: lanetype)) + -- if (lanetype = $lanetype_numtype(numtype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule lane__case_1{lanetype : lanetype, packtype : packtype, var_x : pack_}: `%%`(lanetype, mk_lane__1_lane_(packtype, var_x)) -- wf_uN: `%%`($psize(packtype), var_x) - -- if (lanetype = (packtype : packtype <: lanetype)) + -- if (lanetype = $lanetype_packtype(packtype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule lane__case_2{lanetype : lanetype, Jnn : Jnn, var_x : iN}: `%%`(lanetype, mk_lane__2_lane_(Jnn, var_x)) - -- wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), var_x) - -- if (lanetype = (Jnn : Jnn <: lanetype)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(Jnn)), var_x) + -- if (lanetype = $lanetype_Jnn(Jnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_lane__0(var_x : lane_) : num_? @@ -2104,19 +3217,19 @@ relation wf_lit_: `%%`(storagetype, lit_) rule lit__case_0{storagetype : storagetype, numtype : numtype, var_x : num_}: `%%`(storagetype, mk_lit__0_lit_(numtype, var_x)) -- wf_num_: `%%`(numtype, var_x) - -- if (storagetype = (numtype : numtype <: storagetype)) + -- if (storagetype = $storagetype_numtype(numtype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule lit__case_1{storagetype : storagetype, vectype : vectype, var_x : vec_}: `%%`(storagetype, mk_lit__1_lit_(vectype, var_x)) -- wf_uN: `%%`($vsize(vectype), var_x) - -- if (storagetype = (vectype : vectype <: storagetype)) + -- if (storagetype = $storagetype_vectype(vectype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule lit__case_2{storagetype : storagetype, packtype : packtype, var_x : pack_}: `%%`(storagetype, mk_lit__2_lit_(packtype, var_x)) -- wf_uN: `%%`($psize(packtype), var_x) - -- if (storagetype = (packtype : packtype <: storagetype)) + -- if (storagetype = $storagetype_packtype(packtype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_lit__0(var_x : lit_) : num_? @@ -2185,7 +3298,7 @@ relation wf_unop_Inn: `%%`(Inn, unop_Inn) rule unop_Inn_case_3{Inn : Inn, sz : sz}: `%%`(Inn, EXTEND_unop_Inn(sz)) -- wf_sz: `%`(sz) - -- if ($proj_sz_0(sz).0 < $sizenn((Inn : addrtype <: numtype))) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax unop_Fnn = @@ -2208,12 +3321,12 @@ relation wf_unop_: `%%`(numtype, unop_) rule unop__case_0{numtype : numtype, Inn : Inn, var_x : unop_Inn}: `%%`(numtype, mk_unop__0_unop_(Inn, var_x)) -- wf_unop_Inn: `%%`(Inn, var_x) - -- if (numtype = (Inn : addrtype <: numtype)) + -- if (numtype = $numtype_addrtype(Inn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule unop__case_1{numtype : numtype, Fnn : Fnn, var_x : unop_Fnn}: `%%`(numtype, mk_unop__1_unop_(Fnn, var_x)) - -- if (numtype = (Fnn : Fnn <: numtype)) + -- if (numtype = $numtype_Fnn(Fnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_unop__0(var_x : unop_) : unop_Inn? @@ -2264,12 +3377,12 @@ relation wf_binop_: `%%`(numtype, binop_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule binop__case_0{numtype : numtype, Inn : Inn, var_x : binop_Inn}: `%%`(numtype, mk_binop__0_binop_(Inn, var_x)) - -- if (numtype = (Inn : addrtype <: numtype)) + -- if (numtype = $numtype_addrtype(Inn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule binop__case_1{numtype : numtype, Fnn : Fnn, var_x : binop_Fnn}: `%%`(numtype, mk_binop__1_binop_(Fnn, var_x)) - -- if (numtype = (Fnn : Fnn <: numtype)) + -- if (numtype = $numtype_Fnn(Fnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_binop__0(var_x : binop_) : binop_Inn? @@ -2298,7 +3411,7 @@ relation wf_testop_: `%%`(numtype, testop_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule testop__case_0{numtype : numtype, Inn : Inn, var_x : testop_Inn}: `%%`(numtype, mk_testop__0_testop_(Inn, var_x)) - -- if (numtype = (Inn : addrtype <: numtype)) + -- if (numtype = $numtype_addrtype(Inn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_testop__0(var_x : testop_) : testop_Inn @@ -2333,12 +3446,12 @@ relation wf_relop_: `%%`(numtype, relop_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule relop__case_0{numtype : numtype, Inn : Inn, var_x : relop_Inn}: `%%`(numtype, mk_relop__0_relop_(Inn, var_x)) - -- if (numtype = (Inn : addrtype <: numtype)) + -- if (numtype = $numtype_addrtype(Inn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule relop__case_1{numtype : numtype, Fnn : Fnn, var_x : relop_Fnn}: `%%`(numtype, mk_relop__1_relop_(Fnn, var_x)) - -- if (numtype = (Fnn : Fnn <: numtype)) + -- if (numtype = $numtype_Fnn(Fnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_relop__0(var_x : relop_) : relop_Inn? @@ -2364,12 +3477,12 @@ relation wf_cvtop__Inn_1_Inn_2: `%%%`(Inn, Inn, cvtop__Inn_1_Inn_2) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop__Inn_1_Inn_2_case_0{Inn_1 : Inn, Inn_2 : Inn, sx : sx}: `%%%`(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)) - -- if ($sizenn1((Inn_1 : addrtype <: numtype)) < $sizenn2((Inn_2 : addrtype <: numtype))) + -- if ($sizenn1($numtype_addrtype(Inn_1)) < $sizenn2($numtype_addrtype(Inn_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop__Inn_1_Inn_2_case_1{Inn_1 : Inn, Inn_2 : Inn}: `%%%`(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2) - -- if ($sizenn1((Inn_1 : addrtype <: numtype)) > $sizenn2((Inn_2 : addrtype <: numtype))) + -- if ($sizenn1($numtype_addrtype(Inn_1)) > $sizenn2($numtype_addrtype(Inn_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__Inn_1_Fnn_2 = @@ -2385,7 +3498,7 @@ relation wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn, Fnn, cvtop__Inn_1_Fnn_2) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop__Inn_1_Fnn_2_case_1{Inn_1 : Inn, Fnn_2 : Fnn}: `%%%`(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2) - -- if ($sizenn1((Inn_1 : addrtype <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype))) + -- if ($sizenn1($numtype_addrtype(Inn_1)) = $sizenn2($numtype_Fnn(Fnn_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__Fnn_1_Inn_2 = @@ -2406,7 +3519,7 @@ relation wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn, Inn, cvtop__Fnn_1_Inn_2) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop__Fnn_1_Inn_2_case_2{Fnn_1 : Fnn, Inn_2 : Inn}: `%%%`(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2) - -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : addrtype <: numtype))) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = $sizenn2($numtype_addrtype(Inn_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__Fnn_1_Fnn_2 = @@ -2418,12 +3531,12 @@ relation wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn, Fnn, cvtop__Fnn_1_Fnn_2) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop__Fnn_1_Fnn_2_case_0{Fnn_1 : Fnn, Fnn_2 : Fnn}: `%%%`(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2) - -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) < $sizenn2((Fnn_2 : Fnn <: numtype))) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) < $sizenn2($numtype_Fnn(Fnn_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop__Fnn_1_Fnn_2_case_1{Fnn_1 : Fnn, Fnn_2 : Fnn}: `%%%`(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2) - -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) > $sizenn2($numtype_Fnn(Fnn_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__ = @@ -2438,29 +3551,29 @@ relation wf_cvtop__: `%%%`(numtype, numtype, cvtop__) rule cvtop___case_0{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}: `%%%`(numtype_1, numtype_2, mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) -- wf_cvtop__Inn_1_Inn_2: `%%%`(Inn_1, Inn_2, var_x) - -- if (numtype_1 = (Inn_1 : addrtype <: numtype)) - -- if (numtype_2 = (Inn_2 : addrtype <: numtype)) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop___case_1{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}: `%%%`(numtype_1, numtype_2, mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) -- wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn_1, Fnn_2, var_x) - -- if (numtype_1 = (Inn_1 : addrtype <: numtype)) - -- if (numtype_2 = (Fnn_2 : Fnn <: numtype)) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop___case_2{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}: `%%%`(numtype_1, numtype_2, mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) -- wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn_1, Inn_2, var_x) - -- if (numtype_1 = (Fnn_1 : Fnn <: numtype)) - -- if (numtype_2 = (Inn_2 : addrtype <: numtype)) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule cvtop___case_3{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}: `%%%`(numtype_1, numtype_2, mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) -- wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn_1, Fnn_2, var_x) - -- if (numtype_1 = (Fnn_1 : Fnn <: numtype)) - -- if (numtype_2 = (Fnn_2 : Fnn <: numtype)) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_cvtop___0(var_x : cvtop__) : cvtop__Inn_1_Inn_2? @@ -2519,9 +3632,10 @@ relation wf_shape: `%`(shape) -- if (($lsize(lanetype) * $proj_dim_0(dim).0) = 128) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $dim(shape : shape) : dim +relation fun_dim: `%%`(shape, dim) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) + rule fun_dim_case_0{Lnn : lanetype, N : nat}: + `%%`(`%X%`_shape(Lnn, `%`_dim(N)), `%`_dim(N)) -- wf_dim: `%`(`%`_dim(N)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -2549,7 +3663,7 @@ relation wf_ishape: `%`(ishape) rule ishape_case_0{Jnn : Jnn, shape : shape}: `%`(`%`_ishape(shape)) -- wf_shape: `%`(shape) - -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) + -- if ($lanetype(shape) = $lanetype_Jnn(Jnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax bshape = @@ -2615,7 +3729,7 @@ relation wf_vunop_Jnn_M: `%%%`(Jnn, M, vunop_Jnn_M) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vunop_Jnn_M_case_2{Jnn : Jnn, M : M}: `%%%`(Jnn, M, POPCNT_vunop_Jnn_M) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 8) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vunop_Fnn_M = @@ -2638,12 +3752,12 @@ relation wf_vunop_: `%%`(shape, vunop_) rule vunop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vunop_Jnn_M}: `%%`(shape, mk_vunop__0_vunop_(Jnn, M, var_x)) -- wf_vunop_Jnn_M: `%%%`(Jnn, M, var_x) - -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vunop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vunop_Fnn_M}: `%%`(shape, mk_vunop__1_vunop_(Fnn, M, var_x)) - -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vunop__0(var_x : vunop_) : vunop_Jnn_M? @@ -2685,42 +3799,42 @@ relation wf_vbinop_Jnn_M: `%%%`(Jnn, M, vbinop_Jnn_M) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: `%%%`(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: `%%%`(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop_Jnn_M_case_4{Jnn : Jnn, M : M}: `%%%`(Jnn, M, MUL_vbinop_Jnn_M) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) + -- if ($lsizenn($lanetype_Jnn(Jnn)) >= 16) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop_Jnn_M_case_5{Jnn : Jnn, M : M}: `%%%`(Jnn, M, AVGRU_vbinop_Jnn_M) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop_Jnn_M_case_6{Jnn : Jnn, M : M}: `%%%`(Jnn, M, Q15MULR_SATS_vbinop_Jnn_M) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop_Jnn_M_case_7{Jnn : Jnn, M : M}: `%%%`(Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop_Jnn_M_case_8{Jnn : Jnn, M : M, sx : sx}: `%%%`(Jnn, M, MIN_vbinop_Jnn_M(sx)) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop_Jnn_M_case_9{Jnn : Jnn, M : M, sx : sx}: `%%%`(Jnn, M, MAX_vbinop_Jnn_M(sx)) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vbinop_Fnn_M = @@ -2746,12 +3860,12 @@ relation wf_vbinop_: `%%`(shape, vbinop_) rule vbinop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}: `%%`(shape, mk_vbinop__0_vbinop_(Jnn, M, var_x)) -- wf_vbinop_Jnn_M: `%%%`(Jnn, M, var_x) - -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}: `%%`(shape, mk_vbinop__1_vbinop_(Fnn, M, var_x)) - -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vbinop__0(var_x : vbinop_) : vbinop_Jnn_M? @@ -2786,12 +3900,12 @@ relation wf_vternop_: `%%`(shape, vternop_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vternop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vternop_Jnn_M}: `%%`(shape, mk_vternop__0_vternop_(Jnn, M, var_x)) - -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vternop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vternop_Fnn_M}: `%%`(shape, mk_vternop__1_vternop_(Fnn, M, var_x)) - -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vternop__0(var_x : vternop_) : vternop_Jnn_M? @@ -2820,7 +3934,7 @@ relation wf_vtestop_: `%%`(shape, vtestop_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vtestop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}: `%%`(shape, mk_vtestop__0_vtestop_(Jnn, M, var_x)) - -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vtestop__0(var_x : vtestop_) : vtestop_Jnn_M @@ -2849,22 +3963,22 @@ relation wf_vrelop_Jnn_M: `%%%`(Jnn, M, vrelop_Jnn_M) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vrelop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: `%%%`(Jnn, M, LT_vrelop_Jnn_M(sx)) - -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vrelop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: `%%%`(Jnn, M, GT_vrelop_Jnn_M(sx)) - -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vrelop_Jnn_M_case_4{Jnn : Jnn, M : M, sx : sx}: `%%%`(Jnn, M, LE_vrelop_Jnn_M(sx)) - -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vrelop_Jnn_M_case_5{Jnn : Jnn, M : M, sx : sx}: `%%%`(Jnn, M, GE_vrelop_Jnn_M(sx)) - -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vrelop_Fnn_M = @@ -2886,12 +4000,12 @@ relation wf_vrelop_: `%%`(shape, vrelop_) rule vrelop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}: `%%`(shape, mk_vrelop__0_vrelop_(Jnn, M, var_x)) -- wf_vrelop_Jnn_M: `%%%`(Jnn, M, var_x) - -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vrelop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}: `%%`(shape, mk_vrelop__1_vrelop_(Fnn, M, var_x)) - -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vrelop__0(var_x : vrelop_) : vrelop_Jnn_M? @@ -2921,7 +4035,7 @@ relation wf_vshiftop_: `%%`(ishape, vshiftop_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vshiftop__case_0{ishape : ishape, Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}: `%%`(ishape, mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) - -- if (ishape = `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- if (ishape = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vshiftop__0(var_x : vshiftop_) : vshiftop_Jnn_M @@ -2958,7 +4072,7 @@ relation wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextunop__Jnn ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vextunop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx}: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)) - -- if ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))) + -- if ((16 <= (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) <= 32))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vextunop__ = @@ -2970,8 +4084,8 @@ relation wf_vextunop__: `%%%`(ishape, ishape, vextunop__) rule vextunop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}: `%%%`(ishape_1, ishape_2, mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) -- wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) - -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) - -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vextunop___0(var_x : vextunop__) : vextunop__Jnn_1_M_1_Jnn_2_M_2 @@ -2989,17 +4103,17 @@ relation wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextbinop__J ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) - -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) >= 16)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_1{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) - -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_2{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) - -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 16)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vextbinop__ = @@ -3011,8 +4125,8 @@ relation wf_vextbinop__: `%%%`(ishape, ishape, vextbinop__) rule vextbinop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}: `%%%`(ishape_1, ishape_2, mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) -- wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) - -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) - -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vextbinop___0(var_x : vextbinop__) : vextbinop__Jnn_1_M_1_Jnn_2_M_2 @@ -3028,7 +4142,7 @@ relation wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextternop_ ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vextternop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2) - -- if (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) + -- if (((4 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vextternop__ = @@ -3040,8 +4154,8 @@ relation wf_vextternop__: `%%%`(ishape, ishape, vextternop__) rule vextternop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}: `%%%`(ishape_1, ishape_2, mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) -- wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) - -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) - -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vextternop___0(var_x : vextternop__) : vextternop__Jnn_1_M_1_Jnn_2_M_2 @@ -3057,7 +4171,7 @@ relation wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vcvtop__Jnn_1_M ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) - -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) + -- if ($lsizenn2($lanetype_Jnn(Jnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vcvtop__Jnn_1_M_1_Fnn_2_M_2 = @@ -3068,7 +4182,7 @@ relation wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn, M, Fnn, M, vcvtop__Jnn_1_M ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop__Jnn_1_M_1_Fnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(`half?`, sx)) - -- if (((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) + -- if (((($sizenn2($numtype_Fnn(Fnn_2)) = $lsizenn1($lanetype_Jnn(Jnn_1))) /\ ($lsizenn1($lanetype_Jnn(Jnn_1)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2($numtype_Fnn(Fnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vcvtop__Fnn_1_M_1_Jnn_2_M_2 = @@ -3080,12 +4194,12 @@ relation wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn, M, Jnn, M, vcvtop__Fnn_1_M ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, `zero?`)) - -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, `zero?`)) - -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vcvtop__Fnn_1_M_1_Fnn_2_M_2 = @@ -3097,12 +4211,12 @@ relation wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn, M, Fnn, M, vcvtop__Fnn_1_M ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)) - -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $sizenn2($numtype_Fnn(Fnn_2)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2) - -- if ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype))) + -- if ((2 * $sizenn1($numtype_Fnn(Fnn_1))) = $sizenn2($numtype_Fnn(Fnn_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vcvtop__ = @@ -3117,29 +4231,29 @@ relation wf_vcvtop__: `%%%`(shape, shape, vcvtop__) rule vcvtop___case_0{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}: `%%%`(shape_1, shape_2, mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) -- wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) - -- if (shape_1 = `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (shape_2 = `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop___case_1{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}: `%%%`(shape_1, shape_2, mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) -- wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, var_x) - -- if (shape_1 = `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (shape_2 = `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop___case_2{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}: `%%%`(shape_1, shape_2, mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) -- wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, var_x) - -- if (shape_1 = `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))) - -- if (shape_2 = `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop___case_3{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}: `%%%`(shape_1, shape_2, mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) -- wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, var_x) - -- if (shape_1 = `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))) - -- if (shape_2 = `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vcvtop___0(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Jnn_2_M_2? @@ -3194,7 +4308,7 @@ relation wf_loadop_Inn: `%%`(Inn, loadop_Inn) rule loadop_Inn_case_0{Inn : Inn, sz : sz, sx : sx}: `%%`(Inn, `%_%`_loadop_Inn(sz, sx)) -- wf_sz: `%`(sz) - -- if ($proj_sz_0(sz).0 < $sizenn((Inn : addrtype <: numtype))) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax loadop_ = @@ -3206,7 +4320,7 @@ relation wf_loadop_: `%%`(numtype, loadop_) rule loadop__case_0{numtype : numtype, Inn : Inn, var_x : loadop_Inn}: `%%`(numtype, mk_loadop__0_loadop_(Inn, var_x)) -- wf_loadop_Inn: `%%`(Inn, var_x) - -- if (numtype = (Inn : addrtype <: numtype)) + -- if (numtype = $numtype_addrtype(Inn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_loadop__0(var_x : loadop_) : loadop_Inn @@ -3223,7 +4337,7 @@ relation wf_storeop_Inn: `%%`(Inn, storeop_Inn) rule storeop_Inn_case_0{Inn : Inn, sz : sz}: `%%`(Inn, `%`_storeop_Inn(sz)) -- wf_sz: `%`(sz) - -- if ($proj_sz_0(sz).0 < $sizenn((Inn : addrtype <: numtype))) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax storeop_ = @@ -3235,7 +4349,7 @@ relation wf_storeop_: `%%`(numtype, storeop_) rule storeop__case_0{numtype : numtype, Inn : Inn, var_x : storeop_Inn}: `%%`(numtype, mk_storeop__0_storeop_(Inn, var_x)) -- wf_storeop_Inn: `%%`(Inn, var_x) - -- if (numtype = (Inn : addrtype <: numtype)) + -- if (numtype = $numtype_addrtype(Inn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_storeop__0(var_x : storeop_) : storeop_Inn @@ -3461,6 +4575,16 @@ syntax val = | `REF.HOST_ADDR`(hostaddr : hostaddr) | `REF.EXTERN`(ref : ref) +def $val_ref(ref) : val + def $val_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_val(x0) + def $val_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_val + def $val_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_val(x0) + def $val_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_val(x0) + def $val_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_val(x0) + def $val_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_val(x0) + def $val_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_val(x0) + def $val_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_val(x0) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec relation wf_val: `%`(val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -3645,6 +4769,28 @@ syntax instr = | TRAP } +def $instr_ref(ref) : instr + def $instr_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_instr(x0) + def $instr_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_instr + def $instr_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_instr(x0) + def $instr_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_instr(x0) + def $instr_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_instr(x0) + def $instr_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_instr(x0) + def $instr_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_instr(x0) + def $instr_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_instr(x0) + +def $instr_val(val) : instr + def $instr_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_instr(x0, x1) + def $instr_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_instr(x0, x1) + def $instr_val{x0 : u31}(`REF.I31_NUM`_val(x0)) = `REF.I31_NUM`_instr(x0) + def $instr_val(`REF.NULL_ADDR`_val) = `REF.NULL_ADDR`_instr + def $instr_val{x0 : structaddr}(`REF.STRUCT_ADDR`_val(x0)) = `REF.STRUCT_ADDR`_instr(x0) + def $instr_val{x0 : arrayaddr}(`REF.ARRAY_ADDR`_val(x0)) = `REF.ARRAY_ADDR`_instr(x0) + def $instr_val{x0 : funcaddr}(`REF.FUNC_ADDR`_val(x0)) = `REF.FUNC_ADDR`_instr(x0) + def $instr_val{x0 : exnaddr}(`REF.EXN_ADDR`_val(x0)) = `REF.EXN_ADDR`_instr(x0) + def $instr_val{x0 : hostaddr}(`REF.HOST_ADDR`_val(x0)) = `REF.HOST_ADDR`_instr(x0) + def $instr_val{x0 : ref}(`REF.EXTERN`_val(x0)) = `REF.EXTERN`_instr(x0) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -4153,11 +5299,12 @@ relation wf_instr: `%`(instr) -- wf_vswizzlop_: `%%`(bshape, var_0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 - rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*}: + rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*, var_0 : dim}: `%`(VSHUFFLE_instr(bshape, `laneidx*`)) -- wf_bshape: `%`(bshape) -- (wf_uN: `%%`(8, laneidx))*{laneidx <- `laneidx*`} - -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim($proj_bshape_0(bshape).0)) + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = var_0) + -- fun_dim: `%%`($proj_bshape_0(bshape).0, var_0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextunop__}: @@ -4274,296 +5421,696 @@ relation wf_instr: `%`(instr) syntax expr = instr* ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $memarg0 : memarg +relation fun_memarg0: `%`(memarg) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} + rule fun_memarg0_case_0: + `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $const(consttype : consttype, lit_ : lit_) : instr +relation fun_const: `%%%`(consttype, lit_, instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_0{c : num_}: + `%%%`(I32_consttype, mk_lit__0_lit_(I32_numtype, c), CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_1{c : num_}: + `%%%`(I64_consttype, mk_lit__0_lit_(I64_numtype, c), CONST_instr(I64_numtype, c)) + -- wf_instr: `%`(CONST_instr(I64_numtype, c)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_2{c : num_}: + `%%%`(F32_consttype, mk_lit__0_lit_(F32_numtype, c), CONST_instr(F32_numtype, c)) + -- wf_instr: `%`(CONST_instr(F32_numtype, c)) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{numtype : numtype, c : num_}((numtype : numtype <: consttype), mk_lit__0_lit_(numtype, c)) = CONST_instr(numtype, c) - -- wf_instr: `%`(CONST_instr(numtype, c)) + rule fun_const_case_3{c : num_}: + `%%%`(F64_consttype, mk_lit__0_lit_(F64_numtype, c), CONST_instr(F64_numtype, c)) + -- wf_instr: `%`(CONST_instr(F64_numtype, c)) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{vectype : vectype, c : uN}((vectype : vectype <: consttype), mk_lit__1_lit_(vectype, c)) = VCONST_instr(vectype, c) - -- wf_instr: `%`(VCONST_instr(vectype, c)) + rule fun_const_case_4{c : uN}: + `%%%`(V128_consttype, mk_lit__1_lit_(V128_vectype, c), VCONST_instr(V128_vectype, c)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_shape(shape : shape) : free +relation fun_free_shape: `%%`(shape, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) + rule fun_free_shape_case_0{lanetype : lanetype, dim : dim, var_0 : free}: + `%%`(`%X%`_shape(lanetype, dim), var_0) + -- fun_free_lanetype: `%%`(lanetype, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_blocktype(blocktype : blocktype) : free +relation fun_free_blocktype: `%%`(blocktype, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) + rule fun_free_blocktype_case_0{`valtype?` : valtype?, `var_1?` : free?, var_0 : free}: + `%%`(_RESULT_blocktype(valtype#505?{valtype#505 <- `valtype?`}), var_0) + -- if ((`var_1?` = ?()) <=> (`valtype?` = ?())) + -- (fun_free_valtype: `%%`(valtype, var_1))?{var_1 <- `var_1?`, valtype <- `valtype?`} + -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{typeidx : uN}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) + rule fun_free_blocktype_case_1{typeidx : uN, var_0 : free}: + `%%`(_IDX_blocktype(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_catch(catch : catch) : free +relation fun_free_catch: `%%`(catch, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_catch{tagidx : uN, labelidx : uN}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + rule fun_free_catch_case_0{tagidx : uN, labelidx : uN, var_1 : free, var_0 : free}: + `%%`(CATCH_catch(tagidx, labelidx), var_0 +++ var_1) + -- fun_free_labelidx: `%%`(labelidx, var_1) + -- fun_free_tagidx: `%%`(tagidx, var_0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_catch{tagidx : uN, labelidx : uN}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + rule fun_free_catch_case_1{tagidx : uN, labelidx : uN, var_1 : free, var_0 : free}: + `%%`(CATCH_REF_catch(tagidx, labelidx), var_0 +++ var_1) + -- fun_free_labelidx: `%%`(labelidx, var_1) + -- fun_free_tagidx: `%%`(tagidx, var_0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_catch{labelidx : uN}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) + rule fun_free_catch_case_2{labelidx : uN, var_0 : free}: + `%%`(CATCH_ALL_catch(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_catch{labelidx : uN}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) + rule fun_free_catch_case_3{labelidx : uN, var_0 : free}: + `%%`(CATCH_ALL_REF_catch(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.1-584.44 -def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.32 - def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.66 - def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.91 - def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 +relation fun_shift_labelidxs: `%%`(labelidx*, labelidx*) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_1{`labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([`%`_labelidx(0)] ++ labelidx'#1*{labelidx'#1 <- `labelidx'*`}, var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_2{labelidx : uN, `labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([labelidx] ++ labelidx'#2*{labelidx'#2 <- `labelidx'*`}, [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.1-420.30 -def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-435.26 - def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation fun_free_instr: `%%`(instr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_0: + `%%`(NOP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.34 - def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_1: + `%%`(UNREACHABLE_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.27 - def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_2: + `%%`(DROP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.86 - def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.92 - def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.91 - def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-443.79 - def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:445.1-445.56 - def $free_instr{labelidx : uN}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.59 - def $free_instr{labelidx : uN}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-448.69 - def $free_instr{`labelidx*` : labelidx*, labelidx' : uN}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.64 - def $free_instr{labelidx : uN}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.68 - def $free_instr{labelidx : uN}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-452.83 - def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-454.83 - def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-456.55 - def $free_instr{funcidx : uN}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.59 - def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-459.53 - def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.29 - def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_3{`valtype*?` : valtype*?, `var_2*?` : free*?, `var_1?` : free?, var_0 : free}: + `%%`(SELECT_instr(valtype#506*{valtype#506 <- `valtype*#1`}?{`valtype*#1` <- `valtype*?`}), var_0) + -- if ((`var_2*?` = ?()) <=> (`valtype*?` = ?())) + -- (if (|`var_2*`| = |`valtype*`|))?{`var_2*` <- `var_2*?`, `valtype*` <- `valtype*?`} + -- (fun_free_valtype: `%%`(valtype, var_2))*{var_2 <- `var_2*`, valtype <- `valtype*`}?{`var_2*` <- `var_2*?`, `valtype*` <- `valtype*?`} + -- if ((`var_2*?` = ?()) <=> (`var_1?` = ?())) + -- (fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1))?{`var_2*` <- `var_2*?`, var_1 <- `var_1?`} + -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_4{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(BLOCK_instr(blocktype, instr#1*{instr#1 <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_5{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(LOOP_instr(blocktype, instr#2*{instr#2 <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_6{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, var_2 : free, var_1 : free, var_0 : free}: + `%%`(`IF%%ELSE%`_instr(blocktype, instr_1#1*{instr_1#1 <- `instr_1*`}, instr_2#1*{instr_2#1 <- `instr_2*`}), var_0 +++ var_1 +++ var_2) + -- fun_free_block: `%%`(instr_2*{instr_2 <- `instr_2*`}, var_2) + -- fun_free_block: `%%`(instr_1*{instr_1 <- `instr_1*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_7{labelidx : uN, var_0 : free}: + `%%`(BR_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_8{labelidx : uN, var_0 : free}: + `%%`(BR_IF_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_9{`labelidx*` : labelidx*, labelidx' : uN, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(BR_TABLE_instr(labelidx#1*{labelidx#1 <- `labelidx*`}, labelidx'), var_0 +++ var_2) + -- fun_free_labelidx: `%%`(labelidx', var_2) + -- if (|`var_1*`| = |`labelidx*`|) + -- (fun_free_labelidx: `%%`(labelidx, var_1))*{var_1 <- `var_1*`, labelidx <- `labelidx*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_10{labelidx : uN, var_0 : free}: + `%%`(BR_ON_NULL_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_11{labelidx : uN, var_0 : free}: + `%%`(BR_ON_NON_NULL_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_12{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_13{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_14{funcidx : uN, var_0 : free}: + `%%`(CALL_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_15{typeuse : typeuse, var_0 : free}: + `%%`(CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_16{tableidx : uN, typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(CALL_INDIRECT_instr(tableidx, typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(typeuse, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_17: + `%%`(RETURN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 - def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.66 - def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-464.53 - def $free_instr{tableidx : uN, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:466.1-466.53 - def $free_instr{tagidx : uN}(THROW_instr(tagidx)) = $free_tagidx(tagidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.32 - def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_18{funcidx : uN, var_0 : free}: + `%%`(RETURN_CALL_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_19{typeuse : typeuse, var_0 : free}: + `%%`(RETURN_CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_20{tableidx : uN, typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(typeuse, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_21{tagidx : uN, var_0 : free}: + `%%`(THROW_instr(tagidx), var_0) + -- fun_free_tagidx: `%%`(tagidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_22: + `%%`(THROW_REF_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-469.99 - def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.63 - def $free_instr{numtype : numtype, numlit : num_}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.60 - def $free_instr{numtype : numtype, unop : unop_}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.62 - def $free_instr{numtype : numtype, binop : binop_}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.64 - def $free_instr{numtype : numtype, testop : testop_}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.62 - def $free_instr{numtype : numtype, relop : relop_}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-477.55 - def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.64 - def $free_instr{vectype : vectype, veclit : uN}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 - def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-481.66 - def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:482.1-482.68 - def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.68 - def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.56 - def $free_instr{shape : shape, vunop : vunop_}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.58 - def $free_instr{shape : shape, vbinop : vbinop_}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.60 - def $free_instr{shape : shape, vternop : vternop_}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-487.60 - def $free_instr{shape : shape, vtestop : vtestop_}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:488.1-488.58 - def $free_instr{shape : shape, vrelop : vrelop_}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.64 - def $free_instr{ishape : ishape, vshiftop : vshiftop_}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape($proj_ishape_0(ishape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.55 - def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape($proj_ishape_0(ishape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.66 - def $free_instr{bshape : bshape, vswizzlop : vswizzlop_}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape($proj_bshape_0(bshape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.64 - def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape($proj_bshape_0(bshape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-494.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-496.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-498.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-500.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-502.47 - def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:503.1-503.51 - def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.70 - def $free_instr{shape : shape, `sx?` : sx?, laneidx : uN}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:505.1-505.66 - def $free_instr{shape : shape, laneidx : uN}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.62 - def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.34 - def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_23{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*, `var_4*` : free*, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(TRY_TABLE_instr(blocktype, `%`_list(catch#1*{catch#1 <- `catch*`}), instr#3*{instr#3 <- `instr*`}), var_0 +++ var_1 +++ var_3) + -- if (|`var_4*`| = |`instr*`|) + -- (fun_free_instr: `%%`(instr, var_4))*{var_4 <- `var_4*`, instr <- `instr*`} + -- fun_free_list: `%%`(var_4*{var_4 <- `var_4*`}, var_3) + -- if (|`var_2*`| = |`catch*`|) + -- (fun_free_catch: `%%`(catch, var_2))*{var_2 <- `var_2*`, catch <- `catch*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_24{numtype : numtype, numlit : num_, var_0 : free}: + `%%`(CONST_instr(numtype, numlit), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_25{numtype : numtype, unop : unop_, var_0 : free}: + `%%`(UNOP_instr(numtype, unop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_26{numtype : numtype, binop : binop_, var_0 : free}: + `%%`(BINOP_instr(numtype, binop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_27{numtype : numtype, testop : testop_, var_0 : free}: + `%%`(TESTOP_instr(numtype, testop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_28{numtype : numtype, relop : relop_, var_0 : free}: + `%%`(RELOP_instr(numtype, relop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_29{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__, var_1 : free, var_0 : free}: + `%%`(CVTOP_instr(numtype_1, numtype_2, cvtop), var_0 +++ var_1) + -- fun_free_numtype: `%%`(numtype_2, var_1) + -- fun_free_numtype: `%%`(numtype_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_30{vectype : vectype, veclit : uN, var_0 : free}: + `%%`(VCONST_instr(vectype, veclit), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_31{vectype : vectype, vvunop : vvunop, var_0 : free}: + `%%`(VVUNOP_instr(vectype, vvunop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_32{vectype : vectype, vvbinop : vvbinop, var_0 : free}: + `%%`(VVBINOP_instr(vectype, vvbinop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_33{vectype : vectype, vvternop : vvternop, var_0 : free}: + `%%`(VVTERNOP_instr(vectype, vvternop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_34{vectype : vectype, vvtestop : vvtestop, var_0 : free}: + `%%`(VVTESTOP_instr(vectype, vvtestop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_35{shape : shape, vunop : vunop_, var_0 : free}: + `%%`(VUNOP_instr(shape, vunop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_36{shape : shape, vbinop : vbinop_, var_0 : free}: + `%%`(VBINOP_instr(shape, vbinop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_37{shape : shape, vternop : vternop_, var_0 : free}: + `%%`(VTERNOP_instr(shape, vternop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_38{shape : shape, vtestop : vtestop_, var_0 : free}: + `%%`(VTESTOP_instr(shape, vtestop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_39{shape : shape, vrelop : vrelop_, var_0 : free}: + `%%`(VRELOP_instr(shape, vrelop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_40{ishape : ishape, vshiftop : vshiftop_, var_0 : free}: + `%%`(VSHIFTOP_instr(ishape, vshiftop), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_41{ishape : ishape, var_0 : free}: + `%%`(VBITMASK_instr(ishape), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_42{bshape : bshape, vswizzlop : vswizzlop_, var_0 : free}: + `%%`(VSWIZZLOP_instr(bshape, vswizzlop), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_43{bshape : bshape, `laneidx*` : laneidx*, var_0 : free}: + `%%`(VSHUFFLE_instr(bshape, laneidx#1*{laneidx#1 <- `laneidx*`}), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_44{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__, var_1 : free, var_0 : free}: + `%%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_45{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__, var_1 : free, var_0 : free}: + `%%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_46{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__, var_1 : free, var_0 : free}: + `%%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_47{ishape_1 : ishape, ishape_2 : ishape, sx : sx, var_1 : free, var_0 : free}: + `%%`(VNARROW_instr(ishape_1, ishape_2, sx), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_48{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__, var_1 : free, var_0 : free}: + `%%`(VCVTOP_instr(shape_1, shape_2, vcvtop), var_0 +++ var_1) + -- fun_free_shape: `%%`(shape_2, var_1) + -- fun_free_shape: `%%`(shape_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_49{shape : shape, var_0 : free}: + `%%`(VSPLAT_instr(shape), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_50{shape : shape, `sx?` : sx?, laneidx : uN, var_0 : free}: + `%%`(VEXTRACT_LANE_instr(shape, sx#43187?{sx#43187 <- `sx?`}, laneidx), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_51{shape : shape, laneidx : uN, var_0 : free}: + `%%`(VREPLACE_LANE_instr(shape, laneidx), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_52{heaptype : heaptype, var_0 : free}: + `%%`(`REF.NULL`_instr(heaptype), var_0) + -- fun_free_heaptype: `%%`(heaptype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_53: + `%%`(`REF.IS_NULL`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.38 - def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_54: + `%%`(`REF.AS_NON_NULL`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.29 - def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_55: + `%%`(`REF.EQ`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 - def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 - def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.59 - def $free_instr{funcidx : uN}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.30 - def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_56{reftype : reftype, var_0 : free}: + `%%`(`REF.TEST`_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_57{reftype : reftype, var_0 : free}: + `%%`(`REF.CAST`_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_58{funcidx : uN, var_0 : free}: + `%%`(`REF.FUNC`_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_59: + `%%`(`REF.I31`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.33 - def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_60{sx : sx}: + `%%`(`I31.GET`_instr(sx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.61 - def $free_instr{typeidx : uN}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.69 - def $free_instr{typeidx : uN}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.69 - def $free_instr{`sx?` : sx?, typeidx : uN, u32 : uN}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.65 - def $free_instr{typeidx : uN, u32 : uN}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.60 - def $free_instr{typeidx : uN}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.68 - def $free_instr{typeidx : uN}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.70 - def $free_instr{typeidx : uN, u32 : uN}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 - def $free_instr{typeidx : uN, dataidx : uN}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:528.1-529.51 - def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.64 - def $free_instr{`sx?` : sx?, typeidx : uN}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.60 - def $free_instr{typeidx : uN}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.32 - def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_61{typeidx : uN, var_0 : free}: + `%%`(`STRUCT.NEW`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_62{typeidx : uN, var_0 : free}: + `%%`(`STRUCT.NEW_DEFAULT`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_63{`sx?` : sx?, typeidx : uN, u32 : uN, var_0 : free}: + `%%`(`STRUCT.GET`_instr(sx#43188?{sx#43188 <- `sx?`}, typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_64{typeidx : uN, u32 : uN, var_0 : free}: + `%%`(`STRUCT.SET`_instr(typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_65{typeidx : uN, var_0 : free}: + `%%`(`ARRAY.NEW`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_66{typeidx : uN, var_0 : free}: + `%%`(`ARRAY.NEW_DEFAULT`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_67{typeidx : uN, u32 : uN, var_0 : free}: + `%%`(`ARRAY.NEW_FIXED`_instr(typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_68{typeidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.NEW_DATA`_instr(typeidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_69{typeidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_70{`sx?` : sx?, typeidx : uN, var_0 : free}: + `%%`(`ARRAY.GET`_instr(sx#43189?{sx#43189 <- `sx?`}, typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_71{typeidx : uN, var_0 : free}: + `%%`(`ARRAY.SET`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_72: + `%%`(`ARRAY.LEN`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.61 - def $free_instr{typeidx : uN}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.55 - def $free_instr{typeidx_1 : uN, typeidx_2 : uN}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-537.51 - def $free_instr{typeidx : uN, dataidx : uN}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:538.1-539.51 - def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.41 - def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_73{typeidx : uN, var_0 : free}: + `%%`(`ARRAY.FILL`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_74{typeidx_1 : uN, typeidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.COPY`_instr(typeidx_1, typeidx_2), var_0 +++ var_1) + -- fun_free_typeidx: `%%`(typeidx_2, var_1) + -- fun_free_typeidx: `%%`(typeidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_75{typeidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.INIT_DATA`_instr(typeidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_76{typeidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_77: + `%%`(`EXTERN.CONVERT_ANY`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 - def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_78: + `%%`(`ANY.CONVERT_EXTERN`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 - def $free_instr{localidx : uN}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 - def $free_instr{localidx : uN}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.63 - def $free_instr{localidx : uN}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.67 - def $free_instr{globalidx : uN}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.67 - def $free_instr{globalidx : uN}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:551.1-551.63 - def $free_instr{tableidx : uN}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.63 - def $free_instr{tableidx : uN}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.64 - def $free_instr{tableidx : uN}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-554.64 - def $free_instr{tableidx : uN}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.64 - def $free_instr{tableidx : uN}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.59 - def $free_instr{tableidx_1 : uN, tableidx_2 : uN}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.53 - def $free_instr{tableidx : uN, elemidx : uN}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-560.60 - def $free_instr{elemidx : uN}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-563.49 - def $free_instr{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-565.49 - def $free_instr{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-567.49 - def $free_instr{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:568.1-569.49 - def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:570.1-571.49 - def $free_instr{vectype : vectype, memidx : uN, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-573.49 - def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.59 - def $free_instr{memidx : uN}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.59 - def $free_instr{memidx : uN}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:576.1-576.59 - def $free_instr{memidx : uN}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.51 - def $free_instr{memidx_1 : uN, memidx_2 : uN}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-580.49 - def $free_instr{memidx : uN, dataidx : uN}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:581.1-581.60 - def $free_instr{dataidx : uN}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.1-421.31 -def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:589.1-590.47 - def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_79{localidx : uN, var_0 : free}: + `%%`(`LOCAL.GET`_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_80{localidx : uN, var_0 : free}: + `%%`(`LOCAL.SET`_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_81{localidx : uN, var_0 : free}: + `%%`(`LOCAL.TEE`_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_82{globalidx : uN, var_0 : free}: + `%%`(`GLOBAL.GET`_instr(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_83{globalidx : uN, var_0 : free}: + `%%`(`GLOBAL.SET`_instr(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_84{tableidx : uN, var_0 : free}: + `%%`(`TABLE.GET`_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_85{tableidx : uN, var_0 : free}: + `%%`(`TABLE.SET`_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_86{tableidx : uN, var_0 : free}: + `%%`(`TABLE.SIZE`_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_87{tableidx : uN, var_0 : free}: + `%%`(`TABLE.GROW`_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_88{tableidx : uN, var_0 : free}: + `%%`(`TABLE.FILL`_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_89{tableidx_1 : uN, tableidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(`TABLE.COPY`_instr(tableidx_1, tableidx_2), var_0 +++ var_1) + -- fun_free_tableidx: `%%`(tableidx_2, var_1) + -- fun_free_tableidx: `%%`(tableidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_90{tableidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(`TABLE.INIT`_instr(tableidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_91{elemidx : uN, var_0 : free}: + `%%`(`ELEM.DROP`_instr(elemidx), var_0) + -- fun_free_elemidx: `%%`(elemidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_92{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(LOAD_instr(numtype, loadop#1?{loadop#1 <- `loadop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_93{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(STORE_instr(numtype, storeop#1?{storeop#1 <- `storeop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_94{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VLOAD_instr(vectype, vloadop#1?{vloadop#1 <- `vloadop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_95{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_96{vectype : vectype, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VSTORE_instr(vectype, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_97{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_98{memidx : uN, var_0 : free}: + `%%`(`MEMORY.SIZE`_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_99{memidx : uN, var_0 : free}: + `%%`(`MEMORY.GROW`_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_100{memidx : uN, var_0 : free}: + `%%`(`MEMORY.FILL`_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_101{memidx_1 : uN, memidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(`MEMORY.COPY`_instr(memidx_1, memidx_2), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx_2, var_1) + -- fun_free_memidx: `%%`(memidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_102{memidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(`MEMORY.INIT`_instr(memidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_103{dataidx : uN, var_0 : free}: + `%%`(`DATA.DROP`_instr(dataidx), var_0) + -- fun_free_dataidx: `%%`(dataidx, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation fun_free_block: `%%`(instr*, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule fun_free_block_case_0{`instr*` : instr*, free : free, `var_2*` : free*, var_1 : free, var_0 : labelidx*}: + `%%`(instr#4*{instr#4 <- `instr*`}, free[LABELS_free = var_0]) + -- if (|`var_2*`| = |`instr*`|) + -- (fun_free_instr: `%%`(instr#5, var_2))*{var_2 <- `var_2*`, instr#5 <- `instr*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_shift_labelidxs: `%%`(free.LABELS_free, var_0) -- wf_free: `%`(free) - -- if (free = $free_list($free_instr(instr)*{instr <- `instr*`})) + -- if (free = var_1) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_expr(expr : expr) : free +relation fun_free_expr: `%%`(expr, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) + rule fun_free_expr_case_0{`instr*` : instr*, `var_1*` : free*, var_0 : free}: + `%%`(instr#6*{instr#6 <- `instr*`}, var_0) + -- if (|`var_1*`| = |`instr*`|) + -- (fun_free_instr: `%%`(instr, var_1))*{var_1 <- `var_1*`, instr <- `instr*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = @@ -4751,98 +6298,184 @@ relation wf_module: `%`(module) -- (wf_start: `%`(start))?{start <- `start?`} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_type(type : type) : free +relation fun_free_type: `%%`(type, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) + rule fun_free_type_case_0{rectype : rectype, var_0 : free}: + `%%`(TYPE_type(rectype), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_tag(tag : tag) : free +relation fun_free_tag: `%%`(tag, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) + rule fun_free_tag_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_tag(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_global(global : global) : free +relation fun_free_global: `%%`(global, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) + rule fun_free_global_case_0{globaltype : globaltype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(GLOBAL_global(globaltype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_globaltype: `%%`(globaltype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_mem(mem : mem) : free +relation fun_free_mem: `%%`(mem, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) + rule fun_free_mem_case_0{memtype : memtype, var_0 : free}: + `%%`(MEMORY_mem(memtype), var_0) + -- fun_free_memtype: `%%`(memtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_table(table : table) : free +relation fun_free_table: `%%`(table, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) + rule fun_free_table_case_0{tabletype : tabletype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(TABLE_table(tabletype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_tabletype: `%%`(tabletype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_local(local : local) : free +relation fun_free_local: `%%`(local, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) + rule fun_free_local_case_0{t : valtype, var_0 : free}: + `%%`(LOCAL_local(t), var_0) + -- fun_free_valtype: `%%`(t, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_func(func : func) : free +relation fun_free_func: `%%`(func, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] + rule fun_free_func_case_0{typeidx : uN, `local*` : local*, expr : instr*, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(FUNC_func(typeidx, local#1*{local#1 <- `local*`}, expr), var_0 +++ var_1 +++ var_3[LOCALS_free = []]) + -- fun_free_block: `%%`(expr, var_3) + -- if (|`var_2*`| = |`local*`|) + -- (fun_free_local: `%%`(local, var_2))*{var_2 <- `var_2*`, local <- `local*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_datamode(datamode : datamode) : free +relation fun_free_datamode: `%%`(datamode, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) + rule fun_free_datamode_case_0{memidx : uN, expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_datamode(memidx, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_memidx: `%%`(memidx, var_0) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_datamode_case_1: + `%%`(PASSIVE_datamode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_data(data : data) : free +relation fun_free_data: `%%`(data, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) + rule fun_free_data_case_0{`byte*` : byte*, datamode : datamode, var_0 : free}: + `%%`(DATA_data(byte#1*{byte#1 <- `byte*`}, datamode), var_0) + -- fun_free_datamode: `%%`(datamode, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_elemmode(elemmode : elemmode) : free +relation fun_free_elemmode: `%%`(elemmode, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) + rule fun_free_elemmode_case_0{tableidx : uN, expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_elemmode(tableidx, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_elemmode_case_1: + `%%`(PASSIVE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_elemmode_case_2: + `%%`(DECLARE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_elem(elem : elem) : free +relation fun_free_elem: `%%`(elem, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) + rule fun_free_elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(ELEM_elem(reftype, expr#358*{expr#358 <- `expr*`}, elemmode), var_0 +++ var_1 +++ var_3) + -- fun_free_elemmode: `%%`(elemmode, var_3) + -- if (|`var_2*`| = |`expr*`|) + -- (fun_free_expr: `%%`(expr, var_2))*{var_2 <- `var_2*`, expr <- `expr*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_reftype: `%%`(reftype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_start(start : start) : free +relation fun_free_start: `%%`(start, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) + rule fun_free_start_case_0{funcidx : uN, var_0 : free}: + `%%`(START_start(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_import(import : import) : free +relation fun_free_import: `%%`(import, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) + rule fun_free_import_case_0{name_1 : name, name_2 : name, externtype : externtype, var_0 : free}: + `%%`(IMPORT_import(name_1, name_2, externtype), var_0) + -- fun_free_externtype: `%%`(externtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_export(export : export) : free +relation fun_free_export: `%%`(export, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) + rule fun_free_export_case_0{name : name, externidx : externidx, var_0 : free}: + `%%`(EXPORT_export(name, externidx), var_0) + -- fun_free_externidx: `%%`(externidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_module(module : module) : free +relation fun_free_module: `%%`(module, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) + rule fun_free_module_case_0{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `var_21*` : free*, var_20 : free, `var_19*` : free*, var_18 : free, `var_17?` : free?, var_16 : free, `var_15*` : free*, var_14 : free, `var_13*` : free*, var_12 : free, `var_11*` : free*, var_10 : free, `var_9*` : free*, var_8 : free, `var_7*` : free*, var_6 : free, `var_5*` : free*, var_4 : free, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(MODULE_module(`%`_list(type#1*{type#1 <- `type*`}), `%`_list(import#1*{import#1 <- `import*`}), `%`_list(tag#1*{tag#1 <- `tag*`}), `%`_list(global#1*{global#1 <- `global*`}), `%`_list(mem#1*{mem#1 <- `mem*`}), `%`_list(table#1*{table#1 <- `table*`}), `%`_list(func#1*{func#1 <- `func*`}), `%`_list(data#1*{data#1 <- `data*`}), `%`_list(elem#1*{elem#1 <- `elem*`}), start#1?{start#1 <- `start?`}, `%`_list(export#1*{export#1 <- `export*`})), var_0 +++ var_2 +++ var_4 +++ var_6 +++ var_8 +++ var_10 +++ var_12 +++ var_14 +++ var_16 +++ var_18 +++ var_20) + -- if (|`var_21*`| = |`export*`|) + -- (fun_free_export: `%%`(export, var_21))*{var_21 <- `var_21*`, export <- `export*`} + -- fun_free_list: `%%`(var_21*{var_21 <- `var_21*`}, var_20) + -- if (|`var_19*`| = |`import*`|) + -- (fun_free_import: `%%`(import, var_19))*{var_19 <- `var_19*`, import <- `import*`} + -- fun_free_list: `%%`(var_19*{var_19 <- `var_19*`}, var_18) + -- if ((`var_17?` = ?()) <=> (`start?` = ?())) + -- (fun_free_start: `%%`(start, var_17))?{var_17 <- `var_17?`, start <- `start?`} + -- fun_free_opt: `%%`(var_17?{var_17 <- `var_17?`}, var_16) + -- if (|`var_15*`| = |`elem*`|) + -- (fun_free_elem: `%%`(elem, var_15))*{var_15 <- `var_15*`, elem <- `elem*`} + -- fun_free_list: `%%`(var_15*{var_15 <- `var_15*`}, var_14) + -- if (|`var_13*`| = |`data*`|) + -- (fun_free_data: `%%`(data, var_13))*{var_13 <- `var_13*`, data <- `data*`} + -- fun_free_list: `%%`(var_13*{var_13 <- `var_13*`}, var_12) + -- if (|`var_11*`| = |`func*`|) + -- (fun_free_func: `%%`(func, var_11))*{var_11 <- `var_11*`, func <- `func*`} + -- fun_free_list: `%%`(var_11*{var_11 <- `var_11*`}, var_10) + -- if (|`var_9*`| = |`table*`|) + -- (fun_free_table: `%%`(table, var_9))*{var_9 <- `var_9*`, table <- `table*`} + -- fun_free_list: `%%`(var_9*{var_9 <- `var_9*`}, var_8) + -- if (|`var_7*`| = |`mem*`|) + -- (fun_free_mem: `%%`(mem, var_7))*{var_7 <- `var_7*`, mem <- `mem*`} + -- fun_free_list: `%%`(var_7*{var_7 <- `var_7*`}, var_6) + -- if (|`var_5*`| = |`global*`|) + -- (fun_free_global: `%%`(global, var_5))*{var_5 <- `var_5*`, global <- `global*`} + -- fun_free_list: `%%`(var_5*{var_5 <- `var_5*`}, var_4) + -- if (|`var_3*`| = |`tag*`|) + -- (fun_free_tag: `%%`(tag, var_3))*{var_3 <- `var_3*`, tag <- `tag*`} + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- if (|`var_1*`| = |`type*`|) + -- (fun_free_type: `%%`(type, var_1))*{var_1 <- `var_1*`, type <- `type*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $funcidx_module(module : module) : funcidx* +relation fun_funcidx_module: `%%`(module, funcidx*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $funcidx_module{module : module}(module) = $free_module(module).FUNCS_free + rule fun_funcidx_module_case_0{module : module, var_0 : free}: + `%%`(module, var_0.FUNCS_free) + -- fun_free_module: `%%`(module, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $dataidx_funcs(func*) : dataidx* +relation fun_dataidx_funcs: `%%`(func*, dataidx*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $dataidx_funcs{`func*` : func*}(func*{func <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).DATAS_free + rule fun_dataidx_funcs_case_0{`func*` : func*, `var_1*` : free*, var_0 : free}: + `%%`(func#2*{func#2 <- `func*`}, var_0.DATAS_free) + -- if (|`var_1*`| = |`func*`|) + -- (fun_free_func: `%%`(func, var_1))*{var_1 <- `var_1*`, func <- `func*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax init = @@ -4903,60 +6536,97 @@ relation wf_context: `%`(context) -- (wf_uN: `%%`(32, var_11))*{var_11 <- var_11} -- (wf_subtype: `%`(var_12))*{var_12 <- var_12} +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_with_locals_before_fun_with_locals_case_2: `%%%`(context, localidx*, localtype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_with_locals_case_1{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, var_0 : context?}: + `%%%`(C, [x_1] ++ x#1*{x#1 <- `x*`}, [lct_1] ++ lct#1*{lct#1 <- `lct*`}) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_with_locals_case_0{C : context}: + `%%%`(C, [], []) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.158 -def $with_locals(context : context, localidx*, localtype*) : context? - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.34 - def $with_locals{C : context}(C, [], []) = ?(C) - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:52.1-52.90 - def $with_locals{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) - def $with_locals{x0 : context, x1 : localidx*, x2 : localtype*}(x0, x1, x2) = ?() - -- otherwise +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation fun_with_locals: `%%%%`(context, localidx*, localtype*, context?) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_0{C : context}: + `%%%%`(C, [], [], ?(C)) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_1{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, var_0 : context?}: + `%%%%`(C, [x_1] ++ x#1*{x#1 <- `x*`}, [lct_1] ++ lct#1*{lct#1 <- `lct*`}, var_0) + -- fun_with_locals: `%%%%`(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}, var_0) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_2{x0 : context, x1 : localidx*, x2 : localtype*}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_with_locals_before_fun_with_locals_case_2: `%%%`(x0, x1, x2) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 -def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 - def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:72.1-72.101 - def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 +relation fun_clos_deftypes: `%%`(deftype*, deftype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 + rule fun_clos_deftypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 + rule fun_clos_deftypes_case_1{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%`(dt#2*{dt#2 <- `dt*`} ++ [dt_n], dt'*{dt' <- `dt'*`} ++ [var_0]) + -- fun_clos_deftypes: `%%`(dt#3*{dt#3 <- `dt*`}, var_1) + -- fun_subst_all_deftype: `%%%`(dt_n, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) + -- if (dt'#1*{dt'#1 <- `dt'*`} = var_1) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_valtype(context : context, valtype : valtype) : valtype +relation fun_clos_valtype: `%%%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_valtype_case_0{C : context, t : valtype, `dt*` : deftype*, var_1 : deftype*, var_0 : valtype}: + `%%%`(C, t, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- if (dt#4*{dt#4 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_deftype(context : context, deftype : deftype) : deftype +relation fun_clos_deftype: `%%%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_deftype_case_0{C : context, dt : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%%`(C, dt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_deftype: `%%%`(dt, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) + -- if (dt'#2*{dt'#2 <- `dt'*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_tagtype(context : context, tagtype : tagtype) : tagtype +relation fun_clos_tagtype: `%%%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_tagtype{C : context, jt : typeuse, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_tagtype_case_0{C : context, jt : typeuse, `dt*` : deftype*, var_1 : deftype*, var_0 : tagtype}: + `%%%`(C, jt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_tagtype: `%%%`(jt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- if (dt#5*{dt#5 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_externtype(context : context, externtype : externtype) : externtype +relation fun_clos_externtype: `%%%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_externtype_case_0{C : context, xt : externtype, `dt*` : deftype*, var_1 : deftype*, var_0 : externtype}: + `%%%`(C, xt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_externtype: `%%%`(xt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- if (dt#6*{dt#6 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_moduletype(context : context, moduletype : moduletype) : moduletype +relation fun_clos_moduletype: `%%%`(context, moduletype, moduletype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_moduletype_case_0{C : context, mmt : moduletype, `dt*` : deftype*, var_1 : deftype*, var_0 : moduletype}: + `%%%`(C, mmt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_moduletype: `%%%`(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- if (dt#7*{dt#7 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -5000,10 +6670,11 @@ relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: + rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*, var_0 : subtype}: `%~~%`(deftype, comptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) - -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- if (var_0 = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- fun_unrolldt: `%%`(deftype, var_0) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) @@ -5020,13 +6691,22 @@ def $before(typeuse : typeuse, nat : nat) : bool def $before{typeuse : typeuse, i : nat}(typeuse, i) = true ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -def $unrollht_(context : context, heaptype : heaptype) : subtype +relation fun_unrollht_: `%%%`(context, heaptype, subtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht_{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) + rule fun_unrollht__case_0{rectype : rectype, n : n, C : context, var_0 : subtype}: + `%%%`(C, _DEF_heaptype(rectype, n), var_0) + -- fun_unrolldt: `%%`(_DEF_deftype(rectype, n), var_0) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht_{C : context, typeidx : uN}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[$proj_uN_0(typeidx).0]) + rule fun_unrollht__case_1{C : context, typeidx : uN, var_0 : subtype}: + `%%%`(C, _IDX_heaptype(typeidx), var_0) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(typeidx).0], var_0) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht_{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] + rule fun_unrollht__case_2{C : context, i : nat}: + `%%%`(C, REC_heaptype(i), C.RECS_context[i]) + -- if (i < |C.RECS_context|) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -5035,12 +6715,12 @@ rec { relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: - `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) + `%|-%:OK`(C, $heaptype_absheaptype(absheaptype)) -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: - `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) + `%|-%:OK`(C, $heaptype_typeuse(typeuse)) -- wf_context: `%`(C) -- wf_typeuse: `%`(typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) @@ -5064,19 +6744,19 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:34.1-36.35 rule num{C : context, numtype : numtype}: - `%|-%:OK`(C, (numtype : numtype <: valtype)) + `%|-%:OK`(C, $valtype_numtype(numtype)) -- wf_context: `%`(C) -- Numtype_ok: `%|-%:OK`(C, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: - `%|-%:OK`(C, (vectype : vectype <: valtype)) + `%|-%:OK`(C, $valtype_vectype(vectype)) -- wf_context: `%`(C) -- Vectype_ok: `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: - `%|-%:OK`(C, (reftype : reftype <: valtype)) + `%|-%:OK`(C, $valtype_reftype(reftype)) -- wf_context: `%`(C) -- wf_reftype: `%`(reftype) -- Reftype_ok: `%|-%:OK`(C, reftype) @@ -5108,7 +6788,7 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: - `%|-%:OK`(C, (deftype : deftype <: typeuse)) + `%|-%:OK`(C, $typeuse_deftype(deftype)) -- wf_context: `%`(C) -- Deftype_ok: `%|-%:OK`(C, deftype) @@ -5134,14 +6814,14 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:122.1-124.35 rule val{C : context, valtype : valtype}: - `%|-%:OK`(C, (valtype : valtype <: storagetype)) + `%|-%:OK`(C, $storagetype_valtype(valtype)) -- wf_context: `%`(C) -- wf_valtype: `%`(valtype) -- Valtype_ok: `%|-%:OK`(C, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: - `%|-%:OK`(C, (packtype : packtype <: storagetype)) + `%|-%:OK`(C, $storagetype_packtype(packtype)) -- wf_context: `%`(C) -- Packtype_ok: `%|-%:OK`(C, packtype) @@ -5172,7 +6852,7 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:167.1-176.49 - rule _{C : context, `typeuse*` : typeuse*, comptype : comptype, i : nat, `comptype'*` : comptype*, `typeuse'**` : typeuse**}: + rule _{C : context, `typeuse*` : typeuse*, comptype : comptype, i : nat, `comptype'*` : comptype*, `typeuse'**` : typeuse**, `var_0*` : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype), OK_oktypenat(i)) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) @@ -5181,10 +6861,13 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (Typeuse_ok: `%|-%:OK`(C, typeuse))*{typeuse <- `typeuse*`} -- (if $before(typeuse, i))*{typeuse <- `typeuse*`} - -- if (|`comptype'*`| = |`typeuse*`|) - -- (if ($unrollht_(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} + -- if (|`var_0*`| = |`comptype'*`|) + -- if (|`var_0*`| = |`typeuse'**`|) + -- (if (var_0 = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- if (|`var_0*`| = |`typeuse*`|) + -- (fun_unrollht_: `%%%`(C, $heaptype_typeuse(typeuse), var_0))*{var_0 <- `var_0*`, typeuse <- `typeuse*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) @@ -5244,19 +6927,22 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 - rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype, var_1 : deftype, var_0 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- wf_context: `%`(C) - -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) + -- if (var_0 = var_1) + -- fun_clos_deftype: `%%%`(C, deftype_2, var_1) + -- fun_clos_deftype: `%%%`(C, deftype_1, var_0) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 - rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat, var_0 : subtype}: `%|-%<:%`(C, deftype_1, deftype_2) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- if (var_0 = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |typeuse*{typeuse <- `typeuse*`}|) - -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) + -- fun_unrolldt: `%%`(deftype_1, var_0) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) @@ -5307,7 +6993,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) + `%|-%<:%`(C, $heaptype_deftype(deftype), STRUCT_heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) @@ -5315,7 +7001,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) + `%|-%<:%`(C, $heaptype_deftype(deftype), ARRAY_heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) @@ -5323,7 +7009,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) + `%|-%<:%`(C, $heaptype_deftype(deftype), FUNC_heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(FUNC_heaptype) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5331,7 +7017,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) + `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) @@ -5342,7 +7028,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) - -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype), heaptype) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: @@ -5351,7 +7037,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) - -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype)) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: @@ -5385,7 +7071,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: - `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) + `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[j])) -- if (j < |typeuse*{typeuse <- `typeuse*`}|) -- wf_context: `%`(C) -- wf_heaptype: `%`(REC_heaptype(i)) @@ -5466,19 +7152,19 @@ relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:114.1-116.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: - `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) + `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) -- wf_context: `%`(C) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: - `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) + `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) -- wf_context: `%`(C) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: - `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) + `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) -- wf_context: `%`(C) -- wf_reftype: `%`(reftype_1) -- wf_reftype: `%`(reftype_2) @@ -5506,7 +7192,7 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:162.1-164.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: - `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) + `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) -- wf_context: `%`(C) -- wf_valtype: `%`(valtype_1) -- wf_valtype: `%`(valtype_2) @@ -5514,7 +7200,7 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: - `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) + `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) -- wf_context: `%`(C) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) @@ -5565,7 +7251,7 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) relation Expand_use: `%~~_%%`(typeuse, context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: - `%~~_%%`((deftype : deftype <: typeuse), C, comptype) + `%~~_%%`($typeuse_deftype(deftype), C, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(comptype) -- Expand: `%~~%`(deftype, comptype) @@ -5593,7 +7279,7 @@ relation wf_oktypeidx: `%`(oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `comptype'*` : comptype*, `yy**` : typeuse**}: + rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `comptype'*` : comptype*, `yy**` : typeuse**, `var_0*` : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) @@ -5602,11 +7288,14 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} - -- if (|`comptype'*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} - -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} + -- if (|`var_0*`| = |`comptype'*`|) + -- if (|`var_0*`| = |`yy**`|) + -- (if (var_0 = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `yy*` <- `yy**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- if (|`var_0*`| = |`x*`|) + -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} + -- (fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(x).0], var_0))*{var_0 <- `var_0*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -5668,7 +7357,7 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) -- wf_context: `%`(C) -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) - -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size($numtype_addrtype(addrtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) @@ -5677,7 +7366,7 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) -- wf_context: `%`(C) -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) - -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size($numtype_addrtype(addrtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5759,7 +7448,7 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) + `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) -- wf_context: `%`(C) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) @@ -5841,10 +7530,10 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) - -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5870,28 +7559,30 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: + rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*, var_0 : deftype?}: `%|-%:OK`(C, CATCH_catch(x, l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if (var_0 =/= ?()) + -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: + rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*, var_0 : deftype?}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if (var_0 =/= ?()) + -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: @@ -5910,32 +7601,95 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec -def $default_(valtype : valtype) : val?? +relation fun_default__before_fun_default__case_7: `%`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_6{ht : heaptype}: + `%`(REF_valtype(?(), ht)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_5{ht : heaptype}: + `%`(REF_valtype(?(NULL_null), ht)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_4: + `%`(V128_valtype) + -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_3{var_0 : fN}: + `%`(F64_valtype) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_2{var_0 : fN}: + `%`(F32_valtype) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_1: + `%`(I64_valtype) + -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_0: + `%`(I32_valtype) + -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation fun_default_: `%%`(valtype, val??) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_0: + `%%`(I32_valtype, ?(?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))))) + -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0))))) - -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) + rule fun_default__case_1: + `%%`(I64_valtype, ?(?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))))) + -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_2{var_0 : fN}: + `%%`(F32_valtype, ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))))) - -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + rule fun_default__case_3{var_0 : fN}: + `%%`(F64_valtype, ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(?(VCONST_val(Vnn, `%`_vec_(0)))) - -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) + rule fun_default__case_4: + `%%`(V128_valtype, ?(?(VCONST_val(V128_vectype, `%`_vec_(0))))) + -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) + rule fun_default__case_5{ht : heaptype}: + `%%`(REF_valtype(?(NULL_null), ht), ?(?(`REF.NULL_ADDR`_val))) -- wf_val: `%`(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) - def $default_{x0 : valtype}(x0) = ?() - -- otherwise + rule fun_default__case_6{ht : heaptype}: + `%%`(REF_valtype(?(), ht), ?(?())) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_7{x0 : valtype}: + `%%`(x0, ?()) + -- ~ fun_default__before_fun_default__case_7: `%`(x0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule _{t : valtype}: + rule _{t : valtype, var_0 : val??}: `|-%DEFAULTABLE`(t) -- wf_valtype: `%`(t) - -- if ($default_(t) =/= ?()) - -- if (!($default_(t)) =/= ?()) + -- if (var_0 =/= ?()) + -- if (!(var_0) =/= ?()) + -- fun_default_: `%%`(t, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) @@ -5944,12 +7698,14 @@ relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) - -- if (m < (2 ^ $size((at : addrtype <: numtype)))) + -- if (m < (2 ^ $size($numtype_addrtype(at)))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -def $is_packtype(storagetype : storagetype) : bool +relation fun_is_packtype: `%%`(storagetype, bool) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - def $is_packtype{zt : storagetype}(zt) = (zt =/= ($unpack(zt) : valtype <: storagetype)) + rule fun_is_packtype_case_0{zt : storagetype, var_0 : valtype}: + `%%`(zt, (zt =/= $storagetype_valtype(var_0))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rec { @@ -5996,7 +7752,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') - -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) + -- if ((t' = $valtype_numtype(numtype)) \/ (t' = $valtype_vectype(vectype))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: @@ -6086,32 +7842,34 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 - rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, var_0 : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(var_0)]))) -- wf_context: `%`(C) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(var_0)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 - rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, var_0 : reftype}: + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) -- wf_context: `%`(C) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + -- Reftype_sub: `%|-%<:%`(C, var_0, rt) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: @@ -6135,10 +7893,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: - `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`(C) -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6190,11 +7948,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6209,17 +7967,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 - rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*, var_0 : deftype?}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`(C) -- wf_instr: `%`(THROW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if (var_0 =/= ?()) + -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: @@ -6252,10 +8011,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule `ref.func`{C : context, x : idx, dt : deftype}: - `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`REF.FUNC`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (|C.REFS_context| > 0) @@ -6293,20 +8052,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule `ref.test`{C : context, rt : reftype, rt' : reftype}: - `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(`REF.TEST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: - `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- wf_context: `%`(C) -- wf_instr: `%`(`REF.CAST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') @@ -6319,17 +8078,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 - rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: - `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*, `var_0*` : valtype*}: + `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (|`var_0*`| = |`zt*`|) + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 - rule `struct.new_default`{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + rule `struct.new_default`{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*, `var_0*` : valtype*}: `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) @@ -6337,47 +8098,53 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} + -- (Defaultable: `|-%DEFAULTABLE`(var_0))*{var_0 <- `var_0*`} + -- if (|`var_0*`| = |`zt*`|) + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 - rule `struct.get`{C : context, `sx?` : sx?, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: - `%|-%:%`(C, `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + rule `struct.get`{C : context, `sx?` : sx?, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([var_0]))) -- wf_context: `%`(C) -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([var_0]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> var_1) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 - rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*}: - `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*, var_0 : valtype}: + `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 - rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([var_0 I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([var_0 I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 - rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype}: + rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype, var_0 : valtype}: `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) @@ -6385,17 +8152,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + -- Defaultable: `|-%DEFAULTABLE`(var_0) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 - rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype(var_0^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(var_0^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule `array.new_elem`{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: @@ -6403,14 +8172,14 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 - rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: + rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype, var_0 : valtype}: `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) @@ -6418,30 +8187,34 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) + -- if ((var_0 = $valtype_numtype(numtype)) \/ (var_0 = $valtype_vectype(vectype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 - rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([var_0]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([var_0]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> var_1) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 - rule `array.set`{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + rule `array.set`{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule `array.len`{C : context}: @@ -6451,14 +8224,15 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 - rule `array.fill`{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + rule `array.fill`{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule `array.copy`{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: @@ -6484,10 +8258,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) - -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[$proj_uN_0(y).0] : reftype <: storagetype), zt) + -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 - rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: + rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype, var_0 : valtype}: `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) @@ -6495,9 +8269,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) + -- if ((var_0 = $valtype_numtype(numtype)) \/ (var_0 = $valtype_vectype(vectype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: @@ -6567,60 +8342,60 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- wf_context: `%`(C) -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: - `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_context: `%`(C) -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: - `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_context: `%`(C) -- wf_instr: `%`(`TABLE.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`TABLE.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: - `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) @@ -6631,11 +8406,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: - `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_reftype: `%`(rt_2) -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) @@ -6655,40 +8430,40 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_context: `%`(C) -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_context: `%`(C) -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: - `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) @@ -6698,10 +8473,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) @@ -6719,10 +8494,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) -- wf_context: `%`(C) -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) @@ -6730,10 +8505,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + `%|-%:%`(C, LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) @@ -6741,10 +8516,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) @@ -6752,10 +8527,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(C, STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) @@ -6763,10 +8538,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) @@ -6774,10 +8549,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) @@ -6785,10 +8560,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) @@ -6796,10 +8571,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) @@ -6807,10 +8582,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) @@ -6819,10 +8594,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) @@ -6830,10 +8605,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: - `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) @@ -6842,45 +8617,45 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_}: - `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) -- wf_context: `%`(C) -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: - `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) -- wf_context: `%`(C) -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: - `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) -- wf_context: `%`(C) -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: - `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: - `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: - `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) -- wf_context: `%`(C) -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 rule vconst{C : context, c : vec_}: @@ -6974,35 +8749,38 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 - rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: + rule vshuffle{C : context, sh : bshape, `i*` : laneidx*, var_0 : dim}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} + -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0(var_0).0)))*{i <- `i*`} + -- fun_dim: `%%`($proj_bshape_0(sh).0, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: - `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 - rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: - `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx, var_0 : dim}: + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) -- wf_context: `%`(C) -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) - -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) + -- fun_dim: `%%`(sh, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 - rule vreplace_lane{C : context, sh : shape, i : laneidx}: - `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + rule vreplace_lane{C : context, sh : shape, i : laneidx, var_0 : dim}: + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) + -- fun_dim: `%%`(sh, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: @@ -7048,7 +8826,7 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 - rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: + rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*, var_0 : context?}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- wf_context: `%`(C) -- wf_instr: `%`(instr_1) @@ -7063,8 +8841,9 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- if (|`init*`| = |`x_1*`|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} - -- if ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}) =/= ?()) - -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- if (var_0 =/= ?()) + -- Instrs_ok: `%|-%:%`(!(var_0), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- fun_with_locals: `%%%%`(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: @@ -7101,11 +8880,12 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule _{t : valtype}: + rule _{t : valtype, var_0 : val??}: `|-%NONDEFAULTABLE`(t) -- wf_valtype: `%`(t) - -- if ($default_(t) =/= ?()) - -- if (!($default_(t)) = ?()) + -- if (var_0 =/= ?()) + -- if (!(var_0) = ?()) + -- fun_default_: `%%`(t, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) @@ -7192,12 +8972,12 @@ relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_}: - `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) + `%|-%CONST`(C, BINOP_instr($numtype_addrtype(Inn), binop)) -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) + -- wf_instr: `%`(BINOP_instr($numtype_addrtype(Inn), binop)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, MUL_binop_Inn)) -- if (|[I32_Inn I64_Inn]| > 0) -- if (Inn <- [I32_Inn I64_Inn]) -- if (|[mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]| > 0) @@ -7226,23 +9006,25 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: + rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx, var_0 : deftype*}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) - -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) + -- if (dt*{dt <- `dt*`} = var_0) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) + -- fun_rolldt: `%%%`(x, rectype, var_0) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, tagtype : tagtype}: - `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + rule _{C : context, tagtype : tagtype, var_0 : tagtype}: + `%|-%:%`(C, TAG_tag(tagtype), var_0) -- wf_context: `%`(C) -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) + -- fun_clos_tagtype: `%%%`(C, tagtype, var_0) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Global_ok: `%|-%:%`(context, global, globaltype) @@ -7275,7 +9057,7 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) - -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(rt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Local_ok: `%|-%:%`(context, local, localtype) @@ -7326,7 +9108,7 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Data_ok: `%|-%:%`(context, data, datatype) @@ -7363,7 +9145,7 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Elem_ok: `%|-%:%`(context, elem, elemtype) @@ -7373,7 +9155,7 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) -- wf_context: `%`(C) -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) -- Reftype_ok: `%|-%:OK`(C, elemtype) - -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} + -- (Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(elemtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7390,11 +9172,12 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: - `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + rule _{C : context, name_1 : name, name_2 : name, xt : externtype, var_0 : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), var_0) -- wf_context: `%`(C) -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) + -- fun_clos_externtype: `%%%`(C, xt, var_0) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Externidx_ok: `%|-%:%`(context, externidx, externtype) @@ -7436,10 +9219,10 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: - `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) -- wf_context: `%`(C) -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) @@ -7511,16 +9294,18 @@ relation wf_nonfuncs: `%`(nonfuncs) -- (wf_export: `%`(export))*{export <- `export*`} ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* +relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) + rule fun_funcidx_nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*, var_0 : funcidx*}: + `%%`(`%%%%%%`_nonfuncs(global#2*{global#2 <- `global*`}, mem#2*{mem#2 <- `mem*`}, table#2*{table#2 <- `table*`}, elem#2*{elem#2 <- `elem*`}, start#2?{start#2 <- `start?`}, export#2*{export#2 <- `export*`}), var_0) + -- fun_funcidx_module: `%%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) + -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#3*{export#3 <- `export*`}))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: - `|-%:%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*, var_1 : funcidx*, var_0 : moduletype}: + `|-%:%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) -- wf_context: `%`(C) -- wf_context: `%`(C') -- (wf_name: `%`(nm))*{nm <- `nm*`} @@ -7554,12 +9339,14 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) -- if (C = C' +++ {TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) - -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}))) + -- if (x*{x <- `x*`} = var_1) -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) + -- fun_funcidx_nonfuncs: `%%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_1) + -- fun_clos_moduletype: `%%%`(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}), var_0) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed2 = @@ -7682,40 +9469,127 @@ def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $signed_(N : N, nat : nat) : int +relation fun_signed_: `%%%`(N, nat, int) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $signed_{N : nat, i : nat}(N, i) = (i : nat <:> int) + rule fun_signed__case_0{N : nat, i : nat}: + `%%%`(N, i, (i : nat <:> int)) -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $signed_{N : nat, i : nat}(N, i) = ((i : nat <:> int) - ((2 ^ N) : nat <:> int)) + rule fun_signed__case_1{N : nat, i : nat}: + `%%%`(N, i, ((i : nat <:> int) - ((2 ^ N) : nat <:> int))) -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inv_signed_(N : N, int : int) : nat +relation fun_inv_signed_: `%%%`(N, int, nat) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inv_signed_{N : nat, i : int}(N, i) = (i : int <:> nat) + rule fun_inv_signed__case_0{N : nat, i : int}: + `%%%`(N, i, (i : int <:> nat)) -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inv_signed_{N : nat, i : int}(N, i) = ((i + ((2 ^ N) : nat <:> int)) : int <:> nat) + rule fun_inv_signed__case_1{N : nat, i : int}: + `%%%`(N, i, ((i + ((2 ^ N) : nat <:> int)) : int <:> nat)) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $sx(storagetype : storagetype) : sx?? +relation fun_sx_before_fun_sx_case_7: `%`(storagetype) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?(?()) + rule fun_sx_case_6: + `%`(I16_storagetype) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(?(S_sx)) - def $sx{x0 : storagetype}(x0) = ?() - -- otherwise + rule fun_sx_case_5: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_4: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_0: + `%`(I32_storagetype) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_sx: `%%`(storagetype, sx??) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_0: + `%%`(I32_storagetype, ?(?())) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_1: + `%%`(I64_storagetype, ?(?())) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_2: + `%%`(F32_storagetype, ?(?())) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_3: + `%%`(F64_storagetype, ?(?())) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_4: + `%%`(V128_storagetype, ?(?())) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_5: + `%%`(I8_storagetype, ?(?(S_sx))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_6: + `%%`(I16_storagetype, ?(?(S_sx))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_7{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_sx_before_fun_sx_case_7: `%`(x0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $zero(lanetype : lanetype) : lane_ +relation fun_zero: `%%`(lanetype, lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_0: + `%%`(I32_lanetype, mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_1: + `%%`(I64_lanetype, mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_2: + `%%`(I8_lanetype, mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_3: + `%%`(I16_lanetype, mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) + rule fun_zero_case_4{var_0 : fN}: + `%%`(F32_lanetype, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + rule fun_zero_case_5{var_0 : fN}: + `%%`(F64_lanetype, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7749,7 +9623,8 @@ def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iabs_{N : nat, i_1 : uN}(N, i_1) = (if ($signed_(N, $proj_uN_0(i_1).0) >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + def $iabs_{N : nat, i_1 : uN, var_0 : int}(N, i_1) = (if (var_0 >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iclz_(N : N, iN : iN) : iN @@ -7761,13 +9636,18 @@ def $ictz_(N : N, iN : iN) : iN def $ipopcnt_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN +relation fun_iextend_: `%%%%%`(N, M, sx, iN, iN) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) + rule fun_iextend__case_0{N : nat, M : nat, i : uN}: + `%%%%%`(N, M, U_sx, i, `%`_iN(($proj_uN_0(i).0 \ (2 ^ M)))) -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) + rule fun_iextend__case_1{N : nat, M : nat, i : uN, var_1 : int, var_0 : nat}: + `%%%%%`(N, M, S_sx, i, `%`_iN(var_0)) + -- fun_signed_: `%%%`(M, ($proj_uN_0(i).0 \ (2 ^ M)), var_1) + -- fun_inv_signed_: `%%%`(N, var_1, var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN @@ -7788,34 +9668,58 @@ def $imul_(N : N, iN : iN, iN : iN) : iN -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? +relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + rule fun_idiv__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + rule fun_idiv__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)))) -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + rule fun_idiv__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?() - -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + rule fun_idiv__case_3{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: + `%%%%%`(N, S_sx, i_1, i_2, ?()) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) + rule fun_idiv__case_4{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? +relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + rule fun_irem__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + rule fun_irem__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))) -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + rule fun_irem__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) + rule fun_irem__case_3{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + -- if ((j_1 = var_1) /\ (j_2 = var_2)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7826,7 +9730,9 @@ def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 -- if ($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)) then i_1 else i_2) + def $imin_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 <= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7837,7 +9743,9 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 -- if ($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)) then i_1 else i_2) + def $imax_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 >= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7845,8 +9753,11 @@ def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 + var_2)), var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7854,8 +9765,11 @@ def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 - var_2)), var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7903,15 +9817,17 @@ def $ibitselect_(N : N, iN : iN, iN : iN, iN : iN) : iN def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ieqz_(N : N, iN : iN) : u32 +relation fun_ieqz_: `%%%`(N, iN, u32) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) + rule fun_ieqz__case_0{N : nat, i_1 : uN}: + `%%%`(N, i_1, `%`_u32($bool(($proj_uN_0(i_1).0 = 0)))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inez_(N : N, iN : iN) : u32 +relation fun_inez_: `%%%`(N, iN, u32) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + rule fun_inez__case_0{N : nat, i_1 : uN}: + `%%%`(N, i_1, `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0)))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7932,8 +9848,10 @@ def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) + def $ilt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 < var_1))) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 < var_1)))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 @@ -7941,8 +9859,10 @@ def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) + def $igt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 > var_1))) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 > var_1)))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 @@ -7950,8 +9870,10 @@ def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) + def $ile_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 <= var_1))) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 <= var_1)))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 @@ -7959,8 +9881,10 @@ def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) + def $ige_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 >= var_1))) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 >= var_1)))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -8071,1182 +9995,5515 @@ def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ +relation fun_lpacknum_: `%%%`(lanetype, num_, lane_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) - -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) + rule fun_lpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, c, mk_lane__0_lane_(I32_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + rule fun_lpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, c, mk_lane__0_lane_(I64_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c + rule fun_lpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, c, mk_lane__0_lane_(F32_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + rule fun_lpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, c, mk_lane__0_lane_(F64_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c + rule fun_lpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) + rule fun_lpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ +relation fun_cpacknum_: `%%%`(storagetype, lit_, lit_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c + rule fun_cpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) + rule fun_cpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) + rule fun_cpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) + rule fun_cpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) + rule fun_cpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) + rule fun_cpacknum__case_5{c : uN}: + `%%%`(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} + rule fun_cpacknum__case_6{c : uN}: + `%%%`(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_lunpacknum_: `%%%`(lanetype, lane_, num_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} + rule fun_lunpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, mk_lane__0_lane_(I32_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} + rule fun_lunpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, mk_lane__0_lane_(I64_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} + rule fun_lunpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, mk_lane__0_lane_(F32_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} + rule fun_lunpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, mk_lane__0_lane_(F64_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} + rule fun_lunpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_lane__1_lane_(I8_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} + rule fun_lunpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_lane__1_lane_(I16_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* +relation fun_cunpacknum_: `%%%`(storagetype, lit_, lit_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + rule fun_cunpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + rule fun_cunpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + rule fun_cunpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + rule fun_cunpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + rule fun_cunpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + rule fun_cunpacknum__case_5{c : uN, var_0 : consttype?}: + `%%%`(I8_storagetype, mk_lit__2_lit_(I8_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + -- fun_cunpack: `%%`($storagetype_packtype(I8_packtype), var_0) + -- if (var_0 =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!(var_0)), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + rule fun_cunpacknum__case_6{c : uN, var_0 : consttype?}: + `%%%`(I16_storagetype, mk_lit__2_lit_(I16_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + -- fun_cunpack: `%%`($storagetype_packtype(I16_packtype), var_0) + -- if (var_0 =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!(var_0)), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + rule fun_unop__case_0{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))) + rule fun_unop__case_1{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + rule fun_unop__case_2{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + rule fun_unop__case_3{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + rule fun_unop__case_4{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + rule fun_unop__case_5{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + rule fun_unop__case_6{M : nat, i : uN, var_0 : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, var_0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + rule fun_unop__case_7{M : nat, i : uN, var_0 : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, var_0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + rule fun_unop__case_8{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#1)))*{iter_0#1 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + rule fun_unop__case_9{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#3)))*{iter_0#3 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + rule fun_unop__case_10{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#6)*{iter_0#6 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#5)))*{iter_0#5 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + rule fun_unop__case_11{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#7)))*{iter_0#7 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $testop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_testop__0_testop_(Inn, EQZ_testop_Inn), mk_num__0_num_(Inn, i)) = $ieqz_($sizenn((Inn : addrtype <: numtype)), i) + rule fun_unop__case_12{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#10)*{iter_0#10 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#9)))*{iter_0#9 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, EQ_relop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ieq_($sizenn((Inn : addrtype <: numtype)), i_1, i_2) + rule fun_unop__case_13{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#11)))*{iter_0#11 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, NE_relop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ine_($sizenn((Inn : addrtype <: numtype)), i_1, i_2) + rule fun_unop__case_14{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#14)*{iter_0#14 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#13)))*{iter_0#13 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, LT_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ilt_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + rule fun_unop__case_15{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#16)*{iter_0#16 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#15)))*{iter_0#15 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, GT_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $igt_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + rule fun_unop__case_16{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#18)*{iter_0#18 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#17)))*{iter_0#17 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, LE_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ile_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + rule fun_unop__case_17{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#19)))*{iter_0#19 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, GE_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ige_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + rule fun_unop__case_18{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#22)*{iter_0#22 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#21)))*{iter_0#21 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, EQ_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $feq_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + rule fun_unop__case_19{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#23)))*{iter_0#23 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, NE_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fne_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + rule fun_unop__case_20{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#26)*{iter_0#26 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#25)))*{iter_0#25 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, LT_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $flt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + rule fun_unop__case_21{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#27)))*{iter_0#27 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_binop_: `%%%%%`(numtype, binop_, num_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, GT_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fgt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + rule fun_binop__case_0{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, LE_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fle_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + rule fun_binop__case_1{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, GE_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fge_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + rule fun_binop__case_2{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) + rule fun_binop__case_3{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) + rule fun_binop__case_4{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + rule fun_binop__case_5{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + rule fun_binop__case_6{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#30)*{iter_0#30 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#29)))*{iter_0#29 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) + rule fun_binop__case_7{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#32)*{iter_0#32 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#31)))*{iter_0#31 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + rule fun_binop__case_8{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#33)))*{iter_0#33 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + rule fun_binop__case_9{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#35)))*{iter_0#35 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] - -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) - -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) + rule fun_binop__case_10{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] - -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) - -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) + rule fun_binop__case_11{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $lanes_(shape : shape, vec_ : vec_) : lane_* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_12{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $inv_lanes_(shape : shape, lane_*) : vec_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_13{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : zero? - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_14{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : half? - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = half?{half <- `half?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_15{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $half(half : half, nat : nat, nat : nat) : nat - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $half{i : nat, j : nat}(LOW_half, i, j) = i - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $half{i : nat, j : nat}(HIGH_half, i, j) = j + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_16{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $iswizzle_lane_(N : N, iN*, iN : iN) : iN - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_17{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_18{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_19{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_20{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_21{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_22{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_23{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvbinop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_24{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#38)*{iter_0#38 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#37)))*{iter_0#37 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_25{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#40)*{iter_0#40 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#39)))*{iter_0#39 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvternop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_26{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#41)))*{iter_0#41 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_27{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#43)))*{iter_0#43 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_28{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#45)))*{iter_0#45 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvrelop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) - -- if ($isize(Inn) = $fsize(Fnn)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_29{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#47)))*{iter_0#47 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_30{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#50)*{iter_0#50 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#49)))*{iter_0#49 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_31{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#52)*{iter_0#52 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#51)))*{iter_0#51 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_32{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#54)*{iter_0#54 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#53)))*{iter_0#53 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{Jnn : Jnn, M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_33{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#56)*{iter_0#56 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#55)))*{iter_0#55 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{Jnn : Jnn, M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_34{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#58)*{iter_0#58 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#57)))*{iter_0#57 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvunop_{Vnn : vectype, v : uN}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_35{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#60)*{iter_0#60 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#59)))*{iter_0#59 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_36{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#62)*{iter_0#62 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#61)))*{iter_0#61 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_37{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#64)*{iter_0#64 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#63)))*{iter_0#63 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_testop_: `%%%%`(numtype, testop_, num_, u32) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_testop__case_0{i : uN, var_0 : u32}: + `%%%%`(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I32_Inn)), i, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_testop__case_1{i : uN, var_0 : u32}: + `%%%%`(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I64_Inn)), i, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_cvtop__: `%%%%%`(numtype, numtype, cvtop__, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_0{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_1{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_2{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_3{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_4{i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_5{i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_6{i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_7{i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_8{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#66)*{iter_0#66 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#65)))*{iter_0#65 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_9{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#68)*{iter_0#68 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#67)))*{iter_0#67 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_10{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#70)*{iter_0#70 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#69)))*{iter_0#69 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_11{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#72)*{iter_0#72 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#71)))*{iter_0#71 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_12{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#74)*{iter_0#74 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#73)))*{iter_0#73 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_13{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#76)*{iter_0#76 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#75)))*{iter_0#75 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_14{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#78)*{iter_0#78 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#77)))*{iter_0#77 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_15{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#80)*{iter_0#80 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#79)))*{iter_0#79 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_16{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_17{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_18{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_19{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_20{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#82)*{iter_0#82 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#81)))*{iter_0#81 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_21{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#84)*{iter_0#84 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#83)))*{iter_0#83 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_22{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#86)*{iter_0#86 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#85)))*{iter_0#85 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_23{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#88)*{iter_0#88 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#87)))*{iter_0#87 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_24{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#90)*{iter_0#90 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#89)))*{iter_0#89 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_25{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#92)*{iter_0#92 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#91)))*{iter_0#91 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_26{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#94)*{iter_0#94 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#93)))*{iter_0#93 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_27{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#96)*{iter_0#96 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#95)))*{iter_0#95 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_28{i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_29{i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_30{i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_31{i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_32{f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_33{f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_34{f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_35{f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_, vec_ : vec_) : vec_* +def $lanes_(shape : shape, vec_ : vec_) : lane_* + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $inv_lanes_(shape : shape, lane_*) : vec_ + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_zeroop: `%%%%`(shape, shape, vcvtop__, zero?) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] + rule fun_zeroop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] + rule fun_zeroop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] + rule fun_zeroop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] + rule fun_zeroop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] + rule fun_zeroop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2833?{half#2833 <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2834?{half#2834 <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2835?{half#2835 <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2836?{half#2836 <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2837?{half#2837 <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2838?{half#2838 <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2839?{half#2839 <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2840?{half#2840 <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3245?{zero#3245 <- `zero?`})), zero#3246?{zero#3246 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3247?{zero#3247 <- `zero?`})), zero#3248?{zero#3248 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3249?{zero#3249 <- `zero?`})), zero#3250?{zero#3250 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3251?{zero#3251 <- `zero?`})), zero#3252?{zero#3252 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3253?{zero#3253 <- `zero?`})), zero#3254?{zero#3254 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3255?{zero#3255 <- `zero?`})), zero#3256?{zero#3256 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3257?{zero#3257 <- `zero?`})), zero#3258?{zero#3258 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3259?{zero#3259 <- `zero?`})), zero#3260?{zero#3260 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3261?{zero#3261 <- `zero?`})), zero#3262?{zero#3262 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3263?{zero#3263 <- `zero?`})), zero#3264?{zero#3264 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3265?{zero#3265 <- `zero?`})), zero#3266?{zero#3266 <- `zero?`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3267?{zero#3267 <- `zero?`})), zero#3268?{zero#3268 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3269?{zero#3269 <- `zero?`})), zero#3270?{zero#3270 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3271?{zero#3271 <- `zero?`})), zero#3272?{zero#3272 <- `zero?`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3273?{zero#3273 <- `zero?`})), zero#3274?{zero#3274 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3275?{zero#3275 <- `zero?`})), zero#3276?{zero#3276 <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_40{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_41{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_42{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_43{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_zeroop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_halfop: `%%%%`(shape, shape, vcvtop__, half?) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_halfop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + rule fun_halfop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) - -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) + rule fun_halfop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) - -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) + rule fun_halfop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)) + rule fun_halfop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)) + rule fun_halfop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) + rule fun_halfop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) + rule fun_halfop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) - -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) + rule fun_halfop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) - -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + rule fun_halfop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) - -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + rule fun_halfop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_halfop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_halfop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + rule fun_halfop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + rule fun_halfop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + rule fun_halfop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + rule fun_halfop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2841?{half#2841 <- `half?`}, sx)), half#2842?{half#2842 <- `half?`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`})) + rule fun_halfop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2843?{half#2843 <- `half?`}, sx)), half#2844?{half#2844 <- `half?`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} - -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) + rule fun_halfop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2845?{half#2845 <- `half?`}, sx)), half#2846?{half#2846 <- `half?`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + rule fun_halfop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2847?{half#2847 <- `half?`}, sx)), half#2848?{half#2848 <- `half?`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + rule fun_halfop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2849?{half#2849 <- `half?`}, sx)), half#2850?{half#2850 <- `half?`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} - -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) + rule fun_halfop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2851?{half#2851 <- `half?`}, sx)), half#2852?{half#2852 <- `half?`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} - -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) + rule fun_halfop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2853?{half#2853 <- `half?`}, sx)), half#2854?{half#2854 <- `half?`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + rule fun_halfop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2855?{half#2855 <- `half?`}, sx)), half#2856?{half#2856 <- `half?`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivmul_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + rule fun_halfop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3277?{zero#3277 <- `zero?`})), ?()) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) + rule fun_halfop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3278?{zero#3278 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) + rule fun_halfop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3279?{zero#3279 <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) + rule fun_halfop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3280?{zero#3280 <- `zero?`})), ?()) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) - -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + rule fun_halfop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3281?{zero#3281 <- `zero?`})), ?()) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax num = - | CONST(numtype : numtype, num_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3282?{zero#3282 <- `zero?`})), ?()) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_num: `%`(num) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule num_case_0{numtype : numtype, var_0 : num_}: - `%`(CONST_num(numtype, var_0)) - -- wf_num_: `%%`(numtype, var_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3283?{zero#3283 <- `zero?`})), ?()) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax vec = - | VCONST(vectype : vectype, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3284?{zero#3284 <- `zero?`})), ?()) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_vec: `%`(vec) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule vec_case_0{vectype : vectype, var_0 : vec_}: - `%`(VCONST_vec(vectype, var_0)) - -- wf_uN: `%%`($vsize(vectype), var_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3285?{zero#3285 <- `zero?`})), ?()) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax result = - | _VALS(`val*` : val*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3286?{zero#3286 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3287?{zero#3287 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3288?{zero#3288 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3289?{zero#3289 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3290?{zero#3290 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3291?{zero#3291 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3292?{zero#3292 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_40{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_41{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_42{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_43{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $half(half : half, nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(LOW_half, i, j) = i + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(HIGH_half, i, j) = j + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $iswizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#1*{c#1 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) + -- wf_uN: `%%`(N, `%`_uN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN, var_0 : int}(N, c#2*{c#2 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if (var_0 < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + -- wf_uN: `%%`(N, `%`_uN(0)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i).0, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#5)*{c#5 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1#1))*{c_1#1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#3)))*{c#3 <- `c*`} + -- if (c_1#2*{c_1#2 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c#4*{c#4 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#3)))*{c_1#3 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#8)*{c#8 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1#4))*{c_1#4 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#6)))*{c#6 <- `c*`} + -- if (c_1#5*{c_1#5 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c#7*{c#7 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#6)))*{c_1#6 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#11)*{c#11 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1#7))*{c_1#7 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#9)))*{c#9 <- `c*`} + -- if (c_1#8*{c_1#8 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c#10*{c#10 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#9)))*{c_1#9 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#14)*{c#14 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1#10))*{c_1#10 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#12)))*{c#12 <- `c*`} + -- if (c_1#11*{c_1#11 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c#13*{c#13 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#12)))*{c_1#12 <- `c_1*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#17*{c#17 <- `c*#3`})*{`c*#3` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c#15))*{c#15 <- `c*#1`}*{`c*#1` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#97))))*{iter_0#97 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#13)))))}*{c_1#13 <- `c_1*`} + -- if (c_1#14*{c_1#14 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) + -- if (c#16*{c#16 <- `c*#2`}*{`c*#2` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#98))*{iter_0#98 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#15)))))}*{c_1#15 <- `c_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#20*{c#20 <- `c*#6`})*{`c*#6` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c#18))*{c#18 <- `c*#4`}*{`c*#4` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#99))))*{iter_0#99 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#16)))))}*{c_1#16 <- `c_1*`} + -- if (c_1#17*{c_1#17 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) + -- if (c#19*{c#19 <- `c*#5`}*{`c*#5` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#100))*{iter_0#100 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#18)))))}*{c_1#18 <- `c_1*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#23)*{c#23 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1#19))*{c_1#19 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2#1))*{c_2#1 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#21)))*{c#21 <- `c*`} + -- if (c_1#20*{c_1#20 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#2*{c_2#2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c#22*{c#22 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#21)), !($proj_lane__2(c_2#3)))*{c_1#21 <- `c_1*`, c_2#3 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#26)*{c#26 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1#22))*{c_1#22 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2#4))*{c_2#4 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#24)))*{c#24 <- `c*`} + -- if (c_1#23*{c_1#23 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#5*{c_2#5 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c#25*{c#25 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#24)), !($proj_lane__2(c_2#6)))*{c_1#24 <- `c_1*`, c_2#6 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#29)*{c#29 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1#25))*{c_1#25 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2#7))*{c_2#7 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#27)))*{c#27 <- `c*`} + -- if (c_1#26*{c_1#26 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#8*{c_2#8 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c#28*{c#28 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#27)), !($proj_lane__2(c_2#9)))*{c_1#27 <- `c_1*`, c_2#9 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#32)*{c#32 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1#28))*{c_1#28 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2#10))*{c_2#10 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#30)))*{c#30 <- `c*`} + -- if (c_1#29*{c_1#29 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#11*{c_2#11 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c#31*{c#31 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#30)), !($proj_lane__2(c_2#12)))*{c_1#30 <- `c_1*`, c_2#12 <- `c_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#35)*{c#35 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1#31))*{c_1#31 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2#13))*{c_2#13 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#33)))*{c#33 <- `c*`} + -- if (c_1#32*{c_1#32 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#14*{c_2#14 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c#34*{c#34 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#33)), !($proj_lane__2(c_2#15)))*{c_1#33 <- `c_1*`, c_2#15 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#38)*{c#38 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1#34))*{c_1#34 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2#16))*{c_2#16 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#36)))*{c#36 <- `c*`} + -- if (c_1#35*{c_1#35 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#17*{c_2#17 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c#37*{c#37 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#36)), !($proj_lane__2(c_2#18)))*{c_1#36 <- `c_1*`, c_2#18 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#41)*{c#41 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1#37))*{c_1#37 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2#19))*{c_2#19 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#39)))*{c#39 <- `c*`} + -- if (c_1#38*{c_1#38 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#20*{c_2#20 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c#40*{c#40 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#39)), !($proj_lane__2(c_2#21)))*{c_1#39 <- `c_1*`, c_2#21 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#44)*{c#44 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1#40))*{c_1#40 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2#22))*{c_2#22 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#42)))*{c#42 <- `c*`} + -- if (c_1#41*{c_1#41 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#23*{c_2#23 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c#43*{c#43 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#42)), !($proj_lane__2(c_2#24)))*{c_1#42 <- `c_1*`, c_2#24 <- `c_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#47*{c#47 <- `c*#9`})*{`c*#9` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c#45))*{c#45 <- `c*#7`}*{`c*#7` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#101)))*{iter_0#101 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#43)), !($proj_lane__2(c_2#25)))}*{c_1#43 <- `c_1*`, c_2#25 <- `c_2*`} + -- if (c_1#44*{c_1#44 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#26*{c_2#26 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c#46*{c#46 <- `c*#8`}*{`c*#8` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#102)*{iter_0#102 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#45)), !($proj_lane__2(c_2#27)))}*{c_1#45 <- `c_1*`, c_2#27 <- `c_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#50*{c#50 <- `c*#12`})*{`c*#12` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c#48))*{c#48 <- `c*#10`}*{`c*#10` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#103)))*{iter_0#103 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#46)), !($proj_lane__2(c_2#28)))}*{c_1#46 <- `c_1*`, c_2#28 <- `c_2*`} + -- if (c_1#47*{c_1#47 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#29*{c_2#29 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c#49*{c#49 <- `c*#11`}*{`c*#11` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#104)*{iter_0#104 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#48)), !($proj_lane__2(c_2#30)))}*{c_1#48 <- `c_1*`, c_2#30 <- `c_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#53*{c#53 <- `c*#15`})*{`c*#15` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c#51))*{c#51 <- `c*#13`}*{`c*#13` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#105)))*{iter_0#105 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#49)), !($proj_lane__2(c_2#31)))}*{c_1#49 <- `c_1*`, c_2#31 <- `c_2*`} + -- if (c_1#50*{c_1#50 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#32*{c_2#32 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c#52*{c#52 <- `c*#14`}*{`c*#14` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#106)*{iter_0#106 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#51)), !($proj_lane__2(c_2#33)))}*{c_1#51 <- `c_1*`, c_2#33 <- `c_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#56*{c#56 <- `c*#18`})*{`c*#18` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c#54))*{c#54 <- `c*#16`}*{`c*#16` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#107)))*{iter_0#107 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#52)), !($proj_lane__2(c_2#34)))}*{c_1#52 <- `c_1*`, c_2#34 <- `c_2*`} + -- if (c_1#53*{c_1#53 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#35*{c_2#35 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c#55*{c#55 <- `c*#17`}*{`c*#17` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#108)*{iter_0#108 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#54)), !($proj_lane__2(c_2#36)))}*{c_1#54 <- `c_1*`, c_2#36 <- `c_2*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#59*{c#59 <- `c*#21`})*{`c*#21` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c#57))*{c#57 <- `c*#19`}*{`c*#19` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#109))))*{iter_0#109 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#55)))), !($proj_num__1(!($proj_lane__0(c_2#37)))))}*{c_1#55 <- `c_1*`, c_2#37 <- `c_2*`} + -- if (c_1#56*{c_1#56 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) + -- if (c_2#38*{c_2#38 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)) + -- if (c#58*{c#58 <- `c*#20`}*{`c*#20` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#110))*{iter_0#110 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#57)))), !($proj_num__1(!($proj_lane__0(c_2#39)))))}*{c_1#57 <- `c_1*`, c_2#39 <- `c_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#62*{c#62 <- `c*#24`})*{`c*#24` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c#60))*{c#60 <- `c*#22`}*{`c*#22` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#111))))*{iter_0#111 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#58)))), !($proj_num__1(!($proj_lane__0(c_2#40)))))}*{c_1#58 <- `c_1*`, c_2#40 <- `c_2*`} + -- if (c_1#59*{c_1#59 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) + -- if (c_2#41*{c_2#41 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)) + -- if (c#61*{c#61 <- `c*#23`}*{`c*#23` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#112))*{iter_0#112 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#60)))), !($proj_num__1(!($proj_lane__0(c_2#42)))))}*{c_1#60 <- `c_1*`, c_2#42 <- `c_2*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#65*{c#65 <- `c*#27`})*{`c*#27` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c#63))*{c#63 <- `c*#25`}*{`c*#25` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#113)))*{iter_0#113 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#61)), !($proj_lane__2(c_2#43)), !($proj_lane__2(c_3#1)))}*{c_1#61 <- `c_1*`, c_2#43 <- `c_2*`, c_3#1 <- `c_3*`} + -- if (c_1#62*{c_1#62 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#44*{c_2#44 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c_3#2*{c_3#2 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3)) + -- if (c#64*{c#64 <- `c*#26`}*{`c*#26` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#114)*{iter_0#114 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#63)), !($proj_lane__2(c_2#45)), !($proj_lane__2(c_3#3)))}*{c_1#63 <- `c_1*`, c_2#45 <- `c_2*`, c_3#3 <- `c_3*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#68*{c#68 <- `c*#30`})*{`c*#30` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c#66))*{c#66 <- `c*#28`}*{`c*#28` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#115)))*{iter_0#115 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#64)), !($proj_lane__2(c_2#46)), !($proj_lane__2(c_3#4)))}*{c_1#64 <- `c_1*`, c_2#46 <- `c_2*`, c_3#4 <- `c_3*`} + -- if (c_1#65*{c_1#65 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#47*{c_2#47 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c_3#5*{c_3#5 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3)) + -- if (c#67*{c#67 <- `c*#29`}*{`c*#29` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#116)*{iter_0#116 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#66)), !($proj_lane__2(c_2#48)), !($proj_lane__2(c_3#6)))}*{c_1#66 <- `c_1*`, c_2#48 <- `c_2*`, c_3#6 <- `c_3*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#71*{c#71 <- `c*#33`})*{`c*#33` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c#69))*{c#69 <- `c*#31`}*{`c*#31` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#117)))*{iter_0#117 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#67)), !($proj_lane__2(c_2#49)), !($proj_lane__2(c_3#7)))}*{c_1#67 <- `c_1*`, c_2#49 <- `c_2*`, c_3#7 <- `c_3*`} + -- if (c_1#68*{c_1#68 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#50*{c_2#50 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c_3#8*{c_3#8 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3)) + -- if (c#70*{c#70 <- `c*#32`}*{`c*#32` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#118)*{iter_0#118 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#69)), !($proj_lane__2(c_2#51)), !($proj_lane__2(c_3#9)))}*{c_1#69 <- `c_1*`, c_2#51 <- `c_2*`, c_3#9 <- `c_3*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#74*{c#74 <- `c*#36`})*{`c*#36` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c#72))*{c#72 <- `c*#34`}*{`c*#34` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#119)))*{iter_0#119 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#70)), !($proj_lane__2(c_2#52)), !($proj_lane__2(c_3#10)))}*{c_1#70 <- `c_1*`, c_2#52 <- `c_2*`, c_3#10 <- `c_3*`} + -- if (c_1#71*{c_1#71 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#53*{c_2#53 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c_3#11*{c_3#11 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3)) + -- if (c#73*{c#73 <- `c*#35`}*{`c*#35` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#120)*{iter_0#120 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#72)), !($proj_lane__2(c_2#54)), !($proj_lane__2(c_3#12)))}*{c_1#72 <- `c_1*`, c_2#54 <- `c_2*`, c_3#12 <- `c_3*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#77*{c#77 <- `c*#39`})*{`c*#39` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c#75))*{c#75 <- `c*#37`}*{`c*#37` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#121))))*{iter_0#121 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#73)))), !($proj_num__1(!($proj_lane__0(c_2#55)))), !($proj_num__1(!($proj_lane__0(c_3#13)))))}*{c_1#73 <- `c_1*`, c_2#55 <- `c_2*`, c_3#13 <- `c_3*`} + -- if (c_1#74*{c_1#74 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) + -- if (c_2#56*{c_2#56 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)) + -- if (c_3#14*{c_3#14 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3)) + -- if (c#76*{c#76 <- `c*#38`}*{`c*#38` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#122))*{iter_0#122 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#75)))), !($proj_num__1(!($proj_lane__0(c_2#57)))), !($proj_num__1(!($proj_lane__0(c_3#15)))))}*{c_1#75 <- `c_1*`, c_2#57 <- `c_2*`, c_3#15 <- `c_3*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#80*{c#80 <- `c*#42`})*{`c*#42` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c#78))*{c#78 <- `c*#40`}*{`c*#40` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#123))))*{iter_0#123 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#76)))), !($proj_num__1(!($proj_lane__0(c_2#58)))), !($proj_num__1(!($proj_lane__0(c_3#16)))))}*{c_1#76 <- `c_1*`, c_2#58 <- `c_2*`, c_3#16 <- `c_3*`} + -- if (c_1#77*{c_1#77 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) + -- if (c_2#59*{c_2#59 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)) + -- if (c_3#17*{c_3#17 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3)) + -- if (c#79*{c#79 <- `c*#41`}*{`c*#41` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#124))*{iter_0#124 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#78)))), !($proj_num__1(!($proj_lane__0(c_2#60)))), !($proj_num__1(!($proj_lane__0(c_3#18)))))}*{c_1#78 <- `c_1*`, c_2#60 <- `c_2*`, c_3#18 <- `c_3*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#83)*{c#83 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#81)))*{c#81 <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#79)), !($proj_lane__2(c_2#61)))).0)))*{c_1#79 <- `c_1*`, c_2#61 <- `c_2*`} + -- if (c_1#80*{c_1#80 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#62*{c_2#62 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c#82*{c#82 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#81)), !($proj_lane__2(c_2#63)))).0))*{c_1#81 <- `c_1*`, c_2#63 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#86)*{c#86 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#84)))*{c#84 <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#82)), !($proj_lane__2(c_2#64)))).0)))*{c_1#82 <- `c_1*`, c_2#64 <- `c_2*`} + -- if (c_1#83*{c_1#83 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#65*{c_2#65 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c#85*{c#85 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#84)), !($proj_lane__2(c_2#66)))).0))*{c_1#84 <- `c_1*`, c_2#66 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#89)*{c#89 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#87)))*{c#87 <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#85)), !($proj_lane__2(c_2#67)))).0)))*{c_1#85 <- `c_1*`, c_2#67 <- `c_2*`} + -- if (c_1#86*{c_1#86 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#68*{c_2#68 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c#88*{c#88 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#87)), !($proj_lane__2(c_2#69)))).0))*{c_1#87 <- `c_1*`, c_2#69 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#92)*{c#92 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#90)))*{c#90 <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#88)), !($proj_lane__2(c_2#70)))).0)))*{c_1#88 <- `c_1*`, c_2#70 <- `c_2*`} + -- if (c_1#89*{c_1#89 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#71*{c_2#71 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c#91*{c#91 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#90)), !($proj_lane__2(c_2#72)))).0))*{c_1#90 <- `c_1*`, c_2#72 <- `c_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#95)*{c#95 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#93)))*{c#93 <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#91)), !($proj_lane__2(c_2#73)))).0)))*{c_1#91 <- `c_1*`, c_2#73 <- `c_2*`} + -- if (c_1#92*{c_1#92 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#74*{c_2#74 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c#94*{c#94 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#93)), !($proj_lane__2(c_2#75)))).0))*{c_1#93 <- `c_1*`, c_2#75 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#98)*{c#98 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#96)))*{c#96 <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#94)), !($proj_lane__2(c_2#76)))).0)))*{c_1#94 <- `c_1*`, c_2#76 <- `c_2*`} + -- if (c_1#95*{c_1#95 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#77*{c_2#77 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c#97*{c#97 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#96)), !($proj_lane__2(c_2#78)))).0))*{c_1#96 <- `c_1*`, c_2#78 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#101)*{c#101 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#99)))*{c#99 <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#97)), !($proj_lane__2(c_2#79)))).0)))*{c_1#97 <- `c_1*`, c_2#79 <- `c_2*`} + -- if (c_1#98*{c_1#98 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#80*{c_2#80 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c#100*{c#100 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#99)), !($proj_lane__2(c_2#81)))).0))*{c_1#99 <- `c_1*`, c_2#81 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#104)*{c#104 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#102)))*{c#102 <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#100)), !($proj_lane__2(c_2#82)))).0)))*{c_1#100 <- `c_1*`, c_2#82 <- `c_2*`} + -- if (c_1#101*{c_1#101 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#83*{c_2#83 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c#103*{c#103 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#102)), !($proj_lane__2(c_2#84)))).0))*{c_1#102 <- `c_1*`, c_2#84 <- `c_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#107).0)))*{c#107 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#105).0)))))*{c#105 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#103)))), !($proj_num__1(!($proj_lane__0(c_2#85)))))).0)))*{c_1#103 <- `c_1*`, c_2#85 <- `c_2*`} + -- if (c_1#104*{c_1#104 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) + -- if (c_2#86*{c_2#86 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)) + -- if (c#106*{c#106 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#105)))), !($proj_num__1(!($proj_lane__0(c_2#87)))))).0))*{c_1#105 <- `c_1*`, c_2#87 <- `c_2*`}) + -- if ($isize(Inn) = $fsize(F32_Fnn)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#110).0)))*{c#110 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#108).0)))))*{c#108 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#106)))), !($proj_num__1(!($proj_lane__0(c_2#88)))))).0)))*{c_1#106 <- `c_1*`, c_2#88 <- `c_2*`} + -- if (c_1#107*{c_1#107 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) + -- if (c_2#89*{c_2#89 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)) + -- if (c#109*{c#109 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#108)))), !($proj_num__1(!($proj_lane__0(c_2#90)))))).0))*{c_1#108 <- `c_1*`, c_2#90 <- `c_2*`}) + -- if ($isize(Inn) = $fsize(F64_Fnn)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#113)*{c#113 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1#109))*{c_1#109 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#111)))*{c#111 <- `c*`} + -- if (c_1#110*{c_1#110 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c#112*{c#112 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#111)), i)*{c_1#111 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#116)*{c#116 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1#112))*{c_1#112 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#114)))*{c#114 <- `c*`} + -- if (c_1#113*{c_1#113 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c#115*{c#115 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#114)), i)*{c_1#114 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#119)*{c#119 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1#115))*{c_1#115 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#117)))*{c#117 <- `c*`} + -- if (c_1#116*{c_1#116 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c#118*{c#118 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#117)), i)*{c_1#117 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#122)*{c#122 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1#118))*{c_1#118 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#120)))*{c#120 <- `c*`} + -- if (c_1#119*{c_1#119 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c#121*{c#121 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#120)), i)*{c_1#120 <- `c_1*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#125)*{c#125 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1#121))*{c_1#121 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#123)))*{c#123 <- `c*`} + -- if (c_1#122*{c_1#122 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c#124*{c#124 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#123)), i)*{c_1#123 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#128)*{c#128 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1#124))*{c_1#124 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#126)))*{c#126 <- `c*`} + -- if (c_1#125*{c_1#125 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c#127*{c#127 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#126)), i)*{c_1#126 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#131)*{c#131 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1#127))*{c_1#127 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#129)))*{c#129 <- `c*`} + -- if (c_1#128*{c_1#128 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c#130*{c#130 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#129)), i)*{c_1#129 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#134)*{c#134 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1#130))*{c_1#130 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#132)))*{c#132 <- `c*`} + -- if (c_1#131*{c_1#131 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c#133*{c#133 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#132)), i)*{c_1#132 <- `c_1*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_0{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1#133) =/= ?()))*{c_1#133 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#133)), `%`_iN(0))).0)))*{c_1#133 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- if (c_1#134*{c_1#134 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- (if ($proj_lane__2(c_1#135) =/= ?()))*{c_1#135 <- `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#135)), `%`_iN(0))).0)*{c_1#135 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_1{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1#136) =/= ?()))*{c_1#136 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#136)), `%`_iN(0))).0)))*{c_1#136 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- if (c_1#137*{c_1#137 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- (if ($proj_lane__2(c_1#138) =/= ?()))*{c_1#138 <- `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#138)), `%`_iN(0))).0)*{c_1#138 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_2{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1#139) =/= ?()))*{c_1#139 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#139)), `%`_iN(0))).0)))*{c_1#139 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- if (c_1#140*{c_1#140 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- (if ($proj_lane__2(c_1#141) =/= ?()))*{c_1#141 <- `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#141)), `%`_iN(0))).0)*{c_1#141 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_3{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1#142) =/= ?()))*{c_1#142 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#142)), `%`_iN(0))).0)))*{c_1#142 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- if (c_1#143*{c_1#143 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- (if ($proj_lane__2(c_1#144) =/= ?()))*{c_1#144 <- `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#144)), `%`_iN(0))).0)*{c_1#144 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#137)*{c#137 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1#145))*{c_1#145 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2#91))*{c_2#91 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#135)))*{c#135 <- `c*`} + -- if (c_1#146*{c_1#146 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#92*{c_2#92 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c#136*{c#136 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#147))*{c_1#147 <- `c_1*`}, !($proj_lane__2(c_2#93)))*{c_2#93 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#140)*{c#140 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1#148))*{c_1#148 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2#94))*{c_2#94 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#138)))*{c#138 <- `c*`} + -- if (c_1#149*{c_1#149 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#95*{c_2#95 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c#139*{c#139 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#150))*{c_1#150 <- `c_1*`}, !($proj_lane__2(c_2#96)))*{c_2#96 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#143)*{c#143 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1#151))*{c_1#151 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2#97))*{c_2#97 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#141)))*{c#141 <- `c*`} + -- if (c_1#152*{c_1#152 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#98*{c_2#98 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c#142*{c#142 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#153))*{c_1#153 <- `c_1*`}, !($proj_lane__2(c_2#99)))*{c_2#99 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#146)*{c#146 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1#154))*{c_1#154 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2#100))*{c_2#100 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#144)))*{c#144 <- `c*`} + -- if (c_1#155*{c_1#155 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#101*{c_2#101 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c#145*{c#145 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#156))*{c_1#156 <- `c_1*`}, !($proj_lane__2(c_2#102)))*{c_2#102 <- `c_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), i#128389*{i#128389 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#149*{c#149 <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c#147))*{c#147 <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1#157))*{c_1#157 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2#103))*{c_2#103 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- if (c_1#158*{c_1#158 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#104*{c_2#104 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- (if ($proj_uN_0(i#128396).0 < |c_1#159*{c_1#159 <- `c_1*`} ++ c_2#105*{c_2#105 <- `c_2*`}|))*{i#128396 <- `i*`} + -- if (c#148*{c#148 <- `c*`} = c_1#159*{c_1#159 <- `c_1*`} ++ c_2#105*{c_2#105 <- `c_2*`}[$proj_uN_0(i#128396).0]*{i#128396 <- `i*`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_1{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), i#128399*{i#128399 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#152*{c#152 <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c#150))*{c#150 <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1#160))*{c_1#160 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2#106))*{c_2#106 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- if (c_1#161*{c_1#161 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#107*{c_2#107 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- (if ($proj_uN_0(i#128406).0 < |c_1#162*{c_1#162 <- `c_1*`} ++ c_2#108*{c_2#108 <- `c_2*`}|))*{i#128406 <- `i*`} + -- if (c#151*{c#151 <- `c*`} = c_1#162*{c_1#162 <- `c_1*`} ++ c_2#108*{c_2#108 <- `c_2*`}[$proj_uN_0(i#128406).0]*{i#128406 <- `i*`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_2{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i#128409*{i#128409 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#155*{c#155 <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c#153))*{c#153 <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1#163))*{c_1#163 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2#109))*{c_2#109 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- if (c_1#164*{c_1#164 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#110*{c_2#110 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- (if ($proj_uN_0(i#128416).0 < |c_1#165*{c_1#165 <- `c_1*`} ++ c_2#111*{c_2#111 <- `c_2*`}|))*{i#128416 <- `i*`} + -- if (c#154*{c#154 <- `c*`} = c_1#165*{c_1#165 <- `c_1*`} ++ c_2#111*{c_2#111 <- `c_2*`}[$proj_uN_0(i#128416).0]*{i#128416 <- `i*`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_3{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), i#128419*{i#128419 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#158*{c#158 <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c#156))*{c#156 <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1#166))*{c_1#166 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2#112))*{c_2#112 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- if (c_1#167*{c_1#167 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#113*{c_2#113 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- (if ($proj_uN_0(i#128426).0 < |c_1#168*{c_1#168 <- `c_1*`} ++ c_2#114*{c_2#114 <- `c_2*`}|))*{i#128426 <- `i*`} + -- if (c#157*{c#157 <- `c*`} = c_1#168*{c_1#168 <- `c_1*`} ++ c_2#114*{c_2#114 <- `c_2*`}[$proj_uN_0(i#128426).0]*{i#128426 <- `i*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvunop_{Vnn : vectype, v : uN}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vunop_: `%%%%`(shape, vunop_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_0{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_1{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_2{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_3{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_4{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_5{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_6{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_7{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_8{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_9{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_10{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_11{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_12{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_13{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_14{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_15{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_16{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_17{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_18{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_19{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_20{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_21{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_22{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_23{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_24{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_25{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vbinop_: `%%%%%`(shape, vbinop_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_2{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_3{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_4{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_5{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_6{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_7{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_8{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_9{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_10{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_11{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_24{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_25{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_26{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_27{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_28{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_29{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_30{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_31{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_32{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_33{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_34{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_35{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_36{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_37{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_38{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_39{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_40{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_41{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_42{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_43{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_44{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_45{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_46{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_47{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_48{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_49{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_50{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_51{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_52{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_53{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_54{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_55{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_56{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_57{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_58{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_59{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vternop_: `%%%%%%`(shape, vternop_, vec_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_0{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_1{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_2{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_3{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_4{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_5{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_6{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_7{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vrelop_: `%%%%%`(shape, vrelop_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_2{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_3{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_4{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_5{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_6{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_7{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_8{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_9{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_10{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_11{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_24{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_25{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_26{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_27{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_28{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_29{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_30{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_31{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_32{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_33{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_34{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_35{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2857?{half#2857 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2858?{half#2858 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2859?{half#2859 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2860?{half#2860 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2861?{half#2861 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2862?{half#2862 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2863?{half#2863 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2864?{half#2864 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3293?{zero#3293 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#161))?{c#161 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#159))))?{c#159 <- `c?`} + -- if (c#160?{c#160 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3294?{zero#3294 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#164))?{c#164 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#162))))?{c#162 <- `c?`} + -- if (c#163?{c#163 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3295?{zero#3295 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#167))?{c#167 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#165))))?{c#165 <- `c?`} + -- if (c#166?{c#166 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3296?{zero#3296 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#170))?{c#170 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#168))))?{c#168 <- `c?`} + -- if (c#169?{c#169 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3297?{zero#3297 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#173))?{c#173 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#171))))?{c#171 <- `c?`} + -- if (c#172?{c#172 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3298?{zero#3298 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#176))?{c#176 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#174))))?{c#174 <- `c?`} + -- if (c#175?{c#175 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3299?{zero#3299 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#179))?{c#179 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#177))))?{c#177 <- `c?`} + -- if (c#178?{c#178 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3300?{zero#3300 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#182))?{c#182 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#180))))?{c#180 <- `c?`} + -- if (c#181?{c#181 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3301?{zero#3301 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#185))?{c#185 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#183))))?{c#183 <- `c?`} + -- if (c#184?{c#184 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3302?{zero#3302 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#188))?{c#188 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#186))))?{c#186 <- `c?`} + -- if (c#187?{c#187 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3303?{zero#3303 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#191))?{c#191 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#189))))?{c#189 <- `c?`} + -- if (c#190?{c#190 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3304?{zero#3304 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#194))?{c#194 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#192))))?{c#192 <- `c?`} + -- if (c#193?{c#193 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3305?{zero#3305 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#197))?{c#197 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#195))))?{c#195 <- `c?`} + -- if (c#196?{c#196 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3306?{zero#3306 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#200))?{c#200 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#198))))?{c#198 <- `c?`} + -- if (c#199?{c#199 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3307?{zero#3307 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#203))?{c#203 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#201))))?{c#201 <- `c?`} + -- if (c#202?{c#202 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3308?{zero#3308 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#206))?{c#206 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#204))))?{c#204 <- `c?`} + -- if (c#205?{c#205 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3309?{zero#3309 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#209))?{c#209 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#207))))?{c#207 <- `c?`} + -- if (c#208?{c#208 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3310?{zero#3310 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#212))?{c#212 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#210))))?{c#210 <- `c?`} + -- if (c#211?{c#211 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3311?{zero#3311 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#215))?{c#215 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#213))))?{c#213 <- `c?`} + -- if (c#214?{c#214 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_43{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3312?{zero#3312 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#218))?{c#218 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#216))))?{c#216 <- `c?`} + -- if (c#217?{c#217 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3313?{zero#3313 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#221))?{c#221 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#219))))?{c#219 <- `c?`} + -- if (c#220?{c#220 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3314?{zero#3314 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#224))?{c#224 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#222))))?{c#222 <- `c?`} + -- if (c#223?{c#223 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3315?{zero#3315 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#227))?{c#227 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#225))))?{c#225 <- `c?`} + -- if (c#226?{c#226 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_47{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3316?{zero#3316 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#230))?{c#230 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#228))))?{c#228 <- `c?`} + -- if (c#229?{c#229 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3317?{zero#3317 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#233))?{c#233 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#231))))?{c#231 <- `c?`} + -- if (c#232?{c#232 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3318?{zero#3318 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#236))?{c#236 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#234))))?{c#234 <- `c?`} + -- if (c#235?{c#235 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3319?{zero#3319 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#239))?{c#239 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#237))))?{c#237 <- `c?`} + -- if (c#238?{c#238 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_51{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3320?{zero#3320 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#242))?{c#242 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#240))))?{c#240 <- `c?`} + -- if (c#241?{c#241 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3321?{zero#3321 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#245))?{c#245 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#243))))?{c#243 <- `c?`} + -- if (c#244?{c#244 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3322?{zero#3322 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#248))?{c#248 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#246))))?{c#246 <- `c?`} + -- if (c#247?{c#247 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3323?{zero#3323 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#251))?{c#251 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#249))))?{c#249 <- `c?`} + -- if (c#250?{c#250 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_55{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3324?{zero#3324 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#254))?{c#254 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#252))))?{c#252 <- `c?`} + -- if (c#253?{c#253 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_56{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#257))*{c#257 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#255))))*{c#255 <- `c*`} + -- if (c#256*{c#256 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_57{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#260))*{c#260 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#258))))*{c#258 <- `c*`} + -- if (c#259*{c#259 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_58{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#263))*{c#263 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#261))))*{c#261 <- `c*`} + -- if (c#262*{c#262 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_59{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#266))*{c#266 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#264))))*{c#264 <- `c*`} + -- if (c#265*{c#265 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_60{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#269))*{c#269 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#267))))*{c#267 <- `c*`} + -- if (c#268*{c#268 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_61{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#272))*{c#272 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#270))))*{c#270 <- `c*`} + -- if (c#271*{c#271 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_62{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#275))*{c#275 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#273))))*{c#273 <- `c*`} + -- if (c#274*{c#274 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_63{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#278))*{c#278 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#276))))*{c#276 <- `c*`} + -- if (c#277*{c#277 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_64{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#281))*{c#281 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#279))))*{c#279 <- `c*`} + -- if (c#280*{c#280 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_65{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#284))*{c#284 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#282))))*{c#282 <- `c*`} + -- if (c#283*{c#283 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_66{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#287))*{c#287 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#285))))*{c#285 <- `c*`} + -- if (c#286*{c#286 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_67{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#290))*{c#290 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#288))))*{c#288 <- `c*`} + -- if (c#289*{c#289 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_68{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#293))*{c#293 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#291))))*{c#291 <- `c*`} + -- if (c#292*{c#292 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_69{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#296))*{c#296 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#294))))*{c#294 <- `c*`} + -- if (c#295*{c#295 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_70{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#299))*{c#299 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#297))))*{c#297 <- `c*`} + -- if (c#298*{c#298 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_71{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#302))*{c#302 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#300))))*{c#300 <- `c*`} + -- if (c#301*{c#301 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1, v) + -- if (|`var_2*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#171, var_2))*{var_2 <- `var_2*`, c_1#171 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1#169))*{c_1#169 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c#303))*{c#303 <- `c*#43`}*{`c*#43` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) + -- if ((var_0 = ?()) /\ (var_1 = ?())) + -- if (c_1#170*{c_1#170 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) + -- if (c#304*{c#304 <- `c*#44`}*{`c*#44` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`})) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#305*{c#305 <- `c*#45`})*{`c*#45` <- `c**`}| > 0) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#305*{c#305 <- `c*#45`})*{`c*#45` <- `c**`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**, `var_1*` : lane_**, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- if (|`var_1*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#174, var_1))*{var_1 <- `var_1*`, c_1#174 <- `c_1*`} + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1#172))*{c_1#172 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c#306))*{c#306 <- `c*#46`}*{`c*#46` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- if (var_0 = ?(half)) + -- if (c_1#173*{c_1#173 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) + -- if (c#307*{c#307 <- `c*#47`}*{`c*#47` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`})) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#308*{c#308 <- `c*#48`})*{`c*#48` <- `c**`}| > 0) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#308*{c#308 <- `c*#48`})*{`c*#48` <- `c**`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, var_2 : lane_, `var_1*` : lane_**, var_0 : zero?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- fun_zero: `%%`(Lnn_2, var_2) + -- if (|`var_1*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#177, var_1))*{var_1 <- `var_1*`, c_1#177 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1#175))*{c_1#175 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c#309))*{c#309 <- `c*#49`}*{`c*#49` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- if (var_0 = ?(ZERO_zero)) + -- if (c_1#176*{c_1#176 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) + -- if (c#310*{c#310 <- `c*#50`}*{`c*#50` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`} ++ [var_2]^M_1{})) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#311*{c#311 <- `c*#51`})*{`c*#51` <- `c**`}| > 0) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#311*{c#311 <- `c*#51`})*{`c*#51` <- `c**`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vshiftop_: `%%%%%`(ishape, vshiftop_, vec_, u32, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_0{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_1{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_2{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_3{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_4{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_5{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_6{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_7{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vbitmaskop_: `%%%`(ishape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_0{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_1{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_2{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_3{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vswizzlop_: `%%%%%`(bshape, vswizzlop_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vswizzlop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vswizzlop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vshufflop_: `%%%%%`(bshape, laneidx*, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, var_0 : vec_}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#129110*{i#129110 <- `i*`}, v_1, v_2, var_0) + -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, var_0) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#178))*{c_1#178 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#115))*{c_2#115 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#1)))*{c'_1#1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#1)))*{c'_2#1 <- `c'_2*`} + -- if (c_1#179*{c_1#179 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#116*{c_2#116 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#180) =/= ?()))*{c_1#180 <- `c_1*`} + -- if (c'_1#2*{c'_1#2 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#180)))*{c_1#180 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#117) =/= ?()))*{c_2#117 <- `c_2*`} + -- if (c'_2#2*{c'_2#2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#117)))*{c_2#117 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#3)*{c'_1#3 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#3)*{c'_2#3 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#181))*{c_1#181 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#118))*{c_2#118 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#4)))*{c'_1#4 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#4)))*{c'_2#4 <- `c'_2*`} + -- if (c_1#182*{c_1#182 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#119*{c_2#119 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#183) =/= ?()))*{c_1#183 <- `c_1*`} + -- if (c'_1#5*{c'_1#5 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#183)))*{c_1#183 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#120) =/= ?()))*{c_2#120 <- `c_2*`} + -- if (c'_2#5*{c'_2#5 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#120)))*{c_2#120 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#6)*{c'_1#6 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#6)*{c'_2#6 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#184))*{c_1#184 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#121))*{c_2#121 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#7)))*{c'_1#7 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#7)))*{c'_2#7 <- `c'_2*`} + -- if (c_1#185*{c_1#185 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#122*{c_2#122 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#186) =/= ?()))*{c_1#186 <- `c_1*`} + -- if (c'_1#8*{c'_1#8 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#186)))*{c_1#186 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#123) =/= ?()))*{c_2#123 <- `c_2*`} + -- if (c'_2#8*{c'_2#8 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#123)))*{c_2#123 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#9)*{c'_1#9 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#9)*{c'_2#9 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#187))*{c_1#187 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#124))*{c_2#124 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#10)))*{c'_1#10 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#10)))*{c'_2#10 <- `c'_2*`} + -- if (c_1#188*{c_1#188 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#125*{c_2#125 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#189) =/= ?()))*{c_1#189 <- `c_1*`} + -- if (c'_1#11*{c'_1#11 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#189)))*{c_1#189 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#126) =/= ?()))*{c_2#126 <- `c_2*`} + -- if (c'_2#11*{c'_2#11 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#126)))*{c_2#126 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#12)*{c'_1#12 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#12)*{c'_2#12 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#190))*{c_1#190 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#127))*{c_2#127 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#13)))*{c'_1#13 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#13)))*{c'_2#13 <- `c'_2*`} + -- if (c_1#191*{c_1#191 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#128*{c_2#128 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#192) =/= ?()))*{c_1#192 <- `c_1*`} + -- if (c'_1#14*{c'_1#14 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#192)))*{c_1#192 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#129) =/= ?()))*{c_2#129 <- `c_2*`} + -- if (c'_2#14*{c'_2#14 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#129)))*{c_2#129 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#15)*{c'_1#15 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#15)*{c'_2#15 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#193))*{c_1#193 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#130))*{c_2#130 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#16)))*{c'_1#16 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#16)))*{c'_2#16 <- `c'_2*`} + -- if (c_1#194*{c_1#194 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#131*{c_2#131 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#195) =/= ?()))*{c_1#195 <- `c_1*`} + -- if (c'_1#17*{c'_1#17 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#195)))*{c_1#195 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#132) =/= ?()))*{c_2#132 <- `c_2*`} + -- if (c'_2#17*{c'_2#17 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#132)))*{c_2#132 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#18)*{c'_1#18 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#18)*{c'_2#18 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#196))*{c_1#196 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#133))*{c_2#133 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#19)))*{c'_1#19 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#19)))*{c'_2#19 <- `c'_2*`} + -- if (c_1#197*{c_1#197 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#134*{c_2#134 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#198) =/= ?()))*{c_1#198 <- `c_1*`} + -- if (c'_1#20*{c'_1#20 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#198)))*{c_1#198 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#135) =/= ?()))*{c_2#135 <- `c_2*`} + -- if (c'_2#20*{c'_2#20 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#135)))*{c_2#135 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#21)*{c'_1#21 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#21)*{c'_2#21 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#199))*{c_1#199 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#136))*{c_2#136 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#22)))*{c'_1#22 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#22)))*{c'_2#22 <- `c'_2*`} + -- if (c_1#200*{c_1#200 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#137*{c_2#137 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#201) =/= ?()))*{c_1#201 <- `c_1*`} + -- if (c'_1#23*{c'_1#23 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#201)))*{c_1#201 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#138) =/= ?()))*{c_2#138 <- `c_2*`} + -- if (c'_2#23*{c'_2#23 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#138)))*{c_2#138 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#24)*{c'_1#24 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#24)*{c'_2#24 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#202))*{c_1#202 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#139))*{c_2#139 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#25)))*{c'_1#25 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#25)))*{c'_2#25 <- `c'_2*`} + -- if (c_1#203*{c_1#203 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#140*{c_2#140 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#204) =/= ?()))*{c_1#204 <- `c_1*`} + -- if (c'_1#26*{c'_1#26 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#204)))*{c_1#204 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#141) =/= ?()))*{c_2#141 <- `c_2*`} + -- if (c'_2#26*{c'_2#26 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#141)))*{c_2#141 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#27)*{c'_1#27 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#27)*{c'_2#27 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#205))*{c_1#205 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#142))*{c_2#142 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#28)))*{c'_1#28 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#28)))*{c'_2#28 <- `c'_2*`} + -- if (c_1#206*{c_1#206 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#143*{c_2#143 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#207) =/= ?()))*{c_1#207 <- `c_1*`} + -- if (c'_1#29*{c'_1#29 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#207)))*{c_1#207 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#144) =/= ?()))*{c_2#144 <- `c_2*`} + -- if (c'_2#29*{c'_2#29 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#144)))*{c_2#144 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#30)*{c'_1#30 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#30)*{c'_2#30 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#208))*{c_1#208 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#145))*{c_2#145 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#31)))*{c'_1#31 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#31)))*{c'_2#31 <- `c'_2*`} + -- if (c_1#209*{c_1#209 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#146*{c_2#146 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#210) =/= ?()))*{c_1#210 <- `c_1*`} + -- if (c'_1#32*{c'_1#32 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#210)))*{c_1#210 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#147) =/= ?()))*{c_2#147 <- `c_2*`} + -- if (c'_2#32*{c'_2#32 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#147)))*{c_2#147 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#33)*{c'_1#33 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#33)*{c'_2#33 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#211))*{c_1#211 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#148))*{c_2#148 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#34)))*{c'_1#34 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#34)))*{c'_2#34 <- `c'_2*`} + -- if (c_1#212*{c_1#212 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#149*{c_2#149 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#213) =/= ?()))*{c_1#213 <- `c_1*`} + -- if (c'_1#35*{c'_1#35 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#213)))*{c_1#213 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#150) =/= ?()))*{c_2#150 <- `c_2*`} + -- if (c'_2#35*{c'_2#35 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#150)))*{c_2#150 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#36)*{c'_1#36 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#36)*{c'_2#36 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#214))*{c_1#214 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#151))*{c_2#151 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#37)))*{c'_1#37 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#37)))*{c'_2#37 <- `c'_2*`} + -- if (c_1#215*{c_1#215 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#152*{c_2#152 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#216) =/= ?()))*{c_1#216 <- `c_1*`} + -- if (c'_1#38*{c'_1#38 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#216)))*{c_1#216 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#153) =/= ?()))*{c_2#153 <- `c_2*`} + -- if (c'_2#38*{c'_2#38 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#153)))*{c_2#153 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#39)*{c'_1#39 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#39)*{c'_2#39 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#217))*{c_1#217 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#154))*{c_2#154 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#40)))*{c'_1#40 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#40)))*{c'_2#40 <- `c'_2*`} + -- if (c_1#218*{c_1#218 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#155*{c_2#155 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#219) =/= ?()))*{c_1#219 <- `c_1*`} + -- if (c'_1#41*{c'_1#41 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#219)))*{c_1#219 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#156) =/= ?()))*{c_2#156 <- `c_2*`} + -- if (c'_2#41*{c'_2#41 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#156)))*{c_2#156 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#42)*{c'_1#42 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#42)*{c'_2#42 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#220))*{c_1#220 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#157))*{c_2#157 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#43)))*{c'_1#43 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#43)))*{c'_2#43 <- `c'_2*`} + -- if (c_1#221*{c_1#221 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#158*{c_2#158 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#222) =/= ?()))*{c_1#222 <- `c_1*`} + -- if (c'_1#44*{c'_1#44 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#222)))*{c_1#222 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#159) =/= ?()))*{c_2#159 <- `c_2*`} + -- if (c'_2#44*{c'_2#44 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#159)))*{c_2#159 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#45)*{c'_1#45 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#45)*{c'_2#45 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#223))*{c_1#223 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#160))*{c_2#160 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#46)))*{c'_1#46 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#46)))*{c'_2#46 <- `c'_2*`} + -- if (c_1#224*{c_1#224 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#161*{c_2#161 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#225) =/= ?()))*{c_1#225 <- `c_1*`} + -- if (c'_1#47*{c'_1#47 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#225)))*{c_1#225 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#162) =/= ?()))*{c_2#162 <- `c_2*`} + -- if (c'_2#47*{c'_2#47 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#162)))*{c_2#162 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#48)*{c'_1#48 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#48)*{c'_2#48 <- `c'_2*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivadd_pairwise_(N : N, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i#129288*{i#129288 <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, `%`_uN(j_1#1)))*{j_1#1 <- `j_1*`} + -- (wf_uN: `%%`(N, `%`_uN(j_2#1)))*{j_2#1 <- `j_2*`} + -- if ($concat_(syntax N, [j_1#2 j_2#2]*{j_1#2 <- `j_1*`, j_2#2 <- `j_2*`}) = $proj_uN_0(i#129291).0*{i#129291 <- `i*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#314)*{c#314 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#226))*{c_1#226 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1#49))*{c'_1#49 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#312)))*{c#312 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1#227*{c_1#227 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#50*{c'_1#50 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#228)))*{c_1#228 <- `c_1*`}) + -- if (c#313*{c#313 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#51*{c'_1#51 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#317)*{c#317 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#229))*{c_1#229 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1#52))*{c'_1#52 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#315)))*{c#315 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1#230*{c_1#230 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#53*{c'_1#53 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#231)))*{c_1#231 <- `c_1*`}) + -- if (c#316*{c#316 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#54*{c'_1#54 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#320)*{c#320 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#232))*{c_1#232 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1#55))*{c'_1#55 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#318)))*{c#318 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1#233*{c_1#233 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#56*{c'_1#56 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#234)))*{c_1#234 <- `c_1*`}) + -- if (c#319*{c#319 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#57*{c'_1#57 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#323)*{c#323 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#235))*{c_1#235 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1#58))*{c'_1#58 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#321)))*{c#321 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1#236*{c_1#236 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#59*{c'_1#59 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#237)))*{c_1#237 <- `c_1*`}) + -- if (c#322*{c#322 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#60*{c'_1#60 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#326)*{c#326 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#238))*{c_1#238 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1#61))*{c'_1#61 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#324)))*{c#324 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1#239*{c_1#239 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#62*{c'_1#62 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#240)))*{c_1#240 <- `c_1*`}) + -- if (c#325*{c#325 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#63*{c'_1#63 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#329)*{c#329 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#241))*{c_1#241 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1#64))*{c'_1#64 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#327)))*{c#327 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1#242*{c_1#242 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#65*{c'_1#65 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#243)))*{c_1#243 <- `c_1*`}) + -- if (c#328*{c#328 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#66*{c'_1#66 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#332)*{c#332 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#244))*{c_1#244 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1#67))*{c'_1#67 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#330)))*{c#330 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1#245*{c_1#245 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#68*{c'_1#68 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#246)))*{c_1#246 <- `c_1*`}) + -- if (c#331*{c#331 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#69*{c'_1#69 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#335)*{c#335 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#247))*{c_1#247 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1#70))*{c'_1#70 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#333)))*{c#333 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1#248*{c_1#248 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#71*{c'_1#71 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#249)))*{c_1#249 <- `c_1*`}) + -- if (c#334*{c#334 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#72*{c'_1#72 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#338)*{c#338 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#250))*{c_1#250 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1#73))*{c'_1#73 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#336)))*{c#336 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1#251*{c_1#251 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#74*{c'_1#74 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#252)))*{c_1#252 <- `c_1*`}) + -- if (c#337*{c#337 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#75*{c'_1#75 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#341)*{c#341 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#253))*{c_1#253 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1#76))*{c'_1#76 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#339)))*{c#339 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1#254*{c_1#254 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#77*{c'_1#77 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#255)))*{c_1#255 <- `c_1*`}) + -- if (c#340*{c#340 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#78*{c'_1#78 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#344)*{c#344 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#256))*{c_1#256 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1#79))*{c'_1#79 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#342)))*{c#342 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1#257*{c_1#257 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#80*{c'_1#80 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#258)))*{c_1#258 <- `c_1*`}) + -- if (c#343*{c#343 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#81*{c'_1#81 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#347)*{c#347 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#259))*{c_1#259 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1#82))*{c'_1#82 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#345)))*{c#345 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1#260*{c_1#260 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#83*{c'_1#83 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#261)))*{c_1#261 <- `c_1*`}) + -- if (c#346*{c#346 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#84*{c'_1#84 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#350)*{c#350 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#262))*{c_1#262 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1#85))*{c'_1#85 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#348)))*{c#348 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1#263*{c_1#263 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#86*{c'_1#86 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#264)))*{c_1#264 <- `c_1*`}) + -- if (c#349*{c#349 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#87*{c'_1#87 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#353)*{c#353 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#265))*{c_1#265 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1#88))*{c'_1#88 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#351)))*{c#351 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1#266*{c_1#266 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#89*{c'_1#89 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#267)))*{c_1#267 <- `c_1*`}) + -- if (c#352*{c#352 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#90*{c'_1#90 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#356)*{c#356 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#268))*{c_1#268 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1#91))*{c'_1#91 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#354)))*{c#354 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1#269*{c_1#269 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#92*{c'_1#92 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#270)))*{c_1#270 <- `c_1*`}) + -- if (c#355*{c#355 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#93*{c'_1#93 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#359)*{c#359 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#271))*{c_1#271 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1#94))*{c'_1#94 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#357)))*{c#357 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1#272*{c_1#272 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#95*{c'_1#95 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#273)))*{c_1#273 <- `c_1*`}) + -- if (c#358*{c#358 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#96*{c'_1#96 <- `c'_1*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextunop__: `%%%%%`(ishape, ishape, vextunop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#1*{i_1#1 <- `i_1*`}, i_2#1*{i_2#1 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1#3))*{j_1#3 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2#3))*{j_2#3 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#4 j_2#4]*{j_1#4 <- `j_1*`, j_2#4 <- `j_2*`}) = $imul_(N, i_1#2, i_2#2)*{i_1#2 <- `i_1*`, i_2#2 <- `i_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_sat_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#3*{i_1#3 <- `i_1*`}, i_2#3*{i_2#3 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1#5))*{j_1#5 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2#5))*{j_2#5 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#6 j_2#6]*{j_1#6 <- `j_1*`, j_2#6 <- `j_2*`}) = $imul_(N, i_1#4, i_2#4)*{i_1#4 <- `i_1*`, i_2#4 <- `i_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#362)*{c#362 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#274))*{c_1#274 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#163))*{c_2#163 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1#97))*{c'_1#97 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2#49))*{c'_2#49 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#360)))*{c#360 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1#275*{c_1#275 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#164*{c_2#164 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#98*{c'_1#98 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#276)))*{c_1#276 <- `c_1*`}) + -- if (c'_2#50*{c'_2#50 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#165)))*{c_2#165 <- `c_2*`}) + -- if (c#361*{c#361 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#99*{c'_1#99 <- `c'_1*`}, c'_2#51*{c'_2#51 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#365)*{c#365 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#277))*{c_1#277 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#166))*{c_2#166 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1#100))*{c'_1#100 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2#52))*{c'_2#52 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#363)))*{c#363 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1#278*{c_1#278 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#167*{c_2#167 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#101*{c'_1#101 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#279)))*{c_1#279 <- `c_1*`}) + -- if (c'_2#53*{c'_2#53 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#168)))*{c_2#168 <- `c_2*`}) + -- if (c#364*{c#364 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#102*{c'_1#102 <- `c'_1*`}, c'_2#54*{c'_2#54 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#368)*{c#368 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#280))*{c_1#280 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#169))*{c_2#169 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1#103))*{c'_1#103 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2#55))*{c'_2#55 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#366)))*{c#366 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1#281*{c_1#281 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#170*{c_2#170 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#104*{c'_1#104 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#282)))*{c_1#282 <- `c_1*`}) + -- if (c'_2#56*{c'_2#56 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#171)))*{c_2#171 <- `c_2*`}) + -- if (c#367*{c#367 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#105*{c'_1#105 <- `c'_1*`}, c'_2#57*{c'_2#57 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#371)*{c#371 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#283))*{c_1#283 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#172))*{c_2#172 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1#106))*{c'_1#106 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2#58))*{c'_2#58 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#369)))*{c#369 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1#284*{c_1#284 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#173*{c_2#173 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#107*{c'_1#107 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#285)))*{c_1#285 <- `c_1*`}) + -- if (c'_2#59*{c'_2#59 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#174)))*{c_2#174 <- `c_2*`}) + -- if (c#370*{c#370 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#108*{c'_1#108 <- `c'_1*`}, c'_2#60*{c'_2#60 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#374)*{c#374 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#286))*{c_1#286 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#175))*{c_2#175 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1#109))*{c'_1#109 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2#61))*{c'_2#61 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#372)))*{c#372 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1#287*{c_1#287 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#176*{c_2#176 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#110*{c'_1#110 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#288)))*{c_1#288 <- `c_1*`}) + -- if (c'_2#62*{c'_2#62 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#177)))*{c_2#177 <- `c_2*`}) + -- if (c#373*{c#373 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#111*{c'_1#111 <- `c'_1*`}, c'_2#63*{c'_2#63 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#377)*{c#377 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#289))*{c_1#289 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#178))*{c_2#178 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1#112))*{c'_1#112 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2#64))*{c'_2#64 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#375)))*{c#375 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1#290*{c_1#290 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#179*{c_2#179 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#113*{c'_1#113 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#291)))*{c_1#291 <- `c_1*`}) + -- if (c'_2#65*{c'_2#65 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#180)))*{c_2#180 <- `c_2*`}) + -- if (c#376*{c#376 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#114*{c'_1#114 <- `c'_1*`}, c'_2#66*{c'_2#66 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#380)*{c#380 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#292))*{c_1#292 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#181))*{c_2#181 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1#115))*{c'_1#115 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2#67))*{c'_2#67 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#378)))*{c#378 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1#293*{c_1#293 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#182*{c_2#182 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#116*{c'_1#116 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#294)))*{c_1#294 <- `c_1*`}) + -- if (c'_2#68*{c'_2#68 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#183)))*{c_2#183 <- `c_2*`}) + -- if (c#379*{c#379 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#117*{c'_1#117 <- `c'_1*`}, c'_2#69*{c'_2#69 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#383)*{c#383 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#295))*{c_1#295 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#184))*{c_2#184 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1#118))*{c'_1#118 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2#70))*{c'_2#70 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#381)))*{c#381 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1#296*{c_1#296 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#185*{c_2#185 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#119*{c'_1#119 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#297)))*{c_1#297 <- `c_1*`}) + -- if (c'_2#71*{c'_2#71 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#186)))*{c_2#186 <- `c_2*`}) + -- if (c#382*{c#382 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#120*{c'_1#120 <- `c'_1*`}, c'_2#72*{c'_2#72 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#386)*{c#386 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#298))*{c_1#298 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#187))*{c_2#187 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1#121))*{c'_1#121 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2#73))*{c'_2#73 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#384)))*{c#384 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1#299*{c_1#299 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#188*{c_2#188 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#122*{c'_1#122 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#300)))*{c_1#300 <- `c_1*`}) + -- if (c'_2#74*{c'_2#74 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#189)))*{c_2#189 <- `c_2*`}) + -- if (c#385*{c#385 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#123*{c'_1#123 <- `c'_1*`}, c'_2#75*{c'_2#75 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#389)*{c#389 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#301))*{c_1#301 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#190))*{c_2#190 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1#124))*{c'_1#124 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2#76))*{c'_2#76 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#387)))*{c#387 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1#302*{c_1#302 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#191*{c_2#191 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#125*{c'_1#125 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#303)))*{c_1#303 <- `c_1*`}) + -- if (c'_2#77*{c'_2#77 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#192)))*{c_2#192 <- `c_2*`}) + -- if (c#388*{c#388 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#126*{c'_1#126 <- `c'_1*`}, c'_2#78*{c'_2#78 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#392)*{c#392 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#304))*{c_1#304 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#193))*{c_2#193 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1#127))*{c'_1#127 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2#79))*{c'_2#79 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#390)))*{c#390 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1#305*{c_1#305 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#194*{c_2#194 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#128*{c'_1#128 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#306)))*{c_1#306 <- `c_1*`}) + -- if (c'_2#80*{c'_2#80 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#195)))*{c_2#195 <- `c_2*`}) + -- if (c#391*{c#391 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#129*{c'_1#129 <- `c'_1*`}, c'_2#81*{c'_2#81 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#395)*{c#395 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#307))*{c_1#307 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#196))*{c_2#196 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1#130))*{c'_1#130 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2#82))*{c'_2#82 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#393)))*{c#393 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1#308*{c_1#308 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#197*{c_2#197 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#131*{c'_1#131 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#309)))*{c_1#309 <- `c_1*`}) + -- if (c'_2#83*{c'_2#83 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#198)))*{c_2#198 <- `c_2*`}) + -- if (c#394*{c#394 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#132*{c'_1#132 <- `c'_1*`}, c'_2#84*{c'_2#84 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#398)*{c#398 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#310))*{c_1#310 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#199))*{c_2#199 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1#133))*{c'_1#133 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2#85))*{c'_2#85 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#396)))*{c#396 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1#311*{c_1#311 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#200*{c_2#200 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#134*{c'_1#134 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#312)))*{c_1#312 <- `c_1*`}) + -- if (c'_2#86*{c'_2#86 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#201)))*{c_2#201 <- `c_2*`}) + -- if (c#397*{c#397 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#135*{c'_1#135 <- `c'_1*`}, c'_2#87*{c'_2#87 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#401)*{c#401 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#313))*{c_1#313 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#202))*{c_2#202 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1#136))*{c'_1#136 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2#88))*{c'_2#88 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#399)))*{c#399 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1#314*{c_1#314 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#203*{c_2#203 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#137*{c'_1#137 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#315)))*{c_1#315 <- `c_1*`}) + -- if (c'_2#89*{c'_2#89 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#204)))*{c_2#204 <- `c_2*`}) + -- if (c#400*{c#400 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#138*{c'_1#138 <- `c'_1*`}, c'_2#90*{c'_2#90 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#404)*{c#404 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#316))*{c_1#316 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#205))*{c_2#205 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1#139))*{c'_1#139 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2#91))*{c'_2#91 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#402)))*{c#402 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1#317*{c_1#317 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#206*{c_2#206 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#140*{c'_1#140 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#318)))*{c_1#318 <- `c_1*`}) + -- if (c'_2#92*{c'_2#92 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#207)))*{c_2#207 <- `c_2*`}) + -- if (c#403*{c#403 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#141*{c'_1#141 <- `c'_1*`}, c'_2#93*{c'_2#93 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#407)*{c#407 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#319))*{c_1#319 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#208))*{c_2#208 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1#142))*{c'_1#142 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2#94))*{c'_2#94 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#405)))*{c#405 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1#320*{c_1#320 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#209*{c_2#209 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#143*{c'_1#143 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#321)))*{c_1#321 <- `c_1*`}) + -- if (c'_2#95*{c'_2#95 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#210)))*{c_2#210 <- `c_2*`}) + -- if (c#406*{c#406 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#144*{c'_1#144 <- `c'_1*`}, c'_2#96*{c'_2#96 <- `c'_2*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivmul_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1#5*{i_1#5 <- `i_1*`}, i_2#5*{i_2#5 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextbinop__: `%%%%%%`(ishape, ishape, vextbinop__, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_16{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_17{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_18{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_19{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_20{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_21{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_22{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_23{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_24{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_25{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_26{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_27{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_28{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_29{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_30{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_31{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_32{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_33{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_34{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_35{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_36{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_37{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_38{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_39{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_40{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_41{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_42{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_43{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_44{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_45{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_46{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_47{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_0{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_1{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_2{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_3{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_4{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_5{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_6{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_7{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_8{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_9{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_10{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_11{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_12{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_13{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_14{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_15{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax num = + | CONST(numtype : numtype, num_) + +def $val_num(num) : val + def $val_num{x0 : numtype, x1 : num_}(CONST_num(x0, x1)) = CONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_num: `%`(num) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule num_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_num(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax vec = + | VCONST(vectype : vectype, vec_) + +def $val_vec(vec) : val + def $val_vec{x0 : vectype, x1 : vec_}(VCONST_vec(x0, x1)) = VCONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_vec: `%`(vec) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule vec_case_0{vectype : vectype, var_0 : vec_}: + `%`(VCONST_vec(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax result = + | _VALS(`val*` : val*) | `(REF.EXN_ADDR%)THROW_REF`(exnaddr : exnaddr) | TRAP -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_result: `%`(result) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_result: `%`(result) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_0{`val*` : val*}: + `%`(_VALS_result(`val*`)) + -- (wf_val: `%`(val))*{val <- `val*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_1{exnaddr : exnaddr}: + `%`(`(REF.EXN_ADDR%)THROW_REF`_result(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_2: + `%`(TRAP_result) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostfunc = + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funccode = + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | `...` + +def $funccode_func(func) : funccode + def $funccode_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_funccode(x0, x1, x2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funccode: `%`(funccode) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_funccode(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_1: + `%`(`...`_funccode) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax taginst = +{ + TYPE tagtype +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_taginst: `%`(taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_case_{var_0 : tagtype}: + `%`({TYPE var_0}) + -- wf_typeuse: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globalinst = +{ + TYPE globaltype, + VALUE val +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_globalinst: `%`(globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_case_{var_0 : globaltype, var_1 : val}: + `%`({TYPE var_0, VALUE var_1}) + -- wf_globaltype: `%`(var_0) + -- wf_val: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax meminst = +{ + TYPE memtype, + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_meminst: `%`(meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_case_{var_0 : memtype, var_1 : byte*}: + `%`({TYPE var_0, BYTES var_1}) + -- wf_memtype: `%`(var_0) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableinst = +{ + TYPE tabletype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_tableinst: `%`(tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_case_{var_0 : tabletype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_tabletype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcinst = +{ + TYPE deftype, + MODULE moduleinst, + CODE funccode +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funcinst: `%`(funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_case_{var_0 : deftype, var_1 : moduleinst, var_2 : funccode}: + `%`({TYPE var_0, MODULE var_1, CODE var_2}) + -- wf_moduleinst: `%`(var_1) + -- wf_funccode: `%`(var_2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax datainst = +{ + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_datainst: `%`(datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_case_{var_0 : byte*}: + `%`({BYTES var_0}) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax eleminst = +{ + TYPE elemtype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_eleminst: `%`(eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_case_{var_0 : elemtype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_reftype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax packval = + | PACK(packtype : packtype, iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_packval: `%`(packval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packval_case_0{packtype : packtype, var_0 : iN}: + `%`(PACK_packval(packtype, var_0)) + -- wf_uN: `%%`($psize(packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax fieldval = + | CONST(numtype : numtype, num_) + | VCONST(vectype : vectype, vec_) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + | PACK(packtype : packtype, iN) + +def $fieldval_packval(packval) : fieldval + def $fieldval_packval{x0 : packtype, x1 : iN}(PACK_packval(x0, x1)) = PACK_fieldval(x0, x1) + +def $fieldval_ref(ref) : fieldval + def $fieldval_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_fieldval(x0) + def $fieldval_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_fieldval + def $fieldval_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_fieldval(x0) + +def $fieldval_val(val) : fieldval + def $fieldval_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_fieldval(x0, x1) + def $fieldval_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_fieldval(x0, x1) + def $fieldval_val{x0 : u31}(`REF.I31_NUM`_val(x0)) = `REF.I31_NUM`_fieldval(x0) + def $fieldval_val(`REF.NULL_ADDR`_val) = `REF.NULL_ADDR`_fieldval + def $fieldval_val{x0 : structaddr}(`REF.STRUCT_ADDR`_val(x0)) = `REF.STRUCT_ADDR`_fieldval(x0) + def $fieldval_val{x0 : arrayaddr}(`REF.ARRAY_ADDR`_val(x0)) = `REF.ARRAY_ADDR`_fieldval(x0) + def $fieldval_val{x0 : funcaddr}(`REF.FUNC_ADDR`_val(x0)) = `REF.FUNC_ADDR`_fieldval(x0) + def $fieldval_val{x0 : exnaddr}(`REF.EXN_ADDR`_val(x0)) = `REF.EXN_ADDR`_fieldval(x0) + def $fieldval_val{x0 : hostaddr}(`REF.HOST_ADDR`_val(x0)) = `REF.HOST_ADDR`_fieldval(x0) + def $fieldval_val{x0 : ref}(`REF.EXTERN`_val(x0)) = `REF.EXTERN`_fieldval(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_fieldval: `%`(fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_fieldval(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_1{vectype : vectype, var_0 : vec_}: + `%`(VCONST_fieldval(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_2{u31 : u31}: + `%`(`REF.I31_NUM`_fieldval(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_3: + `%`(`REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_4{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_5{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_6{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_7{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_8{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_9{ref : ref}: + `%`(`REF.EXTERN`_fieldval(ref)) + -- wf_ref: `%`(ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_10{packtype : packtype, var_0 : iN}: + `%`(PACK_fieldval(packtype, var_0)) + -- wf_uN: `%%`($psize(packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_structinst: `%`(structinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_arrayinst: `%`(arrayinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exninst = +{ + TAG tagaddr, + FIELDS val* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exninst: `%`(exninst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_case_{var_0 : tagaddr, var_1 : val*}: + `%`({TAG var_0, FIELDS var_1}) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax store = +{ + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_store: `%`(store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: + `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) + -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} + -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} + -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} + -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} + -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} + -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} + -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} + -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} + -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} + -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax state = + | `%;%`(store : store, frame : frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_state: `%`(state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule state_case_0{store : store, frame : frame}: + `%`(`%;%`_state(store, frame)) + -- wf_store: `%`(store) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax config = + | `%;%`(state : state, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_config: `%`(config) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule config_case_0{state : state, `instr*` : instr*}: + `%`(`%;%`_config(state, `instr*`)) + -- wf_state: `%`(state) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $Ki : nat + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $Ki = 1024 + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_packfield__before_fun_packfield__case_9: `%%`(storagetype, val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_8{i : uN}: + `%%`(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) + -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_7{i : uN}: + `%%`(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) + -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_6{val : val}: + `%%`(I32_storagetype, val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_5{val : val}: + `%%`(I64_storagetype, val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_4{val : val}: + `%%`(F32_storagetype, val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_3{val : val}: + `%%`(F64_storagetype, val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_2{val : val}: + `%%`(V128_storagetype, val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_1{`null?` : null?, heaptype : heaptype, val : val}: + `%%`(REF_storagetype(`null?`, heaptype), val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_0{val : val}: + `%%`(BOT_storagetype, val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_packfield_: `%%%`(storagetype, val, fieldval?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_0{val : val}: + `%%%`(BOT_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_1{`null?` : null?, heaptype : heaptype, val : val}: + `%%%`(REF_storagetype(`null?`, heaptype), val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_2{val : val}: + `%%%`(V128_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_3{val : val}: + `%%%`(F64_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_4{val : val}: + `%%%`(F32_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_5{val : val}: + `%%%`(I64_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_6{val : val}: + `%%%`(I32_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_7{i : uN}: + `%%%`(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)))) + -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_8{i : uN}: + `%%%`(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)))) + -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_9{x0 : storagetype, x1 : val}: + `%%%`(x0, x1, ?()) + -- ~ fun_packfield__before_fun_packfield__case_9: `%%`(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_unpackfield__before_fun_unpackfield__case_72: `%%%`(storagetype, sx?, fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_71{sx : sx, i : uN}: + `%%%`(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_70{sx : sx, i : uN}: + `%%%`(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_69{numtype : numtype, var_0 : num_}: + `%%%`(I32_storagetype, ?(), CONST_fieldval(numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_68{numtype : numtype, var_0 : num_}: + `%%%`(I64_storagetype, ?(), CONST_fieldval(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule result_case_0{`val*` : val*}: - `%`(_VALS_result(`val*`)) - -- (wf_val: `%`(val))*{val <- `val*`} + rule fun_unpackfield__case_67{numtype : numtype, var_0 : num_}: + `%%%`(F32_storagetype, ?(), CONST_fieldval(numtype, var_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule result_case_1{exnaddr : exnaddr}: - `%`(`(REF.EXN_ADDR%)THROW_REF`_result(exnaddr)) + rule fun_unpackfield__case_66{numtype : numtype, var_0 : num_}: + `%%%`(F64_storagetype, ?(), CONST_fieldval(numtype, var_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule result_case_2: - `%`(TRAP_result) + rule fun_unpackfield__case_65{numtype : numtype, var_0 : num_}: + `%%%`(V128_storagetype, ?(), CONST_fieldval(numtype, var_0)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax hostfunc = - | `...` + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_64{numtype : numtype, var_0 : num_, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), CONST_fieldval(numtype, var_0)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax funccode = - | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) - | `...` + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_63{numtype : numtype, var_0 : num_}: + `%%%`(BOT_storagetype, ?(), CONST_fieldval(numtype, var_0)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_funccode: `%`(funccode) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule funccode_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: - `%`(FUNC_funccode(typeidx, `local*`, expr)) - -- wf_uN: `%%`(32, typeidx) - -- (wf_local: `%`(local))*{local <- `local*`} - -- (wf_instr: `%`(expr))*{expr <- expr} + rule fun_unpackfield__case_62{vectype : vectype, var_1 : vec_}: + `%%%`(I32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule funccode_case_1: - `%`(`...`_funccode) + rule fun_unpackfield__case_61{vectype : vectype, var_1 : vec_}: + `%%%`(I64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax taginst = -{ - TYPE tagtype -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_60{vectype : vectype, var_1 : vec_}: + `%%%`(F32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_taginst: `%`(taginst) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule taginst_case_{var_0 : tagtype}: - `%`({TYPE var_0}) - -- wf_typeuse: `%`(var_0) + rule fun_unpackfield__case_59{vectype : vectype, var_1 : vec_}: + `%%%`(F64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax globalinst = -{ - TYPE globaltype, - VALUE val -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_58{vectype : vectype, var_1 : vec_}: + `%%%`(V128_storagetype, ?(), VCONST_fieldval(vectype, var_1)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_globalinst: `%`(globalinst) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule globalinst_case_{var_0 : globaltype, var_1 : val}: - `%`({TYPE var_0, VALUE var_1}) - -- wf_globaltype: `%`(var_0) - -- wf_val: `%`(var_1) + rule fun_unpackfield__case_57{vectype : vectype, var_1 : vec_, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), VCONST_fieldval(vectype, var_1)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax meminst = -{ - TYPE memtype, - BYTES byte* -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_56{vectype : vectype, var_1 : vec_}: + `%%%`(BOT_storagetype, ?(), VCONST_fieldval(vectype, var_1)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_meminst: `%`(meminst) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule meminst_case_{var_0 : memtype, var_1 : byte*}: - `%`({TYPE var_0, BYTES var_1}) - -- wf_memtype: `%`(var_0) - -- (wf_byte: `%`(var_1))*{var_1 <- var_1} + rule fun_unpackfield__case_55{u31 : u31}: + `%%%`(I32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax tableinst = -{ - TYPE tabletype, - REFS ref* -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_54{u31 : u31}: + `%%%`(I64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_tableinst: `%`(tableinst) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule tableinst_case_{var_0 : tabletype, var_1 : ref*}: - `%`({TYPE var_0, REFS var_1}) - -- wf_tabletype: `%`(var_0) - -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + rule fun_unpackfield__case_53{u31 : u31}: + `%%%`(F32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_52{u31 : u31}: + `%%%`(F64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_51{u31 : u31}: + `%%%`(V128_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_50{u31 : u31, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_49{u31 : u31}: + `%%%`(BOT_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_48: + `%%%`(I32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_47: + `%%%`(I64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_46: + `%%%`(F32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_45: + `%%%`(F64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_44: + `%%%`(V128_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_43{`null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_42: + `%%%`(BOT_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_41{structaddr : structaddr}: + `%%%`(I32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_40{structaddr : structaddr}: + `%%%`(I64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_39{structaddr : structaddr}: + `%%%`(F32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_38{structaddr : structaddr}: + `%%%`(F64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_37{structaddr : structaddr}: + `%%%`(V128_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_36{structaddr : structaddr, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_35{structaddr : structaddr}: + `%%%`(BOT_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_34{arrayaddr : arrayaddr}: + `%%%`(I32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_33{arrayaddr : arrayaddr}: + `%%%`(I64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_32{arrayaddr : arrayaddr}: + `%%%`(F32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_31{arrayaddr : arrayaddr}: + `%%%`(F64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_30{arrayaddr : arrayaddr}: + `%%%`(V128_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_29{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_28{arrayaddr : arrayaddr}: + `%%%`(BOT_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_27{funcaddr : funcaddr}: + `%%%`(I32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_26{funcaddr : funcaddr}: + `%%%`(I64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_25{funcaddr : funcaddr}: + `%%%`(F32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_24{funcaddr : funcaddr}: + `%%%`(F64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_23{funcaddr : funcaddr}: + `%%%`(V128_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_22{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_21{funcaddr : funcaddr}: + `%%%`(BOT_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_20{exnaddr : exnaddr}: + `%%%`(I32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_19{exnaddr : exnaddr}: + `%%%`(I64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_18{exnaddr : exnaddr}: + `%%%`(F32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_17{exnaddr : exnaddr}: + `%%%`(F64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_16{exnaddr : exnaddr}: + `%%%`(V128_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_15{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_14{exnaddr : exnaddr}: + `%%%`(BOT_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_13{hostaddr : hostaddr}: + `%%%`(I32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_12{hostaddr : hostaddr}: + `%%%`(I64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_11{hostaddr : hostaddr}: + `%%%`(F32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_10{hostaddr : hostaddr}: + `%%%`(F64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_9{hostaddr : hostaddr}: + `%%%`(V128_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_8{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_7{hostaddr : hostaddr}: + `%%%`(BOT_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_6{ref : ref}: + `%%%`(I32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_5{ref : ref}: + `%%%`(I64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_4{ref : ref}: + `%%%`(F32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_3{ref : ref}: + `%%%`(F64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_2{ref : ref}: + `%%%`(V128_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_1{ref : ref, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.EXTERN`_fieldval(ref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_0{ref : ref}: + `%%%`(BOT_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax funcinst = -{ - TYPE deftype, - MODULE moduleinst, - CODE funccode -} +relation fun_unpackfield_: `%%%%`(storagetype, sx?, fieldval, val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_0{ref : ref}: + `%%%%`(BOT_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_1{ref : ref, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_2{ref : ref}: + `%%%%`(V128_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_3{ref : ref}: + `%%%%`(F64_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_4{ref : ref}: + `%%%%`(F32_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_5{ref : ref}: + `%%%%`(I64_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_6{ref : ref}: + `%%%%`(I32_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_7{hostaddr : hostaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_8{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_9{hostaddr : hostaddr}: + `%%%%`(V128_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_10{hostaddr : hostaddr}: + `%%%%`(F64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_11{hostaddr : hostaddr}: + `%%%%`(F32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_12{hostaddr : hostaddr}: + `%%%%`(I64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_13{hostaddr : hostaddr}: + `%%%%`(I32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_14{exnaddr : exnaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_15{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_16{exnaddr : exnaddr}: + `%%%%`(V128_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_17{exnaddr : exnaddr}: + `%%%%`(F64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_18{exnaddr : exnaddr}: + `%%%%`(F32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_19{exnaddr : exnaddr}: + `%%%%`(I64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_20{exnaddr : exnaddr}: + `%%%%`(I32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_21{funcaddr : funcaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_22{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_23{funcaddr : funcaddr}: + `%%%%`(V128_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_24{funcaddr : funcaddr}: + `%%%%`(F64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_25{funcaddr : funcaddr}: + `%%%%`(F32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_26{funcaddr : funcaddr}: + `%%%%`(I64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_27{funcaddr : funcaddr}: + `%%%%`(I32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_28{arrayaddr : arrayaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_29{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_30{arrayaddr : arrayaddr}: + `%%%%`(V128_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_31{arrayaddr : arrayaddr}: + `%%%%`(F64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_32{arrayaddr : arrayaddr}: + `%%%%`(F32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_33{arrayaddr : arrayaddr}: + `%%%%`(I64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_funcinst: `%`(funcinst) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule funcinst_case_{var_0 : deftype, var_1 : moduleinst, var_2 : funccode}: - `%`({TYPE var_0, MODULE var_1, CODE var_2}) - -- wf_moduleinst: `%`(var_1) - -- wf_funccode: `%`(var_2) + rule fun_unpackfield__case_34{arrayaddr : arrayaddr}: + `%%%%`(I32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax datainst = -{ - BYTES byte* -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_35{structaddr : structaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_datainst: `%`(datainst) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule datainst_case_{var_0 : byte*}: - `%`({BYTES var_0}) - -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + rule fun_unpackfield__case_36{structaddr : structaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax eleminst = -{ - TYPE elemtype, - REFS ref* -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_37{structaddr : structaddr}: + `%%%%`(V128_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_eleminst: `%`(eleminst) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule eleminst_case_{var_0 : elemtype, var_1 : ref*}: - `%`({TYPE var_0, REFS var_1}) - -- wf_reftype: `%`(var_0) - -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + rule fun_unpackfield__case_38{structaddr : structaddr}: + `%%%%`(F64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax packval = - | PACK(packtype : packtype, iN) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_39{structaddr : structaddr}: + `%%%%`(F32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_packval: `%`(packval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule packval_case_0{packtype : packtype, var_0 : iN}: - `%`(PACK_packval(packtype, var_0)) - -- wf_uN: `%%`($psize(packtype), var_0) + rule fun_unpackfield__case_40{structaddr : structaddr}: + `%%%%`(I64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax fieldval = - | CONST(numtype : numtype, num_) - | VCONST(vectype : vectype, vec_) - | `REF.I31_NUM`(u31 : u31) - | `REF.NULL_ADDR` - | `REF.STRUCT_ADDR`(structaddr : structaddr) - | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) - | `REF.FUNC_ADDR`(funcaddr : funcaddr) - | `REF.EXN_ADDR`(exnaddr : exnaddr) - | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(ref : ref) - | PACK(packtype : packtype, iN) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_41{structaddr : structaddr}: + `%%%%`(I32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_fieldval: `%`(fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_0{numtype : numtype, var_0 : num_}: - `%`(CONST_fieldval(numtype, var_0)) - -- wf_num_: `%%`(numtype, var_0) + rule fun_unpackfield__case_42: + `%%%%`(BOT_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_1{vectype : vectype, var_0 : vec_}: - `%`(VCONST_fieldval(vectype, var_0)) - -- wf_uN: `%%`($vsize(vectype), var_0) + rule fun_unpackfield__case_43{`null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_2{u31 : u31}: - `%`(`REF.I31_NUM`_fieldval(u31)) - -- wf_uN: `%%`(31, u31) + rule fun_unpackfield__case_44: + `%%%%`(V128_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_3: - `%`(`REF.NULL_ADDR`_fieldval) + rule fun_unpackfield__case_45: + `%%%%`(F64_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_4{structaddr : structaddr}: - `%`(`REF.STRUCT_ADDR`_fieldval(structaddr)) + rule fun_unpackfield__case_46: + `%%%%`(F32_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_5{arrayaddr : arrayaddr}: - `%`(`REF.ARRAY_ADDR`_fieldval(arrayaddr)) + rule fun_unpackfield__case_47: + `%%%%`(I64_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_6{funcaddr : funcaddr}: - `%`(`REF.FUNC_ADDR`_fieldval(funcaddr)) + rule fun_unpackfield__case_48: + `%%%%`(I32_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_7{exnaddr : exnaddr}: - `%`(`REF.EXN_ADDR`_fieldval(exnaddr)) + rule fun_unpackfield__case_49{u31 : u31}: + `%%%%`(BOT_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_8{hostaddr : hostaddr}: - `%`(`REF.HOST_ADDR`_fieldval(hostaddr)) + rule fun_unpackfield__case_50{u31 : u31, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_9{ref : ref}: - `%`(`REF.EXTERN`_fieldval(ref)) - -- wf_ref: `%`(ref) + rule fun_unpackfield__case_51{u31 : u31}: + `%%%%`(V128_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_10{packtype : packtype, var_0 : iN}: - `%`(PACK_fieldval(packtype, var_0)) - -- wf_uN: `%%`($psize(packtype), var_0) + rule fun_unpackfield__case_52{u31 : u31}: + `%%%%`(F64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax structinst = -{ - TYPE deftype, - FIELDS fieldval* -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_53{u31 : u31}: + `%%%%`(F32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_structinst: `%`(structinst) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: - `%`({TYPE var_0, FIELDS var_1}) - -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + rule fun_unpackfield__case_54{u31 : u31}: + `%%%%`(I64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax arrayinst = -{ - TYPE deftype, - FIELDS fieldval* -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_55{u31 : u31}: + `%%%%`(I32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_arrayinst: `%`(arrayinst) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: - `%`({TYPE var_0, FIELDS var_1}) - -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + rule fun_unpackfield__case_56{vectype : vectype, var_1 : vec_}: + `%%%%`(BOT_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax exninst = -{ - TAG tagaddr, - FIELDS val* -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_57{vectype : vectype, var_1 : vec_, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_exninst: `%`(exninst) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule exninst_case_{var_0 : tagaddr, var_1 : val*}: - `%`({TAG var_0, FIELDS var_1}) - -- (wf_val: `%`(var_1))*{var_1 <- var_1} + rule fun_unpackfield__case_58{vectype : vectype, var_1 : vec_}: + `%%%%`(V128_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax store = -{ - TAGS taginst*, - GLOBALS globalinst*, - MEMS meminst*, - TABLES tableinst*, - FUNCS funcinst*, - DATAS datainst*, - ELEMS eleminst*, - STRUCTS structinst*, - ARRAYS arrayinst*, - EXNS exninst* -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_59{vectype : vectype, var_1 : vec_}: + `%%%%`(F64_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_store: `%`(store) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: - `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) - -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} - -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} - -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} - -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} - -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} - -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} - -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} - -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} - -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} - -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + rule fun_unpackfield__case_60{vectype : vectype, var_1 : vec_}: + `%%%%`(F32_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax state = - | `%;%`(store : store, frame : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_61{vectype : vectype, var_1 : vec_}: + `%%%%`(I64_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_state: `%`(state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule state_case_0{store : store, frame : frame}: - `%`(`%;%`_state(store, frame)) - -- wf_store: `%`(store) - -- wf_frame: `%`(frame) + rule fun_unpackfield__case_62{vectype : vectype, var_1 : vec_}: + `%%%%`(I32_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax config = - | `%;%`(state : state, `instr*` : instr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_63{numtype : numtype, var_0 : num_}: + `%%%%`(BOT_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_config: `%`(config) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule config_case_0{state : state, `instr*` : instr*}: - `%`(`%;%`_config(state, `instr*`)) - -- wf_state: `%`(state) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} + rule fun_unpackfield__case_64{numtype : numtype, var_0 : num_, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $Ki : nat ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $Ki = 1024 + rule fun_unpackfield__case_65{numtype : numtype, var_0 : num_}: + `%%%%`(V128_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $packfield_(storagetype : storagetype, val : val) : fieldval? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = ?((val : val <: fieldval)) + rule fun_unpackfield__case_66{numtype : numtype, var_0 : num_}: + `%%%%`(F64_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) - def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() - -- otherwise + rule fun_unpackfield__case_67{numtype : numtype, var_0 : num_}: + `%%%%`(F32_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_68{numtype : numtype, var_0 : num_}: + `%%%%`(I64_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = ?(val) + rule fun_unpackfield__case_69{numtype : numtype, var_0 : num_}: + `%%%%`(I32_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) - def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() - -- otherwise + rule fun_unpackfield__case_70{sx : sx, i : uN}: + `%%%%`(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i), ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i))))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_71{sx : sx, i : uN}: + `%%%%`(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i), ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i))))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_72{x0 : storagetype, x1 : sx?, x2 : fieldval}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_unpackfield__before_fun_unpackfield__case_72: `%%%`(x0, x1, x2) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -9256,9 +15513,9 @@ def $tagsxa(externaddr*) : tagaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.23 def $tagsxa([]) = [] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.42 - def $tagsxa{a : nat, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) + def $tagsxa{a : nat, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa#1*{xa#1 <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:198.1-198.57 - def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) + def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#2*{xa#2 <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9269,9 +15526,9 @@ def $globalsxa(externaddr*) : globaladdr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.26 def $globalsxa([]) = [] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.51 - def $globalsxa{a : nat, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) + def $globalsxa{a : nat, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa#3*{xa#3 <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:202.1-202.63 - def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) + def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#4*{xa#4 <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9282,9 +15539,9 @@ def $memsxa(externaddr*) : memaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.23 def $memsxa([]) = [] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.42 - def $memsxa{a : nat, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) + def $memsxa{a : nat, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa#5*{xa#5 <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:206.1-206.57 - def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) + def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#6*{xa#6 <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9295,9 +15552,9 @@ def $tablesxa(externaddr*) : tableaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.25 def $tablesxa([]) = [] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.48 - def $tablesxa{a : nat, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) + def $tablesxa{a : nat, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa#7*{xa#7 <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:210.1-210.61 - def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) + def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#8*{xa#8 <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9308,9 +15565,9 @@ def $funcsxa(externaddr*) : funcaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.24 def $funcsxa([]) = [] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.45 - def $funcsxa{a : nat, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) + def $funcsxa{a : nat, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa#9*{xa#9 <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:214.1-214.59 - def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) + def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#10*{xa#10 <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9439,112 +15696,168 @@ def $local(state : state, localidx : localidx) : val? def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[$proj_uN_0(x).0] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_local(state : state, localidx : localidx, val : val) : state +relation fun_with_local: `%%%%`(state, localidx, val, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + rule fun_with_local_case_0{z : state, x : uN, v : val}: + `%%%%`(z, x, v, `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) -- wf_state: `%`(`%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_global(state : state, globalidx : globalidx, val : val) : state +relation fun_with_global: `%%%%`(state, globalidx, val, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z)) + rule fun_with_global_case_0{z : state, x : uN, v : val}: + `%%%%`(z, x, v, `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.GLOBALS_moduleinst|) -- wf_state: `%`(`%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state +relation fun_with_table: `%%%%%`(state, tableidx, nat, ref, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z)) + rule fun_with_table_case_0{z : state, x : uN, i : nat, r : ref}: + `%%%%%`(z, x, i, r, `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.TABLES_moduleinst|) -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state +relation fun_with_tableinst: `%%%%`(state, tableidx, tableinst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z)) + rule fun_with_tableinst_case_0{z : state, x : uN, ti : tableinst}: + `%%%%`(z, x, ti, `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.TABLES_moduleinst|) -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state +relation fun_with_mem: `%%%%%%`(state, memidx, nat, nat, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_mem{z : state, x : uN, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z))) + rule fun_with_mem_case_0{z : state, x : uN, i : nat, j : nat, `b*` : byte*}: + `%%%%%%`(z, x, i, j, b#1*{b#1 <- `b*`}, `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.MEMS_moduleinst|) + -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b#2*{b#2 <- `b*`}], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state +relation fun_with_meminst: `%%%%`(state, memidx, meminst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z)) + rule fun_with_meminst_case_0{z : state, x : uN, mi : meminst}: + `%%%%`(z, x, mi, `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.MEMS_moduleinst|) -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_elem(state : state, elemidx : elemidx, ref*) : state +relation fun_with_elem: `%%%%`(state, elemidx, ref*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_elem{z : state, x : uN, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z))) + rule fun_with_elem_case_0{z : state, x : uN, `r*` : ref*}: + `%%%%`(z, x, r#1*{r#1 <- `r*`}, `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.ELEMS_moduleinst|) + -- wf_state: `%`(`%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r#2*{r#2 <- `r*`}], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_data(state : state, dataidx : dataidx, byte*) : state +relation fun_with_data: `%%%%`(state, dataidx, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z))) + rule fun_with_data_case_0{z : state, x : uN, `b*` : byte*}: + `%%%%`(z, x, b#3*{b#3 <- `b*`}, `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.DATAS_moduleinst|) + -- wf_state: `%`(`%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b#4*{b#4 <- `b*`}], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state +relation fun_with_struct: `%%%%%`(state, structaddr, nat, fieldval, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) + rule fun_with_struct_case_0{z : state, a : nat, i : nat, fv : fieldval}: + `%%%%%`(z, a, i, fv, `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state +relation fun_with_array: `%%%%%`(state, arrayaddr, nat, fieldval, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) + rule fun_with_array_case_0{z : state, a : nat, i : nat, fv : fieldval}: + `%%%%%`(z, a, i, fv, `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_structinst(state : state, structinst*) : state +relation fun_add_structinst: `%%%`(state, structinst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z))) + rule fun_add_structinst_case_0{z : state, `si*` : structinst*}: + `%%%`(z, si#1*{si#1 <- `si*`}, `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z))) + -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store =++ si#2*{si#2 <- `si*`}], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_arrayinst(state : state, arrayinst*) : state +relation fun_add_arrayinst: `%%%`(state, arrayinst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z))) + rule fun_add_arrayinst_case_0{z : state, `ai*` : arrayinst*}: + `%%%`(z, ai#1*{ai#1 <- `ai*`}, `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z))) + -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store =++ ai#2*{ai#2 <- `ai*`}], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_exninst(state : state, exninst*) : state +relation fun_add_exninst: `%%%`(state, exninst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z))) + rule fun_add_exninst_case_0{z : state, `exn*` : exninst*}: + `%%%`(z, exn#1*{exn#1 <- `exn*`}, `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z))) + -- wf_state: `%`(`%;%`_state($sof(z)[EXNS_store =++ exn#2*{exn#2 <- `exn*`}], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? +relation fun_growtable_before_fun_growtable_case_1: `%%%`(tableinst, nat, ref) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') + rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}: + `%%%`(tableinst, n, r) -- wf_tableinst: `%`(tableinst') - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) - -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) - -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) - -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) - -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} - -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) - def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() - -- otherwise + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#1?{j#1 <- `j?`}), rt), REFS r'#1*{r'#1 <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#2?{j#2 <- `j?`}), rt), REFS r'#2*{r'#2 <- `r'*`} ++ r^n{}}) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#3?{j#3 <- `j?`}), rt), REFS r'#3*{r'#3 <- `r'*`}}) + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#4?{j#4 <- `j?`}), rt), REFS r'#4*{r'#4 <- `r'*`} ++ r^n{}}) + -- if ($proj_uN_0(i').0 = (|r'#5*{r'#5 <- `r'*`}| + n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#5).0))?{j#5 <- `j?`} + -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $growmem(meminst : meminst, nat : nat) : meminst? +relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') + rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}: + `%%%%`(tableinst, n, r, ?(tableinst')) + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#1?{j#1 <- `j?`}), rt), REFS r'#1*{r'#1 <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#2?{j#2 <- `j?`}), rt), REFS r'#2*{r'#2 <- `r'*`} ++ r^n{}}) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#3?{j#3 <- `j?`}), rt), REFS r'#3*{r'#3 <- `r'*`}}) + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#4?{j#4 <- `j?`}), rt), REFS r'#4*{r'#4 <- `r'*`} ++ r^n{}}) + -- if ($proj_uN_0(i').0 = (|r'#5*{r'#5 <- `r'*`}| + n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#5).0))?{j#5 <- `j?`} + -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_1{x0 : tableinst, x1 : nat, x2 : ref}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_growtable_before_fun_growtable_case_1: `%%%`(x0, x1, x2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem_before_fun_growmem_case_1: `%%`(meminst, nat) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}: + `%%`(meminst, n) -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) - -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} - -- if ($proj_uN_0(i').0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() - -- otherwise + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#5*{b#5 <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#6*{b#6 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#8?{j#8 <- `j?`})), BYTES b#7*{b#7 <- `b*`}}) + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#9?{j#9 <- `j?`})), BYTES b#8*{b#8 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#9*{b#9 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#10).0))?{j#10 <- `j?`} + -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem: `%%%`(meminst, nat, meminst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}: + `%%%`(meminst, n, ?(meminst')) + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#5*{b#5 <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#6*{b#6 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#8?{j#8 <- `j?`})), BYTES b#7*{b#7 <- `b*`}}) + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#9?{j#9 <- `j?`})), BYTES b#8*{b#8 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#9*{b#9 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#10).0))?{j#10 <- `j?`} + -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_1{x0 : meminst, x1 : nat}: + `%%%`(x0, x1, ?()) + -- ~ fun_growmem_before_fun_growmem_case_1: `%%`(x0, x1) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) @@ -9583,28 +15896,28 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 rule struct{s : store, a : addr, dt : deftype}: - `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- wf_store: `%`(s) -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 rule array{s : store, a : addr, dt : deftype}: - `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- wf_store: `%`(s) -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 rule func{s : store, a : addr, dt : deftype}: - `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- wf_store: `%`(s) -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) @@ -9652,21 +15965,21 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: - `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) + `%|-%:%`(s, $val_num(num), $valtype_numtype(nt)) -- wf_store: `%`(s) -- wf_num: `%`(num) -- Num_ok: `%|-%:%`(s, num, nt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: - `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) + `%|-%:%`(s, $val_vec(vec), $valtype_vectype(vt)) -- wf_store: `%`(s) -- wf_vec: `%`(vec) -- Vec_ok: `%|-%:%`(s, vec, vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: - `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) + `%|-%:%`(s, $val_ref(ref), $valtype_reftype(rt)) -- wf_store: `%`(s) -- wf_ref: `%`(ref) -- wf_reftype: `%`(rt) @@ -9684,7 +15997,7 @@ relation Packval_ok: `%|-%:%`(store, packval, packtype) relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule val{s : store, val : val, t : valtype}: - `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) + `%|-%:%`(s, $fieldval_val(val), $storagetype_valtype(t)) -- wf_store: `%`(s) -- wf_val: `%`(val) -- wf_valtype: `%`(t) @@ -9692,7 +16005,7 @@ relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule packval{s : store, packval : packval, pt : packtype}: - `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) + `%|-%:%`(s, $fieldval_packval(packval), $storagetype_packtype(pt)) -- wf_store: `%`(s) -- wf_packval: `%`(packval) -- Packval_ok: `%|-%:%`(s, packval, pt) @@ -9736,9 +16049,9 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:121.1-123.30 rule func{s : store, a : addr, funcinst : funcinst}: - `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) @@ -9754,35 +16067,45 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) } ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype +relation fun_inst_valtype: `%%%`(moduleinst, valtype, valtype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) + rule fun_inst_valtype_case_0{moduleinst : moduleinst, t : valtype, var_0 : valtype}: + `%%%`(moduleinst, t, var_0) + -- fun_subst_all_valtype: `%%%`(t, (iter_val#3 : deftype <: typeuse)*{iter_val#3 <- moduleinst.TYPES_moduleinst}, var_0) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype +relation fun_inst_reftype: `%%%`(moduleinst, reftype, reftype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) + rule fun_inst_reftype_case_0{moduleinst : moduleinst, rt : reftype, var_0 : reftype}: + `%%%`(moduleinst, rt, var_0) + -- fun_subst_all_reftype: `%%%`(rt, (iter_val#4 : deftype <: typeuse)*{iter_val#4 <- moduleinst.TYPES_moduleinst}, var_0) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype +relation fun_inst_globaltype: `%%%`(moduleinst, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) + rule fun_inst_globaltype_case_0{moduleinst : moduleinst, gt : globaltype, var_0 : globaltype}: + `%%%`(moduleinst, gt, var_0) + -- fun_subst_all_globaltype: `%%%`(gt, (iter_val#5 : deftype <: typeuse)*{iter_val#5 <- moduleinst.TYPES_moduleinst}, var_0) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype +relation fun_inst_memtype: `%%%`(moduleinst, memtype, memtype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) + rule fun_inst_memtype_case_0{moduleinst : moduleinst, mt : memtype, var_0 : memtype}: + `%%%`(moduleinst, mt, var_0) + -- fun_subst_all_memtype: `%%%`(mt, (iter_val#6 : deftype <: typeuse)*{iter_val#6 <- moduleinst.TYPES_moduleinst}, var_0) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype +relation fun_inst_tabletype: `%%%`(moduleinst, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) + rule fun_inst_tabletype_case_0{moduleinst : moduleinst, tt : tabletype, var_0 : tabletype}: + `%%%`(moduleinst, tt, var_0) + -- fun_subst_all_tabletype: `%%%`(tt, (iter_val#7 : deftype <: typeuse)*{iter_val#7 <- moduleinst.TYPES_moduleinst}, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_br_on_null-addr`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null_0`{val : val, l : labelidx}: - `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) + `%`([$instr_val(val) BR_ON_NULL_instr(l)]) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- wf_instr: `%`(BR_instr(l)) @@ -9793,7 +16116,7 @@ relation `Step_pure_before_br_on_null-addr`: `%`(instr*) relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null_0`{val : val, l : labelidx}: - `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) + `%`([$instr_val(val) BR_ON_NON_NULL_instr(l)]) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) @@ -9803,7 +16126,7 @@ relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) relation `Step_pure_before_ref.is_null-false`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true_0`{ref : ref}: - `%`([(ref : ref <: instr) `REF.IS_NULL`_instr]) + `%`([$instr_ref(ref) `REF.IS_NULL`_instr]) -- wf_ref: `%`(ref) -- wf_instr: `%`(`REF.IS_NULL`_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) @@ -9814,7 +16137,7 @@ relation `Step_pure_before_ref.is_null-false`: `%`(instr*) relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null_0`{ref : ref}: - `%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr]) + `%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr]) -- wf_ref: `%`(ref) -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) -- wf_instr: `%`(TRAP_instr) @@ -9825,7 +16148,7 @@ relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) + `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(`REF.EQ`_instr) @@ -9837,17 +16160,17 @@ relation `Step_pure_before_ref.eq-true`: `%`(instr*) relation `Step_pure_before_ref.eq-false`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true_0`{ref_1 : ref, ref_2 : ref}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) + `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(`REF.EQ`_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) + -- ~ `Step_pure_before_ref.eq-true`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_1`{ref_1 : ref, ref_2 : ref}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) + `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(`REF.EQ`_instr) @@ -9859,7 +16182,7 @@ relation `Step_pure_before_ref.eq-false`: `%`(instr*) relation `Step_pure_before_extern.convert_any-addr`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null_0`{ref : ref}: - `%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr]) + `%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr]) -- wf_ref: `%`(ref) -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) -- wf_instr: `%`(`REF.NULL_ADDR`_instr) @@ -9880,13 +16203,13 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: - `%~>%`([(val : val <: instr) DROP_instr], []) + `%~>%`([$instr_val(val) DROP_instr], []) -- wf_val: `%`(val) -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: - `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_1)]) -- wf_val: `%`(val_1) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) @@ -9896,7 +16219,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: - `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_2)]) -- wf_val: `%`(val_1) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) @@ -9924,26 +16247,26 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: - `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) + `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: - `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- if ($proj_uN_0(l).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: - `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) -- if ($proj_uN_0(l).0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: - `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9983,7 +16306,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx}: - `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [BR_instr(l)]) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- wf_instr: `%`(BR_instr(l)) @@ -9992,14 +16315,14 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: - `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [$instr_val(val)]) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- ~ `Step_pure_before_br_on_null-addr`: `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) + -- ~ `Step_pure_before_br_on_null-addr`: `%`([$instr_val(val) BR_ON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx}: - `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], []) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) @@ -10007,58 +16330,58 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: - `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], [$instr_val(val) BR_instr(l)]) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_instr: `%`(BR_instr(l)) - -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) + -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([$instr_val(val) BR_ON_NON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: - `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: - `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: - `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: - `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: - `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: - `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: - `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: - `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + `%~>%`($instr_val(val)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) -- (wf_val: `%`(val))*{val <- `val*`} -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instr: `%`(TRAP_instr) @@ -10084,7 +16407,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.tee`{val : val, x : idx}: - `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) + `%~>%`([$instr_val(val) `LOCAL.TEE`_instr(x)], [$instr_val(val) $instr_val(val) `LOCAL.SET`_instr(x)]) -- wf_val: `%`(val) -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) -- wf_instr: `%`(`LOCAL.SET`_instr(x)) @@ -10099,7 +16422,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref}: - `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + `%~>%`([$instr_ref(ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- wf_ref: `%`(ref) -- wf_instr: `%`(`REF.IS_NULL`_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) @@ -10108,15 +16431,15 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: - `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + `%~>%`([$instr_ref(ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- wf_ref: `%`(ref) -- wf_instr: `%`(`REF.IS_NULL`_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.is_null-false`: `%`([(ref : ref <: instr) `REF.IS_NULL`_instr]) + -- ~ `Step_pure_before_ref.is_null-false`: `%`([$instr_ref(ref) `REF.IS_NULL`_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref}: - `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) + `%~>%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr], [TRAP_instr]) -- wf_ref: `%`(ref) -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) -- wf_instr: `%`(TRAP_instr) @@ -10125,14 +16448,14 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: - `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) + `%~>%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr], [$instr_ref(ref)]) -- wf_ref: `%`(ref) -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr]) + -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(`REF.EQ`_instr) @@ -10142,22 +16465,22 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(`REF.EQ`_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) + -- ~ `Step_pure_before_ref.eq-true`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(`REF.EQ`_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.eq-false`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) + -- ~ `Step_pure_before_ref.eq-false`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{sx : sx}: @@ -10175,7 +16498,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new`{val : val, n : n, x : idx}: - `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + `%~>%`([$instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], $instr_val(val)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- wf_val: `%`(val) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) @@ -10183,7 +16506,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ref : ref}: - `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) + `%~>%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) -- wf_ref: `%`(ref) -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) -- wf_instr: `%`(`REF.NULL_ADDR`_instr) @@ -10191,10 +16514,10 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{ref : ref}: - `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) + `%~>%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) - -- ~ `Step_pure_before_extern.convert_any-addr`: `%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr]) + -- ~ `Step_pure_before_extern.convert_any-addr`: `%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`: @@ -10204,54 +16527,59 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{ref : ref}: - `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) + `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [$instr_ref(ref)]) -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: + rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$unop_(nt, unop, c_1)| > 0) - -- if (c <- $unop_(nt, unop, c_1)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: + rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(TRAP_instr) - -- if ($unop_(nt, unop, c_1) = []) + -- if (var_0 = []) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: + rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$binop_(nt, binop, c_1, c_2)| > 0) - -- if (c <- $binop_(nt, binop, c_1, c_2)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: + rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(TRAP_instr) - -- if ($binop_(nt, binop, c_1, c_2) = []) + -- if (var_0 = []) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_, var_0 : u32}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(TESTOP_instr(nt, testop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) + -- if (!($proj_num__0(c)) = var_0) + -- fun_testop_: `%%%%`(nt, testop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: @@ -10264,21 +16592,23 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: + rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(CONST_instr(nt_2, c)) - -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) - -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: + rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, var_0 : num_*}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(TRAP_instr) - -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) + -- if (var_0 = []) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: @@ -10311,249 +16641,275 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vvtestop{c_1 : vec_, c : num_}: + rule vvtestop{c_1 : vec_, c : num_, var_0 : u32}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) + -- if (!($proj_num__0(c)) = var_0) + -- fun_inez_: `%%%`($vsize(V128_vectype), c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: + rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vunop_(sh, vunop, c_1)| > 0) - -- if (c <- $vunop_(sh, vunop, c_1)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: + rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(TRAP_instr) - -- if ($vunop_(sh, vunop, c_1) = []) + -- if (var_0 = []) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: + rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) - -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: + rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(TRAP_instr) - -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) + -- if (var_0 = []) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: + rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) - -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: + rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(TRAP_instr) - -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) + -- if (var_0 = []) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), i))*{i <- `i*`} + rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*, `var_0*` : uN*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), i))*{i <- `i*`} -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) + -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)) -- if ($proj_num__0(c) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0(var_0).0*{var_0 <- `var_0*`})) + -- if (|`var_0*`| = |`i*`|) -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} - -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`})) + -- (fun_inez_: `%%%`($jsizenn(Jnn), !($proj_lane__2(i)), var_0))*{var_0 <- `var_0*`, i <- `i*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) + -- if (c = var_0) + -- fun_vrelop_: `%%%%%`(sh, vrelop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) -- if ($proj_num__0(i) =/= ?()) - -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) + -- fun_vshiftop_: `%%%%%`(sh, vshiftop, c_1, !($proj_num__0(i)), var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: + rule vbitmask{c_1 : vec_, sh : ishape, c : num_, var_0 : u32}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VBITMASK_instr(sh)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) + -- if (!($proj_num__0(c)) = var_0) + -- fun_vbitmaskop_: `%%%`(sh, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) + -- if (c = var_0) + -- fun_vswizzlop_: `%%%%%`(sh, swizzlop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) + -- if (c = var_0) + -- fun_vshufflop_: `%%%%%`(sh, i*{i <- `i*`}, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: + rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_, var_0 : lane_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), var_0^M{})) + -- fun_lpacknum_: `%%%`(Lnn, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)) -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) - -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)|) - -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) + -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)|) + -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) - -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) -- if ($proj_num__0(c_2) =/= ?()) - -- if ($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)|) - -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) + -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)|) + -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: + rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_, var_0 : lane_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = var_0])) + -- fun_lpacknum_: `%%%`(Lnn, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) + -- if (var_0 = c) + -- fun_vextunop__: `%%%%%`(sh_1, sh_2, vextunop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) + -- if (var_0 = c) + -- fun_vextbinop__: `%%%%%%`(sh_1, sh_2, vextbinop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) + -- if (var_0 = c) + -- fun_vextternop__: `%%%%%%%`(sh_1, sh_2, vextternop, c_1, c_2, c_3, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) + -- if (c = var_0) + -- fun_vnarrowop__: `%%%%%%`($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) + -- if (c = var_0) + -- fun_vcvtop__: `%%%%%`(sh_1, sh_2, vcvtop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -def $blocktype_(state : state, blocktype : blocktype) : instrtype +relation fun_blocktype_: `%%%`(state, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + rule fun_blocktype__case_0{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%`(z, _IDX_blocktype(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1#3*{t_1#3 <- `t_1*`}), [], `%`_resulttype(t_2#3*{t_2#3 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#4*{t_1#4 <- `t_1*`}), `%`_resulttype(t_2#4*{t_2#4 <- `t_2*`}))) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1#5*{t_1#5 <- `t_1*`}), `%`_resulttype(t_2#5*{t_2#5 <- `t_2*`}))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) + rule fun_blocktype__case_1{z : state, `t?` : valtype?}: + `%%%`(z, _RESULT_blocktype(t#1?{t#1 <- `t?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t#2?{t#2 <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: - `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- wf_instr: `%`(BR_instr(l)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: - `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_throw_ref-handler-next`: `%`(config) @@ -10597,8 +16953,8 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) relation `Step_read_before_table.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) @@ -10607,15 +16963,15 @@ relation `Step_read_before_table.fill-zero`: `%`(config) relation `Step_read_before_table.fill-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) @@ -10624,8 +16980,8 @@ relation `Step_read_before_table.fill-succ`: `%`(config) relation `Step_read_before_table.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -10635,15 +16991,15 @@ relation `Step_read_before_table.copy-zero`: `%`(config) relation `Step_read_before_table.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -10653,32 +17009,32 @@ relation `Step_read_before_table.copy-le`: `%`(config) relation `Step_read_before_table.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) -- wf_instr: `%`(`TABLE.GET`_instr(y)) -- wf_instr: `%`(`TABLE.SET`_instr(x)) -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -10688,8 +17044,8 @@ relation `Step_read_before_table.copy-gt`: `%`(config) relation `Step_read_before_table.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) @@ -10699,15 +17055,15 @@ relation `Step_read_before_table.init-zero`: `%`(config) relation `Step_read_before_table.init-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) @@ -10717,8 +17073,8 @@ relation `Step_read_before_table.init-succ`: `%`(config) relation `Step_read_before_memory.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) @@ -10727,15 +17083,15 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) relation `Step_read_before_memory.fill-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) @@ -10744,8 +17100,8 @@ relation `Step_read_before_memory.fill-succ`: `%`(config) relation `Step_read_before_memory.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -10755,15 +17111,15 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) relation `Step_read_before_memory.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -10772,33 +17128,34 @@ relation `Step_read_before_memory.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- fun_memarg0: `%`(var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -10808,8 +17165,8 @@ relation `Step_read_before_memory.copy-gt`: `%`(config) relation `Step_read_before_memory.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) @@ -10819,15 +17176,15 @@ relation `Step_read_before_memory.init-zero`: `%`(config) relation `Step_read_before_memory.init-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) @@ -10836,32 +17193,34 @@ relation `Step_read_before_memory.init-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) + rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_ref.cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) @@ -10871,15 +17230,15 @@ relation `Step_read_before_array.fill-zero`: `%`(config) relation `Step_read_before_array.fill-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) @@ -10935,7 +17294,7 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) @@ -10953,8 +17312,9 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($sx(zt_2) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !(var_0))) + -- fun_sx: `%%`(zt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -11029,15 +17389,16 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- fun_zsize: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11058,15 +17419,16 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- fun_zsize: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11080,60 +17442,64 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- fun_blocktype_: `%%%`(z, bt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- fun_blocktype_: `%%%`(z, bt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- wf_instr: `%`(BR_instr(l)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- wf_instr: `%`(BR_instr(l)) - -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: - `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) -- if (a < |$funcinst(z)|) -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) @@ -11144,52 +17510,54 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) + rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*, `var_0*` : val??*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- (if ($default_(t) =/= ?()))*{t <- `t*`} - -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- (if (var_0 =/= ?()))*{var_0 <- `var_0*`} + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !(var_0)*{var_0 <- `var_0*`}, MODULE fi.MODULE_funcinst}) -- if (a < |$funcinst(z)|) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !(var_0)*{var_0 <- `var_0*`}, MODULE fi.MODULE_funcinst}) + -- if (|`var_0*`| = |`t*`|) + -- (fun_default_: `%%`(t, var_0))*{var_0 <- `var_0*`, t <- `t*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: - `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) -- if (a < |$funcinst(z)|) -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) -- wf_instr: `%`(CALL_REF_instr(yy)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) @@ -11204,8 +17572,8 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) -- wf_instr: `%`(THROW_REF_instr) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) @@ -11233,7 +17601,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(BR_instr(l)) @@ -11244,7 +17612,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) @@ -11275,82 +17643,83 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- fun_blocktype_: `%%%`(z, bt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.get`{z : state, x : idx, val : val}: - `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) + `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [$instr_val(val)]) -- wf_val: `%`(val) -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `global.get`{z : state, x : idx, val : val}: - `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) + `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [$instr_val(val)]) -- wf_val: `%`(val) -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0] : ref <: instr)]) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: - `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`TABLE.FILL`_instr(x)) - -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -11358,48 +17727,48 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) -- wf_instr: `%`(`TABLE.GET`_instr(y)) -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`TABLE.GET`_instr(y)) -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) - -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) @@ -11407,127 +17776,127 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0] : ref <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) $instr_ref($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) - -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(CONST_instr(nt, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, Jnn : Jnn}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) - -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -11535,65 +17904,66 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) - -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.size`{z : state, x : idx, at : addrtype, n : n, lim : limits}: - `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) + rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) - -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- fun_memarg0: `%`(var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -11601,48 +17971,50 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- fun_memarg0: `%`(var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- fun_memarg0: `%`(var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) @@ -11650,26 +18022,27 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) + rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) - -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- fun_memarg0: `%`(var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null`{z : state, ht : heaptype}: @@ -11685,49 +18058,55 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) + -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [(ref : ref <: instr)]) + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)]), [$instr_ref(ref)]) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) -- wf_instr: `%`(TRAP_instr) - -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: - `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) + rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*, `var_1*` : valtype*, `var_0*` : val??*}: + `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), $instr_val(val)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`val*`| = |`zt*`|) - -- (if ($default_($unpack(zt)) =/= ?()))*{zt <- `zt*`} - -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} + -- if (|`var_0*`| = |`val*`|) + -- (if (var_0 =/= ?()))*{var_0 <- `var_0*`} + -- (if (!(var_0) = ?(val)))*{var_0 <- `var_0*`, val <- `val*`} + -- if (|`var_1*`| = |`zt*`|) + -- (fun_unpack: `%%`(zt, var_1))*{var_1 <- `var_1*`, zt <- `zt*`} + -- if (|`var_1*`| = |`var_0*`|) + -- (fun_default_: `%%`(var_1, var_0))*{var_1 <- `var_1*`, var_0 <- `var_0*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: @@ -11736,26 +18115,29 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])) : val <: instr)]) - -- if ($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]) =/= ?()) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) - -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) - -- if (a < |$structinst(z)|) + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*, var_0 : val?}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val(!(var_0))]) + -- if (var_0 =/= ?()) -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) + -- if (a < |$structinst(z)|) + -- fun_unpackfield_: `%%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype, var_1 : valtype, var_0 : val??}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)]), $instr_val(val)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- wf_val: `%`(val) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($default_($unpack(zt)) =/= ?()) - -- if (!($default_($unpack(zt))) = ?(val)) + -- if (var_0 =/= ?()) + -- if (!(var_0) = ?(val)) + -- fun_unpack: `%%`(zt, var_1) + -- fun_default_: `%%`(var_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: @@ -11767,7 +18149,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), $instr_ref(ref)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- (wf_ref: `%`(ref))*{ref <- `ref*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) @@ -11775,28 +18157,33 @@ relation Step_read: `%~>%`(config, instr*) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) - -- if ($zsize(zt) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- fun_zsize: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) - -- (if ($cunpack(zt) =/= ?()))^n{} + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?, var_3 : nat?, `var_2*` : lit_*, var_1 : consttype?, `var_0*` : instr*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), var_0^n{var_0 <- `var_0*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zsize(zt) =/= ?()) + -- if (var_3 =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !(var_3)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- fun_zsize: `%%`(zt, var_3) + -- (fun_cunpacknum_: `%%%`(zt, c, var_2))^n{var_2 <- `var_2*`, c <- `c*`} + -- fun_cunpack: `%%`(zt, var_1) + -- (if (var_1 =/= ?()))^n{} + -- (fun_const: `%%%`(!(var_1), var_2, var_0))^n{var_2 <- `var_2*`, var_0 <- `var_0*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: @@ -11814,15 +18201,16 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])) : val <: instr)]) - -- if ($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]) =/= ?()) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) - -- if (a < |$arrayinst(z)|) - -- if ($proj_num__0(i) =/= ?()) + rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?, var_0 : val?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [$instr_val(!(var_0))]) + -- if (var_0 =/= ?()) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if (a < |$arrayinst(z)|) + -- if ($proj_num__0(i) =/= ?()) + -- fun_unpackfield_: `%%%%`(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state}: @@ -11839,14 +18227,14 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_instr: `%`(TRAP_instr) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) @@ -11854,34 +18242,34 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(`ARRAY.SET`_instr(x)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) - -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11910,7 +18298,7 @@ relation Step_read: `%~>%`(config, instr*) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -11928,11 +18316,12 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($sx(zt_2) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !(var_0))) + -- fun_sx: `%%`(zt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -11950,8 +18339,9 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($sx(zt_2) =/= ?()) - -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) + -- if (var_0 =/= ?()) + -- if (sx?{sx <- `sx?`} = !(var_0)) + -- fun_sx: `%%`(zt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11985,7 +18375,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- wf_ref: `%`(ref) @@ -12017,15 +18407,16 @@ relation Step_read: `%~>%`(config, instr*) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- fun_zsize: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -12035,25 +18426,29 @@ relation Step_read: `%~>%`(config, instr*) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) - -- if ($cunpack(zt) =/= ?()) + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?, var_3 : nat?, var_2 : lit_, var_1 : consttype?, var_0 : instr}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) var_0 `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) + -- if (var_3 =/= ?()) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(`ARRAY.SET`_instr(x)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- fun_zsize: `%%`(zt, var_3) + -- fun_cunpacknum_: `%%%`(zt, c, var_2) + -- fun_cunpack: `%%`(zt, var_1) + -- if (var_1 =/= ?()) + -- fun_const: `%%%`(!(var_1), var_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rec { @@ -12076,9 +18471,9 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -12112,219 +18507,244 @@ relation Step: `%~>%`(config, config) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:231.1-235.49 - rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*, var_1 : deftype?, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config(var_0, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- if ($as_deftype($tag(z, x).TYPE_taginst) =/= ?()) - -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if (var_1 =/= ?()) + -- Expand: `%~~%`(!(var_1), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + -- fun_as_deftype: `%%`($tag(z, x).TYPE_taginst, var_1) + -- fun_add_exninst: `%%%`(z, [exn], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 - rule `local.set`{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) + rule `local.set`{z : state, val : val, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- fun_with_local: `%%%%`(z, x, val, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:322.1-323.58 - rule `global.set`{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) + rule `global.set`{z : state, val : val, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- fun_with_global: `%%%%`(z, x, val, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:340.1-342.32 - rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + -- fun_with_table: `%%%%%`(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-354.46 - rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- if ($growtable($table(z, x), n, ref) =/= ?()) - -- if (ti = !($growtable($table(z, x), n, ref))) + rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst, var_1 : tableinst?, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- if (var_1 =/= ?()) + -- if (ti = !(var_1)) + -- fun_growtable: `%%%%`($table(z, x), n, ref, var_1) + -- fun_with_tableinst: `%%%%`(z, x, ti, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:356.1-357.87 - rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:417.1-418.51 - rule `elem.drop`{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + rule `elem.drop`{z : state, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- fun_with_elem: `%%%%`(z, x, [], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:501.1-504.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:506.1-510.29 - rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) + -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.52 - rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if ($proj_num__0(c) =/= ?()) - -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) + -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) + -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-531.31 - rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) + -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:534.1-537.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-544.49 - rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) - -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) - -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) + rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) + -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) + -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) - -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) + -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) + -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:553.1-556.37 - rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- if ($growmem($mem(z, x), n) =/= ?()) - -- if (mi = !($growmem($mem(z, x), n))) + rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst, var_1 : meminst?, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (var_1 =/= ?()) + -- if (mi = !(var_1)) + -- fun_growmem: `%%%`($mem(z, x), n, var_1) + -- fun_with_meminst: `%%%%`(z, x, mi, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:558.1-559.84 - rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:619.1-620.51 - rule `data.drop`{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + rule `data.drop`{z : state, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- fun_with_data: `%%%%`(z, x, [], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:700.1-704.65 - rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*, `var_1*` : fieldval?*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config(var_0, [`REF.STRUCT_ADDR`_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [`REF.STRUCT_ADDR`_instr(a)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`, zt <- `zt*`} - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + -- (if (var_1 =/= ?()))^n{var_1 <- `var_1*`} + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) - -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + -- if (si = {TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) + -- (fun_packfield_: `%%%`(zt, val, var_1))^n{var_1 <- `var_1*`, val <- `val*`, zt <- `zt*`} + -- fun_add_structinst: `%%%`(z, [si], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:721.1-722.55 rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: - `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)])) + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(val) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(val) `STRUCT.SET`_instr(x, i)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:724.1-727.46 - rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) - -- if ($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val) =/= ?()) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) + rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*, var_1 : fieldval?, var_0 : state}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + -- fun_packfield_: `%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val, var_1) + -- if (var_1 =/= ?()) + -- fun_with_struct: `%%%%%`(z, a, $proj_uN_0(i).0, !(var_1), var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:740.1-745.65 - rule `array.new_fixed`{z : state, n : n, `val*` : val*, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + rule `array.new_fixed`{z : state, n : n, `val*` : val*, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype, `var_1*` : fieldval?*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]), `%;%`_config(var_0, [`REF.ARRAY_ADDR`_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config(var_0, [`REF.ARRAY_ADDR`_instr(a)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`} - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) + -- (if (var_1 =/= ?()))^n{var_1 <- `var_1*`} + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}})) + -- (fun_packfield_: `%%%`(zt, val, var_1))^n{var_1 <- `var_1*`, val <- `val*`} + -- fun_add_arrayinst: `%%%`(z, [ai], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-786.66 rule `array.set-null`{z : state, i : num_, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:788.1-790.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-795.44 - rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) - -- if ($proj_num__0(i) =/= ?()) - -- if ($packfield_(zt, val) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) + rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?, var_1 : fieldval?, var_0 : state}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- fun_packfield_: `%%%`(zt, val, var_1) + -- if ($proj_num__0(i) =/= ?()) + -- if (var_1 =/= ?()) + -- fun_with_array: `%%%%%`(z, a, $proj_uN_0(!($proj_num__0(i))).0, !(var_1), var_0) } ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12353,29 +18773,36 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) - -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`})) + -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 -def $alloctypes(type*) : deftype* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 - def $alloctypes([]) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 - def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 +relation fun_alloctypes: `%%`(type*, deftype*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_1{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN, var_2 : deftype*, var_1 : deftype*, var_0 : deftype*}: + `%%`(type'#1*{type'#1 <- `type'*`} ++ [type], deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`}) + -- fun_rolldt: `%%%`(x, rectype, var_2) + -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype'#2)*{deftype'#2 <- `deftype'*`}, var_1) + -- fun_alloctypes: `%%`(type'#2*{type'#2 <- `type'*`}, var_0) -- wf_uN: `%%`(32, x) - -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) + -- if (deftype'#1*{deftype'#1 <- `deftype'*`} = var_0) -- if (type = TYPE_type(rectype)) - -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) - -- if ($proj_uN_0(x).0 = |deftype'*{deftype' <- `deftype'*`}|) + -- if (deftype#1*{deftype#1 <- `deftype*`} = var_1) + -- if ($proj_uN_0(x).0 = |deftype'#3*{deftype'#3 <- `deftype'*`}|) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) +relation fun_alloctag: `%%%`(store, tagtype, (store, tagaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + rule fun_alloctag_case_0{s : store, tagtype : typeuse, taginst : taginst}: + `%%%`(s, tagtype, (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|)) -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) @@ -12383,22 +18810,28 @@ def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 -def $alloctags(store : store, tagtype*) : (store, tagaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 - def $alloctags{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 - def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation fun_alloctags: `%%%`(store, tagtype*, (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_1{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store, var_1 : (store, tagaddr*), var_0 : (store, tagaddr)}: + `%%%`(s, [tagtype] ++ tagtype'#1*{tagtype'#1 <- `tagtype'*`}, (s_2, [ja] ++ ja'*{ja' <- `ja'*`})) + -- fun_alloctags: `%%%`(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}, var_1) + -- fun_alloctag: `%%%`(s, tagtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ja) = $alloctag(s, tagtype)) - -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) + -- if ((s_1, ja) = var_0) + -- if ((s_2, ja'#1*{ja'#1 <- `ja'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) +relation fun_allocglobal: `%%%%`(store, globaltype, val, (store, globaladdr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + rule fun_allocglobal_case_0{s : store, globaltype : globaltype, val : val, globalinst : globalinst}: + `%%%%`(s, globaltype, val, (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) @@ -12406,68 +18839,86 @@ def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, gl ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 -def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 - def $allocglobals{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 - def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation fun_allocglobals: `%%%%`(store, globaltype*, val*, (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_1{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store, var_1 : (store, globaladdr*), var_0 : (store, globaladdr)}: + `%%%%`(s, [globaltype] ++ globaltype'#1*{globaltype'#1 <- `globaltype'*`}, [val] ++ val'#1*{val'#1 <- `val'*`}, (s_2, [ga] ++ ga'*{ga' <- `ga'*`})) + -- fun_allocglobals: `%%%%`(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, globaltype, val, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) - -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) + -- if ((s_1, ga) = var_0) + -- if ((s_2, ga'#1*{ga'#1 <- `ga'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmem(store : store, memtype : memtype) : (store, memaddr) +relation fun_allocmem: `%%%`(store, memtype, (store, memaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + rule fun_allocmem_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}: + `%%%`(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#11?{j#11 <- `j?`})), (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#12?{j#12 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#13?{j#13 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 -def $allocmems(store : store, memtype*) : (store, memaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 - def $allocmems{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 - def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation fun_allocmems: `%%%`(store, memtype*, (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_1{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store, var_1 : (store, memaddr*), var_0 : (store, memaddr)}: + `%%%`(s, [memtype] ++ memtype'#1*{memtype'#1 <- `memtype'*`}, (s_2, [ma] ++ ma'*{ma' <- `ma'*`})) + -- fun_allocmems: `%%%`(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}, var_1) + -- fun_allocmem: `%%%`(s, memtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ma) = $allocmem(s, memtype)) - -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) + -- if ((s_1, ma) = var_0) + -- if ((s_2, ma'#1*{ma'#1 <- `ma'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) +relation fun_alloctable: `%%%%`(store, tabletype, ref, (store, tableaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + rule fun_alloctable_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}: + `%%%%`(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j#14?{j#14 <- `j?`}), rt), ref, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) - -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#15?{j#15 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#16?{j#16 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 -def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 - def $alloctables{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 - def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation fun_alloctables: `%%%%`(store, tabletype*, ref*, (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_1{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store, var_1 : (store, tableaddr*), var_0 : (store, tableaddr)}: + `%%%%`(s, [tabletype] ++ tabletype'#1*{tabletype'#1 <- `tabletype'*`}, [ref] ++ ref'#1*{ref'#1 <- `ref'*`}, (s_2, [ta] ++ ta'*{ta' <- `ta'*`})) + -- fun_alloctables: `%%%%`(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}, var_1) + -- fun_alloctable: `%%%%`(s, tabletype, ref, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) - -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) + -- if ((s_1, ta) = var_0) + -- if ((s_2, ta'#1*{ta'#1 <- `ta'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) +relation fun_allocfunc: `%%%%%`(store, deftype, funccode, moduleinst, (store, funcaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + rule fun_allocfunc_case_0{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}: + `%%%%%`(s, deftype, funccode, moduleinst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) @@ -12475,91 +18926,146 @@ def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 -def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 - def $allocfuncs{s : store}(s, [], [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 - def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation fun_allocfuncs: `%%%%%`(store, deftype*, funccode*, moduleinst*, (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_0{s : store}: + `%%%%%`(s, [], [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_1{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store, var_1 : (store, funcaddr*), var_0 : (store, funcaddr)}: + `%%%%%`(s, [dt] ++ dt'#3*{dt'#3 <- `dt'*`}, [funccode] ++ funccode'#1*{funccode'#1 <- `funccode'*`}, [moduleinst] ++ moduleinst'#1*{moduleinst'#1 <- `moduleinst'*`}, (s_2, [fa] ++ fa'*{fa' <- `fa'*`})) + -- fun_allocfuncs: `%%%%%`(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}, var_1) + -- fun_allocfunc: `%%%%%`(s, dt, funccode, moduleinst, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) - -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) + -- if ((s_1, fa) = var_0) + -- if ((s_2, fa'#1*{fa'#1 <- `fa'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) +relation fun_allocdata: `%%%%`(store, datatype, byte*, (store, dataaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + rule fun_allocdata_case_0{s : store, `byte*` : byte*, datainst : datainst}: + `%%%%`(s, OK_datatype, byte#2*{byte#2 <- `byte*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) - -- if (datainst = {BYTES byte*{byte <- `byte*`}}) + -- wf_datainst: `%`({BYTES byte#3*{byte#3 <- `byte*`}}) + -- if (datainst = {BYTES byte#4*{byte#4 <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 -def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 - def $allocdatas{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 - def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation fun_allocdatas: `%%%%`(store, datatype*, byte**, (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_1{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store, var_1 : (store, dataaddr*), var_0 : (store, dataaddr)}: + `%%%%`(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#10*{b#10 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}, (s_2, [da] ++ da'*{da' <- `da'*`})) + -- fun_allocdatas: `%%%%`(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}, var_1) + -- fun_allocdata: `%%%%`(s, ok, b#11*{b#11 <- `b*`}, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) - -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) + -- if ((s_1, da) = var_0) + -- if ((s_2, da'#1*{da'#1 <- `da'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) +relation fun_allocelem: `%%%%`(store, elemtype, ref*, (store, elemaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + rule fun_allocelem_case_0{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}: + `%%%%`(s, elemtype, ref#1*{ref#1 <- `ref*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) - -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref#2*{ref#2 <- `ref*`}}) + -- if (eleminst = {TYPE elemtype, REFS ref#3*{ref#3 <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 -def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 - def $allocelems{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 - def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation fun_allocelems: `%%%%`(store, elemtype*, ref**, (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_1{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store, var_1 : (store, elemaddr*), var_0 : (store, elemaddr)}: + `%%%%`(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#3*{ref'#3 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}, (s_2, [ea] ++ ea'*{ea' <- `ea'*`})) + -- fun_allocelems: `%%%%`(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#4*{ref'#4 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}, var_1) + -- fun_allocelem: `%%%%`(s, rt, ref#5*{ref#5 <- `ref*`}, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) - -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) + -- if ((s_1, ea) = var_0) + -- if ((s_2, ea'#1*{ea'#1 <- `ea'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexport(moduleinst : moduleinst, export : export) : exportinst +relation fun_allocexport: `%%%`(moduleinst, export, exportinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_0{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, TAG_externidx(x)), {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.TAGS_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_1{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, GLOBAL_externidx(x)), {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.GLOBALS_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_2{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, MEM_externidx(x)), {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.MEMS_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_3{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, TABLE_externidx(x)), {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.TABLES_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_4{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, FUNC_externidx(x)), {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.FUNCS_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexports(moduleinst : moduleinst, export*) : exportinst* +relation fun_allocexports: `%%%`(moduleinst, export*, exportinst*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + rule fun_allocexports_case_0{moduleinst : moduleinst, `export*` : export*, `var_0*` : exportinst*}: + `%%%`(moduleinst, export#4*{export#4 <- `export*`}, var_0*{var_0 <- `var_0*`}) + -- if (|`var_0*`| = |`export*`|) + -- (fun_allocexport: `%%%`(moduleinst, export, var_0))*{var_0 <- `var_0*`, export <- `export*`} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) +relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref**, (store, moduleinst)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_13 : exportinst*, var_12 : (store, funcaddr*), `var_11*` : elemtype*, var_10 : (store, elemaddr*), var_9 : (store, dataaddr*), `var_8*` : tabletype*, var_7 : (store, tableaddr*), `var_6*` : memtype*, var_5 : (store, memaddr*), `var_4*` : globaltype*, var_3 : (store, globaladdr*), `var_2*` : tagtype*, var_1 : (store, tagaddr*), var_0 : deftype*}: + `%%%%%%%`(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}, (s_7, moduleinst)) + -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#7*{export#7 <- `export*`}, var_13) + -- (if ($proj_uN_0(x#4).0 < |dt#15*{dt#15 <- `dt*`}|))*{x#4 <- `x*`} + -- fun_allocfuncs: `%%%%%`(s_6, dt#15*{dt#15 <- `dt*`}[$proj_uN_0(x#4).0]*{x#4 <- `x*`}, FUNC_funccode(x#5, local#4*{local#4 <- `local*#86`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#86` <- `local**`, x#5 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_12) + -- if (|`var_11*`| = |`elemtype*`|) + -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- `dt*`}, var_11))*{var_11 <- `var_11*`, elemtype#3 <- `elemtype*`} + -- fun_allocelems: `%%%%`(s_5, var_11*{var_11 <- `var_11*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_10) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#114`}*{`byte*#114` <- `byte**`}, var_9) + -- if (|`var_8*`| = |`tabletype*`|) + -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_8))*{var_8 <- `var_8*`, tabletype#160 <- `tabletype*`} + -- fun_alloctables: `%%%%`(s_3, var_8*{var_8 <- `var_8*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_7) + -- if (|`var_6*`| = |`memtype*`|) + -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_6))*{var_6 <- `var_6*`, memtype#126 <- `memtype*`} + -- fun_allocmems: `%%%`(s_2, var_6*{var_6 <- `var_6*`}, var_5) + -- if (|`var_4*`| = |`globaltype*`|) + -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_4))*{var_4 <- `var_4*`, globaltype#126 <- `globaltype*`} + -- fun_allocglobals: `%%%%`(s_1, var_4*{var_4 <- `var_4*`}, val_G#2*{val_G#2 <- `val_G*`}, var_3) + -- if (|`var_2*`| = |`tagtype*`|) + -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_2))*{var_2 <- `var_2*`, tagtype#82 <- `tagtype*`} + -- fun_alloctags: `%%%`(s, var_2*{var_2 <- `var_2*`}, var_1) + -- fun_alloctypes: `%%`(type#4*{type#4 <- `type*`}, var_0) -- wf_store: `%`(s_7) -- wf_moduleinst: `%`(moduleinst) -- wf_store: `%`(s_1) @@ -12568,61 +19074,76 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- wf_store: `%`(s_4) -- wf_store: `%`(s_5) -- wf_store: `%`(s_6) - -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} - -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - -- if (module = MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (mem*{mem <- `mem*`} = MEMORY_mem(memtype)*{memtype <- `memtype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (func*{func <- `func*`} = FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`}) - -- if (aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`})) - -- if (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`})) - -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}) - -- if ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`})) - -- if ((s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})) - -- if ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`})) - -- if ((s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`})) - -- if ((s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`})) - -- if ((s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) - -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[$proj_uN_0(x).0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) - -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) - -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) + -- wf_module: `%`(MODULE_module(`%`_list(type#2*{type#2 <- `type*`}), `%`_list(import#2*{import#2 <- `import*`}), `%`_list(tag#2*{tag#2 <- `tag*`}), `%`_list(global#4*{global#4 <- `global*`}), `%`_list(mem#4*{mem#4 <- `mem*`}), `%`_list(table#4*{table#4 <- `table*`}), `%`_list(func#3*{func#3 <- `func*`}), `%`_list(data#2*{data#2 <- `data*`}), `%`_list(elem#4*{elem#4 <- `elem*`}), start#4?{start#4 <- `start?`}, `%`_list(export#5*{export#5 <- `export*`}))) + -- (wf_tag: `%`(TAG_tag(tagtype#78)))*{tagtype#78 <- `tagtype*`} + -- if (|`expr_G*`| = |`globaltype*`|) + -- (wf_global: `%`(GLOBAL_global(globaltype#122, expr_G#1)))*{expr_G#1 <- `expr_G*`, globaltype#122 <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype#122)))*{memtype#122 <- `memtype*`} + -- if (|`expr_T*`| = |`tabletype*`|) + -- (wf_table: `%`(TABLE_table(tabletype#156, expr_T#1)))*{expr_T#1 <- `expr_T*`, tabletype#156 <- `tabletype*`} + -- if (|`expr_F*`| = |`local**`|) + -- if (|`expr_F*`| = |`x*`|) + -- (wf_func: `%`(FUNC_func(x#2, local#2*{local#2 <- `local*#82`}, expr_F#1)))*{expr_F#1 <- `expr_F*`, `local*#82` <- `local**`, x#2 <- `x*`} + -- if (|`byte**`| = |`datamode*`|) + -- (wf_data: `%`(DATA_data(byte#5*{byte#5 <- `byte*#110`}, datamode#110)))*{`byte*#110` <- `byte**`, datamode#110 <- `datamode*`} + -- if (|`elemmode*`| = |`elemtype*`|) + -- if (|`elemmode*`| = |`expr_E**`|) + -- (wf_elem: `%`(ELEM_elem(elemtype#1, expr_E#1*{expr_E#1 <- `expr_E*#1`}, elemmode#230)))*{elemmode#230 <- `elemmode*`, elemtype#1 <- `elemtype*`, `expr_E*#1` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I#1*{aa_I#1 <- `aa_I*`} ++ aa#1*{aa#1 <- `aa*`}, GLOBALS ga_I#1*{ga_I#1 <- `ga_I*`} ++ ga#1*{ga#1 <- `ga*`}, MEMS ma_I#1*{ma_I#1 <- `ma_I*`} ++ ma#1*{ma#1 <- `ma*`}, TABLES ta_I#1*{ta_I#1 <- `ta_I*`} ++ ta#1*{ta#1 <- `ta*`}, FUNCS fa_I#1*{fa_I#1 <- `fa_I*`} ++ fa#1*{fa#1 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt#8*{dt#8 <- `dt*`}, TAGS aa_I#2*{aa_I#2 <- `aa_I*`} ++ aa#2*{aa#2 <- `aa*`}, GLOBALS ga_I#2*{ga_I#2 <- `ga_I*`} ++ ga#2*{ga#2 <- `ga*`}, MEMS ma_I#2*{ma_I#2 <- `ma_I*`} ++ ma#2*{ma#2 <- `ma*`}, TABLES ta_I#2*{ta_I#2 <- `ta_I*`} ++ ta#2*{ta#2 <- `ta*`}, FUNCS fa_I#2*{fa_I#2 <- `fa_I*`} ++ fa#2*{fa#2 <- `fa*`}, DATAS da#1*{da#1 <- `da*`}, ELEMS ea#1*{ea#1 <- `ea*`}, EXPORTS xi#1*{xi#1 <- `xi*`}}) + -- if (module = MODULE_module(`%`_list(type#3*{type#3 <- `type*`}), `%`_list(import#3*{import#3 <- `import*`}), `%`_list(tag#3*{tag#3 <- `tag*`}), `%`_list(global#5*{global#5 <- `global*`}), `%`_list(mem#5*{mem#5 <- `mem*`}), `%`_list(table#5*{table#5 <- `table*`}), `%`_list(func#4*{func#4 <- `func*`}), `%`_list(data#3*{data#3 <- `data*`}), `%`_list(elem#5*{elem#5 <- `elem*`}), start#5?{start#5 <- `start?`}, `%`_list(export#6*{export#6 <- `export*`}))) + -- if (tag#4*{tag#4 <- `tag*`} = TAG_tag(tagtype#80)*{tagtype#80 <- `tagtype*`}) + -- if (global#6*{global#6 <- `global*`} = GLOBAL_global(globaltype#124, expr_G#2)*{expr_G#2 <- `expr_G*`, globaltype#124 <- `globaltype*`}) + -- if (mem#6*{mem#6 <- `mem*`} = MEMORY_mem(memtype#124)*{memtype#124 <- `memtype*`}) + -- if (table#6*{table#6 <- `table*`} = TABLE_table(tabletype#158, expr_T#2)*{expr_T#2 <- `expr_T*`, tabletype#158 <- `tabletype*`}) + -- if (func#5*{func#5 <- `func*`} = FUNC_func(x#3, local#3*{local#3 <- `local*#84`}, expr_F#2)*{expr_F#2 <- `expr_F*`, `local*#84` <- `local**`, x#3 <- `x*`}) + -- if (data#4*{data#4 <- `data*`} = DATA_data(byte#6*{byte#6 <- `byte*#112`}, datamode#112)*{`byte*#112` <- `byte**`, datamode#112 <- `datamode*`}) + -- if (elem#6*{elem#6 <- `elem*`} = ELEM_elem(elemtype#2, expr_E#2*{expr_E#2 <- `expr_E*#2`}, elemmode#232)*{elemmode#232 <- `elemmode*`, elemtype#2 <- `elemtype*`, `expr_E*#2` <- `expr_E**`}) + -- if (aa_I#3*{aa_I#3 <- `aa_I*`} = $tagsxa(externaddr#2*{externaddr#2 <- `externaddr*`})) + -- if (ga_I#3*{ga_I#3 <- `ga_I*`} = $globalsxa(externaddr#3*{externaddr#3 <- `externaddr*`})) + -- if (ma_I#3*{ma_I#3 <- `ma_I*`} = $memsxa(externaddr#4*{externaddr#4 <- `externaddr*`})) + -- if (ta_I#3*{ta_I#3 <- `ta_I*`} = $tablesxa(externaddr#5*{externaddr#5 <- `externaddr*`})) + -- if (fa_I#3*{fa_I#3 <- `fa_I*`} = $funcsxa(externaddr#6*{externaddr#6 <- `externaddr*`})) + -- if (dt#9*{dt#9 <- `dt*`} = var_0) + -- if (fa#3*{fa#3 <- `fa*`} = (|s.FUNCS_store| + i_F#1)^(i_F#1<|func#6*{func#6 <- `func*`}|){}) + -- if ((s_1, aa#3*{aa#3 <- `aa*`}) = var_1) + -- if ((s_2, ga#3*{ga#3 <- `ga*`}) = var_3) + -- if ((s_3, ma#3*{ma#3 <- `ma*`}) = var_5) + -- if ((s_4, ta#3*{ta#3 <- `ta*`}) = var_7) + -- if ((s_5, da#2*{da#2 <- `da*`}) = var_9) + -- if ((s_6, ea#2*{ea#2 <- `ea*`}) = var_10) + -- if ((s_7, fa#4*{fa#4 <- `fa*`}) = var_12) + -- if (xi#2*{xi#2 <- `xi*`} = var_13) + -- if (moduleinst = {TYPES dt#16*{dt#16 <- `dt*`}, TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $rundata_(dataidx : dataidx, data : data) : instr* +relation fun_rundata_: `%%%`(dataidx, data, instr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, n : nat, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] + rule fun_rundata__case_0{x : uN, n : nat, `b*` : byte*}: + `%%%`(x, DATA_data(b#12^n{b#12 <- `b*`}, PASSIVE_datamode), []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] + rule fun_rundata__case_1{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}: + `%%%`(x, DATA_data(b#13^n{b#13 <- `b*`}, ACTIVE_datamode(y, instr#7*{instr#7 <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)]) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) -- wf_instr: `%`(`MEMORY.INIT`_instr(y, x)) -- wf_instr: `%`(`DATA.DROP`_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $runelem_(elemidx : elemidx, elem : elem) : instr* +relation fun_runelem_: `%%%`(elemidx, elem, instr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] + rule fun_runelem__case_0{x : uN, rt : reftype, n : nat, `e*` : expr*}: + `%%%`(x, ELEM_elem(rt, e#1^n{e#1 <- `e*`}, PASSIVE_elemmode), []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] + rule fun_runelem__case_1{x : uN, rt : reftype, n : nat, `e*` : expr*}: + `%%%`(x, ELEM_elem(rt, e#2^n{e#2 <- `e*`}, DECLARE_elemmode), [`ELEM.DROP`_instr(x)]) -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] + rule fun_runelem__case_2{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}: + `%%%`(x, ELEM_elem(rt, e#3^n{e#3 <- `e*`}, ACTIVE_elemmode(y, instr#8*{instr#8 <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)]) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) -- wf_instr: `%`(`TABLE.INIT`_instr(y, x)) @@ -12631,110 +19152,144 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.92 -def $evalexprs(state : state, expr*) : (state, ref*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.34 - def $evalexprs{z : state}(z, []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-165.46 - def $evalexprs{z : state, expr : instr*, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation fun_evalexprs: `%%%`(state, expr*, (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule fun_evalexprs_case_0{z : state}: + `%%%`(z, [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule fun_evalexprs_case_1{z : state, expr : instr*, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state, var_0 : (state, ref*)}: + `%%%`(z, [expr] ++ expr'#1*{expr'#1 <- `expr'*`}, (z'', [ref] ++ ref'*{ref' <- `ref'*`})) + -- fun_evalexprs: `%%%`(z', expr'#2*{expr'#2 <- `expr'*`}, var_0) -- wf_state: `%`(z'') -- wf_ref: `%`(ref) - -- (wf_ref: `%`(ref'))*{ref' <- `ref'*`} + -- (wf_ref: `%`(ref'#5))*{ref'#5 <- `ref'*`} -- wf_state: `%`(z') - -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) - -- if ((z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`})) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [$val_ref(ref)]) + -- if ((z'', ref'#6*{ref'#6 <- `ref'*`}) = var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.1-167.96 -def $evalexprss(state : state, expr**) : (state, ref**) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:168.1-168.35 - def $evalexprss{z : state}(z, []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.1-172.49 - def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation fun_evalexprss: `%%%`(state, expr**, (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule fun_evalexprss_case_0{z : state}: + `%%%`(z, [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule fun_evalexprss_case_1{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state, var_1 : (state, ref**), var_0 : (state, ref*)}: + `%%%`(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#3*{expr'#3 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}, (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) + -- fun_evalexprss: `%%%`(z', expr'#4*{expr'#4 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}, var_1) + -- fun_evalexprs: `%%%`(z, expr#366*{expr#366 <- `expr*`}, var_0) -- wf_state: `%`(z'') - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- (wf_ref: `%`(ref'))*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`} + -- (wf_ref: `%`(ref#6))*{ref#6 <- `ref*`} + -- (wf_ref: `%`(ref'#7))*{ref'#7 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`} -- wf_state: `%`(z') - -- if ((z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`})) - -- if ((z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`})) + -- if ((z', ref#7*{ref#7 <- `ref*`}) = var_0) + -- if ((z'', ref'#8*{ref'#8 <- `ref'*#4`}*{`ref'*#4` <- `ref'**`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.1-174.111 -def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:175.1-175.41 - def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 - def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule fun_evalglobals_case_0{z : state}: + `%%%%`(z, [], [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule fun_evalglobals_case_1{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, s : store, f : frame, s' : store, a : nat, var_1 : (state, val*), var_0 : (store, globaladdr)}: + `%%%%`(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#5*{expr'#5 <- `expr'*`}, (z'', [val] ++ val'*{val' <- `val'*`})) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#6*{expr'#6 <- `expr'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, gt, val, var_0) -- wf_state: `%`(z'') -- wf_val: `%`(val) - -- (wf_val: `%`(val'))*{val' <- `val'*`} + -- (wf_val: `%`(val'#3))*{val'#3 <- `val'*`} -- wf_state: `%`(z') -- wf_state: `%`(`%;%`_state(s, f)) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) -- if (z' = `%;%`_state(s, f)) - -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) + -- if ((s', a) = var_0) + -- if ((z'', val'#4*{val'#4 <- `val'*`}) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $instantiate(store : store, module : module, externaddr*) : config +relation fun_instantiate: `%%%%`(store, module, externaddr*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat, `var_7*` : instr**, `var_6*` : instr**, var_5 : (store, moduleinst), var_4 : (state, ref**), var_3 : (state, ref*), var_2 : (state, val*), var_1 : deftype*, var_0 : deftype*}: + `%%%%`(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}, `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- (if (i_E#2 < |elem#12*{elem#12 <- `elem*`}|))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){} + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#12*{elem#12 <- `elem*`}[i_E#2], var_7))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_7 <- `var_7*`} + -- (if (i_D#2 < |data#11*{data#11 <- `data*`}|))^(i_D#2<|data#10*{data#10 <- `data*`}|){} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#11*{data#11 <- `data*`}[i_D#2], var_6))^(i_D#2<|data#10*{data#10 <- `data*`}|){var_6 <- `var_6*`} + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_5) + -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_4) + -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_3) + -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_2) + -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_1) + -- fun_alloctypes: `%%`(type#6*{type#6 <- `type*`}, var_0) -- wf_state: `%`(z) -- wf_state: `%`(z') - -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} + -- (wf_val: `%`(val_G#3))*{val_G#3 <- `val_G*`} -- wf_state: `%`(z'') - -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} + -- (wf_ref: `%`(ref_T#3))*{ref_T#3 <- `ref_T*`} -- wf_state: `%`(z''') - -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} - -- (wf_start: `%`(START_start(x)))?{x <- `x?`} - -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- (wf_ref: `%`(ref_E#3))*{ref_E#3 <- `ref_E*#3`}*{`ref_E*#3` <- `ref_E**`} + -- wf_config: `%`(`%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E#1*{instr_E#1 <- `instr_E*`} ++ instr_D#1*{instr_D#1 <- `instr_D*`} ++ lift(instr_S#1?{instr_S#1 <- `instr_S?`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I#1*{xt_I#1 <- `xt_I*`}, xt_E#1*{xt_E#1 <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(`%`_list(type#5*{type#5 <- `type*`}), `%`_list(import#4*{import#4 <- `import*`}), `%`_list(tag#5*{tag#5 <- `tag*`}), `%`_list(global#7*{global#7 <- `global*`}), `%`_list(mem#7*{mem#7 <- `mem*`}), `%`_list(table#7*{table#7 <- `table*`}), `%`_list(func#8*{func#8 <- `func*`}), `%`_list(data#6*{data#6 <- `data*`}), `%`_list(elem#7*{elem#7 <- `elem*`}), start#6?{start#6 <- `start?`}, `%`_list(export#8*{export#8 <- `export*`}))) + -- if (|`expr_G*`| = |`globaltype*`|) + -- (wf_global: `%`(GLOBAL_global(globaltype#127, expr_G#3)))*{expr_G#3 <- `expr_G*`, globaltype#127 <- `globaltype*`} + -- if (|`expr_T*`| = |`tabletype*`|) + -- (wf_table: `%`(TABLE_table(tabletype#161, expr_T#3)))*{expr_T#3 <- `expr_T*`, tabletype#161 <- `tabletype*`} + -- if (|`byte**`| = |`datamode*`|) + -- (wf_data: `%`(DATA_data(byte#8*{byte#8 <- `byte*#117`}, datamode#116)))*{`byte*#117` <- `byte**`, datamode#116 <- `datamode*`} + -- if (|`elemmode*`| = |`expr_E**`|) + -- if (|`elemmode*`| = |`reftype*`|) + -- (wf_elem: `%`(ELEM_elem(reftype#517, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)))*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#517 <- `reftype*`} + -- (wf_start: `%`(START_start(x#6)))?{x#6 <- `x?`} + -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS $globalsxa(externaddr#8*{externaddr#8 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#9*{externaddr#9 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#9*{func#9 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) -- wf_state: `%`(`%;%`_state(s''', f)) - -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){} - -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){} - -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} - -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} - -- if (module = MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}) - -- if (start?{start <- `start?`} = START_start(x)?{x <- `x?`}) - -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- (wf_uN: `%%`(32, `%`_uN(i_D#1)))^(i_D#1<|data#7*{data#7 <- `data*`}|){} + -- (wf_uN: `%%`(32, `%`_uN(i_E#1)))^(i_E#1<|elem#8*{elem#8 <- `elem*`}|){} + -- (wf_instr: `%`(CALL_instr(x#7)))?{x#7 <- `x?`} + -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I#2*{xt_I#2 <- `xt_I*`}, xt_E#2*{xt_E#2 <- `xt_E*`})) + -- if (|`externaddr*`| = |`xt_I*`|) + -- (Externaddr_ok: `%|-%:%`(s, externaddr#10, xt_I#3))*{externaddr#10 <- `externaddr*`, xt_I#3 <- `xt_I*`} + -- if (module = MODULE_module(`%`_list(type#7*{type#7 <- `type*`}), `%`_list(import#5*{import#5 <- `import*`}), `%`_list(tag#6*{tag#6 <- `tag*`}), `%`_list(global#8*{global#8 <- `global*`}), `%`_list(mem#8*{mem#8 <- `mem*`}), `%`_list(table#8*{table#8 <- `table*`}), `%`_list(func#10*{func#10 <- `func*`}), `%`_list(data#8*{data#8 <- `data*`}), `%`_list(elem#9*{elem#9 <- `elem*`}), start#7?{start#7 <- `start?`}, `%`_list(export#9*{export#9 <- `export*`}))) + -- if (global#9*{global#9 <- `global*`} = GLOBAL_global(globaltype#129, expr_G#4)*{expr_G#4 <- `expr_G*`, globaltype#129 <- `globaltype*`}) + -- if (table#9*{table#9 <- `table*`} = TABLE_table(tabletype#163, expr_T#4)*{expr_T#4 <- `expr_T*`, tabletype#163 <- `tabletype*`}) + -- if (data#9*{data#9 <- `data*`} = DATA_data(byte#9*{byte#9 <- `byte*#119`}, datamode#118)*{`byte*#119` <- `byte**`, datamode#118 <- `datamode*`}) + -- if (elem#10*{elem#10 <- `elem*`} = ELEM_elem(reftype#519, expr_E#4*{expr_E#4 <- `expr_E*#4`}, elemmode#239)*{elemmode#239 <- `elemmode*`, `expr_E*#4` <- `expr_E**`, reftype#519 <- `reftype*`}) + -- if (start#8?{start#8 <- `start?`} = START_start(x#8)?{x#8 <- `x?`}) + -- if (moduleinst_0 = {TYPES var_1, TAGS [], GLOBALS $globalsxa(externaddr#11*{externaddr#11 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#12*{externaddr#12 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#11*{func#11 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})) - -- if ((z'', ref_T*{ref_T <- `ref_T*`}) = $evalexprs(z', expr_T*{expr_T <- `expr_T*`})) - -- if ((z''', ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = $evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`})) + -- if ((z', val_G#4*{val_G#4 <- `val_G*`}) = var_2) + -- if ((z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = var_3) + -- if ((z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = var_4) -- if (z''' = `%;%`_state(s''', f)) - -- if ((s'''', moduleinst) = $allocmodule(s''', module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) - -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})) - -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) - -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) + -- if ((s'''', moduleinst) = var_5) + -- if (instr_D#2*{instr_D#2 <- `instr_D*`} = $concat_(syntax instr, var_6^(i_D#2<|data#10*{data#10 <- `data*`}|){var_6 <- `var_6*`})) + -- if (instr_E#2*{instr_E#2 <- `instr_E*`} = $concat_(syntax instr, var_7^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_7 <- `var_7*`})) + -- if (instr_S#2?{instr_S#2 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $invoke(store : store, funcaddr : funcaddr, val*) : config +relation fun_invoke: `%%%%`(store, funcaddr, val*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} + rule fun_invoke_case_0{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%%`(s, funcaddr, val#1*{val#1 <- `val*`}, `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) + -- if (funcaddr < |s.FUNCS_store|) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val#2)*{val#2 <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#6*{t_1#6 <- `t_1*`}), `%`_resulttype(t_2#6*{t_2#6 <- `t_2*`}))) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1#7*{t_1#7 <- `t_1*`}), `%`_resulttype(t_2#7*{t_2#7 <- `t_2*`}))) + -- if (|`t_1*`| = |`val*`|) + -- (Val_ok: `%|-%:%`(s, val#3, t_1#8))*{t_1#8 <- `t_1*`, val#3 <- `val*`} ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec syntax castop = (null?, null?) @@ -12794,13 +19349,17 @@ syntax I = idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation fun_concat_idctxt: `%%`(idctxt*, idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule fun_concat_idctxt_case_0: + `%%`([], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 - def $concat_idctxt{I : idctxt, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) + + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule fun_concat_idctxt_case_1{I : idctxt, `I'*` : I*, var_0 : idctxt}: + `%%`([I] ++ I'#1*{I'#1 <- `I'*`}, I +++ var_0) + -- fun_concat_idctxt: `%%`(I'*{I' <- `I'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -12840,6 +19399,39 @@ syntax decl = | START(funcidx : funcidx) | EXPORT(name : name, externidx : externidx) +def $decl_data(data) : decl + def $decl_data{x0 : byte*, x1 : datamode}(DATA_data(x0, x1)) = DATA_decl(x0, x1) + +def $decl_elem(elem) : decl + def $decl_elem{x0 : reftype, x1 : expr*, x2 : elemmode}(ELEM_elem(x0, x1, x2)) = ELEM_decl(x0, x1, x2) + +def $decl_export(export) : decl + def $decl_export{x0 : name, x1 : externidx}(EXPORT_export(x0, x1)) = EXPORT_decl(x0, x1) + +def $decl_func(func) : decl + def $decl_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_decl(x0, x1, x2) + +def $decl_global(global) : decl + def $decl_global{x0 : globaltype, x1 : expr}(GLOBAL_global(x0, x1)) = GLOBAL_decl(x0, x1) + +def $decl_import(import) : decl + def $decl_import{x0 : name, x1 : name, x2 : externtype}(IMPORT_import(x0, x1, x2)) = IMPORT_decl(x0, x1, x2) + +def $decl_mem(mem) : decl + def $decl_mem{x0 : memtype}(MEMORY_mem(x0)) = MEMORY_decl(x0) + +def $decl_start(start) : decl + def $decl_start{x0 : funcidx}(START_start(x0)) = START_decl(x0) + +def $decl_table(table) : decl + def $decl_table{x0 : tabletype, x1 : expr}(TABLE_table(x0, x1)) = TABLE_decl(x0, x1) + +def $decl_tag(tag) : decl + def $decl_tag{x0 : tagtype}(TAG_tag(x0)) = TAG_decl(x0) + +def $decl_type(type) : decl + def $decl_type{x0 : rectype}(TYPE_type(x0)) = TYPE_decl(x0) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec relation wf_decl: `%`(decl) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -12914,9 +19506,9 @@ def $typesd(decl*) : type* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 def $typesd([]) = [] ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:271.1-271.48 - def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) + def $typesd{rectype : rectype, `decl'*` : decl*}([TYPE_decl(rectype)] ++ decl'#1*{decl'#1 <- `decl'*`}) = [TYPE_type(rectype)] ++ $typesd(decl'#2*{decl'#2 <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) + def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#3*{decl'#3 <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -12927,9 +19519,9 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 def $importsd([]) = [] ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:275.1-275.56 - def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) + def $importsd{name : name, name_0 : name, externtype : externtype, `decl'*` : decl*}([IMPORT_decl(name, name_0, externtype)] ++ decl'#4*{decl'#4 <- `decl'*`}) = [IMPORT_import(name, name_0, externtype)] ++ $importsd(decl'#5*{decl'#5 <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) + def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#6*{decl'#6 <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -12940,9 +19532,9 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 def $tagsd([]) = [] ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:279.1-279.44 - def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) + def $tagsd{tagtype : tagtype, `decl'*` : decl*}([TAG_decl(tagtype)] ++ decl'#7*{decl'#7 <- `decl'*`}) = [TAG_tag(tagtype)] ++ $tagsd(decl'#8*{decl'#8 <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) + def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#9*{decl'#9 <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -12953,9 +19545,9 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 def $globalsd([]) = [] ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:283.1-283.56 - def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) + def $globalsd{globaltype : globaltype, expr : expr, `decl'*` : decl*}([GLOBAL_decl(globaltype, expr)] ++ decl'#10*{decl'#10 <- `decl'*`}) = [GLOBAL_global(globaltype, expr)] ++ $globalsd(decl'#11*{decl'#11 <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) + def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#12*{decl'#12 <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -12966,9 +19558,9 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 def $memsd([]) = [] ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:287.1-287.44 - def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) + def $memsd{memtype : memtype, `decl'*` : decl*}([MEMORY_decl(memtype)] ++ decl'#13*{decl'#13 <- `decl'*`}) = [MEMORY_mem(memtype)] ++ $memsd(decl'#14*{decl'#14 <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) + def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#15*{decl'#15 <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -12979,9 +19571,9 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 def $tablesd([]) = [] ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:291.1-291.52 - def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) + def $tablesd{tabletype : tabletype, expr : expr, `decl'*` : decl*}([TABLE_decl(tabletype, expr)] ++ decl'#16*{decl'#16 <- `decl'*`}) = [TABLE_table(tabletype, expr)] ++ $tablesd(decl'#17*{decl'#17 <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) + def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#18*{decl'#18 <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -12992,9 +19584,9 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 def $funcsd([]) = [] ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:295.1-295.48 - def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) + def $funcsd{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*}([FUNC_decl(typeidx, `local*`, expr)] ++ decl'#19*{decl'#19 <- `decl'*`}) = [FUNC_func(typeidx, `local*`, expr)] ++ $funcsd(decl'#20*{decl'#20 <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) + def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#21*{decl'#21 <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -13005,9 +19597,9 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 def $datasd([]) = [] ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:299.1-299.48 - def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) + def $datasd{`byte*` : byte*, datamode : datamode, `decl'*` : decl*}([DATA_decl(`byte*`, datamode)] ++ decl'#22*{decl'#22 <- `decl'*`}) = [DATA_data(`byte*`, datamode)] ++ $datasd(decl'#23*{decl'#23 <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) + def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#24*{decl'#24 <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -13018,9 +19610,9 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 def $elemsd([]) = [] ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:303.1-303.48 - def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) + def $elemsd{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*}([ELEM_decl(reftype, `expr*`, elemmode)] ++ decl'#25*{decl'#25 <- `decl'*`}) = [ELEM_elem(reftype, `expr*`, elemmode)] ++ $elemsd(decl'#26*{decl'#26 <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) + def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#27*{decl'#27 <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -13031,9 +19623,9 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 def $startsd([]) = [] ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:307.1-307.52 - def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) + def $startsd{funcidx : funcidx, `decl'*` : decl*}([START_decl(funcidx)] ++ decl'#28*{decl'#28 <- `decl'*`}) = [START_start(funcidx)] ++ $startsd(decl'#29*{decl'#29 <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) + def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#30*{decl'#30 <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -13044,18 +19636,21 @@ def $exportsd(decl*) : export* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 def $exportsd([]) = [] ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:311.1-311.56 - def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) + def $exportsd{name : name, externidx : externidx, `decl'*` : decl*}([EXPORT_decl(name, externidx)] ++ decl'#31*{decl'#31 <- `decl'*`}) = [EXPORT_export(name, externidx)] ++ $exportsd(decl'#32*{decl'#32 <- `decl'*`}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) + def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#33*{decl'#33 <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec -def $ordered(decl*) : bool +relation fun_ordered: `%%`(decl*, bool) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true - -- if ($importsd(decl*{decl <- `decl*`}) = []) + rule fun_ordered_case_0{`decl*` : decl*}: + `%%`(decl#1*{decl#1 <- `decl*`}, true) + -- if ($importsd(decl#2*{decl#2 <- `decl*`}) = []) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) + rule fun_ordered_case_1{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*}: + `%%`(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}, (((((($importsd(decl_1#7*{decl_1#7 <- `decl_1*`}) = []) /\ ($tagsd(decl_1#6*{decl_1#6 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1#5*{decl_1#5 <- `decl_1*`}) = [])) /\ ($memsd(decl_1#4*{decl_1#4 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1#3*{decl_1#3 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1#2*{decl_1#2 <- `decl_1*`}) = []))) ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context) @@ -13064,14 +19659,13 @@ relation Context_ok: `|-%:OK`(context) `|-%:OK`(C) -- wf_context: `%`(C) -- wf_context: `%`(C_0) - -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (wf_context: `%`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{t_1 <- `t_1*`, t_2 <- `t_2*`} - -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (Deftype_ok: `%|-%:OK`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{dt_F <- `dt_F*`, t_1 <- `t_1*`, t_2 <- `t_2*`} -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- `et*`} -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- `lct*`} - -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt : reftype <: valtype)])))*{rt <- `rt*`} - -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)])))?{rt' <- `rt'?`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt)])))*{rt <- `rt*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt')])))?{rt' <- `rt'?`} -- (if ($proj_uN_0(x).0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -13145,7 +19739,7 @@ relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (wf_externtype: `%`(TAG_externtype(tagtype)))*{tagtype <- `tagtype*`} -- (wf_externtype: `%`(GLOBAL_externtype(globaltype)))*{globaltype <- `globaltype*`} - -- (wf_externtype: `%`(FUNC_externtype((deftype_F : deftype <: typeuse))))*{deftype_F <- `deftype_F*`} + -- (wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_F))))*{deftype_F <- `deftype_F*`} -- (wf_externtype: `%`(MEM_externtype(memtype)))*{memtype <- `memtype*`} -- (wf_externtype: `%`(TABLE_externtype(tabletype)))*{tabletype <- `tabletype*`} -- (Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, deftype))*{deftype <- `deftype*`} @@ -13154,7 +19748,7 @@ relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) -- if (|`globaladdr*`| = |`globaltype*`|) -- (Externaddr_ok: `%|-%:%`(s, GLOBAL_externaddr(globaladdr), GLOBAL_externtype(globaltype)))*{globaladdr <- `globaladdr*`, globaltype <- `globaltype*`} -- if (|`deftype_F*`| = |`funcaddr*`|) - -- (Externaddr_ok: `%|-%:%`(s, FUNC_externaddr(funcaddr), FUNC_externtype((deftype_F : deftype <: typeuse))))*{deftype_F <- `deftype_F*`, funcaddr <- `funcaddr*`} + -- (Externaddr_ok: `%|-%:%`(s, FUNC_externaddr(funcaddr), FUNC_externtype($typeuse_deftype(deftype_F))))*{deftype_F <- `deftype_F*`, funcaddr <- `funcaddr*`} -- if (|`memaddr*`| = |`memtype*`|) -- (Externaddr_ok: `%|-%:%`(s, MEM_externaddr(memaddr), MEM_externtype(memtype)))*{memaddr <- `memaddr*`, memtype <- `memtype*`} -- if (|`tableaddr*`| = |`tabletype*`|) @@ -13199,11 +19793,11 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 rule ref{s : store, C : context, ref : ref, rt : reftype}: - `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + `%;%|-%:%`(s, C, $instr_ref(ref), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- wf_store: `%`(s) -- wf_context: `%`(C) -- wf_ref: `%`(ref) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- Ref_ok: `%|-%:%`(s, ref, rt) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 @@ -13260,7 +19854,7 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 - rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: + rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*, var_0 : context?}: `%;%|-%:%`(s, C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- wf_store: `%`(s) -- wf_context: `%`(C) @@ -13276,8 +19870,9 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- if (|`init*`| = |`x_1*`|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} - -- if ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}) =/= ?()) - -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- if (var_0 =/= ?()) + -- Instrs_ok2: `%;%|-%:%`(s, !(var_0), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- fun_with_locals: `%%%%`(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}, var_0) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:47.1-51.33 rule sub{s : store, C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: @@ -13365,10 +19960,10 @@ relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{s : store, dt : deftype, moduleinst : moduleinst, func : func, C : context, dt' : deftype}: - `%|-%:%`(s, {TYPE dt, MODULE moduleinst, CODE (func : func <: funccode)}, dt) + `%|-%:%`(s, {TYPE dt, MODULE moduleinst, CODE $funccode_func(func)}, dt) -- wf_store: `%`(s) -- wf_context: `%`(C) - -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE (func : func <: funccode)}) + -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE $funccode_func(func)}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) @@ -13407,7 +20002,7 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if (ta < |s.TAGS_store|) - -- if ((dt : deftype <: typeuse) = s.TAGS_store[ta].TYPE_taginst) + -- if ($typeuse_deftype(dt) = s.TAGS_store[ta].TYPE_taginst) -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if (|`t*`| = |`val*`|) -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} @@ -13452,7 +20047,7 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 rule `ref.exn`{a : addr, s : store, i : nat}: - `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, (s.EXNS_store[a].FIELDS_exninst[i] : val <: fieldval)) + `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, $fieldval_val(s.EXNS_store[a].FIELDS_exninst[i])) -- if (i < |s.EXNS_store[a].FIELDS_exninst|) -- if (a < |s.EXNS_store|) -- wf_store: `%`(s) @@ -13460,29 +20055,40 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 rule `ref.extern`{ref : ref, s : store}: - `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) + `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, $fieldval_ref(ref)) -- wf_store: `%`(s) -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(ref)) } ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec -def $NotImmutReachable(fieldval : fieldval, store : store, fieldval : fieldval) : bool +relation fun_NotImmutReachable_before_fun_NotImmutReachable_case_1: `%%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_0{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%`(fv_1, s, fv_2) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation fun_NotImmutReachable: `%%%%`(fieldval, store, fieldval, bool) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = false + rule fun_NotImmutReachable_case_0{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%%`(fv_1, s, fv_2, false) -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = true - -- otherwise + rule fun_NotImmutReachable_case_1{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%%`(fv_1, s, fv_2, true) + -- ~ fun_NotImmutReachable_before_fun_NotImmutReachable_case_1: `%%%`(fv_1, s, fv_2) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: + rule _{fv_1 : fieldval, s : store, fv_2 : fieldval, var_0 : bool}: `~%>>_%%`(fv_1, s, fv_2) -- wf_fieldval: `%`(fv_1) -- wf_store: `%`(s) -- wf_fieldval: `%`(fv_2) - -- if $NotImmutReachable(fv_1, s, fv_2) + -- if var_0 + -- fun_NotImmutReachable: `%%%%`(fv_1, s, fv_2, var_0) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Store_ok: `|-%:OK`(store) @@ -13816,11 +20422,11 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'#1*{X'#1 <- `X'*`}, [Y] ++ Y'#1*{Y'#1 <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) - -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) + -- if ((s_2, a'#1*{a'#1 <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'#2*{X'#2 <- `X'*`}, Y'#2*{Y'#2 <- `Y'*`})) } ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec @@ -13885,7 +20491,8 @@ grammar BsN(N : N) : sN ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar BiN(N : N) : iN ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN} i:BsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) + prod{i : sN, var_0 : nat} i:BsN(N) => `%`_iN(var_0) + -- fun_inv_signed_: `%%%`(N, $proj_sN_0(i).0, var_0) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar BfN(N : N) : fN @@ -13935,8 +20542,9 @@ grammar Blist(syntax el, grammar BX : el) : el* ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bname : name ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{name : name, `b*` : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name - -- if ($utf8($proj_name_0(name).0) = b*{b <- `b*`}) + prod{name : name, `b*` : byte*, var_0 : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name + -- if (var_0 = b*{b <- `b*`}) + -- fun_utf8: `%%`($proj_name_0(name).0, var_0) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Btypeidx : typeidx @@ -14069,11 +20677,11 @@ grammar Breftype : reftype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bvaltype : valtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) + prod{nt : numtype} nt:Bnumtype => $valtype_numtype(nt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) + prod{vt : vectype} vt:Bvectype => $valtype_vectype(vt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) + prod{rt : reftype} rt:Breftype => $valtype_reftype(rt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bresulttype : resulttype @@ -14097,9 +20705,9 @@ grammar Bpacktype : packtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bstoragetype : storagetype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) + prod{t : valtype} t:Bvaltype => $storagetype_valtype(t) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) + prod{pt : packtype} pt:Bpacktype => $storagetype_packtype(pt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bfieldtype : fieldtype @@ -15423,10 +22031,11 @@ grammar Bversion : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmodule : module ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**, var_0 : dataidx*} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} - -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) + -- if ((n?{n <- `n?`} =/= ?()) \/ (var_0 = [])) -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} + -- fun_dataidx_funcs: `%%`(func*{func <- `func*`}, var_0) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec grammar Tchar : char @@ -15597,7 +22206,8 @@ grammar Tstringchar : char ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tstringelem : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tstringchar => $utf8([c]) + prod{c : char, var_0 : byte*} c:Tstringchar => var_0 + -- fun_utf8: `%%`([c], var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] @@ -15610,8 +22220,9 @@ grammar Tstring : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tname : name ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*, `b*` : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) - -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) + prod{`c*` : char*, `b*` : byte*, var_0 : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) + -- if (b*{b <- `b*`} = var_0) + -- fun_utf8: `%%`(c*{c <- `c*`}, var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tid : name @@ -15775,7 +22386,8 @@ grammar TiN(N : N) : iN ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN} i:TsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) + prod{i : sN, var_0 : nat} i:TsN(N) => `%`_iN(var_0) + -- fun_inv_signed_: `%%%`(N, $proj_sN_0(i).0, var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rec { @@ -15834,10 +22446,12 @@ grammar TfNmag(N : N) : fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod "inf" => INF_fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) + prod{var_0 : m} "nan" => NAN_fNmag(var_0) + -- fun_canon_: `%%`(N, var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) - -- if ((1 <= n) /\ (n < (2 ^ !($signif(N))))) + prod{n : n, var_0 : nat?} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + -- if ((1 <= n) /\ (n < (2 ^ !(var_0)))) + -- fun_signif: `%%`(N, var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TfN(N : N) : fN @@ -16036,11 +22650,11 @@ grammar Treftype_(I : I) : reftype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tvaltype_(I : I) : valtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) + prod{nt : numtype} nt:Tnumtype => $valtype_numtype(nt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) + prod{vt : vectype} vt:Tvectype => $valtype_vectype(vt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) + prod{rt : reftype} rt:Treftype_(I) => $valtype_reftype(rt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tpacktype : packtype @@ -16052,9 +22666,9 @@ grammar Tpacktype : packtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tstoragetype_(I : I) : storagetype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) + prod{t : valtype} t:Tvaltype_(I) => $storagetype_valtype(t) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) + prod{pt : packtype} pt:Tpacktype => $storagetype_packtype(pt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tfieldtype_(I : I) : fieldtype @@ -16105,7 +22719,8 @@ grammar Ttypedef_(I : I) : (subtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Trectype_(I : I) : (rectype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) + prod{`st*` : subtype*, `I'*` : I*, var_0 : idctxt} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), var_0) + -- fun_concat_idctxt: `%%`(I'*{I' <- `I'*`}, var_0) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Taddrtype : addrtype @@ -17292,9 +23907,10 @@ grammar Tlocal_(I : I) : (local*, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tfunc_(I : I) : (func, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I, var_0 : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = I +++ I_1 +++ var_0) -- Idctxt_ok: `|-%:OK`(I') + -- fun_concat_idctxt: `%%`(I_2*{I_2 <- `I_2*`}, var_0) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdatastring : byte* @@ -17430,33 +24046,33 @@ grammar Telemtable_(I : I) : () ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdecl_(I : I) : (decl, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) + prod{`` : (type, idctxt)} ``:Ttype_(I) => ($decl_type(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) + prod{`` : (import, idctxt)} ``:Timport_(I) => ($decl_import(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) + prod{`` : (tag, idctxt)} ``:Ttag_(I) => ($decl_tag(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) + prod{`` : (global, idctxt)} ``:Tglobal_(I) => ($decl_global(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) + prod{`` : (mem, idctxt)} ``:Tmem_(I) => ($decl_mem(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) + prod{`` : (table, idctxt)} ``:Ttable_(I) => ($decl_table(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) + prod{`` : (func, idctxt)} ``:Tfunc_(I) => ($decl_func(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) + prod{`` : (data, idctxt)} ``:Tdata_(I) => ($decl_data(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) + prod{`` : (elem, idctxt)} ``:Telem_(I) => ($decl_elem(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) + prod{`` : (start, idctxt)} ``:Tstart_(I) => ($decl_start(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) + prod{`` : (export, idctxt)} ``:Texport_(I) => ($decl_export(``.0), ``.1) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmodule : module ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) - -- if (I' = $concat_idctxt(I*{I <- `I*`})) + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I, var_1 : bool, var_0 : idctxt} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + -- if (I' = var_0) -- Idctxt_ok: `|-%:OK`(I') -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) @@ -17469,7 +24085,9 @@ grammar Tmodule : module -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if $ordered(decl*{decl <- `decl*`}) + -- if var_1 + -- fun_ordered: `%%`(decl*{decl <- `decl*`}, var_1) + -- fun_concat_idctxt: `%%`(I*{I <- `I*`}, var_0) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdecldots_(I : I) : (decl, idctxt)* diff --git a/spectec/test-middlend/specification.exp/11-alias-demut.il b/spectec/test-middlend/specification.exp/11-alias-demut.il new file mode 100644 index 0000000000..f527d52403 --- /dev/null +++ b/spectec/test-middlend/specification.exp/11-alias-demut.il @@ -0,0 +1,24137 @@ + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax N = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax M = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax K = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax n = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax m = nat + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +def $min(nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $min{i : nat, j : nat}(i, j) = (if (i <= j) then i else j) + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 +def $sum(nat*) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 + def $sum([]) = 0 + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 + def $sum{n : nat, `n'*` : n*}([n] ++ n'#1*{n'#1 <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) +} + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 +def $prod(nat*) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 + def $prod([]) = 1 + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 + def $prod{n : nat, `n'*` : n*}([n] ++ n'#2*{n'#2 <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $opt_(syntax X, X*) : X?? + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X}(syntax X, []) = ?(?()) + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 +def $concat_(syntax X, X**) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 + def $concat_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 + def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w#1*{w#1 <- `w*`}] ++ w'#1*{w'#1 <- `w'*#1`}*{`w'*#1` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 +def $concatn_(syntax X, X**, nat : nat) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 + def $concatn_{syntax X, n : nat}(syntax X, [], n) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 + def $concatn_{syntax X, n : nat, `w*` : X*, `w'**` : X**}(syntax X, [w#2^n{w#2 <- `w*`}] ++ w'#2^n{w'#2 <- `w'*#2`}*{`w'*#2` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $concatopt_(syntax X, X?*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w#3?{w#3 <- `w?`}] ++ w'#3?{w'#3 <- `w'?#1`}*{`w'?#1` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concat_(syntax X, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concatn_(syntax X, nat : nat, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 +def $disjoint_(syntax X, X*) : bool + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 + def $disjoint_{syntax X}(syntax X, []) = true + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 + def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'#4*{w'#4 <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 +def $setminus1_(syntax X, X : X, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 + def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 + def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'#5*{w'#5 <- `w'*`}) = (if (w = w_1) then [] else $setminus1_(syntax X, w, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 +def $setminus_(syntax X, X*, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 + def $setminus_{syntax X, `w*` : X*}(syntax X, [], w#4*{w#4 <- `w*`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 + def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'#6*{w'#6 <- `w'*`}, w#5*{w#5 <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 +def $setproduct2_(syntax X, X : X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 + def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 + def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'#7*{w'#7 <- `w'*`}] ++ w#6*{w#6 <- `w*#1`}*{`w*#1` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 +def $setproduct1_(syntax X, X*, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 + def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w#7*{w#7 <- `w*#2`}*{`w*#2` <- `w**`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 + def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'#8*{w'#8 <- `w'*`}, w#8*{w#8 <- `w*#3`}*{`w*#3` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 +def $setproduct_(syntax X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 + def $setproduct_{syntax X}(syntax X, []) = [[]] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 + def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1#1*{w_1#1 <- `w_1*`}] ++ w#9*{w#9 <- `w*#4`}*{`w*#4` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) +} + +;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec +def $ND : bool + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax bit = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_bit: `%`(bit) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule bit_case_0{i : nat}: + `%`(`%`_bit(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax byte = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_byte_0(x : byte) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_byte_0{v_num_0 : nat}(`%`_byte(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_byte: `%`(byte) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule byte_case_0{i : nat}: + `%`(`%`_byte(i)) + -- if ((i >= 0) /\ (i <= 255)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax uN = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_uN_0(x : uN) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_uN_0{v_num_0 : nat}(`%`_uN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_uN: `%%`(N, uN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule uN_case_0{N : N, i : nat}: + `%%`(N, `%`_uN(i)) + -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax sN = + | `%`(i : int) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_sN_0(x : sN) : (int) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_sN_0{v_num_0 : int}(`%`_sN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_sN: `%%`(N, sN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule sN_case_0{N : N, i : int}: + `%%`(N, `%`_sN(i)) + -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax iN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u8 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u16 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u31 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u32 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u64 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax s33 = sN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i32 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i64 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i128 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_signif_before_fun_signif_case_2: `%`(N) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_signif_case_1: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_signif_case_0: + `%`(32) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_signif: `%%`(N, nat?) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_signif_case_0: + `%%`(32, ?(23)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_signif_case_1: + `%%`(64, ?(52)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_signif_case_2{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_signif_before_fun_signif_case_2: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_expon_before_fun_expon_case_2: `%`(N) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_1: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_0: + `%`(32) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_expon: `%%`(N, nat?) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_0: + `%%`(32, ?(8)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_1: + `%%`(64, ?(11)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_2{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_expon_before_fun_expon_case_2: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_M: `%%`(N, nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_M_case_0{N : nat, var_0 : nat?}: + `%%`(N, !(var_0)) + -- if (var_0 =/= ?()) + -- fun_signif: `%%`(N, var_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_E: `%%`(N, nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_E_case_0{N : nat, var_0 : nat?}: + `%%`(N, !(var_0)) + -- if (var_0 =/= ?()) + -- fun_expon: `%%`(N, var_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax exp = int + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fNmag = + | NORM(m : m, exp : exp) + | SUBNORM(m : m) + | INF + | NAN(m : m) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fNmag: `%%`(N, fNmag) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_0{N : N, m : m, exp : exp, var_1 : nat, var_0 : nat}: + `%%`(N, NORM_fNmag(m, exp)) + -- if ((m < (2 ^ var_0)) /\ ((((2 : nat <:> int) - ((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + -- fun_E: `%%`(N, var_1) + -- fun_M: `%%`(N, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_1{N : N, exp : exp, m : m, var_1 : nat, var_0 : nat}: + `%%`(N, SUBNORM_fNmag(m)) + -- if ((m < (2 ^ var_0)) /\ (((2 : nat <:> int) - ((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) + -- fun_E: `%%`(N, var_1) + -- fun_M: `%%`(N, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_2{N : N}: + `%%`(N, INF_fNmag) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_3{N : N, m : m, var_0 : nat}: + `%%`(N, NAN_fNmag(m)) + -- if ((1 <= m) /\ (m < (2 ^ var_0))) + -- fun_M: `%%`(N, var_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fN = + | POS(fNmag) + | NEG(fNmag) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fN: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_0{N : N, var_0 : fNmag}: + `%%`(N, POS_fN(var_0)) + -- wf_fNmag: `%%`(N, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_1{N : N, var_0 : fNmag}: + `%%`(N, NEG_fN(var_0)) + -- wf_fNmag: `%%`(N, var_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f32 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f64 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_fzero: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_fzero_case_0{N : nat}: + `%%`(N, POS_fN(SUBNORM_fNmag(0))) + -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_fnat: `%%%`(N, nat, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_fnat_case_0{N : nat, n : nat}: + `%%%`(N, n, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_fone: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_fone_case_0{N : nat}: + `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_canon_: `%%`(N, nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_canon__case_0{N : nat, var_0 : nat?}: + `%%`(N, (2 ^ (((!(var_0) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + -- if (var_0 =/= ?()) + -- fun_signif: `%%`(N, var_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax vN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax v128 = vN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax list{syntax X}(syntax X) = + | `%`(`X*` : X*) + -- if (|X*{X <- `X*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_list_0(syntax X, x : list(syntax X)) : (X*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_list_0{syntax X, v_X_list_0 : X*}(syntax X, `%`_list(v_X_list_0)) = (v_X_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax char = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_char_0(x : char) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_char_0{v_num_0 : nat}(`%`_char(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_char: `%`(char) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule char_case_0{i : nat}: + `%`(`%`_char(i)) + -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +relation fun_cont: `%%`(byte, nat) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + rule fun_cont_case_0{b : byte}: + `%%`(b, ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat)) + -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation fun_utf8: `%%`(char*, byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_0{`ch*` : char*, `var_0*` : byte**}: + `%%`(ch#1*{ch#1 <- `ch*`}, $concat_(syntax byte, var_0*{var_0 <- `var_0*`})) + -- if (|`var_0*`| = |`ch*`|) + -- (fun_utf8: `%%`([ch], var_0))*{var_0 <- `var_0*`, ch <- `ch*`} + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_1{ch : char, b : byte}: + `%%`([ch], [b]) + -- wf_byte: `%`(b) + -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) + -- if ($proj_char_0(ch).0 < 128) + -- if (`%`_byte($proj_char_0(ch).0) = b) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: + `%%`([ch], [b_1 b_2]) + -- fun_cont: `%%`(b_2, var_0) + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) + -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3]) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) + -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) + -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * var_0)) + var_1)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_4{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, var_2 : nat, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3 b_4]) + -- fun_cont: `%%`(b_4, var_2) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) + -- wf_byte: `%`(b_1) + -- wf_byte: `%`(b_2) + -- wf_byte: `%`(b_3) + -- wf_byte: `%`(b_4) + -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) + -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * var_0)) + ((2 ^ 6) * var_1)) + var_2)) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax name = + | `%`(`char*` : char*) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_name_0(x : name) : (char*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_name_0{v_char_list_0 : char*}(`%`_name(v_char_list_0)) = (v_char_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_name: `%`(name) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule name_case_0{`char*` : char*, var_0 : byte*}: + `%`(`%`_name(`char*`)) + -- (wf_char: `%`(char))*{char <- `char*`} + -- if (|var_0| < (2 ^ 32)) + -- fun_utf8: `%%`(char*{char <- `char*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax idx = u32 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax laneidx = u8 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax typeidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax funcidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax globalidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tableidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax memidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tagidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax elemidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax dataidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax labelidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax localidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fieldidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax externidx = + | FUNC(funcidx : funcidx) + | GLOBAL(globalidx : globalidx) + | TABLE(tableidx : tableidx) + | MEM(memidx : memidx) + | TAG(tagidx : tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_externidx: `%`(externidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_0{funcidx : funcidx}: + `%`(FUNC_externidx(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_1{globalidx : globalidx}: + `%`(GLOBAL_externidx(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_2{tableidx : tableidx}: + `%`(TABLE_externidx(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_3{memidx : memidx}: + `%`(MEM_externidx(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_4{tagidx : tagidx}: + `%`(TAG_externidx(tagidx)) + -- wf_uN: `%%`(32, tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 +def $funcsxx(externidx*) : typeidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 + def $funcsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 + def $funcsxx{x : uN, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx#1*{xx#1 <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 + def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#2*{xx#2 <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 +def $globalsxx(externidx*) : globalidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 + def $globalsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 + def $globalsxx{x : uN, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx#3*{xx#3 <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 + def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#4*{xx#4 <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 +def $tablesxx(externidx*) : tableidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 + def $tablesxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 + def $tablesxx{x : uN, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx#5*{xx#5 <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 + def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#6*{xx#6 <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 +def $memsxx(externidx*) : memidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 + def $memsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 + def $memsxx{x : uN, `xx*` : externidx*}([MEM_externidx(x)] ++ xx#7*{xx#7 <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 + def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#8*{xx#8 <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 +def $tagsxx(externidx*) : tagidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 + def $tagsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 + def $tagsxx{x : uN, `xx*` : externidx*}([TAG_externidx(x)] ++ xx#9*{xx#9 <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 + def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#10*{xx#10 <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax free = +{ + TYPES typeidx*, + FUNCS funcidx*, + GLOBALS globalidx*, + TABLES tableidx*, + MEMS memidx*, + ELEMS elemidx*, + DATAS dataidx*, + LOCALS localidx*, + LABELS labelidx*, + TAGS tagidx* +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_free: `%`(free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_case_{var_0 : typeidx*, var_1 : funcidx*, var_2 : globalidx*, var_3 : tableidx*, var_4 : memidx*, var_5 : elemidx*, var_6 : dataidx*, var_7 : localidx*, var_8 : labelidx*, var_9 : tagidx*}: + `%`({TYPES var_0, FUNCS var_1, GLOBALS var_2, TABLES var_3, MEMS var_4, ELEMS var_5, DATAS var_6, LOCALS var_7, LABELS var_8, TAGS var_9}) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_uN: `%%`(32, var_1))*{var_1 <- var_1} + -- (wf_uN: `%%`(32, var_2))*{var_2 <- var_2} + -- (wf_uN: `%%`(32, var_3))*{var_3 <- var_3} + -- (wf_uN: `%%`(32, var_4))*{var_4 <- var_4} + -- (wf_uN: `%%`(32, var_5))*{var_5 <- var_5} + -- (wf_uN: `%%`(32, var_6))*{var_6 <- var_6} + -- (wf_uN: `%%`(32, var_7))*{var_7 <- var_7} + -- (wf_uN: `%%`(32, var_8))*{var_8 <- var_8} + -- (wf_uN: `%%`(32, var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_opt: `%%`(free?, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_opt_case_0: + `%%`(?(), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_opt_case_1{free : free}: + `%%`(?(free), free) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation fun_free_list: `%%`(free*, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule fun_free_list_case_0: + `%%`([], {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule fun_free_list_case_1{free : free, `free'*` : free*, var_0 : free}: + `%%`([free] ++ free'#1*{free'#1 <- `free'*`}, free +++ var_0) + -- fun_free_list: `%%`(free'*{free' <- `free'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_typeidx: `%%`(typeidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_typeidx_case_0{typeidx : uN}: + `%%`(typeidx, {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_funcidx: `%%`(funcidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_funcidx_case_0{funcidx : uN}: + `%%`(funcidx, {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_globalidx: `%%`(globalidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_globalidx_case_0{globalidx : uN}: + `%%`(globalidx, {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_tableidx: `%%`(tableidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_tableidx_case_0{tableidx : uN}: + `%%`(tableidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_memidx: `%%`(memidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_memidx_case_0{memidx : uN}: + `%%`(memidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_elemidx: `%%`(elemidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_elemidx_case_0{elemidx : uN}: + `%%`(elemidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_dataidx: `%%`(dataidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_dataidx_case_0{dataidx : uN}: + `%%`(dataidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_localidx: `%%`(localidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_localidx_case_0{localidx : uN}: + `%%`(localidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_labelidx: `%%`(labelidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_labelidx_case_0{labelidx : uN}: + `%%`(labelidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_tagidx: `%%`(tagidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_tagidx_case_0{tagidx : uN}: + `%%`(tagidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_externidx: `%%`(externidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_externidx_case_0{funcidx : uN, var_0 : free}: + `%%`(FUNC_externidx(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_externidx_case_1{globalidx : uN, var_0 : free}: + `%%`(GLOBAL_externidx(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_externidx_case_2{tableidx : uN, var_0 : free}: + `%%`(TABLE_externidx(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_externidx_case_3{memidx : uN, var_0 : free}: + `%%`(MEM_externidx(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_externidx_case_4{tagidx : uN, var_0 : free}: + `%%`(TAG_externidx(tagidx), var_0) + -- fun_free_tagidx: `%%`(tagidx, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax null = + | NULL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax addrtype = + | I32 + | I64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax numtype = + | I32 + | I64 + | F32 + | F64 + +def $numtype_addrtype(addrtype) : numtype + def $numtype_addrtype(I32_addrtype) = I32_numtype + def $numtype_addrtype(I64_addrtype) = I64_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax vectype = + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax consttype = + | I32 + | I64 + | F32 + | F64 + | V128 + +def $consttype_numtype(numtype) : consttype + def $consttype_numtype(I32_numtype) = I32_consttype + def $consttype_numtype(I64_numtype) = I64_consttype + def $consttype_numtype(F32_numtype) = F32_consttype + def $consttype_numtype(F64_numtype) = F64_consttype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax absheaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax mut = + | MUT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax final = + | FINAL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 +syntax typeuse = + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 +syntax heaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 +syntax valtype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(`null?` : null?, heaptype : heaptype) + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 +syntax storagetype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(`null?` : null?, heaptype : heaptype) + | BOT + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 +syntax fieldtype = + | `%%`(`mut?` : mut?, storagetype : storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 +syntax comptype = + | STRUCT(list(syntax fieldtype)) + | ARRAY(fieldtype : fieldtype) + | `FUNC%->%`(resulttype : list(syntax valtype), resulttype : list(syntax valtype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 +syntax subtype = + | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 +syntax rectype = + | REC(list(syntax subtype)) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax resulttype = list(syntax valtype) + +def $heaptype_absheaptype(absheaptype) : heaptype + def $heaptype_absheaptype(ANY_absheaptype) = ANY_heaptype + def $heaptype_absheaptype(EQ_absheaptype) = EQ_heaptype + def $heaptype_absheaptype(I31_absheaptype) = I31_heaptype + def $heaptype_absheaptype(STRUCT_absheaptype) = STRUCT_heaptype + def $heaptype_absheaptype(ARRAY_absheaptype) = ARRAY_heaptype + def $heaptype_absheaptype(NONE_absheaptype) = NONE_heaptype + def $heaptype_absheaptype(FUNC_absheaptype) = FUNC_heaptype + def $heaptype_absheaptype(NOFUNC_absheaptype) = NOFUNC_heaptype + def $heaptype_absheaptype(EXN_absheaptype) = EXN_heaptype + def $heaptype_absheaptype(NOEXN_absheaptype) = NOEXN_heaptype + def $heaptype_absheaptype(EXTERN_absheaptype) = EXTERN_heaptype + def $heaptype_absheaptype(NOEXTERN_absheaptype) = NOEXTERN_heaptype + def $heaptype_absheaptype(BOT_absheaptype) = BOT_heaptype + +def $valtype_addrtype(addrtype) : valtype + def $valtype_addrtype(I32_addrtype) = I32_valtype + def $valtype_addrtype(I64_addrtype) = I64_valtype + +def $storagetype_consttype(consttype) : storagetype + def $storagetype_consttype(I32_consttype) = I32_storagetype + def $storagetype_consttype(I64_consttype) = I64_storagetype + def $storagetype_consttype(F32_consttype) = F32_storagetype + def $storagetype_consttype(F64_consttype) = F64_storagetype + def $storagetype_consttype(V128_consttype) = V128_storagetype + +def $storagetype_numtype(numtype) : storagetype + def $storagetype_numtype(I32_numtype) = I32_storagetype + def $storagetype_numtype(I64_numtype) = I64_storagetype + def $storagetype_numtype(F32_numtype) = F32_storagetype + def $storagetype_numtype(F64_numtype) = F64_storagetype + +def $valtype_numtype(numtype) : valtype + def $valtype_numtype(I32_numtype) = I32_valtype + def $valtype_numtype(I64_numtype) = I64_valtype + def $valtype_numtype(F32_numtype) = F32_valtype + def $valtype_numtype(F64_numtype) = F64_valtype + +def $heaptype_typeuse(typeuse) : heaptype + def $heaptype_typeuse{x0 : typeidx}(_IDX_typeuse(x0)) = _IDX_heaptype(x0) + def $heaptype_typeuse{x0 : rectype, x1 : n}(_DEF_typeuse(x0, x1)) = _DEF_heaptype(x0, x1) + def $heaptype_typeuse{x0 : n}(REC_typeuse(x0)) = REC_heaptype(x0) + +def $storagetype_valtype(valtype) : storagetype + def $storagetype_valtype(I32_valtype) = I32_storagetype + def $storagetype_valtype(I64_valtype) = I64_storagetype + def $storagetype_valtype(F32_valtype) = F32_storagetype + def $storagetype_valtype(F64_valtype) = F64_storagetype + def $storagetype_valtype(V128_valtype) = V128_storagetype + def $storagetype_valtype{x0 : null?, x1 : heaptype}(REF_valtype(x0, x1)) = REF_storagetype(x0, x1) + def $storagetype_valtype(BOT_valtype) = BOT_storagetype + +def $storagetype_vectype(vectype) : storagetype + def $storagetype_vectype(V128_vectype) = V128_storagetype + +def $valtype_vectype(vectype) : valtype + def $valtype_vectype(V128_vectype) = V128_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 +relation wf_typeuse: `%`(typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_0{typeidx : typeidx}: + `%`(_IDX_typeuse(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_1{rectype : rectype, n : n}: + `%`(_DEF_typeuse(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_2{n : n}: + `%`(REC_typeuse(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 +relation wf_heaptype: `%`(heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_0: + `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_1: + `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_2: + `%`(I31_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_3: + `%`(STRUCT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_4: + `%`(ARRAY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_5: + `%`(NONE_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_6: + `%`(FUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_7: + `%`(NOFUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_8: + `%`(EXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_9: + `%`(NOEXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_10: + `%`(EXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_11: + `%`(NOEXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_12: + `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_13{typeidx : typeidx}: + `%`(_IDX_heaptype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_14{rectype : rectype, n : n}: + `%`(_DEF_heaptype(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_15{n : n}: + `%`(REC_heaptype(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 +relation wf_valtype: `%`(valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_0: + `%`(I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_1: + `%`(I64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_2: + `%`(F32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_3: + `%`(F64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_4: + `%`(V128_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_valtype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_6: + `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 +relation wf_storagetype: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_0: + `%`(I32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_4: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_storagetype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_6: + `%`(BOT_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_7: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_8: + `%`(I16_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 +relation wf_fieldtype: `%`(fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 + rule fieldtype_case_0{`mut?` : mut?, storagetype : storagetype}: + `%`(`%%`_fieldtype(`mut?`, storagetype)) + -- wf_storagetype: `%`(storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 +relation wf_comptype: `%`(comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_0{var_0 : list(syntax fieldtype)}: + `%`(STRUCT_comptype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_1{fieldtype : fieldtype}: + `%`(ARRAY_comptype(fieldtype)) + -- wf_fieldtype: `%`(fieldtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_2{resulttype : resulttype, resulttype_0 : resulttype}: + `%`(`FUNC%->%`_comptype(resulttype, resulttype_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 +relation wf_subtype: `%`(subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 + rule subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}: + `%`(SUB_subtype(`final?`, `typeuse*`, comptype)) + -- (wf_typeuse: `%`(typeuse))*{typeuse <- `typeuse*`} + -- wf_comptype: `%`(comptype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax deftype = + | _DEF(rectype : rectype, n : n) + +def $heaptype_deftype(deftype) : heaptype + def $heaptype_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_heaptype(x0, x1) + +def $typeuse_deftype(deftype) : typeuse + def $typeuse_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_typeuse(x0, x1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax typevar = + | _IDX(typeidx : typeidx) + | REC(n : n) + +def $typeuse_typevar(typevar) : typeuse + def $typeuse_typevar{x0 : typeidx}(_IDX_typevar(x0)) = _IDX_typeuse(x0) + def $typeuse_typevar{x0 : n}(REC_typevar(x0)) = REC_typeuse(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_typevar: `%`(typevar) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_0{typeidx : typeidx}: + `%`(_IDX_typevar(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_1{n : n}: + `%`(REC_typevar(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax reftype = + | REF(`null?` : null?, heaptype : heaptype) + +def $storagetype_reftype(reftype) : storagetype + def $storagetype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_storagetype(x0, x1) + +def $valtype_reftype(reftype) : valtype + def $valtype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_valtype(x0, x1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_reftype: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule reftype_case_0{`null?` : null?, heaptype : heaptype}: + `%`(REF_reftype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Inn = addrtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Fnn = + | F32 + | F64 + +def $numtype_Fnn(Fnn) : numtype + def $numtype_Fnn(F32_Fnn) = F32_numtype + def $numtype_Fnn(F64_Fnn) = F64_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Vnn = vectype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Cnn = + | I32 + | I64 + | F32 + | F64 + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_ANYREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_ANYREF_case_0: + `%`(REF_reftype(?(NULL_null), ANY_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_EQREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_EQREF_case_0: + `%`(REF_reftype(?(NULL_null), EQ_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_I31REF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_I31REF_case_0: + `%`(REF_reftype(?(NULL_null), I31_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_STRUCTREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_STRUCTREF_case_0: + `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_ARRAYREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_ARRAYREF_case_0: + `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_FUNCREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_FUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_EXNREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_EXNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_EXTERNREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_EXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_NULLREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_NULLREF_case_0: + `%`(REF_reftype(?(NULL_null), NONE_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_NULLFUNCREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_NULLFUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_NULLEXNREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_NULLEXNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_NULLEXTERNREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_NULLEXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax packtype = + | I8 + | I16 + +def $storagetype_packtype(packtype) : storagetype + def $storagetype_packtype(I8_packtype) = I8_storagetype + def $storagetype_packtype(I16_packtype) = I16_storagetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax lanetype = + | I32 + | I64 + | F32 + | F64 + | I8 + | I16 + +def $lanetype_Fnn(Fnn) : lanetype + def $lanetype_Fnn(F32_Fnn) = F32_lanetype + def $lanetype_Fnn(F64_Fnn) = F64_lanetype + +def $lanetype_addrtype(addrtype) : lanetype + def $lanetype_addrtype(I32_addrtype) = I32_lanetype + def $lanetype_addrtype(I64_addrtype) = I64_lanetype + +def $lanetype_numtype(numtype) : lanetype + def $lanetype_numtype(I32_numtype) = I32_lanetype + def $lanetype_numtype(I64_numtype) = I64_lanetype + def $lanetype_numtype(F32_numtype) = F32_lanetype + def $lanetype_numtype(F64_numtype) = F64_lanetype + +def $lanetype_packtype(packtype) : lanetype + def $lanetype_packtype(I8_packtype) = I8_lanetype + def $lanetype_packtype(I16_packtype) = I16_lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Pnn = packtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Jnn = + | I32 + | I64 + | I8 + | I16 + +def $lanetype_Jnn(Jnn) : lanetype + def $lanetype_Jnn(I32_Jnn) = I32_lanetype + def $lanetype_Jnn(I64_Jnn) = I64_lanetype + def $lanetype_Jnn(I8_Jnn) = I8_lanetype + def $lanetype_Jnn(I16_Jnn) = I16_lanetype + +def $Jnn_addrtype(addrtype) : Jnn + def $Jnn_addrtype(I32_addrtype) = I32_Jnn + def $Jnn_addrtype(I64_addrtype) = I64_Jnn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Lnn = lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax limits = + | `[%..%]`(u64 : u64, `u64?` : u64?) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_limits: `%`(limits) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule limits_case_0{u64 : u64, `u64?` : u64?}: + `%`(`[%..%]`_limits(u64, `u64?`)) + -- wf_uN: `%%`(64, u64) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tagtype = typeuse + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax globaltype = + | `%%`(`mut?` : mut?, valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_globaltype: `%`(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule globaltype_case_0{`mut?` : mut?, valtype : valtype}: + `%`(`%%`_globaltype(`mut?`, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax memtype = + | `%%PAGE`(addrtype : addrtype, limits : limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_memtype: `%`(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule memtype_case_0{addrtype : addrtype, limits : limits}: + `%`(`%%PAGE`_memtype(addrtype, limits)) + -- wf_limits: `%`(limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tabletype = + | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_tabletype: `%`(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype}: + `%`(`%%%`_tabletype(addrtype, limits, reftype)) + -- wf_limits: `%`(limits) + -- wf_reftype: `%`(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax datatype = + | OK + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax elemtype = reftype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax externtype = + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype) + | MEM(memtype : memtype) + | TABLE(tabletype : tabletype) + | FUNC(typeuse : typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_externtype: `%`(externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_0{tagtype : tagtype}: + `%`(TAG_externtype(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_1{globaltype : globaltype}: + `%`(GLOBAL_externtype(globaltype)) + -- wf_globaltype: `%`(globaltype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_2{memtype : memtype}: + `%`(MEM_externtype(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_3{tabletype : tabletype}: + `%`(TABLE_externtype(tabletype)) + -- wf_tabletype: `%`(tabletype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_4{typeuse : typeuse}: + `%`(FUNC_externtype(typeuse)) + -- wf_typeuse: `%`(typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax moduletype = + | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_moduletype: `%`(moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule moduletype_case_0{`externtype*` : externtype*, `externtype*_0` : externtype*}: + `%`(`%->%`_moduletype(`externtype*`, `externtype*_0`)) + -- (wf_externtype: `%`(externtype))*{externtype <- `externtype*`} + -- (wf_externtype: `%`(`externtype*_0`))*{`externtype*_0` <- `externtype*_0`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_IN_before_fun_IN_case_2: `%`(N) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_IN_case_1: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_IN_case_0: + `%`(32) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_IN: `%%`(N, Inn?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_IN_case_0: + `%%`(32, ?(I32_Inn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_IN_case_1: + `%%`(64, ?(I64_Inn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_IN_case_2{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_IN_before_fun_IN_case_2: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_FN_before_fun_FN_case_2: `%`(N) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_FN_case_1: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_FN_case_0: + `%`(32) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_FN: `%%`(N, Fnn?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_FN_case_0: + `%%`(32, ?(F32_Fnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_FN_case_1: + `%%`(64, ?(F64_Fnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_FN_case_2{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_FN_before_fun_FN_case_2: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_JN_before_fun_JN_case_4: `%`(N) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_3: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_2: + `%`(32) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_1: + `%`(16) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_0: + `%`(8) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_JN: `%%`(N, Jnn?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_0: + `%%`(8, ?(I8_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_1: + `%%`(16, ?(I16_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_2: + `%%`(32, ?(I32_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_3: + `%%`(64, ?(I64_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_4{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_JN_before_fun_JN_case_4: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $size(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I64_numtype) = 64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F64_numtype) = 64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsize(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsize(V128_vectype) = 128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psize(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I8_packtype) = 8 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I16_packtype) = 16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsize(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I32_lanetype) = $size(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I64_lanetype) = $size(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F32_lanetype) = $size(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F64_lanetype) = $size(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I8_lanetype) = $psize(I8_packtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I16_lanetype) = $psize(I16_packtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_zsize_before_fun_zsize_case_7: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_6: + `%`(I16_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_5: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_4: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_0: + `%`(I32_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_zsize: `%%`(storagetype, nat?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_0: + `%%`(I32_storagetype, ?($size(I32_numtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_1: + `%%`(I64_storagetype, ?($size(I64_numtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_2: + `%%`(F32_storagetype, ?($size(F32_numtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_3: + `%%`(F64_storagetype, ?($size(F64_numtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_4: + `%%`(V128_storagetype, ?($vsize(V128_vectype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_5: + `%%`(I8_storagetype, ?($psize(I8_packtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_6: + `%%`(I16_storagetype, ?($psize(I16_packtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_7{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_zsize_before_fun_zsize_case_7: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $isize(Inn : Inn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $isize{Inn : addrtype}(Inn) = $size($numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsize(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsize{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $fsize(Fnn : Fnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $fsize{Fnn : Fnn}(Fnn) = $size($numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_inv_isize_before_fun_inv_isize_case_2: `%`(nat) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_isize_case_1: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_isize_case_0: + `%`(32) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_inv_isize: `%%`(nat, Inn?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_isize_case_0: + `%%`(32, ?(I32_Inn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_isize_case_1: + `%%`(64, ?(I64_Inn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_isize_case_2{x0 : nat}: + `%%`(x0, ?()) + -- ~ fun_inv_isize_before_fun_inv_isize_case_2: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_inv_jsize: `%%`(nat, Jnn?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_jsize_case_0: + `%%`(8, ?(I8_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_jsize_case_1: + `%%`(16, ?(I16_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_jsize_case_2{n : nat, var_0 : Inn?}: + `%%`(n, $Jnn_addrtype(iter_val#1)?{iter_val#1 <- var_0}) + -- fun_inv_isize: `%%`(n, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_inv_fsize_before_fun_inv_fsize_case_2: `%`(nat) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_1: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_0: + `%`(32) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_inv_fsize: `%%`(nat, Fnn?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_0: + `%%`(32, ?(F32_Fnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_1: + `%%`(64, ?(F64_Fnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_2{x0 : nat}: + `%%`(x0, ?()) + -- ~ fun_inv_fsize_before_fun_inv_fsize_case_2: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn1(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn1{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn2(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn2{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsizenn(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsizenn{vt : vectype}(vt) = $vsize(vt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psizenn(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psizenn{pt : packtype}(pt) = $psize(pt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn1(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn2(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsizenn(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsizenn{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_inv_jsizenn: `%%`(nat, Jnn?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_jsizenn_case_0{n : nat, var_0 : Jnn?}: + `%%`(n, var_0) + -- fun_inv_jsize: `%%`(n, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lunpack(lanetype : lanetype) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I32_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I64_lanetype) = I64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F32_lanetype) = F32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F64_lanetype) = F64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I8_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I16_lanetype) = I32_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_unpack: `%%`(storagetype, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_0: + `%%`(BOT_storagetype, BOT_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_1{`null?` : null?, heaptype : heaptype}: + `%%`(REF_storagetype(`null?`, heaptype), REF_valtype(`null?`, heaptype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_2: + `%%`(V128_storagetype, V128_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_3: + `%%`(F64_storagetype, F64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_4: + `%%`(F32_storagetype, F32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_5: + `%%`(I64_storagetype, I64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_6: + `%%`(I32_storagetype, I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_7: + `%%`(I8_storagetype, I32_valtype) + -- wf_valtype: `%`(I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_8: + `%%`(I16_storagetype, I32_valtype) + -- wf_valtype: `%`(I32_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_nunpack_before_fun_nunpack_case_6: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_5: + `%`(I16_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_4: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_0: + `%`(I32_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_nunpack: `%%`(storagetype, numtype?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_0: + `%%`(I32_storagetype, ?(I32_numtype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_1: + `%%`(I64_storagetype, ?(I64_numtype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_2: + `%%`(F32_storagetype, ?(F32_numtype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_3: + `%%`(F64_storagetype, ?(F64_numtype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_4: + `%%`(I8_storagetype, ?(I32_numtype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_5: + `%%`(I16_storagetype, ?(I32_numtype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_6{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_nunpack_before_fun_nunpack_case_6: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_vunpack_before_fun_vunpack_case_1: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_vunpack_case_0: + `%`(V128_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_vunpack: `%%`(storagetype, vectype?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_vunpack_case_0: + `%%`(V128_storagetype, ?(V128_vectype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_vunpack_case_1{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_vunpack_before_fun_vunpack_case_1: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_cunpack_before_fun_cunpack_case_13: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_12: + `%`(I16_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_11: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_10: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_9: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_8: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_7: + `%`(I32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_6: + `%`(I16_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_5: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_4: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_0: + `%`(I32_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_cunpack: `%%`(storagetype, consttype?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_0: + `%%`(I32_storagetype, ?(I32_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_1: + `%%`(I64_storagetype, ?(I64_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_2: + `%%`(F32_storagetype, ?(F32_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_3: + `%%`(F64_storagetype, ?(F64_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_4: + `%%`(V128_storagetype, ?(V128_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_5: + `%%`(I8_storagetype, ?(I32_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_6: + `%%`(I16_storagetype, ?(I32_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_7: + `%%`(I32_storagetype, ?($consttype_numtype($lunpack(I32_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_8: + `%%`(I64_storagetype, ?($consttype_numtype($lunpack(I64_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_9: + `%%`(F32_storagetype, ?($consttype_numtype($lunpack(F32_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_10: + `%%`(F64_storagetype, ?($consttype_numtype($lunpack(F64_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_11: + `%%`(I8_storagetype, ?($consttype_numtype($lunpack(I8_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_12: + `%%`(I16_storagetype, ?($consttype_numtype($lunpack(I16_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_13{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_cunpack_before_fun_cunpack_case_13: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size($numtype_addrtype(at_1)) <= $size($numtype_addrtype(at_2))) then at_1 else at_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_diffrt: `%%%`(reftype, reftype, reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_diffrt_case_0{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1#1?{null_1#1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2), REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_diffrt_case_1{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1#2?{null_1#2 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2), REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) + -- wf_reftype: `%`(REF_reftype(null_1#3?{null_1#3 <- `null_1?`}, ht_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_as_deftype_before_fun_as_deftype_case_1: `%`(typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_as_deftype_case_0{rectype : rectype, n : n}: + `%`(_DEF_typeuse(rectype, n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_as_deftype: `%%`(typeuse, deftype?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_as_deftype_case_0{rectype : rectype, n : n}: + `%%`(_DEF_typeuse(rectype, n), ?(_DEF_deftype(rectype, n))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_as_deftype_case_1{x0 : typeuse}: + `%%`(x0, ?()) + -- ~ fun_as_deftype_before_fun_as_deftype_case_1: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +def $tagsxt(externtype*) : tagtype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + def $tagsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt#1*{xt#1 <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#2*{xt#2 <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +def $globalsxt(externtype*) : globaltype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + def $globalsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt#3*{xt#3 <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#4*{xt#4 <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +def $memsxt(externtype*) : memtype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + def $memsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt#5*{xt#5 <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#6*{xt#6 <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +def $tablesxt(externtype*) : tabletype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + def $tablesxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt#7*{xt#7 <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#8*{xt#8 <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +def $funcsxt(externtype*) : deftype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + def $funcsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + def $funcsxt{rectype : rectype, n : n, `xt*` : externtype*}([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt#9*{xt#9 <- `xt*`}) = [_DEF_deftype(rectype, n)] ++ $funcsxt(xt#10*{xt#10 <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 + def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#11*{xt#11 <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_typevar_before_fun_subst_typevar_case_2: `%%%`(typevar, typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_typevar_case_1{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*, var_0 : typeuse?}: + `%%%`(tv, [tv_1] ++ tv'#1*{tv'#1 <- `tv'*`}, [tu_1] ++ tu'#1*{tu'#1 <- `tu'*`}) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%`(tv, [], []) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation fun_subst_typevar: `%%%%`(typevar, typevar*, typeuse*, typeuse?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%%`(tv, [], [], ?($typeuse_typevar(tv))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_1{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*, var_0 : typeuse?}: + `%%%%`(tv, [tv_1] ++ tv'#1*{tv'#1 <- `tv'*`}, [tu_1] ++ tu'#1*{tu'#1 <- `tu'*`}, (if (tv = tv_1) then tu_1 else iter_val#2)?{iter_val#2 <- var_0}) + -- fun_subst_typevar: `%%%%`(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_2{x0 : typevar, x1 : typevar*, x2 : typeuse*}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_subst_typevar_before_fun_subst_typevar_case_2: `%%%`(x0, x1, x2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation fun_minus_recs_before_fun_minus_recs_case_3: `%%`(typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}) + -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) + -- (wf_typevar: `%`(tv'#2))*{tv'#2 <- `tv'*`} + -- (wf_typeuse: `%`(tu'#2))*{tu'#2 <- `tu'*`} + -- wf_typevar: `%`(_IDX_typevar(x)) + -- if (var_0 =/= ?()) + -- if ((tv'#3*{tv'#3 <- `tv'*`}, tu'#3*{tu'#3 <- `tu'*`}) = !(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%`([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_0: + `%%`([], []) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_0: + `%%%`([], [], ?(([], []))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%%`([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}, var_0) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}, ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}))) + -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) + -- (wf_typevar: `%`(tv'#2))*{tv'#2 <- `tv'*`} + -- (wf_typeuse: `%`(tu'#2))*{tu'#2 <- `tu'*`} + -- wf_typevar: `%`(_IDX_typevar(x)) + -- if (var_0 =/= ?()) + -- if ((tv'#3*{tv'#3 <- `tv'*`}, tu'#3*{tu'#3 <- `tu'*`}) = !(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_3{x0 : typevar*, x1 : typeuse*}: + `%%%`(x0, x1, ?()) + -- ~ fun_minus_recs_before_fun_minus_recs_case_3: `%%`(x0, x1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv#4*{tv#4 <- `tv*`}, tu#4*{tu#4 <- `tu*`}) = pt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv#5*{tv#5 <- `tv*`}, tu#5*{tu#5 <- `tu*`}) = nt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv#6*{tv#6 <- `tv*`}, tu#6*{tu#6 <- `tu*`}) = vt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation fun_subst_typeuse: `%%%%`(typeuse, typevar*, typeuse*, typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(REC_typeuse(n), tv#7*{tv#7 <- `tv*`}, tu#7*{tu#7 <- `tu*`}, !(var_0)) + -- if (var_0 =/= ?()) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv#8*{tv#8 <- `tv*`}, tu#8*{tu#8 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(_IDX_typeuse(typeidx), tv#9*{tv#9 <- `tv*`}, tu#9*{tu#9 <- `tu*`}, !(var_0)) + -- if (var_0 =/= ?()) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv#10*{tv#10 <- `tv*`}, tu#10*{tu#10 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_typeuse(rectype, n), tv#11*{tv#11 <- `tv*`}, tu#11*{tu#11 <- `tu*`}, $typeuse_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv#12*{tv#12 <- `tv*`}, tu#12*{tu#12 <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation fun_subst_heaptype: `%%%%`(heaptype, typevar*, typeuse*, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(REC_heaptype(n), tv#13*{tv#13 <- `tv*`}, tu#13*{tu#13 <- `tu*`}, $heaptype_typeuse(!(var_0))) + -- if (var_0 =/= ?()) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv#14*{tv#14 <- `tv*`}, tu#14*{tu#14 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(_IDX_heaptype(typeidx), tv#15*{tv#15 <- `tv*`}, tu#15*{tu#15 <- `tu*`}, $heaptype_typeuse(!(var_0))) + -- if (var_0 =/= ?()) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv#16*{tv#16 <- `tv*`}, tu#16*{tu#16 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_heaptype(rectype, n), tv#17*{tv#17 <- `tv*`}, tu#17*{tu#17 <- `tu*`}, $heaptype_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv#18*{tv#18 <- `tv*`}, tu#18*{tu#18 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_3{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(ht, tv#19*{tv#19 <- `tv*`}, tu#19*{tu#19 <- `tu*`}, ht) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule fun_subst_reftype_case_0{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : heaptype, var_0 : heaptype}: + `%%%%`(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`}, REF_reftype(null?{null <- `null?`}, var_0)) + -- fun_subst_heaptype: `%%%%`(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}, var_1) + -- fun_subst_heaptype: `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_reftype: `%`(REF_reftype(null#2?{null#2 <- `null?`}, var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation fun_subst_valtype: `%%%%`(valtype, typevar*, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_0{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I32_valtype, tv#22*{tv#22 <- `tv*`}, tu#22*{tu#22 <- `tu*`}, $valtype_numtype($subst_numtype(I32_numtype, tv#23*{tv#23 <- `tv*`}, tu#23*{tu#23 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_1{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I64_valtype, tv#24*{tv#24 <- `tv*`}, tu#24*{tu#24 <- `tu*`}, $valtype_numtype($subst_numtype(I64_numtype, tv#25*{tv#25 <- `tv*`}, tu#25*{tu#25 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_2{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F32_valtype, tv#26*{tv#26 <- `tv*`}, tu#26*{tu#26 <- `tu*`}, $valtype_numtype($subst_numtype(F32_numtype, tv#27*{tv#27 <- `tv*`}, tu#27*{tu#27 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_3{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F64_valtype, tv#28*{tv#28 <- `tv*`}, tu#28*{tu#28 <- `tu*`}, $valtype_numtype($subst_numtype(F64_numtype, tv#29*{tv#29 <- `tv*`}, tu#29*{tu#29 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_4{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(V128_valtype, tv#30*{tv#30 <- `tv*`}, tu#30*{tu#30 <- `tu*`}, $valtype_vectype($subst_vectype(V128_vectype, tv#31*{tv#31 <- `tv*`}, tu#31*{tu#31 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_5{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : reftype}: + `%%%%`(REF_valtype(`null?`, heaptype), tv#32*{tv#32 <- `tv*`}, tu#32*{tu#32 <- `tu*`}, $valtype_reftype(var_0)) + -- fun_subst_reftype: `%%%%`(REF_reftype(`null?`, heaptype), tv#33*{tv#33 <- `tv*`}, tu#33*{tu#33 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_6{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(BOT_valtype, tv#34*{tv#34 <- `tv*`}, tu#34*{tu#34 <- `tu*`}, BOT_valtype) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation fun_subst_storagetype: `%%%%`(storagetype, typevar*, typeuse*, storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_0{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(BOT_storagetype, tv#35*{tv#35 <- `tv*`}, tu#35*{tu#35 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(BOT_valtype, tv#36*{tv#36 <- `tv*`}, tu#36*{tu#36 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_1{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(REF_storagetype(`null?`, heaptype), tv#37*{tv#37 <- `tv*`}, tu#37*{tu#37 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(REF_valtype(`null?`, heaptype), tv#38*{tv#38 <- `tv*`}, tu#38*{tu#38 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_2{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(V128_storagetype, tv#39*{tv#39 <- `tv*`}, tu#39*{tu#39 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(V128_valtype, tv#40*{tv#40 <- `tv*`}, tu#40*{tu#40 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_3{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F64_storagetype, tv#41*{tv#41 <- `tv*`}, tu#41*{tu#41 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F64_valtype, tv#42*{tv#42 <- `tv*`}, tu#42*{tu#42 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_4{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F32_storagetype, tv#43*{tv#43 <- `tv*`}, tu#43*{tu#43 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F32_valtype, tv#44*{tv#44 <- `tv*`}, tu#44*{tu#44 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_5{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I64_storagetype, tv#45*{tv#45 <- `tv*`}, tu#45*{tu#45 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I64_valtype, tv#46*{tv#46 <- `tv*`}, tu#46*{tu#46 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_6{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I32_storagetype, tv#47*{tv#47 <- `tv*`}, tu#47*{tu#47 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I32_valtype, tv#48*{tv#48 <- `tv*`}, tu#48*{tu#48 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_7{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I8_storagetype, tv#49*{tv#49 <- `tv*`}, tu#49*{tu#49 <- `tu*`}, $storagetype_packtype($subst_packtype(I8_packtype, tv#50*{tv#50 <- `tv*`}, tu#50*{tu#50 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_8{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I16_storagetype, tv#51*{tv#51 <- `tv*`}, tu#51*{tu#51 <- `tu*`}, $storagetype_packtype($subst_packtype(I16_packtype, tv#52*{tv#52 <- `tv*`}, tu#52*{tu#52 <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation fun_subst_fieldtype: `%%%%`(fieldtype, typevar*, typeuse*, fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule fun_subst_fieldtype_case_0{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : storagetype, var_0 : storagetype}: + `%%%%`(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`}, `%%`_fieldtype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_storagetype: `%%%%`(zt, tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}, var_1) + -- fun_subst_storagetype: `%%%%`(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut#2?{mut#2 <- `mut?`}, var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_0{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : fieldtype*, `var_0*` : fieldtype*}: + `%%%%`(STRUCT_comptype(`%`_list(ft#1*{ft#1 <- `ft*`})), tv#55*{tv#55 <- `tv*`}, tu#55*{tu#55 <- `tu*`}, STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- if (|`var_1*`| = |`ft*`|) + -- (fun_subst_fieldtype: `%%%%`(ft#2, tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`}, var_1))*{var_1 <- `var_1*`, ft#2 <- `ft*`} + -- if (|`var_0*`| = |`ft*`|) + -- (fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, ft <- `ft*`} + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_1*{var_1 <- `var_1*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_1{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : fieldtype, var_0 : fieldtype}: + `%%%%`(ARRAY_comptype(ft), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}, ARRAY_comptype(var_0)) + -- fun_subst_fieldtype: `%%%%`(ft, tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}, var_1) + -- fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_comptype: `%`(ARRAY_comptype(var_1)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_2{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_3*` : valtype*, `var_2*` : valtype*, `var_1*` : valtype*, `var_0*` : valtype*}: + `%%%%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}, `FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + -- if (|`var_3*`| = |`t_2*`|) + -- (fun_subst_valtype: `%%%%`(t_2#2, tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`}, var_3))*{var_3 <- `var_3*`, t_2#2 <- `t_2*`} + -- if (|`var_2*`| = |`t_1*`|) + -- (fun_subst_valtype: `%%%%`(t_1#2, tv#60*{tv#60 <- `tv*`}, tu#60*{tu#60 <- `tu*`}, var_2))*{var_2 <- `var_2*`, t_1#2 <- `t_1*`} + -- if (|`var_1*`| = |`t_2*`|) + -- (fun_subst_valtype: `%%%%`(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, t_2 <- `t_2*`} + -- if (|`var_0*`| = |`t_1*`|) + -- (fun_subst_valtype: `%%%%`(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, t_1 <- `t_1*`} + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_2*{var_2 <- `var_2*`}), `%`_resulttype(var_3*{var_3 <- `var_3*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule fun_subst_subtype_case_0{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, var_3 : comptype, `var_2*` : typeuse*, var_1 : comptype, `var_0*` : typeuse*}: + `%%%%`(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#4*{tu'#4 <- `tu'*`}, ct), tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`}, SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) + -- fun_subst_comptype: `%%%%`(ct, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}, var_3) + -- if (|`var_2*`| = |`tu'*`|) + -- (fun_subst_typeuse: `%%%%`(tu'#5, tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`}, var_2))*{var_2 <- `var_2*`, tu'#5 <- `tu'*`} + -- fun_subst_comptype: `%%%%`(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- if (|`var_0*`| = |`tu'*`|) + -- (fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, tu' <- `tu'*`} + -- wf_subtype: `%`(SUB_subtype(final#2?{final#2 <- `final?`}, var_2*{var_2 <- `var_2*`}, var_3)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 +relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 + rule fun_subst_rectype_case_0{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_1 : (typevar*, typeuse*)?, `var_0*` : subtype*}: + `%%%%`(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}, REC_rectype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- fun_minus_recs: `%%%`(tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}, var_1) + -- if (|`var_0*`| = |`st*`|) + -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} + -- (wf_typevar: `%`(tv'#4))*{tv'#4 <- `tv'*`} + -- (wf_typeuse: `%`(tu'#6))*{tu'#6 <- `tu'*`} + -- if (var_1 =/= ?()) + -- if ((tv'#5*{tv'#5 <- `tv'*`}, tu'#7*{tu'#7 <- `tu'*`}) = !(var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 +relation fun_subst_deftype: `%%%%`(deftype, typevar*, typeuse*, deftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 + rule fun_subst_deftype_case_0{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*, var_0 : rectype}: + `%%%%`(_DEF_deftype(qt, i), tv#67*{tv#67 <- `tv*`}, tu#67*{tu#67 <- `tu*`}, _DEF_deftype(var_0, i)) + -- fun_subst_rectype: `%%%%`(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv#68*{tv#68 <- `tv*`}, tu#68*{tu#68 <- `tu*`}) = at + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_tagtype: `%%%%`(tagtype, typevar*, typeuse*, tagtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_tagtype_case_0{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tagtype}: + `%%%%`(tu', tv#69*{tv#69 <- `tv*`}, tu#69*{tu#69 <- `tu*`}, var_0) + -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_globaltype: `%%%%`(globaltype, typevar*, typeuse*, globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_globaltype_case_0{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : valtype, var_0 : valtype}: + `%%%%`(`%%`_globaltype(mut#3?{mut#3 <- `mut?`}, t), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}, `%%`_globaltype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_valtype: `%%%%`(t, tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}, var_1) + -- fun_subst_valtype: `%%%%`(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_globaltype: `%`(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_memtype: `%%%%`(memtype, typevar*, typeuse*, memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_memtype_case_0{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(`%%PAGE`_memtype(at, lim), tv#72*{tv#72 <- `tv*`}, tu#72*{tu#72 <- `tu*`}, `%%PAGE`_memtype(at, lim)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_tabletype: `%%%%`(tabletype, typevar*, typeuse*, tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_tabletype_case_0{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : reftype, var_0 : reftype}: + `%%%%`(`%%%`_tabletype(at, lim, rt), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}, `%%%`_tabletype(at, lim, var_0)) + -- fun_subst_reftype: `%%%%`(rt, tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}, var_1) + -- fun_subst_reftype: `%%%%`(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_externtype: `%%%%`(externtype, typevar*, typeuse*, externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_0{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_1 : tagtype, var_0 : tagtype}: + `%%%%`(TAG_externtype(jt), tv#75*{tv#75 <- `tv*`}, tu#75*{tu#75 <- `tu*`}, TAG_externtype(var_0)) + -- fun_subst_tagtype: `%%%%`(jt, tv#76*{tv#76 <- `tv*`}, tu#76*{tu#76 <- `tu*`}, var_1) + -- fun_subst_tagtype: `%%%%`(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(TAG_externtype(var_1)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_1{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : globaltype, var_0 : globaltype}: + `%%%%`(GLOBAL_externtype(gt), tv#77*{tv#77 <- `tv*`}, tu#77*{tu#77 <- `tu*`}, GLOBAL_externtype(var_0)) + -- fun_subst_globaltype: `%%%%`(gt, tv#78*{tv#78 <- `tv*`}, tu#78*{tu#78 <- `tu*`}, var_1) + -- fun_subst_globaltype: `%%%%`(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(GLOBAL_externtype(var_1)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_2{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : tabletype, var_0 : tabletype}: + `%%%%`(TABLE_externtype(tt), tv#79*{tv#79 <- `tv*`}, tu#79*{tu#79 <- `tu*`}, TABLE_externtype(var_0)) + -- fun_subst_tabletype: `%%%%`(tt, tv#80*{tv#80 <- `tv*`}, tu#80*{tu#80 <- `tu*`}, var_1) + -- fun_subst_tabletype: `%%%%`(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(TABLE_externtype(var_1)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_3{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : memtype, var_0 : memtype}: + `%%%%`(MEM_externtype(mt), tv#81*{tv#81 <- `tv*`}, tu#81*{tu#81 <- `tu*`}, MEM_externtype(var_0)) + -- fun_subst_memtype: `%%%%`(mt, tv#82*{tv#82 <- `tv*`}, tu#82*{tu#82 <- `tu*`}, var_1) + -- fun_subst_memtype: `%%%%`(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(MEM_externtype(var_1)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_4{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_1 : typeuse, var_0 : typeuse}: + `%%%%`(FUNC_externtype(tu'), tv#83*{tv#83 <- `tv*`}, tu#83*{tu#83 <- `tu*`}, FUNC_externtype(var_0)) + -- fun_subst_typeuse: `%%%%`(tu', tv#84*{tv#84 <- `tv*`}, tu#84*{tu#84 <- `tu*`}, var_1) + -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(FUNC_externtype(var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_moduletype_case_0{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_3*` : externtype*, `var_2*` : externtype*, `var_1*` : externtype*, `var_0*` : externtype*}: + `%%%%`(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#85*{tv#85 <- `tv*`}, tu#85*{tu#85 <- `tu*`}, `%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) + -- if (|`var_3*`| = |`xt_2*`|) + -- (fun_subst_externtype: `%%%%`(xt_2#2, tv#87*{tv#87 <- `tv*`}, tu#87*{tu#87 <- `tu*`}, var_3))*{var_3 <- `var_3*`, xt_2#2 <- `xt_2*`} + -- if (|`var_2*`| = |`xt_1*`|) + -- (fun_subst_externtype: `%%%%`(xt_1#2, tv#86*{tv#86 <- `tv*`}, tu#86*{tu#86 <- `tu*`}, var_2))*{var_2 <- `var_2*`, xt_1#2 <- `xt_1*`} + -- if (|`var_1*`| = |`xt_2*`|) + -- (fun_subst_externtype: `%%%%`(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, xt_2 <- `xt_2*`} + -- if (|`var_0*`| = |`xt_1*`|) + -- (fun_subst_externtype: `%%%%`(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, xt_1 <- `xt_1*`} + -- wf_moduletype: `%`(`%->%`_moduletype(var_2*{var_2 <- `var_2*`}, var_3*{var_3 <- `var_3*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_all_valtype: `%%%`(valtype, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_all_valtype_case_0{t : valtype, n : nat, `tu*` : typeuse*, i : nat, var_0 : valtype}: + `%%%`(t, tu#88^n{tu#88 <- `tu*`}, var_0) + -- fun_subst_valtype: `%%%%`(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2), var_0 +++ var_1) + -- fun_free_resulttype: `%%`(resulttype_2, var_1) + -- fun_free_resulttype: `%%`(resulttype_1, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 +relation fun_free_subtype: `%%`(subtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 + rule fun_free_subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(SUB_subtype(final#3?{final#3 <- `final?`}, typeuse#1*{typeuse#1 <- `typeuse*`}, comptype), var_0 +++ var_2) + -- fun_free_comptype: `%%`(comptype, var_2) + -- if (|`var_1*`| = |`typeuse*`|) + -- (fun_free_typeuse: `%%`(typeuse, var_1))*{var_1 <- `var_1*`, typeuse <- `typeuse*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 +relation fun_free_rectype: `%%`(rectype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 + rule fun_free_rectype_case_0{`subtype*` : subtype*, `var_1*` : free*, var_0 : free}: + `%%`(REC_rectype(`%`_list(subtype#9*{subtype#9 <- `subtype*`})), var_0) + -- if (|`var_1*`| = |`subtype*`|) + -- (fun_free_subtype: `%%`(subtype, var_1))*{var_1 <- `var_1*`, subtype <- `subtype*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 +relation fun_free_deftype: `%%`(deftype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 + rule fun_free_deftype_case_0{rectype : rectype, n : nat, var_0 : free}: + `%%`(_DEF_deftype(rectype, n), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_tagtype: `%%`(tagtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_tagtype_case_0{rectype : rectype, n : n, var_0 : free}: + `%%`(_DEF_tagtype(rectype, n), var_0) + -- fun_free_deftype: `%%`(_DEF_deftype(rectype, n), var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_globaltype: `%%`(globaltype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_globaltype_case_0{`mut?` : mut?, valtype : valtype, var_0 : free}: + `%%`(`%%`_globaltype(mut#6?{mut#6 <- `mut?`}, valtype), var_0) + -- fun_free_valtype: `%%`(valtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_memtype: `%%`(memtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_memtype_case_0{addrtype : addrtype, limits : limits, var_0 : free}: + `%%`(`%%PAGE`_memtype(addrtype, limits), var_0) + -- fun_free_addrtype: `%%`(addrtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_tabletype: `%%`(tabletype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype, var_1 : free, var_0 : free}: + `%%`(`%%%`_tabletype(addrtype, limits, reftype), var_0 +++ var_1) + -- fun_free_reftype: `%%`(reftype, var_1) + -- fun_free_addrtype: `%%`(addrtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_datatype: `%%`(datatype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_datatype_case_0: + `%%`(OK_datatype, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_elemtype: `%%`(elemtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_elemtype_case_0{reftype : reftype, var_0 : free}: + `%%`(reftype, var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_externtype: `%%`(externtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_externtype(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_1{globaltype : globaltype, var_0 : free}: + `%%`(GLOBAL_externtype(globaltype), var_0) + -- fun_free_globaltype: `%%`(globaltype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_2{memtype : memtype, var_0 : free}: + `%%`(MEM_externtype(memtype), var_0) + -- fun_free_memtype: `%%`(memtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_3{tabletype : tabletype, var_0 : free}: + `%%`(TABLE_externtype(tabletype), var_0) + -- fun_free_tabletype: `%%`(tabletype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_4{typeuse : typeuse, var_0 : free}: + `%%`(FUNC_externtype(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_moduletype: `%%`(moduletype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_moduletype_case_0{`externtype_1*` : externtype*, `externtype_2*` : externtype*, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(`%->%`_moduletype(externtype_1#1*{externtype_1#1 <- `externtype_1*`}, externtype_2#1*{externtype_2#1 <- `externtype_2*`}), var_0 +++ var_2) + -- if (|`var_3*`| = |`externtype_2*`|) + -- (fun_free_externtype: `%%`(externtype_2, var_3))*{var_3 <- `var_3*`, externtype_2 <- `externtype_2*`} + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- if (|`var_1*`| = |`externtype_1*`|) + -- (fun_free_externtype: `%%`(externtype_1, var_1))*{var_1 <- `var_1*`, externtype_1 <- `externtype_1*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax num_ = + | mk_num__0(Inn : Inn, var_x : iN) + | mk_num__1(Fnn : Fnn, var_x : fN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_num_: `%%`(numtype, num_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_0{numtype : numtype, Inn : Inn, var_x : iN}: + `%%`(numtype, mk_num__0_num_(Inn, var_x)) + -- wf_uN: `%%`($size($numtype_addrtype(Inn)), var_x) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_1{numtype : numtype, Fnn : Fnn, var_x : fN}: + `%%`(numtype, mk_num__1_num_(Fnn, var_x)) + -- wf_fN: `%%`($sizenn($numtype_Fnn(Fnn)), var_x) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__0(var_x : num_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{Inn : Inn, var_x : iN}(mk_num__0_num_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__1(var_x : num_) : fN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{Fnn : Fnn, var_x : fN}(mk_num__1_num_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax pack_ = iN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lane_ = + | mk_lane__0(numtype : numtype, var_x : num_) + | mk_lane__1(packtype : packtype, var_x : pack_) + | mk_lane__2(Jnn : Jnn, var_x : iN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lane_: `%%`(lanetype, lane_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_0{lanetype : lanetype, numtype : numtype, var_x : num_}: + `%%`(lanetype, mk_lane__0_lane_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (lanetype = $lanetype_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_1{lanetype : lanetype, packtype : packtype, var_x : pack_}: + `%%`(lanetype, mk_lane__1_lane_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (lanetype = $lanetype_packtype(packtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_2{lanetype : lanetype, Jnn : Jnn, var_x : iN}: + `%%`(lanetype, mk_lane__2_lane_(Jnn, var_x)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(Jnn)), var_x) + -- if (lanetype = $lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__0(var_x : lane_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{numtype : numtype, var_x : num_}(mk_lane__0_lane_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__1(var_x : lane_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{packtype : packtype, var_x : pack_}(mk_lane__1_lane_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__2(var_x : lane_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{Jnn : Jnn, var_x : iN}(mk_lane__2_lane_(Jnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vec_ = vN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lit_ = + | mk_lit__0(numtype : numtype, var_x : num_) + | mk_lit__1(vectype : vectype, var_x : vec_) + | mk_lit__2(packtype : packtype, var_x : pack_) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lit_: `%%`(storagetype, lit_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_0{storagetype : storagetype, numtype : numtype, var_x : num_}: + `%%`(storagetype, mk_lit__0_lit_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (storagetype = $storagetype_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_1{storagetype : storagetype, vectype : vectype, var_x : vec_}: + `%%`(storagetype, mk_lit__1_lit_(vectype, var_x)) + -- wf_uN: `%%`($vsize(vectype), var_x) + -- if (storagetype = $storagetype_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_2{storagetype : storagetype, packtype : packtype, var_x : pack_}: + `%%`(storagetype, mk_lit__2_lit_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (storagetype = $storagetype_packtype(packtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__0(var_x : lit_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{numtype : numtype, var_x : num_}(mk_lit__0_lit_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__1(var_x : lit_) : vec_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{vectype : vectype, var_x : vec_}(mk_lit__1_lit_(vectype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__2(var_x : lit_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{packtype : packtype, var_x : pack_}(mk_lit__2_lit_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sz = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_sz_0(x : sz) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_sz_0{v_num_0 : nat}(`%`_sz(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_sz: `%`(sz) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule sz_case_0{i : nat}: + `%`(`%`_sz(i)) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sx = + | U + | S + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Inn = + | CLZ + | CTZ + | POPCNT + | EXTEND(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_Inn: `%%`(Inn, unop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_0{Inn : Inn}: + `%%`(Inn, CLZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_1{Inn : Inn}: + `%%`(Inn, CTZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_2{Inn : Inn}: + `%%`(Inn, POPCNT_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_3{Inn : Inn, sz : sz}: + `%%`(Inn, EXTEND_unop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Fnn = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_ = + | mk_unop__0(Inn : Inn, var_x : unop_Inn) + | mk_unop__1(Fnn : Fnn, var_x : unop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_: `%%`(numtype, unop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_0{numtype : numtype, Inn : Inn, var_x : unop_Inn}: + `%%`(numtype, mk_unop__0_unop_(Inn, var_x)) + -- wf_unop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_1{numtype : numtype, Fnn : Fnn, var_x : unop_Fnn}: + `%%`(numtype, mk_unop__1_unop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__0(var_x : unop_) : unop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{Inn : Inn, var_x : unop_Inn}(mk_unop__0_unop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__1(var_x : unop_) : unop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{Fnn : Fnn, var_x : unop_Fnn}(mk_unop__1_unop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Inn = + | ADD + | SUB + | MUL + | DIV(sx : sx) + | REM(sx : sx) + | AND + | OR + | XOR + | SHL + | SHR(sx : sx) + | ROTL + | ROTR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Fnn = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | COPYSIGN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_ = + | mk_binop__0(Inn : Inn, var_x : binop_Inn) + | mk_binop__1(Fnn : Fnn, var_x : binop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_binop_: `%%`(numtype, binop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_0{numtype : numtype, Inn : Inn, var_x : binop_Inn}: + `%%`(numtype, mk_binop__0_binop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_1{numtype : numtype, Fnn : Fnn, var_x : binop_Fnn}: + `%%`(numtype, mk_binop__1_binop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__0(var_x : binop_) : binop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{Inn : Inn, var_x : binop_Inn}(mk_binop__0_binop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__1(var_x : binop_) : binop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{Fnn : Fnn, var_x : binop_Fnn}(mk_binop__1_binop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_Inn = + | EQZ + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_ = + | mk_testop__0(Inn : Inn, var_x : testop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_testop_: `%%`(numtype, testop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule testop__case_0{numtype : numtype, Inn : Inn, var_x : testop_Inn}: + `%%`(numtype, mk_testop__0_testop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_testop__0(var_x : testop_) : testop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_testop__0{Inn : Inn, var_x : testop_Inn}(mk_testop__0_testop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Inn = + | EQ + | NE + | LT(sx : sx) + | GT(sx : sx) + | LE(sx : sx) + | GE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Fnn = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_ = + | mk_relop__0(Inn : Inn, var_x : relop_Inn) + | mk_relop__1(Fnn : Fnn, var_x : relop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_relop_: `%%`(numtype, relop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_0{numtype : numtype, Inn : Inn, var_x : relop_Inn}: + `%%`(numtype, mk_relop__0_relop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_1{numtype : numtype, Fnn : Fnn, var_x : relop_Fnn}: + `%%`(numtype, mk_relop__1_relop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__0(var_x : relop_) : relop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{Inn : Inn, var_x : relop_Inn}(mk_relop__0_relop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__1(var_x : relop_) : relop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{Fnn : Fnn, var_x : relop_Fnn}(mk_relop__1_relop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Inn_2 = + | EXTEND(sx : sx) + | WRAP + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Inn_2: `%%%`(Inn, Inn, cvtop__Inn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_0{Inn_1 : Inn, Inn_2 : Inn, sx : sx}: + `%%%`(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)) + -- if ($sizenn1($numtype_addrtype(Inn_1)) < $sizenn2($numtype_addrtype(Inn_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_1{Inn_1 : Inn, Inn_2 : Inn}: + `%%%`(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2) + -- if ($sizenn1($numtype_addrtype(Inn_1)) > $sizenn2($numtype_addrtype(Inn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Fnn_2 = + | CONVERT(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn, Fnn, cvtop__Inn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_0{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx}: + `%%%`(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_1{Inn_1 : Inn, Fnn_2 : Fnn}: + `%%%`(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2) + -- if ($sizenn1($numtype_addrtype(Inn_1)) = $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Inn_2 = + | TRUNC(sx : sx) + | TRUNC_SAT(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn, Inn, cvtop__Fnn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_0{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_1{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_2{Fnn_1 : Fnn, Inn_2 : Inn}: + `%%%`(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = $sizenn2($numtype_addrtype(Inn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Fnn_2 = + | PROMOTE + | DEMOTE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn, Fnn, cvtop__Fnn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_0{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) < $sizenn2($numtype_Fnn(Fnn_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_1{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) > $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__ = + | mk_cvtop___0(Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2) + | mk_cvtop___1(Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2) + | mk_cvtop___2(Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2) + | mk_cvtop___3(Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__: `%%%`(numtype, numtype, cvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_0{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) + -- wf_cvtop__Inn_1_Inn_2: `%%%`(Inn_1, Inn_2, var_x) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_1{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) + -- wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn_1, Fnn_2, var_x) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_2{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) + -- wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn_1, Inn_2, var_x) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_3{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) + -- wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn_1, Fnn_2, var_x) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___0(var_x : cvtop__) : cvtop__Inn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___1(var_x : cvtop__) : cvtop__Inn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___2(var_x : cvtop__) : cvtop__Fnn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___3(var_x : cvtop__) : cvtop__Fnn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax dim = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_dim_0(x : dim) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_dim_0{v_num_0 : nat}(`%`_dim(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_dim: `%`(dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_case_0{i : nat}: + `%`(`%`_dim(i)) + -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax shape = + | `%X%`(lanetype : lanetype, dim : dim) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_shape: `%`(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule shape_case_0{lanetype : lanetype, dim : dim}: + `%`(`%X%`_shape(lanetype, dim)) + -- wf_dim: `%`(dim) + -- if (($lsize(lanetype) * $proj_dim_0(dim).0) = 128) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_dim: `%%`(shape, dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_dim_case_0{Lnn : lanetype, N : nat}: + `%%`(`%X%`_shape(Lnn, `%`_dim(N)), `%`_dim(N)) + -- wf_dim: `%`(`%`_dim(N)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $lanetype(shape : shape) : lanetype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $lanetype{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $unpackshape(shape : shape) : numtype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $unpackshape{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax ishape = + | `%`(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_ishape_0(x : ishape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_ishape_0{v_shape_0 : shape}(`%`_ishape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_ishape: `%`(ishape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule ishape_case_0{Jnn : Jnn, shape : shape}: + `%`(`%`_ishape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = $lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax bshape = + | `%`(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_bshape_0(x : bshape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_bshape_0{v_shape_0 : shape}(`%`_bshape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_bshape: `%`(bshape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule bshape_case_0{shape : shape}: + `%`(`%`_bshape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = I8_lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax zero = + | ZERO + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax half = + | LOW + | HIGH + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvunop = + | NOT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvbinop = + | AND + | ANDNOT + | OR + | XOR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvternop = + | BITSELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvtestop = + | ANY_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Jnn_M = + | ABS + | NEG + | POPCNT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_Jnn_M: `%%%`(Jnn, M, vunop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ABS_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NEG_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_2{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, POPCNT_vunop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 8) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Fnn_M = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_ = + | mk_vunop__0(Jnn : Jnn, M : M, var_x : vunop_Jnn_M) + | mk_vunop__1(Fnn : Fnn, M : M, var_x : vunop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_: `%%`(shape, vunop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vunop_Jnn_M}: + `%%`(shape, mk_vunop__0_vunop_(Jnn, M, var_x)) + -- wf_vunop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vunop_Fnn_M}: + `%%`(shape, mk_vunop__1_vunop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__0(var_x : vunop_) : vunop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{Jnn : Jnn, M : M, var_x : vunop_Jnn_M}(mk_vunop__0_vunop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__1(var_x : vunop_) : vunop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{Fnn : Fnn, M : M, var_x : vunop_Fnn_M}(mk_vunop__1_vunop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Jnn_M = + | ADD + | SUB + | ADD_SAT(sx : sx) + | SUB_SAT(sx : sx) + | MUL + | AVGRU + | Q15MULR_SATS + | RELAXED_Q15MULRS + | MIN(sx : sx) + | MAX(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_Jnn_M: `%%%`(Jnn, M, vbinop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ADD_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, SUB_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_4{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, MUL_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) >= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_5{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, AVGRU_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_6{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, Q15MULR_SATS_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_7{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_8{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MIN_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_9{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MAX_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Fnn_M = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | PMIN + | PMAX + | RELAXED_MIN + | RELAXED_MAX + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_ = + | mk_vbinop__0(Jnn : Jnn, M : M, var_x : vbinop_Jnn_M) + | mk_vbinop__1(Fnn : Fnn, M : M, var_x : vbinop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_: `%%`(shape, vbinop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}: + `%%`(shape, mk_vbinop__0_vbinop_(Jnn, M, var_x)) + -- wf_vbinop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}: + `%%`(shape, mk_vbinop__1_vbinop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__0(var_x : vbinop_) : vbinop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}(mk_vbinop__0_vbinop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__1(var_x : vbinop_) : vbinop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}(mk_vbinop__1_vbinop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Jnn_M = + | RELAXED_LANESELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Fnn_M = + | RELAXED_MADD + | RELAXED_NMADD + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_ = + | mk_vternop__0(Jnn : Jnn, M : M, var_x : vternop_Jnn_M) + | mk_vternop__1(Fnn : Fnn, M : M, var_x : vternop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vternop_: `%%`(shape, vternop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vternop_Jnn_M}: + `%%`(shape, mk_vternop__0_vternop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vternop_Fnn_M}: + `%%`(shape, mk_vternop__1_vternop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__0(var_x : vternop_) : vternop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{Jnn : Jnn, M : M, var_x : vternop_Jnn_M}(mk_vternop__0_vternop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__1(var_x : vternop_) : vternop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{Fnn : Fnn, M : M, var_x : vternop_Fnn_M}(mk_vternop__1_vternop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_Jnn_M = + | ALL_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_ = + | mk_vtestop__0(Jnn : Jnn, M : M, var_x : vtestop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vtestop_: `%%`(shape, vtestop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vtestop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}: + `%%`(shape, mk_vtestop__0_vtestop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vtestop__0(var_x : vtestop_) : vtestop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vtestop__0{Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}(mk_vtestop__0_vtestop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Jnn_M = + | EQ + | NE + | LT(sx : sx) + | GT(sx : sx) + | LE(sx : sx) + | GE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_Jnn_M: `%%%`(Jnn, M, vrelop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, EQ_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NE_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LT_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GT_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_4{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LE_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_5{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GE_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Fnn_M = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_ = + | mk_vrelop__0(Jnn : Jnn, M : M, var_x : vrelop_Jnn_M) + | mk_vrelop__1(Fnn : Fnn, M : M, var_x : vrelop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_: `%%`(shape, vrelop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}: + `%%`(shape, mk_vrelop__0_vrelop_(Jnn, M, var_x)) + -- wf_vrelop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}: + `%%`(shape, mk_vrelop__1_vrelop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__0(var_x : vrelop_) : vrelop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}(mk_vrelop__0_vrelop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__1(var_x : vrelop_) : vrelop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}(mk_vrelop__1_vrelop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_Jnn_M = + | SHL + | SHR(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_ = + | mk_vshiftop__0(Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vshiftop_: `%%`(ishape, vshiftop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vshiftop__case_0{ishape : ishape, Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}: + `%%`(ishape, mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) + -- if (ishape = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vshiftop__0(var_x : vshiftop_) : vshiftop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vshiftop__0{Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}(mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_M = + | SWIZZLE + | RELAXED_SWIZZLE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_ = + | mk_vswizzlop__0(M : M, var_x : vswizzlop_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vswizzlop_: `%%`(bshape, vswizzlop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vswizzlop__case_0{bshape : bshape, M : M, var_x : vswizzlop_M}: + `%%`(bshape, mk_vswizzlop__0_vswizzlop_(M, var_x)) + -- if (bshape = `%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vswizzlop__0(var_x : vswizzlop_) : vswizzlop_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vswizzlop__0{M : M, var_x : vswizzlop_M}(mk_vswizzlop__0_vswizzlop_(M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTADD_PAIRWISE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextunop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)) + -- if ((16 <= (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) <= 32))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__ = + | mk_vextunop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__: `%%%`(ishape, ishape, vextunop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextunop___0(var_x : vextunop__) : vextunop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTMUL(half : half, sx : sx) + | DOTS + | RELAXED_DOTS + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextbinop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) >= 16)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_1{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_2{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__ = + | mk_vextbinop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__: `%%%`(ishape, ishape, vextbinop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextbinop___0(var_x : vextbinop__) : vextbinop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__Jnn_1_M_1_Jnn_2_M_2 = + | RELAXED_DOT_ADDS + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextternop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((4 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__ = + | mk_vextternop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__: `%%%`(ishape, ishape, vextternop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextternop___0(var_x : vextternop__) : vextternop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTEND(half : half, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vcvtop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if ($lsizenn2($lanetype_Jnn(Jnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Fnn_2_M_2 = + | CONVERT(`half?` : half?, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn, M, Fnn, M, vcvtop__Jnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Fnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}: + `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(`half?`, sx)) + -- if (((($sizenn2($numtype_Fnn(Fnn_2)) = $lsizenn1($lanetype_Jnn(Jnn_1))) /\ ($lsizenn1($lanetype_Jnn(Jnn_1)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2($numtype_Fnn(Fnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Jnn_2_M_2 = + | TRUNC_SAT(sx : sx, `zero?` : zero?) + | RELAXED_TRUNC(sx : sx, `zero?` : zero?) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn, M, Jnn, M, vcvtop__Fnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, `zero?`)) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, `zero?`)) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Fnn_2_M_2 = + | DEMOTE(zero : zero) + | PROMOTELOW + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn, M, Fnn, M, vcvtop__Fnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $sizenn2($numtype_Fnn(Fnn_2)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2) + -- if ((2 * $sizenn1($numtype_Fnn(Fnn_1))) = $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__ = + | mk_vcvtop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___1(Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2) + | mk_vcvtop___2(Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___3(Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__: `%%%`(shape, shape, vcvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_0{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_1{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_2{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_3{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___0(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___1(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___2(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___3(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax memarg = +{ + ALIGN u32, + OFFSET u64 +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_memarg: `%`(memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg_case_{var_0 : u32, var_1 : u64}: + `%`({ALIGN var_0, OFFSET var_1}) + -- wf_uN: `%%`(32, var_0) + -- wf_uN: `%%`(64, var_1) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_Inn = + | `%_%`(sz : sz, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_Inn: `%%`(Inn, loadop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop_Inn_case_0{Inn : Inn, sz : sz, sx : sx}: + `%%`(Inn, `%_%`_loadop_Inn(sz, sx)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_ = + | mk_loadop__0(Inn : Inn, var_x : loadop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_: `%%`(numtype, loadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop__case_0{numtype : numtype, Inn : Inn, var_x : loadop_Inn}: + `%%`(numtype, mk_loadop__0_loadop_(Inn, var_x)) + -- wf_loadop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_loadop__0(var_x : loadop_) : loadop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_loadop__0{Inn : Inn, var_x : loadop_Inn}(mk_loadop__0_loadop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_Inn = + | `%`(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_Inn: `%%`(Inn, storeop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop_Inn_case_0{Inn : Inn, sz : sz}: + `%%`(Inn, `%`_storeop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_ = + | mk_storeop__0(Inn : Inn, var_x : storeop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_: `%%`(numtype, storeop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop__case_0{numtype : numtype, Inn : Inn, var_x : storeop_Inn}: + `%%`(numtype, mk_storeop__0_storeop_(Inn, var_x)) + -- wf_storeop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_storeop__0(var_x : storeop_) : storeop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_storeop__0{Inn : Inn, var_x : storeop_Inn}(mk_storeop__0_storeop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vloadop_ = + | `SHAPE%X%_%`(sz : sz, M : M, sx : sx) + | SPLAT(sz : sz) + | ZERO(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vloadop_: `%%`(vectype, vloadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_0{vectype : vectype, sz : sz, M : M, sx : sx}: + `%%`(vectype, `SHAPE%X%_%`_vloadop_(sz, M, sx)) + -- wf_sz: `%`(sz) + -- if ((($proj_sz_0(sz).0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_1{vectype : vectype, sz : sz}: + `%%`(vectype, SPLAT_vloadop_(sz)) + -- wf_sz: `%`(sz) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_2{vectype : vectype, sz : sz}: + `%%`(vectype, ZERO_vloadop_(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 >= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax blocktype = + | _RESULT(`valtype?` : valtype?) + | _IDX(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_blocktype: `%`(blocktype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_0{`valtype?` : valtype?}: + `%`(_RESULT_blocktype(`valtype?`)) + -- (wf_valtype: `%`(valtype))?{valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_1{typeidx : typeidx}: + `%`(_IDX_blocktype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax addr = nat + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayaddr = addr + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax catch = + | CATCH(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL(labelidx : labelidx) + | CATCH_ALL_REF(labelidx : labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_catch: `%`(catch) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_0{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_1{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_REF_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_2{labelidx : labelidx}: + `%`(CATCH_ALL_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_3{labelidx : labelidx}: + `%`(CATCH_ALL_REF_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exnaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax dataaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax elemaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globaladdr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax memaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tagaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax externaddr = + | TAG(tagaddr : tagaddr) + | GLOBAL(globaladdr : globaladdr) + | MEM(memaddr : memaddr) + | TABLE(tableaddr : tableaddr) + | FUNC(funcaddr : funcaddr) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exportinst = +{ + NAME name, + ADDR externaddr +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exportinst: `%`(exportinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exportinst_case_{var_0 : name, var_1 : externaddr}: + `%`({NAME var_0, ADDR var_1}) + -- wf_name: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax moduleinst = +{ + TYPES deftype*, + TAGS tagaddr*, + GLOBALS globaladdr*, + MEMS memaddr*, + TABLES tableaddr*, + FUNCS funcaddr*, + DATAS dataaddr*, + ELEMS elemaddr*, + EXPORTS exportinst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_moduleinst: `%`(moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_case_{var_0 : deftype*, var_1 : tagaddr*, var_2 : globaladdr*, var_3 : memaddr*, var_4 : tableaddr*, var_5 : funcaddr*, var_6 : dataaddr*, var_7 : elemaddr*, var_8 : exportinst*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, EXPORTS var_8}) + -- (wf_exportinst: `%`(var_8))*{var_8 <- var_8} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-43.19 +syntax ref = + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 +relation wf_ref: `%`(ref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_0{u31 : u31}: + `%`(`REF.I31_NUM`_ref(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_1: + `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_2{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_ref(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_3{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_ref(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_4{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_ref(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_5{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_ref(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_6{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_ref(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_7{ref : ref}: + `%`(`REF.EXTERN`_ref(ref)) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax val = + | CONST(numtype : numtype, num_) + | VCONST(vectype : vectype, vec_) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + +def $val_ref(ref) : val + def $val_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_val(x0) + def $val_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_val + def $val_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_val(x0) + def $val_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_val(x0) + def $val_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_val(x0) + def $val_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_val(x0) + def $val_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_val(x0) + def $val_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_val(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_val: `%`(val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_val(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_1{vectype : vectype, var_0 : vec_}: + `%`(VCONST_val(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_2{u31 : u31}: + `%`(`REF.I31_NUM`_val(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_3: + `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_4{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_5{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_6{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_7{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_val(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_8{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_9{ref : ref}: + `%`(`REF.EXTERN`_val(ref)) + -- wf_ref: `%`(ref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax frame = +{ + LOCALS val?*, + MODULE moduleinst +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_frame: `%`(frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_case_{var_0 : val?*, var_1 : moduleinst}: + `%`({LOCALS var_0, MODULE var_1}) + -- (wf_val: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- wf_moduleinst: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.1-139.9 +syntax instr = + | NOP + | UNREACHABLE + | DROP + | SELECT(`valtype*?` : valtype*?) + | BLOCK(blocktype : blocktype, `instr*` : instr*) + | LOOP(blocktype : blocktype, `instr*` : instr*) + | `IF%%ELSE%`(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) + | BR(labelidx : labelidx) + | BR_IF(labelidx : labelidx) + | BR_TABLE(`labelidx*` : labelidx*, labelidx : labelidx) + | BR_ON_NULL(labelidx : labelidx) + | BR_ON_NON_NULL(labelidx : labelidx) + | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | CALL(funcidx : funcidx) + | CALL_REF(typeuse : typeuse) + | CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | RETURN + | RETURN_CALL(funcidx : funcidx) + | RETURN_CALL_REF(typeuse : typeuse) + | RETURN_CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | THROW(tagidx : tagidx) + | THROW_REF + | TRY_TABLE(blocktype : blocktype, list(syntax catch), `instr*` : instr*) + | `LOCAL.GET`(localidx : localidx) + | `LOCAL.SET`(localidx : localidx) + | `LOCAL.TEE`(localidx : localidx) + | `GLOBAL.GET`(globalidx : globalidx) + | `GLOBAL.SET`(globalidx : globalidx) + | `TABLE.GET`(tableidx : tableidx) + | `TABLE.SET`(tableidx : tableidx) + | `TABLE.SIZE`(tableidx : tableidx) + | `TABLE.GROW`(tableidx : tableidx) + | `TABLE.FILL`(tableidx : tableidx) + | `TABLE.COPY`(tableidx : tableidx, tableidx : tableidx) + | `TABLE.INIT`(tableidx : tableidx, elemidx : elemidx) + | `ELEM.DROP`(elemidx : elemidx) + | LOAD(numtype : numtype, loadop_?, memidx : memidx, memarg : memarg) + | STORE(numtype : numtype, storeop_?, memidx : memidx, memarg : memarg) + | VLOAD(vectype : vectype, vloadop_?, memidx : memidx, memarg : memarg) + | VLOAD_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | `MEMORY.SIZE`(memidx : memidx) + | `MEMORY.GROW`(memidx : memidx) + | `MEMORY.FILL`(memidx : memidx) + | `MEMORY.COPY`(memidx : memidx, memidx : memidx) + | `MEMORY.INIT`(memidx : memidx, dataidx : dataidx) + | `DATA.DROP`(dataidx : dataidx) + | `REF.NULL`(heaptype : heaptype) + | `REF.IS_NULL` + | `REF.AS_NON_NULL` + | `REF.EQ` + | `REF.TEST`(reftype : reftype) + | `REF.CAST`(reftype : reftype) + | `REF.FUNC`(funcidx : funcidx) + | `REF.I31` + | `I31.GET`(sx : sx) + | `STRUCT.NEW`(typeidx : typeidx) + | `STRUCT.NEW_DEFAULT`(typeidx : typeidx) + | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx) + | `STRUCT.SET`(typeidx : typeidx, fieldidx : fieldidx) + | `ARRAY.NEW`(typeidx : typeidx) + | `ARRAY.NEW_DEFAULT`(typeidx : typeidx) + | `ARRAY.NEW_FIXED`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.NEW_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `ARRAY.GET`(`sx?` : sx?, typeidx : typeidx) + | `ARRAY.SET`(typeidx : typeidx) + | `ARRAY.LEN` + | `ARRAY.FILL`(typeidx : typeidx) + | `ARRAY.COPY`(typeidx : typeidx, typeidx : typeidx) + | `ARRAY.INIT_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.INIT_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `EXTERN.CONVERT_ANY` + | `ANY.CONVERT_EXTERN` + | CONST(numtype : numtype, num_) + | UNOP(numtype : numtype, unop_) + | BINOP(numtype : numtype, binop_) + | TESTOP(numtype : numtype, testop_) + | RELOP(numtype : numtype, relop_) + | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__) + | VCONST(vectype : vectype, vec_) + | VVUNOP(vectype : vectype, vvunop : vvunop) + | VVBINOP(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP(vectype : vectype, vvternop : vvternop) + | VVTESTOP(vectype : vectype, vvtestop : vvtestop) + | VUNOP(shape : shape, vunop_) + | VBINOP(shape : shape, vbinop_) + | VTERNOP(shape : shape, vternop_) + | VTESTOP(shape : shape, vtestop_) + | VRELOP(shape : shape, vrelop_) + | VSHIFTOP(ishape : ishape, vshiftop_) + | VBITMASK(ishape : ishape) + | VSWIZZLOP(bshape : bshape, vswizzlop_) + | VSHUFFLE(bshape : bshape, `laneidx*` : laneidx*) + | VEXTUNOP(ishape_1 : ishape, ishape_2 : ishape, vextunop__) + | VEXTBINOP(ishape_1 : ishape, ishape_2 : ishape, vextbinop__) + | VEXTTERNOP(ishape_1 : ishape, ishape_2 : ishape, vextternop__) + | VNARROW(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + | VCVTOP(shape_1 : shape, shape_2 : shape, vcvtop__) + | VSPLAT(shape : shape) + | VEXTRACT_LANE(shape : shape, `sx?` : sx?, laneidx : laneidx) + | VREPLACE_LANE(shape : shape, laneidx : laneidx) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) + | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) + | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) + | TRAP +} + +def $instr_ref(ref) : instr + def $instr_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_instr(x0) + def $instr_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_instr + def $instr_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_instr(x0) + def $instr_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_instr(x0) + def $instr_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_instr(x0) + def $instr_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_instr(x0) + def $instr_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_instr(x0) + def $instr_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_instr(x0) + +def $instr_val(val) : instr + def $instr_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_instr(x0, x1) + def $instr_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_instr(x0, x1) + def $instr_val{x0 : u31}(`REF.I31_NUM`_val(x0)) = `REF.I31_NUM`_instr(x0) + def $instr_val(`REF.NULL_ADDR`_val) = `REF.NULL_ADDR`_instr + def $instr_val{x0 : structaddr}(`REF.STRUCT_ADDR`_val(x0)) = `REF.STRUCT_ADDR`_instr(x0) + def $instr_val{x0 : arrayaddr}(`REF.ARRAY_ADDR`_val(x0)) = `REF.ARRAY_ADDR`_instr(x0) + def $instr_val{x0 : funcaddr}(`REF.FUNC_ADDR`_val(x0)) = `REF.FUNC_ADDR`_instr(x0) + def $instr_val{x0 : exnaddr}(`REF.EXN_ADDR`_val(x0)) = `REF.EXN_ADDR`_instr(x0) + def $instr_val{x0 : hostaddr}(`REF.HOST_ADDR`_val(x0)) = `REF.HOST_ADDR`_instr(x0) + def $instr_val{x0 : ref}(`REF.EXTERN`_val(x0)) = `REF.EXTERN`_instr(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 +relation wf_instr: `%`(instr) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_0: + `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_1: + `%`(UNREACHABLE_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_2: + `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_3{`valtype*?` : valtype*?}: + `%`(SELECT_instr(`valtype*?`)) + -- (wf_valtype: `%`(valtype))*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_4{blocktype : blocktype, `instr*` : instr*}: + `%`(BLOCK_instr(blocktype, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_5{blocktype : blocktype, `instr*` : instr*}: + `%`(LOOP_instr(blocktype, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_6{blocktype : blocktype, `instr*` : instr*, `instr*_0` : instr*}: + `%`(`IF%%ELSE%`_instr(blocktype, `instr*`, `instr*_0`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(`instr*_0`))*{`instr*_0` <- `instr*_0`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_7{labelidx : labelidx}: + `%`(BR_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_8{labelidx : labelidx}: + `%`(BR_IF_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_9{`labelidx*` : labelidx*, labelidx : labelidx}: + `%`(BR_TABLE_instr(`labelidx*`, labelidx)) + -- (wf_uN: `%%`(32, labelidx))*{labelidx <- `labelidx*`} + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_10{labelidx : labelidx}: + `%`(BR_ON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_11{labelidx : labelidx}: + `%`(BR_ON_NON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_12{labelidx : labelidx, reftype : reftype, reftype_0 : reftype}: + `%`(BR_ON_CAST_instr(labelidx, reftype, reftype_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_13{labelidx : labelidx, reftype : reftype, reftype_0 : reftype}: + `%`(BR_ON_CAST_FAIL_instr(labelidx, reftype, reftype_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_14{funcidx : funcidx}: + `%`(CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_15{typeuse : typeuse}: + `%`(CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_16{tableidx : tableidx, typeuse : typeuse}: + `%`(CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_17: + `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_18{funcidx : funcidx}: + `%`(RETURN_CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_19{typeuse : typeuse}: + `%`(RETURN_CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_20{tableidx : tableidx, typeuse : typeuse}: + `%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_21{tagidx : tagidx}: + `%`(THROW_instr(tagidx)) + -- wf_uN: `%%`(32, tagidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_22: + `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_23{blocktype : blocktype, var_0 : list(syntax catch), `instr*` : instr*}: + `%`(TRY_TABLE_instr(blocktype, var_0, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_24{localidx : localidx}: + `%`(`LOCAL.GET`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_25{localidx : localidx}: + `%`(`LOCAL.SET`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_26{localidx : localidx}: + `%`(`LOCAL.TEE`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_27{globalidx : globalidx}: + `%`(`GLOBAL.GET`_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_28{globalidx : globalidx}: + `%`(`GLOBAL.SET`_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_29{tableidx : tableidx}: + `%`(`TABLE.GET`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_30{tableidx : tableidx}: + `%`(`TABLE.SET`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_31{tableidx : tableidx}: + `%`(`TABLE.SIZE`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_32{tableidx : tableidx}: + `%`(`TABLE.GROW`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_33{tableidx : tableidx}: + `%`(`TABLE.FILL`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_34{tableidx : tableidx, tableidx_0 : tableidx}: + `%`(`TABLE.COPY`_instr(tableidx, tableidx_0)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, tableidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_35{tableidx : tableidx, elemidx : elemidx}: + `%`(`TABLE.INIT`_instr(tableidx, elemidx)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_36{elemidx : elemidx}: + `%`(`ELEM.DROP`_instr(elemidx)) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_37{numtype : numtype, var_0 : loadop_?, memidx : memidx, memarg : memarg}: + `%`(LOAD_instr(numtype, var_0, memidx, memarg)) + -- (wf_loadop_: `%%`(numtype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_38{numtype : numtype, var_0 : storeop_?, memidx : memidx, memarg : memarg}: + `%`(STORE_instr(numtype, var_0, memidx, memarg)) + -- (wf_storeop_: `%%`(numtype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_39{vectype : vectype, var_0 : vloadop_?, memidx : memidx, memarg : memarg}: + `%`(VLOAD_instr(vectype, var_0, memidx, memarg)) + -- (wf_vloadop_: `%%`(vectype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_40{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_41{vectype : vectype, memidx : memidx, memarg : memarg}: + `%`(VSTORE_instr(vectype, memidx, memarg)) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_42{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_43{memidx : memidx}: + `%`(`MEMORY.SIZE`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_44{memidx : memidx}: + `%`(`MEMORY.GROW`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_45{memidx : memidx}: + `%`(`MEMORY.FILL`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_46{memidx : memidx, memidx_0 : memidx}: + `%`(`MEMORY.COPY`_instr(memidx, memidx_0)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, memidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_47{memidx : memidx, dataidx : dataidx}: + `%`(`MEMORY.INIT`_instr(memidx, dataidx)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_48{dataidx : dataidx}: + `%`(`DATA.DROP`_instr(dataidx)) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_49{heaptype : heaptype}: + `%`(`REF.NULL`_instr(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_50: + `%`(`REF.IS_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_51: + `%`(`REF.AS_NON_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_52: + `%`(`REF.EQ`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_53{reftype : reftype}: + `%`(`REF.TEST`_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_54{reftype : reftype}: + `%`(`REF.CAST`_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_55{funcidx : funcidx}: + `%`(`REF.FUNC`_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_56: + `%`(`REF.I31`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_57{sx : sx}: + `%`(`I31.GET`_instr(sx)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_58{typeidx : typeidx}: + `%`(`STRUCT.NEW`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_59{typeidx : typeidx}: + `%`(`STRUCT.NEW_DEFAULT`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_60{`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx}: + `%`(`STRUCT.GET`_instr(`sx?`, typeidx, fieldidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, fieldidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_61{typeidx : typeidx, fieldidx : fieldidx}: + `%`(`STRUCT.SET`_instr(typeidx, fieldidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, fieldidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_62{typeidx : typeidx}: + `%`(`ARRAY.NEW`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_63{typeidx : typeidx}: + `%`(`ARRAY.NEW_DEFAULT`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_64{typeidx : typeidx, u32 : u32}: + `%`(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_65{typeidx : typeidx, dataidx : dataidx}: + `%`(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_66{typeidx : typeidx, elemidx : elemidx}: + `%`(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_67{`sx?` : sx?, typeidx : typeidx}: + `%`(`ARRAY.GET`_instr(`sx?`, typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_68{typeidx : typeidx}: + `%`(`ARRAY.SET`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_69: + `%`(`ARRAY.LEN`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_70{typeidx : typeidx}: + `%`(`ARRAY.FILL`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_71{typeidx : typeidx, typeidx_0 : typeidx}: + `%`(`ARRAY.COPY`_instr(typeidx, typeidx_0)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, typeidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_72{typeidx : typeidx, dataidx : dataidx}: + `%`(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_73{typeidx : typeidx, elemidx : elemidx}: + `%`(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_74: + `%`(`EXTERN.CONVERT_ANY`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_75: + `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_76{numtype : numtype, var_0 : num_}: + `%`(CONST_instr(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_77{numtype : numtype, var_0 : unop_}: + `%`(UNOP_instr(numtype, var_0)) + -- wf_unop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_78{numtype : numtype, var_0 : binop_}: + `%`(BINOP_instr(numtype, var_0)) + -- wf_binop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_79{numtype : numtype, var_0 : testop_}: + `%`(TESTOP_instr(numtype, var_0)) + -- wf_testop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_80{numtype : numtype, var_0 : relop_}: + `%`(RELOP_instr(numtype, var_0)) + -- wf_relop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_81{numtype_1 : numtype, numtype_2 : numtype, var_0 : cvtop__}: + `%`(CVTOP_instr(numtype_1, numtype_2, var_0)) + -- wf_cvtop__: `%%%`(numtype_2, numtype_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_82{vectype : vectype, var_0 : vec_}: + `%`(VCONST_instr(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_83{vectype : vectype, vvunop : vvunop}: + `%`(VVUNOP_instr(vectype, vvunop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_84{vectype : vectype, vvbinop : vvbinop}: + `%`(VVBINOP_instr(vectype, vvbinop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_85{vectype : vectype, vvternop : vvternop}: + `%`(VVTERNOP_instr(vectype, vvternop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_86{vectype : vectype, vvtestop : vvtestop}: + `%`(VVTESTOP_instr(vectype, vvtestop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_87{shape : shape, var_0 : vunop_}: + `%`(VUNOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vunop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_88{shape : shape, var_0 : vbinop_}: + `%`(VBINOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vbinop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_89{shape : shape, var_0 : vternop_}: + `%`(VTERNOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vternop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_90{shape : shape, var_0 : vtestop_}: + `%`(VTESTOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vtestop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_91{shape : shape, var_0 : vrelop_}: + `%`(VRELOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vrelop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_92{ishape : ishape, var_0 : vshiftop_}: + `%`(VSHIFTOP_instr(ishape, var_0)) + -- wf_ishape: `%`(ishape) + -- wf_vshiftop_: `%%`(ishape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_93{ishape : ishape}: + `%`(VBITMASK_instr(ishape)) + -- wf_ishape: `%`(ishape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_94{bshape : bshape, var_0 : vswizzlop_}: + `%`(VSWIZZLOP_instr(bshape, var_0)) + -- wf_bshape: `%`(bshape) + -- wf_vswizzlop_: `%%`(bshape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*, var_0 : dim}: + `%`(VSHUFFLE_instr(bshape, `laneidx*`)) + -- wf_bshape: `%`(bshape) + -- (wf_uN: `%%`(8, laneidx))*{laneidx <- `laneidx*`} + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = var_0) + -- fun_dim: `%%`($proj_bshape_0(bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextunop__}: + `%`(VEXTUNOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextunop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_97{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextbinop__}: + `%`(VEXTBINOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextbinop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_98{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextternop__}: + `%`(VEXTTERNOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextternop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_99{ishape_1 : ishape, ishape_2 : ishape, sx : sx}: + `%`(VNARROW_instr(ishape_1, ishape_2, sx)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- if (($lsize($lanetype($proj_ishape_0(ishape_2).0)) = (2 * $lsize($lanetype($proj_ishape_0(ishape_1).0)))) /\ ((2 * $lsize($lanetype($proj_ishape_0(ishape_1).0))) <= 32)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_100{shape_1 : shape, shape_2 : shape, var_0 : vcvtop__}: + `%`(VCVTOP_instr(shape_1, shape_2, var_0)) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_2, shape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_101{shape : shape}: + `%`(VSPLAT_instr(shape)) + -- wf_shape: `%`(shape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_102{shape : shape, `sx?` : sx?, laneidx : laneidx}: + `%`(VEXTRACT_LANE_instr(shape, `sx?`, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + -- if (|[I32_lanetype I64_lanetype F32_lanetype F64_lanetype]| > 0) + -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_103{shape : shape, laneidx : laneidx}: + `%`(VREPLACE_LANE_instr(shape, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_104{u31 : u31}: + `%`(`REF.I31_NUM`_instr(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_105: + `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_106{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_instr(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_107{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_instr(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_108{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_instr(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_109{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_instr(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_110{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_instr(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_111{ref : ref}: + `%`(`REF.EXTERN`_instr(ref)) + -- wf_ref: `%`(ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_112{n : n, `instr*` : instr*, `instr*_0` : instr*}: + `%`(`LABEL_%{%}%`_instr(n, `instr*`, `instr*_0`)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(`instr*_0`))*{`instr*_0` <- `instr*_0`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_113{n : n, frame : frame, `instr*` : instr*}: + `%`(`FRAME_%{%}%`_instr(n, frame, `instr*`)) + -- wf_frame: `%`(frame) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_114{n : n, `catch*` : catch*, `instr*` : instr*}: + `%`(`HANDLER_%{%}%`_instr(n, `catch*`, `instr*`)) + -- (wf_catch: `%`(catch))*{catch <- `catch*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_115: + `%`(TRAP_instr) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax expr = instr* + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_memarg0: `%`(memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_memarg0_case_0: + `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) + -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_const: `%%%`(consttype, lit_, instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_0{c : num_}: + `%%%`(I32_consttype, mk_lit__0_lit_(I32_numtype, c), CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_1{c : num_}: + `%%%`(I64_consttype, mk_lit__0_lit_(I64_numtype, c), CONST_instr(I64_numtype, c)) + -- wf_instr: `%`(CONST_instr(I64_numtype, c)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_2{c : num_}: + `%%%`(F32_consttype, mk_lit__0_lit_(F32_numtype, c), CONST_instr(F32_numtype, c)) + -- wf_instr: `%`(CONST_instr(F32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_3{c : num_}: + `%%%`(F64_consttype, mk_lit__0_lit_(F64_numtype, c), CONST_instr(F64_numtype, c)) + -- wf_instr: `%`(CONST_instr(F64_numtype, c)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_4{c : uN}: + `%%%`(V128_consttype, mk_lit__1_lit_(V128_vectype, c), VCONST_instr(V128_vectype, c)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_shape: `%%`(shape, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_shape_case_0{lanetype : lanetype, dim : dim, var_0 : free}: + `%%`(`%X%`_shape(lanetype, dim), var_0) + -- fun_free_lanetype: `%%`(lanetype, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_blocktype: `%%`(blocktype, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_blocktype_case_0{`valtype?` : valtype?, `var_1?` : free?, var_0 : free}: + `%%`(_RESULT_blocktype(valtype#505?{valtype#505 <- `valtype?`}), var_0) + -- if ((`var_1?` = ?()) <=> (`valtype?` = ?())) + -- (fun_free_valtype: `%%`(valtype, var_1))?{var_1 <- `var_1?`, valtype <- `valtype?`} + -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_blocktype_case_1{typeidx : uN, var_0 : free}: + `%%`(_IDX_blocktype(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_catch: `%%`(catch, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_catch_case_0{tagidx : uN, labelidx : uN, var_1 : free, var_0 : free}: + `%%`(CATCH_catch(tagidx, labelidx), var_0 +++ var_1) + -- fun_free_labelidx: `%%`(labelidx, var_1) + -- fun_free_tagidx: `%%`(tagidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_catch_case_1{tagidx : uN, labelidx : uN, var_1 : free, var_0 : free}: + `%%`(CATCH_REF_catch(tagidx, labelidx), var_0 +++ var_1) + -- fun_free_labelidx: `%%`(labelidx, var_1) + -- fun_free_tagidx: `%%`(tagidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_catch_case_2{labelidx : uN, var_0 : free}: + `%%`(CATCH_ALL_catch(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_catch_case_3{labelidx : uN, var_0 : free}: + `%%`(CATCH_ALL_REF_catch(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 +relation fun_shift_labelidxs: `%%`(labelidx*, labelidx*) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_1{`labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([`%`_labelidx(0)] ++ labelidx'#1*{labelidx'#1 <- `labelidx'*`}, var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_2{labelidx : uN, `labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([labelidx] ++ labelidx'#2*{labelidx'#2 <- `labelidx'*`}, [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) + -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation fun_free_instr: `%%`(instr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_0: + `%%`(NOP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_1: + `%%`(UNREACHABLE_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_2: + `%%`(DROP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_3{`valtype*?` : valtype*?, `var_2*?` : free*?, `var_1?` : free?, var_0 : free}: + `%%`(SELECT_instr(valtype#506*{valtype#506 <- `valtype*#1`}?{`valtype*#1` <- `valtype*?`}), var_0) + -- if ((`var_2*?` = ?()) <=> (`valtype*?` = ?())) + -- (if (|`var_2*`| = |`valtype*`|))?{`var_2*` <- `var_2*?`, `valtype*` <- `valtype*?`} + -- (fun_free_valtype: `%%`(valtype, var_2))*{var_2 <- `var_2*`, valtype <- `valtype*`}?{`var_2*` <- `var_2*?`, `valtype*` <- `valtype*?`} + -- if ((`var_2*?` = ?()) <=> (`var_1?` = ?())) + -- (fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1))?{`var_2*` <- `var_2*?`, var_1 <- `var_1?`} + -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_4{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(BLOCK_instr(blocktype, instr#1*{instr#1 <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_5{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(LOOP_instr(blocktype, instr#2*{instr#2 <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_6{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, var_2 : free, var_1 : free, var_0 : free}: + `%%`(`IF%%ELSE%`_instr(blocktype, instr_1#1*{instr_1#1 <- `instr_1*`}, instr_2#1*{instr_2#1 <- `instr_2*`}), var_0 +++ var_1 +++ var_2) + -- fun_free_block: `%%`(instr_2*{instr_2 <- `instr_2*`}, var_2) + -- fun_free_block: `%%`(instr_1*{instr_1 <- `instr_1*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_7{labelidx : uN, var_0 : free}: + `%%`(BR_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_8{labelidx : uN, var_0 : free}: + `%%`(BR_IF_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_9{`labelidx*` : labelidx*, labelidx' : uN, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(BR_TABLE_instr(labelidx#1*{labelidx#1 <- `labelidx*`}, labelidx'), var_0 +++ var_2) + -- fun_free_labelidx: `%%`(labelidx', var_2) + -- if (|`var_1*`| = |`labelidx*`|) + -- (fun_free_labelidx: `%%`(labelidx, var_1))*{var_1 <- `var_1*`, labelidx <- `labelidx*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_10{labelidx : uN, var_0 : free}: + `%%`(BR_ON_NULL_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_11{labelidx : uN, var_0 : free}: + `%%`(BR_ON_NON_NULL_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_12{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_13{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_14{funcidx : uN, var_0 : free}: + `%%`(CALL_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_15{typeuse : typeuse, var_0 : free}: + `%%`(CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_16{tableidx : uN, typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(CALL_INDIRECT_instr(tableidx, typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(typeuse, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_17: + `%%`(RETURN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_18{funcidx : uN, var_0 : free}: + `%%`(RETURN_CALL_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_19{typeuse : typeuse, var_0 : free}: + `%%`(RETURN_CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_20{tableidx : uN, typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(typeuse, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_21{tagidx : uN, var_0 : free}: + `%%`(THROW_instr(tagidx), var_0) + -- fun_free_tagidx: `%%`(tagidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_22: + `%%`(THROW_REF_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_23{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*, `var_4*` : free*, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(TRY_TABLE_instr(blocktype, `%`_list(catch#1*{catch#1 <- `catch*`}), instr#3*{instr#3 <- `instr*`}), var_0 +++ var_1 +++ var_3) + -- if (|`var_4*`| = |`instr*`|) + -- (fun_free_instr: `%%`(instr, var_4))*{var_4 <- `var_4*`, instr <- `instr*`} + -- fun_free_list: `%%`(var_4*{var_4 <- `var_4*`}, var_3) + -- if (|`var_2*`| = |`catch*`|) + -- (fun_free_catch: `%%`(catch, var_2))*{var_2 <- `var_2*`, catch <- `catch*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_24{numtype : numtype, numlit : num_, var_0 : free}: + `%%`(CONST_instr(numtype, numlit), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_25{numtype : numtype, unop : unop_, var_0 : free}: + `%%`(UNOP_instr(numtype, unop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_26{numtype : numtype, binop : binop_, var_0 : free}: + `%%`(BINOP_instr(numtype, binop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_27{numtype : numtype, testop : testop_, var_0 : free}: + `%%`(TESTOP_instr(numtype, testop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_28{numtype : numtype, relop : relop_, var_0 : free}: + `%%`(RELOP_instr(numtype, relop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_29{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__, var_1 : free, var_0 : free}: + `%%`(CVTOP_instr(numtype_1, numtype_2, cvtop), var_0 +++ var_1) + -- fun_free_numtype: `%%`(numtype_2, var_1) + -- fun_free_numtype: `%%`(numtype_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_30{vectype : vectype, veclit : uN, var_0 : free}: + `%%`(VCONST_instr(vectype, veclit), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_31{vectype : vectype, vvunop : vvunop, var_0 : free}: + `%%`(VVUNOP_instr(vectype, vvunop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_32{vectype : vectype, vvbinop : vvbinop, var_0 : free}: + `%%`(VVBINOP_instr(vectype, vvbinop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_33{vectype : vectype, vvternop : vvternop, var_0 : free}: + `%%`(VVTERNOP_instr(vectype, vvternop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_34{vectype : vectype, vvtestop : vvtestop, var_0 : free}: + `%%`(VVTESTOP_instr(vectype, vvtestop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_35{shape : shape, vunop : vunop_, var_0 : free}: + `%%`(VUNOP_instr(shape, vunop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_36{shape : shape, vbinop : vbinop_, var_0 : free}: + `%%`(VBINOP_instr(shape, vbinop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_37{shape : shape, vternop : vternop_, var_0 : free}: + `%%`(VTERNOP_instr(shape, vternop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_38{shape : shape, vtestop : vtestop_, var_0 : free}: + `%%`(VTESTOP_instr(shape, vtestop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_39{shape : shape, vrelop : vrelop_, var_0 : free}: + `%%`(VRELOP_instr(shape, vrelop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_40{ishape : ishape, vshiftop : vshiftop_, var_0 : free}: + `%%`(VSHIFTOP_instr(ishape, vshiftop), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_41{ishape : ishape, var_0 : free}: + `%%`(VBITMASK_instr(ishape), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_42{bshape : bshape, vswizzlop : vswizzlop_, var_0 : free}: + `%%`(VSWIZZLOP_instr(bshape, vswizzlop), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_43{bshape : bshape, `laneidx*` : laneidx*, var_0 : free}: + `%%`(VSHUFFLE_instr(bshape, laneidx#1*{laneidx#1 <- `laneidx*`}), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_44{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__, var_1 : free, var_0 : free}: + `%%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_45{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__, var_1 : free, var_0 : free}: + `%%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_46{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__, var_1 : free, var_0 : free}: + `%%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_47{ishape_1 : ishape, ishape_2 : ishape, sx : sx, var_1 : free, var_0 : free}: + `%%`(VNARROW_instr(ishape_1, ishape_2, sx), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_48{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__, var_1 : free, var_0 : free}: + `%%`(VCVTOP_instr(shape_1, shape_2, vcvtop), var_0 +++ var_1) + -- fun_free_shape: `%%`(shape_2, var_1) + -- fun_free_shape: `%%`(shape_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_49{shape : shape, var_0 : free}: + `%%`(VSPLAT_instr(shape), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_50{shape : shape, `sx?` : sx?, laneidx : uN, var_0 : free}: + `%%`(VEXTRACT_LANE_instr(shape, sx#43187?{sx#43187 <- `sx?`}, laneidx), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_51{shape : shape, laneidx : uN, var_0 : free}: + `%%`(VREPLACE_LANE_instr(shape, laneidx), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_52{heaptype : heaptype, var_0 : free}: + `%%`(`REF.NULL`_instr(heaptype), var_0) + -- fun_free_heaptype: `%%`(heaptype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_53: + `%%`(`REF.IS_NULL`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_54: + `%%`(`REF.AS_NON_NULL`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_55: + `%%`(`REF.EQ`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_56{reftype : reftype, var_0 : free}: + `%%`(`REF.TEST`_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_57{reftype : reftype, var_0 : free}: + `%%`(`REF.CAST`_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_58{funcidx : uN, var_0 : free}: + `%%`(`REF.FUNC`_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_59: + `%%`(`REF.I31`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_60{sx : sx}: + `%%`(`I31.GET`_instr(sx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_61{typeidx : uN, var_0 : free}: + `%%`(`STRUCT.NEW`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_62{typeidx : uN, var_0 : free}: + `%%`(`STRUCT.NEW_DEFAULT`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_63{`sx?` : sx?, typeidx : uN, u32 : uN, var_0 : free}: + `%%`(`STRUCT.GET`_instr(sx#43188?{sx#43188 <- `sx?`}, typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_64{typeidx : uN, u32 : uN, var_0 : free}: + `%%`(`STRUCT.SET`_instr(typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_65{typeidx : uN, var_0 : free}: + `%%`(`ARRAY.NEW`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_66{typeidx : uN, var_0 : free}: + `%%`(`ARRAY.NEW_DEFAULT`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_67{typeidx : uN, u32 : uN, var_0 : free}: + `%%`(`ARRAY.NEW_FIXED`_instr(typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_68{typeidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.NEW_DATA`_instr(typeidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_69{typeidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_70{`sx?` : sx?, typeidx : uN, var_0 : free}: + `%%`(`ARRAY.GET`_instr(sx#43189?{sx#43189 <- `sx?`}, typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_71{typeidx : uN, var_0 : free}: + `%%`(`ARRAY.SET`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_72: + `%%`(`ARRAY.LEN`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_73{typeidx : uN, var_0 : free}: + `%%`(`ARRAY.FILL`_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_74{typeidx_1 : uN, typeidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.COPY`_instr(typeidx_1, typeidx_2), var_0 +++ var_1) + -- fun_free_typeidx: `%%`(typeidx_2, var_1) + -- fun_free_typeidx: `%%`(typeidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_75{typeidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.INIT_DATA`_instr(typeidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_76{typeidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_77: + `%%`(`EXTERN.CONVERT_ANY`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_78: + `%%`(`ANY.CONVERT_EXTERN`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_79{localidx : uN, var_0 : free}: + `%%`(`LOCAL.GET`_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_80{localidx : uN, var_0 : free}: + `%%`(`LOCAL.SET`_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_81{localidx : uN, var_0 : free}: + `%%`(`LOCAL.TEE`_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_82{globalidx : uN, var_0 : free}: + `%%`(`GLOBAL.GET`_instr(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_83{globalidx : uN, var_0 : free}: + `%%`(`GLOBAL.SET`_instr(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_84{tableidx : uN, var_0 : free}: + `%%`(`TABLE.GET`_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_85{tableidx : uN, var_0 : free}: + `%%`(`TABLE.SET`_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_86{tableidx : uN, var_0 : free}: + `%%`(`TABLE.SIZE`_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_87{tableidx : uN, var_0 : free}: + `%%`(`TABLE.GROW`_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_88{tableidx : uN, var_0 : free}: + `%%`(`TABLE.FILL`_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_89{tableidx_1 : uN, tableidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(`TABLE.COPY`_instr(tableidx_1, tableidx_2), var_0 +++ var_1) + -- fun_free_tableidx: `%%`(tableidx_2, var_1) + -- fun_free_tableidx: `%%`(tableidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_90{tableidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(`TABLE.INIT`_instr(tableidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_91{elemidx : uN, var_0 : free}: + `%%`(`ELEM.DROP`_instr(elemidx), var_0) + -- fun_free_elemidx: `%%`(elemidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_92{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(LOAD_instr(numtype, loadop#1?{loadop#1 <- `loadop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_93{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(STORE_instr(numtype, storeop#1?{storeop#1 <- `storeop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_94{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VLOAD_instr(vectype, vloadop#1?{vloadop#1 <- `vloadop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_95{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_96{vectype : vectype, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VSTORE_instr(vectype, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_97{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_98{memidx : uN, var_0 : free}: + `%%`(`MEMORY.SIZE`_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_99{memidx : uN, var_0 : free}: + `%%`(`MEMORY.GROW`_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_100{memidx : uN, var_0 : free}: + `%%`(`MEMORY.FILL`_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_101{memidx_1 : uN, memidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(`MEMORY.COPY`_instr(memidx_1, memidx_2), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx_2, var_1) + -- fun_free_memidx: `%%`(memidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_102{memidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(`MEMORY.INIT`_instr(memidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_103{dataidx : uN, var_0 : free}: + `%%`(`DATA.DROP`_instr(dataidx), var_0) + -- fun_free_dataidx: `%%`(dataidx, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation fun_free_block: `%%`(instr*, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule fun_free_block_case_0{`instr*` : instr*, free : free, `var_2*` : free*, var_1 : free, var_0 : labelidx*}: + `%%`(instr#4*{instr#4 <- `instr*`}, free[LABELS_free = var_0]) + -- if (|`var_2*`| = |`instr*`|) + -- (fun_free_instr: `%%`(instr#5, var_2))*{var_2 <- `var_2*`, instr#5 <- `instr*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_shift_labelidxs: `%%`(free.LABELS_free, var_0) + -- wf_free: `%`(free) + -- if (free = var_1) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_expr: `%%`(expr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_expr_case_0{`instr*` : instr*, `var_1*` : free*, var_0 : free}: + `%%`(instr#6*{instr#6 <- `instr*`}, var_0) + -- if (|`var_1*`| = |`instr*`|) + -- (fun_free_instr: `%%`(instr, var_1))*{var_1 <- `var_1*`, instr <- `instr*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elemmode = + | ACTIVE(tableidx : tableidx, expr : expr) + | PASSIVE + | DECLARE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elemmode: `%`(elemmode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_0{tableidx : tableidx, expr : expr}: + `%`(ACTIVE_elemmode(tableidx, expr)) + -- wf_uN: `%%`(32, tableidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_1: + `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_2: + `%`(DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax datamode = + | ACTIVE(memidx : memidx, expr : expr) + | PASSIVE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_datamode: `%`(datamode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_0{memidx : memidx, expr : expr}: + `%`(ACTIVE_datamode(memidx, expr)) + -- wf_uN: `%%`(32, memidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_1: + `%`(PASSIVE_datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax type = + | TYPE(rectype : rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax tag = + | TAG(tagtype : tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_tag: `%`(tag) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule tag_case_0{tagtype : tagtype}: + `%`(TAG_tag(tagtype)) + -- wf_typeuse: `%`(tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax global = + | GLOBAL(globaltype : globaltype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_global: `%`(global) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule global_case_0{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax mem = + | MEMORY(memtype : memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_mem: `%`(mem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule mem_case_0{memtype : memtype}: + `%`(MEMORY_mem(memtype)) + -- wf_memtype: `%`(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax table = + | TABLE(tabletype : tabletype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_table: `%`(table) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule table_case_0{tabletype : tabletype, expr : expr}: + `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax data = + | DATA(`byte*` : byte*, datamode : datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_data: `%`(data) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule data_case_0{`byte*` : byte*, datamode : datamode}: + `%`(DATA_data(`byte*`, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax local = + | LOCAL(valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_local: `%`(local) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule local_case_0{valtype : valtype}: + `%`(LOCAL_local(valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax func = + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_func: `%`(func) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule func_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_func(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elem = + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elem: `%`(elem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_elem(reftype, `expr*`, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax start = + | START(funcidx : funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_start: `%`(start) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule start_case_0{funcidx : funcidx}: + `%`(START_start(funcidx)) + -- wf_uN: `%%`(32, funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax import = + | IMPORT(name : name, name : name, externtype : externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_import: `%`(import) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule import_case_0{name : name, name_0 : name, externtype : externtype}: + `%`(IMPORT_import(name, name_0, externtype)) + -- wf_name: `%`(name) + -- wf_name: `%`(name_0) + -- wf_externtype: `%`(externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax export = + | EXPORT(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_export: `%`(export) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule export_case_0{name : name, externidx : externidx}: + `%`(EXPORT_export(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax module = + | MODULE(list(syntax type), list(syntax import), list(syntax tag), list(syntax global), list(syntax mem), list(syntax table), list(syntax func), list(syntax data), list(syntax elem), `start?` : start?, list(syntax export)) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_module: `%`(module) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule module_case_0{var_0 : list(syntax type), var_1 : list(syntax import), var_2 : list(syntax tag), var_3 : list(syntax global), var_4 : list(syntax mem), var_5 : list(syntax table), var_6 : list(syntax func), var_7 : list(syntax data), var_8 : list(syntax elem), `start?` : start?, var_9 : list(syntax export)}: + `%`(MODULE_module(var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, `start?`, var_9)) + -- (wf_start: `%`(start))?{start <- `start?`} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_type: `%%`(type, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_type_case_0{rectype : rectype, var_0 : free}: + `%%`(TYPE_type(rectype), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_tag: `%%`(tag, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_tag_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_tag(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_global: `%%`(global, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_global_case_0{globaltype : globaltype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(GLOBAL_global(globaltype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_globaltype: `%%`(globaltype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_mem: `%%`(mem, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_mem_case_0{memtype : memtype, var_0 : free}: + `%%`(MEMORY_mem(memtype), var_0) + -- fun_free_memtype: `%%`(memtype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_table: `%%`(table, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_table_case_0{tabletype : tabletype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(TABLE_table(tabletype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_tabletype: `%%`(tabletype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_local: `%%`(local, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_local_case_0{t : valtype, var_0 : free}: + `%%`(LOCAL_local(t), var_0) + -- fun_free_valtype: `%%`(t, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_func: `%%`(func, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_func_case_0{typeidx : uN, `local*` : local*, expr : instr*, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(FUNC_func(typeidx, local#1*{local#1 <- `local*`}, expr), var_0 +++ var_1 +++ var_3[LOCALS_free = []]) + -- fun_free_block: `%%`(expr, var_3) + -- if (|`var_2*`| = |`local*`|) + -- (fun_free_local: `%%`(local, var_2))*{var_2 <- `var_2*`, local <- `local*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_datamode: `%%`(datamode, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_datamode_case_0{memidx : uN, expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_datamode(memidx, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_datamode_case_1: + `%%`(PASSIVE_datamode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_data: `%%`(data, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_data_case_0{`byte*` : byte*, datamode : datamode, var_0 : free}: + `%%`(DATA_data(byte#1*{byte#1 <- `byte*`}, datamode), var_0) + -- fun_free_datamode: `%%`(datamode, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_elemmode: `%%`(elemmode, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_0{tableidx : uN, expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_elemmode(tableidx, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_1: + `%%`(PASSIVE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_2: + `%%`(DECLARE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_elem: `%%`(elem, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(ELEM_elem(reftype, expr#358*{expr#358 <- `expr*`}, elemmode), var_0 +++ var_1 +++ var_3) + -- fun_free_elemmode: `%%`(elemmode, var_3) + -- if (|`var_2*`| = |`expr*`|) + -- (fun_free_expr: `%%`(expr, var_2))*{var_2 <- `var_2*`, expr <- `expr*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_start: `%%`(start, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_start_case_0{funcidx : uN, var_0 : free}: + `%%`(START_start(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_import: `%%`(import, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_import_case_0{name_1 : name, name_2 : name, externtype : externtype, var_0 : free}: + `%%`(IMPORT_import(name_1, name_2, externtype), var_0) + -- fun_free_externtype: `%%`(externtype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_export: `%%`(export, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_export_case_0{name : name, externidx : externidx, var_0 : free}: + `%%`(EXPORT_export(name, externidx), var_0) + -- fun_free_externidx: `%%`(externidx, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_module: `%%`(module, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_module_case_0{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `var_21*` : free*, var_20 : free, `var_19*` : free*, var_18 : free, `var_17?` : free?, var_16 : free, `var_15*` : free*, var_14 : free, `var_13*` : free*, var_12 : free, `var_11*` : free*, var_10 : free, `var_9*` : free*, var_8 : free, `var_7*` : free*, var_6 : free, `var_5*` : free*, var_4 : free, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(MODULE_module(`%`_list(type#1*{type#1 <- `type*`}), `%`_list(import#1*{import#1 <- `import*`}), `%`_list(tag#1*{tag#1 <- `tag*`}), `%`_list(global#1*{global#1 <- `global*`}), `%`_list(mem#1*{mem#1 <- `mem*`}), `%`_list(table#1*{table#1 <- `table*`}), `%`_list(func#1*{func#1 <- `func*`}), `%`_list(data#1*{data#1 <- `data*`}), `%`_list(elem#1*{elem#1 <- `elem*`}), start#1?{start#1 <- `start?`}, `%`_list(export#1*{export#1 <- `export*`})), var_0 +++ var_2 +++ var_4 +++ var_6 +++ var_8 +++ var_10 +++ var_12 +++ var_14 +++ var_16 +++ var_18 +++ var_20) + -- if (|`var_21*`| = |`export*`|) + -- (fun_free_export: `%%`(export, var_21))*{var_21 <- `var_21*`, export <- `export*`} + -- fun_free_list: `%%`(var_21*{var_21 <- `var_21*`}, var_20) + -- if (|`var_19*`| = |`import*`|) + -- (fun_free_import: `%%`(import, var_19))*{var_19 <- `var_19*`, import <- `import*`} + -- fun_free_list: `%%`(var_19*{var_19 <- `var_19*`}, var_18) + -- if ((`var_17?` = ?()) <=> (`start?` = ?())) + -- (fun_free_start: `%%`(start, var_17))?{var_17 <- `var_17?`, start <- `start?`} + -- fun_free_opt: `%%`(var_17?{var_17 <- `var_17?`}, var_16) + -- if (|`var_15*`| = |`elem*`|) + -- (fun_free_elem: `%%`(elem, var_15))*{var_15 <- `var_15*`, elem <- `elem*`} + -- fun_free_list: `%%`(var_15*{var_15 <- `var_15*`}, var_14) + -- if (|`var_13*`| = |`data*`|) + -- (fun_free_data: `%%`(data, var_13))*{var_13 <- `var_13*`, data <- `data*`} + -- fun_free_list: `%%`(var_13*{var_13 <- `var_13*`}, var_12) + -- if (|`var_11*`| = |`func*`|) + -- (fun_free_func: `%%`(func, var_11))*{var_11 <- `var_11*`, func <- `func*`} + -- fun_free_list: `%%`(var_11*{var_11 <- `var_11*`}, var_10) + -- if (|`var_9*`| = |`table*`|) + -- (fun_free_table: `%%`(table, var_9))*{var_9 <- `var_9*`, table <- `table*`} + -- fun_free_list: `%%`(var_9*{var_9 <- `var_9*`}, var_8) + -- if (|`var_7*`| = |`mem*`|) + -- (fun_free_mem: `%%`(mem, var_7))*{var_7 <- `var_7*`, mem <- `mem*`} + -- fun_free_list: `%%`(var_7*{var_7 <- `var_7*`}, var_6) + -- if (|`var_5*`| = |`global*`|) + -- (fun_free_global: `%%`(global, var_5))*{var_5 <- `var_5*`, global <- `global*`} + -- fun_free_list: `%%`(var_5*{var_5 <- `var_5*`}, var_4) + -- if (|`var_3*`| = |`tag*`|) + -- (fun_free_tag: `%%`(tag, var_3))*{var_3 <- `var_3*`, tag <- `tag*`} + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- if (|`var_1*`| = |`type*`|) + -- (fun_free_type: `%%`(type, var_1))*{var_1 <- `var_1*`, type <- `type*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_funcidx_module: `%%`(module, funcidx*) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_funcidx_module_case_0{module : module, var_0 : free}: + `%%`(module, var_0.FUNCS_free) + -- fun_free_module: `%%`(module, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_dataidx_funcs: `%%`(func*, dataidx*) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_dataidx_funcs_case_0{`func*` : func*, `var_1*` : free*, var_0 : free}: + `%%`(func#2*{func#2 <- `func*`}, var_0.DATAS_free) + -- if (|`var_1*`| = |`func*`|) + -- (fun_free_func: `%%`(func, var_1))*{var_1 <- `var_1*`, func <- `func*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax init = + | SET + | UNSET + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax localtype = + | `%%`(init : init, valtype : valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_localtype: `%`(localtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule localtype_case_0{init : init, valtype : valtype}: + `%`(`%%`_localtype(init, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax instrtype = + | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : resulttype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_instrtype: `%`(instrtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule instrtype_case_0{resulttype : resulttype, `localidx*` : localidx*, resulttype_0 : resulttype}: + `%`(`%->_%%`_instrtype(resulttype, `localidx*`, resulttype_0)) + -- (wf_uN: `%%`(32, localidx))*{localidx <- `localidx*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax context = +{ + TYPES deftype*, + TAGS tagtype*, + GLOBALS globaltype*, + MEMS memtype*, + TABLES tabletype*, + FUNCS deftype*, + DATAS datatype*, + ELEMS elemtype*, + LOCALS localtype*, + LABELS resulttype*, + RETURN resulttype?, + REFS funcidx*, + RECS subtype* +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_context: `%`(context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule context_case_{var_0 : deftype*, var_1 : tagtype*, var_2 : globaltype*, var_3 : memtype*, var_4 : tabletype*, var_5 : deftype*, var_6 : datatype*, var_7 : elemtype*, var_8 : localtype*, var_9 : resulttype*, var_10 : resulttype?, var_11 : funcidx*, var_12 : subtype*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, RETURN var_10, REFS var_11, RECS var_12}) + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- (wf_globaltype: `%`(var_2))*{var_2 <- var_2} + -- (wf_memtype: `%`(var_3))*{var_3 <- var_3} + -- (wf_tabletype: `%`(var_4))*{var_4 <- var_4} + -- (wf_reftype: `%`(var_7))*{var_7 <- var_7} + -- (wf_localtype: `%`(var_8))*{var_8 <- var_8} + -- (wf_uN: `%%`(32, var_11))*{var_11 <- var_11} + -- (wf_subtype: `%`(var_12))*{var_12 <- var_12} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_with_locals_before_fun_with_locals_case_2: `%%%`(context, localidx*, localtype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_with_locals_case_1{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, var_0 : context?}: + `%%%`(C, [x_1] ++ x#1*{x#1 <- `x*`}, [lct_1] ++ lct#1*{lct#1 <- `lct*`}) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_with_locals_case_0{C : context}: + `%%%`(C, [], []) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation fun_with_locals: `%%%%`(context, localidx*, localtype*, context?) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_0{C : context}: + `%%%%`(C, [], [], ?(C)) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_1{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, var_0 : context?}: + `%%%%`(C, [x_1] ++ x#1*{x#1 <- `x*`}, [lct_1] ++ lct#1*{lct#1 <- `lct*`}, var_0) + -- fun_with_locals: `%%%%`(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}, var_0) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_2{x0 : context, x1 : localidx*, x2 : localtype*}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_with_locals_before_fun_with_locals_case_2: `%%%`(x0, x1, x2) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 +relation fun_clos_deftypes: `%%`(deftype*, deftype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 + rule fun_clos_deftypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 + rule fun_clos_deftypes_case_1{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%`(dt#2*{dt#2 <- `dt*`} ++ [dt_n], dt'*{dt' <- `dt'*`} ++ [var_0]) + -- fun_clos_deftypes: `%%`(dt#3*{dt#3 <- `dt*`}, var_1) + -- fun_subst_all_deftype: `%%%`(dt_n, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) + -- if (dt'#1*{dt'#1 <- `dt'*`} = var_1) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_valtype: `%%%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_valtype_case_0{C : context, t : valtype, `dt*` : deftype*, var_1 : deftype*, var_0 : valtype}: + `%%%`(C, t, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- if (dt#4*{dt#4 <- `dt*`} = var_1) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_deftype: `%%%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_deftype_case_0{C : context, dt : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%%`(C, dt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_deftype: `%%%`(dt, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) + -- if (dt'#2*{dt'#2 <- `dt'*`} = var_1) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_tagtype: `%%%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_tagtype_case_0{C : context, jt : typeuse, `dt*` : deftype*, var_1 : deftype*, var_0 : tagtype}: + `%%%`(C, jt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_tagtype: `%%%`(jt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- if (dt#5*{dt#5 <- `dt*`} = var_1) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_externtype: `%%%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_externtype_case_0{C : context, xt : externtype, `dt*` : deftype*, var_1 : deftype*, var_0 : externtype}: + `%%%`(C, xt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_externtype: `%%%`(xt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- if (dt#6*{dt#6 <- `dt*`} = var_1) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_moduletype: `%%%`(context, moduletype, moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_moduletype_case_0{C : context, mmt : moduletype, `dt*` : deftype*, var_1 : deftype*, var_0 : moduletype}: + `%%%`(C, mmt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_moduletype: `%%%`(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- if (dt#7*{dt#7 <- `dt*`} = var_1) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Numtype_ok: `%|-%:OK`(context, numtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, numtype : numtype}: + `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Vectype_ok: `%|-%:OK`(context, vectype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, vectype : vectype}: + `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypenat = + | OK(nat) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Packtype_ok: `%|-%:OK`(context, packtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, packtype : packtype}: + `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, packtype : packtype}: + `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, numtype : numtype}: + `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand: `%~~%`(deftype, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*, var_0 : subtype}: + `%~~%`(deftype, comptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- if (var_0 = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- fun_unrolldt: `%%`(deftype, var_0) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, vectype : vectype}: + `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $before(typeuse : typeuse, nat : nat) : bool + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{j : nat, i : nat}(REC_typeuse(j), i) = (j < i) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{typeuse : typeuse, i : nat}(typeuse, i) = true + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation fun_unrollht_: `%%%`(context, heaptype, subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht__case_0{rectype : rectype, n : n, C : context, var_0 : subtype}: + `%%%`(C, _DEF_heaptype(rectype, n), var_0) + -- fun_unrolldt: `%%`(_DEF_deftype(rectype, n), var_0) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht__case_1{C : context, typeidx : uN, var_0 : subtype}: + `%%%`(C, _IDX_heaptype(typeidx), var_0) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(typeidx).0], var_0) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht__case_2{C : context, i : nat}: + `%%%`(C, REC_heaptype(i), C.RECS_context[i]) + -- if (i < |C.RECS_context|) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 +relation Heaptype_ok: `%|-%:OK`(context, heaptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 + rule abs{C : context, absheaptype : absheaptype}: + `%|-%:OK`(C, $heaptype_absheaptype(absheaptype)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 + rule typeuse{C : context, typeuse : typeuse}: + `%|-%:OK`(C, $heaptype_typeuse(typeuse)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 +relation Reftype_ok: `%|-%:OK`(context, reftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:30.1-32.37 + rule _{C : context, heaptype : heaptype}: + `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) + -- Heaptype_ok: `%|-%:OK`(C, heaptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 +relation Valtype_ok: `%|-%:OK`(context, valtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:34.1-36.35 + rule num{C : context, numtype : numtype}: + `%|-%:OK`(C, $valtype_numtype(numtype)) + -- wf_context: `%`(C) + -- Numtype_ok: `%|-%:OK`(C, numtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 + rule vec{C : context, vectype : vectype}: + `%|-%:OK`(C, $valtype_vectype(vectype)) + -- wf_context: `%`(C) + -- Vectype_ok: `%|-%:OK`(C, vectype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 + rule ref{C : context, reftype : reftype}: + `%|-%:OK`(C, $valtype_reftype(reftype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) + -- Reftype_ok: `%|-%:OK`(C, reftype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 +relation Typeuse_ok: `%|-%:OK`(context, typeuse) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:106.1-108.30 + rule typeidx{C : context, typeidx : typeidx, dt : deftype}: + `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 + rule rec{C : context, i : n, st : subtype}: + `%|-%:OK`(C, REC_typeuse(i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) + -- if (i < |C.RECS_context|) + -- if (C.RECS_context[i] = st) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 + rule deftype{C : context, deftype : deftype}: + `%|-%:OK`(C, $typeuse_deftype(deftype)) + -- wf_context: `%`(C) + -- Deftype_ok: `%|-%:OK`(C, deftype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 +relation Resulttype_ok: `%|-%:OK`(context, resulttype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:60.1-62.32 + rule _{C : context, `t*` : valtype*}: + `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} + -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 +relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:130.1-132.43 + rule _{C : context, storagetype : storagetype}: + `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) + -- Storagetype_ok: `%|-%:OK`(C, storagetype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 +relation Storagetype_ok: `%|-%:OK`(context, storagetype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:122.1-124.35 + rule val{C : context, valtype : valtype}: + `%|-%:OK`(C, $storagetype_valtype(valtype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- Valtype_ok: `%|-%:OK`(C, valtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 + rule pack{C : context, packtype : packtype}: + `%|-%:OK`(C, $storagetype_packtype(packtype)) + -- wf_context: `%`(C) + -- Packtype_ok: `%|-%:OK`(C, packtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 +relation Comptype_ok: `%|-%:OK`(context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:135.1-137.42 + rule struct{C : context, `fieldtype*` : fieldtype*}: + `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 + rule array{C : context, fieldtype : fieldtype}: + `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 + rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 +relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:167.1-176.49 + rule _{C : context, `typeuse*` : typeuse*, comptype : comptype, i : nat, `comptype'*` : comptype*, `typeuse'**` : typeuse**, `var_0*` : subtype*}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype), OK_oktypenat(i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) + -- if (|`comptype'*`| = |`typeuse'**`|) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} + -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) + -- (Typeuse_ok: `%|-%:OK`(C, typeuse))*{typeuse <- `typeuse*`} + -- (if $before(typeuse, i))*{typeuse <- `typeuse*`} + -- if (|`var_0*`| = |`comptype'*`|) + -- if (|`var_0*`| = |`typeuse'**`|) + -- (if (var_0 = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- if (|`var_0*`| = |`typeuse*`|) + -- (fun_unrollht_: `%%%`(C, $heaptype_typeuse(typeuse), var_0))*{var_0 <- `var_0*`, typeuse <- `typeuse*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 +relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 + rule empty{C : context, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypenat(i)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypenat(i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) + -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypenat((i + 1))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 +relation Deftype_ok: `%|-%:OK`(context, deftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:197.1-201.14 + rule _{C : context, rectype : rectype, i : n, n : n, `subtype*` : subtype*}: + `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}}) + -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) + -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) + -- if (i < n) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 +relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:181.1-183.41 + rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: + `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- if (|`ft_1*`| = |`ft_2*`|) + -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 + rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: + `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) + -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 + rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: + `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 +relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype, var_1 : deftype, var_0 : deftype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- if (var_0 = var_1) + -- fun_clos_deftype: `%%%`(C, deftype_2, var_1) + -- fun_clos_deftype: `%%%`(C, deftype_1, var_0) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat, var_0 : subtype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- if (var_0 = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- if (i < |typeuse*{typeuse <- `typeuse*`}|) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) + -- fun_unrolldt: `%%`(deftype_1, var_0) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 +relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 + rule refl{C : context, heaptype : heaptype}: + `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 + rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: + `%|-%<:%`(C, heaptype_1, heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') + -- Heaptype_ok: `%|-%:OK`(C, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 + rule `eq-any`{C : context}: + `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 + rule `i31-eq`{C : context}: + `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 + rule `struct-eq`{C : context}: + `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 + rule `array-eq`{C : context}: + `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 + rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, $heaptype_deftype(deftype), STRUCT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 + rule array{C : context, deftype : deftype, fieldtype : fieldtype}: + `%|-%<:%`(C, $heaptype_deftype(deftype), ARRAY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 + rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, $heaptype_deftype(deftype), FUNC_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 + rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) + -- wf_context: `%`(C) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 + rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: + `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 + rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: + `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 + rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) + -- if (i < |C.RECS_context|) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 + rule `rec-array`{C : context, i : n, `final?` : final?, fieldtype : fieldtype}: + `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + -- if (i < |C.RECS_context|) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 + rule `rec-func`{C : context, i : n, `final?` : final?, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (i < |C.RECS_context|) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 + rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: + `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[j])) + -- if (j < |typeuse*{typeuse <- `typeuse*`}|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- if (i < |C.RECS_context|) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 + rule none{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NONE_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + -- if (heaptype =/= BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:86.1-89.25 + rule nofunc{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + -- if (heaptype =/= BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:91.1-94.25 + rule noexn{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + -- if (heaptype =/= BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:96.1-99.25 + rule noextern{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + -- if (heaptype =/= BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 + rule bot{C : context, heaptype : heaptype}: + `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 +relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:105.1-107.37 + rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 + rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 +relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:114.1-116.46 + rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: + `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) + -- wf_context: `%`(C) + -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 + rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: + `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) + -- wf_context: `%`(C) + -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 + rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: + `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 + rule bot{C : context, valtype : valtype}: + `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 +relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-137.37 + rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} + -- if (|`t_1*`| = |`t_2*`|) + -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 +relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:162.1-164.46 + rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 + rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: + `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) + -- wf_context: `%`(C) + -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 +relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:171.1-173.40 + rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 + rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Localtype_ok: `%|-%:OK`(context, localtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, init : init, t : valtype}: + `%|-%:OK`(C, `%%`_localtype(init, t)) + -- wf_context: `%`(C) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + -- Valtype_ok: `%|-%:OK`(C, t) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Instrtype_ok: `%|-%:OK`(context, instrtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- if (|`lct*`| = |`x*`|) + -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand_use: `%~~_%%`(typeuse, context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule deftype{deftype : deftype, C : context, comptype : comptype}: + `%~~_%%`($typeuse_deftype(deftype), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- Expand: `%~~%`(deftype, comptype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: + `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidx = + | OK(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation wf_oktypeidx: `%`(oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule oktypeidx_case_0{typeidx : typeidx}: + `%`(OK_oktypeidx(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `comptype'*` : comptype*, `yy**` : typeuse**, `var_0*` : subtype*}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- if (|`comptype'*`| = |`yy**`|) + -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} + -- if (|x*{x <- `x*`}| <= 1) + -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} + -- if (|`var_0*`| = |`comptype'*`|) + -- if (|`var_0*`| = |`yy**`|) + -- (if (var_0 = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `yy*` <- `yy**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- if (|`var_0*`| = |`x*`|) + -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} + -- (fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(x).0], var_0))*{var_0 <- `var_0*`, x <- `x*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.126 +relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 + rule empty{C : context, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) + -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Limits_ok: `%|-%:%`(context, limits, nat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, n : n, `m?` : m?, k : nat}: + `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) + -- if (n <= k) + -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tagtype_ok: `%|-%:OK`(context, tagtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Globaltype_ok: `%|-%:OK`(context, globaltype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, t : valtype}: + `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + -- Valtype_ok: `%|-%:OK`(C, t) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Memtype_ok: `%|-%:OK`(context, memtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits}: + `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) + -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size($numtype_addrtype(addrtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tabletype_ok: `%|-%:OK`(context, tabletype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: + `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) + -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size($numtype_addrtype(addrtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Externtype_ok: `%|-%:OK`(context, externtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule tag{C : context, tagtype : tagtype}: + `%|-%:OK`(C, TAG_externtype(tagtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule global{C : context, globaltype : globaltype}: + `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mem{C : context, memtype : memtype}: + `%|-%:OK`(C, MEM_externtype(memtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) + -- Memtype_ok: `%|-%:OK`(C, memtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule table{C : context, tabletype : tabletype}: + `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: + `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) + -- if (|`t*`| = |`x*`|) + -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Limits_sub: `%|-%<:%`(context, limits, limits) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + -- if (n_1 >= n_2) + -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule eps{C : context, n_1 : n, n_2 : n}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) + -- if (n_1 >= n_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) + -- wf_context: `%`(C) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: + `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: + `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: + `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) + -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: + `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) + -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: + `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) + -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: + `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) + -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule valtype{C : context, `valtype?` : valtype?}: + `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Catch_ok: `%|-%:OK`(context, catch) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*, var_0 : deftype?}: + `%|-%:OK`(C, CATCH_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if (var_0 =/= ?()) + -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*, var_0 : deftype?}: + `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if (var_0 =/= ?()) + -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all_ref{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation fun_default__before_fun_default__case_7: `%`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_6{ht : heaptype}: + `%`(REF_valtype(?(), ht)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_5{ht : heaptype}: + `%`(REF_valtype(?(NULL_null), ht)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_4: + `%`(V128_valtype) + -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_3{var_0 : fN}: + `%`(F64_valtype) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_2{var_0 : fN}: + `%`(F32_valtype) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_1: + `%`(I64_valtype) + -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_0: + `%`(I32_valtype) + -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation fun_default_: `%%`(valtype, val??) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_0: + `%%`(I32_valtype, ?(?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))))) + -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_1: + `%%`(I64_valtype, ?(?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))))) + -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_2{var_0 : fN}: + `%%`(F32_valtype, ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_3{var_0 : fN}: + `%%`(F64_valtype, ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_4: + `%%`(V128_valtype, ?(?(VCONST_val(V128_vectype, `%`_vec_(0))))) + -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_5{ht : heaptype}: + `%%`(REF_valtype(?(NULL_null), ht), ?(?(`REF.NULL_ADDR`_val))) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_6{ht : heaptype}: + `%%`(REF_valtype(?(), ht), ?(?())) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_7{x0 : valtype}: + `%%`(x0, ?()) + -- ~ fun_default__before_fun_default__case_7: `%`(x0) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Defaultable: `|-%DEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype, var_0 : val??}: + `|-%DEFAULTABLE`(t) + -- wf_valtype: `%`(t) + -- if (var_0 =/= ?()) + -- if (!(var_0) =/= ?()) + -- fun_default_: `%%`(t, var_0) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{n : n, m : m, at : addrtype, N : N}: + `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) + -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) + -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- if (m < (2 ^ $size($numtype_addrtype(at)))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation fun_is_packtype: `%%`(storagetype, bool) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule fun_is_packtype_case_0{zt : storagetype, var_0 : valtype}: + `%%`(zt, (zt =/= $storagetype_valtype(var_0))) + -- fun_unpack: `%%`(zt, var_0) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 +relation Instr_ok: `%|-%:%`(context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 + rule nop{C : context}: + `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 + rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 + rule drop{C : context, t : valtype}: + `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- Valtype_ok: `%|-%:OK`(C, t) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 + rule `select-expl`{C : context, t : valtype}: + `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 + rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Valtype_sub: `%|-%<:%`(C, t, t') + -- if ((t' = $valtype_numtype(numtype)) \/ (t' = $valtype_vectype(vectype))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 + rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 + rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 + rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 + rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 + rule br_if{C : context, l : labelidx, `t*` : valtype*}: + `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 + rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} + -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} + -- if ($proj_uN_0(l').0 < |C.LABELS_context|) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 + rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 + rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, var_0 : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(var_0)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(var_0)]))) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, var_0 : reftype}: + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, var_0, rt) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 + rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 + rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 + rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: + `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- if ($proj_uN_0(y).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 + rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 + rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 + rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 + rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- if ($proj_uN_0(y).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 + rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*, var_0 : deftype?}: + `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (var_0 =/= ?()) + -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 + rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 + rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 + rule `ref.null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.NULL`_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 + rule `ref.func`{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.FUNC`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + -- if (|C.REFS_context| > 0) + -- if (x <- C.REFS_context) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 + rule `ref.i31`{C : context}: + `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.I31`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 + rule `ref.is_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 + rule `ref.as_non_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 + rule `ref.eq`{C : context}: + `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 + rule `ref.test`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.TEST`_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 + rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.CAST`_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 + rule `i31.get`{C : context, sx : sx}: + `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 + rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*, `var_0*` : valtype*}: + `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (|`var_0*`| = |`zt*`|) + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 + rule `struct.new_default`{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*, `var_0*` : valtype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (Defaultable: `|-%DEFAULTABLE`(var_0))*{var_0 <- `var_0*`} + -- if (|`var_0*`| = |`zt*`|) + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 + rule `struct.get`{C : context, `sx?` : sx?, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([var_0]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([var_0]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> var_1) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 + rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*, var_0 : valtype}: + `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) + -- fun_unpack: `%%`(zt, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 + rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([var_0 I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([var_0 I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- fun_unpack: `%%`(zt, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 + rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Defaultable: `|-%DEFAULTABLE`(var_0) + -- fun_unpack: `%%`(zt, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 + rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype(var_0^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(var_0^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- fun_unpack: `%%`(zt, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 + rule `array.new_elem`{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: + `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) + -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) + -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 + rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((var_0 = $valtype_numtype(numtype)) \/ (var_0 = $valtype_vectype(vectype))) + -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- fun_unpack: `%%`(zt, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 + rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([var_0]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([var_0]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> var_1) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 + rule `array.set`{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- fun_unpack: `%%`(zt, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 + rule `array.len`{C : context}: + `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.LEN`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 + rule `array.fill`{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- fun_unpack: `%%`(zt, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 + rule `array.copy`{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 + rule `array.init_elem`{C : context, x : idx, y : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) + -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 + rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ((var_0 = $valtype_numtype(numtype)) \/ (var_0 = $valtype_vectype(vectype))) + -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- fun_unpack: `%%`(zt, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 + rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 + rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 + rule `local.get`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 + rule `local.set`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 + rule `local.tee`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 + rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: + `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 + rule `global.set`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 + rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 + rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 + rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 + rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: + `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.GROW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 + rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 + rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) + -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) + -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 + rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) + -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) + -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 + rule `elem.drop`{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) + -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: + `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) + -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) + -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + rule `data.drop`{C : context, x : idx}: + `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`DATA.DROP`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if ($proj_uN_0(x).0 < |C.DATAS_context|) + -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 + rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 + rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 + rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 + rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 + rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 + rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 + rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 + rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 + rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 + rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 + rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 + rule unop{C : context, nt : numtype, unop_nt : unop_}: + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 + rule binop{C : context, nt : numtype, binop_nt : binop_}: + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 + rule testop{C : context, nt : numtype, testop_nt : testop_}: + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 + rule relop{C : context, nt : numtype, relop_nt : relop_}: + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 + rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 + rule vconst{C : context, c : vec_}: + `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 + rule vvunop{C : context, vvunop : vvunop}: + `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 + rule vvbinop{C : context, vvbinop : vvbinop}: + `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 + rule vvternop{C : context, vvternop : vvternop}: + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 + rule vvtestop{C : context, vvtestop : vvtestop}: + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 + rule vunop{C : context, sh : shape, vunop : vunop_}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 + rule vternop{C : context, sh : shape, vternop : vternop_}: + `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 + rule vbitmask{C : context, sh : ishape}: + `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 + rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 + rule vshuffle{C : context, sh : bshape, `i*` : laneidx*, var_0 : dim}: + `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0(var_0).0)))*{i <- `i*`} + -- fun_dim: `%%`($proj_bshape_0(sh).0, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 + rule vsplat{C : context, sh : shape}: + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 + rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx, var_0 : dim}: + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) + -- fun_dim: `%%`(sh, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 + rule vreplace_lane{C : context, sh : shape, i : laneidx, var_0 : dim}: + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) + -- fun_dim: `%%`(sh, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 + rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 + rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 + rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 + rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 + rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 +relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 + rule empty{C : context}: + `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 + rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*, var_0 : context?}: + `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (|`init*`| = |`t*`|) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (|`init*`| = |`x_1*`|) + -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- if (var_0 =/= ?()) + -- Instrs_ok: `%|-%:%`(!(var_0), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- fun_with_locals: `%%%%`(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 + rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 + rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) +} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok: `%|-%:%`(context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*, `t*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype, var_0 : val??}: + `|-%NONDEFAULTABLE`(t) + -- wf_valtype: `%`(t) + -- if (var_0 =/= ?()) + -- if (!(var_0) = ?()) + -- fun_default_: `%%`(t, var_0) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Instr_const: `%|-%CONST`(context, instr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule vconst{C : context, vt : vectype, c_vt : vec_}: + `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.null`{C : context, ht : heaptype}: + `%|-%CONST`(C, `REF.NULL`_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.NULL`_instr(ht)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.i31`{C : context}: + `%|-%CONST`(C, `REF.I31`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.I31`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.func`{C : context, x : idx}: + `%|-%CONST`(C, `REF.FUNC`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.FUNC`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `struct.new`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `struct.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new_fixed`{C : context, x : idx, n : n}: + `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `any.convert_extern`{C : context}: + `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `extern.convert_any`{C : context}: + `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `global.get`{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule binop{C : context, Inn : Inn, binop : binop_}: + `%|-%CONST`(C, BINOP_instr($numtype_addrtype(Inn), binop)) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr($numtype_addrtype(Inn), binop)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, MUL_binop_Inn)) + -- if (|[I32_Inn I64_Inn]| > 0) + -- if (Inn <- [I32_Inn I64_Inn]) + -- if (|[mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]| > 0) + -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_const: `%|-%CONST`(context, expr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*}: + `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, expr : expr, t : valtype}: + `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) + -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) + -- Expr_const: `%|-%CONST`(C, expr) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Type_ok: `%|-%:%`(context, type, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx, var_0 : deftype*}: + `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- if ($proj_uN_0(x).0 = |C.TYPES_context|) + -- if (dt*{dt <- `dt*`} = var_0) + -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) + -- fun_rolldt: `%%%`(x, rectype, var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Tag_ok: `%|-%:%`(context, tag, tagtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tagtype : tagtype, var_0 : tagtype}: + `%|-%:%`(C, TAG_tag(tagtype), var_0) + -- wf_context: `%`(C) + -- wf_tag: `%`(TAG_tag(tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + -- fun_clos_tagtype: `%%%`(C, tagtype, var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Global_ok: `%|-%:%`(context, global, globaltype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: + `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Mem_ok: `%|-%:%`(context, mem, memtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, memtype : memtype}: + `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) + -- Memtype_ok: `%|-%:OK`(C, memtype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Table_ok: `%|-%:%`(context, table, tabletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- if (tabletype = `%%%`_tabletype(at, lim, rt)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(rt)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Local_ok: `%|-%:%`(context, local, localtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule set{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + -- Defaultable: `|-%DEFAULTABLE`(t) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule unset{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) + -- Nondefaultable: `|-%NONDEFAULTABLE`(t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Func_ok: `%|-%:%`(context, func, deftype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (|`lct*`| = |`local*`|) + -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Datamode_ok: `%|-%:%`(context, datamode, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context}: + `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: + `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Data_ok: `%|-%:%`(context, data, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, `b*` : byte*, datamode : datamode}: + `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) + -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context, rt : reftype}: + `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule declare{C : context, rt : reftype}: + `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: + `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elem_ok: `%|-%:%`(context, elem, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: + `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) + -- Reftype_ok: `%|-%:OK`(C, elemtype) + -- (Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(elemtype)))*{expr <- `expr*`} + -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Start_ok: `%|-%:OK`(context, start) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx}: + `%|-%:OK`(C, START_start(x)) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Import_ok: `%|-%:%`(context, import, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name_1 : name, name_2 : name, xt : externtype, var_0 : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), var_0) + -- wf_context: `%`(C) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) + -- Externtype_ok: `%|-%:OK`(C, xt) + -- fun_clos_externtype: `%%%`(C, xt, var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Externidx_ok: `%|-%:%`(context, externidx, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule tag{C : context, x : idx, jt : tagtype}: + `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule global{C : context, x : idx, gt : globaltype}: + `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mem{C : context, x : idx, mt : memtype}: + `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule table{C : context, x : idx, tt : tabletype}: + `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Export_ok: `%|-%:%%`(context, export, name, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name : name, externidx : externidx, xt : externtype}: + `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) + -- Externidx_ok: `%|-%:%`(C, externidx, xt) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 +relation Globals_ok: `%|-%:%`(context, global*, globaltype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 + rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: + `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Global_ok: `%|-%:%`(C, global_1, gt_1) + -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 +relation Types_ok: `%|-%:%`(context, type*, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 + rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: + `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) + -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +syntax nonfuncs = + | `%%%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation wf_nonfuncs: `%`(nonfuncs) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}: + `%`(`%%%%%%`_nonfuncs(`global*`, `mem*`, `table*`, `elem*`, `start?`, `export*`)) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_mem: `%`(mem))*{mem <- `mem*`} + -- (wf_table: `%`(table))*{table <- `table*`} + -- (wf_elem: `%`(elem))*{elem <- `elem*`} + -- (wf_start: `%`(start))?{start <- `start?`} + -- (wf_export: `%`(export))*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule fun_funcidx_nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*, var_0 : funcidx*}: + `%%`(`%%%%%%`_nonfuncs(global#2*{global#2 <- `global*`}, mem#2*{mem#2 <- `mem*`}, table#2*{table#2 <- `table*`}, elem#2*{elem#2 <- `elem*`}, start#2?{start#2 <- `start?`}, export#2*{export#2 <- `export*`}), var_0) + -- fun_funcidx_module: `%%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) + -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#3*{export#3 <- `export*`}))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Module_ok: `|-%:%`(module, moduletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*, var_1 : funcidx*, var_0 : moduletype}: + `|-%:%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) + -- wf_nonfuncs: `%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) + -- if (|`import*`| = |`xt_I*`|) + -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + -- if (|`jt*`| = |`tag*`|) + -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} + -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- if (|`mem*`| = |`mt*`|) + -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} + -- if (|`table*`| = |`tt*`|) + -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} + -- if (|`dt*`| = |`func*`|) + -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} + -- if (|`data*`| = |`ok*`|) + -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} + -- if (|`elem*`| = |`rt*`|) + -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} + -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} + -- if (|`export*`| = |`nm*`|) + -- if (|`export*`| = |`xt_E*`|) + -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} + -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) + -- if (C = C' +++ {TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) + -- if (x*{x <- `x*`} = var_1) + -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) + -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) + -- fun_funcidx_nonfuncs: `%%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_1) + -- fun_clos_moduletype: `%%%`(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}), var_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed2 = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed2_0(x : relaxed2) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed2_0{v_num_0 : nat}(`%`_relaxed2(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed2: `%`(relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed2_case_0{i : nat}: + `%`(`%`_relaxed2(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed4 = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed4_0(x : relaxed4) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed4_0{v_num_0 : nat}(`%`_relaxed4(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed4: `%`(relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed4_case_0{i : nat}: + `%`(`%`_relaxed4(i)) + -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = (if $ND then [X_1 X_2][$proj_relaxed2_0(i).0] else [X_1 X_2][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][$proj_relaxed4_0(i).0] else [X_1 X_2 X_3 X_4][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmadd : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmin : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmax : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_idot : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_iq15mulr : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_u : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_s : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_swizzle : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_laneselect : relaxed2 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $s33_to_u32(s33 : s33) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibits_(N : N, iN : iN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbits_(N : N, fN : fN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibytes_(N : N, iN : iN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbytes_(N : N, fN : fN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $nbytes_(numtype : numtype, num_ : num_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $vbytes_(vectype : vectype, vec_ : vec_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibits_(N : N, bit*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbits_(N : N, bit*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibytes_(N : N, byte*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbytes_(N : N, byte*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_nbytes_(numtype : numtype, byte*) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_vbytes_(vectype : vectype, byte*) : vec_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_signed_: `%%%`(N, nat, int) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_signed__case_0{N : nat, i : nat}: + `%%%`(N, i, (i : nat <:> int)) + -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_signed__case_1{N : nat, i : nat}: + `%%%`(N, i, ((i : nat <:> int) - ((2 ^ N) : nat <:> int))) + -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_inv_signed_: `%%%`(N, int, nat) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_inv_signed__case_0{N : nat, i : int}: + `%%%`(N, i, (i : int <:> nat)) + -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_inv_signed__case_1{N : nat, i : int}: + `%%%`(N, i, ((i + ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_sx_before_fun_sx_case_7: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_6: + `%`(I16_storagetype) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_5: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_4: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_0: + `%`(I32_storagetype) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_sx: `%%`(storagetype, sx??) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_0: + `%%`(I32_storagetype, ?(?())) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_1: + `%%`(I64_storagetype, ?(?())) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_2: + `%%`(F32_storagetype, ?(?())) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_3: + `%%`(F64_storagetype, ?(?())) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_4: + `%%`(V128_storagetype, ?(?())) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_5: + `%%`(I8_storagetype, ?(?(S_sx))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_6: + `%%`(I16_storagetype, ?(?(S_sx))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_7{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_sx_before_fun_sx_case_7: `%`(x0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_zero: `%%`(lanetype, lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_0: + `%%`(I32_lanetype, mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_1: + `%%`(I64_lanetype, mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_2: + `%%`(I8_lanetype, mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_3: + `%%`(I16_lanetype, mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_4{var_0 : fN}: + `%%`(F32_lanetype, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_5{var_0 : fN}: + `%%`(F64_lanetype, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $bool(bool : bool) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(false) = 0 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(true) = 1 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $truncz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ceilz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_u_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_u_{N : nat, i : int}(N, i) = (if (i < (0 : nat <:> int)) then 0 else (if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) then ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) else (i : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_s_(N : N, int : int) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_s_{N : nat, i : int}(N, i) = (if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) then - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) else (if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) then (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) else i)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ineg_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iabs_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iabs_{N : nat, i_1 : uN, var_0 : int}(N, i_1) = (if (var_0 >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iclz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ictz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ipopcnt_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_iextend_: `%%%%%`(N, M, sx, iN, iN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_iextend__case_0{N : nat, M : nat, i : uN}: + `%%%%%`(N, M, U_sx, i, `%`_iN(($proj_uN_0(i).0 \ (2 ^ M)))) + -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_iextend__case_1{N : nat, M : nat, i : uN, var_1 : int, var_0 : nat}: + `%%%%%`(N, M, S_sx, i, `%`_iN(var_0)) + -- fun_signed_: `%%%`(M, ($proj_uN_0(i).0 \ (2 ^ M)), var_1) + -- fun_inv_signed_: `%%%`(N, var_1, var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imul_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)))) + -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_3{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: + `%%%%%`(N, S_sx, i_1, i_2, ?()) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_4{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))) + -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_3{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + -- if ((j_1 = var_1) /\ (j_2 = var_2)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 <= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 >= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 + var_2)), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 - var_2)), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_q15mulr_(N : N, sx : sx, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iavgr_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inot_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irev_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iand_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iandnot_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ior_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ixor_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishl_(N : N, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishr_(N : N, sx : sx, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotl_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotr_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibitselect_(N : N, iN : iN, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_ieqz_: `%%%`(N, iN, u32) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_ieqz__case_0{N : nat, i_1 : uN}: + `%%%`(N, i_1, `%`_u32($bool(($proj_uN_0(i_1).0 = 0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_inez_: `%%%`(N, iN, u32) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_inez__case_0{N : nat, i_1 : uN}: + `%%%`(N, i_1, `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieq_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ine_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 < var_1))) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 < var_1)))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 > var_1))) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 > var_1)))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 <= var_1))) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 <= var_1)))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 >= var_1))) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 >= var_1)))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fabs_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fneg_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsqrt_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fceil_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ffloor_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ftrunc_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fnearest_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fadd_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsub_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmul_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fdiv_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fcopysign_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $feq_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fne_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $flt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fgt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fle_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fge_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $wrap__(M : M, N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $extend__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc_sat__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $demote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $promote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $convert__(M : M, N : N, sx : sx, iN : iN) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_lpacknum_: `%%%`(lanetype, num_, lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, c, mk_lane__0_lane_(I32_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, c, mk_lane__0_lane_(I64_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, c, mk_lane__0_lane_(F32_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, c, mk_lane__0_lane_(F64_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_cpacknum_: `%%%`(storagetype, lit_, lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_5{c : uN}: + `%%%`(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_6{c : uN}: + `%%%`(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_lunpacknum_: `%%%`(lanetype, lane_, num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, mk_lane__0_lane_(I32_numtype, c), c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, mk_lane__0_lane_(I64_numtype, c), c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, mk_lane__0_lane_(F32_numtype, c), c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, mk_lane__0_lane_(F64_numtype, c), c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_lane__1_lane_(I8_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_lane__1_lane_(I16_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_cunpacknum_: `%%%`(storagetype, lit_, lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_5{c : uN, var_0 : consttype?}: + `%%%`(I8_storagetype, mk_lit__2_lit_(I8_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + -- fun_cunpack: `%%`($storagetype_packtype(I8_packtype), var_0) + -- if (var_0 =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!(var_0)), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_6{c : uN, var_0 : consttype?}: + `%%%`(I16_storagetype, mk_lit__2_lit_(I16_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + -- fun_cunpack: `%%`($storagetype_packtype(I16_packtype), var_0) + -- if (var_0 =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!(var_0)), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_0{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_1{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_2{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_3{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_4{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_5{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_6{M : nat, i : uN, var_0 : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, var_0)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_7{M : nat, i : uN, var_0 : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, var_0)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_8{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#1)))*{iter_0#1 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_9{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#3)))*{iter_0#3 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_10{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#6)*{iter_0#6 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#5)))*{iter_0#5 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_11{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#7)))*{iter_0#7 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_12{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#10)*{iter_0#10 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#9)))*{iter_0#9 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_13{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#11)))*{iter_0#11 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_14{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#14)*{iter_0#14 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#13)))*{iter_0#13 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_15{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#16)*{iter_0#16 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#15)))*{iter_0#15 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_16{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#18)*{iter_0#18 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#17)))*{iter_0#17 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_17{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#19)))*{iter_0#19 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_18{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#22)*{iter_0#22 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#21)))*{iter_0#21 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_19{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#23)))*{iter_0#23 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_20{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#26)*{iter_0#26 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#25)))*{iter_0#25 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_21{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#27)))*{iter_0#27 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_binop_: `%%%%%`(numtype, binop_, num_, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_0{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_1{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_2{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_3{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_4{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_5{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_6{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#30)*{iter_0#30 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#29)))*{iter_0#29 <- lift(var_0)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_7{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#32)*{iter_0#32 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#31)))*{iter_0#31 <- lift(var_0)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_8{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#33)))*{iter_0#33 <- lift(var_0)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_9{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#35)))*{iter_0#35 <- lift(var_0)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_10{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_11{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_12{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_13{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_14{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_15{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_16{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_17{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_18{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_19{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_20{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_21{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_22{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_23{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_24{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#38)*{iter_0#38 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#37)))*{iter_0#37 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_25{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#40)*{iter_0#40 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#39)))*{iter_0#39 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_26{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#41)))*{iter_0#41 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_27{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#43)))*{iter_0#43 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_28{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#45)))*{iter_0#45 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_29{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#47)))*{iter_0#47 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_30{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#50)*{iter_0#50 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#49)))*{iter_0#49 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_31{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#52)*{iter_0#52 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#51)))*{iter_0#51 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_32{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#54)*{iter_0#54 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#53)))*{iter_0#53 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_33{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#56)*{iter_0#56 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#55)))*{iter_0#55 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_34{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#58)*{iter_0#58 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#57)))*{iter_0#57 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_35{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#60)*{iter_0#60 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#59)))*{iter_0#59 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_36{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#62)*{iter_0#62 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#61)))*{iter_0#61 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_37{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#64)*{iter_0#64 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#63)))*{iter_0#63 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_testop_: `%%%%`(numtype, testop_, num_, u32) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_testop__case_0{i : uN, var_0 : u32}: + `%%%%`(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I32_Inn)), i, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_testop__case_1{i : uN, var_0 : u32}: + `%%%%`(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I64_Inn)), i, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_cvtop__: `%%%%%`(numtype, numtype, cvtop__, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_0{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_1{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_2{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_3{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_4{i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_5{i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_6{i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_7{i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_8{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#66)*{iter_0#66 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#65)))*{iter_0#65 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_9{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#68)*{iter_0#68 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#67)))*{iter_0#67 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_10{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#70)*{iter_0#70 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#69)))*{iter_0#69 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_11{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#72)*{iter_0#72 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#71)))*{iter_0#71 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_12{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#74)*{iter_0#74 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#73)))*{iter_0#73 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_13{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#76)*{iter_0#76 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#75)))*{iter_0#75 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_14{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#78)*{iter_0#78 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#77)))*{iter_0#77 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_15{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#80)*{iter_0#80 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#79)))*{iter_0#79 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_16{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_17{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_18{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_19{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_20{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#82)*{iter_0#82 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#81)))*{iter_0#81 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_21{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#84)*{iter_0#84 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#83)))*{iter_0#83 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_22{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#86)*{iter_0#86 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#85)))*{iter_0#85 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_23{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#88)*{iter_0#88 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#87)))*{iter_0#87 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_24{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#90)*{iter_0#90 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#89)))*{iter_0#89 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_25{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#92)*{iter_0#92 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#91)))*{iter_0#91 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_26{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#94)*{iter_0#94 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#93)))*{iter_0#93 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_27{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#96)*{iter_0#96 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#95)))*{iter_0#95 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_28{i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_29{i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_30{i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_31{i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_32{f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_33{f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_34{f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_35{f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lanes_(shape : shape, vec_ : vec_) : lane_* + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $inv_lanes_(shape : shape, lane_*) : vec_ + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_zeroop: `%%%%`(shape, shape, vcvtop__, zero?) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2833?{half#2833 <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2834?{half#2834 <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2835?{half#2835 <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2836?{half#2836 <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2837?{half#2837 <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2838?{half#2838 <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2839?{half#2839 <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2840?{half#2840 <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3245?{zero#3245 <- `zero?`})), zero#3246?{zero#3246 <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3247?{zero#3247 <- `zero?`})), zero#3248?{zero#3248 <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3249?{zero#3249 <- `zero?`})), zero#3250?{zero#3250 <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3251?{zero#3251 <- `zero?`})), zero#3252?{zero#3252 <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3253?{zero#3253 <- `zero?`})), zero#3254?{zero#3254 <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3255?{zero#3255 <- `zero?`})), zero#3256?{zero#3256 <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3257?{zero#3257 <- `zero?`})), zero#3258?{zero#3258 <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3259?{zero#3259 <- `zero?`})), zero#3260?{zero#3260 <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3261?{zero#3261 <- `zero?`})), zero#3262?{zero#3262 <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3263?{zero#3263 <- `zero?`})), zero#3264?{zero#3264 <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3265?{zero#3265 <- `zero?`})), zero#3266?{zero#3266 <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3267?{zero#3267 <- `zero?`})), zero#3268?{zero#3268 <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3269?{zero#3269 <- `zero?`})), zero#3270?{zero#3270 <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3271?{zero#3271 <- `zero?`})), zero#3272?{zero#3272 <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3273?{zero#3273 <- `zero?`})), zero#3274?{zero#3274 <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3275?{zero#3275 <- `zero?`})), zero#3276?{zero#3276 <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_40{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_41{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_42{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_43{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_halfop: `%%%%`(shape, shape, vcvtop__, half?) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2841?{half#2841 <- `half?`}, sx)), half#2842?{half#2842 <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2843?{half#2843 <- `half?`}, sx)), half#2844?{half#2844 <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2845?{half#2845 <- `half?`}, sx)), half#2846?{half#2846 <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2847?{half#2847 <- `half?`}, sx)), half#2848?{half#2848 <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2849?{half#2849 <- `half?`}, sx)), half#2850?{half#2850 <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2851?{half#2851 <- `half?`}, sx)), half#2852?{half#2852 <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2853?{half#2853 <- `half?`}, sx)), half#2854?{half#2854 <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2855?{half#2855 <- `half?`}, sx)), half#2856?{half#2856 <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3277?{zero#3277 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3278?{zero#3278 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3279?{zero#3279 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3280?{zero#3280 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3281?{zero#3281 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3282?{zero#3282 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3283?{zero#3283 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3284?{zero#3284 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3285?{zero#3285 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3286?{zero#3286 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3287?{zero#3287 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3288?{zero#3288 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3289?{zero#3289 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3290?{zero#3290 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3291?{zero#3291 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3292?{zero#3292 <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_40{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_41{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_42{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_43{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $half(half : half, nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(LOW_half, i, j) = i + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(HIGH_half, i, j) = j + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $iswizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#1*{c#1 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) + -- wf_uN: `%%`(N, `%`_uN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN, var_0 : int}(N, c#2*{c#2 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if (var_0 < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + -- wf_uN: `%%`(N, `%`_uN(0)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i).0, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#5)*{c#5 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1#1))*{c_1#1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#3)))*{c#3 <- `c*`} + -- if (c_1#2*{c_1#2 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c#4*{c#4 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#3)))*{c_1#3 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#8)*{c#8 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1#4))*{c_1#4 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#6)))*{c#6 <- `c*`} + -- if (c_1#5*{c_1#5 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c#7*{c#7 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#6)))*{c_1#6 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#11)*{c#11 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1#7))*{c_1#7 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#9)))*{c#9 <- `c*`} + -- if (c_1#8*{c_1#8 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c#10*{c#10 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#9)))*{c_1#9 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#14)*{c#14 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1#10))*{c_1#10 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#12)))*{c#12 <- `c*`} + -- if (c_1#11*{c_1#11 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c#13*{c#13 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#12)))*{c_1#12 <- `c_1*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#17*{c#17 <- `c*#3`})*{`c*#3` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c#15))*{c#15 <- `c*#1`}*{`c*#1` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#97))))*{iter_0#97 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#13)))))}*{c_1#13 <- `c_1*`} + -- if (c_1#14*{c_1#14 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) + -- if (c#16*{c#16 <- `c*#2`}*{`c*#2` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#98))*{iter_0#98 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#15)))))}*{c_1#15 <- `c_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#20*{c#20 <- `c*#6`})*{`c*#6` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c#18))*{c#18 <- `c*#4`}*{`c*#4` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#99))))*{iter_0#99 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#16)))))}*{c_1#16 <- `c_1*`} + -- if (c_1#17*{c_1#17 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) + -- if (c#19*{c#19 <- `c*#5`}*{`c*#5` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#100))*{iter_0#100 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#18)))))}*{c_1#18 <- `c_1*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#23)*{c#23 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1#19))*{c_1#19 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2#1))*{c_2#1 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#21)))*{c#21 <- `c*`} + -- if (c_1#20*{c_1#20 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#2*{c_2#2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c#22*{c#22 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#21)), !($proj_lane__2(c_2#3)))*{c_1#21 <- `c_1*`, c_2#3 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#26)*{c#26 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1#22))*{c_1#22 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2#4))*{c_2#4 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#24)))*{c#24 <- `c*`} + -- if (c_1#23*{c_1#23 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#5*{c_2#5 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c#25*{c#25 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#24)), !($proj_lane__2(c_2#6)))*{c_1#24 <- `c_1*`, c_2#6 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#29)*{c#29 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1#25))*{c_1#25 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2#7))*{c_2#7 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#27)))*{c#27 <- `c*`} + -- if (c_1#26*{c_1#26 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#8*{c_2#8 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c#28*{c#28 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#27)), !($proj_lane__2(c_2#9)))*{c_1#27 <- `c_1*`, c_2#9 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#32)*{c#32 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1#28))*{c_1#28 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2#10))*{c_2#10 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#30)))*{c#30 <- `c*`} + -- if (c_1#29*{c_1#29 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#11*{c_2#11 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c#31*{c#31 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#30)), !($proj_lane__2(c_2#12)))*{c_1#30 <- `c_1*`, c_2#12 <- `c_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#35)*{c#35 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1#31))*{c_1#31 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2#13))*{c_2#13 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#33)))*{c#33 <- `c*`} + -- if (c_1#32*{c_1#32 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#14*{c_2#14 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c#34*{c#34 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#33)), !($proj_lane__2(c_2#15)))*{c_1#33 <- `c_1*`, c_2#15 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#38)*{c#38 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1#34))*{c_1#34 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2#16))*{c_2#16 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#36)))*{c#36 <- `c*`} + -- if (c_1#35*{c_1#35 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#17*{c_2#17 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c#37*{c#37 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#36)), !($proj_lane__2(c_2#18)))*{c_1#36 <- `c_1*`, c_2#18 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#41)*{c#41 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1#37))*{c_1#37 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2#19))*{c_2#19 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#39)))*{c#39 <- `c*`} + -- if (c_1#38*{c_1#38 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#20*{c_2#20 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c#40*{c#40 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#39)), !($proj_lane__2(c_2#21)))*{c_1#39 <- `c_1*`, c_2#21 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#44)*{c#44 <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1#40))*{c_1#40 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2#22))*{c_2#22 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#42)))*{c#42 <- `c*`} + -- if (c_1#41*{c_1#41 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#23*{c_2#23 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c#43*{c#43 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#42)), !($proj_lane__2(c_2#24)))*{c_1#42 <- `c_1*`, c_2#24 <- `c_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#47*{c#47 <- `c*#9`})*{`c*#9` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c#45))*{c#45 <- `c*#7`}*{`c*#7` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#101)))*{iter_0#101 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#43)), !($proj_lane__2(c_2#25)))}*{c_1#43 <- `c_1*`, c_2#25 <- `c_2*`} + -- if (c_1#44*{c_1#44 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#26*{c_2#26 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c#46*{c#46 <- `c*#8`}*{`c*#8` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#102)*{iter_0#102 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#45)), !($proj_lane__2(c_2#27)))}*{c_1#45 <- `c_1*`, c_2#27 <- `c_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#50*{c#50 <- `c*#12`})*{`c*#12` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c#48))*{c#48 <- `c*#10`}*{`c*#10` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#103)))*{iter_0#103 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#46)), !($proj_lane__2(c_2#28)))}*{c_1#46 <- `c_1*`, c_2#28 <- `c_2*`} + -- if (c_1#47*{c_1#47 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#29*{c_2#29 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c#49*{c#49 <- `c*#11`}*{`c*#11` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#104)*{iter_0#104 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#48)), !($proj_lane__2(c_2#30)))}*{c_1#48 <- `c_1*`, c_2#30 <- `c_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#53*{c#53 <- `c*#15`})*{`c*#15` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c#51))*{c#51 <- `c*#13`}*{`c*#13` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#105)))*{iter_0#105 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#49)), !($proj_lane__2(c_2#31)))}*{c_1#49 <- `c_1*`, c_2#31 <- `c_2*`} + -- if (c_1#50*{c_1#50 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#32*{c_2#32 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c#52*{c#52 <- `c*#14`}*{`c*#14` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#106)*{iter_0#106 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#51)), !($proj_lane__2(c_2#33)))}*{c_1#51 <- `c_1*`, c_2#33 <- `c_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#56*{c#56 <- `c*#18`})*{`c*#18` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c#54))*{c#54 <- `c*#16`}*{`c*#16` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#107)))*{iter_0#107 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#52)), !($proj_lane__2(c_2#34)))}*{c_1#52 <- `c_1*`, c_2#34 <- `c_2*`} + -- if (c_1#53*{c_1#53 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#35*{c_2#35 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c#55*{c#55 <- `c*#17`}*{`c*#17` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#108)*{iter_0#108 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#54)), !($proj_lane__2(c_2#36)))}*{c_1#54 <- `c_1*`, c_2#36 <- `c_2*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#59*{c#59 <- `c*#21`})*{`c*#21` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c#57))*{c#57 <- `c*#19`}*{`c*#19` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#109))))*{iter_0#109 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#55)))), !($proj_num__1(!($proj_lane__0(c_2#37)))))}*{c_1#55 <- `c_1*`, c_2#37 <- `c_2*`} + -- if (c_1#56*{c_1#56 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) + -- if (c_2#38*{c_2#38 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)) + -- if (c#58*{c#58 <- `c*#20`}*{`c*#20` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#110))*{iter_0#110 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#57)))), !($proj_num__1(!($proj_lane__0(c_2#39)))))}*{c_1#57 <- `c_1*`, c_2#39 <- `c_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#62*{c#62 <- `c*#24`})*{`c*#24` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c#60))*{c#60 <- `c*#22`}*{`c*#22` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#111))))*{iter_0#111 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#58)))), !($proj_num__1(!($proj_lane__0(c_2#40)))))}*{c_1#58 <- `c_1*`, c_2#40 <- `c_2*`} + -- if (c_1#59*{c_1#59 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) + -- if (c_2#41*{c_2#41 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)) + -- if (c#61*{c#61 <- `c*#23`}*{`c*#23` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#112))*{iter_0#112 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#60)))), !($proj_num__1(!($proj_lane__0(c_2#42)))))}*{c_1#60 <- `c_1*`, c_2#42 <- `c_2*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#65*{c#65 <- `c*#27`})*{`c*#27` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c#63))*{c#63 <- `c*#25`}*{`c*#25` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#113)))*{iter_0#113 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#61)), !($proj_lane__2(c_2#43)), !($proj_lane__2(c_3#1)))}*{c_1#61 <- `c_1*`, c_2#43 <- `c_2*`, c_3#1 <- `c_3*`} + -- if (c_1#62*{c_1#62 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#44*{c_2#44 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c_3#2*{c_3#2 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3)) + -- if (c#64*{c#64 <- `c*#26`}*{`c*#26` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#114)*{iter_0#114 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#63)), !($proj_lane__2(c_2#45)), !($proj_lane__2(c_3#3)))}*{c_1#63 <- `c_1*`, c_2#45 <- `c_2*`, c_3#3 <- `c_3*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#68*{c#68 <- `c*#30`})*{`c*#30` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c#66))*{c#66 <- `c*#28`}*{`c*#28` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#115)))*{iter_0#115 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#64)), !($proj_lane__2(c_2#46)), !($proj_lane__2(c_3#4)))}*{c_1#64 <- `c_1*`, c_2#46 <- `c_2*`, c_3#4 <- `c_3*`} + -- if (c_1#65*{c_1#65 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#47*{c_2#47 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c_3#5*{c_3#5 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3)) + -- if (c#67*{c#67 <- `c*#29`}*{`c*#29` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#116)*{iter_0#116 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#66)), !($proj_lane__2(c_2#48)), !($proj_lane__2(c_3#6)))}*{c_1#66 <- `c_1*`, c_2#48 <- `c_2*`, c_3#6 <- `c_3*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#71*{c#71 <- `c*#33`})*{`c*#33` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c#69))*{c#69 <- `c*#31`}*{`c*#31` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#117)))*{iter_0#117 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#67)), !($proj_lane__2(c_2#49)), !($proj_lane__2(c_3#7)))}*{c_1#67 <- `c_1*`, c_2#49 <- `c_2*`, c_3#7 <- `c_3*`} + -- if (c_1#68*{c_1#68 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#50*{c_2#50 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c_3#8*{c_3#8 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3)) + -- if (c#70*{c#70 <- `c*#32`}*{`c*#32` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#118)*{iter_0#118 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#69)), !($proj_lane__2(c_2#51)), !($proj_lane__2(c_3#9)))}*{c_1#69 <- `c_1*`, c_2#51 <- `c_2*`, c_3#9 <- `c_3*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#74*{c#74 <- `c*#36`})*{`c*#36` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c#72))*{c#72 <- `c*#34`}*{`c*#34` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#119)))*{iter_0#119 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#70)), !($proj_lane__2(c_2#52)), !($proj_lane__2(c_3#10)))}*{c_1#70 <- `c_1*`, c_2#52 <- `c_2*`, c_3#10 <- `c_3*`} + -- if (c_1#71*{c_1#71 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#53*{c_2#53 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c_3#11*{c_3#11 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3)) + -- if (c#73*{c#73 <- `c*#35`}*{`c*#35` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#120)*{iter_0#120 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#72)), !($proj_lane__2(c_2#54)), !($proj_lane__2(c_3#12)))}*{c_1#72 <- `c_1*`, c_2#54 <- `c_2*`, c_3#12 <- `c_3*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#77*{c#77 <- `c*#39`})*{`c*#39` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c#75))*{c#75 <- `c*#37`}*{`c*#37` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#121))))*{iter_0#121 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#73)))), !($proj_num__1(!($proj_lane__0(c_2#55)))), !($proj_num__1(!($proj_lane__0(c_3#13)))))}*{c_1#73 <- `c_1*`, c_2#55 <- `c_2*`, c_3#13 <- `c_3*`} + -- if (c_1#74*{c_1#74 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) + -- if (c_2#56*{c_2#56 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)) + -- if (c_3#14*{c_3#14 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3)) + -- if (c#76*{c#76 <- `c*#38`}*{`c*#38` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#122))*{iter_0#122 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#75)))), !($proj_num__1(!($proj_lane__0(c_2#57)))), !($proj_num__1(!($proj_lane__0(c_3#15)))))}*{c_1#75 <- `c_1*`, c_2#57 <- `c_2*`, c_3#15 <- `c_3*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#80*{c#80 <- `c*#42`})*{`c*#42` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c#78))*{c#78 <- `c*#40`}*{`c*#40` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#123))))*{iter_0#123 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#76)))), !($proj_num__1(!($proj_lane__0(c_2#58)))), !($proj_num__1(!($proj_lane__0(c_3#16)))))}*{c_1#76 <- `c_1*`, c_2#58 <- `c_2*`, c_3#16 <- `c_3*`} + -- if (c_1#77*{c_1#77 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) + -- if (c_2#59*{c_2#59 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)) + -- if (c_3#17*{c_3#17 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3)) + -- if (c#79*{c#79 <- `c*#41`}*{`c*#41` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#124))*{iter_0#124 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#78)))), !($proj_num__1(!($proj_lane__0(c_2#60)))), !($proj_num__1(!($proj_lane__0(c_3#18)))))}*{c_1#78 <- `c_1*`, c_2#60 <- `c_2*`, c_3#18 <- `c_3*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#83)*{c#83 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#81)))*{c#81 <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#79)), !($proj_lane__2(c_2#61)))).0)))*{c_1#79 <- `c_1*`, c_2#61 <- `c_2*`} + -- if (c_1#80*{c_1#80 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#62*{c_2#62 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c#82*{c#82 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#81)), !($proj_lane__2(c_2#63)))).0))*{c_1#81 <- `c_1*`, c_2#63 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#86)*{c#86 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#84)))*{c#84 <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#82)), !($proj_lane__2(c_2#64)))).0)))*{c_1#82 <- `c_1*`, c_2#64 <- `c_2*`} + -- if (c_1#83*{c_1#83 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#65*{c_2#65 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c#85*{c#85 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#84)), !($proj_lane__2(c_2#66)))).0))*{c_1#84 <- `c_1*`, c_2#66 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#89)*{c#89 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#87)))*{c#87 <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#85)), !($proj_lane__2(c_2#67)))).0)))*{c_1#85 <- `c_1*`, c_2#67 <- `c_2*`} + -- if (c_1#86*{c_1#86 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#68*{c_2#68 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c#88*{c#88 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#87)), !($proj_lane__2(c_2#69)))).0))*{c_1#87 <- `c_1*`, c_2#69 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#92)*{c#92 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#90)))*{c#90 <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#88)), !($proj_lane__2(c_2#70)))).0)))*{c_1#88 <- `c_1*`, c_2#70 <- `c_2*`} + -- if (c_1#89*{c_1#89 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#71*{c_2#71 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c#91*{c#91 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#90)), !($proj_lane__2(c_2#72)))).0))*{c_1#90 <- `c_1*`, c_2#72 <- `c_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#95)*{c#95 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#93)))*{c#93 <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#91)), !($proj_lane__2(c_2#73)))).0)))*{c_1#91 <- `c_1*`, c_2#73 <- `c_2*`} + -- if (c_1#92*{c_1#92 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#74*{c_2#74 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c#94*{c#94 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#93)), !($proj_lane__2(c_2#75)))).0))*{c_1#93 <- `c_1*`, c_2#75 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#98)*{c#98 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#96)))*{c#96 <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#94)), !($proj_lane__2(c_2#76)))).0)))*{c_1#94 <- `c_1*`, c_2#76 <- `c_2*`} + -- if (c_1#95*{c_1#95 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#77*{c_2#77 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c#97*{c#97 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#96)), !($proj_lane__2(c_2#78)))).0))*{c_1#96 <- `c_1*`, c_2#78 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#101)*{c#101 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#99)))*{c#99 <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#97)), !($proj_lane__2(c_2#79)))).0)))*{c_1#97 <- `c_1*`, c_2#79 <- `c_2*`} + -- if (c_1#98*{c_1#98 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#80*{c_2#80 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c#100*{c#100 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#99)), !($proj_lane__2(c_2#81)))).0))*{c_1#99 <- `c_1*`, c_2#81 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#104)*{c#104 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#102)))*{c#102 <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#100)), !($proj_lane__2(c_2#82)))).0)))*{c_1#100 <- `c_1*`, c_2#82 <- `c_2*`} + -- if (c_1#101*{c_1#101 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#83*{c_2#83 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c#103*{c#103 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#102)), !($proj_lane__2(c_2#84)))).0))*{c_1#102 <- `c_1*`, c_2#84 <- `c_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#107).0)))*{c#107 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#105).0)))))*{c#105 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#103)))), !($proj_num__1(!($proj_lane__0(c_2#85)))))).0)))*{c_1#103 <- `c_1*`, c_2#85 <- `c_2*`} + -- if (c_1#104*{c_1#104 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) + -- if (c_2#86*{c_2#86 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)) + -- if (c#106*{c#106 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#105)))), !($proj_num__1(!($proj_lane__0(c_2#87)))))).0))*{c_1#105 <- `c_1*`, c_2#87 <- `c_2*`}) + -- if ($isize(Inn) = $fsize(F32_Fnn)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#110).0)))*{c#110 <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#108).0)))))*{c#108 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#106)))), !($proj_num__1(!($proj_lane__0(c_2#88)))))).0)))*{c_1#106 <- `c_1*`, c_2#88 <- `c_2*`} + -- if (c_1#107*{c_1#107 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) + -- if (c_2#89*{c_2#89 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)) + -- if (c#109*{c#109 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#108)))), !($proj_num__1(!($proj_lane__0(c_2#90)))))).0))*{c_1#108 <- `c_1*`, c_2#90 <- `c_2*`}) + -- if ($isize(Inn) = $fsize(F64_Fnn)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#113)*{c#113 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1#109))*{c_1#109 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#111)))*{c#111 <- `c*`} + -- if (c_1#110*{c_1#110 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c#112*{c#112 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#111)), i)*{c_1#111 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#116)*{c#116 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1#112))*{c_1#112 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#114)))*{c#114 <- `c*`} + -- if (c_1#113*{c_1#113 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c#115*{c#115 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#114)), i)*{c_1#114 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#119)*{c#119 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1#115))*{c_1#115 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#117)))*{c#117 <- `c*`} + -- if (c_1#116*{c_1#116 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c#118*{c#118 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#117)), i)*{c_1#117 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#122)*{c#122 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1#118))*{c_1#118 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#120)))*{c#120 <- `c*`} + -- if (c_1#119*{c_1#119 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c#121*{c#121 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#120)), i)*{c_1#120 <- `c_1*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#125)*{c#125 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1#121))*{c_1#121 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#123)))*{c#123 <- `c*`} + -- if (c_1#122*{c_1#122 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c#124*{c#124 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#123)), i)*{c_1#123 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#128)*{c#128 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1#124))*{c_1#124 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#126)))*{c#126 <- `c*`} + -- if (c_1#125*{c_1#125 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c#127*{c#127 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#126)), i)*{c_1#126 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#131)*{c#131 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1#127))*{c_1#127 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#129)))*{c#129 <- `c*`} + -- if (c_1#128*{c_1#128 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c#130*{c#130 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#129)), i)*{c_1#129 <- `c_1*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#134)*{c#134 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1#130))*{c_1#130 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#132)))*{c#132 <- `c*`} + -- if (c_1#131*{c_1#131 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c#133*{c#133 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#132)), i)*{c_1#132 <- `c_1*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_0{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1#133) =/= ?()))*{c_1#133 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#133)), `%`_iN(0))).0)))*{c_1#133 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- if (c_1#134*{c_1#134 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- (if ($proj_lane__2(c_1#135) =/= ?()))*{c_1#135 <- `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#135)), `%`_iN(0))).0)*{c_1#135 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_1{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1#136) =/= ?()))*{c_1#136 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#136)), `%`_iN(0))).0)))*{c_1#136 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- if (c_1#137*{c_1#137 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- (if ($proj_lane__2(c_1#138) =/= ?()))*{c_1#138 <- `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#138)), `%`_iN(0))).0)*{c_1#138 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_2{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1#139) =/= ?()))*{c_1#139 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#139)), `%`_iN(0))).0)))*{c_1#139 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- if (c_1#140*{c_1#140 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- (if ($proj_lane__2(c_1#141) =/= ?()))*{c_1#141 <- `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#141)), `%`_iN(0))).0)*{c_1#141 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_3{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1#142) =/= ?()))*{c_1#142 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#142)), `%`_iN(0))).0)))*{c_1#142 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- if (c_1#143*{c_1#143 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- (if ($proj_lane__2(c_1#144) =/= ?()))*{c_1#144 <- `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#144)), `%`_iN(0))).0)*{c_1#144 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#137)*{c#137 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1#145))*{c_1#145 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2#91))*{c_2#91 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#135)))*{c#135 <- `c*`} + -- if (c_1#146*{c_1#146 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#92*{c_2#92 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- if (c#136*{c#136 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#147))*{c_1#147 <- `c_1*`}, !($proj_lane__2(c_2#93)))*{c_2#93 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#140)*{c#140 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1#148))*{c_1#148 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2#94))*{c_2#94 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#138)))*{c#138 <- `c*`} + -- if (c_1#149*{c_1#149 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#95*{c_2#95 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- if (c#139*{c#139 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#150))*{c_1#150 <- `c_1*`}, !($proj_lane__2(c_2#96)))*{c_2#96 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#143)*{c#143 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1#151))*{c_1#151 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2#97))*{c_2#97 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#141)))*{c#141 <- `c*`} + -- if (c_1#152*{c_1#152 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#98*{c_2#98 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- if (c#142*{c#142 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#153))*{c_1#153 <- `c_1*`}, !($proj_lane__2(c_2#99)))*{c_2#99 <- `c_2*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#146)*{c#146 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1#154))*{c_1#154 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2#100))*{c_2#100 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#144)))*{c#144 <- `c*`} + -- if (c_1#155*{c_1#155 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#101*{c_2#101 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- if (c#145*{c#145 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#156))*{c_1#156 <- `c_1*`}, !($proj_lane__2(c_2#102)))*{c_2#102 <- `c_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), i#128389*{i#128389 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#149*{c#149 <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c#147))*{c#147 <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1#157))*{c_1#157 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2#103))*{c_2#103 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- if (c_1#158*{c_1#158 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#104*{c_2#104 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) + -- (if ($proj_uN_0(i#128396).0 < |c_1#159*{c_1#159 <- `c_1*`} ++ c_2#105*{c_2#105 <- `c_2*`}|))*{i#128396 <- `i*`} + -- if (c#148*{c#148 <- `c*`} = c_1#159*{c_1#159 <- `c_1*`} ++ c_2#105*{c_2#105 <- `c_2*`}[$proj_uN_0(i#128396).0]*{i#128396 <- `i*`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_1{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), i#128399*{i#128399 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#152*{c#152 <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c#150))*{c#150 <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1#160))*{c_1#160 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2#106))*{c_2#106 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- if (c_1#161*{c_1#161 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#107*{c_2#107 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) + -- (if ($proj_uN_0(i#128406).0 < |c_1#162*{c_1#162 <- `c_1*`} ++ c_2#108*{c_2#108 <- `c_2*`}|))*{i#128406 <- `i*`} + -- if (c#151*{c#151 <- `c*`} = c_1#162*{c_1#162 <- `c_1*`} ++ c_2#108*{c_2#108 <- `c_2*`}[$proj_uN_0(i#128406).0]*{i#128406 <- `i*`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_2{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i#128409*{i#128409 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#155*{c#155 <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c#153))*{c#153 <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1#163))*{c_1#163 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2#109))*{c_2#109 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- if (c_1#164*{c_1#164 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#110*{c_2#110 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) + -- (if ($proj_uN_0(i#128416).0 < |c_1#165*{c_1#165 <- `c_1*`} ++ c_2#111*{c_2#111 <- `c_2*`}|))*{i#128416 <- `i*`} + -- if (c#154*{c#154 <- `c*`} = c_1#165*{c_1#165 <- `c_1*`} ++ c_2#111*{c_2#111 <- `c_2*`}[$proj_uN_0(i#128416).0]*{i#128416 <- `i*`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_3{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), i#128419*{i#128419 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#158*{c#158 <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c#156))*{c#156 <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1#166))*{c_1#166 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2#112))*{c_2#112 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- if (c_1#167*{c_1#167 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- if (c_2#113*{c_2#113 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) + -- (if ($proj_uN_0(i#128426).0 < |c_1#168*{c_1#168 <- `c_1*`} ++ c_2#114*{c_2#114 <- `c_2*`}|))*{i#128426 <- `i*`} + -- if (c#157*{c#157 <- `c*`} = c_1#168*{c_1#168 <- `c_1*`} ++ c_2#114*{c_2#114 <- `c_2*`}[$proj_uN_0(i#128426).0]*{i#128426 <- `i*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvunop_{Vnn : vectype, v : uN}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vunop_: `%%%%`(shape, vunop_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_0{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_1{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_2{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_3{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_4{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_5{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_6{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_7{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_8{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_9{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_10{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_11{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_12{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_13{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_14{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_15{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_16{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_17{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_18{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_19{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_20{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_21{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_22{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_23{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_24{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_25{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vbinop_: `%%%%%`(shape, vbinop_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_2{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_3{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_4{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_5{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_6{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_7{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_8{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_9{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_10{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_11{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_24{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_25{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_26{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_27{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_28{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_29{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_30{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_31{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_32{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_33{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_34{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_35{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_36{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_37{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_38{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_39{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_40{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_41{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_42{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_43{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_44{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_45{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_46{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_47{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_48{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_49{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_50{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_51{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_52{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_53{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_54{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_55{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_56{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_57{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_58{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_59{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vternop_: `%%%%%%`(shape, vternop_, vec_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_0{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_1{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_2{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_3{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_4{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_5{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_6{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_7{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vrelop_: `%%%%%`(shape, vrelop_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_2{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_3{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_4{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_5{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_6{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_7{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_8{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_9{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_10{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_11{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_24{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_25{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_26{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_27{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_28{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_29{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_30{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_31{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_32{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_33{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_34{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_35{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2857?{half#2857 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2858?{half#2858 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2859?{half#2859 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2860?{half#2860 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2861?{half#2861 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2862?{half#2862 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2863?{half#2863 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#2864?{half#2864 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3293?{zero#3293 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#161))?{c#161 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#159))))?{c#159 <- `c?`} + -- if (c#160?{c#160 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3294?{zero#3294 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#164))?{c#164 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#162))))?{c#162 <- `c?`} + -- if (c#163?{c#163 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3295?{zero#3295 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#167))?{c#167 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#165))))?{c#165 <- `c?`} + -- if (c#166?{c#166 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3296?{zero#3296 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#170))?{c#170 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#168))))?{c#168 <- `c?`} + -- if (c#169?{c#169 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3297?{zero#3297 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#173))?{c#173 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#171))))?{c#171 <- `c?`} + -- if (c#172?{c#172 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3298?{zero#3298 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#176))?{c#176 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#174))))?{c#174 <- `c?`} + -- if (c#175?{c#175 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3299?{zero#3299 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#179))?{c#179 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#177))))?{c#177 <- `c?`} + -- if (c#178?{c#178 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3300?{zero#3300 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#182))?{c#182 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#180))))?{c#180 <- `c?`} + -- if (c#181?{c#181 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3301?{zero#3301 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#185))?{c#185 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#183))))?{c#183 <- `c?`} + -- if (c#184?{c#184 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3302?{zero#3302 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#188))?{c#188 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#186))))?{c#186 <- `c?`} + -- if (c#187?{c#187 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3303?{zero#3303 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#191))?{c#191 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#189))))?{c#189 <- `c?`} + -- if (c#190?{c#190 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3304?{zero#3304 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#194))?{c#194 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#192))))?{c#192 <- `c?`} + -- if (c#193?{c#193 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3305?{zero#3305 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#197))?{c#197 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#195))))?{c#195 <- `c?`} + -- if (c#196?{c#196 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3306?{zero#3306 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#200))?{c#200 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#198))))?{c#198 <- `c?`} + -- if (c#199?{c#199 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3307?{zero#3307 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#203))?{c#203 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#201))))?{c#201 <- `c?`} + -- if (c#202?{c#202 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3308?{zero#3308 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#206))?{c#206 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#204))))?{c#204 <- `c?`} + -- if (c#205?{c#205 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3309?{zero#3309 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#209))?{c#209 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#207))))?{c#207 <- `c?`} + -- if (c#208?{c#208 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3310?{zero#3310 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#212))?{c#212 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#210))))?{c#210 <- `c?`} + -- if (c#211?{c#211 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3311?{zero#3311 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#215))?{c#215 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#213))))?{c#213 <- `c?`} + -- if (c#214?{c#214 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_43{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3312?{zero#3312 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#218))?{c#218 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#216))))?{c#216 <- `c?`} + -- if (c#217?{c#217 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3313?{zero#3313 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#221))?{c#221 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#219))))?{c#219 <- `c?`} + -- if (c#220?{c#220 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3314?{zero#3314 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#224))?{c#224 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#222))))?{c#222 <- `c?`} + -- if (c#223?{c#223 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3315?{zero#3315 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#227))?{c#227 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#225))))?{c#225 <- `c?`} + -- if (c#226?{c#226 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_47{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3316?{zero#3316 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#230))?{c#230 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#228))))?{c#228 <- `c?`} + -- if (c#229?{c#229 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3317?{zero#3317 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#233))?{c#233 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#231))))?{c#231 <- `c?`} + -- if (c#232?{c#232 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3318?{zero#3318 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#236))?{c#236 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#234))))?{c#234 <- `c?`} + -- if (c#235?{c#235 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3319?{zero#3319 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#239))?{c#239 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#237))))?{c#237 <- `c?`} + -- if (c#238?{c#238 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_51{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3320?{zero#3320 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#242))?{c#242 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#240))))?{c#240 <- `c?`} + -- if (c#241?{c#241 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3321?{zero#3321 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#245))?{c#245 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#243))))?{c#243 <- `c?`} + -- if (c#244?{c#244 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3322?{zero#3322 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#248))?{c#248 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#246))))?{c#246 <- `c?`} + -- if (c#247?{c#247 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3323?{zero#3323 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#251))?{c#251 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#249))))?{c#249 <- `c?`} + -- if (c#250?{c#250 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_55{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3324?{zero#3324 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#254))?{c#254 <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#252))))?{c#252 <- `c?`} + -- if (c#253?{c#253 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_56{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#257))*{c#257 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#255))))*{c#255 <- `c*`} + -- if (c#256*{c#256 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_57{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#260))*{c#260 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#258))))*{c#258 <- `c*`} + -- if (c#259*{c#259 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_58{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#263))*{c#263 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#261))))*{c#261 <- `c*`} + -- if (c#262*{c#262 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_59{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#266))*{c#266 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#264))))*{c#264 <- `c*`} + -- if (c#265*{c#265 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_60{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#269))*{c#269 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#267))))*{c#267 <- `c*`} + -- if (c#268*{c#268 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_61{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#272))*{c#272 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#270))))*{c#270 <- `c*`} + -- if (c#271*{c#271 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_62{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#275))*{c#275 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#273))))*{c#273 <- `c*`} + -- if (c#274*{c#274 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_63{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#278))*{c#278 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#276))))*{c#276 <- `c*`} + -- if (c#277*{c#277 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_64{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#281))*{c#281 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#279))))*{c#279 <- `c*`} + -- if (c#280*{c#280 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_65{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#284))*{c#284 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#282))))*{c#282 <- `c*`} + -- if (c#283*{c#283 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_66{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#287))*{c#287 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#285))))*{c#285 <- `c*`} + -- if (c#286*{c#286 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_67{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#290))*{c#290 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#288))))*{c#288 <- `c*`} + -- if (c#289*{c#289 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_68{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#293))*{c#293 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#291))))*{c#291 <- `c*`} + -- if (c#292*{c#292 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_69{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#296))*{c#296 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#294))))*{c#294 <- `c*`} + -- if (c#295*{c#295 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_70{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#299))*{c#299 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#297))))*{c#297 <- `c*`} + -- if (c#298*{c#298 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_71{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#302))*{c#302 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#300))))*{c#300 <- `c*`} + -- if (c#301*{c#301 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1, v) + -- if (|`var_2*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#171, var_2))*{var_2 <- `var_2*`, c_1#171 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1#169))*{c_1#169 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c#303))*{c#303 <- `c*#43`}*{`c*#43` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) + -- if ((var_0 = ?()) /\ (var_1 = ?())) + -- if (c_1#170*{c_1#170 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) + -- if (c#304*{c#304 <- `c*#44`}*{`c*#44` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`})) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#305*{c#305 <- `c*#45`})*{`c*#45` <- `c**`}| > 0) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#305*{c#305 <- `c*#45`})*{`c*#45` <- `c**`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**, `var_1*` : lane_**, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- if (|`var_1*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#174, var_1))*{var_1 <- `var_1*`, c_1#174 <- `c_1*`} + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1#172))*{c_1#172 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c#306))*{c#306 <- `c*#46`}*{`c*#46` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- if (var_0 = ?(half)) + -- if (c_1#173*{c_1#173 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) + -- if (c#307*{c#307 <- `c*#47`}*{`c*#47` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`})) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#308*{c#308 <- `c*#48`})*{`c*#48` <- `c**`}| > 0) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#308*{c#308 <- `c*#48`})*{`c*#48` <- `c**`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, var_2 : lane_, `var_1*` : lane_**, var_0 : zero?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- fun_zero: `%%`(Lnn_2, var_2) + -- if (|`var_1*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#177, var_1))*{var_1 <- `var_1*`, c_1#177 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1#175))*{c_1#175 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c#309))*{c#309 <- `c*#49`}*{`c*#49` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- if (var_0 = ?(ZERO_zero)) + -- if (c_1#176*{c_1#176 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) + -- if (c#310*{c#310 <- `c*#50`}*{`c*#50` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`} ++ [var_2]^M_1{})) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#311*{c#311 <- `c*#51`})*{`c*#51` <- `c**`}| > 0) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#311*{c#311 <- `c*#51`})*{`c*#51` <- `c**`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vshiftop_: `%%%%%`(ishape, vshiftop_, vec_, u32, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_0{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_1{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_2{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_3{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_4{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_5{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_6{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_7{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vbitmaskop_: `%%%`(ishape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_0{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_1{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_2{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_3{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vswizzlop_: `%%%%%`(bshape, vswizzlop_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vswizzlop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vswizzlop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vshufflop_: `%%%%%`(bshape, laneidx*, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, var_0 : vec_}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#129110*{i#129110 <- `i*`}, v_1, v_2, var_0) + -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, var_0) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#178))*{c_1#178 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#115))*{c_2#115 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#1)))*{c'_1#1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#1)))*{c'_2#1 <- `c'_2*`} + -- if (c_1#179*{c_1#179 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#116*{c_2#116 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#180) =/= ?()))*{c_1#180 <- `c_1*`} + -- if (c'_1#2*{c'_1#2 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#180)))*{c_1#180 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#117) =/= ?()))*{c_2#117 <- `c_2*`} + -- if (c'_2#2*{c'_2#2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#117)))*{c_2#117 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#3)*{c'_1#3 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#3)*{c'_2#3 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#181))*{c_1#181 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#118))*{c_2#118 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#4)))*{c'_1#4 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#4)))*{c'_2#4 <- `c'_2*`} + -- if (c_1#182*{c_1#182 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#119*{c_2#119 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#183) =/= ?()))*{c_1#183 <- `c_1*`} + -- if (c'_1#5*{c'_1#5 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#183)))*{c_1#183 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#120) =/= ?()))*{c_2#120 <- `c_2*`} + -- if (c'_2#5*{c'_2#5 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#120)))*{c_2#120 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#6)*{c'_1#6 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#6)*{c'_2#6 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#184))*{c_1#184 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#121))*{c_2#121 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#7)))*{c'_1#7 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#7)))*{c'_2#7 <- `c'_2*`} + -- if (c_1#185*{c_1#185 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#122*{c_2#122 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#186) =/= ?()))*{c_1#186 <- `c_1*`} + -- if (c'_1#8*{c'_1#8 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#186)))*{c_1#186 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#123) =/= ?()))*{c_2#123 <- `c_2*`} + -- if (c'_2#8*{c'_2#8 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#123)))*{c_2#123 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#9)*{c'_1#9 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#9)*{c'_2#9 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#187))*{c_1#187 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#124))*{c_2#124 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#10)))*{c'_1#10 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#10)))*{c'_2#10 <- `c'_2*`} + -- if (c_1#188*{c_1#188 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#125*{c_2#125 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#189) =/= ?()))*{c_1#189 <- `c_1*`} + -- if (c'_1#11*{c'_1#11 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#189)))*{c_1#189 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#126) =/= ?()))*{c_2#126 <- `c_2*`} + -- if (c'_2#11*{c'_2#11 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#126)))*{c_2#126 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#12)*{c'_1#12 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#12)*{c'_2#12 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#190))*{c_1#190 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#127))*{c_2#127 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#13)))*{c'_1#13 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#13)))*{c'_2#13 <- `c'_2*`} + -- if (c_1#191*{c_1#191 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#128*{c_2#128 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#192) =/= ?()))*{c_1#192 <- `c_1*`} + -- if (c'_1#14*{c'_1#14 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#192)))*{c_1#192 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#129) =/= ?()))*{c_2#129 <- `c_2*`} + -- if (c'_2#14*{c'_2#14 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#129)))*{c_2#129 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#15)*{c'_1#15 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#15)*{c'_2#15 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#193))*{c_1#193 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#130))*{c_2#130 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#16)))*{c'_1#16 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#16)))*{c'_2#16 <- `c'_2*`} + -- if (c_1#194*{c_1#194 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#131*{c_2#131 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#195) =/= ?()))*{c_1#195 <- `c_1*`} + -- if (c'_1#17*{c'_1#17 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#195)))*{c_1#195 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#132) =/= ?()))*{c_2#132 <- `c_2*`} + -- if (c'_2#17*{c'_2#17 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#132)))*{c_2#132 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#18)*{c'_1#18 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#18)*{c'_2#18 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#196))*{c_1#196 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#133))*{c_2#133 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#19)))*{c'_1#19 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#19)))*{c'_2#19 <- `c'_2*`} + -- if (c_1#197*{c_1#197 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#134*{c_2#134 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#198) =/= ?()))*{c_1#198 <- `c_1*`} + -- if (c'_1#20*{c'_1#20 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#198)))*{c_1#198 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#135) =/= ?()))*{c_2#135 <- `c_2*`} + -- if (c'_2#20*{c'_2#20 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#135)))*{c_2#135 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#21)*{c'_1#21 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#21)*{c'_2#21 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#199))*{c_1#199 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#136))*{c_2#136 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#22)))*{c'_1#22 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#22)))*{c'_2#22 <- `c'_2*`} + -- if (c_1#200*{c_1#200 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#137*{c_2#137 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#201) =/= ?()))*{c_1#201 <- `c_1*`} + -- if (c'_1#23*{c'_1#23 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#201)))*{c_1#201 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#138) =/= ?()))*{c_2#138 <- `c_2*`} + -- if (c'_2#23*{c'_2#23 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#138)))*{c_2#138 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#24)*{c'_1#24 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#24)*{c'_2#24 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#202))*{c_1#202 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#139))*{c_2#139 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#25)))*{c'_1#25 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#25)))*{c'_2#25 <- `c'_2*`} + -- if (c_1#203*{c_1#203 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#140*{c_2#140 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#204) =/= ?()))*{c_1#204 <- `c_1*`} + -- if (c'_1#26*{c'_1#26 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#204)))*{c_1#204 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#141) =/= ?()))*{c_2#141 <- `c_2*`} + -- if (c'_2#26*{c'_2#26 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#141)))*{c_2#141 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#27)*{c'_1#27 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#27)*{c'_2#27 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#205))*{c_1#205 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#142))*{c_2#142 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#28)))*{c'_1#28 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#28)))*{c'_2#28 <- `c'_2*`} + -- if (c_1#206*{c_1#206 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#143*{c_2#143 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#207) =/= ?()))*{c_1#207 <- `c_1*`} + -- if (c'_1#29*{c'_1#29 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#207)))*{c_1#207 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#144) =/= ?()))*{c_2#144 <- `c_2*`} + -- if (c'_2#29*{c'_2#29 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#144)))*{c_2#144 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#30)*{c'_1#30 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#30)*{c'_2#30 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#208))*{c_1#208 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#145))*{c_2#145 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#31)))*{c'_1#31 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#31)))*{c'_2#31 <- `c'_2*`} + -- if (c_1#209*{c_1#209 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#146*{c_2#146 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#210) =/= ?()))*{c_1#210 <- `c_1*`} + -- if (c'_1#32*{c'_1#32 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#210)))*{c_1#210 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#147) =/= ?()))*{c_2#147 <- `c_2*`} + -- if (c'_2#32*{c'_2#32 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#147)))*{c_2#147 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#33)*{c'_1#33 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#33)*{c'_2#33 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#211))*{c_1#211 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#148))*{c_2#148 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#34)))*{c'_1#34 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#34)))*{c'_2#34 <- `c'_2*`} + -- if (c_1#212*{c_1#212 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#149*{c_2#149 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#213) =/= ?()))*{c_1#213 <- `c_1*`} + -- if (c'_1#35*{c'_1#35 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#213)))*{c_1#213 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#150) =/= ?()))*{c_2#150 <- `c_2*`} + -- if (c'_2#35*{c'_2#35 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#150)))*{c_2#150 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#36)*{c'_1#36 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#36)*{c'_2#36 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#214))*{c_1#214 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#151))*{c_2#151 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#37)))*{c'_1#37 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#37)))*{c'_2#37 <- `c'_2*`} + -- if (c_1#215*{c_1#215 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#152*{c_2#152 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#216) =/= ?()))*{c_1#216 <- `c_1*`} + -- if (c'_1#38*{c'_1#38 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#216)))*{c_1#216 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#153) =/= ?()))*{c_2#153 <- `c_2*`} + -- if (c'_2#38*{c'_2#38 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#153)))*{c_2#153 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#39)*{c'_1#39 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#39)*{c'_2#39 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#217))*{c_1#217 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#154))*{c_2#154 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#40)))*{c'_1#40 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#40)))*{c'_2#40 <- `c'_2*`} + -- if (c_1#218*{c_1#218 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#155*{c_2#155 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#219) =/= ?()))*{c_1#219 <- `c_1*`} + -- if (c'_1#41*{c'_1#41 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#219)))*{c_1#219 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#156) =/= ?()))*{c_2#156 <- `c_2*`} + -- if (c'_2#41*{c'_2#41 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#156)))*{c_2#156 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#42)*{c'_1#42 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#42)*{c'_2#42 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#220))*{c_1#220 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#157))*{c_2#157 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#43)))*{c'_1#43 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#43)))*{c'_2#43 <- `c'_2*`} + -- if (c_1#221*{c_1#221 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#158*{c_2#158 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#222) =/= ?()))*{c_1#222 <- `c_1*`} + -- if (c'_1#44*{c'_1#44 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#222)))*{c_1#222 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#159) =/= ?()))*{c_2#159 <- `c_2*`} + -- if (c'_2#44*{c'_2#44 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#159)))*{c_2#159 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#45)*{c'_1#45 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#45)*{c'_2#45 <- `c'_2*`})) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#223))*{c_1#223 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#160))*{c_2#160 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#46)))*{c'_1#46 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#46)))*{c'_2#46 <- `c'_2*`} + -- if (c_1#224*{c_1#224 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c_2#161*{c_2#161 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#225) =/= ?()))*{c_1#225 <- `c_1*`} + -- if (c'_1#47*{c'_1#47 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#225)))*{c_1#225 <- `c_1*`}) + -- (if ($proj_lane__2(c_2#162) =/= ?()))*{c_2#162 <- `c_2*`} + -- if (c'_2#47*{c'_2#47 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#162)))*{c_2#162 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#48)*{c'_1#48 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#48)*{c'_2#48 <- `c'_2*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivadd_pairwise_(N : N, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i#129288*{i#129288 <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, `%`_uN(j_1#1)))*{j_1#1 <- `j_1*`} + -- (wf_uN: `%%`(N, `%`_uN(j_2#1)))*{j_2#1 <- `j_2*`} + -- if ($concat_(syntax N, [j_1#2 j_2#2]*{j_1#2 <- `j_1*`, j_2#2 <- `j_2*`}) = $proj_uN_0(i#129291).0*{i#129291 <- `i*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#314)*{c#314 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#226))*{c_1#226 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1#49))*{c'_1#49 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#312)))*{c#312 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1#227*{c_1#227 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#50*{c'_1#50 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#228)))*{c_1#228 <- `c_1*`}) + -- if (c#313*{c#313 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#51*{c'_1#51 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#317)*{c#317 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#229))*{c_1#229 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1#52))*{c'_1#52 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#315)))*{c#315 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1#230*{c_1#230 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#53*{c'_1#53 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#231)))*{c_1#231 <- `c_1*`}) + -- if (c#316*{c#316 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#54*{c'_1#54 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#320)*{c#320 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#232))*{c_1#232 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1#55))*{c'_1#55 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#318)))*{c#318 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1#233*{c_1#233 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#56*{c'_1#56 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#234)))*{c_1#234 <- `c_1*`}) + -- if (c#319*{c#319 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#57*{c'_1#57 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#323)*{c#323 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#235))*{c_1#235 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1#58))*{c'_1#58 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#321)))*{c#321 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1#236*{c_1#236 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#59*{c'_1#59 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#237)))*{c_1#237 <- `c_1*`}) + -- if (c#322*{c#322 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#60*{c'_1#60 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#326)*{c#326 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#238))*{c_1#238 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1#61))*{c'_1#61 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#324)))*{c#324 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1#239*{c_1#239 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#62*{c'_1#62 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#240)))*{c_1#240 <- `c_1*`}) + -- if (c#325*{c#325 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#63*{c'_1#63 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#329)*{c#329 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#241))*{c_1#241 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1#64))*{c'_1#64 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#327)))*{c#327 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1#242*{c_1#242 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#65*{c'_1#65 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#243)))*{c_1#243 <- `c_1*`}) + -- if (c#328*{c#328 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#66*{c'_1#66 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#332)*{c#332 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#244))*{c_1#244 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1#67))*{c'_1#67 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#330)))*{c#330 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1#245*{c_1#245 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#68*{c'_1#68 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#246)))*{c_1#246 <- `c_1*`}) + -- if (c#331*{c#331 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#69*{c'_1#69 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#335)*{c#335 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#247))*{c_1#247 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1#70))*{c'_1#70 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#333)))*{c#333 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1#248*{c_1#248 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#71*{c'_1#71 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#249)))*{c_1#249 <- `c_1*`}) + -- if (c#334*{c#334 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#72*{c'_1#72 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#338)*{c#338 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#250))*{c_1#250 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1#73))*{c'_1#73 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#336)))*{c#336 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1#251*{c_1#251 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#74*{c'_1#74 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#252)))*{c_1#252 <- `c_1*`}) + -- if (c#337*{c#337 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#75*{c'_1#75 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#341)*{c#341 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#253))*{c_1#253 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1#76))*{c'_1#76 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#339)))*{c#339 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1#254*{c_1#254 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#77*{c'_1#77 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#255)))*{c_1#255 <- `c_1*`}) + -- if (c#340*{c#340 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#78*{c'_1#78 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#344)*{c#344 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#256))*{c_1#256 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1#79))*{c'_1#79 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#342)))*{c#342 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1#257*{c_1#257 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#80*{c'_1#80 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#258)))*{c_1#258 <- `c_1*`}) + -- if (c#343*{c#343 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#81*{c'_1#81 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#347)*{c#347 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#259))*{c_1#259 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1#82))*{c'_1#82 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#345)))*{c#345 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1#260*{c_1#260 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#83*{c'_1#83 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#261)))*{c_1#261 <- `c_1*`}) + -- if (c#346*{c#346 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#84*{c'_1#84 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#350)*{c#350 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#262))*{c_1#262 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1#85))*{c'_1#85 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#348)))*{c#348 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1#263*{c_1#263 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#86*{c'_1#86 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#264)))*{c_1#264 <- `c_1*`}) + -- if (c#349*{c#349 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#87*{c'_1#87 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#353)*{c#353 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#265))*{c_1#265 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1#88))*{c'_1#88 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#351)))*{c#351 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1#266*{c_1#266 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#89*{c'_1#89 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#267)))*{c_1#267 <- `c_1*`}) + -- if (c#352*{c#352 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#90*{c'_1#90 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#356)*{c#356 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#268))*{c_1#268 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1#91))*{c'_1#91 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#354)))*{c#354 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1#269*{c_1#269 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#92*{c'_1#92 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#270)))*{c_1#270 <- `c_1*`}) + -- if (c#355*{c#355 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#93*{c'_1#93 <- `c'_1*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#359)*{c#359 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#271))*{c_1#271 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1#94))*{c'_1#94 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#357)))*{c#357 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1#272*{c_1#272 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) + -- if (c'_1#95*{c'_1#95 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#273)))*{c_1#273 <- `c_1*`}) + -- if (c#358*{c#358 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#96*{c'_1#96 <- `c'_1*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextunop__: `%%%%%`(ishape, ishape, vextunop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#1*{i_1#1 <- `i_1*`}, i_2#1*{i_2#1 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1#3))*{j_1#3 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2#3))*{j_2#3 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#4 j_2#4]*{j_1#4 <- `j_1*`, j_2#4 <- `j_2*`}) = $imul_(N, i_1#2, i_2#2)*{i_1#2 <- `i_1*`, i_2#2 <- `i_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_sat_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#3*{i_1#3 <- `i_1*`}, i_2#3*{i_2#3 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1#5))*{j_1#5 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2#5))*{j_2#5 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#6 j_2#6]*{j_1#6 <- `j_1*`, j_2#6 <- `j_2*`}) = $imul_(N, i_1#4, i_2#4)*{i_1#4 <- `i_1*`, i_2#4 <- `i_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#362)*{c#362 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#274))*{c_1#274 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#163))*{c_2#163 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1#97))*{c'_1#97 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2#49))*{c'_2#49 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#360)))*{c#360 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1#275*{c_1#275 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#164*{c_2#164 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#98*{c'_1#98 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#276)))*{c_1#276 <- `c_1*`}) + -- if (c'_2#50*{c'_2#50 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#165)))*{c_2#165 <- `c_2*`}) + -- if (c#361*{c#361 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#99*{c'_1#99 <- `c'_1*`}, c'_2#51*{c'_2#51 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#365)*{c#365 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#277))*{c_1#277 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#166))*{c_2#166 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1#100))*{c'_1#100 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2#52))*{c'_2#52 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#363)))*{c#363 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1#278*{c_1#278 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#167*{c_2#167 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#101*{c'_1#101 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#279)))*{c_1#279 <- `c_1*`}) + -- if (c'_2#53*{c'_2#53 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#168)))*{c_2#168 <- `c_2*`}) + -- if (c#364*{c#364 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#102*{c'_1#102 <- `c'_1*`}, c'_2#54*{c'_2#54 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#368)*{c#368 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#280))*{c_1#280 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#169))*{c_2#169 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1#103))*{c'_1#103 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2#55))*{c'_2#55 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#366)))*{c#366 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1#281*{c_1#281 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#170*{c_2#170 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#104*{c'_1#104 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#282)))*{c_1#282 <- `c_1*`}) + -- if (c'_2#56*{c'_2#56 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#171)))*{c_2#171 <- `c_2*`}) + -- if (c#367*{c#367 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#105*{c'_1#105 <- `c'_1*`}, c'_2#57*{c'_2#57 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#371)*{c#371 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#283))*{c_1#283 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#172))*{c_2#172 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1#106))*{c'_1#106 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2#58))*{c'_2#58 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#369)))*{c#369 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1#284*{c_1#284 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#173*{c_2#173 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#107*{c'_1#107 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#285)))*{c_1#285 <- `c_1*`}) + -- if (c'_2#59*{c'_2#59 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#174)))*{c_2#174 <- `c_2*`}) + -- if (c#370*{c#370 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#108*{c'_1#108 <- `c'_1*`}, c'_2#60*{c'_2#60 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#374)*{c#374 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#286))*{c_1#286 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#175))*{c_2#175 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1#109))*{c'_1#109 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2#61))*{c'_2#61 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#372)))*{c#372 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1#287*{c_1#287 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#176*{c_2#176 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#110*{c'_1#110 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#288)))*{c_1#288 <- `c_1*`}) + -- if (c'_2#62*{c'_2#62 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#177)))*{c_2#177 <- `c_2*`}) + -- if (c#373*{c#373 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#111*{c'_1#111 <- `c'_1*`}, c'_2#63*{c'_2#63 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#377)*{c#377 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#289))*{c_1#289 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#178))*{c_2#178 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1#112))*{c'_1#112 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2#64))*{c'_2#64 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#375)))*{c#375 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1#290*{c_1#290 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#179*{c_2#179 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#113*{c'_1#113 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#291)))*{c_1#291 <- `c_1*`}) + -- if (c'_2#65*{c'_2#65 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#180)))*{c_2#180 <- `c_2*`}) + -- if (c#376*{c#376 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#114*{c'_1#114 <- `c'_1*`}, c'_2#66*{c'_2#66 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#380)*{c#380 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#292))*{c_1#292 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#181))*{c_2#181 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1#115))*{c'_1#115 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2#67))*{c'_2#67 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#378)))*{c#378 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1#293*{c_1#293 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#182*{c_2#182 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#116*{c'_1#116 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#294)))*{c_1#294 <- `c_1*`}) + -- if (c'_2#68*{c'_2#68 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#183)))*{c_2#183 <- `c_2*`}) + -- if (c#379*{c#379 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#117*{c'_1#117 <- `c'_1*`}, c'_2#69*{c'_2#69 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#383)*{c#383 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#295))*{c_1#295 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#184))*{c_2#184 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1#118))*{c'_1#118 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2#70))*{c'_2#70 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#381)))*{c#381 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1#296*{c_1#296 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#185*{c_2#185 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#119*{c'_1#119 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#297)))*{c_1#297 <- `c_1*`}) + -- if (c'_2#71*{c'_2#71 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#186)))*{c_2#186 <- `c_2*`}) + -- if (c#382*{c#382 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#120*{c'_1#120 <- `c'_1*`}, c'_2#72*{c'_2#72 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#386)*{c#386 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#298))*{c_1#298 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#187))*{c_2#187 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1#121))*{c'_1#121 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2#73))*{c'_2#73 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#384)))*{c#384 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1#299*{c_1#299 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#188*{c_2#188 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#122*{c'_1#122 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#300)))*{c_1#300 <- `c_1*`}) + -- if (c'_2#74*{c'_2#74 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#189)))*{c_2#189 <- `c_2*`}) + -- if (c#385*{c#385 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#123*{c'_1#123 <- `c'_1*`}, c'_2#75*{c'_2#75 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#389)*{c#389 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#301))*{c_1#301 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#190))*{c_2#190 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1#124))*{c'_1#124 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2#76))*{c'_2#76 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#387)))*{c#387 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1#302*{c_1#302 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#191*{c_2#191 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#125*{c'_1#125 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#303)))*{c_1#303 <- `c_1*`}) + -- if (c'_2#77*{c'_2#77 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#192)))*{c_2#192 <- `c_2*`}) + -- if (c#388*{c#388 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#126*{c'_1#126 <- `c'_1*`}, c'_2#78*{c'_2#78 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#392)*{c#392 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#304))*{c_1#304 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#193))*{c_2#193 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1#127))*{c'_1#127 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2#79))*{c'_2#79 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#390)))*{c#390 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1#305*{c_1#305 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#194*{c_2#194 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#128*{c'_1#128 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#306)))*{c_1#306 <- `c_1*`}) + -- if (c'_2#80*{c'_2#80 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#195)))*{c_2#195 <- `c_2*`}) + -- if (c#391*{c#391 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#129*{c'_1#129 <- `c'_1*`}, c'_2#81*{c'_2#81 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#395)*{c#395 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#307))*{c_1#307 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#196))*{c_2#196 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1#130))*{c'_1#130 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2#82))*{c'_2#82 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#393)))*{c#393 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1#308*{c_1#308 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#197*{c_2#197 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#131*{c'_1#131 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#309)))*{c_1#309 <- `c_1*`}) + -- if (c'_2#83*{c'_2#83 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#198)))*{c_2#198 <- `c_2*`}) + -- if (c#394*{c#394 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#132*{c'_1#132 <- `c'_1*`}, c'_2#84*{c'_2#84 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#398)*{c#398 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#310))*{c_1#310 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#199))*{c_2#199 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1#133))*{c'_1#133 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2#85))*{c'_2#85 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#396)))*{c#396 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- if (c_1#311*{c_1#311 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#200*{c_2#200 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#134*{c'_1#134 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#312)))*{c_1#312 <- `c_1*`}) + -- if (c'_2#86*{c'_2#86 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#201)))*{c_2#201 <- `c_2*`}) + -- if (c#397*{c#397 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#135*{c'_1#135 <- `c'_1*`}, c'_2#87*{c'_2#87 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#401)*{c#401 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#313))*{c_1#313 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#202))*{c_2#202 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1#136))*{c'_1#136 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2#88))*{c'_2#88 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#399)))*{c#399 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- if (c_1#314*{c_1#314 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#203*{c_2#203 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#137*{c'_1#137 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#315)))*{c_1#315 <- `c_1*`}) + -- if (c'_2#89*{c'_2#89 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#204)))*{c_2#204 <- `c_2*`}) + -- if (c#400*{c#400 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#138*{c'_1#138 <- `c'_1*`}, c'_2#90*{c'_2#90 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#404)*{c#404 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#316))*{c_1#316 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#205))*{c_2#205 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1#139))*{c'_1#139 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2#91))*{c'_2#91 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#402)))*{c#402 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- if (c_1#317*{c_1#317 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#206*{c_2#206 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#140*{c'_1#140 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#318)))*{c_1#318 <- `c_1*`}) + -- if (c'_2#92*{c'_2#92 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#207)))*{c_2#207 <- `c_2*`}) + -- if (c#403*{c#403 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#141*{c'_1#141 <- `c'_1*`}, c'_2#93*{c'_2#93 <- `c'_2*`})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#407)*{c#407 <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#319))*{c_1#319 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#208))*{c_2#208 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1#142))*{c'_1#142 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2#94))*{c'_2#94 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#405)))*{c#405 <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- if (c_1#320*{c_1#320 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c_2#209*{c_2#209 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) + -- if (c'_1#143*{c'_1#143 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#321)))*{c_1#321 <- `c_1*`}) + -- if (c'_2#95*{c'_2#95 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#210)))*{c_2#210 <- `c_2*`}) + -- if (c#406*{c#406 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#144*{c'_1#144 <- `c'_1*`}, c'_2#96*{c'_2#96 <- `c'_2*`})) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivmul_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1#5*{i_1#5 <- `i_1*`}, i_2#5*{i_2#5 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextbinop__: `%%%%%%`(ishape, ishape, vextbinop__, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_16{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_17{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_18{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_19{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_20{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_21{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_22{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_23{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_24{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_25{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_26{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_27{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_28{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_29{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_30{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_31{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_32{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_33{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_34{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_35{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_36{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_37{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_38{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_39{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_40{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_41{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_42{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_43{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_44{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_45{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_46{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_47{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_0{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_1{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_2{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_3{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_4{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_5{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_6{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_7{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_8{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_9{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_10{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_11{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_12{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_13{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_14{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_15{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- if (M = (2 * M_2)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax num = + | CONST(numtype : numtype, num_) + +def $val_num(num) : val + def $val_num{x0 : numtype, x1 : num_}(CONST_num(x0, x1)) = CONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_num: `%`(num) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule num_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_num(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax vec = + | VCONST(vectype : vectype, vec_) + +def $val_vec(vec) : val + def $val_vec{x0 : vectype, x1 : vec_}(VCONST_vec(x0, x1)) = VCONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_vec: `%`(vec) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule vec_case_0{vectype : vectype, var_0 : vec_}: + `%`(VCONST_vec(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax result = + | _VALS(`val*` : val*) + | `(REF.EXN_ADDR%)THROW_REF`(exnaddr : exnaddr) + | TRAP + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_result: `%`(result) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_0{`val*` : val*}: + `%`(_VALS_result(`val*`)) + -- (wf_val: `%`(val))*{val <- `val*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_1{exnaddr : exnaddr}: + `%`(`(REF.EXN_ADDR%)THROW_REF`_result(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_2: + `%`(TRAP_result) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostfunc = + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funccode = + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | `...` + +def $funccode_func(func) : funccode + def $funccode_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_funccode(x0, x1, x2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funccode: `%`(funccode) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_funccode(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_1: + `%`(`...`_funccode) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax taginst = +{ + TYPE tagtype +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_taginst: `%`(taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_case_{var_0 : tagtype}: + `%`({TYPE var_0}) + -- wf_typeuse: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globalinst = +{ + TYPE globaltype, + VALUE val +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_globalinst: `%`(globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_case_{var_0 : globaltype, var_1 : val}: + `%`({TYPE var_0, VALUE var_1}) + -- wf_globaltype: `%`(var_0) + -- wf_val: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax meminst = +{ + TYPE memtype, + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_meminst: `%`(meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_case_{var_0 : memtype, var_1 : byte*}: + `%`({TYPE var_0, BYTES var_1}) + -- wf_memtype: `%`(var_0) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableinst = +{ + TYPE tabletype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_tableinst: `%`(tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_case_{var_0 : tabletype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_tabletype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcinst = +{ + TYPE deftype, + MODULE moduleinst, + CODE funccode +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funcinst: `%`(funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_case_{var_0 : deftype, var_1 : moduleinst, var_2 : funccode}: + `%`({TYPE var_0, MODULE var_1, CODE var_2}) + -- wf_moduleinst: `%`(var_1) + -- wf_funccode: `%`(var_2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax datainst = +{ + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_datainst: `%`(datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_case_{var_0 : byte*}: + `%`({BYTES var_0}) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax eleminst = +{ + TYPE elemtype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_eleminst: `%`(eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_case_{var_0 : elemtype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_reftype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax packval = + | PACK(packtype : packtype, iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_packval: `%`(packval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packval_case_0{packtype : packtype, var_0 : iN}: + `%`(PACK_packval(packtype, var_0)) + -- wf_uN: `%%`($psize(packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax fieldval = + | CONST(numtype : numtype, num_) + | VCONST(vectype : vectype, vec_) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + | PACK(packtype : packtype, iN) + +def $fieldval_packval(packval) : fieldval + def $fieldval_packval{x0 : packtype, x1 : iN}(PACK_packval(x0, x1)) = PACK_fieldval(x0, x1) + +def $fieldval_ref(ref) : fieldval + def $fieldval_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_fieldval(x0) + def $fieldval_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_fieldval + def $fieldval_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_fieldval(x0) + +def $fieldval_val(val) : fieldval + def $fieldval_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_fieldval(x0, x1) + def $fieldval_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_fieldval(x0, x1) + def $fieldval_val{x0 : u31}(`REF.I31_NUM`_val(x0)) = `REF.I31_NUM`_fieldval(x0) + def $fieldval_val(`REF.NULL_ADDR`_val) = `REF.NULL_ADDR`_fieldval + def $fieldval_val{x0 : structaddr}(`REF.STRUCT_ADDR`_val(x0)) = `REF.STRUCT_ADDR`_fieldval(x0) + def $fieldval_val{x0 : arrayaddr}(`REF.ARRAY_ADDR`_val(x0)) = `REF.ARRAY_ADDR`_fieldval(x0) + def $fieldval_val{x0 : funcaddr}(`REF.FUNC_ADDR`_val(x0)) = `REF.FUNC_ADDR`_fieldval(x0) + def $fieldval_val{x0 : exnaddr}(`REF.EXN_ADDR`_val(x0)) = `REF.EXN_ADDR`_fieldval(x0) + def $fieldval_val{x0 : hostaddr}(`REF.HOST_ADDR`_val(x0)) = `REF.HOST_ADDR`_fieldval(x0) + def $fieldval_val{x0 : ref}(`REF.EXTERN`_val(x0)) = `REF.EXTERN`_fieldval(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_fieldval: `%`(fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_fieldval(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_1{vectype : vectype, var_0 : vec_}: + `%`(VCONST_fieldval(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_2{u31 : u31}: + `%`(`REF.I31_NUM`_fieldval(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_3: + `%`(`REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_4{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_5{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_6{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_7{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_8{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_9{ref : ref}: + `%`(`REF.EXTERN`_fieldval(ref)) + -- wf_ref: `%`(ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_10{packtype : packtype, var_0 : iN}: + `%`(PACK_fieldval(packtype, var_0)) + -- wf_uN: `%%`($psize(packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_structinst: `%`(structinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_arrayinst: `%`(arrayinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exninst = +{ + TAG tagaddr, + FIELDS val* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exninst: `%`(exninst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_case_{var_0 : tagaddr, var_1 : val*}: + `%`({TAG var_0, FIELDS var_1}) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax store = +{ + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_store: `%`(store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: + `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) + -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} + -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} + -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} + -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} + -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} + -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} + -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} + -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} + -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} + -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax state = + | `%;%`(store : store, frame : frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_state: `%`(state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule state_case_0{store : store, frame : frame}: + `%`(`%;%`_state(store, frame)) + -- wf_store: `%`(store) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax config = + | `%;%`(state : state, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_config: `%`(config) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule config_case_0{state : state, `instr*` : instr*}: + `%`(`%;%`_config(state, `instr*`)) + -- wf_state: `%`(state) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $Ki : nat + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $Ki = 1024 + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_packfield__before_fun_packfield__case_9: `%%`(storagetype, val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_8{i : uN}: + `%%`(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) + -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_7{i : uN}: + `%%`(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) + -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_6{val : val}: + `%%`(I32_storagetype, val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_5{val : val}: + `%%`(I64_storagetype, val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_4{val : val}: + `%%`(F32_storagetype, val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_3{val : val}: + `%%`(F64_storagetype, val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_2{val : val}: + `%%`(V128_storagetype, val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_1{`null?` : null?, heaptype : heaptype, val : val}: + `%%`(REF_storagetype(`null?`, heaptype), val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_0{val : val}: + `%%`(BOT_storagetype, val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_packfield_: `%%%`(storagetype, val, fieldval?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_0{val : val}: + `%%%`(BOT_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_1{`null?` : null?, heaptype : heaptype, val : val}: + `%%%`(REF_storagetype(`null?`, heaptype), val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_2{val : val}: + `%%%`(V128_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_3{val : val}: + `%%%`(F64_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_4{val : val}: + `%%%`(F32_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_5{val : val}: + `%%%`(I64_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_6{val : val}: + `%%%`(I32_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_7{i : uN}: + `%%%`(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)))) + -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_8{i : uN}: + `%%%`(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)))) + -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_9{x0 : storagetype, x1 : val}: + `%%%`(x0, x1, ?()) + -- ~ fun_packfield__before_fun_packfield__case_9: `%%`(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_unpackfield__before_fun_unpackfield__case_72: `%%%`(storagetype, sx?, fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_71{sx : sx, i : uN}: + `%%%`(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_70{sx : sx, i : uN}: + `%%%`(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_69{numtype : numtype, var_0 : num_}: + `%%%`(I32_storagetype, ?(), CONST_fieldval(numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_68{numtype : numtype, var_0 : num_}: + `%%%`(I64_storagetype, ?(), CONST_fieldval(numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_67{numtype : numtype, var_0 : num_}: + `%%%`(F32_storagetype, ?(), CONST_fieldval(numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_66{numtype : numtype, var_0 : num_}: + `%%%`(F64_storagetype, ?(), CONST_fieldval(numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_65{numtype : numtype, var_0 : num_}: + `%%%`(V128_storagetype, ?(), CONST_fieldval(numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_64{numtype : numtype, var_0 : num_, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), CONST_fieldval(numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_63{numtype : numtype, var_0 : num_}: + `%%%`(BOT_storagetype, ?(), CONST_fieldval(numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_62{vectype : vectype, var_1 : vec_}: + `%%%`(I32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_61{vectype : vectype, var_1 : vec_}: + `%%%`(I64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_60{vectype : vectype, var_1 : vec_}: + `%%%`(F32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_59{vectype : vectype, var_1 : vec_}: + `%%%`(F64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_58{vectype : vectype, var_1 : vec_}: + `%%%`(V128_storagetype, ?(), VCONST_fieldval(vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_57{vectype : vectype, var_1 : vec_, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), VCONST_fieldval(vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_56{vectype : vectype, var_1 : vec_}: + `%%%`(BOT_storagetype, ?(), VCONST_fieldval(vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_55{u31 : u31}: + `%%%`(I32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_54{u31 : u31}: + `%%%`(I64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_53{u31 : u31}: + `%%%`(F32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_52{u31 : u31}: + `%%%`(F64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_51{u31 : u31}: + `%%%`(V128_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_50{u31 : u31, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_49{u31 : u31}: + `%%%`(BOT_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_48: + `%%%`(I32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_47: + `%%%`(I64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_46: + `%%%`(F32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_45: + `%%%`(F64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_44: + `%%%`(V128_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_43{`null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_42: + `%%%`(BOT_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_41{structaddr : structaddr}: + `%%%`(I32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_40{structaddr : structaddr}: + `%%%`(I64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_39{structaddr : structaddr}: + `%%%`(F32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_38{structaddr : structaddr}: + `%%%`(F64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_37{structaddr : structaddr}: + `%%%`(V128_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_36{structaddr : structaddr, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_35{structaddr : structaddr}: + `%%%`(BOT_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_34{arrayaddr : arrayaddr}: + `%%%`(I32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_33{arrayaddr : arrayaddr}: + `%%%`(I64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_32{arrayaddr : arrayaddr}: + `%%%`(F32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_31{arrayaddr : arrayaddr}: + `%%%`(F64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_30{arrayaddr : arrayaddr}: + `%%%`(V128_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_29{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_28{arrayaddr : arrayaddr}: + `%%%`(BOT_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_27{funcaddr : funcaddr}: + `%%%`(I32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_26{funcaddr : funcaddr}: + `%%%`(I64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_25{funcaddr : funcaddr}: + `%%%`(F32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_24{funcaddr : funcaddr}: + `%%%`(F64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_23{funcaddr : funcaddr}: + `%%%`(V128_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_22{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_21{funcaddr : funcaddr}: + `%%%`(BOT_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_20{exnaddr : exnaddr}: + `%%%`(I32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_19{exnaddr : exnaddr}: + `%%%`(I64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_18{exnaddr : exnaddr}: + `%%%`(F32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_17{exnaddr : exnaddr}: + `%%%`(F64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_16{exnaddr : exnaddr}: + `%%%`(V128_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_15{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_14{exnaddr : exnaddr}: + `%%%`(BOT_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_13{hostaddr : hostaddr}: + `%%%`(I32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_12{hostaddr : hostaddr}: + `%%%`(I64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_11{hostaddr : hostaddr}: + `%%%`(F32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_10{hostaddr : hostaddr}: + `%%%`(F64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_9{hostaddr : hostaddr}: + `%%%`(V128_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_8{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_7{hostaddr : hostaddr}: + `%%%`(BOT_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_6{ref : ref}: + `%%%`(I32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_5{ref : ref}: + `%%%`(I64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_4{ref : ref}: + `%%%`(F32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_3{ref : ref}: + `%%%`(F64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_2{ref : ref}: + `%%%`(V128_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_1{ref : ref, `null?` : null?, heaptype : heaptype}: + `%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.EXTERN`_fieldval(ref)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_0{ref : ref}: + `%%%`(BOT_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_unpackfield_: `%%%%`(storagetype, sx?, fieldval, val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_0{ref : ref}: + `%%%%`(BOT_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_1{ref : ref, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_2{ref : ref}: + `%%%%`(V128_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_3{ref : ref}: + `%%%%`(F64_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_4{ref : ref}: + `%%%%`(F32_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_5{ref : ref}: + `%%%%`(I64_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_6{ref : ref}: + `%%%%`(I32_storagetype, ?(), `REF.EXTERN`_fieldval(ref), ?(`REF.EXTERN`_val(ref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_7{hostaddr : hostaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_8{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_9{hostaddr : hostaddr}: + `%%%%`(V128_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_10{hostaddr : hostaddr}: + `%%%%`(F64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_11{hostaddr : hostaddr}: + `%%%%`(F32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_12{hostaddr : hostaddr}: + `%%%%`(I64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_13{hostaddr : hostaddr}: + `%%%%`(I32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr), ?(`REF.HOST_ADDR`_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_14{exnaddr : exnaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_15{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_16{exnaddr : exnaddr}: + `%%%%`(V128_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_17{exnaddr : exnaddr}: + `%%%%`(F64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_18{exnaddr : exnaddr}: + `%%%%`(F32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_19{exnaddr : exnaddr}: + `%%%%`(I64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_20{exnaddr : exnaddr}: + `%%%%`(I32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr), ?(`REF.EXN_ADDR`_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_21{funcaddr : funcaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_22{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_23{funcaddr : funcaddr}: + `%%%%`(V128_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_24{funcaddr : funcaddr}: + `%%%%`(F64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_25{funcaddr : funcaddr}: + `%%%%`(F32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_26{funcaddr : funcaddr}: + `%%%%`(I64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_27{funcaddr : funcaddr}: + `%%%%`(I32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr), ?(`REF.FUNC_ADDR`_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_28{arrayaddr : arrayaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_29{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_30{arrayaddr : arrayaddr}: + `%%%%`(V128_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_31{arrayaddr : arrayaddr}: + `%%%%`(F64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_32{arrayaddr : arrayaddr}: + `%%%%`(F32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_33{arrayaddr : arrayaddr}: + `%%%%`(I64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_34{arrayaddr : arrayaddr}: + `%%%%`(I32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr), ?(`REF.ARRAY_ADDR`_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_35{structaddr : structaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_36{structaddr : structaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_37{structaddr : structaddr}: + `%%%%`(V128_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_38{structaddr : structaddr}: + `%%%%`(F64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_39{structaddr : structaddr}: + `%%%%`(F32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_40{structaddr : structaddr}: + `%%%%`(I64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_41{structaddr : structaddr}: + `%%%%`(I32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr), ?(`REF.STRUCT_ADDR`_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_42: + `%%%%`(BOT_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_43{`null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_44: + `%%%%`(V128_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_45: + `%%%%`(F64_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_46: + `%%%%`(F32_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_47: + `%%%%`(I64_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_48: + `%%%%`(I32_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_49{u31 : u31}: + `%%%%`(BOT_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_50{u31 : u31, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_51{u31 : u31}: + `%%%%`(V128_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_52{u31 : u31}: + `%%%%`(F64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_53{u31 : u31}: + `%%%%`(F32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_54{u31 : u31}: + `%%%%`(I64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_55{u31 : u31}: + `%%%%`(I32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31), ?(`REF.I31_NUM`_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_56{vectype : vectype, var_1 : vec_}: + `%%%%`(BOT_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_57{vectype : vectype, var_1 : vec_, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_58{vectype : vectype, var_1 : vec_}: + `%%%%`(V128_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_59{vectype : vectype, var_1 : vec_}: + `%%%%`(F64_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_60{vectype : vectype, var_1 : vec_}: + `%%%%`(F32_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_61{vectype : vectype, var_1 : vec_}: + `%%%%`(I64_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_62{vectype : vectype, var_1 : vec_}: + `%%%%`(I32_storagetype, ?(), VCONST_fieldval(vectype, var_1), ?(VCONST_val(vectype, var_1))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_63{numtype : numtype, var_0 : num_}: + `%%%%`(BOT_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_64{numtype : numtype, var_0 : num_, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(`null?`, heaptype), ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_65{numtype : numtype, var_0 : num_}: + `%%%%`(V128_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_66{numtype : numtype, var_0 : num_}: + `%%%%`(F64_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_67{numtype : numtype, var_0 : num_}: + `%%%%`(F32_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_68{numtype : numtype, var_0 : num_}: + `%%%%`(I64_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_69{numtype : numtype, var_0 : num_}: + `%%%%`(I32_storagetype, ?(), CONST_fieldval(numtype, var_0), ?(CONST_val(numtype, var_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_70{sx : sx, i : uN}: + `%%%%`(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i), ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i))))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_71{sx : sx, i : uN}: + `%%%%`(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i), ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i))))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_72{x0 : storagetype, x1 : sx?, x2 : fieldval}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_unpackfield__before_fun_unpackfield__case_72: `%%%`(x0, x1, x2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.1-190.86 +def $tagsxa(externaddr*) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.23 + def $tagsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.42 + def $tagsxa{a : nat, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa#1*{xa#1 <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:198.1-198.57 + def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#2*{xa#2 <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.1-191.89 +def $globalsxa(externaddr*) : globaladdr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.26 + def $globalsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.51 + def $globalsxa{a : nat, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa#3*{xa#3 <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:202.1-202.63 + def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#4*{xa#4 <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.1-192.86 +def $memsxa(externaddr*) : memaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.23 + def $memsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.42 + def $memsxa{a : nat, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa#5*{xa#5 <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:206.1-206.57 + def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#6*{xa#6 <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.88 +def $tablesxa(externaddr*) : tableaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.25 + def $tablesxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.48 + def $tablesxa{a : nat, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa#7*{xa#7 <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:210.1-210.61 + def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#8*{xa#8 <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.87 +def $funcsxa(externaddr*) : funcaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.24 + def $funcsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.45 + def $funcsxa{a : nat, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa#9*{xa#9 <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:214.1-214.59 + def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#10*{xa#10 <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $store(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $store{s : store, f : frame}(`%;%`_state(s, f)) = s + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $frame(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tagaddr(state : state) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $moduleinst(state : state) : moduleinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $taginst(state : state) : taginst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $globalinst(state : state) : globalinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $meminst(state : state) : meminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tableinst(state : state) : tableinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $funcinst(state : state) : funcinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $datainst(state : state) : datainst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $eleminst(state : state) : eleminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $structinst(state : state) : structinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $arrayinst(state : state) : arrayinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $exninst(state : state) : exninst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fof(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fof{z : state}(z) = $frame(z) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $type(state : state, typeidx : typeidx) : deftype + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $type{z : state, x : uN}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $sof(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $sof{z : state}(z) = $store(z) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tag(state : state, tagidx : tagidx) : taginst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $global(state : state, globalidx : globalidx) : globalinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $mem(state : state, memidx : memidx) : meminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $table(state : state, tableidx : tableidx) : tableinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $func(state : state, funcidx : funcidx) : funcinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $data(state : state, dataidx : dataidx) : datainst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $elem(state : state, tableidx : tableidx) : eleminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $local(state : state, localidx : localidx) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_local: `%%%%`(state, localidx, val, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_local_case_0{z : state, x : uN, v : val}: + `%%%%`(z, x, v, `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) + -- wf_state: `%`(`%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_global: `%%%%`(state, globalidx, val, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_global_case_0{z : state, x : uN, v : val}: + `%%%%`(z, x, v, `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.GLOBALS_moduleinst|) + -- wf_state: `%`(`%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_table: `%%%%%`(state, tableidx, nat, ref, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_table_case_0{z : state, x : uN, i : nat, r : ref}: + `%%%%%`(z, x, i, r, `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.TABLES_moduleinst|) + -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_tableinst: `%%%%`(state, tableidx, tableinst, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_tableinst_case_0{z : state, x : uN, ti : tableinst}: + `%%%%`(z, x, ti, `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.TABLES_moduleinst|) + -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_mem: `%%%%%%`(state, memidx, nat, nat, byte*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_mem_case_0{z : state, x : uN, i : nat, j : nat, `b*` : byte*}: + `%%%%%%`(z, x, i, j, b#1*{b#1 <- `b*`}, `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.MEMS_moduleinst|) + -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b#2*{b#2 <- `b*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_meminst: `%%%%`(state, memidx, meminst, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_meminst_case_0{z : state, x : uN, mi : meminst}: + `%%%%`(z, x, mi, `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.MEMS_moduleinst|) + -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_elem: `%%%%`(state, elemidx, ref*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_elem_case_0{z : state, x : uN, `r*` : ref*}: + `%%%%`(z, x, r#1*{r#1 <- `r*`}, `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.ELEMS_moduleinst|) + -- wf_state: `%`(`%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r#2*{r#2 <- `r*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_data: `%%%%`(state, dataidx, byte*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_data_case_0{z : state, x : uN, `b*` : byte*}: + `%%%%`(z, x, b#3*{b#3 <- `b*`}, `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.DATAS_moduleinst|) + -- wf_state: `%`(`%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b#4*{b#4 <- `b*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_struct: `%%%%%`(state, structaddr, nat, fieldval, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_struct_case_0{z : state, a : nat, i : nat, fv : fieldval}: + `%%%%%`(z, a, i, fv, `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) + -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_array: `%%%%%`(state, arrayaddr, nat, fieldval, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_array_case_0{z : state, a : nat, i : nat, fv : fieldval}: + `%%%%%`(z, a, i, fv, `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) + -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_add_structinst: `%%%`(state, structinst*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_add_structinst_case_0{z : state, `si*` : structinst*}: + `%%%`(z, si#1*{si#1 <- `si*`}, `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z))) + -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store =++ si#2*{si#2 <- `si*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_add_arrayinst: `%%%`(state, arrayinst*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_add_arrayinst_case_0{z : state, `ai*` : arrayinst*}: + `%%%`(z, ai#1*{ai#1 <- `ai*`}, `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z))) + -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store =++ ai#2*{ai#2 <- `ai*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_add_exninst: `%%%`(state, exninst*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_add_exninst_case_0{z : state, `exn*` : exninst*}: + `%%%`(z, exn#1*{exn#1 <- `exn*`}, `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z))) + -- wf_state: `%`(`%;%`_state($sof(z)[EXNS_store =++ exn#2*{exn#2 <- `exn*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growtable_before_fun_growtable_case_1: `%%%`(tableinst, nat, ref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}: + `%%%`(tableinst, n, r) + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#1?{j#1 <- `j?`}), rt), REFS r'#1*{r'#1 <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#2?{j#2 <- `j?`}), rt), REFS r'#2*{r'#2 <- `r'*`} ++ r^n{}}) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#3?{j#3 <- `j?`}), rt), REFS r'#3*{r'#3 <- `r'*`}}) + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#4?{j#4 <- `j?`}), rt), REFS r'#4*{r'#4 <- `r'*`} ++ r^n{}}) + -- if ($proj_uN_0(i').0 = (|r'#5*{r'#5 <- `r'*`}| + n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#5).0))?{j#5 <- `j?`} + -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}: + `%%%%`(tableinst, n, r, ?(tableinst')) + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#1?{j#1 <- `j?`}), rt), REFS r'#1*{r'#1 <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#2?{j#2 <- `j?`}), rt), REFS r'#2*{r'#2 <- `r'*`} ++ r^n{}}) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#3?{j#3 <- `j?`}), rt), REFS r'#3*{r'#3 <- `r'*`}}) + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#4?{j#4 <- `j?`}), rt), REFS r'#4*{r'#4 <- `r'*`} ++ r^n{}}) + -- if ($proj_uN_0(i').0 = (|r'#5*{r'#5 <- `r'*`}| + n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#5).0))?{j#5 <- `j?`} + -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_1{x0 : tableinst, x1 : nat, x2 : ref}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_growtable_before_fun_growtable_case_1: `%%%`(x0, x1, x2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem_before_fun_growmem_case_1: `%%`(meminst, nat) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}: + `%%`(meminst, n) + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#5*{b#5 <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#6*{b#6 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#8?{j#8 <- `j?`})), BYTES b#7*{b#7 <- `b*`}}) + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#9?{j#9 <- `j?`})), BYTES b#8*{b#8 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#9*{b#9 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#10).0))?{j#10 <- `j?`} + -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem: `%%%`(meminst, nat, meminst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}: + `%%%`(meminst, n, ?(meminst')) + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#5*{b#5 <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#6*{b#6 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#8?{j#8 <- `j?`})), BYTES b#7*{b#7 <- `b*`}}) + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#9?{j#9 <- `j?`})), BYTES b#8*{b#8 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#9*{b#9 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#10).0))?{j#10 <- `j?`} + -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_1{x0 : meminst, x1 : nat}: + `%%%`(x0, x1, ?()) + -- ~ fun_growmem_before_fun_growmem_case_1: `%%`(x0, x1) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Num_ok: `%|-%:%`(store, num, numtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, nt : numtype, c : num_}: + `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Vec_ok: `%|-%:%`(store, vec, vectype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, vt : vectype, c : vec_}: + `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +relation Ref_ok: `%|-%:%`(store, ref, reftype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.38 + rule null{s : store}: + `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.33 + rule i31{s : store, i : u31}: + `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.I31_NUM`_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 + rule struct{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + -- if (a < |s.STRUCTS_store|) + -- if (s.STRUCTS_store[a].TYPE_structinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 + rule array{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + -- if (a < |s.ARRAYS_store|) + -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 + rule func{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + -- if (a < |s.FUNCS_store|) + -- if (s.FUNCS_store[a].TYPE_funcinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 + rule exn{s : store, a : addr, exn : exninst}: + `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) + -- if (a < |s.EXNS_store|) + -- if (s.EXNS_store[a] = exn) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.35 + rule host{s : store, a : addr}: + `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.HOST_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 + rule extern{s : store, ref : ref}: + `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.EXTERN`_ref(ref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) + -- if (ref =/= `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 + rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: + `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) +} + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Val_ok: `%|-%:%`(store, val, valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule num{s : store, num : num, nt : numtype}: + `%|-%:%`(s, $val_num(num), $valtype_numtype(nt)) + -- wf_store: `%`(s) + -- wf_num: `%`(num) + -- Num_ok: `%|-%:%`(s, num, nt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule vec{s : store, vec : vec, vt : vectype}: + `%|-%:%`(s, $val_vec(vec), $valtype_vectype(vt)) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) + -- Vec_ok: `%|-%:%`(s, vec, vt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule ref{s : store, ref : ref, rt : reftype}: + `%|-%:%`(s, $val_ref(ref), $valtype_reftype(rt)) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- Ref_ok: `%|-%:%`(s, ref, rt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Packval_ok: `%|-%:%`(store, packval, packtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, pt : packtype, c : iN}: + `%|-%:%`(s, PACK_packval(pt, c), pt) + -- wf_store: `%`(s) + -- wf_packval: `%`(PACK_packval(pt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule val{s : store, val : val, t : valtype}: + `%|-%:%`(s, $fieldval_val(val), $storagetype_valtype(t)) + -- wf_store: `%`(s) + -- wf_val: `%`(val) + -- wf_valtype: `%`(t) + -- Val_ok: `%|-%:%`(s, val, t) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule packval{s : store, packval : packval, pt : packtype}: + `%|-%:%`(s, $fieldval_packval(packval), $storagetype_packtype(pt)) + -- wf_store: `%`(s) + -- wf_packval: `%`(packval) + -- Packval_ok: `%|-%:%`(s, packval, pt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:103.1-103.84 +relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:105.1-107.28 + rule tag{s : store, a : addr, taginst : taginst}: + `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) + -- if (a < |s.TAGS_store|) + -- if (s.TAGS_store[a] = taginst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-111.34 + rule global{s : store, a : addr, globalinst : globalinst}: + `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- if (a < |s.GLOBALS_store|) + -- if (s.GLOBALS_store[a] = globalinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:113.1-115.28 + rule mem{s : store, a : addr, meminst : meminst}: + `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) + -- if (a < |s.MEMS_store|) + -- if (s.MEMS_store[a] = meminst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:117.1-119.32 + rule table{s : store, a : addr, tableinst : tableinst}: + `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) + -- if (a < |s.TABLES_store|) + -- if (s.TABLES_store[a] = tableinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:121.1-123.30 + rule func{s : store, a : addr, funcinst : funcinst}: + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) + -- if (a < |s.FUNCS_store|) + -- if (s.FUNCS_store[a] = funcinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:125.1-128.37 + rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: + `%|-%:%`(s, externaddr, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') + -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) +} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_valtype: `%%%`(moduleinst, valtype, valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_valtype_case_0{moduleinst : moduleinst, t : valtype, var_0 : valtype}: + `%%%`(moduleinst, t, var_0) + -- fun_subst_all_valtype: `%%%`(t, (iter_val#3 : deftype <: typeuse)*{iter_val#3 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_reftype: `%%%`(moduleinst, reftype, reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_reftype_case_0{moduleinst : moduleinst, rt : reftype, var_0 : reftype}: + `%%%`(moduleinst, rt, var_0) + -- fun_subst_all_reftype: `%%%`(rt, (iter_val#4 : deftype <: typeuse)*{iter_val#4 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_globaltype: `%%%`(moduleinst, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_globaltype_case_0{moduleinst : moduleinst, gt : globaltype, var_0 : globaltype}: + `%%%`(moduleinst, gt, var_0) + -- fun_subst_all_globaltype: `%%%`(gt, (iter_val#5 : deftype <: typeuse)*{iter_val#5 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_memtype: `%%%`(moduleinst, memtype, memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_memtype_case_0{moduleinst : moduleinst, mt : memtype, var_0 : memtype}: + `%%%`(moduleinst, mt, var_0) + -- fun_subst_all_memtype: `%%%`(mt, (iter_val#6 : deftype <: typeuse)*{iter_val#6 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_tabletype: `%%%`(moduleinst, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_tabletype_case_0{moduleinst : moduleinst, tt : tabletype, var_0 : tabletype}: + `%%%`(moduleinst, tt, var_0) + -- fun_subst_all_tabletype: `%%%`(tt, (iter_val#7 : deftype <: typeuse)*{iter_val#7 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_pure_before_br_on_null-addr`: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-null_0`{val : val, l : labelidx}: + `%`([$instr_val(val) BR_ON_NULL_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + -- if (val = `REF.NULL_ADDR`_val) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-null_0`{val : val, l : labelidx}: + `%`([$instr_val(val) BR_ON_NON_NULL_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + -- if (val = `REF.NULL_ADDR`_val) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_pure_before_ref.is_null-false`: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-true_0`{ref : ref}: + `%`([$instr_ref(ref) `REF.IS_NULL`_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + -- if (ref = `REF.NULL_ADDR`_ref) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-null_0`{ref : ref}: + `%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + -- if (ref = `REF.NULL_ADDR`_ref) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_pure_before_ref.eq-true`: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref}: + `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_pure_before_ref.eq-false`: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-true_0`{ref_1 : ref, ref_2 : ref}: + `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- ~ `Step_pure_before_ref.eq-true`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) + -- if (ref_1 = ref_2) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null_1`{ref_1 : ref, ref_2 : ref}: + `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_pure_before_extern.convert_any-addr`: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-null_0`{ref : ref}: + `%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- if (ref = `REF.NULL_ADDR`_ref) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_pure: `%~>%`(instr*, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule unreachable: + `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule nop: + `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule drop{val : val}: + `%~>%`([$instr_val(val) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_1)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + -- if ($proj_num__0(c) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_2)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + -- if ($proj_num__0(c) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) + -- if ($proj_num__0(c) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) + -- if ($proj_num__0(c) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- if ($proj_uN_0(l).0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + -- if ($proj_uN_0(l).0 > 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-true`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- if ($proj_num__0(c) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-false`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- if ($proj_num__0(c) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-null`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + -- if (val = `REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-addr`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [$instr_val(val)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- ~ `Step_pure_before_br_on_null-addr`: `%`([$instr_val(val) BR_ON_NULL_instr(l)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-null`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + -- if (val = `REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-addr`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], [$instr_val(val) BR_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([$instr_val(val) BR_ON_NON_NULL_instr(l)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call_indirect{x : idx, yy : typeuse}: + `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call_indirect{x : idx, yy : typeuse}: + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `frame-vals`{n : n, f : frame, `val*` : val*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: + `%~>%`($instr_val(val)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-label`{n : n, `instr'*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-handler`{n : n, `catch*` : catch*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-frame`{n : n, f : frame}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `local.tee`{val : val, x : idx}: + `%~>%`([$instr_val(val) `LOCAL.TEE`_instr(x)], [$instr_val(val) $instr_val(val) `LOCAL.SET`_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) + -- wf_instr: `%`(`LOCAL.SET`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.i31`{i : num_}: + `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`REF.I31`_instr) + -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-true`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + -- if (ref = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-false`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- ~ `Step_pure_before_ref.is_null-false`: `%`([$instr_ref(ref) `REF.IS_NULL`_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-null`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr], [TRAP_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + -- if (ref = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-addr`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr], [$instr_ref(ref)]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- ~ `Step_pure_before_ref.eq-true`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) + -- if (ref_1 = ref_2) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- ~ `Step_pure_before_ref.eq-false`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-null`{sx : sx}: + `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-num`{i : u31, sx : sx}: + `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(`REF.I31_NUM`_instr(i)) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new`{val : val, n : n, x : idx}: + `%~>%`([$instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], $instr_val(val)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-null`{ref : ref}: + `%~>%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- if (ref = `REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-addr`{ref : ref}: + `%~>%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) + -- ~ `Step_pure_before_extern.convert_any-addr`: `%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-null`: + `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-addr`{ref : ref}: + `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [$instr_ref(ref)]) + -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_, var_0 : u32}: + `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- if ($proj_num__0(c) =/= ?()) + -- if (!($proj_num__0(c)) = var_0) + -- fun_testop_: `%%%%`(nt, testop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- if ($proj_num__0(c) =/= ?()) + -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, var_0 : num_*}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) + -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) + -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) + -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvtestop{c_1 : vec_, c : num_, var_0 : u32}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- if ($proj_num__0(c) =/= ?()) + -- if (!($proj_num__0(c)) = var_0) + -- fun_inez_: `%%%`($vsize(V128_vectype), c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*, `var_0*` : uN*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), i))*{i <- `i*`} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)) + -- if ($proj_num__0(c) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0(var_0).0*{var_0 <- `var_0*`})) + -- if (|`var_0*`| = |`i*`|) + -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} + -- (fun_inez_: `%%%`($jsizenn(Jnn), !($proj_lane__2(i)), var_0))*{var_0 <- `var_0*`, i <- `i*`} + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + -- fun_vrelop_: `%%%%%`(sh, vrelop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + -- if ($proj_num__0(i) =/= ?()) + -- fun_vshiftop_: `%%%%%`(sh, vshiftop, c_1, !($proj_num__0(i)), var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vbitmask{c_1 : vec_, sh : ishape, c : num_, var_0 : u32}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- if ($proj_num__0(c) =/= ?()) + -- if (!($proj_num__0(c)) = var_0) + -- fun_vbitmaskop_: `%%%`(sh, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + -- fun_vswizzlop_: `%%%%%`(sh, swizzlop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + -- fun_vshufflop_: `%%%%%`(sh, i*{i <- `i*`}, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_, var_0 : lane_}: + `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), var_0^M{})) + -- fun_lpacknum_: `%%%`(Lnn, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) + -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)|) + -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) + -- if ($proj_num__0(c_2) =/= ?()) + -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) + -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)|) + -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_, var_0 : lane_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = var_0])) + -- fun_lpacknum_: `%%%`(Lnn, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (var_0 = c) + -- fun_vextunop__: `%%%%%`(sh_1, sh_2, vextunop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (var_0 = c) + -- fun_vextbinop__: `%%%%%%`(sh_1, sh_2, vextbinop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (var_0 = c) + -- fun_vextternop__: `%%%%%%%`(sh_1, sh_2, vextternop, c_1, c_2, c_3, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + -- fun_vnarrowop__: `%%%%%%`($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + -- fun_vcvtop__: `%%%%%`(sh_1, sh_2, vcvtop, c_1, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation fun_blocktype_: `%%%`(state, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule fun_blocktype__case_0{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%`(z, _IDX_blocktype(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1#3*{t_1#3 <- `t_1*`}), [], `%`_resulttype(t_2#3*{t_2#3 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#4*{t_1#4 <- `t_1*`}), `%`_resulttype(t_2#4*{t_2#4 <- `t_2*`}))) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1#5*{t_1#5 <- `t_1*`}), `%`_resulttype(t_2#5*{t_2#5 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule fun_blocktype__case_1{z : state, `t?` : valtype?}: + `%%%`(z, _RESULT_blocktype(t#1?{t#1 <- `t?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t#2?{t#2 <- `t?`})))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_throw_ref-handler-next`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.fill-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- if ($proj_num__0(i_1) =/= ?()) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.init-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.fill-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) + -- if ($proj_num__0(i_1) =/= ?()) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- fun_memarg0: `%`(var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.init-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.test-false`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- if ($proj_num__0(i_1) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !(var_0))) + -- fun_sx: `%%`(zt_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_num__0(j) =/= ?()) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- fun_zsize: `%%`(zt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-num`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_num__0(j) =/= ?()) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- fun_zsize: `%%`(zt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read: `%~>%`(config, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- fun_blocktype_: `%%%`(z, bt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- fun_blocktype_: `%%%`(z, bt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) + -- if (a < |$funcinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-null`{z : state, yy : typeuse}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*, `var_0*` : val??*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- (if (var_0 =/= ?()))*{var_0 <- `var_0*`} + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !(var_0)*{var_0 <- `var_0*`}, MODULE fi.MODULE_funcinst}) + -- if (a < |$funcinst(z)|) + -- if ($funcinst(z)[a] = fi) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !(var_0)*{var_0 <- `var_0*`}, MODULE fi.MODULE_funcinst}) + -- if (|`var_0*`| = |`t*`|) + -- (fun_default_: `%%`(t, var_0))*{var_0 <- `var_0*`, t <- `t*`} + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) + -- if (a < |$funcinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (a < |$funcinst(z)|) + -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- fun_blocktype_: `%%%`(z, bt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `local.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [$instr_val(val)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) + -- if ($local(z, x) = ?(val)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `global.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [$instr_val(val)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) + -- if ($global(z, x).VALUE_globalinst = val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: + `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (|$table(z, x).REFS_tableinst| = n) + -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) + -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.FILL`_instr(x)) + -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) $instr_ref($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) + -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(j) =/= ?()) + -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) + -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) + -- if ($proj_num__0(i) =/= ?()) + -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, Jnn : Jnn}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} + -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) + -- if ($proj_num__0(i) =/= ?()) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_uN: `%%`(N, j) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (c = $extend__(N, 128, U_sx, j)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) + -- if ($proj_num__0(i) =/= ?()) + -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.size`{z : state, x : idx, at : addrtype, n : n, lim : limits}: + `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) + -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) + -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) + -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- fun_memarg0: `%`(var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- fun_memarg0: `%`(var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- fun_memarg0: `%`(var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) + -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) + -- if ($proj_num__0(j) =/= ?()) + -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) + -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- fun_memarg0: `%`(var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL`_instr(ht)])) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.func`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) + -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)]), [$instr_ref(ref)]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) + -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*, `var_1*` : valtype*, `var_0*` : val??*}: + `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), $instr_val(val)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (|`var_0*`| = |`val*`|) + -- (if (var_0 =/= ?()))*{var_0 <- `var_0*`} + -- (if (!(var_0) = ?(val)))*{var_0 <- `var_0*`, val <- `val*`} + -- if (|`var_1*`| = |`zt*`|) + -- (fun_unpack: `%%`(zt, var_1))*{var_1 <- `var_1*`, zt <- `zt*`} + -- if (|`var_1*`| = |`var_0*`|) + -- (fun_default_: `%%`(var_1, var_0))*{var_1 <- `var_1*`, var_0 <- `var_0*`} + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*, var_0 : val?}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val(!(var_0))]) + -- if (var_0 =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) + -- if (a < |$structinst(z)|) + -- fun_unpackfield_: `%%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0], var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype, var_1 : valtype, var_0 : val??}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)]), $instr_val(val)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (var_0 =/= ?()) + -- if (!(var_0) = ?(val)) + -- fun_unpack: `%%`(zt, var_1) + -- fun_default_: `%%`(var_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), $instr_ref(ref)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- if ($proj_num__0(i) =/= ?()) + -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_num__0(i) =/= ?()) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- fun_zsize: `%%`(zt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?, var_3 : nat?, `var_2*` : lit_*, var_1 : consttype?, `var_0*` : instr*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), var_0^n{var_0 <- `var_0*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (var_3 =/= ?()) + -- if ($proj_num__0(i) =/= ?()) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !(var_3)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- fun_zsize: `%%`(zt, var_3) + -- (fun_cunpacknum_: `%%%`(zt, c, var_2))^n{var_2 <- `var_2*`, c <- `c*`} + -- fun_cunpack: `%%`(zt, var_1) + -- (if (var_1 =/= ?()))^n{} + -- (fun_const: `%%%`(!(var_1), var_2, var_0))^n{var_2 <- `var_2*`, var_0 <- `var_0*`} + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?, var_0 : val?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [$instr_val(!(var_0))]) + -- if (var_0 =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if (a < |$arrayinst(z)|) + -- if ($proj_num__0(i) =/= ?()) + -- fun_unpackfield_: `%%%%`(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0], var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-array`{z : state, a : addr}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) + -- if (a < |$arrayinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-null`{z : state, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) + -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null1`{z : state, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), []) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !(var_0))) + -- fun_sx: `%%`(zt_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (var_0 =/= ?()) + -- if (sx?{sx <- `sx?`} = !(var_0)) + -- fun_sx: `%%`(zt_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_ref: `%`(ref) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) + -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_num__0(j) =/= ?()) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- fun_zsize: `%%`(zt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?, var_3 : nat?, var_2 : lit_, var_1 : consttype?, var_0 : instr}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) var_0 `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if (var_3 =/= ?()) + -- wf_lit_: `%%`(zt, c) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- fun_zsize: `%%`(zt, var_3) + -- fun_cunpacknum_: `%%%`(zt, c, var_2) + -- fun_cunpack: `%%`(zt, var_1) + -- if (var_1 =/= ?()) + -- fun_const: `%%%`(!(var_1), var_2, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +relation Step: `%~>%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.36 + rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:45.1-47.45 + rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:231.1-235.49 + rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*, var_1 : deftype?, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config(var_0, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + -- if (var_1 =/= ?()) + -- Expand: `%~~%`(!(var_1), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if (a = |$exninst(z)|) + -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + -- fun_as_deftype: `%%`($tag(z, x).TYPE_taginst, var_1) + -- fun_add_exninst: `%%%`(z, [exn], var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 + rule `local.set`{z : state, val : val, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- fun_with_local: `%%%%`(z, x, val, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:322.1-323.58 + rule `global.set`{z : state, val : val, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- fun_with_global: `%%%%`(z, x, val, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.33 + rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:340.1-342.32 + rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + -- fun_with_table: `%%%%%`(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-354.46 + rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst, var_1 : tableinst?, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- if (var_1 =/= ?()) + -- if (ti = !(var_1)) + -- fun_growtable: `%%%%`($table(z, x), n, ref, var_1) + -- fun_with_tableinst: `%%%%`(z, x, ti, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:356.1-357.87 + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:417.1-418.51 + rule `elem.drop`{z : state, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- fun_with_elem: `%%%%`(z, x, [], var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:501.1-504.60 + rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:506.1-510.29 + rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- if (b*{b <- `b*`} = $nbytes_(nt, c)) + -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.52 + rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.52 + rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- if ($proj_num__0(c) =/= ?()) + -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) + -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.63 + rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-531.31 + rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) + -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:534.1-537.50 + rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-544.49 + rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) + -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) + -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) + -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:553.1-556.37 + rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst, var_1 : meminst?, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (var_1 =/= ?()) + -- if (mi = !(var_1)) + -- fun_growmem: `%%%`($mem(z, x), n, var_1) + -- fun_with_meminst: `%%%%`(z, x, mi, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:558.1-559.84 + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:619.1-620.51 + rule `data.drop`{z : state, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- fun_with_data: `%%%%`(z, x, [], var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:700.1-704.65 + rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*, `var_1*` : fieldval?*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config(var_0, [`REF.STRUCT_ADDR`_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [`REF.STRUCT_ADDR`_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if (var_1 =/= ?()))^n{var_1 <- `var_1*`} + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (a = |$structinst(z)|) + -- if (si = {TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) + -- (fun_packfield_: `%%%`(zt, val, var_1))^n{var_1 <- `var_1*`, val <- `val*`, zt <- `zt*`} + -- fun_add_structinst: `%%%`(z, [si], var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:721.1-722.55 + rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(val) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(val) `STRUCT.SET`_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:724.1-727.46 + rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*, var_1 : fieldval?, var_0 : state}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + -- fun_packfield_: `%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val, var_1) + -- if (var_1 =/= ?()) + -- fun_with_struct: `%%%%%`(z, a, $proj_uN_0(i).0, !(var_1), var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:740.1-745.65 + rule `array.new_fixed`{z : state, n : n, `val*` : val*, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype, `var_1*` : fieldval?*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]), `%;%`_config(var_0, [`REF.ARRAY_ADDR`_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config(var_0, [`REF.ARRAY_ADDR`_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (if (var_1 =/= ?()))^n{var_1 <- `var_1*`} + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}})) + -- (fun_packfield_: `%%%`(zt, val, var_1))^n{var_1 <- `var_1*`, val <- `val*`} + -- fun_add_arrayinst: `%%%`(z, [ai], var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-786.66 + rule `array.set-null`{z : state, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:788.1-790.39 + rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-795.44 + rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?, var_1 : fieldval?, var_0 : state}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(var_0, [])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- fun_packfield_: `%%%`(zt, val, var_1) + -- if ($proj_num__0(i) =/= ?()) + -- if (var_1 =/= ?()) + -- fun_with_array: `%%%%%`(z, a, $proj_uN_0(!($proj_num__0(i))).0, !(var_1), var_0) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +relation Steps: `%~>*%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + rule refl{z : state, `instr*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: + `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`})) + -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`})) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 +relation fun_alloctypes: `%%`(type*, deftype*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_1{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN, var_2 : deftype*, var_1 : deftype*, var_0 : deftype*}: + `%%`(type'#1*{type'#1 <- `type'*`} ++ [type], deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`}) + -- fun_rolldt: `%%%`(x, rectype, var_2) + -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype'#2)*{deftype'#2 <- `deftype'*`}, var_1) + -- fun_alloctypes: `%%`(type'#2*{type'#2 <- `type'*`}, var_0) + -- wf_uN: `%%`(32, x) + -- if (deftype'#1*{deftype'#1 <- `deftype'*`} = var_0) + -- if (type = TYPE_type(rectype)) + -- if (deftype#1*{deftype#1 <- `deftype*`} = var_1) + -- if ($proj_uN_0(x).0 = |deftype'#3*{deftype'#3 <- `deftype'*`}|) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_alloctag: `%%%`(store, tagtype, (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_alloctag_case_0{s : store, tagtype : typeuse, taginst : taginst}: + `%%%`(s, tagtype, (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|)) + -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_taginst: `%`({TYPE tagtype}) + -- if (taginst = {TYPE tagtype}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation fun_alloctags: `%%%`(store, tagtype*, (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_1{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store, var_1 : (store, tagaddr*), var_0 : (store, tagaddr)}: + `%%%`(s, [tagtype] ++ tagtype'#1*{tagtype'#1 <- `tagtype'*`}, (s_2, [ja] ++ ja'*{ja' <- `ja'*`})) + -- fun_alloctags: `%%%`(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}, var_1) + -- fun_alloctag: `%%%`(s, tagtype, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- if ((s_1, ja) = var_0) + -- if ((s_2, ja'#1*{ja'#1 <- `ja'*`}) = var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocglobal: `%%%%`(store, globaltype, val, (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocglobal_case_0{s : store, globaltype : globaltype, val : val, globalinst : globalinst}: + `%%%%`(s, globaltype, val, (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) + -- if (globalinst = {TYPE globaltype, VALUE val}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation fun_allocglobals: `%%%%`(store, globaltype*, val*, (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_1{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store, var_1 : (store, globaladdr*), var_0 : (store, globaladdr)}: + `%%%%`(s, [globaltype] ++ globaltype'#1*{globaltype'#1 <- `globaltype'*`}, [val] ++ val'#1*{val'#1 <- `val'*`}, (s_2, [ga] ++ ga'*{ga' <- `ga'*`})) + -- fun_allocglobals: `%%%%`(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, globaltype, val, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- if ((s_1, ga) = var_0) + -- if ((s_2, ga'#1*{ga'#1 <- `ga'*`}) = var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocmem: `%%%`(store, memtype, (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocmem_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}: + `%%%`(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#11?{j#11 <- `j?`})), (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#12?{j#12 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#13?{j#13 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation fun_allocmems: `%%%`(store, memtype*, (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_1{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store, var_1 : (store, memaddr*), var_0 : (store, memaddr)}: + `%%%`(s, [memtype] ++ memtype'#1*{memtype'#1 <- `memtype'*`}, (s_2, [ma] ++ ma'*{ma' <- `ma'*`})) + -- fun_allocmems: `%%%`(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}, var_1) + -- fun_allocmem: `%%%`(s, memtype, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- if ((s_1, ma) = var_0) + -- if ((s_2, ma'#1*{ma'#1 <- `ma'*`}) = var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_alloctable: `%%%%`(store, tabletype, ref, (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_alloctable_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}: + `%%%%`(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j#14?{j#14 <- `j?`}), rt), ref, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#15?{j#15 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#16?{j#16 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation fun_alloctables: `%%%%`(store, tabletype*, ref*, (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_1{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store, var_1 : (store, tableaddr*), var_0 : (store, tableaddr)}: + `%%%%`(s, [tabletype] ++ tabletype'#1*{tabletype'#1 <- `tabletype'*`}, [ref] ++ ref'#1*{ref'#1 <- `ref'*`}, (s_2, [ta] ++ ta'*{ta' <- `ta'*`})) + -- fun_alloctables: `%%%%`(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}, var_1) + -- fun_alloctable: `%%%%`(s, tabletype, ref, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- if ((s_1, ta) = var_0) + -- if ((s_2, ta'#1*{ta'#1 <- `ta'*`}) = var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocfunc: `%%%%%`(store, deftype, funccode, moduleinst, (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocfunc_case_0{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}: + `%%%%%`(s, deftype, funccode, moduleinst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) + -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation fun_allocfuncs: `%%%%%`(store, deftype*, funccode*, moduleinst*, (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_0{s : store}: + `%%%%%`(s, [], [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_1{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store, var_1 : (store, funcaddr*), var_0 : (store, funcaddr)}: + `%%%%%`(s, [dt] ++ dt'#3*{dt'#3 <- `dt'*`}, [funccode] ++ funccode'#1*{funccode'#1 <- `funccode'*`}, [moduleinst] ++ moduleinst'#1*{moduleinst'#1 <- `moduleinst'*`}, (s_2, [fa] ++ fa'*{fa' <- `fa'*`})) + -- fun_allocfuncs: `%%%%%`(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}, var_1) + -- fun_allocfunc: `%%%%%`(s, dt, funccode, moduleinst, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- if ((s_1, fa) = var_0) + -- if ((s_2, fa'#1*{fa'#1 <- `fa'*`}) = var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocdata: `%%%%`(store, datatype, byte*, (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocdata_case_0{s : store, `byte*` : byte*, datainst : datainst}: + `%%%%`(s, OK_datatype, byte#2*{byte#2 <- `byte*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_datainst: `%`({BYTES byte#3*{byte#3 <- `byte*`}}) + -- if (datainst = {BYTES byte#4*{byte#4 <- `byte*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation fun_allocdatas: `%%%%`(store, datatype*, byte**, (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_1{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store, var_1 : (store, dataaddr*), var_0 : (store, dataaddr)}: + `%%%%`(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#10*{b#10 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}, (s_2, [da] ++ da'*{da' <- `da'*`})) + -- fun_allocdatas: `%%%%`(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}, var_1) + -- fun_allocdata: `%%%%`(s, ok, b#11*{b#11 <- `b*`}, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- if ((s_1, da) = var_0) + -- if ((s_2, da'#1*{da'#1 <- `da'*`}) = var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocelem: `%%%%`(store, elemtype, ref*, (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocelem_case_0{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}: + `%%%%`(s, elemtype, ref#1*{ref#1 <- `ref*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref#2*{ref#2 <- `ref*`}}) + -- if (eleminst = {TYPE elemtype, REFS ref#3*{ref#3 <- `ref*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation fun_allocelems: `%%%%`(store, elemtype*, ref**, (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_1{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store, var_1 : (store, elemaddr*), var_0 : (store, elemaddr)}: + `%%%%`(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#3*{ref'#3 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}, (s_2, [ea] ++ ea'*{ea' <- `ea'*`})) + -- fun_allocelems: `%%%%`(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#4*{ref'#4 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}, var_1) + -- fun_allocelem: `%%%%`(s, rt, ref#5*{ref#5 <- `ref*`}, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- if ((s_1, ea) = var_0) + -- if ((s_2, ea'#1*{ea'#1 <- `ea'*`}) = var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocexport: `%%%`(moduleinst, export, exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexport_case_0{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, TAG_externidx(x)), {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.TAGS_moduleinst|) + -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexport_case_1{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, GLOBAL_externidx(x)), {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.GLOBALS_moduleinst|) + -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexport_case_2{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, MEM_externidx(x)), {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.MEMS_moduleinst|) + -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexport_case_3{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, TABLE_externidx(x)), {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.TABLES_moduleinst|) + -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexport_case_4{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, FUNC_externidx(x)), {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.FUNCS_moduleinst|) + -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocexports: `%%%`(moduleinst, export*, exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexports_case_0{moduleinst : moduleinst, `export*` : export*, `var_0*` : exportinst*}: + `%%%`(moduleinst, export#4*{export#4 <- `export*`}, var_0*{var_0 <- `var_0*`}) + -- if (|`var_0*`| = |`export*`|) + -- (fun_allocexport: `%%%`(moduleinst, export, var_0))*{var_0 <- `var_0*`, export <- `export*`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref**, (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_13 : exportinst*, var_12 : (store, funcaddr*), `var_11*` : elemtype*, var_10 : (store, elemaddr*), var_9 : (store, dataaddr*), `var_8*` : tabletype*, var_7 : (store, tableaddr*), `var_6*` : memtype*, var_5 : (store, memaddr*), `var_4*` : globaltype*, var_3 : (store, globaladdr*), `var_2*` : tagtype*, var_1 : (store, tagaddr*), var_0 : deftype*}: + `%%%%%%%`(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}, (s_7, moduleinst)) + -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#7*{export#7 <- `export*`}, var_13) + -- (if ($proj_uN_0(x#4).0 < |dt#15*{dt#15 <- `dt*`}|))*{x#4 <- `x*`} + -- fun_allocfuncs: `%%%%%`(s_6, dt#15*{dt#15 <- `dt*`}[$proj_uN_0(x#4).0]*{x#4 <- `x*`}, FUNC_funccode(x#5, local#4*{local#4 <- `local*#86`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#86` <- `local**`, x#5 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_12) + -- if (|`var_11*`| = |`elemtype*`|) + -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- `dt*`}, var_11))*{var_11 <- `var_11*`, elemtype#3 <- `elemtype*`} + -- fun_allocelems: `%%%%`(s_5, var_11*{var_11 <- `var_11*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_10) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#114`}*{`byte*#114` <- `byte**`}, var_9) + -- if (|`var_8*`| = |`tabletype*`|) + -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_8))*{var_8 <- `var_8*`, tabletype#160 <- `tabletype*`} + -- fun_alloctables: `%%%%`(s_3, var_8*{var_8 <- `var_8*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_7) + -- if (|`var_6*`| = |`memtype*`|) + -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_6))*{var_6 <- `var_6*`, memtype#126 <- `memtype*`} + -- fun_allocmems: `%%%`(s_2, var_6*{var_6 <- `var_6*`}, var_5) + -- if (|`var_4*`| = |`globaltype*`|) + -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_4))*{var_4 <- `var_4*`, globaltype#126 <- `globaltype*`} + -- fun_allocglobals: `%%%%`(s_1, var_4*{var_4 <- `var_4*`}, val_G#2*{val_G#2 <- `val_G*`}, var_3) + -- if (|`var_2*`| = |`tagtype*`|) + -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_2))*{var_2 <- `var_2*`, tagtype#82 <- `tagtype*`} + -- fun_alloctags: `%%%`(s, var_2*{var_2 <- `var_2*`}, var_1) + -- fun_alloctypes: `%%`(type#4*{type#4 <- `type*`}, var_0) + -- wf_store: `%`(s_7) + -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`(s_1) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_3) + -- wf_store: `%`(s_4) + -- wf_store: `%`(s_5) + -- wf_store: `%`(s_6) + -- wf_module: `%`(MODULE_module(`%`_list(type#2*{type#2 <- `type*`}), `%`_list(import#2*{import#2 <- `import*`}), `%`_list(tag#2*{tag#2 <- `tag*`}), `%`_list(global#4*{global#4 <- `global*`}), `%`_list(mem#4*{mem#4 <- `mem*`}), `%`_list(table#4*{table#4 <- `table*`}), `%`_list(func#3*{func#3 <- `func*`}), `%`_list(data#2*{data#2 <- `data*`}), `%`_list(elem#4*{elem#4 <- `elem*`}), start#4?{start#4 <- `start?`}, `%`_list(export#5*{export#5 <- `export*`}))) + -- (wf_tag: `%`(TAG_tag(tagtype#78)))*{tagtype#78 <- `tagtype*`} + -- if (|`expr_G*`| = |`globaltype*`|) + -- (wf_global: `%`(GLOBAL_global(globaltype#122, expr_G#1)))*{expr_G#1 <- `expr_G*`, globaltype#122 <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype#122)))*{memtype#122 <- `memtype*`} + -- if (|`expr_T*`| = |`tabletype*`|) + -- (wf_table: `%`(TABLE_table(tabletype#156, expr_T#1)))*{expr_T#1 <- `expr_T*`, tabletype#156 <- `tabletype*`} + -- if (|`expr_F*`| = |`local**`|) + -- if (|`expr_F*`| = |`x*`|) + -- (wf_func: `%`(FUNC_func(x#2, local#2*{local#2 <- `local*#82`}, expr_F#1)))*{expr_F#1 <- `expr_F*`, `local*#82` <- `local**`, x#2 <- `x*`} + -- if (|`byte**`| = |`datamode*`|) + -- (wf_data: `%`(DATA_data(byte#5*{byte#5 <- `byte*#110`}, datamode#110)))*{`byte*#110` <- `byte**`, datamode#110 <- `datamode*`} + -- if (|`elemmode*`| = |`elemtype*`|) + -- if (|`elemmode*`| = |`expr_E**`|) + -- (wf_elem: `%`(ELEM_elem(elemtype#1, expr_E#1*{expr_E#1 <- `expr_E*#1`}, elemmode#230)))*{elemmode#230 <- `elemmode*`, elemtype#1 <- `elemtype*`, `expr_E*#1` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I#1*{aa_I#1 <- `aa_I*`} ++ aa#1*{aa#1 <- `aa*`}, GLOBALS ga_I#1*{ga_I#1 <- `ga_I*`} ++ ga#1*{ga#1 <- `ga*`}, MEMS ma_I#1*{ma_I#1 <- `ma_I*`} ++ ma#1*{ma#1 <- `ma*`}, TABLES ta_I#1*{ta_I#1 <- `ta_I*`} ++ ta#1*{ta#1 <- `ta*`}, FUNCS fa_I#1*{fa_I#1 <- `fa_I*`} ++ fa#1*{fa#1 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt#8*{dt#8 <- `dt*`}, TAGS aa_I#2*{aa_I#2 <- `aa_I*`} ++ aa#2*{aa#2 <- `aa*`}, GLOBALS ga_I#2*{ga_I#2 <- `ga_I*`} ++ ga#2*{ga#2 <- `ga*`}, MEMS ma_I#2*{ma_I#2 <- `ma_I*`} ++ ma#2*{ma#2 <- `ma*`}, TABLES ta_I#2*{ta_I#2 <- `ta_I*`} ++ ta#2*{ta#2 <- `ta*`}, FUNCS fa_I#2*{fa_I#2 <- `fa_I*`} ++ fa#2*{fa#2 <- `fa*`}, DATAS da#1*{da#1 <- `da*`}, ELEMS ea#1*{ea#1 <- `ea*`}, EXPORTS xi#1*{xi#1 <- `xi*`}}) + -- if (module = MODULE_module(`%`_list(type#3*{type#3 <- `type*`}), `%`_list(import#3*{import#3 <- `import*`}), `%`_list(tag#3*{tag#3 <- `tag*`}), `%`_list(global#5*{global#5 <- `global*`}), `%`_list(mem#5*{mem#5 <- `mem*`}), `%`_list(table#5*{table#5 <- `table*`}), `%`_list(func#4*{func#4 <- `func*`}), `%`_list(data#3*{data#3 <- `data*`}), `%`_list(elem#5*{elem#5 <- `elem*`}), start#5?{start#5 <- `start?`}, `%`_list(export#6*{export#6 <- `export*`}))) + -- if (tag#4*{tag#4 <- `tag*`} = TAG_tag(tagtype#80)*{tagtype#80 <- `tagtype*`}) + -- if (global#6*{global#6 <- `global*`} = GLOBAL_global(globaltype#124, expr_G#2)*{expr_G#2 <- `expr_G*`, globaltype#124 <- `globaltype*`}) + -- if (mem#6*{mem#6 <- `mem*`} = MEMORY_mem(memtype#124)*{memtype#124 <- `memtype*`}) + -- if (table#6*{table#6 <- `table*`} = TABLE_table(tabletype#158, expr_T#2)*{expr_T#2 <- `expr_T*`, tabletype#158 <- `tabletype*`}) + -- if (func#5*{func#5 <- `func*`} = FUNC_func(x#3, local#3*{local#3 <- `local*#84`}, expr_F#2)*{expr_F#2 <- `expr_F*`, `local*#84` <- `local**`, x#3 <- `x*`}) + -- if (data#4*{data#4 <- `data*`} = DATA_data(byte#6*{byte#6 <- `byte*#112`}, datamode#112)*{`byte*#112` <- `byte**`, datamode#112 <- `datamode*`}) + -- if (elem#6*{elem#6 <- `elem*`} = ELEM_elem(elemtype#2, expr_E#2*{expr_E#2 <- `expr_E*#2`}, elemmode#232)*{elemmode#232 <- `elemmode*`, elemtype#2 <- `elemtype*`, `expr_E*#2` <- `expr_E**`}) + -- if (aa_I#3*{aa_I#3 <- `aa_I*`} = $tagsxa(externaddr#2*{externaddr#2 <- `externaddr*`})) + -- if (ga_I#3*{ga_I#3 <- `ga_I*`} = $globalsxa(externaddr#3*{externaddr#3 <- `externaddr*`})) + -- if (ma_I#3*{ma_I#3 <- `ma_I*`} = $memsxa(externaddr#4*{externaddr#4 <- `externaddr*`})) + -- if (ta_I#3*{ta_I#3 <- `ta_I*`} = $tablesxa(externaddr#5*{externaddr#5 <- `externaddr*`})) + -- if (fa_I#3*{fa_I#3 <- `fa_I*`} = $funcsxa(externaddr#6*{externaddr#6 <- `externaddr*`})) + -- if (dt#9*{dt#9 <- `dt*`} = var_0) + -- if (fa#3*{fa#3 <- `fa*`} = (|s.FUNCS_store| + i_F#1)^(i_F#1<|func#6*{func#6 <- `func*`}|){}) + -- if ((s_1, aa#3*{aa#3 <- `aa*`}) = var_1) + -- if ((s_2, ga#3*{ga#3 <- `ga*`}) = var_3) + -- if ((s_3, ma#3*{ma#3 <- `ma*`}) = var_5) + -- if ((s_4, ta#3*{ta#3 <- `ta*`}) = var_7) + -- if ((s_5, da#2*{da#2 <- `da*`}) = var_9) + -- if ((s_6, ea#2*{ea#2 <- `ea*`}) = var_10) + -- if ((s_7, fa#4*{fa#4 <- `fa*`}) = var_12) + -- if (xi#2*{xi#2 <- `xi*`} = var_13) + -- if (moduleinst = {TYPES dt#16*{dt#16 <- `dt*`}, TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_rundata_: `%%%`(dataidx, data, instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_rundata__case_0{x : uN, n : nat, `b*` : byte*}: + `%%%`(x, DATA_data(b#12^n{b#12 <- `b*`}, PASSIVE_datamode), []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_rundata__case_1{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}: + `%%%`(x, DATA_data(b#13^n{b#13 <- `b*`}, ACTIVE_datamode(y, instr#7*{instr#7 <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(`MEMORY.INIT`_instr(y, x)) + -- wf_instr: `%`(`DATA.DROP`_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_runelem_: `%%%`(elemidx, elem, instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_0{x : uN, rt : reftype, n : nat, `e*` : expr*}: + `%%%`(x, ELEM_elem(rt, e#1^n{e#1 <- `e*`}, PASSIVE_elemmode), []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_1{x : uN, rt : reftype, n : nat, `e*` : expr*}: + `%%%`(x, ELEM_elem(rt, e#2^n{e#2 <- `e*`}, DECLARE_elemmode), [`ELEM.DROP`_instr(x)]) + -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_2{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}: + `%%%`(x, ELEM_elem(rt, e#3^n{e#3 <- `e*`}, ACTIVE_elemmode(y, instr#8*{instr#8 <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(`TABLE.INIT`_instr(y, x)) + -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation fun_evalexprs: `%%%`(state, expr*, (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule fun_evalexprs_case_0{z : state}: + `%%%`(z, [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule fun_evalexprs_case_1{z : state, expr : instr*, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state, var_0 : (state, ref*)}: + `%%%`(z, [expr] ++ expr'#1*{expr'#1 <- `expr'*`}, (z'', [ref] ++ ref'*{ref' <- `ref'*`})) + -- fun_evalexprs: `%%%`(z', expr'#2*{expr'#2 <- `expr'*`}, var_0) + -- wf_state: `%`(z'') + -- wf_ref: `%`(ref) + -- (wf_ref: `%`(ref'#5))*{ref'#5 <- `ref'*`} + -- wf_state: `%`(z') + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [$val_ref(ref)]) + -- if ((z'', ref'#6*{ref'#6 <- `ref'*`}) = var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation fun_evalexprss: `%%%`(state, expr**, (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule fun_evalexprss_case_0{z : state}: + `%%%`(z, [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule fun_evalexprss_case_1{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state, var_1 : (state, ref**), var_0 : (state, ref*)}: + `%%%`(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#3*{expr'#3 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}, (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) + -- fun_evalexprss: `%%%`(z', expr'#4*{expr'#4 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}, var_1) + -- fun_evalexprs: `%%%`(z, expr#366*{expr#366 <- `expr*`}, var_0) + -- wf_state: `%`(z'') + -- (wf_ref: `%`(ref#6))*{ref#6 <- `ref*`} + -- (wf_ref: `%`(ref'#7))*{ref'#7 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`} + -- wf_state: `%`(z') + -- if ((z', ref#7*{ref#7 <- `ref*`}) = var_0) + -- if ((z'', ref'#8*{ref'#8 <- `ref'*#4`}*{`ref'*#4` <- `ref'**`}) = var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule fun_evalglobals_case_0{z : state}: + `%%%%`(z, [], [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule fun_evalglobals_case_1{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, s : store, f : frame, s' : store, a : nat, var_1 : (state, val*), var_0 : (store, globaladdr)}: + `%%%%`(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#5*{expr'#5 <- `expr'*`}, (z'', [val] ++ val'*{val' <- `val'*`})) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#6*{expr'#6 <- `expr'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, gt, val, var_0) + -- wf_state: `%`(z'') + -- wf_val: `%`(val) + -- (wf_val: `%`(val'#3))*{val'#3 <- `val'*`} + -- wf_state: `%`(z') + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) + -- if (z' = `%;%`_state(s, f)) + -- if ((s', a) = var_0) + -- if ((z'', val'#4*{val'#4 <- `val'*`}) = var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_instantiate: `%%%%`(store, module, externaddr*, config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat, `var_7*` : instr**, `var_6*` : instr**, var_5 : (store, moduleinst), var_4 : (state, ref**), var_3 : (state, ref*), var_2 : (state, val*), var_1 : deftype*, var_0 : deftype*}: + `%%%%`(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}, `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- (if (i_E#2 < |elem#12*{elem#12 <- `elem*`}|))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){} + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#12*{elem#12 <- `elem*`}[i_E#2], var_7))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_7 <- `var_7*`} + -- (if (i_D#2 < |data#11*{data#11 <- `data*`}|))^(i_D#2<|data#10*{data#10 <- `data*`}|){} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#11*{data#11 <- `data*`}[i_D#2], var_6))^(i_D#2<|data#10*{data#10 <- `data*`}|){var_6 <- `var_6*`} + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_5) + -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_4) + -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_3) + -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_2) + -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_1) + -- fun_alloctypes: `%%`(type#6*{type#6 <- `type*`}, var_0) + -- wf_state: `%`(z) + -- wf_state: `%`(z') + -- (wf_val: `%`(val_G#3))*{val_G#3 <- `val_G*`} + -- wf_state: `%`(z'') + -- (wf_ref: `%`(ref_T#3))*{ref_T#3 <- `ref_T*`} + -- wf_state: `%`(z''') + -- (wf_ref: `%`(ref_E#3))*{ref_E#3 <- `ref_E*#3`}*{`ref_E*#3` <- `ref_E**`} + -- wf_config: `%`(`%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E#1*{instr_E#1 <- `instr_E*`} ++ instr_D#1*{instr_D#1 <- `instr_D*`} ++ lift(instr_S#1?{instr_S#1 <- `instr_S?`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I#1*{xt_I#1 <- `xt_I*`}, xt_E#1*{xt_E#1 <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(`%`_list(type#5*{type#5 <- `type*`}), `%`_list(import#4*{import#4 <- `import*`}), `%`_list(tag#5*{tag#5 <- `tag*`}), `%`_list(global#7*{global#7 <- `global*`}), `%`_list(mem#7*{mem#7 <- `mem*`}), `%`_list(table#7*{table#7 <- `table*`}), `%`_list(func#8*{func#8 <- `func*`}), `%`_list(data#6*{data#6 <- `data*`}), `%`_list(elem#7*{elem#7 <- `elem*`}), start#6?{start#6 <- `start?`}, `%`_list(export#8*{export#8 <- `export*`}))) + -- if (|`expr_G*`| = |`globaltype*`|) + -- (wf_global: `%`(GLOBAL_global(globaltype#127, expr_G#3)))*{expr_G#3 <- `expr_G*`, globaltype#127 <- `globaltype*`} + -- if (|`expr_T*`| = |`tabletype*`|) + -- (wf_table: `%`(TABLE_table(tabletype#161, expr_T#3)))*{expr_T#3 <- `expr_T*`, tabletype#161 <- `tabletype*`} + -- if (|`byte**`| = |`datamode*`|) + -- (wf_data: `%`(DATA_data(byte#8*{byte#8 <- `byte*#117`}, datamode#116)))*{`byte*#117` <- `byte**`, datamode#116 <- `datamode*`} + -- if (|`elemmode*`| = |`expr_E**`|) + -- if (|`elemmode*`| = |`reftype*`|) + -- (wf_elem: `%`(ELEM_elem(reftype#517, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)))*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#517 <- `reftype*`} + -- (wf_start: `%`(START_start(x#6)))?{x#6 <- `x?`} + -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS $globalsxa(externaddr#8*{externaddr#8 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#9*{externaddr#9 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#9*{func#9 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- wf_state: `%`(`%;%`_state(s''', f)) + -- (wf_uN: `%%`(32, `%`_uN(i_D#1)))^(i_D#1<|data#7*{data#7 <- `data*`}|){} + -- (wf_uN: `%%`(32, `%`_uN(i_E#1)))^(i_E#1<|elem#8*{elem#8 <- `elem*`}|){} + -- (wf_instr: `%`(CALL_instr(x#7)))?{x#7 <- `x?`} + -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I#2*{xt_I#2 <- `xt_I*`}, xt_E#2*{xt_E#2 <- `xt_E*`})) + -- if (|`externaddr*`| = |`xt_I*`|) + -- (Externaddr_ok: `%|-%:%`(s, externaddr#10, xt_I#3))*{externaddr#10 <- `externaddr*`, xt_I#3 <- `xt_I*`} + -- if (module = MODULE_module(`%`_list(type#7*{type#7 <- `type*`}), `%`_list(import#5*{import#5 <- `import*`}), `%`_list(tag#6*{tag#6 <- `tag*`}), `%`_list(global#8*{global#8 <- `global*`}), `%`_list(mem#8*{mem#8 <- `mem*`}), `%`_list(table#8*{table#8 <- `table*`}), `%`_list(func#10*{func#10 <- `func*`}), `%`_list(data#8*{data#8 <- `data*`}), `%`_list(elem#9*{elem#9 <- `elem*`}), start#7?{start#7 <- `start?`}, `%`_list(export#9*{export#9 <- `export*`}))) + -- if (global#9*{global#9 <- `global*`} = GLOBAL_global(globaltype#129, expr_G#4)*{expr_G#4 <- `expr_G*`, globaltype#129 <- `globaltype*`}) + -- if (table#9*{table#9 <- `table*`} = TABLE_table(tabletype#163, expr_T#4)*{expr_T#4 <- `expr_T*`, tabletype#163 <- `tabletype*`}) + -- if (data#9*{data#9 <- `data*`} = DATA_data(byte#9*{byte#9 <- `byte*#119`}, datamode#118)*{`byte*#119` <- `byte**`, datamode#118 <- `datamode*`}) + -- if (elem#10*{elem#10 <- `elem*`} = ELEM_elem(reftype#519, expr_E#4*{expr_E#4 <- `expr_E*#4`}, elemmode#239)*{elemmode#239 <- `elemmode*`, `expr_E*#4` <- `expr_E**`, reftype#519 <- `reftype*`}) + -- if (start#8?{start#8 <- `start?`} = START_start(x#8)?{x#8 <- `x?`}) + -- if (moduleinst_0 = {TYPES var_1, TAGS [], GLOBALS $globalsxa(externaddr#11*{externaddr#11 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#12*{externaddr#12 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#11*{func#11 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- if ((z', val_G#4*{val_G#4 <- `val_G*`}) = var_2) + -- if ((z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = var_3) + -- if ((z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = var_4) + -- if (z''' = `%;%`_state(s''', f)) + -- if ((s'''', moduleinst) = var_5) + -- if (instr_D#2*{instr_D#2 <- `instr_D*`} = $concat_(syntax instr, var_6^(i_D#2<|data#10*{data#10 <- `data*`}|){var_6 <- `var_6*`})) + -- if (instr_E#2*{instr_E#2 <- `instr_E*`} = $concat_(syntax instr, var_7^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_7 <- `var_7*`})) + -- if (instr_S#2?{instr_S#2 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_invoke: `%%%%`(store, funcaddr, val*, config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_invoke_case_0{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%%`(s, funcaddr, val#1*{val#1 <- `val*`}, `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) + -- if (funcaddr < |s.FUNCS_store|) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val#2)*{val#2 <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#6*{t_1#6 <- `t_1*`}), `%`_resulttype(t_2#6*{t_2#6 <- `t_2*`}))) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1#7*{t_1#7 <- `t_1*`}), `%`_resulttype(t_2#7*{t_2#7 <- `t_2*`}))) + -- if (|`t_1*`| = |`val*`|) + -- (Val_ok: `%|-%:%`(s, val#3, t_1#8))*{t_1#8 <- `t_1*`, val#3 <- `val*`} + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax castop = (null?, null?) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax memidxop = (memidx, memarg) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax startopt = start* + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax code = (local*, expr) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax nopt = u32* + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +def $ieee_(N : N, rat : rat) : fNmag + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax idctxt = +{ + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation wf_idctxt: `%`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) + -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} + -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} + -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} + -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} + -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} + -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} + -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} + -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} + -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} + -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax I = idctxt + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation fun_concat_idctxt: `%%`(idctxt*, idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule fun_concat_idctxt_case_0: + `%%`([], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule fun_concat_idctxt_case_1{I : idctxt, `I'*` : I*, var_0 : idctxt}: + `%%`([I] ++ I'#1*{I'#1 <- `I'*`}, I +++ var_0) + -- fun_concat_idctxt: `%%`(I'*{I' <- `I'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation Idctxt_ok: `|-%:OK`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule _{I : I, `field**` : char**}: + `|-%:OK`(I) + -- wf_idctxt: `%`(I) + -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) + -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} + -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $dots : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +syntax decl = + | TYPE(rectype : rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype : memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx : funcidx) + | EXPORT(name : name, externidx : externidx) + +def $decl_data(data) : decl + def $decl_data{x0 : byte*, x1 : datamode}(DATA_data(x0, x1)) = DATA_decl(x0, x1) + +def $decl_elem(elem) : decl + def $decl_elem{x0 : reftype, x1 : expr*, x2 : elemmode}(ELEM_elem(x0, x1, x2)) = ELEM_decl(x0, x1, x2) + +def $decl_export(export) : decl + def $decl_export{x0 : name, x1 : externidx}(EXPORT_export(x0, x1)) = EXPORT_decl(x0, x1) + +def $decl_func(func) : decl + def $decl_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_decl(x0, x1, x2) + +def $decl_global(global) : decl + def $decl_global{x0 : globaltype, x1 : expr}(GLOBAL_global(x0, x1)) = GLOBAL_decl(x0, x1) + +def $decl_import(import) : decl + def $decl_import{x0 : name, x1 : name, x2 : externtype}(IMPORT_import(x0, x1, x2)) = IMPORT_decl(x0, x1, x2) + +def $decl_mem(mem) : decl + def $decl_mem{x0 : memtype}(MEMORY_mem(x0)) = MEMORY_decl(x0) + +def $decl_start(start) : decl + def $decl_start{x0 : funcidx}(START_start(x0)) = START_decl(x0) + +def $decl_table(table) : decl + def $decl_table{x0 : tabletype, x1 : expr}(TABLE_table(x0, x1)) = TABLE_decl(x0, x1) + +def $decl_tag(tag) : decl + def $decl_tag{x0 : tagtype}(TAG_tag(x0)) = TAG_decl(x0) + +def $decl_type(type) : decl + def $decl_type{x0 : rectype}(TYPE_type(x0)) = TYPE_decl(x0) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +relation wf_decl: `%`(decl) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_0{rectype : rectype}: + `%`(TYPE_decl(rectype)) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_1{name : name, name_0 : name, externtype : externtype}: + `%`(IMPORT_decl(name, name_0, externtype)) + -- wf_name: `%`(name) + -- wf_name: `%`(name_0) + -- wf_externtype: `%`(externtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_2{tagtype : tagtype}: + `%`(TAG_decl(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_3{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_decl(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_4{memtype : memtype}: + `%`(MEMORY_decl(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_5{tabletype : tabletype, expr : expr}: + `%`(TABLE_decl(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_6{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_decl(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_7{`byte*` : byte*, datamode : datamode}: + `%`(DATA_decl(`byte*`, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_8{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_decl(reftype, `expr*`, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_9{funcidx : funcidx}: + `%`(START_decl(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_10{name : name, externidx : externidx}: + `%`(EXPORT_decl(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 +def $typesd(decl*) : type* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 + def $typesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:271.1-271.48 + def $typesd{rectype : rectype, `decl'*` : decl*}([TYPE_decl(rectype)] ++ decl'#1*{decl'#1 <- `decl'*`}) = [TYPE_type(rectype)] ++ $typesd(decl'#2*{decl'#2 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:272.1-272.57 + def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#3*{decl'#3 <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 +def $importsd(decl*) : import* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 + def $importsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:275.1-275.56 + def $importsd{name : name, name_0 : name, externtype : externtype, `decl'*` : decl*}([IMPORT_decl(name, name_0, externtype)] ++ decl'#4*{decl'#4 <- `decl'*`}) = [IMPORT_import(name, name_0, externtype)] ++ $importsd(decl'#5*{decl'#5 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:276.1-276.61 + def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#6*{decl'#6 <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 +def $tagsd(decl*) : tag* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 + def $tagsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:279.1-279.44 + def $tagsd{tagtype : tagtype, `decl'*` : decl*}([TAG_decl(tagtype)] ++ decl'#7*{decl'#7 <- `decl'*`}) = [TAG_tag(tagtype)] ++ $tagsd(decl'#8*{decl'#8 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:280.1-280.55 + def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#9*{decl'#9 <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 +def $globalsd(decl*) : global* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 + def $globalsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:283.1-283.56 + def $globalsd{globaltype : globaltype, expr : expr, `decl'*` : decl*}([GLOBAL_decl(globaltype, expr)] ++ decl'#10*{decl'#10 <- `decl'*`}) = [GLOBAL_global(globaltype, expr)] ++ $globalsd(decl'#11*{decl'#11 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:284.1-284.61 + def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#12*{decl'#12 <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 +def $memsd(decl*) : mem* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 + def $memsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:287.1-287.44 + def $memsd{memtype : memtype, `decl'*` : decl*}([MEMORY_decl(memtype)] ++ decl'#13*{decl'#13 <- `decl'*`}) = [MEMORY_mem(memtype)] ++ $memsd(decl'#14*{decl'#14 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:288.1-288.55 + def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#15*{decl'#15 <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 +def $tablesd(decl*) : table* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 + def $tablesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:291.1-291.52 + def $tablesd{tabletype : tabletype, expr : expr, `decl'*` : decl*}([TABLE_decl(tabletype, expr)] ++ decl'#16*{decl'#16 <- `decl'*`}) = [TABLE_table(tabletype, expr)] ++ $tablesd(decl'#17*{decl'#17 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:292.1-292.59 + def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#18*{decl'#18 <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 +def $funcsd(decl*) : func* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 + def $funcsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:295.1-295.48 + def $funcsd{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*}([FUNC_decl(typeidx, `local*`, expr)] ++ decl'#19*{decl'#19 <- `decl'*`}) = [FUNC_func(typeidx, `local*`, expr)] ++ $funcsd(decl'#20*{decl'#20 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:296.1-296.57 + def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#21*{decl'#21 <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 +def $datasd(decl*) : data* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 + def $datasd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:299.1-299.48 + def $datasd{`byte*` : byte*, datamode : datamode, `decl'*` : decl*}([DATA_decl(`byte*`, datamode)] ++ decl'#22*{decl'#22 <- `decl'*`}) = [DATA_data(`byte*`, datamode)] ++ $datasd(decl'#23*{decl'#23 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:300.1-300.57 + def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#24*{decl'#24 <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 +def $elemsd(decl*) : elem* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 + def $elemsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:303.1-303.48 + def $elemsd{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*}([ELEM_decl(reftype, `expr*`, elemmode)] ++ decl'#25*{decl'#25 <- `decl'*`}) = [ELEM_elem(reftype, `expr*`, elemmode)] ++ $elemsd(decl'#26*{decl'#26 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:304.1-304.57 + def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#27*{decl'#27 <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 +def $startsd(decl*) : start* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 + def $startsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:307.1-307.52 + def $startsd{funcidx : funcidx, `decl'*` : decl*}([START_decl(funcidx)] ++ decl'#28*{decl'#28 <- `decl'*`}) = [START_start(funcidx)] ++ $startsd(decl'#29*{decl'#29 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:308.1-308.59 + def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#30*{decl'#30 <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 +def $exportsd(decl*) : export* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 + def $exportsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:311.1-311.56 + def $exportsd{name : name, externidx : externidx, `decl'*` : decl*}([EXPORT_decl(name, externidx)] ++ decl'#31*{decl'#31 <- `decl'*`}) = [EXPORT_export(name, externidx)] ++ $exportsd(decl'#32*{decl'#32 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:312.1-312.61 + def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#33*{decl'#33 <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +relation fun_ordered: `%%`(decl*, bool) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule fun_ordered_case_0{`decl*` : decl*}: + `%%`(decl#1*{decl#1 <- `decl*`}, true) + -- if ($importsd(decl#2*{decl#2 <- `decl*`}) = []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule fun_ordered_case_1{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*}: + `%%`(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}, (((((($importsd(decl_1#7*{decl_1#7 <- `decl_1*`}) = []) /\ ($tagsd(decl_1#6*{decl_1#6 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1#5*{decl_1#5 <- `decl_1*`}) = [])) /\ ($memsd(decl_1#4*{decl_1#4 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1#3*{decl_1#3 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1#2*{decl_1#2 <- `decl_1*`}) = []))) + +;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec +relation Context_ok: `|-%:OK`(context) + ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec + rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `|-%:OK`(C) + -- wf_context: `%`(C) + -- wf_context: `%`(C_0) + -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (wf_context: `%`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (Deftype_ok: `%|-%:OK`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{dt_F <- `dt_F*`, t_1 <- `t_1*`, t_2 <- `t_2*`} + -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- `et*`} + -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- `lct*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt)])))*{rt <- `rt*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt')])))?{rt' <- `rt'?`} + -- (if ($proj_uN_0(x).0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Localval_ok: `%|-%:%`(store, val?, localtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule set{s : store, val : val, t : valtype}: + `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) + -- wf_store: `%`(s) + -- wf_val: `%`(val) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + -- Val_ok: `%|-%:%`(s, val, t) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule unset{s : store}: + `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, BOT_valtype)) + -- wf_store: `%`(s) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, BOT_valtype)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Datainst_ok: `%|-%:%`(store, datainst, datatype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `b*` : byte*}: + `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) + -- wf_store: `%`(s) + -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) + -- wf_store: `%`(s) + -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exportinst_ok: `%|-%:OK`(store, exportinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, nm : name, xa : externaddr, xt : externtype}: + `%|-%:OK`(s, {NAME nm, ADDR xa}) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_exportinst: `%`({NAME nm, ADDR xa}) + -- Externaddr_ok: `%|-%:%`(s, xa, xt) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `deftype*` : deftype*, `tagaddr*` : tagaddr*, `globaladdr*` : globaladdr*, `memaddr*` : memaddr*, `tableaddr*` : tableaddr*, `funcaddr*` : funcaddr*, `dataaddr*` : dataaddr*, `elemaddr*` : elemaddr*, `exportinst*` : exportinst*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `memtype*` : memtype*, `tabletype*` : tabletype*, `deftype_F*` : deftype*, `datatype*` : datatype*, `elemtype*` : elemtype*, `subtype*` : subtype*}: + `%|-%:%`(s, {TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}, {TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) + -- wf_store: `%`(s) + -- wf_moduleinst: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}) + -- wf_context: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (wf_externtype: `%`(TAG_externtype(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_externtype: `%`(GLOBAL_externtype(globaltype)))*{globaltype <- `globaltype*`} + -- (wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_F))))*{deftype_F <- `deftype_F*`} + -- (wf_externtype: `%`(MEM_externtype(memtype)))*{memtype <- `memtype*`} + -- (wf_externtype: `%`(TABLE_externtype(tabletype)))*{tabletype <- `tabletype*`} + -- (Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, deftype))*{deftype <- `deftype*`} + -- if (|`tagaddr*`| = |`tagtype*`|) + -- (Externaddr_ok: `%|-%:%`(s, TAG_externaddr(tagaddr), TAG_externtype(tagtype)))*{tagaddr <- `tagaddr*`, tagtype <- `tagtype*`} + -- if (|`globaladdr*`| = |`globaltype*`|) + -- (Externaddr_ok: `%|-%:%`(s, GLOBAL_externaddr(globaladdr), GLOBAL_externtype(globaltype)))*{globaladdr <- `globaladdr*`, globaltype <- `globaltype*`} + -- if (|`deftype_F*`| = |`funcaddr*`|) + -- (Externaddr_ok: `%|-%:%`(s, FUNC_externaddr(funcaddr), FUNC_externtype($typeuse_deftype(deftype_F))))*{deftype_F <- `deftype_F*`, funcaddr <- `funcaddr*`} + -- if (|`memaddr*`| = |`memtype*`|) + -- (Externaddr_ok: `%|-%:%`(s, MEM_externaddr(memaddr), MEM_externtype(memtype)))*{memaddr <- `memaddr*`, memtype <- `memtype*`} + -- if (|`tableaddr*`| = |`tabletype*`|) + -- (Externaddr_ok: `%|-%:%`(s, TABLE_externaddr(tableaddr), TABLE_externtype(tabletype)))*{tableaddr <- `tableaddr*`, tabletype <- `tabletype*`} + -- if (|`dataaddr*`| = |`datatype*`|) + -- (if (dataaddr < |s.DATAS_store|))*{dataaddr <- `dataaddr*`} + -- (Datainst_ok: `%|-%:%`(s, s.DATAS_store[dataaddr], datatype))*{dataaddr <- `dataaddr*`, datatype <- `datatype*`} + -- if (|`elemaddr*`| = |`elemtype*`|) + -- (if (elemaddr < |s.ELEMS_store|))*{elemaddr <- `elemaddr*`} + -- (Eleminst_ok: `%|-%:%`(s, s.ELEMS_store[elemaddr], elemtype))*{elemaddr <- `elemaddr*`, elemtype <- `elemtype*`} + -- (Exportinst_ok: `%|-%:OK`(s, exportinst))*{exportinst <- `exportinst*`} + -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) + -- if (|TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}| > 0) + -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Frame_ok: `%|-%:%`(store, frame, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `val?*` : val?*, moduleinst : moduleinst, C : context, `lct*` : localtype*}: + `%|-%:%`(s, {LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}, C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) + -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) + -- if (|`lct*`| = |`val?*`|) + -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:3.1-4.36 +relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:10.1-12.46 + rule plain{s : store, C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 + rule ref{s : store, C : context, ref : ref, rt : reftype}: + `%;%|-%:%`(s, C, $instr_ref(ref), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_ref: `%`(ref) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- Ref_ok: `%|-%:%`(s, ref, rt) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 + rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: + `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:23.1-26.37 + rule frame{s : store, C : context, n : n, f : frame, `instr*` : instr*, `t*` : valtype*, C' : context}: + `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) + -- Frame_ok: `%|-%:%`(s, f, C') + -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`})) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 + rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 + rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRAP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 +relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 + rule empty{s : store, C : context}: + `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 + rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*, var_0 : context?}: + `%;%|-%:%`(s, C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (|`init*`| = |`t*`|) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (|`init*`| = |`x_1*`|) + -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- if (var_0 =/= ?()) + -- Instrs_ok2: `%;%|-%:%`(s, !(var_0), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- fun_with_locals: `%%%%`(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}, var_0) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:47.1-51.33 + rule sub{s : store, C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it') + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 + rule frame{s : store, C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 +relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:60.1-62.44 + rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, jt : tagtype}: + `%|-%:%`(s, {TYPE jt}, jt) + -- wf_store: `%`(s) + -- wf_taginst: `%`({TYPE jt}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `mut?` : mut?, t : valtype, val : val}: + `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- wf_store: `%`(s) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Val_ok: `%|-%:%`(s, val, t) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Meminst_ok: `%|-%:%`(store, meminst, memtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, m : m, `b*` : byte*}: + `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- wf_store: `%`(s) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, m : m, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- wf_store: `%`(s) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) + -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- if (|ref*{ref <- `ref*`}| = n) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, moduleinst : moduleinst, func : func, C : context, dt' : deftype}: + `%|-%:%`(s, {TYPE dt, MODULE moduleinst, CODE $funccode_func(func)}, dt) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE $funccode_func(func)}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt) + -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) + -- Func_ok: `%|-%:%`(C, func, dt') + -- Deftype_sub: `%|-%<:%`(C, dt', dt) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Structinst_ok: `%|-%:OK`(store, structinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, `fv*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_store: `%`(s) + -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (|`fv*`| = |`zt*`|) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, `fv*` : fieldval*, `mut?` : mut?, zt : storagetype}: + `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_store: `%`(s) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exninst_ok: `%|-%:OK`(store, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, ta : tagaddr, `val*` : val*, dt : deftype, `t*` : valtype*}: + `%|-%:OK`(s, {TAG ta, FIELDS val*{val <- `val*`}}) + -- wf_store: `%`(s) + -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if (ta < |s.TAGS_store|) + -- if ($typeuse_deftype(dt) = s.TAGS_store[ta].TYPE_taginst) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if (|`t*`| = |`val*`|) + -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:208.1-209.50 +relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:222.1-225.35 + rule trans{fv_1 : fieldval, s : store, fv_2 : fieldval, fv' : fieldval}: + `%>>_%%`(fv_1, s, fv_2) + -- wf_fieldval: `%`(fv_1) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(fv_2) + -- wf_fieldval: `%`(fv') + -- ImmutReachable: `%>>_%%`(fv_1, s, fv') + -- ImmutReachable: `%>>_%%`(fv', s, fv_2) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 + rule `ref.struct`{a : addr, s : store, i : nat, `ft*` : fieldtype*, zt : storagetype}: + `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) + -- if (i < |s.STRUCTS_store[a].FIELDS_structinst|) + -- if (a < |s.STRUCTS_store|) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) + -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (i < |ft*{ft <- `ft*`}|) + -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:232.1-234.42 + rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: + `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) + -- if (i < |s.ARRAYS_store[a].FIELDS_arrayinst|) + -- if (a < |s.ARRAYS_store|) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) + -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 + rule `ref.exn`{a : addr, s : store, i : nat}: + `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, $fieldval_val(s.EXNS_store[a].FIELDS_exninst[i])) + -- if (i < |s.EXNS_store[a].FIELDS_exninst|) + -- if (a < |s.EXNS_store|) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 + rule `ref.extern`{ref : ref, s : store}: + `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, $fieldval_ref(ref)) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(ref)) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation fun_NotImmutReachable_before_fun_NotImmutReachable_case_1: `%%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_0{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%`(fv_1, s, fv_2) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation fun_NotImmutReachable: `%%%%`(fieldval, store, fieldval, bool) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_0{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%%`(fv_1, s, fv_2, false) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_1{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%%`(fv_1, s, fv_2, true) + -- ~ fun_NotImmutReachable_before_fun_NotImmutReachable_case_1: `%%%`(fv_1, s, fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{fv_1 : fieldval, s : store, fv_2 : fieldval, var_0 : bool}: + `~%>>_%%`(fv_1, s, fv_2) + -- wf_fieldval: `%`(fv_1) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(fv_2) + -- if var_0 + -- fun_NotImmutReachable: `%%%%`(fv_1, s, fv_2, var_0) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Store_ok: `|-%:OK`(store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `taginst*` : taginst*, `tagtype*` : tagtype*, `globalinst*` : globalinst*, `globaltype*` : globaltype*, `meminst*` : meminst*, `memtype*` : memtype*, `tableinst*` : tableinst*, `tabletype*` : tabletype*, `deftype*` : deftype*, `funcinst*` : funcinst*, `datainst*` : datainst*, `datatype*` : datatype*, `eleminst*` : eleminst*, `elemtype*` : elemtype*, `structinst*` : structinst*, `arrayinst*` : arrayinst*, `exninst*` : exninst*}: + `|-%:OK`(s) + -- wf_store: `%`(s) + -- (wf_typeuse: `%`(tagtype))*{tagtype <- `tagtype*`} + -- (wf_globaltype: `%`(globaltype))*{globaltype <- `globaltype*`} + -- (wf_memtype: `%`(memtype))*{memtype <- `memtype*`} + -- (wf_tabletype: `%`(tabletype))*{tabletype <- `tabletype*`} + -- (wf_reftype: `%`(elemtype))*{elemtype <- `elemtype*`} + -- (wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- wf_store: `%`({TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + -- if (|`taginst*`| = |`tagtype*`|) + -- (Taginst_ok: `%|-%:%`(s, taginst, tagtype))*{taginst <- `taginst*`, tagtype <- `tagtype*`} + -- if (|`globalinst*`| = |`globaltype*`|) + -- (Globalinst_ok: `%|-%:%`(s, globalinst, globaltype))*{globalinst <- `globalinst*`, globaltype <- `globaltype*`} + -- if (|`meminst*`| = |`memtype*`|) + -- (Meminst_ok: `%|-%:%`(s, meminst, memtype))*{meminst <- `meminst*`, memtype <- `memtype*`} + -- if (|`tableinst*`| = |`tabletype*`|) + -- (Tableinst_ok: `%|-%:%`(s, tableinst, tabletype))*{tableinst <- `tableinst*`, tabletype <- `tabletype*`} + -- if (|`deftype*`| = |`funcinst*`|) + -- (Funcinst_ok: `%|-%:%`(s, funcinst, deftype))*{deftype <- `deftype*`, funcinst <- `funcinst*`} + -- if (|`datainst*`| = |`datatype*`|) + -- (Datainst_ok: `%|-%:%`(s, datainst, datatype))*{datainst <- `datainst*`, datatype <- `datatype*`} + -- if (|`eleminst*`| = |`elemtype*`|) + -- (Eleminst_ok: `%|-%:%`(s, eleminst, elemtype))*{eleminst <- `eleminst*`, elemtype <- `elemtype*`} + -- (Structinst_ok: `%|-%:OK`(s, structinst))*{structinst <- `structinst*`} + -- (Arrayinst_ok: `%|-%:OK`(s, arrayinst))*{arrayinst <- `arrayinst*`} + -- (Exninst_ok: `%|-%:OK`(s, exninst))*{exninst <- `exninst*`} + -- (NotImmutReachable: `~%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, `REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_taginst: `%<=%`(taginst, taginst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{jt : tagtype}: + `%<=%`({TYPE jt}, {TYPE jt}) + -- wf_taginst: `%`({TYPE jt}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_globalinst: `%<=%`(globalinst, globalinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: + `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_meminst: `%<=%`(meminst, meminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, m : m, `b*` : byte*, n' : n, `b'*` : byte*}: + `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) + -- if (n <= n') + -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_tableinst: `%<=%`(tableinst, tableinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, m : m, rt : reftype, `ref*` : ref*, n' : n, `ref'*` : ref*}: + `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) + -- if (n <= n') + -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_funcinst: `%<=%`(funcinst, funcinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, mm : moduleinst, fc : funccode}: + `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) + -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_datainst: `%<=%`(datainst, datainst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`b*` : byte*, `b'*` : byte*}: + `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) + -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) + -- wf_datainst: `%`({BYTES b'*{b' <- `b'*`}}) + -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_eleminst: `%<=%`(eleminst, eleminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: + `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) + -- wf_eleminst: `%`({TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_structinst: `%<=%`(structinst, structinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (|`fv*`| = |`fv'*`|) + -- if (|`fv*`| = |`mut?*`|) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?` : mut?, zt : storagetype}: + `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (|`fv*`| = |`fv'*`|) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_exninst: `%<=%`(exninst, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{ta : tagaddr, `val*` : val*}: + `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) + -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_store: `%<=%`(store, store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, s' : store}: + `%<=%`(s, s') + -- wf_store: `%`(s) + -- wf_store: `%`(s') + -- (if (a < |s.TAGS_store|))^(a<|s.TAGS_store|){} + -- (if (a < |s'.TAGS_store|))^(a<|s.TAGS_store|){} + -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} + -- (if (a < |s.GLOBALS_store|))^(a<|s.GLOBALS_store|){} + -- (if (a < |s'.GLOBALS_store|))^(a<|s.GLOBALS_store|){} + -- (Extend_globalinst: `%<=%`(s.GLOBALS_store[a], s'.GLOBALS_store[a]))^(a<|s.GLOBALS_store|){} + -- (if (a < |s.MEMS_store|))^(a<|s.MEMS_store|){} + -- (if (a < |s'.MEMS_store|))^(a<|s.MEMS_store|){} + -- (Extend_meminst: `%<=%`(s.MEMS_store[a], s'.MEMS_store[a]))^(a<|s.MEMS_store|){} + -- (if (a < |s.TABLES_store|))^(a<|s.TABLES_store|){} + -- (if (a < |s'.TABLES_store|))^(a<|s.TABLES_store|){} + -- (Extend_tableinst: `%<=%`(s.TABLES_store[a], s'.TABLES_store[a]))^(a<|s.TABLES_store|){} + -- (if (a < |s.FUNCS_store|))^(a<|s.FUNCS_store|){} + -- (if (a < |s'.FUNCS_store|))^(a<|s.FUNCS_store|){} + -- (Extend_funcinst: `%<=%`(s.FUNCS_store[a], s'.FUNCS_store[a]))^(a<|s.FUNCS_store|){} + -- (if (a < |s.DATAS_store|))^(a<|s.DATAS_store|){} + -- (if (a < |s'.DATAS_store|))^(a<|s.DATAS_store|){} + -- (Extend_datainst: `%<=%`(s.DATAS_store[a], s'.DATAS_store[a]))^(a<|s.DATAS_store|){} + -- (if (a < |s.ELEMS_store|))^(a<|s.ELEMS_store|){} + -- (if (a < |s'.ELEMS_store|))^(a<|s.ELEMS_store|){} + -- (Extend_eleminst: `%<=%`(s.ELEMS_store[a], s'.ELEMS_store[a]))^(a<|s.ELEMS_store|){} + -- (if (a < |s.STRUCTS_store|))^(a<|s.STRUCTS_store|){} + -- (if (a < |s'.STRUCTS_store|))^(a<|s.STRUCTS_store|){} + -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} + -- (if (a < |s.ARRAYS_store|))^(a<|s.ARRAYS_store|){} + -- (if (a < |s'.ARRAYS_store|))^(a<|s.ARRAYS_store|){} + -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} + -- (if (a < |s.EXNS_store|))^(a<|s.EXNS_store|){} + -- (if (a < |s'.EXNS_store|))^(a<|s.EXNS_store|){} + -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation State_ok: `|-%:%`(state, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, C : context}: + `|-%:%`(`%;%`_state(s, f), C) + -- wf_context: `%`(C) + -- wf_state: `%`(`%;%`_state(s, f)) + -- Store_ok: `|-%:OK`(s) + -- Frame_ok: `%|-%:%`(s, f, C) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Config_ok: `|-%:OK`(config) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{z : state, `instr*` : instr*, C : context, `t*` : valtype*}: + `|-%:OK`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- State_ok: `|-%:%`(z, C) + -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax A = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax B = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax sym = + | _FIRST(A_1 : A) + | _DOTS + | _LAST(A_n : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax symsplit = + | _FIRST(A_1 : A) + | _LAST(A_2 : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax recorddots = () + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax record = +{ + FIELD_1 A, + FIELD_2 A, + `...` recorddots +} + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax pth = + | PTHSYNTAX + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +syntax T = nat + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremise: `%`(nat) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremisedots: `...` + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingScheme: `%`(nat) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec + rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: + `%`(conclusion) + -- NotationTypingPremise: `%`(premise_1) + -- NotationTypingPremise: `%`(premise_2) + -- NotationTypingPremisedots: `...` + -- NotationTypingPremise: `%`(premise_n) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 +relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 + rule `i32.add`{C : context}: + `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 + rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: + `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 + rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation NotationReduct: `~>%`(instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 3{q_1 : num_, q_5 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 4{q_6 : num_}: + `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $instrdots : instr* + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax label = + | `LABEL_%{%}`(n : n, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_label: `%`(label) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule label_case_0{n : n, `instr*` : instr*}: + `%`(`LABEL_%{%}`_label(n, `instr*`)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax callframe = + | `FRAME_%{%}`(n : n, frame : frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_callframe: `%`(callframe) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule callframe_case_0{n : n, frame : frame}: + `%`(`FRAME_%{%}`_callframe(n, frame)) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 +def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 + def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 + def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'#1*{X'#1 <- `X'*`}, [Y] ++ Y'#1*{Y'#1 <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) + -- if ((s_2, a'#1*{a'#1 <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'#2*{X'#2 <- `X'*`}, Y'#2*{Y'#2 <- `Y'*`})) +} + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +syntax symdots = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +relation wf_symdots: `%`(symdots) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + rule symdots_case_0{i : nat}: + `%`(`%`_symdots(i)) + -- if (i = 0) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +def $var(syntax X) : nat + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + def $var{syntax X}(syntax X) = 0 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax abbreviated = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax expanded = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax syntax = () + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bbyte : byte + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 +grammar BuN(N : N) : uN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 + prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) + -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 + prod{m : m, n : n} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 +grammar BsN(N : N) : sN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 + prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) + -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 + prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) + -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 + prod{i : sN, n : n} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * ($proj_sN_0(i).0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BiN(N : N) : iN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{i : sN, var_0 : nat} i:BsN(N) => `%`_iN(var_0) + -- fun_inv_signed_: `%%%`(N, $proj_sN_0(i).0, var_0) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BfN(N : N) : fN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu32 : u32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu64 : u64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bs33 : s33 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : sN} ``:BsN(33) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi32 : i32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi64 : i64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf32 : f32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : fN} ``:BfN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf64 : f64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : fN} ``:BfN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blist(syntax el, grammar BX : el) : el* + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bname : name + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{name : name, `b*` : byte*, var_0 : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name + -- if (var_0 = b*{b <- `b*`}) + -- fun_utf8: `%%`($proj_name_0(name).0, var_0) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btypeidx : typeidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btagidx : tagidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bglobalidx : globalidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bmemidx : memidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btableidx : tableidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfuncidx : funcidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bdataidx : dataidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Belemidx : elemidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blocalidx : localidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfieldidx : fieldidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blabelidx : labelidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{l : labelidx} l:Bu32 => l + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bexternidx : externidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bnumtype : numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7C => F64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7D => F32_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7E => I64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7F => I32_numtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvectype : vectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7B => V128_vectype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Babsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x69 => EXN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6A => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6B => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6C => I31_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6D => EQ_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6E => ANY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6F => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x70 => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x71 => NONE_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x72 => NOEXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x73 => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x74 => NOEXN_heaptype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => ht + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) + -- if ($proj_sN_0(x33).0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Breftype : reftype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvaltype : valtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{nt : numtype} nt:Bnumtype => $valtype_numtype(nt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{vt : vectype} vt:Bvectype => $valtype_vectype(vt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{rt : reftype} rt:Breftype => $valtype_reftype(rt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bresulttype : resulttype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmut : mut? + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x00 => ?() + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x01 => ?(MUT_mut) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bpacktype : packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x77 => I16_packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x78 => I8_packtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bstoragetype : storagetype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{t : valtype} t:Bvaltype => $storagetype_valtype(t) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{pt : packtype} pt:Bpacktype => $storagetype_packtype(pt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bfieldtype : fieldtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bcomptype : comptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bsubtype : subtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Brectype : rectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Blimits : (addrtype, limits) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btagtype : tagtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bglobaltype : globaltype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmemtype : memtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btabletype : tabletype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bexterntype : externtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcastop : castop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x00 => (?(), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x01 => (?(NULL_null), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x02 => (?(), ?(NULL_null)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x03 => (?(NULL_null), ?(NULL_null)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bblocktype : blocktype + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x40 => _RESULT_blocktype(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx(($proj_sN_0(i).0 : int <:> nat))) + -- if ($proj_sN_0(i).0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcatch : catch + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bmemarg : memidxop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) + -- if (n < (2 ^ 6)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, n : n, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) + -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Blaneidx : laneidx + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} `%`_byte($proj_uN_0(l).0):Bbyte => `%`_laneidx($proj_uN_0(l).0) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 +grammar Binstr : instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 + prod 0x00 => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 + prod 0x01 => NOP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 + prod 0x1A => DROP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 + prod 0x1B => SELECT_instr(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 + prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 + prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 + prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 + prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 + prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 + prod 0x0A => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 + prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 + prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 + prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 + prod 0x0F => RETURN_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 + prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 + prod{x : idx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 + prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 + prod{x : idx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 + prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 + prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 + prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 + prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 + prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 + prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 + prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 + prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 + prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 + prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 + prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 + prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 + prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 + prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 + prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 + prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 + prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 + prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 + prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 + prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 + prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 + prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 + prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 + prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 + prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 + prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 + prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 + prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 + prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 + prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 + prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 + prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 + prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 + prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 + prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 + prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 + prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 + prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 + prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 + prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 + prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 + prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 + prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 + prod 0xD1 => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 + prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 + prod 0xD3 => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 + prod 0xD4 => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 + prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 + prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 + prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 + prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 + prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 + prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 + prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 + prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 + prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 + prod {{0xFB} {`%`_u32(15):Bu32}} => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 + prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 + prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 + prod {{0xFB} {`%`_u32(26):Bu32}} => `ANY.CONVERT_EXTERN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 + prod {{0xFB} {`%`_u32(27):Bu32}} => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 + prod {{0xFB} {`%`_u32(28):Bu32}} => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 + prod {{0xFB} {`%`_u32(29):Bu32}} => `I31.GET`_instr(S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 + prod {{0xFB} {`%`_u32(30):Bu32}} => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 + prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 + prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 + prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 + prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 + prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 + prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 + prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 + prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 + prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 + prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 + prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 + prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 + prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 + prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 + prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 + prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 + prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 + prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 + prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 + prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 + prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 + prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 + prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 + prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 + prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 + prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 + prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 + prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 + prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 + prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 + prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 + prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 + prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 + prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 + prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 + prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 + prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 + prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 + prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 + prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 + prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 + prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 + prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 + prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 + prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 + prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 + prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 + prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 + prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 + prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 + prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 + prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 + prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 + prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 + prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 + prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 + prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 + prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 + prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 + prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 + prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 + prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 + prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 + prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 + prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 + prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 + prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 + prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 + prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 + prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 + prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 + prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 + prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 + prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 + prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 + prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 + prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 + prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 + prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 + prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 + prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 + prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 + prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 + prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 + prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 + prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 + prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 + prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 + prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 + prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 + prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 + prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 + prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 + prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 + prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 + prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 + prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 + prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 + prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 + prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 + prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 + prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 + prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 + prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 + prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 + prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 + prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 + prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 + prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 + prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 + prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 + prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 + prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 + prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 + prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 + prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 + prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 + prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 + prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 + prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 + prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 + prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 + prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 + prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 + prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 + prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 + prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 + prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 + prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 + prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 + prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 + prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 + prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 + prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 + prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 + prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 + prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 + prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 + prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 + prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 + prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 + prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx($proj_uN_0(l).0)^16{l <- `l*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 + prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 + prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 + prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 + prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 + prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 + prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 + prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 + prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 + prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 + prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 + prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 + prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 + prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 + prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 + prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 + prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 + prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 + prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 + prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 + prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 + prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 + prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 + prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 + prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 + prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 + prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 + prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 + prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 + prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 + prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 + prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 + prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 + prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 + prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 + prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 + prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 + prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 + prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 + prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 + prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 + prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 + prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 + prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 + prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 + prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 + prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 + prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 + prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 + prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 + prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 + prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 + prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 + prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 + prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 + prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 + prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 + prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 + prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 + prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 + prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 + prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 + prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 + prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 + prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 + prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 + prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 + prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 + prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 + prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 + prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 + prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 + prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 + prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 + prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 + prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 + prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 + prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 + prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 + prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 + prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 + prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 + prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 + prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 + prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 + prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 + prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 + prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 + prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 + prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 + prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 + prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 + prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 + prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 + prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 + prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 + prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 + prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 + prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 + prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 + prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 + prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 + prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 + prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 + prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 + prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 + prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 + prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 + prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 + prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 + prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 + prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 + prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 + prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 + prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 + prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 + prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 + prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 + prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 + prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 + prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 + prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 + prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 + prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 + prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 + prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 + prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 + prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 + prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 + prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 + prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 + prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 + prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 + prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 + prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 + prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 + prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 + prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 + prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 + prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 + prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 + prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 + prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 + prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 + prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 + prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 + prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 + prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 + prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 + prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 + prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 + prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 + prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 + prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 + prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 + prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 + prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 + prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 + prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 + prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 + prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 + prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 + prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 + prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 + prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 + prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 + prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 + prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 + prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 + prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 + prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 + prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 + prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 + prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 + prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 + prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 + prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 + prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 + prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 + prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 + prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 + prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 + prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 + prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 + prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 + prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 + prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 + prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 + prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 + prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 + prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 + prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 + prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 + prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 + prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 + prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 + prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 + prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 + prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 + prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 + prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 + prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 + prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 + prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 + prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 + prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 + prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 + prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 + prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 + prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 + prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 + prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 + prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 + prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 + prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 + prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 + prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 + prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 + prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 + prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) +} + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bexpr : expr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`en*` : en*, len : nat} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} + -- if (len = 0) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod eps => [] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustom : ()* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{Bname} {Bbyte*{}}} => [] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustomsec : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btype : type + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{qt : rectype} qt:Brectype => TYPE_type(qt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btypesec : type* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimport : import + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimportsec : import* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfuncsec : typeidx* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btable : table + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [`REF.NULL`_instr(ht)]) + -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btablesec : table* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmem : mem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmemsec : mem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobal : global + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobalsec : global* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexport : export + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexportsec : export* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstart : start* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{x : idx} x:Bfuncidx => [START_start(x)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstartsec : start? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => !($opt_(syntax start, startopt)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemkind : reftype + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod 0x00 => REF_reftype(?(), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belem : elem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`y*` : idx*, e_o : expr} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], DECLARE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`e*` : expr*, e_O : expr} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e_O : expr} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemsec : elem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Blocals : local* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{t : valtype, n : n} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfunc : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) + -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcode : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{code : code, len : nat} {{`%`_u32(len):Bu32} {code:Bfunc}} => code + -- if (len = 0) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcodesec : code* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdata : data + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*, e : expr} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*, x : idx, e : expr} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatasec : data* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacnt : u32* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacntsec : u32? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => !($opt_(syntax u32, nopt)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btag : tag + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btagsec : tag* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmagic : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bversion : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmodule : module + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**, var_0 : dataidx*} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} + -- if ((n?{n <- `n?`} =/= ?()) \/ (var_0 = [])) + -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} + -- fun_dataidx_funcs: `%%`(func*{func <- `func*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tchar : char + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tsource : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tchar*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TuNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TsNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TfNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x21 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x23 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x24 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x25 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x26 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x27 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2A => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2B => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2D => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3A => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3D => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x40 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x60 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7E => `%`_char(``) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x30 => 0 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x31 => 1 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x32 => 2 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x33 => 3 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x34 => 4 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x35 => 5 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x36 => 6 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x37 => 7 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x38 => 8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x39 => 9 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x41 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x42 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x43 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x44 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x45 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x46 => 15 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x61 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x62 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x63 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x64 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x65 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x66 => 15 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 +grammar Thexnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 + prod{h : nat} h:Thexdigit => h + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 + prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char} c:Tchar => c + -- if (((($proj_char_0(c).0 >= 32) /\ ($proj_char_0(c).0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\t" => `%`_char(9) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\n" => `%`_char(10) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\r" => `%`_char(13) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\"" => `%`_char(34) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\'" => `%`_char(39) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\\" => `%`_char(92) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) + -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringelem : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char, var_0 : byte*} c:Tstringchar => var_0 + -- fun_utf8: `%%`([c], var_0) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstring : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) + -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tname : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*, `b*` : byte*, var_0 : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) + -- if (b*{b <- `b*`} = var_0) + -- fun_utf8: `%%`(c*{c <- `c*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tid : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) + -- if (|c*{c <- `c*`}| > 0) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tkeyword : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Treserved : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Ttoken : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tkeyword => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TuNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TsNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TfNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : byte} [``]:Tstring => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tid => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x28 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x29 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Treserved => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tannotid : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tidchar+{} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tname => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 +grammar Tblockcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 + prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 +grammar Tblockchar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 + prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 + prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 + prod{`` : ()} ``:Tblockcomment => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Teof : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : text} ``:"" => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinechar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if (($proj_char_0(c).0 =/= 10) /\ ($proj_char_0(c).0 =/= 13)) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tnewline : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0A => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0D => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinecomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tlinecomment => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tblockcomment => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tformat : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tnewline => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x09 => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 +grammar Tspace : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 + prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 +grammar Tannot : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 + prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tsign : int + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod eps => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "+" => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "-" => - (1 : nat <:> int) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 +grammar Tnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 + prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TuN(N : N) : uN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} n:Tnum => `%`_uN(n) + -- if (n < (2 ^ N)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) + -- if (n < (2 ^ N)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TsN(N : N) : sN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TiN(N : N) : iN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{i : sN, var_0 : nat} i:TsN(N) => `%`_iN(var_0) + -- fun_inv_signed_: `%%%`(N, $proj_sN_0(i).0, var_0) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 +grammar Tfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 + prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 + prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 +grammar Thexfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 + prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 + prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfNmag(N : N) : fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Tfloat => $ieee_(N, q) + -- if ($ieee_(N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Thexfloat => $ieee_(N, q) + -- if ($ieee_(N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "inf" => INF_fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{var_0 : m} "nan" => NAN_fNmag(var_0) + -- fun_canon_: `%%`(N, var_0) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n, var_0 : nat?} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + -- if ((1 <= n) /\ (n < (2 ^ !(var_0)))) + -- fun_signif: `%%`(N, var_0) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfN(N : N) : fN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti16 : u16 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(16) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf32 : f32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf64 : f64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlist(syntax el, grammar TX : el) : el* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} + -- if (|el*{el <- `el*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidx_(ids : name?*) : idx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} x:Tu32 => x + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx, id : name} id:Tid => x + -- if (ids[$proj_uN_0(x).0] = ?(id)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttypeidx_(I : I) : typeidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttagidx_(I : I) : tagidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tglobalidx_(I : I) : globalidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmemidx_(I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttableidx_(I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfuncidx_(I : I) : funcidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdataidx_(I : I) : dataidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Telemidx_(I : I) : elemidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlocalidx_(I : I) : localidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlabelidx_(I : I) : labelidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfieldidx__(I : I, x : idx) : fieldidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.FIELDS_I[$proj_uN_0(x).0]) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Texternidx_(I : I) : externidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnumtype : numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f32" => F32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f64" => F64_numtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvectype : vectype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "v128" => V128_vectype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tabsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "any" => ANY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "eq" => EQ_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i31" => I31_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "struct" => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "array" => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "none" => NONE_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "func" => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "nofunc" => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "exn" => EXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noexn" => NOEXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "extern" => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noextern" => NOEXTERN_heaptype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Theaptype_(I : I) : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ht : heaptype} ht:Tabsheaptype => ht + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnull : null + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "null" => NULL_null + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Treftype_(I : I) : reftype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvaltype_(I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{nt : numtype} nt:Tnumtype => $valtype_numtype(nt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{vt : vectype} vt:Tvectype => $valtype_vectype(vt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{rt : reftype} rt:Treftype_(I) => $valtype_reftype(rt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tpacktype : packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i8" => I8_packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i16" => I16_packtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tstoragetype_(I : I) : storagetype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(I) => $storagetype_valtype(t) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{pt : packtype} pt:Tpacktype => $storagetype_packtype(pt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfieldtype_(I : I) : fieldtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfield_(I : I) : (fieldtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft : fieldtype, `id?` : char?} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tparam_(I : I) : (valtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype, `id?` : char?} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tresult_(I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tcomptype_(I : I) : (comptype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfinal : final + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "final" => FINAL_final + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tsubtype_(I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypedef_(I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{st : subtype, I' : I, `id?` : char?} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Trectype_(I : I) : (rectype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`st*` : subtype*, `I'*` : I*, var_0 : idctxt} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), var_0) + -- fun_concat_idctxt: `%%`(I'*{I' <- `I'*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Taddrtype : addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_addrtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tlimits : limits + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypeuse_(I : I) : (typeidx, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') + -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') + -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) + -- Idctxt_ok: `|-%:OK`(I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttagtype_(I : I) : tagtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tglobaltype_(I : I) : globaltype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tmemtype_(I : I) : memtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttabletype_(I : I) : tabletype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Texterntype_(I : I) : (externtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{gt : globaltype, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{tt : tabletype, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, `id?` : char?, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlabel_(I : I) : (name?, I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) + -- if ~ (?(id) <- I.LABELS_I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[$proj_uN_0(x).0] = ?()]) + -- if (?(id) = I.LABELS_I[$proj_uN_0(x).0]) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tblocktype_(I : I) : blocktype + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tcatch_(I : I) : catch + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tfoldedinstr_(I : I) : instr* + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlaneidx : laneidx + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : u8} i:Tu8 => i + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Talign_(N : N) : u32 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{n : n, m : m} {{"align="} {`%`_u64(m):Tu64}} => `%`_u32(n) + -- if (m = (2 ^ n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u32(N) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Toffset : u64 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{m : m} {{"offset="} {`%`_u64(m):Tu64}} => `%`_u64(m) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u64(0) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tmemarg_(N : N) : memarg + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{n : n, m : m} {{`%`_u32(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tplaininstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "unreachable" => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "nop" => NOP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "drop" => DROP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "return" => RETURN_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "throw_ref" => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.is_null" => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.as_non_null" => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.eq" => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.i31" => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_s" => `I31.GET`_instr(S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_u" => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "array.len" => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "any.convert_extern" => `ANY.CONVERT_EXTERN`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "extern.convert_any" => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 +grammar Tinstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 + prod{in : instr} in:Tplaininstr_(I) => in + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 + prod{in : instr} in:Tblockinstr_(I) => in + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 +grammar Tinstrs_(I : I) : instr* + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 + prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 + prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 +grammar Tblockinstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) +} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Texpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttype_(I : I) : (type, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') + -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) + -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tglobal_(I : I) : (global, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmem_(I : I) : (mem, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttable_(I : I) : (table, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tlocal_(I : I) : (local*, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{t : valtype, `id?` : char?} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tfunc_(I : I) : (func, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I, var_0 : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = I +++ I_1 +++ var_0) + -- Idctxt_ok: `|-%:OK`(I') + -- fun_concat_idctxt: `%%`(I_2*{I_2 <- `I_2*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatastring : byte* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmemuse_(I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Toffset_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdata_(I : I) : (data, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemexpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemlist_(I : I) : (reftype, expr*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttableuse_(I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telem_(I : I) : (elem, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tstart_(I : I) : (start, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timport_(I : I) : (import, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texport_(I : I) : (export, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttagdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobaldots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmemdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttabledots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfuncdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttag_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobal_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmem_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfunc_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatamem_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemtable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecl_(I : I) : (decl, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (type, idctxt)} ``:Ttype_(I) => ($decl_type(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (import, idctxt)} ``:Timport_(I) => ($decl_import(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (tag, idctxt)} ``:Ttag_(I) => ($decl_tag(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (global, idctxt)} ``:Tglobal_(I) => ($decl_global(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (mem, idctxt)} ``:Tmem_(I) => ($decl_mem(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (table, idctxt)} ``:Ttable_(I) => ($decl_table(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (func, idctxt)} ``:Tfunc_(I) => ($decl_func(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (data, idctxt)} ``:Tdata_(I) => ($decl_data(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (elem, idctxt)} ``:Telem_(I) => ($decl_elem(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (start, idctxt)} ``:Tstart_(I) => ($decl_start(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (export, idctxt)} ``:Texport_(I) => ($decl_export(``.0), ``.1) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmodule : module + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I, var_1 : bool, var_0 : idctxt} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + -- if (I' = var_0) + -- Idctxt_ok: `|-%:OK`(I') + -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) + -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) + -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) + -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) + -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) + -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) + -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) + -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) + -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) + -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) + -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) + -- if var_1 + -- fun_ordered: `%%`(decl*{decl <- `decl*`}, var_1) + -- fun_concat_idctxt: `%%`(I*{I <- `I*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecldots_(I : I) : (decl, idctxt)* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bvar(syntax X) : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod 0x00 => ((), ()).1 + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsym : A + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod Bvar(syntax B) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsymsplit : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tvar(syntax X) : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod 0x00 => ((), ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsym : A + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod Tvar(syntax T) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsymsplit : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tabbrev : () + diff --git a/spectec/test-middlend/specification.exp/11-improve-ids.il b/spectec/test-middlend/specification.exp/12-improve-ids.il similarity index 77% rename from spectec/test-middlend/specification.exp/11-improve-ids.il rename to spectec/test-middlend/specification.exp/12-improve-ids.il index 6dba4ca85a..950ef0df88 100644 --- a/spectec/test-middlend/specification.exp/11-improve-ids.il +++ b/spectec/test-middlend/specification.exp/12-improve-ids.il @@ -244,32 +244,70 @@ syntax i64 = iN syntax i128 = iN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $signif(v_N : N) : nat? +relation fun_signif_before_fun_signif_case_2: `%`(N) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(32) = ?(23) + rule fun_signif_case_1: + `%`(64) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(64) = ?(52) - def $signif{x0 : N}(x0) = ?() - -- otherwise + rule fun_signif_case_0: + `%`(32) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $expon(v_N : N) : nat? +relation fun_signif: `%%`(N, nat?) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(32) = ?(8) + rule fun_signif_case_0: + `%%`(32, ?(23)) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(64) = ?(11) - def $expon{x0 : N}(x0) = ?() - -- otherwise + rule fun_signif_case_1: + `%%`(64, ?(52)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_signif_case_2{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_signif_before_fun_signif_case_2: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_expon_before_fun_expon_case_2: `%`(N) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_1: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_0: + `%`(32) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_expon: `%%`(N, nat?) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_0: + `%%`(32, ?(8)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_1: + `%%`(64, ?(11)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_expon_case_2{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_expon_before_fun_expon_case_2: `%`(x0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fun_M(v_N : N) : nat +relation fun_M: `%%`(N, nat) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fun_M{v_N : nat}(v_N) = !($signif(v_N)) + rule fun_M_case_0{v_N : nat, var_0 : nat?}: + `%%`(v_N, !(var_0)) + -- if (var_0 =/= ?()) + -- fun_signif: `%%`(v_N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $E(v_N : N) : nat +relation fun_E: `%%`(N, nat) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $E{v_N : nat}(v_N) = !($expon(v_N)) + rule fun_E_case_0{v_N : nat, var_0 : nat?}: + `%%`(v_N, !(var_0)) + -- if (var_0 =/= ?()) + -- fun_expon: `%%`(v_N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax exp = int @@ -284,23 +322,28 @@ syntax fNmag = ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_fNmag: `%%`(N, fNmag) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_0{v_N : N, v_m : m, v_exp : exp}: + rule fNmag_case_0{v_N : N, v_m : m, v_exp : exp, var_1 : nat, var_0 : nat}: `%%`(v_N, NORM_fNmag(v_m, v_exp)) - -- if ((v_m < (2 ^ $fun_M(v_N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(v_N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= v_exp) /\ (v_exp <= (((2 ^ ((($E(v_N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + -- if ((v_m < (2 ^ var_0)) /\ ((((2 : nat <:> int) - ((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= v_exp) /\ (v_exp <= (((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + -- fun_E: `%%`(v_N, var_1) + -- fun_M: `%%`(v_N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_1{v_N : N, v_exp : exp, v_m : m}: + rule fNmag_case_1{v_N : N, v_exp : exp, v_m : m, var_1 : nat, var_0 : nat}: `%%`(v_N, SUBNORM_fNmag(v_m)) - -- if ((v_m < (2 ^ $fun_M(v_N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(v_N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = v_exp)) + -- if ((v_m < (2 ^ var_0)) /\ (((2 : nat <:> int) - ((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = v_exp)) + -- fun_E: `%%`(v_N, var_1) + -- fun_M: `%%`(v_N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rule fNmag_case_2{v_N : N}: `%%`(v_N, INF_fNmag) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_3{v_N : N, v_m : m}: + rule fNmag_case_3{v_N : N, v_m : m, var_0 : nat}: `%%`(v_N, NAN_fNmag(v_m)) - -- if ((1 <= v_m) /\ (v_m < (2 ^ $fun_M(v_N)))) + -- if ((1 <= v_m) /\ (v_m < (2 ^ var_0))) + -- fun_M: `%%`(v_N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax fN = @@ -326,27 +369,33 @@ syntax f32 = fN syntax f64 = fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fzero(v_N : N) : fN +relation fun_fzero: `%%`(N, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fzero{v_N : nat}(v_N) = POS_fN(SUBNORM_fNmag(0)) + rule fun_fzero_case_0{v_N : nat}: + `%%`(v_N, POS_fN(SUBNORM_fNmag(0))) -- wf_fN: `%%`(v_N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fnat(v_N : N, nat : nat) : fN +relation fun_fnat: `%%%`(N, nat, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fnat{v_N : nat, v_n : nat}(v_N, v_n) = POS_fN(NORM_fNmag(v_n, (0 : nat <:> int))) + rule fun_fnat_case_0{v_N : nat, v_n : nat}: + `%%%`(v_N, v_n, POS_fN(NORM_fNmag(v_n, (0 : nat <:> int)))) -- wf_fN: `%%`(v_N, POS_fN(NORM_fNmag(v_n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fone(v_N : N) : fN +relation fun_fone: `%%`(N, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fone{v_N : nat}(v_N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + rule fun_fone_case_0{v_N : nat}: + `%%`(v_N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) -- wf_fN: `%%`(v_N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $canon_(v_N : N) : nat +relation fun_canon_: `%%`(N, nat) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $canon_{v_N : nat}(v_N) = (2 ^ (((!($signif(v_N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + rule fun_canon__case_0{v_N : nat, var_0 : nat?}: + `%%`(v_N, (2 ^ (((!(var_0) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + -- if (var_0 =/= ?()) + -- fun_signif: `%%`(v_N, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax vN = uN @@ -381,45 +430,63 @@ relation wf_char: `%`(char) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -def $cont(v_byte : byte) : nat +relation fun_cont: `%%`(byte, nat) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $cont{b : byte}(b) = ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) + rule fun_cont_case_0{b : byte}: + `%%`(b, ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat)) -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 -def $utf8(var_0 : char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 - def $utf8{ch_lst : char*}(ch_lst) = $concat_(syntax byte, $utf8([ch])*{ch <- ch_lst}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 - def $utf8{ch : char, b : byte}([ch]) = [b] +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation fun_utf8: `%%`(char*, byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_0{ch_lst : char*, var_0_lst : byte**}: + `%%`(ch_lst, $concat_(syntax byte, var_0_lst)) + -- if (|var_0_lst| = |ch_lst|) + -- (fun_utf8: `%%`([ch], var_0))*{var_0 <- var_0_lst, ch <- ch_lst} + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_1{ch : char, b : byte}: + `%%`([ch], [b]) -- wf_byte: `%`(b) -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) -- if ($proj_char_0(ch).0 < 128) -- if (`%`_byte($proj_char_0(ch).0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 - def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: + `%%`([ch], [b_1 b_2]) + -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) - -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3]) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) - -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * var_0)) + var_1)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_4{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, var_2 : nat, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3 b_4]) + -- fun_cont: `%%`(b_4, var_2) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- wf_byte: `%`(b_3) -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) - -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) + -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * var_0)) + ((2 ^ 6) * var_1)) + var_2)) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -434,10 +501,11 @@ def $proj_name_0(x : name) : (char*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_name: `%`(name) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule name_case_0{char_lst : char*}: + rule name_case_0{char_lst : char*, var_0 : byte*}: `%`(`%`_name(char_lst)) -- (wf_char: `%`(v_char))*{v_char <- char_lst} - -- if (|$utf8(char_lst)| < (2 ^ 32)) + -- if (|var_0| < (2 ^ 32)) + -- fun_utf8: `%%`(char_lst, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax idx = u32 @@ -610,97 +678,128 @@ relation wf_free: `%`(free) -- (wf_uN: `%%`(32, var_9))*{var_9 <- var_9} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_opt(var_0 : free?) : free +relation fun_free_opt: `%%`(free?, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_opt_case_0: + `%%`(?(), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt{v_free : free}(?(v_free)) = v_free + rule fun_free_opt_case_1{v_free : free}: + `%%`(?(v_free), v_free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.1-173.29 -def $free_list(var_0 : free*) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 - def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation fun_free_list: `%%`(free*, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule fun_free_list_case_0: + `%%`([], {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 - def $free_list{v_free : free, free'_lst : free*}([v_free] ++ free'_lst) = v_free +++ $free_list(free'_lst) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule fun_free_list_case_1{v_free : free, free'_lst : free*, var_0 : free}: + `%%`([v_free] ++ free'_lst, v_free +++ var_0) + -- fun_free_list: `%%`(free'_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_typeidx(v_typeidx : typeidx) : free +relation fun_free_typeidx: `%%`(typeidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_typeidx{v_typeidx : uN}(v_typeidx) = {TYPES [v_typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_typeidx_case_0{v_typeidx : uN}: + `%%`(v_typeidx, {TYPES [v_typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [v_typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_funcidx(v_funcidx : funcidx) : free +relation fun_free_funcidx: `%%`(funcidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_funcidx{v_funcidx : uN}(v_funcidx) = {TYPES [], FUNCS [v_funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_funcidx_case_0{v_funcidx : uN}: + `%%`(v_funcidx, {TYPES [], FUNCS [v_funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [v_funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_globalidx(v_globalidx : globalidx) : free +relation fun_free_globalidx: `%%`(globalidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_globalidx{v_globalidx : uN}(v_globalidx) = {TYPES [], FUNCS [], GLOBALS [v_globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_globalidx_case_0{v_globalidx : uN}: + `%%`(v_globalidx, {TYPES [], FUNCS [], GLOBALS [v_globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [v_globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_tableidx(v_tableidx : tableidx) : free +relation fun_free_tableidx: `%%`(tableidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_tableidx{v_tableidx : uN}(v_tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [v_tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_tableidx_case_0{v_tableidx : uN}: + `%%`(v_tableidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [v_tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [v_tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_memidx(v_memidx : memidx) : free +relation fun_free_memidx: `%%`(memidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_memidx{v_memidx : uN}(v_memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [v_memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_memidx_case_0{v_memidx : uN}: + `%%`(v_memidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [v_memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [v_memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_elemidx(v_elemidx : elemidx) : free +relation fun_free_elemidx: `%%`(elemidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_elemidx{v_elemidx : uN}(v_elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [v_elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_elemidx_case_0{v_elemidx : uN}: + `%%`(v_elemidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [v_elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [v_elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_dataidx(v_dataidx : dataidx) : free +relation fun_free_dataidx: `%%`(dataidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_dataidx{v_dataidx : uN}(v_dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [v_dataidx], LOCALS [], LABELS [], TAGS []} + rule fun_free_dataidx_case_0{v_dataidx : uN}: + `%%`(v_dataidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [v_dataidx], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [v_dataidx], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_localidx(v_localidx : localidx) : free +relation fun_free_localidx: `%%`(localidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_localidx{v_localidx : uN}(v_localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [v_localidx], LABELS [], TAGS []} + rule fun_free_localidx_case_0{v_localidx : uN}: + `%%`(v_localidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [v_localidx], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [v_localidx], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_labelidx(v_labelidx : labelidx) : free +relation fun_free_labelidx: `%%`(labelidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_labelidx{v_labelidx : uN}(v_labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [v_labelidx], TAGS []} + rule fun_free_labelidx_case_0{v_labelidx : uN}: + `%%`(v_labelidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [v_labelidx], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [v_labelidx], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_tagidx(v_tagidx : tagidx) : free +relation fun_free_tagidx: `%%`(tagidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_tagidx{v_tagidx : uN}(v_tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [v_tagidx]} + rule fun_free_tagidx_case_0{v_tagidx : uN}: + `%%`(v_tagidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [v_tagidx]}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [v_tagidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_externidx(v_externidx : externidx) : free +relation fun_free_externidx: `%%`(externidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{v_funcidx : uN}(FUNC_externidx(v_funcidx)) = $free_funcidx(v_funcidx) + rule fun_free_externidx_case_0{v_funcidx : uN, var_0 : free}: + `%%`(FUNC_externidx(v_funcidx), var_0) + -- fun_free_funcidx: `%%`(v_funcidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{v_globalidx : uN}(GLOBAL_externidx(v_globalidx)) = $free_globalidx(v_globalidx) + rule fun_free_externidx_case_1{v_globalidx : uN, var_0 : free}: + `%%`(GLOBAL_externidx(v_globalidx), var_0) + -- fun_free_globalidx: `%%`(v_globalidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{v_tableidx : uN}(TABLE_externidx(v_tableidx)) = $free_tableidx(v_tableidx) + rule fun_free_externidx_case_2{v_tableidx : uN, var_0 : free}: + `%%`(TABLE_externidx(v_tableidx), var_0) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{v_memidx : uN}(MEM_externidx(v_memidx)) = $free_memidx(v_memidx) + rule fun_free_externidx_case_3{v_memidx : uN, var_0 : free}: + `%%`(MEM_externidx(v_memidx), var_0) + -- fun_free_memidx: `%%`(v_memidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{v_tagidx : uN}(TAG_externidx(v_tagidx)) = $free_tagidx(v_tagidx) + rule fun_free_externidx_case_4{v_tagidx : uN, var_0 : free}: + `%%`(TAG_externidx(v_tagidx), var_0) + -- fun_free_tagidx: `%%`(v_tagidx, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -1151,75 +1250,87 @@ syntax Cnn = | V128 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $ANYREF : reftype +relation fun_ANYREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + rule fun_ANYREF_case_0: + `%`(REF_reftype(?(NULL_null), ANY_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EQREF : reftype +relation fun_EQREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + rule fun_EQREF_case_0: + `%`(REF_reftype(?(NULL_null), EQ_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $I31REF : reftype +relation fun_I31REF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + rule fun_I31REF_case_0: + `%`(REF_reftype(?(NULL_null), I31_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $STRUCTREF : reftype +relation fun_STRUCTREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + rule fun_STRUCTREF_case_0: + `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $ARRAYREF : reftype +relation fun_ARRAYREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + rule fun_ARRAYREF_case_0: + `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FUNCREF : reftype +relation fun_FUNCREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + rule fun_FUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EXNREF : reftype +relation fun_EXNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + rule fun_EXNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EXTERNREF : reftype +relation fun_EXTERNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + rule fun_EXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLREF : reftype +relation fun_NULLREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + rule fun_NULLREF_case_0: + `%`(REF_reftype(?(NULL_null), NONE_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLFUNCREF : reftype +relation fun_NULLFUNCREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + rule fun_NULLFUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLEXNREF : reftype +relation fun_NULLEXNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + rule fun_NULLEXNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLEXTERNREF : reftype +relation fun_NULLEXTERNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + rule fun_NULLEXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1384,35 +1495,95 @@ relation wf_moduletype: `%`(moduletype) -- (wf_externtype: `%`(externtype_lst_0))*{externtype_lst_0 <- externtype_lst_0} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $IN(v_N : N) : Inn? +relation fun_IN_before_fun_IN_case_2: `%`(N) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(32) = ?(I32_Inn) + rule fun_IN_case_1: + `%`(64) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(64) = ?(I64_Inn) - def $IN{x0 : N}(x0) = ?() - -- otherwise + rule fun_IN_case_0: + `%`(32) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FN(v_N : N) : Fnn? +relation fun_IN: `%%`(N, Inn?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(32) = ?(F32_Fnn) + rule fun_IN_case_0: + `%%`(32, ?(I32_Inn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(64) = ?(F64_Fnn) - def $FN{x0 : N}(x0) = ?() - -- otherwise + rule fun_IN_case_1: + `%%`(64, ?(I64_Inn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_IN_case_2{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_IN_before_fun_IN_case_2: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $JN(v_N : N) : Jnn? +relation fun_FN_before_fun_FN_case_2: `%`(N) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(8) = ?(I8_Jnn) + rule fun_FN_case_1: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_FN_case_0: + `%`(32) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_FN: `%%`(N, Fnn?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(16) = ?(I16_Jnn) + rule fun_FN_case_0: + `%%`(32, ?(F32_Fnn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(32) = ?(I32_Jnn) + rule fun_FN_case_1: + `%%`(64, ?(F64_Fnn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(64) = ?(I64_Jnn) - def $JN{x0 : N}(x0) = ?() - -- otherwise + rule fun_FN_case_2{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_FN_before_fun_FN_case_2: `%`(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_JN_before_fun_JN_case_4: `%`(N) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_3: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_2: + `%`(32) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_1: + `%`(16) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_0: + `%`(8) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_JN: `%%`(N, Jnn?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_0: + `%%`(8, ?(I8_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_1: + `%%`(16, ?(I16_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_2: + `%%`(32, ?(I32_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_3: + `%%`(64, ?(I64_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_JN_case_4{x0 : N}: + `%%`(x0, ?()) + -- ~ fun_JN_before_fun_JN_case_4: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $size(v_numtype : numtype) : nat @@ -1453,23 +1624,69 @@ def $lsize(v_lanetype : lanetype) : nat def $lsize(I16_lanetype) = $psize(I16_packtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $zsize(v_storagetype : storagetype) : nat? +relation fun_zsize_before_fun_zsize_case_7: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_6: + `%`(I16_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_5: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_4: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_0: + `%`(I32_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_zsize: `%%`(storagetype, nat?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I32_storagetype) = ?($size(I32_numtype)) + rule fun_zsize_case_0: + `%%`(I32_storagetype, ?($size(I32_numtype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I64_storagetype) = ?($size(I64_numtype)) + rule fun_zsize_case_1: + `%%`(I64_storagetype, ?($size(I64_numtype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(F32_storagetype) = ?($size(F32_numtype)) + rule fun_zsize_case_2: + `%%`(F32_storagetype, ?($size(F32_numtype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(F64_storagetype) = ?($size(F64_numtype)) + rule fun_zsize_case_3: + `%%`(F64_storagetype, ?($size(F64_numtype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) + rule fun_zsize_case_4: + `%%`(V128_storagetype, ?($vsize(V128_vectype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I8_storagetype) = ?($psize(I8_packtype)) + rule fun_zsize_case_5: + `%%`(I8_storagetype, ?($psize(I8_packtype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I16_storagetype) = ?($psize(I16_packtype)) - def $zsize{x0 : storagetype}(x0) = ?() - -- otherwise + rule fun_zsize_case_6: + `%%`(I16_storagetype, ?($psize(I16_packtype))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_zsize_case_7{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_zsize_before_fun_zsize_case_7: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $isize(v_Inn : Inn) : nat @@ -1487,31 +1704,69 @@ def $fsize(v_Fnn : Fnn) : nat def $fsize{v_Fnn : Fnn}(v_Fnn) = $size($numtype_Fnn(v_Fnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $inv_isize(nat : nat) : Inn? +relation fun_inv_isize_before_fun_inv_isize_case_2: `%`(nat) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_isize(32) = ?(I32_Inn) + rule fun_inv_isize_case_1: + `%`(64) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_isize(64) = ?(I64_Inn) - def $inv_isize{x0 : nat}(x0) = ?() - -- otherwise + rule fun_inv_isize_case_0: + `%`(32) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $inv_jsize(nat : nat) : Jnn? +relation fun_inv_isize: `%%`(nat, Inn?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize(8) = ?(I8_Jnn) + rule fun_inv_isize_case_0: + `%%`(32, ?(I32_Inn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize(16) = ?(I16_Jnn) + rule fun_inv_isize_case_1: + `%%`(64, ?(I64_Inn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{v_n : nat}(v_n) = $Jnn_addrtype(iter_val#1)?{iter_val#1 <- $inv_isize(v_n)} + rule fun_inv_isize_case_2{x0 : nat}: + `%%`(x0, ?()) + -- ~ fun_inv_isize_before_fun_inv_isize_case_2: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $inv_fsize(nat : nat) : Fnn? +relation fun_inv_jsize: `%%`(nat, Jnn?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_fsize(32) = ?(F32_Fnn) + rule fun_inv_jsize_case_0: + `%%`(8, ?(I8_Jnn)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_fsize(64) = ?(F64_Fnn) - def $inv_fsize{x0 : nat}(x0) = ?() - -- otherwise + rule fun_inv_jsize_case_1: + `%%`(16, ?(I16_Jnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_jsize_case_2{v_n : nat, var_0 : Inn?}: + `%%`(v_n, $Jnn_addrtype(iter_val#1)?{iter_val#1 <- var_0}) + -- fun_inv_isize: `%%`(v_n, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_inv_fsize_before_fun_inv_fsize_case_2: `%`(nat) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_1: + `%`(64) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_0: + `%`(32) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_inv_fsize: `%%`(nat, Fnn?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_0: + `%%`(32, ?(F32_Fnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_1: + `%%`(64, ?(F64_Fnn)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_inv_fsize_case_2{x0 : nat}: + `%%`(x0, ?()) + -- ~ fun_inv_fsize_before_fun_inv_fsize_case_2: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $sizenn(v_numtype : numtype) : nat @@ -1559,9 +1814,11 @@ def $jsizenn(v_Jnn : Jnn) : nat def $jsizenn{v_Jnn : Jnn}(v_Jnn) = $lsize($lanetype_Jnn(v_Jnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $inv_jsizenn(nat : nat) : Jnn? +relation fun_inv_jsizenn: `%%`(nat, Jnn?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsizenn{v_n : nat}(v_n) = $inv_jsize(v_n) + rule fun_inv_jsizenn_case_0{v_n : nat, var_0 : Jnn?}: + `%%`(v_n, var_0) + -- fun_inv_jsize: `%%`(v_n, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $lunpack(v_lanetype : lanetype) : numtype @@ -1579,82 +1836,231 @@ def $lunpack(v_lanetype : lanetype) : numtype def $lunpack(I16_lanetype) = I32_numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $unpack(v_storagetype : storagetype) : valtype +relation fun_unpack: `%%`(storagetype, valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(BOT_storagetype) = BOT_valtype + rule fun_unpack_case_0: + `%%`(BOT_storagetype, BOT_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack{null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype)) = REF_valtype(null_opt, v_heaptype) + rule fun_unpack_case_1{null_opt : null?, v_heaptype : heaptype}: + `%%`(REF_storagetype(null_opt, v_heaptype), REF_valtype(null_opt, v_heaptype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(V128_storagetype) = V128_valtype + rule fun_unpack_case_2: + `%%`(V128_storagetype, V128_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(F64_storagetype) = F64_valtype + rule fun_unpack_case_3: + `%%`(F64_storagetype, F64_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(F32_storagetype) = F32_valtype + rule fun_unpack_case_4: + `%%`(F32_storagetype, F32_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(I64_storagetype) = I64_valtype + rule fun_unpack_case_5: + `%%`(I64_storagetype, I64_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(I32_storagetype) = I32_valtype + rule fun_unpack_case_6: + `%%`(I32_storagetype, I32_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(I8_storagetype) = I32_valtype + rule fun_unpack_case_7: + `%%`(I8_storagetype, I32_valtype) -- wf_valtype: `%`(I32_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(I16_storagetype) = I32_valtype + rule fun_unpack_case_8: + `%%`(I16_storagetype, I32_valtype) -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $nunpack(v_storagetype : storagetype) : numtype? +relation fun_nunpack_before_fun_nunpack_case_6: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_5: + `%`(I16_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_4: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_0: + `%`(I32_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_nunpack: `%%`(storagetype, numtype?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack(I32_storagetype) = ?(I32_numtype) + rule fun_nunpack_case_0: + `%%`(I32_storagetype, ?(I32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack(I64_storagetype) = ?(I64_numtype) + rule fun_nunpack_case_1: + `%%`(I64_storagetype, ?(I64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack(F32_storagetype) = ?(F32_numtype) + rule fun_nunpack_case_2: + `%%`(F32_storagetype, ?(F32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack(F64_storagetype) = ?(F64_numtype) + rule fun_nunpack_case_3: + `%%`(F64_storagetype, ?(F64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack(I8_storagetype) = ?(I32_numtype) + rule fun_nunpack_case_4: + `%%`(I8_storagetype, ?(I32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack(I16_storagetype) = ?(I32_numtype) - def $nunpack{x0 : storagetype}(x0) = ?() - -- otherwise + rule fun_nunpack_case_5: + `%%`(I16_storagetype, ?(I32_numtype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_nunpack_case_6{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_nunpack_before_fun_nunpack_case_6: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $vunpack(v_storagetype : storagetype) : vectype? +relation fun_vunpack_before_fun_vunpack_case_1: `%`(storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $vunpack(V128_storagetype) = ?(V128_vectype) - def $vunpack{x0 : storagetype}(x0) = ?() - -- otherwise + rule fun_vunpack_case_0: + `%`(V128_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_vunpack: `%%`(storagetype, vectype?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_vunpack_case_0: + `%%`(V128_storagetype, ?(V128_vectype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_vunpack_case_1{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_vunpack_before_fun_vunpack_case_1: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $cunpack(v_storagetype : storagetype) : consttype? +relation fun_cunpack_before_fun_cunpack_case_13: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_12: + `%`(I16_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_11: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_10: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_9: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_8: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_7: + `%`(I32_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(I32_storagetype) = ?(I32_consttype) + rule fun_cunpack_case_6: + `%`(I16_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(I64_storagetype) = ?(I64_consttype) + rule fun_cunpack_case_5: + `%`(I8_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(F32_storagetype) = ?(F32_consttype) + rule fun_cunpack_case_4: + `%`(V128_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(F64_storagetype) = ?(F64_consttype) + rule fun_cunpack_case_3: + `%`(F64_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(V128_storagetype) = ?(V128_consttype) + rule fun_cunpack_case_2: + `%`(F32_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(I8_storagetype) = ?(I32_consttype) + rule fun_cunpack_case_1: + `%`(I64_storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(I16_storagetype) = ?(I32_consttype) + rule fun_cunpack_case_0: + `%`(I32_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_cunpack: `%%`(storagetype, consttype?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(I32_storagetype) = ?($consttype_numtype($lunpack(I32_lanetype))) + rule fun_cunpack_case_0: + `%%`(I32_storagetype, ?(I32_consttype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(I64_storagetype) = ?($consttype_numtype($lunpack(I64_lanetype))) + rule fun_cunpack_case_1: + `%%`(I64_storagetype, ?(I64_consttype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(F32_storagetype) = ?($consttype_numtype($lunpack(F32_lanetype))) + rule fun_cunpack_case_2: + `%%`(F32_storagetype, ?(F32_consttype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(F64_storagetype) = ?($consttype_numtype($lunpack(F64_lanetype))) + rule fun_cunpack_case_3: + `%%`(F64_storagetype, ?(F64_consttype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(I8_storagetype) = ?($consttype_numtype($lunpack(I8_lanetype))) + rule fun_cunpack_case_4: + `%%`(V128_storagetype, ?(V128_consttype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack(I16_storagetype) = ?($consttype_numtype($lunpack(I16_lanetype))) - def $cunpack{x0 : storagetype}(x0) = ?() - -- otherwise + rule fun_cunpack_case_5: + `%%`(I8_storagetype, ?(I32_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_6: + `%%`(I16_storagetype, ?(I32_consttype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_7: + `%%`(I32_storagetype, ?($consttype_numtype($lunpack(I32_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_8: + `%%`(I64_storagetype, ?($consttype_numtype($lunpack(I64_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_9: + `%%`(F32_storagetype, ?($consttype_numtype($lunpack(F32_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_10: + `%%`(F64_storagetype, ?($consttype_numtype($lunpack(F64_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_11: + `%%`(I8_storagetype, ?($consttype_numtype($lunpack(I8_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_12: + `%%`(I16_storagetype, ?($consttype_numtype($lunpack(I16_lanetype)))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_cunpack_case_13{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_cunpack_before_fun_cunpack_case_13: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $minat(v_addrtype : addrtype, v_addrtype_0 : addrtype) : addrtype @@ -1662,20 +2068,33 @@ def $minat(v_addrtype : addrtype, v_addrtype_0 : addrtype) : addrtype def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size($numtype_addrtype(at_1)) <= $size($numtype_addrtype(at_2))) then at_1 else at_2) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $diffrt(v_reftype : reftype, v_reftype_0 : reftype) : reftype +relation fun_diffrt: `%%%`(reftype, reftype, reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $diffrt{null_1_opt : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1_opt, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + rule fun_diffrt_case_0{null_1_opt : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1_opt, ht_1), REF_reftype(?(NULL_null), ht_2), REF_reftype(?(), ht_1)) -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $diffrt{null_1_opt : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1_opt, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1_opt, ht_1) + rule fun_diffrt_case_1{null_1_opt : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1_opt, ht_1), REF_reftype(?(), ht_2), REF_reftype(null_1_opt, ht_1)) -- wf_reftype: `%`(REF_reftype(null_1_opt, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $as_deftype(v_typeuse : typeuse) : deftype? +relation fun_as_deftype_before_fun_as_deftype_case_1: `%`(typeuse) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $as_deftype{v_rectype : rectype, v_n : n}(_DEF_typeuse(v_rectype, v_n)) = ?(_DEF_deftype(v_rectype, v_n)) - def $as_deftype{x0 : typeuse}(x0) = ?() - -- otherwise + rule fun_as_deftype_case_0{v_rectype : rectype, v_n : n}: + `%`(_DEF_typeuse(v_rectype, v_n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_as_deftype: `%%`(typeuse, deftype?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_as_deftype_case_0{v_rectype : rectype, v_n : n}: + `%%`(_DEF_typeuse(v_rectype, v_n), ?(_DEF_deftype(v_rectype, v_n))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_as_deftype_case_1{x0 : typeuse}: + `%%`(x0, ?()) + -- ~ fun_as_deftype_before_fun_as_deftype_case_1: `%`(x0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { @@ -1742,36 +2161,84 @@ def $funcsxt(var_0 : externtype*) : deftype* def $funcsxt{v_externtype : externtype, xt_lst : externtype*}([v_externtype] ++ xt_lst) = $funcsxt(xt_lst) } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_typevar_before_fun_subst_typevar_case_2: `%%%`(typevar, typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_typevar_case_1{tv : typevar, tv_1 : typevar, tv'_lst : typevar*, tu_1 : typeuse, tu'_lst : typeuse*, var_0 : typeuse?}: + `%%%`(tv, [tv_1] ++ tv'_lst, [tu_1] ++ tu'_lst) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%`(tv, [], []) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.126 -def $subst_typevar(v_typevar : typevar, var_0 : typevar*, var_1 : typeuse*) : typeuse? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 - def $subst_typevar{tv : typevar}(tv, [], []) = ?($typeuse_typevar(tv)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 - def $subst_typevar{tv : typevar, tv_1 : typevar, tv'_lst : typevar*, tu_1 : typeuse, tu'_lst : typeuse*}(tv, [tv_1] ++ tv'_lst, [tu_1] ++ tu'_lst) = (if (tv = tv_1) then tu_1 else iter_val#2)?{iter_val#2 <- $subst_typevar(tv, tv'_lst, tu'_lst)} - def $subst_typevar{x0 : typevar, x1 : typevar*, x2 : typeuse*}(x0, x1, x2) = ?() - -- otherwise +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation fun_subst_typevar: `%%%%`(typevar, typevar*, typeuse*, typeuse?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%%`(tv, [], [], ?($typeuse_typevar(tv))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_1{tv : typevar, tv_1 : typevar, tv'_lst : typevar*, tu_1 : typeuse, tu'_lst : typeuse*, var_0 : typeuse?}: + `%%%%`(tv, [tv_1] ++ tv'_lst, [tu_1] ++ tu'_lst, (if (tv = tv_1) then tu_1 else iter_val#2)?{iter_val#2 <- var_0}) + -- fun_subst_typevar: `%%%%`(tv, tv'_lst, tu'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_2{x0 : typevar, x1 : typevar*, x2 : typeuse*}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_subst_typevar_before_fun_subst_typevar_case_2: `%%%`(x0, x1, x2) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.73 -def $minus_recs(var_0 : typevar*, var_1 : typeuse*) : (typevar*, typeuse*)? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 - def $minus_recs([], []) = ?(([], [])) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 - def $minus_recs{v_n : nat, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*}([REC_typevar(v_n)] ++ tv_lst, [tu_1] ++ tu_lst) = $minus_recs(tv_lst, tu_lst) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 - def $minus_recs{x : uN, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*, tv'_lst : typevar*, tu'_lst : typeuse*}([_IDX_typevar(x)] ++ tv_lst, [tu_1] ++ tu_lst) = ?(([_IDX_typevar(x)] ++ tv'_lst, [tu_1] ++ tu'_lst)) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation fun_minus_recs_before_fun_minus_recs_case_3: `%%`(typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_2{x : uN, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*, tv'_lst : typevar*, tu'_lst : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%`([_IDX_typevar(x)] ++ tv_lst, [tu_1] ++ tu_lst) + -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_0) -- (wf_typevar: `%`(tv'#2))*{tv'#2 <- tv'_lst} -- (wf_typeuse: `%`(tu'#2))*{tu'#2 <- tu'_lst} -- wf_typevar: `%`(_IDX_typevar(x)) - -- if ((tv'_lst, tu'_lst) = !($minus_recs(tv_lst, tu_lst))) - def $minus_recs{x0 : typevar*, x1 : typeuse*}(x0, x1) = ?() - -- otherwise + -- if (var_0 =/= ?()) + -- if ((tv'_lst, tu'_lst) = !(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_1{v_n : nat, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%`([REC_typevar(v_n)] ++ tv_lst, [tu_1] ++ tu_lst) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_0: + `%%`([], []) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_0: + `%%%`([], [], ?(([], []))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_1{v_n : nat, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%%`([REC_typevar(v_n)] ++ tv_lst, [tu_1] ++ tu_lst, var_0) + -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_2{x : uN, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*, tv'_lst : typevar*, tu'_lst : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%%`([_IDX_typevar(x)] ++ tv_lst, [tu_1] ++ tu_lst, ?(([_IDX_typevar(x)] ++ tv'_lst, [tu_1] ++ tu'_lst))) + -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_0) + -- (wf_typevar: `%`(tv'#2))*{tv'#2 <- tv'_lst} + -- (wf_typeuse: `%`(tu'#2))*{tu'#2 <- tu'_lst} + -- wf_typevar: `%`(_IDX_typevar(x)) + -- if (var_0 =/= ?()) + -- if ((tv'_lst, tu'_lst) = !(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_3{x0 : typevar*, x1 : typeuse*}: + `%%%`(x0, x1, ?()) + -- ~ fun_minus_recs_before_fun_minus_recs_case_3: `%%`(x0, x1) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1792,107 +2259,206 @@ def $subst_vectype(v_vectype : vectype, var_0 : typevar*, var_1 : typeuse*) : ve ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 -def $subst_typeuse(v_typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 - def $subst_typeuse{v_n : n, tv_lst : typevar*, tu_lst : typeuse*}(REC_typeuse(v_n), tv_lst, tu_lst) = !($subst_typevar(REC_typevar(v_n), tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 - def $subst_typeuse{v_typeidx : typeidx, tv_lst : typevar*, tu_lst : typeuse*}(_IDX_typeuse(v_typeidx), tv_lst, tu_lst) = !($subst_typevar(_IDX_typevar(v_typeidx), tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 - def $subst_typeuse{v_rectype : rectype, v_n : n, tv_lst : typevar*, tu_lst : typeuse*}(_DEF_typeuse(v_rectype, v_n), tv_lst, tu_lst) = $typeuse_deftype($subst_deftype(_DEF_deftype(v_rectype, v_n), tv_lst, tu_lst)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 -def $subst_heaptype(v_heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{v_n : n, tv_lst : typevar*, tu_lst : typeuse*}(REC_heaptype(v_n), tv_lst, tu_lst) = $heaptype_typeuse(!($subst_typevar(REC_typevar(v_n), tv_lst, tu_lst))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{v_typeidx : typeidx, tv_lst : typevar*, tu_lst : typeuse*}(_IDX_heaptype(v_typeidx), tv_lst, tu_lst) = $heaptype_typeuse(!($subst_typevar(_IDX_typevar(v_typeidx), tv_lst, tu_lst))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 - def $subst_heaptype{v_rectype : rectype, v_n : n, tv_lst : typevar*, tu_lst : typeuse*}(_DEF_heaptype(v_rectype, v_n), tv_lst, tu_lst) = $heaptype_deftype($subst_deftype(_DEF_deftype(v_rectype, v_n), tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 - def $subst_heaptype{ht : heaptype, tv_lst : typevar*, tu_lst : typeuse*}(ht, tv_lst, tu_lst) = ht - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 -def $subst_reftype(v_reftype : reftype, var_0 : typevar*, var_1 : typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 - def $subst_reftype{null_opt : null?, ht : heaptype, tv_lst : typevar*, tu_lst : typeuse*}(REF_reftype(null_opt, ht), tv_lst, tu_lst) = REF_reftype(null_opt, $subst_heaptype(ht, tv_lst, tu_lst)) - -- wf_reftype: `%`(REF_reftype(null_opt, $subst_heaptype(ht, tv_lst, tu_lst))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 -def $subst_valtype(v_valtype : valtype, var_0 : typevar*, var_1 : typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{tv_lst : typevar*, tu_lst : typeuse*}(I32_valtype, tv_lst, tu_lst) = $valtype_numtype($subst_numtype(I32_numtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{tv_lst : typevar*, tu_lst : typeuse*}(I64_valtype, tv_lst, tu_lst) = $valtype_numtype($subst_numtype(I64_numtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{tv_lst : typevar*, tu_lst : typeuse*}(F32_valtype, tv_lst, tu_lst) = $valtype_numtype($subst_numtype(F32_numtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{tv_lst : typevar*, tu_lst : typeuse*}(F64_valtype, tv_lst, tu_lst) = $valtype_numtype($subst_numtype(F64_numtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 - def $subst_valtype{tv_lst : typevar*, tu_lst : typeuse*}(V128_valtype, tv_lst, tu_lst) = $valtype_vectype($subst_vectype(V128_vectype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 - def $subst_valtype{null_opt : null?, v_heaptype : heaptype, tv_lst : typevar*, tu_lst : typeuse*}(REF_valtype(null_opt, v_heaptype), tv_lst, tu_lst) = $valtype_reftype($subst_reftype(REF_reftype(null_opt, v_heaptype), tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 - def $subst_valtype{tv_lst : typevar*, tu_lst : typeuse*}(BOT_valtype, tv_lst, tu_lst) = BOT_valtype +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation fun_subst_typeuse: `%%%%`(typeuse, typevar*, typeuse*, typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_0{v_n : n, tv_lst : typevar*, tu_lst : typeuse*, var_0 : typeuse?}: + `%%%%`(REC_typeuse(v_n), tv_lst, tu_lst, !(var_0)) + -- if (var_0 =/= ?()) + -- fun_subst_typevar: `%%%%`(REC_typevar(v_n), tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_1{v_typeidx : typeidx, tv_lst : typevar*, tu_lst : typeuse*, var_0 : typeuse?}: + `%%%%`(_IDX_typeuse(v_typeidx), tv_lst, tu_lst, !(var_0)) + -- if (var_0 =/= ?()) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(v_typeidx), tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_2{v_rectype : rectype, v_n : n, tv_lst : typevar*, tu_lst : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_typeuse(v_rectype, v_n), tv_lst, tu_lst, $typeuse_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(v_rectype, v_n), tv_lst, tu_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation fun_subst_heaptype: `%%%%`(heaptype, typevar*, typeuse*, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_0{v_n : n, tv_lst : typevar*, tu_lst : typeuse*, var_0 : typeuse?}: + `%%%%`(REC_heaptype(v_n), tv_lst, tu_lst, $heaptype_typeuse(!(var_0))) + -- if (var_0 =/= ?()) + -- fun_subst_typevar: `%%%%`(REC_typevar(v_n), tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_1{v_typeidx : typeidx, tv_lst : typevar*, tu_lst : typeuse*, var_0 : typeuse?}: + `%%%%`(_IDX_heaptype(v_typeidx), tv_lst, tu_lst, $heaptype_typeuse(!(var_0))) + -- if (var_0 =/= ?()) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(v_typeidx), tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_2{v_rectype : rectype, v_n : n, tv_lst : typevar*, tu_lst : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_heaptype(v_rectype, v_n), tv_lst, tu_lst, $heaptype_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(v_rectype, v_n), tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_3{ht : heaptype, tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(ht, tv_lst, tu_lst, ht) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule fun_subst_reftype_case_0{null_opt : null?, ht : heaptype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : heaptype, var_0 : heaptype}: + `%%%%`(REF_reftype(null_opt, ht), tv_lst, tu_lst, REF_reftype(null_opt, var_0)) + -- fun_subst_heaptype: `%%%%`(ht, tv_lst, tu_lst, var_1) + -- fun_subst_heaptype: `%%%%`(ht, tv_lst, tu_lst, var_0) + -- wf_reftype: `%`(REF_reftype(null_opt, var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation fun_subst_valtype: `%%%%`(valtype, typevar*, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_0{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(I32_valtype, tv_lst, tu_lst, $valtype_numtype($subst_numtype(I32_numtype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_1{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(I64_valtype, tv_lst, tu_lst, $valtype_numtype($subst_numtype(I64_numtype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_2{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(F32_valtype, tv_lst, tu_lst, $valtype_numtype($subst_numtype(F32_numtype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_3{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(F64_valtype, tv_lst, tu_lst, $valtype_numtype($subst_numtype(F64_numtype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_4{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(V128_valtype, tv_lst, tu_lst, $valtype_vectype($subst_vectype(V128_vectype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_5{null_opt : null?, v_heaptype : heaptype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : reftype}: + `%%%%`(REF_valtype(null_opt, v_heaptype), tv_lst, tu_lst, $valtype_reftype(var_0)) + -- fun_subst_reftype: `%%%%`(REF_reftype(null_opt, v_heaptype), tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_6{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(BOT_valtype, tv_lst, tu_lst, BOT_valtype) -- wf_valtype: `%`(BOT_valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 -def $subst_storagetype(v_storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{tv_lst : typevar*, tu_lst : typeuse*}(BOT_storagetype, tv_lst, tu_lst) = $storagetype_valtype($subst_valtype(BOT_valtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{null_opt : null?, v_heaptype : heaptype, tv_lst : typevar*, tu_lst : typeuse*}(REF_storagetype(null_opt, v_heaptype), tv_lst, tu_lst) = $storagetype_valtype($subst_valtype(REF_valtype(null_opt, v_heaptype), tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{tv_lst : typevar*, tu_lst : typeuse*}(V128_storagetype, tv_lst, tu_lst) = $storagetype_valtype($subst_valtype(V128_valtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{tv_lst : typevar*, tu_lst : typeuse*}(F64_storagetype, tv_lst, tu_lst) = $storagetype_valtype($subst_valtype(F64_valtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{tv_lst : typevar*, tu_lst : typeuse*}(F32_storagetype, tv_lst, tu_lst) = $storagetype_valtype($subst_valtype(F32_valtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{tv_lst : typevar*, tu_lst : typeuse*}(I64_storagetype, tv_lst, tu_lst) = $storagetype_valtype($subst_valtype(I64_valtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{tv_lst : typevar*, tu_lst : typeuse*}(I32_storagetype, tv_lst, tu_lst) = $storagetype_valtype($subst_valtype(I32_valtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 - def $subst_storagetype{tv_lst : typevar*, tu_lst : typeuse*}(I8_storagetype, tv_lst, tu_lst) = $storagetype_packtype($subst_packtype(I8_packtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 - def $subst_storagetype{tv_lst : typevar*, tu_lst : typeuse*}(I16_storagetype, tv_lst, tu_lst) = $storagetype_packtype($subst_packtype(I16_packtype, tv_lst, tu_lst)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 -def $subst_fieldtype(v_fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 - def $subst_fieldtype{mut_opt : mut?, zt : storagetype, tv_lst : typevar*, tu_lst : typeuse*}(`%%`_fieldtype(mut_opt, zt), tv_lst, tu_lst) = `%%`_fieldtype(mut_opt, $subst_storagetype(zt, tv_lst, tu_lst)) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut_opt, $subst_storagetype(zt, tv_lst, tu_lst))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 -def $subst_comptype(v_comptype : comptype, var_0 : typevar*, var_1 : typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 - def $subst_comptype{ft_lst : fieldtype*, tv_lst : typevar*, tu_lst : typeuse*}(STRUCT_comptype(`%`_list(ft_lst)), tv_lst, tu_lst) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv_lst, tu_lst)*{ft <- ft_lst})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft#2, tv_lst, tu_lst)*{ft#2 <- ft_lst}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 - def $subst_comptype{ft : fieldtype, tv_lst : typevar*, tu_lst : typeuse*}(ARRAY_comptype(ft), tv_lst, tu_lst) = ARRAY_comptype($subst_fieldtype(ft, tv_lst, tu_lst)) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv_lst, tu_lst))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 - def $subst_comptype{t_1_lst : valtype*, t_2_lst : valtype*, tv_lst : typevar*, tu_lst : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst)), tv_lst, tu_lst) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv_lst, tu_lst)*{t_1 <- t_1_lst}), `%`_resulttype($subst_valtype(t_2, tv_lst, tu_lst)*{t_2 <- t_2_lst})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1#2, tv_lst, tu_lst)*{t_1#2 <- t_1_lst}), `%`_resulttype($subst_valtype(t_2#2, tv_lst, tu_lst)*{t_2#2 <- t_2_lst}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 -def $subst_subtype(v_subtype : subtype, var_0 : typevar*, var_1 : typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 - def $subst_subtype{final_opt : final?, tu'_lst : typeuse*, ct : comptype, tv_lst : typevar*, tu_lst : typeuse*}(SUB_subtype(final_opt, tu'_lst, ct), tv_lst, tu_lst) = SUB_subtype(final_opt, $subst_typeuse(tu', tv_lst, tu_lst)*{tu' <- tu'_lst}, $subst_comptype(ct, tv_lst, tu_lst)) - -- wf_subtype: `%`(SUB_subtype(final_opt, $subst_typeuse(tu'#5, tv_lst, tu_lst)*{tu'#5 <- tu'_lst}, $subst_comptype(ct, tv_lst, tu_lst))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 -def $subst_rectype(v_rectype : rectype, var_0 : typevar*, var_1 : typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 - def $subst_rectype{st_lst : subtype*, tv_lst : typevar*, tu_lst : typeuse*, tv'_lst : typevar*, tu'_lst : typeuse*}(REC_rectype(`%`_list(st_lst)), tv_lst, tu_lst) = REC_rectype(`%`_list($subst_subtype(st, tv'_lst, tu'_lst)*{st <- st_lst})) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation fun_subst_storagetype: `%%%%`(storagetype, typevar*, typeuse*, storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_0{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(BOT_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(BOT_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_1{null_opt : null?, v_heaptype : heaptype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(REF_valtype(null_opt, v_heaptype), tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_2{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(V128_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(V128_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_3{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(F64_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F64_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_4{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(F32_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F32_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_5{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(I64_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I64_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_6{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(I32_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I32_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_7{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(I8_storagetype, tv_lst, tu_lst, $storagetype_packtype($subst_packtype(I8_packtype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_8{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(I16_storagetype, tv_lst, tu_lst, $storagetype_packtype($subst_packtype(I16_packtype, tv_lst, tu_lst))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation fun_subst_fieldtype: `%%%%`(fieldtype, typevar*, typeuse*, fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule fun_subst_fieldtype_case_0{mut_opt : mut?, zt : storagetype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : storagetype, var_0 : storagetype}: + `%%%%`(`%%`_fieldtype(mut_opt, zt), tv_lst, tu_lst, `%%`_fieldtype(mut_opt, var_0)) + -- fun_subst_storagetype: `%%%%`(zt, tv_lst, tu_lst, var_1) + -- fun_subst_storagetype: `%%%%`(zt, tv_lst, tu_lst, var_0) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut_opt, var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_0{ft_lst : fieldtype*, tv_lst : typevar*, tu_lst : typeuse*, var_1_lst : fieldtype*, var_0_lst : fieldtype*}: + `%%%%`(STRUCT_comptype(`%`_list(ft_lst)), tv_lst, tu_lst, STRUCT_comptype(`%`_list(var_0_lst))) + -- if (|var_1_lst| = |ft_lst|) + -- (fun_subst_fieldtype: `%%%%`(ft#2, tv_lst, tu_lst, var_1))*{var_1 <- var_1_lst, ft#2 <- ft_lst} + -- if (|var_0_lst| = |ft_lst|) + -- (fun_subst_fieldtype: `%%%%`(ft, tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, ft <- ft_lst} + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_1_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_1{ft : fieldtype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : fieldtype, var_0 : fieldtype}: + `%%%%`(ARRAY_comptype(ft), tv_lst, tu_lst, ARRAY_comptype(var_0)) + -- fun_subst_fieldtype: `%%%%`(ft, tv_lst, tu_lst, var_1) + -- fun_subst_fieldtype: `%%%%`(ft, tv_lst, tu_lst, var_0) + -- wf_comptype: `%`(ARRAY_comptype(var_1)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_2{t_1_lst : valtype*, t_2_lst : valtype*, tv_lst : typevar*, tu_lst : typeuse*, var_3_lst : valtype*, var_2_lst : valtype*, var_1_lst : valtype*, var_0_lst : valtype*}: + `%%%%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst)), tv_lst, tu_lst, `FUNC%->%`_comptype(`%`_resulttype(var_0_lst), `%`_resulttype(var_1_lst))) + -- if (|var_3_lst| = |t_2_lst|) + -- (fun_subst_valtype: `%%%%`(t_2#2, tv_lst, tu_lst, var_3))*{var_3 <- var_3_lst, t_2#2 <- t_2_lst} + -- if (|var_2_lst| = |t_1_lst|) + -- (fun_subst_valtype: `%%%%`(t_1#2, tv_lst, tu_lst, var_2))*{var_2 <- var_2_lst, t_1#2 <- t_1_lst} + -- if (|var_1_lst| = |t_2_lst|) + -- (fun_subst_valtype: `%%%%`(t_2, tv_lst, tu_lst, var_1))*{var_1 <- var_1_lst, t_2 <- t_2_lst} + -- if (|var_0_lst| = |t_1_lst|) + -- (fun_subst_valtype: `%%%%`(t_1, tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, t_1 <- t_1_lst} + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_2_lst), `%`_resulttype(var_3_lst))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule fun_subst_subtype_case_0{final_opt : final?, tu'_lst : typeuse*, ct : comptype, tv_lst : typevar*, tu_lst : typeuse*, var_3 : comptype, var_2_lst : typeuse*, var_1 : comptype, var_0_lst : typeuse*}: + `%%%%`(SUB_subtype(final_opt, tu'_lst, ct), tv_lst, tu_lst, SUB_subtype(final_opt, var_0_lst, var_1)) + -- fun_subst_comptype: `%%%%`(ct, tv_lst, tu_lst, var_3) + -- if (|var_2_lst| = |tu'_lst|) + -- (fun_subst_typeuse: `%%%%`(tu'#5, tv_lst, tu_lst, var_2))*{var_2 <- var_2_lst, tu'#5 <- tu'_lst} + -- fun_subst_comptype: `%%%%`(ct, tv_lst, tu_lst, var_1) + -- if (|var_0_lst| = |tu'_lst|) + -- (fun_subst_typeuse: `%%%%`(tu', tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, tu' <- tu'_lst} + -- wf_subtype: `%`(SUB_subtype(final_opt, var_2_lst, var_3)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 +relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 + rule fun_subst_rectype_case_0{st_lst : subtype*, tv_lst : typevar*, tu_lst : typeuse*, tv'_lst : typevar*, tu'_lst : typeuse*, var_1 : (typevar*, typeuse*)?, var_0_lst : subtype*}: + `%%%%`(REC_rectype(`%`_list(st_lst)), tv_lst, tu_lst, REC_rectype(`%`_list(var_0_lst))) + -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_1) + -- if (|var_0_lst| = |st_lst|) + -- (fun_subst_subtype: `%%%%`(st, tv'_lst, tu'_lst, var_0))*{var_0 <- var_0_lst, st <- st_lst} -- (wf_typevar: `%`(tv'#4))*{tv'#4 <- tv'_lst} -- (wf_typeuse: `%`(tu'#6))*{tu'#6 <- tu'_lst} - -- if ((tv'_lst, tu'_lst) = !($minus_recs(tv_lst, tu_lst))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 -def $subst_deftype(v_deftype : deftype, var_0 : typevar*, var_1 : typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 - def $subst_deftype{qt : rectype, i : nat, tv_lst : typevar*, tu_lst : typeuse*}(_DEF_deftype(qt, i), tv_lst, tu_lst) = _DEF_deftype($subst_rectype(qt, tv_lst, tu_lst), i) + -- if (var_1 =/= ?()) + -- if ((tv'_lst, tu'_lst) = !(var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 +relation fun_subst_deftype: `%%%%`(deftype, typevar*, typeuse*, deftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 + rule fun_subst_deftype_case_0{qt : rectype, i : nat, tv_lst : typevar*, tu_lst : typeuse*, var_0 : rectype}: + `%%%%`(_DEF_deftype(qt, i), tv_lst, tu_lst, _DEF_deftype(var_0, i)) + -- fun_subst_rectype: `%%%%`(qt, tv_lst, tu_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1901,385 +2467,657 @@ def $subst_addrtype(v_addrtype : addrtype, var_0 : typevar*, var_1 : typeuse*) : def $subst_addrtype{at : addrtype, tv_lst : typevar*, tu_lst : typeuse*}(at, tv_lst, tu_lst) = at ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_tagtype(v_tagtype : tagtype, var_0 : typevar*, var_1 : typeuse*) : tagtype +relation fun_subst_tagtype: `%%%%`(tagtype, typevar*, typeuse*, tagtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tagtype{tu' : typeuse, tv_lst : typevar*, tu_lst : typeuse*}(tu', tv_lst, tu_lst) = $subst_typeuse(tu', tv_lst, tu_lst) + rule fun_subst_tagtype_case_0{tu' : typeuse, tv_lst : typevar*, tu_lst : typeuse*, var_0 : tagtype}: + `%%%%`(tu', tv_lst, tu_lst, var_0) + -- fun_subst_typeuse: `%%%%`(tu', tv_lst, tu_lst, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_globaltype(v_globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*) : globaltype +relation fun_subst_globaltype: `%%%%`(globaltype, typevar*, typeuse*, globaltype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_globaltype{mut_opt : mut?, t : valtype, tv_lst : typevar*, tu_lst : typeuse*}(`%%`_globaltype(mut_opt, t), tv_lst, tu_lst) = `%%`_globaltype(mut_opt, $subst_valtype(t, tv_lst, tu_lst)) - -- wf_globaltype: `%`(`%%`_globaltype(mut_opt, $subst_valtype(t, tv_lst, tu_lst))) + rule fun_subst_globaltype_case_0{mut_opt : mut?, t : valtype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : valtype, var_0 : valtype}: + `%%%%`(`%%`_globaltype(mut_opt, t), tv_lst, tu_lst, `%%`_globaltype(mut_opt, var_0)) + -- fun_subst_valtype: `%%%%`(t, tv_lst, tu_lst, var_1) + -- fun_subst_valtype: `%%%%`(t, tv_lst, tu_lst, var_0) + -- wf_globaltype: `%`(`%%`_globaltype(mut_opt, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_memtype(v_memtype : memtype, var_0 : typevar*, var_1 : typeuse*) : memtype +relation fun_subst_memtype: `%%%%`(memtype, typevar*, typeuse*, memtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_memtype{at : addrtype, lim : limits, tv_lst : typevar*, tu_lst : typeuse*}(`%%PAGE`_memtype(at, lim), tv_lst, tu_lst) = `%%PAGE`_memtype(at, lim) + rule fun_subst_memtype_case_0{at : addrtype, lim : limits, tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(`%%PAGE`_memtype(at, lim), tv_lst, tu_lst, `%%PAGE`_memtype(at, lim)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_tabletype(v_tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*) : tabletype +relation fun_subst_tabletype: `%%%%`(tabletype, typevar*, typeuse*, tabletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, tv_lst : typevar*, tu_lst : typeuse*}(`%%%`_tabletype(at, lim, rt), tv_lst, tu_lst) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv_lst, tu_lst)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv_lst, tu_lst))) + rule fun_subst_tabletype_case_0{at : addrtype, lim : limits, rt : reftype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : reftype, var_0 : reftype}: + `%%%%`(`%%%`_tabletype(at, lim, rt), tv_lst, tu_lst, `%%%`_tabletype(at, lim, var_0)) + -- fun_subst_reftype: `%%%%`(rt, tv_lst, tu_lst, var_1) + -- fun_subst_reftype: `%%%%`(rt, tv_lst, tu_lst, var_0) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_externtype(v_externtype : externtype, var_0 : typevar*, var_1 : typeuse*) : externtype +relation fun_subst_externtype: `%%%%`(externtype, typevar*, typeuse*, externtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{jt : typeuse, tv_lst : typevar*, tu_lst : typeuse*}(TAG_externtype(jt), tv_lst, tu_lst) = TAG_externtype($subst_tagtype(jt, tv_lst, tu_lst)) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv_lst, tu_lst))) + rule fun_subst_externtype_case_0{jt : typeuse, tv_lst : typevar*, tu_lst : typeuse*, var_1 : tagtype, var_0 : tagtype}: + `%%%%`(TAG_externtype(jt), tv_lst, tu_lst, TAG_externtype(var_0)) + -- fun_subst_tagtype: `%%%%`(jt, tv_lst, tu_lst, var_1) + -- fun_subst_tagtype: `%%%%`(jt, tv_lst, tu_lst, var_0) + -- wf_externtype: `%`(TAG_externtype(var_1)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{gt : globaltype, tv_lst : typevar*, tu_lst : typeuse*}(GLOBAL_externtype(gt), tv_lst, tu_lst) = GLOBAL_externtype($subst_globaltype(gt, tv_lst, tu_lst)) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv_lst, tu_lst))) + rule fun_subst_externtype_case_1{gt : globaltype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : globaltype, var_0 : globaltype}: + `%%%%`(GLOBAL_externtype(gt), tv_lst, tu_lst, GLOBAL_externtype(var_0)) + -- fun_subst_globaltype: `%%%%`(gt, tv_lst, tu_lst, var_1) + -- fun_subst_globaltype: `%%%%`(gt, tv_lst, tu_lst, var_0) + -- wf_externtype: `%`(GLOBAL_externtype(var_1)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tt : tabletype, tv_lst : typevar*, tu_lst : typeuse*}(TABLE_externtype(tt), tv_lst, tu_lst) = TABLE_externtype($subst_tabletype(tt, tv_lst, tu_lst)) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv_lst, tu_lst))) + rule fun_subst_externtype_case_2{tt : tabletype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : tabletype, var_0 : tabletype}: + `%%%%`(TABLE_externtype(tt), tv_lst, tu_lst, TABLE_externtype(var_0)) + -- fun_subst_tabletype: `%%%%`(tt, tv_lst, tu_lst, var_1) + -- fun_subst_tabletype: `%%%%`(tt, tv_lst, tu_lst, var_0) + -- wf_externtype: `%`(TABLE_externtype(var_1)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{mt : memtype, tv_lst : typevar*, tu_lst : typeuse*}(MEM_externtype(mt), tv_lst, tu_lst) = MEM_externtype($subst_memtype(mt, tv_lst, tu_lst)) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv_lst, tu_lst))) + rule fun_subst_externtype_case_3{mt : memtype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : memtype, var_0 : memtype}: + `%%%%`(MEM_externtype(mt), tv_lst, tu_lst, MEM_externtype(var_0)) + -- fun_subst_memtype: `%%%%`(mt, tv_lst, tu_lst, var_1) + -- fun_subst_memtype: `%%%%`(mt, tv_lst, tu_lst, var_0) + -- wf_externtype: `%`(MEM_externtype(var_1)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tu' : typeuse, tv_lst : typevar*, tu_lst : typeuse*}(FUNC_externtype(tu'), tv_lst, tu_lst) = FUNC_externtype($subst_typeuse(tu', tv_lst, tu_lst)) - -- wf_externtype: `%`(FUNC_externtype($subst_typeuse(tu', tv_lst, tu_lst))) + rule fun_subst_externtype_case_4{tu' : typeuse, tv_lst : typevar*, tu_lst : typeuse*, var_1 : typeuse, var_0 : typeuse}: + `%%%%`(FUNC_externtype(tu'), tv_lst, tu_lst, FUNC_externtype(var_0)) + -- fun_subst_typeuse: `%%%%`(tu', tv_lst, tu_lst, var_1) + -- fun_subst_typeuse: `%%%%`(tu', tv_lst, tu_lst, var_0) + -- wf_externtype: `%`(FUNC_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_moduletype(v_moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*) : moduletype +relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_moduletype{xt_1_lst : externtype*, xt_2_lst : externtype*, tv_lst : typevar*, tu_lst : typeuse*}(`%->%`_moduletype(xt_1_lst, xt_2_lst), tv_lst, tu_lst) = `%->%`_moduletype($subst_externtype(xt_1, tv_lst, tu_lst)*{xt_1 <- xt_1_lst}, $subst_externtype(xt_2, tv_lst, tu_lst)*{xt_2 <- xt_2_lst}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1#2, tv_lst, tu_lst)*{xt_1#2 <- xt_1_lst}, $subst_externtype(xt_2#2, tv_lst, tu_lst)*{xt_2#2 <- xt_2_lst})) + rule fun_subst_moduletype_case_0{xt_1_lst : externtype*, xt_2_lst : externtype*, tv_lst : typevar*, tu_lst : typeuse*, var_3_lst : externtype*, var_2_lst : externtype*, var_1_lst : externtype*, var_0_lst : externtype*}: + `%%%%`(`%->%`_moduletype(xt_1_lst, xt_2_lst), tv_lst, tu_lst, `%->%`_moduletype(var_0_lst, var_1_lst)) + -- if (|var_3_lst| = |xt_2_lst|) + -- (fun_subst_externtype: `%%%%`(xt_2#2, tv_lst, tu_lst, var_3))*{var_3 <- var_3_lst, xt_2#2 <- xt_2_lst} + -- if (|var_2_lst| = |xt_1_lst|) + -- (fun_subst_externtype: `%%%%`(xt_1#2, tv_lst, tu_lst, var_2))*{var_2 <- var_2_lst, xt_1#2 <- xt_1_lst} + -- if (|var_1_lst| = |xt_2_lst|) + -- (fun_subst_externtype: `%%%%`(xt_2, tv_lst, tu_lst, var_1))*{var_1 <- var_1_lst, xt_2 <- xt_2_lst} + -- if (|var_0_lst| = |xt_1_lst|) + -- (fun_subst_externtype: `%%%%`(xt_1, tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, xt_1 <- xt_1_lst} + -- wf_moduletype: `%`(`%->%`_moduletype(var_2_lst, var_3_lst)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_all_valtype(v_valtype : valtype, var_0 : typeuse*) : valtype +relation fun_subst_all_valtype: `%%%`(valtype, typeuse*, valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_valtype{t : valtype, v_n : nat, tu_lst : typeuse*, i : nat}(t, tu_lst) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.34 -def $free_subtype(v_subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:550.1-551.66 - def $free_subtype{final_opt : final?, typeuse_lst : typeuse*, v_comptype : comptype}(SUB_subtype(final_opt, typeuse_lst, v_comptype)) = $free_list($free_typeuse(v_typeuse)*{v_typeuse <- typeuse_lst}) +++ $free_comptype(v_comptype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.1-492.34 -def $free_rectype(v_rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-553.70 - def $free_rectype{subtype_lst : subtype*}(REC_rectype(`%`_list(subtype_lst))) = $free_list($free_subtype(v_subtype)*{v_subtype <- subtype_lst}) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.1-520.34 -def $free_deftype(v_deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:521.1-521.59 - def $free_deftype{v_rectype : rectype, v_n : nat}(_DEF_deftype(v_rectype, v_n)) = $free_rectype(v_rectype) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 +relation fun_free_resulttype: `%%`(resulttype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 + rule fun_free_resulttype_case_0{valtype_lst : valtype*, var_1_lst : free*, var_0 : free}: + `%%`(`%`_resulttype(valtype_lst), var_0) + -- if (|var_1_lst| = |valtype_lst|) + -- (fun_free_valtype: `%%`(v_valtype, var_1))*{var_1 <- var_1_lst, v_valtype <- valtype_lst} + -- fun_free_list: `%%`(var_1_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 +relation fun_free_storagetype: `%%`(storagetype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_0{var_0 : free}: + `%%`(BOT_storagetype, var_0) + -- fun_free_valtype: `%%`(BOT_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_1{null_opt : null?, v_heaptype : heaptype, var_0 : free}: + `%%`(REF_storagetype(null_opt, v_heaptype), var_0) + -- fun_free_valtype: `%%`(REF_valtype(null_opt, v_heaptype), var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_2{var_0 : free}: + `%%`(V128_storagetype, var_0) + -- fun_free_valtype: `%%`(V128_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_3{var_0 : free}: + `%%`(F64_storagetype, var_0) + -- fun_free_valtype: `%%`(F64_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_4{var_0 : free}: + `%%`(F32_storagetype, var_0) + -- fun_free_valtype: `%%`(F32_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_5{var_0 : free}: + `%%`(I64_storagetype, var_0) + -- fun_free_valtype: `%%`(I64_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_6{var_0 : free}: + `%%`(I32_storagetype, var_0) + -- fun_free_valtype: `%%`(I32_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_7{var_0 : free}: + `%%`(I8_storagetype, var_0) + -- fun_free_packtype: `%%`(I8_packtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule fun_free_storagetype_case_8{var_0 : free}: + `%%`(I16_storagetype, var_0) + -- fun_free_packtype: `%%`(I16_packtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 +relation fun_free_fieldtype: `%%`(fieldtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 + rule fun_free_fieldtype_case_0{mut_opt : mut?, v_storagetype : storagetype, var_0 : free}: + `%%`(`%%`_fieldtype(mut_opt, v_storagetype), var_0) + -- fun_free_storagetype: `%%`(v_storagetype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 +relation fun_free_comptype: `%%`(comptype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 + rule fun_free_comptype_case_0{fieldtype_lst : fieldtype*, var_1_lst : free*, var_0 : free}: + `%%`(STRUCT_comptype(`%`_list(fieldtype_lst)), var_0) + -- if (|var_1_lst| = |fieldtype_lst|) + -- (fun_free_fieldtype: `%%`(v_fieldtype, var_1))*{var_1 <- var_1_lst, v_fieldtype <- fieldtype_lst} + -- fun_free_list: `%%`(var_1_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 + rule fun_free_comptype_case_1{v_fieldtype : fieldtype, var_0 : free}: + `%%`(ARRAY_comptype(v_fieldtype), var_0) + -- fun_free_fieldtype: `%%`(v_fieldtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 + rule fun_free_comptype_case_2{resulttype_1 : list(syntax valtype), resulttype_2 : list(syntax valtype), var_1 : free, var_0 : free}: + `%%`(`FUNC%->%`_comptype(resulttype_1, resulttype_2), var_0 +++ var_1) + -- fun_free_resulttype: `%%`(resulttype_2, var_1) + -- fun_free_resulttype: `%%`(resulttype_1, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 +relation fun_free_subtype: `%%`(subtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 + rule fun_free_subtype_case_0{final_opt : final?, typeuse_lst : typeuse*, v_comptype : comptype, var_2 : free, var_1_lst : free*, var_0 : free}: + `%%`(SUB_subtype(final_opt, typeuse_lst, v_comptype), var_0 +++ var_2) + -- fun_free_comptype: `%%`(v_comptype, var_2) + -- if (|var_1_lst| = |typeuse_lst|) + -- (fun_free_typeuse: `%%`(v_typeuse, var_1))*{var_1 <- var_1_lst, v_typeuse <- typeuse_lst} + -- fun_free_list: `%%`(var_1_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 +relation fun_free_rectype: `%%`(rectype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 + rule fun_free_rectype_case_0{subtype_lst : subtype*, var_1_lst : free*, var_0 : free}: + `%%`(REC_rectype(`%`_list(subtype_lst)), var_0) + -- if (|var_1_lst| = |subtype_lst|) + -- (fun_free_subtype: `%%`(v_subtype, var_1))*{var_1 <- var_1_lst, v_subtype <- subtype_lst} + -- fun_free_list: `%%`(var_1_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 +relation fun_free_deftype: `%%`(deftype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 + rule fun_free_deftype_case_0{v_rectype : rectype, v_n : nat, var_0 : free}: + `%%`(_DEF_deftype(v_rectype, v_n), var_0) + -- fun_free_rectype: `%%`(v_rectype, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_tagtype(v_tagtype : tagtype) : free +relation fun_free_tagtype: `%%`(tagtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tagtype{v_rectype : rectype, v_n : n}(_DEF_tagtype(v_rectype, v_n)) = $free_deftype(_DEF_deftype(v_rectype, v_n)) + rule fun_free_tagtype_case_0{v_rectype : rectype, v_n : n, var_0 : free}: + `%%`(_DEF_tagtype(v_rectype, v_n), var_0) + -- fun_free_deftype: `%%`(_DEF_deftype(v_rectype, v_n), var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_globaltype(v_globaltype : globaltype) : free +relation fun_free_globaltype: `%%`(globaltype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_globaltype{mut_opt : mut?, v_valtype : valtype}(`%%`_globaltype(mut_opt, v_valtype)) = $free_valtype(v_valtype) + rule fun_free_globaltype_case_0{mut_opt : mut?, v_valtype : valtype, var_0 : free}: + `%%`(`%%`_globaltype(mut_opt, v_valtype), var_0) + -- fun_free_valtype: `%%`(v_valtype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_memtype(v_memtype : memtype) : free +relation fun_free_memtype: `%%`(memtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{v_addrtype : addrtype, v_limits : limits}(`%%PAGE`_memtype(v_addrtype, v_limits)) = $free_addrtype(v_addrtype) + rule fun_free_memtype_case_0{v_addrtype : addrtype, v_limits : limits, var_0 : free}: + `%%`(`%%PAGE`_memtype(v_addrtype, v_limits), var_0) + -- fun_free_addrtype: `%%`(v_addrtype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_tabletype(v_tabletype : tabletype) : free +relation fun_free_tabletype: `%%`(tabletype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{v_addrtype : addrtype, v_limits : limits, v_reftype : reftype}(`%%%`_tabletype(v_addrtype, v_limits, v_reftype)) = $free_addrtype(v_addrtype) +++ $free_reftype(v_reftype) + rule fun_free_tabletype_case_0{v_addrtype : addrtype, v_limits : limits, v_reftype : reftype, var_1 : free, var_0 : free}: + `%%`(`%%%`_tabletype(v_addrtype, v_limits, v_reftype), var_0 +++ var_1) + -- fun_free_reftype: `%%`(v_reftype, var_1) + -- fun_free_addrtype: `%%`(v_addrtype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_datatype(v_datatype : datatype) : free +relation fun_free_datatype: `%%`(datatype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_datatype_case_0: + `%%`(OK_datatype, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_elemtype(v_elemtype : elemtype) : free +relation fun_free_elemtype: `%%`(elemtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_elemtype{v_reftype : reftype}(v_reftype) = $free_reftype(v_reftype) + rule fun_free_elemtype_case_0{v_reftype : reftype, var_0 : free}: + `%%`(v_reftype, var_0) + -- fun_free_reftype: `%%`(v_reftype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_externtype(v_externtype : externtype) : free +relation fun_free_externtype: `%%`(externtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{v_tagtype : typeuse}(TAG_externtype(v_tagtype)) = $free_tagtype(v_tagtype) + rule fun_free_externtype_case_0{v_tagtype : typeuse, var_0 : free}: + `%%`(TAG_externtype(v_tagtype), var_0) + -- fun_free_tagtype: `%%`(v_tagtype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{v_globaltype : globaltype}(GLOBAL_externtype(v_globaltype)) = $free_globaltype(v_globaltype) + rule fun_free_externtype_case_1{v_globaltype : globaltype, var_0 : free}: + `%%`(GLOBAL_externtype(v_globaltype), var_0) + -- fun_free_globaltype: `%%`(v_globaltype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{v_memtype : memtype}(MEM_externtype(v_memtype)) = $free_memtype(v_memtype) + rule fun_free_externtype_case_2{v_memtype : memtype, var_0 : free}: + `%%`(MEM_externtype(v_memtype), var_0) + -- fun_free_memtype: `%%`(v_memtype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{v_tabletype : tabletype}(TABLE_externtype(v_tabletype)) = $free_tabletype(v_tabletype) + rule fun_free_externtype_case_3{v_tabletype : tabletype, var_0 : free}: + `%%`(TABLE_externtype(v_tabletype), var_0) + -- fun_free_tabletype: `%%`(v_tabletype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{v_typeuse : typeuse}(FUNC_externtype(v_typeuse)) = $free_typeuse(v_typeuse) + rule fun_free_externtype_case_4{v_typeuse : typeuse, var_0 : free}: + `%%`(FUNC_externtype(v_typeuse), var_0) + -- fun_free_typeuse: `%%`(v_typeuse, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_moduletype(v_moduletype : moduletype) : free +relation fun_free_moduletype: `%%`(moduletype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_moduletype{externtype_1_lst : externtype*, externtype_2_lst : externtype*}(`%->%`_moduletype(externtype_1_lst, externtype_2_lst)) = $free_list($free_externtype(externtype_1)*{externtype_1 <- externtype_1_lst}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- externtype_2_lst}) + rule fun_free_moduletype_case_0{externtype_1_lst : externtype*, externtype_2_lst : externtype*, var_3_lst : free*, var_2 : free, var_1_lst : free*, var_0 : free}: + `%%`(`%->%`_moduletype(externtype_1_lst, externtype_2_lst), var_0 +++ var_2) + -- if (|var_3_lst| = |externtype_2_lst|) + -- (fun_free_externtype: `%%`(externtype_2, var_3))*{var_3 <- var_3_lst, externtype_2 <- externtype_2_lst} + -- fun_free_list: `%%`(var_3_lst, var_2) + -- if (|var_1_lst| = |externtype_1_lst|) + -- (fun_free_externtype: `%%`(externtype_1, var_1))*{var_1 <- var_1_lst, externtype_1 <- externtype_1_lst} + -- fun_free_list: `%%`(var_1_lst, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax num_ = @@ -2794,9 +3632,10 @@ relation wf_shape: `%`(shape) -- if (($lsize(v_lanetype) * $proj_dim_0(v_dim).0) = 128) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $fun_dim(v_shape : shape) : dim +relation fun_dim: `%%`(shape, dim) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $fun_dim{v_Lnn : lanetype, v_N : nat}(`%X%`_shape(v_Lnn, `%`_dim(v_N))) = `%`_dim(v_N) + rule fun_dim_case_0{v_Lnn : lanetype, v_N : nat}: + `%%`(`%X%`_shape(v_Lnn, `%`_dim(v_N)), `%`_dim(v_N)) -- wf_dim: `%`(`%`_dim(v_N)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4460,11 +5299,12 @@ relation wf_instr: `%`(instr) -- wf_vswizzlop_: `%%`(v_bshape, var_0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 - rule instr_case_95{v_bshape : bshape, laneidx_lst : laneidx*}: + rule instr_case_95{v_bshape : bshape, laneidx_lst : laneidx*, var_0 : dim}: `%`(VSHUFFLE_instr(v_bshape, laneidx_lst)) -- wf_bshape: `%`(v_bshape) -- (wf_uN: `%%`(8, v_laneidx))*{v_laneidx <- laneidx_lst} - -- if (`%`_dim(|laneidx_lst|) = $fun_dim($proj_bshape_0(v_bshape).0)) + -- if (`%`_dim(|laneidx_lst|) = var_0) + -- fun_dim: `%%`($proj_bshape_0(v_bshape).0, var_0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextunop__}: @@ -4581,305 +5421,696 @@ relation wf_instr: `%`(instr) syntax expr = instr* ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $memarg0 : memarg +relation fun_memarg0: `%`(memarg) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} + rule fun_memarg0_case_0: + `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $const(v_consttype : consttype, v_lit_ : lit_) : instr +relation fun_const: `%%%`(consttype, lit_, instr) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{c : num_}(I32_consttype, mk_lit__0_lit_(I32_numtype, c)) = CONST_instr(I32_numtype, c) + rule fun_const_case_0{c : num_}: + `%%%`(I32_consttype, mk_lit__0_lit_(I32_numtype, c), CONST_instr(I32_numtype, c)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{c : num_}(I64_consttype, mk_lit__0_lit_(I64_numtype, c)) = CONST_instr(I64_numtype, c) + rule fun_const_case_1{c : num_}: + `%%%`(I64_consttype, mk_lit__0_lit_(I64_numtype, c), CONST_instr(I64_numtype, c)) -- wf_instr: `%`(CONST_instr(I64_numtype, c)) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{c : num_}(F32_consttype, mk_lit__0_lit_(F32_numtype, c)) = CONST_instr(F32_numtype, c) + rule fun_const_case_2{c : num_}: + `%%%`(F32_consttype, mk_lit__0_lit_(F32_numtype, c), CONST_instr(F32_numtype, c)) -- wf_instr: `%`(CONST_instr(F32_numtype, c)) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{c : num_}(F64_consttype, mk_lit__0_lit_(F64_numtype, c)) = CONST_instr(F64_numtype, c) + rule fun_const_case_3{c : num_}: + `%%%`(F64_consttype, mk_lit__0_lit_(F64_numtype, c), CONST_instr(F64_numtype, c)) -- wf_instr: `%`(CONST_instr(F64_numtype, c)) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{c : uN}(V128_consttype, mk_lit__1_lit_(V128_vectype, c)) = VCONST_instr(V128_vectype, c) + rule fun_const_case_4{c : uN}: + `%%%`(V128_consttype, mk_lit__1_lit_(V128_vectype, c), VCONST_instr(V128_vectype, c)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_shape(v_shape : shape) : free +relation fun_free_shape: `%%`(shape, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_shape{v_lanetype : lanetype, v_dim : dim}(`%X%`_shape(v_lanetype, v_dim)) = $free_lanetype(v_lanetype) + rule fun_free_shape_case_0{v_lanetype : lanetype, v_dim : dim, var_0 : free}: + `%%`(`%X%`_shape(v_lanetype, v_dim), var_0) + -- fun_free_lanetype: `%%`(v_lanetype, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_blocktype(v_blocktype : blocktype) : free +relation fun_free_blocktype: `%%`(blocktype, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{valtype_opt : valtype?}(_RESULT_blocktype(valtype_opt)) = $free_opt($free_valtype(v_valtype)?{v_valtype <- valtype_opt}) + rule fun_free_blocktype_case_0{valtype_opt : valtype?, var_1_opt : free?, var_0 : free}: + `%%`(_RESULT_blocktype(valtype_opt), var_0) + -- if ((var_1_opt = ?()) <=> (valtype_opt = ?())) + -- (fun_free_valtype: `%%`(v_valtype, var_1))?{var_1 <- var_1_opt, v_valtype <- valtype_opt} + -- fun_free_opt: `%%`(var_1_opt, var_0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{v_typeidx : uN}(_IDX_blocktype(v_typeidx)) = $free_typeidx(v_typeidx) + rule fun_free_blocktype_case_1{v_typeidx : uN, var_0 : free}: + `%%`(_IDX_blocktype(v_typeidx), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_catch(v_catch : catch) : free +relation fun_free_catch: `%%`(catch, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_catch{v_tagidx : uN, v_labelidx : uN}(CATCH_catch(v_tagidx, v_labelidx)) = $free_tagidx(v_tagidx) +++ $free_labelidx(v_labelidx) + rule fun_free_catch_case_0{v_tagidx : uN, v_labelidx : uN, var_1 : free, var_0 : free}: + `%%`(CATCH_catch(v_tagidx, v_labelidx), var_0 +++ var_1) + -- fun_free_labelidx: `%%`(v_labelidx, var_1) + -- fun_free_tagidx: `%%`(v_tagidx, var_0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_catch{v_tagidx : uN, v_labelidx : uN}(CATCH_REF_catch(v_tagidx, v_labelidx)) = $free_tagidx(v_tagidx) +++ $free_labelidx(v_labelidx) + rule fun_free_catch_case_1{v_tagidx : uN, v_labelidx : uN, var_1 : free, var_0 : free}: + `%%`(CATCH_REF_catch(v_tagidx, v_labelidx), var_0 +++ var_1) + -- fun_free_labelidx: `%%`(v_labelidx, var_1) + -- fun_free_tagidx: `%%`(v_tagidx, var_0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_catch{v_labelidx : uN}(CATCH_ALL_catch(v_labelidx)) = $free_labelidx(v_labelidx) + rule fun_free_catch_case_2{v_labelidx : uN, var_0 : free}: + `%%`(CATCH_ALL_catch(v_labelidx), var_0) + -- fun_free_labelidx: `%%`(v_labelidx, var_0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_catch{v_labelidx : uN}(CATCH_ALL_REF_catch(v_labelidx)) = $free_labelidx(v_labelidx) + rule fun_free_catch_case_3{v_labelidx : uN, var_0 : free}: + `%%`(CATCH_ALL_REF_catch(v_labelidx), var_0) + -- fun_free_labelidx: `%%`(v_labelidx, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.1-584.44 -def $shift_labelidxs(var_0 : labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.32 - def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.66 - def $shift_labelidxs{labelidx'_lst : labelidx*}([`%`_labelidx(0)] ++ labelidx'_lst) = $shift_labelidxs(labelidx'_lst) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.91 - def $shift_labelidxs{v_labelidx : uN, labelidx'_lst : labelidx*}([v_labelidx] ++ labelidx'_lst) = [`%`_labelidx(((($proj_uN_0(v_labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'_lst) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 +relation fun_shift_labelidxs: `%%`(labelidx*, labelidx*) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_1{labelidx'_lst : labelidx*, var_0 : labelidx*}: + `%%`([`%`_labelidx(0)] ++ labelidx'_lst, var_0) + -- fun_shift_labelidxs: `%%`(labelidx'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_2{v_labelidx : uN, labelidx'_lst : labelidx*, var_0 : labelidx*}: + `%%`([v_labelidx] ++ labelidx'_lst, [`%`_labelidx(((($proj_uN_0(v_labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ var_0) + -- fun_shift_labelidxs: `%%`(labelidx'_lst, var_0) -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(v_labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.1-420.30 -def $free_instr(v_instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-435.26 - def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation fun_free_instr: `%%`(instr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_0: + `%%`(NOP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.34 - def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_1: + `%%`(UNREACHABLE_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.27 - def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_2: + `%%`(DROP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.86 - def $free_instr{valtype_lst_opt : valtype*?}(SELECT_instr(valtype_lst_opt)) = $free_opt($free_list($free_valtype(v_valtype)*{v_valtype <- valtype_lst})?{valtype_lst <- valtype_lst_opt}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.92 - def $free_instr{v_blocktype : blocktype, instr_lst : instr*}(BLOCK_instr(v_blocktype, instr_lst)) = $free_blocktype(v_blocktype) +++ $free_block(instr_lst) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.91 - def $free_instr{v_blocktype : blocktype, instr_lst : instr*}(LOOP_instr(v_blocktype, instr_lst)) = $free_blocktype(v_blocktype) +++ $free_block(instr_lst) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-443.79 - def $free_instr{v_blocktype : blocktype, instr_1_lst : instr*, instr_2_lst : instr*}(`IF%%ELSE%`_instr(v_blocktype, instr_1_lst, instr_2_lst)) = $free_blocktype(v_blocktype) +++ $free_block(instr_1_lst) +++ $free_block(instr_2_lst) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:445.1-445.56 - def $free_instr{v_labelidx : uN}(BR_instr(v_labelidx)) = $free_labelidx(v_labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.59 - def $free_instr{v_labelidx : uN}(BR_IF_instr(v_labelidx)) = $free_labelidx(v_labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-448.69 - def $free_instr{labelidx_lst : labelidx*, labelidx' : uN}(BR_TABLE_instr(labelidx_lst, labelidx')) = $free_list($free_labelidx(v_labelidx)*{v_labelidx <- labelidx_lst}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.64 - def $free_instr{v_labelidx : uN}(BR_ON_NULL_instr(v_labelidx)) = $free_labelidx(v_labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.68 - def $free_instr{v_labelidx : uN}(BR_ON_NON_NULL_instr(v_labelidx)) = $free_labelidx(v_labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-452.83 - def $free_instr{v_labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(v_labelidx, reftype_1, reftype_2)) = $free_labelidx(v_labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-454.83 - def $free_instr{v_labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(v_labelidx, reftype_1, reftype_2)) = $free_labelidx(v_labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-456.55 - def $free_instr{v_funcidx : uN}(CALL_instr(v_funcidx)) = $free_funcidx(v_funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.59 - def $free_instr{v_typeuse : typeuse}(CALL_REF_instr(v_typeuse)) = $free_typeuse(v_typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-459.53 - def $free_instr{v_tableidx : uN, v_typeuse : typeuse}(CALL_INDIRECT_instr(v_tableidx, v_typeuse)) = $free_tableidx(v_tableidx) +++ $free_typeuse(v_typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.29 - def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_3{valtype_lst_opt : valtype*?, var_2_lst_opt : free*?, var_1_opt : free?, var_0 : free}: + `%%`(SELECT_instr(valtype_lst_opt), var_0) + -- if ((var_2_lst_opt = ?()) <=> (valtype_lst_opt = ?())) + -- (if (|var_2_lst| = |valtype_lst|))?{var_2_lst <- var_2_lst_opt, valtype_lst <- valtype_lst_opt} + -- (fun_free_valtype: `%%`(v_valtype, var_2))*{var_2 <- var_2_lst, v_valtype <- valtype_lst}?{var_2_lst <- var_2_lst_opt, valtype_lst <- valtype_lst_opt} + -- if ((var_2_lst_opt = ?()) <=> (var_1_opt = ?())) + -- (fun_free_list: `%%`(var_2_lst, var_1))?{var_2_lst <- var_2_lst_opt, var_1 <- var_1_opt} + -- fun_free_opt: `%%`(var_1_opt, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_4{v_blocktype : blocktype, instr_lst : instr*, var_1 : free, var_0 : free}: + `%%`(BLOCK_instr(v_blocktype, instr_lst), var_0 +++ var_1) + -- fun_free_block: `%%`(instr_lst, var_1) + -- fun_free_blocktype: `%%`(v_blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_5{v_blocktype : blocktype, instr_lst : instr*, var_1 : free, var_0 : free}: + `%%`(LOOP_instr(v_blocktype, instr_lst), var_0 +++ var_1) + -- fun_free_block: `%%`(instr_lst, var_1) + -- fun_free_blocktype: `%%`(v_blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_6{v_blocktype : blocktype, instr_1_lst : instr*, instr_2_lst : instr*, var_2 : free, var_1 : free, var_0 : free}: + `%%`(`IF%%ELSE%`_instr(v_blocktype, instr_1_lst, instr_2_lst), var_0 +++ var_1 +++ var_2) + -- fun_free_block: `%%`(instr_2_lst, var_2) + -- fun_free_block: `%%`(instr_1_lst, var_1) + -- fun_free_blocktype: `%%`(v_blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_7{v_labelidx : uN, var_0 : free}: + `%%`(BR_instr(v_labelidx), var_0) + -- fun_free_labelidx: `%%`(v_labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_8{v_labelidx : uN, var_0 : free}: + `%%`(BR_IF_instr(v_labelidx), var_0) + -- fun_free_labelidx: `%%`(v_labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_9{labelidx_lst : labelidx*, labelidx' : uN, var_2 : free, var_1_lst : free*, var_0 : free}: + `%%`(BR_TABLE_instr(labelidx_lst, labelidx'), var_0 +++ var_2) + -- fun_free_labelidx: `%%`(labelidx', var_2) + -- if (|var_1_lst| = |labelidx_lst|) + -- (fun_free_labelidx: `%%`(v_labelidx, var_1))*{var_1 <- var_1_lst, v_labelidx <- labelidx_lst} + -- fun_free_list: `%%`(var_1_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_10{v_labelidx : uN, var_0 : free}: + `%%`(BR_ON_NULL_instr(v_labelidx), var_0) + -- fun_free_labelidx: `%%`(v_labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_11{v_labelidx : uN, var_0 : free}: + `%%`(BR_ON_NON_NULL_instr(v_labelidx), var_0) + -- fun_free_labelidx: `%%`(v_labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_12{v_labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_instr(v_labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(v_labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_13{v_labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_FAIL_instr(v_labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(v_labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_14{v_funcidx : uN, var_0 : free}: + `%%`(CALL_instr(v_funcidx), var_0) + -- fun_free_funcidx: `%%`(v_funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_15{v_typeuse : typeuse, var_0 : free}: + `%%`(CALL_REF_instr(v_typeuse), var_0) + -- fun_free_typeuse: `%%`(v_typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_16{v_tableidx : uN, v_typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(CALL_INDIRECT_instr(v_tableidx, v_typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(v_typeuse, var_1) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_17: + `%%`(RETURN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 - def $free_instr{v_funcidx : uN}(RETURN_CALL_instr(v_funcidx)) = $free_funcidx(v_funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.66 - def $free_instr{v_typeuse : typeuse}(RETURN_CALL_REF_instr(v_typeuse)) = $free_typeuse(v_typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-464.53 - def $free_instr{v_tableidx : uN, v_typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(v_tableidx, v_typeuse)) = $free_tableidx(v_tableidx) +++ $free_typeuse(v_typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:466.1-466.53 - def $free_instr{v_tagidx : uN}(THROW_instr(v_tagidx)) = $free_tagidx(v_tagidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.32 - def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_18{v_funcidx : uN, var_0 : free}: + `%%`(RETURN_CALL_instr(v_funcidx), var_0) + -- fun_free_funcidx: `%%`(v_funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_19{v_typeuse : typeuse, var_0 : free}: + `%%`(RETURN_CALL_REF_instr(v_typeuse), var_0) + -- fun_free_typeuse: `%%`(v_typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_20{v_tableidx : uN, v_typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(RETURN_CALL_INDIRECT_instr(v_tableidx, v_typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(v_typeuse, var_1) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_21{v_tagidx : uN, var_0 : free}: + `%%`(THROW_instr(v_tagidx), var_0) + -- fun_free_tagidx: `%%`(v_tagidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_22: + `%%`(THROW_REF_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-469.99 - def $free_instr{v_blocktype : blocktype, catch_lst : catch*, instr_lst : instr*}(TRY_TABLE_instr(v_blocktype, `%`_list(catch_lst), instr_lst)) = $free_blocktype(v_blocktype) +++ $free_list($free_catch(v_catch)*{v_catch <- catch_lst}) +++ $free_list($free_instr(v_instr)*{v_instr <- instr_lst}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.63 - def $free_instr{v_numtype : numtype, numlit : num_}(CONST_instr(v_numtype, numlit)) = $free_numtype(v_numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.60 - def $free_instr{v_numtype : numtype, unop : unop_}(UNOP_instr(v_numtype, unop)) = $free_numtype(v_numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.62 - def $free_instr{v_numtype : numtype, binop : binop_}(BINOP_instr(v_numtype, binop)) = $free_numtype(v_numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.64 - def $free_instr{v_numtype : numtype, testop : testop_}(TESTOP_instr(v_numtype, testop)) = $free_numtype(v_numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.62 - def $free_instr{v_numtype : numtype, relop : relop_}(RELOP_instr(v_numtype, relop)) = $free_numtype(v_numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-477.55 - def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.64 - def $free_instr{v_vectype : vectype, veclit : uN}(VCONST_instr(v_vectype, veclit)) = $free_vectype(v_vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 - def $free_instr{v_vectype : vectype, v_vvunop : vvunop}(VVUNOP_instr(v_vectype, v_vvunop)) = $free_vectype(v_vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-481.66 - def $free_instr{v_vectype : vectype, v_vvbinop : vvbinop}(VVBINOP_instr(v_vectype, v_vvbinop)) = $free_vectype(v_vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:482.1-482.68 - def $free_instr{v_vectype : vectype, v_vvternop : vvternop}(VVTERNOP_instr(v_vectype, v_vvternop)) = $free_vectype(v_vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.68 - def $free_instr{v_vectype : vectype, v_vvtestop : vvtestop}(VVTESTOP_instr(v_vectype, v_vvtestop)) = $free_vectype(v_vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.56 - def $free_instr{v_shape : shape, vunop : vunop_}(VUNOP_instr(v_shape, vunop)) = $free_shape(v_shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.58 - def $free_instr{v_shape : shape, vbinop : vbinop_}(VBINOP_instr(v_shape, vbinop)) = $free_shape(v_shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.60 - def $free_instr{v_shape : shape, vternop : vternop_}(VTERNOP_instr(v_shape, vternop)) = $free_shape(v_shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-487.60 - def $free_instr{v_shape : shape, vtestop : vtestop_}(VTESTOP_instr(v_shape, vtestop)) = $free_shape(v_shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:488.1-488.58 - def $free_instr{v_shape : shape, vrelop : vrelop_}(VRELOP_instr(v_shape, vrelop)) = $free_shape(v_shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.64 - def $free_instr{v_ishape : ishape, vshiftop : vshiftop_}(VSHIFTOP_instr(v_ishape, vshiftop)) = $free_shape($proj_ishape_0(v_ishape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.55 - def $free_instr{v_ishape : ishape}(VBITMASK_instr(v_ishape)) = $free_shape($proj_ishape_0(v_ishape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.66 - def $free_instr{v_bshape : bshape, vswizzlop : vswizzlop_}(VSWIZZLOP_instr(v_bshape, vswizzlop)) = $free_shape($proj_bshape_0(v_bshape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.64 - def $free_instr{v_bshape : bshape, laneidx_lst : laneidx*}(VSHUFFLE_instr(v_bshape, laneidx_lst)) = $free_shape($proj_bshape_0(v_bshape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-494.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-496.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-498.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-500.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, v_sx : sx}(VNARROW_instr(ishape_1, ishape_2, v_sx)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-502.47 - def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:503.1-503.51 - def $free_instr{v_shape : shape}(VSPLAT_instr(v_shape)) = $free_shape(v_shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.70 - def $free_instr{v_shape : shape, sx_opt : sx?, v_laneidx : uN}(VEXTRACT_LANE_instr(v_shape, sx_opt, v_laneidx)) = $free_shape(v_shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:505.1-505.66 - def $free_instr{v_shape : shape, v_laneidx : uN}(VREPLACE_LANE_instr(v_shape, v_laneidx)) = $free_shape(v_shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.62 - def $free_instr{v_heaptype : heaptype}(`REF.NULL`_instr(v_heaptype)) = $free_heaptype(v_heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.34 - def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_23{v_blocktype : blocktype, catch_lst : catch*, instr_lst : instr*, var_4_lst : free*, var_3 : free, var_2_lst : free*, var_1 : free, var_0 : free}: + `%%`(TRY_TABLE_instr(v_blocktype, `%`_list(catch_lst), instr_lst), var_0 +++ var_1 +++ var_3) + -- if (|var_4_lst| = |instr_lst|) + -- (fun_free_instr: `%%`(v_instr, var_4))*{var_4 <- var_4_lst, v_instr <- instr_lst} + -- fun_free_list: `%%`(var_4_lst, var_3) + -- if (|var_2_lst| = |catch_lst|) + -- (fun_free_catch: `%%`(v_catch, var_2))*{var_2 <- var_2_lst, v_catch <- catch_lst} + -- fun_free_list: `%%`(var_2_lst, var_1) + -- fun_free_blocktype: `%%`(v_blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_24{v_numtype : numtype, numlit : num_, var_0 : free}: + `%%`(CONST_instr(v_numtype, numlit), var_0) + -- fun_free_numtype: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_25{v_numtype : numtype, unop : unop_, var_0 : free}: + `%%`(UNOP_instr(v_numtype, unop), var_0) + -- fun_free_numtype: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_26{v_numtype : numtype, binop : binop_, var_0 : free}: + `%%`(BINOP_instr(v_numtype, binop), var_0) + -- fun_free_numtype: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_27{v_numtype : numtype, testop : testop_, var_0 : free}: + `%%`(TESTOP_instr(v_numtype, testop), var_0) + -- fun_free_numtype: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_28{v_numtype : numtype, relop : relop_, var_0 : free}: + `%%`(RELOP_instr(v_numtype, relop), var_0) + -- fun_free_numtype: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_29{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__, var_1 : free, var_0 : free}: + `%%`(CVTOP_instr(numtype_1, numtype_2, cvtop), var_0 +++ var_1) + -- fun_free_numtype: `%%`(numtype_2, var_1) + -- fun_free_numtype: `%%`(numtype_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_30{v_vectype : vectype, veclit : uN, var_0 : free}: + `%%`(VCONST_instr(v_vectype, veclit), var_0) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_31{v_vectype : vectype, v_vvunop : vvunop, var_0 : free}: + `%%`(VVUNOP_instr(v_vectype, v_vvunop), var_0) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_32{v_vectype : vectype, v_vvbinop : vvbinop, var_0 : free}: + `%%`(VVBINOP_instr(v_vectype, v_vvbinop), var_0) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_33{v_vectype : vectype, v_vvternop : vvternop, var_0 : free}: + `%%`(VVTERNOP_instr(v_vectype, v_vvternop), var_0) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_34{v_vectype : vectype, v_vvtestop : vvtestop, var_0 : free}: + `%%`(VVTESTOP_instr(v_vectype, v_vvtestop), var_0) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_35{v_shape : shape, vunop : vunop_, var_0 : free}: + `%%`(VUNOP_instr(v_shape, vunop), var_0) + -- fun_free_shape: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_36{v_shape : shape, vbinop : vbinop_, var_0 : free}: + `%%`(VBINOP_instr(v_shape, vbinop), var_0) + -- fun_free_shape: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_37{v_shape : shape, vternop : vternop_, var_0 : free}: + `%%`(VTERNOP_instr(v_shape, vternop), var_0) + -- fun_free_shape: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_38{v_shape : shape, vtestop : vtestop_, var_0 : free}: + `%%`(VTESTOP_instr(v_shape, vtestop), var_0) + -- fun_free_shape: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_39{v_shape : shape, vrelop : vrelop_, var_0 : free}: + `%%`(VRELOP_instr(v_shape, vrelop), var_0) + -- fun_free_shape: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_40{v_ishape : ishape, vshiftop : vshiftop_, var_0 : free}: + `%%`(VSHIFTOP_instr(v_ishape, vshiftop), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(v_ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_41{v_ishape : ishape, var_0 : free}: + `%%`(VBITMASK_instr(v_ishape), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(v_ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_42{v_bshape : bshape, vswizzlop : vswizzlop_, var_0 : free}: + `%%`(VSWIZZLOP_instr(v_bshape, vswizzlop), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(v_bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_43{v_bshape : bshape, laneidx_lst : laneidx*, var_0 : free}: + `%%`(VSHUFFLE_instr(v_bshape, laneidx_lst), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(v_bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_44{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__, var_1 : free, var_0 : free}: + `%%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_45{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__, var_1 : free, var_0 : free}: + `%%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_46{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__, var_1 : free, var_0 : free}: + `%%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_47{ishape_1 : ishape, ishape_2 : ishape, v_sx : sx, var_1 : free, var_0 : free}: + `%%`(VNARROW_instr(ishape_1, ishape_2, v_sx), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_48{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__, var_1 : free, var_0 : free}: + `%%`(VCVTOP_instr(shape_1, shape_2, vcvtop), var_0 +++ var_1) + -- fun_free_shape: `%%`(shape_2, var_1) + -- fun_free_shape: `%%`(shape_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_49{v_shape : shape, var_0 : free}: + `%%`(VSPLAT_instr(v_shape), var_0) + -- fun_free_shape: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_50{v_shape : shape, sx_opt : sx?, v_laneidx : uN, var_0 : free}: + `%%`(VEXTRACT_LANE_instr(v_shape, sx_opt, v_laneidx), var_0) + -- fun_free_shape: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_51{v_shape : shape, v_laneidx : uN, var_0 : free}: + `%%`(VREPLACE_LANE_instr(v_shape, v_laneidx), var_0) + -- fun_free_shape: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_52{v_heaptype : heaptype, var_0 : free}: + `%%`(`REF.NULL`_instr(v_heaptype), var_0) + -- fun_free_heaptype: `%%`(v_heaptype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_53: + `%%`(`REF.IS_NULL`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.38 - def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_54: + `%%`(`REF.AS_NON_NULL`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.29 - def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_55: + `%%`(`REF.EQ`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 - def $free_instr{v_reftype : reftype}(`REF.TEST`_instr(v_reftype)) = $free_reftype(v_reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 - def $free_instr{v_reftype : reftype}(`REF.CAST`_instr(v_reftype)) = $free_reftype(v_reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.59 - def $free_instr{v_funcidx : uN}(`REF.FUNC`_instr(v_funcidx)) = $free_funcidx(v_funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.30 - def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_56{v_reftype : reftype, var_0 : free}: + `%%`(`REF.TEST`_instr(v_reftype), var_0) + -- fun_free_reftype: `%%`(v_reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_57{v_reftype : reftype, var_0 : free}: + `%%`(`REF.CAST`_instr(v_reftype), var_0) + -- fun_free_reftype: `%%`(v_reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_58{v_funcidx : uN, var_0 : free}: + `%%`(`REF.FUNC`_instr(v_funcidx), var_0) + -- fun_free_funcidx: `%%`(v_funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_59: + `%%`(`REF.I31`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.33 - def $free_instr{v_sx : sx}(`I31.GET`_instr(v_sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_60{v_sx : sx}: + `%%`(`I31.GET`_instr(v_sx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.61 - def $free_instr{v_typeidx : uN}(`STRUCT.NEW`_instr(v_typeidx)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.69 - def $free_instr{v_typeidx : uN}(`STRUCT.NEW_DEFAULT`_instr(v_typeidx)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.69 - def $free_instr{sx_opt : sx?, v_typeidx : uN, v_u32 : uN}(`STRUCT.GET`_instr(sx_opt, v_typeidx, v_u32)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.65 - def $free_instr{v_typeidx : uN, v_u32 : uN}(`STRUCT.SET`_instr(v_typeidx, v_u32)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.60 - def $free_instr{v_typeidx : uN}(`ARRAY.NEW`_instr(v_typeidx)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.68 - def $free_instr{v_typeidx : uN}(`ARRAY.NEW_DEFAULT`_instr(v_typeidx)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.70 - def $free_instr{v_typeidx : uN, v_u32 : uN}(`ARRAY.NEW_FIXED`_instr(v_typeidx, v_u32)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 - def $free_instr{v_typeidx : uN, v_dataidx : uN}(`ARRAY.NEW_DATA`_instr(v_typeidx, v_dataidx)) = $free_typeidx(v_typeidx) +++ $free_dataidx(v_dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:528.1-529.51 - def $free_instr{v_typeidx : uN, v_elemidx : uN}(`ARRAY.NEW_ELEM`_instr(v_typeidx, v_elemidx)) = $free_typeidx(v_typeidx) +++ $free_elemidx(v_elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.64 - def $free_instr{sx_opt : sx?, v_typeidx : uN}(`ARRAY.GET`_instr(sx_opt, v_typeidx)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.60 - def $free_instr{v_typeidx : uN}(`ARRAY.SET`_instr(v_typeidx)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.32 - def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_61{v_typeidx : uN, var_0 : free}: + `%%`(`STRUCT.NEW`_instr(v_typeidx), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_62{v_typeidx : uN, var_0 : free}: + `%%`(`STRUCT.NEW_DEFAULT`_instr(v_typeidx), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_63{sx_opt : sx?, v_typeidx : uN, v_u32 : uN, var_0 : free}: + `%%`(`STRUCT.GET`_instr(sx_opt, v_typeidx, v_u32), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_64{v_typeidx : uN, v_u32 : uN, var_0 : free}: + `%%`(`STRUCT.SET`_instr(v_typeidx, v_u32), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_65{v_typeidx : uN, var_0 : free}: + `%%`(`ARRAY.NEW`_instr(v_typeidx), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_66{v_typeidx : uN, var_0 : free}: + `%%`(`ARRAY.NEW_DEFAULT`_instr(v_typeidx), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_67{v_typeidx : uN, v_u32 : uN, var_0 : free}: + `%%`(`ARRAY.NEW_FIXED`_instr(v_typeidx, v_u32), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_68{v_typeidx : uN, v_dataidx : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.NEW_DATA`_instr(v_typeidx, v_dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(v_dataidx, var_1) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_69{v_typeidx : uN, v_elemidx : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.NEW_ELEM`_instr(v_typeidx, v_elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(v_elemidx, var_1) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_70{sx_opt : sx?, v_typeidx : uN, var_0 : free}: + `%%`(`ARRAY.GET`_instr(sx_opt, v_typeidx), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_71{v_typeidx : uN, var_0 : free}: + `%%`(`ARRAY.SET`_instr(v_typeidx), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_72: + `%%`(`ARRAY.LEN`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.61 - def $free_instr{v_typeidx : uN}(`ARRAY.FILL`_instr(v_typeidx)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.55 - def $free_instr{typeidx_1 : uN, typeidx_2 : uN}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-537.51 - def $free_instr{v_typeidx : uN, v_dataidx : uN}(`ARRAY.INIT_DATA`_instr(v_typeidx, v_dataidx)) = $free_typeidx(v_typeidx) +++ $free_dataidx(v_dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:538.1-539.51 - def $free_instr{v_typeidx : uN, v_elemidx : uN}(`ARRAY.INIT_ELEM`_instr(v_typeidx, v_elemidx)) = $free_typeidx(v_typeidx) +++ $free_elemidx(v_elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.41 - def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_73{v_typeidx : uN, var_0 : free}: + `%%`(`ARRAY.FILL`_instr(v_typeidx), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_74{typeidx_1 : uN, typeidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.COPY`_instr(typeidx_1, typeidx_2), var_0 +++ var_1) + -- fun_free_typeidx: `%%`(typeidx_2, var_1) + -- fun_free_typeidx: `%%`(typeidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_75{v_typeidx : uN, v_dataidx : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.INIT_DATA`_instr(v_typeidx, v_dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(v_dataidx, var_1) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_76{v_typeidx : uN, v_elemidx : uN, var_1 : free, var_0 : free}: + `%%`(`ARRAY.INIT_ELEM`_instr(v_typeidx, v_elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(v_elemidx, var_1) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_77: + `%%`(`EXTERN.CONVERT_ANY`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 - def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_78: + `%%`(`ANY.CONVERT_EXTERN`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 - def $free_instr{v_localidx : uN}(`LOCAL.GET`_instr(v_localidx)) = $free_localidx(v_localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 - def $free_instr{v_localidx : uN}(`LOCAL.SET`_instr(v_localidx)) = $free_localidx(v_localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.63 - def $free_instr{v_localidx : uN}(`LOCAL.TEE`_instr(v_localidx)) = $free_localidx(v_localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.67 - def $free_instr{v_globalidx : uN}(`GLOBAL.GET`_instr(v_globalidx)) = $free_globalidx(v_globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.67 - def $free_instr{v_globalidx : uN}(`GLOBAL.SET`_instr(v_globalidx)) = $free_globalidx(v_globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:551.1-551.63 - def $free_instr{v_tableidx : uN}(`TABLE.GET`_instr(v_tableidx)) = $free_tableidx(v_tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.63 - def $free_instr{v_tableidx : uN}(`TABLE.SET`_instr(v_tableidx)) = $free_tableidx(v_tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.64 - def $free_instr{v_tableidx : uN}(`TABLE.SIZE`_instr(v_tableidx)) = $free_tableidx(v_tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-554.64 - def $free_instr{v_tableidx : uN}(`TABLE.GROW`_instr(v_tableidx)) = $free_tableidx(v_tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.64 - def $free_instr{v_tableidx : uN}(`TABLE.FILL`_instr(v_tableidx)) = $free_tableidx(v_tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.59 - def $free_instr{tableidx_1 : uN, tableidx_2 : uN}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.53 - def $free_instr{v_tableidx : uN, v_elemidx : uN}(`TABLE.INIT`_instr(v_tableidx, v_elemidx)) = $free_tableidx(v_tableidx) +++ $free_elemidx(v_elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-560.60 - def $free_instr{v_elemidx : uN}(`ELEM.DROP`_instr(v_elemidx)) = $free_elemidx(v_elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-563.49 - def $free_instr{v_numtype : numtype, loadop_opt : loadop_?, v_memidx : uN, v_memarg : memarg}(LOAD_instr(v_numtype, loadop_opt, v_memidx, v_memarg)) = $free_numtype(v_numtype) +++ $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-565.49 - def $free_instr{v_numtype : numtype, storeop_opt : storeop_?, v_memidx : uN, v_memarg : memarg}(STORE_instr(v_numtype, storeop_opt, v_memidx, v_memarg)) = $free_numtype(v_numtype) +++ $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-567.49 - def $free_instr{v_vectype : vectype, vloadop_opt : vloadop_?, v_memidx : uN, v_memarg : memarg}(VLOAD_instr(v_vectype, vloadop_opt, v_memidx, v_memarg)) = $free_vectype(v_vectype) +++ $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:568.1-569.49 - def $free_instr{v_vectype : vectype, v_sz : sz, v_memidx : uN, v_memarg : memarg, v_laneidx : uN}(VLOAD_LANE_instr(v_vectype, v_sz, v_memidx, v_memarg, v_laneidx)) = $free_vectype(v_vectype) +++ $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:570.1-571.49 - def $free_instr{v_vectype : vectype, v_memidx : uN, v_memarg : memarg}(VSTORE_instr(v_vectype, v_memidx, v_memarg)) = $free_vectype(v_vectype) +++ $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-573.49 - def $free_instr{v_vectype : vectype, v_sz : sz, v_memidx : uN, v_memarg : memarg, v_laneidx : uN}(VSTORE_LANE_instr(v_vectype, v_sz, v_memidx, v_memarg, v_laneidx)) = $free_vectype(v_vectype) +++ $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.59 - def $free_instr{v_memidx : uN}(`MEMORY.SIZE`_instr(v_memidx)) = $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.59 - def $free_instr{v_memidx : uN}(`MEMORY.GROW`_instr(v_memidx)) = $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:576.1-576.59 - def $free_instr{v_memidx : uN}(`MEMORY.FILL`_instr(v_memidx)) = $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.51 - def $free_instr{memidx_1 : uN, memidx_2 : uN}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-580.49 - def $free_instr{v_memidx : uN, v_dataidx : uN}(`MEMORY.INIT`_instr(v_memidx, v_dataidx)) = $free_memidx(v_memidx) +++ $free_dataidx(v_dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:581.1-581.60 - def $free_instr{v_dataidx : uN}(`DATA.DROP`_instr(v_dataidx)) = $free_dataidx(v_dataidx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.1-421.31 -def $free_block(var_0 : instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:589.1-590.47 - def $free_block{instr_lst : instr*, v_free : free}(instr_lst) = v_free[LABELS_free = $shift_labelidxs(v_free.LABELS_free)] + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_79{v_localidx : uN, var_0 : free}: + `%%`(`LOCAL.GET`_instr(v_localidx), var_0) + -- fun_free_localidx: `%%`(v_localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_80{v_localidx : uN, var_0 : free}: + `%%`(`LOCAL.SET`_instr(v_localidx), var_0) + -- fun_free_localidx: `%%`(v_localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_81{v_localidx : uN, var_0 : free}: + `%%`(`LOCAL.TEE`_instr(v_localidx), var_0) + -- fun_free_localidx: `%%`(v_localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_82{v_globalidx : uN, var_0 : free}: + `%%`(`GLOBAL.GET`_instr(v_globalidx), var_0) + -- fun_free_globalidx: `%%`(v_globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_83{v_globalidx : uN, var_0 : free}: + `%%`(`GLOBAL.SET`_instr(v_globalidx), var_0) + -- fun_free_globalidx: `%%`(v_globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_84{v_tableidx : uN, var_0 : free}: + `%%`(`TABLE.GET`_instr(v_tableidx), var_0) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_85{v_tableidx : uN, var_0 : free}: + `%%`(`TABLE.SET`_instr(v_tableidx), var_0) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_86{v_tableidx : uN, var_0 : free}: + `%%`(`TABLE.SIZE`_instr(v_tableidx), var_0) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_87{v_tableidx : uN, var_0 : free}: + `%%`(`TABLE.GROW`_instr(v_tableidx), var_0) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_88{v_tableidx : uN, var_0 : free}: + `%%`(`TABLE.FILL`_instr(v_tableidx), var_0) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_89{tableidx_1 : uN, tableidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(`TABLE.COPY`_instr(tableidx_1, tableidx_2), var_0 +++ var_1) + -- fun_free_tableidx: `%%`(tableidx_2, var_1) + -- fun_free_tableidx: `%%`(tableidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_90{v_tableidx : uN, v_elemidx : uN, var_1 : free, var_0 : free}: + `%%`(`TABLE.INIT`_instr(v_tableidx, v_elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(v_elemidx, var_1) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_91{v_elemidx : uN, var_0 : free}: + `%%`(`ELEM.DROP`_instr(v_elemidx), var_0) + -- fun_free_elemidx: `%%`(v_elemidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_92{v_numtype : numtype, loadop_opt : loadop_?, v_memidx : uN, v_memarg : memarg, var_1 : free, var_0 : free}: + `%%`(LOAD_instr(v_numtype, loadop_opt, v_memidx, v_memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(v_memidx, var_1) + -- fun_free_numtype: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_93{v_numtype : numtype, storeop_opt : storeop_?, v_memidx : uN, v_memarg : memarg, var_1 : free, var_0 : free}: + `%%`(STORE_instr(v_numtype, storeop_opt, v_memidx, v_memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(v_memidx, var_1) + -- fun_free_numtype: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_94{v_vectype : vectype, vloadop_opt : vloadop_?, v_memidx : uN, v_memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VLOAD_instr(v_vectype, vloadop_opt, v_memidx, v_memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(v_memidx, var_1) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_95{v_vectype : vectype, v_sz : sz, v_memidx : uN, v_memarg : memarg, v_laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VLOAD_LANE_instr(v_vectype, v_sz, v_memidx, v_memarg, v_laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(v_memidx, var_1) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_96{v_vectype : vectype, v_memidx : uN, v_memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VSTORE_instr(v_vectype, v_memidx, v_memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(v_memidx, var_1) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_97{v_vectype : vectype, v_sz : sz, v_memidx : uN, v_memarg : memarg, v_laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VSTORE_LANE_instr(v_vectype, v_sz, v_memidx, v_memarg, v_laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(v_memidx, var_1) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_98{v_memidx : uN, var_0 : free}: + `%%`(`MEMORY.SIZE`_instr(v_memidx), var_0) + -- fun_free_memidx: `%%`(v_memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_99{v_memidx : uN, var_0 : free}: + `%%`(`MEMORY.GROW`_instr(v_memidx), var_0) + -- fun_free_memidx: `%%`(v_memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_100{v_memidx : uN, var_0 : free}: + `%%`(`MEMORY.FILL`_instr(v_memidx), var_0) + -- fun_free_memidx: `%%`(v_memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_101{memidx_1 : uN, memidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(`MEMORY.COPY`_instr(memidx_1, memidx_2), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx_2, var_1) + -- fun_free_memidx: `%%`(memidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_102{v_memidx : uN, v_dataidx : uN, var_1 : free, var_0 : free}: + `%%`(`MEMORY.INIT`_instr(v_memidx, v_dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(v_dataidx, var_1) + -- fun_free_memidx: `%%`(v_memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_103{v_dataidx : uN, var_0 : free}: + `%%`(`DATA.DROP`_instr(v_dataidx), var_0) + -- fun_free_dataidx: `%%`(v_dataidx, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation fun_free_block: `%%`(instr*, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule fun_free_block_case_0{instr_lst : instr*, v_free : free, var_2_lst : free*, var_1 : free, var_0 : labelidx*}: + `%%`(instr_lst, v_free[LABELS_free = var_0]) + -- if (|var_2_lst| = |instr_lst|) + -- (fun_free_instr: `%%`(instr#5, var_2))*{var_2 <- var_2_lst, instr#5 <- instr_lst} + -- fun_free_list: `%%`(var_2_lst, var_1) + -- fun_shift_labelidxs: `%%`(v_free.LABELS_free, var_0) -- wf_free: `%`(v_free) - -- if (v_free = $free_list($free_instr(instr#5)*{instr#5 <- instr_lst})) + -- if (v_free = var_1) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_expr(v_expr : expr) : free +relation fun_free_expr: `%%`(expr, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_expr{instr_lst : instr*}(instr_lst) = $free_list($free_instr(v_instr)*{v_instr <- instr_lst}) + rule fun_free_expr_case_0{instr_lst : instr*, var_1_lst : free*, var_0 : free}: + `%%`(instr_lst, var_0) + -- if (|var_1_lst| = |instr_lst|) + -- (fun_free_instr: `%%`(v_instr, var_1))*{var_1 <- var_1_lst, v_instr <- instr_lst} + -- fun_free_list: `%%`(var_1_lst, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = @@ -5067,98 +6298,184 @@ relation wf_module: `%`(module) -- (wf_start: `%`(v_start))?{v_start <- start_opt} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_type(v_type : type) : free +relation fun_free_type: `%%`(type, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_type{v_rectype : rectype}(TYPE_type(v_rectype)) = $free_rectype(v_rectype) + rule fun_free_type_case_0{v_rectype : rectype, var_0 : free}: + `%%`(TYPE_type(v_rectype), var_0) + -- fun_free_rectype: `%%`(v_rectype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_tag(v_tag : tag) : free +relation fun_free_tag: `%%`(tag, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_tag{v_tagtype : typeuse}(TAG_tag(v_tagtype)) = $free_tagtype(v_tagtype) + rule fun_free_tag_case_0{v_tagtype : typeuse, var_0 : free}: + `%%`(TAG_tag(v_tagtype), var_0) + -- fun_free_tagtype: `%%`(v_tagtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_global(v_global : global) : free +relation fun_free_global: `%%`(global, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_global{v_globaltype : globaltype, v_expr : instr*}(GLOBAL_global(v_globaltype, v_expr)) = $free_globaltype(v_globaltype) +++ $free_expr(v_expr) + rule fun_free_global_case_0{v_globaltype : globaltype, v_expr : instr*, var_1 : free, var_0 : free}: + `%%`(GLOBAL_global(v_globaltype, v_expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(v_expr, var_1) + -- fun_free_globaltype: `%%`(v_globaltype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_mem(v_mem : mem) : free +relation fun_free_mem: `%%`(mem, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_mem{v_memtype : memtype}(MEMORY_mem(v_memtype)) = $free_memtype(v_memtype) + rule fun_free_mem_case_0{v_memtype : memtype, var_0 : free}: + `%%`(MEMORY_mem(v_memtype), var_0) + -- fun_free_memtype: `%%`(v_memtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_table(v_table : table) : free +relation fun_free_table: `%%`(table, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_table{v_tabletype : tabletype, v_expr : instr*}(TABLE_table(v_tabletype, v_expr)) = $free_tabletype(v_tabletype) +++ $free_expr(v_expr) + rule fun_free_table_case_0{v_tabletype : tabletype, v_expr : instr*, var_1 : free, var_0 : free}: + `%%`(TABLE_table(v_tabletype, v_expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(v_expr, var_1) + -- fun_free_tabletype: `%%`(v_tabletype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_local(v_local : local) : free +relation fun_free_local: `%%`(local, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) + rule fun_free_local_case_0{t : valtype, var_0 : free}: + `%%`(LOCAL_local(t), var_0) + -- fun_free_valtype: `%%`(t, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_func(v_func : func) : free +relation fun_free_func: `%%`(func, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_func{v_typeidx : uN, local_lst : local*, v_expr : instr*}(FUNC_func(v_typeidx, local_lst, v_expr)) = $free_typeidx(v_typeidx) +++ $free_list($free_local(v_local)*{v_local <- local_lst}) +++ $free_block(v_expr)[LOCALS_free = []] + rule fun_free_func_case_0{v_typeidx : uN, local_lst : local*, v_expr : instr*, var_3 : free, var_2_lst : free*, var_1 : free, var_0 : free}: + `%%`(FUNC_func(v_typeidx, local_lst, v_expr), var_0 +++ var_1 +++ var_3[LOCALS_free = []]) + -- fun_free_block: `%%`(v_expr, var_3) + -- if (|var_2_lst| = |local_lst|) + -- (fun_free_local: `%%`(v_local, var_2))*{var_2 <- var_2_lst, v_local <- local_lst} + -- fun_free_list: `%%`(var_2_lst, var_1) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_datamode(v_datamode : datamode) : free +relation fun_free_datamode: `%%`(datamode, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode{v_memidx : uN, v_expr : instr*}(ACTIVE_datamode(v_memidx, v_expr)) = $free_memidx(v_memidx) +++ $free_expr(v_expr) + rule fun_free_datamode_case_0{v_memidx : uN, v_expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_datamode(v_memidx, v_expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(v_expr, var_1) + -- fun_free_memidx: `%%`(v_memidx, var_0) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_datamode_case_1: + `%%`(PASSIVE_datamode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_data(v_data : data) : free +relation fun_free_data: `%%`(data, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_data{byte_lst : byte*, v_datamode : datamode}(DATA_data(byte_lst, v_datamode)) = $free_datamode(v_datamode) + rule fun_free_data_case_0{byte_lst : byte*, v_datamode : datamode, var_0 : free}: + `%%`(DATA_data(byte_lst, v_datamode), var_0) + -- fun_free_datamode: `%%`(v_datamode, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_elemmode(v_elemmode : elemmode) : free +relation fun_free_elemmode: `%%`(elemmode, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode{v_tableidx : uN, v_expr : instr*}(ACTIVE_elemmode(v_tableidx, v_expr)) = $free_tableidx(v_tableidx) +++ $free_expr(v_expr) + rule fun_free_elemmode_case_0{v_tableidx : uN, v_expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_elemmode(v_tableidx, v_expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(v_expr, var_1) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_elemmode_case_1: + `%%`(PASSIVE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + rule fun_free_elemmode_case_2: + `%%`(DECLARE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_elem(v_elem : elem) : free +relation fun_free_elem: `%%`(elem, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elem{v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode}(ELEM_elem(v_reftype, expr_lst, v_elemmode)) = $free_reftype(v_reftype) +++ $free_list($free_expr(v_expr)*{v_expr <- expr_lst}) +++ $free_elemmode(v_elemmode) + rule fun_free_elem_case_0{v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode, var_3 : free, var_2_lst : free*, var_1 : free, var_0 : free}: + `%%`(ELEM_elem(v_reftype, expr_lst, v_elemmode), var_0 +++ var_1 +++ var_3) + -- fun_free_elemmode: `%%`(v_elemmode, var_3) + -- if (|var_2_lst| = |expr_lst|) + -- (fun_free_expr: `%%`(v_expr, var_2))*{var_2 <- var_2_lst, v_expr <- expr_lst} + -- fun_free_list: `%%`(var_2_lst, var_1) + -- fun_free_reftype: `%%`(v_reftype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_start(v_start : start) : free +relation fun_free_start: `%%`(start, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_start{v_funcidx : uN}(START_start(v_funcidx)) = $free_funcidx(v_funcidx) + rule fun_free_start_case_0{v_funcidx : uN, var_0 : free}: + `%%`(START_start(v_funcidx), var_0) + -- fun_free_funcidx: `%%`(v_funcidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_import(v_import : import) : free +relation fun_free_import: `%%`(import, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_import{name_1 : name, name_2 : name, v_externtype : externtype}(IMPORT_import(name_1, name_2, v_externtype)) = $free_externtype(v_externtype) + rule fun_free_import_case_0{name_1 : name, name_2 : name, v_externtype : externtype, var_0 : free}: + `%%`(IMPORT_import(name_1, name_2, v_externtype), var_0) + -- fun_free_externtype: `%%`(v_externtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_export(v_export : export) : free +relation fun_free_export: `%%`(export, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_export{v_name : name, v_externidx : externidx}(EXPORT_export(v_name, v_externidx)) = $free_externidx(v_externidx) + rule fun_free_export_case_0{v_name : name, v_externidx : externidx, var_0 : free}: + `%%`(EXPORT_export(v_name, v_externidx), var_0) + -- fun_free_externidx: `%%`(v_externidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_module(v_module : module) : free +relation fun_free_module: `%%`(module, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_module{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*}(MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst))) = $free_list($free_type(v_type)*{v_type <- type_lst}) +++ $free_list($free_tag(v_tag)*{v_tag <- tag_lst}) +++ $free_list($free_global(v_global)*{v_global <- global_lst}) +++ $free_list($free_mem(v_mem)*{v_mem <- mem_lst}) +++ $free_list($free_table(v_table)*{v_table <- table_lst}) +++ $free_list($free_func(v_func)*{v_func <- func_lst}) +++ $free_list($free_data(v_data)*{v_data <- data_lst}) +++ $free_list($free_elem(v_elem)*{v_elem <- elem_lst}) +++ $free_opt($free_start(v_start)?{v_start <- start_opt}) +++ $free_list($free_import(v_import)*{v_import <- import_lst}) +++ $free_list($free_export(v_export)*{v_export <- export_lst}) + rule fun_free_module_case_0{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, var_21_lst : free*, var_20 : free, var_19_lst : free*, var_18 : free, var_17_opt : free?, var_16 : free, var_15_lst : free*, var_14 : free, var_13_lst : free*, var_12 : free, var_11_lst : free*, var_10 : free, var_9_lst : free*, var_8 : free, var_7_lst : free*, var_6 : free, var_5_lst : free*, var_4 : free, var_3_lst : free*, var_2 : free, var_1_lst : free*, var_0 : free}: + `%%`(MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst)), var_0 +++ var_2 +++ var_4 +++ var_6 +++ var_8 +++ var_10 +++ var_12 +++ var_14 +++ var_16 +++ var_18 +++ var_20) + -- if (|var_21_lst| = |export_lst|) + -- (fun_free_export: `%%`(v_export, var_21))*{var_21 <- var_21_lst, v_export <- export_lst} + -- fun_free_list: `%%`(var_21_lst, var_20) + -- if (|var_19_lst| = |import_lst|) + -- (fun_free_import: `%%`(v_import, var_19))*{var_19 <- var_19_lst, v_import <- import_lst} + -- fun_free_list: `%%`(var_19_lst, var_18) + -- if ((var_17_opt = ?()) <=> (start_opt = ?())) + -- (fun_free_start: `%%`(v_start, var_17))?{var_17 <- var_17_opt, v_start <- start_opt} + -- fun_free_opt: `%%`(var_17_opt, var_16) + -- if (|var_15_lst| = |elem_lst|) + -- (fun_free_elem: `%%`(v_elem, var_15))*{var_15 <- var_15_lst, v_elem <- elem_lst} + -- fun_free_list: `%%`(var_15_lst, var_14) + -- if (|var_13_lst| = |data_lst|) + -- (fun_free_data: `%%`(v_data, var_13))*{var_13 <- var_13_lst, v_data <- data_lst} + -- fun_free_list: `%%`(var_13_lst, var_12) + -- if (|var_11_lst| = |func_lst|) + -- (fun_free_func: `%%`(v_func, var_11))*{var_11 <- var_11_lst, v_func <- func_lst} + -- fun_free_list: `%%`(var_11_lst, var_10) + -- if (|var_9_lst| = |table_lst|) + -- (fun_free_table: `%%`(v_table, var_9))*{var_9 <- var_9_lst, v_table <- table_lst} + -- fun_free_list: `%%`(var_9_lst, var_8) + -- if (|var_7_lst| = |mem_lst|) + -- (fun_free_mem: `%%`(v_mem, var_7))*{var_7 <- var_7_lst, v_mem <- mem_lst} + -- fun_free_list: `%%`(var_7_lst, var_6) + -- if (|var_5_lst| = |global_lst|) + -- (fun_free_global: `%%`(v_global, var_5))*{var_5 <- var_5_lst, v_global <- global_lst} + -- fun_free_list: `%%`(var_5_lst, var_4) + -- if (|var_3_lst| = |tag_lst|) + -- (fun_free_tag: `%%`(v_tag, var_3))*{var_3 <- var_3_lst, v_tag <- tag_lst} + -- fun_free_list: `%%`(var_3_lst, var_2) + -- if (|var_1_lst| = |type_lst|) + -- (fun_free_type: `%%`(v_type, var_1))*{var_1 <- var_1_lst, v_type <- type_lst} + -- fun_free_list: `%%`(var_1_lst, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $funcidx_module(v_module : module) : funcidx* +relation fun_funcidx_module: `%%`(module, funcidx*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $funcidx_module{v_module : module}(v_module) = $free_module(v_module).FUNCS_free + rule fun_funcidx_module_case_0{v_module : module, var_0 : free}: + `%%`(v_module, var_0.FUNCS_free) + -- fun_free_module: `%%`(v_module, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $dataidx_funcs(var_0 : func*) : dataidx* +relation fun_dataidx_funcs: `%%`(func*, dataidx*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $dataidx_funcs{func_lst : func*}(func_lst) = $free_list($free_func(v_func)*{v_func <- func_lst}).DATAS_free + rule fun_dataidx_funcs_case_0{func_lst : func*, var_1_lst : free*, var_0 : free}: + `%%`(func_lst, var_0.DATAS_free) + -- if (|var_1_lst| = |func_lst|) + -- (fun_free_func: `%%`(v_func, var_1))*{var_1 <- var_1_lst, v_func <- func_lst} + -- fun_free_list: `%%`(var_1_lst, var_0) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax init = @@ -5219,60 +6536,97 @@ relation wf_context: `%`(context) -- (wf_uN: `%%`(32, var_11))*{var_11 <- var_11} -- (wf_subtype: `%`(var_12))*{var_12 <- var_12} +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_with_locals_before_fun_with_locals_case_2: `%%%`(context, localidx*, localtype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_with_locals_case_1{C : context, x_1 : uN, x_lst : idx*, lct_1 : localtype, lct_lst : localtype*, var_0 : context?}: + `%%%`(C, [x_1] ++ x_lst, [lct_1] ++ lct_lst) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_with_locals_case_0{C : context}: + `%%%`(C, [], []) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.158 -def $with_locals(v_context : context, var_0 : localidx*, var_1 : localtype*) : context? - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.34 - def $with_locals{C : context}(C, [], []) = ?(C) - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:52.1-52.90 - def $with_locals{C : context, x_1 : uN, x_lst : idx*, lct_1 : localtype, lct_lst : localtype*}(C, [x_1] ++ x_lst, [lct_1] ++ lct_lst) = $with_locals(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x_lst, lct_lst) - def $with_locals{x0 : context, x1 : localidx*, x2 : localtype*}(x0, x1, x2) = ?() - -- otherwise +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation fun_with_locals: `%%%%`(context, localidx*, localtype*, context?) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_0{C : context}: + `%%%%`(C, [], [], ?(C)) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_1{C : context, x_1 : uN, x_lst : idx*, lct_1 : localtype, lct_lst : localtype*, var_0 : context?}: + `%%%%`(C, [x_1] ++ x_lst, [lct_1] ++ lct_lst, var_0) + -- fun_with_locals: `%%%%`(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x_lst, lct_lst, var_0) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_2{x0 : context, x1 : localidx*, x2 : localtype*}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_with_locals_before_fun_with_locals_case_2: `%%%`(x0, x1, x2) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 -def $clos_deftypes(var_0 : deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 - def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:72.1-72.101 - def $clos_deftypes{dt_lst : deftype*, dt_n : deftype, dt'_lst : deftype*}(dt_lst ++ [dt_n]) = dt'_lst ++ [$subst_all_deftype(dt_n, $typeuse_deftype(dt')*{dt' <- dt'_lst})] - -- if (dt'_lst = $clos_deftypes(dt_lst)) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 +relation fun_clos_deftypes: `%%`(deftype*, deftype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 + rule fun_clos_deftypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 + rule fun_clos_deftypes_case_1{dt_lst : deftype*, dt_n : deftype, dt'_lst : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%`(dt_lst ++ [dt_n], dt'_lst ++ [var_0]) + -- fun_clos_deftypes: `%%`(dt_lst, var_1) + -- fun_subst_all_deftype: `%%%`(dt_n, $typeuse_deftype(dt')*{dt' <- dt'_lst}, var_0) + -- if (dt'_lst = var_1) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_valtype(v_context : context, v_valtype : valtype) : valtype +relation fun_clos_valtype: `%%%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_valtype{C : context, t : valtype, dt_lst : deftype*}(C, t) = $subst_all_valtype(t, $typeuse_deftype(dt)*{dt <- dt_lst}) - -- if (dt_lst = $clos_deftypes(C.TYPES_context)) + rule fun_clos_valtype_case_0{C : context, t : valtype, dt_lst : deftype*, var_1 : deftype*, var_0 : valtype}: + `%%%`(C, t, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) + -- if (dt_lst = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_deftype(v_context : context, v_deftype : deftype) : deftype +relation fun_clos_deftype: `%%%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_deftype{C : context, dt : deftype, dt'_lst : deftype*}(C, dt) = $subst_all_deftype(dt, $typeuse_deftype(dt')*{dt' <- dt'_lst}) - -- if (dt'_lst = $clos_deftypes(C.TYPES_context)) + rule fun_clos_deftype_case_0{C : context, dt : deftype, dt'_lst : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%%`(C, dt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_deftype: `%%%`(dt, $typeuse_deftype(dt')*{dt' <- dt'_lst}, var_0) + -- if (dt'_lst = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_tagtype(v_context : context, v_tagtype : tagtype) : tagtype +relation fun_clos_tagtype: `%%%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_tagtype{C : context, jt : typeuse, dt_lst : deftype*}(C, jt) = $subst_all_tagtype(jt, $typeuse_deftype(dt)*{dt <- dt_lst}) - -- if (dt_lst = $clos_deftypes(C.TYPES_context)) + rule fun_clos_tagtype_case_0{C : context, jt : typeuse, dt_lst : deftype*, var_1 : deftype*, var_0 : tagtype}: + `%%%`(C, jt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_tagtype: `%%%`(jt, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) + -- if (dt_lst = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_externtype(v_context : context, v_externtype : externtype) : externtype +relation fun_clos_externtype: `%%%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_externtype{C : context, xt : externtype, dt_lst : deftype*}(C, xt) = $subst_all_externtype(xt, $typeuse_deftype(dt)*{dt <- dt_lst}) - -- if (dt_lst = $clos_deftypes(C.TYPES_context)) + rule fun_clos_externtype_case_0{C : context, xt : externtype, dt_lst : deftype*, var_1 : deftype*, var_0 : externtype}: + `%%%`(C, xt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_externtype: `%%%`(xt, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) + -- if (dt_lst = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_moduletype(v_context : context, v_moduletype : moduletype) : moduletype +relation fun_clos_moduletype: `%%%`(context, moduletype, moduletype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_moduletype{C : context, mmt : moduletype, dt_lst : deftype*}(C, mmt) = $subst_all_moduletype(mmt, $typeuse_deftype(dt)*{dt <- dt_lst}) - -- if (dt_lst = $clos_deftypes(C.TYPES_context)) + rule fun_clos_moduletype_case_0{C : context, mmt : moduletype, dt_lst : deftype*, var_1 : deftype*, var_0 : moduletype}: + `%%%`(C, mmt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_moduletype: `%%%`(mmt, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) + -- if (dt_lst = var_1) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -5316,10 +6670,11 @@ relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule mk_Expand{v_deftype : deftype, v_comptype : comptype, final_opt : final?, typeuse_lst : typeuse*}: + rule mk_Expand{v_deftype : deftype, v_comptype : comptype, final_opt : final?, typeuse_lst : typeuse*, var_0 : subtype}: `%~~%`(v_deftype, v_comptype) -- wf_subtype: `%`(SUB_subtype(final_opt, typeuse_lst, v_comptype)) - -- if ($unrolldt(v_deftype) = SUB_subtype(final_opt, typeuse_lst, v_comptype)) + -- if (var_0 = SUB_subtype(final_opt, typeuse_lst, v_comptype)) + -- fun_unrolldt: `%%`(v_deftype, var_0) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) @@ -5336,13 +6691,22 @@ def $before(v_typeuse : typeuse, nat : nat) : bool def $before{v_typeuse : typeuse, i : nat}(v_typeuse, i) = true ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -def $unrollht_(v_context : context, v_heaptype : heaptype) : subtype +relation fun_unrollht_: `%%%`(context, heaptype, subtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht_{v_rectype : rectype, v_n : n, C : context}(C, _DEF_heaptype(v_rectype, v_n)) = $unrolldt(_DEF_deftype(v_rectype, v_n)) + rule fun_unrollht__case_0{v_rectype : rectype, v_n : n, C : context, var_0 : subtype}: + `%%%`(C, _DEF_heaptype(v_rectype, v_n), var_0) + -- fun_unrolldt: `%%`(_DEF_deftype(v_rectype, v_n), var_0) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht_{C : context, v_typeidx : uN}(C, _IDX_heaptype(v_typeidx)) = $unrolldt(C.TYPES_context[$proj_uN_0(v_typeidx).0]) + rule fun_unrollht__case_1{C : context, v_typeidx : uN, var_0 : subtype}: + `%%%`(C, _IDX_heaptype(v_typeidx), var_0) + -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) + -- fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(v_typeidx).0], var_0) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht_{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] + rule fun_unrollht__case_2{C : context, i : nat}: + `%%%`(C, REC_heaptype(i), C.RECS_context[i]) + -- if (i < |C.RECS_context|) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -5488,7 +6852,7 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:167.1-176.49 - rule mk_Subtype_ok2{C : context, typeuse_lst : typeuse*, v_comptype : comptype, i : nat, comptype'_lst : comptype*, typeuse'_lst_lst : typeuse**}: + rule mk_Subtype_ok2{C : context, typeuse_lst : typeuse*, v_comptype : comptype, i : nat, comptype'_lst : comptype*, typeuse'_lst_lst : typeuse**, var_0_lst : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse_lst, v_comptype), OK_oktypenat(i)) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse_lst, v_comptype)) @@ -5497,10 +6861,13 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) -- if (|typeuse_lst| <= 1) -- (Typeuse_ok: `%|-%:OK`(C, v_typeuse))*{v_typeuse <- typeuse_lst} -- (if $before(v_typeuse, i))*{v_typeuse <- typeuse_lst} - -- if (|comptype'_lst| = |typeuse_lst|) - -- (if ($unrollht_(C, $heaptype_typeuse(v_typeuse)) = SUB_subtype(?(), typeuse'_lst, comptype')))*{comptype' <- comptype'_lst, v_typeuse <- typeuse_lst, typeuse'_lst <- typeuse'_lst_lst} + -- if (|var_0_lst| = |comptype'_lst|) + -- if (|var_0_lst| = |typeuse'_lst_lst|) + -- (if (var_0 = SUB_subtype(?(), typeuse'_lst, comptype')))*{var_0 <- var_0_lst, comptype' <- comptype'_lst, typeuse'_lst <- typeuse'_lst_lst} -- Comptype_ok: `%|-%:OK`(C, v_comptype) -- (Comptype_sub: `%|-%<:%`(C, v_comptype, comptype'))*{comptype' <- comptype'_lst} + -- if (|var_0_lst| = |typeuse_lst|) + -- (fun_unrollht_: `%%%`(C, $heaptype_typeuse(v_typeuse), var_0))*{var_0 <- var_0_lst, v_typeuse <- typeuse_lst} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) @@ -5560,19 +6927,22 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 - rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype, var_1 : deftype, var_0 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- wf_context: `%`(C) - -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) + -- if (var_0 = var_1) + -- fun_clos_deftype: `%%%`(C, deftype_2, var_1) + -- fun_clos_deftype: `%%%`(C, deftype_1, var_0) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 - rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, final_opt : final?, typeuse_lst : typeuse*, ct : comptype, i : nat}: + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, final_opt : final?, typeuse_lst : typeuse*, ct : comptype, i : nat, var_0 : subtype}: `%|-%<:%`(C, deftype_1, deftype_2) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(final_opt, typeuse_lst, ct)) - -- if ($unrolldt(deftype_1) = SUB_subtype(final_opt, typeuse_lst, ct)) + -- if (var_0 = SUB_subtype(final_opt, typeuse_lst, ct)) -- if (i < |typeuse_lst|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse_lst[i]), $heaptype_deftype(deftype_2)) + -- fun_unrolldt: `%%`(deftype_1, var_0) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) @@ -5909,7 +7279,7 @@ relation wf_oktypeidx: `%`(oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule mk_Subtype_ok{C : context, x_lst : idx*, v_comptype : comptype, x_0 : idx, comptype'_lst : comptype*, yy_lst_lst : typeuse**}: + rule mk_Subtype_ok{C : context, x_lst : idx*, v_comptype : comptype, x_0 : idx, comptype'_lst : comptype*, yy_lst_lst : typeuse**, var_0_lst : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- x_lst}, v_comptype), OK_oktypeidx(x_0)) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- x_lst}, v_comptype)) @@ -5918,11 +7288,14 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- (wf_subtype: `%`(SUB_subtype(?(), yy_lst, comptype')))*{comptype' <- comptype'_lst, yy_lst <- yy_lst_lst} -- if (|x_lst| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- x_lst} - -- if (|comptype'_lst| = |x_lst|) - -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- x_lst} - -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), yy_lst, comptype')))*{comptype' <- comptype'_lst, x <- x_lst, yy_lst <- yy_lst_lst} + -- if (|var_0_lst| = |comptype'_lst|) + -- if (|var_0_lst| = |yy_lst_lst|) + -- (if (var_0 = SUB_subtype(?(), yy_lst, comptype')))*{var_0 <- var_0_lst, comptype' <- comptype'_lst, yy_lst <- yy_lst_lst} -- Comptype_ok: `%|-%:OK`(C, v_comptype) -- (Comptype_sub: `%|-%<:%`(C, v_comptype, comptype'))*{comptype' <- comptype'_lst} + -- if (|var_0_lst| = |x_lst|) + -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- x_lst} + -- (fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(x).0], var_0))*{var_0 <- var_0_lst, x <- x_lst} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -6186,28 +7559,30 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch{C : context, x : idx, l : labelidx, t_lst : valtype*}: + rule catch{C : context, x : idx, l : labelidx, t_lst : valtype*, var_0 : deftype?}: `%|-%:OK`(C, CATCH_catch(x, l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) - -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) + -- if (var_0 =/= ?()) + -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_lst), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch_ref{C : context, x : idx, l : labelidx, t_lst : valtype*}: + rule catch_ref{C : context, x : idx, l : labelidx, t_lst : valtype*, var_0 : deftype?}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) - -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) + -- if (var_0 =/= ?()) + -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_lst ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: @@ -6226,38 +7601,95 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec -def $default_(v_valtype : valtype) : val?? +relation fun_default__before_fun_default__case_7: `%`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(I32_valtype) = ?(?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0))))) + rule fun_default__case_6{ht : heaptype}: + `%`(REF_valtype(?(), ht)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_5{ht : heaptype}: + `%`(REF_valtype(?(NULL_null), ht)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_4: + `%`(V128_valtype) + -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_3{var_0 : fN}: + `%`(F64_valtype) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_2{var_0 : fN}: + `%`(F32_valtype) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_1: + `%`(I64_valtype) + -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_0: + `%`(I32_valtype) + -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation fun_default_: `%%`(valtype, val??) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_0: + `%%`(I32_valtype, ?(?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))))) -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(I64_valtype) = ?(?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0))))) + rule fun_default__case_1: + `%%`(I64_valtype, ?(?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))))) -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(F32_valtype) = ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) + rule fun_default__case_2{var_0 : fN}: + `%%`(F32_valtype, ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(F64_valtype) = ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) + rule fun_default__case_3{var_0 : fN}: + `%%`(F64_valtype, ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(V128_valtype) = ?(?(VCONST_val(V128_vectype, `%`_vec_(0)))) + rule fun_default__case_4: + `%%`(V128_valtype, ?(?(VCONST_val(V128_vectype, `%`_vec_(0))))) -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) + rule fun_default__case_5{ht : heaptype}: + `%%`(REF_valtype(?(NULL_null), ht), ?(?(`REF.NULL_ADDR`_val))) -- wf_val: `%`(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) - def $default_{x0 : valtype}(x0) = ?() - -- otherwise + rule fun_default__case_6{ht : heaptype}: + `%%`(REF_valtype(?(), ht), ?(?())) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_7{x0 : valtype}: + `%%`(x0, ?()) + -- ~ fun_default__before_fun_default__case_7: `%`(x0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule mk_Defaultable{t : valtype}: + rule mk_Defaultable{t : valtype, var_0 : val??}: `|-%DEFAULTABLE`(t) -- wf_valtype: `%`(t) - -- if ($default_(t) =/= ?()) - -- if (!($default_(t)) =/= ?()) + -- if (var_0 =/= ?()) + -- if (!(var_0) =/= ?()) + -- fun_default_: `%%`(t, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) @@ -6269,9 +7701,11 @@ relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) -- if (v_m < (2 ^ $size($numtype_addrtype(at)))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -def $is_packtype(v_storagetype : storagetype) : bool +relation fun_is_packtype: `%%`(storagetype, bool) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - def $is_packtype{zt : storagetype}(zt) = (zt =/= $storagetype_valtype($unpack(zt))) + rule fun_is_packtype_case_0{zt : storagetype, var_0 : valtype}: + `%%`(zt, (zt =/= $storagetype_valtype(var_0))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rec { @@ -6408,21 +7842,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 - rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, t_lst : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t_lst ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, t_lst : valtype*, rt : reftype, var_0 : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t_lst ++ [$valtype_reftype(var_0)]))) -- wf_context: `%`(C) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t_lst ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t_lst ++ [$valtype_reftype(var_0)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t_lst ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 - rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, t_lst : valtype*, rt : reftype}: + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, t_lst : valtype*, rt : reftype, var_0 : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t_lst ++ [$valtype_reftype(rt_2)]))) -- wf_context: `%`(C) -- wf_reftype: `%`(rt) @@ -6433,7 +7868,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + -- Reftype_sub: `%|-%<:%`(C, var_0, rt) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, t_1_lst : valtype*, t_2_lst : valtype*}: @@ -6531,17 +7967,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3_lst), [], `%`_resulttype(t_4_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 - rule throw{C : context, x : idx, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: + rule throw{C : context, x : idx, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*, var_0 : deftype?}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ t_lst), [], `%`_resulttype(t_2_lst))) -- wf_context: `%`(C) -- wf_instr: `%`(THROW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ t_lst), [], `%`_resulttype(t_2_lst))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) + -- if (var_0 =/= ?()) + -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: @@ -6641,17 +8078,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 - rule struct_new{C : context, x : idx, zt_lst : storagetype*, mut_opt_lst : mut?*}: - `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- zt_lst}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule struct_new{C : context, x : idx, zt_lst : storagetype*, mut_opt_lst : mut?*, var_0_lst : valtype*}: + `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype(var_0_lst), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- zt_lst}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(var_0_lst), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- if (|var_0_lst| = |zt_lst|) + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- var_0_lst, zt <- zt_lst} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 - rule struct_new_default{C : context, x : idx, mut_opt_lst : mut?*, zt_lst : storagetype*}: + rule struct_new_default{C : context, x : idx, mut_opt_lst : mut?*, zt_lst : storagetype*, var_0_lst : valtype*}: `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) @@ -6659,47 +8098,53 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) - -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- zt_lst} + -- (Defaultable: `|-%DEFAULTABLE`(var_0))*{var_0 <- var_0_lst} + -- if (|var_0_lst| = |zt_lst|) + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- var_0_lst, zt <- zt_lst} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 - rule struct_get{C : context, sx_opt : sx?, x : idx, i : fieldidx, zt : storagetype, ft_lst : fieldtype*, mut_opt : mut?}: - `%|-%:%`(C, `STRUCT.GET`_instr(sx_opt, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + rule struct_get{C : context, sx_opt : sx?, x : idx, i : fieldidx, zt : storagetype, ft_lst : fieldtype*, mut_opt : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, `STRUCT.GET`_instr(sx_opt, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([var_0]))) -- wf_context: `%`(C) -- wf_instr: `%`(`STRUCT.GET`_instr(sx_opt, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([var_0]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_lst))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut_opt, zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft_lst))) -- if ($proj_uN_0(i).0 < |ft_lst|) -- if (ft_lst[$proj_uN_0(i).0] = `%%`_fieldtype(mut_opt, zt)) - -- if ((sx_opt =/= ?()) <=> $is_packtype(zt)) + -- if ((sx_opt =/= ?()) <=> var_1) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 - rule struct_set{C : context, x : idx, i : fieldidx, zt : storagetype, ft_lst : fieldtype*}: - `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + rule struct_set{C : context, x : idx, i : fieldidx, zt : storagetype, ft_lst : fieldtype*, var_0 : valtype}: + `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_lst))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft_lst))) -- if ($proj_uN_0(i).0 < |ft_lst|) -- if (ft_lst[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 - rule array_new{C : context, x : idx, zt : storagetype, mut_opt : mut?}: - `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule array_new{C : context, x : idx, zt : storagetype, mut_opt : mut?, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([var_0 I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([var_0 I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 - rule array_new_default{C : context, x : idx, mut_opt : mut?, zt : storagetype}: + rule array_new_default{C : context, x : idx, mut_opt : mut?, zt : storagetype, var_0 : valtype}: `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) @@ -6707,17 +8152,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) - -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + -- Defaultable: `|-%DEFAULTABLE`(var_0) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 - rule array_new_fixed{C : context, x : idx, v_n : n, zt : storagetype, mut_opt : mut?}: - `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^v_n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule array_new_fixed{C : context, x : idx, v_n : n, zt : storagetype, mut_opt : mut?, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n)), `%->_%%`_instrtype(`%`_resulttype(var_0^v_n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^v_n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(var_0^v_n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array_new_elem{C : context, x : idx, y : idx, mut_opt : mut?, rt : reftype}: @@ -6732,7 +8179,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 - rule array_new_data{C : context, x : idx, y : idx, mut_opt : mut?, zt : storagetype, v_numtype : numtype, v_vectype : vectype}: + rule array_new_data{C : context, x : idx, y : idx, mut_opt : mut?, zt : storagetype, v_numtype : numtype, v_vectype : vectype, var_0 : valtype}: `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) @@ -6740,30 +8187,34 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) - -- if (($unpack(zt) = $valtype_numtype(v_numtype)) \/ ($unpack(zt) = $valtype_vectype(v_vectype))) + -- if ((var_0 = $valtype_numtype(v_numtype)) \/ (var_0 = $valtype_vectype(v_vectype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 - rule array_get{C : context, sx_opt : sx?, x : idx, zt : storagetype, mut_opt : mut?}: - `%|-%:%`(C, `ARRAY.GET`_instr(sx_opt, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + rule array_get{C : context, sx_opt : sx?, x : idx, zt : storagetype, mut_opt : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.GET`_instr(sx_opt, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([var_0]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.GET`_instr(sx_opt, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([var_0]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) - -- if ((sx_opt =/= ?()) <=> $is_packtype(zt)) + -- if ((sx_opt =/= ?()) <=> var_1) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 - rule array_set{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + rule array_set{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array_len{C : context}: @@ -6773,14 +8224,15 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 - rule array_fill{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + rule array_fill{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array_copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, mut_opt : mut?, zt_2 : storagetype}: @@ -6809,7 +8261,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 - rule array_init_data{C : context, x : idx, y : idx, zt : storagetype, v_numtype : numtype, v_vectype : vectype}: + rule array_init_data{C : context, x : idx, y : idx, zt : storagetype, v_numtype : numtype, v_vectype : vectype, var_0 : valtype}: `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_context: `%`(C) -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) @@ -6817,9 +8269,10 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if (($unpack(zt) = $valtype_numtype(v_numtype)) \/ ($unpack(zt) = $valtype_vectype(v_vectype))) + -- if ((var_0 = $valtype_numtype(v_numtype)) \/ (var_0 = $valtype_vectype(v_vectype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern_convert_any{C : context, null_1_opt : null?, null_2_opt : null?}: @@ -7296,12 +8749,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 - rule vshuffle{C : context, sh : bshape, i_lst : laneidx*}: + rule vshuffle{C : context, sh : bshape, i_lst : laneidx*, var_0 : dim}: `%|-%:%`(C, VSHUFFLE_instr(sh, i_lst), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VSHUFFLE_instr(sh, i_lst)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($fun_dim($proj_bshape_0(sh).0)).0)))*{i <- i_lst} + -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0(var_0).0)))*{i <- i_lst} + -- fun_dim: `%%`($proj_bshape_0(sh).0, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: @@ -7311,20 +8765,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 - rule vextract_lane{C : context, sh : shape, sx_opt : sx?, i : laneidx}: + rule vextract_lane{C : context, sh : shape, sx_opt : sx?, i : laneidx, var_0 : dim}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx_opt, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) -- wf_context: `%`(C) -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx_opt, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) - -- if ($proj_uN_0(i).0 < $proj_dim_0($fun_dim(sh)).0) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) + -- fun_dim: `%%`(sh, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 - rule vreplace_lane{C : context, sh : shape, i : laneidx}: + rule vreplace_lane{C : context, sh : shape, i : laneidx, var_0 : dim}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) -- wf_context: `%`(C) -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) - -- if ($proj_uN_0(i).0 < $proj_dim_0($fun_dim(sh)).0) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) + -- fun_dim: `%%`(sh, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: @@ -7370,7 +8826,7 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 - rule seq{C : context, instr_1 : instr, instr_2_lst : instr*, t_1_lst : valtype*, x_1_lst : idx*, x_2_lst : idx*, t_3_lst : valtype*, t_2_lst : valtype*, init_lst : init*, t_lst : valtype*}: + rule seq{C : context, instr_1 : instr, instr_2_lst : instr*, t_1_lst : valtype*, x_1_lst : idx*, x_2_lst : idx*, t_3_lst : valtype*, t_2_lst : valtype*, init_lst : init*, t_lst : valtype*, var_0 : context?}: `%|-%:%`(C, [instr_1] ++ instr_2_lst, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_1_lst ++ x_2_lst, `%`_resulttype(t_3_lst))) -- wf_context: `%`(C) -- wf_instr: `%`(instr_1) @@ -7385,8 +8841,9 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- if (|init_lst| = |x_1_lst|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- x_1_lst} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst, x_1 <- x_1_lst} - -- if ($with_locals(C, x_1_lst, `%%`_localtype(SET_init, t)*{t <- t_lst}) =/= ?()) - -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1_lst, `%%`_localtype(SET_init, t)*{t <- t_lst})), instr_2_lst, `%->_%%`_instrtype(`%`_resulttype(t_2_lst), x_2_lst, `%`_resulttype(t_3_lst))) + -- if (var_0 =/= ?()) + -- Instrs_ok: `%|-%:%`(!(var_0), instr_2_lst, `%->_%%`_instrtype(`%`_resulttype(t_2_lst), x_2_lst, `%`_resulttype(t_3_lst))) + -- fun_with_locals: `%%%%`(C, x_1_lst, `%%`_localtype(SET_init, t)*{t <- t_lst}, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 rule sub{C : context, instr_lst : instr*, it' : instrtype, it : instrtype}: @@ -7423,11 +8880,12 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule mk_Nondefaultable{t : valtype}: + rule mk_Nondefaultable{t : valtype, var_0 : val??}: `|-%NONDEFAULTABLE`(t) -- wf_valtype: `%`(t) - -- if ($default_(t) =/= ?()) - -- if (!($default_(t)) = ?()) + -- if (var_0 =/= ?()) + -- if (!(var_0) = ?()) + -- fun_default_: `%%`(t, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) @@ -7548,23 +9006,25 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule mk_Type_ok{C : context, v_rectype : rectype, dt_lst : deftype*, x : idx}: + rule mk_Type_ok{C : context, v_rectype : rectype, dt_lst : deftype*, x : idx, var_0 : deftype*}: `%|-%:%`(C, TYPE_type(v_rectype), dt_lst) -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) - -- if (dt_lst = $rolldt(x, v_rectype)) + -- if (dt_lst = var_0) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, v_rectype, OK_oktypeidx(x)) + -- fun_rolldt: `%%%`(x, v_rectype, var_0) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule mk_Tag_ok{C : context, v_tagtype : tagtype}: - `%|-%:%`(C, TAG_tag(v_tagtype), $clos_tagtype(C, v_tagtype)) + rule mk_Tag_ok{C : context, v_tagtype : tagtype, var_0 : tagtype}: + `%|-%:%`(C, TAG_tag(v_tagtype), var_0) -- wf_context: `%`(C) -- wf_tag: `%`(TAG_tag(v_tagtype)) -- Tagtype_ok: `%|-%:OK`(C, v_tagtype) + -- fun_clos_tagtype: `%%%`(C, v_tagtype, var_0) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Global_ok: `%|-%:%`(context, global, globaltype) @@ -7712,11 +9172,12 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule mk_Import_ok{C : context, name_1 : name, name_2 : name, xt : externtype}: - `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + rule mk_Import_ok{C : context, name_1 : name, name_2 : name, xt : externtype, var_0 : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), var_0) -- wf_context: `%`(C) -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) + -- fun_clos_externtype: `%%%`(C, xt, var_0) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Externidx_ok: `%|-%:%`(context, externidx, externtype) @@ -7833,16 +9294,18 @@ relation wf_nonfuncs: `%`(nonfuncs) -- (wf_export: `%`(v_export))*{v_export <- export_lst} ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -def $funcidx_nonfuncs(v_nonfuncs : nonfuncs) : funcidx* +relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - def $funcidx_nonfuncs{global_lst : global*, mem_lst : mem*, table_lst : table*, elem_lst : elem*, start_opt : start?, export_lst : export*}(`%%%%%%`_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst)) = $funcidx_module(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list([]), `%`_list([]), `%`_list(elem_lst), start_opt, `%`_list(export_lst))) + rule fun_funcidx_nonfuncs_case_0{global_lst : global*, mem_lst : mem*, table_lst : table*, elem_lst : elem*, start_opt : start?, export_lst : export*, var_0 : funcidx*}: + `%%`(`%%%%%%`_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst), var_0) + -- fun_funcidx_module: `%%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list([]), `%`_list([]), `%`_list(elem_lst), start_opt, `%`_list(export_lst)), var_0) -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list([]), `%`_list([]), `%`_list(elem_lst), start_opt, `%`_list(export_lst))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule mk_Module_ok{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, C : context, xt_I_lst : externtype*, xt_E_lst : externtype*, dt'_lst : deftype*, C' : context, jt_lst : tagtype*, gt_lst : globaltype*, mt_lst : memtype*, tt_lst : tabletype*, dt_lst : deftype*, ok_lst : datatype*, rt_lst : reftype*, nm_lst : name*, jt_I_lst : tagtype*, mt_I_lst : memtype*, tt_I_lst : tabletype*, gt_I_lst : globaltype*, dt_I_lst : deftype*, x_lst : idx*}: - `|-%:%`(MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst)), $clos_moduletype(C, `%->%`_moduletype(xt_I_lst, xt_E_lst))) + rule mk_Module_ok{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, C : context, xt_I_lst : externtype*, xt_E_lst : externtype*, dt'_lst : deftype*, C' : context, jt_lst : tagtype*, gt_lst : globaltype*, mt_lst : memtype*, tt_lst : tabletype*, dt_lst : deftype*, ok_lst : datatype*, rt_lst : reftype*, nm_lst : name*, jt_I_lst : tagtype*, mt_I_lst : memtype*, tt_I_lst : tabletype*, gt_I_lst : globaltype*, dt_I_lst : deftype*, x_lst : idx*, var_1 : funcidx*, var_0 : moduletype}: + `|-%:%`(MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst)), var_0) -- wf_context: `%`(C) -- wf_context: `%`(C') -- (wf_name: `%`(nm))*{nm <- nm_lst} @@ -7876,12 +9339,14 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if $disjoint_(syntax name, nm_lst) -- if (C = C' +++ {TYPES [], TAGS jt_I_lst ++ jt_lst, GLOBALS gt_lst, MEMS mt_I_lst ++ mt_lst, TABLES tt_I_lst ++ tt_lst, FUNCS [], DATAS ok_lst, ELEMS rt_lst, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- if (C' = {TYPES dt'_lst, TAGS [], GLOBALS gt_I_lst, MEMS [], TABLES [], FUNCS dt_I_lst ++ dt_lst, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x_lst, RECS []}) - -- if (x_lst = $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst))) + -- if (x_lst = var_1) -- if (jt_I_lst = $tagsxt(xt_I_lst)) -- if (gt_I_lst = $globalsxt(xt_I_lst)) -- if (mt_I_lst = $memsxt(xt_I_lst)) -- if (tt_I_lst = $tablesxt(xt_I_lst)) -- if (dt_I_lst = $funcsxt(xt_I_lst)) + -- fun_funcidx_nonfuncs: `%%`(`%%%%%%`_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst), var_1) + -- fun_clos_moduletype: `%%%`(C, `%->%`_moduletype(xt_I_lst, xt_E_lst), var_0) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed2 = @@ -8004,62 +9469,127 @@ def $inv_zbytes_(v_storagetype : storagetype, var_0 : byte*) : lit_ def $inv_cbytes_(v_Cnn : Cnn, var_0 : byte*) : lit_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $signed_(v_N : N, nat : nat) : int +relation fun_signed_: `%%%`(N, nat, int) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $signed_{v_N : nat, i : nat}(v_N, i) = (i : nat <:> int) + rule fun_signed__case_0{v_N : nat, i : nat}: + `%%%`(v_N, i, (i : nat <:> int)) -- if (i < (2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $signed_{v_N : nat, i : nat}(v_N, i) = ((i : nat <:> int) - ((2 ^ v_N) : nat <:> int)) + rule fun_signed__case_1{v_N : nat, i : nat}: + `%%%`(v_N, i, ((i : nat <:> int) - ((2 ^ v_N) : nat <:> int))) -- if (((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ v_N))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inv_signed_(v_N : N, int : int) : nat +relation fun_inv_signed_: `%%%`(N, int, nat) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inv_signed_{v_N : nat, i : int}(v_N, i) = (i : int <:> nat) + rule fun_inv_signed__case_0{v_N : nat, i : int}: + `%%%`(v_N, i, (i : int <:> nat)) -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inv_signed_{v_N : nat, i : int}(v_N, i) = ((i + ((2 ^ v_N) : nat <:> int)) : int <:> nat) + rule fun_inv_signed__case_1{v_N : nat, i : int}: + `%%%`(v_N, i, ((i + ((2 ^ v_N) : nat <:> int)) : int <:> nat)) -- if ((- ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fun_sx(v_storagetype : storagetype) : sx?? +relation fun_sx_before_fun_sx_case_7: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_6: + `%`(I16_storagetype) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_5: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_4: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_2: + `%`(F32_storagetype) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_sx(I32_storagetype) = ?(?()) + rule fun_sx_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_0: + `%`(I32_storagetype) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_sx: `%%`(storagetype, sx??) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_sx(I64_storagetype) = ?(?()) + rule fun_sx_case_0: + `%%`(I32_storagetype, ?(?())) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_sx(F32_storagetype) = ?(?()) + rule fun_sx_case_1: + `%%`(I64_storagetype, ?(?())) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_sx(F64_storagetype) = ?(?()) + rule fun_sx_case_2: + `%%`(F32_storagetype, ?(?())) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_sx(V128_storagetype) = ?(?()) + rule fun_sx_case_3: + `%%`(F64_storagetype, ?(?())) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_sx(I8_storagetype) = ?(?(S_sx)) + rule fun_sx_case_4: + `%%`(V128_storagetype, ?(?())) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_sx(I16_storagetype) = ?(?(S_sx)) - def $fun_sx{x0 : storagetype}(x0) = ?() - -- otherwise + rule fun_sx_case_5: + `%%`(I8_storagetype, ?(?(S_sx))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_6: + `%%`(I16_storagetype, ?(?(S_sx))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_sx_case_7{x0 : storagetype}: + `%%`(x0, ?()) + -- ~ fun_sx_before_fun_sx_case_7: `%`(x0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fun_zero(v_lanetype : lanetype) : lane_ +relation fun_zero: `%%`(lanetype, lane_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) + rule fun_zero_case_0: + `%%`(I32_lanetype, mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) + rule fun_zero_case_1: + `%%`(I64_lanetype, mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) + rule fun_zero_case_2: + `%%`(I8_lanetype, mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) + rule fun_zero_case_3: + `%%`(I16_lanetype, mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) + rule fun_zero_case_4{var_0 : fN}: + `%%`(F32_lanetype, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) + rule fun_zero_case_5{var_0 : fN}: + `%%`(F64_lanetype, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(v_bool : bool) : nat @@ -8093,7 +9623,8 @@ def $ineg_(v_N : N, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(v_N : N, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iabs_{v_N : nat, i_1 : uN}(v_N, i_1) = (if ($signed_(v_N, $proj_uN_0(i_1).0) >= (0 : nat <:> int)) then i_1 else $ineg_(v_N, i_1)) + def $iabs_{v_N : nat, i_1 : uN, var_0 : int}(v_N, i_1) = (if (var_0 >= (0 : nat <:> int)) then i_1 else $ineg_(v_N, i_1)) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iclz_(v_N : N, v_iN : iN) : iN @@ -8105,13 +9636,18 @@ def $ictz_(v_N : N, v_iN : iN) : iN def $ipopcnt_(v_N : N, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iextend_(v_N : N, v_M : M, v_sx : sx, v_iN : iN) : iN +relation fun_iextend_: `%%%%%`(N, M, sx, iN, iN) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{v_N : nat, v_M : nat, i : uN}(v_N, v_M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ v_M))) + rule fun_iextend__case_0{v_N : nat, v_M : nat, i : uN}: + `%%%%%`(v_N, v_M, U_sx, i, `%`_iN(($proj_uN_0(i).0 \ (2 ^ v_M)))) -- wf_uN: `%%`(v_N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ v_M)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{v_N : nat, v_M : nat, i : uN}(v_N, v_M, S_sx, i) = `%`_iN($inv_signed_(v_N, $signed_(v_M, ($proj_uN_0(i).0 \ (2 ^ v_M))))) - -- wf_uN: `%%`(v_N, `%`_uN($inv_signed_(v_N, $signed_(v_M, ($proj_uN_0(i).0 \ (2 ^ v_M)))))) + rule fun_iextend__case_1{v_N : nat, v_M : nat, i : uN, var_1 : int, var_0 : nat}: + `%%%%%`(v_N, v_M, S_sx, i, `%`_iN(var_0)) + -- fun_signed_: `%%%`(v_M, ($proj_uN_0(i).0 \ (2 ^ v_M)), var_1) + -- fun_inv_signed_: `%%%`(v_N, var_1, var_0) + -- wf_uN: `%%`(v_N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN @@ -8132,34 +9668,58 @@ def $imul_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN -- wf_uN: `%%`(v_N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ v_N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $idiv_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN? +relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{v_N : nat, i_1 : uN}(v_N, U_sx, i_1, `%`_iN(0)) = ?() + rule fun_idiv__case_0{v_N : nat, i_1 : uN}: + `%%%%%`(v_N, U_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + rule fun_idiv__case_1{v_N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(v_N, U_sx, i_1, i_2, ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)))) -- wf_uN: `%%`(v_N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{v_N : nat, i_1 : uN}(v_N, S_sx, i_1, `%`_iN(0)) = ?() + rule fun_idiv__case_2{v_N : nat, i_1 : uN}: + `%%%%%`(v_N, S_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = ?() - -- if ((($signed_(v_N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(v_N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + rule fun_idiv__case_3{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: + `%%%%%`(v_N, S_sx, i_1, i_2, ?()) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) + -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(v_N, $truncz((($signed_(v_N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(v_N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(v_N, `%`_uN($inv_signed_(v_N, $truncz((($signed_(v_N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(v_N, $proj_uN_0(i_2).0) : int <:> rat)))))) + rule fun_idiv__case_4{v_N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(v_N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(v_N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) + -- wf_uN: `%%`(v_N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $irem_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN? +relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{v_N : nat, i_1 : uN}(v_N, U_sx, i_1, `%`_iN(0)) = ?() + rule fun_irem__case_0{v_N : nat, i_1 : uN}: + `%%%%%`(v_N, U_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + rule fun_irem__case_1{v_N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(v_N, U_sx, i_1, i_2, ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))) -- wf_uN: `%%`(v_N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{v_N : nat, i_1 : uN}(v_N, S_sx, i_1, `%`_iN(0)) = ?() + rule fun_irem__case_2{v_N : nat, i_1 : uN}: + `%%%%%`(v_N, S_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{v_N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(v_N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(v_N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- wf_uN: `%%`(v_N, `%`_uN($inv_signed_(v_N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- if ((j_1 = $signed_(v_N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(v_N, $proj_uN_0(i_2).0))) + rule fun_irem__case_3{v_N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(v_N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(v_N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) + -- wf_uN: `%%`(v_N, `%`_uN(var_0)) + -- if ((j_1 = var_1) /\ (j_2 = var_2)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN @@ -8170,7 +9730,9 @@ def $imin_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN def $imin_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = i_2 -- if ($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imin_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = (if ($signed_(v_N, $proj_uN_0(i_1).0) <= $signed_(v_N, $proj_uN_0(i_2).0)) then i_1 else i_2) + def $imin_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = (if (var_0 <= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imax_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN @@ -8181,7 +9743,9 @@ def $imax_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN def $imax_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = i_2 -- if ($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imax_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = (if ($signed_(v_N, $proj_uN_0(i_1).0) >= $signed_(v_N, $proj_uN_0(i_2).0)) then i_1 else i_2) + def $imax_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = (if (var_0 >= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN @@ -8189,8 +9753,11 @@ def $iadd_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN def $iadd_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = `%`_iN($sat_u_(v_N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) -- wf_uN: `%%`(v_N, `%`_uN($sat_u_(v_N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) + $signed_(v_N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(v_N, `%`_uN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) + $signed_(v_N, $proj_uN_0(i_2).0)))))) + def $iadd_sat_{v_N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(v_N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- wf_uN: `%%`(v_N, `%`_uN(var_0)) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(v_N, $sat_s_(v_N, (var_1 + var_2)), var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN @@ -8198,8 +9765,11 @@ def $isub_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN def $isub_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = `%`_iN($sat_u_(v_N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) -- wf_uN: `%%`(v_N, `%`_uN($sat_u_(v_N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) - $signed_(v_N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(v_N, `%`_uN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) - $signed_(v_N, $proj_uN_0(i_2).0)))))) + def $isub_sat_{v_N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(v_N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- wf_uN: `%%`(v_N, `%`_uN(var_0)) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(v_N, $sat_s_(v_N, (var_1 - var_2)), var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN @@ -8247,15 +9817,17 @@ def $ibitselect_(v_N : N, v_iN : iN, v_iN_0 : iN, v_iN_1 : iN) : iN def $irelaxed_laneselect_(v_N : N, v_iN : iN, v_iN_0 : iN, v_iN_1 : iN) : iN* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ieqz_(v_N : N, v_iN : iN) : u32 +relation fun_ieqz_: `%%%`(N, iN, u32) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieqz_{v_N : nat, i_1 : uN}(v_N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) + rule fun_ieqz__case_0{v_N : nat, i_1 : uN}: + `%%%`(v_N, i_1, `%`_u32($bool(($proj_uN_0(i_1).0 = 0)))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inez_(v_N : N, v_iN : iN) : u32 +relation fun_inez_: `%%%`(N, iN, u32) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inez_{v_N : nat, i_1 : uN}(v_N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + rule fun_inez__case_0{v_N : nat, i_1 : uN}: + `%%%`(v_N, i_1, `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0)))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8276,8 +9848,10 @@ def $ilt_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 def $ilt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) < $signed_(v_N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) < $signed_(v_N, $proj_uN_0(i_2).0))))) + def $ilt_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 < var_1))) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 < var_1)))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 @@ -8285,8 +9859,10 @@ def $igt_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 def $igt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) > $signed_(v_N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) > $signed_(v_N, $proj_uN_0(i_2).0))))) + def $igt_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 > var_1))) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 > var_1)))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 @@ -8294,8 +9870,10 @@ def $ile_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 def $ile_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) <= $signed_(v_N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) <= $signed_(v_N, $proj_uN_0(i_2).0))))) + def $ile_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 <= var_1))) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 <= var_1)))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 @@ -8303,8 +9881,10 @@ def $ige_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 def $ige_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) >= $signed_(v_N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) >= $signed_(v_N, $proj_uN_0(i_2).0))))) + def $ige_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 >= var_1))) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 >= var_1)))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(v_N : N, v_fN : fN) : fN* @@ -8415,273 +9995,454 @@ def $narrow__(v_M : M, v_N : N, v_sx : sx, v_iN : iN) : iN def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, v_num_ : num_) : num_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $lpacknum_(v_lanetype : lanetype, v_num_ : num_) : lane_ +relation fun_lpacknum_: `%%%`(lanetype, num_, lane_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) + rule fun_lpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, c, mk_lane__0_lane_(I32_numtype, c)) -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) + rule fun_lpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, c, mk_lane__0_lane_(I64_numtype, c)) -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) + rule fun_lpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, c, mk_lane__0_lane_(F32_numtype, c)) -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) + rule fun_lpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, c, mk_lane__0_lane_(F64_numtype, c)) -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + rule fun_lpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + rule fun_lpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ +relation fun_cpacknum_: `%%%`(storagetype, lit_, lit_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(I32_storagetype, c) = c + rule fun_cpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(I64_storagetype, c) = c + rule fun_cpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(F32_storagetype, c) = c + rule fun_cpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(F64_storagetype, c) = c + rule fun_cpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(V128_storagetype, c) = c + rule fun_cpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + rule fun_cpacknum__case_5{c : uN}: + `%%%`(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + rule fun_cpacknum__case_6{c : uN}: + `%%%`(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $lunpacknum_(v_lanetype : lanetype, v_lane_ : lane_) : num_ +relation fun_lunpacknum_: `%%%`(lanetype, lane_, num_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : num_}(I32_lanetype, mk_lane__0_lane_(I32_numtype, c)) = c + rule fun_lunpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, mk_lane__0_lane_(I32_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : num_}(I64_lanetype, mk_lane__0_lane_(I64_numtype, c)) = c + rule fun_lunpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, mk_lane__0_lane_(I64_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : num_}(F32_lanetype, mk_lane__0_lane_(F32_numtype, c)) = c + rule fun_lunpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, mk_lane__0_lane_(F32_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c + rule fun_lunpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, mk_lane__0_lane_(F64_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) + rule fun_lunpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_lane__1_lane_(I8_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) + rule fun_lunpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_lane__1_lane_(I16_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cunpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ +relation fun_cunpacknum_: `%%%`(storagetype, lit_, lit_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(I32_storagetype, c) = c + rule fun_cunpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(I64_storagetype, c) = c + rule fun_cunpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(F32_storagetype, c) = c + rule fun_cunpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(F64_storagetype, c) = c + rule fun_cunpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(V128_storagetype, c) = c + rule fun_cunpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) - -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + rule fun_cunpacknum__case_5{c : uN, var_0 : consttype?}: + `%%%`(I8_storagetype, mk_lit__2_lit_(I8_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + -- fun_cunpack: `%%`($storagetype_packtype(I8_packtype), var_0) + -- if (var_0 =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!(var_0)), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) - -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + rule fun_cunpacknum__case_6{c : uN, var_0 : consttype?}: + `%%%`(I16_storagetype, mk_lit__2_lit_(I16_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + -- fun_cunpack: `%%`($storagetype_packtype(I16_packtype), var_0) + -- if (var_0 =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!(var_0)), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fun_unop_(v_numtype : numtype, v_unop_ : unop_, v_num_ : num_) : num_* +relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))] + rule fun_unop__case_0{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))] + rule fun_unop__case_1{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))] + rule fun_unop__case_2{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))] + rule fun_unop__case_3{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))] + rule fun_unop__case_4{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))] + rule fun_unop__case_5{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{v_M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(v_M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), v_M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), v_M, S_sx, i))) + rule fun_unop__case_6{v_M : nat, i : uN, var_0 : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(v_M))), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), v_M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, var_0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{v_M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(v_M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), v_M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), v_M, S_sx, i))) + rule fun_unop__case_7{v_M : nat, i : uN, var_0 : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(v_M))), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), v_M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, var_0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_8{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#1)))*{iter_0#1 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_9{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#3)))*{iter_0#3 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#6)*{iter_0#6 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_10{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#6)*{iter_0#6 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#5)))*{iter_0#5 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_11{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#7)))*{iter_0#7 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#10)*{iter_0#10 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_12{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#10)*{iter_0#10 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#9)))*{iter_0#9 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_13{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#11)))*{iter_0#11 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#14)*{iter_0#14 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_14{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#14)*{iter_0#14 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#13)))*{iter_0#13 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#16)*{iter_0#16 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_15{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#16)*{iter_0#16 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#15)))*{iter_0#15 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#18)*{iter_0#18 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_16{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#18)*{iter_0#18 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#17)))*{iter_0#17 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_17{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#19)))*{iter_0#19 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#22)*{iter_0#22 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_18{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#22)*{iter_0#22 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#21)))*{iter_0#21 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_19{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#23)))*{iter_0#23 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#26)*{iter_0#26 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_20{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#26)*{iter_0#26 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#25)))*{iter_0#25 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_21{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#27)))*{iter_0#27 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fun_binop_(v_numtype : numtype, v_binop_ : binop_, v_num_ : num_, v_num__0 : num_) : num_* +relation fun_binop_: `%%%%%`(numtype, binop_, num_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_0{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_1{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_2{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_3{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_4{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_5{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#30)*{iter_0#30 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#29)))*{iter_0#29 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} + rule fun_binop__case_6{v_sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#30)*{iter_0#30 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#29)))*{iter_0#29 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#32)*{iter_0#32 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#31)))*{iter_0#31 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} + rule fun_binop__case_7{v_sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#32)*{iter_0#32 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#31)))*{iter_0#31 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#33)))*{iter_0#33 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} + rule fun_binop__case_8{v_sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#33)))*{iter_0#33 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#35)))*{iter_0#35 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} + rule fun_binop__case_9{v_sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#35)))*{iter_0#35 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_10{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_11{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_12{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_13{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_14{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_15{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + rule fun_binop__case_16{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + rule fun_binop__case_17{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + rule fun_binop__case_18{v_sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + rule fun_binop__case_19{v_sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_20{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_21{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_22{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_23{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#38)*{iter_0#38 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_24{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#38)*{iter_0#38 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#37)))*{iter_0#37 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#40)*{iter_0#40 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_25{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#40)*{iter_0#40 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#39)))*{iter_0#39 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_26{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#41)))*{iter_0#41 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_27{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#43)))*{iter_0#43 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_28{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#45)))*{iter_0#45 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_29{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#47)))*{iter_0#47 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#50)*{iter_0#50 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_30{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#50)*{iter_0#50 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#49)))*{iter_0#49 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#52)*{iter_0#52 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_31{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#52)*{iter_0#52 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#51)))*{iter_0#51 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#54)*{iter_0#54 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_32{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#54)*{iter_0#54 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#53)))*{iter_0#53 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#56)*{iter_0#56 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_33{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#56)*{iter_0#56 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#55)))*{iter_0#55 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#58)*{iter_0#58 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_34{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#58)*{iter_0#58 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#57)))*{iter_0#57 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#60)*{iter_0#60 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_35{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#60)*{iter_0#60 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#59)))*{iter_0#59 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#62)*{iter_0#62 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_36{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#62)*{iter_0#62 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#61)))*{iter_0#61 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#64)*{iter_0#64 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_37{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#64)*{iter_0#64 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#63)))*{iter_0#63 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fun_testop_(v_numtype : numtype, v_testop_ : testop_, v_num_ : num_) : u32 +relation fun_testop_: `%%%%`(numtype, testop_, num_, u32) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_testop_{i : uN}(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I32_Inn)), i) + rule fun_testop__case_0{i : uN, var_0 : u32}: + `%%%%`(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I32_Inn)), i, var_0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_testop_{i : uN}(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I64_Inn)), i) + rule fun_testop__case_1{i : uN, var_0 : u32}: + `%%%%`(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I64_Inn)), i, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_relop_(v_numtype : numtype, v_relop_ : relop_, v_num_ : num_, v_num__0 : num_) : u32 @@ -8735,121 +10496,192 @@ def $fun_relop_(v_numtype : numtype, v_relop_ : relop_, v_num_ : num_, v_num__0 def $fun_relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fun_cvtop__(numtype_1 : numtype, numtype_2 : numtype, v_cvtop__ : cvtop__, v_num_ : num_) : num_* +relation fun_cvtop__: `%%%%%`(numtype, numtype, cvtop__, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))] + rule fun_cvtop___case_0{v_sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))] + rule fun_cvtop___case_1{v_sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))] + rule fun_cvtop___case_2{v_sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))] + rule fun_cvtop___case_3{v_sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] + rule fun_cvtop___case_4{i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] + rule fun_cvtop___case_5{i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] + rule fun_cvtop___case_6{i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] + rule fun_cvtop___case_7{i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#66)*{iter_0#66 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + rule fun_cvtop___case_8{v_sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#66)*{iter_0#66 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#65)))*{iter_0#65 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#68)*{iter_0#68 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + rule fun_cvtop___case_9{v_sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#68)*{iter_0#68 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#67)))*{iter_0#67 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#70)*{iter_0#70 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + rule fun_cvtop___case_10{v_sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#70)*{iter_0#70 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#69)))*{iter_0#69 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#72)*{iter_0#72 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + rule fun_cvtop___case_11{v_sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#72)*{iter_0#72 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#71)))*{iter_0#71 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#74)*{iter_0#74 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + rule fun_cvtop___case_12{v_sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#74)*{iter_0#74 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#73)))*{iter_0#73 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#76)*{iter_0#76 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + rule fun_cvtop___case_13{v_sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#76)*{iter_0#76 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#75)))*{iter_0#75 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#78)*{iter_0#78 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + rule fun_cvtop___case_14{v_sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#78)*{iter_0#78 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#77)))*{iter_0#77 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#80)*{iter_0#80 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + rule fun_cvtop___case_15{v_sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#80)*{iter_0#80 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#79)))*{iter_0#79 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))] + rule fun_cvtop___case_16{v_sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))]) -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))] + rule fun_cvtop___case_17{v_sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))]) -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))] + rule fun_cvtop___case_18{v_sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))]) -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))] + rule fun_cvtop___case_19{v_sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))]) -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#82)*{iter_0#82 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + rule fun_cvtop___case_20{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#82)*{iter_0#82 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#81)))*{iter_0#81 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#84)*{iter_0#84 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + rule fun_cvtop___case_21{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#84)*{iter_0#84 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#83)))*{iter_0#83 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#86)*{iter_0#86 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + rule fun_cvtop___case_22{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#86)*{iter_0#86 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#85)))*{iter_0#85 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#88)*{iter_0#88 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + rule fun_cvtop___case_23{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#88)*{iter_0#88 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#87)))*{iter_0#87 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#90)*{iter_0#90 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + rule fun_cvtop___case_24{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#90)*{iter_0#90 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#89)))*{iter_0#89 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#92)*{iter_0#92 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + rule fun_cvtop___case_25{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#92)*{iter_0#92 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#91)))*{iter_0#91 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#94)*{iter_0#94 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + rule fun_cvtop___case_26{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#94)*{iter_0#94 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#93)))*{iter_0#93 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#96)*{iter_0#96 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + rule fun_cvtop___case_27{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#96)*{iter_0#96 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#95)))*{iter_0#95 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))] + rule fun_cvtop___case_28{i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))] + rule fun_cvtop___case_29{i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))] + rule fun_cvtop___case_30{i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))] + rule fun_cvtop___case_31{i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))] + rule fun_cvtop___case_32{f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))]) -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))] + rule fun_cvtop___case_33{f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))]) -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))] + rule fun_cvtop___case_34{f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))]) -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))] + rule fun_cvtop___case_35{f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))]) -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) @@ -8860,202 +10692,392 @@ def $lanes_(v_shape : shape, v_vec_ : vec_) : lane_* def $inv_lanes_(v_shape : shape, var_0 : lane_*) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $zeroop(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__) : zero? +relation fun_zeroop: `%%%%`(shape, shape, vcvtop__, zero?) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_0{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_1{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_2{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_3{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_4{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_5{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_6{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_7{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_8{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_9{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_10{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_11{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_12{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_13{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_14{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_15{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + rule fun_zeroop_case_16{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + rule fun_zeroop_case_17{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + rule fun_zeroop_case_18{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + rule fun_zeroop_case_19{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + rule fun_zeroop_case_20{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + rule fun_zeroop_case_21{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + rule fun_zeroop_case_22{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + rule fun_zeroop_case_23{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_24{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_25{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_26{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_27{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_28{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_29{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_30{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_31{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_32{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_33{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_34{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_35{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_36{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_37{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_38{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_39{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?(v_zero) + rule fun_zeroop_case_40{M_1 : nat, M_2 : nat, v_zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?(v_zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?(v_zero) + rule fun_zeroop_case_41{M_1 : nat, M_2 : nat, v_zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?(v_zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?(v_zero) + rule fun_zeroop_case_42{M_1 : nat, M_2 : nat, v_zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?(v_zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?(v_zero) + rule fun_zeroop_case_43{M_1 : nat, M_2 : nat, v_zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?(v_zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + rule fun_zeroop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + rule fun_zeroop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + rule fun_zeroop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + rule fun_zeroop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $halfop(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__) : half? +relation fun_halfop: `%%%%`(shape, shape, vcvtop__, half?) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_0{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_1{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_2{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_3{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_4{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_5{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_6{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_7{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_8{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_9{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_10{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_11{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_12{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_13{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_14{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_15{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + rule fun_halfop_case_16{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + rule fun_halfop_case_17{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + rule fun_halfop_case_18{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + rule fun_halfop_case_19{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + rule fun_halfop_case_20{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + rule fun_halfop_case_21{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + rule fun_halfop_case_22{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + rule fun_halfop_case_23{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_24{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_25{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_26{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_27{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_28{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_29{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_30{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_31{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_32{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_33{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_34{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_35{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_36{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_37{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_38{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_39{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?() + rule fun_halfop_case_40{M_1 : nat, M_2 : nat, v_zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?() + rule fun_halfop_case_41{M_1 : nat, M_2 : nat, v_zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?() + rule fun_halfop_case_42{M_1 : nat, M_2 : nat, v_zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?() + rule fun_halfop_case_43{M_1 : nat, M_2 : nat, v_zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + rule fun_halfop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + rule fun_halfop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + rule fun_halfop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + rule fun_halfop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_half(v_half : half, nat : nat, nat_0 : nat) : nat @@ -9073,8 +11095,9 @@ def $iswizzle_lane_(v_N : N, var_0 : iN*, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(v_N : N, var_0 : iN*, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{v_N : nat, c_lst : iN*, i : uN}(v_N, c_lst, i) = (if ($proj_uN_0(i).0 < |c_lst|) then c_lst[$proj_uN_0(i).0] else (if ($signed_(v_N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $fun_relaxed2($R_swizzle, syntax iN, `%`_iN(0), c_lst[($proj_uN_0(i).0 \ |c_lst|)]))) + def $irelaxed_swizzle_lane_{v_N : nat, c_lst : iN*, i : uN, var_0 : int}(v_N, c_lst, i) = (if ($proj_uN_0(i).0 < |c_lst|) then c_lst[$proj_uN_0(i).0] else (if (var_0 < (0 : nat <:> int)) then `%`_iN(0) else $fun_relaxed2($R_swizzle, syntax iN, `%`_iN(0), c_lst[($proj_uN_0(i).0 \ |c_lst|)]))) -- wf_uN: `%%`(v_N, `%`_uN(0)) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i).0, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(v_shape : shape, def $f_(v_N : N, v_iN : iN) : iN, v_vec_ : vec_) : vec_* @@ -9472,38 +11495,53 @@ def $ivshiftopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#132)), i)*{c_1#132 <- c_1_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbitmaskop_(v_shape : shape, v_vec_ : vec_) : u32 +relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), v_1) = $irev_(32, c) + rule fun_ivbitmaskop__case_0{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}: + `%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + -- (if ($proj_lane__2(c_1#133) =/= ?()))*{c_1#133 <- c_1_lst} -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#133)), `%`_iN(0))).0)))*{c_1#133 <- c_1_lst} -- wf_bit: `%`(`%`_bit(0)) -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_1)) + -- (if ($proj_lane__2(c_1#135) =/= ?()))*{c_1#135 <- c_1_lst} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#135)), `%`_iN(0))).0)*{c_1#135 <- c_1_lst} ++ `%`_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), v_1) = $irev_(32, c) + rule fun_ivbitmaskop__case_1{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}: + `%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + -- (if ($proj_lane__2(c_1#136) =/= ?()))*{c_1#136 <- c_1_lst} -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#136)), `%`_iN(0))).0)))*{c_1#136 <- c_1_lst} -- wf_bit: `%`(`%`_bit(0)) -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_1)) + -- (if ($proj_lane__2(c_1#138) =/= ?()))*{c_1#138 <- c_1_lst} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#138)), `%`_iN(0))).0)*{c_1#138 <- c_1_lst} ++ `%`_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), v_1) = $irev_(32, c) + rule fun_ivbitmaskop__case_2{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}: + `%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + -- (if ($proj_lane__2(c_1#139) =/= ?()))*{c_1#139 <- c_1_lst} -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#139)), `%`_iN(0))).0)))*{c_1#139 <- c_1_lst} -- wf_bit: `%`(`%`_bit(0)) -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_1)) + -- (if ($proj_lane__2(c_1#141) =/= ?()))*{c_1#141 <- c_1_lst} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#141)), `%`_iN(0))).0)*{c_1#141 <- c_1_lst} ++ `%`_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), v_1) = $irev_(32, c) + rule fun_ivbitmaskop__case_3{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}: + `%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + -- (if ($proj_lane__2(c_1#142) =/= ?()))*{c_1#142 <- c_1_lst} -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#142)), `%`_iN(0))).0)))*{c_1#142 <- c_1_lst} -- wf_bit: `%`(`%`_bit(0)) -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_1)) + -- (if ($proj_lane__2(c_1#144) =/= ?()))*{c_1#144 <- c_1_lst} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#144)), `%`_iN(0))).0)*{c_1#144 <- c_1_lst} ++ `%`_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -9546,42 +11584,53 @@ def $ivswizzlop_(v_shape : shape, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_vec_ -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#156))*{c_1#156 <- c_1_lst}, !($proj_lane__2(c_2#102)))*{c_2#102 <- c_2_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivshufflop_(v_shape : shape, var_0 : laneidx*, v_vec_ : vec_, v_vec__0 : vec_) : vec_ +relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), c_lst) + rule fun_ivshufflop__case_0{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), i_lst, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), c_lst)) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))), c#147))*{c#147 <- c_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))), c_1#157))*{c_1#157 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))), c_2#103))*{c_2#103 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_2)) + -- (if ($proj_uN_0(i#128396).0 < |c_1_lst ++ c_2_lst|))*{i#128396 <- i_lst} -- if (c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i#128396).0]*{i#128396 <- i_lst}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), c_lst) + rule fun_ivshufflop__case_1{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), i_lst, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), c_lst)) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))), c#150))*{c#150 <- c_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))), c_1#160))*{c_1#160 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))), c_2#106))*{c_2#106 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_2)) + -- (if ($proj_uN_0(i#128406).0 < |c_1_lst ++ c_2_lst|))*{i#128406 <- i_lst} -- if (c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i#128406).0]*{i#128406 <- i_lst}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), c_lst) + rule fun_ivshufflop__case_2{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), i_lst, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), c_lst)) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))), c#153))*{c#153 <- c_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))), c_1#163))*{c_1#163 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))), c_2#109))*{c_2#109 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_2)) + -- (if ($proj_uN_0(i#128416).0 < |c_1_lst ++ c_2_lst|))*{i#128416 <- i_lst} -- if (c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i#128416).0]*{i#128416 <- i_lst}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), c_lst) + rule fun_ivshufflop__case_3{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), i_lst, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), c_lst)) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))), c#156))*{c#156 <- c_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))), c_1#166))*{c_1#166 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))), c_2#112))*{c_2#112 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_2)) + -- (if ($proj_uN_0(i#128426).0 < |c_1_lst ++ c_2_lst|))*{i#128426 <- i_lst} -- if (c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i#128426).0]*{i#128426 <- i_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -9606,795 +11655,1245 @@ def $vvternop_(v_vectype : vectype, v_vvternop : vvternop, v_vec_ : vec_, v_vec_ def $vvternop_{v_Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(v_Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(v_Vnn), v_1, v_2, v_3)] ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vunop_(v_shape : shape, v_vunop_ : vunop_, v_vec_ : vec_) : vec_* +relation fun_vunop_: `%%%%`(shape, vunop_, vec_, vec_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fabs_, v) + rule fun_vunop__case_0{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fabs_, v) + rule fun_vunop__case_1{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fneg_, v) + rule fun_vunop__case_2{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fneg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fneg_, v) + rule fun_vunop__case_3{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fneg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fsqrt_, v) + rule fun_vunop__case_4{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fsqrt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fsqrt_, v) + rule fun_vunop__case_5{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fsqrt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fceil_, v) + rule fun_vunop__case_6{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fceil_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fceil_, v) + rule fun_vunop__case_7{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fceil_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $ffloor_, v) + rule fun_vunop__case_8{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $ffloor_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $ffloor_, v) + rule fun_vunop__case_9{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $ffloor_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $ftrunc_, v) + rule fun_vunop__case_10{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $ftrunc_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $ftrunc_, v) + rule fun_vunop__case_11{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $ftrunc_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fnearest_, v) + rule fun_vunop__case_12{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fnearest_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fnearest_, v) + rule fun_vunop__case_13{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fnearest_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $iabs_, v) + rule fun_vunop__case_14{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $iabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $iabs_, v) + rule fun_vunop__case_15{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $iabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $iabs_, v) + rule fun_vunop__case_16{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $iabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $iabs_, v) + rule fun_vunop__case_17{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $iabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ineg_, v) + rule fun_vunop__case_18{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ineg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ineg_, v) + rule fun_vunop__case_19{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ineg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ineg_, v) + rule fun_vunop__case_20{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ineg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ineg_, v) + rule fun_vunop__case_21{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ineg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ipopcnt_, v) + rule fun_vunop__case_22{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ipopcnt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ipopcnt_, v) + rule fun_vunop__case_23{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ipopcnt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ipopcnt_, v) + rule fun_vunop__case_24{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ipopcnt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ipopcnt_, v) + rule fun_vunop__case_25{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ipopcnt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vbinop_(v_shape : shape, v_vbinop_ : vbinop_, v_vec_ : vec_, v_vec__0 : vec_) : vec_* +relation fun_vbinop_: `%%%%%`(shape, vbinop_, vec_, vec_, vec_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $iadd_, v_1, v_2) + rule fun_vbinop__case_0{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $iadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $iadd_, v_1, v_2) + rule fun_vbinop__case_1{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $iadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $iadd_, v_1, v_2) + rule fun_vbinop__case_2{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $iadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $iadd_, v_1, v_2) + rule fun_vbinop__case_3{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $iadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $isub_, v_1, v_2) + rule fun_vbinop__case_4{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $isub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $isub_, v_1, v_2) + rule fun_vbinop__case_5{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $isub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $isub_, v_1, v_2) + rule fun_vbinop__case_6{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $isub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $isub_, v_1, v_2) + rule fun_vbinop__case_7{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $isub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $imul_, v_1, v_2) + rule fun_vbinop__case_8{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $imul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $imul_, v_1, v_2) + rule fun_vbinop__case_9{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $imul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $imul_, v_1, v_2) + rule fun_vbinop__case_10{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $imul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $imul_, v_1, v_2) + rule fun_vbinop__case_11{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $imul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) + rule fun_vbinop__case_12{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) + rule fun_vbinop__case_13{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) + rule fun_vbinop__case_14{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) + rule fun_vbinop__case_15{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) + rule fun_vbinop__case_16{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) + rule fun_vbinop__case_17{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) + rule fun_vbinop__case_18{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) + rule fun_vbinop__case_19{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $imin_, v_sx, v_1, v_2) + rule fun_vbinop__case_20{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $imin_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $imin_, v_sx, v_1, v_2) + rule fun_vbinop__case_21{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $imin_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $imin_, v_sx, v_1, v_2) + rule fun_vbinop__case_22{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $imin_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $imin_, v_sx, v_1, v_2) + rule fun_vbinop__case_23{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $imin_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $imax_, v_sx, v_1, v_2) + rule fun_vbinop__case_24{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $imax_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $imax_, v_sx, v_1, v_2) + rule fun_vbinop__case_25{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $imax_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $imax_, v_sx, v_1, v_2) + rule fun_vbinop__case_26{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $imax_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $imax_, v_sx, v_1, v_2) + rule fun_vbinop__case_27{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $imax_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) + rule fun_vbinop__case_28{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $iavgr_, U_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) + rule fun_vbinop__case_29{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $iavgr_, U_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) + rule fun_vbinop__case_30{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $iavgr_, U_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) + rule fun_vbinop__case_31{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $iavgr_, U_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + rule fun_vbinop__case_32{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + rule fun_vbinop__case_33{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + rule fun_vbinop__case_34{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + rule fun_vbinop__case_35{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + rule fun_vbinop__case_36{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + rule fun_vbinop__case_37{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + rule fun_vbinop__case_38{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + rule fun_vbinop__case_39{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fadd_, v_1, v_2) + rule fun_vbinop__case_40{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fadd_, v_1, v_2) + rule fun_vbinop__case_41{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fsub_, v_1, v_2) + rule fun_vbinop__case_42{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fsub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fsub_, v_1, v_2) + rule fun_vbinop__case_43{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fsub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fmul_, v_1, v_2) + rule fun_vbinop__case_44{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fmul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fmul_, v_1, v_2) + rule fun_vbinop__case_45{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fmul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fdiv_, v_1, v_2) + rule fun_vbinop__case_46{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fdiv_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fdiv_, v_1, v_2) + rule fun_vbinop__case_47{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fdiv_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fmin_, v_1, v_2) + rule fun_vbinop__case_48{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fmin_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fmin_, v_1, v_2) + rule fun_vbinop__case_49{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fmin_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fmax_, v_1, v_2) + rule fun_vbinop__case_50{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fmax_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fmax_, v_1, v_2) + rule fun_vbinop__case_51{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fmax_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fpmin_, v_1, v_2) + rule fun_vbinop__case_52{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fpmin_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fpmin_, v_1, v_2) + rule fun_vbinop__case_53{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fpmin_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fpmax_, v_1, v_2) + rule fun_vbinop__case_54{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fpmax_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fpmax_, v_1, v_2) + rule fun_vbinop__case_55{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fpmax_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $frelaxed_min_, v_1, v_2) + rule fun_vbinop__case_56{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $frelaxed_min_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $frelaxed_min_, v_1, v_2) + rule fun_vbinop__case_57{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $frelaxed_min_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $frelaxed_max_, v_1, v_2) + rule fun_vbinop__case_58{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $frelaxed_max_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $frelaxed_max_, v_1, v_2) + rule fun_vbinop__case_59{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $frelaxed_max_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vternop_(v_shape : shape, v_vternop_ : vternop_, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_* +relation fun_vternop_: `%%%%%%`(shape, vternop_, vec_, vec_, vec_, vec_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vternop__0_vternop_(I32_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + rule fun_vternop__case_0{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vternop__0_vternop_(I32_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vternop__0_vternop_(I64_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + rule fun_vternop__case_1{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vternop__0_vternop_(I64_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vternop__0_vternop_(I8_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + rule fun_vternop__case_2{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vternop__0_vternop_(I8_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vternop__0_vternop_(I16_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + rule fun_vternop__case_3{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vternop__0_vternop_(I16_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, v_M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3) + rule fun_vternop__case_4{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, v_M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, v_M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3) + rule fun_vternop__case_5{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, v_M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, v_M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + rule fun_vternop__case_6{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, v_M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, v_M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + rule fun_vternop__case_7{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, v_M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vrelop_(v_shape : shape, v_vrelop_ : vrelop_, v_vec_ : vec_, v_vec__0 : vec_) : vec_ +relation fun_vrelop_: `%%%%%`(shape, vrelop_, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ieq_, v_1, v_2) + rule fun_vrelop__case_0{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ieq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ieq_, v_1, v_2) + rule fun_vrelop__case_1{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ieq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ieq_, v_1, v_2) + rule fun_vrelop__case_2{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ieq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ieq_, v_1, v_2) + rule fun_vrelop__case_3{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ieq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ine_, v_1, v_2) + rule fun_vrelop__case_4{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ine_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ine_, v_1, v_2) + rule fun_vrelop__case_5{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ine_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ine_, v_1, v_2) + rule fun_vrelop__case_6{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ine_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ine_, v_1, v_2) + rule fun_vrelop__case_7{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ine_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ilt_, v_sx, v_1, v_2) + rule fun_vrelop__case_8{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ilt_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ilt_, v_sx, v_1, v_2) + rule fun_vrelop__case_9{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ilt_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ilt_, v_sx, v_1, v_2) + rule fun_vrelop__case_10{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ilt_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ilt_, v_sx, v_1, v_2) + rule fun_vrelop__case_11{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ilt_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $igt_, v_sx, v_1, v_2) + rule fun_vrelop__case_12{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $igt_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $igt_, v_sx, v_1, v_2) + rule fun_vrelop__case_13{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $igt_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $igt_, v_sx, v_1, v_2) + rule fun_vrelop__case_14{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $igt_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $igt_, v_sx, v_1, v_2) + rule fun_vrelop__case_15{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $igt_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ile_, v_sx, v_1, v_2) + rule fun_vrelop__case_16{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ile_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ile_, v_sx, v_1, v_2) + rule fun_vrelop__case_17{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ile_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ile_, v_sx, v_1, v_2) + rule fun_vrelop__case_18{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ile_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ile_, v_sx, v_1, v_2) + rule fun_vrelop__case_19{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ile_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ige_, v_sx, v_1, v_2) + rule fun_vrelop__case_20{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ige_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ige_, v_sx, v_1, v_2) + rule fun_vrelop__case_21{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ige_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ige_, v_sx, v_1, v_2) + rule fun_vrelop__case_22{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ige_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ige_, v_sx, v_1, v_2) + rule fun_vrelop__case_23{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ige_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $feq_, v_1, v_2) + rule fun_vrelop__case_24{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $feq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $feq_, v_1, v_2) + rule fun_vrelop__case_25{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $feq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fne_, v_1, v_2) + rule fun_vrelop__case_26{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fne_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fne_, v_1, v_2) + rule fun_vrelop__case_27{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fne_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $flt_, v_1, v_2) + rule fun_vrelop__case_28{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $flt_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $flt_, v_1, v_2) + rule fun_vrelop__case_29{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $flt_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fgt_, v_1, v_2) + rule fun_vrelop__case_30{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fgt_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fgt_, v_1, v_2) + rule fun_vrelop__case_31{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fgt_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fle_, v_1, v_2) + rule fun_vrelop__case_32{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fle_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fle_, v_1, v_2) + rule fun_vrelop__case_33{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fle_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fge_, v_1, v_2) + rule fun_vrelop__case_34{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fge_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fge_, v_1, v_2) + rule fun_vrelop__case_35{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fge_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $lcvtop__(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__, v_lane_ : lane_) : lane_* +relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + rule fun_lcvtop___case_20{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + rule fun_lcvtop___case_21{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + rule fun_lcvtop___case_22{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + rule fun_lcvtop___case_23{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#161))?{c#161 <- c_opt}) + rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#161))?{c#161 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#159))))?{c#159 <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#164))?{c#164 <- c_opt}) + rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#164))?{c#164 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#162))))?{c#162 <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#167))?{c#167 <- c_opt}) + rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#167))?{c#167 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#165))))?{c#165 <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#170))?{c#170 <- c_opt}) + rule fun_lcvtop___case_27{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#170))?{c#170 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#168))))?{c#168 <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#173))?{c#173 <- c_opt}) + rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#173))?{c#173 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#171))))?{c#171 <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#176))?{c#176 <- c_opt}) + rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#176))?{c#176 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#174))))?{c#174 <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#179))?{c#179 <- c_opt}) + rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#179))?{c#179 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#177))))?{c#177 <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#182))?{c#182 <- c_opt}) + rule fun_lcvtop___case_31{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#182))?{c#182 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#180))))?{c#180 <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#185))?{c#185 <- c_opt}) + rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#185))?{c#185 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#183))))?{c#183 <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#188))?{c#188 <- c_opt}) + rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#188))?{c#188 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#186))))?{c#186 <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#191))?{c#191 <- c_opt}) + rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#191))?{c#191 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#189))))?{c#189 <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#194))?{c#194 <- c_opt}) + rule fun_lcvtop___case_35{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#194))?{c#194 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#192))))?{c#192 <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#197))?{c#197 <- c_opt}) + rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#197))?{c#197 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#195))))?{c#195 <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#200))?{c#200 <- c_opt}) + rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#200))?{c#200 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#198))))?{c#198 <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#203))?{c#203 <- c_opt}) + rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#203))?{c#203 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#201))))?{c#201 <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#206))?{c#206 <- c_opt}) + rule fun_lcvtop___case_39{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#206))?{c#206 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#204))))?{c#204 <- c_opt} -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#209))?{c#209 <- c_opt}) + rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#209))?{c#209 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#207))))?{c#207 <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#212))?{c#212 <- c_opt}) + rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#212))?{c#212 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#210))))?{c#210 <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#215))?{c#215 <- c_opt}) + rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#215))?{c#215 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#213))))?{c#213 <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#218))?{c#218 <- c_opt}) + rule fun_lcvtop___case_43{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#218))?{c#218 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#216))))?{c#216 <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#221))?{c#221 <- c_opt}) + rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#221))?{c#221 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#219))))?{c#219 <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#224))?{c#224 <- c_opt}) + rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#224))?{c#224 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#222))))?{c#222 <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#227))?{c#227 <- c_opt}) + rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#227))?{c#227 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#225))))?{c#225 <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#230))?{c#230 <- c_opt}) + rule fun_lcvtop___case_47{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#230))?{c#230 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#228))))?{c#228 <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#233))?{c#233 <- c_opt}) + rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#233))?{c#233 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#231))))?{c#231 <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#236))?{c#236 <- c_opt}) + rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#236))?{c#236 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#234))))?{c#234 <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#239))?{c#239 <- c_opt}) + rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#239))?{c#239 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#237))))?{c#237 <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#242))?{c#242 <- c_opt}) + rule fun_lcvtop___case_51{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#242))?{c#242 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#240))))?{c#240 <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#245))?{c#245 <- c_opt}) + rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#245))?{c#245 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#243))))?{c#243 <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#248))?{c#248 <- c_opt}) + rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#248))?{c#248 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#246))))?{c#246 <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#251))?{c#251 <- c_opt}) + rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#251))?{c#251 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#249))))?{c#249 <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#254))?{c#254 <- c_opt}) + rule fun_lcvtop___case_55{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#254))?{c#254 <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#252))))?{c#252 <- c_opt} -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#257))*{c#257 <- c_lst} + rule fun_lcvtop___case_56{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#257))*{c#257 <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#255))))*{c#255 <- c_lst} -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#260))*{c#260 <- c_lst} + rule fun_lcvtop___case_57{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#260))*{c#260 <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#258))))*{c#258 <- c_lst} -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#263))*{c#263 <- c_lst} + rule fun_lcvtop___case_58{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#263))*{c#263 <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#261))))*{c#261 <- c_lst} -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#266))*{c#266 <- c_lst} + rule fun_lcvtop___case_59{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#266))*{c#266 <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#264))))*{c#264 <- c_lst} -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#269))*{c#269 <- c_lst} + rule fun_lcvtop___case_60{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#269))*{c#269 <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#267))))*{c#267 <- c_lst} -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#272))*{c#272 <- c_lst} + rule fun_lcvtop___case_61{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#272))*{c#272 <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#270))))*{c#270 <- c_lst} -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#275))*{c#275 <- c_lst} + rule fun_lcvtop___case_62{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#275))*{c#275 <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#273))))*{c#273 <- c_lst} -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#278))*{c#278 <- c_lst} + rule fun_lcvtop___case_63{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#278))*{c#278 <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#276))))*{c#276 <- c_lst} -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#281))*{c#281 <- c_lst} + rule fun_lcvtop___case_64{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#281))*{c#281 <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#279))))*{c#279 <- c_lst} -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#284))*{c#284 <- c_lst} + rule fun_lcvtop___case_65{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#284))*{c#284 <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#282))))*{c#282 <- c_lst} -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#287))*{c#287 <- c_lst} + rule fun_lcvtop___case_66{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#287))*{c#287 <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#285))))*{c#285 <- c_lst} -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#290))*{c#290 <- c_lst} + rule fun_lcvtop___case_67{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#290))*{c#290 <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#288))))*{c#288 <- c_lst} -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#293))*{c#293 <- c_lst} + rule fun_lcvtop___case_68{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#293))*{c#293 <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#291))))*{c#291 <- c_lst} -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#296))*{c#296 <- c_lst} + rule fun_lcvtop___case_69{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#296))*{c#296 <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#294))))*{c#294 <- c_lst} -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#299))*{c#299 <- c_lst} + rule fun_lcvtop___case_70{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#299))*{c#299 <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#297))))*{c#297 <- c_lst} -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#302))*{c#302 <- c_lst} + rule fun_lcvtop___case_71{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#302))*{c#302 <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#300))))*{c#300 <- c_lst} -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vcvtop__(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__, v_vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vcvtop__{Lnn_1 : lanetype, v_M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop, v_1) = v +relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_0{Lnn_1 : lanetype, v_M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**, var_2_lst : lane_**, var_1 : zero?, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop, v_1, v) + -- if (|var_2_lst| = |c_1_lst|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop, c_1#171, var_2))*{var_2 <- var_2_lst, c_1#171 <- c_1_lst} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop, var_1) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, `%`_dim(v_M))), c_1#169))*{c_1#169 <- c_1_lst} -- (wf_lane_: `%%`(Lnn_2, c#303))*{c#303 <- c_lst#43}*{c_lst#43 <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(v_M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(v_M))) - -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop) = ?())) + -- if ((var_0 = ?()) /\ (var_1 = ?())) -- if (c_1_lst = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(v_M)), v_1)) - -- if (c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop, c_1#171)*{c_1#171 <- c_1_lst})) + -- if (c_lst_lst = $setproduct_(syntax lane_, var_2_lst)) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(v_M)), c_lst#45)*{c_lst#45 <- c_lst_lst}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(v_M)), c_lst#45)*{c_lst#45 <- c_lst_lst}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, v_half : half, c_1_lst : lane_*, c_lst_lst : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, v_half : half, c_1_lst : lane_*, c_lst_lst : lane_**, var_1_lst : lane_**, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- if (|var_1_lst| = |c_1_lst|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#174, var_1))*{var_1 <- var_1_lst, c_1#174 <- c_1_lst} + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1#172))*{c_1#172 <- c_1_lst} -- (wf_lane_: `%%`(Lnn_2, c#306))*{c#306 <- c_lst#46}*{c_lst#46 <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) - -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(v_half)) + -- if (var_0 = ?(v_half)) -- if (c_1_lst = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$fun_half(v_half, 0, M_2) : M_2]) - -- if (c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#174)*{c_1#174 <- c_1_lst})) + -- if (c_lst_lst = $setproduct_(syntax lane_, var_1_lst)) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c_lst#48)*{c_lst#48 <- c_lst_lst}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c_lst#48)*{c_lst#48 <- c_lst_lst}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**, var_2 : lane_, var_1_lst : lane_**, var_0 : zero?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- fun_zero: `%%`(Lnn_2, var_2) + -- if (|var_1_lst| = |c_1_lst|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#177, var_1))*{var_1 <- var_1_lst, c_1#177 <- c_1_lst} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1#175))*{c_1#175 <- c_1_lst} -- (wf_lane_: `%%`(Lnn_2, c#309))*{c#309 <- c_lst#49}*{c_lst#49 <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) - -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) + -- if (var_0 = ?(ZERO_zero)) -- if (c_1_lst = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) - -- if (c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#177)*{c_1#177 <- c_1_lst} ++ [$fun_zero(Lnn_2)]^M_1{})) + -- if (c_lst_lst = $setproduct_(syntax lane_, var_1_lst ++ [var_2]^M_1{})) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c_lst#51)*{c_lst#51 <- c_lst_lst}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c_lst#51)*{c_lst#51 <- c_lst_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vshiftop_(v_ishape : ishape, v_vshiftop_ : vshiftop_, v_vec_ : vec_, v_u32 : u32) : vec_ +relation fun_vshiftop_: `%%%%%`(ishape, vshiftop_, vec_, u32, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ishl_, v, i) + rule fun_vshiftop__case_0{v_M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ishl_, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ishl_, v, i) + rule fun_vshiftop__case_1{v_M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ishl_, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ishl_, v, i) + rule fun_vshiftop__case_2{v_M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ishl_, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ishl_, v, i) + rule fun_vshiftop__case_3{v_M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ishl_, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ishr_, v_sx, v, i) + rule fun_vshiftop__case_4{v_M : nat, v_sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ishr_, v_sx, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ishr_, v_sx, v, i) + rule fun_vshiftop__case_5{v_M : nat, v_sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ishr_, v_sx, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ishr_, v_sx, v, i) + rule fun_vshiftop__case_6{v_M : nat, v_sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ishr_, v_sx, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ishr_, v_sx, v, i) + rule fun_vshiftop__case_7{v_M : nat, v_sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ishr_, v_sx, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vbitmaskop_(v_ishape : ishape, v_vec_ : vec_) : u32 +relation fun_vbitmaskop_: `%%%`(ishape, vec_, u32) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{v_M : nat, v : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v) + rule fun_vbitmaskop__case_0{v_M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(v_M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{v_M : nat, v : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v) + rule fun_vbitmaskop__case_1{v_M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(v_M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{v_M : nat, v : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v) + rule fun_vbitmaskop__case_2{v_M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{v_M : nat, v : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v) + rule fun_vbitmaskop__case_3{v_M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(v_M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vswizzlop_(v_bshape : bshape, v_vswizzlop_ : vswizzlop_, v_vec_ : vec_, v_vec__0 : vec_) : vec_ +relation fun_vswizzlop_: `%%%%%`(bshape, vswizzlop_, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vswizzlop_{v_M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), mk_vswizzlop__0_vswizzlop_(v_M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), def $iswizzle_lane_, v_1, v_2) + rule fun_vswizzlop__case_0{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), mk_vswizzlop__0_vswizzlop_(v_M, SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), def $iswizzle_lane_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vswizzlop_{v_M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), mk_vswizzlop__0_vswizzlop_(v_M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), def $irelaxed_swizzle_lane_, v_1, v_2) + rule fun_vswizzlop__case_1{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), mk_vswizzlop__0_vswizzlop_(v_M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), def $irelaxed_swizzle_lane_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vshufflop_(v_bshape : bshape, var_0 : laneidx*, v_vec_ : vec_, v_vec__0 : vec_) : vec_ +relation fun_vshufflop_: `%%%%%`(bshape, laneidx*, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), i_lst, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), i_lst, v_1, v_2) + rule fun_vshufflop__case_0{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, var_0 : vec_}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), i_lst, v_1, v_2, var_0) + -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), i_lst, v_1, v_2, var_0) -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_ +relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_0{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#178))*{c_1#178 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#115))*{c_2#115 <- c_2_lst} @@ -10404,11 +12903,15 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#1)))*{c'_2#1 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#180) =/= ?()))*{c_1#180 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#180)))*{c_1#180 <- c_1_lst}) + -- (if ($proj_lane__2(c_2#117) =/= ?()))*{c_2#117 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2#117)))*{c_2#117 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#3)*{c'_1#3 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2#3)*{c'_2#3 <- c'_2_lst})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_1{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#181))*{c_1#181 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#118))*{c_2#118 <- c_2_lst} @@ -10418,11 +12921,15 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#4)))*{c'_2#4 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#183) =/= ?()))*{c_1#183 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#183)))*{c_1#183 <- c_1_lst}) + -- (if ($proj_lane__2(c_2#120) =/= ?()))*{c_2#120 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2#120)))*{c_2#120 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#6)*{c'_1#6 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2#6)*{c'_2#6 <- c'_2_lst})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_2{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#184))*{c_1#184 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#121))*{c_2#121 <- c_2_lst} @@ -10432,11 +12939,15 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#7)))*{c'_2#7 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#186) =/= ?()))*{c_1#186 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#186)))*{c_1#186 <- c_1_lst}) + -- (if ($proj_lane__2(c_2#123) =/= ?()))*{c_2#123 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2#123)))*{c_2#123 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#9)*{c'_1#9 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2#9)*{c'_2#9 <- c'_2_lst})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_3{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#187))*{c_1#187 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#124))*{c_2#124 <- c_2_lst} @@ -10446,11 +12957,15 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#10)))*{c'_2#10 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#189) =/= ?()))*{c_1#189 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#189)))*{c_1#189 <- c_1_lst}) + -- (if ($proj_lane__2(c_2#126) =/= ?()))*{c_2#126 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2#126)))*{c_2#126 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#12)*{c'_1#12 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2#12)*{c'_2#12 <- c'_2_lst})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_4{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#190))*{c_1#190 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#127))*{c_2#127 <- c_2_lst} @@ -10460,11 +12975,15 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#13)))*{c'_2#13 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#192) =/= ?()))*{c_1#192 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#192)))*{c_1#192 <- c_1_lst}) + -- (if ($proj_lane__2(c_2#129) =/= ?()))*{c_2#129 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2#129)))*{c_2#129 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#15)*{c'_1#15 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2#15)*{c'_2#15 <- c'_2_lst})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_5{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#193))*{c_1#193 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#130))*{c_2#130 <- c_2_lst} @@ -10474,11 +12993,15 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#16)))*{c'_2#16 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#195) =/= ?()))*{c_1#195 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#195)))*{c_1#195 <- c_1_lst}) + -- (if ($proj_lane__2(c_2#132) =/= ?()))*{c_2#132 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2#132)))*{c_2#132 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#18)*{c'_1#18 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2#18)*{c'_2#18 <- c'_2_lst})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_6{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#196))*{c_1#196 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#133))*{c_2#133 <- c_2_lst} @@ -10488,11 +13011,15 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#19)))*{c'_2#19 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#198) =/= ?()))*{c_1#198 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#198)))*{c_1#198 <- c_1_lst}) + -- (if ($proj_lane__2(c_2#135) =/= ?()))*{c_2#135 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2#135)))*{c_2#135 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#21)*{c'_1#21 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2#21)*{c'_2#21 <- c'_2_lst})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_7{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#199))*{c_1#199 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#136))*{c_2#136 <- c_2_lst} @@ -10502,11 +13029,15 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#22)))*{c'_2#22 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#201) =/= ?()))*{c_1#201 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#201)))*{c_1#201 <- c_1_lst}) + -- (if ($proj_lane__2(c_2#138) =/= ?()))*{c_2#138 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2#138)))*{c_2#138 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#24)*{c'_1#24 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2#24)*{c'_2#24 <- c'_2_lst})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_8{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#202))*{c_1#202 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#139))*{c_2#139 <- c_2_lst} @@ -10516,11 +13047,15 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#25)))*{c'_2#25 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#204) =/= ?()))*{c_1#204 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#204)))*{c_1#204 <- c_1_lst}) + -- (if ($proj_lane__2(c_2#141) =/= ?()))*{c_2#141 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2#141)))*{c_2#141 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#27)*{c'_1#27 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2#27)*{c'_2#27 <- c'_2_lst})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_9{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#205))*{c_1#205 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#142))*{c_2#142 <- c_2_lst} @@ -10530,11 +13065,15 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#28)))*{c'_2#28 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#207) =/= ?()))*{c_1#207 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#207)))*{c_1#207 <- c_1_lst}) + -- (if ($proj_lane__2(c_2#144) =/= ?()))*{c_2#144 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2#144)))*{c_2#144 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#30)*{c'_1#30 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2#30)*{c'_2#30 <- c'_2_lst})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_10{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#208))*{c_1#208 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#145))*{c_2#145 <- c_2_lst} @@ -10544,11 +13083,15 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#31)))*{c'_2#31 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#210) =/= ?()))*{c_1#210 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#210)))*{c_1#210 <- c_1_lst}) + -- (if ($proj_lane__2(c_2#147) =/= ?()))*{c_2#147 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2#147)))*{c_2#147 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#33)*{c'_1#33 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2#33)*{c'_2#33 <- c'_2_lst})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_11{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#211))*{c_1#211 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#148))*{c_2#148 <- c_2_lst} @@ -10558,11 +13101,15 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#34)))*{c'_2#34 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#213) =/= ?()))*{c_1#213 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#213)))*{c_1#213 <- c_1_lst}) + -- (if ($proj_lane__2(c_2#150) =/= ?()))*{c_2#150 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2#150)))*{c_2#150 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#36)*{c'_1#36 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2#36)*{c'_2#36 <- c'_2_lst})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_12{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1#214))*{c_1#214 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2#151))*{c_2#151 <- c_2_lst} @@ -10572,11 +13119,15 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#37)))*{c'_2#37 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#216) =/= ?()))*{c_1#216 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#216)))*{c_1#216 <- c_1_lst}) + -- (if ($proj_lane__2(c_2#153) =/= ?()))*{c_2#153 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2#153)))*{c_2#153 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#39)*{c'_1#39 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2#39)*{c'_2#39 <- c'_2_lst})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_13{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1#217))*{c_1#217 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2#154))*{c_2#154 <- c_2_lst} @@ -10586,11 +13137,15 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#40)))*{c'_2#40 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#219) =/= ?()))*{c_1#219 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#219)))*{c_1#219 <- c_1_lst}) + -- (if ($proj_lane__2(c_2#156) =/= ?()))*{c_2#156 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2#156)))*{c_2#156 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#42)*{c'_1#42 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2#42)*{c'_2#42 <- c'_2_lst})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_14{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1#220))*{c_1#220 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2#157))*{c_2#157 <- c_2_lst} @@ -10600,11 +13155,15 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#43)))*{c'_2#43 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#222) =/= ?()))*{c_1#222 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#222)))*{c_1#222 <- c_1_lst}) + -- (if ($proj_lane__2(c_2#159) =/= ?()))*{c_2#159 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2#159)))*{c_2#159 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#45)*{c'_1#45 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2#45)*{c'_2#45 <- c'_2_lst})) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_15{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1#223))*{c_1#223 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2#160))*{c_2#160 <- c_2_lst} @@ -10614,7 +13173,9 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#46)))*{c'_2#46 <- c'_2_lst} -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) + -- (if ($proj_lane__2(c_1#225) =/= ?()))*{c_1#225 <- c_1_lst} -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#225)))*{c_1#225 <- c_1_lst}) + -- (if ($proj_lane__2(c_2#162) =/= ?()))*{c_2#162 <- c_2_lst} -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2#162)))*{c_2#162 <- c_2_lst}) -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#48)*{c'_1#48 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2#48)*{c'_2#48 <- c'_2_lst})) @@ -10790,69 +13351,100 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vextunop__(ishape_1 : ishape, ishape_2 : ishape, v_vextunop__ : vextunop__, v_vec_ : vec_) : vec_ +relation fun_vextunop__: `%%%%%`(ishape, ishape, vextunop__, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_0{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_1{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_2{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_3{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_4{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_5{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_6{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_7{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_8{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_9{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_10{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_11{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_12{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_13{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_14{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_15{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) @@ -11105,300 +13697,399 @@ def $ivmul_(v_N : N, var_0 : iN*, var_1 : iN*) : iN* def $ivmul_{v_N : nat, i_1_lst : iN*, i_2_lst : iN*}(v_N, i_1_lst, i_2_lst) = $imul_(v_N, i_1, i_2)*{i_1 <- i_1_lst, i_2 <- i_2_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vextbinop__(ishape_1 : ishape, ishape_2 : ishape, v_vextbinop__ : vextbinop__, v_vec_ : vec_, v_vec__0 : vec_) : vec_ +relation fun_vextbinop__: `%%%%%%`(ishape, ishape, vextbinop__, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_0{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_1{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_2{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_3{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_4{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_5{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_6{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_7{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_8{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_9{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_10{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_11{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_12{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_13{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_14{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_15{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_16{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_17{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_18{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_19{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_20{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_21{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_22{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_23{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_24{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_25{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_26{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_27{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_28{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_29{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_30{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_31{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_32{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_33{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_34{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_35{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_36{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_37{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_38{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_39{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_40{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_41{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_42{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_43{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_44{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_45{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_46{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_47{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vextternop__, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_ +relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_0{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11411,11 +14102,17 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_1{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11428,11 +14125,17 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_2{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11445,11 +14148,17 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_3{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11462,11 +14171,17 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_4{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11479,11 +14194,17 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_5{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11496,11 +14217,17 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_6{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11513,11 +14240,17 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_7{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11530,11 +14263,17 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_8{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11547,11 +14286,17 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_9{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11564,11 +14309,17 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_10{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11581,11 +14332,17 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_11{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11598,11 +14355,17 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_12{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11615,11 +14378,17 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_13{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11632,11 +14401,17 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_14{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11649,11 +14424,17 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_15{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11666,9 +14447,10 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- if (c' = var_0) + -- if (c'' = var_1) + -- if (|var_2| > 0) + -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax num = @@ -11930,300 +14712,798 @@ relation wf_fieldval: `%`(fieldval) `%`(`REF.FUNC_ADDR`_fieldval(v_funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_7{v_exnaddr : exnaddr}: - `%`(`REF.EXN_ADDR`_fieldval(v_exnaddr)) + rule fieldval_case_7{v_exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_fieldval(v_exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_8{v_hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_fieldval(v_hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_9{v_ref : ref}: + `%`(`REF.EXTERN`_fieldval(v_ref)) + -- wf_ref: `%`(v_ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_10{v_packtype : packtype, var_0 : iN}: + `%`(PACK_fieldval(v_packtype, var_0)) + -- wf_uN: `%%`($psize(v_packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_structinst: `%`(structinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_arrayinst: `%`(arrayinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exninst = +{ + TAG tagaddr, + FIELDS val* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exninst: `%`(exninst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_case_{var_0 : tagaddr, var_1 : val*}: + `%`({TAG var_0, FIELDS var_1}) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax store = +{ + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_store: `%`(store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: + `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) + -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} + -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} + -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} + -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} + -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} + -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} + -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} + -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} + -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} + -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax state = + | `%;%`(v_store : store, v_frame : frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_state: `%`(state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule state_case_0{v_store : store, v_frame : frame}: + `%`(`%;%`_state(v_store, v_frame)) + -- wf_store: `%`(v_store) + -- wf_frame: `%`(v_frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax config = + | `%;%`(v_state : state, instr_lst : instr*) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_config: `%`(config) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule config_case_0{v_state : state, instr_lst : instr*}: + `%`(`%;%`_config(v_state, instr_lst)) + -- wf_state: `%`(v_state) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $Ki : nat + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $Ki = 1024 + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_packfield__before_fun_packfield__case_9: `%%`(storagetype, val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_8{i : uN}: + `%%`(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) + -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_7{i : uN}: + `%%`(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) + -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_6{v_val : val}: + `%%`(I32_storagetype, v_val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_5{v_val : val}: + `%%`(I64_storagetype, v_val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_4{v_val : val}: + `%%`(F32_storagetype, v_val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_3{v_val : val}: + `%%`(F64_storagetype, v_val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_2{v_val : val}: + `%%`(V128_storagetype, v_val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_1{null_opt : null?, v_heaptype : heaptype, v_val : val}: + `%%`(REF_storagetype(null_opt, v_heaptype), v_val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_0{v_val : val}: + `%%`(BOT_storagetype, v_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_packfield_: `%%%`(storagetype, val, fieldval?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_0{v_val : val}: + `%%%`(BOT_storagetype, v_val, ?($fieldval_val(v_val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_1{null_opt : null?, v_heaptype : heaptype, v_val : val}: + `%%%`(REF_storagetype(null_opt, v_heaptype), v_val, ?($fieldval_val(v_val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_2{v_val : val}: + `%%%`(V128_storagetype, v_val, ?($fieldval_val(v_val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_3{v_val : val}: + `%%%`(F64_storagetype, v_val, ?($fieldval_val(v_val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_4{v_val : val}: + `%%%`(F32_storagetype, v_val, ?($fieldval_val(v_val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_5{v_val : val}: + `%%%`(I64_storagetype, v_val, ?($fieldval_val(v_val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_6{v_val : val}: + `%%%`(I32_storagetype, v_val, ?($fieldval_val(v_val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_7{i : uN}: + `%%%`(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)))) + -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_8{i : uN}: + `%%%`(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)))) + -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_9{x0 : storagetype, x1 : val}: + `%%%`(x0, x1, ?()) + -- ~ fun_packfield__before_fun_packfield__case_9: `%%`(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_unpackfield__before_fun_unpackfield__case_72: `%%%`(storagetype, sx?, fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_71{v_sx : sx, i : uN}: + `%%%`(I16_storagetype, ?(v_sx), PACK_fieldval(I16_packtype, i)) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, v_sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_70{v_sx : sx, i : uN}: + `%%%`(I8_storagetype, ?(v_sx), PACK_fieldval(I8_packtype, i)) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, v_sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_69{v_numtype : numtype, var_0 : num_}: + `%%%`(I32_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_68{v_numtype : numtype, var_0 : num_}: + `%%%`(I64_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_67{v_numtype : numtype, var_0 : num_}: + `%%%`(F32_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_66{v_numtype : numtype, var_0 : num_}: + `%%%`(F64_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_65{v_numtype : numtype, var_0 : num_}: + `%%%`(V128_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_64{v_numtype : numtype, var_0 : num_, null_opt : null?, v_heaptype : heaptype}: + `%%%`(REF_storagetype(null_opt, v_heaptype), ?(), CONST_fieldval(v_numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_63{v_numtype : numtype, var_0 : num_}: + `%%%`(BOT_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_62{v_vectype : vectype, var_1 : vec_}: + `%%%`(I32_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_61{v_vectype : vectype, var_1 : vec_}: + `%%%`(I64_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_60{v_vectype : vectype, var_1 : vec_}: + `%%%`(F32_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_59{v_vectype : vectype, var_1 : vec_}: + `%%%`(F64_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_58{v_vectype : vectype, var_1 : vec_}: + `%%%`(V128_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_57{v_vectype : vectype, var_1 : vec_, null_opt : null?, v_heaptype : heaptype}: + `%%%`(REF_storagetype(null_opt, v_heaptype), ?(), VCONST_fieldval(v_vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_56{v_vectype : vectype, var_1 : vec_}: + `%%%`(BOT_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_55{v_u31 : u31}: + `%%%`(I32_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_54{v_u31 : u31}: + `%%%`(I64_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_53{v_u31 : u31}: + `%%%`(F32_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_52{v_u31 : u31}: + `%%%`(F64_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_51{v_u31 : u31}: + `%%%`(V128_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_50{v_u31 : u31, null_opt : null?, v_heaptype : heaptype}: + `%%%`(REF_storagetype(null_opt, v_heaptype), ?(), `REF.I31_NUM`_fieldval(v_u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_49{v_u31 : u31}: + `%%%`(BOT_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_48: + `%%%`(I32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_47: + `%%%`(I64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_46: + `%%%`(F32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_45: + `%%%`(F64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_44: + `%%%`(V128_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_43{null_opt : null?, v_heaptype : heaptype}: + `%%%`(REF_storagetype(null_opt, v_heaptype), ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_42: + `%%%`(BOT_storagetype, ?(), `REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_41{v_structaddr : structaddr}: + `%%%`(I32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_40{v_structaddr : structaddr}: + `%%%`(I64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_39{v_structaddr : structaddr}: + `%%%`(F32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_38{v_structaddr : structaddr}: + `%%%`(F64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_37{v_structaddr : structaddr}: + `%%%`(V128_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_36{v_structaddr : structaddr, null_opt : null?, v_heaptype : heaptype}: + `%%%`(REF_storagetype(null_opt, v_heaptype), ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_35{v_structaddr : structaddr}: + `%%%`(BOT_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_34{v_arrayaddr : arrayaddr}: + `%%%`(I32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_33{v_arrayaddr : arrayaddr}: + `%%%`(I64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_32{v_arrayaddr : arrayaddr}: + `%%%`(F32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_31{v_arrayaddr : arrayaddr}: + `%%%`(F64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_30{v_arrayaddr : arrayaddr}: + `%%%`(V128_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_29{v_arrayaddr : arrayaddr, null_opt : null?, v_heaptype : heaptype}: + `%%%`(REF_storagetype(null_opt, v_heaptype), ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_28{v_arrayaddr : arrayaddr}: + `%%%`(BOT_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_27{v_funcaddr : funcaddr}: + `%%%`(I32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_26{v_funcaddr : funcaddr}: + `%%%`(I64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_25{v_funcaddr : funcaddr}: + `%%%`(F32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_8{v_hostaddr : hostaddr}: - `%`(`REF.HOST_ADDR`_fieldval(v_hostaddr)) + rule fun_unpackfield__case_24{v_funcaddr : funcaddr}: + `%%%`(F64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_9{v_ref : ref}: - `%`(`REF.EXTERN`_fieldval(v_ref)) - -- wf_ref: `%`(v_ref) + rule fun_unpackfield__case_23{v_funcaddr : funcaddr}: + `%%%`(V128_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_10{v_packtype : packtype, var_0 : iN}: - `%`(PACK_fieldval(v_packtype, var_0)) - -- wf_uN: `%%`($psize(v_packtype), var_0) + rule fun_unpackfield__case_22{v_funcaddr : funcaddr, null_opt : null?, v_heaptype : heaptype}: + `%%%`(REF_storagetype(null_opt, v_heaptype), ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax structinst = -{ - TYPE deftype, - FIELDS fieldval* -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_21{v_funcaddr : funcaddr}: + `%%%`(BOT_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_structinst: `%`(structinst) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: - `%`({TYPE var_0, FIELDS var_1}) - -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + rule fun_unpackfield__case_20{v_exnaddr : exnaddr}: + `%%%`(I32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax arrayinst = -{ - TYPE deftype, - FIELDS fieldval* -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_19{v_exnaddr : exnaddr}: + `%%%`(I64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_arrayinst: `%`(arrayinst) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: - `%`({TYPE var_0, FIELDS var_1}) - -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + rule fun_unpackfield__case_18{v_exnaddr : exnaddr}: + `%%%`(F32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax exninst = -{ - TAG tagaddr, - FIELDS val* -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_17{v_exnaddr : exnaddr}: + `%%%`(F64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_exninst: `%`(exninst) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule exninst_case_{var_0 : tagaddr, var_1 : val*}: - `%`({TAG var_0, FIELDS var_1}) - -- (wf_val: `%`(var_1))*{var_1 <- var_1} + rule fun_unpackfield__case_16{v_exnaddr : exnaddr}: + `%%%`(V128_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax store = -{ - TAGS taginst*, - GLOBALS globalinst*, - MEMS meminst*, - TABLES tableinst*, - FUNCS funcinst*, - DATAS datainst*, - ELEMS eleminst*, - STRUCTS structinst*, - ARRAYS arrayinst*, - EXNS exninst* -} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_15{v_exnaddr : exnaddr, null_opt : null?, v_heaptype : heaptype}: + `%%%`(REF_storagetype(null_opt, v_heaptype), ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_store: `%`(store) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: - `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) - -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} - -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} - -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} - -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} - -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} - -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} - -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} - -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} - -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} - -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + rule fun_unpackfield__case_14{v_exnaddr : exnaddr}: + `%%%`(BOT_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax state = - | `%;%`(v_store : store, v_frame : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_13{v_hostaddr : hostaddr}: + `%%%`(I32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_state: `%`(state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule state_case_0{v_store : store, v_frame : frame}: - `%`(`%;%`_state(v_store, v_frame)) - -- wf_store: `%`(v_store) - -- wf_frame: `%`(v_frame) + rule fun_unpackfield__case_12{v_hostaddr : hostaddr}: + `%%%`(I64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax config = - | `%;%`(v_state : state, instr_lst : instr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_11{v_hostaddr : hostaddr}: + `%%%`(F32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_config: `%`(config) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule config_case_0{v_state : state, instr_lst : instr*}: - `%`(`%;%`_config(v_state, instr_lst)) - -- wf_state: `%`(v_state) - -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + rule fun_unpackfield__case_10{v_hostaddr : hostaddr}: + `%%%`(F64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $Ki : nat ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $Ki = 1024 + rule fun_unpackfield__case_9{v_hostaddr : hostaddr}: + `%%%`(V128_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $packfield_(v_storagetype : storagetype, v_val : val) : fieldval? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{v_val : val}(BOT_storagetype, v_val) = ?($fieldval_val(v_val)) + rule fun_unpackfield__case_8{v_hostaddr : hostaddr, null_opt : null?, v_heaptype : heaptype}: + `%%%`(REF_storagetype(null_opt, v_heaptype), ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{null_opt : null?, v_heaptype : heaptype, v_val : val}(REF_storagetype(null_opt, v_heaptype), v_val) = ?($fieldval_val(v_val)) + rule fun_unpackfield__case_7{v_hostaddr : hostaddr}: + `%%%`(BOT_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{v_val : val}(V128_storagetype, v_val) = ?($fieldval_val(v_val)) + rule fun_unpackfield__case_6{v_ref : ref}: + `%%%`(I32_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{v_val : val}(F64_storagetype, v_val) = ?($fieldval_val(v_val)) + rule fun_unpackfield__case_5{v_ref : ref}: + `%%%`(I64_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{v_val : val}(F32_storagetype, v_val) = ?($fieldval_val(v_val)) + rule fun_unpackfield__case_4{v_ref : ref}: + `%%%`(F32_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{v_val : val}(I64_storagetype, v_val) = ?($fieldval_val(v_val)) + rule fun_unpackfield__case_3{v_ref : ref}: + `%%%`(F64_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{v_val : val}(I32_storagetype, v_val) = ?($fieldval_val(v_val)) + rule fun_unpackfield__case_2{v_ref : ref}: + `%%%`(V128_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + rule fun_unpackfield__case_1{v_ref : ref, null_opt : null?, v_heaptype : heaptype}: + `%%%`(REF_storagetype(null_opt, v_heaptype), ?(), `REF.EXTERN`_fieldval(v_ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) - def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() - -- otherwise + rule fun_unpackfield__case_0{v_ref : ref}: + `%%%`(BOT_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $unpackfield_(v_storagetype : storagetype, var_0 : sx?, v_fieldval : fieldval) : val? +relation fun_unpackfield_: `%%%%`(storagetype, sx?, fieldval, val?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_ref : ref}(BOT_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) = ?(`REF.EXTERN`_val(v_ref)) + rule fun_unpackfield__case_0{v_ref : ref}: + `%%%%`(BOT_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref), ?(`REF.EXTERN`_val(v_ref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_ref : ref, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), `REF.EXTERN`_fieldval(v_ref)) = ?(`REF.EXTERN`_val(v_ref)) + rule fun_unpackfield__case_1{v_ref : ref, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), `REF.EXTERN`_fieldval(v_ref), ?(`REF.EXTERN`_val(v_ref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_ref : ref}(V128_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) = ?(`REF.EXTERN`_val(v_ref)) + rule fun_unpackfield__case_2{v_ref : ref}: + `%%%%`(V128_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref), ?(`REF.EXTERN`_val(v_ref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_ref : ref}(F64_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) = ?(`REF.EXTERN`_val(v_ref)) + rule fun_unpackfield__case_3{v_ref : ref}: + `%%%%`(F64_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref), ?(`REF.EXTERN`_val(v_ref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_ref : ref}(F32_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) = ?(`REF.EXTERN`_val(v_ref)) + rule fun_unpackfield__case_4{v_ref : ref}: + `%%%%`(F32_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref), ?(`REF.EXTERN`_val(v_ref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_ref : ref}(I64_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) = ?(`REF.EXTERN`_val(v_ref)) + rule fun_unpackfield__case_5{v_ref : ref}: + `%%%%`(I64_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref), ?(`REF.EXTERN`_val(v_ref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_ref : ref}(I32_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) = ?(`REF.EXTERN`_val(v_ref)) + rule fun_unpackfield__case_6{v_ref : ref}: + `%%%%`(I32_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref), ?(`REF.EXTERN`_val(v_ref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(BOT_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) = ?(`REF.HOST_ADDR`_val(v_hostaddr)) + rule fun_unpackfield__case_7{v_hostaddr : hostaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr), ?(`REF.HOST_ADDR`_val(v_hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) = ?(`REF.HOST_ADDR`_val(v_hostaddr)) + rule fun_unpackfield__case_8{v_hostaddr : hostaddr, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr), ?(`REF.HOST_ADDR`_val(v_hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(V128_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) = ?(`REF.HOST_ADDR`_val(v_hostaddr)) + rule fun_unpackfield__case_9{v_hostaddr : hostaddr}: + `%%%%`(V128_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr), ?(`REF.HOST_ADDR`_val(v_hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(F64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) = ?(`REF.HOST_ADDR`_val(v_hostaddr)) + rule fun_unpackfield__case_10{v_hostaddr : hostaddr}: + `%%%%`(F64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr), ?(`REF.HOST_ADDR`_val(v_hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(F32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) = ?(`REF.HOST_ADDR`_val(v_hostaddr)) + rule fun_unpackfield__case_11{v_hostaddr : hostaddr}: + `%%%%`(F32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr), ?(`REF.HOST_ADDR`_val(v_hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(I64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) = ?(`REF.HOST_ADDR`_val(v_hostaddr)) + rule fun_unpackfield__case_12{v_hostaddr : hostaddr}: + `%%%%`(I64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr), ?(`REF.HOST_ADDR`_val(v_hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(I32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) = ?(`REF.HOST_ADDR`_val(v_hostaddr)) + rule fun_unpackfield__case_13{v_hostaddr : hostaddr}: + `%%%%`(I32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr), ?(`REF.HOST_ADDR`_val(v_hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(BOT_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) = ?(`REF.EXN_ADDR`_val(v_exnaddr)) + rule fun_unpackfield__case_14{v_exnaddr : exnaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr), ?(`REF.EXN_ADDR`_val(v_exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) = ?(`REF.EXN_ADDR`_val(v_exnaddr)) + rule fun_unpackfield__case_15{v_exnaddr : exnaddr, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr), ?(`REF.EXN_ADDR`_val(v_exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(V128_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) = ?(`REF.EXN_ADDR`_val(v_exnaddr)) + rule fun_unpackfield__case_16{v_exnaddr : exnaddr}: + `%%%%`(V128_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr), ?(`REF.EXN_ADDR`_val(v_exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(F64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) = ?(`REF.EXN_ADDR`_val(v_exnaddr)) + rule fun_unpackfield__case_17{v_exnaddr : exnaddr}: + `%%%%`(F64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr), ?(`REF.EXN_ADDR`_val(v_exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(F32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) = ?(`REF.EXN_ADDR`_val(v_exnaddr)) + rule fun_unpackfield__case_18{v_exnaddr : exnaddr}: + `%%%%`(F32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr), ?(`REF.EXN_ADDR`_val(v_exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(I64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) = ?(`REF.EXN_ADDR`_val(v_exnaddr)) + rule fun_unpackfield__case_19{v_exnaddr : exnaddr}: + `%%%%`(I64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr), ?(`REF.EXN_ADDR`_val(v_exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(I32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) = ?(`REF.EXN_ADDR`_val(v_exnaddr)) + rule fun_unpackfield__case_20{v_exnaddr : exnaddr}: + `%%%%`(I32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr), ?(`REF.EXN_ADDR`_val(v_exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(BOT_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) = ?(`REF.FUNC_ADDR`_val(v_funcaddr)) + rule fun_unpackfield__case_21{v_funcaddr : funcaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr), ?(`REF.FUNC_ADDR`_val(v_funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) = ?(`REF.FUNC_ADDR`_val(v_funcaddr)) + rule fun_unpackfield__case_22{v_funcaddr : funcaddr, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr), ?(`REF.FUNC_ADDR`_val(v_funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(V128_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) = ?(`REF.FUNC_ADDR`_val(v_funcaddr)) + rule fun_unpackfield__case_23{v_funcaddr : funcaddr}: + `%%%%`(V128_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr), ?(`REF.FUNC_ADDR`_val(v_funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(F64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) = ?(`REF.FUNC_ADDR`_val(v_funcaddr)) + rule fun_unpackfield__case_24{v_funcaddr : funcaddr}: + `%%%%`(F64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr), ?(`REF.FUNC_ADDR`_val(v_funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(F32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) = ?(`REF.FUNC_ADDR`_val(v_funcaddr)) + rule fun_unpackfield__case_25{v_funcaddr : funcaddr}: + `%%%%`(F32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr), ?(`REF.FUNC_ADDR`_val(v_funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(I64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) = ?(`REF.FUNC_ADDR`_val(v_funcaddr)) + rule fun_unpackfield__case_26{v_funcaddr : funcaddr}: + `%%%%`(I64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr), ?(`REF.FUNC_ADDR`_val(v_funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(I32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) = ?(`REF.FUNC_ADDR`_val(v_funcaddr)) + rule fun_unpackfield__case_27{v_funcaddr : funcaddr}: + `%%%%`(I32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr), ?(`REF.FUNC_ADDR`_val(v_funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(BOT_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(v_arrayaddr)) + rule fun_unpackfield__case_28{v_arrayaddr : arrayaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr), ?(`REF.ARRAY_ADDR`_val(v_arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(v_arrayaddr)) + rule fun_unpackfield__case_29{v_arrayaddr : arrayaddr, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr), ?(`REF.ARRAY_ADDR`_val(v_arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(V128_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(v_arrayaddr)) + rule fun_unpackfield__case_30{v_arrayaddr : arrayaddr}: + `%%%%`(V128_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr), ?(`REF.ARRAY_ADDR`_val(v_arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(F64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(v_arrayaddr)) + rule fun_unpackfield__case_31{v_arrayaddr : arrayaddr}: + `%%%%`(F64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr), ?(`REF.ARRAY_ADDR`_val(v_arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(F32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(v_arrayaddr)) + rule fun_unpackfield__case_32{v_arrayaddr : arrayaddr}: + `%%%%`(F32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr), ?(`REF.ARRAY_ADDR`_val(v_arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(I64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(v_arrayaddr)) + rule fun_unpackfield__case_33{v_arrayaddr : arrayaddr}: + `%%%%`(I64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr), ?(`REF.ARRAY_ADDR`_val(v_arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(I32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(v_arrayaddr)) + rule fun_unpackfield__case_34{v_arrayaddr : arrayaddr}: + `%%%%`(I32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr), ?(`REF.ARRAY_ADDR`_val(v_arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(BOT_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) = ?(`REF.STRUCT_ADDR`_val(v_structaddr)) + rule fun_unpackfield__case_35{v_structaddr : structaddr}: + `%%%%`(BOT_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr), ?(`REF.STRUCT_ADDR`_val(v_structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) = ?(`REF.STRUCT_ADDR`_val(v_structaddr)) + rule fun_unpackfield__case_36{v_structaddr : structaddr, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr), ?(`REF.STRUCT_ADDR`_val(v_structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(V128_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) = ?(`REF.STRUCT_ADDR`_val(v_structaddr)) + rule fun_unpackfield__case_37{v_structaddr : structaddr}: + `%%%%`(V128_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr), ?(`REF.STRUCT_ADDR`_val(v_structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(F64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) = ?(`REF.STRUCT_ADDR`_val(v_structaddr)) + rule fun_unpackfield__case_38{v_structaddr : structaddr}: + `%%%%`(F64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr), ?(`REF.STRUCT_ADDR`_val(v_structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(F32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) = ?(`REF.STRUCT_ADDR`_val(v_structaddr)) + rule fun_unpackfield__case_39{v_structaddr : structaddr}: + `%%%%`(F32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr), ?(`REF.STRUCT_ADDR`_val(v_structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(I64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) = ?(`REF.STRUCT_ADDR`_val(v_structaddr)) + rule fun_unpackfield__case_40{v_structaddr : structaddr}: + `%%%%`(I64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr), ?(`REF.STRUCT_ADDR`_val(v_structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(I32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) = ?(`REF.STRUCT_ADDR`_val(v_structaddr)) + rule fun_unpackfield__case_41{v_structaddr : structaddr}: + `%%%%`(I32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr), ?(`REF.STRUCT_ADDR`_val(v_structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(BOT_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + rule fun_unpackfield__case_42: + `%%%%`(BOT_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + rule fun_unpackfield__case_43{null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(V128_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + rule fun_unpackfield__case_44: + `%%%%`(V128_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(F64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + rule fun_unpackfield__case_45: + `%%%%`(F64_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(F32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + rule fun_unpackfield__case_46: + `%%%%`(F32_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(I64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + rule fun_unpackfield__case_47: + `%%%%`(I64_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(I32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + rule fun_unpackfield__case_48: + `%%%%`(I32_storagetype, ?(), `REF.NULL_ADDR`_fieldval, ?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(BOT_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) = ?(`REF.I31_NUM`_val(v_u31)) + rule fun_unpackfield__case_49{v_u31 : u31}: + `%%%%`(BOT_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31), ?(`REF.I31_NUM`_val(v_u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), `REF.I31_NUM`_fieldval(v_u31)) = ?(`REF.I31_NUM`_val(v_u31)) + rule fun_unpackfield__case_50{v_u31 : u31, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), `REF.I31_NUM`_fieldval(v_u31), ?(`REF.I31_NUM`_val(v_u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(V128_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) = ?(`REF.I31_NUM`_val(v_u31)) + rule fun_unpackfield__case_51{v_u31 : u31}: + `%%%%`(V128_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31), ?(`REF.I31_NUM`_val(v_u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(F64_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) = ?(`REF.I31_NUM`_val(v_u31)) + rule fun_unpackfield__case_52{v_u31 : u31}: + `%%%%`(F64_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31), ?(`REF.I31_NUM`_val(v_u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(F32_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) = ?(`REF.I31_NUM`_val(v_u31)) + rule fun_unpackfield__case_53{v_u31 : u31}: + `%%%%`(F32_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31), ?(`REF.I31_NUM`_val(v_u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(I64_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) = ?(`REF.I31_NUM`_val(v_u31)) + rule fun_unpackfield__case_54{v_u31 : u31}: + `%%%%`(I64_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31), ?(`REF.I31_NUM`_val(v_u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(I32_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) = ?(`REF.I31_NUM`_val(v_u31)) + rule fun_unpackfield__case_55{v_u31 : u31}: + `%%%%`(I32_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31), ?(`REF.I31_NUM`_val(v_u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_vectype : vectype, var_1 : vec_}(BOT_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) = ?(VCONST_val(v_vectype, var_1)) + rule fun_unpackfield__case_56{v_vectype : vectype, var_1 : vec_}: + `%%%%`(BOT_storagetype, ?(), VCONST_fieldval(v_vectype, var_1), ?(VCONST_val(v_vectype, var_1))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_vectype : vectype, var_1 : vec_, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), VCONST_fieldval(v_vectype, var_1)) = ?(VCONST_val(v_vectype, var_1)) + rule fun_unpackfield__case_57{v_vectype : vectype, var_1 : vec_, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), VCONST_fieldval(v_vectype, var_1), ?(VCONST_val(v_vectype, var_1))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_vectype : vectype, var_1 : vec_}(V128_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) = ?(VCONST_val(v_vectype, var_1)) + rule fun_unpackfield__case_58{v_vectype : vectype, var_1 : vec_}: + `%%%%`(V128_storagetype, ?(), VCONST_fieldval(v_vectype, var_1), ?(VCONST_val(v_vectype, var_1))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_vectype : vectype, var_1 : vec_}(F64_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) = ?(VCONST_val(v_vectype, var_1)) + rule fun_unpackfield__case_59{v_vectype : vectype, var_1 : vec_}: + `%%%%`(F64_storagetype, ?(), VCONST_fieldval(v_vectype, var_1), ?(VCONST_val(v_vectype, var_1))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_vectype : vectype, var_1 : vec_}(F32_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) = ?(VCONST_val(v_vectype, var_1)) + rule fun_unpackfield__case_60{v_vectype : vectype, var_1 : vec_}: + `%%%%`(F32_storagetype, ?(), VCONST_fieldval(v_vectype, var_1), ?(VCONST_val(v_vectype, var_1))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_vectype : vectype, var_1 : vec_}(I64_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) = ?(VCONST_val(v_vectype, var_1)) + rule fun_unpackfield__case_61{v_vectype : vectype, var_1 : vec_}: + `%%%%`(I64_storagetype, ?(), VCONST_fieldval(v_vectype, var_1), ?(VCONST_val(v_vectype, var_1))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_vectype : vectype, var_1 : vec_}(I32_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) = ?(VCONST_val(v_vectype, var_1)) + rule fun_unpackfield__case_62{v_vectype : vectype, var_1 : vec_}: + `%%%%`(I32_storagetype, ?(), VCONST_fieldval(v_vectype, var_1), ?(VCONST_val(v_vectype, var_1))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_numtype : numtype, var_0 : num_}(BOT_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) = ?(CONST_val(v_numtype, var_0)) + rule fun_unpackfield__case_63{v_numtype : numtype, var_0 : num_}: + `%%%%`(BOT_storagetype, ?(), CONST_fieldval(v_numtype, var_0), ?(CONST_val(v_numtype, var_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_numtype : numtype, var_0 : num_, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), CONST_fieldval(v_numtype, var_0)) = ?(CONST_val(v_numtype, var_0)) + rule fun_unpackfield__case_64{v_numtype : numtype, var_0 : num_, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), CONST_fieldval(v_numtype, var_0), ?(CONST_val(v_numtype, var_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_numtype : numtype, var_0 : num_}(V128_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) = ?(CONST_val(v_numtype, var_0)) + rule fun_unpackfield__case_65{v_numtype : numtype, var_0 : num_}: + `%%%%`(V128_storagetype, ?(), CONST_fieldval(v_numtype, var_0), ?(CONST_val(v_numtype, var_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_numtype : numtype, var_0 : num_}(F64_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) = ?(CONST_val(v_numtype, var_0)) + rule fun_unpackfield__case_66{v_numtype : numtype, var_0 : num_}: + `%%%%`(F64_storagetype, ?(), CONST_fieldval(v_numtype, var_0), ?(CONST_val(v_numtype, var_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_numtype : numtype, var_0 : num_}(F32_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) = ?(CONST_val(v_numtype, var_0)) + rule fun_unpackfield__case_67{v_numtype : numtype, var_0 : num_}: + `%%%%`(F32_storagetype, ?(), CONST_fieldval(v_numtype, var_0), ?(CONST_val(v_numtype, var_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_numtype : numtype, var_0 : num_}(I64_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) = ?(CONST_val(v_numtype, var_0)) + rule fun_unpackfield__case_68{v_numtype : numtype, var_0 : num_}: + `%%%%`(I64_storagetype, ?(), CONST_fieldval(v_numtype, var_0), ?(CONST_val(v_numtype, var_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_numtype : numtype, var_0 : num_}(I32_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) = ?(CONST_val(v_numtype, var_0)) + rule fun_unpackfield__case_69{v_numtype : numtype, var_0 : num_}: + `%%%%`(I32_storagetype, ?(), CONST_fieldval(v_numtype, var_0), ?(CONST_val(v_numtype, var_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_sx : sx, i : uN}(I8_storagetype, ?(v_sx), PACK_fieldval(I8_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, v_sx, i)))) + rule fun_unpackfield__case_70{v_sx : sx, i : uN}: + `%%%%`(I8_storagetype, ?(v_sx), PACK_fieldval(I8_packtype, i), ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, v_sx, i))))) -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, v_sx, i)))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_sx : sx, i : uN}(I16_storagetype, ?(v_sx), PACK_fieldval(I16_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, v_sx, i)))) + rule fun_unpackfield__case_71{v_sx : sx, i : uN}: + `%%%%`(I16_storagetype, ?(v_sx), PACK_fieldval(I16_packtype, i), ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, v_sx, i))))) -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, v_sx, i)))) - def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() - -- otherwise + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_72{x0 : storagetype, x1 : sx?, x2 : fieldval}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_unpackfield__before_fun_unpackfield__case_72: `%%%`(x0, x1, x2) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -12416,87 +15696,108 @@ def $fun_local(v_state : state, v_localidx : localidx) : val? def $fun_local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[$proj_uN_0(x).0] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_local(v_state : state, v_localidx : localidx, v_val : val) : state +relation fun_with_local: `%%%%`(state, localidx, val, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + rule fun_with_local_case_0{z : state, x : uN, v : val}: + `%%%%`(z, x, v, `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) -- wf_state: `%`(`%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_global(v_state : state, v_globalidx : globalidx, v_val : val) : state +relation fun_with_global: `%%%%`(state, globalidx, val, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z)) + rule fun_with_global_case_0{z : state, x : uN, v : val}: + `%%%%`(z, x, v, `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.GLOBALS_moduleinst|) -- wf_state: `%`(`%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_table(v_state : state, v_tableidx : tableidx, nat : nat, v_ref : ref) : state +relation fun_with_table: `%%%%%`(state, tableidx, nat, ref, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z)) + rule fun_with_table_case_0{z : state, x : uN, i : nat, r : ref}: + `%%%%%`(z, x, i, r, `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.TABLES_moduleinst|) -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_tableinst(v_state : state, v_tableidx : tableidx, v_tableinst : tableinst) : state +relation fun_with_tableinst: `%%%%`(state, tableidx, tableinst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z)) + rule fun_with_tableinst_case_0{z : state, x : uN, ti : tableinst}: + `%%%%`(z, x, ti, `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.TABLES_moduleinst|) -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_mem(v_state : state, v_memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*) : state +relation fun_with_mem: `%%%%%%`(state, memidx, nat, nat, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_mem{z : state, x : uN, i : nat, j : nat, b_lst : byte*}(z, x, i, j, b_lst) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b_lst], $fof(z)) + rule fun_with_mem_case_0{z : state, x : uN, i : nat, j : nat, b_lst : byte*}: + `%%%%%%`(z, x, i, j, b_lst, `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b_lst], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.MEMS_moduleinst|) -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b_lst], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_meminst(v_state : state, v_memidx : memidx, v_meminst : meminst) : state +relation fun_with_meminst: `%%%%`(state, memidx, meminst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z)) + rule fun_with_meminst_case_0{z : state, x : uN, mi : meminst}: + `%%%%`(z, x, mi, `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.MEMS_moduleinst|) -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_elem(v_state : state, v_elemidx : elemidx, var_0 : ref*) : state +relation fun_with_elem: `%%%%`(state, elemidx, ref*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_elem{z : state, x : uN, r_lst : ref*}(z, x, r_lst) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r_lst], $fof(z)) + rule fun_with_elem_case_0{z : state, x : uN, r_lst : ref*}: + `%%%%`(z, x, r_lst, `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r_lst], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.ELEMS_moduleinst|) -- wf_state: `%`(`%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r_lst], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_data(v_state : state, v_dataidx : dataidx, var_0 : byte*) : state +relation fun_with_data: `%%%%`(state, dataidx, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_data{z : state, x : uN, b_lst : byte*}(z, x, b_lst) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b_lst], $fof(z)) + rule fun_with_data_case_0{z : state, x : uN, b_lst : byte*}: + `%%%%`(z, x, b_lst, `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b_lst], $fof(z))) + -- if ($proj_uN_0(x).0 < |$fof(z).MODULE_frame.DATAS_moduleinst|) -- wf_state: `%`(`%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b_lst], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_struct(v_state : state, v_structaddr : structaddr, nat : nat, v_fieldval : fieldval) : state +relation fun_with_struct: `%%%%%`(state, structaddr, nat, fieldval, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) + rule fun_with_struct_case_0{z : state, a : nat, i : nat, fv : fieldval}: + `%%%%%`(z, a, i, fv, `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_array(v_state : state, v_arrayaddr : arrayaddr, nat : nat, v_fieldval : fieldval) : state +relation fun_with_array: `%%%%%`(state, arrayaddr, nat, fieldval, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) + rule fun_with_array_case_0{z : state, a : nat, i : nat, fv : fieldval}: + `%%%%%`(z, a, i, fv, `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_structinst(v_state : state, var_0 : structinst*) : state +relation fun_add_structinst: `%%%`(state, structinst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_structinst{z : state, si_lst : structinst*}(z, si_lst) = `%;%`_state($sof(z)[STRUCTS_store =++ si_lst], $fof(z)) + rule fun_add_structinst_case_0{z : state, si_lst : structinst*}: + `%%%`(z, si_lst, `%;%`_state($sof(z)[STRUCTS_store =++ si_lst], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store =++ si_lst], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_arrayinst(v_state : state, var_0 : arrayinst*) : state +relation fun_add_arrayinst: `%%%`(state, arrayinst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_arrayinst{z : state, ai_lst : arrayinst*}(z, ai_lst) = `%;%`_state($sof(z)[ARRAYS_store =++ ai_lst], $fof(z)) + rule fun_add_arrayinst_case_0{z : state, ai_lst : arrayinst*}: + `%%%`(z, ai_lst, `%;%`_state($sof(z)[ARRAYS_store =++ ai_lst], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store =++ ai_lst], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_exninst(v_state : state, var_0 : exninst*) : state +relation fun_add_exninst: `%%%`(state, exninst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_exninst{z : state, exn_lst : exninst*}(z, exn_lst) = `%;%`_state($sof(z)[EXNS_store =++ exn_lst], $fof(z)) + rule fun_add_exninst_case_0{z : state, exn_lst : exninst*}: + `%%%`(z, exn_lst, `%;%`_state($sof(z)[EXNS_store =++ exn_lst], $fof(z))) -- wf_state: `%`(`%;%`_state($sof(z)[EXNS_store =++ exn_lst], $fof(z))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $growtable(v_tableinst : tableinst, nat : nat, v_ref : ref) : tableinst? +relation fun_growtable_before_fun_growtable_case_1: `%%%`(tableinst, nat, ref) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $growtable{v_tableinst : tableinst, v_n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, j_opt : u64?, rt : reftype, r'_lst : ref*, i' : uN}(v_tableinst, v_n, r) = ?(tableinst') + rule fun_growtable_case_0{v_tableinst : tableinst, v_n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, j_opt : u64?, rt : reftype, r'_lst : ref*, i' : uN}: + `%%%`(v_tableinst, v_n, r) -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j_opt), rt), REFS r'_lst}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) @@ -12505,13 +15806,31 @@ def $growtable(v_tableinst : tableinst, nat : nat, v_ref : ref) : tableinst? -- if ($proj_uN_0(i').0 = (|r'_lst| + v_n)) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#5).0))?{j#5 <- j_opt} -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) - def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() - -- otherwise ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $growmem(v_meminst : meminst, nat : nat) : meminst? +relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_0{v_tableinst : tableinst, v_n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, j_opt : u64?, rt : reftype, r'_lst : ref*, i' : uN}: + `%%%%`(v_tableinst, v_n, r, ?(tableinst')) + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j_opt), rt), REFS r'_lst}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) + -- if (v_tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j_opt), rt), REFS r'_lst}) + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) + -- if ($proj_uN_0(i').0 = (|r'_lst| + v_n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#5).0))?{j#5 <- j_opt} + -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_1{x0 : tableinst, x1 : nat, x2 : ref}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_growtable_before_fun_growtable_case_1: `%%%`(x0, x1, x2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem_before_fun_growmem_case_1: `%%`(meminst, nat) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $growmem{v_meminst : meminst, v_n : nat, meminst' : meminst, at : addrtype, i : uN, j_opt : u64?, b_lst : byte*, i' : uN}(v_meminst, v_n) = ?(meminst') + rule fun_growmem_case_0{v_meminst : meminst, v_n : nat, meminst' : meminst, at : addrtype, i : uN, j_opt : u64?, b_lst : byte*, i' : uN}: + `%%`(v_meminst, v_n) -- wf_meminst: `%`(meminst') -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j_opt)), BYTES b_lst}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j_opt)), BYTES b_lst ++ `%`_byte(0)^(v_n * (64 * $Ki)){}}) @@ -12520,8 +15839,25 @@ def $growmem(v_meminst : meminst, nat : nat) : meminst? -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b_lst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (v_n : nat <:> rat))) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#10).0))?{j#10 <- j_opt} -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() - -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem: `%%%`(meminst, nat, meminst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_0{v_meminst : meminst, v_n : nat, meminst' : meminst, at : addrtype, i : uN, j_opt : u64?, b_lst : byte*, i' : uN}: + `%%%`(v_meminst, v_n, ?(meminst')) + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j_opt)), BYTES b_lst}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j_opt)), BYTES b_lst ++ `%`_byte(0)^(v_n * (64 * $Ki)){}}) + -- if (v_meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j_opt)), BYTES b_lst}) + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j_opt)), BYTES b_lst ++ `%`_byte(0)^(v_n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b_lst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (v_n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#10).0))?{j#10 <- j_opt} + -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_1{x0 : meminst, x1 : nat}: + `%%%`(x0, x1, ?()) + -- ~ fun_growmem_before_fun_growmem_case_1: `%%`(x0, x1) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) @@ -12731,29 +16067,39 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) } ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_valtype(v_moduleinst : moduleinst, v_valtype : valtype) : valtype +relation fun_inst_valtype: `%%%`(moduleinst, valtype, valtype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_valtype{v_moduleinst : moduleinst, t : valtype}(v_moduleinst, t) = $subst_all_valtype(t, (iter_val#3 : deftype <: typeuse)*{iter_val#3 <- v_moduleinst.TYPES_moduleinst}) + rule fun_inst_valtype_case_0{v_moduleinst : moduleinst, t : valtype, var_0 : valtype}: + `%%%`(v_moduleinst, t, var_0) + -- fun_subst_all_valtype: `%%%`(t, (iter_val#3 : deftype <: typeuse)*{iter_val#3 <- v_moduleinst.TYPES_moduleinst}, var_0) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_reftype(v_moduleinst : moduleinst, v_reftype : reftype) : reftype +relation fun_inst_reftype: `%%%`(moduleinst, reftype, reftype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_reftype{v_moduleinst : moduleinst, rt : reftype}(v_moduleinst, rt) = $subst_all_reftype(rt, (iter_val#4 : deftype <: typeuse)*{iter_val#4 <- v_moduleinst.TYPES_moduleinst}) + rule fun_inst_reftype_case_0{v_moduleinst : moduleinst, rt : reftype, var_0 : reftype}: + `%%%`(v_moduleinst, rt, var_0) + -- fun_subst_all_reftype: `%%%`(rt, (iter_val#4 : deftype <: typeuse)*{iter_val#4 <- v_moduleinst.TYPES_moduleinst}, var_0) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_globaltype(v_moduleinst : moduleinst, v_globaltype : globaltype) : globaltype +relation fun_inst_globaltype: `%%%`(moduleinst, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_globaltype{v_moduleinst : moduleinst, gt : globaltype}(v_moduleinst, gt) = $subst_all_globaltype(gt, (iter_val#5 : deftype <: typeuse)*{iter_val#5 <- v_moduleinst.TYPES_moduleinst}) + rule fun_inst_globaltype_case_0{v_moduleinst : moduleinst, gt : globaltype, var_0 : globaltype}: + `%%%`(v_moduleinst, gt, var_0) + -- fun_subst_all_globaltype: `%%%`(gt, (iter_val#5 : deftype <: typeuse)*{iter_val#5 <- v_moduleinst.TYPES_moduleinst}, var_0) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_memtype(v_moduleinst : moduleinst, v_memtype : memtype) : memtype +relation fun_inst_memtype: `%%%`(moduleinst, memtype, memtype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_memtype{v_moduleinst : moduleinst, mt : memtype}(v_moduleinst, mt) = $subst_all_memtype(mt, (iter_val#6 : deftype <: typeuse)*{iter_val#6 <- v_moduleinst.TYPES_moduleinst}) + rule fun_inst_memtype_case_0{v_moduleinst : moduleinst, mt : memtype, var_0 : memtype}: + `%%%`(v_moduleinst, mt, var_0) + -- fun_subst_all_memtype: `%%%`(mt, (iter_val#6 : deftype <: typeuse)*{iter_val#6 <- v_moduleinst.TYPES_moduleinst}, var_0) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_tabletype(v_moduleinst : moduleinst, v_tabletype : tabletype) : tabletype +relation fun_inst_tabletype: `%%%`(moduleinst, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_tabletype{v_moduleinst : moduleinst, tt : tabletype}(v_moduleinst, tt) = $subst_all_tabletype(tt, (iter_val#7 : deftype <: typeuse)*{iter_val#7 <- v_moduleinst.TYPES_moduleinst}) + rule fun_inst_tabletype_case_0{v_moduleinst : moduleinst, tt : tabletype, var_0 : tabletype}: + `%%%`(v_moduleinst, tt, var_0) + -- fun_subst_all_tabletype: `%%%`(tt, (iter_val#7 : deftype <: typeuse)*{iter_val#7 <- v_moduleinst.TYPES_moduleinst}, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure_before_br_on_null_addr: `%`(instr*) @@ -13186,49 +16532,54 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule unop_val{nt : numtype, c_1 : num_, unop : unop_, c : num_}: + rule unop_val{nt : numtype, c_1 : num_, unop : unop_, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$fun_unop_(nt, unop, c_1)| > 0) - -- if (c <- $fun_unop_(nt, unop, c_1)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule unop_trap{nt : numtype, c_1 : num_, unop : unop_}: + rule unop_trap{nt : numtype, c_1 : num_, unop : unop_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(TRAP_instr) - -- if ($fun_unop_(nt, unop, c_1) = []) + -- if (var_0 = []) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule binop_val{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: + rule binop_val{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$fun_binop_(nt, binop, c_1, c_2)| > 0) - -- if (c <- $fun_binop_(nt, binop, c_1, c_2)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule binop_trap{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: + rule binop_trap{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(TRAP_instr) - -- if ($fun_binop_(nt, binop, c_1, c_2) = []) + -- if (var_0 = []) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_, var_0 : u32}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(TESTOP_instr(nt, testop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $fun_testop_(nt, testop, c_1)) + -- if (!($proj_num__0(c)) = var_0) + -- fun_testop_: `%%%%`(nt, testop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: @@ -13241,21 +16592,23 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (!($proj_num__0(c)) = $fun_relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule cvtop_val{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: + rule cvtop_val{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(CONST_instr(nt_2, c)) - -- if (|$fun_cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) - -- if (c <- $fun_cvtop__(nt_1, nt_2, cvtop, c_1)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule cvtop_trap{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: + rule cvtop_trap{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, var_0 : num_*}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(TRAP_instr) - -- if ($fun_cvtop__(nt_1, nt_2, cvtop, c_1) = []) + -- if (var_0 = []) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, v_vvunop : vvunop, c : vec_}: @@ -13288,73 +16641,80 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (c <- $vvternop_(V128_vectype, v_vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vvtestop{c_1 : vec_, c : num_}: + rule vvtestop{c_1 : vec_, c : num_, var_0 : u32}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) + -- if (!($proj_num__0(c)) = var_0) + -- fun_inez_: `%%%`($vsize(V128_vectype), c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vunop_val{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: + rule vunop_val{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$fun_vunop_(sh, vunop, c_1)| > 0) - -- if (c <- $fun_vunop_(sh, vunop, c_1)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vunop_trap{c_1 : vec_, sh : shape, vunop : vunop_}: + rule vunop_trap{c_1 : vec_, sh : shape, vunop : vunop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(TRAP_instr) - -- if ($fun_vunop_(sh, vunop, c_1) = []) + -- if (var_0 = []) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vbinop_val{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: + rule vbinop_val{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$fun_vbinop_(sh, vbinop, c_1, c_2)| > 0) - -- if (c <- $fun_vbinop_(sh, vbinop, c_1, c_2)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vbinop_trap{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: + rule vbinop_trap{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(TRAP_instr) - -- if ($fun_vbinop_(sh, vbinop, c_1, c_2) = []) + -- if (var_0 = []) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vternop_val{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: + rule vternop_val{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$fun_vternop_(sh, vternop, c_1, c_2, c_3)| > 0) - -- if (c <- $fun_vternop_(sh, vternop, c_1, c_2, c_3)) + -- if (|var_0| > 0) + -- if (c <- var_0) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vternop_trap{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: + rule vternop_trap{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(TRAP_instr) - -- if ($fun_vternop_(sh, vternop, c_1, c_2, c_3) = []) + -- if (var_0 = []) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vtestop{c_1 : vec_, v_Jnn : Jnn, v_M : M, c : num_, i_lst : lane_*}: + rule vtestop{c_1 : vec_, v_Jnn : Jnn, v_M : M, c : num_, i_lst : lane_*, var_0_lst : uN*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), mk_vtestop__0_vtestop_(v_Jnn, v_M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), i))*{i <- i_lst} -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) @@ -13363,63 +16723,71 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))) -- if (i_lst = $lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), c_1)) -- if ($proj_num__0(c) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0(var_0).0*{var_0 <- var_0_lst})) + -- if (|var_0_lst| = |i_lst|) -- (if ($proj_lane__2(i) =/= ?()))*{i <- i_lst} - -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(v_Jnn), !($proj_lane__2(i)))).0*{i <- i_lst})) + -- (fun_inez_: `%%%`($jsizenn(v_Jnn), !($proj_lane__2(i)), var_0))*{var_0 <- var_0_lst, i <- i_lst} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $fun_vrelop_(sh, vrelop, c_1, c_2)) + -- if (c = var_0) + -- fun_vrelop_: `%%%%%`(sh, vrelop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) -- if ($proj_num__0(i) =/= ?()) - -- if (c = $fun_vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) + -- fun_vshiftop_: `%%%%%`(sh, vshiftop, c_1, !($proj_num__0(i)), var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: + rule vbitmask{c_1 : vec_, sh : ishape, c : num_, var_0 : u32}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VBITMASK_instr(sh)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) + -- if (!($proj_num__0(c)) = var_0) + -- fun_vbitmaskop_: `%%%`(sh, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $fun_vswizzlop_(sh, swizzlop, c_1, c_2)) + -- if (c = var_0) + -- fun_vswizzlop_: `%%%%%`(sh, swizzlop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, i_lst : laneidx*, c : vec_}: + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, i_lst : laneidx*, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i_lst)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VSHUFFLE_instr(sh, i_lst)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vshufflop_(sh, i_lst, c_1, c_2)) + -- if (c = var_0) + -- fun_vshufflop_: `%%%%%`(sh, i_lst, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vsplat{v_Lnn : Lnn, c_1 : num_, v_M : M, c : vec_}: + rule vsplat{v_Lnn : Lnn, c_1 : num_, v_M : M, c : vec_, var_0 : lane_}: `%~>%`([CONST_instr($lunpack(v_Lnn), c_1) VSPLAT_instr(`%X%`_shape(v_Lnn, `%`_dim(v_M)))], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(CONST_instr($lunpack(v_Lnn), c_1)) -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(v_Lnn, `%`_dim(v_M)))) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape(v_Lnn, `%`_dim(v_M))) - -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, `%`_dim(v_M)), $lpacknum_(v_Lnn, c_1)^v_M{})) + -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, `%`_dim(v_M)), var_0^v_M{})) + -- fun_lpacknum_: `%%%`(v_Lnn, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextract_lane_num{c_1 : vec_, nt : numtype, v_M : M, i : laneidx, c_2 : num_}: @@ -13445,92 +16813,103 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, v_sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(v_M)), c_1)[$proj_uN_0(i).0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vreplace_lane{c_1 : vec_, v_Lnn : Lnn, c_2 : num_, v_M : M, i : laneidx, c : vec_}: + rule vreplace_lane{c_1 : vec_, v_Lnn : Lnn, c_2 : num_, v_M : M, i : laneidx, c : vec_, var_0 : lane_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(v_Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(v_Lnn, `%`_dim(v_M)), i)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(CONST_instr($lunpack(v_Lnn), c_2)) -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(v_Lnn, `%`_dim(v_M)), i)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape(v_Lnn, `%`_dim(v_M))) - -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, `%`_dim(v_M)), $lanes_(`%X%`_shape(v_Lnn, `%`_dim(v_M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(v_Lnn, c_2)])) + -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, `%`_dim(v_M)), $lanes_(`%X%`_shape(v_Lnn, `%`_dim(v_M)), c_1)[[$proj_uN_0(i).0] = var_0])) + -- fun_lpacknum_: `%%%`(v_Lnn, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($fun_vextunop__(sh_1, sh_2, vextunop, c_1) = c) + -- if (var_0 = c) + -- fun_vextunop__: `%%%%%`(sh_1, sh_2, vextunop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($fun_vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) + -- if (var_0 = c) + -- fun_vextbinop__: `%%%%%%`(sh_1, sh_2, vextbinop, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($fun_vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) + -- if (var_0 = c) + -- fun_vextternop__: `%%%%%%%`(sh_1, sh_2, vextternop, c_1, c_2, c_3, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, v_sx : sx, c : vec_}: + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, v_sx : sx, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, v_sx)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, v_sx)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, v_sx, c_1, c_2)) + -- if (c = var_0) + -- fun_vnarrowop__: `%%%%%%`($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, v_sx, c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $fun_vcvtop__(sh_1, sh_2, vcvtop, c_1)) + -- if (c = var_0) + -- fun_vcvtop__: `%%%%%`(sh_1, sh_2, vcvtop, c_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -def $blocktype_(v_state : state, v_blocktype : blocktype) : instrtype +relation fun_blocktype_: `%%%`(state, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, x : uN, t_1_lst : valtype*, t_2_lst : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst)) + rule fun_blocktype__case_0{z : state, x : uN, t_1_lst : valtype*, t_2_lst : valtype*}: + `%%%`(z, _IDX_blocktype(x), `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) -- Expand: `%~~%`($fun_type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, t_opt : valtype?}(z, _RESULT_blocktype(t_opt)) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t_opt))) + rule fun_blocktype__case_1{z : state, t_opt : valtype?}: + `%%%`(z, _RESULT_blocktype(t_opt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t_opt)))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t_opt)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_br_on_cast_fail: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule br_on_cast_succeed_0{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule br_on_cast_succeed_0{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- wf_reftype: `%`(rt) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- wf_instr: `%`(BR_instr(l)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_br_on_cast_fail_fail: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule br_on_cast_fail_succeed_0{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule br_on_cast_fail_succeed_0{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- wf_reftype: `%`(rt) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_throw_ref_handler_next: `%`(config) @@ -13749,13 +17128,13 @@ relation Step_read_before_memory_copy_le: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_memory_copy_gt: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_copy_le_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: + rule memory_copy_le_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) -- if ($proj_num__0(i_2) =/= ?()) @@ -13764,6 +17143,7 @@ relation Step_read_before_memory_copy_gt: `%`(config) -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) -- ~ Step_read_before_memory_copy_le: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- fun_memarg0: `%`(var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_zero_1{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: @@ -13813,25 +17193,27 @@ relation Step_read_before_memory_init_succ: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_ref_test_false: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_test_true_0{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: + rule ref_test_true_0{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.TEST`_instr(rt)])) -- wf_reftype: `%`(rt') -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.TEST`_instr(rt)])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_ref_cast_fail: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_cast_succeed_0{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: + rule ref_cast_succeed_0{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.CAST`_instr(rt)])) -- wf_reftype: `%`(rt') -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.CAST`_instr(rt)])) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_array_fill_zero: `%`(config) @@ -13912,7 +17294,7 @@ relation Step_read_before_array_copy_le: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_array_copy_gt: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_copy_le_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype}: + rule array_copy_le_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype, var_0 : sx??}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) @@ -13930,8 +17312,9 @@ relation Step_read_before_array_copy_gt: `%`(config) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) -- ~ Step_read_before_array_copy_le: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) - -- if ($fun_sx(zt_2) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = !($fun_sx(zt_2)))) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = !(var_0))) + -- fun_sx: `%%`(zt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_zero_1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: @@ -14006,15 +17389,16 @@ relation Step_read_before_array_init_elem_succ: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_array_init_data_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_init_data_oob2_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: + rule array_init_data_oob2_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype, var_0 : nat?}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) + -- fun_zsize: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob1_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: @@ -14035,15 +17419,16 @@ relation Step_read_before_array_init_data_num: `%`(config) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_init_data_oob2_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: + rule array_init_data_oob2_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype, var_0 : nat?}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) + -- fun_zsize: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob1_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: @@ -14057,30 +17442,33 @@ relation Step_read_before_array_init_data_num: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule block{z : state, v_m : m, val_lst : val*, bt : blocktype, instr_lst : instr*, v_n : n, t_1_lst : valtype*, t_2_lst : valtype*}: + rule block{z : state, v_m : m, val_lst : val*, bt : blocktype, instr_lst : instr*, v_n : n, t_1_lst : valtype*, t_2_lst : valtype*, var_0 : instrtype}: `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [BLOCK_instr(bt, instr_lst)]), [`LABEL_%{%}%`_instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)]) -- wf_config: `%`(`%;%`_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [BLOCK_instr(bt, instr_lst)])) -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + -- fun_blocktype_: `%%%`(z, bt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule loop{z : state, v_m : m, val_lst : val*, bt : blocktype, instr_lst : instr*, t_1_lst : valtype*, v_n : n, t_2_lst : valtype*}: + rule loop{z : state, v_m : m, val_lst : val*, bt : blocktype, instr_lst : instr*, t_1_lst : valtype*, v_n : n, t_2_lst : valtype*, var_0 : instrtype}: `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [LOOP_instr(bt, instr_lst)]), [`LABEL_%{%}%`_instr(v_m, [LOOP_instr(bt, instr_lst)], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)]) -- wf_config: `%`(`%;%`_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [LOOP_instr(bt, instr_lst)])) -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_m, [LOOP_instr(bt, instr_lst)], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + -- fun_blocktype_: `%%%`(z, bt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule br_on_cast_succeed{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule br_on_cast_succeed{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref) BR_instr(l)]) -- wf_reftype: `%`(rt) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- wf_instr: `%`(BR_instr(l)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_fail{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: @@ -14089,13 +17477,14 @@ relation Step_read: `%~>%`(config, instr*) -- ~ Step_read_before_br_on_cast_fail: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule br_on_cast_fail_succeed{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule br_on_cast_fail_succeed{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref)]) -- wf_reftype: `%`(rt) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_fail_fail{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: @@ -14121,19 +17510,21 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule call_ref_func{z : state, v_n : n, val_lst : val*, a : addr, yy : typeuse, v_m : m, f : frame, instr_lst : instr*, fi : funcinst, t_1_lst : valtype*, t_2_lst : valtype*, x : idx, t_lst : valtype*}: + rule call_ref_func{z : state, v_n : n, val_lst : val*, a : addr, yy : typeuse, v_m : m, f : frame, instr_lst : instr*, fi : funcinst, t_1_lst : valtype*, t_2_lst : valtype*, x : idx, t_lst : valtype*, var_0_lst : val??*}: `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(v_m, f, [`LABEL_%{%}%`_instr(v_m, [], instr_lst)])]) -- wf_config: `%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) -- wf_instr: `%`(`FRAME_%{%}%`_instr(v_m, f, [`LABEL_%{%}%`_instr(v_m, [], instr_lst)])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- t_lst}, instr_lst)) - -- (if ($default_(t) =/= ?()))*{t <- t_lst} - -- wf_frame: `%`({LOCALS ?(v_val)^v_n{v_val <- val_lst} ++ !($default_(t))*{t <- t_lst}, MODULE fi.MODULE_funcinst}) + -- (if (var_0 =/= ?()))*{var_0 <- var_0_lst} + -- wf_frame: `%`({LOCALS ?(v_val)^v_n{v_val <- val_lst} ++ !(var_0)*{var_0 <- var_0_lst}, MODULE fi.MODULE_funcinst}) -- if (a < |$fun_funcinst(z)|) -- if ($fun_funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- t_lst}, instr_lst)) - -- if (f = {LOCALS ?(v_val)^v_n{v_val <- val_lst} ++ !($default_(t))*{t <- t_lst}, MODULE fi.MODULE_funcinst}) + -- if (f = {LOCALS ?(v_val)^v_n{v_val <- val_lst} ++ !(var_0)*{var_0 <- var_0_lst}, MODULE fi.MODULE_funcinst}) + -- if (|var_0_lst| = |t_lst|) + -- (fun_default_: `%%`(t, var_0))*{var_0 <- var_0_lst, t <- t_lst} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: @@ -14252,12 +17643,13 @@ relation Step_read: `%~>%`(config, instr*) -- ~ Step_read_before_throw_ref_handler_next: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [v_catch] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule try_table{z : state, v_m : m, val_lst : val*, bt : blocktype, catch_lst : catch*, instr_lst : instr*, v_n : n, t_1_lst : valtype*, t_2_lst : valtype*}: + rule try_table{z : state, v_m : m, val_lst : val*, bt : blocktype, catch_lst : catch*, instr_lst : instr*, v_n : n, t_1_lst : valtype*, t_2_lst : valtype*, var_0 : instrtype}: `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [TRY_TABLE_instr(bt, `%`_list(catch_lst), instr_lst)]), [`HANDLER_%{%}%`_instr(v_n, catch_lst, [`LABEL_%{%}%`_instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)])]) -- wf_config: `%`(`%;%`_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [TRY_TABLE_instr(bt, `%`_list(catch_lst), instr_lst)])) -- wf_instr: `%`(`HANDLER_%{%}%`_instr(v_n, catch_lst, [`LABEL_%{%}%`_instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)])) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + -- fun_blocktype_: `%%%`(z, bt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local_get{z : state, x : idx, v_val : val}: @@ -14556,16 +17948,17 @@ relation Step_read: `%~>%`(config, instr*) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_fill_succ{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) + rule memory_fill_succ{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.FILL`_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) -- ~ Step_read_before_memory_fill_succ: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.FILL`_instr(x)])) + -- fun_memarg0: `%`(var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_oob{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: @@ -14584,37 +17977,39 @@ relation Step_read: `%~>%`(config, instr*) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_copy_le{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + rule memory_copy_le{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) -- ~ Step_read_before_memory_copy_le: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- fun_memarg0: `%`(var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_copy_gt{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + rule memory_copy_gt{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) -- ~ Step_read_before_memory_copy_gt: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- fun_memarg0: `%`(var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_init_oob{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: @@ -14633,20 +18028,21 @@ relation Step_read: `%~>%`(config, instr*) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_init_succ{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) + rule memory_init_succ{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$fun_data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `MEMORY.INIT`_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) -- ~ Step_read_before_memory_init_succ: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `MEMORY.INIT`_instr(x, y)])) + -- fun_memarg0: `%`(var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_null{z : state, ht : heaptype}: @@ -14662,14 +18058,15 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_test_true{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: + rule ref_test_true{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- wf_reftype: `%`(rt') -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.TEST`_instr(rt)])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_test_false{s : store, f : frame, v_ref : ref, rt : reftype}: @@ -14679,13 +18076,14 @@ relation Step_read: `%~>%`(config, instr*) -- ~ Step_read_before_ref_test_false: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.TEST`_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_cast_succeed{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: + rule ref_cast_succeed{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.CAST`_instr(rt)]), [$instr_ref(v_ref)]) -- wf_reftype: `%`(rt') -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.CAST`_instr(rt)])) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', var_0) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_cast_fail{s : store, f : frame, v_ref : ref, rt : reftype}: @@ -14695,16 +18093,20 @@ relation Step_read: `%~>%`(config, instr*) -- ~ Step_read_before_ref_cast_fail: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.CAST`_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule struct_new_default{z : state, x : idx, val_lst : val*, mut_opt_lst : mut?*, zt_lst : storagetype*}: + rule struct_new_default{z : state, x : idx, val_lst : val*, mut_opt_lst : mut?*, zt_lst : storagetype*, var_1_lst : valtype*, var_0_lst : val??*}: `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), $instr_val(v_val)*{v_val <- val_lst} ++ [`STRUCT.NEW`_instr(x)]) -- (wf_val: `%`(v_val))*{v_val <- val_lst} -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) - -- if (|val_lst| = |zt_lst|) - -- (if ($default_($unpack(zt)) =/= ?()))*{zt <- zt_lst} - -- (if (!($default_($unpack(zt))) = ?(v_val)))*{v_val <- val_lst, zt <- zt_lst} + -- if (|var_0_lst| = |val_lst|) + -- (if (var_0 =/= ?()))*{var_0 <- var_0_lst} + -- (if (!(var_0) = ?(v_val)))*{var_0 <- var_0_lst, v_val <- val_lst} + -- if (|var_1_lst| = |zt_lst|) + -- (fun_unpack: `%%`(zt, var_1))*{var_1 <- var_1_lst, zt <- zt_lst} + -- if (|var_1_lst| = |var_0_lst|) + -- (fun_default_: `%%`(var_1, var_0))*{var_1 <- var_1_lst, var_0 <- var_0_lst} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct_get_null{z : state, sx_opt : sx?, x : idx, i : fieldidx}: @@ -14713,26 +18115,29 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule struct_get_struct{z : state, a : addr, sx_opt : sx?, x : idx, i : fieldidx, zt_lst : storagetype*, mut_opt_lst : mut?*}: - `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx_opt, x, i)]), [$instr_val(!($unpackfield_(zt_lst[$proj_uN_0(i).0], sx_opt, $fun_structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])))]) - -- if ($unpackfield_(zt_lst[$proj_uN_0(i).0], sx_opt, $fun_structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]) =/= ?()) - -- if ($proj_uN_0(i).0 < |zt_lst|) - -- if ($proj_uN_0(i).0 < |$fun_structinst(z)[a].FIELDS_structinst|) - -- if (a < |$fun_structinst(z)|) + rule struct_get_struct{z : state, a : addr, sx_opt : sx?, x : idx, i : fieldidx, zt_lst : storagetype*, mut_opt_lst : mut?*, var_0 : val?}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx_opt, x, i)]), [$instr_val(!(var_0))]) + -- if (var_0 =/= ?()) -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx_opt, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- if ($proj_uN_0(i).0 < |zt_lst|) + -- if ($proj_uN_0(i).0 < |$fun_structinst(z)[a].FIELDS_structinst|) + -- if (a < |$fun_structinst(z)|) + -- fun_unpackfield_: `%%%%`(zt_lst[$proj_uN_0(i).0], sx_opt, $fun_structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_new_default{z : state, v_n : n, x : idx, v_val : val, mut_opt : mut?, zt : storagetype}: + rule array_new_default{z : state, v_n : n, x : idx, v_val : val, mut_opt : mut?, zt : storagetype, var_1 : valtype, var_0 : val??}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_DEFAULT`_instr(x)]), $instr_val(v_val)^v_n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))]) -- wf_val: `%`(v_val) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_DEFAULT`_instr(x)])) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) - -- if ($default_($unpack(zt)) =/= ?()) - -- if (!($default_($unpack(zt))) = ?(v_val)) + -- if (var_0 =/= ?()) + -- if (!(var_0) = ?(v_val)) + -- fun_unpack: `%%`(zt, var_1) + -- fun_default_: `%%`(var_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new_elem_oob{z : state, i : num_, v_n : n, x : idx, y : idx}: @@ -14752,28 +18157,33 @@ relation Step_read: `%~>%`(config, instr*) -- if (ref_lst = $fun_elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : v_n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_new_data_oob{z : state, i : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: + rule array_new_data_oob{z : state, i : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype, var_0 : nat?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- if ($proj_num__0(i) =/= ?()) - -- if ($zsize(zt) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((v_n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) + -- fun_zsize: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_new_data_num{z : state, i : num_, v_n : n, x : idx, y : idx, zt : storagetype, c_lst : lit_*, mut_opt : mut?}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^v_n{c <- c_lst} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))]) - -- (if ($cunpack(zt) =/= ?()))^v_n{} + rule array_new_data_num{z : state, i : num_, v_n : n, x : idx, y : idx, zt : storagetype, c_lst : lit_*, mut_opt : mut?, var_3 : nat?, var_2_lst : lit_*, var_1 : consttype?, var_0_lst : instr*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_DATA`_instr(x, y)]), var_0_lst ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))]) -- (wf_lit_: `%%`(zt, c))*{c <- c_lst} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_DATA`_instr(x, y)])) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) - -- if ($zsize(zt) =/= ?()) + -- if (var_3 =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- if ($concatn_(syntax byte, $zbytes_(zt, c)^v_n{c <- c_lst}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^v_n{c <- c_lst}, (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((v_n * !(var_3)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- fun_zsize: `%%`(zt, var_3) + -- (fun_cunpacknum_: `%%%`(zt, c, var_2))^v_n{var_2 <- var_2_lst, c <- c_lst} + -- fun_cunpack: `%%`(zt, var_1) + -- (if (var_1 =/= ?()))^v_n{} + -- (fun_const: `%%%`(!(var_1), var_2, var_0))^v_n{var_2 <- var_2_lst, var_0 <- var_0_lst} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_get_null{z : state, i : num_, sx_opt : sx?, x : idx}: @@ -14791,15 +18201,16 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_get_array{z : state, a : addr, i : num_, sx_opt : sx?, x : idx, zt : storagetype, mut_opt : mut?}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx_opt, x)]), [$instr_val(!($unpackfield_(zt, sx_opt, $fun_arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])))]) - -- if ($unpackfield_(zt, sx_opt, $fun_arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]) =/= ?()) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_arrayinst(z)[a].FIELDS_arrayinst|) - -- if (a < |$fun_arrayinst(z)|) - -- if ($proj_num__0(i) =/= ?()) + rule array_get_array{z : state, a : addr, i : num_, sx_opt : sx?, x : idx, zt : storagetype, mut_opt : mut?, var_0 : val?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx_opt, x)]), [$instr_val(!(var_0))]) + -- if (var_0 =/= ?()) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx_opt, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + -- if (a < |$fun_arrayinst(z)|) + -- if ($proj_num__0(i) =/= ?()) + -- fun_unpackfield_: `%%%%`(zt, sx_opt, $fun_arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_len_null{z : state}: @@ -14887,7 +18298,7 @@ relation Step_read: `%~>%`(config, instr*) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_copy_le{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype}: + rule array_copy_le{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype, var_0 : sx??}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx_opt, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -14905,11 +18316,12 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) -- ~ Step_read_before_array_copy_le: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) - -- if ($fun_sx(zt_2) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = !($fun_sx(zt_2)))) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = !(var_0))) + -- fun_sx: `%%`(zt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_copy_gt{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype}: + rule array_copy_gt{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype, var_0 : sx??}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.GET`_instr(sx_opt, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -14927,8 +18339,9 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) -- ~ Step_read_before_array_copy_gt: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) - -- if ($fun_sx(zt_2) =/= ?()) - -- if (sx_opt = !($fun_sx(zt_2))) + -- if (var_0 =/= ?()) + -- if (sx_opt = !(var_0)) + -- fun_sx: `%%`(zt_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_null{z : state, i : num_, j : num_, v_n : n, x : idx, y : idx}: @@ -14994,15 +18407,16 @@ relation Step_read: `%~>%`(config, instr*) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_init_data_oob2{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: + rule array_init_data_oob2{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype, var_0 : nat?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) + -- if (var_0 =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) + -- fun_zsize: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_zero{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: @@ -15012,25 +18426,29 @@ relation Step_read: `%~>%`(config, instr*) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_init_data_num{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, zt : storagetype, c : lit_, mut_opt : mut?}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) - -- if ($cunpack(zt) =/= ?()) + rule array_init_data_num{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, zt : storagetype, c : lit_, mut_opt : mut?, var_3 : nat?, var_2 : lit_, var_1 : consttype?, var_0 : instr}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) var_0 `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- if ($zsize(zt) =/= ?()) + -- if (var_3 =/= ?()) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(`ARRAY.SET`_instr(x)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- ~ Step_read_before_array_init_data_num: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) - -- if ($zbytes_(zt, c) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($zbytes_(zt, c) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- fun_zsize: `%%`(zt, var_3) + -- fun_cunpacknum_: `%%%`(zt, c, var_2) + -- fun_cunpack: `%%`(zt, var_1) + -- if (var_1 =/= ?()) + -- fun_const: `%%%`(!(var_1), var_2, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rec { @@ -15089,29 +18507,33 @@ relation Step: `%~>%`(config, config) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr_lst), `%;%`_config(`%;%`_state(s', f''), instr'_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:231.1-235.49 - rule throw{z : state, v_n : n, val_lst : val*, x : idx, exn : exninst, a : addr, t_lst : valtype*}: - `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + rule throw{z : state, v_n : n, val_lst : val*, x : idx, exn : exninst, a : addr, t_lst : valtype*, var_1 : deftype?, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [THROW_instr(x)]), `%;%`_config(var_0, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) -- wf_config: `%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_config: `%`(`%;%`_config(var_0, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) -- wf_exninst: `%`({TAG $fun_tagaddr(z)[$proj_uN_0(x).0], FIELDS val_lst}) - -- if ($as_deftype($fun_tag(z, x).TYPE_taginst) =/= ?()) - -- Expand: `%~~%`(!($as_deftype($fun_tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) + -- if (var_1 =/= ?()) + -- Expand: `%~~%`(!(var_1), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) -- if (a = |$fun_exninst(z)|) -- if (exn = {TAG $fun_tagaddr(z)[$proj_uN_0(x).0], FIELDS val_lst}) + -- fun_as_deftype: `%%`($fun_tag(z, x).TYPE_taginst, var_1) + -- fun_add_exninst: `%%%`(z, [exn], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 - rule local_set{z : state, v_val : val, x : idx}: - `%~>%`(`%;%`_config(z, [$instr_val(v_val) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, v_val), [])) + rule local_set{z : state, v_val : val, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_val(v_val) `LOCAL.SET`_instr(x)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [$instr_val(v_val) `LOCAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, v_val), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- fun_with_local: `%%%%`(z, x, v_val, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:322.1-323.58 - rule global_set{z : state, v_val : val, x : idx}: - `%~>%`(`%;%`_config(z, [$instr_val(v_val) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, v_val), [])) + rule global_set{z : state, v_val : val, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_val(v_val) `GLOBAL.SET`_instr(x)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [$instr_val(v_val) `GLOBAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, v_val), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- fun_with_global: `%%%%`(z, x, v_val, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.33 rule table_set_oob{z : state, at : addrtype, i : num_, v_ref : ref, x : idx}: @@ -15122,32 +18544,37 @@ relation Step: `%~>%`(config, config) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:340.1-342.32 - rule table_set_val{z : state, at : addrtype, i : num_, v_ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, v_ref), [])) - -- if ($proj_num__0(i) =/= ?()) + rule table_set_val{z : state, at : addrtype, i : num_, v_ref : ref, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) `TABLE.SET`_instr(x)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, v_ref), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_table(z, x).REFS_tableinst|) + -- fun_with_table: `%%%%%`(z, x, $proj_uN_0(!($proj_num__0(i))).0, v_ref, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-354.46 - rule table_grow_succeed{z : state, v_ref : ref, at : addrtype, v_n : n, x : idx, ti : tableinst}: - `%~>%`(`%;%`_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$fun_table(z, x).REFS_tableinst|)))])) + rule table_grow_succeed{z : state, v_ref : ref, at : addrtype, v_n : n, x : idx, ti : tableinst, var_1 : tableinst?, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.GROW`_instr(x)]), `%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$fun_table(z, x).REFS_tableinst|)))])) -- wf_config: `%`(`%;%`_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$fun_table(z, x).REFS_tableinst|)))])) - -- if ($growtable($fun_table(z, x), v_n, v_ref) =/= ?()) - -- if (ti = !($growtable($fun_table(z, x), v_n, v_ref))) + -- wf_config: `%`(`%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$fun_table(z, x).REFS_tableinst|)))])) + -- if (var_1 =/= ?()) + -- if (ti = !(var_1)) + -- fun_growtable: `%%%%`($fun_table(z, x), v_n, v_ref, var_1) + -- fun_with_tableinst: `%%%%`(z, x, ti, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:356.1-357.87 - rule table_grow_fail{z : state, v_ref : ref, at : addrtype, v_n : n, x : idx}: - `%~>%`(`%;%`_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + rule table_grow_fail{z : state, v_ref : ref, at : addrtype, v_n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) -- wf_config: `%`(`%;%`_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:417.1-418.51 - rule elem_drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + rule elem_drop{z : state, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- fun_with_elem: `%%%%`(z, x, [], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:501.1-504.60 rule store_num_oob{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: @@ -15158,12 +18585,13 @@ relation Step: `%~>%`(config, config) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:506.1-510.29 - rule store_num_val{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, b_lst : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) - -- if ($proj_num__0(i) =/= ?()) + rule store_num_val{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, b_lst : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if (b_lst = $nbytes_(nt, c)) + -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.52 rule store_pack_oob{z : state, at : addrtype, i : num_, v_Inn : Inn, c : num_, v_n : n, x : idx, ao : memarg}: @@ -15174,13 +18602,14 @@ relation Step: `%~>%`(config, config) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.52 - rule store_pack_val{z : state, at : addrtype, i : num_, v_Inn : Inn, c : num_, v_n : n, x : idx, ao : memarg, b_lst : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, `%`_storeop_Inn(`%`_sz(v_n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) - -- if ($proj_num__0(i) =/= ?()) + rule store_pack_val{z : state, at : addrtype, i : num_, v_Inn : Inn, c : num_, v_n : n, x : idx, ao : memarg, b_lst : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, `%`_storeop_Inn(`%`_sz(v_n)))), x, ao)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, `%`_storeop_Inn(`%`_sz(v_n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if ($proj_num__0(c) =/= ?()) -- if (b_lst = $ibytes_(v_n, $wrap__($size($numtype_addrtype(v_Inn)), v_n, !($proj_num__0(c))))) + -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.63 rule vstore_oob{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: @@ -15191,12 +18620,13 @@ relation Step: `%~>%`(config, config) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-531.31 - rule vstore_val{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, b_lst : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) - -- if ($proj_num__0(i) =/= ?()) + rule vstore_val{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, b_lst : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if (b_lst = $vbytes_(V128_vectype, c)) + -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:534.1-537.50 rule vstore_lane_oob{z : state, at : addrtype, i : num_, c : vec_, v_N : N, x : idx, ao : memarg, j : laneidx}: @@ -15207,49 +18637,56 @@ relation Step: `%~>%`(config, config) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + v_N) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-544.49 - rule vstore_lane_val{z : state, at : addrtype, i : num_, c : vec_, v_N : N, x : idx, ao : memarg, j : laneidx, b_lst : byte*, v_Jnn : Jnn, v_M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(v_N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) - -- if ($proj_num__0(i) =/= ?()) + rule vstore_lane_val{z : state, at : addrtype, i : num_, c : vec_, v_N : N, x : idx, ao : memarg, j : laneidx, b_lst : byte*, v_Jnn : Jnn, v_M : M, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(v_N), x, ao, j)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(v_N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), c)[$proj_uN_0(j).0]) =/= ?()) -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), c)|) -- wf_uN: `%%`(v_N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), c)[$proj_uN_0(j).0]))).0)) -- if (v_N = $jsize(v_Jnn)) -- if ((v_M : nat <:> rat) = ((128 : nat <:> rat) / (v_N : nat <:> rat))) -- if (b_lst = $ibytes_(v_N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), c)[$proj_uN_0(j).0]))).0))) + -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:553.1-556.37 - rule memory_grow_succeed{z : state, at : addrtype, v_n : n, x : idx, mi : meminst}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$fun_mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + rule memory_grow_succeed{z : state, at : addrtype, v_n : n, x : idx, mi : meminst, var_1 : meminst?, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$fun_mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$fun_mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- if ($growmem($fun_mem(z, x), v_n) =/= ?()) - -- if (mi = !($growmem($fun_mem(z, x), v_n))) + -- wf_config: `%`(`%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$fun_mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (var_1 =/= ?()) + -- if (mi = !(var_1)) + -- fun_growmem: `%%%`($fun_mem(z, x), v_n, var_1) + -- fun_with_meminst: `%%%%`(z, x, mi, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:558.1-559.84 - rule memory_grow_fail{z : state, at : addrtype, v_n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + rule memory_grow_fail{z : state, at : addrtype, v_n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:619.1-620.51 - rule data_drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + rule data_drop{z : state, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- fun_with_data: `%%%%`(z, x, [], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:700.1-704.65 - rule struct_new{z : state, v_n : n, val_lst : val*, x : idx, si : structinst, a : addr, mut_opt_lst : mut?*, zt_lst : storagetype*}: - `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + rule struct_new{z : state, v_n : n, val_lst : val*, x : idx, si : structinst, a : addr, mut_opt_lst : mut?*, zt_lst : storagetype*, var_1_lst : fieldval?*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config(var_0, [`REF.STRUCT_ADDR`_instr(a)])) -- wf_config: `%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [`STRUCT.NEW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- wf_config: `%`(`%;%`_config(var_0, [`REF.STRUCT_ADDR`_instr(a)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)^v_n{mut_opt <- mut_opt_lst, zt <- zt_lst}))) - -- (if ($packfield_(zt, v_val) =/= ?()))^v_n{v_val <- val_lst, zt <- zt_lst} - -- wf_structinst: `%`({TYPE $fun_type(z, x), FIELDS !($packfield_(zt, v_val))^v_n{v_val <- val_lst, zt <- zt_lst}}) + -- (if (var_1 =/= ?()))^v_n{var_1 <- var_1_lst} + -- wf_structinst: `%`({TYPE $fun_type(z, x), FIELDS !(var_1)^v_n{var_1 <- var_1_lst}}) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)^v_n{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if (a = |$fun_structinst(z)|) - -- if (si = {TYPE $fun_type(z, x), FIELDS !($packfield_(zt, v_val))^v_n{v_val <- val_lst, zt <- zt_lst}}) + -- if (si = {TYPE $fun_type(z, x), FIELDS !(var_1)^v_n{var_1 <- var_1_lst}}) + -- (fun_packfield_: `%%%`(zt, v_val, var_1))^v_n{var_1 <- var_1_lst, v_val <- val_lst, zt <- zt_lst} + -- fun_add_structinst: `%%%`(z, [si], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:721.1-722.55 rule struct_set_null{z : state, v_val : val, x : idx, i : fieldidx}: @@ -15258,25 +18695,29 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:724.1-727.46 - rule struct_set_struct{z : state, a : addr, v_val : val, x : idx, i : fieldidx, zt_lst : storagetype*, mut_opt_lst : mut?*}: - `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(v_val) `STRUCT.SET`_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt_lst[$proj_uN_0(i).0], v_val))), [])) - -- if ($packfield_(zt_lst[$proj_uN_0(i).0], v_val) =/= ?()) - -- if ($proj_uN_0(i).0 < |zt_lst|) + rule struct_set_struct{z : state, a : addr, v_val : val, x : idx, i : fieldidx, zt_lst : storagetype*, mut_opt_lst : mut?*, var_1 : fieldval?, var_0 : state}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(v_val) `STRUCT.SET`_instr(x, i)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(v_val) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt_lst[$proj_uN_0(i).0], v_val))), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- if ($proj_uN_0(i).0 < |zt_lst|) + -- fun_packfield_: `%%%`(zt_lst[$proj_uN_0(i).0], v_val, var_1) + -- if (var_1 =/= ?()) + -- fun_with_struct: `%%%%%`(z, a, $proj_uN_0(i).0, !(var_1), var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:740.1-745.65 - rule array_new_fixed{z : state, v_n : n, val_lst : val*, x : idx, ai : arrayinst, a : addr, mut_opt : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))]), `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + rule array_new_fixed{z : state, v_n : n, val_lst : val*, x : idx, ai : arrayinst, a : addr, mut_opt : mut?, zt : storagetype, var_1_lst : fieldval?*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))]), `%;%`_config(var_0, [`REF.ARRAY_ADDR`_instr(a)])) -- wf_config: `%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- wf_config: `%`(`%;%`_config(var_0, [`REF.ARRAY_ADDR`_instr(a)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) - -- (if ($packfield_(zt, v_val) =/= ?()))^v_n{v_val <- val_lst} - -- wf_arrayinst: `%`({TYPE $fun_type(z, x), FIELDS !($packfield_(zt, v_val))^v_n{v_val <- val_lst}}) + -- (if (var_1 =/= ?()))^v_n{var_1 <- var_1_lst} + -- wf_arrayinst: `%`({TYPE $fun_type(z, x), FIELDS !(var_1)^v_n{var_1 <- var_1_lst}}) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) - -- if ((a = |$fun_arrayinst(z)|) /\ (ai = {TYPE $fun_type(z, x), FIELDS !($packfield_(zt, v_val))^v_n{v_val <- val_lst}})) + -- if ((a = |$fun_arrayinst(z)|) /\ (ai = {TYPE $fun_type(z, x), FIELDS !(var_1)^v_n{var_1 <- var_1_lst}})) + -- (fun_packfield_: `%%%`(zt, v_val, var_1))^v_n{var_1 <- var_1_lst, v_val <- val_lst} + -- fun_add_arrayinst: `%%%`(z, [ai], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-786.66 rule array_set_null{z : state, i : num_, v_val : val, x : idx}: @@ -15294,14 +18735,16 @@ relation Step: `%~>%`(config, config) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-795.44 - rule array_set_array{z : state, a : addr, i : num_, v_val : val, x : idx, zt : storagetype, mut_opt : mut?}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, v_val))), [])) - -- if ($proj_num__0(i) =/= ?()) - -- if ($packfield_(zt, v_val) =/= ?()) + rule array_set_array{z : state, a : addr, i : num_, v_val : val, x : idx, zt : storagetype, mut_opt : mut?, var_1 : fieldval?, var_0 : state}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) `ARRAY.SET`_instr(x)]), `%;%`_config(var_0, [])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, v_val))), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- fun_packfield_: `%%%`(zt, v_val, var_1) + -- if ($proj_num__0(i) =/= ?()) + -- if (var_1 =/= ?()) + -- fun_with_array: `%%%%%`(z, a, $proj_uN_0(!($proj_num__0(i))).0, !(var_1), var_0) } ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -15336,23 +18779,30 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 -def $alloctypes(var_0 : type*) : deftype* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 - def $alloctypes([]) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 - def $alloctypes{type'_lst : type*, v_type : type, deftype'_lst : deftype*, deftype_lst : deftype*, v_rectype : rectype, x : uN}(type'_lst ++ [v_type]) = deftype'_lst ++ deftype_lst +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 +relation fun_alloctypes: `%%`(type*, deftype*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_1{type'_lst : type*, v_type : type, deftype'_lst : deftype*, deftype_lst : deftype*, v_rectype : rectype, x : uN, var_2 : deftype*, var_1 : deftype*, var_0 : deftype*}: + `%%`(type'_lst ++ [v_type], deftype'_lst ++ deftype_lst) + -- fun_rolldt: `%%%`(x, v_rectype, var_2) + -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype'#2)*{deftype'#2 <- deftype'_lst}, var_1) + -- fun_alloctypes: `%%`(type'_lst, var_0) -- wf_uN: `%%`(32, x) - -- if (deftype'_lst = $alloctypes(type'_lst)) + -- if (deftype'_lst = var_0) -- if (v_type = TYPE_type(v_rectype)) - -- if (deftype_lst = $subst_all_deftypes($rolldt(x, v_rectype), $typeuse_deftype(deftype'#2)*{deftype'#2 <- deftype'_lst})) + -- if (deftype_lst = var_1) -- if ($proj_uN_0(x).0 = |deftype'_lst|) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctag(v_store : store, v_tagtype : tagtype) : (store, tagaddr) +relation fun_alloctag: `%%%`(store, tagtype, (store, tagaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctag{s : store, v_tagtype : typeuse, v_taginst : taginst}(s, v_tagtype) = (s +++ {TAGS [v_taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + rule fun_alloctag_case_0{s : store, v_tagtype : typeuse, v_taginst : taginst}: + `%%%`(s, v_tagtype, (s +++ {TAGS [v_taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|)) -- wf_store: `%`({TAGS [v_taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_taginst: `%`({TYPE v_tagtype}) -- if (v_taginst = {TYPE v_tagtype}) @@ -15360,22 +18810,28 @@ def $alloctag(v_store : store, v_tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 -def $alloctags(v_store : store, var_0 : tagtype*) : (store, tagaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 - def $alloctags{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 - def $alloctags{s : store, v_tagtype : typeuse, tagtype'_lst : tagtype*, s_2 : store, ja : nat, ja'_lst : tagaddr*, s_1 : store}(s, [v_tagtype] ++ tagtype'_lst) = (s_2, [ja] ++ ja'_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation fun_alloctags: `%%%`(store, tagtype*, (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_1{s : store, v_tagtype : typeuse, tagtype'_lst : tagtype*, s_2 : store, ja : nat, ja'_lst : tagaddr*, s_1 : store, var_1 : (store, tagaddr*), var_0 : (store, tagaddr)}: + `%%%`(s, [v_tagtype] ++ tagtype'_lst, (s_2, [ja] ++ ja'_lst)) + -- fun_alloctags: `%%%`(s_1, tagtype'_lst, var_1) + -- fun_alloctag: `%%%`(s, v_tagtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ja) = $alloctag(s, v_tagtype)) - -- if ((s_2, ja'_lst) = $alloctags(s_1, tagtype'_lst)) + -- if ((s_1, ja) = var_0) + -- if ((s_2, ja'_lst) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocglobal(v_store : store, v_globaltype : globaltype, v_val : val) : (store, globaladdr) +relation fun_allocglobal: `%%%%`(store, globaltype, val, (store, globaladdr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocglobal{s : store, v_globaltype : globaltype, v_val : val, v_globalinst : globalinst}(s, v_globaltype, v_val) = (s +++ {TAGS [], GLOBALS [v_globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + rule fun_allocglobal_case_0{s : store, v_globaltype : globaltype, v_val : val, v_globalinst : globalinst}: + `%%%%`(s, v_globaltype, v_val, (s +++ {TAGS [], GLOBALS [v_globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [v_globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_globalinst: `%`({TYPE v_globaltype, VALUE v_val}) -- if (v_globalinst = {TYPE v_globaltype, VALUE v_val}) @@ -15383,22 +18839,28 @@ def $allocglobal(v_store : store, v_globaltype : globaltype, v_val : val) : (sto ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 -def $allocglobals(v_store : store, var_0 : globaltype*, var_1 : val*) : (store, globaladdr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 - def $allocglobals{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 - def $allocglobals{s : store, v_globaltype : globaltype, globaltype'_lst : globaltype*, v_val : val, val'_lst : val*, s_2 : store, ga : nat, ga'_lst : globaladdr*, s_1 : store}(s, [v_globaltype] ++ globaltype'_lst, [v_val] ++ val'_lst) = (s_2, [ga] ++ ga'_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation fun_allocglobals: `%%%%`(store, globaltype*, val*, (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_1{s : store, v_globaltype : globaltype, globaltype'_lst : globaltype*, v_val : val, val'_lst : val*, s_2 : store, ga : nat, ga'_lst : globaladdr*, s_1 : store, var_1 : (store, globaladdr*), var_0 : (store, globaladdr)}: + `%%%%`(s, [v_globaltype] ++ globaltype'_lst, [v_val] ++ val'_lst, (s_2, [ga] ++ ga'_lst)) + -- fun_allocglobals: `%%%%`(s_1, globaltype'_lst, val'_lst, var_1) + -- fun_allocglobal: `%%%%`(s, v_globaltype, v_val, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ga) = $allocglobal(s, v_globaltype, v_val)) - -- if ((s_2, ga'_lst) = $allocglobals(s_1, globaltype'_lst, val'_lst)) + -- if ((s_1, ga) = var_0) + -- if ((s_2, ga'_lst) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmem(v_store : store, v_memtype : memtype) : (store, memaddr) +relation fun_allocmem: `%%%`(store, memtype, (store, memaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmem{s : store, at : addrtype, i : uN, j_opt : u64?, v_meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j_opt))) = (s +++ {TAGS [], GLOBALS [], MEMS [v_meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + rule fun_allocmem_case_0{s : store, at : addrtype, i : uN, j_opt : u64?, v_meminst : meminst}: + `%%%`(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j_opt)), (s +++ {TAGS [], GLOBALS [], MEMS [v_meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [v_meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j_opt)), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) -- if (v_meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j_opt)), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) @@ -15406,22 +18868,28 @@ def $allocmem(v_store : store, v_memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 -def $allocmems(v_store : store, var_0 : memtype*) : (store, memaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 - def $allocmems{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 - def $allocmems{s : store, v_memtype : memtype, memtype'_lst : memtype*, s_2 : store, ma : nat, ma'_lst : memaddr*, s_1 : store}(s, [v_memtype] ++ memtype'_lst) = (s_2, [ma] ++ ma'_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation fun_allocmems: `%%%`(store, memtype*, (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_1{s : store, v_memtype : memtype, memtype'_lst : memtype*, s_2 : store, ma : nat, ma'_lst : memaddr*, s_1 : store, var_1 : (store, memaddr*), var_0 : (store, memaddr)}: + `%%%`(s, [v_memtype] ++ memtype'_lst, (s_2, [ma] ++ ma'_lst)) + -- fun_allocmems: `%%%`(s_1, memtype'_lst, var_1) + -- fun_allocmem: `%%%`(s, v_memtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ma) = $allocmem(s, v_memtype)) - -- if ((s_2, ma'_lst) = $allocmems(s_1, memtype'_lst)) + -- if ((s_1, ma) = var_0) + -- if ((s_2, ma'_lst) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctable(v_store : store, v_tabletype : tabletype, v_ref : ref) : (store, tableaddr) +relation fun_alloctable: `%%%%`(store, tabletype, ref, (store, tableaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctable{s : store, at : addrtype, i : uN, j_opt : u64?, rt : reftype, v_ref : ref, v_tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j_opt), rt), v_ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [v_tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + rule fun_alloctable_case_0{s : store, at : addrtype, i : uN, j_opt : u64?, rt : reftype, v_ref : ref, v_tableinst : tableinst}: + `%%%%`(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j_opt), rt), v_ref, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [v_tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [v_tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j_opt), rt), REFS v_ref^$proj_uN_0(i).0{}}) -- if (v_tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j_opt), rt), REFS v_ref^$proj_uN_0(i).0{}}) @@ -15429,22 +18897,28 @@ def $alloctable(v_store : store, v_tabletype : tabletype, v_ref : ref) : (store, ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 -def $alloctables(v_store : store, var_0 : tabletype*, var_1 : ref*) : (store, tableaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 - def $alloctables{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 - def $alloctables{s : store, v_tabletype : tabletype, tabletype'_lst : tabletype*, v_ref : ref, ref'_lst : ref*, s_2 : store, ta : nat, ta'_lst : tableaddr*, s_1 : store}(s, [v_tabletype] ++ tabletype'_lst, [v_ref] ++ ref'_lst) = (s_2, [ta] ++ ta'_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation fun_alloctables: `%%%%`(store, tabletype*, ref*, (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_1{s : store, v_tabletype : tabletype, tabletype'_lst : tabletype*, v_ref : ref, ref'_lst : ref*, s_2 : store, ta : nat, ta'_lst : tableaddr*, s_1 : store, var_1 : (store, tableaddr*), var_0 : (store, tableaddr)}: + `%%%%`(s, [v_tabletype] ++ tabletype'_lst, [v_ref] ++ ref'_lst, (s_2, [ta] ++ ta'_lst)) + -- fun_alloctables: `%%%%`(s_1, tabletype'_lst, ref'_lst, var_1) + -- fun_alloctable: `%%%%`(s, v_tabletype, v_ref, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ta) = $alloctable(s, v_tabletype, v_ref)) - -- if ((s_2, ta'_lst) = $alloctables(s_1, tabletype'_lst, ref'_lst)) + -- if ((s_1, ta) = var_0) + -- if ((s_2, ta'_lst) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocfunc(v_store : store, v_deftype : deftype, v_funccode : funccode, v_moduleinst : moduleinst) : (store, funcaddr) +relation fun_allocfunc: `%%%%%`(store, deftype, funccode, moduleinst, (store, funcaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocfunc{s : store, v_deftype : deftype, v_funccode : funccode, v_moduleinst : moduleinst, v_funcinst : funcinst}(s, v_deftype, v_funccode, v_moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [v_funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + rule fun_allocfunc_case_0{s : store, v_deftype : deftype, v_funccode : funccode, v_moduleinst : moduleinst, v_funcinst : funcinst}: + `%%%%%`(s, v_deftype, v_funccode, v_moduleinst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [v_funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [v_funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_funcinst: `%`({TYPE v_deftype, MODULE v_moduleinst, CODE v_funccode}) -- if (v_funcinst = {TYPE v_deftype, MODULE v_moduleinst, CODE v_funccode}) @@ -15452,22 +18926,28 @@ def $allocfunc(v_store : store, v_deftype : deftype, v_funccode : funccode, v_mo ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 -def $allocfuncs(v_store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*) : (store, funcaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 - def $allocfuncs{s : store}(s, [], [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 - def $allocfuncs{s : store, dt : deftype, dt'_lst : deftype*, v_funccode : funccode, funccode'_lst : funccode*, v_moduleinst : moduleinst, moduleinst'_lst : moduleinst*, s_2 : store, fa : nat, fa'_lst : funcaddr*, s_1 : store}(s, [dt] ++ dt'_lst, [v_funccode] ++ funccode'_lst, [v_moduleinst] ++ moduleinst'_lst) = (s_2, [fa] ++ fa'_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation fun_allocfuncs: `%%%%%`(store, deftype*, funccode*, moduleinst*, (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_0{s : store}: + `%%%%%`(s, [], [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_1{s : store, dt : deftype, dt'_lst : deftype*, v_funccode : funccode, funccode'_lst : funccode*, v_moduleinst : moduleinst, moduleinst'_lst : moduleinst*, s_2 : store, fa : nat, fa'_lst : funcaddr*, s_1 : store, var_1 : (store, funcaddr*), var_0 : (store, funcaddr)}: + `%%%%%`(s, [dt] ++ dt'_lst, [v_funccode] ++ funccode'_lst, [v_moduleinst] ++ moduleinst'_lst, (s_2, [fa] ++ fa'_lst)) + -- fun_allocfuncs: `%%%%%`(s_1, dt'_lst, funccode'_lst, moduleinst'_lst, var_1) + -- fun_allocfunc: `%%%%%`(s, dt, v_funccode, v_moduleinst, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, fa) = $allocfunc(s, dt, v_funccode, v_moduleinst)) - -- if ((s_2, fa'_lst) = $allocfuncs(s_1, dt'_lst, funccode'_lst, moduleinst'_lst)) + -- if ((s_1, fa) = var_0) + -- if ((s_2, fa'_lst) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocdata(v_store : store, v_datatype : datatype, var_0 : byte*) : (store, dataaddr) +relation fun_allocdata: `%%%%`(store, datatype, byte*, (store, dataaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocdata{s : store, byte_lst : byte*, v_datainst : datainst}(s, OK_datatype, byte_lst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [v_datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + rule fun_allocdata_case_0{s : store, byte_lst : byte*, v_datainst : datainst}: + `%%%%`(s, OK_datatype, byte_lst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [v_datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [v_datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_datainst: `%`({BYTES byte_lst}) -- if (v_datainst = {BYTES byte_lst}) @@ -15475,22 +18955,28 @@ def $allocdata(v_store : store, v_datatype : datatype, var_0 : byte*) : (store, ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 -def $allocdatas(v_store : store, var_0 : datatype*, var_1 : byte**) : (store, dataaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 - def $allocdatas{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 - def $allocdatas{s : store, ok : datatype, ok'_lst : datatype*, b_lst : byte*, b'_lst_lst : byte**, s_2 : store, da : nat, da'_lst : dataaddr*, s_1 : store}(s, [ok] ++ ok'_lst, [b_lst] ++ b'_lst_lst) = (s_2, [da] ++ da'_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation fun_allocdatas: `%%%%`(store, datatype*, byte**, (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_1{s : store, ok : datatype, ok'_lst : datatype*, b_lst : byte*, b'_lst_lst : byte**, s_2 : store, da : nat, da'_lst : dataaddr*, s_1 : store, var_1 : (store, dataaddr*), var_0 : (store, dataaddr)}: + `%%%%`(s, [ok] ++ ok'_lst, [b_lst] ++ b'_lst_lst, (s_2, [da] ++ da'_lst)) + -- fun_allocdatas: `%%%%`(s_1, ok'_lst, b'_lst_lst, var_1) + -- fun_allocdata: `%%%%`(s, ok, b_lst, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, da) = $allocdata(s, ok, b_lst)) - -- if ((s_2, da'_lst) = $allocdatas(s_1, ok'_lst, b'_lst_lst)) + -- if ((s_1, da) = var_0) + -- if ((s_2, da'_lst) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocelem(v_store : store, v_elemtype : elemtype, var_0 : ref*) : (store, elemaddr) +relation fun_allocelem: `%%%%`(store, elemtype, ref*, (store, elemaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocelem{s : store, v_elemtype : reftype, ref_lst : ref*, v_eleminst : eleminst}(s, v_elemtype, ref_lst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [v_eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + rule fun_allocelem_case_0{s : store, v_elemtype : reftype, ref_lst : ref*, v_eleminst : eleminst}: + `%%%%`(s, v_elemtype, ref_lst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [v_eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [v_eleminst], STRUCTS [], ARRAYS [], EXNS []}) -- wf_eleminst: `%`({TYPE v_elemtype, REFS ref_lst}) -- if (v_eleminst = {TYPE v_elemtype, REFS ref_lst}) @@ -15498,45 +18984,88 @@ def $allocelem(v_store : store, v_elemtype : elemtype, var_0 : ref*) : (store, e ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 -def $allocelems(v_store : store, var_0 : elemtype*, var_1 : ref**) : (store, elemaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 - def $allocelems{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 - def $allocelems{s : store, rt : reftype, rt'_lst : reftype*, ref_lst : ref*, ref'_lst_lst : ref**, s_2 : store, ea : nat, ea'_lst : elemaddr*, s_1 : store}(s, [rt] ++ rt'_lst, [ref_lst] ++ ref'_lst_lst) = (s_2, [ea] ++ ea'_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation fun_allocelems: `%%%%`(store, elemtype*, ref**, (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_1{s : store, rt : reftype, rt'_lst : reftype*, ref_lst : ref*, ref'_lst_lst : ref**, s_2 : store, ea : nat, ea'_lst : elemaddr*, s_1 : store, var_1 : (store, elemaddr*), var_0 : (store, elemaddr)}: + `%%%%`(s, [rt] ++ rt'_lst, [ref_lst] ++ ref'_lst_lst, (s_2, [ea] ++ ea'_lst)) + -- fun_allocelems: `%%%%`(s_1, rt'_lst, ref'_lst_lst, var_1) + -- fun_allocelem: `%%%%`(s, rt, ref_lst, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ea) = $allocelem(s, rt, ref_lst)) - -- if ((s_2, ea'_lst) = $allocelems(s_1, rt'_lst, ref'_lst_lst)) + -- if ((s_1, ea) = var_0) + -- if ((s_2, ea'_lst) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexport(v_moduleinst : moduleinst, v_export : export) : exportinst +relation fun_allocexport: `%%%`(moduleinst, export, exportinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, TAG_externidx(x))) = {NAME v_name, ADDR TAG_externaddr(v_moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_0{v_moduleinst : moduleinst, v_name : name, x : uN}: + `%%%`(v_moduleinst, EXPORT_export(v_name, TAG_externidx(x)), {NAME v_name, ADDR TAG_externaddr(v_moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |v_moduleinst.TAGS_moduleinst|) -- wf_exportinst: `%`({NAME v_name, ADDR TAG_externaddr(v_moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, GLOBAL_externidx(x))) = {NAME v_name, ADDR GLOBAL_externaddr(v_moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_1{v_moduleinst : moduleinst, v_name : name, x : uN}: + `%%%`(v_moduleinst, EXPORT_export(v_name, GLOBAL_externidx(x)), {NAME v_name, ADDR GLOBAL_externaddr(v_moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |v_moduleinst.GLOBALS_moduleinst|) -- wf_exportinst: `%`({NAME v_name, ADDR GLOBAL_externaddr(v_moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, MEM_externidx(x))) = {NAME v_name, ADDR MEM_externaddr(v_moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_2{v_moduleinst : moduleinst, v_name : name, x : uN}: + `%%%`(v_moduleinst, EXPORT_export(v_name, MEM_externidx(x)), {NAME v_name, ADDR MEM_externaddr(v_moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |v_moduleinst.MEMS_moduleinst|) -- wf_exportinst: `%`({NAME v_name, ADDR MEM_externaddr(v_moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, TABLE_externidx(x))) = {NAME v_name, ADDR TABLE_externaddr(v_moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_3{v_moduleinst : moduleinst, v_name : name, x : uN}: + `%%%`(v_moduleinst, EXPORT_export(v_name, TABLE_externidx(x)), {NAME v_name, ADDR TABLE_externaddr(v_moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |v_moduleinst.TABLES_moduleinst|) -- wf_exportinst: `%`({NAME v_name, ADDR TABLE_externaddr(v_moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, FUNC_externidx(x))) = {NAME v_name, ADDR FUNC_externaddr(v_moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_4{v_moduleinst : moduleinst, v_name : name, x : uN}: + `%%%`(v_moduleinst, EXPORT_export(v_name, FUNC_externidx(x)), {NAME v_name, ADDR FUNC_externaddr(v_moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |v_moduleinst.FUNCS_moduleinst|) -- wf_exportinst: `%`({NAME v_name, ADDR FUNC_externaddr(v_moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexports(v_moduleinst : moduleinst, var_0 : export*) : exportinst* +relation fun_allocexports: `%%%`(moduleinst, export*, exportinst*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexports{v_moduleinst : moduleinst, export_lst : export*}(v_moduleinst, export_lst) = $allocexport(v_moduleinst, v_export)*{v_export <- export_lst} + rule fun_allocexports_case_0{v_moduleinst : moduleinst, export_lst : export*, var_0_lst : exportinst*}: + `%%%`(v_moduleinst, export_lst, var_0_lst) + -- if (|var_0_lst| = |export_lst|) + -- (fun_allocexport: `%%%`(v_moduleinst, v_export, var_0))*{var_0 <- var_0_lst, v_export <- export_lst} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmodule(v_store : store, v_module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**) : (store, moduleinst) +relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref**, (store, moduleinst)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmodule{s : store, v_module : module, externaddr_lst : externaddr*, val_G_lst : val*, ref_T_lst : ref*, ref_E_lst_lst : ref**, s_7 : store, v_moduleinst : moduleinst, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, tagtype_lst : tagtype*, expr_G_lst : expr*, globaltype_lst : globaltype*, memtype_lst : memtype*, expr_T_lst : expr*, tabletype_lst : tabletype*, expr_F_lst : expr*, local_lst_lst : local**, x_lst : idx*, byte_lst_lst : byte**, datamode_lst : datamode*, elemmode_lst : elemmode*, elemtype_lst : elemtype*, expr_E_lst_lst : expr**, aa_I_lst : tagaddr*, ga_I_lst : globaladdr*, ma_I_lst : memaddr*, ta_I_lst : tableaddr*, fa_I_lst : funcaddr*, dt_lst : deftype*, fa_lst : nat*, s_1 : store, aa_lst : tagaddr*, s_2 : store, ga_lst : globaladdr*, s_3 : store, ma_lst : memaddr*, s_4 : store, ta_lst : tableaddr*, s_5 : store, da_lst : dataaddr*, s_6 : store, ea_lst : elemaddr*, xi_lst : exportinst*}(s, v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst) = (s_7, v_moduleinst) + rule fun_allocmodule_case_0{s : store, v_module : module, externaddr_lst : externaddr*, val_G_lst : val*, ref_T_lst : ref*, ref_E_lst_lst : ref**, s_7 : store, v_moduleinst : moduleinst, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, tagtype_lst : tagtype*, expr_G_lst : expr*, globaltype_lst : globaltype*, memtype_lst : memtype*, expr_T_lst : expr*, tabletype_lst : tabletype*, expr_F_lst : expr*, local_lst_lst : local**, x_lst : idx*, byte_lst_lst : byte**, datamode_lst : datamode*, elemmode_lst : elemmode*, elemtype_lst : elemtype*, expr_E_lst_lst : expr**, aa_I_lst : tagaddr*, ga_I_lst : globaladdr*, ma_I_lst : memaddr*, ta_I_lst : tableaddr*, fa_I_lst : funcaddr*, dt_lst : deftype*, fa_lst : nat*, s_1 : store, aa_lst : tagaddr*, s_2 : store, ga_lst : globaladdr*, s_3 : store, ma_lst : memaddr*, s_4 : store, ta_lst : tableaddr*, s_5 : store, da_lst : dataaddr*, s_6 : store, ea_lst : elemaddr*, xi_lst : exportinst*, var_13 : exportinst*, var_12 : (store, funcaddr*), var_11_lst : elemtype*, var_10 : (store, elemaddr*), var_9 : (store, dataaddr*), var_8_lst : tabletype*, var_7 : (store, tableaddr*), var_6_lst : memtype*, var_5 : (store, memaddr*), var_4_lst : globaltype*, var_3 : (store, globaladdr*), var_2_lst : tagtype*, var_1 : (store, tagaddr*), var_0 : deftype*}: + `%%%%%%%`(s, v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst, (s_7, v_moduleinst)) + -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}, export_lst, var_13) + -- (if ($proj_uN_0(x#4).0 < |dt_lst|))*{x#4 <- x_lst} + -- fun_allocfuncs: `%%%%%`(s_6, dt_lst[$proj_uN_0(x#4).0]*{x#4 <- x_lst}, FUNC_funccode(x#5, local_lst#86, expr_F#3)*{expr_F#3 <- expr_F_lst, local_lst#86 <- local_lst_lst, x#5 <- x_lst}, v_moduleinst^|func_lst|{}, var_12) + -- if (|var_11_lst| = |elemtype_lst|) + -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- dt_lst}, var_11))*{var_11 <- var_11_lst, elemtype#3 <- elemtype_lst} + -- fun_allocelems: `%%%%`(s_5, var_11_lst, ref_E_lst_lst, var_10) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data_lst|{}, byte_lst_lst, var_9) + -- if (|var_8_lst| = |tabletype_lst|) + -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- dt_lst}, var_8))*{var_8 <- var_8_lst, tabletype#160 <- tabletype_lst} + -- fun_alloctables: `%%%%`(s_3, var_8_lst, ref_T_lst, var_7) + -- if (|var_6_lst| = |memtype_lst|) + -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- dt_lst}, var_6))*{var_6 <- var_6_lst, memtype#126 <- memtype_lst} + -- fun_allocmems: `%%%`(s_2, var_6_lst, var_5) + -- if (|var_4_lst| = |globaltype_lst|) + -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- dt_lst}, var_4))*{var_4 <- var_4_lst, globaltype#126 <- globaltype_lst} + -- fun_allocglobals: `%%%%`(s_1, var_4_lst, val_G_lst, var_3) + -- if (|var_2_lst| = |tagtype_lst|) + -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- dt_lst}, var_2))*{var_2 <- var_2_lst, tagtype#82 <- tagtype_lst} + -- fun_alloctags: `%%%`(s, var_2_lst, var_1) + -- fun_alloctypes: `%%`(type_lst, var_0) -- wf_store: `%`(s_7) -- wf_moduleinst: `%`(v_moduleinst) -- wf_store: `%`(s_1) @@ -15547,11 +19076,18 @@ def $allocmodule(v_store : store, v_module : module, var_0 : externaddr*, var_1 -- wf_store: `%`(s_6) -- wf_module: `%`(MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst))) -- (wf_tag: `%`(TAG_tag(tagtype#78)))*{tagtype#78 <- tagtype_lst} + -- if (|expr_G_lst| = |globaltype_lst|) -- (wf_global: `%`(GLOBAL_global(globaltype#122, expr_G#1)))*{expr_G#1 <- expr_G_lst, globaltype#122 <- globaltype_lst} -- (wf_mem: `%`(MEMORY_mem(memtype#122)))*{memtype#122 <- memtype_lst} + -- if (|expr_T_lst| = |tabletype_lst|) -- (wf_table: `%`(TABLE_table(tabletype#156, expr_T#1)))*{expr_T#1 <- expr_T_lst, tabletype#156 <- tabletype_lst} + -- if (|expr_F_lst| = |local_lst_lst|) + -- if (|expr_F_lst| = |x_lst|) -- (wf_func: `%`(FUNC_func(x#2, local_lst#82, expr_F#1)))*{expr_F#1 <- expr_F_lst, local_lst#82 <- local_lst_lst, x#2 <- x_lst} + -- if (|byte_lst_lst| = |datamode_lst|) -- (wf_data: `%`(DATA_data(byte_lst#110, datamode#110)))*{byte_lst#110 <- byte_lst_lst, datamode#110 <- datamode_lst} + -- if (|elemmode_lst| = |elemtype_lst|) + -- if (|elemmode_lst| = |expr_E_lst_lst|) -- (wf_elem: `%`(ELEM_elem(elemtype#1, expr_E_lst#1, elemmode#230)))*{elemmode#230 <- elemmode_lst, elemtype#1 <- elemtype_lst, expr_E_lst#1 <- expr_E_lst_lst} -- wf_moduleinst: `%`({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt_lst, TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS da_lst, ELEMS ea_lst, EXPORTS xi_lst}) @@ -15568,38 +19104,46 @@ def $allocmodule(v_store : store, v_module : module, var_0 : externaddr*, var_1 -- if (ma_I_lst = $memsxa(externaddr_lst)) -- if (ta_I_lst = $tablesxa(externaddr_lst)) -- if (fa_I_lst = $funcsxa(externaddr_lst)) - -- if (dt_lst = $alloctypes(type_lst)) + -- if (dt_lst = var_0) -- if (fa_lst = (|s.FUNCS_store| + i_F#1)^(i_F#1<|func_lst|){}) - -- if ((s_1, aa_lst) = $alloctags(s, $subst_all_tagtype(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- dt_lst})*{tagtype#82 <- tagtype_lst})) - -- if ((s_2, ga_lst) = $allocglobals(s_1, $subst_all_globaltype(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- dt_lst})*{globaltype#126 <- globaltype_lst}, val_G_lst)) - -- if ((s_3, ma_lst) = $allocmems(s_2, $subst_all_memtype(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- dt_lst})*{memtype#126 <- memtype_lst})) - -- if ((s_4, ta_lst) = $alloctables(s_3, $subst_all_tabletype(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- dt_lst})*{tabletype#160 <- tabletype_lst}, ref_T_lst)) - -- if ((s_5, da_lst) = $allocdatas(s_4, OK_datatype^|data_lst|{}, byte_lst_lst)) - -- if ((s_6, ea_lst) = $allocelems(s_5, $subst_all_reftype(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- dt_lst})*{elemtype#3 <- elemtype_lst}, ref_E_lst_lst)) - -- if ((s_7, fa_lst) = $allocfuncs(s_6, dt_lst[$proj_uN_0(x#4).0]*{x#4 <- x_lst}, FUNC_funccode(x#5, local_lst#86, expr_F#3)*{expr_F#3 <- expr_F_lst, local_lst#86 <- local_lst_lst, x#5 <- x_lst}, v_moduleinst^|func_lst|{})) - -- if (xi_lst = $allocexports({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}, export_lst)) + -- if ((s_1, aa_lst) = var_1) + -- if ((s_2, ga_lst) = var_3) + -- if ((s_3, ma_lst) = var_5) + -- if ((s_4, ta_lst) = var_7) + -- if ((s_5, da_lst) = var_9) + -- if ((s_6, ea_lst) = var_10) + -- if ((s_7, fa_lst) = var_12) + -- if (xi_lst = var_13) -- if (v_moduleinst = {TYPES dt_lst, TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS da_lst, ELEMS ea_lst, EXPORTS xi_lst}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $rundata_(v_dataidx : dataidx, v_data : data) : instr* +relation fun_rundata_: `%%%`(dataidx, data, instr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, v_n : nat, b_lst : byte*}(x, DATA_data(b_lst, PASSIVE_datamode)) = [] + rule fun_rundata__case_0{x : uN, v_n : nat, b_lst : byte*}: + `%%%`(x, DATA_data(b_lst, PASSIVE_datamode), []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, v_n : nat, b_lst : byte*, y : uN, instr_lst : instr*}(x, DATA_data(b_lst, ACTIVE_datamode(y, instr_lst))) = instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] + rule fun_rundata__case_1{x : uN, v_n : nat, b_lst : byte*, y : uN, instr_lst : instr*}: + `%%%`(x, DATA_data(b_lst, ACTIVE_datamode(y, instr_lst)), instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)]) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n)))) -- wf_instr: `%`(`MEMORY.INIT`_instr(y, x)) -- wf_instr: `%`(`DATA.DROP`_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $runelem_(v_elemidx : elemidx, v_elem : elem) : instr* +relation fun_runelem_: `%%%`(elemidx, elem, instr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, v_n : nat, e_lst : expr*}(x, ELEM_elem(rt, e_lst, PASSIVE_elemmode)) = [] + rule fun_runelem__case_0{x : uN, rt : reftype, v_n : nat, e_lst : expr*}: + `%%%`(x, ELEM_elem(rt, e_lst, PASSIVE_elemmode), []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, v_n : nat, e_lst : expr*}(x, ELEM_elem(rt, e_lst, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] + rule fun_runelem__case_1{x : uN, rt : reftype, v_n : nat, e_lst : expr*}: + `%%%`(x, ELEM_elem(rt, e_lst, DECLARE_elemmode), [`ELEM.DROP`_instr(x)]) -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, v_n : nat, e_lst : expr*, y : uN, instr_lst : instr*}(x, ELEM_elem(rt, e_lst, ACTIVE_elemmode(y, instr_lst))) = instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] + rule fun_runelem__case_2{x : uN, rt : reftype, v_n : nat, e_lst : expr*, y : uN, instr_lst : instr*}: + `%%%`(x, ELEM_elem(rt, e_lst, ACTIVE_elemmode(y, instr_lst)), instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)]) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n)))) -- wf_instr: `%`(`TABLE.INIT`_instr(y, x)) @@ -15608,46 +19152,60 @@ def $runelem_(v_elemidx : elemidx, v_elem : elem) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.92 -def $evalexprs(v_state : state, var_0 : expr*) : (state, ref*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.34 - def $evalexprs{z : state}(z, []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-165.46 - def $evalexprs{z : state, v_expr : instr*, expr'_lst : expr*, z'' : state, v_ref : ref, ref'_lst : ref*, z' : state}(z, [v_expr] ++ expr'_lst) = (z'', [v_ref] ++ ref'_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation fun_evalexprs: `%%%`(state, expr*, (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule fun_evalexprs_case_0{z : state}: + `%%%`(z, [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule fun_evalexprs_case_1{z : state, v_expr : instr*, expr'_lst : expr*, z'' : state, v_ref : ref, ref'_lst : ref*, z' : state, var_0 : (state, ref*)}: + `%%%`(z, [v_expr] ++ expr'_lst, (z'', [v_ref] ++ ref'_lst)) + -- fun_evalexprs: `%%%`(z', expr'_lst, var_0) -- wf_state: `%`(z'') -- wf_ref: `%`(v_ref) -- (wf_ref: `%`(ref'#5))*{ref'#5 <- ref'_lst} -- wf_state: `%`(z') -- Eval_expr: `%;%~>*%;%`(z, v_expr, z', [$val_ref(v_ref)]) - -- if ((z'', ref'_lst) = $evalexprs(z', expr'_lst)) + -- if ((z'', ref'_lst) = var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.1-167.96 -def $evalexprss(v_state : state, var_0 : expr**) : (state, ref**) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:168.1-168.35 - def $evalexprss{z : state}(z, []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.1-172.49 - def $evalexprss{z : state, expr_lst : expr*, expr'_lst_lst : expr**, z'' : state, ref_lst : ref*, ref'_lst_lst : ref**, z' : state}(z, [expr_lst] ++ expr'_lst_lst) = (z'', [ref_lst] ++ ref'_lst_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation fun_evalexprss: `%%%`(state, expr**, (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule fun_evalexprss_case_0{z : state}: + `%%%`(z, [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule fun_evalexprss_case_1{z : state, expr_lst : expr*, expr'_lst_lst : expr**, z'' : state, ref_lst : ref*, ref'_lst_lst : ref**, z' : state, var_1 : (state, ref**), var_0 : (state, ref*)}: + `%%%`(z, [expr_lst] ++ expr'_lst_lst, (z'', [ref_lst] ++ ref'_lst_lst)) + -- fun_evalexprss: `%%%`(z', expr'_lst_lst, var_1) + -- fun_evalexprs: `%%%`(z, expr_lst, var_0) -- wf_state: `%`(z'') -- (wf_ref: `%`(ref#6))*{ref#6 <- ref_lst} -- (wf_ref: `%`(ref'#7))*{ref'#7 <- ref'_lst#3}*{ref'_lst#3 <- ref'_lst_lst} -- wf_state: `%`(z') - -- if ((z', ref_lst) = $evalexprs(z, expr_lst)) - -- if ((z'', ref'_lst_lst) = $evalexprss(z', expr'_lst_lst)) + -- if ((z', ref_lst) = var_0) + -- if ((z'', ref'_lst_lst) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.1-174.111 -def $evalglobals(v_state : state, var_0 : globaltype*, var_1 : expr*) : (state, val*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:175.1-175.41 - def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 - def $evalglobals{z : state, gt : globaltype, gt'_lst : globaltype*, v_expr : instr*, expr'_lst : expr*, z'' : state, v_val : val, val'_lst : val*, z' : state, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'_lst, [v_expr] ++ expr'_lst) = (z'', [v_val] ++ val'_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule fun_evalglobals_case_0{z : state}: + `%%%%`(z, [], [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule fun_evalglobals_case_1{z : state, gt : globaltype, gt'_lst : globaltype*, v_expr : instr*, expr'_lst : expr*, z'' : state, v_val : val, val'_lst : val*, z' : state, s : store, f : frame, s' : store, a : nat, var_1 : (state, val*), var_0 : (store, globaladdr)}: + `%%%%`(z, [gt] ++ gt'_lst, [v_expr] ++ expr'_lst, (z'', [v_val] ++ val'_lst)) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'_lst, expr'_lst, var_1) + -- fun_allocglobal: `%%%%`(s, gt, v_val, var_0) -- wf_state: `%`(z'') -- wf_val: `%`(v_val) -- (wf_val: `%`(val'#3))*{val'#3 <- val'_lst} @@ -15656,14 +19214,25 @@ def $evalglobals(v_state : state, var_0 : globaltype*, var_1 : expr*) : (state, -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, v_expr, z', [v_val]) -- if (z' = `%;%`_state(s, f)) - -- if ((s', a) = $allocglobal(s, gt, v_val)) - -- if ((z'', val'_lst) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'_lst, expr'_lst)) + -- if ((s', a) = var_0) + -- if ((z'', val'_lst) = var_1) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $instantiate(v_store : store, v_module : module, var_0 : externaddr*) : config +relation fun_instantiate: `%%%%`(store, module, externaddr*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $instantiate{s : store, v_module : module, externaddr_lst : externaddr*, s'''' : store, v_moduleinst : moduleinst, instr_E_lst : instr*, instr_D_lst : instr*, instr_S_opt : instr?, xt_I_lst : externtype*, xt_E_lst : externtype*, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, expr_G_lst : expr*, globaltype_lst : globaltype*, expr_T_lst : expr*, tabletype_lst : tabletype*, byte_lst_lst : byte**, datamode_lst : datamode*, elemmode_lst : elemmode*, expr_E_lst_lst : expr**, reftype_lst : reftype*, x_opt : idx?, moduleinst_0 : moduleinst, z : state, z' : state, val_G_lst : val*, z'' : state, ref_T_lst : ref*, z''' : state, ref_E_lst_lst : ref**, s''' : store, f : frame, i_D : nat, i_E : nat}(s, v_module, externaddr_lst) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt)) + rule fun_instantiate_case_0{s : store, v_module : module, externaddr_lst : externaddr*, s'''' : store, v_moduleinst : moduleinst, instr_E_lst : instr*, instr_D_lst : instr*, instr_S_opt : instr?, xt_I_lst : externtype*, xt_E_lst : externtype*, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, expr_G_lst : expr*, globaltype_lst : globaltype*, expr_T_lst : expr*, tabletype_lst : tabletype*, byte_lst_lst : byte**, datamode_lst : datamode*, elemmode_lst : elemmode*, expr_E_lst_lst : expr**, reftype_lst : reftype*, x_opt : idx?, moduleinst_0 : moduleinst, z : state, z' : state, val_G_lst : val*, z'' : state, ref_T_lst : ref*, z''' : state, ref_E_lst_lst : ref**, s''' : store, f : frame, i_D : nat, i_E : nat, var_7_lst : instr**, var_6_lst : instr**, var_5 : (store, moduleinst), var_4 : (state, ref**), var_3 : (state, ref*), var_2 : (state, val*), var_1 : deftype*, var_0 : deftype*}: + `%%%%`(s, v_module, externaddr_lst, `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt))) + -- (if (i_E#2 < |elem_lst|))^(i_E#2<|elem_lst|){} + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem_lst[i_E#2], var_7))^(i_E#2<|elem_lst|){var_7 <- var_7_lst} + -- (if (i_D#2 < |data_lst|))^(i_D#2<|data_lst|){} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data_lst[i_D#2], var_6))^(i_D#2<|data_lst|){var_6 <- var_6_lst} + -- fun_allocmodule: `%%%%%%%`(s''', v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst, var_5) + -- fun_evalexprss: `%%%`(z'', expr_E_lst_lst, var_4) + -- fun_evalexprs: `%%%`(z', expr_T_lst, var_3) + -- fun_evalglobals: `%%%%`(z, globaltype_lst, expr_G_lst, var_2) + -- fun_alloctypes: `%%`(type_lst, var_1) + -- fun_alloctypes: `%%`(type_lst, var_0) -- wf_state: `%`(z) -- wf_state: `%`(z') -- (wf_val: `%`(val_G#3))*{val_G#3 <- val_G_lst} @@ -15674,18 +19243,24 @@ def $instantiate(v_store : store, v_module : module, var_0 : externaddr*) : conf -- wf_config: `%`(`%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt))) -- wf_moduletype: `%`(`%->%`_moduletype(xt_I_lst, xt_E_lst)) -- wf_module: `%`(MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst))) + -- if (|expr_G_lst| = |globaltype_lst|) -- (wf_global: `%`(GLOBAL_global(globaltype#127, expr_G#3)))*{expr_G#3 <- expr_G_lst, globaltype#127 <- globaltype_lst} + -- if (|expr_T_lst| = |tabletype_lst|) -- (wf_table: `%`(TABLE_table(tabletype#161, expr_T#3)))*{expr_T#3 <- expr_T_lst, tabletype#161 <- tabletype_lst} + -- if (|byte_lst_lst| = |datamode_lst|) -- (wf_data: `%`(DATA_data(byte_lst#117, datamode#116)))*{byte_lst#117 <- byte_lst_lst, datamode#116 <- datamode_lst} + -- if (|elemmode_lst| = |expr_E_lst_lst|) + -- if (|elemmode_lst| = |reftype_lst|) -- (wf_elem: `%`(ELEM_elem(reftype#517, expr_E_lst#3, elemmode#237)))*{elemmode#237 <- elemmode_lst, expr_E_lst#3 <- expr_E_lst_lst, reftype#517 <- reftype_lst} -- (wf_start: `%`(START_start(x#6)))?{x#6 <- x_opt} - -- wf_moduleinst: `%`({TYPES $alloctypes(type_lst), TAGS [], GLOBALS $globalsxa(externaddr_lst), MEMS [], TABLES [], FUNCS $funcsxa(externaddr_lst) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func_lst|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS $globalsxa(externaddr_lst), MEMS [], TABLES [], FUNCS $funcsxa(externaddr_lst) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func_lst|){}, DATAS [], ELEMS [], EXPORTS []}) -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) -- wf_state: `%`(`%;%`_state(s''', f)) -- (wf_uN: `%%`(32, `%`_uN(i_D#1)))^(i_D#1<|data_lst|){} -- (wf_uN: `%%`(32, `%`_uN(i_E#1)))^(i_E#1<|elem_lst|){} -- (wf_instr: `%`(CALL_instr(x#7)))?{x#7 <- x_opt} -- Module_ok: `|-%:%`(v_module, `%->%`_moduletype(xt_I_lst, xt_E_lst)) + -- if (|externaddr_lst| = |xt_I_lst|) -- (Externaddr_ok: `%|-%:%`(s, externaddr#10, xt_I#3))*{externaddr#10 <- externaddr_lst, xt_I#3 <- xt_I_lst} -- if (v_module = MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst))) -- if (global_lst = GLOBAL_global(globaltype#129, expr_G#4)*{expr_G#4 <- expr_G_lst, globaltype#129 <- globaltype_lst}) @@ -15693,24 +19268,27 @@ def $instantiate(v_store : store, v_module : module, var_0 : externaddr*) : conf -- if (data_lst = DATA_data(byte_lst#119, datamode#118)*{byte_lst#119 <- byte_lst_lst, datamode#118 <- datamode_lst}) -- if (elem_lst = ELEM_elem(reftype#519, expr_E_lst#4, elemmode#239)*{elemmode#239 <- elemmode_lst, expr_E_lst#4 <- expr_E_lst_lst, reftype#519 <- reftype_lst}) -- if (start_opt = START_start(x#8)?{x#8 <- x_opt}) - -- if (moduleinst_0 = {TYPES $alloctypes(type_lst), TAGS [], GLOBALS $globalsxa(externaddr_lst), MEMS [], TABLES [], FUNCS $funcsxa(externaddr_lst) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func_lst|){}, DATAS [], ELEMS [], EXPORTS []}) + -- if (moduleinst_0 = {TYPES var_1, TAGS [], GLOBALS $globalsxa(externaddr_lst), MEMS [], TABLES [], FUNCS $funcsxa(externaddr_lst) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func_lst|){}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G_lst) = $evalglobals(z, globaltype_lst, expr_G_lst)) - -- if ((z'', ref_T_lst) = $evalexprs(z', expr_T_lst)) - -- if ((z''', ref_E_lst_lst) = $evalexprss(z'', expr_E_lst_lst)) + -- if ((z', val_G_lst) = var_2) + -- if ((z'', ref_T_lst) = var_3) + -- if ((z''', ref_E_lst_lst) = var_4) -- if (z''' = `%;%`_state(s''', f)) - -- if ((s'''', v_moduleinst) = $allocmodule(s''', v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst)) - -- if (instr_D_lst = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#2), data_lst[i_D#2])^(i_D#2<|data_lst|){})) - -- if (instr_E_lst = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#2), elem_lst[i_E#2])^(i_E#2<|elem_lst|){})) + -- if ((s'''', v_moduleinst) = var_5) + -- if (instr_D_lst = $concat_(syntax instr, var_6_lst)) + -- if (instr_E_lst = $concat_(syntax instr, var_7_lst)) -- if (instr_S_opt = CALL_instr(x#9)?{x#9 <- x_opt}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $invoke(v_store : store, v_funcaddr : funcaddr, var_0 : val*) : config +relation fun_invoke: `%%%%`(store, funcaddr, val*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $invoke{s : store, v_funcaddr : nat, val_lst : val*, t_1_lst : valtype*, t_2_lst : valtype*}(s, v_funcaddr, val_lst) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(v_val)*{v_val <- val_lst} ++ [`REF.FUNC_ADDR`_instr(v_funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[v_funcaddr].TYPE_funcinst))]) + rule fun_invoke_case_0{s : store, v_funcaddr : nat, val_lst : val*, t_1_lst : valtype*, t_2_lst : valtype*}: + `%%%%`(s, v_funcaddr, val_lst, `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(v_val)*{v_val <- val_lst} ++ [`REF.FUNC_ADDR`_instr(v_funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[v_funcaddr].TYPE_funcinst))])) + -- if (v_funcaddr < |s.FUNCS_store|) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val#2)*{val#2 <- val_lst} ++ [`REF.FUNC_ADDR`_instr(v_funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[v_funcaddr].TYPE_funcinst))])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) -- Expand: `%~~%`(s.FUNCS_store[v_funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) + -- if (|t_1_lst| = |val_lst|) -- (Val_ok: `%|-%:%`(s, val#3, t_1#8))*{t_1#8 <- t_1_lst, val#3 <- val_lst} ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec @@ -15771,13 +19349,17 @@ syntax I = idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(var_0 : idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation fun_concat_idctxt: `%%`(idctxt*, idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule fun_concat_idctxt_case_0: + `%%`([], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 - def $concat_idctxt{v_I : idctxt, I'_lst : I*}([v_I] ++ I'_lst) = v_I +++ $concat_idctxt(I'_lst) + + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule fun_concat_idctxt_case_1{v_I : idctxt, I'_lst : I*, var_0 : idctxt}: + `%%`([v_I] ++ I'_lst, v_I +++ var_0) + -- fun_concat_idctxt: `%%`(I'_lst, var_0) } ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -16060,12 +19642,15 @@ def $exportsd(var_0 : decl*) : export* } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec -def $ordered(var_0 : decl*) : bool +relation fun_ordered: `%%`(decl*, bool) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $ordered{decl_lst : decl*}(decl_lst) = true + rule fun_ordered_case_0{decl_lst : decl*}: + `%%`(decl_lst, true) -- if ($importsd(decl_lst) = []) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $ordered{v_name : name, name_0 : name, v_externtype : externtype, decl_1_lst : decl*, decl_2_lst : decl*}(decl_1_lst ++ [IMPORT_decl(v_name, name_0, v_externtype)] ++ decl_2_lst) = (((((($importsd(decl_1_lst) = []) /\ ($tagsd(decl_1_lst) = [])) /\ ($globalsd(decl_1_lst) = [])) /\ ($memsd(decl_1_lst) = [])) /\ ($tablesd(decl_1_lst) = [])) /\ ($funcsd(decl_1_lst) = [])) + rule fun_ordered_case_1{v_name : name, name_0 : name, v_externtype : externtype, decl_1_lst : decl*, decl_2_lst : decl*}: + `%%`(decl_1_lst ++ [IMPORT_decl(v_name, name_0, v_externtype)] ++ decl_2_lst, (((((($importsd(decl_1_lst) = []) /\ ($tagsd(decl_1_lst) = [])) /\ ($globalsd(decl_1_lst) = [])) /\ ($memsd(decl_1_lst) = [])) /\ ($tablesd(decl_1_lst) = [])) /\ ($funcsd(decl_1_lst) = []))) ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context) @@ -16077,7 +19662,6 @@ relation Context_ok: `|-%:OK`(context) -- wf_context: `%`({TYPES dt_lst, TAGS jt_lst, GLOBALS gt_lst, MEMS mt_lst, TABLES tt_lst, FUNCS dt_F_lst, DATAS ok_lst, ELEMS et_lst, LOCALS lct_lst, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- rt_lst})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- rt'_opt}))), REFS x_lst, RECS st_lst}) -- wf_context: `%`({TYPES dt_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (wf_context: `%`({TYPES dt_lst[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{t_1 <- t_1_lst, t_2 <- t_2_lst} @@ -16270,7 +19854,7 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 - rule seq{s : store, C : context, instr_1 : instr, instr_2_lst : instr*, t_1_lst : valtype*, x_1_lst : idx*, x_2_lst : idx*, t_3_lst : valtype*, t_2_lst : valtype*, init_lst : init*, t_lst : valtype*}: + rule seq{s : store, C : context, instr_1 : instr, instr_2_lst : instr*, t_1_lst : valtype*, x_1_lst : idx*, x_2_lst : idx*, t_3_lst : valtype*, t_2_lst : valtype*, init_lst : init*, t_lst : valtype*, var_0 : context?}: `%;%|-%:%`(s, C, [instr_1] ++ instr_2_lst, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_1_lst ++ x_2_lst, `%`_resulttype(t_3_lst))) -- wf_store: `%`(s) -- wf_context: `%`(C) @@ -16286,8 +19870,9 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- if (|init_lst| = |x_1_lst|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- x_1_lst} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst, x_1 <- x_1_lst} - -- if ($with_locals(C, x_1_lst, `%%`_localtype(SET_init, t)*{t <- t_lst}) =/= ?()) - -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1_lst, `%%`_localtype(SET_init, t)*{t <- t_lst})), instr_2_lst, `%->_%%`_instrtype(`%`_resulttype(t_2_lst), x_2_lst, `%`_resulttype(t_3_lst))) + -- if (var_0 =/= ?()) + -- Instrs_ok2: `%;%|-%:%`(s, !(var_0), instr_2_lst, `%->_%%`_instrtype(`%`_resulttype(t_2_lst), x_2_lst, `%`_resulttype(t_3_lst))) + -- fun_with_locals: `%%%%`(C, x_1_lst, `%%`_localtype(SET_init, t)*{t <- t_lst}, var_0) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:47.1-51.33 rule sub{s : store, C : context, instr_lst : instr*, it' : instrtype, it : instrtype}: @@ -16476,23 +20061,34 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) } ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec -def $fun_NotImmutReachable(v_fieldval : fieldval, v_store : store, v_fieldval_0 : fieldval) : bool +relation fun_NotImmutReachable_before_fun_NotImmutReachable_case_1: `%%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_0{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%`(fv_1, s, fv_2) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation fun_NotImmutReachable: `%%%%`(fieldval, store, fieldval, bool) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - def $fun_NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = false + rule fun_NotImmutReachable_case_0{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%%`(fv_1, s, fv_2, false) -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - def $fun_NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = true - -- otherwise + rule fun_NotImmutReachable_case_1{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%%`(fv_1, s, fv_2, true) + -- ~ fun_NotImmutReachable_before_fun_NotImmutReachable_case_1: `%%%`(fv_1, s, fv_2) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - rule mk_NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}: + rule mk_NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval, var_0 : bool}: `~%>>_%%`(fv_1, s, fv_2) -- wf_fieldval: `%`(fv_1) -- wf_store: `%`(s) -- wf_fieldval: `%`(fv_2) - -- if $fun_NotImmutReachable(fv_1, s, fv_2) + -- if var_0 + -- fun_NotImmutReachable: `%%%%`(fv_1, s, fv_2, var_0) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Store_ok: `|-%:OK`(store) @@ -16895,7 +20491,8 @@ grammar BsN(v_N : N) : sN ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar BiN(v_N : N) : iN ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN} i:BsN(v_N) => `%`_iN($inv_signed_(v_N, $proj_sN_0(i).0)) + prod{i : sN, var_0 : nat} i:BsN(v_N) => `%`_iN(var_0) + -- fun_inv_signed_: `%%%`(v_N, $proj_sN_0(i).0, var_0) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar BfN(v_N : N) : fN @@ -16945,8 +20542,9 @@ grammar Blist(syntax el, grammar BX : el) : el* ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bname : name ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{v_name : name, b_lst : byte*} b_lst:Blist(syntax byte, grammar Bbyte) => v_name - -- if ($utf8($proj_name_0(v_name).0) = b_lst) + prod{v_name : name, b_lst : byte*, var_0 : byte*} b_lst:Blist(syntax byte, grammar Bbyte) => v_name + -- if (var_0 = b_lst) + -- fun_utf8: `%%`($proj_name_0(v_name).0, var_0) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Btypeidx : typeidx @@ -18433,10 +22031,11 @@ grammar Bversion : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmodule : module ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, typeidx_lst : typeidx*, n_opt : n?, expr_lst : expr*, local_lst_lst : local**} {Bmagic Bversion {Bcustomsec*{}} {type_lst:Btypesec} {Bcustomsec*{}} {import_lst:Bimportsec} {Bcustomsec*{}} {typeidx_lst:Bfuncsec} {Bcustomsec*{}} {table_lst:Btablesec} {Bcustomsec*{}} {mem_lst:Bmemsec} {Bcustomsec*{}} {tag_lst:Btagsec} {Bcustomsec*{}} {global_lst:Bglobalsec} {Bcustomsec*{}} {export_lst:Bexportsec} {Bcustomsec*{}} {start_opt:Bstartsec} {Bcustomsec*{}} {elem_lst:Belemsec} {Bcustomsec*{}} {`%`_u32(v_n)?{v_n <- n_opt}:Bdatacntsec} {Bcustomsec*{}} {(local_lst, v_expr)*{v_expr <- expr_lst, local_lst <- local_lst_lst}:Bcodesec} {Bcustomsec*{}} {data_lst:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst)) + prod{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, typeidx_lst : typeidx*, n_opt : n?, expr_lst : expr*, local_lst_lst : local**, var_0 : dataidx*} {Bmagic Bversion {Bcustomsec*{}} {type_lst:Btypesec} {Bcustomsec*{}} {import_lst:Bimportsec} {Bcustomsec*{}} {typeidx_lst:Bfuncsec} {Bcustomsec*{}} {table_lst:Btablesec} {Bcustomsec*{}} {mem_lst:Bmemsec} {Bcustomsec*{}} {tag_lst:Btagsec} {Bcustomsec*{}} {global_lst:Bglobalsec} {Bcustomsec*{}} {export_lst:Bexportsec} {Bcustomsec*{}} {start_opt:Bstartsec} {Bcustomsec*{}} {elem_lst:Belemsec} {Bcustomsec*{}} {`%`_u32(v_n)?{v_n <- n_opt}:Bdatacntsec} {Bcustomsec*{}} {(local_lst, v_expr)*{v_expr <- expr_lst, local_lst <- local_lst_lst}:Bcodesec} {Bcustomsec*{}} {data_lst:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst)) -- (if (v_n = |data_lst|))?{v_n <- n_opt} - -- if ((n_opt =/= ?()) \/ ($dataidx_funcs(func_lst) = [])) + -- if ((n_opt =/= ?()) \/ (var_0 = [])) -- (if (v_func = FUNC_func(v_typeidx, local_lst, v_expr)))*{v_expr <- expr_lst, v_func <- func_lst, local_lst <- local_lst_lst, v_typeidx <- typeidx_lst} + -- fun_dataidx_funcs: `%%`(func_lst, var_0) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec grammar Tchar : char @@ -18607,7 +22206,8 @@ grammar Tstringchar : char ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tstringelem : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tstringchar => $utf8([c]) + prod{c : char, var_0 : byte*} c:Tstringchar => var_0 + -- fun_utf8: `%%`([c], var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] @@ -18620,8 +22220,9 @@ grammar Tstring : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tname : name ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c_lst : char*, b_lst : byte*} b_lst:Tstring => `%`_name(c_lst) - -- if (b_lst = $utf8(c_lst)) + prod{c_lst : char*, b_lst : byte*, var_0 : byte*} b_lst:Tstring => `%`_name(c_lst) + -- if (b_lst = var_0) + -- fun_utf8: `%%`(c_lst, var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tid : name @@ -18785,7 +22386,8 @@ grammar TiN(v_N : N) : iN ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{v_n : n} `%`_uN(v_n):TuN(v_N) => `%`_iN(v_n) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN} i:TsN(v_N) => `%`_iN($inv_signed_(v_N, $proj_sN_0(i).0)) + prod{i : sN, var_0 : nat} i:TsN(v_N) => `%`_iN(var_0) + -- fun_inv_signed_: `%%%`(v_N, $proj_sN_0(i).0, var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rec { @@ -18844,10 +22446,12 @@ grammar TfNmag(v_N : N) : fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod "inf" => INF_fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(v_N)) + prod{var_0 : m} "nan" => NAN_fNmag(var_0) + -- fun_canon_: `%%`(v_N, var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{v_n : n} {{"nan:0x"} {v_n:Thexnum}} => NAN_fNmag(v_n) - -- if ((1 <= v_n) /\ (v_n < (2 ^ !($signif(v_N))))) + prod{v_n : n, var_0 : nat?} {{"nan:0x"} {v_n:Thexnum}} => NAN_fNmag(v_n) + -- if ((1 <= v_n) /\ (v_n < (2 ^ !(var_0)))) + -- fun_signif: `%%`(v_N, var_0) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TfN(v_N : N) : fN @@ -19115,7 +22719,8 @@ grammar Ttypedef_(v_I : I) : (subtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Trectype_(v_I : I) : (rectype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{st_lst : subtype*, I'_lst : I*} {{"("} {"rec"} {(st, I')*{I' <- I'_lst, st <- st_lst}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(v_I))} {")"}} => (REC_rectype(`%`_list(st_lst)), $concat_idctxt(I'_lst)) + prod{st_lst : subtype*, I'_lst : I*, var_0 : idctxt} {{"("} {"rec"} {(st, I')*{I' <- I'_lst, st <- st_lst}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(v_I))} {")"}} => (REC_rectype(`%`_list(st_lst)), var_0) + -- fun_concat_idctxt: `%%`(I'_lst, var_0) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Taddrtype : addrtype @@ -20302,9 +23907,10 @@ grammar Tlocal_(v_I : I) : (local*, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tfunc_(v_I : I) : (func, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{x : idx, loc_lst_lst : local**, e : expr, id_opt : char?, I_1 : I, I_2_lst : I*, I' : I} {{"("} {"func"} {?(`%`_name(lift(id_opt))):Tid?{}} {(x, I_1):Ttypeuse_(v_I)} {(loc_lst, I_2):Tlocal_(v_I)*{I_2 <- I_2_lst, loc_lst <- loc_lst_lst}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc_lst_lst), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id_opt)))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -- if (I' = v_I +++ I_1 +++ $concat_idctxt(I_2_lst)) + prod{x : idx, loc_lst_lst : local**, e : expr, id_opt : char?, I_1 : I, I_2_lst : I*, I' : I, var_0 : I} {{"("} {"func"} {?(`%`_name(lift(id_opt))):Tid?{}} {(x, I_1):Ttypeuse_(v_I)} {(loc_lst, I_2):Tlocal_(v_I)*{I_2 <- I_2_lst, loc_lst <- loc_lst_lst}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc_lst_lst), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id_opt)))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = v_I +++ I_1 +++ var_0) -- Idctxt_ok: `|-%:OK`(I') + -- fun_concat_idctxt: `%%`(I_2_lst, var_0) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdatastring : byte* @@ -20465,8 +24071,8 @@ grammar Tdecl_(v_I : I) : (decl, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmodule : module ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, I_lst : I*, decl_lst : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(v_decl, v_I)*{v_I <- I_lst, v_decl <- decl_lst}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst)) - -- if (I' = $concat_idctxt(I_lst)) + prod{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, I_lst : I*, decl_lst : decl*, I' : I, var_1 : bool, var_0 : idctxt} {{"("} {"module"} {Tid?{}} {(v_decl, v_I)*{v_I <- I_lst, v_decl <- decl_lst}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst)) + -- if (I' = var_0) -- Idctxt_ok: `|-%:OK`(I') -- if (type_lst = $typesd(decl_lst)) -- if (import_lst = $importsd(decl_lst)) @@ -20479,7 +24085,9 @@ grammar Tmodule : module -- if (elem_lst = $elemsd(decl_lst)) -- if (lift(start_opt) = $startsd(decl_lst)) -- if (export_lst = $exportsd(decl_lst)) - -- if $ordered(decl_lst) + -- if var_1 + -- fun_ordered: `%%`(decl_lst, var_1) + -- fun_concat_idctxt: `%%`(I_lst, var_0) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdecldots_(v_I : I) : (decl, idctxt)* diff --git a/spectec/test-middlend/test.spectec.exp b/spectec/test-middlend/test.spectec.exp index 1235cae41d..e34d0ac44e 100644 --- a/spectec/test-middlend/test.spectec.exp +++ b/spectec/test-middlend/test.spectec.exp @@ -229,7 +229,7 @@ def $t_totalize3(nat : nat) : nat? def $t_totalize3{n : nat}(n) = (iter_val#2 + iter_val#1)?{iter_val#2 <- $t_totalize(n), iter_val#1 <- $t_totalize2((n + 10))} == IL Validation after pass uncase-removal... -== Running pass sideconditions... +== Running pass sub-expansion... ;; test.spectec relation HasSize: `%|-%`(nat, nat) @@ -239,8 +239,6 @@ relation TestNestedIter: `%|-%`(nat***, nat**) ;; test.spectec rule _{`n***` : nat***, `m**` : nat**}: `%|-%`(n*{n <- `n*`}*{`n*` <- `n**`}+{`n**` <- `n***`}, m*{m <- `m*`}+{`m*` <- `m**`}) - -- if (|`m**`| = |`n***`|) - -- (if (|`m*`| = |`n**`|))+{`m*` <- `m**`, `n**` <- `n***`} -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} ;; test.spectec @@ -264,8 +262,8 @@ def $t_totalize3(nat : nat) : nat? ;; test.spectec def $t_totalize3{n : nat}(n) = (iter_val#2 + iter_val#1)?{iter_val#2 <- $t_totalize(n), iter_val#1 <- $t_totalize2((n + 10))} -== IL Validation after pass sideconditions... -== Running pass sub-expansion... +== IL Validation after pass sub-expansion... +== Running pass sub... ;; test.spectec relation HasSize: `%|-%`(nat, nat) @@ -275,8 +273,6 @@ relation TestNestedIter: `%|-%`(nat***, nat**) ;; test.spectec rule _{`n***` : nat***, `m**` : nat**}: `%|-%`(n*{n <- `n*`}*{`n*` <- `n**`}+{`n**` <- `n***`}, m*{m <- `m*`}+{`m*` <- `m**`}) - -- if (|`m**`| = |`n***`|) - -- (if (|`m*`| = |`n**`|))+{`m*` <- `m**`, `n**` <- `n***`} -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} ;; test.spectec @@ -300,8 +296,65 @@ def $t_totalize3(nat : nat) : nat? ;; test.spectec def $t_totalize3{n : nat}(n) = (iter_val#2 + iter_val#1)?{iter_val#2 <- $t_totalize(n), iter_val#1 <- $t_totalize2((n + 10))} -== IL Validation after pass sub-expansion... -== Running pass sub... +== IL Validation after pass sub... +== Running pass definition-to-relation... + +;; test.spectec +relation HasSize: `%|-%`(nat, nat) + +;; test.spectec +relation TestNestedIter: `%|-%`(nat***, nat**) + ;; test.spectec + rule _{`n***` : nat***, `m**` : nat**}: + `%|-%`(n*{n <- `n*`}*{`n*` <- `n**`}+{`n**` <- `n***`}, m*{m <- `m*`}+{`m*` <- `m**`}) + -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} + +;; test.spectec +relation fun_t_totalize_before_fun_t_totalize_case_2: `%`(nat) + ;; test.spectec + rule fun_t_totalize_case_1: + `%`(10) + + ;; test.spectec + rule fun_t_totalize_case_0: + `%`(3) + +;; test.spectec +relation fun_t_totalize: `%%`(nat, nat?) + ;; test.spectec + rule fun_t_totalize_case_0: + `%%`(3, ?(5)) + + ;; test.spectec + rule fun_t_totalize_case_1: + `%%`(10, ?(20)) + + ;; test.spectec + rule fun_t_totalize_case_2{x0 : nat}: + `%%`(x0, ?()) + -- ~ fun_t_totalize_before_fun_t_totalize_case_2: `%`(x0) + +;; test.spectec +relation fun_t_totalize2: `%%`(nat, nat?) + ;; test.spectec + rule fun_t_totalize2_case_0: + `%%`(1, ?(2)) + + ;; test.spectec + rule fun_t_totalize2_case_1{n : nat, var_0 : nat?}: + `%%`(n, var_0) + -- fun_t_totalize: `%%`(n, var_0) + +;; test.spectec +relation fun_t_totalize3: `%%`(nat, nat?) + ;; test.spectec + rule fun_t_totalize3_case_0{n : nat, var_1 : nat?, var_0 : nat?}: + `%%`(n, (iter_val#2 + iter_val#1)?{iter_val#2 <- var_0, iter_val#1 <- var_1}) + -- fun_t_totalize2: `%%`((n + 10), var_1) + -- fun_t_totalize: `%%`(n, var_0) + +== IL Validation after pass definition-to-relation... +== Running pass sideconditions... ;; test.spectec relation HasSize: `%|-%`(nat, nat) @@ -316,27 +369,50 @@ relation TestNestedIter: `%|-%`(nat***, nat**) -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} ;; test.spectec -def $t_totalize(nat : nat) : nat? +relation fun_t_totalize_before_fun_t_totalize_case_2: `%`(nat) ;; test.spectec - def $t_totalize(3) = ?(5) + rule fun_t_totalize_case_1: + `%`(10) + ;; test.spectec - def $t_totalize(10) = ?(20) - def $t_totalize{x0 : nat}(x0) = ?() - -- otherwise + rule fun_t_totalize_case_0: + `%`(3) ;; test.spectec -def $t_totalize2(nat : nat) : nat? +relation fun_t_totalize: `%%`(nat, nat?) ;; test.spectec - def $t_totalize2(1) = ?(2) + rule fun_t_totalize_case_0: + `%%`(3, ?(5)) + ;; test.spectec - def $t_totalize2{n : nat}(n) = $t_totalize(n) + rule fun_t_totalize_case_1: + `%%`(10, ?(20)) + + ;; test.spectec + rule fun_t_totalize_case_2{x0 : nat}: + `%%`(x0, ?()) + -- ~ fun_t_totalize_before_fun_t_totalize_case_2: `%`(x0) ;; test.spectec -def $t_totalize3(nat : nat) : nat? +relation fun_t_totalize2: `%%`(nat, nat?) ;; test.spectec - def $t_totalize3{n : nat}(n) = (iter_val#2 + iter_val#1)?{iter_val#2 <- $t_totalize(n), iter_val#1 <- $t_totalize2((n + 10))} + rule fun_t_totalize2_case_0: + `%%`(1, ?(2)) -== IL Validation after pass sub... + ;; test.spectec + rule fun_t_totalize2_case_1{n : nat, var_0 : nat?}: + `%%`(n, var_0) + -- fun_t_totalize: `%%`(n, var_0) + +;; test.spectec +relation fun_t_totalize3: `%%`(nat, nat?) + ;; test.spectec + rule fun_t_totalize3_case_0{n : nat, var_1 : nat?, var_0 : nat?}: + `%%`(n, (iter_val#2 + iter_val#1)?{iter_val#2 <- var_0, iter_val#1 <- var_1}) + -- fun_t_totalize2: `%%`((n + 10), var_1) + -- fun_t_totalize: `%%`(n, var_0) + +== IL Validation after pass sideconditions... == Running pass alias-demut... ;; test.spectec @@ -352,25 +428,48 @@ relation TestNestedIter: `%|-%`(nat***, nat**) -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} ;; test.spectec -def $t_totalize(nat : nat) : nat? +relation fun_t_totalize_before_fun_t_totalize_case_2: `%`(nat) ;; test.spectec - def $t_totalize(3) = ?(5) + rule fun_t_totalize_case_1: + `%`(10) + ;; test.spectec - def $t_totalize(10) = ?(20) - def $t_totalize{x0 : nat}(x0) = ?() - -- otherwise + rule fun_t_totalize_case_0: + `%`(3) ;; test.spectec -def $t_totalize2(nat : nat) : nat? +relation fun_t_totalize: `%%`(nat, nat?) ;; test.spectec - def $t_totalize2(1) = ?(2) + rule fun_t_totalize_case_0: + `%%`(3, ?(5)) + ;; test.spectec - def $t_totalize2{n : nat}(n) = $t_totalize(n) + rule fun_t_totalize_case_1: + `%%`(10, ?(20)) + + ;; test.spectec + rule fun_t_totalize_case_2{x0 : nat}: + `%%`(x0, ?()) + -- ~ fun_t_totalize_before_fun_t_totalize_case_2: `%`(x0) ;; test.spectec -def $t_totalize3(nat : nat) : nat? +relation fun_t_totalize2: `%%`(nat, nat?) ;; test.spectec - def $t_totalize3{n : nat}(n) = (iter_val#2 + iter_val#1)?{iter_val#2 <- $t_totalize(n), iter_val#1 <- $t_totalize2((n + 10))} + rule fun_t_totalize2_case_0: + `%%`(1, ?(2)) + + ;; test.spectec + rule fun_t_totalize2_case_1{n : nat, var_0 : nat?}: + `%%`(n, var_0) + -- fun_t_totalize: `%%`(n, var_0) + +;; test.spectec +relation fun_t_totalize3: `%%`(nat, nat?) + ;; test.spectec + rule fun_t_totalize3_case_0{n : nat, var_1 : nat?, var_0 : nat?}: + `%%`(n, (iter_val#2 + iter_val#1)?{iter_val#2 <- var_0, iter_val#1 <- var_1}) + -- fun_t_totalize2: `%%`((n + 10), var_1) + -- fun_t_totalize: `%%`(n, var_0) == IL Validation after pass alias-demut... == Running pass improve-ids... @@ -388,25 +487,48 @@ relation TestNestedIter: `%|-%`(nat***, nat**) -- (if (|n_lst| = m))*{m <- m_lst, n_lst <- n_lst_lst}+{m_lst <- m_lst_lst, n_lst_lst <- n_lst_lst_lst} ;; test.spectec -def $t_totalize(nat : nat) : nat? +relation fun_t_totalize_before_fun_t_totalize_case_2: `%`(nat) ;; test.spectec - def $t_totalize(3) = ?(5) + rule fun_t_totalize_case_1: + `%`(10) + ;; test.spectec - def $t_totalize(10) = ?(20) - def $t_totalize{x0 : nat}(x0) = ?() - -- otherwise + rule fun_t_totalize_case_0: + `%`(3) ;; test.spectec -def $t_totalize2(nat : nat) : nat? +relation fun_t_totalize: `%%`(nat, nat?) ;; test.spectec - def $t_totalize2(1) = ?(2) + rule fun_t_totalize_case_0: + `%%`(3, ?(5)) + ;; test.spectec - def $t_totalize2{n : nat}(n) = $t_totalize(n) + rule fun_t_totalize_case_1: + `%%`(10, ?(20)) + + ;; test.spectec + rule fun_t_totalize_case_2{x0 : nat}: + `%%`(x0, ?()) + -- ~ fun_t_totalize_before_fun_t_totalize_case_2: `%`(x0) ;; test.spectec -def $t_totalize3(nat : nat) : nat? +relation fun_t_totalize2: `%%`(nat, nat?) ;; test.spectec - def $t_totalize3{n : nat}(n) = (iter_val#2 + iter_val#1)?{iter_val#2 <- $t_totalize(n), iter_val#1 <- $t_totalize2((n + 10))} + rule fun_t_totalize2_case_0: + `%%`(1, ?(2)) + + ;; test.spectec + rule fun_t_totalize2_case_1{n : nat, var_0 : nat?}: + `%%`(n, var_0) + -- fun_t_totalize: `%%`(n, var_0) + +;; test.spectec +relation fun_t_totalize3: `%%`(nat, nat?) + ;; test.spectec + rule fun_t_totalize3_case_0{n : nat, var_1 : nat?, var_0 : nat?}: + `%%`(n, (iter_val#2 + iter_val#1)?{iter_val#2 <- var_0, iter_val#1 <- var_1}) + -- fun_t_totalize2: `%%`((n + 10), var_1) + -- fun_t_totalize: `%%`(n, var_0) == IL Validation after pass improve-ids... == Complete. From 1e64ec4254cce077777a41b79161ac92d91cea30 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 26 Feb 2026 12:01:16 +0000 Subject: [PATCH 072/115] Make recursive functions (at the current moment, only the ones with exp params) into relations. --- spectec/src/middlend/deftorel.ml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index c6c3e05523..af2f33ae71 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -595,11 +595,11 @@ let uses_def ids_set def = | _ -> false let rec transform_def (env : env) def = - let must_be_rel_def d = + (* let must_be_rel_def d = match d.it with | DecD (id, params, _, clauses) -> must_be_relation env id params clauses | _ -> false - in + in *) let has_exp_params d = match d.it with | DecD (_, params, _, _) -> List.for_all is_exp_param params @@ -613,7 +613,7 @@ let rec transform_def (env : env) def = cvt_def_to_rel env id params typ clauses | DecD (id, params, typ, clauses) -> [{ def with it = DecD (id, params, typ, List.map (transform_clause env) clauses) }] - | RecD defs when List.exists must_be_rel_def defs && List.for_all has_exp_params defs -> + | RecD defs when List.for_all has_exp_params defs -> let ids_ref = ref StringSet.empty in List.iter (fun d -> match d.it with | DecD (id, _, _, _) -> From 33e3ac4cbfa9b2909c346b58d32dd8c622d1b2e3 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 21 Apr 2026 15:43:57 +0100 Subject: [PATCH 073/115] Made it so that functions with only else premises are allowed as functions --- spectec/src/middlend/deftorel.ml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index af2f33ae71..26830a332c 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -458,6 +458,11 @@ let collect_list_length_vars () : StringSet.t ref * (module Iter.Arg) = in Arg.acc, (module Arg) let must_be_relation env id params clauses = + let only_otherwise prems = + match prems with + | [{it = ElsePr; _}] -> true + | _ -> false + in let listn_set, (module Arg : Iter.Arg) = collect_list_length_vars () in let rel_def_checker = { exists_base_checker with collect_exp = utilizes_rel_def env} in assert (!listn_set = StringSet.empty); @@ -471,7 +476,10 @@ let must_be_relation env id params clauses = | DefD (quants, args, exp, prems) -> Acc.args args; (* Premises might not be decidable *) - prems <> [] || + (* NOTE: if its only otherwise premise, then fall-through semantics should be + able to handle it. + *) + (prems <> [] && not (only_otherwise prems)) || (* Functions that have function calls transformed to relations must also be relations *) collect_exp rel_def_checker exp || List.exists (collect_prem rel_def_checker) prems || From a615206e63aa578927e3894743eda33b72a1290e Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 18 May 2026 15:54:24 +0100 Subject: [PATCH 074/115] Fix tests --- .../09-definition-to-relation.il | 1495 +++++++--------- .../specification.exp/10-sideconditions.il | 1550 ++++++++--------- .../specification.exp/11-alias-demut.il | 1550 ++++++++--------- .../specification.exp/12-improve-ids.il | 1550 ++++++++--------- spectec/test-middlend/test.spectec.exp | 172 +- 5 files changed, 2762 insertions(+), 3555 deletions(-) diff --git a/spectec/test-middlend/specification.exp/09-definition-to-relation.il b/spectec/test-middlend/specification.exp/09-definition-to-relation.il index 0ed7062260..0f3652560e 100644 --- a/spectec/test-middlend/specification.exp/09-definition-to-relation.il +++ b/spectec/test-middlend/specification.exp/09-definition-to-relation.il @@ -22,23 +22,31 @@ def $min(nat : nat, nat : nat) : nat ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 -def $sum(nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 - def $sum([]) = 0 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 - def $sum{n : nat, `n'*` : n*}([n] ++ n'#1*{n'#1 <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 +relation fun_sum: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_0: + `%%`([], 0) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'#1*{n'#1 <- `n'*`}, (n + var_0)) + -- fun_sum: `%%`(n'*{n' <- `n'*`}, var_0) } ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 -def $prod(nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 - def $prod([]) = 1 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 - def $prod{n : nat, `n'*` : n*}([n] ++ n'#2*{n'#2 <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 +relation fun_prod: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_0: + `%%`([], 1) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'#2*{n'#2 <- `n'*`}, (n * var_0)) + -- fun_prod: `%%`(n'*{n' <- `n'*`}, var_0) } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec @@ -244,68 +252,32 @@ syntax i64 = iN syntax i128 = iN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_signif_before_fun_signif_case_2: `%`(N) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_1: - `%`(64) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_0: - `%`(32) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_signif: `%%`(N, nat?) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_0: - `%%`(32, ?(23)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_1: - `%%`(64, ?(52)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_2{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_signif_before_fun_signif_case_2: `%`(x0) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_expon_before_fun_expon_case_2: `%`(N) +def $signif(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_1: - `%`(64) - + def $signif(32) = ?(23) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_0: - `%`(32) + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_expon: `%%`(N, nat?) +def $expon(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_0: - `%%`(32, ?(8)) - + def $expon(32) = ?(8) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_1: - `%%`(64, ?(11)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_2{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_expon_before_fun_expon_case_2: `%`(x0) + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_M: `%%`(N, nat) +def $M(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_M_case_0{N : nat, var_0 : nat?}: - `%%`(N, !(var_0)) - -- fun_signif: `%%`(N, var_0) + def $M{N : nat}(N) = !($signif(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_E: `%%`(N, nat) +def $E(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_E_case_0{N : nat, var_0 : nat?}: - `%%`(N, !(var_0)) - -- fun_expon: `%%`(N, var_0) + def $E{N : nat}(N) = !($expon(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax exp = int @@ -320,28 +292,23 @@ syntax fNmag = ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_fNmag: `%%`(N, fNmag) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_0{N : N, m : m, exp : exp, var_1 : nat, var_0 : nat}: + rule fNmag_case_0{N : N, m : m, exp : exp}: `%%`(N, NORM_fNmag(m, exp)) - -- if ((m < (2 ^ var_0)) /\ ((((2 : nat <:> int) - ((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) - -- fun_E: `%%`(N, var_1) - -- fun_M: `%%`(N, var_0) + -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_1{N : N, exp : exp, m : m, var_1 : nat, var_0 : nat}: + rule fNmag_case_1{N : N, exp : exp, m : m}: `%%`(N, SUBNORM_fNmag(m)) - -- if ((m < (2 ^ var_0)) /\ (((2 : nat <:> int) - ((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) - -- fun_E: `%%`(N, var_1) - -- fun_M: `%%`(N, var_0) + -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rule fNmag_case_2{N : N}: `%%`(N, INF_fNmag) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_3{N : N, m : m, var_0 : nat}: + rule fNmag_case_3{N : N, m : m}: `%%`(N, NAN_fNmag(m)) - -- if ((1 <= m) /\ (m < (2 ^ var_0))) - -- fun_M: `%%`(N, var_0) + -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax fN = @@ -388,11 +355,9 @@ relation fun_fone: `%%`(N, fN) -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_canon_: `%%`(N, nat) +def $canon_(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_canon__case_0{N : nat, var_0 : nat?}: - `%%`(N, (2 ^ (((!(var_0) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) - -- fun_signif: `%%`(N, var_0) + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax vN = uN @@ -580,66 +545,101 @@ relation wf_externidx: `%`(externidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 -def $funcsxx(externidx*) : typeidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 - def $funcsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 - def $funcsxx{x : uN, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx#1*{xx#1 <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 - def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#2*{xx#2 <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 +relation fun_funcsxx: `%%`(externidx*, typeidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_1{x : uN, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([FUNC_externidx(x)] ++ xx#1*{xx#1 <- `xx*`}, [x] ++ var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([externidx] ++ xx#2*{xx#2 <- `xx*`}, var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 -def $globalsxx(externidx*) : globalidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 - def $globalsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 - def $globalsxx{x : uN, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx#3*{xx#3 <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 - def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#4*{xx#4 <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 +relation fun_globalsxx: `%%`(externidx*, globalidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_1{x : uN, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([GLOBAL_externidx(x)] ++ xx#3*{xx#3 <- `xx*`}, [x] ++ var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([externidx] ++ xx#4*{xx#4 <- `xx*`}, var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 -def $tablesxx(externidx*) : tableidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 - def $tablesxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 - def $tablesxx{x : uN, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx#5*{xx#5 <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 - def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#6*{xx#6 <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 +relation fun_tablesxx: `%%`(externidx*, tableidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_1{x : uN, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([TABLE_externidx(x)] ++ xx#5*{xx#5 <- `xx*`}, [x] ++ var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([externidx] ++ xx#6*{xx#6 <- `xx*`}, var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 -def $memsxx(externidx*) : memidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 - def $memsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 - def $memsxx{x : uN, `xx*` : externidx*}([MEM_externidx(x)] ++ xx#7*{xx#7 <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 - def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#8*{xx#8 <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 +relation fun_memsxx: `%%`(externidx*, memidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_1{x : uN, `xx*` : externidx*, var_0 : memidx*}: + `%%`([MEM_externidx(x)] ++ xx#7*{xx#7 <- `xx*`}, [x] ++ var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : memidx*}: + `%%`([externidx] ++ xx#8*{xx#8 <- `xx*`}, var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 -def $tagsxx(externidx*) : tagidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 - def $tagsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 - def $tagsxx{x : uN, `xx*` : externidx*}([TAG_externidx(x)] ++ xx#9*{xx#9 <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 - def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#10*{xx#10 <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 +relation fun_tagsxx: `%%`(externidx*, tagidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_1{x : uN, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([TAG_externidx(x)] ++ xx#9*{xx#9 <- `xx*`}, [x] ++ var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([externidx] ++ xx#10*{xx#10 <- `xx*`}, var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -1492,95 +1492,35 @@ relation wf_moduletype: `%`(moduletype) -- (wf_externtype: `%`(`externtype*_0`))*{`externtype*_0` <- `externtype*_0`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_IN_before_fun_IN_case_2: `%`(N) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_1: - `%`(64) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_0: - `%`(32) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_IN: `%%`(N, Inn?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_0: - `%%`(32, ?(I32_Inn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_1: - `%%`(64, ?(I64_Inn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_2{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_IN_before_fun_IN_case_2: `%`(x0) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_FN_before_fun_FN_case_2: `%`(N) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_1: - `%`(64) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_0: - `%`(32) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_FN: `%%`(N, Fnn?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_0: - `%%`(32, ?(F32_Fnn)) - +def $IN(N : N) : Inn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_1: - `%%`(64, ?(F64_Fnn)) - + def $IN(32) = ?(I32_Inn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_2{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_FN_before_fun_FN_case_2: `%`(x0) + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_JN_before_fun_JN_case_4: `%`(N) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_3: - `%`(64) - +def $FN(N : N) : Fnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_2: - `%`(32) - + def $FN(32) = ?(F32_Fnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_1: - `%`(16) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_0: - `%`(8) + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_JN: `%%`(N, Jnn?) +def $JN(N : N) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_0: - `%%`(8, ?(I8_Jnn)) - + def $JN(8) = ?(I8_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_1: - `%%`(16, ?(I16_Jnn)) - + def $JN(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_2: - `%%`(32, ?(I32_Jnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_3: - `%%`(64, ?(I64_Jnn)) - + def $JN(32) = ?(I32_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_4{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_JN_before_fun_JN_case_4: `%`(x0) + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $size(numtype : numtype) : nat @@ -1621,69 +1561,23 @@ def $lsize(lanetype : lanetype) : nat def $lsize(I16_lanetype) = $psize(I16_packtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_zsize_before_fun_zsize_case_7: `%`(storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_6: - `%`(I16_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_5: - `%`(I8_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_4: - `%`(V128_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_3: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_2: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_1: - `%`(I64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_0: - `%`(I32_storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_zsize: `%%`(storagetype, nat?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_0: - `%%`(I32_storagetype, ?($size(I32_numtype))) - +def $zsize(storagetype : storagetype) : nat? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_1: - `%%`(I64_storagetype, ?($size(I64_numtype))) - + def $zsize(I32_storagetype) = ?($size(I32_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_2: - `%%`(F32_storagetype, ?($size(F32_numtype))) - + def $zsize(I64_storagetype) = ?($size(I64_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_3: - `%%`(F64_storagetype, ?($size(F64_numtype))) - + def $zsize(F32_storagetype) = ?($size(F32_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_4: - `%%`(V128_storagetype, ?($vsize(V128_vectype))) - + def $zsize(F64_storagetype) = ?($size(F64_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_5: - `%%`(I8_storagetype, ?($psize(I8_packtype))) - + def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_6: - `%%`(I16_storagetype, ?($psize(I16_packtype))) - + def $zsize(I8_storagetype) = ?($psize(I8_packtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_7{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_zsize_before_fun_zsize_case_7: `%`(x0) + def $zsize(I16_storagetype) = ?($psize(I16_packtype)) + def $zsize{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $isize(Inn : Inn) : nat @@ -1701,69 +1595,31 @@ def $fsize(Fnn : Fnn) : nat def $fsize{Fnn : Fnn}(Fnn) = $size($numtype_Fnn(Fnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_isize_before_fun_inv_isize_case_2: `%`(nat) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_1: - `%`(64) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_0: - `%`(32) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_isize: `%%`(nat, Inn?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_0: - `%%`(32, ?(I32_Inn)) - +def $inv_isize(nat : nat) : Inn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_1: - `%%`(64, ?(I64_Inn)) - + def $inv_isize(32) = ?(I32_Inn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_2{x0 : nat}: - `%%`(x0, ?()) - -- ~ fun_inv_isize_before_fun_inv_isize_case_2: `%`(x0) + def $inv_isize(64) = ?(I64_Inn) + def $inv_isize{x0 : nat}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_jsize: `%%`(nat, Jnn?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_jsize_case_0: - `%%`(8, ?(I8_Jnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_jsize_case_1: - `%%`(16, ?(I16_Jnn)) - +def $inv_jsize(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_jsize_case_2{n : nat, var_0 : Inn?}: - `%%`(n, $Jnn_addrtype(iter_val#1)?{iter_val#1 <- var_0}) - -- fun_inv_isize: `%%`(n, var_0) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_fsize_before_fun_inv_fsize_case_2: `%`(nat) + def $inv_jsize(8) = ?(I8_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_1: - `%`(64) - + def $inv_jsize(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_0: - `%`(32) + def $inv_jsize{n : nat}(n) = $Jnn_addrtype(iter_val#1)?{iter_val#1 <- $inv_isize(n)} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_fsize: `%%`(nat, Fnn?) +def $inv_fsize(nat : nat) : Fnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_0: - `%%`(32, ?(F32_Fnn)) - + def $inv_fsize(32) = ?(F32_Fnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_1: - `%%`(64, ?(F64_Fnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_2{x0 : nat}: - `%%`(x0, ?()) - -- ~ fun_inv_fsize_before_fun_inv_fsize_case_2: `%`(x0) + def $inv_fsize(64) = ?(F64_Fnn) + def $inv_fsize{x0 : nat}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $sizenn(numtype : numtype) : nat @@ -1811,11 +1667,9 @@ def $jsizenn(Jnn : Jnn) : nat def $jsizenn{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_jsizenn: `%%`(nat, Jnn?) +def $inv_jsizenn(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_jsizenn_case_0{n : nat, var_0 : Jnn?}: - `%%`(n, var_0) - -- fun_inv_jsize: `%%`(n, var_0) + def $inv_jsizenn{n : nat}(n) = $inv_jsize(n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $lunpack(lanetype : lanetype) : numtype @@ -1873,191 +1727,59 @@ relation fun_unpack: `%%`(storagetype, valtype) -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_nunpack_before_fun_nunpack_case_6: `%`(storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_5: - `%`(I16_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_4: - `%`(I8_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_3: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_2: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_1: - `%`(I64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_0: - `%`(I32_storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_nunpack: `%%`(storagetype, numtype?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_0: - `%%`(I32_storagetype, ?(I32_numtype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_1: - `%%`(I64_storagetype, ?(I64_numtype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_2: - `%%`(F32_storagetype, ?(F32_numtype)) - +def $nunpack(storagetype : storagetype) : numtype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_3: - `%%`(F64_storagetype, ?(F64_numtype)) - + def $nunpack(I32_storagetype) = ?(I32_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_4: - `%%`(I8_storagetype, ?(I32_numtype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_5: - `%%`(I16_storagetype, ?(I32_numtype)) - + def $nunpack(I64_storagetype) = ?(I64_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_6{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_nunpack_before_fun_nunpack_case_6: `%`(x0) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_vunpack_before_fun_vunpack_case_1: `%`(storagetype) + def $nunpack(F32_storagetype) = ?(F32_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_vunpack_case_0: - `%`(V128_storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_vunpack: `%%`(storagetype, vectype?) + def $nunpack(F64_storagetype) = ?(F64_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_vunpack_case_0: - `%%`(V128_storagetype, ?(V128_vectype)) - + def $nunpack(I8_storagetype) = ?(I32_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_vunpack_case_1{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_vunpack_before_fun_vunpack_case_1: `%`(x0) + def $nunpack(I16_storagetype) = ?(I32_numtype) + def $nunpack{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_cunpack_before_fun_cunpack_case_13: `%`(storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_12: - `%`(I16_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_11: - `%`(I8_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_10: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_9: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_8: - `%`(I64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_7: - `%`(I32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_6: - `%`(I16_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_5: - `%`(I8_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_4: - `%`(V128_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_3: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_2: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_1: - `%`(I64_storagetype) - +def $vunpack(storagetype : storagetype) : vectype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_0: - `%`(I32_storagetype) + def $vunpack(V128_storagetype) = ?(V128_vectype) + def $vunpack{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_cunpack: `%%`(storagetype, consttype?) +def $cunpack(storagetype : storagetype) : consttype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_0: - `%%`(I32_storagetype, ?(I32_consttype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_1: - `%%`(I64_storagetype, ?(I64_consttype)) - + def $cunpack(I32_storagetype) = ?(I32_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_2: - `%%`(F32_storagetype, ?(F32_consttype)) - + def $cunpack(I64_storagetype) = ?(I64_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_3: - `%%`(F64_storagetype, ?(F64_consttype)) - + def $cunpack(F32_storagetype) = ?(F32_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_4: - `%%`(V128_storagetype, ?(V128_consttype)) - + def $cunpack(F64_storagetype) = ?(F64_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_5: - `%%`(I8_storagetype, ?(I32_consttype)) - + def $cunpack(V128_storagetype) = ?(V128_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_6: - `%%`(I16_storagetype, ?(I32_consttype)) - + def $cunpack(I8_storagetype) = ?(I32_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_7: - `%%`(I32_storagetype, ?($consttype_numtype($lunpack(I32_lanetype)))) - + def $cunpack(I16_storagetype) = ?(I32_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_8: - `%%`(I64_storagetype, ?($consttype_numtype($lunpack(I64_lanetype)))) - + def $cunpack(I32_storagetype) = ?($consttype_numtype($lunpack(I32_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_9: - `%%`(F32_storagetype, ?($consttype_numtype($lunpack(F32_lanetype)))) - + def $cunpack(I64_storagetype) = ?($consttype_numtype($lunpack(I64_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_10: - `%%`(F64_storagetype, ?($consttype_numtype($lunpack(F64_lanetype)))) - + def $cunpack(F32_storagetype) = ?($consttype_numtype($lunpack(F32_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_11: - `%%`(I8_storagetype, ?($consttype_numtype($lunpack(I8_lanetype)))) - + def $cunpack(F64_storagetype) = ?($consttype_numtype($lunpack(F64_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_12: - `%%`(I16_storagetype, ?($consttype_numtype($lunpack(I16_lanetype)))) - + def $cunpack(I8_storagetype) = ?($consttype_numtype($lunpack(I8_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_13{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_cunpack_before_fun_cunpack_case_13: `%`(x0) + def $cunpack(I16_storagetype) = ?($consttype_numtype($lunpack(I16_lanetype))) + def $cunpack{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype @@ -2077,85 +1799,110 @@ relation fun_diffrt: `%%%`(reftype, reftype, reftype) -- wf_reftype: `%`(REF_reftype(null_1#3?{null_1#3 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_as_deftype_before_fun_as_deftype_case_1: `%`(typeuse) +def $as_deftype(typeuse : typeuse) : deftype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_as_deftype_case_0{rectype : rectype, n : n}: - `%`(_DEF_typeuse(rectype, n)) + def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = ?(_DEF_deftype(rectype, n)) + def $as_deftype{x0 : typeuse}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_as_deftype: `%%`(typeuse, deftype?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_as_deftype_case_0{rectype : rectype, n : n}: - `%%`(_DEF_typeuse(rectype, n), ?(_DEF_deftype(rectype, n))) +rec { - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_as_deftype_case_1{x0 : typeuse}: - `%%`(x0, ?()) - -- ~ fun_as_deftype_before_fun_as_deftype_case_1: `%`(x0) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 +relation fun_tagsxt: `%%`(externtype*, tagtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_0: + `%%`([], []) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_1{jt : typeuse, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([TAG_externtype(jt)] ++ xt#1*{xt#1 <- `xt*`}, [jt] ++ var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 -def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 - def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 - def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt#1*{xt#1 <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 - def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#2*{xt#2 <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([externtype] ++ xt#2*{xt#2 <- `xt*`}, var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 -def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 - def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 - def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt#3*{xt#3 <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 - def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#4*{xt#4 <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation fun_globalsxt: `%%`(externtype*, globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_1{gt : globaltype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([GLOBAL_externtype(gt)] ++ xt#3*{xt#3 <- `xt*`}, [gt] ++ var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([externtype] ++ xt#4*{xt#4 <- `xt*`}, var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 -def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 - def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 - def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt#5*{xt#5 <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 - def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#6*{xt#6 <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation fun_memsxt: `%%`(externtype*, memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_1{mt : memtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([MEM_externtype(mt)] ++ xt#5*{xt#5 <- `xt*`}, [mt] ++ var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([externtype] ++ xt#6*{xt#6 <- `xt*`}, var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 -def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 - def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 - def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt#7*{xt#7 <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 - def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#8*{xt#8 <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation fun_tablesxt: `%%`(externtype*, tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_1{tt : tabletype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([TABLE_externtype(tt)] ++ xt#7*{xt#7 <- `xt*`}, [tt] ++ var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([externtype] ++ xt#8*{xt#8 <- `xt*`}, var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 -def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 - def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 - def $funcsxt{rectype : rectype, n : n, `xt*` : externtype*}([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt#9*{xt#9 <- `xt*`}) = [_DEF_deftype(rectype, n)] ++ $funcsxt(xt#10*{xt#10 <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 - def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#11*{xt#11 <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 +relation fun_funcsxt: `%%`(externtype*, deftype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_1{rectype : rectype, n : n, `xt*` : externtype*, var_0 : deftype*}: + `%%`([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt#9*{xt#9 <- `xt*`}, [_DEF_deftype(rectype, n)] ++ var_0) + -- fun_funcsxt: `%%`(xt#10*{xt#10 <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : deftype*}: + `%%`([externtype] ++ xt#11*{xt#11 <- `xt*`}, var_0) + -- fun_funcsxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -7476,24 +7223,22 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*, var_0 : deftype?}: + rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) - -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*, var_0 : deftype?}: + rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: @@ -7859,16 +7604,15 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 - rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*, var_0 : deftype?}: + rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`(C) -- wf_instr: `%`(THROW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: @@ -9116,7 +8860,7 @@ relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*, var_1 : funcidx*, var_0 : moduletype}: + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*, var_6 : deftype*, var_5 : tabletype*, var_4 : memtype*, var_3 : globaltype*, var_2 : tagtype*, var_1 : funcidx*, var_0 : moduletype}: `|-%:%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) -- wf_context: `%`(C) -- wf_context: `%`(C') @@ -9143,11 +8887,16 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (C = C' +++ {TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) -- if (x*{x <- `x*`} = var_1) - -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) - -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) - -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) - -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) - -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (jt_I*{jt_I <- `jt_I*`} = var_2) + -- if (gt_I*{gt_I <- `gt_I*`} = var_3) + -- if (mt_I*{mt_I <- `mt_I*`} = var_4) + -- if (tt_I*{tt_I <- `tt_I*`} = var_5) + -- if (dt_I*{dt_I <- `dt_I*`} = var_6) + -- fun_funcsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_6) + -- fun_tablesxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_5) + -- fun_memsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_4) + -- fun_globalsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_3) + -- fun_tagsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_2) -- fun_funcidx_nonfuncs: `%%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_1) -- fun_clos_moduletype: `%%%`(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}), var_0) @@ -9296,69 +9045,23 @@ relation fun_inv_signed_: `%%%`(N, int, nat) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_sx_before_fun_sx_case_7: `%`(storagetype) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_6: - `%`(I16_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_5: - `%`(I8_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_4: - `%`(V128_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_3: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_2: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_1: - `%`(I64_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_0: - `%`(I32_storagetype) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_sx: `%%`(storagetype, sx??) +def $sx(storagetype : storagetype) : sx?? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_0: - `%%`(I32_storagetype, ?(?())) - + def $sx(I32_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_1: - `%%`(I64_storagetype, ?(?())) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_2: - `%%`(F32_storagetype, ?(?())) - + def $sx(I64_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_3: - `%%`(F64_storagetype, ?(?())) - + def $sx(F32_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_4: - `%%`(V128_storagetype, ?(?())) - + def $sx(F64_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_5: - `%%`(I8_storagetype, ?(?(S_sx))) - + def $sx(V128_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_6: - `%%`(I16_storagetype, ?(?(S_sx))) - + def $sx(I8_storagetype) = ?(?(S_sx)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_7{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_sx_before_fun_sx_case_7: `%`(x0) + def $sx(I16_storagetype) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_zero: `%%`(lanetype, lane_) @@ -9912,16 +9615,14 @@ relation fun_cunpacknum_: `%%%`(storagetype, lit_, lit_) `%%%`(V128_storagetype, c, c) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_cunpacknum__case_5{c : uN, var_0 : consttype?}: + rule fun_cunpacknum__case_5{c : uN}: `%%%`(I8_storagetype, mk_lit__2_lit_(I8_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) - -- fun_cunpack: `%%`($storagetype_packtype(I8_packtype), var_0) - -- wf_lit_: `%%`($storagetype_consttype(!(var_0)), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_cunpacknum__case_6{c : uN, var_0 : consttype?}: + rule fun_cunpacknum__case_6{c : uN}: `%%%`(I16_storagetype, mk_lit__2_lit_(I16_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) - -- fun_cunpack: `%%`($storagetype_packtype(I16_packtype), var_0) - -- wf_lit_: `%%`($storagetype_consttype(!(var_0)), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) @@ -15243,66 +14944,101 @@ relation fun_unpackfield_: `%%%%`(storagetype, sx?, fieldval, val?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.1-190.86 -def $tagsxa(externaddr*) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.23 - def $tagsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.42 - def $tagsxa{a : nat, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa#1*{xa#1 <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:198.1-198.57 - def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#2*{xa#2 <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 +relation fun_tagsxa: `%%`(externaddr*, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([TAG_externaddr(a)] ++ xa#1*{xa#1 <- `xa*`}, [a] ++ var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([externaddr] ++ xa#2*{xa#2 <- `xa*`}, var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.1-191.89 -def $globalsxa(externaddr*) : globaladdr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.26 - def $globalsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.51 - def $globalsxa{a : nat, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa#3*{xa#3 <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:202.1-202.63 - def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#4*{xa#4 <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 +relation fun_globalsxa: `%%`(externaddr*, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([GLOBAL_externaddr(a)] ++ xa#3*{xa#3 <- `xa*`}, [a] ++ var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([externaddr] ++ xa#4*{xa#4 <- `xa*`}, var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.1-192.86 -def $memsxa(externaddr*) : memaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.23 - def $memsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.42 - def $memsxa{a : nat, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa#5*{xa#5 <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:206.1-206.57 - def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#6*{xa#6 <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 +relation fun_memsxa: `%%`(externaddr*, memaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([MEM_externaddr(a)] ++ xa#5*{xa#5 <- `xa*`}, [a] ++ var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([externaddr] ++ xa#6*{xa#6 <- `xa*`}, var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.88 -def $tablesxa(externaddr*) : tableaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.25 - def $tablesxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.48 - def $tablesxa{a : nat, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa#7*{xa#7 <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:210.1-210.61 - def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#8*{xa#8 <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 +relation fun_tablesxa: `%%`(externaddr*, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([TABLE_externaddr(a)] ++ xa#7*{xa#7 <- `xa*`}, [a] ++ var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([externaddr] ++ xa#8*{xa#8 <- `xa*`}, var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.87 -def $funcsxa(externaddr*) : funcaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.24 - def $funcsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.45 - def $funcsxa{a : nat, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa#9*{xa#9 <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:214.1-214.59 - def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#10*{xa#10 <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 +relation fun_funcsxa: `%%`(externaddr*, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([FUNC_externaddr(a)] ++ xa#9*{xa#9 <- `xa*`}, [a] ++ var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([externaddr] ++ xa#10*{xa#10 <- `xa*`}, var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -16412,7 +16148,7 @@ relation Step_pure: `%~>%`(instr*, instr*) -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*, `var_0*` : uN*}: + rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*, `var_1*` : uN*, var_0 : nat}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), i))*{i <- `i*`} -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) @@ -16420,8 +16156,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)) - -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0(var_0).0*{var_0 <- `var_0*`})) - -- (fun_inez_: `%%%`($jsizenn(Jnn), !($proj_lane__2(i)), var_0))*{var_0 <- `var_0*`, i <- `i*`} + -- if ($proj_uN_0(!($proj_num__0(c))).0 = var_0) + -- (fun_inez_: `%%%`($jsizenn(Jnn), !($proj_lane__2(i)), var_1))*{var_1 <- `var_1*`, i <- `i*`} + -- fun_prod: `%%`($proj_uN_0(var_1).0*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_, var_0 : vec_}: @@ -16939,7 +16676,7 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: + rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) @@ -16955,8 +16692,7 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !(var_0))) - -- fun_sx: `%%`(zt_2, var_0) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -17021,14 +16757,13 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: + rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- fun_zsize: `%%`(zt, var_0) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -17047,14 +16782,13 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: + rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- fun_zsize: `%%`(zt, var_0) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -17715,28 +17449,25 @@ relation Step_read: `%~>%`(config, instr*) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: + rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- fun_zsize: `%%`(zt, var_0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?, var_3 : nat?, `var_2*` : lit_*, var_1 : consttype?, `var_0*` : instr*}: + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?, `var_1*` : lit_*, `var_0*` : instr*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), var_0^n{var_0 <- `var_0*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !(var_3)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- fun_zsize: `%%`(zt, var_3) - -- (fun_cunpacknum_: `%%%`(zt, c, var_2))^n{var_2 <- `var_2*`, c <- `c*`} - -- fun_cunpack: `%%`(zt, var_1) - -- (fun_const: `%%%`(!(var_1), var_2, var_0))^n{var_2 <- `var_2*`, var_0 <- `var_0*`} + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (fun_cunpacknum_: `%%%`(zt, c, var_1))^n{var_1 <- `var_1*`, c <- `c*`} + -- (fun_const: `%%%`(!($cunpack(zt)), var_1, var_0))^n{var_1 <- `var_1*`, var_0 <- `var_0*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: @@ -17837,7 +17568,7 @@ relation Step_read: `%~>%`(config, instr*) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) @@ -17853,11 +17584,10 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !(var_0))) - -- fun_sx: `%%`(zt_2, var_0) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) @@ -17873,8 +17603,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (sx?{sx <- `sx?`} = !(var_0)) - -- fun_sx: `%%`(zt_2, var_0) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -17932,14 +17661,13 @@ relation Step_read: `%~>%`(config, instr*) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: + rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- fun_zsize: `%%`(zt, var_0) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -17949,25 +17677,23 @@ relation Step_read: `%~>%`(config, instr*) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?, var_3 : nat?, var_2 : lit_, var_1 : consttype?, var_0 : instr}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) var_0 `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?, var_1 : lit_, var_0 : instr}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) var_0 `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(`ARRAY.SET`_instr(x)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- fun_zsize: `%%`(zt, var_3) - -- fun_cunpacknum_: `%%%`(zt, c, var_2) - -- fun_cunpack: `%%`(zt, var_1) - -- fun_const: `%%%`(!(var_1), var_2, var_0) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- fun_cunpacknum_: `%%%`(zt, c, var_1) + -- fun_const: `%%%`(!($cunpack(zt)), var_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rec { @@ -18026,16 +17752,15 @@ relation Step: `%~>%`(config, config) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:231.1-235.49 - rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*, var_1 : deftype?, var_0 : state}: + rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*, var_0 : state}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config(var_0, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) -- wf_config: `%`(`%;%`_config(var_0, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- Expand: `%~~%`(!(var_1), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- fun_as_deftype: `%%`($tag(z, x).TYPE_taginst, var_1) -- fun_add_exninst: `%%%`(z, [exn], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 @@ -18532,22 +18257,27 @@ relation fun_allocexports: `%%%`(moduleinst, export*, exportinst*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref**, (store, moduleinst)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_13 : exportinst*, var_12 : (store, funcaddr*), `var_11*` : elemtype*, var_10 : (store, elemaddr*), var_9 : (store, dataaddr*), `var_8*` : tabletype*, var_7 : (store, tableaddr*), `var_6*` : memtype*, var_5 : (store, memaddr*), `var_4*` : globaltype*, var_3 : (store, globaladdr*), `var_2*` : tagtype*, var_1 : (store, tagaddr*), var_0 : deftype*}: + rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_18 : exportinst*, var_17 : (store, funcaddr*), `var_16*` : elemtype*, var_15 : (store, elemaddr*), var_14 : (store, dataaddr*), `var_13*` : tabletype*, var_12 : (store, tableaddr*), `var_11*` : memtype*, var_10 : (store, memaddr*), `var_9*` : globaltype*, var_8 : (store, globaladdr*), `var_7*` : tagtype*, var_6 : (store, tagaddr*), var_5 : deftype*, var_4 : funcaddr*, var_3 : tableaddr*, var_2 : memaddr*, var_1 : globaladdr*, var_0 : tagaddr*}: `%%%%%%%`(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}, (s_7, moduleinst)) - -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#7*{export#7 <- `export*`}, var_13) - -- fun_allocfuncs: `%%%%%`(s_6, dt#15*{dt#15 <- `dt*`}[$proj_uN_0(x#4).0]*{x#4 <- `x*`}, FUNC_funccode(x#5, local#4*{local#4 <- `local*#86`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#86` <- `local**`, x#5 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_12) - -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- `dt*`}, var_11))*{var_11 <- `var_11*`, elemtype#3 <- `elemtype*`} - -- fun_allocelems: `%%%%`(s_5, var_11*{var_11 <- `var_11*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_10) - -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#114`}*{`byte*#114` <- `byte**`}, var_9) - -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_8))*{var_8 <- `var_8*`, tabletype#160 <- `tabletype*`} - -- fun_alloctables: `%%%%`(s_3, var_8*{var_8 <- `var_8*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_7) - -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_6))*{var_6 <- `var_6*`, memtype#126 <- `memtype*`} - -- fun_allocmems: `%%%`(s_2, var_6*{var_6 <- `var_6*`}, var_5) - -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_4))*{var_4 <- `var_4*`, globaltype#126 <- `globaltype*`} - -- fun_allocglobals: `%%%%`(s_1, var_4*{var_4 <- `var_4*`}, val_G#2*{val_G#2 <- `val_G*`}, var_3) - -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_2))*{var_2 <- `var_2*`, tagtype#82 <- `tagtype*`} - -- fun_alloctags: `%%%`(s, var_2*{var_2 <- `var_2*`}, var_1) - -- fun_alloctypes: `%%`(type#4*{type#4 <- `type*`}, var_0) + -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#7*{export#7 <- `export*`}, var_18) + -- fun_allocfuncs: `%%%%%`(s_6, dt#15*{dt#15 <- `dt*`}[$proj_uN_0(x#4).0]*{x#4 <- `x*`}, FUNC_funccode(x#5, local#4*{local#4 <- `local*#86`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#86` <- `local**`, x#5 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_17) + -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- `dt*`}, var_16))*{var_16 <- `var_16*`, elemtype#3 <- `elemtype*`} + -- fun_allocelems: `%%%%`(s_5, var_16*{var_16 <- `var_16*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_15) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#114`}*{`byte*#114` <- `byte**`}, var_14) + -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_13))*{var_13 <- `var_13*`, tabletype#160 <- `tabletype*`} + -- fun_alloctables: `%%%%`(s_3, var_13*{var_13 <- `var_13*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_12) + -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_11))*{var_11 <- `var_11*`, memtype#126 <- `memtype*`} + -- fun_allocmems: `%%%`(s_2, var_11*{var_11 <- `var_11*`}, var_10) + -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_9))*{var_9 <- `var_9*`, globaltype#126 <- `globaltype*`} + -- fun_allocglobals: `%%%%`(s_1, var_9*{var_9 <- `var_9*`}, val_G#2*{val_G#2 <- `val_G*`}, var_8) + -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_7))*{var_7 <- `var_7*`, tagtype#82 <- `tagtype*`} + -- fun_alloctags: `%%%`(s, var_7*{var_7 <- `var_7*`}, var_6) + -- fun_alloctypes: `%%`(type#4*{type#4 <- `type*`}, var_5) + -- fun_funcsxa: `%%`(externaddr#6*{externaddr#6 <- `externaddr*`}, var_4) + -- fun_tablesxa: `%%`(externaddr#5*{externaddr#5 <- `externaddr*`}, var_3) + -- fun_memsxa: `%%`(externaddr#4*{externaddr#4 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#3*{externaddr#3 <- `externaddr*`}, var_1) + -- fun_tagsxa: `%%`(externaddr#2*{externaddr#2 <- `externaddr*`}, var_0) -- wf_store: `%`(s_7) -- wf_moduleinst: `%`(moduleinst) -- wf_store: `%`(s_1) @@ -18574,21 +18304,21 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* -- if (func#5*{func#5 <- `func*`} = FUNC_func(x#3, local#3*{local#3 <- `local*#84`}, expr_F#2)*{expr_F#2 <- `expr_F*`, `local*#84` <- `local**`, x#3 <- `x*`}) -- if (data#4*{data#4 <- `data*`} = DATA_data(byte#6*{byte#6 <- `byte*#112`}, datamode#112)*{`byte*#112` <- `byte**`, datamode#112 <- `datamode*`}) -- if (elem#6*{elem#6 <- `elem*`} = ELEM_elem(elemtype#2, expr_E#2*{expr_E#2 <- `expr_E*#2`}, elemmode#232)*{elemmode#232 <- `elemmode*`, elemtype#2 <- `elemtype*`, `expr_E*#2` <- `expr_E**`}) - -- if (aa_I#3*{aa_I#3 <- `aa_I*`} = $tagsxa(externaddr#2*{externaddr#2 <- `externaddr*`})) - -- if (ga_I#3*{ga_I#3 <- `ga_I*`} = $globalsxa(externaddr#3*{externaddr#3 <- `externaddr*`})) - -- if (ma_I#3*{ma_I#3 <- `ma_I*`} = $memsxa(externaddr#4*{externaddr#4 <- `externaddr*`})) - -- if (ta_I#3*{ta_I#3 <- `ta_I*`} = $tablesxa(externaddr#5*{externaddr#5 <- `externaddr*`})) - -- if (fa_I#3*{fa_I#3 <- `fa_I*`} = $funcsxa(externaddr#6*{externaddr#6 <- `externaddr*`})) - -- if (dt#9*{dt#9 <- `dt*`} = var_0) + -- if (aa_I#3*{aa_I#3 <- `aa_I*`} = var_0) + -- if (ga_I#3*{ga_I#3 <- `ga_I*`} = var_1) + -- if (ma_I#3*{ma_I#3 <- `ma_I*`} = var_2) + -- if (ta_I#3*{ta_I#3 <- `ta_I*`} = var_3) + -- if (fa_I#3*{fa_I#3 <- `fa_I*`} = var_4) + -- if (dt#9*{dt#9 <- `dt*`} = var_5) -- if (fa#3*{fa#3 <- `fa*`} = (|s.FUNCS_store| + i_F#1)^(i_F#1<|func#6*{func#6 <- `func*`}|){}) - -- if ((s_1, aa#3*{aa#3 <- `aa*`}) = var_1) - -- if ((s_2, ga#3*{ga#3 <- `ga*`}) = var_3) - -- if ((s_3, ma#3*{ma#3 <- `ma*`}) = var_5) - -- if ((s_4, ta#3*{ta#3 <- `ta*`}) = var_7) - -- if ((s_5, da#2*{da#2 <- `da*`}) = var_9) - -- if ((s_6, ea#2*{ea#2 <- `ea*`}) = var_10) - -- if ((s_7, fa#4*{fa#4 <- `fa*`}) = var_12) - -- if (xi#2*{xi#2 <- `xi*`} = var_13) + -- if ((s_1, aa#3*{aa#3 <- `aa*`}) = var_6) + -- if ((s_2, ga#3*{ga#3 <- `ga*`}) = var_8) + -- if ((s_3, ma#3*{ma#3 <- `ma*`}) = var_10) + -- if ((s_4, ta#3*{ta#3 <- `ta*`}) = var_12) + -- if ((s_5, da#2*{da#2 <- `da*`}) = var_14) + -- if ((s_6, ea#2*{ea#2 <- `ea*`}) = var_15) + -- if ((s_7, fa#4*{fa#4 <- `fa*`}) = var_17) + -- if (xi#2*{xi#2 <- `xi*`} = var_18) -- if (moduleinst = {TYPES dt#16*{dt#16 <- `dt*`}, TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18696,15 +18426,19 @@ relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec relation fun_instantiate: `%%%%`(store, module, externaddr*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat, `var_7*` : instr**, `var_6*` : instr**, var_5 : (store, moduleinst), var_4 : (state, ref**), var_3 : (state, ref*), var_2 : (state, val*), var_1 : deftype*, var_0 : deftype*}: + rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat, `var_11*` : instr**, `var_10*` : instr**, var_9 : (store, moduleinst), var_8 : (state, ref**), var_7 : (state, ref*), var_6 : (state, val*), var_5 : funcaddr*, var_4 : globaladdr*, var_3 : deftype*, var_2 : funcaddr*, var_1 : globaladdr*, var_0 : deftype*}: `%%%%`(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}, `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) - -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#12*{elem#12 <- `elem*`}[i_E#2], var_7))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_7 <- `var_7*`} - -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#11*{data#11 <- `data*`}[i_D#2], var_6))^(i_D#2<|data#10*{data#10 <- `data*`}|){var_6 <- `var_6*`} - -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_5) - -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_4) - -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_3) - -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_2) - -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_1) + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#12*{elem#12 <- `elem*`}[i_E#2], var_11))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_11 <- `var_11*`} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#11*{data#11 <- `data*`}[i_D#2], var_10))^(i_D#2<|data#10*{data#10 <- `data*`}|){var_10 <- `var_10*`} + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_9) + -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_8) + -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_7) + -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_6) + -- fun_funcsxa: `%%`(externaddr#12*{externaddr#12 <- `externaddr*`}, var_5) + -- fun_globalsxa: `%%`(externaddr#11*{externaddr#11 <- `externaddr*`}, var_4) + -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_3) + -- fun_funcsxa: `%%`(externaddr#9*{externaddr#9 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#8*{externaddr#8 <- `externaddr*`}, var_1) -- fun_alloctypes: `%%`(type#6*{type#6 <- `type*`}, var_0) -- wf_state: `%`(z) -- wf_state: `%`(z') @@ -18721,7 +18455,7 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- (wf_data: `%`(DATA_data(byte#8*{byte#8 <- `byte*#117`}, datamode#116)))*{`byte*#117` <- `byte**`, datamode#116 <- `datamode*`} -- (wf_elem: `%`(ELEM_elem(reftype#517, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)))*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#517 <- `reftype*`} -- (wf_start: `%`(START_start(x#6)))?{x#6 <- `x?`} - -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS $globalsxa(externaddr#8*{externaddr#8 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#9*{externaddr#9 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#9*{func#9 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS var_1, MEMS [], TABLES [], FUNCS var_2 ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#9*{func#9 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) -- wf_state: `%`(`%;%`_state(s''', f)) -- (wf_uN: `%%`(32, `%`_uN(i_D#1)))^(i_D#1<|data#7*{data#7 <- `data*`}|){} @@ -18735,15 +18469,15 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- if (data#9*{data#9 <- `data*`} = DATA_data(byte#9*{byte#9 <- `byte*#119`}, datamode#118)*{`byte*#119` <- `byte**`, datamode#118 <- `datamode*`}) -- if (elem#10*{elem#10 <- `elem*`} = ELEM_elem(reftype#519, expr_E#4*{expr_E#4 <- `expr_E*#4`}, elemmode#239)*{elemmode#239 <- `elemmode*`, `expr_E*#4` <- `expr_E**`, reftype#519 <- `reftype*`}) -- if (start#8?{start#8 <- `start?`} = START_start(x#8)?{x#8 <- `x?`}) - -- if (moduleinst_0 = {TYPES var_1, TAGS [], GLOBALS $globalsxa(externaddr#11*{externaddr#11 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#12*{externaddr#12 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#11*{func#11 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- if (moduleinst_0 = {TYPES var_3, TAGS [], GLOBALS var_4, MEMS [], TABLES [], FUNCS var_5 ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#11*{func#11 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G#4*{val_G#4 <- `val_G*`}) = var_2) - -- if ((z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = var_3) - -- if ((z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = var_4) + -- if ((z', val_G#4*{val_G#4 <- `val_G*`}) = var_6) + -- if ((z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = var_7) + -- if ((z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = var_8) -- if (z''' = `%;%`_state(s''', f)) - -- if ((s'''', moduleinst) = var_5) - -- if (instr_D#2*{instr_D#2 <- `instr_D*`} = $concat_(syntax instr, var_6^(i_D#2<|data#10*{data#10 <- `data*`}|){var_6 <- `var_6*`})) - -- if (instr_E#2*{instr_E#2 <- `instr_E*`} = $concat_(syntax instr, var_7^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_7 <- `var_7*`})) + -- if ((s'''', moduleinst) = var_9) + -- if (instr_D#2*{instr_D#2 <- `instr_D*`} = $concat_(syntax instr, var_10^(i_D#2<|data#10*{data#10 <- `data*`}|){var_10 <- `var_10*`})) + -- if (instr_E#2*{instr_E#2 <- `instr_E*`} = $concat_(syntax instr, var_11^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_11 <- `var_11*`})) -- if (instr_S#2?{instr_S#2 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18966,156 +18700,240 @@ relation wf_decl: `%`(decl) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:271.1-271.48 - def $typesd{rectype : rectype, `decl'*` : decl*}([TYPE_decl(rectype)] ++ decl'#1*{decl'#1 <- `decl'*`}) = [TYPE_type(rectype)] ++ $typesd(decl'#2*{decl'#2 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#3*{decl'#3 <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 +relation fun_typesd: `%%`(decl*, type*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_1{rectype : rectype, `decl'*` : decl*, var_0 : type*}: + `%%`([TYPE_decl(rectype)] ++ decl'#1*{decl'#1 <- `decl'*`}, [TYPE_type(rectype)] ++ var_0) + -- fun_typesd: `%%`(decl'#2*{decl'#2 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_2{decl : decl, `decl'*` : decl*, var_0 : type*}: + `%%`([decl] ++ decl'#3*{decl'#3 <- `decl'*`}, var_0) + -- fun_typesd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:275.1-275.56 - def $importsd{name : name, name_0 : name, externtype : externtype, `decl'*` : decl*}([IMPORT_decl(name, name_0, externtype)] ++ decl'#4*{decl'#4 <- `decl'*`}) = [IMPORT_import(name, name_0, externtype)] ++ $importsd(decl'#5*{decl'#5 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#6*{decl'#6 <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation fun_importsd: `%%`(decl*, import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_1{name : name, name_0 : name, externtype : externtype, `decl'*` : decl*, var_0 : import*}: + `%%`([IMPORT_decl(name, name_0, externtype)] ++ decl'#4*{decl'#4 <- `decl'*`}, [IMPORT_import(name, name_0, externtype)] ++ var_0) + -- fun_importsd: `%%`(decl'#5*{decl'#5 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_2{decl : decl, `decl'*` : decl*, var_0 : import*}: + `%%`([decl] ++ decl'#6*{decl'#6 <- `decl'*`}, var_0) + -- fun_importsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:279.1-279.44 - def $tagsd{tagtype : tagtype, `decl'*` : decl*}([TAG_decl(tagtype)] ++ decl'#7*{decl'#7 <- `decl'*`}) = [TAG_tag(tagtype)] ++ $tagsd(decl'#8*{decl'#8 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#9*{decl'#9 <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation fun_tagsd: `%%`(decl*, tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_1{tagtype : tagtype, `decl'*` : decl*, var_0 : tag*}: + `%%`([TAG_decl(tagtype)] ++ decl'#7*{decl'#7 <- `decl'*`}, [TAG_tag(tagtype)] ++ var_0) + -- fun_tagsd: `%%`(decl'#8*{decl'#8 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_2{decl : decl, `decl'*` : decl*, var_0 : tag*}: + `%%`([decl] ++ decl'#9*{decl'#9 <- `decl'*`}, var_0) + -- fun_tagsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:283.1-283.56 - def $globalsd{globaltype : globaltype, expr : expr, `decl'*` : decl*}([GLOBAL_decl(globaltype, expr)] ++ decl'#10*{decl'#10 <- `decl'*`}) = [GLOBAL_global(globaltype, expr)] ++ $globalsd(decl'#11*{decl'#11 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#12*{decl'#12 <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation fun_globalsd: `%%`(decl*, global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_1{globaltype : globaltype, expr : expr, `decl'*` : decl*, var_0 : global*}: + `%%`([GLOBAL_decl(globaltype, expr)] ++ decl'#10*{decl'#10 <- `decl'*`}, [GLOBAL_global(globaltype, expr)] ++ var_0) + -- fun_globalsd: `%%`(decl'#11*{decl'#11 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_2{decl : decl, `decl'*` : decl*, var_0 : global*}: + `%%`([decl] ++ decl'#12*{decl'#12 <- `decl'*`}, var_0) + -- fun_globalsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:287.1-287.44 - def $memsd{memtype : memtype, `decl'*` : decl*}([MEMORY_decl(memtype)] ++ decl'#13*{decl'#13 <- `decl'*`}) = [MEMORY_mem(memtype)] ++ $memsd(decl'#14*{decl'#14 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#15*{decl'#15 <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation fun_memsd: `%%`(decl*, mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_1{memtype : memtype, `decl'*` : decl*, var_0 : mem*}: + `%%`([MEMORY_decl(memtype)] ++ decl'#13*{decl'#13 <- `decl'*`}, [MEMORY_mem(memtype)] ++ var_0) + -- fun_memsd: `%%`(decl'#14*{decl'#14 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_2{decl : decl, `decl'*` : decl*, var_0 : mem*}: + `%%`([decl] ++ decl'#15*{decl'#15 <- `decl'*`}, var_0) + -- fun_memsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:291.1-291.52 - def $tablesd{tabletype : tabletype, expr : expr, `decl'*` : decl*}([TABLE_decl(tabletype, expr)] ++ decl'#16*{decl'#16 <- `decl'*`}) = [TABLE_table(tabletype, expr)] ++ $tablesd(decl'#17*{decl'#17 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#18*{decl'#18 <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation fun_tablesd: `%%`(decl*, table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_1{tabletype : tabletype, expr : expr, `decl'*` : decl*, var_0 : table*}: + `%%`([TABLE_decl(tabletype, expr)] ++ decl'#16*{decl'#16 <- `decl'*`}, [TABLE_table(tabletype, expr)] ++ var_0) + -- fun_tablesd: `%%`(decl'#17*{decl'#17 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_2{decl : decl, `decl'*` : decl*, var_0 : table*}: + `%%`([decl] ++ decl'#18*{decl'#18 <- `decl'*`}, var_0) + -- fun_tablesd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:295.1-295.48 - def $funcsd{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*}([FUNC_decl(typeidx, `local*`, expr)] ++ decl'#19*{decl'#19 <- `decl'*`}) = [FUNC_func(typeidx, `local*`, expr)] ++ $funcsd(decl'#20*{decl'#20 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#21*{decl'#21 <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation fun_funcsd: `%%`(decl*, func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_1{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*, var_0 : func*}: + `%%`([FUNC_decl(typeidx, `local*`, expr)] ++ decl'#19*{decl'#19 <- `decl'*`}, [FUNC_func(typeidx, `local*`, expr)] ++ var_0) + -- fun_funcsd: `%%`(decl'#20*{decl'#20 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_2{decl : decl, `decl'*` : decl*, var_0 : func*}: + `%%`([decl] ++ decl'#21*{decl'#21 <- `decl'*`}, var_0) + -- fun_funcsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:299.1-299.48 - def $datasd{`byte*` : byte*, datamode : datamode, `decl'*` : decl*}([DATA_decl(`byte*`, datamode)] ++ decl'#22*{decl'#22 <- `decl'*`}) = [DATA_data(`byte*`, datamode)] ++ $datasd(decl'#23*{decl'#23 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#24*{decl'#24 <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation fun_datasd: `%%`(decl*, data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_1{`byte*` : byte*, datamode : datamode, `decl'*` : decl*, var_0 : data*}: + `%%`([DATA_decl(`byte*`, datamode)] ++ decl'#22*{decl'#22 <- `decl'*`}, [DATA_data(`byte*`, datamode)] ++ var_0) + -- fun_datasd: `%%`(decl'#23*{decl'#23 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_2{decl : decl, `decl'*` : decl*, var_0 : data*}: + `%%`([decl] ++ decl'#24*{decl'#24 <- `decl'*`}, var_0) + -- fun_datasd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:303.1-303.48 - def $elemsd{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*}([ELEM_decl(reftype, `expr*`, elemmode)] ++ decl'#25*{decl'#25 <- `decl'*`}) = [ELEM_elem(reftype, `expr*`, elemmode)] ++ $elemsd(decl'#26*{decl'#26 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#27*{decl'#27 <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation fun_elemsd: `%%`(decl*, elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_1{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*, var_0 : elem*}: + `%%`([ELEM_decl(reftype, `expr*`, elemmode)] ++ decl'#25*{decl'#25 <- `decl'*`}, [ELEM_elem(reftype, `expr*`, elemmode)] ++ var_0) + -- fun_elemsd: `%%`(decl'#26*{decl'#26 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_2{decl : decl, `decl'*` : decl*, var_0 : elem*}: + `%%`([decl] ++ decl'#27*{decl'#27 <- `decl'*`}, var_0) + -- fun_elemsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:307.1-307.52 - def $startsd{funcidx : funcidx, `decl'*` : decl*}([START_decl(funcidx)] ++ decl'#28*{decl'#28 <- `decl'*`}) = [START_start(funcidx)] ++ $startsd(decl'#29*{decl'#29 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#30*{decl'#30 <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation fun_startsd: `%%`(decl*, start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_1{funcidx : funcidx, `decl'*` : decl*, var_0 : start*}: + `%%`([START_decl(funcidx)] ++ decl'#28*{decl'#28 <- `decl'*`}, [START_start(funcidx)] ++ var_0) + -- fun_startsd: `%%`(decl'#29*{decl'#29 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_2{decl : decl, `decl'*` : decl*, var_0 : start*}: + `%%`([decl] ++ decl'#30*{decl'#30 <- `decl'*`}, var_0) + -- fun_startsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:311.1-311.56 - def $exportsd{name : name, externidx : externidx, `decl'*` : decl*}([EXPORT_decl(name, externidx)] ++ decl'#31*{decl'#31 <- `decl'*`}) = [EXPORT_export(name, externidx)] ++ $exportsd(decl'#32*{decl'#32 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#33*{decl'#33 <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation fun_exportsd: `%%`(decl*, export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_1{name : name, externidx : externidx, `decl'*` : decl*, var_0 : export*}: + `%%`([EXPORT_decl(name, externidx)] ++ decl'#31*{decl'#31 <- `decl'*`}, [EXPORT_export(name, externidx)] ++ var_0) + -- fun_exportsd: `%%`(decl'#32*{decl'#32 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_2{decl : decl, `decl'*` : decl*, var_0 : export*}: + `%%`([decl] ++ decl'#33*{decl'#33 <- `decl'*`}, var_0) + -- fun_exportsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec relation fun_ordered: `%%`(decl*, bool) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - rule fun_ordered_case_0{`decl*` : decl*}: + rule fun_ordered_case_0{`decl*` : decl*, var_0 : import*}: `%%`(decl#1*{decl#1 <- `decl*`}, true) - -- if ($importsd(decl#2*{decl#2 <- `decl*`}) = []) + -- fun_importsd: `%%`(decl#2*{decl#2 <- `decl*`}, var_0) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - rule fun_ordered_case_1{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*}: - `%%`(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}, (((((($importsd(decl_1#7*{decl_1#7 <- `decl_1*`}) = []) /\ ($tagsd(decl_1#6*{decl_1#6 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1#5*{decl_1#5 <- `decl_1*`}) = [])) /\ ($memsd(decl_1#4*{decl_1#4 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1#3*{decl_1#3 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1#2*{decl_1#2 <- `decl_1*`}) = []))) + rule fun_ordered_case_1{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*, var_5 : func*, var_4 : table*, var_3 : mem*, var_2 : global*, var_1 : tag*, var_0 : import*}: + `%%`(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}, ((((((var_0 = []) /\ (var_1 = [])) /\ (var_2 = [])) /\ (var_3 = [])) /\ (var_4 = [])) /\ (var_5 = []))) + -- fun_funcsd: `%%`(decl_1#2*{decl_1#2 <- `decl_1*`}, var_5) + -- fun_tablesd: `%%`(decl_1#3*{decl_1#3 <- `decl_1*`}, var_4) + -- fun_memsd: `%%`(decl_1#4*{decl_1#4 <- `decl_1*`}, var_3) + -- fun_globalsd: `%%`(decl_1#5*{decl_1#5 <- `decl_1*`}, var_2) + -- fun_tagsd: `%%`(decl_1#6*{decl_1#6 <- `decl_1*`}, var_1) + -- fun_importsd: `%%`(decl_1#7*{decl_1#7 <- `decl_1*`}, var_0) ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context) @@ -21852,12 +21670,10 @@ grammar TfNmag(N : N) : fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod "inf" => INF_fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{var_0 : m} "nan" => NAN_fNmag(var_0) - -- fun_canon_: `%%`(N, var_0) + prod "nan" => NAN_fNmag($canon_(N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n, var_0 : nat?} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) - -- if ((1 <= n) /\ (n < (2 ^ !(var_0)))) - -- fun_signif: `%%`(N, var_0) + prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + -- if ((1 <= n) /\ (n < (2 ^ !($signif(N))))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TfN(N : N) : fN @@ -23477,22 +23293,33 @@ grammar Tdecl_(I : I) : (decl, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmodule : module ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I, var_1 : bool, var_0 : idctxt} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I, var_12 : bool, var_11 : export*, var_10 : start*, var_9 : elem*, var_8 : data*, var_7 : func*, var_6 : table*, var_5 : mem*, var_4 : global*, var_3 : tag*, var_2 : import*, var_1 : type*, var_0 : idctxt} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) -- if (I' = var_0) -- Idctxt_ok: `|-%:OK`(I') - -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) - -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) - -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) - -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) - -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) - -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) - -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) - -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) - -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) - -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) - -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if var_1 - -- fun_ordered: `%%`(decl*{decl <- `decl*`}, var_1) + -- if (type*{type <- `type*`} = var_1) + -- if (import*{import <- `import*`} = var_2) + -- if (tag*{tag <- `tag*`} = var_3) + -- if (global*{global <- `global*`} = var_4) + -- if (mem*{mem <- `mem*`} = var_5) + -- if (table*{table <- `table*`} = var_6) + -- if (func*{func <- `func*`} = var_7) + -- if (data*{data <- `data*`} = var_8) + -- if (elem*{elem <- `elem*`} = var_9) + -- if (lift(start?{start <- `start?`}) = var_10) + -- if (export*{export <- `export*`} = var_11) + -- if var_12 + -- fun_ordered: `%%`(decl*{decl <- `decl*`}, var_12) + -- fun_exportsd: `%%`(decl*{decl <- `decl*`}, var_11) + -- fun_startsd: `%%`(decl*{decl <- `decl*`}, var_10) + -- fun_elemsd: `%%`(decl*{decl <- `decl*`}, var_9) + -- fun_datasd: `%%`(decl*{decl <- `decl*`}, var_8) + -- fun_funcsd: `%%`(decl*{decl <- `decl*`}, var_7) + -- fun_tablesd: `%%`(decl*{decl <- `decl*`}, var_6) + -- fun_memsd: `%%`(decl*{decl <- `decl*`}, var_5) + -- fun_globalsd: `%%`(decl*{decl <- `decl*`}, var_4) + -- fun_tagsd: `%%`(decl*{decl <- `decl*`}, var_3) + -- fun_importsd: `%%`(decl*{decl <- `decl*`}, var_2) + -- fun_typesd: `%%`(decl*{decl <- `decl*`}, var_1) -- fun_concat_idctxt: `%%`(I*{I <- `I*`}, var_0) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec diff --git a/spectec/test-middlend/specification.exp/10-sideconditions.il b/spectec/test-middlend/specification.exp/10-sideconditions.il index cea5af435d..b3f95eeb4c 100644 --- a/spectec/test-middlend/specification.exp/10-sideconditions.il +++ b/spectec/test-middlend/specification.exp/10-sideconditions.il @@ -22,23 +22,31 @@ def $min(nat : nat, nat : nat) : nat ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 -def $sum(nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 - def $sum([]) = 0 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 - def $sum{n : nat, `n'*` : n*}([n] ++ n'#1*{n'#1 <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 +relation fun_sum: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_0: + `%%`([], 0) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'#1*{n'#1 <- `n'*`}, (n + var_0)) + -- fun_sum: `%%`(n'*{n' <- `n'*`}, var_0) } ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 -def $prod(nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 - def $prod([]) = 1 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 - def $prod{n : nat, `n'*` : n*}([n] ++ n'#2*{n'#2 <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 +relation fun_prod: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_0: + `%%`([], 1) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'#2*{n'#2 <- `n'*`}, (n * var_0)) + -- fun_prod: `%%`(n'*{n' <- `n'*`}, var_0) } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec @@ -244,70 +252,32 @@ syntax i64 = iN syntax i128 = iN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_signif_before_fun_signif_case_2: `%`(N) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_1: - `%`(64) - +def $signif(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_0: - `%`(32) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_signif: `%%`(N, nat?) + def $signif(32) = ?(23) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_0: - `%%`(32, ?(23)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_1: - `%%`(64, ?(52)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_2{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_signif_before_fun_signif_case_2: `%`(x0) + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_expon_before_fun_expon_case_2: `%`(N) +def $expon(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_1: - `%`(64) - + def $expon(32) = ?(8) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_0: - `%`(32) + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_expon: `%%`(N, nat?) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_0: - `%%`(32, ?(8)) - +def $M(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_1: - `%%`(64, ?(11)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_2{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_expon_before_fun_expon_case_2: `%`(x0) + def $M{N : nat}(N) = !($signif(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_M: `%%`(N, nat) +def $E(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_M_case_0{N : nat, var_0 : nat?}: - `%%`(N, !(var_0)) - -- if (var_0 =/= ?()) - -- fun_signif: `%%`(N, var_0) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_E: `%%`(N, nat) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_E_case_0{N : nat, var_0 : nat?}: - `%%`(N, !(var_0)) - -- if (var_0 =/= ?()) - -- fun_expon: `%%`(N, var_0) + def $E{N : nat}(N) = !($expon(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax exp = int @@ -322,28 +292,23 @@ syntax fNmag = ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_fNmag: `%%`(N, fNmag) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_0{N : N, m : m, exp : exp, var_1 : nat, var_0 : nat}: + rule fNmag_case_0{N : N, m : m, exp : exp}: `%%`(N, NORM_fNmag(m, exp)) - -- if ((m < (2 ^ var_0)) /\ ((((2 : nat <:> int) - ((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) - -- fun_E: `%%`(N, var_1) - -- fun_M: `%%`(N, var_0) + -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_1{N : N, exp : exp, m : m, var_1 : nat, var_0 : nat}: + rule fNmag_case_1{N : N, exp : exp, m : m}: `%%`(N, SUBNORM_fNmag(m)) - -- if ((m < (2 ^ var_0)) /\ (((2 : nat <:> int) - ((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) - -- fun_E: `%%`(N, var_1) - -- fun_M: `%%`(N, var_0) + -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rule fNmag_case_2{N : N}: `%%`(N, INF_fNmag) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_3{N : N, m : m, var_0 : nat}: + rule fNmag_case_3{N : N, m : m}: `%%`(N, NAN_fNmag(m)) - -- if ((1 <= m) /\ (m < (2 ^ var_0))) - -- fun_M: `%%`(N, var_0) + -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax fN = @@ -390,12 +355,9 @@ relation fun_fone: `%%`(N, fN) -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_canon_: `%%`(N, nat) +def $canon_(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_canon__case_0{N : nat, var_0 : nat?}: - `%%`(N, (2 ^ (((!(var_0) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) - -- if (var_0 =/= ?()) - -- fun_signif: `%%`(N, var_0) + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax vN = uN @@ -584,66 +546,101 @@ relation wf_externidx: `%`(externidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 -def $funcsxx(externidx*) : typeidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 - def $funcsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 - def $funcsxx{x : uN, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx#1*{xx#1 <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 - def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#2*{xx#2 <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 +relation fun_funcsxx: `%%`(externidx*, typeidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_1{x : uN, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([FUNC_externidx(x)] ++ xx#1*{xx#1 <- `xx*`}, [x] ++ var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([externidx] ++ xx#2*{xx#2 <- `xx*`}, var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 -def $globalsxx(externidx*) : globalidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 - def $globalsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 - def $globalsxx{x : uN, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx#3*{xx#3 <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 - def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#4*{xx#4 <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 +relation fun_globalsxx: `%%`(externidx*, globalidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_1{x : uN, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([GLOBAL_externidx(x)] ++ xx#3*{xx#3 <- `xx*`}, [x] ++ var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([externidx] ++ xx#4*{xx#4 <- `xx*`}, var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 -def $tablesxx(externidx*) : tableidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 - def $tablesxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 - def $tablesxx{x : uN, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx#5*{xx#5 <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 - def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#6*{xx#6 <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 +relation fun_tablesxx: `%%`(externidx*, tableidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_1{x : uN, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([TABLE_externidx(x)] ++ xx#5*{xx#5 <- `xx*`}, [x] ++ var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([externidx] ++ xx#6*{xx#6 <- `xx*`}, var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 -def $memsxx(externidx*) : memidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 - def $memsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 - def $memsxx{x : uN, `xx*` : externidx*}([MEM_externidx(x)] ++ xx#7*{xx#7 <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 - def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#8*{xx#8 <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 +relation fun_memsxx: `%%`(externidx*, memidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_1{x : uN, `xx*` : externidx*, var_0 : memidx*}: + `%%`([MEM_externidx(x)] ++ xx#7*{xx#7 <- `xx*`}, [x] ++ var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : memidx*}: + `%%`([externidx] ++ xx#8*{xx#8 <- `xx*`}, var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 -def $tagsxx(externidx*) : tagidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 - def $tagsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 - def $tagsxx{x : uN, `xx*` : externidx*}([TAG_externidx(x)] ++ xx#9*{xx#9 <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 - def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#10*{xx#10 <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 +relation fun_tagsxx: `%%`(externidx*, tagidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_1{x : uN, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([TAG_externidx(x)] ++ xx#9*{xx#9 <- `xx*`}, [x] ++ var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([externidx] ++ xx#10*{xx#10 <- `xx*`}, var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -1495,95 +1492,35 @@ relation wf_moduletype: `%`(moduletype) -- (wf_externtype: `%`(`externtype*_0`))*{`externtype*_0` <- `externtype*_0`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_IN_before_fun_IN_case_2: `%`(N) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_1: - `%`(64) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_0: - `%`(32) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_IN: `%%`(N, Inn?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_0: - `%%`(32, ?(I32_Inn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_1: - `%%`(64, ?(I64_Inn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_2{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_IN_before_fun_IN_case_2: `%`(x0) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_FN_before_fun_FN_case_2: `%`(N) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_1: - `%`(64) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_0: - `%`(32) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_FN: `%%`(N, Fnn?) +def $IN(N : N) : Inn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_0: - `%%`(32, ?(F32_Fnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_1: - `%%`(64, ?(F64_Fnn)) - + def $IN(32) = ?(I32_Inn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_2{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_FN_before_fun_FN_case_2: `%`(x0) + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_JN_before_fun_JN_case_4: `%`(N) +def $FN(N : N) : Fnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_3: - `%`(64) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_2: - `%`(32) - + def $FN(32) = ?(F32_Fnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_1: - `%`(16) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_0: - `%`(8) + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_JN: `%%`(N, Jnn?) +def $JN(N : N) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_0: - `%%`(8, ?(I8_Jnn)) - + def $JN(8) = ?(I8_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_1: - `%%`(16, ?(I16_Jnn)) - + def $JN(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_2: - `%%`(32, ?(I32_Jnn)) - + def $JN(32) = ?(I32_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_3: - `%%`(64, ?(I64_Jnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_4{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_JN_before_fun_JN_case_4: `%`(x0) + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $size(numtype : numtype) : nat @@ -1624,69 +1561,23 @@ def $lsize(lanetype : lanetype) : nat def $lsize(I16_lanetype) = $psize(I16_packtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_zsize_before_fun_zsize_case_7: `%`(storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_6: - `%`(I16_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_5: - `%`(I8_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_4: - `%`(V128_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_3: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_2: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_1: - `%`(I64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_0: - `%`(I32_storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_zsize: `%%`(storagetype, nat?) +def $zsize(storagetype : storagetype) : nat? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_0: - `%%`(I32_storagetype, ?($size(I32_numtype))) - + def $zsize(I32_storagetype) = ?($size(I32_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_1: - `%%`(I64_storagetype, ?($size(I64_numtype))) - + def $zsize(I64_storagetype) = ?($size(I64_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_2: - `%%`(F32_storagetype, ?($size(F32_numtype))) - + def $zsize(F32_storagetype) = ?($size(F32_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_3: - `%%`(F64_storagetype, ?($size(F64_numtype))) - + def $zsize(F64_storagetype) = ?($size(F64_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_4: - `%%`(V128_storagetype, ?($vsize(V128_vectype))) - + def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_5: - `%%`(I8_storagetype, ?($psize(I8_packtype))) - + def $zsize(I8_storagetype) = ?($psize(I8_packtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_6: - `%%`(I16_storagetype, ?($psize(I16_packtype))) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_7{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_zsize_before_fun_zsize_case_7: `%`(x0) + def $zsize(I16_storagetype) = ?($psize(I16_packtype)) + def $zsize{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $isize(Inn : Inn) : nat @@ -1704,69 +1595,31 @@ def $fsize(Fnn : Fnn) : nat def $fsize{Fnn : Fnn}(Fnn) = $size($numtype_Fnn(Fnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_isize_before_fun_inv_isize_case_2: `%`(nat) +def $inv_isize(nat : nat) : Inn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_1: - `%`(64) - + def $inv_isize(32) = ?(I32_Inn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_0: - `%`(32) + def $inv_isize(64) = ?(I64_Inn) + def $inv_isize{x0 : nat}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_isize: `%%`(nat, Inn?) +def $inv_jsize(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_0: - `%%`(32, ?(I32_Inn)) - + def $inv_jsize(8) = ?(I8_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_1: - `%%`(64, ?(I64_Inn)) - + def $inv_jsize(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_2{x0 : nat}: - `%%`(x0, ?()) - -- ~ fun_inv_isize_before_fun_inv_isize_case_2: `%`(x0) + def $inv_jsize{n : nat}(n) = $Jnn_addrtype(iter_val#1)?{iter_val#1 <- $inv_isize(n)} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_jsize: `%%`(nat, Jnn?) +def $inv_fsize(nat : nat) : Fnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_jsize_case_0: - `%%`(8, ?(I8_Jnn)) - + def $inv_fsize(32) = ?(F32_Fnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_jsize_case_1: - `%%`(16, ?(I16_Jnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_jsize_case_2{n : nat, var_0 : Inn?}: - `%%`(n, $Jnn_addrtype(iter_val#1)?{iter_val#1 <- var_0}) - -- fun_inv_isize: `%%`(n, var_0) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_fsize_before_fun_inv_fsize_case_2: `%`(nat) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_1: - `%`(64) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_0: - `%`(32) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_fsize: `%%`(nat, Fnn?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_0: - `%%`(32, ?(F32_Fnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_1: - `%%`(64, ?(F64_Fnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_2{x0 : nat}: - `%%`(x0, ?()) - -- ~ fun_inv_fsize_before_fun_inv_fsize_case_2: `%`(x0) + def $inv_fsize(64) = ?(F64_Fnn) + def $inv_fsize{x0 : nat}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $sizenn(numtype : numtype) : nat @@ -1814,11 +1667,9 @@ def $jsizenn(Jnn : Jnn) : nat def $jsizenn{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_jsizenn: `%%`(nat, Jnn?) +def $inv_jsizenn(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_jsizenn_case_0{n : nat, var_0 : Jnn?}: - `%%`(n, var_0) - -- fun_inv_jsize: `%%`(n, var_0) + def $inv_jsizenn{n : nat}(n) = $inv_jsize(n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $lunpack(lanetype : lanetype) : numtype @@ -1876,191 +1727,59 @@ relation fun_unpack: `%%`(storagetype, valtype) -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_nunpack_before_fun_nunpack_case_6: `%`(storagetype) +def $nunpack(storagetype : storagetype) : numtype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_5: - `%`(I16_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_4: - `%`(I8_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_3: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_2: - `%`(F32_storagetype) - + def $nunpack(I32_storagetype) = ?(I32_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_1: - `%`(I64_storagetype) - + def $nunpack(I64_storagetype) = ?(I64_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_0: - `%`(I32_storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_nunpack: `%%`(storagetype, numtype?) + def $nunpack(F32_storagetype) = ?(F32_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_0: - `%%`(I32_storagetype, ?(I32_numtype)) - + def $nunpack(F64_storagetype) = ?(F64_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_1: - `%%`(I64_storagetype, ?(I64_numtype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_2: - `%%`(F32_storagetype, ?(F32_numtype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_3: - `%%`(F64_storagetype, ?(F64_numtype)) - + def $nunpack(I8_storagetype) = ?(I32_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_4: - `%%`(I8_storagetype, ?(I32_numtype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_5: - `%%`(I16_storagetype, ?(I32_numtype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_6{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_nunpack_before_fun_nunpack_case_6: `%`(x0) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_vunpack_before_fun_vunpack_case_1: `%`(storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_vunpack_case_0: - `%`(V128_storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_vunpack: `%%`(storagetype, vectype?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_vunpack_case_0: - `%%`(V128_storagetype, ?(V128_vectype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_vunpack_case_1{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_vunpack_before_fun_vunpack_case_1: `%`(x0) + def $nunpack(I16_storagetype) = ?(I32_numtype) + def $nunpack{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_cunpack_before_fun_cunpack_case_13: `%`(storagetype) +def $vunpack(storagetype : storagetype) : vectype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_12: - `%`(I16_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_11: - `%`(I8_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_10: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_9: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_8: - `%`(I64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_7: - `%`(I32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_6: - `%`(I16_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_5: - `%`(I8_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_4: - `%`(V128_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_3: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_2: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_1: - `%`(I64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_0: - `%`(I32_storagetype) + def $vunpack(V128_storagetype) = ?(V128_vectype) + def $vunpack{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_cunpack: `%%`(storagetype, consttype?) +def $cunpack(storagetype : storagetype) : consttype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_0: - `%%`(I32_storagetype, ?(I32_consttype)) - + def $cunpack(I32_storagetype) = ?(I32_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_1: - `%%`(I64_storagetype, ?(I64_consttype)) - + def $cunpack(I64_storagetype) = ?(I64_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_2: - `%%`(F32_storagetype, ?(F32_consttype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_3: - `%%`(F64_storagetype, ?(F64_consttype)) - + def $cunpack(F32_storagetype) = ?(F32_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_4: - `%%`(V128_storagetype, ?(V128_consttype)) - + def $cunpack(F64_storagetype) = ?(F64_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_5: - `%%`(I8_storagetype, ?(I32_consttype)) - + def $cunpack(V128_storagetype) = ?(V128_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_6: - `%%`(I16_storagetype, ?(I32_consttype)) - + def $cunpack(I8_storagetype) = ?(I32_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_7: - `%%`(I32_storagetype, ?($consttype_numtype($lunpack(I32_lanetype)))) - + def $cunpack(I16_storagetype) = ?(I32_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_8: - `%%`(I64_storagetype, ?($consttype_numtype($lunpack(I64_lanetype)))) - + def $cunpack(I32_storagetype) = ?($consttype_numtype($lunpack(I32_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_9: - `%%`(F32_storagetype, ?($consttype_numtype($lunpack(F32_lanetype)))) - + def $cunpack(I64_storagetype) = ?($consttype_numtype($lunpack(I64_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_10: - `%%`(F64_storagetype, ?($consttype_numtype($lunpack(F64_lanetype)))) - + def $cunpack(F32_storagetype) = ?($consttype_numtype($lunpack(F32_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_11: - `%%`(I8_storagetype, ?($consttype_numtype($lunpack(I8_lanetype)))) - + def $cunpack(F64_storagetype) = ?($consttype_numtype($lunpack(F64_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_12: - `%%`(I16_storagetype, ?($consttype_numtype($lunpack(I16_lanetype)))) - + def $cunpack(I8_storagetype) = ?($consttype_numtype($lunpack(I8_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_13{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_cunpack_before_fun_cunpack_case_13: `%`(x0) + def $cunpack(I16_storagetype) = ?($consttype_numtype($lunpack(I16_lanetype))) + def $cunpack{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype @@ -2080,85 +1799,110 @@ relation fun_diffrt: `%%%`(reftype, reftype, reftype) -- wf_reftype: `%`(REF_reftype(null_1#3?{null_1#3 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_as_deftype_before_fun_as_deftype_case_1: `%`(typeuse) +def $as_deftype(typeuse : typeuse) : deftype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_as_deftype_case_0{rectype : rectype, n : n}: - `%`(_DEF_typeuse(rectype, n)) + def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = ?(_DEF_deftype(rectype, n)) + def $as_deftype{x0 : typeuse}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_as_deftype: `%%`(typeuse, deftype?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_as_deftype_case_0{rectype : rectype, n : n}: - `%%`(_DEF_typeuse(rectype, n), ?(_DEF_deftype(rectype, n))) +rec { - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_as_deftype_case_1{x0 : typeuse}: - `%%`(x0, ?()) - -- ~ fun_as_deftype_before_fun_as_deftype_case_1: `%`(x0) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 +relation fun_tagsxt: `%%`(externtype*, tagtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_0: + `%%`([], []) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_1{jt : typeuse, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([TAG_externtype(jt)] ++ xt#1*{xt#1 <- `xt*`}, [jt] ++ var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 -def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 - def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 - def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt#1*{xt#1 <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 - def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#2*{xt#2 <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([externtype] ++ xt#2*{xt#2 <- `xt*`}, var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 -def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 - def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 - def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt#3*{xt#3 <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 - def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#4*{xt#4 <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation fun_globalsxt: `%%`(externtype*, globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_1{gt : globaltype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([GLOBAL_externtype(gt)] ++ xt#3*{xt#3 <- `xt*`}, [gt] ++ var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([externtype] ++ xt#4*{xt#4 <- `xt*`}, var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 -def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 - def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 - def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt#5*{xt#5 <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 - def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#6*{xt#6 <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation fun_memsxt: `%%`(externtype*, memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_1{mt : memtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([MEM_externtype(mt)] ++ xt#5*{xt#5 <- `xt*`}, [mt] ++ var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([externtype] ++ xt#6*{xt#6 <- `xt*`}, var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 -def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 - def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 - def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt#7*{xt#7 <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 - def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#8*{xt#8 <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation fun_tablesxt: `%%`(externtype*, tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_1{tt : tabletype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([TABLE_externtype(tt)] ++ xt#7*{xt#7 <- `xt*`}, [tt] ++ var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([externtype] ++ xt#8*{xt#8 <- `xt*`}, var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 -def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 - def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 - def $funcsxt{rectype : rectype, n : n, `xt*` : externtype*}([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt#9*{xt#9 <- `xt*`}) = [_DEF_deftype(rectype, n)] ++ $funcsxt(xt#10*{xt#10 <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 - def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#11*{xt#11 <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 +relation fun_funcsxt: `%%`(externtype*, deftype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_1{rectype : rectype, n : n, `xt*` : externtype*, var_0 : deftype*}: + `%%`([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt#9*{xt#9 <- `xt*`}, [_DEF_deftype(rectype, n)] ++ var_0) + -- fun_funcsxt: `%%`(xt#10*{xt#10 <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : deftype*}: + `%%`([externtype] ++ xt#11*{xt#11 <- `xt*`}, var_0) + -- fun_funcsxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -7559,30 +7303,28 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*, var_0 : deftype?}: + rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if (var_0 =/= ?()) - -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*, var_0 : deftype?}: + rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if (var_0 =/= ?()) - -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: @@ -7967,18 +7709,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 - rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*, var_0 : deftype?}: + rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`(C) -- wf_instr: `%`(THROW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (var_0 =/= ?()) - -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: @@ -9304,7 +9045,7 @@ relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*, var_1 : funcidx*, var_0 : moduletype}: + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*, var_6 : deftype*, var_5 : tabletype*, var_4 : memtype*, var_3 : globaltype*, var_2 : tagtype*, var_1 : funcidx*, var_0 : moduletype}: `|-%:%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) -- wf_context: `%`(C) -- wf_context: `%`(C') @@ -9340,11 +9081,16 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (C = C' +++ {TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) -- if (x*{x <- `x*`} = var_1) - -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) - -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) - -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) - -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) - -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (jt_I*{jt_I <- `jt_I*`} = var_2) + -- if (gt_I*{gt_I <- `gt_I*`} = var_3) + -- if (mt_I*{mt_I <- `mt_I*`} = var_4) + -- if (tt_I*{tt_I <- `tt_I*`} = var_5) + -- if (dt_I*{dt_I <- `dt_I*`} = var_6) + -- fun_funcsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_6) + -- fun_tablesxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_5) + -- fun_memsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_4) + -- fun_globalsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_3) + -- fun_tagsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_2) -- fun_funcidx_nonfuncs: `%%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_1) -- fun_clos_moduletype: `%%%`(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}), var_0) @@ -9493,69 +9239,23 @@ relation fun_inv_signed_: `%%%`(N, int, nat) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_sx_before_fun_sx_case_7: `%`(storagetype) +def $sx(storagetype : storagetype) : sx?? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_6: - `%`(I16_storagetype) - + def $sx(I32_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_5: - `%`(I8_storagetype) - + def $sx(I64_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_4: - `%`(V128_storagetype) - + def $sx(F32_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_3: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_2: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_1: - `%`(I64_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_0: - `%`(I32_storagetype) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_sx: `%%`(storagetype, sx??) + def $sx(F64_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_0: - `%%`(I32_storagetype, ?(?())) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_1: - `%%`(I64_storagetype, ?(?())) - + def $sx(V128_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_2: - `%%`(F32_storagetype, ?(?())) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_3: - `%%`(F64_storagetype, ?(?())) - + def $sx(I8_storagetype) = ?(?(S_sx)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_4: - `%%`(V128_storagetype, ?(?())) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_5: - `%%`(I8_storagetype, ?(?(S_sx))) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_6: - `%%`(I16_storagetype, ?(?(S_sx))) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_7{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_sx_before_fun_sx_case_7: `%`(x0) + def $sx(I16_storagetype) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_zero: `%%`(lanetype, lane_) @@ -10109,18 +9809,16 @@ relation fun_cunpacknum_: `%%%`(storagetype, lit_, lit_) `%%%`(V128_storagetype, c, c) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_cunpacknum__case_5{c : uN, var_0 : consttype?}: + rule fun_cunpacknum__case_5{c : uN}: `%%%`(I8_storagetype, mk_lit__2_lit_(I8_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) - -- fun_cunpack: `%%`($storagetype_packtype(I8_packtype), var_0) - -- if (var_0 =/= ?()) - -- wf_lit_: `%%`($storagetype_consttype(!(var_0)), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I8_packtype)) =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_cunpacknum__case_6{c : uN, var_0 : consttype?}: + rule fun_cunpacknum__case_6{c : uN}: `%%%`(I16_storagetype, mk_lit__2_lit_(I16_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) - -- fun_cunpack: `%%`($storagetype_packtype(I16_packtype), var_0) - -- if (var_0 =/= ?()) - -- wf_lit_: `%%`($storagetype_consttype(!(var_0)), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I16_packtype)) =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) @@ -15508,66 +15206,101 @@ relation fun_unpackfield_: `%%%%`(storagetype, sx?, fieldval, val?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.1-190.86 -def $tagsxa(externaddr*) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.23 - def $tagsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.42 - def $tagsxa{a : nat, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa#1*{xa#1 <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:198.1-198.57 - def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#2*{xa#2 <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 +relation fun_tagsxa: `%%`(externaddr*, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([TAG_externaddr(a)] ++ xa#1*{xa#1 <- `xa*`}, [a] ++ var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([externaddr] ++ xa#2*{xa#2 <- `xa*`}, var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.1-191.89 -def $globalsxa(externaddr*) : globaladdr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.26 - def $globalsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.51 - def $globalsxa{a : nat, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa#3*{xa#3 <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:202.1-202.63 - def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#4*{xa#4 <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 +relation fun_globalsxa: `%%`(externaddr*, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([GLOBAL_externaddr(a)] ++ xa#3*{xa#3 <- `xa*`}, [a] ++ var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([externaddr] ++ xa#4*{xa#4 <- `xa*`}, var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.1-192.86 -def $memsxa(externaddr*) : memaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.23 - def $memsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.42 - def $memsxa{a : nat, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa#5*{xa#5 <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:206.1-206.57 - def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#6*{xa#6 <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 +relation fun_memsxa: `%%`(externaddr*, memaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([MEM_externaddr(a)] ++ xa#5*{xa#5 <- `xa*`}, [a] ++ var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([externaddr] ++ xa#6*{xa#6 <- `xa*`}, var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.88 -def $tablesxa(externaddr*) : tableaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.25 - def $tablesxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.48 - def $tablesxa{a : nat, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa#7*{xa#7 <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:210.1-210.61 - def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#8*{xa#8 <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 +relation fun_tablesxa: `%%`(externaddr*, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([TABLE_externaddr(a)] ++ xa#7*{xa#7 <- `xa*`}, [a] ++ var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([externaddr] ++ xa#8*{xa#8 <- `xa*`}, var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.87 -def $funcsxa(externaddr*) : funcaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.24 - def $funcsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.45 - def $funcsxa{a : nat, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa#9*{xa#9 <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:214.1-214.59 - def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#10*{xa#10 <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 +relation fun_funcsxa: `%%`(externaddr*, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([FUNC_externaddr(a)] ++ xa#9*{xa#9 <- `xa*`}, [a] ++ var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([externaddr] ++ xa#10*{xa#10 <- `xa*`}, var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -16714,7 +16447,7 @@ relation Step_pure: `%~>%`(instr*, instr*) -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*, `var_0*` : uN*}: + rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*, `var_1*` : uN*, var_0 : nat}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), i))*{i <- `i*`} -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) @@ -16723,10 +16456,11 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)) -- if ($proj_num__0(c) =/= ?()) - -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0(var_0).0*{var_0 <- `var_0*`})) - -- if (|`var_0*`| = |`i*`|) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = var_0) + -- if (|`var_1*`| = |`i*`|) -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} - -- (fun_inez_: `%%%`($jsizenn(Jnn), !($proj_lane__2(i)), var_0))*{var_0 <- `var_0*`, i <- `i*`} + -- (fun_inez_: `%%%`($jsizenn(Jnn), !($proj_lane__2(i)), var_1))*{var_1 <- `var_1*`, i <- `i*`} + -- fun_prod: `%%`($proj_uN_0(var_1).0*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_, var_0 : vec_}: @@ -17294,7 +17028,7 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: + rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) @@ -17312,9 +17046,8 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !(var_0))) - -- fun_sx: `%%`(zt_2, var_0) + -- if ($sx(zt_2) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -17389,16 +17122,15 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: + rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- fun_zsize: `%%`(zt, var_0) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -17419,16 +17151,15 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: + rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- fun_zsize: `%%`(zt, var_0) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -18157,33 +17888,30 @@ relation Step_read: `%~>%`(config, instr*) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: + rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- fun_zsize: `%%`(zt, var_0) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?, var_3 : nat?, `var_2*` : lit_*, var_1 : consttype?, `var_0*` : instr*}: + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?, `var_1*` : lit_*, `var_0*` : instr*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), var_0^n{var_0 <- `var_0*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (var_3 =/= ?()) + -- if ($zsize(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !(var_3)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- fun_zsize: `%%`(zt, var_3) - -- (fun_cunpacknum_: `%%%`(zt, c, var_2))^n{var_2 <- `var_2*`, c <- `c*`} - -- fun_cunpack: `%%`(zt, var_1) - -- (if (var_1 =/= ?()))^n{} - -- (fun_const: `%%%`(!(var_1), var_2, var_0))^n{var_2 <- `var_2*`, var_0 <- `var_0*`} + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (fun_cunpacknum_: `%%%`(zt, c, var_1))^n{var_1 <- `var_1*`, c <- `c*`} + -- (if ($cunpack(zt) =/= ?()))^n{} + -- (fun_const: `%%%`(!($cunpack(zt)), var_1, var_0))^n{var_1 <- `var_1*`, var_0 <- `var_0*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: @@ -18298,7 +18026,7 @@ relation Step_read: `%~>%`(config, instr*) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -18316,12 +18044,11 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !(var_0))) - -- fun_sx: `%%`(zt_2, var_0) + -- if ($sx(zt_2) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -18339,9 +18066,8 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (var_0 =/= ?()) - -- if (sx?{sx <- `sx?`} = !(var_0)) - -- fun_sx: `%%`(zt_2, var_0) + -- if ($sx(zt_2) =/= ?()) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -18407,16 +18133,15 @@ relation Step_read: `%~>%`(config, instr*) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: + rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- fun_zsize: `%%`(zt, var_0) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -18426,29 +18151,27 @@ relation Step_read: `%~>%`(config, instr*) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?, var_3 : nat?, var_2 : lit_, var_1 : consttype?, var_0 : instr}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) var_0 `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?, var_1 : lit_, var_0 : instr}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) var_0 `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- if (var_3 =/= ?()) + -- if ($zsize(zt) =/= ?()) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(`ARRAY.SET`_instr(x)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- fun_zsize: `%%`(zt, var_3) - -- fun_cunpacknum_: `%%%`(zt, c, var_2) - -- fun_cunpack: `%%`(zt, var_1) - -- if (var_1 =/= ?()) - -- fun_const: `%%%`(!(var_1), var_2, var_0) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- fun_cunpacknum_: `%%%`(zt, c, var_1) + -- if ($cunpack(zt) =/= ?()) + -- fun_const: `%%%`(!($cunpack(zt)), var_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rec { @@ -18507,18 +18230,17 @@ relation Step: `%~>%`(config, config) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:231.1-235.49 - rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*, var_1 : deftype?, var_0 : state}: + rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*, var_0 : state}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config(var_0, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) -- wf_config: `%`(`%;%`_config(var_0, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- if (var_1 =/= ?()) - -- Expand: `%~~%`(!(var_1), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype($tag(z, x).TYPE_taginst) =/= ?()) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- fun_as_deftype: `%%`($tag(z, x).TYPE_taginst, var_1) -- fun_add_exninst: `%%%`(z, [exn], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 @@ -19044,28 +18766,33 @@ relation fun_allocexports: `%%%`(moduleinst, export*, exportinst*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref**, (store, moduleinst)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_13 : exportinst*, var_12 : (store, funcaddr*), `var_11*` : elemtype*, var_10 : (store, elemaddr*), var_9 : (store, dataaddr*), `var_8*` : tabletype*, var_7 : (store, tableaddr*), `var_6*` : memtype*, var_5 : (store, memaddr*), `var_4*` : globaltype*, var_3 : (store, globaladdr*), `var_2*` : tagtype*, var_1 : (store, tagaddr*), var_0 : deftype*}: + rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_18 : exportinst*, var_17 : (store, funcaddr*), `var_16*` : elemtype*, var_15 : (store, elemaddr*), var_14 : (store, dataaddr*), `var_13*` : tabletype*, var_12 : (store, tableaddr*), `var_11*` : memtype*, var_10 : (store, memaddr*), `var_9*` : globaltype*, var_8 : (store, globaladdr*), `var_7*` : tagtype*, var_6 : (store, tagaddr*), var_5 : deftype*, var_4 : funcaddr*, var_3 : tableaddr*, var_2 : memaddr*, var_1 : globaladdr*, var_0 : tagaddr*}: `%%%%%%%`(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}, (s_7, moduleinst)) - -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#7*{export#7 <- `export*`}, var_13) + -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#7*{export#7 <- `export*`}, var_18) -- (if ($proj_uN_0(x#4).0 < |dt#15*{dt#15 <- `dt*`}|))*{x#4 <- `x*`} - -- fun_allocfuncs: `%%%%%`(s_6, dt#15*{dt#15 <- `dt*`}[$proj_uN_0(x#4).0]*{x#4 <- `x*`}, FUNC_funccode(x#5, local#4*{local#4 <- `local*#86`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#86` <- `local**`, x#5 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_12) - -- if (|`var_11*`| = |`elemtype*`|) - -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- `dt*`}, var_11))*{var_11 <- `var_11*`, elemtype#3 <- `elemtype*`} - -- fun_allocelems: `%%%%`(s_5, var_11*{var_11 <- `var_11*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_10) - -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#114`}*{`byte*#114` <- `byte**`}, var_9) - -- if (|`var_8*`| = |`tabletype*`|) - -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_8))*{var_8 <- `var_8*`, tabletype#160 <- `tabletype*`} - -- fun_alloctables: `%%%%`(s_3, var_8*{var_8 <- `var_8*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_7) - -- if (|`var_6*`| = |`memtype*`|) - -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_6))*{var_6 <- `var_6*`, memtype#126 <- `memtype*`} - -- fun_allocmems: `%%%`(s_2, var_6*{var_6 <- `var_6*`}, var_5) - -- if (|`var_4*`| = |`globaltype*`|) - -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_4))*{var_4 <- `var_4*`, globaltype#126 <- `globaltype*`} - -- fun_allocglobals: `%%%%`(s_1, var_4*{var_4 <- `var_4*`}, val_G#2*{val_G#2 <- `val_G*`}, var_3) - -- if (|`var_2*`| = |`tagtype*`|) - -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_2))*{var_2 <- `var_2*`, tagtype#82 <- `tagtype*`} - -- fun_alloctags: `%%%`(s, var_2*{var_2 <- `var_2*`}, var_1) - -- fun_alloctypes: `%%`(type#4*{type#4 <- `type*`}, var_0) + -- fun_allocfuncs: `%%%%%`(s_6, dt#15*{dt#15 <- `dt*`}[$proj_uN_0(x#4).0]*{x#4 <- `x*`}, FUNC_funccode(x#5, local#4*{local#4 <- `local*#86`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#86` <- `local**`, x#5 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_17) + -- if (|`var_16*`| = |`elemtype*`|) + -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- `dt*`}, var_16))*{var_16 <- `var_16*`, elemtype#3 <- `elemtype*`} + -- fun_allocelems: `%%%%`(s_5, var_16*{var_16 <- `var_16*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_15) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#114`}*{`byte*#114` <- `byte**`}, var_14) + -- if (|`var_13*`| = |`tabletype*`|) + -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_13))*{var_13 <- `var_13*`, tabletype#160 <- `tabletype*`} + -- fun_alloctables: `%%%%`(s_3, var_13*{var_13 <- `var_13*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_12) + -- if (|`var_11*`| = |`memtype*`|) + -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_11))*{var_11 <- `var_11*`, memtype#126 <- `memtype*`} + -- fun_allocmems: `%%%`(s_2, var_11*{var_11 <- `var_11*`}, var_10) + -- if (|`var_9*`| = |`globaltype*`|) + -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_9))*{var_9 <- `var_9*`, globaltype#126 <- `globaltype*`} + -- fun_allocglobals: `%%%%`(s_1, var_9*{var_9 <- `var_9*`}, val_G#2*{val_G#2 <- `val_G*`}, var_8) + -- if (|`var_7*`| = |`tagtype*`|) + -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_7))*{var_7 <- `var_7*`, tagtype#82 <- `tagtype*`} + -- fun_alloctags: `%%%`(s, var_7*{var_7 <- `var_7*`}, var_6) + -- fun_alloctypes: `%%`(type#4*{type#4 <- `type*`}, var_5) + -- fun_funcsxa: `%%`(externaddr#6*{externaddr#6 <- `externaddr*`}, var_4) + -- fun_tablesxa: `%%`(externaddr#5*{externaddr#5 <- `externaddr*`}, var_3) + -- fun_memsxa: `%%`(externaddr#4*{externaddr#4 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#3*{externaddr#3 <- `externaddr*`}, var_1) + -- fun_tagsxa: `%%`(externaddr#2*{externaddr#2 <- `externaddr*`}, var_0) -- wf_store: `%`(s_7) -- wf_moduleinst: `%`(moduleinst) -- wf_store: `%`(s_1) @@ -19099,21 +18826,21 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* -- if (func#5*{func#5 <- `func*`} = FUNC_func(x#3, local#3*{local#3 <- `local*#84`}, expr_F#2)*{expr_F#2 <- `expr_F*`, `local*#84` <- `local**`, x#3 <- `x*`}) -- if (data#4*{data#4 <- `data*`} = DATA_data(byte#6*{byte#6 <- `byte*#112`}, datamode#112)*{`byte*#112` <- `byte**`, datamode#112 <- `datamode*`}) -- if (elem#6*{elem#6 <- `elem*`} = ELEM_elem(elemtype#2, expr_E#2*{expr_E#2 <- `expr_E*#2`}, elemmode#232)*{elemmode#232 <- `elemmode*`, elemtype#2 <- `elemtype*`, `expr_E*#2` <- `expr_E**`}) - -- if (aa_I#3*{aa_I#3 <- `aa_I*`} = $tagsxa(externaddr#2*{externaddr#2 <- `externaddr*`})) - -- if (ga_I#3*{ga_I#3 <- `ga_I*`} = $globalsxa(externaddr#3*{externaddr#3 <- `externaddr*`})) - -- if (ma_I#3*{ma_I#3 <- `ma_I*`} = $memsxa(externaddr#4*{externaddr#4 <- `externaddr*`})) - -- if (ta_I#3*{ta_I#3 <- `ta_I*`} = $tablesxa(externaddr#5*{externaddr#5 <- `externaddr*`})) - -- if (fa_I#3*{fa_I#3 <- `fa_I*`} = $funcsxa(externaddr#6*{externaddr#6 <- `externaddr*`})) - -- if (dt#9*{dt#9 <- `dt*`} = var_0) + -- if (aa_I#3*{aa_I#3 <- `aa_I*`} = var_0) + -- if (ga_I#3*{ga_I#3 <- `ga_I*`} = var_1) + -- if (ma_I#3*{ma_I#3 <- `ma_I*`} = var_2) + -- if (ta_I#3*{ta_I#3 <- `ta_I*`} = var_3) + -- if (fa_I#3*{fa_I#3 <- `fa_I*`} = var_4) + -- if (dt#9*{dt#9 <- `dt*`} = var_5) -- if (fa#3*{fa#3 <- `fa*`} = (|s.FUNCS_store| + i_F#1)^(i_F#1<|func#6*{func#6 <- `func*`}|){}) - -- if ((s_1, aa#3*{aa#3 <- `aa*`}) = var_1) - -- if ((s_2, ga#3*{ga#3 <- `ga*`}) = var_3) - -- if ((s_3, ma#3*{ma#3 <- `ma*`}) = var_5) - -- if ((s_4, ta#3*{ta#3 <- `ta*`}) = var_7) - -- if ((s_5, da#2*{da#2 <- `da*`}) = var_9) - -- if ((s_6, ea#2*{ea#2 <- `ea*`}) = var_10) - -- if ((s_7, fa#4*{fa#4 <- `fa*`}) = var_12) - -- if (xi#2*{xi#2 <- `xi*`} = var_13) + -- if ((s_1, aa#3*{aa#3 <- `aa*`}) = var_6) + -- if ((s_2, ga#3*{ga#3 <- `ga*`}) = var_8) + -- if ((s_3, ma#3*{ma#3 <- `ma*`}) = var_10) + -- if ((s_4, ta#3*{ta#3 <- `ta*`}) = var_12) + -- if ((s_5, da#2*{da#2 <- `da*`}) = var_14) + -- if ((s_6, ea#2*{ea#2 <- `ea*`}) = var_15) + -- if ((s_7, fa#4*{fa#4 <- `fa*`}) = var_17) + -- if (xi#2*{xi#2 <- `xi*`} = var_18) -- if (moduleinst = {TYPES dt#16*{dt#16 <- `dt*`}, TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -19221,17 +18948,21 @@ relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec relation fun_instantiate: `%%%%`(store, module, externaddr*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat, `var_7*` : instr**, `var_6*` : instr**, var_5 : (store, moduleinst), var_4 : (state, ref**), var_3 : (state, ref*), var_2 : (state, val*), var_1 : deftype*, var_0 : deftype*}: + rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat, `var_11*` : instr**, `var_10*` : instr**, var_9 : (store, moduleinst), var_8 : (state, ref**), var_7 : (state, ref*), var_6 : (state, val*), var_5 : funcaddr*, var_4 : globaladdr*, var_3 : deftype*, var_2 : funcaddr*, var_1 : globaladdr*, var_0 : deftype*}: `%%%%`(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}, `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) -- (if (i_E#2 < |elem#12*{elem#12 <- `elem*`}|))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){} - -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#12*{elem#12 <- `elem*`}[i_E#2], var_7))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_7 <- `var_7*`} + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#12*{elem#12 <- `elem*`}[i_E#2], var_11))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_11 <- `var_11*`} -- (if (i_D#2 < |data#11*{data#11 <- `data*`}|))^(i_D#2<|data#10*{data#10 <- `data*`}|){} - -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#11*{data#11 <- `data*`}[i_D#2], var_6))^(i_D#2<|data#10*{data#10 <- `data*`}|){var_6 <- `var_6*`} - -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_5) - -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_4) - -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_3) - -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_2) - -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_1) + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#11*{data#11 <- `data*`}[i_D#2], var_10))^(i_D#2<|data#10*{data#10 <- `data*`}|){var_10 <- `var_10*`} + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_9) + -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_8) + -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_7) + -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_6) + -- fun_funcsxa: `%%`(externaddr#12*{externaddr#12 <- `externaddr*`}, var_5) + -- fun_globalsxa: `%%`(externaddr#11*{externaddr#11 <- `externaddr*`}, var_4) + -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_3) + -- fun_funcsxa: `%%`(externaddr#9*{externaddr#9 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#8*{externaddr#8 <- `externaddr*`}, var_1) -- fun_alloctypes: `%%`(type#6*{type#6 <- `type*`}, var_0) -- wf_state: `%`(z) -- wf_state: `%`(z') @@ -19253,7 +18984,7 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- if (|`elemmode*`| = |`reftype*`|) -- (wf_elem: `%`(ELEM_elem(reftype#517, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)))*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#517 <- `reftype*`} -- (wf_start: `%`(START_start(x#6)))?{x#6 <- `x?`} - -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS $globalsxa(externaddr#8*{externaddr#8 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#9*{externaddr#9 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#9*{func#9 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS var_1, MEMS [], TABLES [], FUNCS var_2 ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#9*{func#9 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) -- wf_state: `%`(`%;%`_state(s''', f)) -- (wf_uN: `%%`(32, `%`_uN(i_D#1)))^(i_D#1<|data#7*{data#7 <- `data*`}|){} @@ -19268,15 +18999,15 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- if (data#9*{data#9 <- `data*`} = DATA_data(byte#9*{byte#9 <- `byte*#119`}, datamode#118)*{`byte*#119` <- `byte**`, datamode#118 <- `datamode*`}) -- if (elem#10*{elem#10 <- `elem*`} = ELEM_elem(reftype#519, expr_E#4*{expr_E#4 <- `expr_E*#4`}, elemmode#239)*{elemmode#239 <- `elemmode*`, `expr_E*#4` <- `expr_E**`, reftype#519 <- `reftype*`}) -- if (start#8?{start#8 <- `start?`} = START_start(x#8)?{x#8 <- `x?`}) - -- if (moduleinst_0 = {TYPES var_1, TAGS [], GLOBALS $globalsxa(externaddr#11*{externaddr#11 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#12*{externaddr#12 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#11*{func#11 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- if (moduleinst_0 = {TYPES var_3, TAGS [], GLOBALS var_4, MEMS [], TABLES [], FUNCS var_5 ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#11*{func#11 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G#4*{val_G#4 <- `val_G*`}) = var_2) - -- if ((z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = var_3) - -- if ((z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = var_4) + -- if ((z', val_G#4*{val_G#4 <- `val_G*`}) = var_6) + -- if ((z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = var_7) + -- if ((z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = var_8) -- if (z''' = `%;%`_state(s''', f)) - -- if ((s'''', moduleinst) = var_5) - -- if (instr_D#2*{instr_D#2 <- `instr_D*`} = $concat_(syntax instr, var_6^(i_D#2<|data#10*{data#10 <- `data*`}|){var_6 <- `var_6*`})) - -- if (instr_E#2*{instr_E#2 <- `instr_E*`} = $concat_(syntax instr, var_7^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_7 <- `var_7*`})) + -- if ((s'''', moduleinst) = var_9) + -- if (instr_D#2*{instr_D#2 <- `instr_D*`} = $concat_(syntax instr, var_10^(i_D#2<|data#10*{data#10 <- `data*`}|){var_10 <- `var_10*`})) + -- if (instr_E#2*{instr_E#2 <- `instr_E*`} = $concat_(syntax instr, var_11^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_11 <- `var_11*`})) -- if (instr_S#2?{instr_S#2 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -19501,156 +19232,240 @@ relation wf_decl: `%`(decl) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:271.1-271.48 - def $typesd{rectype : rectype, `decl'*` : decl*}([TYPE_decl(rectype)] ++ decl'#1*{decl'#1 <- `decl'*`}) = [TYPE_type(rectype)] ++ $typesd(decl'#2*{decl'#2 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#3*{decl'#3 <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 +relation fun_typesd: `%%`(decl*, type*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_1{rectype : rectype, `decl'*` : decl*, var_0 : type*}: + `%%`([TYPE_decl(rectype)] ++ decl'#1*{decl'#1 <- `decl'*`}, [TYPE_type(rectype)] ++ var_0) + -- fun_typesd: `%%`(decl'#2*{decl'#2 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_2{decl : decl, `decl'*` : decl*, var_0 : type*}: + `%%`([decl] ++ decl'#3*{decl'#3 <- `decl'*`}, var_0) + -- fun_typesd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:275.1-275.56 - def $importsd{name : name, name_0 : name, externtype : externtype, `decl'*` : decl*}([IMPORT_decl(name, name_0, externtype)] ++ decl'#4*{decl'#4 <- `decl'*`}) = [IMPORT_import(name, name_0, externtype)] ++ $importsd(decl'#5*{decl'#5 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#6*{decl'#6 <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation fun_importsd: `%%`(decl*, import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_1{name : name, name_0 : name, externtype : externtype, `decl'*` : decl*, var_0 : import*}: + `%%`([IMPORT_decl(name, name_0, externtype)] ++ decl'#4*{decl'#4 <- `decl'*`}, [IMPORT_import(name, name_0, externtype)] ++ var_0) + -- fun_importsd: `%%`(decl'#5*{decl'#5 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_2{decl : decl, `decl'*` : decl*, var_0 : import*}: + `%%`([decl] ++ decl'#6*{decl'#6 <- `decl'*`}, var_0) + -- fun_importsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:279.1-279.44 - def $tagsd{tagtype : tagtype, `decl'*` : decl*}([TAG_decl(tagtype)] ++ decl'#7*{decl'#7 <- `decl'*`}) = [TAG_tag(tagtype)] ++ $tagsd(decl'#8*{decl'#8 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#9*{decl'#9 <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation fun_tagsd: `%%`(decl*, tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_1{tagtype : tagtype, `decl'*` : decl*, var_0 : tag*}: + `%%`([TAG_decl(tagtype)] ++ decl'#7*{decl'#7 <- `decl'*`}, [TAG_tag(tagtype)] ++ var_0) + -- fun_tagsd: `%%`(decl'#8*{decl'#8 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_2{decl : decl, `decl'*` : decl*, var_0 : tag*}: + `%%`([decl] ++ decl'#9*{decl'#9 <- `decl'*`}, var_0) + -- fun_tagsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:283.1-283.56 - def $globalsd{globaltype : globaltype, expr : expr, `decl'*` : decl*}([GLOBAL_decl(globaltype, expr)] ++ decl'#10*{decl'#10 <- `decl'*`}) = [GLOBAL_global(globaltype, expr)] ++ $globalsd(decl'#11*{decl'#11 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#12*{decl'#12 <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation fun_globalsd: `%%`(decl*, global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_1{globaltype : globaltype, expr : expr, `decl'*` : decl*, var_0 : global*}: + `%%`([GLOBAL_decl(globaltype, expr)] ++ decl'#10*{decl'#10 <- `decl'*`}, [GLOBAL_global(globaltype, expr)] ++ var_0) + -- fun_globalsd: `%%`(decl'#11*{decl'#11 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_2{decl : decl, `decl'*` : decl*, var_0 : global*}: + `%%`([decl] ++ decl'#12*{decl'#12 <- `decl'*`}, var_0) + -- fun_globalsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:287.1-287.44 - def $memsd{memtype : memtype, `decl'*` : decl*}([MEMORY_decl(memtype)] ++ decl'#13*{decl'#13 <- `decl'*`}) = [MEMORY_mem(memtype)] ++ $memsd(decl'#14*{decl'#14 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#15*{decl'#15 <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation fun_memsd: `%%`(decl*, mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_1{memtype : memtype, `decl'*` : decl*, var_0 : mem*}: + `%%`([MEMORY_decl(memtype)] ++ decl'#13*{decl'#13 <- `decl'*`}, [MEMORY_mem(memtype)] ++ var_0) + -- fun_memsd: `%%`(decl'#14*{decl'#14 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_2{decl : decl, `decl'*` : decl*, var_0 : mem*}: + `%%`([decl] ++ decl'#15*{decl'#15 <- `decl'*`}, var_0) + -- fun_memsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:291.1-291.52 - def $tablesd{tabletype : tabletype, expr : expr, `decl'*` : decl*}([TABLE_decl(tabletype, expr)] ++ decl'#16*{decl'#16 <- `decl'*`}) = [TABLE_table(tabletype, expr)] ++ $tablesd(decl'#17*{decl'#17 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#18*{decl'#18 <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation fun_tablesd: `%%`(decl*, table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_1{tabletype : tabletype, expr : expr, `decl'*` : decl*, var_0 : table*}: + `%%`([TABLE_decl(tabletype, expr)] ++ decl'#16*{decl'#16 <- `decl'*`}, [TABLE_table(tabletype, expr)] ++ var_0) + -- fun_tablesd: `%%`(decl'#17*{decl'#17 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_2{decl : decl, `decl'*` : decl*, var_0 : table*}: + `%%`([decl] ++ decl'#18*{decl'#18 <- `decl'*`}, var_0) + -- fun_tablesd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:295.1-295.48 - def $funcsd{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*}([FUNC_decl(typeidx, `local*`, expr)] ++ decl'#19*{decl'#19 <- `decl'*`}) = [FUNC_func(typeidx, `local*`, expr)] ++ $funcsd(decl'#20*{decl'#20 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#21*{decl'#21 <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation fun_funcsd: `%%`(decl*, func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_1{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*, var_0 : func*}: + `%%`([FUNC_decl(typeidx, `local*`, expr)] ++ decl'#19*{decl'#19 <- `decl'*`}, [FUNC_func(typeidx, `local*`, expr)] ++ var_0) + -- fun_funcsd: `%%`(decl'#20*{decl'#20 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_2{decl : decl, `decl'*` : decl*, var_0 : func*}: + `%%`([decl] ++ decl'#21*{decl'#21 <- `decl'*`}, var_0) + -- fun_funcsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:299.1-299.48 - def $datasd{`byte*` : byte*, datamode : datamode, `decl'*` : decl*}([DATA_decl(`byte*`, datamode)] ++ decl'#22*{decl'#22 <- `decl'*`}) = [DATA_data(`byte*`, datamode)] ++ $datasd(decl'#23*{decl'#23 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#24*{decl'#24 <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation fun_datasd: `%%`(decl*, data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_1{`byte*` : byte*, datamode : datamode, `decl'*` : decl*, var_0 : data*}: + `%%`([DATA_decl(`byte*`, datamode)] ++ decl'#22*{decl'#22 <- `decl'*`}, [DATA_data(`byte*`, datamode)] ++ var_0) + -- fun_datasd: `%%`(decl'#23*{decl'#23 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_2{decl : decl, `decl'*` : decl*, var_0 : data*}: + `%%`([decl] ++ decl'#24*{decl'#24 <- `decl'*`}, var_0) + -- fun_datasd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:303.1-303.48 - def $elemsd{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*}([ELEM_decl(reftype, `expr*`, elemmode)] ++ decl'#25*{decl'#25 <- `decl'*`}) = [ELEM_elem(reftype, `expr*`, elemmode)] ++ $elemsd(decl'#26*{decl'#26 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#27*{decl'#27 <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation fun_elemsd: `%%`(decl*, elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_1{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*, var_0 : elem*}: + `%%`([ELEM_decl(reftype, `expr*`, elemmode)] ++ decl'#25*{decl'#25 <- `decl'*`}, [ELEM_elem(reftype, `expr*`, elemmode)] ++ var_0) + -- fun_elemsd: `%%`(decl'#26*{decl'#26 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_2{decl : decl, `decl'*` : decl*, var_0 : elem*}: + `%%`([decl] ++ decl'#27*{decl'#27 <- `decl'*`}, var_0) + -- fun_elemsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:307.1-307.52 - def $startsd{funcidx : funcidx, `decl'*` : decl*}([START_decl(funcidx)] ++ decl'#28*{decl'#28 <- `decl'*`}) = [START_start(funcidx)] ++ $startsd(decl'#29*{decl'#29 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#30*{decl'#30 <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation fun_startsd: `%%`(decl*, start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_1{funcidx : funcidx, `decl'*` : decl*, var_0 : start*}: + `%%`([START_decl(funcidx)] ++ decl'#28*{decl'#28 <- `decl'*`}, [START_start(funcidx)] ++ var_0) + -- fun_startsd: `%%`(decl'#29*{decl'#29 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_2{decl : decl, `decl'*` : decl*, var_0 : start*}: + `%%`([decl] ++ decl'#30*{decl'#30 <- `decl'*`}, var_0) + -- fun_startsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:311.1-311.56 - def $exportsd{name : name, externidx : externidx, `decl'*` : decl*}([EXPORT_decl(name, externidx)] ++ decl'#31*{decl'#31 <- `decl'*`}) = [EXPORT_export(name, externidx)] ++ $exportsd(decl'#32*{decl'#32 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#33*{decl'#33 <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation fun_exportsd: `%%`(decl*, export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_1{name : name, externidx : externidx, `decl'*` : decl*, var_0 : export*}: + `%%`([EXPORT_decl(name, externidx)] ++ decl'#31*{decl'#31 <- `decl'*`}, [EXPORT_export(name, externidx)] ++ var_0) + -- fun_exportsd: `%%`(decl'#32*{decl'#32 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_2{decl : decl, `decl'*` : decl*, var_0 : export*}: + `%%`([decl] ++ decl'#33*{decl'#33 <- `decl'*`}, var_0) + -- fun_exportsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec relation fun_ordered: `%%`(decl*, bool) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - rule fun_ordered_case_0{`decl*` : decl*}: + rule fun_ordered_case_0{`decl*` : decl*, var_0 : import*}: `%%`(decl#1*{decl#1 <- `decl*`}, true) - -- if ($importsd(decl#2*{decl#2 <- `decl*`}) = []) + -- fun_importsd: `%%`(decl#2*{decl#2 <- `decl*`}, var_0) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - rule fun_ordered_case_1{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*}: - `%%`(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}, (((((($importsd(decl_1#7*{decl_1#7 <- `decl_1*`}) = []) /\ ($tagsd(decl_1#6*{decl_1#6 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1#5*{decl_1#5 <- `decl_1*`}) = [])) /\ ($memsd(decl_1#4*{decl_1#4 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1#3*{decl_1#3 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1#2*{decl_1#2 <- `decl_1*`}) = []))) + rule fun_ordered_case_1{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*, var_5 : func*, var_4 : table*, var_3 : mem*, var_2 : global*, var_1 : tag*, var_0 : import*}: + `%%`(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}, ((((((var_0 = []) /\ (var_1 = [])) /\ (var_2 = [])) /\ (var_3 = [])) /\ (var_4 = [])) /\ (var_5 = []))) + -- fun_funcsd: `%%`(decl_1#2*{decl_1#2 <- `decl_1*`}, var_5) + -- fun_tablesd: `%%`(decl_1#3*{decl_1#3 <- `decl_1*`}, var_4) + -- fun_memsd: `%%`(decl_1#4*{decl_1#4 <- `decl_1*`}, var_3) + -- fun_globalsd: `%%`(decl_1#5*{decl_1#5 <- `decl_1*`}, var_2) + -- fun_tagsd: `%%`(decl_1#6*{decl_1#6 <- `decl_1*`}, var_1) + -- fun_importsd: `%%`(decl_1#7*{decl_1#7 <- `decl_1*`}, var_0) ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context) @@ -22446,12 +22261,10 @@ grammar TfNmag(N : N) : fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod "inf" => INF_fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{var_0 : m} "nan" => NAN_fNmag(var_0) - -- fun_canon_: `%%`(N, var_0) + prod "nan" => NAN_fNmag($canon_(N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n, var_0 : nat?} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) - -- if ((1 <= n) /\ (n < (2 ^ !(var_0)))) - -- fun_signif: `%%`(N, var_0) + prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + -- if ((1 <= n) /\ (n < (2 ^ !($signif(N))))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TfN(N : N) : fN @@ -24071,22 +23884,33 @@ grammar Tdecl_(I : I) : (decl, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmodule : module ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I, var_1 : bool, var_0 : idctxt} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I, var_12 : bool, var_11 : export*, var_10 : start*, var_9 : elem*, var_8 : data*, var_7 : func*, var_6 : table*, var_5 : mem*, var_4 : global*, var_3 : tag*, var_2 : import*, var_1 : type*, var_0 : idctxt} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) -- if (I' = var_0) -- Idctxt_ok: `|-%:OK`(I') - -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) - -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) - -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) - -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) - -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) - -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) - -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) - -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) - -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) - -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) - -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if var_1 - -- fun_ordered: `%%`(decl*{decl <- `decl*`}, var_1) + -- if (type*{type <- `type*`} = var_1) + -- if (import*{import <- `import*`} = var_2) + -- if (tag*{tag <- `tag*`} = var_3) + -- if (global*{global <- `global*`} = var_4) + -- if (mem*{mem <- `mem*`} = var_5) + -- if (table*{table <- `table*`} = var_6) + -- if (func*{func <- `func*`} = var_7) + -- if (data*{data <- `data*`} = var_8) + -- if (elem*{elem <- `elem*`} = var_9) + -- if (lift(start?{start <- `start?`}) = var_10) + -- if (export*{export <- `export*`} = var_11) + -- if var_12 + -- fun_ordered: `%%`(decl*{decl <- `decl*`}, var_12) + -- fun_exportsd: `%%`(decl*{decl <- `decl*`}, var_11) + -- fun_startsd: `%%`(decl*{decl <- `decl*`}, var_10) + -- fun_elemsd: `%%`(decl*{decl <- `decl*`}, var_9) + -- fun_datasd: `%%`(decl*{decl <- `decl*`}, var_8) + -- fun_funcsd: `%%`(decl*{decl <- `decl*`}, var_7) + -- fun_tablesd: `%%`(decl*{decl <- `decl*`}, var_6) + -- fun_memsd: `%%`(decl*{decl <- `decl*`}, var_5) + -- fun_globalsd: `%%`(decl*{decl <- `decl*`}, var_4) + -- fun_tagsd: `%%`(decl*{decl <- `decl*`}, var_3) + -- fun_importsd: `%%`(decl*{decl <- `decl*`}, var_2) + -- fun_typesd: `%%`(decl*{decl <- `decl*`}, var_1) -- fun_concat_idctxt: `%%`(I*{I <- `I*`}, var_0) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec diff --git a/spectec/test-middlend/specification.exp/11-alias-demut.il b/spectec/test-middlend/specification.exp/11-alias-demut.il index f527d52403..0f29962e0d 100644 --- a/spectec/test-middlend/specification.exp/11-alias-demut.il +++ b/spectec/test-middlend/specification.exp/11-alias-demut.il @@ -22,23 +22,31 @@ def $min(nat : nat, nat : nat) : nat ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 -def $sum(nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 - def $sum([]) = 0 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 - def $sum{n : nat, `n'*` : n*}([n] ++ n'#1*{n'#1 <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 +relation fun_sum: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_0: + `%%`([], 0) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'#1*{n'#1 <- `n'*`}, (n + var_0)) + -- fun_sum: `%%`(n'*{n' <- `n'*`}, var_0) } ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 -def $prod(nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 - def $prod([]) = 1 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 - def $prod{n : nat, `n'*` : n*}([n] ++ n'#2*{n'#2 <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 +relation fun_prod: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_0: + `%%`([], 1) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'#2*{n'#2 <- `n'*`}, (n * var_0)) + -- fun_prod: `%%`(n'*{n' <- `n'*`}, var_0) } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec @@ -244,70 +252,32 @@ syntax i64 = iN syntax i128 = iN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_signif_before_fun_signif_case_2: `%`(N) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_1: - `%`(64) - +def $signif(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_0: - `%`(32) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_signif: `%%`(N, nat?) + def $signif(32) = ?(23) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_0: - `%%`(32, ?(23)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_1: - `%%`(64, ?(52)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_2{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_signif_before_fun_signif_case_2: `%`(x0) + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_expon_before_fun_expon_case_2: `%`(N) +def $expon(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_1: - `%`(64) - + def $expon(32) = ?(8) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_0: - `%`(32) + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_expon: `%%`(N, nat?) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_0: - `%%`(32, ?(8)) - +def $M(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_1: - `%%`(64, ?(11)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_2{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_expon_before_fun_expon_case_2: `%`(x0) + def $M{N : nat}(N) = !($signif(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_M: `%%`(N, nat) +def $E(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_M_case_0{N : nat, var_0 : nat?}: - `%%`(N, !(var_0)) - -- if (var_0 =/= ?()) - -- fun_signif: `%%`(N, var_0) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_E: `%%`(N, nat) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_E_case_0{N : nat, var_0 : nat?}: - `%%`(N, !(var_0)) - -- if (var_0 =/= ?()) - -- fun_expon: `%%`(N, var_0) + def $E{N : nat}(N) = !($expon(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax exp = int @@ -322,28 +292,23 @@ syntax fNmag = ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_fNmag: `%%`(N, fNmag) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_0{N : N, m : m, exp : exp, var_1 : nat, var_0 : nat}: + rule fNmag_case_0{N : N, m : m, exp : exp}: `%%`(N, NORM_fNmag(m, exp)) - -- if ((m < (2 ^ var_0)) /\ ((((2 : nat <:> int) - ((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) - -- fun_E: `%%`(N, var_1) - -- fun_M: `%%`(N, var_0) + -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_1{N : N, exp : exp, m : m, var_1 : nat, var_0 : nat}: + rule fNmag_case_1{N : N, exp : exp, m : m}: `%%`(N, SUBNORM_fNmag(m)) - -- if ((m < (2 ^ var_0)) /\ (((2 : nat <:> int) - ((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) - -- fun_E: `%%`(N, var_1) - -- fun_M: `%%`(N, var_0) + -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rule fNmag_case_2{N : N}: `%%`(N, INF_fNmag) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_3{N : N, m : m, var_0 : nat}: + rule fNmag_case_3{N : N, m : m}: `%%`(N, NAN_fNmag(m)) - -- if ((1 <= m) /\ (m < (2 ^ var_0))) - -- fun_M: `%%`(N, var_0) + -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax fN = @@ -390,12 +355,9 @@ relation fun_fone: `%%`(N, fN) -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_canon_: `%%`(N, nat) +def $canon_(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_canon__case_0{N : nat, var_0 : nat?}: - `%%`(N, (2 ^ (((!(var_0) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) - -- if (var_0 =/= ?()) - -- fun_signif: `%%`(N, var_0) + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax vN = uN @@ -584,66 +546,101 @@ relation wf_externidx: `%`(externidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 -def $funcsxx(externidx*) : typeidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 - def $funcsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 - def $funcsxx{x : uN, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx#1*{xx#1 <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 - def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#2*{xx#2 <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 +relation fun_funcsxx: `%%`(externidx*, typeidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_1{x : uN, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([FUNC_externidx(x)] ++ xx#1*{xx#1 <- `xx*`}, [x] ++ var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([externidx] ++ xx#2*{xx#2 <- `xx*`}, var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 -def $globalsxx(externidx*) : globalidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 - def $globalsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 - def $globalsxx{x : uN, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx#3*{xx#3 <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 - def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#4*{xx#4 <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 +relation fun_globalsxx: `%%`(externidx*, globalidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_1{x : uN, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([GLOBAL_externidx(x)] ++ xx#3*{xx#3 <- `xx*`}, [x] ++ var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([externidx] ++ xx#4*{xx#4 <- `xx*`}, var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 -def $tablesxx(externidx*) : tableidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 - def $tablesxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 - def $tablesxx{x : uN, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx#5*{xx#5 <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 - def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#6*{xx#6 <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 +relation fun_tablesxx: `%%`(externidx*, tableidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_1{x : uN, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([TABLE_externidx(x)] ++ xx#5*{xx#5 <- `xx*`}, [x] ++ var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([externidx] ++ xx#6*{xx#6 <- `xx*`}, var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 -def $memsxx(externidx*) : memidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 - def $memsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 - def $memsxx{x : uN, `xx*` : externidx*}([MEM_externidx(x)] ++ xx#7*{xx#7 <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 - def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#8*{xx#8 <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 +relation fun_memsxx: `%%`(externidx*, memidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_1{x : uN, `xx*` : externidx*, var_0 : memidx*}: + `%%`([MEM_externidx(x)] ++ xx#7*{xx#7 <- `xx*`}, [x] ++ var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : memidx*}: + `%%`([externidx] ++ xx#8*{xx#8 <- `xx*`}, var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 -def $tagsxx(externidx*) : tagidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 - def $tagsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 - def $tagsxx{x : uN, `xx*` : externidx*}([TAG_externidx(x)] ++ xx#9*{xx#9 <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 - def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#10*{xx#10 <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 +relation fun_tagsxx: `%%`(externidx*, tagidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_1{x : uN, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([TAG_externidx(x)] ++ xx#9*{xx#9 <- `xx*`}, [x] ++ var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([externidx] ++ xx#10*{xx#10 <- `xx*`}, var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -1495,95 +1492,35 @@ relation wf_moduletype: `%`(moduletype) -- (wf_externtype: `%`(`externtype*_0`))*{`externtype*_0` <- `externtype*_0`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_IN_before_fun_IN_case_2: `%`(N) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_1: - `%`(64) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_0: - `%`(32) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_IN: `%%`(N, Inn?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_0: - `%%`(32, ?(I32_Inn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_1: - `%%`(64, ?(I64_Inn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_2{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_IN_before_fun_IN_case_2: `%`(x0) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_FN_before_fun_FN_case_2: `%`(N) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_1: - `%`(64) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_0: - `%`(32) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_FN: `%%`(N, Fnn?) +def $IN(N : N) : Inn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_0: - `%%`(32, ?(F32_Fnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_1: - `%%`(64, ?(F64_Fnn)) - + def $IN(32) = ?(I32_Inn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_2{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_FN_before_fun_FN_case_2: `%`(x0) + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_JN_before_fun_JN_case_4: `%`(N) +def $FN(N : N) : Fnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_3: - `%`(64) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_2: - `%`(32) - + def $FN(32) = ?(F32_Fnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_1: - `%`(16) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_0: - `%`(8) + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_JN: `%%`(N, Jnn?) +def $JN(N : N) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_0: - `%%`(8, ?(I8_Jnn)) - + def $JN(8) = ?(I8_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_1: - `%%`(16, ?(I16_Jnn)) - + def $JN(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_2: - `%%`(32, ?(I32_Jnn)) - + def $JN(32) = ?(I32_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_3: - `%%`(64, ?(I64_Jnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_4{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_JN_before_fun_JN_case_4: `%`(x0) + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $size(numtype : numtype) : nat @@ -1624,69 +1561,23 @@ def $lsize(lanetype : lanetype) : nat def $lsize(I16_lanetype) = $psize(I16_packtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_zsize_before_fun_zsize_case_7: `%`(storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_6: - `%`(I16_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_5: - `%`(I8_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_4: - `%`(V128_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_3: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_2: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_1: - `%`(I64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_0: - `%`(I32_storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_zsize: `%%`(storagetype, nat?) +def $zsize(storagetype : storagetype) : nat? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_0: - `%%`(I32_storagetype, ?($size(I32_numtype))) - + def $zsize(I32_storagetype) = ?($size(I32_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_1: - `%%`(I64_storagetype, ?($size(I64_numtype))) - + def $zsize(I64_storagetype) = ?($size(I64_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_2: - `%%`(F32_storagetype, ?($size(F32_numtype))) - + def $zsize(F32_storagetype) = ?($size(F32_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_3: - `%%`(F64_storagetype, ?($size(F64_numtype))) - + def $zsize(F64_storagetype) = ?($size(F64_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_4: - `%%`(V128_storagetype, ?($vsize(V128_vectype))) - + def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_5: - `%%`(I8_storagetype, ?($psize(I8_packtype))) - + def $zsize(I8_storagetype) = ?($psize(I8_packtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_6: - `%%`(I16_storagetype, ?($psize(I16_packtype))) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_7{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_zsize_before_fun_zsize_case_7: `%`(x0) + def $zsize(I16_storagetype) = ?($psize(I16_packtype)) + def $zsize{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $isize(Inn : Inn) : nat @@ -1704,69 +1595,31 @@ def $fsize(Fnn : Fnn) : nat def $fsize{Fnn : Fnn}(Fnn) = $size($numtype_Fnn(Fnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_isize_before_fun_inv_isize_case_2: `%`(nat) +def $inv_isize(nat : nat) : Inn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_1: - `%`(64) - + def $inv_isize(32) = ?(I32_Inn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_0: - `%`(32) + def $inv_isize(64) = ?(I64_Inn) + def $inv_isize{x0 : nat}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_isize: `%%`(nat, Inn?) +def $inv_jsize(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_0: - `%%`(32, ?(I32_Inn)) - + def $inv_jsize(8) = ?(I8_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_1: - `%%`(64, ?(I64_Inn)) - + def $inv_jsize(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_2{x0 : nat}: - `%%`(x0, ?()) - -- ~ fun_inv_isize_before_fun_inv_isize_case_2: `%`(x0) + def $inv_jsize{n : nat}(n) = $Jnn_addrtype(iter_val#1)?{iter_val#1 <- $inv_isize(n)} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_jsize: `%%`(nat, Jnn?) +def $inv_fsize(nat : nat) : Fnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_jsize_case_0: - `%%`(8, ?(I8_Jnn)) - + def $inv_fsize(32) = ?(F32_Fnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_jsize_case_1: - `%%`(16, ?(I16_Jnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_jsize_case_2{n : nat, var_0 : Inn?}: - `%%`(n, $Jnn_addrtype(iter_val#1)?{iter_val#1 <- var_0}) - -- fun_inv_isize: `%%`(n, var_0) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_fsize_before_fun_inv_fsize_case_2: `%`(nat) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_1: - `%`(64) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_0: - `%`(32) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_fsize: `%%`(nat, Fnn?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_0: - `%%`(32, ?(F32_Fnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_1: - `%%`(64, ?(F64_Fnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_2{x0 : nat}: - `%%`(x0, ?()) - -- ~ fun_inv_fsize_before_fun_inv_fsize_case_2: `%`(x0) + def $inv_fsize(64) = ?(F64_Fnn) + def $inv_fsize{x0 : nat}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $sizenn(numtype : numtype) : nat @@ -1814,11 +1667,9 @@ def $jsizenn(Jnn : Jnn) : nat def $jsizenn{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_jsizenn: `%%`(nat, Jnn?) +def $inv_jsizenn(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_jsizenn_case_0{n : nat, var_0 : Jnn?}: - `%%`(n, var_0) - -- fun_inv_jsize: `%%`(n, var_0) + def $inv_jsizenn{n : nat}(n) = $inv_jsize(n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $lunpack(lanetype : lanetype) : numtype @@ -1876,191 +1727,59 @@ relation fun_unpack: `%%`(storagetype, valtype) -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_nunpack_before_fun_nunpack_case_6: `%`(storagetype) +def $nunpack(storagetype : storagetype) : numtype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_5: - `%`(I16_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_4: - `%`(I8_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_3: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_2: - `%`(F32_storagetype) - + def $nunpack(I32_storagetype) = ?(I32_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_1: - `%`(I64_storagetype) - + def $nunpack(I64_storagetype) = ?(I64_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_0: - `%`(I32_storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_nunpack: `%%`(storagetype, numtype?) + def $nunpack(F32_storagetype) = ?(F32_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_0: - `%%`(I32_storagetype, ?(I32_numtype)) - + def $nunpack(F64_storagetype) = ?(F64_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_1: - `%%`(I64_storagetype, ?(I64_numtype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_2: - `%%`(F32_storagetype, ?(F32_numtype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_3: - `%%`(F64_storagetype, ?(F64_numtype)) - + def $nunpack(I8_storagetype) = ?(I32_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_4: - `%%`(I8_storagetype, ?(I32_numtype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_5: - `%%`(I16_storagetype, ?(I32_numtype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_6{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_nunpack_before_fun_nunpack_case_6: `%`(x0) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_vunpack_before_fun_vunpack_case_1: `%`(storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_vunpack_case_0: - `%`(V128_storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_vunpack: `%%`(storagetype, vectype?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_vunpack_case_0: - `%%`(V128_storagetype, ?(V128_vectype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_vunpack_case_1{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_vunpack_before_fun_vunpack_case_1: `%`(x0) + def $nunpack(I16_storagetype) = ?(I32_numtype) + def $nunpack{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_cunpack_before_fun_cunpack_case_13: `%`(storagetype) +def $vunpack(storagetype : storagetype) : vectype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_12: - `%`(I16_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_11: - `%`(I8_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_10: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_9: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_8: - `%`(I64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_7: - `%`(I32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_6: - `%`(I16_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_5: - `%`(I8_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_4: - `%`(V128_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_3: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_2: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_1: - `%`(I64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_0: - `%`(I32_storagetype) + def $vunpack(V128_storagetype) = ?(V128_vectype) + def $vunpack{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_cunpack: `%%`(storagetype, consttype?) +def $cunpack(storagetype : storagetype) : consttype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_0: - `%%`(I32_storagetype, ?(I32_consttype)) - + def $cunpack(I32_storagetype) = ?(I32_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_1: - `%%`(I64_storagetype, ?(I64_consttype)) - + def $cunpack(I64_storagetype) = ?(I64_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_2: - `%%`(F32_storagetype, ?(F32_consttype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_3: - `%%`(F64_storagetype, ?(F64_consttype)) - + def $cunpack(F32_storagetype) = ?(F32_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_4: - `%%`(V128_storagetype, ?(V128_consttype)) - + def $cunpack(F64_storagetype) = ?(F64_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_5: - `%%`(I8_storagetype, ?(I32_consttype)) - + def $cunpack(V128_storagetype) = ?(V128_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_6: - `%%`(I16_storagetype, ?(I32_consttype)) - + def $cunpack(I8_storagetype) = ?(I32_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_7: - `%%`(I32_storagetype, ?($consttype_numtype($lunpack(I32_lanetype)))) - + def $cunpack(I16_storagetype) = ?(I32_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_8: - `%%`(I64_storagetype, ?($consttype_numtype($lunpack(I64_lanetype)))) - + def $cunpack(I32_storagetype) = ?($consttype_numtype($lunpack(I32_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_9: - `%%`(F32_storagetype, ?($consttype_numtype($lunpack(F32_lanetype)))) - + def $cunpack(I64_storagetype) = ?($consttype_numtype($lunpack(I64_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_10: - `%%`(F64_storagetype, ?($consttype_numtype($lunpack(F64_lanetype)))) - + def $cunpack(F32_storagetype) = ?($consttype_numtype($lunpack(F32_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_11: - `%%`(I8_storagetype, ?($consttype_numtype($lunpack(I8_lanetype)))) - + def $cunpack(F64_storagetype) = ?($consttype_numtype($lunpack(F64_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_12: - `%%`(I16_storagetype, ?($consttype_numtype($lunpack(I16_lanetype)))) - + def $cunpack(I8_storagetype) = ?($consttype_numtype($lunpack(I8_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_13{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_cunpack_before_fun_cunpack_case_13: `%`(x0) + def $cunpack(I16_storagetype) = ?($consttype_numtype($lunpack(I16_lanetype))) + def $cunpack{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype @@ -2080,85 +1799,110 @@ relation fun_diffrt: `%%%`(reftype, reftype, reftype) -- wf_reftype: `%`(REF_reftype(null_1#3?{null_1#3 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_as_deftype_before_fun_as_deftype_case_1: `%`(typeuse) +def $as_deftype(typeuse : typeuse) : deftype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_as_deftype_case_0{rectype : rectype, n : n}: - `%`(_DEF_typeuse(rectype, n)) + def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = ?(_DEF_deftype(rectype, n)) + def $as_deftype{x0 : typeuse}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_as_deftype: `%%`(typeuse, deftype?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_as_deftype_case_0{rectype : rectype, n : n}: - `%%`(_DEF_typeuse(rectype, n), ?(_DEF_deftype(rectype, n))) +rec { - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_as_deftype_case_1{x0 : typeuse}: - `%%`(x0, ?()) - -- ~ fun_as_deftype_before_fun_as_deftype_case_1: `%`(x0) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 +relation fun_tagsxt: `%%`(externtype*, tagtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_0: + `%%`([], []) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_1{jt : typeuse, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([TAG_externtype(jt)] ++ xt#1*{xt#1 <- `xt*`}, [jt] ++ var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 -def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 - def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 - def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt#1*{xt#1 <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 - def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#2*{xt#2 <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([externtype] ++ xt#2*{xt#2 <- `xt*`}, var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 -def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 - def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 - def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt#3*{xt#3 <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 - def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#4*{xt#4 <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation fun_globalsxt: `%%`(externtype*, globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_1{gt : globaltype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([GLOBAL_externtype(gt)] ++ xt#3*{xt#3 <- `xt*`}, [gt] ++ var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([externtype] ++ xt#4*{xt#4 <- `xt*`}, var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 -def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 - def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 - def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt#5*{xt#5 <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 - def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#6*{xt#6 <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation fun_memsxt: `%%`(externtype*, memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_1{mt : memtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([MEM_externtype(mt)] ++ xt#5*{xt#5 <- `xt*`}, [mt] ++ var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([externtype] ++ xt#6*{xt#6 <- `xt*`}, var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 -def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 - def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 - def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt#7*{xt#7 <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 - def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#8*{xt#8 <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation fun_tablesxt: `%%`(externtype*, tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_1{tt : tabletype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([TABLE_externtype(tt)] ++ xt#7*{xt#7 <- `xt*`}, [tt] ++ var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([externtype] ++ xt#8*{xt#8 <- `xt*`}, var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 -def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 - def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 - def $funcsxt{rectype : rectype, n : n, `xt*` : externtype*}([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt#9*{xt#9 <- `xt*`}) = [_DEF_deftype(rectype, n)] ++ $funcsxt(xt#10*{xt#10 <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 - def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#11*{xt#11 <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 +relation fun_funcsxt: `%%`(externtype*, deftype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_1{rectype : rectype, n : n, `xt*` : externtype*, var_0 : deftype*}: + `%%`([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt#9*{xt#9 <- `xt*`}, [_DEF_deftype(rectype, n)] ++ var_0) + -- fun_funcsxt: `%%`(xt#10*{xt#10 <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : deftype*}: + `%%`([externtype] ++ xt#11*{xt#11 <- `xt*`}, var_0) + -- fun_funcsxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -7559,30 +7303,28 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*, var_0 : deftype?}: + rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if (var_0 =/= ?()) - -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*, var_0 : deftype?}: + rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if (var_0 =/= ?()) - -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: @@ -7967,18 +7709,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 - rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*, var_0 : deftype?}: + rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`(C) -- wf_instr: `%`(THROW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (var_0 =/= ?()) - -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: @@ -9304,7 +9045,7 @@ relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*, var_1 : funcidx*, var_0 : moduletype}: + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*, var_6 : deftype*, var_5 : tabletype*, var_4 : memtype*, var_3 : globaltype*, var_2 : tagtype*, var_1 : funcidx*, var_0 : moduletype}: `|-%:%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) -- wf_context: `%`(C) -- wf_context: `%`(C') @@ -9340,11 +9081,16 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (C = C' +++ {TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) -- if (x*{x <- `x*`} = var_1) - -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) - -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) - -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) - -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) - -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (jt_I*{jt_I <- `jt_I*`} = var_2) + -- if (gt_I*{gt_I <- `gt_I*`} = var_3) + -- if (mt_I*{mt_I <- `mt_I*`} = var_4) + -- if (tt_I*{tt_I <- `tt_I*`} = var_5) + -- if (dt_I*{dt_I <- `dt_I*`} = var_6) + -- fun_funcsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_6) + -- fun_tablesxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_5) + -- fun_memsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_4) + -- fun_globalsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_3) + -- fun_tagsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_2) -- fun_funcidx_nonfuncs: `%%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_1) -- fun_clos_moduletype: `%%%`(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}), var_0) @@ -9493,69 +9239,23 @@ relation fun_inv_signed_: `%%%`(N, int, nat) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_sx_before_fun_sx_case_7: `%`(storagetype) +def $sx(storagetype : storagetype) : sx?? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_6: - `%`(I16_storagetype) - + def $sx(I32_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_5: - `%`(I8_storagetype) - + def $sx(I64_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_4: - `%`(V128_storagetype) - + def $sx(F32_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_3: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_2: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_1: - `%`(I64_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_0: - `%`(I32_storagetype) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_sx: `%%`(storagetype, sx??) + def $sx(F64_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_0: - `%%`(I32_storagetype, ?(?())) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_1: - `%%`(I64_storagetype, ?(?())) - + def $sx(V128_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_2: - `%%`(F32_storagetype, ?(?())) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_3: - `%%`(F64_storagetype, ?(?())) - + def $sx(I8_storagetype) = ?(?(S_sx)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_4: - `%%`(V128_storagetype, ?(?())) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_5: - `%%`(I8_storagetype, ?(?(S_sx))) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_6: - `%%`(I16_storagetype, ?(?(S_sx))) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_7{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_sx_before_fun_sx_case_7: `%`(x0) + def $sx(I16_storagetype) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_zero: `%%`(lanetype, lane_) @@ -10109,18 +9809,16 @@ relation fun_cunpacknum_: `%%%`(storagetype, lit_, lit_) `%%%`(V128_storagetype, c, c) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_cunpacknum__case_5{c : uN, var_0 : consttype?}: + rule fun_cunpacknum__case_5{c : uN}: `%%%`(I8_storagetype, mk_lit__2_lit_(I8_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) - -- fun_cunpack: `%%`($storagetype_packtype(I8_packtype), var_0) - -- if (var_0 =/= ?()) - -- wf_lit_: `%%`($storagetype_consttype(!(var_0)), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I8_packtype)) =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_cunpacknum__case_6{c : uN, var_0 : consttype?}: + rule fun_cunpacknum__case_6{c : uN}: `%%%`(I16_storagetype, mk_lit__2_lit_(I16_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) - -- fun_cunpack: `%%`($storagetype_packtype(I16_packtype), var_0) - -- if (var_0 =/= ?()) - -- wf_lit_: `%%`($storagetype_consttype(!(var_0)), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I16_packtype)) =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) @@ -15508,66 +15206,101 @@ relation fun_unpackfield_: `%%%%`(storagetype, sx?, fieldval, val?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.1-190.86 -def $tagsxa(externaddr*) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.23 - def $tagsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.42 - def $tagsxa{a : nat, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa#1*{xa#1 <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:198.1-198.57 - def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#2*{xa#2 <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 +relation fun_tagsxa: `%%`(externaddr*, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([TAG_externaddr(a)] ++ xa#1*{xa#1 <- `xa*`}, [a] ++ var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([externaddr] ++ xa#2*{xa#2 <- `xa*`}, var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.1-191.89 -def $globalsxa(externaddr*) : globaladdr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.26 - def $globalsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.51 - def $globalsxa{a : nat, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa#3*{xa#3 <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:202.1-202.63 - def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#4*{xa#4 <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 +relation fun_globalsxa: `%%`(externaddr*, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([GLOBAL_externaddr(a)] ++ xa#3*{xa#3 <- `xa*`}, [a] ++ var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([externaddr] ++ xa#4*{xa#4 <- `xa*`}, var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.1-192.86 -def $memsxa(externaddr*) : memaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.23 - def $memsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.42 - def $memsxa{a : nat, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa#5*{xa#5 <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:206.1-206.57 - def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#6*{xa#6 <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 +relation fun_memsxa: `%%`(externaddr*, memaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([MEM_externaddr(a)] ++ xa#5*{xa#5 <- `xa*`}, [a] ++ var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([externaddr] ++ xa#6*{xa#6 <- `xa*`}, var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.88 -def $tablesxa(externaddr*) : tableaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.25 - def $tablesxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.48 - def $tablesxa{a : nat, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa#7*{xa#7 <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:210.1-210.61 - def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#8*{xa#8 <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 +relation fun_tablesxa: `%%`(externaddr*, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([TABLE_externaddr(a)] ++ xa#7*{xa#7 <- `xa*`}, [a] ++ var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([externaddr] ++ xa#8*{xa#8 <- `xa*`}, var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.87 -def $funcsxa(externaddr*) : funcaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.24 - def $funcsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.45 - def $funcsxa{a : nat, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa#9*{xa#9 <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:214.1-214.59 - def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#10*{xa#10 <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 +relation fun_funcsxa: `%%`(externaddr*, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([FUNC_externaddr(a)] ++ xa#9*{xa#9 <- `xa*`}, [a] ++ var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([externaddr] ++ xa#10*{xa#10 <- `xa*`}, var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -16714,7 +16447,7 @@ relation Step_pure: `%~>%`(instr*, instr*) -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*, `var_0*` : uN*}: + rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*, `var_1*` : uN*, var_0 : nat}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), i))*{i <- `i*`} -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) @@ -16723,10 +16456,11 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)) -- if ($proj_num__0(c) =/= ?()) - -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0(var_0).0*{var_0 <- `var_0*`})) - -- if (|`var_0*`| = |`i*`|) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = var_0) + -- if (|`var_1*`| = |`i*`|) -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} - -- (fun_inez_: `%%%`($jsizenn(Jnn), !($proj_lane__2(i)), var_0))*{var_0 <- `var_0*`, i <- `i*`} + -- (fun_inez_: `%%%`($jsizenn(Jnn), !($proj_lane__2(i)), var_1))*{var_1 <- `var_1*`, i <- `i*`} + -- fun_prod: `%%`($proj_uN_0(var_1).0*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_, var_0 : vec_}: @@ -17294,7 +17028,7 @@ relation `Step_read_before_array.copy-le`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-gt`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: + rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) @@ -17312,9 +17046,8 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !(var_0))) - -- fun_sx: `%%`(zt_2, var_0) + -- if ($sx(zt_2) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -17389,16 +17122,15 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: + rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- fun_zsize: `%%`(zt, var_0) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -17419,16 +17151,15 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: + rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- fun_zsize: `%%`(zt, var_0) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -18157,33 +17888,30 @@ relation Step_read: `%~>%`(config, instr*) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: + rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- fun_zsize: `%%`(zt, var_0) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?, var_3 : nat?, `var_2*` : lit_*, var_1 : consttype?, `var_0*` : instr*}: + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?, `var_1*` : lit_*, `var_0*` : instr*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), var_0^n{var_0 <- `var_0*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (var_3 =/= ?()) + -- if ($zsize(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !(var_3)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- fun_zsize: `%%`(zt, var_3) - -- (fun_cunpacknum_: `%%%`(zt, c, var_2))^n{var_2 <- `var_2*`, c <- `c*`} - -- fun_cunpack: `%%`(zt, var_1) - -- (if (var_1 =/= ?()))^n{} - -- (fun_const: `%%%`(!(var_1), var_2, var_0))^n{var_2 <- `var_2*`, var_0 <- `var_0*`} + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (fun_cunpacknum_: `%%%`(zt, c, var_1))^n{var_1 <- `var_1*`, c <- `c*`} + -- (if ($cunpack(zt) =/= ?()))^n{} + -- (fun_const: `%%%`(!($cunpack(zt)), var_1, var_0))^n{var_1 <- `var_1*`, var_0 <- `var_0*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: @@ -18298,7 +18026,7 @@ relation Step_read: `%~>%`(config, instr*) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -18316,12 +18044,11 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !(var_0))) - -- fun_sx: `%%`(zt_2, var_0) + -- if ($sx(zt_2) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype, var_0 : sx??}: + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -18339,9 +18066,8 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (var_0 =/= ?()) - -- if (sx?{sx <- `sx?`} = !(var_0)) - -- fun_sx: `%%`(zt_2, var_0) + -- if ($sx(zt_2) =/= ?()) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -18407,16 +18133,15 @@ relation Step_read: `%~>%`(config, instr*) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype, var_0 : nat?}: + rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- fun_zsize: `%%`(zt, var_0) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -18426,29 +18151,27 @@ relation Step_read: `%~>%`(config, instr*) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?, var_3 : nat?, var_2 : lit_, var_1 : consttype?, var_0 : instr}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) var_0 `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?, var_1 : lit_, var_0 : instr}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) var_0 `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- if (var_3 =/= ?()) + -- if ($zsize(zt) =/= ?()) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(`ARRAY.SET`_instr(x)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- fun_zsize: `%%`(zt, var_3) - -- fun_cunpacknum_: `%%%`(zt, c, var_2) - -- fun_cunpack: `%%`(zt, var_1) - -- if (var_1 =/= ?()) - -- fun_const: `%%%`(!(var_1), var_2, var_0) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- fun_cunpacknum_: `%%%`(zt, c, var_1) + -- if ($cunpack(zt) =/= ?()) + -- fun_const: `%%%`(!($cunpack(zt)), var_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rec { @@ -18507,18 +18230,17 @@ relation Step: `%~>%`(config, config) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:231.1-235.49 - rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*, var_1 : deftype?, var_0 : state}: + rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*, var_0 : state}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config(var_0, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) -- wf_config: `%`(`%;%`_config(var_0, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- if (var_1 =/= ?()) - -- Expand: `%~~%`(!(var_1), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype($tag(z, x).TYPE_taginst) =/= ?()) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- fun_as_deftype: `%%`($tag(z, x).TYPE_taginst, var_1) -- fun_add_exninst: `%%%`(z, [exn], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 @@ -19044,28 +18766,33 @@ relation fun_allocexports: `%%%`(moduleinst, export*, exportinst*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref**, (store, moduleinst)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_13 : exportinst*, var_12 : (store, funcaddr*), `var_11*` : elemtype*, var_10 : (store, elemaddr*), var_9 : (store, dataaddr*), `var_8*` : tabletype*, var_7 : (store, tableaddr*), `var_6*` : memtype*, var_5 : (store, memaddr*), `var_4*` : globaltype*, var_3 : (store, globaladdr*), `var_2*` : tagtype*, var_1 : (store, tagaddr*), var_0 : deftype*}: + rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_18 : exportinst*, var_17 : (store, funcaddr*), `var_16*` : elemtype*, var_15 : (store, elemaddr*), var_14 : (store, dataaddr*), `var_13*` : tabletype*, var_12 : (store, tableaddr*), `var_11*` : memtype*, var_10 : (store, memaddr*), `var_9*` : globaltype*, var_8 : (store, globaladdr*), `var_7*` : tagtype*, var_6 : (store, tagaddr*), var_5 : deftype*, var_4 : funcaddr*, var_3 : tableaddr*, var_2 : memaddr*, var_1 : globaladdr*, var_0 : tagaddr*}: `%%%%%%%`(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}, (s_7, moduleinst)) - -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#7*{export#7 <- `export*`}, var_13) + -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#7*{export#7 <- `export*`}, var_18) -- (if ($proj_uN_0(x#4).0 < |dt#15*{dt#15 <- `dt*`}|))*{x#4 <- `x*`} - -- fun_allocfuncs: `%%%%%`(s_6, dt#15*{dt#15 <- `dt*`}[$proj_uN_0(x#4).0]*{x#4 <- `x*`}, FUNC_funccode(x#5, local#4*{local#4 <- `local*#86`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#86` <- `local**`, x#5 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_12) - -- if (|`var_11*`| = |`elemtype*`|) - -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- `dt*`}, var_11))*{var_11 <- `var_11*`, elemtype#3 <- `elemtype*`} - -- fun_allocelems: `%%%%`(s_5, var_11*{var_11 <- `var_11*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_10) - -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#114`}*{`byte*#114` <- `byte**`}, var_9) - -- if (|`var_8*`| = |`tabletype*`|) - -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_8))*{var_8 <- `var_8*`, tabletype#160 <- `tabletype*`} - -- fun_alloctables: `%%%%`(s_3, var_8*{var_8 <- `var_8*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_7) - -- if (|`var_6*`| = |`memtype*`|) - -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_6))*{var_6 <- `var_6*`, memtype#126 <- `memtype*`} - -- fun_allocmems: `%%%`(s_2, var_6*{var_6 <- `var_6*`}, var_5) - -- if (|`var_4*`| = |`globaltype*`|) - -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_4))*{var_4 <- `var_4*`, globaltype#126 <- `globaltype*`} - -- fun_allocglobals: `%%%%`(s_1, var_4*{var_4 <- `var_4*`}, val_G#2*{val_G#2 <- `val_G*`}, var_3) - -- if (|`var_2*`| = |`tagtype*`|) - -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_2))*{var_2 <- `var_2*`, tagtype#82 <- `tagtype*`} - -- fun_alloctags: `%%%`(s, var_2*{var_2 <- `var_2*`}, var_1) - -- fun_alloctypes: `%%`(type#4*{type#4 <- `type*`}, var_0) + -- fun_allocfuncs: `%%%%%`(s_6, dt#15*{dt#15 <- `dt*`}[$proj_uN_0(x#4).0]*{x#4 <- `x*`}, FUNC_funccode(x#5, local#4*{local#4 <- `local*#86`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#86` <- `local**`, x#5 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_17) + -- if (|`var_16*`| = |`elemtype*`|) + -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- `dt*`}, var_16))*{var_16 <- `var_16*`, elemtype#3 <- `elemtype*`} + -- fun_allocelems: `%%%%`(s_5, var_16*{var_16 <- `var_16*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_15) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#114`}*{`byte*#114` <- `byte**`}, var_14) + -- if (|`var_13*`| = |`tabletype*`|) + -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_13))*{var_13 <- `var_13*`, tabletype#160 <- `tabletype*`} + -- fun_alloctables: `%%%%`(s_3, var_13*{var_13 <- `var_13*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_12) + -- if (|`var_11*`| = |`memtype*`|) + -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_11))*{var_11 <- `var_11*`, memtype#126 <- `memtype*`} + -- fun_allocmems: `%%%`(s_2, var_11*{var_11 <- `var_11*`}, var_10) + -- if (|`var_9*`| = |`globaltype*`|) + -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_9))*{var_9 <- `var_9*`, globaltype#126 <- `globaltype*`} + -- fun_allocglobals: `%%%%`(s_1, var_9*{var_9 <- `var_9*`}, val_G#2*{val_G#2 <- `val_G*`}, var_8) + -- if (|`var_7*`| = |`tagtype*`|) + -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_7))*{var_7 <- `var_7*`, tagtype#82 <- `tagtype*`} + -- fun_alloctags: `%%%`(s, var_7*{var_7 <- `var_7*`}, var_6) + -- fun_alloctypes: `%%`(type#4*{type#4 <- `type*`}, var_5) + -- fun_funcsxa: `%%`(externaddr#6*{externaddr#6 <- `externaddr*`}, var_4) + -- fun_tablesxa: `%%`(externaddr#5*{externaddr#5 <- `externaddr*`}, var_3) + -- fun_memsxa: `%%`(externaddr#4*{externaddr#4 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#3*{externaddr#3 <- `externaddr*`}, var_1) + -- fun_tagsxa: `%%`(externaddr#2*{externaddr#2 <- `externaddr*`}, var_0) -- wf_store: `%`(s_7) -- wf_moduleinst: `%`(moduleinst) -- wf_store: `%`(s_1) @@ -19099,21 +18826,21 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* -- if (func#5*{func#5 <- `func*`} = FUNC_func(x#3, local#3*{local#3 <- `local*#84`}, expr_F#2)*{expr_F#2 <- `expr_F*`, `local*#84` <- `local**`, x#3 <- `x*`}) -- if (data#4*{data#4 <- `data*`} = DATA_data(byte#6*{byte#6 <- `byte*#112`}, datamode#112)*{`byte*#112` <- `byte**`, datamode#112 <- `datamode*`}) -- if (elem#6*{elem#6 <- `elem*`} = ELEM_elem(elemtype#2, expr_E#2*{expr_E#2 <- `expr_E*#2`}, elemmode#232)*{elemmode#232 <- `elemmode*`, elemtype#2 <- `elemtype*`, `expr_E*#2` <- `expr_E**`}) - -- if (aa_I#3*{aa_I#3 <- `aa_I*`} = $tagsxa(externaddr#2*{externaddr#2 <- `externaddr*`})) - -- if (ga_I#3*{ga_I#3 <- `ga_I*`} = $globalsxa(externaddr#3*{externaddr#3 <- `externaddr*`})) - -- if (ma_I#3*{ma_I#3 <- `ma_I*`} = $memsxa(externaddr#4*{externaddr#4 <- `externaddr*`})) - -- if (ta_I#3*{ta_I#3 <- `ta_I*`} = $tablesxa(externaddr#5*{externaddr#5 <- `externaddr*`})) - -- if (fa_I#3*{fa_I#3 <- `fa_I*`} = $funcsxa(externaddr#6*{externaddr#6 <- `externaddr*`})) - -- if (dt#9*{dt#9 <- `dt*`} = var_0) + -- if (aa_I#3*{aa_I#3 <- `aa_I*`} = var_0) + -- if (ga_I#3*{ga_I#3 <- `ga_I*`} = var_1) + -- if (ma_I#3*{ma_I#3 <- `ma_I*`} = var_2) + -- if (ta_I#3*{ta_I#3 <- `ta_I*`} = var_3) + -- if (fa_I#3*{fa_I#3 <- `fa_I*`} = var_4) + -- if (dt#9*{dt#9 <- `dt*`} = var_5) -- if (fa#3*{fa#3 <- `fa*`} = (|s.FUNCS_store| + i_F#1)^(i_F#1<|func#6*{func#6 <- `func*`}|){}) - -- if ((s_1, aa#3*{aa#3 <- `aa*`}) = var_1) - -- if ((s_2, ga#3*{ga#3 <- `ga*`}) = var_3) - -- if ((s_3, ma#3*{ma#3 <- `ma*`}) = var_5) - -- if ((s_4, ta#3*{ta#3 <- `ta*`}) = var_7) - -- if ((s_5, da#2*{da#2 <- `da*`}) = var_9) - -- if ((s_6, ea#2*{ea#2 <- `ea*`}) = var_10) - -- if ((s_7, fa#4*{fa#4 <- `fa*`}) = var_12) - -- if (xi#2*{xi#2 <- `xi*`} = var_13) + -- if ((s_1, aa#3*{aa#3 <- `aa*`}) = var_6) + -- if ((s_2, ga#3*{ga#3 <- `ga*`}) = var_8) + -- if ((s_3, ma#3*{ma#3 <- `ma*`}) = var_10) + -- if ((s_4, ta#3*{ta#3 <- `ta*`}) = var_12) + -- if ((s_5, da#2*{da#2 <- `da*`}) = var_14) + -- if ((s_6, ea#2*{ea#2 <- `ea*`}) = var_15) + -- if ((s_7, fa#4*{fa#4 <- `fa*`}) = var_17) + -- if (xi#2*{xi#2 <- `xi*`} = var_18) -- if (moduleinst = {TYPES dt#16*{dt#16 <- `dt*`}, TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -19221,17 +18948,21 @@ relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec relation fun_instantiate: `%%%%`(store, module, externaddr*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat, `var_7*` : instr**, `var_6*` : instr**, var_5 : (store, moduleinst), var_4 : (state, ref**), var_3 : (state, ref*), var_2 : (state, val*), var_1 : deftype*, var_0 : deftype*}: + rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat, `var_11*` : instr**, `var_10*` : instr**, var_9 : (store, moduleinst), var_8 : (state, ref**), var_7 : (state, ref*), var_6 : (state, val*), var_5 : funcaddr*, var_4 : globaladdr*, var_3 : deftype*, var_2 : funcaddr*, var_1 : globaladdr*, var_0 : deftype*}: `%%%%`(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}, `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) -- (if (i_E#2 < |elem#12*{elem#12 <- `elem*`}|))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){} - -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#12*{elem#12 <- `elem*`}[i_E#2], var_7))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_7 <- `var_7*`} + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#12*{elem#12 <- `elem*`}[i_E#2], var_11))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_11 <- `var_11*`} -- (if (i_D#2 < |data#11*{data#11 <- `data*`}|))^(i_D#2<|data#10*{data#10 <- `data*`}|){} - -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#11*{data#11 <- `data*`}[i_D#2], var_6))^(i_D#2<|data#10*{data#10 <- `data*`}|){var_6 <- `var_6*`} - -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_5) - -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_4) - -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_3) - -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_2) - -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_1) + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#11*{data#11 <- `data*`}[i_D#2], var_10))^(i_D#2<|data#10*{data#10 <- `data*`}|){var_10 <- `var_10*`} + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_9) + -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_8) + -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_7) + -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_6) + -- fun_funcsxa: `%%`(externaddr#12*{externaddr#12 <- `externaddr*`}, var_5) + -- fun_globalsxa: `%%`(externaddr#11*{externaddr#11 <- `externaddr*`}, var_4) + -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_3) + -- fun_funcsxa: `%%`(externaddr#9*{externaddr#9 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#8*{externaddr#8 <- `externaddr*`}, var_1) -- fun_alloctypes: `%%`(type#6*{type#6 <- `type*`}, var_0) -- wf_state: `%`(z) -- wf_state: `%`(z') @@ -19253,7 +18984,7 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- if (|`elemmode*`| = |`reftype*`|) -- (wf_elem: `%`(ELEM_elem(reftype#517, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)))*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#517 <- `reftype*`} -- (wf_start: `%`(START_start(x#6)))?{x#6 <- `x?`} - -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS $globalsxa(externaddr#8*{externaddr#8 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#9*{externaddr#9 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#9*{func#9 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS var_1, MEMS [], TABLES [], FUNCS var_2 ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#9*{func#9 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) -- wf_state: `%`(`%;%`_state(s''', f)) -- (wf_uN: `%%`(32, `%`_uN(i_D#1)))^(i_D#1<|data#7*{data#7 <- `data*`}|){} @@ -19268,15 +18999,15 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- if (data#9*{data#9 <- `data*`} = DATA_data(byte#9*{byte#9 <- `byte*#119`}, datamode#118)*{`byte*#119` <- `byte**`, datamode#118 <- `datamode*`}) -- if (elem#10*{elem#10 <- `elem*`} = ELEM_elem(reftype#519, expr_E#4*{expr_E#4 <- `expr_E*#4`}, elemmode#239)*{elemmode#239 <- `elemmode*`, `expr_E*#4` <- `expr_E**`, reftype#519 <- `reftype*`}) -- if (start#8?{start#8 <- `start?`} = START_start(x#8)?{x#8 <- `x?`}) - -- if (moduleinst_0 = {TYPES var_1, TAGS [], GLOBALS $globalsxa(externaddr#11*{externaddr#11 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#12*{externaddr#12 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#11*{func#11 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- if (moduleinst_0 = {TYPES var_3, TAGS [], GLOBALS var_4, MEMS [], TABLES [], FUNCS var_5 ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#11*{func#11 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G#4*{val_G#4 <- `val_G*`}) = var_2) - -- if ((z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = var_3) - -- if ((z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = var_4) + -- if ((z', val_G#4*{val_G#4 <- `val_G*`}) = var_6) + -- if ((z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = var_7) + -- if ((z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = var_8) -- if (z''' = `%;%`_state(s''', f)) - -- if ((s'''', moduleinst) = var_5) - -- if (instr_D#2*{instr_D#2 <- `instr_D*`} = $concat_(syntax instr, var_6^(i_D#2<|data#10*{data#10 <- `data*`}|){var_6 <- `var_6*`})) - -- if (instr_E#2*{instr_E#2 <- `instr_E*`} = $concat_(syntax instr, var_7^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_7 <- `var_7*`})) + -- if ((s'''', moduleinst) = var_9) + -- if (instr_D#2*{instr_D#2 <- `instr_D*`} = $concat_(syntax instr, var_10^(i_D#2<|data#10*{data#10 <- `data*`}|){var_10 <- `var_10*`})) + -- if (instr_E#2*{instr_E#2 <- `instr_E*`} = $concat_(syntax instr, var_11^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_11 <- `var_11*`})) -- if (instr_S#2?{instr_S#2 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -19501,156 +19232,240 @@ relation wf_decl: `%`(decl) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:271.1-271.48 - def $typesd{rectype : rectype, `decl'*` : decl*}([TYPE_decl(rectype)] ++ decl'#1*{decl'#1 <- `decl'*`}) = [TYPE_type(rectype)] ++ $typesd(decl'#2*{decl'#2 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#3*{decl'#3 <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 +relation fun_typesd: `%%`(decl*, type*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_1{rectype : rectype, `decl'*` : decl*, var_0 : type*}: + `%%`([TYPE_decl(rectype)] ++ decl'#1*{decl'#1 <- `decl'*`}, [TYPE_type(rectype)] ++ var_0) + -- fun_typesd: `%%`(decl'#2*{decl'#2 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_2{decl : decl, `decl'*` : decl*, var_0 : type*}: + `%%`([decl] ++ decl'#3*{decl'#3 <- `decl'*`}, var_0) + -- fun_typesd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:275.1-275.56 - def $importsd{name : name, name_0 : name, externtype : externtype, `decl'*` : decl*}([IMPORT_decl(name, name_0, externtype)] ++ decl'#4*{decl'#4 <- `decl'*`}) = [IMPORT_import(name, name_0, externtype)] ++ $importsd(decl'#5*{decl'#5 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#6*{decl'#6 <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation fun_importsd: `%%`(decl*, import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_1{name : name, name_0 : name, externtype : externtype, `decl'*` : decl*, var_0 : import*}: + `%%`([IMPORT_decl(name, name_0, externtype)] ++ decl'#4*{decl'#4 <- `decl'*`}, [IMPORT_import(name, name_0, externtype)] ++ var_0) + -- fun_importsd: `%%`(decl'#5*{decl'#5 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_2{decl : decl, `decl'*` : decl*, var_0 : import*}: + `%%`([decl] ++ decl'#6*{decl'#6 <- `decl'*`}, var_0) + -- fun_importsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:279.1-279.44 - def $tagsd{tagtype : tagtype, `decl'*` : decl*}([TAG_decl(tagtype)] ++ decl'#7*{decl'#7 <- `decl'*`}) = [TAG_tag(tagtype)] ++ $tagsd(decl'#8*{decl'#8 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#9*{decl'#9 <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation fun_tagsd: `%%`(decl*, tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_1{tagtype : tagtype, `decl'*` : decl*, var_0 : tag*}: + `%%`([TAG_decl(tagtype)] ++ decl'#7*{decl'#7 <- `decl'*`}, [TAG_tag(tagtype)] ++ var_0) + -- fun_tagsd: `%%`(decl'#8*{decl'#8 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_2{decl : decl, `decl'*` : decl*, var_0 : tag*}: + `%%`([decl] ++ decl'#9*{decl'#9 <- `decl'*`}, var_0) + -- fun_tagsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:283.1-283.56 - def $globalsd{globaltype : globaltype, expr : expr, `decl'*` : decl*}([GLOBAL_decl(globaltype, expr)] ++ decl'#10*{decl'#10 <- `decl'*`}) = [GLOBAL_global(globaltype, expr)] ++ $globalsd(decl'#11*{decl'#11 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#12*{decl'#12 <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation fun_globalsd: `%%`(decl*, global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_1{globaltype : globaltype, expr : expr, `decl'*` : decl*, var_0 : global*}: + `%%`([GLOBAL_decl(globaltype, expr)] ++ decl'#10*{decl'#10 <- `decl'*`}, [GLOBAL_global(globaltype, expr)] ++ var_0) + -- fun_globalsd: `%%`(decl'#11*{decl'#11 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_2{decl : decl, `decl'*` : decl*, var_0 : global*}: + `%%`([decl] ++ decl'#12*{decl'#12 <- `decl'*`}, var_0) + -- fun_globalsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:287.1-287.44 - def $memsd{memtype : memtype, `decl'*` : decl*}([MEMORY_decl(memtype)] ++ decl'#13*{decl'#13 <- `decl'*`}) = [MEMORY_mem(memtype)] ++ $memsd(decl'#14*{decl'#14 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#15*{decl'#15 <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation fun_memsd: `%%`(decl*, mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_1{memtype : memtype, `decl'*` : decl*, var_0 : mem*}: + `%%`([MEMORY_decl(memtype)] ++ decl'#13*{decl'#13 <- `decl'*`}, [MEMORY_mem(memtype)] ++ var_0) + -- fun_memsd: `%%`(decl'#14*{decl'#14 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_2{decl : decl, `decl'*` : decl*, var_0 : mem*}: + `%%`([decl] ++ decl'#15*{decl'#15 <- `decl'*`}, var_0) + -- fun_memsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:291.1-291.52 - def $tablesd{tabletype : tabletype, expr : expr, `decl'*` : decl*}([TABLE_decl(tabletype, expr)] ++ decl'#16*{decl'#16 <- `decl'*`}) = [TABLE_table(tabletype, expr)] ++ $tablesd(decl'#17*{decl'#17 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#18*{decl'#18 <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation fun_tablesd: `%%`(decl*, table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_1{tabletype : tabletype, expr : expr, `decl'*` : decl*, var_0 : table*}: + `%%`([TABLE_decl(tabletype, expr)] ++ decl'#16*{decl'#16 <- `decl'*`}, [TABLE_table(tabletype, expr)] ++ var_0) + -- fun_tablesd: `%%`(decl'#17*{decl'#17 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_2{decl : decl, `decl'*` : decl*, var_0 : table*}: + `%%`([decl] ++ decl'#18*{decl'#18 <- `decl'*`}, var_0) + -- fun_tablesd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:295.1-295.48 - def $funcsd{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*}([FUNC_decl(typeidx, `local*`, expr)] ++ decl'#19*{decl'#19 <- `decl'*`}) = [FUNC_func(typeidx, `local*`, expr)] ++ $funcsd(decl'#20*{decl'#20 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#21*{decl'#21 <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation fun_funcsd: `%%`(decl*, func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_1{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*, var_0 : func*}: + `%%`([FUNC_decl(typeidx, `local*`, expr)] ++ decl'#19*{decl'#19 <- `decl'*`}, [FUNC_func(typeidx, `local*`, expr)] ++ var_0) + -- fun_funcsd: `%%`(decl'#20*{decl'#20 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_2{decl : decl, `decl'*` : decl*, var_0 : func*}: + `%%`([decl] ++ decl'#21*{decl'#21 <- `decl'*`}, var_0) + -- fun_funcsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:299.1-299.48 - def $datasd{`byte*` : byte*, datamode : datamode, `decl'*` : decl*}([DATA_decl(`byte*`, datamode)] ++ decl'#22*{decl'#22 <- `decl'*`}) = [DATA_data(`byte*`, datamode)] ++ $datasd(decl'#23*{decl'#23 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#24*{decl'#24 <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation fun_datasd: `%%`(decl*, data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_1{`byte*` : byte*, datamode : datamode, `decl'*` : decl*, var_0 : data*}: + `%%`([DATA_decl(`byte*`, datamode)] ++ decl'#22*{decl'#22 <- `decl'*`}, [DATA_data(`byte*`, datamode)] ++ var_0) + -- fun_datasd: `%%`(decl'#23*{decl'#23 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_2{decl : decl, `decl'*` : decl*, var_0 : data*}: + `%%`([decl] ++ decl'#24*{decl'#24 <- `decl'*`}, var_0) + -- fun_datasd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:303.1-303.48 - def $elemsd{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*}([ELEM_decl(reftype, `expr*`, elemmode)] ++ decl'#25*{decl'#25 <- `decl'*`}) = [ELEM_elem(reftype, `expr*`, elemmode)] ++ $elemsd(decl'#26*{decl'#26 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#27*{decl'#27 <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation fun_elemsd: `%%`(decl*, elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_1{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*, var_0 : elem*}: + `%%`([ELEM_decl(reftype, `expr*`, elemmode)] ++ decl'#25*{decl'#25 <- `decl'*`}, [ELEM_elem(reftype, `expr*`, elemmode)] ++ var_0) + -- fun_elemsd: `%%`(decl'#26*{decl'#26 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_2{decl : decl, `decl'*` : decl*, var_0 : elem*}: + `%%`([decl] ++ decl'#27*{decl'#27 <- `decl'*`}, var_0) + -- fun_elemsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:307.1-307.52 - def $startsd{funcidx : funcidx, `decl'*` : decl*}([START_decl(funcidx)] ++ decl'#28*{decl'#28 <- `decl'*`}) = [START_start(funcidx)] ++ $startsd(decl'#29*{decl'#29 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#30*{decl'#30 <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation fun_startsd: `%%`(decl*, start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_1{funcidx : funcidx, `decl'*` : decl*, var_0 : start*}: + `%%`([START_decl(funcidx)] ++ decl'#28*{decl'#28 <- `decl'*`}, [START_start(funcidx)] ++ var_0) + -- fun_startsd: `%%`(decl'#29*{decl'#29 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_2{decl : decl, `decl'*` : decl*, var_0 : start*}: + `%%`([decl] ++ decl'#30*{decl'#30 <- `decl'*`}, var_0) + -- fun_startsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:311.1-311.56 - def $exportsd{name : name, externidx : externidx, `decl'*` : decl*}([EXPORT_decl(name, externidx)] ++ decl'#31*{decl'#31 <- `decl'*`}) = [EXPORT_export(name, externidx)] ++ $exportsd(decl'#32*{decl'#32 <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#33*{decl'#33 <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation fun_exportsd: `%%`(decl*, export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_1{name : name, externidx : externidx, `decl'*` : decl*, var_0 : export*}: + `%%`([EXPORT_decl(name, externidx)] ++ decl'#31*{decl'#31 <- `decl'*`}, [EXPORT_export(name, externidx)] ++ var_0) + -- fun_exportsd: `%%`(decl'#32*{decl'#32 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_2{decl : decl, `decl'*` : decl*, var_0 : export*}: + `%%`([decl] ++ decl'#33*{decl'#33 <- `decl'*`}, var_0) + -- fun_exportsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec relation fun_ordered: `%%`(decl*, bool) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - rule fun_ordered_case_0{`decl*` : decl*}: + rule fun_ordered_case_0{`decl*` : decl*, var_0 : import*}: `%%`(decl#1*{decl#1 <- `decl*`}, true) - -- if ($importsd(decl#2*{decl#2 <- `decl*`}) = []) + -- fun_importsd: `%%`(decl#2*{decl#2 <- `decl*`}, var_0) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - rule fun_ordered_case_1{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*}: - `%%`(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}, (((((($importsd(decl_1#7*{decl_1#7 <- `decl_1*`}) = []) /\ ($tagsd(decl_1#6*{decl_1#6 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1#5*{decl_1#5 <- `decl_1*`}) = [])) /\ ($memsd(decl_1#4*{decl_1#4 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1#3*{decl_1#3 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1#2*{decl_1#2 <- `decl_1*`}) = []))) + rule fun_ordered_case_1{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*, var_5 : func*, var_4 : table*, var_3 : mem*, var_2 : global*, var_1 : tag*, var_0 : import*}: + `%%`(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}, ((((((var_0 = []) /\ (var_1 = [])) /\ (var_2 = [])) /\ (var_3 = [])) /\ (var_4 = [])) /\ (var_5 = []))) + -- fun_funcsd: `%%`(decl_1#2*{decl_1#2 <- `decl_1*`}, var_5) + -- fun_tablesd: `%%`(decl_1#3*{decl_1#3 <- `decl_1*`}, var_4) + -- fun_memsd: `%%`(decl_1#4*{decl_1#4 <- `decl_1*`}, var_3) + -- fun_globalsd: `%%`(decl_1#5*{decl_1#5 <- `decl_1*`}, var_2) + -- fun_tagsd: `%%`(decl_1#6*{decl_1#6 <- `decl_1*`}, var_1) + -- fun_importsd: `%%`(decl_1#7*{decl_1#7 <- `decl_1*`}, var_0) ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context) @@ -22446,12 +22261,10 @@ grammar TfNmag(N : N) : fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod "inf" => INF_fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{var_0 : m} "nan" => NAN_fNmag(var_0) - -- fun_canon_: `%%`(N, var_0) + prod "nan" => NAN_fNmag($canon_(N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n, var_0 : nat?} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) - -- if ((1 <= n) /\ (n < (2 ^ !(var_0)))) - -- fun_signif: `%%`(N, var_0) + prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + -- if ((1 <= n) /\ (n < (2 ^ !($signif(N))))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TfN(N : N) : fN @@ -24071,22 +23884,33 @@ grammar Tdecl_(I : I) : (decl, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmodule : module ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I, var_1 : bool, var_0 : idctxt} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I, var_12 : bool, var_11 : export*, var_10 : start*, var_9 : elem*, var_8 : data*, var_7 : func*, var_6 : table*, var_5 : mem*, var_4 : global*, var_3 : tag*, var_2 : import*, var_1 : type*, var_0 : idctxt} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) -- if (I' = var_0) -- Idctxt_ok: `|-%:OK`(I') - -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) - -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) - -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) - -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) - -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) - -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) - -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) - -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) - -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) - -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) - -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if var_1 - -- fun_ordered: `%%`(decl*{decl <- `decl*`}, var_1) + -- if (type*{type <- `type*`} = var_1) + -- if (import*{import <- `import*`} = var_2) + -- if (tag*{tag <- `tag*`} = var_3) + -- if (global*{global <- `global*`} = var_4) + -- if (mem*{mem <- `mem*`} = var_5) + -- if (table*{table <- `table*`} = var_6) + -- if (func*{func <- `func*`} = var_7) + -- if (data*{data <- `data*`} = var_8) + -- if (elem*{elem <- `elem*`} = var_9) + -- if (lift(start?{start <- `start?`}) = var_10) + -- if (export*{export <- `export*`} = var_11) + -- if var_12 + -- fun_ordered: `%%`(decl*{decl <- `decl*`}, var_12) + -- fun_exportsd: `%%`(decl*{decl <- `decl*`}, var_11) + -- fun_startsd: `%%`(decl*{decl <- `decl*`}, var_10) + -- fun_elemsd: `%%`(decl*{decl <- `decl*`}, var_9) + -- fun_datasd: `%%`(decl*{decl <- `decl*`}, var_8) + -- fun_funcsd: `%%`(decl*{decl <- `decl*`}, var_7) + -- fun_tablesd: `%%`(decl*{decl <- `decl*`}, var_6) + -- fun_memsd: `%%`(decl*{decl <- `decl*`}, var_5) + -- fun_globalsd: `%%`(decl*{decl <- `decl*`}, var_4) + -- fun_tagsd: `%%`(decl*{decl <- `decl*`}, var_3) + -- fun_importsd: `%%`(decl*{decl <- `decl*`}, var_2) + -- fun_typesd: `%%`(decl*{decl <- `decl*`}, var_1) -- fun_concat_idctxt: `%%`(I*{I <- `I*`}, var_0) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec diff --git a/spectec/test-middlend/specification.exp/12-improve-ids.il b/spectec/test-middlend/specification.exp/12-improve-ids.il index 950ef0df88..a73494eee4 100644 --- a/spectec/test-middlend/specification.exp/12-improve-ids.il +++ b/spectec/test-middlend/specification.exp/12-improve-ids.il @@ -22,23 +22,31 @@ def $min(nat : nat, nat_0 : nat) : nat ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 -def $sum(var_0 : nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 - def $sum([]) = 0 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 - def $sum{v_n : nat, n'_lst : n*}([v_n] ++ n'_lst) = (v_n + $sum(n'_lst)) +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 +relation fun_sum: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_0: + `%%`([], 0) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_1{v_n : nat, n'_lst : n*, var_0 : nat}: + `%%`([v_n] ++ n'_lst, (v_n + var_0)) + -- fun_sum: `%%`(n'_lst, var_0) } ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 -def $prod(var_0 : nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 - def $prod([]) = 1 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 - def $prod{v_n : nat, n'_lst : n*}([v_n] ++ n'_lst) = (v_n * $prod(n'_lst)) +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 +relation fun_prod: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_0: + `%%`([], 1) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_1{v_n : nat, n'_lst : n*, var_0 : nat}: + `%%`([v_n] ++ n'_lst, (v_n * var_0)) + -- fun_prod: `%%`(n'_lst, var_0) } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec @@ -244,70 +252,32 @@ syntax i64 = iN syntax i128 = iN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_signif_before_fun_signif_case_2: `%`(N) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_1: - `%`(64) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_0: - `%`(32) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_signif: `%%`(N, nat?) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_0: - `%%`(32, ?(23)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_1: - `%%`(64, ?(52)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_signif_case_2{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_signif_before_fun_signif_case_2: `%`(x0) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_expon_before_fun_expon_case_2: `%`(N) +def $signif(v_N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_1: - `%`(64) - + def $signif(32) = ?(23) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_0: - `%`(32) + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_expon: `%%`(N, nat?) +def $expon(v_N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_0: - `%%`(32, ?(8)) - + def $expon(32) = ?(8) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_1: - `%%`(64, ?(11)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_expon_case_2{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_expon_before_fun_expon_case_2: `%`(x0) + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_M: `%%`(N, nat) +def $fun_M(v_N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_M_case_0{v_N : nat, var_0 : nat?}: - `%%`(v_N, !(var_0)) - -- if (var_0 =/= ?()) - -- fun_signif: `%%`(v_N, var_0) + def $fun_M{v_N : nat}(v_N) = !($signif(v_N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_E: `%%`(N, nat) +def $E(v_N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_E_case_0{v_N : nat, var_0 : nat?}: - `%%`(v_N, !(var_0)) - -- if (var_0 =/= ?()) - -- fun_expon: `%%`(v_N, var_0) + def $E{v_N : nat}(v_N) = !($expon(v_N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax exp = int @@ -322,28 +292,23 @@ syntax fNmag = ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_fNmag: `%%`(N, fNmag) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_0{v_N : N, v_m : m, v_exp : exp, var_1 : nat, var_0 : nat}: + rule fNmag_case_0{v_N : N, v_m : m, v_exp : exp}: `%%`(v_N, NORM_fNmag(v_m, v_exp)) - -- if ((v_m < (2 ^ var_0)) /\ ((((2 : nat <:> int) - ((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= v_exp) /\ (v_exp <= (((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) - -- fun_E: `%%`(v_N, var_1) - -- fun_M: `%%`(v_N, var_0) + -- if ((v_m < (2 ^ $fun_M(v_N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(v_N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= v_exp) /\ (v_exp <= (((2 ^ ((($E(v_N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_1{v_N : N, v_exp : exp, v_m : m, var_1 : nat, var_0 : nat}: + rule fNmag_case_1{v_N : N, v_exp : exp, v_m : m}: `%%`(v_N, SUBNORM_fNmag(v_m)) - -- if ((v_m < (2 ^ var_0)) /\ (((2 : nat <:> int) - ((2 ^ (((var_1 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = v_exp)) - -- fun_E: `%%`(v_N, var_1) - -- fun_M: `%%`(v_N, var_0) + -- if ((v_m < (2 ^ $fun_M(v_N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(v_N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = v_exp)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rule fNmag_case_2{v_N : N}: `%%`(v_N, INF_fNmag) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_3{v_N : N, v_m : m, var_0 : nat}: + rule fNmag_case_3{v_N : N, v_m : m}: `%%`(v_N, NAN_fNmag(v_m)) - -- if ((1 <= v_m) /\ (v_m < (2 ^ var_0))) - -- fun_M: `%%`(v_N, var_0) + -- if ((1 <= v_m) /\ (v_m < (2 ^ $fun_M(v_N)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax fN = @@ -390,12 +355,9 @@ relation fun_fone: `%%`(N, fN) -- wf_fN: `%%`(v_N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation fun_canon_: `%%`(N, nat) +def $canon_(v_N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fun_canon__case_0{v_N : nat, var_0 : nat?}: - `%%`(v_N, (2 ^ (((!(var_0) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) - -- if (var_0 =/= ?()) - -- fun_signif: `%%`(v_N, var_0) + def $canon_{v_N : nat}(v_N) = (2 ^ (((!($signif(v_N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax vN = uN @@ -584,66 +546,101 @@ relation wf_externidx: `%`(externidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 -def $funcsxx(var_0 : externidx*) : typeidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 - def $funcsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 - def $funcsxx{x : uN, xx_lst : externidx*}([FUNC_externidx(x)] ++ xx_lst) = [x] ++ $funcsxx(xx_lst) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 - def $funcsxx{v_externidx : externidx, xx_lst : externidx*}([v_externidx] ++ xx_lst) = $funcsxx(xx_lst) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 +relation fun_funcsxx: `%%`(externidx*, typeidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_1{x : uN, xx_lst : externidx*, var_0 : typeidx*}: + `%%`([FUNC_externidx(x)] ++ xx_lst, [x] ++ var_0) + -- fun_funcsxx: `%%`(xx_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_2{v_externidx : externidx, xx_lst : externidx*, var_0 : typeidx*}: + `%%`([v_externidx] ++ xx_lst, var_0) + -- fun_funcsxx: `%%`(xx_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 -def $globalsxx(var_0 : externidx*) : globalidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 - def $globalsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 - def $globalsxx{x : uN, xx_lst : externidx*}([GLOBAL_externidx(x)] ++ xx_lst) = [x] ++ $globalsxx(xx_lst) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 - def $globalsxx{v_externidx : externidx, xx_lst : externidx*}([v_externidx] ++ xx_lst) = $globalsxx(xx_lst) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 +relation fun_globalsxx: `%%`(externidx*, globalidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_1{x : uN, xx_lst : externidx*, var_0 : globalidx*}: + `%%`([GLOBAL_externidx(x)] ++ xx_lst, [x] ++ var_0) + -- fun_globalsxx: `%%`(xx_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_2{v_externidx : externidx, xx_lst : externidx*, var_0 : globalidx*}: + `%%`([v_externidx] ++ xx_lst, var_0) + -- fun_globalsxx: `%%`(xx_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 -def $tablesxx(var_0 : externidx*) : tableidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 - def $tablesxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 - def $tablesxx{x : uN, xx_lst : externidx*}([TABLE_externidx(x)] ++ xx_lst) = [x] ++ $tablesxx(xx_lst) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 - def $tablesxx{v_externidx : externidx, xx_lst : externidx*}([v_externidx] ++ xx_lst) = $tablesxx(xx_lst) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 +relation fun_tablesxx: `%%`(externidx*, tableidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_1{x : uN, xx_lst : externidx*, var_0 : tableidx*}: + `%%`([TABLE_externidx(x)] ++ xx_lst, [x] ++ var_0) + -- fun_tablesxx: `%%`(xx_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_2{v_externidx : externidx, xx_lst : externidx*, var_0 : tableidx*}: + `%%`([v_externidx] ++ xx_lst, var_0) + -- fun_tablesxx: `%%`(xx_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 -def $memsxx(var_0 : externidx*) : memidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 - def $memsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 - def $memsxx{x : uN, xx_lst : externidx*}([MEM_externidx(x)] ++ xx_lst) = [x] ++ $memsxx(xx_lst) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 - def $memsxx{v_externidx : externidx, xx_lst : externidx*}([v_externidx] ++ xx_lst) = $memsxx(xx_lst) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 +relation fun_memsxx: `%%`(externidx*, memidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_1{x : uN, xx_lst : externidx*, var_0 : memidx*}: + `%%`([MEM_externidx(x)] ++ xx_lst, [x] ++ var_0) + -- fun_memsxx: `%%`(xx_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_2{v_externidx : externidx, xx_lst : externidx*, var_0 : memidx*}: + `%%`([v_externidx] ++ xx_lst, var_0) + -- fun_memsxx: `%%`(xx_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 -def $tagsxx(var_0 : externidx*) : tagidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 - def $tagsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 - def $tagsxx{x : uN, xx_lst : externidx*}([TAG_externidx(x)] ++ xx_lst) = [x] ++ $tagsxx(xx_lst) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 - def $tagsxx{v_externidx : externidx, xx_lst : externidx*}([v_externidx] ++ xx_lst) = $tagsxx(xx_lst) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 +relation fun_tagsxx: `%%`(externidx*, tagidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_1{x : uN, xx_lst : externidx*, var_0 : tagidx*}: + `%%`([TAG_externidx(x)] ++ xx_lst, [x] ++ var_0) + -- fun_tagsxx: `%%`(xx_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_2{v_externidx : externidx, xx_lst : externidx*, var_0 : tagidx*}: + `%%`([v_externidx] ++ xx_lst, var_0) + -- fun_tagsxx: `%%`(xx_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -1495,95 +1492,35 @@ relation wf_moduletype: `%`(moduletype) -- (wf_externtype: `%`(externtype_lst_0))*{externtype_lst_0 <- externtype_lst_0} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_IN_before_fun_IN_case_2: `%`(N) +def $IN(v_N : N) : Inn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_1: - `%`(64) - + def $IN(32) = ?(I32_Inn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_0: - `%`(32) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_IN: `%%`(N, Inn?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_0: - `%%`(32, ?(I32_Inn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_1: - `%%`(64, ?(I64_Inn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_IN_case_2{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_IN_before_fun_IN_case_2: `%`(x0) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_FN_before_fun_FN_case_2: `%`(N) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_1: - `%`(64) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_0: - `%`(32) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_FN: `%%`(N, Fnn?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_0: - `%%`(32, ?(F32_Fnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_1: - `%%`(64, ?(F64_Fnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_FN_case_2{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_FN_before_fun_FN_case_2: `%`(x0) + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_JN_before_fun_JN_case_4: `%`(N) +def $FN(v_N : N) : Fnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_3: - `%`(64) - + def $FN(32) = ?(F32_Fnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_2: - `%`(32) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_1: - `%`(16) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_0: - `%`(8) + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_JN: `%%`(N, Jnn?) +def $JN(v_N : N) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_0: - `%%`(8, ?(I8_Jnn)) - + def $JN(8) = ?(I8_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_1: - `%%`(16, ?(I16_Jnn)) - + def $JN(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_2: - `%%`(32, ?(I32_Jnn)) - + def $JN(32) = ?(I32_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_3: - `%%`(64, ?(I64_Jnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_JN_case_4{x0 : N}: - `%%`(x0, ?()) - -- ~ fun_JN_before_fun_JN_case_4: `%`(x0) + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $size(v_numtype : numtype) : nat @@ -1624,69 +1561,23 @@ def $lsize(v_lanetype : lanetype) : nat def $lsize(I16_lanetype) = $psize(I16_packtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_zsize_before_fun_zsize_case_7: `%`(storagetype) +def $zsize(v_storagetype : storagetype) : nat? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_6: - `%`(I16_storagetype) - + def $zsize(I32_storagetype) = ?($size(I32_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_5: - `%`(I8_storagetype) - + def $zsize(I64_storagetype) = ?($size(I64_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_4: - `%`(V128_storagetype) - + def $zsize(F32_storagetype) = ?($size(F32_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_3: - `%`(F64_storagetype) - + def $zsize(F64_storagetype) = ?($size(F64_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_2: - `%`(F32_storagetype) - + def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_1: - `%`(I64_storagetype) - + def $zsize(I8_storagetype) = ?($psize(I8_packtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_0: - `%`(I32_storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_zsize: `%%`(storagetype, nat?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_0: - `%%`(I32_storagetype, ?($size(I32_numtype))) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_1: - `%%`(I64_storagetype, ?($size(I64_numtype))) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_2: - `%%`(F32_storagetype, ?($size(F32_numtype))) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_3: - `%%`(F64_storagetype, ?($size(F64_numtype))) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_4: - `%%`(V128_storagetype, ?($vsize(V128_vectype))) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_5: - `%%`(I8_storagetype, ?($psize(I8_packtype))) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_6: - `%%`(I16_storagetype, ?($psize(I16_packtype))) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_zsize_case_7{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_zsize_before_fun_zsize_case_7: `%`(x0) + def $zsize(I16_storagetype) = ?($psize(I16_packtype)) + def $zsize{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $isize(v_Inn : Inn) : nat @@ -1704,69 +1595,31 @@ def $fsize(v_Fnn : Fnn) : nat def $fsize{v_Fnn : Fnn}(v_Fnn) = $size($numtype_Fnn(v_Fnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_isize_before_fun_inv_isize_case_2: `%`(nat) +def $inv_isize(nat : nat) : Inn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_1: - `%`(64) - + def $inv_isize(32) = ?(I32_Inn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_0: - `%`(32) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_isize: `%%`(nat, Inn?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_0: - `%%`(32, ?(I32_Inn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_1: - `%%`(64, ?(I64_Inn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_isize_case_2{x0 : nat}: - `%%`(x0, ?()) - -- ~ fun_inv_isize_before_fun_inv_isize_case_2: `%`(x0) + def $inv_isize(64) = ?(I64_Inn) + def $inv_isize{x0 : nat}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_jsize: `%%`(nat, Jnn?) +def $inv_jsize(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_jsize_case_0: - `%%`(8, ?(I8_Jnn)) - + def $inv_jsize(8) = ?(I8_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_jsize_case_1: - `%%`(16, ?(I16_Jnn)) - + def $inv_jsize(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_jsize_case_2{v_n : nat, var_0 : Inn?}: - `%%`(v_n, $Jnn_addrtype(iter_val#1)?{iter_val#1 <- var_0}) - -- fun_inv_isize: `%%`(v_n, var_0) + def $inv_jsize{v_n : nat}(v_n) = $Jnn_addrtype(iter_val#1)?{iter_val#1 <- $inv_isize(v_n)} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_fsize_before_fun_inv_fsize_case_2: `%`(nat) +def $inv_fsize(nat : nat) : Fnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_1: - `%`(64) - + def $inv_fsize(32) = ?(F32_Fnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_0: - `%`(32) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_fsize: `%%`(nat, Fnn?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_0: - `%%`(32, ?(F32_Fnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_1: - `%%`(64, ?(F64_Fnn)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_fsize_case_2{x0 : nat}: - `%%`(x0, ?()) - -- ~ fun_inv_fsize_before_fun_inv_fsize_case_2: `%`(x0) + def $inv_fsize(64) = ?(F64_Fnn) + def $inv_fsize{x0 : nat}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $sizenn(v_numtype : numtype) : nat @@ -1814,11 +1667,9 @@ def $jsizenn(v_Jnn : Jnn) : nat def $jsizenn{v_Jnn : Jnn}(v_Jnn) = $lsize($lanetype_Jnn(v_Jnn)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_inv_jsizenn: `%%`(nat, Jnn?) +def $inv_jsizenn(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_inv_jsizenn_case_0{v_n : nat, var_0 : Jnn?}: - `%%`(v_n, var_0) - -- fun_inv_jsize: `%%`(v_n, var_0) + def $inv_jsizenn{v_n : nat}(v_n) = $inv_jsize(v_n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $lunpack(v_lanetype : lanetype) : numtype @@ -1876,191 +1727,59 @@ relation fun_unpack: `%%`(storagetype, valtype) -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_nunpack_before_fun_nunpack_case_6: `%`(storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_5: - `%`(I16_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_4: - `%`(I8_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_3: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_2: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_1: - `%`(I64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_0: - `%`(I32_storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_nunpack: `%%`(storagetype, numtype?) +def $nunpack(v_storagetype : storagetype) : numtype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_0: - `%%`(I32_storagetype, ?(I32_numtype)) - + def $nunpack(I32_storagetype) = ?(I32_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_1: - `%%`(I64_storagetype, ?(I64_numtype)) - + def $nunpack(I64_storagetype) = ?(I64_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_2: - `%%`(F32_storagetype, ?(F32_numtype)) - + def $nunpack(F32_storagetype) = ?(F32_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_3: - `%%`(F64_storagetype, ?(F64_numtype)) - + def $nunpack(F64_storagetype) = ?(F64_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_4: - `%%`(I8_storagetype, ?(I32_numtype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_5: - `%%`(I16_storagetype, ?(I32_numtype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_nunpack_case_6{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_nunpack_before_fun_nunpack_case_6: `%`(x0) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_vunpack_before_fun_vunpack_case_1: `%`(storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_vunpack_case_0: - `%`(V128_storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_vunpack: `%%`(storagetype, vectype?) + def $nunpack(I8_storagetype) = ?(I32_numtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_vunpack_case_0: - `%%`(V128_storagetype, ?(V128_vectype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_vunpack_case_1{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_vunpack_before_fun_vunpack_case_1: `%`(x0) + def $nunpack(I16_storagetype) = ?(I32_numtype) + def $nunpack{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_cunpack_before_fun_cunpack_case_13: `%`(storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_12: - `%`(I16_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_11: - `%`(I8_storagetype) - +def $vunpack(v_storagetype : storagetype) : vectype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_10: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_9: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_8: - `%`(I64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_7: - `%`(I32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_6: - `%`(I16_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_5: - `%`(I8_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_4: - `%`(V128_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_3: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_2: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_1: - `%`(I64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_0: - `%`(I32_storagetype) + def $vunpack(V128_storagetype) = ?(V128_vectype) + def $vunpack{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_cunpack: `%%`(storagetype, consttype?) +def $cunpack(v_storagetype : storagetype) : consttype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_0: - `%%`(I32_storagetype, ?(I32_consttype)) - + def $cunpack(I32_storagetype) = ?(I32_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_1: - `%%`(I64_storagetype, ?(I64_consttype)) - + def $cunpack(I64_storagetype) = ?(I64_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_2: - `%%`(F32_storagetype, ?(F32_consttype)) - + def $cunpack(F32_storagetype) = ?(F32_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_3: - `%%`(F64_storagetype, ?(F64_consttype)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_4: - `%%`(V128_storagetype, ?(V128_consttype)) - + def $cunpack(F64_storagetype) = ?(F64_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_5: - `%%`(I8_storagetype, ?(I32_consttype)) - + def $cunpack(V128_storagetype) = ?(V128_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_6: - `%%`(I16_storagetype, ?(I32_consttype)) - + def $cunpack(I8_storagetype) = ?(I32_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_7: - `%%`(I32_storagetype, ?($consttype_numtype($lunpack(I32_lanetype)))) - + def $cunpack(I16_storagetype) = ?(I32_consttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_8: - `%%`(I64_storagetype, ?($consttype_numtype($lunpack(I64_lanetype)))) - + def $cunpack(I32_storagetype) = ?($consttype_numtype($lunpack(I32_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_9: - `%%`(F32_storagetype, ?($consttype_numtype($lunpack(F32_lanetype)))) - + def $cunpack(I64_storagetype) = ?($consttype_numtype($lunpack(I64_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_10: - `%%`(F64_storagetype, ?($consttype_numtype($lunpack(F64_lanetype)))) - + def $cunpack(F32_storagetype) = ?($consttype_numtype($lunpack(F32_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_11: - `%%`(I8_storagetype, ?($consttype_numtype($lunpack(I8_lanetype)))) - + def $cunpack(F64_storagetype) = ?($consttype_numtype($lunpack(F64_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_12: - `%%`(I16_storagetype, ?($consttype_numtype($lunpack(I16_lanetype)))) - + def $cunpack(I8_storagetype) = ?($consttype_numtype($lunpack(I8_lanetype))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_cunpack_case_13{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_cunpack_before_fun_cunpack_case_13: `%`(x0) + def $cunpack(I16_storagetype) = ?($consttype_numtype($lunpack(I16_lanetype))) + def $cunpack{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $minat(v_addrtype : addrtype, v_addrtype_0 : addrtype) : addrtype @@ -2080,85 +1799,110 @@ relation fun_diffrt: `%%%`(reftype, reftype, reftype) -- wf_reftype: `%`(REF_reftype(null_1_opt, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_as_deftype_before_fun_as_deftype_case_1: `%`(typeuse) +def $as_deftype(v_typeuse : typeuse) : deftype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_as_deftype_case_0{v_rectype : rectype, v_n : n}: - `%`(_DEF_typeuse(v_rectype, v_n)) + def $as_deftype{v_rectype : rectype, v_n : n}(_DEF_typeuse(v_rectype, v_n)) = ?(_DEF_deftype(v_rectype, v_n)) + def $as_deftype{x0 : typeuse}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation fun_as_deftype: `%%`(typeuse, deftype?) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_as_deftype_case_0{v_rectype : rectype, v_n : n}: - `%%`(_DEF_typeuse(v_rectype, v_n), ?(_DEF_deftype(v_rectype, v_n))) +rec { - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule fun_as_deftype_case_1{x0 : typeuse}: - `%%`(x0, ?()) - -- ~ fun_as_deftype_before_fun_as_deftype_case_1: `%`(x0) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 +relation fun_tagsxt: `%%`(externtype*, tagtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_0: + `%%`([], []) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_1{jt : typeuse, xt_lst : externtype*, var_0 : tagtype*}: + `%%`([TAG_externtype(jt)] ++ xt_lst, [jt] ++ var_0) + -- fun_tagsxt: `%%`(xt_lst, var_0) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 -def $tagsxt(var_0 : externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 - def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 - def $tagsxt{jt : typeuse, xt_lst : externtype*}([TAG_externtype(jt)] ++ xt_lst) = [jt] ++ $tagsxt(xt_lst) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 - def $tagsxt{v_externtype : externtype, xt_lst : externtype*}([v_externtype] ++ xt_lst) = $tagsxt(xt_lst) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_2{v_externtype : externtype, xt_lst : externtype*, var_0 : tagtype*}: + `%%`([v_externtype] ++ xt_lst, var_0) + -- fun_tagsxt: `%%`(xt_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 -def $globalsxt(var_0 : externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 - def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 - def $globalsxt{gt : globaltype, xt_lst : externtype*}([GLOBAL_externtype(gt)] ++ xt_lst) = [gt] ++ $globalsxt(xt_lst) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 - def $globalsxt{v_externtype : externtype, xt_lst : externtype*}([v_externtype] ++ xt_lst) = $globalsxt(xt_lst) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation fun_globalsxt: `%%`(externtype*, globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_1{gt : globaltype, xt_lst : externtype*, var_0 : globaltype*}: + `%%`([GLOBAL_externtype(gt)] ++ xt_lst, [gt] ++ var_0) + -- fun_globalsxt: `%%`(xt_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_2{v_externtype : externtype, xt_lst : externtype*, var_0 : globaltype*}: + `%%`([v_externtype] ++ xt_lst, var_0) + -- fun_globalsxt: `%%`(xt_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 -def $memsxt(var_0 : externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 - def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 - def $memsxt{mt : memtype, xt_lst : externtype*}([MEM_externtype(mt)] ++ xt_lst) = [mt] ++ $memsxt(xt_lst) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 - def $memsxt{v_externtype : externtype, xt_lst : externtype*}([v_externtype] ++ xt_lst) = $memsxt(xt_lst) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation fun_memsxt: `%%`(externtype*, memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_1{mt : memtype, xt_lst : externtype*, var_0 : memtype*}: + `%%`([MEM_externtype(mt)] ++ xt_lst, [mt] ++ var_0) + -- fun_memsxt: `%%`(xt_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_2{v_externtype : externtype, xt_lst : externtype*, var_0 : memtype*}: + `%%`([v_externtype] ++ xt_lst, var_0) + -- fun_memsxt: `%%`(xt_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 -def $tablesxt(var_0 : externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 - def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 - def $tablesxt{tt : tabletype, xt_lst : externtype*}([TABLE_externtype(tt)] ++ xt_lst) = [tt] ++ $tablesxt(xt_lst) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 - def $tablesxt{v_externtype : externtype, xt_lst : externtype*}([v_externtype] ++ xt_lst) = $tablesxt(xt_lst) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation fun_tablesxt: `%%`(externtype*, tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_1{tt : tabletype, xt_lst : externtype*, var_0 : tabletype*}: + `%%`([TABLE_externtype(tt)] ++ xt_lst, [tt] ++ var_0) + -- fun_tablesxt: `%%`(xt_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_2{v_externtype : externtype, xt_lst : externtype*, var_0 : tabletype*}: + `%%`([v_externtype] ++ xt_lst, var_0) + -- fun_tablesxt: `%%`(xt_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 -def $funcsxt(var_0 : externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 - def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 - def $funcsxt{v_rectype : rectype, v_n : n, xt_lst : externtype*}([FUNC_externtype(_DEF_typeuse(v_rectype, v_n))] ++ xt_lst) = [_DEF_deftype(v_rectype, v_n)] ++ $funcsxt(xt_lst) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 - def $funcsxt{v_externtype : externtype, xt_lst : externtype*}([v_externtype] ++ xt_lst) = $funcsxt(xt_lst) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 +relation fun_funcsxt: `%%`(externtype*, deftype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_1{v_rectype : rectype, v_n : n, xt_lst : externtype*, var_0 : deftype*}: + `%%`([FUNC_externtype(_DEF_typeuse(v_rectype, v_n))] ++ xt_lst, [_DEF_deftype(v_rectype, v_n)] ++ var_0) + -- fun_funcsxt: `%%`(xt_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_2{v_externtype : externtype, xt_lst : externtype*, var_0 : deftype*}: + `%%`([v_externtype] ++ xt_lst, var_0) + -- fun_funcsxt: `%%`(xt_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -7559,30 +7303,28 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch{C : context, x : idx, l : labelidx, t_lst : valtype*, var_0 : deftype?}: + rule catch{C : context, x : idx, l : labelidx, t_lst : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) - -- if (var_0 =/= ?()) - -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_lst), C.LABELS_context[$proj_uN_0(l).0]) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch_ref{C : context, x : idx, l : labelidx, t_lst : valtype*, var_0 : deftype?}: + rule catch_ref{C : context, x : idx, l : labelidx, t_lst : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) - -- if (var_0 =/= ?()) - -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_lst ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: @@ -7967,18 +7709,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3_lst), [], `%`_resulttype(t_4_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 - rule throw{C : context, x : idx, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*, var_0 : deftype?}: + rule throw{C : context, x : idx, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ t_lst), [], `%`_resulttype(t_2_lst))) -- wf_context: `%`(C) -- wf_instr: `%`(THROW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ t_lst), [], `%`_resulttype(t_2_lst))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- if (var_0 =/= ?()) - -- Expand: `%~~%`(!(var_0), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- fun_as_deftype: `%%`(C.TAGS_context[$proj_uN_0(x).0], var_0) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: @@ -9304,7 +9045,7 @@ relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule mk_Module_ok{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, C : context, xt_I_lst : externtype*, xt_E_lst : externtype*, dt'_lst : deftype*, C' : context, jt_lst : tagtype*, gt_lst : globaltype*, mt_lst : memtype*, tt_lst : tabletype*, dt_lst : deftype*, ok_lst : datatype*, rt_lst : reftype*, nm_lst : name*, jt_I_lst : tagtype*, mt_I_lst : memtype*, tt_I_lst : tabletype*, gt_I_lst : globaltype*, dt_I_lst : deftype*, x_lst : idx*, var_1 : funcidx*, var_0 : moduletype}: + rule mk_Module_ok{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, C : context, xt_I_lst : externtype*, xt_E_lst : externtype*, dt'_lst : deftype*, C' : context, jt_lst : tagtype*, gt_lst : globaltype*, mt_lst : memtype*, tt_lst : tabletype*, dt_lst : deftype*, ok_lst : datatype*, rt_lst : reftype*, nm_lst : name*, jt_I_lst : tagtype*, mt_I_lst : memtype*, tt_I_lst : tabletype*, gt_I_lst : globaltype*, dt_I_lst : deftype*, x_lst : idx*, var_6 : deftype*, var_5 : tabletype*, var_4 : memtype*, var_3 : globaltype*, var_2 : tagtype*, var_1 : funcidx*, var_0 : moduletype}: `|-%:%`(MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst)), var_0) -- wf_context: `%`(C) -- wf_context: `%`(C') @@ -9340,11 +9081,16 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (C = C' +++ {TYPES [], TAGS jt_I_lst ++ jt_lst, GLOBALS gt_lst, MEMS mt_I_lst ++ mt_lst, TABLES tt_I_lst ++ tt_lst, FUNCS [], DATAS ok_lst, ELEMS rt_lst, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- if (C' = {TYPES dt'_lst, TAGS [], GLOBALS gt_I_lst, MEMS [], TABLES [], FUNCS dt_I_lst ++ dt_lst, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x_lst, RECS []}) -- if (x_lst = var_1) - -- if (jt_I_lst = $tagsxt(xt_I_lst)) - -- if (gt_I_lst = $globalsxt(xt_I_lst)) - -- if (mt_I_lst = $memsxt(xt_I_lst)) - -- if (tt_I_lst = $tablesxt(xt_I_lst)) - -- if (dt_I_lst = $funcsxt(xt_I_lst)) + -- if (jt_I_lst = var_2) + -- if (gt_I_lst = var_3) + -- if (mt_I_lst = var_4) + -- if (tt_I_lst = var_5) + -- if (dt_I_lst = var_6) + -- fun_funcsxt: `%%`(xt_I_lst, var_6) + -- fun_tablesxt: `%%`(xt_I_lst, var_5) + -- fun_memsxt: `%%`(xt_I_lst, var_4) + -- fun_globalsxt: `%%`(xt_I_lst, var_3) + -- fun_tagsxt: `%%`(xt_I_lst, var_2) -- fun_funcidx_nonfuncs: `%%`(`%%%%%%`_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst), var_1) -- fun_clos_moduletype: `%%%`(C, `%->%`_moduletype(xt_I_lst, xt_E_lst), var_0) @@ -9493,69 +9239,23 @@ relation fun_inv_signed_: `%%%`(N, int, nat) -- if ((- ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_sx_before_fun_sx_case_7: `%`(storagetype) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_6: - `%`(I16_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_5: - `%`(I8_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_4: - `%`(V128_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_3: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_2: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_1: - `%`(I64_storagetype) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_0: - `%`(I32_storagetype) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -relation fun_sx: `%%`(storagetype, sx??) +def $fun_sx(v_storagetype : storagetype) : sx?? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_0: - `%%`(I32_storagetype, ?(?())) - + def $fun_sx(I32_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_1: - `%%`(I64_storagetype, ?(?())) - + def $fun_sx(I64_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_2: - `%%`(F32_storagetype, ?(?())) - + def $fun_sx(F32_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_3: - `%%`(F64_storagetype, ?(?())) - + def $fun_sx(F64_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_4: - `%%`(V128_storagetype, ?(?())) - + def $fun_sx(V128_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_5: - `%%`(I8_storagetype, ?(?(S_sx))) - - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_6: - `%%`(I16_storagetype, ?(?(S_sx))) - + def $fun_sx(I8_storagetype) = ?(?(S_sx)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_sx_case_7{x0 : storagetype}: - `%%`(x0, ?()) - -- ~ fun_sx_before_fun_sx_case_7: `%`(x0) + def $fun_sx(I16_storagetype) = ?(?(S_sx)) + def $fun_sx{x0 : storagetype}(x0) = ?() + -- otherwise ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_zero: `%%`(lanetype, lane_) @@ -10109,18 +9809,16 @@ relation fun_cunpacknum_: `%%%`(storagetype, lit_, lit_) `%%%`(V128_storagetype, c, c) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_cunpacknum__case_5{c : uN, var_0 : consttype?}: + rule fun_cunpacknum__case_5{c : uN}: `%%%`(I8_storagetype, mk_lit__2_lit_(I8_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) - -- fun_cunpack: `%%`($storagetype_packtype(I8_packtype), var_0) - -- if (var_0 =/= ?()) - -- wf_lit_: `%%`($storagetype_consttype(!(var_0)), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I8_packtype)) =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - rule fun_cunpacknum__case_6{c : uN, var_0 : consttype?}: + rule fun_cunpacknum__case_6{c : uN}: `%%%`(I16_storagetype, mk_lit__2_lit_(I16_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) - -- fun_cunpack: `%%`($storagetype_packtype(I16_packtype), var_0) - -- if (var_0 =/= ?()) - -- wf_lit_: `%%`($storagetype_consttype(!(var_0)), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I16_packtype)) =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) @@ -15508,66 +15206,101 @@ relation fun_unpackfield_: `%%%%`(storagetype, sx?, fieldval, val?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.1-190.86 -def $tagsxa(var_0 : externaddr*) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.23 - def $tagsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.42 - def $tagsxa{a : nat, xa_lst : externaddr*}([TAG_externaddr(a)] ++ xa_lst) = [a] ++ $tagsxa(xa_lst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:198.1-198.57 - def $tagsxa{v_externaddr : externaddr, xa_lst : externaddr*}([v_externaddr] ++ xa_lst) = $tagsxa(xa_lst) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 +relation fun_tagsxa: `%%`(externaddr*, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_1{a : nat, xa_lst : externaddr*, var_0 : tagaddr*}: + `%%`([TAG_externaddr(a)] ++ xa_lst, [a] ++ var_0) + -- fun_tagsxa: `%%`(xa_lst, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_2{v_externaddr : externaddr, xa_lst : externaddr*, var_0 : tagaddr*}: + `%%`([v_externaddr] ++ xa_lst, var_0) + -- fun_tagsxa: `%%`(xa_lst, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.1-191.89 -def $globalsxa(var_0 : externaddr*) : globaladdr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.26 - def $globalsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.51 - def $globalsxa{a : nat, xa_lst : externaddr*}([GLOBAL_externaddr(a)] ++ xa_lst) = [a] ++ $globalsxa(xa_lst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:202.1-202.63 - def $globalsxa{v_externaddr : externaddr, xa_lst : externaddr*}([v_externaddr] ++ xa_lst) = $globalsxa(xa_lst) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 +relation fun_globalsxa: `%%`(externaddr*, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_1{a : nat, xa_lst : externaddr*, var_0 : globaladdr*}: + `%%`([GLOBAL_externaddr(a)] ++ xa_lst, [a] ++ var_0) + -- fun_globalsxa: `%%`(xa_lst, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_2{v_externaddr : externaddr, xa_lst : externaddr*, var_0 : globaladdr*}: + `%%`([v_externaddr] ++ xa_lst, var_0) + -- fun_globalsxa: `%%`(xa_lst, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.1-192.86 -def $memsxa(var_0 : externaddr*) : memaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.23 - def $memsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.42 - def $memsxa{a : nat, xa_lst : externaddr*}([MEM_externaddr(a)] ++ xa_lst) = [a] ++ $memsxa(xa_lst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:206.1-206.57 - def $memsxa{v_externaddr : externaddr, xa_lst : externaddr*}([v_externaddr] ++ xa_lst) = $memsxa(xa_lst) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 +relation fun_memsxa: `%%`(externaddr*, memaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_1{a : nat, xa_lst : externaddr*, var_0 : memaddr*}: + `%%`([MEM_externaddr(a)] ++ xa_lst, [a] ++ var_0) + -- fun_memsxa: `%%`(xa_lst, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_2{v_externaddr : externaddr, xa_lst : externaddr*, var_0 : memaddr*}: + `%%`([v_externaddr] ++ xa_lst, var_0) + -- fun_memsxa: `%%`(xa_lst, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.88 -def $tablesxa(var_0 : externaddr*) : tableaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.25 - def $tablesxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.48 - def $tablesxa{a : nat, xa_lst : externaddr*}([TABLE_externaddr(a)] ++ xa_lst) = [a] ++ $tablesxa(xa_lst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:210.1-210.61 - def $tablesxa{v_externaddr : externaddr, xa_lst : externaddr*}([v_externaddr] ++ xa_lst) = $tablesxa(xa_lst) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 +relation fun_tablesxa: `%%`(externaddr*, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_1{a : nat, xa_lst : externaddr*, var_0 : tableaddr*}: + `%%`([TABLE_externaddr(a)] ++ xa_lst, [a] ++ var_0) + -- fun_tablesxa: `%%`(xa_lst, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_2{v_externaddr : externaddr, xa_lst : externaddr*, var_0 : tableaddr*}: + `%%`([v_externaddr] ++ xa_lst, var_0) + -- fun_tablesxa: `%%`(xa_lst, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.87 -def $funcsxa(var_0 : externaddr*) : funcaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.24 - def $funcsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.45 - def $funcsxa{a : nat, xa_lst : externaddr*}([FUNC_externaddr(a)] ++ xa_lst) = [a] ++ $funcsxa(xa_lst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:214.1-214.59 - def $funcsxa{v_externaddr : externaddr, xa_lst : externaddr*}([v_externaddr] ++ xa_lst) = $funcsxa(xa_lst) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 +relation fun_funcsxa: `%%`(externaddr*, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_1{a : nat, xa_lst : externaddr*, var_0 : funcaddr*}: + `%%`([FUNC_externaddr(a)] ++ xa_lst, [a] ++ var_0) + -- fun_funcsxa: `%%`(xa_lst, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_2{v_externaddr : externaddr, xa_lst : externaddr*, var_0 : funcaddr*}: + `%%`([v_externaddr] ++ xa_lst, var_0) + -- fun_funcsxa: `%%`(xa_lst, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -16714,7 +16447,7 @@ relation Step_pure: `%~>%`(instr*, instr*) -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vtestop{c_1 : vec_, v_Jnn : Jnn, v_M : M, c : num_, i_lst : lane_*, var_0_lst : uN*}: + rule vtestop{c_1 : vec_, v_Jnn : Jnn, v_M : M, c : num_, i_lst : lane_*, var_1_lst : uN*, var_0 : nat}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), mk_vtestop__0_vtestop_(v_Jnn, v_M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), i))*{i <- i_lst} -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) @@ -16723,10 +16456,11 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))) -- if (i_lst = $lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), c_1)) -- if ($proj_num__0(c) =/= ?()) - -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0(var_0).0*{var_0 <- var_0_lst})) - -- if (|var_0_lst| = |i_lst|) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = var_0) + -- if (|var_1_lst| = |i_lst|) -- (if ($proj_lane__2(i) =/= ?()))*{i <- i_lst} - -- (fun_inez_: `%%%`($jsizenn(v_Jnn), !($proj_lane__2(i)), var_0))*{var_0 <- var_0_lst, i <- i_lst} + -- (fun_inez_: `%%%`($jsizenn(v_Jnn), !($proj_lane__2(i)), var_1))*{var_1 <- var_1_lst, i <- i_lst} + -- fun_prod: `%%`($proj_uN_0(var_1).0*{var_1 <- var_1_lst}, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_, var_0 : vec_}: @@ -17294,7 +17028,7 @@ relation Step_read_before_array_copy_le: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_array_copy_gt: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_copy_le_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype, var_0 : sx??}: + rule array_copy_le_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) @@ -17312,9 +17046,8 @@ relation Step_read_before_array_copy_gt: `%`(config) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) -- ~ Step_read_before_array_copy_le: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = !(var_0))) - -- fun_sx: `%%`(zt_2, var_0) + -- if ($fun_sx(zt_2) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = !($fun_sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_zero_1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: @@ -17389,16 +17122,15 @@ relation Step_read_before_array_init_elem_succ: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_array_init_data_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_init_data_oob2_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype, var_0 : nat?}: + rule array_init_data_oob2_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) - -- fun_zsize: `%%`(zt, var_0) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob1_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: @@ -17419,16 +17151,15 @@ relation Step_read_before_array_init_data_num: `%`(config) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_init_data_oob2_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype, var_0 : nat?}: + rule array_init_data_oob2_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) - -- fun_zsize: `%%`(zt, var_0) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob1_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: @@ -18157,33 +17888,30 @@ relation Step_read: `%~>%`(config, instr*) -- if (ref_lst = $fun_elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : v_n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_new_data_oob{z : state, i : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype, var_0 : nat?}: + rule array_new_data_oob{z : state, i : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- if ($proj_num__0(i) =/= ?()) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((v_n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) - -- fun_zsize: `%%`(zt, var_0) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_new_data_num{z : state, i : num_, v_n : n, x : idx, y : idx, zt : storagetype, c_lst : lit_*, mut_opt : mut?, var_3 : nat?, var_2_lst : lit_*, var_1 : consttype?, var_0_lst : instr*}: + rule array_new_data_num{z : state, i : num_, v_n : n, x : idx, y : idx, zt : storagetype, c_lst : lit_*, mut_opt : mut?, var_1_lst : lit_*, var_0_lst : instr*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_DATA`_instr(x, y)]), var_0_lst ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))]) -- (wf_lit_: `%%`(zt, c))*{c <- c_lst} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_DATA`_instr(x, y)])) -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) - -- if (var_3 =/= ?()) + -- if ($zsize(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- if ($concatn_(syntax byte, $zbytes_(zt, c)^v_n{c <- c_lst}, (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((v_n * !(var_3)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- fun_zsize: `%%`(zt, var_3) - -- (fun_cunpacknum_: `%%%`(zt, c, var_2))^v_n{var_2 <- var_2_lst, c <- c_lst} - -- fun_cunpack: `%%`(zt, var_1) - -- (if (var_1 =/= ?()))^v_n{} - -- (fun_const: `%%%`(!(var_1), var_2, var_0))^v_n{var_2 <- var_2_lst, var_0 <- var_0_lst} + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^v_n{c <- c_lst}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (fun_cunpacknum_: `%%%`(zt, c, var_1))^v_n{var_1 <- var_1_lst, c <- c_lst} + -- (if ($cunpack(zt) =/= ?()))^v_n{} + -- (fun_const: `%%%`(!($cunpack(zt)), var_1, var_0))^v_n{var_1 <- var_1_lst, var_0 <- var_0_lst} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_get_null{z : state, i : num_, sx_opt : sx?, x : idx}: @@ -18298,7 +18026,7 @@ relation Step_read: `%~>%`(config, instr*) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_copy_le{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype, var_0 : sx??}: + rule array_copy_le{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx_opt, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -18316,12 +18044,11 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) -- ~ Step_read_before_array_copy_le: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = !(var_0))) - -- fun_sx: `%%`(zt_2, var_0) + -- if ($fun_sx(zt_2) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = !($fun_sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_copy_gt{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype, var_0 : sx??}: + rule array_copy_gt{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.GET`_instr(sx_opt, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) @@ -18339,9 +18066,8 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) -- ~ Step_read_before_array_copy_gt: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) - -- if (var_0 =/= ?()) - -- if (sx_opt = !(var_0)) - -- fun_sx: `%%`(zt_2, var_0) + -- if ($fun_sx(zt_2) =/= ?()) + -- if (sx_opt = !($fun_sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_null{z : state, i : num_, j : num_, v_n : n, x : idx, y : idx}: @@ -18407,16 +18133,15 @@ relation Step_read: `%~>%`(config, instr*) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_init_data_oob2{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype, var_0 : nat?}: + rule array_init_data_oob2{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if (var_0 =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !(var_0)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) - -- fun_zsize: `%%`(zt, var_0) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_zero{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: @@ -18426,29 +18151,27 @@ relation Step_read: `%~>%`(config, instr*) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_init_data_num{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, zt : storagetype, c : lit_, mut_opt : mut?, var_3 : nat?, var_2 : lit_, var_1 : consttype?, var_0 : instr}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) var_0 `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) + rule array_init_data_num{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, zt : storagetype, c : lit_, mut_opt : mut?, var_1 : lit_, var_0 : instr}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) var_0 `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- if (var_3 =/= ?()) + -- if ($zsize(zt) =/= ?()) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(`ARRAY.SET`_instr(x)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) -- ~ Step_read_before_array_init_data_num: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) - -- if ($zbytes_(zt, c) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!(var_3) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- fun_zsize: `%%`(zt, var_3) - -- fun_cunpacknum_: `%%%`(zt, c, var_2) - -- fun_cunpack: `%%`(zt, var_1) - -- if (var_1 =/= ?()) - -- fun_const: `%%%`(!(var_1), var_2, var_0) + -- if ($zbytes_(zt, c) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- fun_cunpacknum_: `%%%`(zt, c, var_1) + -- if ($cunpack(zt) =/= ?()) + -- fun_const: `%%%`(!($cunpack(zt)), var_1, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rec { @@ -18507,18 +18230,17 @@ relation Step: `%~>%`(config, config) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr_lst), `%;%`_config(`%;%`_state(s', f''), instr'_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:231.1-235.49 - rule throw{z : state, v_n : n, val_lst : val*, x : idx, exn : exninst, a : addr, t_lst : valtype*, var_1 : deftype?, var_0 : state}: + rule throw{z : state, v_n : n, val_lst : val*, x : idx, exn : exninst, a : addr, t_lst : valtype*, var_0 : state}: `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [THROW_instr(x)]), `%;%`_config(var_0, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) -- wf_config: `%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [THROW_instr(x)])) -- wf_config: `%`(`%;%`_config(var_0, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) -- wf_exninst: `%`({TAG $fun_tagaddr(z)[$proj_uN_0(x).0], FIELDS val_lst}) - -- if (var_1 =/= ?()) - -- Expand: `%~~%`(!(var_1), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) + -- if ($as_deftype($fun_tag(z, x).TYPE_taginst) =/= ?()) + -- Expand: `%~~%`(!($as_deftype($fun_tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) -- if (a = |$fun_exninst(z)|) -- if (exn = {TAG $fun_tagaddr(z)[$proj_uN_0(x).0], FIELDS val_lst}) - -- fun_as_deftype: `%%`($fun_tag(z, x).TYPE_taginst, var_1) -- fun_add_exninst: `%%%`(z, [exn], var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 @@ -19044,28 +18766,33 @@ relation fun_allocexports: `%%%`(moduleinst, export*, exportinst*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref**, (store, moduleinst)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - rule fun_allocmodule_case_0{s : store, v_module : module, externaddr_lst : externaddr*, val_G_lst : val*, ref_T_lst : ref*, ref_E_lst_lst : ref**, s_7 : store, v_moduleinst : moduleinst, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, tagtype_lst : tagtype*, expr_G_lst : expr*, globaltype_lst : globaltype*, memtype_lst : memtype*, expr_T_lst : expr*, tabletype_lst : tabletype*, expr_F_lst : expr*, local_lst_lst : local**, x_lst : idx*, byte_lst_lst : byte**, datamode_lst : datamode*, elemmode_lst : elemmode*, elemtype_lst : elemtype*, expr_E_lst_lst : expr**, aa_I_lst : tagaddr*, ga_I_lst : globaladdr*, ma_I_lst : memaddr*, ta_I_lst : tableaddr*, fa_I_lst : funcaddr*, dt_lst : deftype*, fa_lst : nat*, s_1 : store, aa_lst : tagaddr*, s_2 : store, ga_lst : globaladdr*, s_3 : store, ma_lst : memaddr*, s_4 : store, ta_lst : tableaddr*, s_5 : store, da_lst : dataaddr*, s_6 : store, ea_lst : elemaddr*, xi_lst : exportinst*, var_13 : exportinst*, var_12 : (store, funcaddr*), var_11_lst : elemtype*, var_10 : (store, elemaddr*), var_9 : (store, dataaddr*), var_8_lst : tabletype*, var_7 : (store, tableaddr*), var_6_lst : memtype*, var_5 : (store, memaddr*), var_4_lst : globaltype*, var_3 : (store, globaladdr*), var_2_lst : tagtype*, var_1 : (store, tagaddr*), var_0 : deftype*}: + rule fun_allocmodule_case_0{s : store, v_module : module, externaddr_lst : externaddr*, val_G_lst : val*, ref_T_lst : ref*, ref_E_lst_lst : ref**, s_7 : store, v_moduleinst : moduleinst, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, tagtype_lst : tagtype*, expr_G_lst : expr*, globaltype_lst : globaltype*, memtype_lst : memtype*, expr_T_lst : expr*, tabletype_lst : tabletype*, expr_F_lst : expr*, local_lst_lst : local**, x_lst : idx*, byte_lst_lst : byte**, datamode_lst : datamode*, elemmode_lst : elemmode*, elemtype_lst : elemtype*, expr_E_lst_lst : expr**, aa_I_lst : tagaddr*, ga_I_lst : globaladdr*, ma_I_lst : memaddr*, ta_I_lst : tableaddr*, fa_I_lst : funcaddr*, dt_lst : deftype*, fa_lst : nat*, s_1 : store, aa_lst : tagaddr*, s_2 : store, ga_lst : globaladdr*, s_3 : store, ma_lst : memaddr*, s_4 : store, ta_lst : tableaddr*, s_5 : store, da_lst : dataaddr*, s_6 : store, ea_lst : elemaddr*, xi_lst : exportinst*, var_18 : exportinst*, var_17 : (store, funcaddr*), var_16_lst : elemtype*, var_15 : (store, elemaddr*), var_14 : (store, dataaddr*), var_13_lst : tabletype*, var_12 : (store, tableaddr*), var_11_lst : memtype*, var_10 : (store, memaddr*), var_9_lst : globaltype*, var_8 : (store, globaladdr*), var_7_lst : tagtype*, var_6 : (store, tagaddr*), var_5 : deftype*, var_4 : funcaddr*, var_3 : tableaddr*, var_2 : memaddr*, var_1 : globaladdr*, var_0 : tagaddr*}: `%%%%%%%`(s, v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst, (s_7, v_moduleinst)) - -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}, export_lst, var_13) + -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}, export_lst, var_18) -- (if ($proj_uN_0(x#4).0 < |dt_lst|))*{x#4 <- x_lst} - -- fun_allocfuncs: `%%%%%`(s_6, dt_lst[$proj_uN_0(x#4).0]*{x#4 <- x_lst}, FUNC_funccode(x#5, local_lst#86, expr_F#3)*{expr_F#3 <- expr_F_lst, local_lst#86 <- local_lst_lst, x#5 <- x_lst}, v_moduleinst^|func_lst|{}, var_12) - -- if (|var_11_lst| = |elemtype_lst|) - -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- dt_lst}, var_11))*{var_11 <- var_11_lst, elemtype#3 <- elemtype_lst} - -- fun_allocelems: `%%%%`(s_5, var_11_lst, ref_E_lst_lst, var_10) - -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data_lst|{}, byte_lst_lst, var_9) - -- if (|var_8_lst| = |tabletype_lst|) - -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- dt_lst}, var_8))*{var_8 <- var_8_lst, tabletype#160 <- tabletype_lst} - -- fun_alloctables: `%%%%`(s_3, var_8_lst, ref_T_lst, var_7) - -- if (|var_6_lst| = |memtype_lst|) - -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- dt_lst}, var_6))*{var_6 <- var_6_lst, memtype#126 <- memtype_lst} - -- fun_allocmems: `%%%`(s_2, var_6_lst, var_5) - -- if (|var_4_lst| = |globaltype_lst|) - -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- dt_lst}, var_4))*{var_4 <- var_4_lst, globaltype#126 <- globaltype_lst} - -- fun_allocglobals: `%%%%`(s_1, var_4_lst, val_G_lst, var_3) - -- if (|var_2_lst| = |tagtype_lst|) - -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- dt_lst}, var_2))*{var_2 <- var_2_lst, tagtype#82 <- tagtype_lst} - -- fun_alloctags: `%%%`(s, var_2_lst, var_1) - -- fun_alloctypes: `%%`(type_lst, var_0) + -- fun_allocfuncs: `%%%%%`(s_6, dt_lst[$proj_uN_0(x#4).0]*{x#4 <- x_lst}, FUNC_funccode(x#5, local_lst#86, expr_F#3)*{expr_F#3 <- expr_F_lst, local_lst#86 <- local_lst_lst, x#5 <- x_lst}, v_moduleinst^|func_lst|{}, var_17) + -- if (|var_16_lst| = |elemtype_lst|) + -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- dt_lst}, var_16))*{var_16 <- var_16_lst, elemtype#3 <- elemtype_lst} + -- fun_allocelems: `%%%%`(s_5, var_16_lst, ref_E_lst_lst, var_15) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data_lst|{}, byte_lst_lst, var_14) + -- if (|var_13_lst| = |tabletype_lst|) + -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- dt_lst}, var_13))*{var_13 <- var_13_lst, tabletype#160 <- tabletype_lst} + -- fun_alloctables: `%%%%`(s_3, var_13_lst, ref_T_lst, var_12) + -- if (|var_11_lst| = |memtype_lst|) + -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- dt_lst}, var_11))*{var_11 <- var_11_lst, memtype#126 <- memtype_lst} + -- fun_allocmems: `%%%`(s_2, var_11_lst, var_10) + -- if (|var_9_lst| = |globaltype_lst|) + -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- dt_lst}, var_9))*{var_9 <- var_9_lst, globaltype#126 <- globaltype_lst} + -- fun_allocglobals: `%%%%`(s_1, var_9_lst, val_G_lst, var_8) + -- if (|var_7_lst| = |tagtype_lst|) + -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- dt_lst}, var_7))*{var_7 <- var_7_lst, tagtype#82 <- tagtype_lst} + -- fun_alloctags: `%%%`(s, var_7_lst, var_6) + -- fun_alloctypes: `%%`(type_lst, var_5) + -- fun_funcsxa: `%%`(externaddr_lst, var_4) + -- fun_tablesxa: `%%`(externaddr_lst, var_3) + -- fun_memsxa: `%%`(externaddr_lst, var_2) + -- fun_globalsxa: `%%`(externaddr_lst, var_1) + -- fun_tagsxa: `%%`(externaddr_lst, var_0) -- wf_store: `%`(s_7) -- wf_moduleinst: `%`(v_moduleinst) -- wf_store: `%`(s_1) @@ -19099,21 +18826,21 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* -- if (func_lst = FUNC_func(x#3, local_lst#84, expr_F#2)*{expr_F#2 <- expr_F_lst, local_lst#84 <- local_lst_lst, x#3 <- x_lst}) -- if (data_lst = DATA_data(byte_lst#112, datamode#112)*{byte_lst#112 <- byte_lst_lst, datamode#112 <- datamode_lst}) -- if (elem_lst = ELEM_elem(elemtype#2, expr_E_lst#2, elemmode#232)*{elemmode#232 <- elemmode_lst, elemtype#2 <- elemtype_lst, expr_E_lst#2 <- expr_E_lst_lst}) - -- if (aa_I_lst = $tagsxa(externaddr_lst)) - -- if (ga_I_lst = $globalsxa(externaddr_lst)) - -- if (ma_I_lst = $memsxa(externaddr_lst)) - -- if (ta_I_lst = $tablesxa(externaddr_lst)) - -- if (fa_I_lst = $funcsxa(externaddr_lst)) - -- if (dt_lst = var_0) + -- if (aa_I_lst = var_0) + -- if (ga_I_lst = var_1) + -- if (ma_I_lst = var_2) + -- if (ta_I_lst = var_3) + -- if (fa_I_lst = var_4) + -- if (dt_lst = var_5) -- if (fa_lst = (|s.FUNCS_store| + i_F#1)^(i_F#1<|func_lst|){}) - -- if ((s_1, aa_lst) = var_1) - -- if ((s_2, ga_lst) = var_3) - -- if ((s_3, ma_lst) = var_5) - -- if ((s_4, ta_lst) = var_7) - -- if ((s_5, da_lst) = var_9) - -- if ((s_6, ea_lst) = var_10) - -- if ((s_7, fa_lst) = var_12) - -- if (xi_lst = var_13) + -- if ((s_1, aa_lst) = var_6) + -- if ((s_2, ga_lst) = var_8) + -- if ((s_3, ma_lst) = var_10) + -- if ((s_4, ta_lst) = var_12) + -- if ((s_5, da_lst) = var_14) + -- if ((s_6, ea_lst) = var_15) + -- if ((s_7, fa_lst) = var_17) + -- if (xi_lst = var_18) -- if (v_moduleinst = {TYPES dt_lst, TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS da_lst, ELEMS ea_lst, EXPORTS xi_lst}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -19221,17 +18948,21 @@ relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec relation fun_instantiate: `%%%%`(store, module, externaddr*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - rule fun_instantiate_case_0{s : store, v_module : module, externaddr_lst : externaddr*, s'''' : store, v_moduleinst : moduleinst, instr_E_lst : instr*, instr_D_lst : instr*, instr_S_opt : instr?, xt_I_lst : externtype*, xt_E_lst : externtype*, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, expr_G_lst : expr*, globaltype_lst : globaltype*, expr_T_lst : expr*, tabletype_lst : tabletype*, byte_lst_lst : byte**, datamode_lst : datamode*, elemmode_lst : elemmode*, expr_E_lst_lst : expr**, reftype_lst : reftype*, x_opt : idx?, moduleinst_0 : moduleinst, z : state, z' : state, val_G_lst : val*, z'' : state, ref_T_lst : ref*, z''' : state, ref_E_lst_lst : ref**, s''' : store, f : frame, i_D : nat, i_E : nat, var_7_lst : instr**, var_6_lst : instr**, var_5 : (store, moduleinst), var_4 : (state, ref**), var_3 : (state, ref*), var_2 : (state, val*), var_1 : deftype*, var_0 : deftype*}: + rule fun_instantiate_case_0{s : store, v_module : module, externaddr_lst : externaddr*, s'''' : store, v_moduleinst : moduleinst, instr_E_lst : instr*, instr_D_lst : instr*, instr_S_opt : instr?, xt_I_lst : externtype*, xt_E_lst : externtype*, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, expr_G_lst : expr*, globaltype_lst : globaltype*, expr_T_lst : expr*, tabletype_lst : tabletype*, byte_lst_lst : byte**, datamode_lst : datamode*, elemmode_lst : elemmode*, expr_E_lst_lst : expr**, reftype_lst : reftype*, x_opt : idx?, moduleinst_0 : moduleinst, z : state, z' : state, val_G_lst : val*, z'' : state, ref_T_lst : ref*, z''' : state, ref_E_lst_lst : ref**, s''' : store, f : frame, i_D : nat, i_E : nat, var_11_lst : instr**, var_10_lst : instr**, var_9 : (store, moduleinst), var_8 : (state, ref**), var_7 : (state, ref*), var_6 : (state, val*), var_5 : funcaddr*, var_4 : globaladdr*, var_3 : deftype*, var_2 : funcaddr*, var_1 : globaladdr*, var_0 : deftype*}: `%%%%`(s, v_module, externaddr_lst, `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt))) -- (if (i_E#2 < |elem_lst|))^(i_E#2<|elem_lst|){} - -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem_lst[i_E#2], var_7))^(i_E#2<|elem_lst|){var_7 <- var_7_lst} + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem_lst[i_E#2], var_11))^(i_E#2<|elem_lst|){var_11 <- var_11_lst} -- (if (i_D#2 < |data_lst|))^(i_D#2<|data_lst|){} - -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data_lst[i_D#2], var_6))^(i_D#2<|data_lst|){var_6 <- var_6_lst} - -- fun_allocmodule: `%%%%%%%`(s''', v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst, var_5) - -- fun_evalexprss: `%%%`(z'', expr_E_lst_lst, var_4) - -- fun_evalexprs: `%%%`(z', expr_T_lst, var_3) - -- fun_evalglobals: `%%%%`(z, globaltype_lst, expr_G_lst, var_2) - -- fun_alloctypes: `%%`(type_lst, var_1) + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data_lst[i_D#2], var_10))^(i_D#2<|data_lst|){var_10 <- var_10_lst} + -- fun_allocmodule: `%%%%%%%`(s''', v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst, var_9) + -- fun_evalexprss: `%%%`(z'', expr_E_lst_lst, var_8) + -- fun_evalexprs: `%%%`(z', expr_T_lst, var_7) + -- fun_evalglobals: `%%%%`(z, globaltype_lst, expr_G_lst, var_6) + -- fun_funcsxa: `%%`(externaddr_lst, var_5) + -- fun_globalsxa: `%%`(externaddr_lst, var_4) + -- fun_alloctypes: `%%`(type_lst, var_3) + -- fun_funcsxa: `%%`(externaddr_lst, var_2) + -- fun_globalsxa: `%%`(externaddr_lst, var_1) -- fun_alloctypes: `%%`(type_lst, var_0) -- wf_state: `%`(z) -- wf_state: `%`(z') @@ -19253,7 +18984,7 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- if (|elemmode_lst| = |reftype_lst|) -- (wf_elem: `%`(ELEM_elem(reftype#517, expr_E_lst#3, elemmode#237)))*{elemmode#237 <- elemmode_lst, expr_E_lst#3 <- expr_E_lst_lst, reftype#517 <- reftype_lst} -- (wf_start: `%`(START_start(x#6)))?{x#6 <- x_opt} - -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS $globalsxa(externaddr_lst), MEMS [], TABLES [], FUNCS $funcsxa(externaddr_lst) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func_lst|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS var_1, MEMS [], TABLES [], FUNCS var_2 ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func_lst|){}, DATAS [], ELEMS [], EXPORTS []}) -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) -- wf_state: `%`(`%;%`_state(s''', f)) -- (wf_uN: `%%`(32, `%`_uN(i_D#1)))^(i_D#1<|data_lst|){} @@ -19268,15 +18999,15 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- if (data_lst = DATA_data(byte_lst#119, datamode#118)*{byte_lst#119 <- byte_lst_lst, datamode#118 <- datamode_lst}) -- if (elem_lst = ELEM_elem(reftype#519, expr_E_lst#4, elemmode#239)*{elemmode#239 <- elemmode_lst, expr_E_lst#4 <- expr_E_lst_lst, reftype#519 <- reftype_lst}) -- if (start_opt = START_start(x#8)?{x#8 <- x_opt}) - -- if (moduleinst_0 = {TYPES var_1, TAGS [], GLOBALS $globalsxa(externaddr_lst), MEMS [], TABLES [], FUNCS $funcsxa(externaddr_lst) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func_lst|){}, DATAS [], ELEMS [], EXPORTS []}) + -- if (moduleinst_0 = {TYPES var_3, TAGS [], GLOBALS var_4, MEMS [], TABLES [], FUNCS var_5 ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func_lst|){}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G_lst) = var_2) - -- if ((z'', ref_T_lst) = var_3) - -- if ((z''', ref_E_lst_lst) = var_4) + -- if ((z', val_G_lst) = var_6) + -- if ((z'', ref_T_lst) = var_7) + -- if ((z''', ref_E_lst_lst) = var_8) -- if (z''' = `%;%`_state(s''', f)) - -- if ((s'''', v_moduleinst) = var_5) - -- if (instr_D_lst = $concat_(syntax instr, var_6_lst)) - -- if (instr_E_lst = $concat_(syntax instr, var_7_lst)) + -- if ((s'''', v_moduleinst) = var_9) + -- if (instr_D_lst = $concat_(syntax instr, var_10_lst)) + -- if (instr_E_lst = $concat_(syntax instr, var_11_lst)) -- if (instr_S_opt = CALL_instr(x#9)?{x#9 <- x_opt}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -19501,156 +19232,240 @@ relation wf_decl: `%`(decl) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 -def $typesd(var_0 : decl*) : type* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:271.1-271.48 - def $typesd{v_rectype : rectype, decl'_lst : decl*}([TYPE_decl(v_rectype)] ++ decl'_lst) = [TYPE_type(v_rectype)] ++ $typesd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:272.1-272.57 - def $typesd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $typesd(decl'_lst) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 +relation fun_typesd: `%%`(decl*, type*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_1{v_rectype : rectype, decl'_lst : decl*, var_0 : type*}: + `%%`([TYPE_decl(v_rectype)] ++ decl'_lst, [TYPE_type(v_rectype)] ++ var_0) + -- fun_typesd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : type*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_typesd: `%%`(decl'_lst, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 -def $importsd(var_0 : decl*) : import* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:275.1-275.56 - def $importsd{v_name : name, name_0 : name, v_externtype : externtype, decl'_lst : decl*}([IMPORT_decl(v_name, name_0, v_externtype)] ++ decl'_lst) = [IMPORT_import(v_name, name_0, v_externtype)] ++ $importsd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:276.1-276.61 - def $importsd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $importsd(decl'_lst) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation fun_importsd: `%%`(decl*, import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_1{v_name : name, name_0 : name, v_externtype : externtype, decl'_lst : decl*, var_0 : import*}: + `%%`([IMPORT_decl(v_name, name_0, v_externtype)] ++ decl'_lst, [IMPORT_import(v_name, name_0, v_externtype)] ++ var_0) + -- fun_importsd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : import*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_importsd: `%%`(decl'_lst, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 -def $tagsd(var_0 : decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:279.1-279.44 - def $tagsd{v_tagtype : tagtype, decl'_lst : decl*}([TAG_decl(v_tagtype)] ++ decl'_lst) = [TAG_tag(v_tagtype)] ++ $tagsd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:280.1-280.55 - def $tagsd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $tagsd(decl'_lst) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation fun_tagsd: `%%`(decl*, tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_1{v_tagtype : tagtype, decl'_lst : decl*, var_0 : tag*}: + `%%`([TAG_decl(v_tagtype)] ++ decl'_lst, [TAG_tag(v_tagtype)] ++ var_0) + -- fun_tagsd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : tag*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_tagsd: `%%`(decl'_lst, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 -def $globalsd(var_0 : decl*) : global* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:283.1-283.56 - def $globalsd{v_globaltype : globaltype, v_expr : expr, decl'_lst : decl*}([GLOBAL_decl(v_globaltype, v_expr)] ++ decl'_lst) = [GLOBAL_global(v_globaltype, v_expr)] ++ $globalsd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:284.1-284.61 - def $globalsd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $globalsd(decl'_lst) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation fun_globalsd: `%%`(decl*, global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_1{v_globaltype : globaltype, v_expr : expr, decl'_lst : decl*, var_0 : global*}: + `%%`([GLOBAL_decl(v_globaltype, v_expr)] ++ decl'_lst, [GLOBAL_global(v_globaltype, v_expr)] ++ var_0) + -- fun_globalsd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : global*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_globalsd: `%%`(decl'_lst, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 -def $memsd(var_0 : decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:287.1-287.44 - def $memsd{v_memtype : memtype, decl'_lst : decl*}([MEMORY_decl(v_memtype)] ++ decl'_lst) = [MEMORY_mem(v_memtype)] ++ $memsd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:288.1-288.55 - def $memsd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $memsd(decl'_lst) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation fun_memsd: `%%`(decl*, mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_1{v_memtype : memtype, decl'_lst : decl*, var_0 : mem*}: + `%%`([MEMORY_decl(v_memtype)] ++ decl'_lst, [MEMORY_mem(v_memtype)] ++ var_0) + -- fun_memsd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : mem*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_memsd: `%%`(decl'_lst, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 -def $tablesd(var_0 : decl*) : table* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:291.1-291.52 - def $tablesd{v_tabletype : tabletype, v_expr : expr, decl'_lst : decl*}([TABLE_decl(v_tabletype, v_expr)] ++ decl'_lst) = [TABLE_table(v_tabletype, v_expr)] ++ $tablesd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:292.1-292.59 - def $tablesd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $tablesd(decl'_lst) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation fun_tablesd: `%%`(decl*, table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_1{v_tabletype : tabletype, v_expr : expr, decl'_lst : decl*, var_0 : table*}: + `%%`([TABLE_decl(v_tabletype, v_expr)] ++ decl'_lst, [TABLE_table(v_tabletype, v_expr)] ++ var_0) + -- fun_tablesd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : table*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_tablesd: `%%`(decl'_lst, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 -def $funcsd(var_0 : decl*) : func* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:295.1-295.48 - def $funcsd{v_typeidx : typeidx, local_lst : local*, v_expr : expr, decl'_lst : decl*}([FUNC_decl(v_typeidx, local_lst, v_expr)] ++ decl'_lst) = [FUNC_func(v_typeidx, local_lst, v_expr)] ++ $funcsd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:296.1-296.57 - def $funcsd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $funcsd(decl'_lst) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation fun_funcsd: `%%`(decl*, func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_1{v_typeidx : typeidx, local_lst : local*, v_expr : expr, decl'_lst : decl*, var_0 : func*}: + `%%`([FUNC_decl(v_typeidx, local_lst, v_expr)] ++ decl'_lst, [FUNC_func(v_typeidx, local_lst, v_expr)] ++ var_0) + -- fun_funcsd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : func*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_funcsd: `%%`(decl'_lst, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 -def $datasd(var_0 : decl*) : data* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:299.1-299.48 - def $datasd{byte_lst : byte*, v_datamode : datamode, decl'_lst : decl*}([DATA_decl(byte_lst, v_datamode)] ++ decl'_lst) = [DATA_data(byte_lst, v_datamode)] ++ $datasd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:300.1-300.57 - def $datasd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $datasd(decl'_lst) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation fun_datasd: `%%`(decl*, data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_1{byte_lst : byte*, v_datamode : datamode, decl'_lst : decl*, var_0 : data*}: + `%%`([DATA_decl(byte_lst, v_datamode)] ++ decl'_lst, [DATA_data(byte_lst, v_datamode)] ++ var_0) + -- fun_datasd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : data*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_datasd: `%%`(decl'_lst, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 -def $elemsd(var_0 : decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:303.1-303.48 - def $elemsd{v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode, decl'_lst : decl*}([ELEM_decl(v_reftype, expr_lst, v_elemmode)] ++ decl'_lst) = [ELEM_elem(v_reftype, expr_lst, v_elemmode)] ++ $elemsd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:304.1-304.57 - def $elemsd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $elemsd(decl'_lst) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation fun_elemsd: `%%`(decl*, elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_1{v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode, decl'_lst : decl*, var_0 : elem*}: + `%%`([ELEM_decl(v_reftype, expr_lst, v_elemmode)] ++ decl'_lst, [ELEM_elem(v_reftype, expr_lst, v_elemmode)] ++ var_0) + -- fun_elemsd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : elem*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_elemsd: `%%`(decl'_lst, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 -def $startsd(var_0 : decl*) : start* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:307.1-307.52 - def $startsd{v_funcidx : funcidx, decl'_lst : decl*}([START_decl(v_funcidx)] ++ decl'_lst) = [START_start(v_funcidx)] ++ $startsd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:308.1-308.59 - def $startsd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $startsd(decl'_lst) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation fun_startsd: `%%`(decl*, start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_1{v_funcidx : funcidx, decl'_lst : decl*, var_0 : start*}: + `%%`([START_decl(v_funcidx)] ++ decl'_lst, [START_start(v_funcidx)] ++ var_0) + -- fun_startsd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : start*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_startsd: `%%`(decl'_lst, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 -def $exportsd(var_0 : decl*) : export* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:311.1-311.56 - def $exportsd{v_name : name, v_externidx : externidx, decl'_lst : decl*}([EXPORT_decl(v_name, v_externidx)] ++ decl'_lst) = [EXPORT_export(v_name, v_externidx)] ++ $exportsd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:312.1-312.61 - def $exportsd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $exportsd(decl'_lst) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation fun_exportsd: `%%`(decl*, export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_1{v_name : name, v_externidx : externidx, decl'_lst : decl*, var_0 : export*}: + `%%`([EXPORT_decl(v_name, v_externidx)] ++ decl'_lst, [EXPORT_export(v_name, v_externidx)] ++ var_0) + -- fun_exportsd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : export*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_exportsd: `%%`(decl'_lst, var_0) } ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec relation fun_ordered: `%%`(decl*, bool) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - rule fun_ordered_case_0{decl_lst : decl*}: + rule fun_ordered_case_0{decl_lst : decl*, var_0 : import*}: `%%`(decl_lst, true) - -- if ($importsd(decl_lst) = []) + -- fun_importsd: `%%`(decl_lst, var_0) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - rule fun_ordered_case_1{v_name : name, name_0 : name, v_externtype : externtype, decl_1_lst : decl*, decl_2_lst : decl*}: - `%%`(decl_1_lst ++ [IMPORT_decl(v_name, name_0, v_externtype)] ++ decl_2_lst, (((((($importsd(decl_1_lst) = []) /\ ($tagsd(decl_1_lst) = [])) /\ ($globalsd(decl_1_lst) = [])) /\ ($memsd(decl_1_lst) = [])) /\ ($tablesd(decl_1_lst) = [])) /\ ($funcsd(decl_1_lst) = []))) + rule fun_ordered_case_1{v_name : name, name_0 : name, v_externtype : externtype, decl_1_lst : decl*, decl_2_lst : decl*, var_5 : func*, var_4 : table*, var_3 : mem*, var_2 : global*, var_1 : tag*, var_0 : import*}: + `%%`(decl_1_lst ++ [IMPORT_decl(v_name, name_0, v_externtype)] ++ decl_2_lst, ((((((var_0 = []) /\ (var_1 = [])) /\ (var_2 = [])) /\ (var_3 = [])) /\ (var_4 = [])) /\ (var_5 = []))) + -- fun_funcsd: `%%`(decl_1_lst, var_5) + -- fun_tablesd: `%%`(decl_1_lst, var_4) + -- fun_memsd: `%%`(decl_1_lst, var_3) + -- fun_globalsd: `%%`(decl_1_lst, var_2) + -- fun_tagsd: `%%`(decl_1_lst, var_1) + -- fun_importsd: `%%`(decl_1_lst, var_0) ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context) @@ -22446,12 +22261,10 @@ grammar TfNmag(v_N : N) : fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod "inf" => INF_fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{var_0 : m} "nan" => NAN_fNmag(var_0) - -- fun_canon_: `%%`(v_N, var_0) + prod "nan" => NAN_fNmag($canon_(v_N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{v_n : n, var_0 : nat?} {{"nan:0x"} {v_n:Thexnum}} => NAN_fNmag(v_n) - -- if ((1 <= v_n) /\ (v_n < (2 ^ !(var_0)))) - -- fun_signif: `%%`(v_N, var_0) + prod{v_n : n} {{"nan:0x"} {v_n:Thexnum}} => NAN_fNmag(v_n) + -- if ((1 <= v_n) /\ (v_n < (2 ^ !($signif(v_N))))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TfN(v_N : N) : fN @@ -24071,22 +23884,33 @@ grammar Tdecl_(v_I : I) : (decl, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmodule : module ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, I_lst : I*, decl_lst : decl*, I' : I, var_1 : bool, var_0 : idctxt} {{"("} {"module"} {Tid?{}} {(v_decl, v_I)*{v_I <- I_lst, v_decl <- decl_lst}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst)) + prod{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, I_lst : I*, decl_lst : decl*, I' : I, var_12 : bool, var_11 : export*, var_10 : start*, var_9 : elem*, var_8 : data*, var_7 : func*, var_6 : table*, var_5 : mem*, var_4 : global*, var_3 : tag*, var_2 : import*, var_1 : type*, var_0 : idctxt} {{"("} {"module"} {Tid?{}} {(v_decl, v_I)*{v_I <- I_lst, v_decl <- decl_lst}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst)) -- if (I' = var_0) -- Idctxt_ok: `|-%:OK`(I') - -- if (type_lst = $typesd(decl_lst)) - -- if (import_lst = $importsd(decl_lst)) - -- if (tag_lst = $tagsd(decl_lst)) - -- if (global_lst = $globalsd(decl_lst)) - -- if (mem_lst = $memsd(decl_lst)) - -- if (table_lst = $tablesd(decl_lst)) - -- if (func_lst = $funcsd(decl_lst)) - -- if (data_lst = $datasd(decl_lst)) - -- if (elem_lst = $elemsd(decl_lst)) - -- if (lift(start_opt) = $startsd(decl_lst)) - -- if (export_lst = $exportsd(decl_lst)) - -- if var_1 - -- fun_ordered: `%%`(decl_lst, var_1) + -- if (type_lst = var_1) + -- if (import_lst = var_2) + -- if (tag_lst = var_3) + -- if (global_lst = var_4) + -- if (mem_lst = var_5) + -- if (table_lst = var_6) + -- if (func_lst = var_7) + -- if (data_lst = var_8) + -- if (elem_lst = var_9) + -- if (lift(start_opt) = var_10) + -- if (export_lst = var_11) + -- if var_12 + -- fun_ordered: `%%`(decl_lst, var_12) + -- fun_exportsd: `%%`(decl_lst, var_11) + -- fun_startsd: `%%`(decl_lst, var_10) + -- fun_elemsd: `%%`(decl_lst, var_9) + -- fun_datasd: `%%`(decl_lst, var_8) + -- fun_funcsd: `%%`(decl_lst, var_7) + -- fun_tablesd: `%%`(decl_lst, var_6) + -- fun_memsd: `%%`(decl_lst, var_5) + -- fun_globalsd: `%%`(decl_lst, var_4) + -- fun_tagsd: `%%`(decl_lst, var_3) + -- fun_importsd: `%%`(decl_lst, var_2) + -- fun_typesd: `%%`(decl_lst, var_1) -- fun_concat_idctxt: `%%`(I_lst, var_0) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec diff --git a/spectec/test-middlend/test.spectec.exp b/spectec/test-middlend/test.spectec.exp index e34d0ac44e..485f2a528f 100644 --- a/spectec/test-middlend/test.spectec.exp +++ b/spectec/test-middlend/test.spectec.exp @@ -310,48 +310,25 @@ relation TestNestedIter: `%|-%`(nat***, nat**) -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} ;; test.spectec -relation fun_t_totalize_before_fun_t_totalize_case_2: `%`(nat) - ;; test.spectec - rule fun_t_totalize_case_1: - `%`(10) - - ;; test.spectec - rule fun_t_totalize_case_0: - `%`(3) - -;; test.spectec -relation fun_t_totalize: `%%`(nat, nat?) - ;; test.spectec - rule fun_t_totalize_case_0: - `%%`(3, ?(5)) - +def $t_totalize(nat : nat) : nat? ;; test.spectec - rule fun_t_totalize_case_1: - `%%`(10, ?(20)) - + def $t_totalize(3) = ?(5) ;; test.spectec - rule fun_t_totalize_case_2{x0 : nat}: - `%%`(x0, ?()) - -- ~ fun_t_totalize_before_fun_t_totalize_case_2: `%`(x0) + def $t_totalize(10) = ?(20) + def $t_totalize{x0 : nat}(x0) = ?() + -- otherwise ;; test.spectec -relation fun_t_totalize2: `%%`(nat, nat?) +def $t_totalize2(nat : nat) : nat? ;; test.spectec - rule fun_t_totalize2_case_0: - `%%`(1, ?(2)) - + def $t_totalize2(1) = ?(2) ;; test.spectec - rule fun_t_totalize2_case_1{n : nat, var_0 : nat?}: - `%%`(n, var_0) - -- fun_t_totalize: `%%`(n, var_0) + def $t_totalize2{n : nat}(n) = $t_totalize(n) ;; test.spectec -relation fun_t_totalize3: `%%`(nat, nat?) +def $t_totalize3(nat : nat) : nat? ;; test.spectec - rule fun_t_totalize3_case_0{n : nat, var_1 : nat?, var_0 : nat?}: - `%%`(n, (iter_val#2 + iter_val#1)?{iter_val#2 <- var_0, iter_val#1 <- var_1}) - -- fun_t_totalize2: `%%`((n + 10), var_1) - -- fun_t_totalize: `%%`(n, var_0) + def $t_totalize3{n : nat}(n) = (iter_val#2 + iter_val#1)?{iter_val#2 <- $t_totalize(n), iter_val#1 <- $t_totalize2((n + 10))} == IL Validation after pass definition-to-relation... == Running pass sideconditions... @@ -369,48 +346,25 @@ relation TestNestedIter: `%|-%`(nat***, nat**) -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} ;; test.spectec -relation fun_t_totalize_before_fun_t_totalize_case_2: `%`(nat) - ;; test.spectec - rule fun_t_totalize_case_1: - `%`(10) - - ;; test.spectec - rule fun_t_totalize_case_0: - `%`(3) - -;; test.spectec -relation fun_t_totalize: `%%`(nat, nat?) - ;; test.spectec - rule fun_t_totalize_case_0: - `%%`(3, ?(5)) - +def $t_totalize(nat : nat) : nat? ;; test.spectec - rule fun_t_totalize_case_1: - `%%`(10, ?(20)) - + def $t_totalize(3) = ?(5) ;; test.spectec - rule fun_t_totalize_case_2{x0 : nat}: - `%%`(x0, ?()) - -- ~ fun_t_totalize_before_fun_t_totalize_case_2: `%`(x0) + def $t_totalize(10) = ?(20) + def $t_totalize{x0 : nat}(x0) = ?() + -- otherwise ;; test.spectec -relation fun_t_totalize2: `%%`(nat, nat?) +def $t_totalize2(nat : nat) : nat? ;; test.spectec - rule fun_t_totalize2_case_0: - `%%`(1, ?(2)) - + def $t_totalize2(1) = ?(2) ;; test.spectec - rule fun_t_totalize2_case_1{n : nat, var_0 : nat?}: - `%%`(n, var_0) - -- fun_t_totalize: `%%`(n, var_0) + def $t_totalize2{n : nat}(n) = $t_totalize(n) ;; test.spectec -relation fun_t_totalize3: `%%`(nat, nat?) +def $t_totalize3(nat : nat) : nat? ;; test.spectec - rule fun_t_totalize3_case_0{n : nat, var_1 : nat?, var_0 : nat?}: - `%%`(n, (iter_val#2 + iter_val#1)?{iter_val#2 <- var_0, iter_val#1 <- var_1}) - -- fun_t_totalize2: `%%`((n + 10), var_1) - -- fun_t_totalize: `%%`(n, var_0) + def $t_totalize3{n : nat}(n) = (iter_val#2 + iter_val#1)?{iter_val#2 <- $t_totalize(n), iter_val#1 <- $t_totalize2((n + 10))} == IL Validation after pass sideconditions... == Running pass alias-demut... @@ -428,48 +382,25 @@ relation TestNestedIter: `%|-%`(nat***, nat**) -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} ;; test.spectec -relation fun_t_totalize_before_fun_t_totalize_case_2: `%`(nat) - ;; test.spectec - rule fun_t_totalize_case_1: - `%`(10) - - ;; test.spectec - rule fun_t_totalize_case_0: - `%`(3) - -;; test.spectec -relation fun_t_totalize: `%%`(nat, nat?) - ;; test.spectec - rule fun_t_totalize_case_0: - `%%`(3, ?(5)) - +def $t_totalize(nat : nat) : nat? ;; test.spectec - rule fun_t_totalize_case_1: - `%%`(10, ?(20)) - + def $t_totalize(3) = ?(5) ;; test.spectec - rule fun_t_totalize_case_2{x0 : nat}: - `%%`(x0, ?()) - -- ~ fun_t_totalize_before_fun_t_totalize_case_2: `%`(x0) + def $t_totalize(10) = ?(20) + def $t_totalize{x0 : nat}(x0) = ?() + -- otherwise ;; test.spectec -relation fun_t_totalize2: `%%`(nat, nat?) +def $t_totalize2(nat : nat) : nat? ;; test.spectec - rule fun_t_totalize2_case_0: - `%%`(1, ?(2)) - + def $t_totalize2(1) = ?(2) ;; test.spectec - rule fun_t_totalize2_case_1{n : nat, var_0 : nat?}: - `%%`(n, var_0) - -- fun_t_totalize: `%%`(n, var_0) + def $t_totalize2{n : nat}(n) = $t_totalize(n) ;; test.spectec -relation fun_t_totalize3: `%%`(nat, nat?) +def $t_totalize3(nat : nat) : nat? ;; test.spectec - rule fun_t_totalize3_case_0{n : nat, var_1 : nat?, var_0 : nat?}: - `%%`(n, (iter_val#2 + iter_val#1)?{iter_val#2 <- var_0, iter_val#1 <- var_1}) - -- fun_t_totalize2: `%%`((n + 10), var_1) - -- fun_t_totalize: `%%`(n, var_0) + def $t_totalize3{n : nat}(n) = (iter_val#2 + iter_val#1)?{iter_val#2 <- $t_totalize(n), iter_val#1 <- $t_totalize2((n + 10))} == IL Validation after pass alias-demut... == Running pass improve-ids... @@ -487,48 +418,25 @@ relation TestNestedIter: `%|-%`(nat***, nat**) -- (if (|n_lst| = m))*{m <- m_lst, n_lst <- n_lst_lst}+{m_lst <- m_lst_lst, n_lst_lst <- n_lst_lst_lst} ;; test.spectec -relation fun_t_totalize_before_fun_t_totalize_case_2: `%`(nat) - ;; test.spectec - rule fun_t_totalize_case_1: - `%`(10) - - ;; test.spectec - rule fun_t_totalize_case_0: - `%`(3) - -;; test.spectec -relation fun_t_totalize: `%%`(nat, nat?) - ;; test.spectec - rule fun_t_totalize_case_0: - `%%`(3, ?(5)) - +def $t_totalize(nat : nat) : nat? ;; test.spectec - rule fun_t_totalize_case_1: - `%%`(10, ?(20)) - + def $t_totalize(3) = ?(5) ;; test.spectec - rule fun_t_totalize_case_2{x0 : nat}: - `%%`(x0, ?()) - -- ~ fun_t_totalize_before_fun_t_totalize_case_2: `%`(x0) + def $t_totalize(10) = ?(20) + def $t_totalize{x0 : nat}(x0) = ?() + -- otherwise ;; test.spectec -relation fun_t_totalize2: `%%`(nat, nat?) +def $t_totalize2(nat : nat) : nat? ;; test.spectec - rule fun_t_totalize2_case_0: - `%%`(1, ?(2)) - + def $t_totalize2(1) = ?(2) ;; test.spectec - rule fun_t_totalize2_case_1{n : nat, var_0 : nat?}: - `%%`(n, var_0) - -- fun_t_totalize: `%%`(n, var_0) + def $t_totalize2{n : nat}(n) = $t_totalize(n) ;; test.spectec -relation fun_t_totalize3: `%%`(nat, nat?) +def $t_totalize3(nat : nat) : nat? ;; test.spectec - rule fun_t_totalize3_case_0{n : nat, var_1 : nat?, var_0 : nat?}: - `%%`(n, (iter_val#2 + iter_val#1)?{iter_val#2 <- var_0, iter_val#1 <- var_1}) - -- fun_t_totalize2: `%%`((n + 10), var_1) - -- fun_t_totalize: `%%`(n, var_0) + def $t_totalize3{n : nat}(n) = (iter_val#2 + iter_val#1)?{iter_val#2 <- $t_totalize(n), iter_val#1 <- $t_totalize2((n + 10))} == IL Validation after pass improve-ids... == Complete. From f93d7a47fc4ede8463594b9c2fe835546a1e2f37 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 18 May 2026 16:05:05 +0100 Subject: [PATCH 075/115] Fix tests and ordering of premises (in anticipation of let) --- spectec/src/middlend/deftorel.ml | 2 +- .../09-definition-to-relation.il | 367 ++++++++-------- .../specification.exp/10-sideconditions.il | 391 +++++++++--------- .../specification.exp/11-alias-demut.il | 391 +++++++++--------- .../specification.exp/12-improve-ids.il | 391 +++++++++--------- 5 files changed, 765 insertions(+), 777 deletions(-) diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index 26830a332c..77f9662b64 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -589,7 +589,7 @@ let cvt_def_to_rel env id params r_typ clauses = let fcalls = collect_exp c exp @ List.concat_map (collect_prem c) prems in let call_map, new_quants, new_prems = create_call_map fcalls quants in let tupe = TupE (exps @ [transform_exp_normal call_map env exp]) $$ id.at % (TupT tup_types $ id.at) in - RuleD (fun_prefix ^ id.it ^ "_case_" ^ Int.to_string i $ id.at, quants @ new_quants, new_mixop, tupe, List.map (transform_prem_normal call_map env) (new_prems @ prems)) $ id.at + RuleD (fun_prefix ^ id.it ^ "_case_" ^ Int.to_string i $ id.at, quants @ new_quants, new_mixop, tupe, List.map (transform_prem_normal call_map env) (prems @ new_prems)) $ id.at ) clauses in let new_id = { id with it = fun_prefix ^ id.it } in diff --git a/spectec/test-middlend/specification.exp/09-definition-to-relation.il b/spectec/test-middlend/specification.exp/09-definition-to-relation.il index 0f3652560e..7553794a2c 100644 --- a/spectec/test-middlend/specification.exp/09-definition-to-relation.il +++ b/spectec/test-middlend/specification.exp/09-definition-to-relation.il @@ -419,35 +419,35 @@ relation fun_utf8: `%%`(char*, byte*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: `%%`([ch], [b_1 b_2]) - -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) + -- fun_cont: `%%`(b_2, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: `%%`([ch], [b_1 b_2 b_3]) - -- fun_cont: `%%`(b_3, var_1) - -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * var_0)) + var_1)) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 rule fun_utf8_case_4{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, var_2 : nat, var_1 : nat, var_0 : nat}: `%%`([ch], [b_1 b_2 b_3 b_4]) - -- fun_cont: `%%`(b_4, var_2) - -- fun_cont: `%%`(b_3, var_1) - -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- wf_byte: `%`(b_3) -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * var_0)) + ((2 ^ 6) * var_1)) + var_2)) + -- fun_cont: `%%`(b_4, var_2) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -1936,27 +1936,26 @@ relation fun_subst_typevar: `%%%%`(typevar, typevar*, typeuse*, typeuse?) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 relation fun_minus_recs_before_fun_minus_recs_case_3: `%%`(typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_0 : (typevar*, typeuse*)?}: `%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}) - -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) -- (wf_typevar: `%`(tv'#2))*{tv'#2 <- `tv'*`} -- (wf_typeuse: `%`(tu'#2))*{tu'#2 <- `tu'*`} -- wf_typevar: `%`(_IDX_typevar(x)) -- if ((tv'#3*{tv'#3 <- `tv'*`}, tu'#3*{tu'#3 <- `tu'*`}) = !(var_0)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)?}: `%%`([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_minus_recs_case_0: `%%`([], []) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 @@ -1971,11 +1970,11 @@ relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_0 : (typevar*, typeuse*)?}: `%%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}, ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}))) - -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) -- (wf_typevar: `%`(tv'#2))*{tv'#2 <- `tv'*`} -- (wf_typeuse: `%`(tu'#2))*{tu'#2 <- `tu'*`} -- wf_typevar: `%`(_IDX_typevar(x)) -- if ((tv'#3*{tv'#3 <- `tv'*`}, tu'#3*{tu'#3 <- `tu'*`}) = !(var_0)) + -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 rule fun_minus_recs_case_3{x0 : typevar*, x1 : typeuse*}: @@ -2044,9 +2043,9 @@ relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 rule fun_subst_reftype_case_0{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : heaptype, var_0 : heaptype}: `%%%%`(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`}, REF_reftype(null?{null <- `null?`}, var_0)) + -- wf_reftype: `%`(REF_reftype(null#2?{null#2 <- `null?`}, var_1)) -- fun_subst_heaptype: `%%%%`(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}, var_1) -- fun_subst_heaptype: `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_reftype: `%`(REF_reftype(null#2?{null#2 <- `null?`}, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 relation fun_subst_valtype: `%%%%`(valtype, typevar*, typeuse*, valtype) @@ -2130,56 +2129,56 @@ relation fun_subst_fieldtype: `%%%%`(fieldtype, typevar*, typeuse*, fieldtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 rule fun_subst_fieldtype_case_0{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : storagetype, var_0 : storagetype}: `%%%%`(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`}, `%%`_fieldtype(mut?{mut <- `mut?`}, var_0)) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut#2?{mut#2 <- `mut?`}, var_1)) -- fun_subst_storagetype: `%%%%`(zt, tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}, var_1) -- fun_subst_storagetype: `%%%%`(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut#2?{mut#2 <- `mut?`}, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_0{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : fieldtype*, `var_0*` : fieldtype*}: `%%%%`(STRUCT_comptype(`%`_list(ft#1*{ft#1 <- `ft*`})), tv#55*{tv#55 <- `tv*`}, tu#55*{tu#55 <- `tu*`}, STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_1*{var_1 <- `var_1*`}))) -- (fun_subst_fieldtype: `%%%%`(ft#2, tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`}, var_1))*{var_1 <- `var_1*`, ft#2 <- `ft*`} -- (fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, ft <- `ft*`} - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_1*{var_1 <- `var_1*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_1{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : fieldtype, var_0 : fieldtype}: `%%%%`(ARRAY_comptype(ft), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}, ARRAY_comptype(var_0)) + -- wf_comptype: `%`(ARRAY_comptype(var_1)) -- fun_subst_fieldtype: `%%%%`(ft, tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}, var_1) -- fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_comptype: `%`(ARRAY_comptype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_2{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_3*` : valtype*, `var_2*` : valtype*, `var_1*` : valtype*, `var_0*` : valtype*}: `%%%%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}, `FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_2*{var_2 <- `var_2*`}), `%`_resulttype(var_3*{var_3 <- `var_3*`}))) -- (fun_subst_valtype: `%%%%`(t_2#2, tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`}, var_3))*{var_3 <- `var_3*`, t_2#2 <- `t_2*`} -- (fun_subst_valtype: `%%%%`(t_1#2, tv#60*{tv#60 <- `tv*`}, tu#60*{tu#60 <- `tu*`}, var_2))*{var_2 <- `var_2*`, t_1#2 <- `t_1*`} -- (fun_subst_valtype: `%%%%`(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, t_2 <- `t_2*`} -- (fun_subst_valtype: `%%%%`(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, t_1 <- `t_1*`} - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_2*{var_2 <- `var_2*`}), `%`_resulttype(var_3*{var_3 <- `var_3*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 rule fun_subst_subtype_case_0{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, var_3 : comptype, `var_2*` : typeuse*, var_1 : comptype, `var_0*` : typeuse*}: `%%%%`(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#4*{tu'#4 <- `tu'*`}, ct), tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`}, SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) + -- wf_subtype: `%`(SUB_subtype(final#2?{final#2 <- `final?`}, var_2*{var_2 <- `var_2*`}, var_3)) -- fun_subst_comptype: `%%%%`(ct, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}, var_3) -- (fun_subst_typeuse: `%%%%`(tu'#5, tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`}, var_2))*{var_2 <- `var_2*`, tu'#5 <- `tu'*`} -- fun_subst_comptype: `%%%%`(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) -- (fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, tu' <- `tu'*`} - -- wf_subtype: `%`(SUB_subtype(final#2?{final#2 <- `final?`}, var_2*{var_2 <- `var_2*`}, var_3)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 rule fun_subst_rectype_case_0{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_1 : (typevar*, typeuse*)?, `var_0*` : subtype*}: `%%%%`(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}, REC_rectype(`%`_list(var_0*{var_0 <- `var_0*`}))) - -- fun_minus_recs: `%%%`(tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}, var_1) - -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} -- (wf_typevar: `%`(tv'#4))*{tv'#4 <- `tv'*`} -- (wf_typeuse: `%`(tu'#6))*{tu'#6 <- `tu'*`} -- if ((tv'#5*{tv'#5 <- `tv'*`}, tu'#7*{tu'#7 <- `tu'*`}) = !(var_1)) + -- fun_minus_recs: `%%%`(tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}, var_1) + -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 relation fun_subst_deftype: `%%%%`(deftype, typevar*, typeuse*, deftype) @@ -2206,9 +2205,9 @@ relation fun_subst_globaltype: `%%%%`(globaltype, typevar*, typeuse*, globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_globaltype_case_0{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : valtype, var_0 : valtype}: `%%%%`(`%%`_globaltype(mut#3?{mut#3 <- `mut?`}, t), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}, `%%`_globaltype(mut?{mut <- `mut?`}, var_0)) + -- wf_globaltype: `%`(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, var_1)) -- fun_subst_valtype: `%%%%`(t, tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}, var_1) -- fun_subst_valtype: `%%%%`(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_globaltype: `%`(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation fun_subst_memtype: `%%%%`(memtype, typevar*, typeuse*, memtype) @@ -2222,129 +2221,129 @@ relation fun_subst_tabletype: `%%%%`(tabletype, typevar*, typeuse*, tabletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_tabletype_case_0{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : reftype, var_0 : reftype}: `%%%%`(`%%%`_tabletype(at, lim, rt), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}, `%%%`_tabletype(at, lim, var_0)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, var_1)) -- fun_subst_reftype: `%%%%`(rt, tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}, var_1) -- fun_subst_reftype: `%%%%`(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation fun_subst_externtype: `%%%%`(externtype, typevar*, typeuse*, externtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_0{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_1 : tagtype, var_0 : tagtype}: `%%%%`(TAG_externtype(jt), tv#75*{tv#75 <- `tv*`}, tu#75*{tu#75 <- `tu*`}, TAG_externtype(var_0)) + -- wf_externtype: `%`(TAG_externtype(var_1)) -- fun_subst_tagtype: `%%%%`(jt, tv#76*{tv#76 <- `tv*`}, tu#76*{tu#76 <- `tu*`}, var_1) -- fun_subst_tagtype: `%%%%`(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_externtype: `%`(TAG_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_1{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : globaltype, var_0 : globaltype}: `%%%%`(GLOBAL_externtype(gt), tv#77*{tv#77 <- `tv*`}, tu#77*{tu#77 <- `tu*`}, GLOBAL_externtype(var_0)) + -- wf_externtype: `%`(GLOBAL_externtype(var_1)) -- fun_subst_globaltype: `%%%%`(gt, tv#78*{tv#78 <- `tv*`}, tu#78*{tu#78 <- `tu*`}, var_1) -- fun_subst_globaltype: `%%%%`(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_externtype: `%`(GLOBAL_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_2{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : tabletype, var_0 : tabletype}: `%%%%`(TABLE_externtype(tt), tv#79*{tv#79 <- `tv*`}, tu#79*{tu#79 <- `tu*`}, TABLE_externtype(var_0)) + -- wf_externtype: `%`(TABLE_externtype(var_1)) -- fun_subst_tabletype: `%%%%`(tt, tv#80*{tv#80 <- `tv*`}, tu#80*{tu#80 <- `tu*`}, var_1) -- fun_subst_tabletype: `%%%%`(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_externtype: `%`(TABLE_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_3{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : memtype, var_0 : memtype}: `%%%%`(MEM_externtype(mt), tv#81*{tv#81 <- `tv*`}, tu#81*{tu#81 <- `tu*`}, MEM_externtype(var_0)) + -- wf_externtype: `%`(MEM_externtype(var_1)) -- fun_subst_memtype: `%%%%`(mt, tv#82*{tv#82 <- `tv*`}, tu#82*{tu#82 <- `tu*`}, var_1) -- fun_subst_memtype: `%%%%`(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_externtype: `%`(MEM_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_4{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_1 : typeuse, var_0 : typeuse}: `%%%%`(FUNC_externtype(tu'), tv#83*{tv#83 <- `tv*`}, tu#83*{tu#83 <- `tu*`}, FUNC_externtype(var_0)) + -- wf_externtype: `%`(FUNC_externtype(var_1)) -- fun_subst_typeuse: `%%%%`(tu', tv#84*{tv#84 <- `tv*`}, tu#84*{tu#84 <- `tu*`}, var_1) -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_externtype: `%`(FUNC_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_moduletype_case_0{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_3*` : externtype*, `var_2*` : externtype*, `var_1*` : externtype*, `var_0*` : externtype*}: `%%%%`(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#85*{tv#85 <- `tv*`}, tu#85*{tu#85 <- `tu*`}, `%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) + -- wf_moduletype: `%`(`%->%`_moduletype(var_2*{var_2 <- `var_2*`}, var_3*{var_3 <- `var_3*`})) -- (fun_subst_externtype: `%%%%`(xt_2#2, tv#87*{tv#87 <- `tv*`}, tu#87*{tu#87 <- `tu*`}, var_3))*{var_3 <- `var_3*`, xt_2#2 <- `xt_2*`} -- (fun_subst_externtype: `%%%%`(xt_1#2, tv#86*{tv#86 <- `tv*`}, tu#86*{tu#86 <- `tu*`}, var_2))*{var_2 <- `var_2*`, xt_1#2 <- `xt_1*`} -- (fun_subst_externtype: `%%%%`(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, xt_2 <- `xt_2*`} -- (fun_subst_externtype: `%%%%`(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, xt_1 <- `xt_1*`} - -- wf_moduletype: `%`(`%->%`_moduletype(var_2*{var_2 <- `var_2*`}, var_3*{var_3 <- `var_3*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation fun_subst_all_valtype: `%%%`(valtype, typeuse*, valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_all_valtype_case_0{t : valtype, n : nat, `tu*` : typeuse*, i : nat, var_0 : valtype}: `%%%`(t, tu#88^n{tu#88 <- `tu*`}, var_0) - -- fun_subst_valtype: `%%%%`(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ var_0) - -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -5804,11 +5803,11 @@ relation fun_free_block: `%%`(instr*, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 rule fun_free_block_case_0{`instr*` : instr*, free : free, `var_2*` : free*, var_1 : free, var_0 : labelidx*}: `%%`(instr#4*{instr#4 <- `instr*`}, free[LABELS_free = var_0]) + -- wf_free: `%`(free) + -- if (free = var_1) -- (fun_free_instr: `%%`(instr#5, var_2))*{var_2 <- `var_2*`, instr#5 <- `instr*`} -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) -- fun_shift_labelidxs: `%%`(free.LABELS_free, var_0) - -- wf_free: `%`(free) - -- if (free = var_1) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -6271,9 +6270,9 @@ relation fun_clos_deftypes: `%%`(deftype*, deftype*) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 rule fun_clos_deftypes_case_1{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: `%%`(dt#2*{dt#2 <- `dt*`} ++ [dt_n], dt'*{dt' <- `dt'*`} ++ [var_0]) + -- if (dt'#1*{dt'#1 <- `dt'*`} = var_1) -- fun_clos_deftypes: `%%`(dt#3*{dt#3 <- `dt*`}, var_1) -- fun_subst_all_deftype: `%%%`(dt_n, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) - -- if (dt'#1*{dt'#1 <- `dt'*`} = var_1) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -6281,45 +6280,45 @@ relation fun_clos_valtype: `%%%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_valtype_case_0{C : context, t : valtype, `dt*` : deftype*, var_1 : deftype*, var_0 : valtype}: `%%%`(C, t, var_0) + -- if (dt#4*{dt#4 <- `dt*`} = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) - -- if (dt#4*{dt#4 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation fun_clos_deftype: `%%%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_deftype_case_0{C : context, dt : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: `%%%`(C, dt, var_0) + -- if (dt'#2*{dt'#2 <- `dt'*`} = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_deftype: `%%%`(dt, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) - -- if (dt'#2*{dt'#2 <- `dt'*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation fun_clos_tagtype: `%%%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_tagtype_case_0{C : context, jt : typeuse, `dt*` : deftype*, var_1 : deftype*, var_0 : tagtype}: `%%%`(C, jt, var_0) + -- if (dt#5*{dt#5 <- `dt*`} = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_tagtype: `%%%`(jt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) - -- if (dt#5*{dt#5 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation fun_clos_externtype: `%%%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_externtype_case_0{C : context, xt : externtype, `dt*` : deftype*, var_1 : deftype*, var_0 : externtype}: `%%%`(C, xt, var_0) + -- if (dt#6*{dt#6 <- `dt*`} = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_externtype: `%%%`(xt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) - -- if (dt#6*{dt#6 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation fun_clos_moduletype: `%%%`(context, moduletype, moduletype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_moduletype_case_0{C : context, mmt : moduletype, `dt*` : deftype*, var_1 : deftype*, var_0 : moduletype}: `%%%`(C, mmt, var_0) + -- if (dt#7*{dt#7 <- `dt*`} = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_moduletype: `%%%`(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) - -- if (dt#7*{dt#7 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -7273,13 +7272,11 @@ relation fun_default__before_fun_default__case_7: `%`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_3{var_0 : fN}: `%`(F64_valtype) - -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_2{var_0 : fN}: `%`(F32_valtype) - -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -7307,14 +7304,14 @@ relation fun_default_: `%%`(valtype, val??) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_2{var_0 : fN}: `%%`(F32_valtype, ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))))) - -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_3{var_0 : fN}: `%%`(F64_valtype, ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))))) - -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_4: @@ -8854,8 +8851,8 @@ relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule fun_funcidx_nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*, var_0 : funcidx*}: `%%`(`%%%%%%`_nonfuncs(global#2*{global#2 <- `global*`}, mem#2*{mem#2 <- `mem*`}, table#2*{table#2 <- `table*`}, elem#2*{elem#2 <- `elem*`}, start#2?{start#2 <- `start?`}, export#2*{export#2 <- `export*`}), var_0) - -- fun_funcidx_module: `%%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#3*{export#3 <- `export*`}))) + -- fun_funcidx_module: `%%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) @@ -9088,14 +9085,14 @@ relation fun_zero: `%%`(lanetype, lane_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_zero_case_4{var_0 : fN}: `%%`(F32_lanetype, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) - -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_zero_case_5{var_0 : fN}: `%%`(F64_lanetype, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) - -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -9151,9 +9148,9 @@ relation fun_iextend_: `%%%%%`(N, M, sx, iN, iN) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_iextend__case_1{N : nat, M : nat, i : uN, var_1 : int, var_0 : nat}: `%%%%%`(N, M, S_sx, i, `%`_iN(var_0)) + -- wf_uN: `%%`(N, `%`_uN(var_0)) -- fun_signed_: `%%%`(M, ($proj_uN_0(i).0 \ (2 ^ M)), var_1) -- fun_inv_signed_: `%%%`(N, var_1, var_0) - -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN @@ -9191,17 +9188,17 @@ relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_idiv__case_3{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: `%%%%%`(N, S_sx, i_1, i_2, ?()) + -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) - -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_idiv__case_4{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- wf_uN: `%%`(N, `%`_uN(var_0)) -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) -- fun_inv_signed_: `%%%`(N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) - -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) @@ -9221,11 +9218,11 @@ relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_irem__case_3{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + -- if ((j_1 = var_1) /\ (j_2 = var_2)) -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) -- fun_inv_signed_: `%%%`(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) - -- wf_uN: `%%`(N, `%`_uN(var_0)) - -- if ((j_1 = var_1) /\ (j_2 = var_2)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -9659,14 +9656,14 @@ relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_unop__case_6{M : nat, i : uN, var_0 : uN}: `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, var_0)]) - -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i, var_0) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, var_0)) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_unop__case_7{M : nat, i : uN, var_0 : uN}: `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, var_0)]) - -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i, var_0) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, var_0)) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_unop__case_8{f : fN}: @@ -9773,26 +9770,26 @@ relation fun_binop_: `%%%%%`(numtype, binop_, num_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_6{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#30)*{iter_0#30 <- lift(var_0)}) - -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#29)))*{iter_0#29 <- lift(var_0)} + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_7{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#32)*{iter_0#32 <- lift(var_0)}) - -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#31)))*{iter_0#31 <- lift(var_0)} + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_8{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift(var_0)}) - -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#33)))*{iter_0#33 <- lift(var_0)} + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_9{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift(var_0)}) - -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#35)))*{iter_0#35 <- lift(var_0)} + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_10{i_1 : uN, i_2 : uN}: @@ -12241,9 +12238,6 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1, v) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#171, var_2))*{var_2 <- `var_2*`, c_1#171 <- `c_1*`} - -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) - -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1#169))*{c_1#169 <- `c_1*`} -- (wf_lane_: `%%`(Lnn_2, c#303))*{c#303 <- `c*#43`}*{`c*#43` <- `c**`} @@ -12253,12 +12247,13 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (c_1#170*{c_1#170 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) -- if (c#304*{c#304 <- `c*#44`}*{`c*#44` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#305*{c#305 <- `c*#45`})*{`c*#45` <- `c**`}) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#171, var_2))*{var_2 <- `var_2*`, c_1#171 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**, `var_1*` : lane_**, var_0 : half?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#174, var_1))*{var_1 <- `var_1*`, c_1#174 <- `c_1*`} - -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1#172))*{c_1#172 <- `c_1*`} -- (wf_lane_: `%%`(Lnn_2, c#306))*{c#306 <- `c*#46`}*{`c*#46` <- `c**`} @@ -12268,13 +12263,12 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (c_1#173*{c_1#173 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) -- if (c#307*{c#307 <- `c*#47`}*{`c*#47` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#308*{c#308 <- `c*#48`})*{`c*#48` <- `c**`}) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#174, var_1))*{var_1 <- `var_1*`, c_1#174 <- `c_1*`} + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, var_2 : lane_, `var_1*` : lane_**, var_0 : zero?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) - -- fun_zero: `%%`(Lnn_2, var_2) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#177, var_1))*{var_1 <- `var_1*`, c_1#177 <- `c_1*`} - -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1#175))*{c_1#175 <- `c_1*`} -- (wf_lane_: `%%`(Lnn_2, c#309))*{c#309 <- `c*#49`}*{`c*#49` <- `c**`} @@ -12284,6 +12278,9 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (c_1#176*{c_1#176 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) -- if (c#310*{c#310 <- `c*#50`}*{`c*#50` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`} ++ [var_2]^M_1{})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#311*{c#311 <- `c*#51`})*{`c*#51` <- `c**`}) + -- fun_zero: `%%`(Lnn_2, var_2) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#177, var_1))*{var_1 <- `var_1*`, c_1#177 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec relation fun_vshiftop_: `%%%%%`(ishape, vshiftop_, vec_, u32, vec_) @@ -12332,26 +12329,26 @@ relation fun_vbitmaskop_: `%%%`(ishape, vec_, u32) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vbitmaskop__case_0{M : nat, v : uN, var_0 : u32}: `%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v, var_0) - -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vbitmaskop__case_1{M : nat, v : uN, var_0 : u32}: `%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v, var_0) - -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vbitmaskop__case_2{M : nat, v : uN, var_0 : u32}: `%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v, var_0) - -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vbitmaskop__case_3{M : nat, v : uN, var_0 : u32}: `%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v, var_0) - -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec relation fun_vswizzlop_: `%%%%%`(bshape, vswizzlop_, vec_, vec_, vec_) @@ -12370,8 +12367,8 @@ relation fun_vshufflop_: `%%%%%`(bshape, laneidx*, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, var_0 : vec_}: `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#129110*{i#129110 <- `i*`}, v_1, v_2, var_0) - -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, var_0) -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) @@ -13539,9 +13536,6 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_0{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13557,13 +13551,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c' = var_0) -- if (c'' = var_1) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_1{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13579,13 +13573,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c' = var_0) -- if (c'' = var_1) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_2{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13601,13 +13595,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c' = var_0) -- if (c'' = var_1) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_3{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13623,13 +13617,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c' = var_0) -- if (c'' = var_1) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_4{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13645,13 +13639,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c' = var_0) -- if (c'' = var_1) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_5{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13667,13 +13661,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c' = var_0) -- if (c'' = var_1) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_6{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13689,13 +13683,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c' = var_0) -- if (c'' = var_1) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_7{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13711,13 +13705,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c' = var_0) -- if (c'' = var_1) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_8{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13733,13 +13727,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c' = var_0) -- if (c'' = var_1) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_9{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13755,13 +13749,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c' = var_0) -- if (c'' = var_1) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_10{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13777,13 +13771,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c' = var_0) -- if (c'' = var_1) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_11{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13799,13 +13793,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c' = var_0) -- if (c'' = var_1) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_12{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13821,13 +13815,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c' = var_0) -- if (c'' = var_1) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_13{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13843,13 +13837,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c' = var_0) -- if (c'' = var_1) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_14{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13865,13 +13859,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c' = var_0) -- if (c'' = var_1) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_15{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13887,6 +13881,9 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c' = var_0) -- if (c'' = var_1) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax num = @@ -18007,14 +18004,14 @@ relation fun_alloctypes: `%%`(type*, deftype*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 rule fun_alloctypes_case_1{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN, var_2 : deftype*, var_1 : deftype*, var_0 : deftype*}: `%%`(type'#1*{type'#1 <- `type'*`} ++ [type], deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`}) - -- fun_rolldt: `%%%`(x, rectype, var_2) - -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype'#2)*{deftype'#2 <- `deftype'*`}, var_1) - -- fun_alloctypes: `%%`(type'#2*{type'#2 <- `type'*`}, var_0) -- wf_uN: `%%`(32, x) -- if (deftype'#1*{deftype'#1 <- `deftype'*`} = var_0) -- if (type = TYPE_type(rectype)) -- if (deftype#1*{deftype#1 <- `deftype*`} = var_1) -- if ($proj_uN_0(x).0 = |deftype'#3*{deftype'#3 <- `deftype'*`}|) + -- fun_rolldt: `%%%`(x, rectype, var_2) + -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype'#2)*{deftype'#2 <- `deftype'*`}, var_1) + -- fun_alloctypes: `%%`(type'#2*{type'#2 <- `type'*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18038,12 +18035,12 @@ relation fun_alloctags: `%%%`(store, tagtype*, (store, tagaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 rule fun_alloctags_case_1{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store, var_1 : (store, tagaddr*), var_0 : (store, tagaddr)}: `%%%`(s, [tagtype] ++ tagtype'#1*{tagtype'#1 <- `tagtype'*`}, (s_2, [ja] ++ ja'*{ja' <- `ja'*`})) - -- fun_alloctags: `%%%`(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}, var_1) - -- fun_alloctag: `%%%`(s, tagtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ja) = var_0) -- if ((s_2, ja'#1*{ja'#1 <- `ja'*`}) = var_1) + -- fun_alloctags: `%%%`(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}, var_1) + -- fun_alloctag: `%%%`(s, tagtype, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18067,12 +18064,12 @@ relation fun_allocglobals: `%%%%`(store, globaltype*, val*, (store, globaladdr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 rule fun_allocglobals_case_1{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store, var_1 : (store, globaladdr*), var_0 : (store, globaladdr)}: `%%%%`(s, [globaltype] ++ globaltype'#1*{globaltype'#1 <- `globaltype'*`}, [val] ++ val'#1*{val'#1 <- `val'*`}, (s_2, [ga] ++ ga'*{ga' <- `ga'*`})) - -- fun_allocglobals: `%%%%`(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}, var_1) - -- fun_allocglobal: `%%%%`(s, globaltype, val, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ga) = var_0) -- if ((s_2, ga'#1*{ga'#1 <- `ga'*`}) = var_1) + -- fun_allocglobals: `%%%%`(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, globaltype, val, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18096,12 +18093,12 @@ relation fun_allocmems: `%%%`(store, memtype*, (store, memaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 rule fun_allocmems_case_1{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store, var_1 : (store, memaddr*), var_0 : (store, memaddr)}: `%%%`(s, [memtype] ++ memtype'#1*{memtype'#1 <- `memtype'*`}, (s_2, [ma] ++ ma'*{ma' <- `ma'*`})) - -- fun_allocmems: `%%%`(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}, var_1) - -- fun_allocmem: `%%%`(s, memtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ma) = var_0) -- if ((s_2, ma'#1*{ma'#1 <- `ma'*`}) = var_1) + -- fun_allocmems: `%%%`(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}, var_1) + -- fun_allocmem: `%%%`(s, memtype, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18125,12 +18122,12 @@ relation fun_alloctables: `%%%%`(store, tabletype*, ref*, (store, tableaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 rule fun_alloctables_case_1{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store, var_1 : (store, tableaddr*), var_0 : (store, tableaddr)}: `%%%%`(s, [tabletype] ++ tabletype'#1*{tabletype'#1 <- `tabletype'*`}, [ref] ++ ref'#1*{ref'#1 <- `ref'*`}, (s_2, [ta] ++ ta'*{ta' <- `ta'*`})) - -- fun_alloctables: `%%%%`(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}, var_1) - -- fun_alloctable: `%%%%`(s, tabletype, ref, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ta) = var_0) -- if ((s_2, ta'#1*{ta'#1 <- `ta'*`}) = var_1) + -- fun_alloctables: `%%%%`(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}, var_1) + -- fun_alloctable: `%%%%`(s, tabletype, ref, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18154,12 +18151,12 @@ relation fun_allocfuncs: `%%%%%`(store, deftype*, funccode*, moduleinst*, (store ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 rule fun_allocfuncs_case_1{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store, var_1 : (store, funcaddr*), var_0 : (store, funcaddr)}: `%%%%%`(s, [dt] ++ dt'#3*{dt'#3 <- `dt'*`}, [funccode] ++ funccode'#1*{funccode'#1 <- `funccode'*`}, [moduleinst] ++ moduleinst'#1*{moduleinst'#1 <- `moduleinst'*`}, (s_2, [fa] ++ fa'*{fa' <- `fa'*`})) - -- fun_allocfuncs: `%%%%%`(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}, var_1) - -- fun_allocfunc: `%%%%%`(s, dt, funccode, moduleinst, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, fa) = var_0) -- if ((s_2, fa'#1*{fa'#1 <- `fa'*`}) = var_1) + -- fun_allocfuncs: `%%%%%`(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}, var_1) + -- fun_allocfunc: `%%%%%`(s, dt, funccode, moduleinst, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18183,12 +18180,12 @@ relation fun_allocdatas: `%%%%`(store, datatype*, byte**, (store, dataaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 rule fun_allocdatas_case_1{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store, var_1 : (store, dataaddr*), var_0 : (store, dataaddr)}: `%%%%`(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#10*{b#10 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}, (s_2, [da] ++ da'*{da' <- `da'*`})) - -- fun_allocdatas: `%%%%`(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}, var_1) - -- fun_allocdata: `%%%%`(s, ok, b#11*{b#11 <- `b*`}, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, da) = var_0) -- if ((s_2, da'#1*{da'#1 <- `da'*`}) = var_1) + -- fun_allocdatas: `%%%%`(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}, var_1) + -- fun_allocdata: `%%%%`(s, ok, b#11*{b#11 <- `b*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18212,12 +18209,12 @@ relation fun_allocelems: `%%%%`(store, elemtype*, ref**, (store, elemaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 rule fun_allocelems_case_1{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store, var_1 : (store, elemaddr*), var_0 : (store, elemaddr)}: `%%%%`(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#3*{ref'#3 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}, (s_2, [ea] ++ ea'*{ea' <- `ea'*`})) - -- fun_allocelems: `%%%%`(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#4*{ref'#4 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}, var_1) - -- fun_allocelem: `%%%%`(s, rt, ref#5*{ref#5 <- `ref*`}, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ea) = var_0) -- if ((s_2, ea'#1*{ea'#1 <- `ea'*`}) = var_1) + -- fun_allocelems: `%%%%`(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#4*{ref'#4 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}, var_1) + -- fun_allocelem: `%%%%`(s, rt, ref#5*{ref#5 <- `ref*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18259,25 +18256,6 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_18 : exportinst*, var_17 : (store, funcaddr*), `var_16*` : elemtype*, var_15 : (store, elemaddr*), var_14 : (store, dataaddr*), `var_13*` : tabletype*, var_12 : (store, tableaddr*), `var_11*` : memtype*, var_10 : (store, memaddr*), `var_9*` : globaltype*, var_8 : (store, globaladdr*), `var_7*` : tagtype*, var_6 : (store, tagaddr*), var_5 : deftype*, var_4 : funcaddr*, var_3 : tableaddr*, var_2 : memaddr*, var_1 : globaladdr*, var_0 : tagaddr*}: `%%%%%%%`(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}, (s_7, moduleinst)) - -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#7*{export#7 <- `export*`}, var_18) - -- fun_allocfuncs: `%%%%%`(s_6, dt#15*{dt#15 <- `dt*`}[$proj_uN_0(x#4).0]*{x#4 <- `x*`}, FUNC_funccode(x#5, local#4*{local#4 <- `local*#86`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#86` <- `local**`, x#5 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_17) - -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- `dt*`}, var_16))*{var_16 <- `var_16*`, elemtype#3 <- `elemtype*`} - -- fun_allocelems: `%%%%`(s_5, var_16*{var_16 <- `var_16*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_15) - -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#114`}*{`byte*#114` <- `byte**`}, var_14) - -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_13))*{var_13 <- `var_13*`, tabletype#160 <- `tabletype*`} - -- fun_alloctables: `%%%%`(s_3, var_13*{var_13 <- `var_13*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_12) - -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_11))*{var_11 <- `var_11*`, memtype#126 <- `memtype*`} - -- fun_allocmems: `%%%`(s_2, var_11*{var_11 <- `var_11*`}, var_10) - -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_9))*{var_9 <- `var_9*`, globaltype#126 <- `globaltype*`} - -- fun_allocglobals: `%%%%`(s_1, var_9*{var_9 <- `var_9*`}, val_G#2*{val_G#2 <- `val_G*`}, var_8) - -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_7))*{var_7 <- `var_7*`, tagtype#82 <- `tagtype*`} - -- fun_alloctags: `%%%`(s, var_7*{var_7 <- `var_7*`}, var_6) - -- fun_alloctypes: `%%`(type#4*{type#4 <- `type*`}, var_5) - -- fun_funcsxa: `%%`(externaddr#6*{externaddr#6 <- `externaddr*`}, var_4) - -- fun_tablesxa: `%%`(externaddr#5*{externaddr#5 <- `externaddr*`}, var_3) - -- fun_memsxa: `%%`(externaddr#4*{externaddr#4 <- `externaddr*`}, var_2) - -- fun_globalsxa: `%%`(externaddr#3*{externaddr#3 <- `externaddr*`}, var_1) - -- fun_tagsxa: `%%`(externaddr#2*{externaddr#2 <- `externaddr*`}, var_0) -- wf_store: `%`(s_7) -- wf_moduleinst: `%`(moduleinst) -- wf_store: `%`(s_1) @@ -18320,6 +18298,25 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* -- if ((s_7, fa#4*{fa#4 <- `fa*`}) = var_17) -- if (xi#2*{xi#2 <- `xi*`} = var_18) -- if (moduleinst = {TYPES dt#16*{dt#16 <- `dt*`}, TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) + -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#7*{export#7 <- `export*`}, var_18) + -- fun_allocfuncs: `%%%%%`(s_6, dt#15*{dt#15 <- `dt*`}[$proj_uN_0(x#4).0]*{x#4 <- `x*`}, FUNC_funccode(x#5, local#4*{local#4 <- `local*#86`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#86` <- `local**`, x#5 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_17) + -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- `dt*`}, var_16))*{var_16 <- `var_16*`, elemtype#3 <- `elemtype*`} + -- fun_allocelems: `%%%%`(s_5, var_16*{var_16 <- `var_16*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_15) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#114`}*{`byte*#114` <- `byte**`}, var_14) + -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_13))*{var_13 <- `var_13*`, tabletype#160 <- `tabletype*`} + -- fun_alloctables: `%%%%`(s_3, var_13*{var_13 <- `var_13*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_12) + -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_11))*{var_11 <- `var_11*`, memtype#126 <- `memtype*`} + -- fun_allocmems: `%%%`(s_2, var_11*{var_11 <- `var_11*`}, var_10) + -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_9))*{var_9 <- `var_9*`, globaltype#126 <- `globaltype*`} + -- fun_allocglobals: `%%%%`(s_1, var_9*{var_9 <- `var_9*`}, val_G#2*{val_G#2 <- `val_G*`}, var_8) + -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_7))*{var_7 <- `var_7*`, tagtype#82 <- `tagtype*`} + -- fun_alloctags: `%%%`(s, var_7*{var_7 <- `var_7*`}, var_6) + -- fun_alloctypes: `%%`(type#4*{type#4 <- `type*`}, var_5) + -- fun_funcsxa: `%%`(externaddr#6*{externaddr#6 <- `externaddr*`}, var_4) + -- fun_tablesxa: `%%`(externaddr#5*{externaddr#5 <- `externaddr*`}, var_3) + -- fun_memsxa: `%%`(externaddr#4*{externaddr#4 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#3*{externaddr#3 <- `externaddr*`}, var_1) + -- fun_tagsxa: `%%`(externaddr#2*{externaddr#2 <- `externaddr*`}, var_0) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec relation fun_rundata_: `%%%`(dataidx, data, instr*) @@ -18366,13 +18363,13 @@ relation fun_evalexprs: `%%%`(state, expr*, (state, ref*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 rule fun_evalexprs_case_1{z : state, expr : instr*, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state, var_0 : (state, ref*)}: `%%%`(z, [expr] ++ expr'#1*{expr'#1 <- `expr'*`}, (z'', [ref] ++ ref'*{ref' <- `ref'*`})) - -- fun_evalexprs: `%%%`(z', expr'#2*{expr'#2 <- `expr'*`}, var_0) -- wf_state: `%`(z'') -- wf_ref: `%`(ref) -- (wf_ref: `%`(ref'#5))*{ref'#5 <- `ref'*`} -- wf_state: `%`(z') -- Eval_expr: `%;%~>*%;%`(z, expr, z', [$val_ref(ref)]) -- if ((z'', ref'#6*{ref'#6 <- `ref'*`}) = var_0) + -- fun_evalexprs: `%%%`(z', expr'#2*{expr'#2 <- `expr'*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18387,14 +18384,14 @@ relation fun_evalexprss: `%%%`(state, expr**, (state, ref**)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 rule fun_evalexprss_case_1{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state, var_1 : (state, ref**), var_0 : (state, ref*)}: `%%%`(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#3*{expr'#3 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}, (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) - -- fun_evalexprss: `%%%`(z', expr'#4*{expr'#4 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}, var_1) - -- fun_evalexprs: `%%%`(z, expr#366*{expr#366 <- `expr*`}, var_0) -- wf_state: `%`(z'') -- (wf_ref: `%`(ref#6))*{ref#6 <- `ref*`} -- (wf_ref: `%`(ref'#7))*{ref'#7 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`} -- wf_state: `%`(z') -- if ((z', ref#7*{ref#7 <- `ref*`}) = var_0) -- if ((z'', ref'#8*{ref'#8 <- `ref'*#4`}*{`ref'*#4` <- `ref'**`}) = var_1) + -- fun_evalexprss: `%%%`(z', expr'#4*{expr'#4 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}, var_1) + -- fun_evalexprs: `%%%`(z, expr#366*{expr#366 <- `expr*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18409,8 +18406,6 @@ relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 rule fun_evalglobals_case_1{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, s : store, f : frame, s' : store, a : nat, var_1 : (state, val*), var_0 : (store, globaladdr)}: `%%%%`(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#5*{expr'#5 <- `expr'*`}, (z'', [val] ++ val'*{val' <- `val'*`})) - -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#6*{expr'#6 <- `expr'*`}, var_1) - -- fun_allocglobal: `%%%%`(s, gt, val, var_0) -- wf_state: `%`(z'') -- wf_val: `%`(val) -- (wf_val: `%`(val'#3))*{val'#3 <- `val'*`} @@ -18421,6 +18416,8 @@ relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) -- if (z' = `%;%`_state(s, f)) -- if ((s', a) = var_0) -- if ((z'', val'#4*{val'#4 <- `val'*`}) = var_1) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#6*{expr'#6 <- `expr'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, gt, val, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18428,18 +18425,6 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat, `var_11*` : instr**, `var_10*` : instr**, var_9 : (store, moduleinst), var_8 : (state, ref**), var_7 : (state, ref*), var_6 : (state, val*), var_5 : funcaddr*, var_4 : globaladdr*, var_3 : deftype*, var_2 : funcaddr*, var_1 : globaladdr*, var_0 : deftype*}: `%%%%`(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}, `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) - -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#12*{elem#12 <- `elem*`}[i_E#2], var_11))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_11 <- `var_11*`} - -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#11*{data#11 <- `data*`}[i_D#2], var_10))^(i_D#2<|data#10*{data#10 <- `data*`}|){var_10 <- `var_10*`} - -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_9) - -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_8) - -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_7) - -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_6) - -- fun_funcsxa: `%%`(externaddr#12*{externaddr#12 <- `externaddr*`}, var_5) - -- fun_globalsxa: `%%`(externaddr#11*{externaddr#11 <- `externaddr*`}, var_4) - -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_3) - -- fun_funcsxa: `%%`(externaddr#9*{externaddr#9 <- `externaddr*`}, var_2) - -- fun_globalsxa: `%%`(externaddr#8*{externaddr#8 <- `externaddr*`}, var_1) - -- fun_alloctypes: `%%`(type#6*{type#6 <- `type*`}, var_0) -- wf_state: `%`(z) -- wf_state: `%`(z') -- (wf_val: `%`(val_G#3))*{val_G#3 <- `val_G*`} @@ -18479,6 +18464,18 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- if (instr_D#2*{instr_D#2 <- `instr_D*`} = $concat_(syntax instr, var_10^(i_D#2<|data#10*{data#10 <- `data*`}|){var_10 <- `var_10*`})) -- if (instr_E#2*{instr_E#2 <- `instr_E*`} = $concat_(syntax instr, var_11^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_11 <- `var_11*`})) -- if (instr_S#2?{instr_S#2 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`}) + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#12*{elem#12 <- `elem*`}[i_E#2], var_11))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_11 <- `var_11*`} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#11*{data#11 <- `data*`}[i_D#2], var_10))^(i_D#2<|data#10*{data#10 <- `data*`}|){var_10 <- `var_10*`} + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_9) + -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_8) + -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_7) + -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_6) + -- fun_funcsxa: `%%`(externaddr#12*{externaddr#12 <- `externaddr*`}, var_5) + -- fun_globalsxa: `%%`(externaddr#11*{externaddr#11 <- `externaddr*`}, var_4) + -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_3) + -- fun_funcsxa: `%%`(externaddr#9*{externaddr#9 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#8*{externaddr#8 <- `externaddr*`}, var_1) + -- fun_alloctypes: `%%`(type#6*{type#6 <- `type*`}, var_0) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec relation fun_invoke: `%%%%`(store, funcaddr, val*, config) @@ -18922,8 +18919,8 @@ relation fun_ordered: `%%`(decl*, bool) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rule fun_ordered_case_0{`decl*` : decl*, var_0 : import*}: `%%`(decl#1*{decl#1 <- `decl*`}, true) - -- fun_importsd: `%%`(decl#2*{decl#2 <- `decl*`}, var_0) -- if (var_0 = []) + -- fun_importsd: `%%`(decl#2*{decl#2 <- `decl*`}, var_0) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rule fun_ordered_case_1{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*, var_5 : func*, var_4 : table*, var_3 : mem*, var_2 : global*, var_1 : tag*, var_0 : import*}: diff --git a/spectec/test-middlend/specification.exp/10-sideconditions.il b/spectec/test-middlend/specification.exp/10-sideconditions.il index b3f95eeb4c..70c48d059a 100644 --- a/spectec/test-middlend/specification.exp/10-sideconditions.il +++ b/spectec/test-middlend/specification.exp/10-sideconditions.il @@ -420,35 +420,35 @@ relation fun_utf8: `%%`(char*, byte*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: `%%`([ch], [b_1 b_2]) - -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) + -- fun_cont: `%%`(b_2, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: `%%`([ch], [b_1 b_2 b_3]) - -- fun_cont: `%%`(b_3, var_1) - -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * var_0)) + var_1)) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 rule fun_utf8_case_4{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, var_2 : nat, var_1 : nat, var_0 : nat}: `%%`([ch], [b_1 b_2 b_3 b_4]) - -- fun_cont: `%%`(b_4, var_2) - -- fun_cont: `%%`(b_3, var_1) - -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- wf_byte: `%`(b_3) -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * var_0)) + ((2 ^ 6) * var_1)) + var_2)) + -- fun_cont: `%%`(b_4, var_2) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -1936,28 +1936,27 @@ relation fun_subst_typevar: `%%%%`(typevar, typevar*, typeuse*, typeuse?) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 relation fun_minus_recs_before_fun_minus_recs_case_3: `%%`(typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_0 : (typevar*, typeuse*)?}: `%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}) - -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) -- (wf_typevar: `%`(tv'#2))*{tv'#2 <- `tv'*`} -- (wf_typeuse: `%`(tu'#2))*{tu'#2 <- `tu'*`} -- wf_typevar: `%`(_IDX_typevar(x)) -- if (var_0 =/= ?()) -- if ((tv'#3*{tv'#3 <- `tv'*`}, tu'#3*{tu'#3 <- `tu'*`}) = !(var_0)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)?}: `%%`([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_minus_recs_case_0: `%%`([], []) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 @@ -1972,12 +1971,12 @@ relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_0 : (typevar*, typeuse*)?}: `%%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}, ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}))) - -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) -- (wf_typevar: `%`(tv'#2))*{tv'#2 <- `tv'*`} -- (wf_typeuse: `%`(tu'#2))*{tu'#2 <- `tu'*`} -- wf_typevar: `%`(_IDX_typevar(x)) -- if (var_0 =/= ?()) -- if ((tv'#3*{tv'#3 <- `tv'*`}, tu'#3*{tu'#3 <- `tu'*`}) = !(var_0)) + -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 rule fun_minus_recs_case_3{x0 : typevar*, x1 : typeuse*}: @@ -2050,9 +2049,9 @@ relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 rule fun_subst_reftype_case_0{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : heaptype, var_0 : heaptype}: `%%%%`(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`}, REF_reftype(null?{null <- `null?`}, var_0)) + -- wf_reftype: `%`(REF_reftype(null#2?{null#2 <- `null?`}, var_1)) -- fun_subst_heaptype: `%%%%`(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}, var_1) -- fun_subst_heaptype: `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_reftype: `%`(REF_reftype(null#2?{null#2 <- `null?`}, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 relation fun_subst_valtype: `%%%%`(valtype, typevar*, typeuse*, valtype) @@ -2136,31 +2135,32 @@ relation fun_subst_fieldtype: `%%%%`(fieldtype, typevar*, typeuse*, fieldtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 rule fun_subst_fieldtype_case_0{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : storagetype, var_0 : storagetype}: `%%%%`(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`}, `%%`_fieldtype(mut?{mut <- `mut?`}, var_0)) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut#2?{mut#2 <- `mut?`}, var_1)) -- fun_subst_storagetype: `%%%%`(zt, tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}, var_1) -- fun_subst_storagetype: `%%%%`(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut#2?{mut#2 <- `mut?`}, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_0{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : fieldtype*, `var_0*` : fieldtype*}: `%%%%`(STRUCT_comptype(`%`_list(ft#1*{ft#1 <- `ft*`})), tv#55*{tv#55 <- `tv*`}, tu#55*{tu#55 <- `tu*`}, STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_1*{var_1 <- `var_1*`}))) -- if (|`var_1*`| = |`ft*`|) -- (fun_subst_fieldtype: `%%%%`(ft#2, tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`}, var_1))*{var_1 <- `var_1*`, ft#2 <- `ft*`} -- if (|`var_0*`| = |`ft*`|) -- (fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, ft <- `ft*`} - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_1*{var_1 <- `var_1*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_1{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : fieldtype, var_0 : fieldtype}: `%%%%`(ARRAY_comptype(ft), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}, ARRAY_comptype(var_0)) + -- wf_comptype: `%`(ARRAY_comptype(var_1)) -- fun_subst_fieldtype: `%%%%`(ft, tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}, var_1) -- fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_comptype: `%`(ARRAY_comptype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_2{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_3*` : valtype*, `var_2*` : valtype*, `var_1*` : valtype*, `var_0*` : valtype*}: `%%%%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}, `FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_2*{var_2 <- `var_2*`}), `%`_resulttype(var_3*{var_3 <- `var_3*`}))) -- if (|`var_3*`| = |`t_2*`|) -- (fun_subst_valtype: `%%%%`(t_2#2, tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`}, var_3))*{var_3 <- `var_3*`, t_2#2 <- `t_2*`} -- if (|`var_2*`| = |`t_1*`|) @@ -2169,33 +2169,32 @@ relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) -- (fun_subst_valtype: `%%%%`(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, t_2 <- `t_2*`} -- if (|`var_0*`| = |`t_1*`|) -- (fun_subst_valtype: `%%%%`(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, t_1 <- `t_1*`} - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_2*{var_2 <- `var_2*`}), `%`_resulttype(var_3*{var_3 <- `var_3*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 rule fun_subst_subtype_case_0{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, var_3 : comptype, `var_2*` : typeuse*, var_1 : comptype, `var_0*` : typeuse*}: `%%%%`(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#4*{tu'#4 <- `tu'*`}, ct), tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`}, SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) + -- wf_subtype: `%`(SUB_subtype(final#2?{final#2 <- `final?`}, var_2*{var_2 <- `var_2*`}, var_3)) -- fun_subst_comptype: `%%%%`(ct, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}, var_3) -- if (|`var_2*`| = |`tu'*`|) -- (fun_subst_typeuse: `%%%%`(tu'#5, tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`}, var_2))*{var_2 <- `var_2*`, tu'#5 <- `tu'*`} -- fun_subst_comptype: `%%%%`(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) -- if (|`var_0*`| = |`tu'*`|) -- (fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, tu' <- `tu'*`} - -- wf_subtype: `%`(SUB_subtype(final#2?{final#2 <- `final?`}, var_2*{var_2 <- `var_2*`}, var_3)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 rule fun_subst_rectype_case_0{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_1 : (typevar*, typeuse*)?, `var_0*` : subtype*}: `%%%%`(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}, REC_rectype(`%`_list(var_0*{var_0 <- `var_0*`}))) - -- fun_minus_recs: `%%%`(tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}, var_1) - -- if (|`var_0*`| = |`st*`|) - -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} -- (wf_typevar: `%`(tv'#4))*{tv'#4 <- `tv'*`} -- (wf_typeuse: `%`(tu'#6))*{tu'#6 <- `tu'*`} -- if (var_1 =/= ?()) -- if ((tv'#5*{tv'#5 <- `tv'*`}, tu'#7*{tu'#7 <- `tu'*`}) = !(var_1)) + -- fun_minus_recs: `%%%`(tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}, var_1) + -- if (|`var_0*`| = |`st*`|) + -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 relation fun_subst_deftype: `%%%%`(deftype, typevar*, typeuse*, deftype) @@ -2222,9 +2221,9 @@ relation fun_subst_globaltype: `%%%%`(globaltype, typevar*, typeuse*, globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_globaltype_case_0{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : valtype, var_0 : valtype}: `%%%%`(`%%`_globaltype(mut#3?{mut#3 <- `mut?`}, t), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}, `%%`_globaltype(mut?{mut <- `mut?`}, var_0)) + -- wf_globaltype: `%`(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, var_1)) -- fun_subst_valtype: `%%%%`(t, tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}, var_1) -- fun_subst_valtype: `%%%%`(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_globaltype: `%`(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation fun_subst_memtype: `%%%%`(memtype, typevar*, typeuse*, memtype) @@ -2238,52 +2237,53 @@ relation fun_subst_tabletype: `%%%%`(tabletype, typevar*, typeuse*, tabletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_tabletype_case_0{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : reftype, var_0 : reftype}: `%%%%`(`%%%`_tabletype(at, lim, rt), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}, `%%%`_tabletype(at, lim, var_0)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, var_1)) -- fun_subst_reftype: `%%%%`(rt, tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}, var_1) -- fun_subst_reftype: `%%%%`(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation fun_subst_externtype: `%%%%`(externtype, typevar*, typeuse*, externtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_0{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_1 : tagtype, var_0 : tagtype}: `%%%%`(TAG_externtype(jt), tv#75*{tv#75 <- `tv*`}, tu#75*{tu#75 <- `tu*`}, TAG_externtype(var_0)) + -- wf_externtype: `%`(TAG_externtype(var_1)) -- fun_subst_tagtype: `%%%%`(jt, tv#76*{tv#76 <- `tv*`}, tu#76*{tu#76 <- `tu*`}, var_1) -- fun_subst_tagtype: `%%%%`(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_externtype: `%`(TAG_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_1{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : globaltype, var_0 : globaltype}: `%%%%`(GLOBAL_externtype(gt), tv#77*{tv#77 <- `tv*`}, tu#77*{tu#77 <- `tu*`}, GLOBAL_externtype(var_0)) + -- wf_externtype: `%`(GLOBAL_externtype(var_1)) -- fun_subst_globaltype: `%%%%`(gt, tv#78*{tv#78 <- `tv*`}, tu#78*{tu#78 <- `tu*`}, var_1) -- fun_subst_globaltype: `%%%%`(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_externtype: `%`(GLOBAL_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_2{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : tabletype, var_0 : tabletype}: `%%%%`(TABLE_externtype(tt), tv#79*{tv#79 <- `tv*`}, tu#79*{tu#79 <- `tu*`}, TABLE_externtype(var_0)) + -- wf_externtype: `%`(TABLE_externtype(var_1)) -- fun_subst_tabletype: `%%%%`(tt, tv#80*{tv#80 <- `tv*`}, tu#80*{tu#80 <- `tu*`}, var_1) -- fun_subst_tabletype: `%%%%`(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_externtype: `%`(TABLE_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_3{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : memtype, var_0 : memtype}: `%%%%`(MEM_externtype(mt), tv#81*{tv#81 <- `tv*`}, tu#81*{tu#81 <- `tu*`}, MEM_externtype(var_0)) + -- wf_externtype: `%`(MEM_externtype(var_1)) -- fun_subst_memtype: `%%%%`(mt, tv#82*{tv#82 <- `tv*`}, tu#82*{tu#82 <- `tu*`}, var_1) -- fun_subst_memtype: `%%%%`(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_externtype: `%`(MEM_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_4{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_1 : typeuse, var_0 : typeuse}: `%%%%`(FUNC_externtype(tu'), tv#83*{tv#83 <- `tv*`}, tu#83*{tu#83 <- `tu*`}, FUNC_externtype(var_0)) + -- wf_externtype: `%`(FUNC_externtype(var_1)) -- fun_subst_typeuse: `%%%%`(tu', tv#84*{tv#84 <- `tv*`}, tu#84*{tu#84 <- `tu*`}, var_1) -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_externtype: `%`(FUNC_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_moduletype_case_0{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_3*` : externtype*, `var_2*` : externtype*, `var_1*` : externtype*, `var_0*` : externtype*}: `%%%%`(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#85*{tv#85 <- `tv*`}, tu#85*{tu#85 <- `tu*`}, `%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) + -- wf_moduletype: `%`(`%->%`_moduletype(var_2*{var_2 <- `var_2*`}, var_3*{var_3 <- `var_3*`})) -- if (|`var_3*`| = |`xt_2*`|) -- (fun_subst_externtype: `%%%%`(xt_2#2, tv#87*{tv#87 <- `tv*`}, tu#87*{tu#87 <- `tu*`}, var_3))*{var_3 <- `var_3*`, xt_2#2 <- `xt_2*`} -- if (|`var_2*`| = |`xt_1*`|) @@ -2292,79 +2292,78 @@ relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype -- (fun_subst_externtype: `%%%%`(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, xt_2 <- `xt_2*`} -- if (|`var_0*`| = |`xt_1*`|) -- (fun_subst_externtype: `%%%%`(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, xt_1 <- `xt_1*`} - -- wf_moduletype: `%`(`%->%`_moduletype(var_2*{var_2 <- `var_2*`}, var_3*{var_3 <- `var_3*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation fun_subst_all_valtype: `%%%`(valtype, typeuse*, valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_all_valtype_case_0{t : valtype, n : nat, `tu*` : typeuse*, i : nat, var_0 : valtype}: `%%%`(t, tu#88^n{tu#88 <- `tu*`}, var_0) - -- fun_subst_valtype: `%%%%`(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ var_0) - -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -5839,12 +5838,12 @@ relation fun_free_block: `%%`(instr*, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 rule fun_free_block_case_0{`instr*` : instr*, free : free, `var_2*` : free*, var_1 : free, var_0 : labelidx*}: `%%`(instr#4*{instr#4 <- `instr*`}, free[LABELS_free = var_0]) + -- wf_free: `%`(free) + -- if (free = var_1) -- if (|`var_2*`| = |`instr*`|) -- (fun_free_instr: `%%`(instr#5, var_2))*{var_2 <- `var_2*`, instr#5 <- `instr*`} -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) -- fun_shift_labelidxs: `%%`(free.LABELS_free, var_0) - -- wf_free: `%`(free) - -- if (free = var_1) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -6322,9 +6321,9 @@ relation fun_clos_deftypes: `%%`(deftype*, deftype*) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 rule fun_clos_deftypes_case_1{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: `%%`(dt#2*{dt#2 <- `dt*`} ++ [dt_n], dt'*{dt' <- `dt'*`} ++ [var_0]) + -- if (dt'#1*{dt'#1 <- `dt'*`} = var_1) -- fun_clos_deftypes: `%%`(dt#3*{dt#3 <- `dt*`}, var_1) -- fun_subst_all_deftype: `%%%`(dt_n, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) - -- if (dt'#1*{dt'#1 <- `dt'*`} = var_1) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -6332,45 +6331,45 @@ relation fun_clos_valtype: `%%%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_valtype_case_0{C : context, t : valtype, `dt*` : deftype*, var_1 : deftype*, var_0 : valtype}: `%%%`(C, t, var_0) + -- if (dt#4*{dt#4 <- `dt*`} = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) - -- if (dt#4*{dt#4 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation fun_clos_deftype: `%%%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_deftype_case_0{C : context, dt : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: `%%%`(C, dt, var_0) + -- if (dt'#2*{dt'#2 <- `dt'*`} = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_deftype: `%%%`(dt, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) - -- if (dt'#2*{dt'#2 <- `dt'*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation fun_clos_tagtype: `%%%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_tagtype_case_0{C : context, jt : typeuse, `dt*` : deftype*, var_1 : deftype*, var_0 : tagtype}: `%%%`(C, jt, var_0) + -- if (dt#5*{dt#5 <- `dt*`} = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_tagtype: `%%%`(jt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) - -- if (dt#5*{dt#5 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation fun_clos_externtype: `%%%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_externtype_case_0{C : context, xt : externtype, `dt*` : deftype*, var_1 : deftype*, var_0 : externtype}: `%%%`(C, xt, var_0) + -- if (dt#6*{dt#6 <- `dt*`} = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_externtype: `%%%`(xt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) - -- if (dt#6*{dt#6 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation fun_clos_moduletype: `%%%`(context, moduletype, moduletype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_moduletype_case_0{C : context, mmt : moduletype, `dt*` : deftype*, var_1 : deftype*, var_0 : moduletype}: `%%%`(C, mmt, var_0) + -- if (dt#7*{dt#7 <- `dt*`} = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_moduletype: `%%%`(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) - -- if (dt#7*{dt#7 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -7361,13 +7360,11 @@ relation fun_default__before_fun_default__case_7: `%`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_3{var_0 : fN}: `%`(F64_valtype) - -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_2{var_0 : fN}: `%`(F32_valtype) - -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -7395,14 +7392,14 @@ relation fun_default_: `%%`(valtype, val??) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_2{var_0 : fN}: `%%`(F32_valtype, ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))))) - -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_3{var_0 : fN}: `%%`(F64_valtype, ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))))) - -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_4: @@ -9039,8 +9036,8 @@ relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule fun_funcidx_nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*, var_0 : funcidx*}: `%%`(`%%%%%%`_nonfuncs(global#2*{global#2 <- `global*`}, mem#2*{mem#2 <- `mem*`}, table#2*{table#2 <- `table*`}, elem#2*{elem#2 <- `elem*`}, start#2?{start#2 <- `start?`}, export#2*{export#2 <- `export*`}), var_0) - -- fun_funcidx_module: `%%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#3*{export#3 <- `export*`}))) + -- fun_funcidx_module: `%%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) @@ -9282,14 +9279,14 @@ relation fun_zero: `%%`(lanetype, lane_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_zero_case_4{var_0 : fN}: `%%`(F32_lanetype, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) - -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_zero_case_5{var_0 : fN}: `%%`(F64_lanetype, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) - -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -9345,9 +9342,9 @@ relation fun_iextend_: `%%%%%`(N, M, sx, iN, iN) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_iextend__case_1{N : nat, M : nat, i : uN, var_1 : int, var_0 : nat}: `%%%%%`(N, M, S_sx, i, `%`_iN(var_0)) + -- wf_uN: `%%`(N, `%`_uN(var_0)) -- fun_signed_: `%%%`(M, ($proj_uN_0(i).0 \ (2 ^ M)), var_1) -- fun_inv_signed_: `%%%`(N, var_1, var_0) - -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN @@ -9385,17 +9382,17 @@ relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_idiv__case_3{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: `%%%%%`(N, S_sx, i_1, i_2, ?()) + -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) - -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_idiv__case_4{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- wf_uN: `%%`(N, `%`_uN(var_0)) -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) -- fun_inv_signed_: `%%%`(N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) - -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) @@ -9415,11 +9412,11 @@ relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_irem__case_3{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + -- if ((j_1 = var_1) /\ (j_2 = var_2)) -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) -- fun_inv_signed_: `%%%`(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) - -- wf_uN: `%%`(N, `%`_uN(var_0)) - -- if ((j_1 = var_1) /\ (j_2 = var_2)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -9855,14 +9852,14 @@ relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_unop__case_6{M : nat, i : uN, var_0 : uN}: `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, var_0)]) - -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i, var_0) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, var_0)) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_unop__case_7{M : nat, i : uN, var_0 : uN}: `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, var_0)]) - -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i, var_0) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, var_0)) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_unop__case_8{f : fN}: @@ -9969,26 +9966,26 @@ relation fun_binop_: `%%%%%`(numtype, binop_, num_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_6{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#30)*{iter_0#30 <- lift(var_0)}) - -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#29)))*{iter_0#29 <- lift(var_0)} + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_7{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#32)*{iter_0#32 <- lift(var_0)}) - -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#31)))*{iter_0#31 <- lift(var_0)} + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_8{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift(var_0)}) - -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#33)))*{iter_0#33 <- lift(var_0)} + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_9{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift(var_0)}) - -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#35)))*{iter_0#35 <- lift(var_0)} + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_10{i_1 : uN, i_2 : uN}: @@ -12449,10 +12446,6 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1, v) - -- if (|`var_2*`| = |`c_1*`|) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#171, var_2))*{var_2 <- `var_2*`, c_1#171 <- `c_1*`} - -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) - -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1#169))*{c_1#169 <- `c_1*`} -- (wf_lane_: `%%`(Lnn_2, c#303))*{c#303 <- `c*#43`}*{`c*#43` <- `c**`} @@ -12463,13 +12456,14 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (c#304*{c#304 <- `c*#44`}*{`c*#44` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`})) -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#305*{c#305 <- `c*#45`})*{`c*#45` <- `c**`}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#305*{c#305 <- `c*#45`})*{`c*#45` <- `c**`}) + -- if (|`var_2*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#171, var_2))*{var_2 <- `var_2*`, c_1#171 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**, `var_1*` : lane_**, var_0 : half?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) - -- if (|`var_1*`| = |`c_1*`|) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#174, var_1))*{var_1 <- `var_1*`, c_1#174 <- `c_1*`} - -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1#172))*{c_1#172 <- `c_1*`} -- (wf_lane_: `%%`(Lnn_2, c#306))*{c#306 <- `c*#46`}*{`c*#46` <- `c**`} @@ -12480,14 +12474,13 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (c#307*{c#307 <- `c*#47`}*{`c*#47` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`})) -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#308*{c#308 <- `c*#48`})*{`c*#48` <- `c**`}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#308*{c#308 <- `c*#48`})*{`c*#48` <- `c**`}) + -- if (|`var_1*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#174, var_1))*{var_1 <- `var_1*`, c_1#174 <- `c_1*`} + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, var_2 : lane_, `var_1*` : lane_**, var_0 : zero?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) - -- fun_zero: `%%`(Lnn_2, var_2) - -- if (|`var_1*`| = |`c_1*`|) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#177, var_1))*{var_1 <- `var_1*`, c_1#177 <- `c_1*`} - -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1#175))*{c_1#175 <- `c_1*`} -- (wf_lane_: `%%`(Lnn_2, c#309))*{c#309 <- `c*#49`}*{`c*#49` <- `c**`} @@ -12498,6 +12491,10 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (c#310*{c#310 <- `c*#50`}*{`c*#50` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`} ++ [var_2]^M_1{})) -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#311*{c#311 <- `c*#51`})*{`c*#51` <- `c**`}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#311*{c#311 <- `c*#51`})*{`c*#51` <- `c**`}) + -- fun_zero: `%%`(Lnn_2, var_2) + -- if (|`var_1*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#177, var_1))*{var_1 <- `var_1*`, c_1#177 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec relation fun_vshiftop_: `%%%%%`(ishape, vshiftop_, vec_, u32, vec_) @@ -12546,26 +12543,26 @@ relation fun_vbitmaskop_: `%%%`(ishape, vec_, u32) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vbitmaskop__case_0{M : nat, v : uN, var_0 : u32}: `%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v, var_0) - -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vbitmaskop__case_1{M : nat, v : uN, var_0 : u32}: `%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v, var_0) - -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vbitmaskop__case_2{M : nat, v : uN, var_0 : u32}: `%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v, var_0) - -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vbitmaskop__case_3{M : nat, v : uN, var_0 : u32}: `%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v, var_0) - -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec relation fun_vswizzlop_: `%%%%%`(bshape, vswizzlop_, vec_, vec_, vec_) @@ -12584,8 +12581,8 @@ relation fun_vshufflop_: `%%%%%`(bshape, laneidx*, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, var_0 : vec_}: `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#129110*{i#129110 <- `i*`}, v_1, v_2, var_0) - -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, var_0) -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) @@ -13785,9 +13782,6 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_0{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13804,13 +13798,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_1{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13827,13 +13821,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_2{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13850,13 +13844,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_3{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13873,13 +13867,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_4{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13896,13 +13890,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_5{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13919,13 +13913,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_6{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13942,13 +13936,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_7{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13965,13 +13959,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_8{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13988,13 +13982,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_9{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14011,13 +14005,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_10{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14034,13 +14028,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_11{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14057,13 +14051,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_12{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14080,13 +14074,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_13{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14103,13 +14097,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_14{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14126,13 +14120,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_15{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14149,6 +14143,9 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax num = @@ -18510,14 +18507,14 @@ relation fun_alloctypes: `%%`(type*, deftype*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 rule fun_alloctypes_case_1{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN, var_2 : deftype*, var_1 : deftype*, var_0 : deftype*}: `%%`(type'#1*{type'#1 <- `type'*`} ++ [type], deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`}) - -- fun_rolldt: `%%%`(x, rectype, var_2) - -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype'#2)*{deftype'#2 <- `deftype'*`}, var_1) - -- fun_alloctypes: `%%`(type'#2*{type'#2 <- `type'*`}, var_0) -- wf_uN: `%%`(32, x) -- if (deftype'#1*{deftype'#1 <- `deftype'*`} = var_0) -- if (type = TYPE_type(rectype)) -- if (deftype#1*{deftype#1 <- `deftype*`} = var_1) -- if ($proj_uN_0(x).0 = |deftype'#3*{deftype'#3 <- `deftype'*`}|) + -- fun_rolldt: `%%%`(x, rectype, var_2) + -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype'#2)*{deftype'#2 <- `deftype'*`}, var_1) + -- fun_alloctypes: `%%`(type'#2*{type'#2 <- `type'*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18541,12 +18538,12 @@ relation fun_alloctags: `%%%`(store, tagtype*, (store, tagaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 rule fun_alloctags_case_1{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store, var_1 : (store, tagaddr*), var_0 : (store, tagaddr)}: `%%%`(s, [tagtype] ++ tagtype'#1*{tagtype'#1 <- `tagtype'*`}, (s_2, [ja] ++ ja'*{ja' <- `ja'*`})) - -- fun_alloctags: `%%%`(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}, var_1) - -- fun_alloctag: `%%%`(s, tagtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ja) = var_0) -- if ((s_2, ja'#1*{ja'#1 <- `ja'*`}) = var_1) + -- fun_alloctags: `%%%`(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}, var_1) + -- fun_alloctag: `%%%`(s, tagtype, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18570,12 +18567,12 @@ relation fun_allocglobals: `%%%%`(store, globaltype*, val*, (store, globaladdr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 rule fun_allocglobals_case_1{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store, var_1 : (store, globaladdr*), var_0 : (store, globaladdr)}: `%%%%`(s, [globaltype] ++ globaltype'#1*{globaltype'#1 <- `globaltype'*`}, [val] ++ val'#1*{val'#1 <- `val'*`}, (s_2, [ga] ++ ga'*{ga' <- `ga'*`})) - -- fun_allocglobals: `%%%%`(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}, var_1) - -- fun_allocglobal: `%%%%`(s, globaltype, val, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ga) = var_0) -- if ((s_2, ga'#1*{ga'#1 <- `ga'*`}) = var_1) + -- fun_allocglobals: `%%%%`(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, globaltype, val, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18599,12 +18596,12 @@ relation fun_allocmems: `%%%`(store, memtype*, (store, memaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 rule fun_allocmems_case_1{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store, var_1 : (store, memaddr*), var_0 : (store, memaddr)}: `%%%`(s, [memtype] ++ memtype'#1*{memtype'#1 <- `memtype'*`}, (s_2, [ma] ++ ma'*{ma' <- `ma'*`})) - -- fun_allocmems: `%%%`(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}, var_1) - -- fun_allocmem: `%%%`(s, memtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ma) = var_0) -- if ((s_2, ma'#1*{ma'#1 <- `ma'*`}) = var_1) + -- fun_allocmems: `%%%`(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}, var_1) + -- fun_allocmem: `%%%`(s, memtype, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18628,12 +18625,12 @@ relation fun_alloctables: `%%%%`(store, tabletype*, ref*, (store, tableaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 rule fun_alloctables_case_1{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store, var_1 : (store, tableaddr*), var_0 : (store, tableaddr)}: `%%%%`(s, [tabletype] ++ tabletype'#1*{tabletype'#1 <- `tabletype'*`}, [ref] ++ ref'#1*{ref'#1 <- `ref'*`}, (s_2, [ta] ++ ta'*{ta' <- `ta'*`})) - -- fun_alloctables: `%%%%`(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}, var_1) - -- fun_alloctable: `%%%%`(s, tabletype, ref, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ta) = var_0) -- if ((s_2, ta'#1*{ta'#1 <- `ta'*`}) = var_1) + -- fun_alloctables: `%%%%`(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}, var_1) + -- fun_alloctable: `%%%%`(s, tabletype, ref, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18657,12 +18654,12 @@ relation fun_allocfuncs: `%%%%%`(store, deftype*, funccode*, moduleinst*, (store ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 rule fun_allocfuncs_case_1{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store, var_1 : (store, funcaddr*), var_0 : (store, funcaddr)}: `%%%%%`(s, [dt] ++ dt'#3*{dt'#3 <- `dt'*`}, [funccode] ++ funccode'#1*{funccode'#1 <- `funccode'*`}, [moduleinst] ++ moduleinst'#1*{moduleinst'#1 <- `moduleinst'*`}, (s_2, [fa] ++ fa'*{fa' <- `fa'*`})) - -- fun_allocfuncs: `%%%%%`(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}, var_1) - -- fun_allocfunc: `%%%%%`(s, dt, funccode, moduleinst, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, fa) = var_0) -- if ((s_2, fa'#1*{fa'#1 <- `fa'*`}) = var_1) + -- fun_allocfuncs: `%%%%%`(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}, var_1) + -- fun_allocfunc: `%%%%%`(s, dt, funccode, moduleinst, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18686,12 +18683,12 @@ relation fun_allocdatas: `%%%%`(store, datatype*, byte**, (store, dataaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 rule fun_allocdatas_case_1{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store, var_1 : (store, dataaddr*), var_0 : (store, dataaddr)}: `%%%%`(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#10*{b#10 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}, (s_2, [da] ++ da'*{da' <- `da'*`})) - -- fun_allocdatas: `%%%%`(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}, var_1) - -- fun_allocdata: `%%%%`(s, ok, b#11*{b#11 <- `b*`}, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, da) = var_0) -- if ((s_2, da'#1*{da'#1 <- `da'*`}) = var_1) + -- fun_allocdatas: `%%%%`(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}, var_1) + -- fun_allocdata: `%%%%`(s, ok, b#11*{b#11 <- `b*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18715,12 +18712,12 @@ relation fun_allocelems: `%%%%`(store, elemtype*, ref**, (store, elemaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 rule fun_allocelems_case_1{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store, var_1 : (store, elemaddr*), var_0 : (store, elemaddr)}: `%%%%`(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#3*{ref'#3 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}, (s_2, [ea] ++ ea'*{ea' <- `ea'*`})) - -- fun_allocelems: `%%%%`(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#4*{ref'#4 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}, var_1) - -- fun_allocelem: `%%%%`(s, rt, ref#5*{ref#5 <- `ref*`}, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ea) = var_0) -- if ((s_2, ea'#1*{ea'#1 <- `ea'*`}) = var_1) + -- fun_allocelems: `%%%%`(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#4*{ref'#4 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}, var_1) + -- fun_allocelem: `%%%%`(s, rt, ref#5*{ref#5 <- `ref*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18768,31 +18765,6 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_18 : exportinst*, var_17 : (store, funcaddr*), `var_16*` : elemtype*, var_15 : (store, elemaddr*), var_14 : (store, dataaddr*), `var_13*` : tabletype*, var_12 : (store, tableaddr*), `var_11*` : memtype*, var_10 : (store, memaddr*), `var_9*` : globaltype*, var_8 : (store, globaladdr*), `var_7*` : tagtype*, var_6 : (store, tagaddr*), var_5 : deftype*, var_4 : funcaddr*, var_3 : tableaddr*, var_2 : memaddr*, var_1 : globaladdr*, var_0 : tagaddr*}: `%%%%%%%`(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}, (s_7, moduleinst)) - -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#7*{export#7 <- `export*`}, var_18) - -- (if ($proj_uN_0(x#4).0 < |dt#15*{dt#15 <- `dt*`}|))*{x#4 <- `x*`} - -- fun_allocfuncs: `%%%%%`(s_6, dt#15*{dt#15 <- `dt*`}[$proj_uN_0(x#4).0]*{x#4 <- `x*`}, FUNC_funccode(x#5, local#4*{local#4 <- `local*#86`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#86` <- `local**`, x#5 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_17) - -- if (|`var_16*`| = |`elemtype*`|) - -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- `dt*`}, var_16))*{var_16 <- `var_16*`, elemtype#3 <- `elemtype*`} - -- fun_allocelems: `%%%%`(s_5, var_16*{var_16 <- `var_16*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_15) - -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#114`}*{`byte*#114` <- `byte**`}, var_14) - -- if (|`var_13*`| = |`tabletype*`|) - -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_13))*{var_13 <- `var_13*`, tabletype#160 <- `tabletype*`} - -- fun_alloctables: `%%%%`(s_3, var_13*{var_13 <- `var_13*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_12) - -- if (|`var_11*`| = |`memtype*`|) - -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_11))*{var_11 <- `var_11*`, memtype#126 <- `memtype*`} - -- fun_allocmems: `%%%`(s_2, var_11*{var_11 <- `var_11*`}, var_10) - -- if (|`var_9*`| = |`globaltype*`|) - -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_9))*{var_9 <- `var_9*`, globaltype#126 <- `globaltype*`} - -- fun_allocglobals: `%%%%`(s_1, var_9*{var_9 <- `var_9*`}, val_G#2*{val_G#2 <- `val_G*`}, var_8) - -- if (|`var_7*`| = |`tagtype*`|) - -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_7))*{var_7 <- `var_7*`, tagtype#82 <- `tagtype*`} - -- fun_alloctags: `%%%`(s, var_7*{var_7 <- `var_7*`}, var_6) - -- fun_alloctypes: `%%`(type#4*{type#4 <- `type*`}, var_5) - -- fun_funcsxa: `%%`(externaddr#6*{externaddr#6 <- `externaddr*`}, var_4) - -- fun_tablesxa: `%%`(externaddr#5*{externaddr#5 <- `externaddr*`}, var_3) - -- fun_memsxa: `%%`(externaddr#4*{externaddr#4 <- `externaddr*`}, var_2) - -- fun_globalsxa: `%%`(externaddr#3*{externaddr#3 <- `externaddr*`}, var_1) - -- fun_tagsxa: `%%`(externaddr#2*{externaddr#2 <- `externaddr*`}, var_0) -- wf_store: `%`(s_7) -- wf_moduleinst: `%`(moduleinst) -- wf_store: `%`(s_1) @@ -18842,6 +18814,31 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* -- if ((s_7, fa#4*{fa#4 <- `fa*`}) = var_17) -- if (xi#2*{xi#2 <- `xi*`} = var_18) -- if (moduleinst = {TYPES dt#16*{dt#16 <- `dt*`}, TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) + -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#7*{export#7 <- `export*`}, var_18) + -- (if ($proj_uN_0(x#4).0 < |dt#15*{dt#15 <- `dt*`}|))*{x#4 <- `x*`} + -- fun_allocfuncs: `%%%%%`(s_6, dt#15*{dt#15 <- `dt*`}[$proj_uN_0(x#4).0]*{x#4 <- `x*`}, FUNC_funccode(x#5, local#4*{local#4 <- `local*#86`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#86` <- `local**`, x#5 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_17) + -- if (|`var_16*`| = |`elemtype*`|) + -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- `dt*`}, var_16))*{var_16 <- `var_16*`, elemtype#3 <- `elemtype*`} + -- fun_allocelems: `%%%%`(s_5, var_16*{var_16 <- `var_16*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_15) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#114`}*{`byte*#114` <- `byte**`}, var_14) + -- if (|`var_13*`| = |`tabletype*`|) + -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_13))*{var_13 <- `var_13*`, tabletype#160 <- `tabletype*`} + -- fun_alloctables: `%%%%`(s_3, var_13*{var_13 <- `var_13*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_12) + -- if (|`var_11*`| = |`memtype*`|) + -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_11))*{var_11 <- `var_11*`, memtype#126 <- `memtype*`} + -- fun_allocmems: `%%%`(s_2, var_11*{var_11 <- `var_11*`}, var_10) + -- if (|`var_9*`| = |`globaltype*`|) + -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_9))*{var_9 <- `var_9*`, globaltype#126 <- `globaltype*`} + -- fun_allocglobals: `%%%%`(s_1, var_9*{var_9 <- `var_9*`}, val_G#2*{val_G#2 <- `val_G*`}, var_8) + -- if (|`var_7*`| = |`tagtype*`|) + -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_7))*{var_7 <- `var_7*`, tagtype#82 <- `tagtype*`} + -- fun_alloctags: `%%%`(s, var_7*{var_7 <- `var_7*`}, var_6) + -- fun_alloctypes: `%%`(type#4*{type#4 <- `type*`}, var_5) + -- fun_funcsxa: `%%`(externaddr#6*{externaddr#6 <- `externaddr*`}, var_4) + -- fun_tablesxa: `%%`(externaddr#5*{externaddr#5 <- `externaddr*`}, var_3) + -- fun_memsxa: `%%`(externaddr#4*{externaddr#4 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#3*{externaddr#3 <- `externaddr*`}, var_1) + -- fun_tagsxa: `%%`(externaddr#2*{externaddr#2 <- `externaddr*`}, var_0) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec relation fun_rundata_: `%%%`(dataidx, data, instr*) @@ -18888,13 +18885,13 @@ relation fun_evalexprs: `%%%`(state, expr*, (state, ref*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 rule fun_evalexprs_case_1{z : state, expr : instr*, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state, var_0 : (state, ref*)}: `%%%`(z, [expr] ++ expr'#1*{expr'#1 <- `expr'*`}, (z'', [ref] ++ ref'*{ref' <- `ref'*`})) - -- fun_evalexprs: `%%%`(z', expr'#2*{expr'#2 <- `expr'*`}, var_0) -- wf_state: `%`(z'') -- wf_ref: `%`(ref) -- (wf_ref: `%`(ref'#5))*{ref'#5 <- `ref'*`} -- wf_state: `%`(z') -- Eval_expr: `%;%~>*%;%`(z, expr, z', [$val_ref(ref)]) -- if ((z'', ref'#6*{ref'#6 <- `ref'*`}) = var_0) + -- fun_evalexprs: `%%%`(z', expr'#2*{expr'#2 <- `expr'*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18909,14 +18906,14 @@ relation fun_evalexprss: `%%%`(state, expr**, (state, ref**)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 rule fun_evalexprss_case_1{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state, var_1 : (state, ref**), var_0 : (state, ref*)}: `%%%`(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#3*{expr'#3 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}, (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) - -- fun_evalexprss: `%%%`(z', expr'#4*{expr'#4 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}, var_1) - -- fun_evalexprs: `%%%`(z, expr#366*{expr#366 <- `expr*`}, var_0) -- wf_state: `%`(z'') -- (wf_ref: `%`(ref#6))*{ref#6 <- `ref*`} -- (wf_ref: `%`(ref'#7))*{ref'#7 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`} -- wf_state: `%`(z') -- if ((z', ref#7*{ref#7 <- `ref*`}) = var_0) -- if ((z'', ref'#8*{ref'#8 <- `ref'*#4`}*{`ref'*#4` <- `ref'**`}) = var_1) + -- fun_evalexprss: `%%%`(z', expr'#4*{expr'#4 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}, var_1) + -- fun_evalexprs: `%%%`(z, expr#366*{expr#366 <- `expr*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18931,8 +18928,6 @@ relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 rule fun_evalglobals_case_1{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, s : store, f : frame, s' : store, a : nat, var_1 : (state, val*), var_0 : (store, globaladdr)}: `%%%%`(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#5*{expr'#5 <- `expr'*`}, (z'', [val] ++ val'*{val' <- `val'*`})) - -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#6*{expr'#6 <- `expr'*`}, var_1) - -- fun_allocglobal: `%%%%`(s, gt, val, var_0) -- wf_state: `%`(z'') -- wf_val: `%`(val) -- (wf_val: `%`(val'#3))*{val'#3 <- `val'*`} @@ -18943,6 +18938,8 @@ relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) -- if (z' = `%;%`_state(s, f)) -- if ((s', a) = var_0) -- if ((z'', val'#4*{val'#4 <- `val'*`}) = var_1) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#6*{expr'#6 <- `expr'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, gt, val, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18950,20 +18947,6 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat, `var_11*` : instr**, `var_10*` : instr**, var_9 : (store, moduleinst), var_8 : (state, ref**), var_7 : (state, ref*), var_6 : (state, val*), var_5 : funcaddr*, var_4 : globaladdr*, var_3 : deftype*, var_2 : funcaddr*, var_1 : globaladdr*, var_0 : deftype*}: `%%%%`(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}, `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) - -- (if (i_E#2 < |elem#12*{elem#12 <- `elem*`}|))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){} - -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#12*{elem#12 <- `elem*`}[i_E#2], var_11))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_11 <- `var_11*`} - -- (if (i_D#2 < |data#11*{data#11 <- `data*`}|))^(i_D#2<|data#10*{data#10 <- `data*`}|){} - -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#11*{data#11 <- `data*`}[i_D#2], var_10))^(i_D#2<|data#10*{data#10 <- `data*`}|){var_10 <- `var_10*`} - -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_9) - -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_8) - -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_7) - -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_6) - -- fun_funcsxa: `%%`(externaddr#12*{externaddr#12 <- `externaddr*`}, var_5) - -- fun_globalsxa: `%%`(externaddr#11*{externaddr#11 <- `externaddr*`}, var_4) - -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_3) - -- fun_funcsxa: `%%`(externaddr#9*{externaddr#9 <- `externaddr*`}, var_2) - -- fun_globalsxa: `%%`(externaddr#8*{externaddr#8 <- `externaddr*`}, var_1) - -- fun_alloctypes: `%%`(type#6*{type#6 <- `type*`}, var_0) -- wf_state: `%`(z) -- wf_state: `%`(z') -- (wf_val: `%`(val_G#3))*{val_G#3 <- `val_G*`} @@ -19009,6 +18992,20 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- if (instr_D#2*{instr_D#2 <- `instr_D*`} = $concat_(syntax instr, var_10^(i_D#2<|data#10*{data#10 <- `data*`}|){var_10 <- `var_10*`})) -- if (instr_E#2*{instr_E#2 <- `instr_E*`} = $concat_(syntax instr, var_11^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_11 <- `var_11*`})) -- if (instr_S#2?{instr_S#2 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`}) + -- (if (i_E#2 < |elem#12*{elem#12 <- `elem*`}|))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){} + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#12*{elem#12 <- `elem*`}[i_E#2], var_11))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_11 <- `var_11*`} + -- (if (i_D#2 < |data#11*{data#11 <- `data*`}|))^(i_D#2<|data#10*{data#10 <- `data*`}|){} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#11*{data#11 <- `data*`}[i_D#2], var_10))^(i_D#2<|data#10*{data#10 <- `data*`}|){var_10 <- `var_10*`} + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_9) + -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_8) + -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_7) + -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_6) + -- fun_funcsxa: `%%`(externaddr#12*{externaddr#12 <- `externaddr*`}, var_5) + -- fun_globalsxa: `%%`(externaddr#11*{externaddr#11 <- `externaddr*`}, var_4) + -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_3) + -- fun_funcsxa: `%%`(externaddr#9*{externaddr#9 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#8*{externaddr#8 <- `externaddr*`}, var_1) + -- fun_alloctypes: `%%`(type#6*{type#6 <- `type*`}, var_0) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec relation fun_invoke: `%%%%`(store, funcaddr, val*, config) @@ -19454,8 +19451,8 @@ relation fun_ordered: `%%`(decl*, bool) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rule fun_ordered_case_0{`decl*` : decl*, var_0 : import*}: `%%`(decl#1*{decl#1 <- `decl*`}, true) - -- fun_importsd: `%%`(decl#2*{decl#2 <- `decl*`}, var_0) -- if (var_0 = []) + -- fun_importsd: `%%`(decl#2*{decl#2 <- `decl*`}, var_0) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rule fun_ordered_case_1{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*, var_5 : func*, var_4 : table*, var_3 : mem*, var_2 : global*, var_1 : tag*, var_0 : import*}: diff --git a/spectec/test-middlend/specification.exp/11-alias-demut.il b/spectec/test-middlend/specification.exp/11-alias-demut.il index 0f29962e0d..0236d7322a 100644 --- a/spectec/test-middlend/specification.exp/11-alias-demut.il +++ b/spectec/test-middlend/specification.exp/11-alias-demut.il @@ -420,35 +420,35 @@ relation fun_utf8: `%%`(char*, byte*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: `%%`([ch], [b_1 b_2]) - -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) + -- fun_cont: `%%`(b_2, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: `%%`([ch], [b_1 b_2 b_3]) - -- fun_cont: `%%`(b_3, var_1) - -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * var_0)) + var_1)) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 rule fun_utf8_case_4{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, var_2 : nat, var_1 : nat, var_0 : nat}: `%%`([ch], [b_1 b_2 b_3 b_4]) - -- fun_cont: `%%`(b_4, var_2) - -- fun_cont: `%%`(b_3, var_1) - -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- wf_byte: `%`(b_3) -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * var_0)) + ((2 ^ 6) * var_1)) + var_2)) + -- fun_cont: `%%`(b_4, var_2) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -1936,28 +1936,27 @@ relation fun_subst_typevar: `%%%%`(typevar, typevar*, typeuse*, typeuse?) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 relation fun_minus_recs_before_fun_minus_recs_case_3: `%%`(typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_0 : (typevar*, typeuse*)?}: `%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}) - -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) -- (wf_typevar: `%`(tv'#2))*{tv'#2 <- `tv'*`} -- (wf_typeuse: `%`(tu'#2))*{tu'#2 <- `tu'*`} -- wf_typevar: `%`(_IDX_typevar(x)) -- if (var_0 =/= ?()) -- if ((tv'#3*{tv'#3 <- `tv'*`}, tu'#3*{tu'#3 <- `tu'*`}) = !(var_0)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)?}: `%%`([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_minus_recs_case_0: `%%`([], []) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 @@ -1972,12 +1971,12 @@ relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_0 : (typevar*, typeuse*)?}: `%%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}, ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}))) - -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) -- (wf_typevar: `%`(tv'#2))*{tv'#2 <- `tv'*`} -- (wf_typeuse: `%`(tu'#2))*{tu'#2 <- `tu'*`} -- wf_typevar: `%`(_IDX_typevar(x)) -- if (var_0 =/= ?()) -- if ((tv'#3*{tv'#3 <- `tv'*`}, tu'#3*{tu'#3 <- `tu'*`}) = !(var_0)) + -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 rule fun_minus_recs_case_3{x0 : typevar*, x1 : typeuse*}: @@ -2050,9 +2049,9 @@ relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 rule fun_subst_reftype_case_0{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : heaptype, var_0 : heaptype}: `%%%%`(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`}, REF_reftype(null?{null <- `null?`}, var_0)) + -- wf_reftype: `%`(REF_reftype(null#2?{null#2 <- `null?`}, var_1)) -- fun_subst_heaptype: `%%%%`(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}, var_1) -- fun_subst_heaptype: `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_reftype: `%`(REF_reftype(null#2?{null#2 <- `null?`}, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 relation fun_subst_valtype: `%%%%`(valtype, typevar*, typeuse*, valtype) @@ -2136,31 +2135,32 @@ relation fun_subst_fieldtype: `%%%%`(fieldtype, typevar*, typeuse*, fieldtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 rule fun_subst_fieldtype_case_0{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : storagetype, var_0 : storagetype}: `%%%%`(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`}, `%%`_fieldtype(mut?{mut <- `mut?`}, var_0)) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut#2?{mut#2 <- `mut?`}, var_1)) -- fun_subst_storagetype: `%%%%`(zt, tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}, var_1) -- fun_subst_storagetype: `%%%%`(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut#2?{mut#2 <- `mut?`}, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_0{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : fieldtype*, `var_0*` : fieldtype*}: `%%%%`(STRUCT_comptype(`%`_list(ft#1*{ft#1 <- `ft*`})), tv#55*{tv#55 <- `tv*`}, tu#55*{tu#55 <- `tu*`}, STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_1*{var_1 <- `var_1*`}))) -- if (|`var_1*`| = |`ft*`|) -- (fun_subst_fieldtype: `%%%%`(ft#2, tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`}, var_1))*{var_1 <- `var_1*`, ft#2 <- `ft*`} -- if (|`var_0*`| = |`ft*`|) -- (fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, ft <- `ft*`} - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_1*{var_1 <- `var_1*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_1{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : fieldtype, var_0 : fieldtype}: `%%%%`(ARRAY_comptype(ft), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}, ARRAY_comptype(var_0)) + -- wf_comptype: `%`(ARRAY_comptype(var_1)) -- fun_subst_fieldtype: `%%%%`(ft, tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}, var_1) -- fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_comptype: `%`(ARRAY_comptype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_2{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_3*` : valtype*, `var_2*` : valtype*, `var_1*` : valtype*, `var_0*` : valtype*}: `%%%%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}, `FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_2*{var_2 <- `var_2*`}), `%`_resulttype(var_3*{var_3 <- `var_3*`}))) -- if (|`var_3*`| = |`t_2*`|) -- (fun_subst_valtype: `%%%%`(t_2#2, tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`}, var_3))*{var_3 <- `var_3*`, t_2#2 <- `t_2*`} -- if (|`var_2*`| = |`t_1*`|) @@ -2169,33 +2169,32 @@ relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) -- (fun_subst_valtype: `%%%%`(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, t_2 <- `t_2*`} -- if (|`var_0*`| = |`t_1*`|) -- (fun_subst_valtype: `%%%%`(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, t_1 <- `t_1*`} - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_2*{var_2 <- `var_2*`}), `%`_resulttype(var_3*{var_3 <- `var_3*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 rule fun_subst_subtype_case_0{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, var_3 : comptype, `var_2*` : typeuse*, var_1 : comptype, `var_0*` : typeuse*}: `%%%%`(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#4*{tu'#4 <- `tu'*`}, ct), tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`}, SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) + -- wf_subtype: `%`(SUB_subtype(final#2?{final#2 <- `final?`}, var_2*{var_2 <- `var_2*`}, var_3)) -- fun_subst_comptype: `%%%%`(ct, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}, var_3) -- if (|`var_2*`| = |`tu'*`|) -- (fun_subst_typeuse: `%%%%`(tu'#5, tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`}, var_2))*{var_2 <- `var_2*`, tu'#5 <- `tu'*`} -- fun_subst_comptype: `%%%%`(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) -- if (|`var_0*`| = |`tu'*`|) -- (fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, tu' <- `tu'*`} - -- wf_subtype: `%`(SUB_subtype(final#2?{final#2 <- `final?`}, var_2*{var_2 <- `var_2*`}, var_3)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 rule fun_subst_rectype_case_0{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_1 : (typevar*, typeuse*)?, `var_0*` : subtype*}: `%%%%`(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}, REC_rectype(`%`_list(var_0*{var_0 <- `var_0*`}))) - -- fun_minus_recs: `%%%`(tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}, var_1) - -- if (|`var_0*`| = |`st*`|) - -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} -- (wf_typevar: `%`(tv'#4))*{tv'#4 <- `tv'*`} -- (wf_typeuse: `%`(tu'#6))*{tu'#6 <- `tu'*`} -- if (var_1 =/= ?()) -- if ((tv'#5*{tv'#5 <- `tv'*`}, tu'#7*{tu'#7 <- `tu'*`}) = !(var_1)) + -- fun_minus_recs: `%%%`(tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}, var_1) + -- if (|`var_0*`| = |`st*`|) + -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 relation fun_subst_deftype: `%%%%`(deftype, typevar*, typeuse*, deftype) @@ -2222,9 +2221,9 @@ relation fun_subst_globaltype: `%%%%`(globaltype, typevar*, typeuse*, globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_globaltype_case_0{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : valtype, var_0 : valtype}: `%%%%`(`%%`_globaltype(mut#3?{mut#3 <- `mut?`}, t), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}, `%%`_globaltype(mut?{mut <- `mut?`}, var_0)) + -- wf_globaltype: `%`(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, var_1)) -- fun_subst_valtype: `%%%%`(t, tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}, var_1) -- fun_subst_valtype: `%%%%`(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_globaltype: `%`(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation fun_subst_memtype: `%%%%`(memtype, typevar*, typeuse*, memtype) @@ -2238,52 +2237,53 @@ relation fun_subst_tabletype: `%%%%`(tabletype, typevar*, typeuse*, tabletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_tabletype_case_0{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : reftype, var_0 : reftype}: `%%%%`(`%%%`_tabletype(at, lim, rt), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}, `%%%`_tabletype(at, lim, var_0)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, var_1)) -- fun_subst_reftype: `%%%%`(rt, tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}, var_1) -- fun_subst_reftype: `%%%%`(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation fun_subst_externtype: `%%%%`(externtype, typevar*, typeuse*, externtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_0{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_1 : tagtype, var_0 : tagtype}: `%%%%`(TAG_externtype(jt), tv#75*{tv#75 <- `tv*`}, tu#75*{tu#75 <- `tu*`}, TAG_externtype(var_0)) + -- wf_externtype: `%`(TAG_externtype(var_1)) -- fun_subst_tagtype: `%%%%`(jt, tv#76*{tv#76 <- `tv*`}, tu#76*{tu#76 <- `tu*`}, var_1) -- fun_subst_tagtype: `%%%%`(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_externtype: `%`(TAG_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_1{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : globaltype, var_0 : globaltype}: `%%%%`(GLOBAL_externtype(gt), tv#77*{tv#77 <- `tv*`}, tu#77*{tu#77 <- `tu*`}, GLOBAL_externtype(var_0)) + -- wf_externtype: `%`(GLOBAL_externtype(var_1)) -- fun_subst_globaltype: `%%%%`(gt, tv#78*{tv#78 <- `tv*`}, tu#78*{tu#78 <- `tu*`}, var_1) -- fun_subst_globaltype: `%%%%`(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_externtype: `%`(GLOBAL_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_2{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : tabletype, var_0 : tabletype}: `%%%%`(TABLE_externtype(tt), tv#79*{tv#79 <- `tv*`}, tu#79*{tu#79 <- `tu*`}, TABLE_externtype(var_0)) + -- wf_externtype: `%`(TABLE_externtype(var_1)) -- fun_subst_tabletype: `%%%%`(tt, tv#80*{tv#80 <- `tv*`}, tu#80*{tu#80 <- `tu*`}, var_1) -- fun_subst_tabletype: `%%%%`(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_externtype: `%`(TABLE_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_3{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : memtype, var_0 : memtype}: `%%%%`(MEM_externtype(mt), tv#81*{tv#81 <- `tv*`}, tu#81*{tu#81 <- `tu*`}, MEM_externtype(var_0)) + -- wf_externtype: `%`(MEM_externtype(var_1)) -- fun_subst_memtype: `%%%%`(mt, tv#82*{tv#82 <- `tv*`}, tu#82*{tu#82 <- `tu*`}, var_1) -- fun_subst_memtype: `%%%%`(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_externtype: `%`(MEM_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_4{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_1 : typeuse, var_0 : typeuse}: `%%%%`(FUNC_externtype(tu'), tv#83*{tv#83 <- `tv*`}, tu#83*{tu#83 <- `tu*`}, FUNC_externtype(var_0)) + -- wf_externtype: `%`(FUNC_externtype(var_1)) -- fun_subst_typeuse: `%%%%`(tu', tv#84*{tv#84 <- `tv*`}, tu#84*{tu#84 <- `tu*`}, var_1) -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) - -- wf_externtype: `%`(FUNC_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_moduletype_case_0{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_3*` : externtype*, `var_2*` : externtype*, `var_1*` : externtype*, `var_0*` : externtype*}: `%%%%`(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#85*{tv#85 <- `tv*`}, tu#85*{tu#85 <- `tu*`}, `%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) + -- wf_moduletype: `%`(`%->%`_moduletype(var_2*{var_2 <- `var_2*`}, var_3*{var_3 <- `var_3*`})) -- if (|`var_3*`| = |`xt_2*`|) -- (fun_subst_externtype: `%%%%`(xt_2#2, tv#87*{tv#87 <- `tv*`}, tu#87*{tu#87 <- `tu*`}, var_3))*{var_3 <- `var_3*`, xt_2#2 <- `xt_2*`} -- if (|`var_2*`| = |`xt_1*`|) @@ -2292,79 +2292,78 @@ relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype -- (fun_subst_externtype: `%%%%`(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, xt_2 <- `xt_2*`} -- if (|`var_0*`| = |`xt_1*`|) -- (fun_subst_externtype: `%%%%`(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, xt_1 <- `xt_1*`} - -- wf_moduletype: `%`(`%->%`_moduletype(var_2*{var_2 <- `var_2*`}, var_3*{var_3 <- `var_3*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation fun_subst_all_valtype: `%%%`(valtype, typeuse*, valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_all_valtype_case_0{t : valtype, n : nat, `tu*` : typeuse*, i : nat, var_0 : valtype}: `%%%`(t, tu#88^n{tu#88 <- `tu*`}, var_0) - -- fun_subst_valtype: `%%%%`(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ var_0) - -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -5839,12 +5838,12 @@ relation fun_free_block: `%%`(instr*, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 rule fun_free_block_case_0{`instr*` : instr*, free : free, `var_2*` : free*, var_1 : free, var_0 : labelidx*}: `%%`(instr#4*{instr#4 <- `instr*`}, free[LABELS_free = var_0]) + -- wf_free: `%`(free) + -- if (free = var_1) -- if (|`var_2*`| = |`instr*`|) -- (fun_free_instr: `%%`(instr#5, var_2))*{var_2 <- `var_2*`, instr#5 <- `instr*`} -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) -- fun_shift_labelidxs: `%%`(free.LABELS_free, var_0) - -- wf_free: `%`(free) - -- if (free = var_1) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -6322,9 +6321,9 @@ relation fun_clos_deftypes: `%%`(deftype*, deftype*) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 rule fun_clos_deftypes_case_1{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: `%%`(dt#2*{dt#2 <- `dt*`} ++ [dt_n], dt'*{dt' <- `dt'*`} ++ [var_0]) + -- if (dt'#1*{dt'#1 <- `dt'*`} = var_1) -- fun_clos_deftypes: `%%`(dt#3*{dt#3 <- `dt*`}, var_1) -- fun_subst_all_deftype: `%%%`(dt_n, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) - -- if (dt'#1*{dt'#1 <- `dt'*`} = var_1) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -6332,45 +6331,45 @@ relation fun_clos_valtype: `%%%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_valtype_case_0{C : context, t : valtype, `dt*` : deftype*, var_1 : deftype*, var_0 : valtype}: `%%%`(C, t, var_0) + -- if (dt#4*{dt#4 <- `dt*`} = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) - -- if (dt#4*{dt#4 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation fun_clos_deftype: `%%%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_deftype_case_0{C : context, dt : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: `%%%`(C, dt, var_0) + -- if (dt'#2*{dt'#2 <- `dt'*`} = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_deftype: `%%%`(dt, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) - -- if (dt'#2*{dt'#2 <- `dt'*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation fun_clos_tagtype: `%%%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_tagtype_case_0{C : context, jt : typeuse, `dt*` : deftype*, var_1 : deftype*, var_0 : tagtype}: `%%%`(C, jt, var_0) + -- if (dt#5*{dt#5 <- `dt*`} = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_tagtype: `%%%`(jt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) - -- if (dt#5*{dt#5 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation fun_clos_externtype: `%%%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_externtype_case_0{C : context, xt : externtype, `dt*` : deftype*, var_1 : deftype*, var_0 : externtype}: `%%%`(C, xt, var_0) + -- if (dt#6*{dt#6 <- `dt*`} = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_externtype: `%%%`(xt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) - -- if (dt#6*{dt#6 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation fun_clos_moduletype: `%%%`(context, moduletype, moduletype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_moduletype_case_0{C : context, mmt : moduletype, `dt*` : deftype*, var_1 : deftype*, var_0 : moduletype}: `%%%`(C, mmt, var_0) + -- if (dt#7*{dt#7 <- `dt*`} = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_moduletype: `%%%`(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) - -- if (dt#7*{dt#7 <- `dt*`} = var_1) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -7361,13 +7360,11 @@ relation fun_default__before_fun_default__case_7: `%`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_3{var_0 : fN}: `%`(F64_valtype) - -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_2{var_0 : fN}: `%`(F32_valtype) - -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -7395,14 +7392,14 @@ relation fun_default_: `%%`(valtype, val??) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_2{var_0 : fN}: `%%`(F32_valtype, ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))))) - -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_3{var_0 : fN}: `%%`(F64_valtype, ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))))) - -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_4: @@ -9039,8 +9036,8 @@ relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule fun_funcidx_nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*, var_0 : funcidx*}: `%%`(`%%%%%%`_nonfuncs(global#2*{global#2 <- `global*`}, mem#2*{mem#2 <- `mem*`}, table#2*{table#2 <- `table*`}, elem#2*{elem#2 <- `elem*`}, start#2?{start#2 <- `start?`}, export#2*{export#2 <- `export*`}), var_0) - -- fun_funcidx_module: `%%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#3*{export#3 <- `export*`}))) + -- fun_funcidx_module: `%%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) @@ -9282,14 +9279,14 @@ relation fun_zero: `%%`(lanetype, lane_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_zero_case_4{var_0 : fN}: `%%`(F32_lanetype, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) - -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_zero_case_5{var_0 : fN}: `%%`(F64_lanetype, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) - -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -9345,9 +9342,9 @@ relation fun_iextend_: `%%%%%`(N, M, sx, iN, iN) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_iextend__case_1{N : nat, M : nat, i : uN, var_1 : int, var_0 : nat}: `%%%%%`(N, M, S_sx, i, `%`_iN(var_0)) + -- wf_uN: `%%`(N, `%`_uN(var_0)) -- fun_signed_: `%%%`(M, ($proj_uN_0(i).0 \ (2 ^ M)), var_1) -- fun_inv_signed_: `%%%`(N, var_1, var_0) - -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN @@ -9385,17 +9382,17 @@ relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_idiv__case_3{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: `%%%%%`(N, S_sx, i_1, i_2, ?()) + -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) - -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_idiv__case_4{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- wf_uN: `%%`(N, `%`_uN(var_0)) -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) -- fun_inv_signed_: `%%%`(N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) - -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) @@ -9415,11 +9412,11 @@ relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_irem__case_3{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + -- if ((j_1 = var_1) /\ (j_2 = var_2)) -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) -- fun_inv_signed_: `%%%`(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) - -- wf_uN: `%%`(N, `%`_uN(var_0)) - -- if ((j_1 = var_1) /\ (j_2 = var_2)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -9855,14 +9852,14 @@ relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_unop__case_6{M : nat, i : uN, var_0 : uN}: `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, var_0)]) - -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i, var_0) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, var_0)) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_unop__case_7{M : nat, i : uN, var_0 : uN}: `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, var_0)]) - -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i, var_0) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, var_0)) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_unop__case_8{f : fN}: @@ -9969,26 +9966,26 @@ relation fun_binop_: `%%%%%`(numtype, binop_, num_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_6{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#30)*{iter_0#30 <- lift(var_0)}) - -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#29)))*{iter_0#29 <- lift(var_0)} + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_7{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#32)*{iter_0#32 <- lift(var_0)}) - -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#31)))*{iter_0#31 <- lift(var_0)} + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_8{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift(var_0)}) - -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#33)))*{iter_0#33 <- lift(var_0)} + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_9{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift(var_0)}) - -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#35)))*{iter_0#35 <- lift(var_0)} + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_10{i_1 : uN, i_2 : uN}: @@ -12449,10 +12446,6 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1, v) - -- if (|`var_2*`| = |`c_1*`|) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#171, var_2))*{var_2 <- `var_2*`, c_1#171 <- `c_1*`} - -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) - -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1#169))*{c_1#169 <- `c_1*`} -- (wf_lane_: `%%`(Lnn_2, c#303))*{c#303 <- `c*#43`}*{`c*#43` <- `c**`} @@ -12463,13 +12456,14 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (c#304*{c#304 <- `c*#44`}*{`c*#44` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`})) -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#305*{c#305 <- `c*#45`})*{`c*#45` <- `c**`}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#305*{c#305 <- `c*#45`})*{`c*#45` <- `c**`}) + -- if (|`var_2*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#171, var_2))*{var_2 <- `var_2*`, c_1#171 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**, `var_1*` : lane_**, var_0 : half?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) - -- if (|`var_1*`| = |`c_1*`|) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#174, var_1))*{var_1 <- `var_1*`, c_1#174 <- `c_1*`} - -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1#172))*{c_1#172 <- `c_1*`} -- (wf_lane_: `%%`(Lnn_2, c#306))*{c#306 <- `c*#46`}*{`c*#46` <- `c**`} @@ -12480,14 +12474,13 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (c#307*{c#307 <- `c*#47`}*{`c*#47` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`})) -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#308*{c#308 <- `c*#48`})*{`c*#48` <- `c**`}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#308*{c#308 <- `c*#48`})*{`c*#48` <- `c**`}) + -- if (|`var_1*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#174, var_1))*{var_1 <- `var_1*`, c_1#174 <- `c_1*`} + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, var_2 : lane_, `var_1*` : lane_**, var_0 : zero?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) - -- fun_zero: `%%`(Lnn_2, var_2) - -- if (|`var_1*`| = |`c_1*`|) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#177, var_1))*{var_1 <- `var_1*`, c_1#177 <- `c_1*`} - -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1#175))*{c_1#175 <- `c_1*`} -- (wf_lane_: `%%`(Lnn_2, c#309))*{c#309 <- `c*#49`}*{`c*#49` <- `c**`} @@ -12498,6 +12491,10 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (c#310*{c#310 <- `c*#50`}*{`c*#50` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`} ++ [var_2]^M_1{})) -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#311*{c#311 <- `c*#51`})*{`c*#51` <- `c**`}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#311*{c#311 <- `c*#51`})*{`c*#51` <- `c**`}) + -- fun_zero: `%%`(Lnn_2, var_2) + -- if (|`var_1*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#177, var_1))*{var_1 <- `var_1*`, c_1#177 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec relation fun_vshiftop_: `%%%%%`(ishape, vshiftop_, vec_, u32, vec_) @@ -12546,26 +12543,26 @@ relation fun_vbitmaskop_: `%%%`(ishape, vec_, u32) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vbitmaskop__case_0{M : nat, v : uN, var_0 : u32}: `%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v, var_0) - -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vbitmaskop__case_1{M : nat, v : uN, var_0 : u32}: `%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v, var_0) - -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vbitmaskop__case_2{M : nat, v : uN, var_0 : u32}: `%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v, var_0) - -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vbitmaskop__case_3{M : nat, v : uN, var_0 : u32}: `%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v, var_0) - -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec relation fun_vswizzlop_: `%%%%%`(bshape, vswizzlop_, vec_, vec_, vec_) @@ -12584,8 +12581,8 @@ relation fun_vshufflop_: `%%%%%`(bshape, laneidx*, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, var_0 : vec_}: `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#129110*{i#129110 <- `i*`}, v_1, v_2, var_0) - -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, var_0) -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) @@ -13785,9 +13782,6 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_0{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13804,13 +13798,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_1{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13827,13 +13821,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_2{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13850,13 +13844,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_3{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13873,13 +13867,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_4{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13896,13 +13890,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_5{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13919,13 +13913,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_6{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13942,13 +13936,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_7{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13965,13 +13959,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_8{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13988,13 +13982,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_9{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14011,13 +14005,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_10{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14034,13 +14028,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_11{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14057,13 +14051,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_12{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14080,13 +14074,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_13{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14103,13 +14097,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_14{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14126,13 +14120,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_15{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14149,6 +14143,9 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax num = @@ -18510,14 +18507,14 @@ relation fun_alloctypes: `%%`(type*, deftype*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 rule fun_alloctypes_case_1{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN, var_2 : deftype*, var_1 : deftype*, var_0 : deftype*}: `%%`(type'#1*{type'#1 <- `type'*`} ++ [type], deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`}) - -- fun_rolldt: `%%%`(x, rectype, var_2) - -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype'#2)*{deftype'#2 <- `deftype'*`}, var_1) - -- fun_alloctypes: `%%`(type'#2*{type'#2 <- `type'*`}, var_0) -- wf_uN: `%%`(32, x) -- if (deftype'#1*{deftype'#1 <- `deftype'*`} = var_0) -- if (type = TYPE_type(rectype)) -- if (deftype#1*{deftype#1 <- `deftype*`} = var_1) -- if ($proj_uN_0(x).0 = |deftype'#3*{deftype'#3 <- `deftype'*`}|) + -- fun_rolldt: `%%%`(x, rectype, var_2) + -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype'#2)*{deftype'#2 <- `deftype'*`}, var_1) + -- fun_alloctypes: `%%`(type'#2*{type'#2 <- `type'*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18541,12 +18538,12 @@ relation fun_alloctags: `%%%`(store, tagtype*, (store, tagaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 rule fun_alloctags_case_1{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store, var_1 : (store, tagaddr*), var_0 : (store, tagaddr)}: `%%%`(s, [tagtype] ++ tagtype'#1*{tagtype'#1 <- `tagtype'*`}, (s_2, [ja] ++ ja'*{ja' <- `ja'*`})) - -- fun_alloctags: `%%%`(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}, var_1) - -- fun_alloctag: `%%%`(s, tagtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ja) = var_0) -- if ((s_2, ja'#1*{ja'#1 <- `ja'*`}) = var_1) + -- fun_alloctags: `%%%`(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}, var_1) + -- fun_alloctag: `%%%`(s, tagtype, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18570,12 +18567,12 @@ relation fun_allocglobals: `%%%%`(store, globaltype*, val*, (store, globaladdr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 rule fun_allocglobals_case_1{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store, var_1 : (store, globaladdr*), var_0 : (store, globaladdr)}: `%%%%`(s, [globaltype] ++ globaltype'#1*{globaltype'#1 <- `globaltype'*`}, [val] ++ val'#1*{val'#1 <- `val'*`}, (s_2, [ga] ++ ga'*{ga' <- `ga'*`})) - -- fun_allocglobals: `%%%%`(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}, var_1) - -- fun_allocglobal: `%%%%`(s, globaltype, val, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ga) = var_0) -- if ((s_2, ga'#1*{ga'#1 <- `ga'*`}) = var_1) + -- fun_allocglobals: `%%%%`(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, globaltype, val, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18599,12 +18596,12 @@ relation fun_allocmems: `%%%`(store, memtype*, (store, memaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 rule fun_allocmems_case_1{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store, var_1 : (store, memaddr*), var_0 : (store, memaddr)}: `%%%`(s, [memtype] ++ memtype'#1*{memtype'#1 <- `memtype'*`}, (s_2, [ma] ++ ma'*{ma' <- `ma'*`})) - -- fun_allocmems: `%%%`(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}, var_1) - -- fun_allocmem: `%%%`(s, memtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ma) = var_0) -- if ((s_2, ma'#1*{ma'#1 <- `ma'*`}) = var_1) + -- fun_allocmems: `%%%`(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}, var_1) + -- fun_allocmem: `%%%`(s, memtype, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18628,12 +18625,12 @@ relation fun_alloctables: `%%%%`(store, tabletype*, ref*, (store, tableaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 rule fun_alloctables_case_1{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store, var_1 : (store, tableaddr*), var_0 : (store, tableaddr)}: `%%%%`(s, [tabletype] ++ tabletype'#1*{tabletype'#1 <- `tabletype'*`}, [ref] ++ ref'#1*{ref'#1 <- `ref'*`}, (s_2, [ta] ++ ta'*{ta' <- `ta'*`})) - -- fun_alloctables: `%%%%`(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}, var_1) - -- fun_alloctable: `%%%%`(s, tabletype, ref, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ta) = var_0) -- if ((s_2, ta'#1*{ta'#1 <- `ta'*`}) = var_1) + -- fun_alloctables: `%%%%`(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}, var_1) + -- fun_alloctable: `%%%%`(s, tabletype, ref, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18657,12 +18654,12 @@ relation fun_allocfuncs: `%%%%%`(store, deftype*, funccode*, moduleinst*, (store ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 rule fun_allocfuncs_case_1{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store, var_1 : (store, funcaddr*), var_0 : (store, funcaddr)}: `%%%%%`(s, [dt] ++ dt'#3*{dt'#3 <- `dt'*`}, [funccode] ++ funccode'#1*{funccode'#1 <- `funccode'*`}, [moduleinst] ++ moduleinst'#1*{moduleinst'#1 <- `moduleinst'*`}, (s_2, [fa] ++ fa'*{fa' <- `fa'*`})) - -- fun_allocfuncs: `%%%%%`(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}, var_1) - -- fun_allocfunc: `%%%%%`(s, dt, funccode, moduleinst, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, fa) = var_0) -- if ((s_2, fa'#1*{fa'#1 <- `fa'*`}) = var_1) + -- fun_allocfuncs: `%%%%%`(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}, var_1) + -- fun_allocfunc: `%%%%%`(s, dt, funccode, moduleinst, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18686,12 +18683,12 @@ relation fun_allocdatas: `%%%%`(store, datatype*, byte**, (store, dataaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 rule fun_allocdatas_case_1{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store, var_1 : (store, dataaddr*), var_0 : (store, dataaddr)}: `%%%%`(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#10*{b#10 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}, (s_2, [da] ++ da'*{da' <- `da'*`})) - -- fun_allocdatas: `%%%%`(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}, var_1) - -- fun_allocdata: `%%%%`(s, ok, b#11*{b#11 <- `b*`}, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, da) = var_0) -- if ((s_2, da'#1*{da'#1 <- `da'*`}) = var_1) + -- fun_allocdatas: `%%%%`(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}, var_1) + -- fun_allocdata: `%%%%`(s, ok, b#11*{b#11 <- `b*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18715,12 +18712,12 @@ relation fun_allocelems: `%%%%`(store, elemtype*, ref**, (store, elemaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 rule fun_allocelems_case_1{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store, var_1 : (store, elemaddr*), var_0 : (store, elemaddr)}: `%%%%`(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#3*{ref'#3 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}, (s_2, [ea] ++ ea'*{ea' <- `ea'*`})) - -- fun_allocelems: `%%%%`(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#4*{ref'#4 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}, var_1) - -- fun_allocelem: `%%%%`(s, rt, ref#5*{ref#5 <- `ref*`}, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ea) = var_0) -- if ((s_2, ea'#1*{ea'#1 <- `ea'*`}) = var_1) + -- fun_allocelems: `%%%%`(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#4*{ref'#4 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}, var_1) + -- fun_allocelem: `%%%%`(s, rt, ref#5*{ref#5 <- `ref*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18768,31 +18765,6 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_18 : exportinst*, var_17 : (store, funcaddr*), `var_16*` : elemtype*, var_15 : (store, elemaddr*), var_14 : (store, dataaddr*), `var_13*` : tabletype*, var_12 : (store, tableaddr*), `var_11*` : memtype*, var_10 : (store, memaddr*), `var_9*` : globaltype*, var_8 : (store, globaladdr*), `var_7*` : tagtype*, var_6 : (store, tagaddr*), var_5 : deftype*, var_4 : funcaddr*, var_3 : tableaddr*, var_2 : memaddr*, var_1 : globaladdr*, var_0 : tagaddr*}: `%%%%%%%`(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}, (s_7, moduleinst)) - -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#7*{export#7 <- `export*`}, var_18) - -- (if ($proj_uN_0(x#4).0 < |dt#15*{dt#15 <- `dt*`}|))*{x#4 <- `x*`} - -- fun_allocfuncs: `%%%%%`(s_6, dt#15*{dt#15 <- `dt*`}[$proj_uN_0(x#4).0]*{x#4 <- `x*`}, FUNC_funccode(x#5, local#4*{local#4 <- `local*#86`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#86` <- `local**`, x#5 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_17) - -- if (|`var_16*`| = |`elemtype*`|) - -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- `dt*`}, var_16))*{var_16 <- `var_16*`, elemtype#3 <- `elemtype*`} - -- fun_allocelems: `%%%%`(s_5, var_16*{var_16 <- `var_16*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_15) - -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#114`}*{`byte*#114` <- `byte**`}, var_14) - -- if (|`var_13*`| = |`tabletype*`|) - -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_13))*{var_13 <- `var_13*`, tabletype#160 <- `tabletype*`} - -- fun_alloctables: `%%%%`(s_3, var_13*{var_13 <- `var_13*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_12) - -- if (|`var_11*`| = |`memtype*`|) - -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_11))*{var_11 <- `var_11*`, memtype#126 <- `memtype*`} - -- fun_allocmems: `%%%`(s_2, var_11*{var_11 <- `var_11*`}, var_10) - -- if (|`var_9*`| = |`globaltype*`|) - -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_9))*{var_9 <- `var_9*`, globaltype#126 <- `globaltype*`} - -- fun_allocglobals: `%%%%`(s_1, var_9*{var_9 <- `var_9*`}, val_G#2*{val_G#2 <- `val_G*`}, var_8) - -- if (|`var_7*`| = |`tagtype*`|) - -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_7))*{var_7 <- `var_7*`, tagtype#82 <- `tagtype*`} - -- fun_alloctags: `%%%`(s, var_7*{var_7 <- `var_7*`}, var_6) - -- fun_alloctypes: `%%`(type#4*{type#4 <- `type*`}, var_5) - -- fun_funcsxa: `%%`(externaddr#6*{externaddr#6 <- `externaddr*`}, var_4) - -- fun_tablesxa: `%%`(externaddr#5*{externaddr#5 <- `externaddr*`}, var_3) - -- fun_memsxa: `%%`(externaddr#4*{externaddr#4 <- `externaddr*`}, var_2) - -- fun_globalsxa: `%%`(externaddr#3*{externaddr#3 <- `externaddr*`}, var_1) - -- fun_tagsxa: `%%`(externaddr#2*{externaddr#2 <- `externaddr*`}, var_0) -- wf_store: `%`(s_7) -- wf_moduleinst: `%`(moduleinst) -- wf_store: `%`(s_1) @@ -18842,6 +18814,31 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* -- if ((s_7, fa#4*{fa#4 <- `fa*`}) = var_17) -- if (xi#2*{xi#2 <- `xi*`} = var_18) -- if (moduleinst = {TYPES dt#16*{dt#16 <- `dt*`}, TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) + -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#7*{export#7 <- `export*`}, var_18) + -- (if ($proj_uN_0(x#4).0 < |dt#15*{dt#15 <- `dt*`}|))*{x#4 <- `x*`} + -- fun_allocfuncs: `%%%%%`(s_6, dt#15*{dt#15 <- `dt*`}[$proj_uN_0(x#4).0]*{x#4 <- `x*`}, FUNC_funccode(x#5, local#4*{local#4 <- `local*#86`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#86` <- `local**`, x#5 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_17) + -- if (|`var_16*`| = |`elemtype*`|) + -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- `dt*`}, var_16))*{var_16 <- `var_16*`, elemtype#3 <- `elemtype*`} + -- fun_allocelems: `%%%%`(s_5, var_16*{var_16 <- `var_16*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_15) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#114`}*{`byte*#114` <- `byte**`}, var_14) + -- if (|`var_13*`| = |`tabletype*`|) + -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_13))*{var_13 <- `var_13*`, tabletype#160 <- `tabletype*`} + -- fun_alloctables: `%%%%`(s_3, var_13*{var_13 <- `var_13*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_12) + -- if (|`var_11*`| = |`memtype*`|) + -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_11))*{var_11 <- `var_11*`, memtype#126 <- `memtype*`} + -- fun_allocmems: `%%%`(s_2, var_11*{var_11 <- `var_11*`}, var_10) + -- if (|`var_9*`| = |`globaltype*`|) + -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_9))*{var_9 <- `var_9*`, globaltype#126 <- `globaltype*`} + -- fun_allocglobals: `%%%%`(s_1, var_9*{var_9 <- `var_9*`}, val_G#2*{val_G#2 <- `val_G*`}, var_8) + -- if (|`var_7*`| = |`tagtype*`|) + -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_7))*{var_7 <- `var_7*`, tagtype#82 <- `tagtype*`} + -- fun_alloctags: `%%%`(s, var_7*{var_7 <- `var_7*`}, var_6) + -- fun_alloctypes: `%%`(type#4*{type#4 <- `type*`}, var_5) + -- fun_funcsxa: `%%`(externaddr#6*{externaddr#6 <- `externaddr*`}, var_4) + -- fun_tablesxa: `%%`(externaddr#5*{externaddr#5 <- `externaddr*`}, var_3) + -- fun_memsxa: `%%`(externaddr#4*{externaddr#4 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#3*{externaddr#3 <- `externaddr*`}, var_1) + -- fun_tagsxa: `%%`(externaddr#2*{externaddr#2 <- `externaddr*`}, var_0) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec relation fun_rundata_: `%%%`(dataidx, data, instr*) @@ -18888,13 +18885,13 @@ relation fun_evalexprs: `%%%`(state, expr*, (state, ref*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 rule fun_evalexprs_case_1{z : state, expr : instr*, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state, var_0 : (state, ref*)}: `%%%`(z, [expr] ++ expr'#1*{expr'#1 <- `expr'*`}, (z'', [ref] ++ ref'*{ref' <- `ref'*`})) - -- fun_evalexprs: `%%%`(z', expr'#2*{expr'#2 <- `expr'*`}, var_0) -- wf_state: `%`(z'') -- wf_ref: `%`(ref) -- (wf_ref: `%`(ref'#5))*{ref'#5 <- `ref'*`} -- wf_state: `%`(z') -- Eval_expr: `%;%~>*%;%`(z, expr, z', [$val_ref(ref)]) -- if ((z'', ref'#6*{ref'#6 <- `ref'*`}) = var_0) + -- fun_evalexprs: `%%%`(z', expr'#2*{expr'#2 <- `expr'*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18909,14 +18906,14 @@ relation fun_evalexprss: `%%%`(state, expr**, (state, ref**)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 rule fun_evalexprss_case_1{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state, var_1 : (state, ref**), var_0 : (state, ref*)}: `%%%`(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#3*{expr'#3 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}, (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) - -- fun_evalexprss: `%%%`(z', expr'#4*{expr'#4 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}, var_1) - -- fun_evalexprs: `%%%`(z, expr#366*{expr#366 <- `expr*`}, var_0) -- wf_state: `%`(z'') -- (wf_ref: `%`(ref#6))*{ref#6 <- `ref*`} -- (wf_ref: `%`(ref'#7))*{ref'#7 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`} -- wf_state: `%`(z') -- if ((z', ref#7*{ref#7 <- `ref*`}) = var_0) -- if ((z'', ref'#8*{ref'#8 <- `ref'*#4`}*{`ref'*#4` <- `ref'**`}) = var_1) + -- fun_evalexprss: `%%%`(z', expr'#4*{expr'#4 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}, var_1) + -- fun_evalexprs: `%%%`(z, expr#366*{expr#366 <- `expr*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18931,8 +18928,6 @@ relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 rule fun_evalglobals_case_1{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, s : store, f : frame, s' : store, a : nat, var_1 : (state, val*), var_0 : (store, globaladdr)}: `%%%%`(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#5*{expr'#5 <- `expr'*`}, (z'', [val] ++ val'*{val' <- `val'*`})) - -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#6*{expr'#6 <- `expr'*`}, var_1) - -- fun_allocglobal: `%%%%`(s, gt, val, var_0) -- wf_state: `%`(z'') -- wf_val: `%`(val) -- (wf_val: `%`(val'#3))*{val'#3 <- `val'*`} @@ -18943,6 +18938,8 @@ relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) -- if (z' = `%;%`_state(s, f)) -- if ((s', a) = var_0) -- if ((z'', val'#4*{val'#4 <- `val'*`}) = var_1) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#6*{expr'#6 <- `expr'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, gt, val, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18950,20 +18947,6 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat, `var_11*` : instr**, `var_10*` : instr**, var_9 : (store, moduleinst), var_8 : (state, ref**), var_7 : (state, ref*), var_6 : (state, val*), var_5 : funcaddr*, var_4 : globaladdr*, var_3 : deftype*, var_2 : funcaddr*, var_1 : globaladdr*, var_0 : deftype*}: `%%%%`(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}, `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) - -- (if (i_E#2 < |elem#12*{elem#12 <- `elem*`}|))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){} - -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#12*{elem#12 <- `elem*`}[i_E#2], var_11))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_11 <- `var_11*`} - -- (if (i_D#2 < |data#11*{data#11 <- `data*`}|))^(i_D#2<|data#10*{data#10 <- `data*`}|){} - -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#11*{data#11 <- `data*`}[i_D#2], var_10))^(i_D#2<|data#10*{data#10 <- `data*`}|){var_10 <- `var_10*`} - -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_9) - -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_8) - -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_7) - -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_6) - -- fun_funcsxa: `%%`(externaddr#12*{externaddr#12 <- `externaddr*`}, var_5) - -- fun_globalsxa: `%%`(externaddr#11*{externaddr#11 <- `externaddr*`}, var_4) - -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_3) - -- fun_funcsxa: `%%`(externaddr#9*{externaddr#9 <- `externaddr*`}, var_2) - -- fun_globalsxa: `%%`(externaddr#8*{externaddr#8 <- `externaddr*`}, var_1) - -- fun_alloctypes: `%%`(type#6*{type#6 <- `type*`}, var_0) -- wf_state: `%`(z) -- wf_state: `%`(z') -- (wf_val: `%`(val_G#3))*{val_G#3 <- `val_G*`} @@ -19009,6 +18992,20 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- if (instr_D#2*{instr_D#2 <- `instr_D*`} = $concat_(syntax instr, var_10^(i_D#2<|data#10*{data#10 <- `data*`}|){var_10 <- `var_10*`})) -- if (instr_E#2*{instr_E#2 <- `instr_E*`} = $concat_(syntax instr, var_11^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_11 <- `var_11*`})) -- if (instr_S#2?{instr_S#2 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`}) + -- (if (i_E#2 < |elem#12*{elem#12 <- `elem*`}|))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){} + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#12*{elem#12 <- `elem*`}[i_E#2], var_11))^(i_E#2<|elem#11*{elem#11 <- `elem*`}|){var_11 <- `var_11*`} + -- (if (i_D#2 < |data#11*{data#11 <- `data*`}|))^(i_D#2<|data#10*{data#10 <- `data*`}|){} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#11*{data#11 <- `data*`}[i_D#2], var_10))^(i_D#2<|data#10*{data#10 <- `data*`}|){var_10 <- `var_10*`} + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_9) + -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_8) + -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_7) + -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_6) + -- fun_funcsxa: `%%`(externaddr#12*{externaddr#12 <- `externaddr*`}, var_5) + -- fun_globalsxa: `%%`(externaddr#11*{externaddr#11 <- `externaddr*`}, var_4) + -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_3) + -- fun_funcsxa: `%%`(externaddr#9*{externaddr#9 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#8*{externaddr#8 <- `externaddr*`}, var_1) + -- fun_alloctypes: `%%`(type#6*{type#6 <- `type*`}, var_0) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec relation fun_invoke: `%%%%`(store, funcaddr, val*, config) @@ -19454,8 +19451,8 @@ relation fun_ordered: `%%`(decl*, bool) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rule fun_ordered_case_0{`decl*` : decl*, var_0 : import*}: `%%`(decl#1*{decl#1 <- `decl*`}, true) - -- fun_importsd: `%%`(decl#2*{decl#2 <- `decl*`}, var_0) -- if (var_0 = []) + -- fun_importsd: `%%`(decl#2*{decl#2 <- `decl*`}, var_0) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rule fun_ordered_case_1{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*, var_5 : func*, var_4 : table*, var_3 : mem*, var_2 : global*, var_1 : tag*, var_0 : import*}: diff --git a/spectec/test-middlend/specification.exp/12-improve-ids.il b/spectec/test-middlend/specification.exp/12-improve-ids.il index a73494eee4..6bac0e6138 100644 --- a/spectec/test-middlend/specification.exp/12-improve-ids.il +++ b/spectec/test-middlend/specification.exp/12-improve-ids.il @@ -420,35 +420,35 @@ relation fun_utf8: `%%`(char*, byte*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: `%%`([ch], [b_1 b_2]) - -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) + -- fun_cont: `%%`(b_2, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: `%%`([ch], [b_1 b_2 b_3]) - -- fun_cont: `%%`(b_3, var_1) - -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- wf_byte: `%`(b_3) -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * var_0)) + var_1)) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 rule fun_utf8_case_4{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, var_2 : nat, var_1 : nat, var_0 : nat}: `%%`([ch], [b_1 b_2 b_3 b_4]) - -- fun_cont: `%%`(b_4, var_2) - -- fun_cont: `%%`(b_3, var_1) - -- fun_cont: `%%`(b_2, var_0) -- wf_byte: `%`(b_1) -- wf_byte: `%`(b_2) -- wf_byte: `%`(b_3) -- wf_byte: `%`(b_4) -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * var_0)) + ((2 ^ 6) * var_1)) + var_2)) + -- fun_cont: `%%`(b_4, var_2) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -1936,28 +1936,27 @@ relation fun_subst_typevar: `%%%%`(typevar, typevar*, typeuse*, typeuse?) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 relation fun_minus_recs_before_fun_minus_recs_case_3: `%%`(typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_minus_recs_case_2{x : uN, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*, tv'_lst : typevar*, tu'_lst : typeuse*, var_0 : (typevar*, typeuse*)?}: `%%`([_IDX_typevar(x)] ++ tv_lst, [tu_1] ++ tu_lst) - -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_0) -- (wf_typevar: `%`(tv'#2))*{tv'#2 <- tv'_lst} -- (wf_typeuse: `%`(tu'#2))*{tu'#2 <- tu'_lst} -- wf_typevar: `%`(_IDX_typevar(x)) -- if (var_0 =/= ?()) -- if ((tv'_lst, tu'_lst) = !(var_0)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_minus_recs_case_1{v_n : nat, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*, var_0 : (typevar*, typeuse*)?}: `%%`([REC_typevar(v_n)] ++ tv_lst, [tu_1] ++ tu_lst) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_minus_recs_case_0: `%%`([], []) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 @@ -1972,12 +1971,12 @@ relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 rule fun_minus_recs_case_2{x : uN, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*, tv'_lst : typevar*, tu'_lst : typeuse*, var_0 : (typevar*, typeuse*)?}: `%%%`([_IDX_typevar(x)] ++ tv_lst, [tu_1] ++ tu_lst, ?(([_IDX_typevar(x)] ++ tv'_lst, [tu_1] ++ tu'_lst))) - -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_0) -- (wf_typevar: `%`(tv'#2))*{tv'#2 <- tv'_lst} -- (wf_typeuse: `%`(tu'#2))*{tu'#2 <- tu'_lst} -- wf_typevar: `%`(_IDX_typevar(x)) -- if (var_0 =/= ?()) -- if ((tv'_lst, tu'_lst) = !(var_0)) + -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 rule fun_minus_recs_case_3{x0 : typevar*, x1 : typeuse*}: @@ -2050,9 +2049,9 @@ relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 rule fun_subst_reftype_case_0{null_opt : null?, ht : heaptype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : heaptype, var_0 : heaptype}: `%%%%`(REF_reftype(null_opt, ht), tv_lst, tu_lst, REF_reftype(null_opt, var_0)) + -- wf_reftype: `%`(REF_reftype(null_opt, var_1)) -- fun_subst_heaptype: `%%%%`(ht, tv_lst, tu_lst, var_1) -- fun_subst_heaptype: `%%%%`(ht, tv_lst, tu_lst, var_0) - -- wf_reftype: `%`(REF_reftype(null_opt, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 relation fun_subst_valtype: `%%%%`(valtype, typevar*, typeuse*, valtype) @@ -2136,31 +2135,32 @@ relation fun_subst_fieldtype: `%%%%`(fieldtype, typevar*, typeuse*, fieldtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 rule fun_subst_fieldtype_case_0{mut_opt : mut?, zt : storagetype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : storagetype, var_0 : storagetype}: `%%%%`(`%%`_fieldtype(mut_opt, zt), tv_lst, tu_lst, `%%`_fieldtype(mut_opt, var_0)) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut_opt, var_1)) -- fun_subst_storagetype: `%%%%`(zt, tv_lst, tu_lst, var_1) -- fun_subst_storagetype: `%%%%`(zt, tv_lst, tu_lst, var_0) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut_opt, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_0{ft_lst : fieldtype*, tv_lst : typevar*, tu_lst : typeuse*, var_1_lst : fieldtype*, var_0_lst : fieldtype*}: `%%%%`(STRUCT_comptype(`%`_list(ft_lst)), tv_lst, tu_lst, STRUCT_comptype(`%`_list(var_0_lst))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_1_lst))) -- if (|var_1_lst| = |ft_lst|) -- (fun_subst_fieldtype: `%%%%`(ft#2, tv_lst, tu_lst, var_1))*{var_1 <- var_1_lst, ft#2 <- ft_lst} -- if (|var_0_lst| = |ft_lst|) -- (fun_subst_fieldtype: `%%%%`(ft, tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, ft <- ft_lst} - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_1_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_1{ft : fieldtype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : fieldtype, var_0 : fieldtype}: `%%%%`(ARRAY_comptype(ft), tv_lst, tu_lst, ARRAY_comptype(var_0)) + -- wf_comptype: `%`(ARRAY_comptype(var_1)) -- fun_subst_fieldtype: `%%%%`(ft, tv_lst, tu_lst, var_1) -- fun_subst_fieldtype: `%%%%`(ft, tv_lst, tu_lst, var_0) - -- wf_comptype: `%`(ARRAY_comptype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 rule fun_subst_comptype_case_2{t_1_lst : valtype*, t_2_lst : valtype*, tv_lst : typevar*, tu_lst : typeuse*, var_3_lst : valtype*, var_2_lst : valtype*, var_1_lst : valtype*, var_0_lst : valtype*}: `%%%%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst)), tv_lst, tu_lst, `FUNC%->%`_comptype(`%`_resulttype(var_0_lst), `%`_resulttype(var_1_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_2_lst), `%`_resulttype(var_3_lst))) -- if (|var_3_lst| = |t_2_lst|) -- (fun_subst_valtype: `%%%%`(t_2#2, tv_lst, tu_lst, var_3))*{var_3 <- var_3_lst, t_2#2 <- t_2_lst} -- if (|var_2_lst| = |t_1_lst|) @@ -2169,33 +2169,32 @@ relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) -- (fun_subst_valtype: `%%%%`(t_2, tv_lst, tu_lst, var_1))*{var_1 <- var_1_lst, t_2 <- t_2_lst} -- if (|var_0_lst| = |t_1_lst|) -- (fun_subst_valtype: `%%%%`(t_1, tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, t_1 <- t_1_lst} - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_2_lst), `%`_resulttype(var_3_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 rule fun_subst_subtype_case_0{final_opt : final?, tu'_lst : typeuse*, ct : comptype, tv_lst : typevar*, tu_lst : typeuse*, var_3 : comptype, var_2_lst : typeuse*, var_1 : comptype, var_0_lst : typeuse*}: `%%%%`(SUB_subtype(final_opt, tu'_lst, ct), tv_lst, tu_lst, SUB_subtype(final_opt, var_0_lst, var_1)) + -- wf_subtype: `%`(SUB_subtype(final_opt, var_2_lst, var_3)) -- fun_subst_comptype: `%%%%`(ct, tv_lst, tu_lst, var_3) -- if (|var_2_lst| = |tu'_lst|) -- (fun_subst_typeuse: `%%%%`(tu'#5, tv_lst, tu_lst, var_2))*{var_2 <- var_2_lst, tu'#5 <- tu'_lst} -- fun_subst_comptype: `%%%%`(ct, tv_lst, tu_lst, var_1) -- if (|var_0_lst| = |tu'_lst|) -- (fun_subst_typeuse: `%%%%`(tu', tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, tu' <- tu'_lst} - -- wf_subtype: `%`(SUB_subtype(final_opt, var_2_lst, var_3)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 rule fun_subst_rectype_case_0{st_lst : subtype*, tv_lst : typevar*, tu_lst : typeuse*, tv'_lst : typevar*, tu'_lst : typeuse*, var_1 : (typevar*, typeuse*)?, var_0_lst : subtype*}: `%%%%`(REC_rectype(`%`_list(st_lst)), tv_lst, tu_lst, REC_rectype(`%`_list(var_0_lst))) - -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_1) - -- if (|var_0_lst| = |st_lst|) - -- (fun_subst_subtype: `%%%%`(st, tv'_lst, tu'_lst, var_0))*{var_0 <- var_0_lst, st <- st_lst} -- (wf_typevar: `%`(tv'#4))*{tv'#4 <- tv'_lst} -- (wf_typeuse: `%`(tu'#6))*{tu'#6 <- tu'_lst} -- if (var_1 =/= ?()) -- if ((tv'_lst, tu'_lst) = !(var_1)) + -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_1) + -- if (|var_0_lst| = |st_lst|) + -- (fun_subst_subtype: `%%%%`(st, tv'_lst, tu'_lst, var_0))*{var_0 <- var_0_lst, st <- st_lst} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 relation fun_subst_deftype: `%%%%`(deftype, typevar*, typeuse*, deftype) @@ -2222,9 +2221,9 @@ relation fun_subst_globaltype: `%%%%`(globaltype, typevar*, typeuse*, globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_globaltype_case_0{mut_opt : mut?, t : valtype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : valtype, var_0 : valtype}: `%%%%`(`%%`_globaltype(mut_opt, t), tv_lst, tu_lst, `%%`_globaltype(mut_opt, var_0)) + -- wf_globaltype: `%`(`%%`_globaltype(mut_opt, var_1)) -- fun_subst_valtype: `%%%%`(t, tv_lst, tu_lst, var_1) -- fun_subst_valtype: `%%%%`(t, tv_lst, tu_lst, var_0) - -- wf_globaltype: `%`(`%%`_globaltype(mut_opt, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation fun_subst_memtype: `%%%%`(memtype, typevar*, typeuse*, memtype) @@ -2238,52 +2237,53 @@ relation fun_subst_tabletype: `%%%%`(tabletype, typevar*, typeuse*, tabletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_tabletype_case_0{at : addrtype, lim : limits, rt : reftype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : reftype, var_0 : reftype}: `%%%%`(`%%%`_tabletype(at, lim, rt), tv_lst, tu_lst, `%%%`_tabletype(at, lim, var_0)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, var_1)) -- fun_subst_reftype: `%%%%`(rt, tv_lst, tu_lst, var_1) -- fun_subst_reftype: `%%%%`(rt, tv_lst, tu_lst, var_0) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation fun_subst_externtype: `%%%%`(externtype, typevar*, typeuse*, externtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_0{jt : typeuse, tv_lst : typevar*, tu_lst : typeuse*, var_1 : tagtype, var_0 : tagtype}: `%%%%`(TAG_externtype(jt), tv_lst, tu_lst, TAG_externtype(var_0)) + -- wf_externtype: `%`(TAG_externtype(var_1)) -- fun_subst_tagtype: `%%%%`(jt, tv_lst, tu_lst, var_1) -- fun_subst_tagtype: `%%%%`(jt, tv_lst, tu_lst, var_0) - -- wf_externtype: `%`(TAG_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_1{gt : globaltype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : globaltype, var_0 : globaltype}: `%%%%`(GLOBAL_externtype(gt), tv_lst, tu_lst, GLOBAL_externtype(var_0)) + -- wf_externtype: `%`(GLOBAL_externtype(var_1)) -- fun_subst_globaltype: `%%%%`(gt, tv_lst, tu_lst, var_1) -- fun_subst_globaltype: `%%%%`(gt, tv_lst, tu_lst, var_0) - -- wf_externtype: `%`(GLOBAL_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_2{tt : tabletype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : tabletype, var_0 : tabletype}: `%%%%`(TABLE_externtype(tt), tv_lst, tu_lst, TABLE_externtype(var_0)) + -- wf_externtype: `%`(TABLE_externtype(var_1)) -- fun_subst_tabletype: `%%%%`(tt, tv_lst, tu_lst, var_1) -- fun_subst_tabletype: `%%%%`(tt, tv_lst, tu_lst, var_0) - -- wf_externtype: `%`(TABLE_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_3{mt : memtype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : memtype, var_0 : memtype}: `%%%%`(MEM_externtype(mt), tv_lst, tu_lst, MEM_externtype(var_0)) + -- wf_externtype: `%`(MEM_externtype(var_1)) -- fun_subst_memtype: `%%%%`(mt, tv_lst, tu_lst, var_1) -- fun_subst_memtype: `%%%%`(mt, tv_lst, tu_lst, var_0) - -- wf_externtype: `%`(MEM_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_externtype_case_4{tu' : typeuse, tv_lst : typevar*, tu_lst : typeuse*, var_1 : typeuse, var_0 : typeuse}: `%%%%`(FUNC_externtype(tu'), tv_lst, tu_lst, FUNC_externtype(var_0)) + -- wf_externtype: `%`(FUNC_externtype(var_1)) -- fun_subst_typeuse: `%%%%`(tu', tv_lst, tu_lst, var_1) -- fun_subst_typeuse: `%%%%`(tu', tv_lst, tu_lst, var_0) - -- wf_externtype: `%`(FUNC_externtype(var_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_moduletype_case_0{xt_1_lst : externtype*, xt_2_lst : externtype*, tv_lst : typevar*, tu_lst : typeuse*, var_3_lst : externtype*, var_2_lst : externtype*, var_1_lst : externtype*, var_0_lst : externtype*}: `%%%%`(`%->%`_moduletype(xt_1_lst, xt_2_lst), tv_lst, tu_lst, `%->%`_moduletype(var_0_lst, var_1_lst)) + -- wf_moduletype: `%`(`%->%`_moduletype(var_2_lst, var_3_lst)) -- if (|var_3_lst| = |xt_2_lst|) -- (fun_subst_externtype: `%%%%`(xt_2#2, tv_lst, tu_lst, var_3))*{var_3 <- var_3_lst, xt_2#2 <- xt_2_lst} -- if (|var_2_lst| = |xt_1_lst|) @@ -2292,79 +2292,78 @@ relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype -- (fun_subst_externtype: `%%%%`(xt_2, tv_lst, tu_lst, var_1))*{var_1 <- var_1_lst, xt_2 <- xt_2_lst} -- if (|var_0_lst| = |xt_1_lst|) -- (fun_subst_externtype: `%%%%`(xt_1, tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, xt_1 <- xt_1_lst} - -- wf_moduletype: `%`(`%->%`_moduletype(var_2_lst, var_3_lst)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation fun_subst_all_valtype: `%%%`(valtype, typeuse*, valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule fun_subst_all_valtype_case_0{t : valtype, v_n : nat, tu_lst : typeuse*, i : nat, var_0 : valtype}: `%%%`(t, tu_lst, var_0) - -- fun_subst_valtype: `%%%%`(t, _IDX_typevar(`%`_typeidx(i))^(i int) - (1 : nat <:> int)) : int <:> nat))] ++ var_0) - -- fun_shift_labelidxs: `%%`(labelidx'_lst, var_0) -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(v_labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + -- fun_shift_labelidxs: `%%`(labelidx'_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -5839,12 +5838,12 @@ relation fun_free_block: `%%`(instr*, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 rule fun_free_block_case_0{instr_lst : instr*, v_free : free, var_2_lst : free*, var_1 : free, var_0 : labelidx*}: `%%`(instr_lst, v_free[LABELS_free = var_0]) + -- wf_free: `%`(v_free) + -- if (v_free = var_1) -- if (|var_2_lst| = |instr_lst|) -- (fun_free_instr: `%%`(instr#5, var_2))*{var_2 <- var_2_lst, instr#5 <- instr_lst} -- fun_free_list: `%%`(var_2_lst, var_1) -- fun_shift_labelidxs: `%%`(v_free.LABELS_free, var_0) - -- wf_free: `%`(v_free) - -- if (v_free = var_1) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -6322,9 +6321,9 @@ relation fun_clos_deftypes: `%%`(deftype*, deftype*) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 rule fun_clos_deftypes_case_1{dt_lst : deftype*, dt_n : deftype, dt'_lst : deftype*, var_1 : deftype*, var_0 : deftype}: `%%`(dt_lst ++ [dt_n], dt'_lst ++ [var_0]) + -- if (dt'_lst = var_1) -- fun_clos_deftypes: `%%`(dt_lst, var_1) -- fun_subst_all_deftype: `%%%`(dt_n, $typeuse_deftype(dt')*{dt' <- dt'_lst}, var_0) - -- if (dt'_lst = var_1) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -6332,45 +6331,45 @@ relation fun_clos_valtype: `%%%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_valtype_case_0{C : context, t : valtype, dt_lst : deftype*, var_1 : deftype*, var_0 : valtype}: `%%%`(C, t, var_0) + -- if (dt_lst = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) - -- if (dt_lst = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation fun_clos_deftype: `%%%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_deftype_case_0{C : context, dt : deftype, dt'_lst : deftype*, var_1 : deftype*, var_0 : deftype}: `%%%`(C, dt, var_0) + -- if (dt'_lst = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_deftype: `%%%`(dt, $typeuse_deftype(dt')*{dt' <- dt'_lst}, var_0) - -- if (dt'_lst = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation fun_clos_tagtype: `%%%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_tagtype_case_0{C : context, jt : typeuse, dt_lst : deftype*, var_1 : deftype*, var_0 : tagtype}: `%%%`(C, jt, var_0) + -- if (dt_lst = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_tagtype: `%%%`(jt, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) - -- if (dt_lst = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation fun_clos_externtype: `%%%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_externtype_case_0{C : context, xt : externtype, dt_lst : deftype*, var_1 : deftype*, var_0 : externtype}: `%%%`(C, xt, var_0) + -- if (dt_lst = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_externtype: `%%%`(xt, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) - -- if (dt_lst = var_1) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation fun_clos_moduletype: `%%%`(context, moduletype, moduletype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule fun_clos_moduletype_case_0{C : context, mmt : moduletype, dt_lst : deftype*, var_1 : deftype*, var_0 : moduletype}: `%%%`(C, mmt, var_0) + -- if (dt_lst = var_1) -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) -- fun_subst_all_moduletype: `%%%`(mmt, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) - -- if (dt_lst = var_1) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -7361,13 +7360,11 @@ relation fun_default__before_fun_default__case_7: `%`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_3{var_0 : fN}: `%`(F64_valtype) - -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_2{var_0 : fN}: `%`(F32_valtype) - -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -7395,14 +7392,14 @@ relation fun_default_: `%%`(valtype, val??) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_2{var_0 : fN}: `%%`(F32_valtype, ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))))) - -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_3{var_0 : fN}: `%%`(F64_valtype, ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))))) - -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule fun_default__case_4: @@ -9039,8 +9036,8 @@ relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule fun_funcidx_nonfuncs_case_0{global_lst : global*, mem_lst : mem*, table_lst : table*, elem_lst : elem*, start_opt : start?, export_lst : export*, var_0 : funcidx*}: `%%`(`%%%%%%`_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst), var_0) - -- fun_funcidx_module: `%%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list([]), `%`_list([]), `%`_list(elem_lst), start_opt, `%`_list(export_lst)), var_0) -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list([]), `%`_list([]), `%`_list(elem_lst), start_opt, `%`_list(export_lst))) + -- fun_funcidx_module: `%%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list([]), `%`_list([]), `%`_list(elem_lst), start_opt, `%`_list(export_lst)), var_0) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) @@ -9282,14 +9279,14 @@ relation fun_zero: `%%`(lanetype, lane_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_zero_case_4{var_0 : fN}: `%%`(F32_lanetype, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) - -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_zero_case_5{var_0 : fN}: `%%`(F64_lanetype, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) - -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(v_bool : bool) : nat @@ -9345,9 +9342,9 @@ relation fun_iextend_: `%%%%%`(N, M, sx, iN, iN) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_iextend__case_1{v_N : nat, v_M : nat, i : uN, var_1 : int, var_0 : nat}: `%%%%%`(v_N, v_M, S_sx, i, `%`_iN(var_0)) + -- wf_uN: `%%`(v_N, `%`_uN(var_0)) -- fun_signed_: `%%%`(v_M, ($proj_uN_0(i).0 \ (2 ^ v_M)), var_1) -- fun_inv_signed_: `%%%`(v_N, var_1, var_0) - -- wf_uN: `%%`(v_N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN @@ -9385,17 +9382,17 @@ relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_idiv__case_3{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: `%%%%%`(v_N, S_sx, i_1, i_2, ?()) + -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) - -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_idiv__case_4{v_N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: `%%%%%`(v_N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- wf_uN: `%%`(v_N, `%`_uN(var_0)) -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_2) -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_1) -- fun_inv_signed_: `%%%`(v_N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) - -- wf_uN: `%%`(v_N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) @@ -9415,11 +9412,11 @@ relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_irem__case_3{v_N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: `%%%%%`(v_N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- wf_uN: `%%`(v_N, `%`_uN(var_0)) + -- if ((j_1 = var_1) /\ (j_2 = var_2)) -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_2) -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_1) -- fun_inv_signed_: `%%%`(v_N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) - -- wf_uN: `%%`(v_N, `%`_uN(var_0)) - -- if ((j_1 = var_1) /\ (j_2 = var_2)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN @@ -9855,14 +9852,14 @@ relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_unop__case_6{v_M : nat, i : uN, var_0 : uN}: `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(v_M))), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, var_0)]) - -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), v_M, S_sx, i, var_0) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, var_0)) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), v_M, S_sx, i, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_unop__case_7{v_M : nat, i : uN, var_0 : uN}: `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(v_M))), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, var_0)]) - -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), v_M, S_sx, i, var_0) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, var_0)) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), v_M, S_sx, i, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_unop__case_8{f : fN}: @@ -9969,26 +9966,26 @@ relation fun_binop_: `%%%%%`(numtype, binop_, num_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_6{v_sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#30)*{iter_0#30 <- lift(var_0)}) - -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2, var_0) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#29)))*{iter_0#29 <- lift(var_0)} + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_7{v_sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#32)*{iter_0#32 <- lift(var_0)}) - -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2, var_0) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#31)))*{iter_0#31 <- lift(var_0)} + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_8{v_sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift(var_0)}) - -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2, var_0) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#33)))*{iter_0#33 <- lift(var_0)} + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_9{v_sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift(var_0)}) - -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2, var_0) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#35)))*{iter_0#35 <- lift(var_0)} + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec rule fun_binop__case_10{i_1 : uN, i_2 : uN}: @@ -12449,10 +12446,6 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_0{Lnn_1 : lanetype, v_M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**, var_2_lst : lane_**, var_1 : zero?, var_0 : half?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop, v_1, v) - -- if (|var_2_lst| = |c_1_lst|) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop, c_1#171, var_2))*{var_2 <- var_2_lst, c_1#171 <- c_1_lst} - -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop, var_1) - -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, `%`_dim(v_M))), c_1#169))*{c_1#169 <- c_1_lst} -- (wf_lane_: `%%`(Lnn_2, c#303))*{c#303 <- c_lst#43}*{c_lst#43 <- c_lst_lst} @@ -12463,13 +12456,14 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (c_lst_lst = $setproduct_(syntax lane_, var_2_lst)) -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(v_M)), c_lst#45)*{c_lst#45 <- c_lst_lst}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(v_M)), c_lst#45)*{c_lst#45 <- c_lst_lst}) + -- if (|var_2_lst| = |c_1_lst|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop, c_1#171, var_2))*{var_2 <- var_2_lst, c_1#171 <- c_1_lst} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop, var_1) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, v_half : half, c_1_lst : lane_*, c_lst_lst : lane_**, var_1_lst : lane_**, var_0 : half?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) - -- if (|var_1_lst| = |c_1_lst|) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#174, var_1))*{var_1 <- var_1_lst, c_1#174 <- c_1_lst} - -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1#172))*{c_1#172 <- c_1_lst} -- (wf_lane_: `%%`(Lnn_2, c#306))*{c#306 <- c_lst#46}*{c_lst#46 <- c_lst_lst} @@ -12480,14 +12474,13 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (c_lst_lst = $setproduct_(syntax lane_, var_1_lst)) -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c_lst#48)*{c_lst#48 <- c_lst_lst}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c_lst#48)*{c_lst#48 <- c_lst_lst}) + -- if (|var_1_lst| = |c_1_lst|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#174, var_1))*{var_1 <- var_1_lst, c_1#174 <- c_1_lst} + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**, var_2 : lane_, var_1_lst : lane_**, var_0 : zero?}: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) - -- fun_zero: `%%`(Lnn_2, var_2) - -- if (|var_1_lst| = |c_1_lst|) - -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#177, var_1))*{var_1 <- var_1_lst, c_1#177 <- c_1_lst} - -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1#175))*{c_1#175 <- c_1_lst} -- (wf_lane_: `%%`(Lnn_2, c#309))*{c#309 <- c_lst#49}*{c_lst#49 <- c_lst_lst} @@ -12498,6 +12491,10 @@ relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) -- if (c_lst_lst = $setproduct_(syntax lane_, var_1_lst ++ [var_2]^M_1{})) -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c_lst#51)*{c_lst#51 <- c_lst_lst}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c_lst#51)*{c_lst#51 <- c_lst_lst}) + -- fun_zero: `%%`(Lnn_2, var_2) + -- if (|var_1_lst| = |c_1_lst|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#177, var_1))*{var_1 <- var_1_lst, c_1#177 <- c_1_lst} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec relation fun_vshiftop_: `%%%%%`(ishape, vshiftop_, vec_, u32, vec_) @@ -12546,26 +12543,26 @@ relation fun_vbitmaskop_: `%%%`(ishape, vec_, u32) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vbitmaskop__case_0{v_M : nat, v : uN, var_0 : u32}: `%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(v_M))), v, var_0) - -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vbitmaskop__case_1{v_M : nat, v : uN, var_0 : u32}: `%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(v_M))), v, var_0) - -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vbitmaskop__case_2{v_M : nat, v : uN, var_0 : u32}: `%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), v, var_0) - -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vbitmaskop__case_3{v_M : nat, v : uN, var_0 : u32}: `%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(v_M))), v, var_0) - -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec relation fun_vswizzlop_: `%%%%%`(bshape, vswizzlop_, vec_, vec_, vec_) @@ -12584,8 +12581,8 @@ relation fun_vshufflop_: `%%%%%`(bshape, laneidx*, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vshufflop__case_0{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, var_0 : vec_}: `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), i_lst, v_1, v_2, var_0) - -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), i_lst, v_1, v_2, var_0) -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M))) + -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), i_lst, v_1, v_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) @@ -13785,9 +13782,6 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_0{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13804,13 +13798,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_1{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13827,13 +13821,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_2{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13850,13 +13844,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_3{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13873,13 +13867,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_4{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13896,13 +13890,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_5{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13919,13 +13913,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_6{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13942,13 +13936,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_7{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13965,13 +13959,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_8{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -13988,13 +13982,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_9{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14011,13 +14005,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_10{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14034,13 +14028,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_11{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14057,13 +14051,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_12{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14080,13 +14074,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_13{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14103,13 +14097,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_14{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14126,13 +14120,13 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec rule fun_vextternop___case_15{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) - -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) - -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) - -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -14149,6 +14143,9 @@ relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, v -- if (c'' = var_1) -- if (|var_2| > 0) -- if (c <- var_2) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax num = @@ -18510,14 +18507,14 @@ relation fun_alloctypes: `%%`(type*, deftype*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 rule fun_alloctypes_case_1{type'_lst : type*, v_type : type, deftype'_lst : deftype*, deftype_lst : deftype*, v_rectype : rectype, x : uN, var_2 : deftype*, var_1 : deftype*, var_0 : deftype*}: `%%`(type'_lst ++ [v_type], deftype'_lst ++ deftype_lst) - -- fun_rolldt: `%%%`(x, v_rectype, var_2) - -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype'#2)*{deftype'#2 <- deftype'_lst}, var_1) - -- fun_alloctypes: `%%`(type'_lst, var_0) -- wf_uN: `%%`(32, x) -- if (deftype'_lst = var_0) -- if (v_type = TYPE_type(v_rectype)) -- if (deftype_lst = var_1) -- if ($proj_uN_0(x).0 = |deftype'_lst|) + -- fun_rolldt: `%%%`(x, v_rectype, var_2) + -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype'#2)*{deftype'#2 <- deftype'_lst}, var_1) + -- fun_alloctypes: `%%`(type'_lst, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18541,12 +18538,12 @@ relation fun_alloctags: `%%%`(store, tagtype*, (store, tagaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 rule fun_alloctags_case_1{s : store, v_tagtype : typeuse, tagtype'_lst : tagtype*, s_2 : store, ja : nat, ja'_lst : tagaddr*, s_1 : store, var_1 : (store, tagaddr*), var_0 : (store, tagaddr)}: `%%%`(s, [v_tagtype] ++ tagtype'_lst, (s_2, [ja] ++ ja'_lst)) - -- fun_alloctags: `%%%`(s_1, tagtype'_lst, var_1) - -- fun_alloctag: `%%%`(s, v_tagtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ja) = var_0) -- if ((s_2, ja'_lst) = var_1) + -- fun_alloctags: `%%%`(s_1, tagtype'_lst, var_1) + -- fun_alloctag: `%%%`(s, v_tagtype, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18570,12 +18567,12 @@ relation fun_allocglobals: `%%%%`(store, globaltype*, val*, (store, globaladdr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 rule fun_allocglobals_case_1{s : store, v_globaltype : globaltype, globaltype'_lst : globaltype*, v_val : val, val'_lst : val*, s_2 : store, ga : nat, ga'_lst : globaladdr*, s_1 : store, var_1 : (store, globaladdr*), var_0 : (store, globaladdr)}: `%%%%`(s, [v_globaltype] ++ globaltype'_lst, [v_val] ++ val'_lst, (s_2, [ga] ++ ga'_lst)) - -- fun_allocglobals: `%%%%`(s_1, globaltype'_lst, val'_lst, var_1) - -- fun_allocglobal: `%%%%`(s, v_globaltype, v_val, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ga) = var_0) -- if ((s_2, ga'_lst) = var_1) + -- fun_allocglobals: `%%%%`(s_1, globaltype'_lst, val'_lst, var_1) + -- fun_allocglobal: `%%%%`(s, v_globaltype, v_val, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18599,12 +18596,12 @@ relation fun_allocmems: `%%%`(store, memtype*, (store, memaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 rule fun_allocmems_case_1{s : store, v_memtype : memtype, memtype'_lst : memtype*, s_2 : store, ma : nat, ma'_lst : memaddr*, s_1 : store, var_1 : (store, memaddr*), var_0 : (store, memaddr)}: `%%%`(s, [v_memtype] ++ memtype'_lst, (s_2, [ma] ++ ma'_lst)) - -- fun_allocmems: `%%%`(s_1, memtype'_lst, var_1) - -- fun_allocmem: `%%%`(s, v_memtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ma) = var_0) -- if ((s_2, ma'_lst) = var_1) + -- fun_allocmems: `%%%`(s_1, memtype'_lst, var_1) + -- fun_allocmem: `%%%`(s, v_memtype, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18628,12 +18625,12 @@ relation fun_alloctables: `%%%%`(store, tabletype*, ref*, (store, tableaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 rule fun_alloctables_case_1{s : store, v_tabletype : tabletype, tabletype'_lst : tabletype*, v_ref : ref, ref'_lst : ref*, s_2 : store, ta : nat, ta'_lst : tableaddr*, s_1 : store, var_1 : (store, tableaddr*), var_0 : (store, tableaddr)}: `%%%%`(s, [v_tabletype] ++ tabletype'_lst, [v_ref] ++ ref'_lst, (s_2, [ta] ++ ta'_lst)) - -- fun_alloctables: `%%%%`(s_1, tabletype'_lst, ref'_lst, var_1) - -- fun_alloctable: `%%%%`(s, v_tabletype, v_ref, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ta) = var_0) -- if ((s_2, ta'_lst) = var_1) + -- fun_alloctables: `%%%%`(s_1, tabletype'_lst, ref'_lst, var_1) + -- fun_alloctable: `%%%%`(s, v_tabletype, v_ref, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18657,12 +18654,12 @@ relation fun_allocfuncs: `%%%%%`(store, deftype*, funccode*, moduleinst*, (store ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 rule fun_allocfuncs_case_1{s : store, dt : deftype, dt'_lst : deftype*, v_funccode : funccode, funccode'_lst : funccode*, v_moduleinst : moduleinst, moduleinst'_lst : moduleinst*, s_2 : store, fa : nat, fa'_lst : funcaddr*, s_1 : store, var_1 : (store, funcaddr*), var_0 : (store, funcaddr)}: `%%%%%`(s, [dt] ++ dt'_lst, [v_funccode] ++ funccode'_lst, [v_moduleinst] ++ moduleinst'_lst, (s_2, [fa] ++ fa'_lst)) - -- fun_allocfuncs: `%%%%%`(s_1, dt'_lst, funccode'_lst, moduleinst'_lst, var_1) - -- fun_allocfunc: `%%%%%`(s, dt, v_funccode, v_moduleinst, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, fa) = var_0) -- if ((s_2, fa'_lst) = var_1) + -- fun_allocfuncs: `%%%%%`(s_1, dt'_lst, funccode'_lst, moduleinst'_lst, var_1) + -- fun_allocfunc: `%%%%%`(s, dt, v_funccode, v_moduleinst, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18686,12 +18683,12 @@ relation fun_allocdatas: `%%%%`(store, datatype*, byte**, (store, dataaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 rule fun_allocdatas_case_1{s : store, ok : datatype, ok'_lst : datatype*, b_lst : byte*, b'_lst_lst : byte**, s_2 : store, da : nat, da'_lst : dataaddr*, s_1 : store, var_1 : (store, dataaddr*), var_0 : (store, dataaddr)}: `%%%%`(s, [ok] ++ ok'_lst, [b_lst] ++ b'_lst_lst, (s_2, [da] ++ da'_lst)) - -- fun_allocdatas: `%%%%`(s_1, ok'_lst, b'_lst_lst, var_1) - -- fun_allocdata: `%%%%`(s, ok, b_lst, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, da) = var_0) -- if ((s_2, da'_lst) = var_1) + -- fun_allocdatas: `%%%%`(s_1, ok'_lst, b'_lst_lst, var_1) + -- fun_allocdata: `%%%%`(s, ok, b_lst, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18715,12 +18712,12 @@ relation fun_allocelems: `%%%%`(store, elemtype*, ref**, (store, elemaddr*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 rule fun_allocelems_case_1{s : store, rt : reftype, rt'_lst : reftype*, ref_lst : ref*, ref'_lst_lst : ref**, s_2 : store, ea : nat, ea'_lst : elemaddr*, s_1 : store, var_1 : (store, elemaddr*), var_0 : (store, elemaddr)}: `%%%%`(s, [rt] ++ rt'_lst, [ref_lst] ++ ref'_lst_lst, (s_2, [ea] ++ ea'_lst)) - -- fun_allocelems: `%%%%`(s_1, rt'_lst, ref'_lst_lst, var_1) - -- fun_allocelem: `%%%%`(s, rt, ref_lst, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) -- if ((s_1, ea) = var_0) -- if ((s_2, ea'_lst) = var_1) + -- fun_allocelems: `%%%%`(s_1, rt'_lst, ref'_lst_lst, var_1) + -- fun_allocelem: `%%%%`(s, rt, ref_lst, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18768,31 +18765,6 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_allocmodule_case_0{s : store, v_module : module, externaddr_lst : externaddr*, val_G_lst : val*, ref_T_lst : ref*, ref_E_lst_lst : ref**, s_7 : store, v_moduleinst : moduleinst, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, tagtype_lst : tagtype*, expr_G_lst : expr*, globaltype_lst : globaltype*, memtype_lst : memtype*, expr_T_lst : expr*, tabletype_lst : tabletype*, expr_F_lst : expr*, local_lst_lst : local**, x_lst : idx*, byte_lst_lst : byte**, datamode_lst : datamode*, elemmode_lst : elemmode*, elemtype_lst : elemtype*, expr_E_lst_lst : expr**, aa_I_lst : tagaddr*, ga_I_lst : globaladdr*, ma_I_lst : memaddr*, ta_I_lst : tableaddr*, fa_I_lst : funcaddr*, dt_lst : deftype*, fa_lst : nat*, s_1 : store, aa_lst : tagaddr*, s_2 : store, ga_lst : globaladdr*, s_3 : store, ma_lst : memaddr*, s_4 : store, ta_lst : tableaddr*, s_5 : store, da_lst : dataaddr*, s_6 : store, ea_lst : elemaddr*, xi_lst : exportinst*, var_18 : exportinst*, var_17 : (store, funcaddr*), var_16_lst : elemtype*, var_15 : (store, elemaddr*), var_14 : (store, dataaddr*), var_13_lst : tabletype*, var_12 : (store, tableaddr*), var_11_lst : memtype*, var_10 : (store, memaddr*), var_9_lst : globaltype*, var_8 : (store, globaladdr*), var_7_lst : tagtype*, var_6 : (store, tagaddr*), var_5 : deftype*, var_4 : funcaddr*, var_3 : tableaddr*, var_2 : memaddr*, var_1 : globaladdr*, var_0 : tagaddr*}: `%%%%%%%`(s, v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst, (s_7, v_moduleinst)) - -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}, export_lst, var_18) - -- (if ($proj_uN_0(x#4).0 < |dt_lst|))*{x#4 <- x_lst} - -- fun_allocfuncs: `%%%%%`(s_6, dt_lst[$proj_uN_0(x#4).0]*{x#4 <- x_lst}, FUNC_funccode(x#5, local_lst#86, expr_F#3)*{expr_F#3 <- expr_F_lst, local_lst#86 <- local_lst_lst, x#5 <- x_lst}, v_moduleinst^|func_lst|{}, var_17) - -- if (|var_16_lst| = |elemtype_lst|) - -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- dt_lst}, var_16))*{var_16 <- var_16_lst, elemtype#3 <- elemtype_lst} - -- fun_allocelems: `%%%%`(s_5, var_16_lst, ref_E_lst_lst, var_15) - -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data_lst|{}, byte_lst_lst, var_14) - -- if (|var_13_lst| = |tabletype_lst|) - -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- dt_lst}, var_13))*{var_13 <- var_13_lst, tabletype#160 <- tabletype_lst} - -- fun_alloctables: `%%%%`(s_3, var_13_lst, ref_T_lst, var_12) - -- if (|var_11_lst| = |memtype_lst|) - -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- dt_lst}, var_11))*{var_11 <- var_11_lst, memtype#126 <- memtype_lst} - -- fun_allocmems: `%%%`(s_2, var_11_lst, var_10) - -- if (|var_9_lst| = |globaltype_lst|) - -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- dt_lst}, var_9))*{var_9 <- var_9_lst, globaltype#126 <- globaltype_lst} - -- fun_allocglobals: `%%%%`(s_1, var_9_lst, val_G_lst, var_8) - -- if (|var_7_lst| = |tagtype_lst|) - -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- dt_lst}, var_7))*{var_7 <- var_7_lst, tagtype#82 <- tagtype_lst} - -- fun_alloctags: `%%%`(s, var_7_lst, var_6) - -- fun_alloctypes: `%%`(type_lst, var_5) - -- fun_funcsxa: `%%`(externaddr_lst, var_4) - -- fun_tablesxa: `%%`(externaddr_lst, var_3) - -- fun_memsxa: `%%`(externaddr_lst, var_2) - -- fun_globalsxa: `%%`(externaddr_lst, var_1) - -- fun_tagsxa: `%%`(externaddr_lst, var_0) -- wf_store: `%`(s_7) -- wf_moduleinst: `%`(v_moduleinst) -- wf_store: `%`(s_1) @@ -18842,6 +18814,31 @@ relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref* -- if ((s_7, fa_lst) = var_17) -- if (xi_lst = var_18) -- if (v_moduleinst = {TYPES dt_lst, TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS da_lst, ELEMS ea_lst, EXPORTS xi_lst}) + -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}, export_lst, var_18) + -- (if ($proj_uN_0(x#4).0 < |dt_lst|))*{x#4 <- x_lst} + -- fun_allocfuncs: `%%%%%`(s_6, dt_lst[$proj_uN_0(x#4).0]*{x#4 <- x_lst}, FUNC_funccode(x#5, local_lst#86, expr_F#3)*{expr_F#3 <- expr_F_lst, local_lst#86 <- local_lst_lst, x#5 <- x_lst}, v_moduleinst^|func_lst|{}, var_17) + -- if (|var_16_lst| = |elemtype_lst|) + -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#14)*{dt#14 <- dt_lst}, var_16))*{var_16 <- var_16_lst, elemtype#3 <- elemtype_lst} + -- fun_allocelems: `%%%%`(s_5, var_16_lst, ref_E_lst_lst, var_15) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data_lst|{}, byte_lst_lst, var_14) + -- if (|var_13_lst| = |tabletype_lst|) + -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#13)*{dt#13 <- dt_lst}, var_13))*{var_13 <- var_13_lst, tabletype#160 <- tabletype_lst} + -- fun_alloctables: `%%%%`(s_3, var_13_lst, ref_T_lst, var_12) + -- if (|var_11_lst| = |memtype_lst|) + -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#12)*{dt#12 <- dt_lst}, var_11))*{var_11 <- var_11_lst, memtype#126 <- memtype_lst} + -- fun_allocmems: `%%%`(s_2, var_11_lst, var_10) + -- if (|var_9_lst| = |globaltype_lst|) + -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#11)*{dt#11 <- dt_lst}, var_9))*{var_9 <- var_9_lst, globaltype#126 <- globaltype_lst} + -- fun_allocglobals: `%%%%`(s_1, var_9_lst, val_G_lst, var_8) + -- if (|var_7_lst| = |tagtype_lst|) + -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#10)*{dt#10 <- dt_lst}, var_7))*{var_7 <- var_7_lst, tagtype#82 <- tagtype_lst} + -- fun_alloctags: `%%%`(s, var_7_lst, var_6) + -- fun_alloctypes: `%%`(type_lst, var_5) + -- fun_funcsxa: `%%`(externaddr_lst, var_4) + -- fun_tablesxa: `%%`(externaddr_lst, var_3) + -- fun_memsxa: `%%`(externaddr_lst, var_2) + -- fun_globalsxa: `%%`(externaddr_lst, var_1) + -- fun_tagsxa: `%%`(externaddr_lst, var_0) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec relation fun_rundata_: `%%%`(dataidx, data, instr*) @@ -18888,13 +18885,13 @@ relation fun_evalexprs: `%%%`(state, expr*, (state, ref*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 rule fun_evalexprs_case_1{z : state, v_expr : instr*, expr'_lst : expr*, z'' : state, v_ref : ref, ref'_lst : ref*, z' : state, var_0 : (state, ref*)}: `%%%`(z, [v_expr] ++ expr'_lst, (z'', [v_ref] ++ ref'_lst)) - -- fun_evalexprs: `%%%`(z', expr'_lst, var_0) -- wf_state: `%`(z'') -- wf_ref: `%`(v_ref) -- (wf_ref: `%`(ref'#5))*{ref'#5 <- ref'_lst} -- wf_state: `%`(z') -- Eval_expr: `%;%~>*%;%`(z, v_expr, z', [$val_ref(v_ref)]) -- if ((z'', ref'_lst) = var_0) + -- fun_evalexprs: `%%%`(z', expr'_lst, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18909,14 +18906,14 @@ relation fun_evalexprss: `%%%`(state, expr**, (state, ref**)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 rule fun_evalexprss_case_1{z : state, expr_lst : expr*, expr'_lst_lst : expr**, z'' : state, ref_lst : ref*, ref'_lst_lst : ref**, z' : state, var_1 : (state, ref**), var_0 : (state, ref*)}: `%%%`(z, [expr_lst] ++ expr'_lst_lst, (z'', [ref_lst] ++ ref'_lst_lst)) - -- fun_evalexprss: `%%%`(z', expr'_lst_lst, var_1) - -- fun_evalexprs: `%%%`(z, expr_lst, var_0) -- wf_state: `%`(z'') -- (wf_ref: `%`(ref#6))*{ref#6 <- ref_lst} -- (wf_ref: `%`(ref'#7))*{ref'#7 <- ref'_lst#3}*{ref'_lst#3 <- ref'_lst_lst} -- wf_state: `%`(z') -- if ((z', ref_lst) = var_0) -- if ((z'', ref'_lst_lst) = var_1) + -- fun_evalexprss: `%%%`(z', expr'_lst_lst, var_1) + -- fun_evalexprs: `%%%`(z, expr_lst, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18931,8 +18928,6 @@ relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 rule fun_evalglobals_case_1{z : state, gt : globaltype, gt'_lst : globaltype*, v_expr : instr*, expr'_lst : expr*, z'' : state, v_val : val, val'_lst : val*, z' : state, s : store, f : frame, s' : store, a : nat, var_1 : (state, val*), var_0 : (store, globaladdr)}: `%%%%`(z, [gt] ++ gt'_lst, [v_expr] ++ expr'_lst, (z'', [v_val] ++ val'_lst)) - -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'_lst, expr'_lst, var_1) - -- fun_allocglobal: `%%%%`(s, gt, v_val, var_0) -- wf_state: `%`(z'') -- wf_val: `%`(v_val) -- (wf_val: `%`(val'#3))*{val'#3 <- val'_lst} @@ -18943,6 +18938,8 @@ relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) -- if (z' = `%;%`_state(s, f)) -- if ((s', a) = var_0) -- if ((z'', val'_lst) = var_1) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'_lst, expr'_lst, var_1) + -- fun_allocglobal: `%%%%`(s, gt, v_val, var_0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -18950,20 +18947,6 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rule fun_instantiate_case_0{s : store, v_module : module, externaddr_lst : externaddr*, s'''' : store, v_moduleinst : moduleinst, instr_E_lst : instr*, instr_D_lst : instr*, instr_S_opt : instr?, xt_I_lst : externtype*, xt_E_lst : externtype*, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, expr_G_lst : expr*, globaltype_lst : globaltype*, expr_T_lst : expr*, tabletype_lst : tabletype*, byte_lst_lst : byte**, datamode_lst : datamode*, elemmode_lst : elemmode*, expr_E_lst_lst : expr**, reftype_lst : reftype*, x_opt : idx?, moduleinst_0 : moduleinst, z : state, z' : state, val_G_lst : val*, z'' : state, ref_T_lst : ref*, z''' : state, ref_E_lst_lst : ref**, s''' : store, f : frame, i_D : nat, i_E : nat, var_11_lst : instr**, var_10_lst : instr**, var_9 : (store, moduleinst), var_8 : (state, ref**), var_7 : (state, ref*), var_6 : (state, val*), var_5 : funcaddr*, var_4 : globaladdr*, var_3 : deftype*, var_2 : funcaddr*, var_1 : globaladdr*, var_0 : deftype*}: `%%%%`(s, v_module, externaddr_lst, `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt))) - -- (if (i_E#2 < |elem_lst|))^(i_E#2<|elem_lst|){} - -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem_lst[i_E#2], var_11))^(i_E#2<|elem_lst|){var_11 <- var_11_lst} - -- (if (i_D#2 < |data_lst|))^(i_D#2<|data_lst|){} - -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data_lst[i_D#2], var_10))^(i_D#2<|data_lst|){var_10 <- var_10_lst} - -- fun_allocmodule: `%%%%%%%`(s''', v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst, var_9) - -- fun_evalexprss: `%%%`(z'', expr_E_lst_lst, var_8) - -- fun_evalexprs: `%%%`(z', expr_T_lst, var_7) - -- fun_evalglobals: `%%%%`(z, globaltype_lst, expr_G_lst, var_6) - -- fun_funcsxa: `%%`(externaddr_lst, var_5) - -- fun_globalsxa: `%%`(externaddr_lst, var_4) - -- fun_alloctypes: `%%`(type_lst, var_3) - -- fun_funcsxa: `%%`(externaddr_lst, var_2) - -- fun_globalsxa: `%%`(externaddr_lst, var_1) - -- fun_alloctypes: `%%`(type_lst, var_0) -- wf_state: `%`(z) -- wf_state: `%`(z') -- (wf_val: `%`(val_G#3))*{val_G#3 <- val_G_lst} @@ -19009,6 +18992,20 @@ relation fun_instantiate: `%%%%`(store, module, externaddr*, config) -- if (instr_D_lst = $concat_(syntax instr, var_10_lst)) -- if (instr_E_lst = $concat_(syntax instr, var_11_lst)) -- if (instr_S_opt = CALL_instr(x#9)?{x#9 <- x_opt}) + -- (if (i_E#2 < |elem_lst|))^(i_E#2<|elem_lst|){} + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem_lst[i_E#2], var_11))^(i_E#2<|elem_lst|){var_11 <- var_11_lst} + -- (if (i_D#2 < |data_lst|))^(i_D#2<|data_lst|){} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data_lst[i_D#2], var_10))^(i_D#2<|data_lst|){var_10 <- var_10_lst} + -- fun_allocmodule: `%%%%%%%`(s''', v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst, var_9) + -- fun_evalexprss: `%%%`(z'', expr_E_lst_lst, var_8) + -- fun_evalexprs: `%%%`(z', expr_T_lst, var_7) + -- fun_evalglobals: `%%%%`(z, globaltype_lst, expr_G_lst, var_6) + -- fun_funcsxa: `%%`(externaddr_lst, var_5) + -- fun_globalsxa: `%%`(externaddr_lst, var_4) + -- fun_alloctypes: `%%`(type_lst, var_3) + -- fun_funcsxa: `%%`(externaddr_lst, var_2) + -- fun_globalsxa: `%%`(externaddr_lst, var_1) + -- fun_alloctypes: `%%`(type_lst, var_0) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec relation fun_invoke: `%%%%`(store, funcaddr, val*, config) @@ -19454,8 +19451,8 @@ relation fun_ordered: `%%`(decl*, bool) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rule fun_ordered_case_0{decl_lst : decl*, var_0 : import*}: `%%`(decl_lst, true) - -- fun_importsd: `%%`(decl_lst, var_0) -- if (var_0 = []) + -- fun_importsd: `%%`(decl_lst, var_0) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rule fun_ordered_case_1{v_name : name, name_0 : name, v_externtype : externtype, decl_1_lst : decl*, decl_2_lst : decl*, var_5 : func*, var_4 : table*, var_3 : mem*, var_2 : global*, var_1 : tag*, var_0 : import*}: From dd919fdb6be0f908fd320ac061555120973a9106 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 21 May 2026 14:16:12 +0100 Subject: [PATCH 076/115] Undep: Create wf lemmas for functions that construct a term that needs wfness --- spectec/src/middlend/undep.ml | 82 +++++++++++++++++++++++++++++++--- spectec/src/middlend/undep.mli | 3 +- 2 files changed, 79 insertions(+), 6 deletions(-) diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index f46a7e0074..0e0c1c1807 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -66,7 +66,10 @@ let empty () = { let wf_pred_prefix = "wf_" let rule_prefix = "case_" +let wf_lemma_suffix = "_is_wf" + let wf_hint_id = "wf-relation" +let wf_func_id = "wf-lemma-func" [@@@warning "-37"] type wfstate = @@ -79,6 +82,14 @@ let wf_state = MINIMAL let error at msg = error at "Undep error" msg +let make_arg p = + (match p.it with + | ExpP (id, typ) -> ExpA (VarE id $$ id.at % typ) + | TypP id -> TypA (VarT (id, []) $ id.at) + | DefP (id, _, _) -> DefA id + | GramP (id, _, _) -> GramA (VarG (id, []) $ id.at) + ) $ p.at + let rec split3concat = function [] -> ([], [], []) | (x,y, z)::l -> @@ -244,19 +255,21 @@ let get_exp_typ q = | ExpP (id, typ) -> Some (VarE id $$ id.at % typ, typ) | _ -> None -let generate_well_formed_rel_hint at: hint = { hintid = wf_hint_id $ at; hintexp = El.Ast.SeqE [] $ at} +let generate_well_formed_rel_hint id at: hint = { hintid = wf_hint_id $ at; hintexp = El.Ast.VarE (id, []) $ at} +let generate_well_formed_func_hint at: hint = { hintid = wf_func_id $ at; hintexp = El.Ast.SeqE [] $ at} + let create_well_formed_predicate env id inst = let tf = { base_transformer with transform_exp = t_exp env; transform_typ = t_typ} in let at = id.at in let user_typ = VarT(id, []) $ at in - let new_mixop pairs = Xl.Mixop.(Seq (List.init (List.length pairs + 1) (fun _ -> Arg ()))) in let create_pairs quants = List.split (List.filter_map (fun b -> match b.it with | ExpP (id', typ) -> Some (("_" $ id'.at, typ), (id', typ)) | _ -> None ) quants) in let tupt pairs = TupT (pairs @ [("_" $ at, user_typ)]) $ at in - let hint = HintD (RelH (wf_pred_prefix ^ id.it $ id.at, [generate_well_formed_rel_hint at]) $ at) $ at in + let new_mixop pairs = Xl.Mixop.(Seq (List.init (List.length pairs + 1) (fun _ -> Arg ()))) in + let hint = HintD (RelH (wf_pred_prefix ^ id.it $ id.at, [generate_well_formed_rel_hint id at]) $ at) $ at in match inst.it with (* Variant well formedness predicate creation *) | InstD (quants, _args, {it = VariantT typcases; _}) -> @@ -410,6 +423,61 @@ let remove_unused_params def = { def with it = DecD (id, params', typ, clauses') } | _ -> def +let rec return_type_needs_wfness env (rt : typ) : bool = + match rt.it with + | VarT (id, _) -> StringSet.mem id.it env.wf_set + | TupT tups -> tups |> List.map snd |> List.exists (return_type_needs_wfness env) + | IterT (t, _) -> return_type_needs_wfness env t + | _ -> false + +(* HACK: Lemma is actually represented as a relation *) +let generate_wf_lemma env tf id params rtyp = + let lemma_name = id.it ^ wf_lemma_suffix in + let params' = Utils.improve_ids_params params in + let wf_prems = List.concat_map (fun p -> match p.it with + | ExpP (id, typ) -> get_wf_pred env (VarE id $$ id.at % typ, typ) + | _ -> [] + ) params' in + let ids = List.map Utils.get_param_id params in + let text_ids = List.map (fun p -> p.it) ids in + let ret_exp_name = Utils.generate_var text_ids "ret_val" in + let ret_exp = VarE (ret_exp_name $ id.at) $$ id.at % rtyp in + let fcall_exp = CallE (id, List.map make_arg params') $$ id.at % rtyp in + let fcall_prem = IfPr (CmpE (`EqOp, `BoolT, ret_exp, fcall_exp) $$ id.at % (BoolT $ id.at)) $ id.at in + let wf_conclusion = get_wf_pred env (ret_exp, rtyp) in + + let ret_param = ExpP (ret_exp_name $ id.at, rtyp) $ id.at in + let new_quants = params' @ [ret_param] in + + let fixed, not_fixed = List.partition_map (fun p -> match p.it with + | ExpP (id', typ) -> Right (VarE id' $$ id'.at % typ) + | _ -> Left p + ) params' + in + let typtups = List.filter_map (fun p -> match p.it with + | ExpP (id', typ) -> Some (id', typ) + | _ -> None + ) params' + in + let tupt = TupT (typtups @ [(ret_exp_name $ id.at, ret_exp.note)]) $ id.at in + let tupe = TupE (not_fixed @ [ret_exp]) $$ id.at % tupt in + let new_mixop = Xl.Mixop.(Seq (List.init (List.length not_fixed + 1) (fun _ -> Arg ()))) in + let rule = RuleD ( + lemma_name ^ "0" $ id.at, + new_quants, + new_mixop, + tupe, + wf_prems @ [fcall_prem] @ wf_conclusion + ) $ id.at + in + let hint = HintD (RelH (lemma_name $ id.at, [generate_well_formed_func_hint id.at]) $ id.at) $ id.at in + let relation = RelD (lemma_name $ id.at, + List.map (transform_param tf) fixed, new_mixop, + transform_typ tf tupt, + [transform_rule tf rule]) $ id.at in + [hint; relation] + + let rec t_def env def = let tf = { base_transformer with transform_exp = t_exp env; transform_typ = t_typ } in match def.it with @@ -429,8 +497,13 @@ let rec t_def env def = List.map (t_clause env) clauses ) $ def.at in + let is_proj_func = StringSet.mem id.it env.proj_set in let t_d = if StringSet.mem id.it env.proj_set then remove_unused_params d else d in - (t_d, []) + let wf_lemma = if wf_state = MINIMAL && return_type_needs_wfness env typ && not is_proj_func + then generate_wf_lemma env tf id params typ + else [] + in + (t_d, wf_lemma) | GramD (id, params, typ, prods) -> (GramD (id, List.map (transform_param tf) params, transform_typ tf typ, List.map (transform_prod tf) prods) $ def.at, []) | RecD defs -> @@ -441,7 +514,6 @@ let rec t_def env def = if List.concat wf_relations = [] then (rec_defs, []) else (rec_defs, [RecD (List.concat wf_relations) $ def.at]) | HintD hintdef -> (HintD hintdef $ def.at, []) - let has_proj_hint (hint : hint) = hint.hintid.it = Typefamilyremoval.projection_hint_id let has_tf_hint (hint : hint) = hint.hintid.it = Typefamilyremoval.type_family_hint_id diff --git a/spectec/src/middlend/undep.mli b/spectec/src/middlend/undep.mli index 315a4012d4..4bc9b0137c 100644 --- a/spectec/src/middlend/undep.mli +++ b/spectec/src/middlend/undep.mli @@ -1,2 +1,3 @@ +val wf_hint_id : string +val wf_func_id : string val transform : Il.Ast.script -> Il.Ast.script -val wf_hint_id : string \ No newline at end of file From 4ebf89a40dc87c7e8634781d52651cc4002f2f04 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 21 May 2026 14:16:40 +0100 Subject: [PATCH 077/115] Improve ids: modify names for hints as well. --- spectec/src/middlend/improveids.ml | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/spectec/src/middlend/improveids.ml b/spectec/src/middlend/improveids.ml index 277c8a8e48..b3b198dd21 100644 --- a/spectec/src/middlend/improveids.ml +++ b/spectec/src/middlend/improveids.ml @@ -187,6 +187,28 @@ let transform_rule tf env rel_id rule = ) ) $ rule.at +let is_wf_hint hintid = hintid.it = Undep.wf_hint_id +let transform_el_exp env hintid e = + (match e.it with + | El.Ast.VarE (id, args) when is_wf_hint hintid -> El.Ast.VarE (t_user_def_id env id, args) + | e' -> e' + ) $ e.at + +let transform_hintdef env hintdef = + let t_hint h = + { h with hintexp = transform_el_exp env h.hintid h.hintexp} + in + let t_hints hs = List.map t_hint hs in + let h = match hintdef.it with + | TypH (id, hints) -> TypH (t_user_def_id env id, t_hints hints) + | RelH (id, hints) -> RelH (t_user_def_id env id, t_hints hints) + | DecH (id, hints) -> DecH (t_user_def_id env id, t_hints hints) + | GramH (id, hints) -> GramH (t_user_def_id env id, t_hints hints) + | RuleH (id, rid, hints) -> + RuleH (t_user_def_id env id, transform_rule_id env rid id $ rid.at, t_hints hints) + in + { hintdef with it = h } + let rec t_def env def = let tf = { base_transformer with transform_exp = t_exp env; @@ -219,7 +241,7 @@ let rec t_def env def = transform_typ tf typ, List.map (transform_prod tf) prods) | RecD defs -> RecD (List.map (t_def env) defs) - | HintD hintdef -> HintD hintdef + | HintD hintdef -> HintD (transform_hintdef env hintdef) ) $ def.at let create_env il = { From a9c44b734e738c0d72b1e13e45b32486bad13205 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 21 May 2026 14:17:12 +0100 Subject: [PATCH 078/115] Sideconditions: Don't error on relations with parameters. --- spectec/src/middlend/sideconditions.ml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spectec/src/middlend/sideconditions.ml b/spectec/src/middlend/sideconditions.ml index 1efd65dcab..156a49d37d 100644 --- a/spectec/src/middlend/sideconditions.ml +++ b/spectec/src/middlend/sideconditions.ml @@ -18,7 +18,7 @@ open Il.Walk (* Errors *) -let error at msg = Error.error at "side condition" msg +let _error at msg = Error.error at "side condition" msg module Env = Map.Make(String) @@ -130,7 +130,7 @@ let t_params env = List.fold_left (fun env param -> match param.it with | ExpP (v, t) -> Env.add v.it t env - | TypP _ | DefP _ | GramP _ -> error param.at "unexpected paramater or quantifier in rule" + | _ -> env ) env let t_rule' env = function From 2b3d49437d26ebfffe264cb8dda98441620aef15 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 21 May 2026 14:16:12 +0100 Subject: [PATCH 079/115] Undep: Create wf lemmas for functions that construct a term that needs wfness --- spectec/src/middlend/undep.ml | 82 +++++++++++++++++++++++++++++++--- spectec/src/middlend/undep.mli | 3 +- 2 files changed, 79 insertions(+), 6 deletions(-) diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index f46a7e0074..0e0c1c1807 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -66,7 +66,10 @@ let empty () = { let wf_pred_prefix = "wf_" let rule_prefix = "case_" +let wf_lemma_suffix = "_is_wf" + let wf_hint_id = "wf-relation" +let wf_func_id = "wf-lemma-func" [@@@warning "-37"] type wfstate = @@ -79,6 +82,14 @@ let wf_state = MINIMAL let error at msg = error at "Undep error" msg +let make_arg p = + (match p.it with + | ExpP (id, typ) -> ExpA (VarE id $$ id.at % typ) + | TypP id -> TypA (VarT (id, []) $ id.at) + | DefP (id, _, _) -> DefA id + | GramP (id, _, _) -> GramA (VarG (id, []) $ id.at) + ) $ p.at + let rec split3concat = function [] -> ([], [], []) | (x,y, z)::l -> @@ -244,19 +255,21 @@ let get_exp_typ q = | ExpP (id, typ) -> Some (VarE id $$ id.at % typ, typ) | _ -> None -let generate_well_formed_rel_hint at: hint = { hintid = wf_hint_id $ at; hintexp = El.Ast.SeqE [] $ at} +let generate_well_formed_rel_hint id at: hint = { hintid = wf_hint_id $ at; hintexp = El.Ast.VarE (id, []) $ at} +let generate_well_formed_func_hint at: hint = { hintid = wf_func_id $ at; hintexp = El.Ast.SeqE [] $ at} + let create_well_formed_predicate env id inst = let tf = { base_transformer with transform_exp = t_exp env; transform_typ = t_typ} in let at = id.at in let user_typ = VarT(id, []) $ at in - let new_mixop pairs = Xl.Mixop.(Seq (List.init (List.length pairs + 1) (fun _ -> Arg ()))) in let create_pairs quants = List.split (List.filter_map (fun b -> match b.it with | ExpP (id', typ) -> Some (("_" $ id'.at, typ), (id', typ)) | _ -> None ) quants) in let tupt pairs = TupT (pairs @ [("_" $ at, user_typ)]) $ at in - let hint = HintD (RelH (wf_pred_prefix ^ id.it $ id.at, [generate_well_formed_rel_hint at]) $ at) $ at in + let new_mixop pairs = Xl.Mixop.(Seq (List.init (List.length pairs + 1) (fun _ -> Arg ()))) in + let hint = HintD (RelH (wf_pred_prefix ^ id.it $ id.at, [generate_well_formed_rel_hint id at]) $ at) $ at in match inst.it with (* Variant well formedness predicate creation *) | InstD (quants, _args, {it = VariantT typcases; _}) -> @@ -410,6 +423,61 @@ let remove_unused_params def = { def with it = DecD (id, params', typ, clauses') } | _ -> def +let rec return_type_needs_wfness env (rt : typ) : bool = + match rt.it with + | VarT (id, _) -> StringSet.mem id.it env.wf_set + | TupT tups -> tups |> List.map snd |> List.exists (return_type_needs_wfness env) + | IterT (t, _) -> return_type_needs_wfness env t + | _ -> false + +(* HACK: Lemma is actually represented as a relation *) +let generate_wf_lemma env tf id params rtyp = + let lemma_name = id.it ^ wf_lemma_suffix in + let params' = Utils.improve_ids_params params in + let wf_prems = List.concat_map (fun p -> match p.it with + | ExpP (id, typ) -> get_wf_pred env (VarE id $$ id.at % typ, typ) + | _ -> [] + ) params' in + let ids = List.map Utils.get_param_id params in + let text_ids = List.map (fun p -> p.it) ids in + let ret_exp_name = Utils.generate_var text_ids "ret_val" in + let ret_exp = VarE (ret_exp_name $ id.at) $$ id.at % rtyp in + let fcall_exp = CallE (id, List.map make_arg params') $$ id.at % rtyp in + let fcall_prem = IfPr (CmpE (`EqOp, `BoolT, ret_exp, fcall_exp) $$ id.at % (BoolT $ id.at)) $ id.at in + let wf_conclusion = get_wf_pred env (ret_exp, rtyp) in + + let ret_param = ExpP (ret_exp_name $ id.at, rtyp) $ id.at in + let new_quants = params' @ [ret_param] in + + let fixed, not_fixed = List.partition_map (fun p -> match p.it with + | ExpP (id', typ) -> Right (VarE id' $$ id'.at % typ) + | _ -> Left p + ) params' + in + let typtups = List.filter_map (fun p -> match p.it with + | ExpP (id', typ) -> Some (id', typ) + | _ -> None + ) params' + in + let tupt = TupT (typtups @ [(ret_exp_name $ id.at, ret_exp.note)]) $ id.at in + let tupe = TupE (not_fixed @ [ret_exp]) $$ id.at % tupt in + let new_mixop = Xl.Mixop.(Seq (List.init (List.length not_fixed + 1) (fun _ -> Arg ()))) in + let rule = RuleD ( + lemma_name ^ "0" $ id.at, + new_quants, + new_mixop, + tupe, + wf_prems @ [fcall_prem] @ wf_conclusion + ) $ id.at + in + let hint = HintD (RelH (lemma_name $ id.at, [generate_well_formed_func_hint id.at]) $ id.at) $ id.at in + let relation = RelD (lemma_name $ id.at, + List.map (transform_param tf) fixed, new_mixop, + transform_typ tf tupt, + [transform_rule tf rule]) $ id.at in + [hint; relation] + + let rec t_def env def = let tf = { base_transformer with transform_exp = t_exp env; transform_typ = t_typ } in match def.it with @@ -429,8 +497,13 @@ let rec t_def env def = List.map (t_clause env) clauses ) $ def.at in + let is_proj_func = StringSet.mem id.it env.proj_set in let t_d = if StringSet.mem id.it env.proj_set then remove_unused_params d else d in - (t_d, []) + let wf_lemma = if wf_state = MINIMAL && return_type_needs_wfness env typ && not is_proj_func + then generate_wf_lemma env tf id params typ + else [] + in + (t_d, wf_lemma) | GramD (id, params, typ, prods) -> (GramD (id, List.map (transform_param tf) params, transform_typ tf typ, List.map (transform_prod tf) prods) $ def.at, []) | RecD defs -> @@ -441,7 +514,6 @@ let rec t_def env def = if List.concat wf_relations = [] then (rec_defs, []) else (rec_defs, [RecD (List.concat wf_relations) $ def.at]) | HintD hintdef -> (HintD hintdef $ def.at, []) - let has_proj_hint (hint : hint) = hint.hintid.it = Typefamilyremoval.projection_hint_id let has_tf_hint (hint : hint) = hint.hintid.it = Typefamilyremoval.type_family_hint_id diff --git a/spectec/src/middlend/undep.mli b/spectec/src/middlend/undep.mli index e66a2603e0..4bc9b0137c 100644 --- a/spectec/src/middlend/undep.mli +++ b/spectec/src/middlend/undep.mli @@ -1,2 +1,3 @@ val wf_hint_id : string -val transform : Il.Ast.script -> Il.Ast.script \ No newline at end of file +val wf_func_id : string +val transform : Il.Ast.script -> Il.Ast.script From c1f70aa16b568736ac114c3d2ab607c20d56cbda Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 21 May 2026 14:16:40 +0100 Subject: [PATCH 080/115] Improve ids: modify names for hints as well. --- spectec/src/middlend/improveids.ml | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/spectec/src/middlend/improveids.ml b/spectec/src/middlend/improveids.ml index 277c8a8e48..b3b198dd21 100644 --- a/spectec/src/middlend/improveids.ml +++ b/spectec/src/middlend/improveids.ml @@ -187,6 +187,28 @@ let transform_rule tf env rel_id rule = ) ) $ rule.at +let is_wf_hint hintid = hintid.it = Undep.wf_hint_id +let transform_el_exp env hintid e = + (match e.it with + | El.Ast.VarE (id, args) when is_wf_hint hintid -> El.Ast.VarE (t_user_def_id env id, args) + | e' -> e' + ) $ e.at + +let transform_hintdef env hintdef = + let t_hint h = + { h with hintexp = transform_el_exp env h.hintid h.hintexp} + in + let t_hints hs = List.map t_hint hs in + let h = match hintdef.it with + | TypH (id, hints) -> TypH (t_user_def_id env id, t_hints hints) + | RelH (id, hints) -> RelH (t_user_def_id env id, t_hints hints) + | DecH (id, hints) -> DecH (t_user_def_id env id, t_hints hints) + | GramH (id, hints) -> GramH (t_user_def_id env id, t_hints hints) + | RuleH (id, rid, hints) -> + RuleH (t_user_def_id env id, transform_rule_id env rid id $ rid.at, t_hints hints) + in + { hintdef with it = h } + let rec t_def env def = let tf = { base_transformer with transform_exp = t_exp env; @@ -219,7 +241,7 @@ let rec t_def env def = transform_typ tf typ, List.map (transform_prod tf) prods) | RecD defs -> RecD (List.map (t_def env) defs) - | HintD hintdef -> HintD hintdef + | HintD hintdef -> HintD (transform_hintdef env hintdef) ) $ def.at let create_env il = { From cbc0b5674308617dbd2b59a9d449b181f65231c0 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 21 May 2026 14:17:12 +0100 Subject: [PATCH 081/115] Sideconditions: Don't error on relations with parameters. --- spectec/src/middlend/sideconditions.ml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spectec/src/middlend/sideconditions.ml b/spectec/src/middlend/sideconditions.ml index 1efd65dcab..156a49d37d 100644 --- a/spectec/src/middlend/sideconditions.ml +++ b/spectec/src/middlend/sideconditions.ml @@ -18,7 +18,7 @@ open Il.Walk (* Errors *) -let error at msg = Error.error at "side condition" msg +let _error at msg = Error.error at "side condition" msg module Env = Map.Make(String) @@ -130,7 +130,7 @@ let t_params env = List.fold_left (fun env param -> match param.it with | ExpP (v, t) -> Env.add v.it t env - | TypP _ | DefP _ | GramP _ -> error param.at "unexpected paramater or quantifier in rule" + | _ -> env ) env let t_rule' env = function From 63cc5565fb24c826fda386d15a2c9461f75bc92d Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 21 May 2026 14:34:06 +0100 Subject: [PATCH 082/115] Fix tests --- .../04-remove-indexed-types.il | 4629 +++--- .../specification.exp/05-totalize.il | 4629 +++--- .../specification.exp/06-else.il | 4822 +++--- .../07-else-simplification.il | 4823 +++--- .../specification.exp/08-uncase-removal.il | 4817 +++--- .../specification.exp/09-sideconditions.il | 4833 +++--- .../specification.exp/10-sub-expansion.il | 7428 +++++---- .../test-middlend/specification.exp/11-sub.il | 7433 +++++---- .../specification.exp/12-alias-demut.il | 7433 +++++---- .../specification.exp/13-improve-ids.il | 13023 +++++++++------- spectec/test-middlend/test.spectec.exp | 2 +- 11 files changed, 36938 insertions(+), 26934 deletions(-) diff --git a/spectec/test-middlend/specification.exp/04-remove-indexed-types.il b/spectec/test-middlend/specification.exp/04-remove-indexed-types.il index a3d09eaef0..363d1235a8 100644 --- a/spectec/test-middlend/specification.exp/04-remove-indexed-types.il +++ b/spectec/test-middlend/specification.exp/04-remove-indexed-types.il @@ -308,19 +308,40 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fzero_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fzero_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fzero(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fnat_is_wf: `%%%`(N : N, nat : nat, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fnat_is_wf0{N : N, nat : nat, ret_val : fN}: + `%%%`(N, nat, ret_val) + -- if (ret_val = $fnat(N, nat)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fone_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fone_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fone(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -371,23 +392,27 @@ def $utf8(char*) : byte* def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation utf8_is_wf: `%%`(var_0 : char*, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule utf8_is_wf0{var_0 : char*, ret_val : byte*}: + `%%`(var_0, ret_val) + -- (wf_char: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $utf8(var_0)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -576,10 +601,18 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_opt_is_wf: `%%`(var_0 : free?, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_opt_is_wf0{var_0 : free?, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))?{var_0 <- var_0} + -- if (ret_val = $free_opt(var_0)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -587,70 +620,162 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation free_list_is_wf: `%%`(var_0 : free*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule free_list_is_wf0{var_0 : free*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_list(var_0)) + -- wf_free: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_typeidx_is_wf: `%%`(typeidx : typeidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_typeidx_is_wf0{typeidx : typeidx, ret_val : free}: + `%%`(typeidx, ret_val) + -- wf_uN: `%%`(32, typeidx) + -- if (ret_val = $free_typeidx(typeidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_funcidx_is_wf: `%%`(funcidx : funcidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_funcidx_is_wf0{funcidx : funcidx, ret_val : free}: + `%%`(funcidx, ret_val) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $free_funcidx(funcidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_globalidx_is_wf: `%%`(globalidx : globalidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_globalidx_is_wf0{globalidx : globalidx, ret_val : free}: + `%%`(globalidx, ret_val) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $free_globalidx(globalidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tableidx_is_wf: `%%`(tableidx : tableidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tableidx_is_wf0{tableidx : tableidx, ret_val : free}: + `%%`(tableidx, ret_val) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $free_tableidx(tableidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_memidx_is_wf: `%%`(memidx : memidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_memidx_is_wf0{memidx : memidx, ret_val : free}: + `%%`(memidx, ret_val) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $free_memidx(memidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_elemidx_is_wf: `%%`(elemidx : elemidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_elemidx_is_wf0{elemidx : elemidx, ret_val : free}: + `%%`(elemidx, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- if (ret_val = $free_elemidx(elemidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_dataidx_is_wf: `%%`(dataidx : dataidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_dataidx_is_wf0{dataidx : dataidx, ret_val : free}: + `%%`(dataidx, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $free_dataidx(dataidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_localidx_is_wf: `%%`(localidx : localidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_localidx_is_wf0{localidx : localidx, ret_val : free}: + `%%`(localidx, ret_val) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $free_localidx(localidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_labelidx_is_wf: `%%`(labelidx : labelidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_labelidx_is_wf0{labelidx : labelidx, ret_val : free}: + `%%`(labelidx, ret_val) + -- wf_uN: `%%`(32, labelidx) + -- if (ret_val = $free_labelidx(labelidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx(tagidx : tagidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx{tagidx : uN}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tagidx_is_wf: `%%`(tagidx : tagidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tagidx_is_wf0{tagidx : tagidx, ret_val : free}: + `%%`(tagidx, ret_val) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $free_tagidx(tagidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -665,6 +790,15 @@ def $free_externidx(externidx : externidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_externidx_is_wf: `%%`(externidx : externidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_externidx_is_wf0{externidx : externidx, ret_val : free}: + `%%`(externidx, ret_val) + -- wf_externidx: `%`(externidx) + -- if (ret_val = $free_externidx(externidx)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = | NULL @@ -1029,73 +1163,157 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ANYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ANYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ANYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EQREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EQREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EQREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation I31REF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule I31REF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $I31REF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation STRUCTREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule STRUCTREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $STRUCTREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ARRAYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ARRAYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ARRAYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation FUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule FUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $FUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLFUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLFUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLFUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1392,7 +1610,15 @@ def $unpack(storagetype : storagetype) : valtype def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype - -- wf_valtype: `%`(I32_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation unpack_is_wf: `%%`(storagetype : storagetype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule unpack_is_wf0{storagetype : storagetype, ret_val : valtype}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $unpack(storagetype)) + -- wf_valtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype @@ -1424,10 +1650,18 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation diffrt_is_wf: `%%%`(reftype : reftype, reftype_0 : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule diffrt_is_wf0{reftype : reftype, reftype_0 : reftype, ret_val : reftype}: + `%%%`(reftype, reftype_0, ret_val) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + -- if (ret_val = $diffrt(reftype, reftype_0)) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1463,6 +1697,19 @@ def $globalsxt(externtype*) : globaltype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation globalsxt_is_wf: `%%`(var_0 : externtype*, ret_val : globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule globalsxt_is_wf0{var_0 : externtype*, ret_val : globaltype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsxt(var_0)) + -- (wf_globaltype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 @@ -1476,6 +1723,19 @@ def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation memsxt_is_wf: `%%`(var_0 : externtype*, ret_val : memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule memsxt_is_wf0{var_0 : externtype*, ret_val : memtype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsxt(var_0)) + -- (wf_memtype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 @@ -1489,6 +1749,19 @@ def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation tablesxt_is_wf: `%%`(var_0 : externtype*, ret_val : tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule tablesxt_is_wf0{var_0 : externtype*, ret_val : tabletype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesxt(var_0)) + -- (wf_tabletype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 @@ -1513,6 +1786,21 @@ def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation subst_typevar_is_wf: `%%%%`(typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule subst_typevar_is_wf0{typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typevar, var_0, var_1, ret_val) + -- wf_typevar: `%`(typevar) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_typevar(typevar, var_0, var_1)) + -- wf_typeuse: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.73 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 @@ -1522,7 +1810,23 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - -- wf_typevar: `%`(_IDX_typevar(x)) + -- (wf_typevar: `%`(iter))*{iter <- $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}).0} + -- (wf_typeuse: `%`(iter))*{iter <- $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}).1} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation minus_recs_is_wf: `%%%`(var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule minus_recs_is_wf0{var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)}: + `%%%`(var_0, var_1, ret_val) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $minus_recs(var_0, var_1)) + -- (wf_typevar: `%`(iter))*{iter <- ret_val.0} + -- (wf_typeuse: `%`(iter))*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1563,7 +1867,6 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1575,7 +1878,6 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1588,31 +1890,28 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + -- (wf_typevar: `%`(iter))*{iter <- $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}).0} + -- (wf_typeuse: `%`(iter))*{iter <- $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}).1} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype @@ -1620,6 +1919,98 @@ def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation subst_typeuse_is_wf: `%%%%`(typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule subst_typeuse_is_wf0{typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typeuse, var_0, var_1, ret_val) + -- wf_typeuse: `%`(typeuse) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_typeuse(typeuse, var_0, var_1)) + -- wf_typeuse: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation subst_heaptype_is_wf: `%%%%`(heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule subst_heaptype_is_wf0{heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype}: + `%%%%`(heaptype, var_0, var_1, ret_val) + -- wf_heaptype: `%`(heaptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_heaptype(heaptype, var_0, var_1)) + -- wf_heaptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation subst_reftype_is_wf: `%%%%`(reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule subst_reftype_is_wf0{reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype}: + `%%%%`(reftype, var_0, var_1, ret_val) + -- wf_reftype: `%`(reftype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_reftype(reftype, var_0, var_1)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation subst_valtype_is_wf: `%%%%`(valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule subst_valtype_is_wf0{valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype}: + `%%%%`(valtype, var_0, var_1, ret_val) + -- wf_valtype: `%`(valtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_valtype(valtype, var_0, var_1)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation subst_storagetype_is_wf: `%%%%`(storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule subst_storagetype_is_wf0{storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype}: + `%%%%`(storagetype, var_0, var_1, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_storagetype(storagetype, var_0, var_1)) + -- wf_storagetype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation subst_fieldtype_is_wf: `%%%%`(fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule subst_fieldtype_is_wf0{fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype}: + `%%%%`(fieldtype, var_0, var_1, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_fieldtype(fieldtype, var_0, var_1)) + -- wf_fieldtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation subst_comptype_is_wf: `%%%%`(comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule subst_comptype_is_wf0{comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype}: + `%%%%`(comptype, var_0, var_1, ret_val) + -- wf_comptype: `%`(comptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_comptype(comptype, var_0, var_1)) + -- wf_comptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation subst_subtype_is_wf: `%%%%`(subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule subst_subtype_is_wf0{subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype}: + `%%%%`(subtype, var_0, var_1, ret_val) + -- wf_subtype: `%`(subtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_subtype(subtype, var_0, var_1)) + -- wf_subtype: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1634,97 +2025,204 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_globaltype_is_wf: `%%%%`(globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_globaltype_is_wf0{globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype}: + `%%%%`(globaltype, var_0, var_1, ret_val) + -- wf_globaltype: `%`(globaltype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_globaltype(globaltype, var_0, var_1)) + -- wf_globaltype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_memtype_is_wf: `%%%%`(memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_memtype_is_wf0{memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype}: + `%%%%`(memtype, var_0, var_1, ret_val) + -- wf_memtype: `%`(memtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_memtype(memtype, var_0, var_1)) + -- wf_memtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_tabletype_is_wf: `%%%%`(tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_tabletype_is_wf0{tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype}: + `%%%%`(tabletype, var_0, var_1, ret_val) + -- wf_tabletype: `%`(tabletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_tabletype(tabletype, var_0, var_1)) + -- wf_tabletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_externtype_is_wf: `%%%%`(externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_externtype_is_wf0{externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype}: + `%%%%`(externtype, var_0, var_1, ret_val) + -- wf_externtype: `%`(externtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_externtype(externtype, var_0, var_1)) + -- wf_externtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_moduletype_is_wf: `%%%%`(moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_moduletype_is_wf0{moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype}: + `%%%%`(moduletype, var_0, var_1, ret_val) + -- wf_moduletype: `%`(moduletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_moduletype(moduletype, var_0, var_1)) + -- wf_moduletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, n : nat, `tu*` : typeuse*, i : nat}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_moduletype_is_wf: `%%`(moduletype : moduletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_moduletype_is_wf0{moduletype : moduletype, ret_val : free}: + `%%`(moduletype, ret_val) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $free_moduletype(moduletype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax num_ = | mk_num__0(Inn : Inn, var_x : iN) @@ -2447,7 +3178,15 @@ relation wf_shape: `%`(shape) def $dim(shape : shape) : dim ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) - -- wf_dim: `%`(`%`_dim(N)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation dim_is_wf: `%%`(shape : shape, ret_val : dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_is_wf0{shape : shape, ret_val : dim}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $dim(shape)) + -- wf_dim: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $lanetype(shape : shape) : lanetype @@ -4191,22 +4930,45 @@ syntax expr = instr* def $memarg0 : memarg ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} - -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation memarg0_is_wf: `%`(ret_val : memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg0_is_wf0{ret_val : memarg}: + `%`(ret_val) + -- if (ret_val = $memarg0) + -- wf_memarg: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const(consttype : consttype, lit_ : lit_) : instr ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{numtype : numtype, c : num_}((numtype : numtype <: consttype), mk_lit__0_lit_(numtype, c)) = CONST_instr(numtype, c) - -- wf_instr: `%`(CONST_instr(numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{vectype : vectype, c : uN}((vectype : vectype <: consttype), mk_lit__1_lit_(vectype, c)) = VCONST_instr(vectype, c) - -- wf_instr: `%`(VCONST_instr(vectype, c)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation const_is_wf: `%%%`(consttype : consttype, lit_ : lit_, ret_val : instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule const_is_wf0{consttype : consttype, lit_ : lit_, ret_val : instr}: + `%%%`(consttype, lit_, ret_val) + -- wf_lit_: `%%`((consttype : consttype <: storagetype), lit_) + -- if (ret_val = $const(consttype, lit_)) + -- wf_instr: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_shape_is_wf: `%%`(shape : shape, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_shape_is_wf0{shape : shape, ret_val : free}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $free_shape(shape)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4214,6 +4976,15 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype{typeidx : uN}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_blocktype_is_wf: `%%`(blocktype : blocktype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_blocktype_is_wf0{blocktype : blocktype, ret_val : free}: + `%%`(blocktype, ret_val) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $free_blocktype(blocktype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4225,6 +4996,15 @@ def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch{labelidx : uN}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_catch_is_wf: `%%`(catch : catch, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_catch_is_wf0{catch : catch, ret_val : free}: + `%%`(catch, ret_val) + -- wf_catch: `%`(catch) + -- if (ret_val = $free_catch(catch)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { @@ -4236,7 +5016,6 @@ def $shift_labelidxs(labelidx*) : labelidx* def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.91 def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4246,13 +5025,10 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-435.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.92 @@ -4283,7 +5059,6 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.66 @@ -4294,7 +5069,6 @@ def $free_instr(instr : instr) : free def $free_instr{tagidx : uN}(THROW_instr(tagidx)) = $free_tagidx(tagidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.32 def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-469.99 def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.63 @@ -4357,13 +5131,10 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.34 def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.38 def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.29 def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 @@ -4372,10 +5143,8 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.30 def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.61 def $free_instr{typeidx : uN}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.69 @@ -4400,7 +5169,6 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.32 def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.61 def $free_instr{typeidx : uN}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.55 @@ -4411,10 +5179,8 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.41 def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 def $free_instr{localidx : uN}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 @@ -4471,6 +5237,30 @@ def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:589.1-590.47 def $free_block{`instr*` : instr*}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] -- let{free : free} free = $free_list($free_instr(instr)*{instr <- `instr*`}) + -- wf_free: `%`($free_list($free_instr(instr)*{instr <- `instr*`})) + -- (wf_free: `%`($free_instr(instr)))*{instr <- `instr*`} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation free_instr_is_wf: `%%`(instr : instr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule free_instr_is_wf0{instr : instr, ret_val : free}: + `%%`(instr, ret_val) + -- wf_instr: `%`(instr) + -- if (ret_val = $free_instr(instr)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation free_block_is_wf: `%%`(var_0 : instr*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule free_block_is_wf0{var_0 : instr*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_block(var_0)) + -- wf_free: `%`(ret_val) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4478,6 +5268,15 @@ def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_expr_is_wf: `%%`(expr : expr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_expr_is_wf0{expr : expr, ret_val : free}: + `%%`(expr, ret_val) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- if (ret_val = $free_expr(expr)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = | ACTIVE(tableidx : tableidx, expr : expr) @@ -4668,85 +5467,216 @@ def $free_type(type : type) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_type_is_wf: `%%`(type : type, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_type_is_wf0{type : type, ret_val : free}: + `%%`(type, ret_val) + -- if (ret_val = $free_type(type)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag(tag : tag) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_tag_is_wf: `%%`(tag : tag, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_tag_is_wf0{tag : tag, ret_val : free}: + `%%`(tag, ret_val) + -- wf_tag: `%`(tag) + -- if (ret_val = $free_tag(tag)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global(global : global) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_global_is_wf: `%%`(global : global, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_global_is_wf0{global : global, ret_val : free}: + `%%`(global, ret_val) + -- wf_global: `%`(global) + -- if (ret_val = $free_global(global)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem(mem : mem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_mem_is_wf: `%%`(mem : mem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_mem_is_wf0{mem : mem, ret_val : free}: + `%%`(mem, ret_val) + -- wf_mem: `%`(mem) + -- if (ret_val = $free_mem(mem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table(table : table) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_table_is_wf: `%%`(table : table, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_table_is_wf0{table : table, ret_val : free}: + `%%`(table, ret_val) + -- wf_table: `%`(table) + -- if (ret_val = $free_table(table)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local(local : local) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_local_is_wf: `%%`(local : local, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_local_is_wf0{local : local, ret_val : free}: + `%%`(local, ret_val) + -- wf_local: `%`(local) + -- if (ret_val = $free_local(local)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func(func : func) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_func_is_wf: `%%`(func : func, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_func_is_wf0{func : func, ret_val : free}: + `%%`(func, ret_val) + -- wf_func: `%`(func) + -- if (ret_val = $free_func(func)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(datamode : datamode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_datamode_is_wf: `%%`(datamode : datamode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_datamode_is_wf0{datamode : datamode, ret_val : free}: + `%%`(datamode, ret_val) + -- wf_datamode: `%`(datamode) + -- if (ret_val = $free_datamode(datamode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_data_is_wf: `%%`(data : data, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_data_is_wf0{data : data, ret_val : free}: + `%%`(data, ret_val) + -- wf_data: `%`(data) + -- if (ret_val = $free_data(data)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(elemmode : elemmode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elemmode_is_wf: `%%`(elemmode : elemmode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elemmode_is_wf0{elemmode : elemmode, ret_val : free}: + `%%`(elemmode, ret_val) + -- wf_elemmode: `%`(elemmode) + -- if (ret_val = $free_elemmode(elemmode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elem_is_wf: `%%`(elem : elem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elem_is_wf0{elem : elem, ret_val : free}: + `%%`(elem, ret_val) + -- wf_elem: `%`(elem) + -- if (ret_val = $free_elem(elem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start(start : start) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_start_is_wf: `%%`(start : start, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_start_is_wf0{start : start, ret_val : free}: + `%%`(start, ret_val) + -- wf_start: `%`(start) + -- if (ret_val = $free_start(start)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import(import : import) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_import_is_wf: `%%`(import : import, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_import_is_wf0{import : import, ret_val : free}: + `%%`(import, ret_val) + -- wf_import: `%`(import) + -- if (ret_val = $free_import(import)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export(export : export) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_export_is_wf: `%%`(export : export, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_export_is_wf0{export : export, ret_val : free}: + `%%`(export, ret_val) + -- wf_export: `%`(export) + -- if (ret_val = $free_export(export)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module(module : module) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_module_is_wf: `%%`(module : module, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_module_is_wf0{module : module, ret_val : free}: + `%%`(module, ret_val) + -- wf_module: `%`(module) + -- if (ret_val = $free_module(module)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $funcidx_module(module : module) : funcidx* ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec @@ -4830,6 +5760,21 @@ def $with_locals(context : context, localidx*, localtype*) : context ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation with_locals_is_wf: `%%%%`(context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule with_locals_is_wf0{context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context}: + `%%%%`(context, var_0, var_1, ret_val) + -- wf_context: `%`(context) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_localtype: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $with_locals(context, var_0, var_1)) + -- wf_context: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(deftype*) : deftype* ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 @@ -4845,6 +5790,16 @@ def $clos_valtype(context : context, valtype : valtype) : valtype def $clos_valtype{C : context, t : valtype}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_valtype_is_wf: `%%%`(context : context, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_valtype_is_wf0{context : context, valtype : valtype, ret_val : valtype}: + `%%%`(context, valtype, ret_val) + -- wf_context: `%`(context) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $clos_valtype(context, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -4863,25 +5818,43 @@ def $clos_externtype(context : context, externtype : externtype) : externtype def $clos_externtype{C : context, xt : externtype}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_externtype_is_wf: `%%%`(context : context, externtype : externtype, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_externtype_is_wf0{context : context, externtype : externtype, ret_val : externtype}: + `%%%`(context, externtype, ret_val) + -- wf_context: `%`(context) + -- wf_externtype: `%`(externtype) + -- if (ret_val = $clos_externtype(context, externtype)) + -- wf_externtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_moduletype_is_wf: `%%%`(context : context, moduletype : moduletype, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_moduletype_is_wf0{context : context, moduletype : moduletype, ret_val : moduletype}: + `%%%`(context, moduletype, ret_val) + -- wf_context: `%`(context) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $clos_moduletype(context, moduletype)) + -- wf_moduletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypenat = @@ -4892,21 +5865,18 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) @@ -4914,6 +5884,7 @@ relation Expand: `%~~%`(deftype, comptype) rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: `%~~%`(deftype, comptype) -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- wf_subtype: `%`($unrolldt(deftype)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -4921,7 +5892,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, nat : nat) : bool @@ -4939,6 +5909,16 @@ def $unrollht_(context : context, heaptype : heaptype) : subtype ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $unrollht_{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation unrollht__is_wf: `%%%`(context : context, heaptype : heaptype, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule unrollht__is_wf0{context : context, heaptype : heaptype, ret_val : subtype}: + `%%%`(context, heaptype, ret_val) + -- wf_context: `%`(context) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = $unrollht_(context, heaptype)) + -- wf_subtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -4947,20 +5927,15 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 rule bot{C : context}: `%|-%:OK`(C, BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) @@ -4968,8 +5943,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) @@ -4977,26 +5950,20 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) -- Numtype_ok: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) -- Vectype_ok: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) @@ -5004,22 +5971,17 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_uN.0] = dt) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (C.RECS_context[i] = st) - -- wf_context: `%`(C) -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) @@ -5027,8 +5989,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) @@ -5036,8 +5996,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) @@ -5045,14 +6003,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) @@ -5060,23 +6015,17 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) @@ -5089,8 +6038,7 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) -- (if ($unrollht_(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_subtype: `%`($unrollht_(C, (typeuse : typeuse <: heaptype))))*{typeuse <- `typeuse*`} -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 @@ -5098,16 +6046,12 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 rule empty{C : context, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypenat(i)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypenat(i)) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypenat((i + 1))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) @@ -5117,7 +6061,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}}) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 @@ -5126,26 +6069,17 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) @@ -5153,14 +6087,13 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) - -- wf_context: `%`(C) + -- wf_subtype: `%`($unrolldt(deftype_1)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 @@ -5168,8 +6101,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: @@ -5177,118 +6108,79 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) -- wf_heaptype: `%`(heaptype') ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 rule `rec-array`{C : context, i : n, `final?` : final?, fieldtype : fieldtype}: `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 rule `rec-func`{C : context, i : n, `final?` : final?, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 @@ -5296,9 +6188,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) -- wf_heaptype: `%`(ANY_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5307,9 +6196,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) -- wf_heaptype: `%`(FUNC_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5318,9 +6204,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) -- wf_heaptype: `%`(EXN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5329,18 +6212,12 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) -- wf_heaptype: `%`(EXTERN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) @@ -5348,17 +6225,11 @@ relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) @@ -5366,28 +6237,20 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) @@ -5395,9 +6258,6 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) @@ -5405,15 +6265,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) @@ -5421,18 +6277,12 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) } ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5441,8 +6291,6 @@ relation Localtype_ok: `%|-%:OK`(context, localtype) rule _{C : context, init : init, t : valtype}: `%|-%:OK`(C, `%%`_localtype(init, t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) @@ -5452,9 +6300,7 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (if (C.LOCALS_context[x!`%`_uN.0] = lct))*{lct <- `lct*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand_use: `%~~_%%`(typeuse, context, comptype) @@ -5462,16 +6308,11 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) -- Expand: `%~~%`(deftype, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5494,9 +6335,7 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- (if ($unrolldt(C.TYPES_context[x!`%`_uN.0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`($unrolldt(C.TYPES_context[x!`%`_uN.0])))*{x <- `x*`} -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5507,17 +6346,12 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) } @@ -5529,8 +6363,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) @@ -5539,8 +6371,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) `%|-%:OK`(C, typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5549,8 +6379,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Memtype_ok: `%|-%:OK`(context, memtype) @@ -5558,8 +6386,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) @@ -5568,8 +6394,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Externtype_ok: `%|-%:OK`(context, externtype) @@ -5577,37 +6401,27 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5619,10 +6433,8 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) -- (if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_uN: `%%`(32, iter))*{iter <- $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5632,17 +6444,11 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) -- if (n_1 >= n_2) -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule eps{C : context, n_1 : n, n_2 : n}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) -- if (n_1 >= n_2) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) @@ -5651,7 +6457,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) @@ -5659,18 +6464,12 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) @@ -5678,9 +6477,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) @@ -5690,9 +6486,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) @@ -5700,41 +6493,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) - -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) @@ -5742,17 +6520,11 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5762,8 +6534,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_catch(x, l)) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5771,48 +6541,47 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) - -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) - -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) - -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(`REF.NULL_ADDR`_val) - -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation default__is_wf: `%%`(valtype : valtype, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule default__is_wf0{valtype : valtype, ret_val : val?}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $default_(valtype)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) -- if ($default_(t) =/= ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- $default_(t)} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) @@ -5821,7 +6590,6 @@ relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (m < (2 ^ $size((at : addrtype <: numtype)))) - -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec def $is_packtype(storagetype : storagetype) : bool @@ -5836,33 +6604,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: @@ -5870,18 +6627,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) - -- wf_context: `%`(C) -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5891,8 +6643,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5903,9 +6653,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5916,18 +6663,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: @@ -5935,8 +6676,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]))*{l <- `l*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_uN.0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 @@ -5944,17 +6683,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -5964,10 +6697,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -5977,27 +6707,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- wf_reftype: `%`($diffrt(rt_1, rt_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 @@ -6006,9 +6728,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6018,9 +6737,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 @@ -6030,10 +6746,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6044,10 +6757,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6060,10 +6770,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6074,9 +6781,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6084,9 +6788,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 @@ -6095,8 +6796,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6105,48 +6804,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule `ref.null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule `ref.func`{C : context, x : idx, dt : deftype}: `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) -- if (x <- C.REFS_context) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule `ref.i31`{C : context}: `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule `ref.is_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule `ref.as_non_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule `ref.eq`{C : context}: `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule `ref.test`{C : context, rt : reftype, rt' : reftype}: @@ -6154,9 +6835,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.TEST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: @@ -6164,24 +6842,15 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.CAST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule `i31.get`{C : context, sx : sx}: `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 @@ -6189,9 +6858,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 @@ -6200,9 +6867,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) @@ -6211,9 +6875,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(?(MUT_mut), zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) @@ -6221,9 +6882,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 @@ -6231,18 +6889,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 @@ -6250,9 +6903,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_uN.0], rt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 @@ -6261,9 +6911,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 @@ -6271,34 +6919,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule `array.set`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule `array.len`{C : context}: `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.LEN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule `array.fill`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 @@ -6307,9 +6943,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) @@ -6318,9 +6951,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_uN.0] : reftype <: storagetype), zt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 @@ -6329,115 +6959,77 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule `local.get`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule `local.set`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule `local.tee`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule `global.set`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 @@ -6446,9 +7038,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.TABLES_context[x_1!`%`_uN.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_uN.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) @@ -6458,46 +7047,31 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_uN.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule `elem.drop`{C : context, x : idx, rt : reftype}: `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.ELEMS_context[x!`%`_uN.0] = rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 @@ -6505,9 +7079,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x_1!`%`_uN.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_uN.0] = `%%PAGE`_memtype(at_2, lim_2)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) @@ -6516,27 +7087,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 rule `data.drop`{C : context, x : idx}: `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.DATAS_context[x!`%`_uN.0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 @@ -6544,9 +7106,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 @@ -6554,9 +7113,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 @@ -6564,9 +7120,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 @@ -6574,9 +7127,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 @@ -6584,9 +7134,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 @@ -6594,9 +7141,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 @@ -6604,9 +7148,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 @@ -6615,9 +7156,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 @@ -6625,9 +7163,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 @@ -6636,217 +7171,131 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if (i!`%`_uN.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim(sh!`%`_bshape.0)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -6854,10 +7303,7 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_uN.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -6869,9 +7315,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 @@ -6879,9 +7322,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -6891,8 +7331,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6901,88 +7339,62 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) -- if ($default_(t) = ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- $default_(t)} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.null`{C : context, ht : heaptype}: `%|-%CONST`(C, `REF.NULL`_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.i31`{C : context}: `%|-%CONST`(C, `REF.I31`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.func`{C : context, x : idx}: `%|-%CONST`(C, `REF.FUNC`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new_default`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_default`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_fixed`{C : context, x : idx, n : n}: `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `any.convert_extern`{C : context}: `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `extern.convert_any`{C : context}: `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `global.get`{C : context, x : idx, t : valtype}: `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6990,8 +7402,6 @@ relation Instr_const: `%|-%CONST`(context, instr) `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) @@ -7002,8 +7412,6 @@ relation Expr_const: `%|-%CONST`(context, expr) rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) @@ -7012,9 +7420,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) `%|-%:%CONST`(C, expr, t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) @@ -7024,7 +7429,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) -- if (x!`%`_uN.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_oktypeidx: `%`(OK_oktypeidx(x)) @@ -7034,8 +7438,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Global_ok: `%|-%:%`(context, global, globaltype) @@ -7045,8 +7447,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7055,8 +7455,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Table_ok: `%|-%:%`(context, table, tabletype) @@ -7066,8 +7464,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7076,17 +7472,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) @@ -7096,8 +7486,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) @@ -7106,16 +7494,12 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7124,24 +7508,16 @@ relation Data_ok: `%|-%:%`(context, data, datatype) rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: @@ -7149,9 +7525,6 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7162,8 +7535,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Start_ok: `%|-%:OK`(context, start) @@ -7171,8 +7542,6 @@ relation Start_ok: `%|-%:OK`(context, start) rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7181,8 +7550,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Externidx_ok: `%|-%:%`(context, externidx, externtype) @@ -7190,41 +7557,26 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) -- if (C.TAGS_context[x!`%`_uN.0] = jt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) -- if (C.GLOBALS_context[x!`%`_uN.0] = gt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) -- if (C.MEMS_context[x!`%`_uN.0] = mt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) -- if (C.TABLES_context[x!`%`_uN.0] = tt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Export_ok: `%|-%:%%`(context, export, name, externtype) @@ -7232,9 +7584,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) -- Externidx_ok: `%|-%:%`(C, externidx, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { @@ -7244,17 +7593,12 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7266,14 +7610,12 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7297,7 +7639,6 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) @@ -7324,11 +7665,13 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) - -- wf_context: `%`(C) -- wf_context: `%`(C') -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- (wf_uN: `%%`(32, iter))*{iter <- $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}))} + -- (wf_typeuse: `%`(iter))*{iter <- $tagsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_globaltype: `%`(iter))*{iter <- $globalsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_memtype: `%`(iter))*{iter <- $memsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_tabletype: `%`(iter))*{iter <- $tablesxt(xt_I*{xt_I <- `xt_I*`})} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -7370,81 +7713,272 @@ def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmadd : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmadd_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmadd_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_fmadd) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmin : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmin_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmin_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmin) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmax : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmax_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmax_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmax) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_idot : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_idot_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_idot_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_idot) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_iq15mulr : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_iq15mulr_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_iq15mulr_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_iq15mulr) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_u : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_u_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_u_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_trunc_u) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_s : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_s_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_s_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_trunc_s) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_swizzle : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_swizzle_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_swizzle_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_swizzle) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_laneselect : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_laneselect_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_laneselect_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_laneselect) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $s33_to_u32(s33 : s33) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibits_(N : N, iN : iN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibits__is_wf: `%%%`(N : N, iN : iN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibits__is_wf0{N : N, iN : iN, ret_val : bit*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibits_(N, iN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbits_(N : N, fN : fN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbits__is_wf: `%%%`(N : N, fN : fN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbits__is_wf0{N : N, fN : fN, ret_val : bit*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbits_(N, fN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibytes_(N : N, iN : iN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibytes__is_wf: `%%%`(N : N, iN : iN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibytes__is_wf0{N : N, iN : iN, ret_val : byte*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibytes_(N, iN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbytes_(N : N, fN : fN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbytes__is_wf: `%%%`(N : N, fN : fN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbytes__is_wf0{N : N, fN : fN, ret_val : byte*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbytes_(N, fN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $nbytes_(numtype : numtype, num_ : num_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation nbytes__is_wf: `%%%`(numtype : numtype, num_ : num_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule nbytes__is_wf0{numtype : numtype, num_ : num_, ret_val : byte*}: + `%%%`(numtype, num_, ret_val) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $nbytes_(numtype, num_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $vbytes_(vectype : vectype, vec_ : vec_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation vbytes__is_wf: `%%%`(vectype : vectype, vec_ : vec_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule vbytes__is_wf0{vectype : vectype, vec_ : vec_, ret_val : byte*}: + `%%%`(vectype, vec_, ret_val) + -- wf_uN: `%%`($vsize(vectype), vec_) + -- if (ret_val = $vbytes_(vectype, vec_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zbytes__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zbytes__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : byte*}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $zbytes_(storagetype, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cbytes__is_wf: `%%%`(Cnn : Cnn, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cbytes__is_wf0{Cnn : Cnn, lit_ : lit_, ret_val : byte*}: + `%%%`(Cnn, lit_, ret_val) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), lit_) + -- if (ret_val = $cbytes_(Cnn, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibits_(N : N, bit*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbits_(N : N, bit*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbits__is_wf: `%%%`(N : N, var_0 : bit*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbits__is_wf0{N : N, var_0 : bit*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_bit: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbits_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibytes_(N : N, byte*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbytes_(N : N, byte*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbytes__is_wf: `%%%`(N : N, var_0 : byte*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbytes__is_wf0{N : N, var_0 : byte*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbytes_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_nbytes_(numtype : numtype, byte*) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_nbytes__is_wf: `%%%`(numtype : numtype, var_0 : byte*, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_nbytes__is_wf0{numtype : numtype, var_0 : byte*, ret_val : num_}: + `%%%`(numtype, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_nbytes_(numtype, var_0)) + -- wf_num_: `%%`(numtype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_vbytes_(vectype : vectype, byte*) : vec_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_zbytes__is_wf: `%%%`(storagetype : storagetype, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_zbytes__is_wf0{storagetype : storagetype, var_0 : byte*, ret_val : lit_}: + `%%%`(storagetype, var_0, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_zbytes_(storagetype, var_0)) + -- wf_lit_: `%%`(storagetype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_cbytes__is_wf: `%%%`(Cnn : Cnn, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_cbytes__is_wf0{Cnn : Cnn, var_0 : byte*, ret_val : lit_}: + `%%%`(Cnn, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_cbytes_(Cnn, var_0)) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $signed_(N : N, nat : nat) : int ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7474,10 +8008,16 @@ def $sx(storagetype : storagetype) : sx? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zero_is_wf: `%%`(lanetype : lanetype, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zero_is_wf0{lanetype : lanetype, ret_val : lane_}: + `%%`(lanetype, ret_val) + -- if (ret_val = $zero(lanetype)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7506,7 +8046,6 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -7526,28 +8065,23 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN((i!`%`_uN.0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN((i!`%`_uN.0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7555,7 +8089,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7563,7 +8096,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7571,13 +8103,11 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, i_1!`%`_uN.0)) /\ (j_2 = $signed_(N, i_2!`%`_uN.0))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7605,19 +8135,15 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7668,116 +8194,277 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fabs__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fabs__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fabs_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fneg_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fneg__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fneg__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fneg_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsqrt_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsqrt__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsqrt__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fsqrt_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fceil_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fceil__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fceil__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fceil_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ffloor_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ffloor__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ffloor__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ffloor_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ftrunc_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ftrunc__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ftrunc__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ftrunc_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fnearest_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fnearest__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fnearest__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fnearest_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fadd_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fadd__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fadd__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fadd_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsub_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsub__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsub__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fsub_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmul_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmul__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmul__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmul_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fdiv_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fdiv__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fdiv__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fdiv_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_min__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_min__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_min_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_max__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_max__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_max_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fcopysign_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fcopysign__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fcopysign__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fcopysign_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $feq_(N : N, fN : fN, fN : fN) : u32 @@ -7799,9 +8486,31 @@ def $fge_(N : N, fN : fN, fN : fN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_madd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_madd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_madd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_nmadd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_nmadd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_nmadd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wrap__(M : M, N : N, iN : iN) : iN @@ -7820,26 +8529,69 @@ def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $demote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation demote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule demote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $demote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $promote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation promote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule promote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $promote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $convert__(M : M, N : N, sx : sx, iN : iN) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation convert___is_wf: `%%%%%`(M : M, N : N, sx : sx, iN : iN, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule convert___is_wf0{M : M, N : N, sx : sx, iN : iN, ret_val : fN}: + `%%%%%`(M, N, sx, iN, ret_val) + -- wf_uN: `%%`(M, iN) + -- if (ret_val = $convert__(M, N, sx, iN)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation reinterpret___is_wf: `%%%%`(numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule reinterpret___is_wf0{numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_}: + `%%%%`(numtype_1, numtype_2, num_, ret_val) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $reinterpret__(numtype_1, numtype_2, num_)) + -- wf_num_: `%%`(numtype_2, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) - -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lpacknum__is_wf: `%%%`(lanetype : lanetype, num_ : num_, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lpacknum__is_wf0{lanetype : lanetype, num_ : num_, ret_val : lane_}: + `%%%`(lanetype, num_, ret_val) + -- wf_num_: `%%`($lunpack(lanetype), num_) + -- if (ret_val = $lpacknum_(lanetype, num_)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7847,7 +8599,16 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(($cunpack(storagetype) : consttype <: storagetype), lit_) + -- if (ret_val = $cpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`(storagetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -7855,7 +8616,15 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lunpacknum__is_wf: `%%%`(lanetype : lanetype, lane_ : lane_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lunpacknum__is_wf0{lanetype : lanetype, lane_ : lane_, ret_val : num_}: + `%%%`(lanetype, lane_, ret_val) + -- wf_lane_: `%%`(lanetype, lane_) + -- if (ret_val = $lunpacknum_(lanetype, lane_)) + -- wf_num_: `%%`($lunpack(lanetype), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7863,103 +8632,103 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`(($cunpack((packtype : packtype <: storagetype)) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cunpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cunpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $cunpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`(($cunpack(storagetype) : consttype <: storagetype), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation unop__is_wf: `%%%%`(numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule unop__is_wf0{numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*}: + `%%%%`(numtype, unop_, num_, ret_val) + -- wf_unop_: `%%`(numtype, unop_) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $unop_(numtype, unop_, num_)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation binop__is_wf: `%%%%%`(numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule binop__is_wf0{numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*}: + `%%%%%`(numtype, binop_, num_, num__0, ret_val) + -- wf_binop_: `%%`(numtype, binop_) + -- wf_num_: `%%`(numtype, num_) + -- wf_num_: `%%`(numtype, num__0) + -- if (ret_val = $binop_(numtype, binop_, num_, num__0)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -7997,37 +8766,48 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) - -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) - -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cvtop___is_wf: `%%%%%`(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cvtop___is_wf0{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*}: + `%%%%%`(numtype_1, numtype_2, cvtop__, num_, ret_val) + -- wf_cvtop__: `%%%`(numtype_1, numtype_2, cvtop__) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $cvtop__(numtype_1, numtype_2, cvtop__, num_)) + -- (wf_num_: `%%`(numtype_2, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_) : lane_* +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lanes__is_wf: `%%%`(shape : shape, vec_ : vec_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lanes__is_wf0{shape : shape, vec_ : vec_, ret_val : lane_*}: + `%%%`(shape, vec_, ret_val) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(128, vec_) + -- if (ret_val = $lanes_(shape, vec_)) + -- (wf_lane_: `%%`($lanetype(shape), ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $inv_lanes_(shape : shape, lane_*) : vec_ @@ -8072,13 +8852,11 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else (if ($signed_(N, i!`%`_uN.0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[(i!`%`_uN.0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* @@ -8086,8 +8864,9 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* @@ -8095,6 +8874,9 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} @@ -8105,8 +8887,10 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8115,8 +8899,10 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8125,6 +8911,10 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8135,6 +8925,10 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8146,6 +8940,11 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c_3*` : lane_*} c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} @@ -8157,6 +8956,11 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c_3*` : lane_*} c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} @@ -8167,8 +8971,10 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8178,8 +8984,10 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8190,8 +8998,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- if ($isize(Inn) = $fsize(Fnn)) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size((Fnn : Fnn <: numtype)), $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_uN: `%%`(1, `%`_uN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8201,8 +9010,9 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ @@ -8210,8 +9020,9 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 @@ -8219,7 +9030,8 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter))*{iter <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) @@ -8231,8 +9043,10 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ @@ -8241,6 +9055,8 @@ def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : lane_*} c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8268,175 +9084,142 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] -- let{c : iN} c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) + -- wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] -- let{c : fN} c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) + -- wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- let{`c?` : iN?} c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} + -- (wf_uN: `%%`($size((Inn_2 : addrtype <: numtype)), iter))?{iter <- $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- let{`c?` : iN?} c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} + -- (wf_uN: `%%`($size((Inn_2 : addrtype <: numtype)), iter))?{iter <- $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- let{`c*` : fN*} c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} + -- (wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), iter))*{iter <- $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- let{`c*` : fN*} c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} + -- (wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), iter))*{iter <- $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lcvtop___is_wf: `%%%%%`(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lcvtop___is_wf0{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*}: + `%%%%%`(shape_1, shape_2, vcvtop__, lane_, ret_val) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_1, shape_2, vcvtop__) + -- wf_lane_: `%%`($lanetype(shape_1), lane_) + -- if (ret_val = $lcvtop__(shape_1, shape_2, vcvtop__, lane_)) + -- (wf_lane_: `%%`($lanetype(shape_2), ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ @@ -8446,7 +9229,10 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8455,7 +9241,10 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8464,7 +9253,11 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- wf_lane_: `%%`(Lnn_2, $zero(Lnn_2)) + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) @@ -8472,31 +9265,25 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ @@ -8507,6 +9294,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c'_2*` : iN*} c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} @@ -8517,8 +9309,6 @@ def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_uN.0*{i <- `i*`}) - -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ @@ -8527,32 +9317,31 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, iter))*{iter <- $concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1, i_2)))*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, iter))*{iter <- $concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1, i_2)))*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ @@ -8563,8 +9352,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c'_2*` : iN*} c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8576,22 +9368,10 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ @@ -8602,7 +9382,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -8962,7 +9744,16 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) - -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation packfield__is_wf: `%%%`(storagetype : storagetype, val : val, ret_val : fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packfield__is_wf0{storagetype : storagetype, val : val, ret_val : fieldval}: + `%%%`(storagetype, val, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_val: `%`(val) + -- if (ret_val = $packfield_(storagetype, val)) + -- wf_fieldval: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val @@ -8970,7 +9761,16 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation unpackfield__is_wf: `%%%%`(storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule unpackfield__is_wf0{storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val}: + `%%%%`(storagetype, var_0, fieldval, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $unpackfield_(storagetype, var_0, fieldval)) + -- wf_val: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -9042,11 +9842,29 @@ def $store(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $store{s : store, f : frame}(`%;%`_state(s, f)) = s +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation store_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $store(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $frame(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation frame_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $frame(state)) + -- wf_frame: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tagaddr(state : state) : tagaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9057,61 +9875,169 @@ def $moduleinst(state : state) : moduleinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation moduleinst_is_wf: `%%`(state : state, ret_val : moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_is_wf0{state : state, ret_val : moduleinst}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $moduleinst(state)) + -- wf_moduleinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst(state : state) : taginst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation taginst_is_wf: `%%`(state : state, ret_val : taginst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_is_wf0{state : state, ret_val : taginst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $taginst(state)) + -- (wf_taginst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst(state : state) : globalinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation globalinst_is_wf: `%%`(state : state, ret_val : globalinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_is_wf0{state : state, ret_val : globalinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $globalinst(state)) + -- (wf_globalinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst(state : state) : meminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation meminst_is_wf: `%%`(state : state, ret_val : meminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_is_wf0{state : state, ret_val : meminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $meminst(state)) + -- (wf_meminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst(state : state) : tableinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tableinst_is_wf: `%%`(state : state, ret_val : tableinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_is_wf0{state : state, ret_val : tableinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $tableinst(state)) + -- (wf_tableinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst(state : state) : funcinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation funcinst_is_wf: `%%`(state : state, ret_val : funcinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_is_wf0{state : state, ret_val : funcinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $funcinst(state)) + -- (wf_funcinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst(state : state) : datainst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation datainst_is_wf: `%%`(state : state, ret_val : datainst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_is_wf0{state : state, ret_val : datainst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $datainst(state)) + -- (wf_datainst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst(state : state) : eleminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation eleminst_is_wf: `%%`(state : state, ret_val : eleminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_is_wf0{state : state, ret_val : eleminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $eleminst(state)) + -- (wf_eleminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst(state : state) : structinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation structinst_is_wf: `%%`(state : state, ret_val : structinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_is_wf0{state : state, ret_val : structinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $structinst(state)) + -- (wf_structinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst(state : state) : arrayinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation arrayinst_is_wf: `%%`(state : state, ret_val : arrayinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_is_wf0{state : state, ret_val : arrayinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $arrayinst(state)) + -- (wf_arrayinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst(state : state) : exninst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation exninst_is_wf: `%%`(state : state, ret_val : exninst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_is_wf0{state : state, ret_val : exninst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $exninst(state)) + -- (wf_exninst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof{z : state}(z) = $frame(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fof_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fof_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $fof(state)) + -- wf_frame: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9122,123 +10048,337 @@ def $sof(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $sof{z : state}(z) = $store(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation sof_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule sof_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $sof(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tag_is_wf: `%%%`(state : state, tagidx : tagidx, ret_val : taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tag_is_wf0{state : state, tagidx : tagidx, ret_val : taginst}: + `%%%`(state, tagidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $tag(state, tagidx)) + -- wf_taginst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation global_is_wf: `%%%`(state : state, globalidx : globalidx, ret_val : globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule global_is_wf0{state : state, globalidx : globalidx, ret_val : globalinst}: + `%%%`(state, globalidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $global(state, globalidx)) + -- wf_globalinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation mem_is_wf: `%%%`(state : state, memidx : memidx, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule mem_is_wf0{state : state, memidx : memidx, ret_val : meminst}: + `%%%`(state, memidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $mem(state, memidx)) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation table_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule table_is_wf0{state : state, tableidx : tableidx, ret_val : tableinst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $table(state, tableidx)) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation func_is_wf: `%%%`(state : state, funcidx : funcidx, ret_val : funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule func_is_wf0{state : state, funcidx : funcidx, ret_val : funcinst}: + `%%%`(state, funcidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $func(state, funcidx)) + -- wf_funcinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation data_is_wf: `%%%`(state : state, dataidx : dataidx, ret_val : datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule data_is_wf0{state : state, dataidx : dataidx, ret_val : datainst}: + `%%%`(state, dataidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $data(state, dataidx)) + -- wf_datainst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation elem_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule elem_is_wf0{state : state, tableidx : tableidx, ret_val : eleminst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $elem(state, tableidx)) + -- wf_eleminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[x!`%`_uN.0] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation local_is_wf: `%%%`(state : state, localidx : localidx, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule local_is_wf0{state : state, localidx : localidx, ret_val : val?}: + `%%%`(state, localidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $local(state, localidx)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_uN.0] = ?(v)]) - -- wf_state: `%`(`%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_uN.0] = ?(v)])) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_local_is_wf: `%%%%`(state : state, localidx : localidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_local_is_wf0{state : state, localidx : localidx, val : val, ret_val : state}: + `%%%%`(state, localidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_local(state, localidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_global_is_wf: `%%%%`(state : state, globalidx : globalidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_global_is_wf0{state : state, globalidx : globalidx, val : val, ret_val : state}: + `%%%%`(state, globalidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_global(state, globalidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_table_is_wf: `%%%%%`(state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_table_is_wf0{state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state}: + `%%%%%`(state, tableidx, nat, ref, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_ref: `%`(ref) + -- if (ret_val = $with_table(state, tableidx, nat, ref)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_tableinst_is_wf: `%%%%`(state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_tableinst_is_wf0{state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state}: + `%%%%`(state, tableidx, tableinst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_tableinst: `%`(tableinst) + -- if (ret_val = $with_tableinst(state, tableidx, tableinst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{z : state, x : uN, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_mem_is_wf: `%%%%%%`(state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_mem_is_wf0{state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state}: + `%%%%%%`(state, memidx, nat, nat_0, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_mem(state, memidx, nat, nat_0, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_meminst_is_wf: `%%%%`(state : state, memidx : memidx, meminst : meminst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_meminst_is_wf0{state : state, memidx : memidx, meminst : meminst, ret_val : state}: + `%%%%`(state, memidx, meminst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- wf_meminst: `%`(meminst) + -- if (ret_val = $with_meminst(state, memidx, meminst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{z : state, x : uN, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_elem_is_wf: `%%%%`(state : state, elemidx : elemidx, var_0 : ref*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_elem_is_wf0{state : state, elemidx : elemidx, var_0 : ref*, ret_val : state}: + `%%%%`(state, elemidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, elemidx) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_elem(state, elemidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_data_is_wf: `%%%%`(state : state, dataidx : dataidx, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_data_is_wf0{state : state, dataidx : dataidx, var_0 : byte*, ret_val : state}: + `%%%%`(state, dataidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_data(state, dataidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_struct_is_wf: `%%%%%`(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_struct_is_wf0{state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, structaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_struct(state, structaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_array_is_wf: `%%%%%`(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_array_is_wf0{state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, arrayaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_array(state, arrayaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_structinst_is_wf: `%%%`(state : state, var_0 : structinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_structinst_is_wf0{state : state, var_0 : structinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_structinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_structinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_arrayinst_is_wf: `%%%`(state : state, var_0 : arrayinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_arrayinst_is_wf0{state : state, var_0 : arrayinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_arrayinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_arrayinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_exninst_is_wf: `%%%`(state : state, var_0 : exninst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_exninst_is_wf0{state : state, var_0 : exninst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_exninst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_exninst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst @@ -9249,10 +10389,19 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst -- if (i'!`%`_uN.0 = (|r'*{r' <- `r'*`}| + n)) -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} -- if ((i'!`%`_uN.0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) - -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growtable_is_wf: `%%%%`(tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growtable_is_wf0{tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst}: + `%%%%`(tableinst, nat, ref, ret_val) + -- wf_tableinst: `%`(tableinst) + -- wf_ref: `%`(ref) + -- if (ret_val = $growtable(tableinst, nat, ref)) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem(meminst : meminst, nat : nat) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9262,25 +10411,29 @@ def $growmem(meminst : meminst, nat : nat) : meminst -- if ((i'!`%`_uN.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} -- if (i'!`%`_uN.0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_meminst: `%`(meminst') -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growmem_is_wf: `%%%`(meminst : meminst, nat : nat, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growmem_is_wf0{meminst : meminst, nat : nat, ret_val : meminst}: + `%%%`(meminst, nat, ret_val) + -- wf_meminst: `%`(meminst) + -- if (ret_val = $growmem(meminst, nat)) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -9290,65 +10443,41 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.38 rule null{s : store}: `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.NULL_ADDR`_ref) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.33 rule i31{s : store, i : u31}: `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.I31_NUM`_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - -- wf_store: `%`(s) -- wf_exninst: `%`(exn) - -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.35 rule host{s : store, a : addr}: `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.HOST_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 rule extern{s : store, ref : ref}: `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.EXTERN`_ref(ref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) @@ -9357,9 +10486,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) -- wf_reftype: `%`(rt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -9370,31 +10496,22 @@ relation Val_ok: `%|-%:%`(store, val, valtype) rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) -- Num_ok: `%|-%:%`(s, num, nt) - -- wf_store: `%`(s) - -- wf_num: `%`(num) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) -- Vec_ok: `%|-%:%`(s, vec, vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Packval_ok: `%|-%:%`(store, packval, packtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, pt : packtype, c : iN}: `%|-%:%`(s, PACK_packval(pt, c), pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(PACK_packval(pt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) @@ -9402,16 +10519,11 @@ relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) rule val{s : store, val : val, t : valtype}: `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule packval{s : store, packval : packval, pt : packtype}: `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) -- Packval_ok: `%|-%:%`(s, packval, pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(packval) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -9422,44 +10534,32 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-111.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:113.1-115.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:117.1-119.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:121.1-123.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:125.1-128.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) -- wf_externtype: `%`(xt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -9469,290 +10569,249 @@ def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_valtype_is_wf: `%%%`(moduleinst : moduleinst, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_valtype_is_wf0{moduleinst : moduleinst, valtype : valtype, ret_val : valtype}: + `%%%`(moduleinst, valtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $inst_valtype(moduleinst, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_reftype_is_wf: `%%%`(moduleinst : moduleinst, reftype : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_reftype_is_wf0{moduleinst : moduleinst, reftype : reftype, ret_val : reftype}: + `%%%`(moduleinst, reftype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_reftype: `%`(reftype) + -- if (ret_val = $inst_reftype(moduleinst, reftype)) + -- wf_reftype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_globaltype_is_wf: `%%%`(moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_globaltype_is_wf0{moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype}: + `%%%`(moduleinst, globaltype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = $inst_globaltype(moduleinst, globaltype)) + -- wf_globaltype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_memtype_is_wf: `%%%`(moduleinst : moduleinst, memtype : memtype, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_memtype_is_wf0{moduleinst : moduleinst, memtype : memtype, ret_val : memtype}: + `%%%`(moduleinst, memtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $inst_memtype(moduleinst, memtype)) + -- wf_memtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_tabletype_is_wf: `%%%`(moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_tabletype_is_wf0{moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype}: + `%%%`(moduleinst, tabletype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = $inst_tabletype(moduleinst, tabletype)) + -- wf_tabletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) -- if (l!`%`_uN.0 = 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) -- if (l!`%`_uN.0 > 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])]) -- if (!($proj_num__0(i))!`%`_uN.0 < |l*{l <- `l*`}|) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) -- if (!($proj_num__0(i))!`%`_uN.0 >= |l*{l <- `l*`}|) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) -- otherwise - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) -- otherwise - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-handler`{n : n, `catch*` : catch*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.tee`{val : val, x : idx}: `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.i31`{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- otherwise - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instr: `%`(TRAP_instr) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) -- otherwise - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9760,224 +10819,150 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- otherwise -- if (ref_1 = ref_2) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- otherwise - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{sx : sx}: `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(`REF.I31_NUM`_instr(i)) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new`{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) -- otherwise - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`: `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{ref : ref}: `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) -- if (c <- $unop_(nt, unop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) -- if ($unop_(nt, unop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) -- if (c <- $binop_(nt, binop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) -- if ($binop_(nt, binop, c_1, c_2) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvunop_(V128_vectype, vvunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vunop_(sh, vunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) -- if ($vunop_(sh, vunop, c_1) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*}: @@ -9985,71 +10970,53 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)) -- if (!($proj_num__0(c))!`%`_uN.0 = $prod($inez_($jsizenn(Jnn), !($proj_lane__2(i)))!`%`_uN.0*{i <- `i*`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), i))*{i <- `i*`} - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} + -- (wf_uN: `%%`(32, $inez_($jsizenn(Jnn), !($proj_lane__2(i)))))*{i <- `i*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_1)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)} -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) @@ -10057,75 +11024,67 @@ relation Step_pure: `%~>%`(instr*, instr*) rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0])))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_uN: `%%`(32, $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0])))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_uN.0] = $lpacknum_(Lnn, c_2)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_uN.0] = $lpacknum_(Lnn, c_2)])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)} + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_2)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextunop__(sh_1, sh_2, vextunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation blocktype__is_wf: `%%%`(state : state, blocktype : blocktype, ret_val : instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule blocktype__is_wf0{state : state, blocktype : blocktype, ret_val : instrtype}: + `%%%`(state, blocktype, ret_val) + -- wf_state: `%`(state) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $blocktype_(state, blocktype)) + -- wf_instrtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) @@ -10133,16 +11092,14 @@ relation Step_read: `%~>%`(config, instr*) rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10151,15 +11108,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) -- otherwise - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: @@ -10167,29 +11122,23 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) -- otherwise - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, yy : typeuse}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: @@ -10198,8 +11147,7 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) @@ -10208,305 +11156,226 @@ relation Step_read: `%~>%`(config, instr*) rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) -- otherwise - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($local(z, x) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) + -- (wf_val: `%`(iter))?{iter <- $local(z, x)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `global.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($global(z, x).VALUE_globalinst = val) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) + -- wf_globalinst: `%`($global(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[!($proj_num__0(i))!`%`_uN.0] : ref <: instr)]) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) - -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tableinst: `%`($table(z, x)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) -- otherwise - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) -- otherwise -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) -- otherwise - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0] : ref <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) -- otherwise - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) rule `vload-splat-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: @@ -10524,8 +11392,9 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))^M{})) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))^M{})) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))) @@ -10533,8 +11402,7 @@ relation Step_read: `%~>%`(config, instr*) rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: @@ -10542,15 +11410,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: @@ -10559,8 +11427,10 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[j!`%`_uN.0] = mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, k)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[j!`%`_uN.0] = mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))) @@ -10569,116 +11439,75 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) - -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_meminst: `%`($mem(z, x)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) -- otherwise - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) -- otherwise - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL`_instr(ht)])) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])]) - -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -10686,16 +11515,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- otherwise - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -10703,37 +11529,31 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- otherwise - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- (wf_val: `%`(iter))?{iter <- $default_($unpack(zt))}*{zt <- `zt*`} + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_uN.0]) : val <: instr)]) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10741,33 +11561,28 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_val: `%`(iter))?{iter <- $default_($unpack(zt))} + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[!($proj_num__0(i))!`%`_uN.0 : n]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(i))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10775,107 +11590,81 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[!($proj_num__0(i))!`%`_uN.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_byte: `%`(iter))*{iter <- $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))} + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)}^n{c <- `c*`} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[!($proj_num__0(i))!`%`_uN.0]) : val <: instr)]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) -- otherwise - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: @@ -10883,17 +11672,6 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10902,81 +11680,53 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) -- otherwise -- if (ref = $elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0]) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10984,7 +11734,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: @@ -10992,15 +11741,8 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11012,23 +11754,18 @@ relation Step: `%~>%`(config, config) rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11036,8 +11773,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11045,8 +11780,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11054,8 +11787,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) @@ -11065,104 +11796,88 @@ relation Step: `%~>%`(config, config) -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_taginst: `%`($tag(z, x)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- wf_exninst: `%`({TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 rule `local.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:322.1-323.58 rule `global.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:340.1-342.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-354.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if (ti = $growtable($table(z, x), n, ref)) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_tableinst: `%`($growtable($table(z, x), n, ref)) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:356.1-357.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:417.1-418.51 rule `elem.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:501.1-504.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:506.1-510.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))} + -- wf_uN: `%%`(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-531.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:534.1-537.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + N) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-544.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: @@ -11170,28 +11885,23 @@ relation Step: `%~>%`(config, config) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, `%`_iN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0))} -- wf_uN: `%%`(N, `%`_uN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:553.1-556.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if (mi = $growmem($mem(z, x), n)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_meminst: `%`($growmem($mem(z, x), n)) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:558.1-559.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:619.1-620.51 rule `data.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:700.1-704.65 rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: @@ -11199,23 +11909,18 @@ relation Step: `%~>%`(config, config) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:721.1-722.55 rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:724.1-727.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:740.1-745.65 @@ -11223,30 +11928,24 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-786.66 rule `array.set-null`{z : state, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:788.1-790.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-795.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -11258,7 +11957,6 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: @@ -11266,8 +11964,8 @@ relation Steps: `%~>*%`(config, config) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11300,9 +11998,18 @@ def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) -- if (taginst = {TYPE tagtype}) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_taginst: `%`({TYPE tagtype}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctag_is_wf: `%%%`(store : store, tagtype : tagtype, ret_val : (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctag_is_wf0{store : store, tagtype : tagtype, ret_val : (store, tagaddr)}: + `%%%`(store, tagtype, ret_val) + -- wf_store: `%`(store) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = $alloctag(store, tagtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11314,6 +12021,22 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- let{ja : tagaddr, s_1 : store} (s_1, ja) = $alloctag(s, tagtype) -- let{s_2 : store, `ja'*` : tagaddr*} (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) + -- wf_store: `%`($alloctag(s, tagtype).0) + -- wf_store: `%`($alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation alloctags_is_wf: `%%%`(store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule alloctags_is_wf0{store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_typeuse: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $alloctags(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11321,9 +12044,19 @@ def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, gl ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) -- if (globalinst = {TYPE globaltype, VALUE val}) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocglobal_is_wf: `%%%%`(store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocglobal_is_wf0{store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)}: + `%%%%`(store, globaltype, val, ret_val) + -- wf_store: `%`(store) + -- wf_globaltype: `%`(globaltype) + -- wf_val: `%`(val) + -- if (ret_val = $allocglobal(store, globaltype, val)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11335,6 +12068,23 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- let{ga : globaladdr, s_1 : store} (s_1, ga) = $allocglobal(s, globaltype, val) -- let{s_2 : store, `ga'*` : globaladdr*} (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) + -- wf_store: `%`($allocglobal(s, globaltype, val).0) + -- wf_store: `%`($allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation allocglobals_is_wf: `%%%%`(store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule allocglobals_is_wf0{store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $allocglobals(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11342,9 +12092,18 @@ def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmem_is_wf: `%%%`(store : store, memtype : memtype, ret_val : (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmem_is_wf0{store : store, memtype : memtype, ret_val : (store, memaddr)}: + `%%%`(store, memtype, ret_val) + -- wf_store: `%`(store) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $allocmem(store, memtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11356,6 +12115,22 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- let{ma : memaddr, s_1 : store} (s_1, ma) = $allocmem(s, memtype) -- let{s_2 : store, `ma'*` : memaddr*} (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) + -- wf_store: `%`($allocmem(s, memtype).0) + -- wf_store: `%`($allocmems(s_1, memtype'*{memtype' <- `memtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation allocmems_is_wf: `%%%`(store : store, var_0 : memtype*, ret_val : (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule allocmems_is_wf0{store : store, var_0 : memtype*, ret_val : (store, memaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_memtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocmems(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11363,9 +12138,19 @@ def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, table ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctable_is_wf: `%%%%`(store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctable_is_wf0{store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)}: + `%%%%`(store, tabletype, ref, ret_val) + -- wf_store: `%`(store) + -- wf_tabletype: `%`(tabletype) + -- wf_ref: `%`(ref) + -- if (ret_val = $alloctable(store, tabletype, ref)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11377,6 +12162,23 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- let{ta : tableaddr, s_1 : store} (s_1, ta) = $alloctable(s, tabletype, ref) -- let{s_2 : store, `ta'*` : tableaddr*} (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) + -- wf_store: `%`($alloctable(s, tabletype, ref).0) + -- wf_store: `%`($alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation alloctables_is_wf: `%%%%`(store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule alloctables_is_wf0{store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_tabletype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $alloctables(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11384,9 +12186,19 @@ def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocfunc_is_wf: `%%%%%`(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocfunc_is_wf0{store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)}: + `%%%%%`(store, deftype, funccode, moduleinst, ret_val) + -- wf_store: `%`(store) + -- wf_funccode: `%`(funccode) + -- wf_moduleinst: `%`(moduleinst) + -- if (ret_val = $allocfunc(store, deftype, funccode, moduleinst)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11398,6 +12210,23 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- let{fa : funcaddr, s_1 : store} (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) -- let{s_2 : store, `fa'*` : funcaddr*} (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) + -- wf_store: `%`($allocfunc(s, dt, funccode, moduleinst).0) + -- wf_store: `%`($allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation allocfuncs_is_wf: `%%%%%`(store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule allocfuncs_is_wf0{store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)}: + `%%%%%`(store, var_0, var_1, var_2, ret_val) + -- wf_store: `%`(store) + -- (wf_funccode: `%`(var_1))*{var_1 <- var_1} + -- (wf_moduleinst: `%`(var_2))*{var_2 <- var_2} + -- if (ret_val = $allocfuncs(store, var_0, var_1, var_2)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11405,9 +12234,18 @@ def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocdata_is_wf: `%%%%`(store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocdata_is_wf0{store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)}: + `%%%%`(store, datatype, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocdata(store, datatype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11419,6 +12257,22 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) -- let{da : dataaddr, s_1 : store} (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) -- let{s_2 : store, `da'*` : dataaddr*} (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) + -- wf_store: `%`($allocdata(s, ok, b*{b <- `b*`}).0) + -- wf_store: `%`($allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation allocdatas_is_wf: `%%%%`(store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule allocdatas_is_wf0{store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocdatas(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11426,9 +12280,19 @@ def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocelem_is_wf: `%%%%`(store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocelem_is_wf0{store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)}: + `%%%%`(store, elemtype, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_reftype: `%`(elemtype) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocelem(store, elemtype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11440,31 +12304,63 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- let{ea : elemaddr, s_1 : store} (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- wf_store: `%`($allocelem(s, rt, ref*{ref <- `ref*`}).0) + -- wf_store: `%`($allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation allocelems_is_wf: `%%%%`(store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule allocelems_is_wf0{store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_reftype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocelems(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexport_is_wf: `%%%`(moduleinst : moduleinst, export : export, ret_val : exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexport_is_wf0{moduleinst : moduleinst, export : export, ret_val : exportinst}: + `%%%`(moduleinst, export, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_export: `%`(export) + -- if (ret_val = $allocexport(moduleinst, export)) + -- wf_exportinst: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexports_is_wf: `%%%`(moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexports_is_wf0{moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*}: + `%%%`(moduleinst, var_0, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- (wf_export: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocexports(moduleinst, var_0)) + -- (wf_exportinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11493,8 +12389,19 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_uN.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`($alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}).0) + -- (wf_typeuse: `%`($subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{tagtype <- `tagtype*`} + -- wf_store: `%`($allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`}).0) + -- (wf_globaltype: `%`($subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{globaltype <- `globaltype*`} + -- wf_store: `%`($allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}).0) + -- (wf_memtype: `%`($subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{memtype <- `memtype*`} + -- wf_store: `%`($alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`}).0) + -- (wf_tabletype: `%`($subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{tabletype <- `tabletype*`} + -- wf_store: `%`($allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}).0) + -- wf_store: `%`($allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).0) + -- (wf_reftype: `%`($subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{elemtype <- `elemtype*`} + -- wf_store: `%`($allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_uN.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{}).0) + -- (wf_exportinst: `%`(iter))*{iter <- $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})} -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} @@ -11506,16 +12413,36 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmodule_is_wf: `%%%%%%%`(store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmodule_is_wf0{store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)}: + `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- (wf_ref: `%`(var_2))*{var_2 <- var_2} + -- (wf_ref: `%`(var_3))*{var_3 <- var_3}*{var_3 <- var_3} + -- if (ret_val = $allocmodule(store, module, var_0, var_1, var_2, var_3)) + -- wf_store: `%`(ret_val.0) + -- wf_moduleinst: `%`(ret_val.1) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_(dataidx : dataidx, data : data) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, n : nat, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(y, x)) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation rundata__is_wf: `%%%`(dataidx : dataidx, data : data, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule rundata__is_wf0{dataidx : dataidx, data : data, ret_val : instr*}: + `%%%`(dataidx, data, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- wf_data: `%`(data) + -- if (ret_val = $rundata_(dataidx, data)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -11523,13 +12450,18 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`TABLE.INIT`_instr(y, x)) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation runelem__is_wf: `%%%`(elemidx : elemidx, elem : elem, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule runelem__is_wf0{elemidx : elemidx, elem : elem, ret_val : instr*}: + `%%%`(elemidx, elem, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- wf_elem: `%`(elem) + -- if (ret_val = $runelem_(elemidx, elem)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11542,8 +12474,24 @@ def $evalexprs(state : state, expr*) : (state, ref*) def $evalexprs{z : state, expr : instr*, `expr'*` : expr*, ref : ref, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) -- let{z'' : state, `ref'*` : ref*} (z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`}) - -- wf_ref: `%`(ref) -- wf_state: `%`(z') + -- wf_state: `%`($evalexprs(z', expr'*{expr' <- `expr'*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z', expr'*{expr' <- `expr'*`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation evalexprs_is_wf: `%%%`(state : state, var_0 : expr*, ret_val : (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule evalexprs_is_wf0{state : state, var_0 : expr*, ret_val : (state, ref*)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprs(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11557,6 +12505,25 @@ def $evalexprss(state : state, expr**) : (state, ref**) def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) -- let{`ref*` : ref*, z' : state} (z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`}) -- let{z'' : state, `ref'**` : ref**} (z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) + -- wf_state: `%`($evalexprs(z, expr*{expr <- `expr*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z, expr*{expr <- `expr*`}).1} + -- wf_state: `%`($evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}).0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation evalexprss_is_wf: `%%%`(state : state, var_0 : expr**, ret_val : (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule evalexprss_is_wf0{state : state, var_0 : expr**, ret_val : (state, ref**)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprss(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11572,12 +12539,30 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- let{s : store, f : frame} `%;%`_state(s, f) = z' -- let{s' : store, a : addr} (s', a) = $allocglobal(s, gt, val) -- let{z'' : state, `val'*` : val*} (z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}) - -- wf_val: `%`(val) -- wf_state: `%`(z') + -- wf_store: `%`($allocglobal(s, gt, val).0) + -- wf_state: `%`($evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}).0) + -- (wf_val: `%`(iter))*{iter <- $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}).1} -- wf_state: `%`(`%;%`_state(s, f)) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) } +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation evalglobals_is_wf: `%%%%`(state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule evalglobals_is_wf0{state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)}: + `%%%%`(state, var_0, var_1, ret_val) + -- wf_state: `%`(state) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_instr: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $evalglobals(state, var_0, var_1)) + -- wf_state: `%`(ret_val.0) + -- (wf_val: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11601,7 +12586,18 @@ def $instantiate(store : store, module : module, externaddr*) : config -- let{`instr_E*` : instr*} instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){}) -- let{`instr_S?` : instr?} instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} -- wf_state: `%`(z) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_state: `%`($evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}).0) + -- (wf_val: `%`(iter))*{iter <- $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}).1} + -- wf_state: `%`($evalexprs(z', expr_T*{expr_T <- `expr_T*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z', expr_T*{expr_T <- `expr_T*`}).1} + -- wf_state: `%`($evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`}).0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- $evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`}).1} + -- wf_store: `%`($allocmodule(s''', module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).0) + -- wf_moduleinst: `%`($allocmodule(s''', module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).1) + -- (wf_instr: `%`(iter))*{iter <- $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})} + -- (wf_instr: `%`(iter))*{iter <- $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])}^(i_D<|data*{data <- `data*`}|){} + -- (wf_instr: `%`(iter))*{iter <- $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})} + -- (wf_instr: `%`(iter))*{iter <- $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])}^(i_E<|elem*{elem <- `elem*`}|){} -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} @@ -11616,15 +12612,34 @@ def $instantiate(store : store, module : module, externaddr*) : config -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){} -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation instantiate_is_wf: `%%%%`(store : store, module : module, var_0 : externaddr*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule instantiate_is_wf0{store : store, module : module, var_0 : externaddr*, ret_val : config}: + `%%%%`(store, module, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- if (ret_val = $instantiate(store, module, var_0)) + -- wf_config: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation invoke_is_wf: `%%%%`(store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule invoke_is_wf0{store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config}: + `%%%%`(store, funcaddr, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_val: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $invoke(store, funcaddr, var_0)) + -- wf_config: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec syntax castop = (null?, null?) @@ -11643,6 +12658,14 @@ syntax nopt = u32* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec def $ieee_(N : N, rat : rat) : fNmag +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation ieee__is_wf: `%%%`(N : N, rat : rat, ret_val : fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule ieee__is_wf0{N : N, rat : rat, ret_val : fNmag}: + `%%%`(N, rat, ret_val) + -- if (ret_val = $ieee_(N, rat)) + -- wf_fNmag: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec syntax idctxt = { @@ -11687,11 +12710,23 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 def $concat_idctxt{I : idctxt, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation concat_idctxt_is_wf: `%%`(var_0 : idctxt*, ret_val : idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule concat_idctxt_is_wf0{var_0 : idctxt*, ret_val : idctxt}: + `%%`(var_0, ret_val) + -- (wf_idctxt: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $concat_idctxt(var_0)) + -- wf_idctxt: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -11709,7 +12744,17 @@ relation Idctxt_ok: `|-%:OK`(idctxt) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -- wf_idctxt: `%`(I) + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TYPES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TAGS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.GLOBALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.MEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TABLES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.FUNCS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.DATAS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.ELEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LOCALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LABELS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])}*{`field*` <- `field**`} -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -11824,6 +12869,19 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation importsd_is_wf: `%%`(var_0 : decl*, ret_val : import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule importsd_is_wf0{var_0 : decl*, ret_val : import*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $importsd(var_0)) + -- (wf_import: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 @@ -11837,6 +12895,19 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation tagsd_is_wf: `%%`(var_0 : decl*, ret_val : tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule tagsd_is_wf0{var_0 : decl*, ret_val : tag*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tagsd(var_0)) + -- (wf_tag: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 @@ -11850,6 +12921,19 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation globalsd_is_wf: `%%`(var_0 : decl*, ret_val : global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule globalsd_is_wf0{var_0 : decl*, ret_val : global*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsd(var_0)) + -- (wf_global: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 @@ -11863,6 +12947,19 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation memsd_is_wf: `%%`(var_0 : decl*, ret_val : mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule memsd_is_wf0{var_0 : decl*, ret_val : mem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsd(var_0)) + -- (wf_mem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 @@ -11876,6 +12973,19 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation tablesd_is_wf: `%%`(var_0 : decl*, ret_val : table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule tablesd_is_wf0{var_0 : decl*, ret_val : table*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesd(var_0)) + -- (wf_table: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 @@ -11889,6 +12999,19 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation funcsd_is_wf: `%%`(var_0 : decl*, ret_val : func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule funcsd_is_wf0{var_0 : decl*, ret_val : func*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $funcsd(var_0)) + -- (wf_func: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 @@ -11902,6 +13025,19 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation datasd_is_wf: `%%`(var_0 : decl*, ret_val : data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule datasd_is_wf0{var_0 : decl*, ret_val : data*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $datasd(var_0)) + -- (wf_data: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 @@ -11915,6 +13051,19 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation elemsd_is_wf: `%%`(var_0 : decl*, ret_val : elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule elemsd_is_wf0{var_0 : decl*, ret_val : elem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $elemsd(var_0)) + -- (wf_elem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 @@ -11928,6 +13077,19 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation startsd_is_wf: `%%`(var_0 : decl*, ret_val : start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule startsd_is_wf0{var_0 : decl*, ret_val : start*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $startsd(var_0)) + -- (wf_start: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 def $exportsd(decl*) : export* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 @@ -11938,11 +13100,25 @@ def $exportsd(decl*) : export* def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) } +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation exportsd_is_wf: `%%`(var_0 : decl*, ret_val : export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule exportsd_is_wf0{var_0 : decl*, ret_val : export*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $exportsd(var_0)) + -- (wf_export: `%`(ret_val))*{ret_val <- ret_val} +} + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered(decl*) : bool ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true -- if ($importsd(decl*{decl <- `decl*`}) = []) + -- (wf_import: `%`(iter))*{iter <- $importsd(decl*{decl <- `decl*`})} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) @@ -11966,7 +13142,6 @@ relation Context_ok: `|-%:OK`(context) -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt : reftype <: valtype)])))*{rt <- `rt*`} -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)])))?{rt' <- `rt'?`} -- (if (x!`%`_uN.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} - -- wf_context: `%`(C) -- wf_context: `%`(C_0) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -11980,23 +13155,16 @@ relation Localval_ok: `%|-%:%`(store, val?, localtype) rule set{s : store, val : val, t : valtype}: `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule unset{s : store}: `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, BOT_valtype)) - -- wf_store: `%`(s) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, BOT_valtype)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Datainst_ok: `%|-%:%`(store, datainst, datatype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{s : store, `b*` : byte*}: `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) - -- wf_store: `%`(s) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) @@ -12005,8 +13173,6 @@ relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12015,9 +13181,7 @@ relation Exportinst_ok: `%|-%:OK`(store, exportinst) rule _{s : store, nm : name, xa : externaddr, xt : externtype}: `%|-%:OK`(s, {NAME nm, ADDR xa}) -- Externaddr_ok: `%|-%:%`(s, xa, xt) - -- wf_store: `%`(s) -- wf_externtype: `%`(xt) - -- wf_exportinst: `%`({NAME nm, ADDR xa}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) @@ -12035,9 +13199,6 @@ relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) -- (Exportinst_ok: `%|-%:OK`(s, exportinst))*{exportinst <- `exportinst*`} -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} - -- wf_store: `%`(s) - -- wf_moduleinst: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}) - -- wf_context: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (wf_externtype: `%`(TAG_externtype(tagtype)))*{tagtype <- `tagtype*`} -- (wf_externtype: `%`(GLOBAL_externtype(globaltype)))*{globaltype <- `globaltype*`} @@ -12052,10 +13213,6 @@ relation Frame_ok: `%|-%:%`(store, frame, context) `%|-%:%`(s, {LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}, C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) - -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rec { @@ -12066,29 +13223,18 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) rule plain{s : store, C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 rule ref{s : store, C : context, ref : ref, rt : reftype}: `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_ref: `%`(ref) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) @@ -12098,30 +13244,19 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) -- Frame_ok: `%|-%:%`(s, f, C') -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) -- wf_context: `%`(C') - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRAP_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 @@ -12129,9 +13264,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 rule empty{s : store, C : context}: `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -12139,11 +13271,7 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_uN.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok2: `%;%|-%:%`(s, $with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -12155,10 +13283,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 @@ -12166,10 +13290,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 @@ -12178,9 +13298,6 @@ relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) } @@ -12190,8 +13307,6 @@ relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) rule _{s : store, jt : tagtype}: `%|-%:%`(s, {TYPE jt}, jt) -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) - -- wf_store: `%`(s) - -- wf_taginst: `%`({TYPE jt}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12201,10 +13316,8 @@ relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Meminst_ok: `%|-%:%`(store, meminst, memtype) @@ -12213,10 +13326,8 @@ relation Meminst_ok: `%|-%:%`(store, meminst, memtype) `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) - -- wf_store: `%`(s) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) @@ -12226,10 +13337,8 @@ relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- if (|ref*{ref <- `ref*`}| = n) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) @@ -12240,9 +13349,7 @@ relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- Func_ok: `%|-%:%`(C, func, dt') -- Deftype_sub: `%|-%<:%`(C, dt', dt) - -- wf_store: `%`(s) -- wf_context: `%`(C) - -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE (func : func <: funccode)}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12252,8 +13359,6 @@ relation Structinst_ok: `%|-%:OK`(store, structinst) `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} - -- wf_store: `%`(s) - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12263,8 +13368,6 @@ relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} - -- wf_store: `%`(s) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12275,8 +13378,6 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) -- if ((dt : deftype <: typeuse) = s.TAGS_store[ta].TYPE_taginst) -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} - -- wf_store: `%`(s) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12289,9 +13390,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(fv_1, s, fv_2) -- ImmutReachable: `%>>_%%`(fv_1, s, fv') -- ImmutReachable: `%>>_%%`(fv', s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) -- wf_fieldval: `%`(fv') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 @@ -12299,8 +13397,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) @@ -12308,21 +13404,15 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 rule `ref.exn`{a : addr, s : store, i : nat}: `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, (s.EXNS_store[a].FIELDS_exninst[i] : val <: fieldval)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 rule `ref.extern`{ref : ref, s : store}: `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(ref)) } ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12340,9 +13430,6 @@ relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: `~%>>_%%`(fv_1, s, fv_2) -- if $NotImmutReachable(fv_1, s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Store_ok: `|-%:OK`(store) @@ -12363,7 +13450,6 @@ relation Store_ok: `|-%:OK`(store) -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) - -- wf_store: `%`(s) -- (wf_typeuse: `%`(tagtype))*{tagtype <- `tagtype*`} -- (wf_globaltype: `%`(globaltype))*{globaltype <- `globaltype*`} -- (wf_memtype: `%`(memtype))*{memtype <- `memtype*`} @@ -12379,7 +13465,6 @@ relation Extend_taginst: `%<=%`(taginst, taginst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{jt : tagtype}: `%<=%`({TYPE jt}, {TYPE jt}) - -- wf_taginst: `%`({TYPE jt}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_globalinst: `%<=%`(globalinst, globalinst) @@ -12387,8 +13472,6 @@ relation Extend_globalinst: `%<=%`(globalinst, globalinst) rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_meminst: `%<=%`(meminst, meminst) @@ -12397,8 +13480,6 @@ relation Extend_meminst: `%<=%`(meminst, meminst) `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) -- if (n <= n') -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_tableinst: `%<=%`(tableinst, tableinst) @@ -12407,15 +13488,12 @@ relation Extend_tableinst: `%<=%`(tableinst, tableinst) `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) -- if (n <= n') -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_funcinst: `%<=%`(funcinst, funcinst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{dt : deftype, mm : moduleinst, fc : funccode}: `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) - -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_datainst: `%<=%`(datainst, datainst) @@ -12423,8 +13501,6 @@ relation Extend_datainst: `%<=%`(datainst, datainst) rule _{`b*` : byte*, `b'*` : byte*}: `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) - -- wf_datainst: `%`({BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_eleminst: `%<=%`(eleminst, eleminst) @@ -12432,8 +13508,6 @@ relation Extend_eleminst: `%<=%`(eleminst, eleminst) rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) - -- wf_eleminst: `%`({TYPE rt, REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_structinst: `%<=%`(structinst, structinst) @@ -12442,8 +13516,6 @@ relation Extend_structinst: `%<=%`(structinst, structinst) `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12453,8 +13525,6 @@ relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12462,7 +13532,6 @@ relation Extend_exninst: `%<=%`(exninst, exninst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{ta : tagaddr, `val*` : val*}: `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_store: `%<=%`(store, store) @@ -12479,8 +13548,6 @@ relation Extend_store: `%<=%`(store, store) -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} - -- wf_store: `%`(s) - -- wf_store: `%`(s') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation State_ok: `|-%:%`(state, context) @@ -12489,8 +13556,6 @@ relation State_ok: `|-%:%`(state, context) `|-%:%`(`%;%`_state(s, f), C) -- Store_ok: `|-%:OK`(s) -- Frame_ok: `%|-%:%`(s, f, C) - -- wf_context: `%`(C) - -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Config_ok: `|-%:OK`(config) @@ -12501,7 +13566,6 @@ relation Config_ok: `|-%:OK`(config) -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) -- (wf_valtype: `%`(t))*{t <- `t*`} - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat @@ -12562,17 +13626,11 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule `i32.add`{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 @@ -12580,8 +13638,6 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) } @@ -12591,27 +13647,26 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation instrdots_is_wf: `%`(ret_val : instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule instrdots_is_wf0{ret_val : instr*}: + `%`(ret_val) + -- if (ret_val = $instrdots) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec syntax label = | `LABEL_%{%}`(n : n, `instr*` : instr*) @@ -12637,6 +13692,15 @@ relation wf_callframe: `%`(callframe) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation allocX_is_wf(syntax X, syntax Y): `%%%%`(store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule allocX_is_wf0{syntax X, syntax Y, store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)}: + `%%%%`(store, X_0, Y_0, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocX(syntax X, syntax Y, store, X_0, Y_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rec { @@ -12648,6 +13712,21 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) -- let{s_2 : store, `a'*` : addr*} (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) + -- wf_store: `%`($allocX(syntax X, syntax Y, s, X, Y).0) + -- wf_store: `%`($allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}).0) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 +relation allocXs_is_wf(syntax X, syntax Y): `%%%%`(store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 + rule allocXs_is_wf0{syntax X, syntax Y, store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocXs(syntax X, syntax Y, store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec diff --git a/spectec/test-middlend/specification.exp/05-totalize.il b/spectec/test-middlend/specification.exp/05-totalize.il index fd5fdff77a..f5a391a8fb 100644 --- a/spectec/test-middlend/specification.exp/05-totalize.il +++ b/spectec/test-middlend/specification.exp/05-totalize.il @@ -314,19 +314,40 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fzero_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fzero_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fzero(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fnat_is_wf: `%%%`(N : N, nat : nat, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fnat_is_wf0{N : N, nat : nat, ret_val : fN}: + `%%%`(N, nat, ret_val) + -- if (ret_val = $fnat(N, nat)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fone_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fone_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fone(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -377,23 +398,27 @@ def $utf8(char*) : byte* def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation utf8_is_wf: `%%`(var_0 : char*, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule utf8_is_wf0{var_0 : char*, ret_val : byte*}: + `%%`(var_0, ret_val) + -- (wf_char: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $utf8(var_0)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -582,10 +607,18 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_opt_is_wf: `%%`(var_0 : free?, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_opt_is_wf0{var_0 : free?, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))?{var_0 <- var_0} + -- if (ret_val = $free_opt(var_0)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -593,70 +626,162 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation free_list_is_wf: `%%`(var_0 : free*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule free_list_is_wf0{var_0 : free*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_list(var_0)) + -- wf_free: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_typeidx_is_wf: `%%`(typeidx : typeidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_typeidx_is_wf0{typeidx : typeidx, ret_val : free}: + `%%`(typeidx, ret_val) + -- wf_uN: `%%`(32, typeidx) + -- if (ret_val = $free_typeidx(typeidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_funcidx_is_wf: `%%`(funcidx : funcidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_funcidx_is_wf0{funcidx : funcidx, ret_val : free}: + `%%`(funcidx, ret_val) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $free_funcidx(funcidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_globalidx_is_wf: `%%`(globalidx : globalidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_globalidx_is_wf0{globalidx : globalidx, ret_val : free}: + `%%`(globalidx, ret_val) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $free_globalidx(globalidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tableidx_is_wf: `%%`(tableidx : tableidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tableidx_is_wf0{tableidx : tableidx, ret_val : free}: + `%%`(tableidx, ret_val) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $free_tableidx(tableidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_memidx_is_wf: `%%`(memidx : memidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_memidx_is_wf0{memidx : memidx, ret_val : free}: + `%%`(memidx, ret_val) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $free_memidx(memidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_elemidx_is_wf: `%%`(elemidx : elemidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_elemidx_is_wf0{elemidx : elemidx, ret_val : free}: + `%%`(elemidx, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- if (ret_val = $free_elemidx(elemidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_dataidx_is_wf: `%%`(dataidx : dataidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_dataidx_is_wf0{dataidx : dataidx, ret_val : free}: + `%%`(dataidx, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $free_dataidx(dataidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_localidx_is_wf: `%%`(localidx : localidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_localidx_is_wf0{localidx : localidx, ret_val : free}: + `%%`(localidx, ret_val) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $free_localidx(localidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_labelidx_is_wf: `%%`(labelidx : labelidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_labelidx_is_wf0{labelidx : labelidx, ret_val : free}: + `%%`(labelidx, ret_val) + -- wf_uN: `%%`(32, labelidx) + -- if (ret_val = $free_labelidx(labelidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx(tagidx : tagidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx{tagidx : uN}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tagidx_is_wf: `%%`(tagidx : tagidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tagidx_is_wf0{tagidx : tagidx, ret_val : free}: + `%%`(tagidx, ret_val) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $free_tagidx(tagidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -671,6 +796,15 @@ def $free_externidx(externidx : externidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_externidx_is_wf: `%%`(externidx : externidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_externidx_is_wf0{externidx : externidx, ret_val : free}: + `%%`(externidx, ret_val) + -- wf_externidx: `%`(externidx) + -- if (ret_val = $free_externidx(externidx)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = | NULL @@ -1035,73 +1169,157 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ANYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ANYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ANYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EQREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EQREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EQREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation I31REF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule I31REF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $I31REF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation STRUCTREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule STRUCTREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $STRUCTREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ARRAYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ARRAYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ARRAYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation FUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule FUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $FUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLFUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLFUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLFUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1410,7 +1628,15 @@ def $unpack(storagetype : storagetype) : valtype def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype - -- wf_valtype: `%`(I32_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation unpack_is_wf: `%%`(storagetype : storagetype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule unpack_is_wf0{storagetype : storagetype, ret_val : valtype}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $unpack(storagetype)) + -- wf_valtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1448,10 +1674,18 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation diffrt_is_wf: `%%%`(reftype : reftype, reftype_0 : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule diffrt_is_wf0{reftype : reftype, reftype_0 : reftype, ret_val : reftype}: + `%%%`(reftype, reftype_0, ret_val) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + -- if (ret_val = $diffrt(reftype, reftype_0)) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype? @@ -1489,6 +1723,19 @@ def $globalsxt(externtype*) : globaltype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation globalsxt_is_wf: `%%`(var_0 : externtype*, ret_val : globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule globalsxt_is_wf0{var_0 : externtype*, ret_val : globaltype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsxt(var_0)) + -- (wf_globaltype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 @@ -1502,6 +1749,19 @@ def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation memsxt_is_wf: `%%`(var_0 : externtype*, ret_val : memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule memsxt_is_wf0{var_0 : externtype*, ret_val : memtype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsxt(var_0)) + -- (wf_memtype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 @@ -1515,6 +1775,19 @@ def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation tablesxt_is_wf: `%%`(var_0 : externtype*, ret_val : tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule tablesxt_is_wf0{var_0 : externtype*, ret_val : tabletype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesxt(var_0)) + -- (wf_tabletype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 @@ -1541,6 +1814,21 @@ def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation subst_typevar_is_wf: `%%%%`(typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule subst_typevar_is_wf0{typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typevar, var_0, var_1, ret_val) + -- wf_typevar: `%`(typevar) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($subst_typevar(typevar, var_0, var_1))) + -- wf_typeuse: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.73 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 @@ -1550,11 +1838,27 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})) -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_typevar: `%`(_IDX_typevar(x)) + -- (wf_typevar: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).0} + -- (wf_typeuse: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).1} def $minus_recs{x0 : typevar*, x1 : typeuse*}(x0, x1) = ?() -- otherwise } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation minus_recs_is_wf: `%%%`(var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule minus_recs_is_wf0{var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)}: + `%%%`(var_0, var_1, ret_val) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($minus_recs(var_0, var_1))) + -- (wf_typevar: `%`(iter))*{iter <- ret_val.0} + -- (wf_typeuse: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1593,7 +1897,6 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1605,7 +1908,6 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1618,31 +1920,28 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- (wf_typevar: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).0} + -- (wf_typeuse: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).1} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype @@ -1650,6 +1949,98 @@ def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation subst_typeuse_is_wf: `%%%%`(typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule subst_typeuse_is_wf0{typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typeuse, var_0, var_1, ret_val) + -- wf_typeuse: `%`(typeuse) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_typeuse(typeuse, var_0, var_1)) + -- wf_typeuse: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation subst_heaptype_is_wf: `%%%%`(heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule subst_heaptype_is_wf0{heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype}: + `%%%%`(heaptype, var_0, var_1, ret_val) + -- wf_heaptype: `%`(heaptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_heaptype(heaptype, var_0, var_1)) + -- wf_heaptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation subst_reftype_is_wf: `%%%%`(reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule subst_reftype_is_wf0{reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype}: + `%%%%`(reftype, var_0, var_1, ret_val) + -- wf_reftype: `%`(reftype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_reftype(reftype, var_0, var_1)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation subst_valtype_is_wf: `%%%%`(valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule subst_valtype_is_wf0{valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype}: + `%%%%`(valtype, var_0, var_1, ret_val) + -- wf_valtype: `%`(valtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_valtype(valtype, var_0, var_1)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation subst_storagetype_is_wf: `%%%%`(storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule subst_storagetype_is_wf0{storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype}: + `%%%%`(storagetype, var_0, var_1, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_storagetype(storagetype, var_0, var_1)) + -- wf_storagetype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation subst_fieldtype_is_wf: `%%%%`(fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule subst_fieldtype_is_wf0{fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype}: + `%%%%`(fieldtype, var_0, var_1, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_fieldtype(fieldtype, var_0, var_1)) + -- wf_fieldtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation subst_comptype_is_wf: `%%%%`(comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule subst_comptype_is_wf0{comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype}: + `%%%%`(comptype, var_0, var_1, ret_val) + -- wf_comptype: `%`(comptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_comptype(comptype, var_0, var_1)) + -- wf_comptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation subst_subtype_is_wf: `%%%%`(subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule subst_subtype_is_wf0{subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype}: + `%%%%`(subtype, var_0, var_1, ret_val) + -- wf_subtype: `%`(subtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_subtype(subtype, var_0, var_1)) + -- wf_subtype: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1664,97 +2055,204 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_globaltype_is_wf: `%%%%`(globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_globaltype_is_wf0{globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype}: + `%%%%`(globaltype, var_0, var_1, ret_val) + -- wf_globaltype: `%`(globaltype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_globaltype(globaltype, var_0, var_1)) + -- wf_globaltype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_memtype_is_wf: `%%%%`(memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_memtype_is_wf0{memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype}: + `%%%%`(memtype, var_0, var_1, ret_val) + -- wf_memtype: `%`(memtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_memtype(memtype, var_0, var_1)) + -- wf_memtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_tabletype_is_wf: `%%%%`(tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_tabletype_is_wf0{tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype}: + `%%%%`(tabletype, var_0, var_1, ret_val) + -- wf_tabletype: `%`(tabletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_tabletype(tabletype, var_0, var_1)) + -- wf_tabletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_externtype_is_wf: `%%%%`(externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_externtype_is_wf0{externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype}: + `%%%%`(externtype, var_0, var_1, ret_val) + -- wf_externtype: `%`(externtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_externtype(externtype, var_0, var_1)) + -- wf_externtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_moduletype_is_wf: `%%%%`(moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_moduletype_is_wf0{moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype}: + `%%%%`(moduletype, var_0, var_1, ret_val) + -- wf_moduletype: `%`(moduletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_moduletype(moduletype, var_0, var_1)) + -- wf_moduletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, n : nat, `tu*` : typeuse*, i : nat}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_moduletype_is_wf: `%%`(moduletype : moduletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_moduletype_is_wf0{moduletype : moduletype, ret_val : free}: + `%%`(moduletype, ret_val) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $free_moduletype(moduletype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax num_ = | mk_num__0(Inn : Inn, var_x : iN) @@ -2477,7 +3208,15 @@ relation wf_shape: `%`(shape) def $dim(shape : shape) : dim ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) - -- wf_dim: `%`(`%`_dim(N)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation dim_is_wf: `%%`(shape : shape, ret_val : dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_is_wf0{shape : shape, ret_val : dim}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $dim(shape)) + -- wf_dim: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $lanetype(shape : shape) : lanetype @@ -4221,22 +4960,45 @@ syntax expr = instr* def $memarg0 : memarg ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} - -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation memarg0_is_wf: `%`(ret_val : memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg0_is_wf0{ret_val : memarg}: + `%`(ret_val) + -- if (ret_val = $memarg0) + -- wf_memarg: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const(consttype : consttype, lit_ : lit_) : instr ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{numtype : numtype, c : num_}((numtype : numtype <: consttype), mk_lit__0_lit_(numtype, c)) = CONST_instr(numtype, c) - -- wf_instr: `%`(CONST_instr(numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{vectype : vectype, c : uN}((vectype : vectype <: consttype), mk_lit__1_lit_(vectype, c)) = VCONST_instr(vectype, c) - -- wf_instr: `%`(VCONST_instr(vectype, c)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation const_is_wf: `%%%`(consttype : consttype, lit_ : lit_, ret_val : instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule const_is_wf0{consttype : consttype, lit_ : lit_, ret_val : instr}: + `%%%`(consttype, lit_, ret_val) + -- wf_lit_: `%%`((consttype : consttype <: storagetype), lit_) + -- if (ret_val = $const(consttype, lit_)) + -- wf_instr: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_shape_is_wf: `%%`(shape : shape, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_shape_is_wf0{shape : shape, ret_val : free}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $free_shape(shape)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4244,6 +5006,15 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype{typeidx : uN}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_blocktype_is_wf: `%%`(blocktype : blocktype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_blocktype_is_wf0{blocktype : blocktype, ret_val : free}: + `%%`(blocktype, ret_val) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $free_blocktype(blocktype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4255,6 +5026,15 @@ def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch{labelidx : uN}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_catch_is_wf: `%%`(catch : catch, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_catch_is_wf0{catch : catch, ret_val : free}: + `%%`(catch, ret_val) + -- wf_catch: `%`(catch) + -- if (ret_val = $free_catch(catch)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { @@ -4266,7 +5046,6 @@ def $shift_labelidxs(labelidx*) : labelidx* def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.91 def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4276,13 +5055,10 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-435.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.92 @@ -4313,7 +5089,6 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.66 @@ -4324,7 +5099,6 @@ def $free_instr(instr : instr) : free def $free_instr{tagidx : uN}(THROW_instr(tagidx)) = $free_tagidx(tagidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.32 def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-469.99 def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.63 @@ -4387,13 +5161,10 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.34 def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.38 def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.29 def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 @@ -4402,10 +5173,8 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.30 def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.61 def $free_instr{typeidx : uN}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.69 @@ -4430,7 +5199,6 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.32 def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.61 def $free_instr{typeidx : uN}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.55 @@ -4441,10 +5209,8 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.41 def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 def $free_instr{localidx : uN}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 @@ -4501,6 +5267,30 @@ def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:589.1-590.47 def $free_block{`instr*` : instr*}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] -- let{free : free} free = $free_list($free_instr(instr)*{instr <- `instr*`}) + -- wf_free: `%`($free_list($free_instr(instr)*{instr <- `instr*`})) + -- (wf_free: `%`($free_instr(instr)))*{instr <- `instr*`} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation free_instr_is_wf: `%%`(instr : instr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule free_instr_is_wf0{instr : instr, ret_val : free}: + `%%`(instr, ret_val) + -- wf_instr: `%`(instr) + -- if (ret_val = $free_instr(instr)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation free_block_is_wf: `%%`(var_0 : instr*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule free_block_is_wf0{var_0 : instr*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_block(var_0)) + -- wf_free: `%`(ret_val) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4508,6 +5298,15 @@ def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_expr_is_wf: `%%`(expr : expr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_expr_is_wf0{expr : expr, ret_val : free}: + `%%`(expr, ret_val) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- if (ret_val = $free_expr(expr)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = | ACTIVE(tableidx : tableidx, expr : expr) @@ -4698,85 +5497,216 @@ def $free_type(type : type) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_type_is_wf: `%%`(type : type, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_type_is_wf0{type : type, ret_val : free}: + `%%`(type, ret_val) + -- if (ret_val = $free_type(type)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag(tag : tag) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_tag_is_wf: `%%`(tag : tag, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_tag_is_wf0{tag : tag, ret_val : free}: + `%%`(tag, ret_val) + -- wf_tag: `%`(tag) + -- if (ret_val = $free_tag(tag)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global(global : global) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_global_is_wf: `%%`(global : global, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_global_is_wf0{global : global, ret_val : free}: + `%%`(global, ret_val) + -- wf_global: `%`(global) + -- if (ret_val = $free_global(global)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem(mem : mem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_mem_is_wf: `%%`(mem : mem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_mem_is_wf0{mem : mem, ret_val : free}: + `%%`(mem, ret_val) + -- wf_mem: `%`(mem) + -- if (ret_val = $free_mem(mem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table(table : table) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_table_is_wf: `%%`(table : table, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_table_is_wf0{table : table, ret_val : free}: + `%%`(table, ret_val) + -- wf_table: `%`(table) + -- if (ret_val = $free_table(table)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local(local : local) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_local_is_wf: `%%`(local : local, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_local_is_wf0{local : local, ret_val : free}: + `%%`(local, ret_val) + -- wf_local: `%`(local) + -- if (ret_val = $free_local(local)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func(func : func) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_func_is_wf: `%%`(func : func, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_func_is_wf0{func : func, ret_val : free}: + `%%`(func, ret_val) + -- wf_func: `%`(func) + -- if (ret_val = $free_func(func)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(datamode : datamode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_datamode_is_wf: `%%`(datamode : datamode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_datamode_is_wf0{datamode : datamode, ret_val : free}: + `%%`(datamode, ret_val) + -- wf_datamode: `%`(datamode) + -- if (ret_val = $free_datamode(datamode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_data_is_wf: `%%`(data : data, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_data_is_wf0{data : data, ret_val : free}: + `%%`(data, ret_val) + -- wf_data: `%`(data) + -- if (ret_val = $free_data(data)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(elemmode : elemmode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elemmode_is_wf: `%%`(elemmode : elemmode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elemmode_is_wf0{elemmode : elemmode, ret_val : free}: + `%%`(elemmode, ret_val) + -- wf_elemmode: `%`(elemmode) + -- if (ret_val = $free_elemmode(elemmode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elem_is_wf: `%%`(elem : elem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elem_is_wf0{elem : elem, ret_val : free}: + `%%`(elem, ret_val) + -- wf_elem: `%`(elem) + -- if (ret_val = $free_elem(elem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start(start : start) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_start_is_wf: `%%`(start : start, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_start_is_wf0{start : start, ret_val : free}: + `%%`(start, ret_val) + -- wf_start: `%`(start) + -- if (ret_val = $free_start(start)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import(import : import) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_import_is_wf: `%%`(import : import, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_import_is_wf0{import : import, ret_val : free}: + `%%`(import, ret_val) + -- wf_import: `%`(import) + -- if (ret_val = $free_import(import)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export(export : export) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_export_is_wf: `%%`(export : export, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_export_is_wf0{export : export, ret_val : free}: + `%%`(export, ret_val) + -- wf_export: `%`(export) + -- if (ret_val = $free_export(export)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module(module : module) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_module_is_wf: `%%`(module : module, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_module_is_wf0{module : module, ret_val : free}: + `%%`(module, ret_val) + -- wf_module: `%`(module) + -- if (ret_val = $free_module(module)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $funcidx_module(module : module) : funcidx* ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec @@ -4862,6 +5792,21 @@ def $with_locals(context : context, localidx*, localtype*) : context? ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation with_locals_is_wf: `%%%%`(context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule with_locals_is_wf0{context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context}: + `%%%%`(context, var_0, var_1, ret_val) + -- wf_context: `%`(context) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_localtype: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($with_locals(context, var_0, var_1))) + -- wf_context: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(deftype*) : deftype* ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 @@ -4877,6 +5822,16 @@ def $clos_valtype(context : context, valtype : valtype) : valtype def $clos_valtype{C : context, t : valtype}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_valtype_is_wf: `%%%`(context : context, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_valtype_is_wf0{context : context, valtype : valtype, ret_val : valtype}: + `%%%`(context, valtype, ret_val) + -- wf_context: `%`(context) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $clos_valtype(context, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -4895,25 +5850,43 @@ def $clos_externtype(context : context, externtype : externtype) : externtype def $clos_externtype{C : context, xt : externtype}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_externtype_is_wf: `%%%`(context : context, externtype : externtype, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_externtype_is_wf0{context : context, externtype : externtype, ret_val : externtype}: + `%%%`(context, externtype, ret_val) + -- wf_context: `%`(context) + -- wf_externtype: `%`(externtype) + -- if (ret_val = $clos_externtype(context, externtype)) + -- wf_externtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_moduletype_is_wf: `%%%`(context : context, moduletype : moduletype, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_moduletype_is_wf0{context : context, moduletype : moduletype, ret_val : moduletype}: + `%%%`(context, moduletype, ret_val) + -- wf_context: `%`(context) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $clos_moduletype(context, moduletype)) + -- wf_moduletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypenat = @@ -4924,21 +5897,18 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) @@ -4946,6 +5916,7 @@ relation Expand: `%~~%`(deftype, comptype) rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: `%~~%`(deftype, comptype) -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- wf_subtype: `%`($unrolldt(deftype)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -4953,7 +5924,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, nat : nat) : bool @@ -4971,6 +5941,16 @@ def $unrollht_(context : context, heaptype : heaptype) : subtype ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $unrollht_{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation unrollht__is_wf: `%%%`(context : context, heaptype : heaptype, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule unrollht__is_wf0{context : context, heaptype : heaptype, ret_val : subtype}: + `%%%`(context, heaptype, ret_val) + -- wf_context: `%`(context) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = $unrollht_(context, heaptype)) + -- wf_subtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -4979,20 +5959,15 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 rule bot{C : context}: `%|-%:OK`(C, BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) @@ -5000,8 +5975,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) @@ -5009,26 +5982,20 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) -- Numtype_ok: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) -- Vectype_ok: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) @@ -5036,22 +6003,17 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_uN.0] = dt) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (C.RECS_context[i] = st) - -- wf_context: `%`(C) -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) @@ -5059,8 +6021,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) @@ -5068,8 +6028,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) @@ -5077,14 +6035,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) @@ -5092,23 +6047,17 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) @@ -5121,8 +6070,7 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) -- (if ($unrollht_(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_subtype: `%`($unrollht_(C, (typeuse : typeuse <: heaptype))))*{typeuse <- `typeuse*`} -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 @@ -5130,16 +6078,12 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 rule empty{C : context, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypenat(i)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypenat(i)) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypenat((i + 1))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) @@ -5149,7 +6093,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}}) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 @@ -5158,26 +6101,17 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) @@ -5185,14 +6119,13 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) - -- wf_context: `%`(C) + -- wf_subtype: `%`($unrolldt(deftype_1)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 @@ -5200,8 +6133,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: @@ -5209,118 +6140,79 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) -- wf_heaptype: `%`(heaptype') ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 rule `rec-array`{C : context, i : n, `final?` : final?, fieldtype : fieldtype}: `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 rule `rec-func`{C : context, i : n, `final?` : final?, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 @@ -5328,9 +6220,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) -- wf_heaptype: `%`(ANY_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5339,9 +6228,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) -- wf_heaptype: `%`(FUNC_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5350,9 +6236,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) -- wf_heaptype: `%`(EXN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5361,18 +6244,12 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) -- wf_heaptype: `%`(EXTERN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) @@ -5380,17 +6257,11 @@ relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) @@ -5398,28 +6269,20 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) @@ -5427,9 +6290,6 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) @@ -5437,15 +6297,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) @@ -5453,18 +6309,12 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) } ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5473,8 +6323,6 @@ relation Localtype_ok: `%|-%:OK`(context, localtype) rule _{C : context, init : init, t : valtype}: `%|-%:OK`(C, `%%`_localtype(init, t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) @@ -5484,9 +6332,7 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (if (C.LOCALS_context[x!`%`_uN.0] = lct))*{lct <- `lct*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand_use: `%~~_%%`(typeuse, context, comptype) @@ -5494,16 +6340,11 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) -- Expand: `%~~%`(deftype, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5526,9 +6367,7 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- (if ($unrolldt(C.TYPES_context[x!`%`_uN.0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`($unrolldt(C.TYPES_context[x!`%`_uN.0])))*{x <- `x*`} -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5539,17 +6378,12 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) } @@ -5561,8 +6395,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) @@ -5571,8 +6403,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) `%|-%:OK`(C, typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5581,8 +6411,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Memtype_ok: `%|-%:OK`(context, memtype) @@ -5590,8 +6418,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) @@ -5600,8 +6426,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Externtype_ok: `%|-%:OK`(context, externtype) @@ -5609,37 +6433,27 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5651,10 +6465,8 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) -- (if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_uN: `%%`(32, iter))*{iter <- $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5664,17 +6476,11 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) -- if (n_1 >= n_2) -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule eps{C : context, n_1 : n, n_2 : n}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) -- if (n_1 >= n_2) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) @@ -5683,7 +6489,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) @@ -5691,18 +6496,12 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) @@ -5710,9 +6509,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) @@ -5722,9 +6518,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) @@ -5732,41 +6525,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) - -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) @@ -5774,17 +6552,11 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5794,8 +6566,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_catch(x, l)) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5803,50 +6573,49 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val?? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0))))) - -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))))) - -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(?(VCONST_val(Vnn, `%`_vec_(0)))) - -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) - -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) def $default_{x0 : valtype}(x0) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation default__is_wf: `%%`(valtype : valtype, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule default__is_wf0{valtype : valtype, ret_val : val?}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if (ret_val = !($default_(valtype))) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) -- if (!($default_(t)) =/= ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) @@ -5855,7 +6624,6 @@ relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (m < (2 ^ $size((at : addrtype <: numtype)))) - -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec def $is_packtype(storagetype : storagetype) : bool @@ -5870,33 +6638,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: @@ -5904,18 +6661,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) - -- wf_context: `%`(C) -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5925,8 +6677,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5937,9 +6687,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5950,18 +6697,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: @@ -5969,8 +6710,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]))*{l <- `l*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_uN.0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 @@ -5978,17 +6717,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -5998,10 +6731,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -6011,27 +6741,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- wf_reftype: `%`($diffrt(rt_1, rt_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 @@ -6040,9 +6762,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6052,9 +6771,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 @@ -6064,10 +6780,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6078,10 +6791,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6094,10 +6804,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6108,9 +6815,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6118,9 +6822,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 @@ -6129,8 +6830,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6139,48 +6838,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule `ref.null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule `ref.func`{C : context, x : idx, dt : deftype}: `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) -- if (x <- C.REFS_context) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule `ref.i31`{C : context}: `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule `ref.is_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule `ref.as_non_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule `ref.eq`{C : context}: `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule `ref.test`{C : context, rt : reftype, rt' : reftype}: @@ -6188,9 +6869,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.TEST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: @@ -6198,24 +6876,15 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.CAST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule `i31.get`{C : context, sx : sx}: `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 @@ -6223,9 +6892,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 @@ -6234,9 +6901,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) @@ -6245,9 +6909,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(?(MUT_mut), zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) @@ -6255,9 +6916,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 @@ -6265,18 +6923,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 @@ -6284,9 +6937,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_uN.0], rt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 @@ -6295,9 +6945,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 @@ -6305,34 +6953,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule `array.set`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule `array.len`{C : context}: `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.LEN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule `array.fill`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 @@ -6341,9 +6977,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) @@ -6352,9 +6985,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_uN.0] : reftype <: storagetype), zt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 @@ -6363,115 +6993,77 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule `local.get`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule `local.set`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule `local.tee`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule `global.set`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 @@ -6480,9 +7072,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.TABLES_context[x_1!`%`_uN.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_uN.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) @@ -6492,46 +7081,31 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_uN.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule `elem.drop`{C : context, x : idx, rt : reftype}: `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.ELEMS_context[x!`%`_uN.0] = rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 @@ -6539,9 +7113,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x_1!`%`_uN.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_uN.0] = `%%PAGE`_memtype(at_2, lim_2)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) @@ -6550,27 +7121,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 rule `data.drop`{C : context, x : idx}: `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.DATAS_context[x!`%`_uN.0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 @@ -6578,9 +7140,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 @@ -6588,9 +7147,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 @@ -6598,9 +7154,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 @@ -6608,9 +7161,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 @@ -6618,9 +7168,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 @@ -6628,9 +7175,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 @@ -6638,9 +7182,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 @@ -6649,9 +7190,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 @@ -6659,9 +7197,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 @@ -6670,217 +7205,131 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if (i!`%`_uN.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim(sh!`%`_bshape.0)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -6888,10 +7337,7 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_uN.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -6903,9 +7349,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 @@ -6913,9 +7356,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -6925,8 +7365,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6935,88 +7373,62 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) -- if (!($default_(t)) = ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.null`{C : context, ht : heaptype}: `%|-%CONST`(C, `REF.NULL`_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.i31`{C : context}: `%|-%CONST`(C, `REF.I31`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.func`{C : context, x : idx}: `%|-%CONST`(C, `REF.FUNC`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new_default`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_default`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_fixed`{C : context, x : idx, n : n}: `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `any.convert_extern`{C : context}: `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `extern.convert_any`{C : context}: `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `global.get`{C : context, x : idx, t : valtype}: `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7024,8 +7436,6 @@ relation Instr_const: `%|-%CONST`(context, instr) `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) @@ -7036,8 +7446,6 @@ relation Expr_const: `%|-%CONST`(context, expr) rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) @@ -7046,9 +7454,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) `%|-%:%CONST`(C, expr, t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) @@ -7058,7 +7463,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) -- if (x!`%`_uN.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_oktypeidx: `%`(OK_oktypeidx(x)) @@ -7068,8 +7472,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Global_ok: `%|-%:%`(context, global, globaltype) @@ -7079,8 +7481,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7089,8 +7489,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Table_ok: `%|-%:%`(context, table, tabletype) @@ -7100,8 +7498,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7110,17 +7506,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) @@ -7130,8 +7520,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) @@ -7140,16 +7528,12 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7158,24 +7542,16 @@ relation Data_ok: `%|-%:%`(context, data, datatype) rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: @@ -7183,9 +7559,6 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7196,8 +7569,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Start_ok: `%|-%:OK`(context, start) @@ -7205,8 +7576,6 @@ relation Start_ok: `%|-%:OK`(context, start) rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7215,8 +7584,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Externidx_ok: `%|-%:%`(context, externidx, externtype) @@ -7224,41 +7591,26 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) -- if (C.TAGS_context[x!`%`_uN.0] = jt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) -- if (C.GLOBALS_context[x!`%`_uN.0] = gt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) -- if (C.MEMS_context[x!`%`_uN.0] = mt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) -- if (C.TABLES_context[x!`%`_uN.0] = tt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Export_ok: `%|-%:%%`(context, export, name, externtype) @@ -7266,9 +7618,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) -- Externidx_ok: `%|-%:%`(C, externidx, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { @@ -7278,17 +7627,12 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7300,14 +7644,12 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7331,7 +7673,6 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) @@ -7358,11 +7699,13 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) - -- wf_context: `%`(C) -- wf_context: `%`(C') -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- (wf_uN: `%%`(32, iter))*{iter <- $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}))} + -- (wf_typeuse: `%`(iter))*{iter <- $tagsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_globaltype: `%`(iter))*{iter <- $globalsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_memtype: `%`(iter))*{iter <- $memsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_tabletype: `%`(iter))*{iter <- $tablesxt(xt_I*{xt_I <- `xt_I*`})} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -7404,81 +7747,272 @@ def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmadd : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmadd_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmadd_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_fmadd) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmin : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmin_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmin_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmin) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmax : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmax_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmax_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmax) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_idot : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_idot_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_idot_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_idot) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_iq15mulr : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_iq15mulr_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_iq15mulr_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_iq15mulr) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_u : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_u_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_u_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_trunc_u) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_s : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_s_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_s_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_trunc_s) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_swizzle : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_swizzle_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_swizzle_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_swizzle) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_laneselect : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_laneselect_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_laneselect_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_laneselect) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $s33_to_u32(s33 : s33) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibits_(N : N, iN : iN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibits__is_wf: `%%%`(N : N, iN : iN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibits__is_wf0{N : N, iN : iN, ret_val : bit*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibits_(N, iN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbits_(N : N, fN : fN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbits__is_wf: `%%%`(N : N, fN : fN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbits__is_wf0{N : N, fN : fN, ret_val : bit*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbits_(N, fN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibytes_(N : N, iN : iN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibytes__is_wf: `%%%`(N : N, iN : iN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibytes__is_wf0{N : N, iN : iN, ret_val : byte*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibytes_(N, iN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbytes_(N : N, fN : fN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbytes__is_wf: `%%%`(N : N, fN : fN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbytes__is_wf0{N : N, fN : fN, ret_val : byte*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbytes_(N, fN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $nbytes_(numtype : numtype, num_ : num_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation nbytes__is_wf: `%%%`(numtype : numtype, num_ : num_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule nbytes__is_wf0{numtype : numtype, num_ : num_, ret_val : byte*}: + `%%%`(numtype, num_, ret_val) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $nbytes_(numtype, num_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $vbytes_(vectype : vectype, vec_ : vec_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation vbytes__is_wf: `%%%`(vectype : vectype, vec_ : vec_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule vbytes__is_wf0{vectype : vectype, vec_ : vec_, ret_val : byte*}: + `%%%`(vectype, vec_, ret_val) + -- wf_uN: `%%`($vsize(vectype), vec_) + -- if (ret_val = $vbytes_(vectype, vec_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zbytes__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zbytes__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : byte*}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $zbytes_(storagetype, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cbytes__is_wf: `%%%`(Cnn : Cnn, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cbytes__is_wf0{Cnn : Cnn, lit_ : lit_, ret_val : byte*}: + `%%%`(Cnn, lit_, ret_val) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), lit_) + -- if (ret_val = $cbytes_(Cnn, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibits_(N : N, bit*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbits_(N : N, bit*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbits__is_wf: `%%%`(N : N, var_0 : bit*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbits__is_wf0{N : N, var_0 : bit*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_bit: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbits_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibytes_(N : N, byte*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbytes_(N : N, byte*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbytes__is_wf: `%%%`(N : N, var_0 : byte*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbytes__is_wf0{N : N, var_0 : byte*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbytes_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_nbytes_(numtype : numtype, byte*) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_nbytes__is_wf: `%%%`(numtype : numtype, var_0 : byte*, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_nbytes__is_wf0{numtype : numtype, var_0 : byte*, ret_val : num_}: + `%%%`(numtype, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_nbytes_(numtype, var_0)) + -- wf_num_: `%%`(numtype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_vbytes_(vectype : vectype, byte*) : vec_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_zbytes__is_wf: `%%%`(storagetype : storagetype, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_zbytes__is_wf0{storagetype : storagetype, var_0 : byte*, ret_val : lit_}: + `%%%`(storagetype, var_0, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_zbytes_(storagetype, var_0)) + -- wf_lit_: `%%`(storagetype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_cbytes__is_wf: `%%%`(Cnn : Cnn, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_cbytes__is_wf0{Cnn : Cnn, var_0 : byte*, ret_val : lit_}: + `%%%`(Cnn, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_cbytes_(Cnn, var_0)) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $signed_(N : N, nat : nat) : int ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7510,10 +8044,16 @@ def $sx(storagetype : storagetype) : sx?? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zero_is_wf: `%%`(lanetype : lanetype, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zero_is_wf0{lanetype : lanetype, ret_val : lane_}: + `%%`(lanetype, ret_val) + -- if (ret_val = $zero(lanetype)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7542,7 +8082,6 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -7562,28 +8101,23 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN((i!`%`_uN.0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN((i!`%`_uN.0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7591,7 +8125,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7599,7 +8132,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7607,13 +8139,11 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, i_1!`%`_uN.0)) /\ (j_2 = $signed_(N, i_2!`%`_uN.0))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7641,19 +8171,15 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7704,116 +8230,277 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fabs__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fabs__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fabs_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fneg_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fneg__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fneg__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fneg_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsqrt_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsqrt__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsqrt__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fsqrt_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fceil_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fceil__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fceil__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fceil_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ffloor_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ffloor__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ffloor__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ffloor_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ftrunc_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ftrunc__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ftrunc__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ftrunc_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fnearest_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fnearest__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fnearest__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fnearest_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fadd_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fadd__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fadd__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fadd_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsub_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsub__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsub__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fsub_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmul_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmul__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmul__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmul_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fdiv_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fdiv__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fdiv__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fdiv_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_min__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_min__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_min_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_max__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_max__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_max_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fcopysign_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fcopysign__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fcopysign__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fcopysign_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $feq_(N : N, fN : fN, fN : fN) : u32 @@ -7835,9 +8522,31 @@ def $fge_(N : N, fN : fN, fN : fN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_madd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_madd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_madd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_nmadd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_nmadd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_nmadd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wrap__(M : M, N : N, iN : iN) : iN @@ -7856,26 +8565,69 @@ def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $demote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation demote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule demote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $demote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $promote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation promote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule promote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $promote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $convert__(M : M, N : N, sx : sx, iN : iN) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation convert___is_wf: `%%%%%`(M : M, N : N, sx : sx, iN : iN, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule convert___is_wf0{M : M, N : N, sx : sx, iN : iN, ret_val : fN}: + `%%%%%`(M, N, sx, iN, ret_val) + -- wf_uN: `%%`(M, iN) + -- if (ret_val = $convert__(M, N, sx, iN)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation reinterpret___is_wf: `%%%%`(numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule reinterpret___is_wf0{numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_}: + `%%%%`(numtype_1, numtype_2, num_, ret_val) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $reinterpret__(numtype_1, numtype_2, num_)) + -- wf_num_: `%%`(numtype_2, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) - -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lpacknum__is_wf: `%%%`(lanetype : lanetype, num_ : num_, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lpacknum__is_wf0{lanetype : lanetype, num_ : num_, ret_val : lane_}: + `%%%`(lanetype, num_, ret_val) + -- wf_num_: `%%`($lunpack(lanetype), num_) + -- if (ret_val = $lpacknum_(lanetype, num_)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7883,7 +8635,16 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`((!($cunpack(storagetype)) : consttype <: storagetype), lit_) + -- if (ret_val = $cpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`(storagetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -7891,7 +8652,15 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lunpacknum__is_wf: `%%%`(lanetype : lanetype, lane_ : lane_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lunpacknum__is_wf0{lanetype : lanetype, lane_ : lane_, ret_val : num_}: + `%%%`(lanetype, lane_, ret_val) + -- wf_lane_: `%%`(lanetype, lane_) + -- if (ret_val = $lunpacknum_(lanetype, lane_)) + -- wf_num_: `%%`($lunpack(lanetype), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7899,103 +8668,103 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cunpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cunpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $cunpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`((!($cunpack(storagetype)) : consttype <: storagetype), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation unop__is_wf: `%%%%`(numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule unop__is_wf0{numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*}: + `%%%%`(numtype, unop_, num_, ret_val) + -- wf_unop_: `%%`(numtype, unop_) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $unop_(numtype, unop_, num_)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation binop__is_wf: `%%%%%`(numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule binop__is_wf0{numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*}: + `%%%%%`(numtype, binop_, num_, num__0, ret_val) + -- wf_binop_: `%%`(numtype, binop_) + -- wf_num_: `%%`(numtype, num_) + -- wf_num_: `%%`(numtype, num__0) + -- if (ret_val = $binop_(numtype, binop_, num_, num__0)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -8033,37 +8802,48 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) - -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) - -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cvtop___is_wf: `%%%%%`(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cvtop___is_wf0{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*}: + `%%%%%`(numtype_1, numtype_2, cvtop__, num_, ret_val) + -- wf_cvtop__: `%%%`(numtype_1, numtype_2, cvtop__) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $cvtop__(numtype_1, numtype_2, cvtop__, num_)) + -- (wf_num_: `%%`(numtype_2, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_) : lane_* +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lanes__is_wf: `%%%`(shape : shape, vec_ : vec_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lanes__is_wf0{shape : shape, vec_ : vec_, ret_val : lane_*}: + `%%%`(shape, vec_, ret_val) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(128, vec_) + -- if (ret_val = $lanes_(shape, vec_)) + -- (wf_lane_: `%%`($lanetype(shape), ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $inv_lanes_(shape : shape, lane_*) : vec_ @@ -8108,13 +8888,11 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else (if ($signed_(N, i!`%`_uN.0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[(i!`%`_uN.0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* @@ -8122,8 +8900,9 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* @@ -8131,6 +8910,9 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} @@ -8141,8 +8923,10 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8151,8 +8935,10 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8161,6 +8947,10 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8171,6 +8961,10 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8182,6 +8976,11 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c_3*` : lane_*} c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} @@ -8193,6 +8992,11 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c_3*` : lane_*} c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} @@ -8203,8 +9007,10 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8214,8 +9020,10 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8226,8 +9034,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- if ($isize(Inn) = $fsize(Fnn)) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size((Fnn : Fnn <: numtype)), $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_uN: `%%`(1, `%`_uN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8237,8 +9046,9 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ @@ -8246,8 +9056,9 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 @@ -8255,7 +9066,8 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter))*{iter <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) @@ -8267,8 +9079,10 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ @@ -8277,6 +9091,8 @@ def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : lane_*} c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8304,175 +9120,142 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] -- let{c : iN} c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) + -- wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] -- let{c : fN} c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) + -- wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- let{`c?` : iN?} c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} + -- (wf_uN: `%%`($size((Inn_2 : addrtype <: numtype)), iter))?{iter <- $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- let{`c?` : iN?} c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} + -- (wf_uN: `%%`($size((Inn_2 : addrtype <: numtype)), iter))?{iter <- $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- let{`c*` : fN*} c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} + -- (wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), iter))*{iter <- $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- let{`c*` : fN*} c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} + -- (wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), iter))*{iter <- $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lcvtop___is_wf: `%%%%%`(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lcvtop___is_wf0{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*}: + `%%%%%`(shape_1, shape_2, vcvtop__, lane_, ret_val) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_1, shape_2, vcvtop__) + -- wf_lane_: `%%`($lanetype(shape_1), lane_) + -- if (ret_val = $lcvtop__(shape_1, shape_2, vcvtop__, lane_)) + -- (wf_lane_: `%%`($lanetype(shape_2), ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ @@ -8482,7 +9265,10 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8491,7 +9277,10 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8500,7 +9289,11 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- wf_lane_: `%%`(Lnn_2, $zero(Lnn_2)) + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) @@ -8508,31 +9301,25 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ @@ -8543,6 +9330,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c'_2*` : iN*} c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} @@ -8553,8 +9345,6 @@ def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_uN.0*{i <- `i*`}) - -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ @@ -8563,32 +9353,31 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, iter))*{iter <- $concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1, i_2)))*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, iter))*{iter <- $concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1, i_2)))*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ @@ -8599,8 +9388,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c'_2*` : iN*} c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8612,22 +9404,10 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ @@ -8638,7 +9418,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -8998,20 +9780,38 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval? def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = ?((val : val <: fieldval)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation packfield__is_wf: `%%%`(storagetype : storagetype, val : val, ret_val : fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packfield__is_wf0{storagetype : storagetype, val : val, ret_val : fieldval}: + `%%%`(storagetype, val, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_val: `%`(val) + -- if (ret_val = !($packfield_(storagetype, val))) + -- wf_fieldval: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = ?(val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation unpackfield__is_wf: `%%%%`(storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule unpackfield__is_wf0{storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val}: + `%%%%`(storagetype, var_0, fieldval, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = !($unpackfield_(storagetype, var_0, fieldval))) + -- wf_val: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -9082,11 +9882,29 @@ def $store(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $store{s : store, f : frame}(`%;%`_state(s, f)) = s +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation store_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $store(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $frame(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation frame_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $frame(state)) + -- wf_frame: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tagaddr(state : state) : tagaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9097,61 +9915,169 @@ def $moduleinst(state : state) : moduleinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation moduleinst_is_wf: `%%`(state : state, ret_val : moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_is_wf0{state : state, ret_val : moduleinst}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $moduleinst(state)) + -- wf_moduleinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst(state : state) : taginst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation taginst_is_wf: `%%`(state : state, ret_val : taginst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_is_wf0{state : state, ret_val : taginst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $taginst(state)) + -- (wf_taginst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst(state : state) : globalinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation globalinst_is_wf: `%%`(state : state, ret_val : globalinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_is_wf0{state : state, ret_val : globalinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $globalinst(state)) + -- (wf_globalinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst(state : state) : meminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation meminst_is_wf: `%%`(state : state, ret_val : meminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_is_wf0{state : state, ret_val : meminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $meminst(state)) + -- (wf_meminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst(state : state) : tableinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tableinst_is_wf: `%%`(state : state, ret_val : tableinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_is_wf0{state : state, ret_val : tableinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $tableinst(state)) + -- (wf_tableinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst(state : state) : funcinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation funcinst_is_wf: `%%`(state : state, ret_val : funcinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_is_wf0{state : state, ret_val : funcinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $funcinst(state)) + -- (wf_funcinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst(state : state) : datainst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation datainst_is_wf: `%%`(state : state, ret_val : datainst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_is_wf0{state : state, ret_val : datainst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $datainst(state)) + -- (wf_datainst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst(state : state) : eleminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation eleminst_is_wf: `%%`(state : state, ret_val : eleminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_is_wf0{state : state, ret_val : eleminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $eleminst(state)) + -- (wf_eleminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst(state : state) : structinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation structinst_is_wf: `%%`(state : state, ret_val : structinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_is_wf0{state : state, ret_val : structinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $structinst(state)) + -- (wf_structinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst(state : state) : arrayinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation arrayinst_is_wf: `%%`(state : state, ret_val : arrayinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_is_wf0{state : state, ret_val : arrayinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $arrayinst(state)) + -- (wf_arrayinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst(state : state) : exninst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation exninst_is_wf: `%%`(state : state, ret_val : exninst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_is_wf0{state : state, ret_val : exninst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $exninst(state)) + -- (wf_exninst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof{z : state}(z) = $frame(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fof_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fof_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $fof(state)) + -- wf_frame: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9162,123 +10088,337 @@ def $sof(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $sof{z : state}(z) = $store(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation sof_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule sof_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $sof(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tag_is_wf: `%%%`(state : state, tagidx : tagidx, ret_val : taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tag_is_wf0{state : state, tagidx : tagidx, ret_val : taginst}: + `%%%`(state, tagidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $tag(state, tagidx)) + -- wf_taginst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation global_is_wf: `%%%`(state : state, globalidx : globalidx, ret_val : globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule global_is_wf0{state : state, globalidx : globalidx, ret_val : globalinst}: + `%%%`(state, globalidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $global(state, globalidx)) + -- wf_globalinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation mem_is_wf: `%%%`(state : state, memidx : memidx, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule mem_is_wf0{state : state, memidx : memidx, ret_val : meminst}: + `%%%`(state, memidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $mem(state, memidx)) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation table_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule table_is_wf0{state : state, tableidx : tableidx, ret_val : tableinst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $table(state, tableidx)) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation func_is_wf: `%%%`(state : state, funcidx : funcidx, ret_val : funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule func_is_wf0{state : state, funcidx : funcidx, ret_val : funcinst}: + `%%%`(state, funcidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $func(state, funcidx)) + -- wf_funcinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation data_is_wf: `%%%`(state : state, dataidx : dataidx, ret_val : datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule data_is_wf0{state : state, dataidx : dataidx, ret_val : datainst}: + `%%%`(state, dataidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $data(state, dataidx)) + -- wf_datainst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation elem_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule elem_is_wf0{state : state, tableidx : tableidx, ret_val : eleminst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $elem(state, tableidx)) + -- wf_eleminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[x!`%`_uN.0] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation local_is_wf: `%%%`(state : state, localidx : localidx, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule local_is_wf0{state : state, localidx : localidx, ret_val : val?}: + `%%%`(state, localidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $local(state, localidx)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_uN.0] = ?(v)]) - -- wf_state: `%`(`%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_uN.0] = ?(v)])) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_local_is_wf: `%%%%`(state : state, localidx : localidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_local_is_wf0{state : state, localidx : localidx, val : val, ret_val : state}: + `%%%%`(state, localidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_local(state, localidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_global_is_wf: `%%%%`(state : state, globalidx : globalidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_global_is_wf0{state : state, globalidx : globalidx, val : val, ret_val : state}: + `%%%%`(state, globalidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_global(state, globalidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_table_is_wf: `%%%%%`(state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_table_is_wf0{state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state}: + `%%%%%`(state, tableidx, nat, ref, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_ref: `%`(ref) + -- if (ret_val = $with_table(state, tableidx, nat, ref)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_tableinst_is_wf: `%%%%`(state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_tableinst_is_wf0{state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state}: + `%%%%`(state, tableidx, tableinst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_tableinst: `%`(tableinst) + -- if (ret_val = $with_tableinst(state, tableidx, tableinst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{z : state, x : uN, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_mem_is_wf: `%%%%%%`(state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_mem_is_wf0{state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state}: + `%%%%%%`(state, memidx, nat, nat_0, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_mem(state, memidx, nat, nat_0, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_meminst_is_wf: `%%%%`(state : state, memidx : memidx, meminst : meminst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_meminst_is_wf0{state : state, memidx : memidx, meminst : meminst, ret_val : state}: + `%%%%`(state, memidx, meminst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- wf_meminst: `%`(meminst) + -- if (ret_val = $with_meminst(state, memidx, meminst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{z : state, x : uN, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_elem_is_wf: `%%%%`(state : state, elemidx : elemidx, var_0 : ref*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_elem_is_wf0{state : state, elemidx : elemidx, var_0 : ref*, ret_val : state}: + `%%%%`(state, elemidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, elemidx) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_elem(state, elemidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_data_is_wf: `%%%%`(state : state, dataidx : dataidx, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_data_is_wf0{state : state, dataidx : dataidx, var_0 : byte*, ret_val : state}: + `%%%%`(state, dataidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_data(state, dataidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_struct_is_wf: `%%%%%`(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_struct_is_wf0{state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, structaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_struct(state, structaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_array_is_wf: `%%%%%`(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_array_is_wf0{state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, arrayaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_array(state, arrayaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_structinst_is_wf: `%%%`(state : state, var_0 : structinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_structinst_is_wf0{state : state, var_0 : structinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_structinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_structinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_arrayinst_is_wf: `%%%`(state : state, var_0 : arrayinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_arrayinst_is_wf0{state : state, var_0 : arrayinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_arrayinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_arrayinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_exninst_is_wf: `%%%`(state : state, var_0 : exninst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_exninst_is_wf0{state : state, var_0 : exninst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_exninst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_exninst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? @@ -9289,12 +10429,21 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- if (i'!`%`_uN.0 = (|r'*{r' <- `r'*`}| + n)) -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} -- if ((i'!`%`_uN.0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) - -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growtable_is_wf: `%%%%`(tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growtable_is_wf0{tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst}: + `%%%%`(tableinst, nat, ref, ret_val) + -- wf_tableinst: `%`(tableinst) + -- wf_ref: `%`(ref) + -- if (ret_val = !($growtable(tableinst, nat, ref))) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9304,27 +10453,31 @@ def $growmem(meminst : meminst, nat : nat) : meminst? -- if ((i'!`%`_uN.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} -- if (i'!`%`_uN.0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_meminst: `%`(meminst') -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growmem_is_wf: `%%%`(meminst : meminst, nat : nat, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growmem_is_wf0{meminst : meminst, nat : nat, ret_val : meminst}: + `%%%`(meminst, nat, ret_val) + -- wf_meminst: `%`(meminst) + -- if (ret_val = !($growmem(meminst, nat))) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -9334,65 +10487,41 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.38 rule null{s : store}: `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.NULL_ADDR`_ref) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.33 rule i31{s : store, i : u31}: `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.I31_NUM`_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - -- wf_store: `%`(s) -- wf_exninst: `%`(exn) - -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.35 rule host{s : store, a : addr}: `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.HOST_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 rule extern{s : store, ref : ref}: `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.EXTERN`_ref(ref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) @@ -9401,9 +10530,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) -- wf_reftype: `%`(rt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -9414,31 +10540,22 @@ relation Val_ok: `%|-%:%`(store, val, valtype) rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) -- Num_ok: `%|-%:%`(s, num, nt) - -- wf_store: `%`(s) - -- wf_num: `%`(num) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) -- Vec_ok: `%|-%:%`(s, vec, vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Packval_ok: `%|-%:%`(store, packval, packtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, pt : packtype, c : iN}: `%|-%:%`(s, PACK_packval(pt, c), pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(PACK_packval(pt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) @@ -9446,16 +10563,11 @@ relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) rule val{s : store, val : val, t : valtype}: `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule packval{s : store, packval : packval, pt : packtype}: `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) -- Packval_ok: `%|-%:%`(s, packval, pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(packval) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -9466,44 +10578,32 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-111.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:113.1-115.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:117.1-119.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:121.1-123.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:125.1-128.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) -- wf_externtype: `%`(xt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -9513,290 +10613,249 @@ def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_valtype_is_wf: `%%%`(moduleinst : moduleinst, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_valtype_is_wf0{moduleinst : moduleinst, valtype : valtype, ret_val : valtype}: + `%%%`(moduleinst, valtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $inst_valtype(moduleinst, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_reftype_is_wf: `%%%`(moduleinst : moduleinst, reftype : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_reftype_is_wf0{moduleinst : moduleinst, reftype : reftype, ret_val : reftype}: + `%%%`(moduleinst, reftype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_reftype: `%`(reftype) + -- if (ret_val = $inst_reftype(moduleinst, reftype)) + -- wf_reftype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_globaltype_is_wf: `%%%`(moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_globaltype_is_wf0{moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype}: + `%%%`(moduleinst, globaltype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = $inst_globaltype(moduleinst, globaltype)) + -- wf_globaltype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_memtype_is_wf: `%%%`(moduleinst : moduleinst, memtype : memtype, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_memtype_is_wf0{moduleinst : moduleinst, memtype : memtype, ret_val : memtype}: + `%%%`(moduleinst, memtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $inst_memtype(moduleinst, memtype)) + -- wf_memtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_tabletype_is_wf: `%%%`(moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_tabletype_is_wf0{moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype}: + `%%%`(moduleinst, tabletype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = $inst_tabletype(moduleinst, tabletype)) + -- wf_tabletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) -- if (l!`%`_uN.0 = 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) -- if (l!`%`_uN.0 > 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])]) -- if (!($proj_num__0(i))!`%`_uN.0 < |l*{l <- `l*`}|) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) -- if (!($proj_num__0(i))!`%`_uN.0 >= |l*{l <- `l*`}|) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) -- otherwise - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) -- otherwise - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-handler`{n : n, `catch*` : catch*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.tee`{val : val, x : idx}: `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.i31`{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- otherwise - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instr: `%`(TRAP_instr) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) -- otherwise - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9804,224 +10863,150 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- otherwise -- if (ref_1 = ref_2) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- otherwise - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{sx : sx}: `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(`REF.I31_NUM`_instr(i)) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new`{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) -- otherwise - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`: `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{ref : ref}: `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) -- if (c <- $unop_(nt, unop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) -- if ($unop_(nt, unop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) -- if (c <- $binop_(nt, binop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) -- if ($binop_(nt, binop, c_1, c_2) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvunop_(V128_vectype, vvunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vunop_(sh, vunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) -- if ($vunop_(sh, vunop, c_1) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*}: @@ -10029,71 +11014,53 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)) -- if (!($proj_num__0(c))!`%`_uN.0 = $prod($inez_($jsizenn(Jnn), !($proj_lane__2(i)))!`%`_uN.0*{i <- `i*`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), i))*{i <- `i*`} - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} + -- (wf_uN: `%%`(32, $inez_($jsizenn(Jnn), !($proj_lane__2(i)))))*{i <- `i*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_1)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)} -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) @@ -10101,75 +11068,67 @@ relation Step_pure: `%~>%`(instr*, instr*) rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0])))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_uN: `%%`(32, $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0])))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_uN.0] = $lpacknum_(Lnn, c_2)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_uN.0] = $lpacknum_(Lnn, c_2)])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)} + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_2)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextunop__(sh_1, sh_2, vextunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation blocktype__is_wf: `%%%`(state : state, blocktype : blocktype, ret_val : instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule blocktype__is_wf0{state : state, blocktype : blocktype, ret_val : instrtype}: + `%%%`(state, blocktype, ret_val) + -- wf_state: `%`(state) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $blocktype_(state, blocktype)) + -- wf_instrtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) @@ -10177,16 +11136,14 @@ relation Step_read: `%~>%`(config, instr*) rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10195,15 +11152,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) -- otherwise - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: @@ -10211,29 +11166,23 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) -- otherwise - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, yy : typeuse}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: @@ -10242,8 +11191,7 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) @@ -10252,305 +11200,226 @@ relation Step_read: `%~>%`(config, instr*) rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) -- otherwise - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($local(z, x) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) + -- (wf_val: `%`(iter))?{iter <- $local(z, x)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `global.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($global(z, x).VALUE_globalinst = val) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) + -- wf_globalinst: `%`($global(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[!($proj_num__0(i))!`%`_uN.0] : ref <: instr)]) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) - -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tableinst: `%`($table(z, x)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) -- otherwise - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) -- otherwise -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) -- otherwise - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0] : ref <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) -- otherwise - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) rule `vload-splat-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: @@ -10568,8 +11436,9 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))^M{})) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))^M{})) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))) @@ -10577,8 +11446,7 @@ relation Step_read: `%~>%`(config, instr*) rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: @@ -10586,15 +11454,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: @@ -10603,8 +11471,10 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[j!`%`_uN.0] = mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, k)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[j!`%`_uN.0] = mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))) @@ -10613,116 +11483,75 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) - -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_meminst: `%`($mem(z, x)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) -- otherwise - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) -- otherwise - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL`_instr(ht)])) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])]) - -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -10730,16 +11559,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- otherwise - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -10747,37 +11573,31 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- otherwise - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))}*{zt <- `zt*`} + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [(!($unpackfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_uN.0])) : val <: instr)]) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10785,33 +11605,28 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (!($default_($unpack(zt))) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))} + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[!($proj_num__0(i))!`%`_uN.0 : n]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(i))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10819,107 +11634,81 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[!($proj_num__0(i))!`%`_uN.0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_byte: `%`(iter))*{iter <- $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))} + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)}^n{c <- `c*`} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[!($proj_num__0(i))!`%`_uN.0])) : val <: instr)]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) -- otherwise - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: @@ -10927,17 +11716,6 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10946,81 +11724,53 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) -- otherwise -- if (ref = $elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0]) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11028,7 +11778,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), []) -- otherwise -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: @@ -11036,15 +11785,8 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11056,23 +11798,18 @@ relation Step: `%~>%`(config, config) rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11080,8 +11817,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11089,8 +11824,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11098,8 +11831,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) @@ -11109,104 +11840,88 @@ relation Step: `%~>%`(config, config) -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_taginst: `%`($tag(z, x)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- wf_exninst: `%`({TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 rule `local.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:322.1-323.58 rule `global.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:340.1-342.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-354.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if (ti = !($growtable($table(z, x), n, ref))) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_tableinst: `%`(!($growtable($table(z, x), n, ref))) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:356.1-357.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:417.1-418.51 rule `elem.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:501.1-504.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:506.1-510.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))} + -- wf_uN: `%%`(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-531.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:534.1-537.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + N) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-544.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: @@ -11214,28 +11929,23 @@ relation Step: `%~>%`(config, config) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, `%`_iN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0))} -- wf_uN: `%%`(N, `%`_uN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:553.1-556.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if (mi = !($growmem($mem(z, x), n))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_meminst: `%`(!($growmem($mem(z, x), n))) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:558.1-559.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:619.1-620.51 rule `data.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:700.1-704.65 rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: @@ -11243,23 +11953,18 @@ relation Step: `%~>%`(config, config) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:721.1-722.55 rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:724.1-727.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_uN.0, !($packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val))), [])) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, i!`%`_uN.0, !($packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val))), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:740.1-745.65 @@ -11267,30 +11972,24 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-786.66 rule `array.set-null`{z : state, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:788.1-790.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-795.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, !($packfield_(zt, val))), [])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, !($packfield_(zt, val))), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -11302,7 +12001,6 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: @@ -11310,8 +12008,8 @@ relation Steps: `%~>*%`(config, config) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11344,9 +12042,18 @@ def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) -- if (taginst = {TYPE tagtype}) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_taginst: `%`({TYPE tagtype}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctag_is_wf: `%%%`(store : store, tagtype : tagtype, ret_val : (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctag_is_wf0{store : store, tagtype : tagtype, ret_val : (store, tagaddr)}: + `%%%`(store, tagtype, ret_val) + -- wf_store: `%`(store) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = $alloctag(store, tagtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11358,6 +12065,22 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- let{ja : tagaddr, s_1 : store} (s_1, ja) = $alloctag(s, tagtype) -- let{s_2 : store, `ja'*` : tagaddr*} (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) + -- wf_store: `%`($alloctag(s, tagtype).0) + -- wf_store: `%`($alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation alloctags_is_wf: `%%%`(store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule alloctags_is_wf0{store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_typeuse: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $alloctags(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11365,9 +12088,19 @@ def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, gl ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) -- if (globalinst = {TYPE globaltype, VALUE val}) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocglobal_is_wf: `%%%%`(store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocglobal_is_wf0{store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)}: + `%%%%`(store, globaltype, val, ret_val) + -- wf_store: `%`(store) + -- wf_globaltype: `%`(globaltype) + -- wf_val: `%`(val) + -- if (ret_val = $allocglobal(store, globaltype, val)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11379,6 +12112,23 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- let{ga : globaladdr, s_1 : store} (s_1, ga) = $allocglobal(s, globaltype, val) -- let{s_2 : store, `ga'*` : globaladdr*} (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) + -- wf_store: `%`($allocglobal(s, globaltype, val).0) + -- wf_store: `%`($allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation allocglobals_is_wf: `%%%%`(store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule allocglobals_is_wf0{store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $allocglobals(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11386,9 +12136,18 @@ def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmem_is_wf: `%%%`(store : store, memtype : memtype, ret_val : (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmem_is_wf0{store : store, memtype : memtype, ret_val : (store, memaddr)}: + `%%%`(store, memtype, ret_val) + -- wf_store: `%`(store) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $allocmem(store, memtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11400,6 +12159,22 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- let{ma : memaddr, s_1 : store} (s_1, ma) = $allocmem(s, memtype) -- let{s_2 : store, `ma'*` : memaddr*} (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) + -- wf_store: `%`($allocmem(s, memtype).0) + -- wf_store: `%`($allocmems(s_1, memtype'*{memtype' <- `memtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation allocmems_is_wf: `%%%`(store : store, var_0 : memtype*, ret_val : (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule allocmems_is_wf0{store : store, var_0 : memtype*, ret_val : (store, memaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_memtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocmems(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11407,9 +12182,19 @@ def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, table ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctable_is_wf: `%%%%`(store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctable_is_wf0{store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)}: + `%%%%`(store, tabletype, ref, ret_val) + -- wf_store: `%`(store) + -- wf_tabletype: `%`(tabletype) + -- wf_ref: `%`(ref) + -- if (ret_val = $alloctable(store, tabletype, ref)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11421,6 +12206,23 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- let{ta : tableaddr, s_1 : store} (s_1, ta) = $alloctable(s, tabletype, ref) -- let{s_2 : store, `ta'*` : tableaddr*} (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) + -- wf_store: `%`($alloctable(s, tabletype, ref).0) + -- wf_store: `%`($alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation alloctables_is_wf: `%%%%`(store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule alloctables_is_wf0{store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_tabletype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $alloctables(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11428,9 +12230,19 @@ def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocfunc_is_wf: `%%%%%`(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocfunc_is_wf0{store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)}: + `%%%%%`(store, deftype, funccode, moduleinst, ret_val) + -- wf_store: `%`(store) + -- wf_funccode: `%`(funccode) + -- wf_moduleinst: `%`(moduleinst) + -- if (ret_val = $allocfunc(store, deftype, funccode, moduleinst)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11442,6 +12254,23 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- let{fa : funcaddr, s_1 : store} (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) -- let{s_2 : store, `fa'*` : funcaddr*} (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) + -- wf_store: `%`($allocfunc(s, dt, funccode, moduleinst).0) + -- wf_store: `%`($allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation allocfuncs_is_wf: `%%%%%`(store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule allocfuncs_is_wf0{store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)}: + `%%%%%`(store, var_0, var_1, var_2, ret_val) + -- wf_store: `%`(store) + -- (wf_funccode: `%`(var_1))*{var_1 <- var_1} + -- (wf_moduleinst: `%`(var_2))*{var_2 <- var_2} + -- if (ret_val = $allocfuncs(store, var_0, var_1, var_2)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11449,9 +12278,18 @@ def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocdata_is_wf: `%%%%`(store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocdata_is_wf0{store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)}: + `%%%%`(store, datatype, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocdata(store, datatype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11463,6 +12301,22 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) -- let{da : dataaddr, s_1 : store} (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) -- let{s_2 : store, `da'*` : dataaddr*} (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) + -- wf_store: `%`($allocdata(s, ok, b*{b <- `b*`}).0) + -- wf_store: `%`($allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation allocdatas_is_wf: `%%%%`(store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule allocdatas_is_wf0{store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocdatas(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11470,9 +12324,19 @@ def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocelem_is_wf: `%%%%`(store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocelem_is_wf0{store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)}: + `%%%%`(store, elemtype, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_reftype: `%`(elemtype) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocelem(store, elemtype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11484,31 +12348,63 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- let{ea : elemaddr, s_1 : store} (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- wf_store: `%`($allocelem(s, rt, ref*{ref <- `ref*`}).0) + -- wf_store: `%`($allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation allocelems_is_wf: `%%%%`(store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule allocelems_is_wf0{store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_reftype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocelems(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexport_is_wf: `%%%`(moduleinst : moduleinst, export : export, ret_val : exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexport_is_wf0{moduleinst : moduleinst, export : export, ret_val : exportinst}: + `%%%`(moduleinst, export, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_export: `%`(export) + -- if (ret_val = $allocexport(moduleinst, export)) + -- wf_exportinst: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexports_is_wf: `%%%`(moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexports_is_wf0{moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*}: + `%%%`(moduleinst, var_0, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- (wf_export: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocexports(moduleinst, var_0)) + -- (wf_exportinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11537,8 +12433,19 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_uN.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`($alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}).0) + -- (wf_typeuse: `%`($subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{tagtype <- `tagtype*`} + -- wf_store: `%`($allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`}).0) + -- (wf_globaltype: `%`($subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{globaltype <- `globaltype*`} + -- wf_store: `%`($allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}).0) + -- (wf_memtype: `%`($subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{memtype <- `memtype*`} + -- wf_store: `%`($alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`}).0) + -- (wf_tabletype: `%`($subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{tabletype <- `tabletype*`} + -- wf_store: `%`($allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}).0) + -- wf_store: `%`($allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).0) + -- (wf_reftype: `%`($subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{elemtype <- `elemtype*`} + -- wf_store: `%`($allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_uN.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{}).0) + -- (wf_exportinst: `%`(iter))*{iter <- $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})} -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} @@ -11550,16 +12457,36 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmodule_is_wf: `%%%%%%%`(store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmodule_is_wf0{store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)}: + `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- (wf_ref: `%`(var_2))*{var_2 <- var_2} + -- (wf_ref: `%`(var_3))*{var_3 <- var_3}*{var_3 <- var_3} + -- if (ret_val = $allocmodule(store, module, var_0, var_1, var_2, var_3)) + -- wf_store: `%`(ret_val.0) + -- wf_moduleinst: `%`(ret_val.1) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_(dataidx : dataidx, data : data) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, n : nat, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(y, x)) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation rundata__is_wf: `%%%`(dataidx : dataidx, data : data, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule rundata__is_wf0{dataidx : dataidx, data : data, ret_val : instr*}: + `%%%`(dataidx, data, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- wf_data: `%`(data) + -- if (ret_val = $rundata_(dataidx, data)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -11567,13 +12494,18 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`TABLE.INIT`_instr(y, x)) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation runelem__is_wf: `%%%`(elemidx : elemidx, elem : elem, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule runelem__is_wf0{elemidx : elemidx, elem : elem, ret_val : instr*}: + `%%%`(elemidx, elem, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- wf_elem: `%`(elem) + -- if (ret_val = $runelem_(elemidx, elem)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11586,8 +12518,24 @@ def $evalexprs(state : state, expr*) : (state, ref*) def $evalexprs{z : state, expr : instr*, `expr'*` : expr*, ref : ref, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) -- let{z'' : state, `ref'*` : ref*} (z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`}) - -- wf_ref: `%`(ref) -- wf_state: `%`(z') + -- wf_state: `%`($evalexprs(z', expr'*{expr' <- `expr'*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z', expr'*{expr' <- `expr'*`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation evalexprs_is_wf: `%%%`(state : state, var_0 : expr*, ret_val : (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule evalexprs_is_wf0{state : state, var_0 : expr*, ret_val : (state, ref*)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprs(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11601,6 +12549,25 @@ def $evalexprss(state : state, expr**) : (state, ref**) def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) -- let{`ref*` : ref*, z' : state} (z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`}) -- let{z'' : state, `ref'**` : ref**} (z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) + -- wf_state: `%`($evalexprs(z, expr*{expr <- `expr*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z, expr*{expr <- `expr*`}).1} + -- wf_state: `%`($evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}).0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation evalexprss_is_wf: `%%%`(state : state, var_0 : expr**, ret_val : (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule evalexprss_is_wf0{state : state, var_0 : expr**, ret_val : (state, ref**)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprss(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11616,12 +12583,30 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- let{s : store, f : frame} `%;%`_state(s, f) = z' -- let{s' : store, a : addr} (s', a) = $allocglobal(s, gt, val) -- let{z'' : state, `val'*` : val*} (z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}) - -- wf_val: `%`(val) -- wf_state: `%`(z') + -- wf_store: `%`($allocglobal(s, gt, val).0) + -- wf_state: `%`($evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}).0) + -- (wf_val: `%`(iter))*{iter <- $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}).1} -- wf_state: `%`(`%;%`_state(s, f)) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) } +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation evalglobals_is_wf: `%%%%`(state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule evalglobals_is_wf0{state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)}: + `%%%%`(state, var_0, var_1, ret_val) + -- wf_state: `%`(state) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_instr: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $evalglobals(state, var_0, var_1)) + -- wf_state: `%`(ret_val.0) + -- (wf_val: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11645,7 +12630,18 @@ def $instantiate(store : store, module : module, externaddr*) : config -- let{`instr_E*` : instr*} instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){}) -- let{`instr_S?` : instr?} instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} -- wf_state: `%`(z) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_state: `%`($evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}).0) + -- (wf_val: `%`(iter))*{iter <- $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}).1} + -- wf_state: `%`($evalexprs(z', expr_T*{expr_T <- `expr_T*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z', expr_T*{expr_T <- `expr_T*`}).1} + -- wf_state: `%`($evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`}).0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- $evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`}).1} + -- wf_store: `%`($allocmodule(s''', module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).0) + -- wf_moduleinst: `%`($allocmodule(s''', module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).1) + -- (wf_instr: `%`(iter))*{iter <- $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})} + -- (wf_instr: `%`(iter))*{iter <- $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])}^(i_D<|data*{data <- `data*`}|){} + -- (wf_instr: `%`(iter))*{iter <- $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})} + -- (wf_instr: `%`(iter))*{iter <- $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])}^(i_E<|elem*{elem <- `elem*`}|){} -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} @@ -11660,15 +12656,34 @@ def $instantiate(store : store, module : module, externaddr*) : config -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){} -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation instantiate_is_wf: `%%%%`(store : store, module : module, var_0 : externaddr*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule instantiate_is_wf0{store : store, module : module, var_0 : externaddr*, ret_val : config}: + `%%%%`(store, module, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- if (ret_val = $instantiate(store, module, var_0)) + -- wf_config: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation invoke_is_wf: `%%%%`(store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule invoke_is_wf0{store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config}: + `%%%%`(store, funcaddr, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_val: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $invoke(store, funcaddr, var_0)) + -- wf_config: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec syntax castop = (null?, null?) @@ -11687,6 +12702,14 @@ syntax nopt = u32* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec def $ieee_(N : N, rat : rat) : fNmag +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation ieee__is_wf: `%%%`(N : N, rat : rat, ret_val : fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule ieee__is_wf0{N : N, rat : rat, ret_val : fNmag}: + `%%%`(N, rat, ret_val) + -- if (ret_val = $ieee_(N, rat)) + -- wf_fNmag: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec syntax idctxt = { @@ -11731,11 +12754,23 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 def $concat_idctxt{I : idctxt, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation concat_idctxt_is_wf: `%%`(var_0 : idctxt*, ret_val : idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule concat_idctxt_is_wf0{var_0 : idctxt*, ret_val : idctxt}: + `%%`(var_0, ret_val) + -- (wf_idctxt: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $concat_idctxt(var_0)) + -- wf_idctxt: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -11753,7 +12788,17 @@ relation Idctxt_ok: `|-%:OK`(idctxt) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -- wf_idctxt: `%`(I) + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TYPES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TAGS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.GLOBALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.MEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TABLES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.FUNCS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.DATAS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.ELEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LOCALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LABELS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])}*{`field*` <- `field**`} -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -11868,6 +12913,19 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation importsd_is_wf: `%%`(var_0 : decl*, ret_val : import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule importsd_is_wf0{var_0 : decl*, ret_val : import*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $importsd(var_0)) + -- (wf_import: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 @@ -11881,6 +12939,19 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation tagsd_is_wf: `%%`(var_0 : decl*, ret_val : tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule tagsd_is_wf0{var_0 : decl*, ret_val : tag*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tagsd(var_0)) + -- (wf_tag: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 @@ -11894,6 +12965,19 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation globalsd_is_wf: `%%`(var_0 : decl*, ret_val : global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule globalsd_is_wf0{var_0 : decl*, ret_val : global*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsd(var_0)) + -- (wf_global: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 @@ -11907,6 +12991,19 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation memsd_is_wf: `%%`(var_0 : decl*, ret_val : mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule memsd_is_wf0{var_0 : decl*, ret_val : mem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsd(var_0)) + -- (wf_mem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 @@ -11920,6 +13017,19 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation tablesd_is_wf: `%%`(var_0 : decl*, ret_val : table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule tablesd_is_wf0{var_0 : decl*, ret_val : table*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesd(var_0)) + -- (wf_table: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 @@ -11933,6 +13043,19 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation funcsd_is_wf: `%%`(var_0 : decl*, ret_val : func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule funcsd_is_wf0{var_0 : decl*, ret_val : func*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $funcsd(var_0)) + -- (wf_func: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 @@ -11946,6 +13069,19 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation datasd_is_wf: `%%`(var_0 : decl*, ret_val : data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule datasd_is_wf0{var_0 : decl*, ret_val : data*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $datasd(var_0)) + -- (wf_data: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 @@ -11959,6 +13095,19 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation elemsd_is_wf: `%%`(var_0 : decl*, ret_val : elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule elemsd_is_wf0{var_0 : decl*, ret_val : elem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $elemsd(var_0)) + -- (wf_elem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 @@ -11972,6 +13121,19 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation startsd_is_wf: `%%`(var_0 : decl*, ret_val : start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule startsd_is_wf0{var_0 : decl*, ret_val : start*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $startsd(var_0)) + -- (wf_start: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 def $exportsd(decl*) : export* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 @@ -11982,11 +13144,25 @@ def $exportsd(decl*) : export* def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) } +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation exportsd_is_wf: `%%`(var_0 : decl*, ret_val : export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule exportsd_is_wf0{var_0 : decl*, ret_val : export*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $exportsd(var_0)) + -- (wf_export: `%`(ret_val))*{ret_val <- ret_val} +} + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered(decl*) : bool ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true -- if ($importsd(decl*{decl <- `decl*`}) = []) + -- (wf_import: `%`(iter))*{iter <- $importsd(decl*{decl <- `decl*`})} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) @@ -12010,7 +13186,6 @@ relation Context_ok: `|-%:OK`(context) -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt : reftype <: valtype)])))*{rt <- `rt*`} -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)])))?{rt' <- `rt'?`} -- (if (x!`%`_uN.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} - -- wf_context: `%`(C) -- wf_context: `%`(C_0) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -12024,23 +13199,16 @@ relation Localval_ok: `%|-%:%`(store, val?, localtype) rule set{s : store, val : val, t : valtype}: `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule unset{s : store}: `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, BOT_valtype)) - -- wf_store: `%`(s) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, BOT_valtype)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Datainst_ok: `%|-%:%`(store, datainst, datatype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{s : store, `b*` : byte*}: `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) - -- wf_store: `%`(s) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) @@ -12049,8 +13217,6 @@ relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12059,9 +13225,7 @@ relation Exportinst_ok: `%|-%:OK`(store, exportinst) rule _{s : store, nm : name, xa : externaddr, xt : externtype}: `%|-%:OK`(s, {NAME nm, ADDR xa}) -- Externaddr_ok: `%|-%:%`(s, xa, xt) - -- wf_store: `%`(s) -- wf_externtype: `%`(xt) - -- wf_exportinst: `%`({NAME nm, ADDR xa}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) @@ -12079,9 +13243,6 @@ relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) -- (Exportinst_ok: `%|-%:OK`(s, exportinst))*{exportinst <- `exportinst*`} -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} - -- wf_store: `%`(s) - -- wf_moduleinst: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}) - -- wf_context: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (wf_externtype: `%`(TAG_externtype(tagtype)))*{tagtype <- `tagtype*`} -- (wf_externtype: `%`(GLOBAL_externtype(globaltype)))*{globaltype <- `globaltype*`} @@ -12096,10 +13257,6 @@ relation Frame_ok: `%|-%:%`(store, frame, context) `%|-%:%`(s, {LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}, C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) - -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rec { @@ -12110,29 +13267,18 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) rule plain{s : store, C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 rule ref{s : store, C : context, ref : ref, rt : reftype}: `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_ref: `%`(ref) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) @@ -12142,30 +13288,19 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) -- Frame_ok: `%|-%:%`(s, f, C') -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) -- wf_context: `%`(C') - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRAP_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 @@ -12173,9 +13308,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 rule empty{s : store, C : context}: `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -12183,11 +13315,7 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_uN.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -12199,10 +13327,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 @@ -12210,10 +13334,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 @@ -12222,9 +13342,6 @@ relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) } @@ -12234,8 +13351,6 @@ relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) rule _{s : store, jt : tagtype}: `%|-%:%`(s, {TYPE jt}, jt) -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) - -- wf_store: `%`(s) - -- wf_taginst: `%`({TYPE jt}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12245,10 +13360,8 @@ relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Meminst_ok: `%|-%:%`(store, meminst, memtype) @@ -12257,10 +13370,8 @@ relation Meminst_ok: `%|-%:%`(store, meminst, memtype) `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) - -- wf_store: `%`(s) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) @@ -12270,10 +13381,8 @@ relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- if (|ref*{ref <- `ref*`}| = n) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) @@ -12284,9 +13393,7 @@ relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- Func_ok: `%|-%:%`(C, func, dt') -- Deftype_sub: `%|-%<:%`(C, dt', dt) - -- wf_store: `%`(s) -- wf_context: `%`(C) - -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE (func : func <: funccode)}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12296,8 +13403,6 @@ relation Structinst_ok: `%|-%:OK`(store, structinst) `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} - -- wf_store: `%`(s) - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12307,8 +13412,6 @@ relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} - -- wf_store: `%`(s) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12319,8 +13422,6 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) -- if ((dt : deftype <: typeuse) = s.TAGS_store[ta].TYPE_taginst) -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} - -- wf_store: `%`(s) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12333,9 +13434,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(fv_1, s, fv_2) -- ImmutReachable: `%>>_%%`(fv_1, s, fv') -- ImmutReachable: `%>>_%%`(fv', s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) -- wf_fieldval: `%`(fv') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 @@ -12343,8 +13441,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) @@ -12352,21 +13448,15 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 rule `ref.exn`{a : addr, s : store, i : nat}: `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, (s.EXNS_store[a].FIELDS_exninst[i] : val <: fieldval)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 rule `ref.extern`{ref : ref, s : store}: `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(ref)) } ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12384,9 +13474,6 @@ relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: `~%>>_%%`(fv_1, s, fv_2) -- if $NotImmutReachable(fv_1, s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Store_ok: `|-%:OK`(store) @@ -12407,7 +13494,6 @@ relation Store_ok: `|-%:OK`(store) -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) - -- wf_store: `%`(s) -- (wf_typeuse: `%`(tagtype))*{tagtype <- `tagtype*`} -- (wf_globaltype: `%`(globaltype))*{globaltype <- `globaltype*`} -- (wf_memtype: `%`(memtype))*{memtype <- `memtype*`} @@ -12423,7 +13509,6 @@ relation Extend_taginst: `%<=%`(taginst, taginst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{jt : tagtype}: `%<=%`({TYPE jt}, {TYPE jt}) - -- wf_taginst: `%`({TYPE jt}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_globalinst: `%<=%`(globalinst, globalinst) @@ -12431,8 +13516,6 @@ relation Extend_globalinst: `%<=%`(globalinst, globalinst) rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_meminst: `%<=%`(meminst, meminst) @@ -12441,8 +13524,6 @@ relation Extend_meminst: `%<=%`(meminst, meminst) `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) -- if (n <= n') -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_tableinst: `%<=%`(tableinst, tableinst) @@ -12451,15 +13532,12 @@ relation Extend_tableinst: `%<=%`(tableinst, tableinst) `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) -- if (n <= n') -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_funcinst: `%<=%`(funcinst, funcinst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{dt : deftype, mm : moduleinst, fc : funccode}: `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) - -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_datainst: `%<=%`(datainst, datainst) @@ -12467,8 +13545,6 @@ relation Extend_datainst: `%<=%`(datainst, datainst) rule _{`b*` : byte*, `b'*` : byte*}: `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) - -- wf_datainst: `%`({BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_eleminst: `%<=%`(eleminst, eleminst) @@ -12476,8 +13552,6 @@ relation Extend_eleminst: `%<=%`(eleminst, eleminst) rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) - -- wf_eleminst: `%`({TYPE rt, REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_structinst: `%<=%`(structinst, structinst) @@ -12486,8 +13560,6 @@ relation Extend_structinst: `%<=%`(structinst, structinst) `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12497,8 +13569,6 @@ relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12506,7 +13576,6 @@ relation Extend_exninst: `%<=%`(exninst, exninst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{ta : tagaddr, `val*` : val*}: `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_store: `%<=%`(store, store) @@ -12523,8 +13592,6 @@ relation Extend_store: `%<=%`(store, store) -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} - -- wf_store: `%`(s) - -- wf_store: `%`(s') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation State_ok: `|-%:%`(state, context) @@ -12533,8 +13600,6 @@ relation State_ok: `|-%:%`(state, context) `|-%:%`(`%;%`_state(s, f), C) -- Store_ok: `|-%:OK`(s) -- Frame_ok: `%|-%:%`(s, f, C) - -- wf_context: `%`(C) - -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Config_ok: `|-%:OK`(config) @@ -12545,7 +13610,6 @@ relation Config_ok: `|-%:OK`(config) -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) -- (wf_valtype: `%`(t))*{t <- `t*`} - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat @@ -12606,17 +13670,11 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule `i32.add`{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 @@ -12624,8 +13682,6 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) } @@ -12635,27 +13691,26 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation instrdots_is_wf: `%`(ret_val : instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule instrdots_is_wf0{ret_val : instr*}: + `%`(ret_val) + -- if (ret_val = $instrdots) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec syntax label = | `LABEL_%{%}`(n : n, `instr*` : instr*) @@ -12681,6 +13736,15 @@ relation wf_callframe: `%`(callframe) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation allocX_is_wf(syntax X, syntax Y): `%%%%`(store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule allocX_is_wf0{syntax X, syntax Y, store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)}: + `%%%%`(store, X_0, Y_0, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocX(syntax X, syntax Y, store, X_0, Y_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rec { @@ -12692,6 +13756,21 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) -- let{s_2 : store, `a'*` : addr*} (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) + -- wf_store: `%`($allocX(syntax X, syntax Y, s, X, Y).0) + -- wf_store: `%`($allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}).0) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 +relation allocXs_is_wf(syntax X, syntax Y): `%%%%`(store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 + rule allocXs_is_wf0{syntax X, syntax Y, store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocXs(syntax X, syntax Y, store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec diff --git a/spectec/test-middlend/specification.exp/06-else.il b/spectec/test-middlend/specification.exp/06-else.il index 6f50bdd122..102de28fb0 100644 --- a/spectec/test-middlend/specification.exp/06-else.il +++ b/spectec/test-middlend/specification.exp/06-else.il @@ -314,19 +314,40 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fzero_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fzero_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fzero(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fnat_is_wf: `%%%`(N : N, nat : nat, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fnat_is_wf0{N : N, nat : nat, ret_val : fN}: + `%%%`(N, nat, ret_val) + -- if (ret_val = $fnat(N, nat)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fone_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fone_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fone(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -377,23 +398,27 @@ def $utf8(char*) : byte* def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation utf8_is_wf: `%%`(var_0 : char*, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule utf8_is_wf0{var_0 : char*, ret_val : byte*}: + `%%`(var_0, ret_val) + -- (wf_char: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $utf8(var_0)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -582,10 +607,18 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_opt_is_wf: `%%`(var_0 : free?, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_opt_is_wf0{var_0 : free?, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))?{var_0 <- var_0} + -- if (ret_val = $free_opt(var_0)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -593,70 +626,162 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation free_list_is_wf: `%%`(var_0 : free*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule free_list_is_wf0{var_0 : free*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_list(var_0)) + -- wf_free: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_typeidx_is_wf: `%%`(typeidx : typeidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_typeidx_is_wf0{typeidx : typeidx, ret_val : free}: + `%%`(typeidx, ret_val) + -- wf_uN: `%%`(32, typeidx) + -- if (ret_val = $free_typeidx(typeidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_funcidx_is_wf: `%%`(funcidx : funcidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_funcidx_is_wf0{funcidx : funcidx, ret_val : free}: + `%%`(funcidx, ret_val) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $free_funcidx(funcidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_globalidx_is_wf: `%%`(globalidx : globalidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_globalidx_is_wf0{globalidx : globalidx, ret_val : free}: + `%%`(globalidx, ret_val) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $free_globalidx(globalidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tableidx_is_wf: `%%`(tableidx : tableidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tableidx_is_wf0{tableidx : tableidx, ret_val : free}: + `%%`(tableidx, ret_val) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $free_tableidx(tableidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_memidx_is_wf: `%%`(memidx : memidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_memidx_is_wf0{memidx : memidx, ret_val : free}: + `%%`(memidx, ret_val) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $free_memidx(memidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_elemidx_is_wf: `%%`(elemidx : elemidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_elemidx_is_wf0{elemidx : elemidx, ret_val : free}: + `%%`(elemidx, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- if (ret_val = $free_elemidx(elemidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_dataidx_is_wf: `%%`(dataidx : dataidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_dataidx_is_wf0{dataidx : dataidx, ret_val : free}: + `%%`(dataidx, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $free_dataidx(dataidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_localidx_is_wf: `%%`(localidx : localidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_localidx_is_wf0{localidx : localidx, ret_val : free}: + `%%`(localidx, ret_val) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $free_localidx(localidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_labelidx_is_wf: `%%`(labelidx : labelidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_labelidx_is_wf0{labelidx : labelidx, ret_val : free}: + `%%`(labelidx, ret_val) + -- wf_uN: `%%`(32, labelidx) + -- if (ret_val = $free_labelidx(labelidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx(tagidx : tagidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx{tagidx : uN}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tagidx_is_wf: `%%`(tagidx : tagidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tagidx_is_wf0{tagidx : tagidx, ret_val : free}: + `%%`(tagidx, ret_val) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $free_tagidx(tagidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -671,6 +796,15 @@ def $free_externidx(externidx : externidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_externidx_is_wf: `%%`(externidx : externidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_externidx_is_wf0{externidx : externidx, ret_val : free}: + `%%`(externidx, ret_val) + -- wf_externidx: `%`(externidx) + -- if (ret_val = $free_externidx(externidx)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = | NULL @@ -1035,73 +1169,157 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ANYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ANYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ANYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EQREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EQREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EQREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation I31REF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule I31REF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $I31REF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation STRUCTREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule STRUCTREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $STRUCTREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ARRAYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ARRAYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ARRAYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation FUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule FUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $FUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLFUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLFUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLFUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1410,7 +1628,15 @@ def $unpack(storagetype : storagetype) : valtype def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype - -- wf_valtype: `%`(I32_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation unpack_is_wf: `%%`(storagetype : storagetype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule unpack_is_wf0{storagetype : storagetype, ret_val : valtype}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $unpack(storagetype)) + -- wf_valtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1448,10 +1674,18 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation diffrt_is_wf: `%%%`(reftype : reftype, reftype_0 : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule diffrt_is_wf0{reftype : reftype, reftype_0 : reftype, ret_val : reftype}: + `%%%`(reftype, reftype_0, ret_val) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + -- if (ret_val = $diffrt(reftype, reftype_0)) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype? @@ -1489,6 +1723,19 @@ def $globalsxt(externtype*) : globaltype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation globalsxt_is_wf: `%%`(var_0 : externtype*, ret_val : globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule globalsxt_is_wf0{var_0 : externtype*, ret_val : globaltype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsxt(var_0)) + -- (wf_globaltype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 @@ -1502,6 +1749,19 @@ def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation memsxt_is_wf: `%%`(var_0 : externtype*, ret_val : memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule memsxt_is_wf0{var_0 : externtype*, ret_val : memtype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsxt(var_0)) + -- (wf_memtype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 @@ -1515,6 +1775,19 @@ def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation tablesxt_is_wf: `%%`(var_0 : externtype*, ret_val : tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule tablesxt_is_wf0{var_0 : externtype*, ret_val : tabletype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesxt(var_0)) + -- (wf_tabletype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 @@ -1541,6 +1814,21 @@ def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation subst_typevar_is_wf: `%%%%`(typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule subst_typevar_is_wf0{typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typevar, var_0, var_1, ret_val) + -- wf_typevar: `%`(typevar) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($subst_typevar(typevar, var_0, var_1))) + -- wf_typeuse: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.73 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 @@ -1550,11 +1838,27 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})) -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_typevar: `%`(_IDX_typevar(x)) + -- (wf_typevar: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).0} + -- (wf_typeuse: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).1} def $minus_recs{x0 : typevar*, x1 : typeuse*}(x0, x1) = ?() -- otherwise } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation minus_recs_is_wf: `%%%`(var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule minus_recs_is_wf0{var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)}: + `%%%`(var_0, var_1, ret_val) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($minus_recs(var_0, var_1))) + -- (wf_typevar: `%`(iter))*{iter <- ret_val.0} + -- (wf_typeuse: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1593,7 +1897,6 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1605,7 +1908,6 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1618,31 +1920,28 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- (wf_typevar: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).0} + -- (wf_typeuse: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).1} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype @@ -1650,6 +1949,98 @@ def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation subst_typeuse_is_wf: `%%%%`(typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule subst_typeuse_is_wf0{typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typeuse, var_0, var_1, ret_val) + -- wf_typeuse: `%`(typeuse) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_typeuse(typeuse, var_0, var_1)) + -- wf_typeuse: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation subst_heaptype_is_wf: `%%%%`(heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule subst_heaptype_is_wf0{heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype}: + `%%%%`(heaptype, var_0, var_1, ret_val) + -- wf_heaptype: `%`(heaptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_heaptype(heaptype, var_0, var_1)) + -- wf_heaptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation subst_reftype_is_wf: `%%%%`(reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule subst_reftype_is_wf0{reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype}: + `%%%%`(reftype, var_0, var_1, ret_val) + -- wf_reftype: `%`(reftype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_reftype(reftype, var_0, var_1)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation subst_valtype_is_wf: `%%%%`(valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule subst_valtype_is_wf0{valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype}: + `%%%%`(valtype, var_0, var_1, ret_val) + -- wf_valtype: `%`(valtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_valtype(valtype, var_0, var_1)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation subst_storagetype_is_wf: `%%%%`(storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule subst_storagetype_is_wf0{storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype}: + `%%%%`(storagetype, var_0, var_1, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_storagetype(storagetype, var_0, var_1)) + -- wf_storagetype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation subst_fieldtype_is_wf: `%%%%`(fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule subst_fieldtype_is_wf0{fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype}: + `%%%%`(fieldtype, var_0, var_1, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_fieldtype(fieldtype, var_0, var_1)) + -- wf_fieldtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation subst_comptype_is_wf: `%%%%`(comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule subst_comptype_is_wf0{comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype}: + `%%%%`(comptype, var_0, var_1, ret_val) + -- wf_comptype: `%`(comptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_comptype(comptype, var_0, var_1)) + -- wf_comptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation subst_subtype_is_wf: `%%%%`(subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule subst_subtype_is_wf0{subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype}: + `%%%%`(subtype, var_0, var_1, ret_val) + -- wf_subtype: `%`(subtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_subtype(subtype, var_0, var_1)) + -- wf_subtype: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1664,97 +2055,204 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_globaltype_is_wf: `%%%%`(globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_globaltype_is_wf0{globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype}: + `%%%%`(globaltype, var_0, var_1, ret_val) + -- wf_globaltype: `%`(globaltype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_globaltype(globaltype, var_0, var_1)) + -- wf_globaltype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_memtype_is_wf: `%%%%`(memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_memtype_is_wf0{memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype}: + `%%%%`(memtype, var_0, var_1, ret_val) + -- wf_memtype: `%`(memtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_memtype(memtype, var_0, var_1)) + -- wf_memtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_tabletype_is_wf: `%%%%`(tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_tabletype_is_wf0{tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype}: + `%%%%`(tabletype, var_0, var_1, ret_val) + -- wf_tabletype: `%`(tabletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_tabletype(tabletype, var_0, var_1)) + -- wf_tabletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_externtype_is_wf: `%%%%`(externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_externtype_is_wf0{externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype}: + `%%%%`(externtype, var_0, var_1, ret_val) + -- wf_externtype: `%`(externtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_externtype(externtype, var_0, var_1)) + -- wf_externtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_moduletype_is_wf: `%%%%`(moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_moduletype_is_wf0{moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype}: + `%%%%`(moduletype, var_0, var_1, ret_val) + -- wf_moduletype: `%`(moduletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_moduletype(moduletype, var_0, var_1)) + -- wf_moduletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, n : nat, `tu*` : typeuse*, i : nat}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_moduletype_is_wf: `%%`(moduletype : moduletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_moduletype_is_wf0{moduletype : moduletype, ret_val : free}: + `%%`(moduletype, ret_val) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $free_moduletype(moduletype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax num_ = | mk_num__0(Inn : Inn, var_x : iN) @@ -2477,7 +3208,15 @@ relation wf_shape: `%`(shape) def $dim(shape : shape) : dim ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) - -- wf_dim: `%`(`%`_dim(N)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation dim_is_wf: `%%`(shape : shape, ret_val : dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_is_wf0{shape : shape, ret_val : dim}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $dim(shape)) + -- wf_dim: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $lanetype(shape : shape) : lanetype @@ -4221,22 +4960,45 @@ syntax expr = instr* def $memarg0 : memarg ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} - -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation memarg0_is_wf: `%`(ret_val : memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg0_is_wf0{ret_val : memarg}: + `%`(ret_val) + -- if (ret_val = $memarg0) + -- wf_memarg: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const(consttype : consttype, lit_ : lit_) : instr ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{numtype : numtype, c : num_}((numtype : numtype <: consttype), mk_lit__0_lit_(numtype, c)) = CONST_instr(numtype, c) - -- wf_instr: `%`(CONST_instr(numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{vectype : vectype, c : uN}((vectype : vectype <: consttype), mk_lit__1_lit_(vectype, c)) = VCONST_instr(vectype, c) - -- wf_instr: `%`(VCONST_instr(vectype, c)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation const_is_wf: `%%%`(consttype : consttype, lit_ : lit_, ret_val : instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule const_is_wf0{consttype : consttype, lit_ : lit_, ret_val : instr}: + `%%%`(consttype, lit_, ret_val) + -- wf_lit_: `%%`((consttype : consttype <: storagetype), lit_) + -- if (ret_val = $const(consttype, lit_)) + -- wf_instr: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_shape_is_wf: `%%`(shape : shape, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_shape_is_wf0{shape : shape, ret_val : free}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $free_shape(shape)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4244,6 +5006,15 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype{typeidx : uN}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_blocktype_is_wf: `%%`(blocktype : blocktype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_blocktype_is_wf0{blocktype : blocktype, ret_val : free}: + `%%`(blocktype, ret_val) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $free_blocktype(blocktype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4255,6 +5026,15 @@ def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch{labelidx : uN}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_catch_is_wf: `%%`(catch : catch, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_catch_is_wf0{catch : catch, ret_val : free}: + `%%`(catch, ret_val) + -- wf_catch: `%`(catch) + -- if (ret_val = $free_catch(catch)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { @@ -4266,7 +5046,6 @@ def $shift_labelidxs(labelidx*) : labelidx* def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.91 def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4276,13 +5055,10 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-435.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.92 @@ -4313,7 +5089,6 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.66 @@ -4324,7 +5099,6 @@ def $free_instr(instr : instr) : free def $free_instr{tagidx : uN}(THROW_instr(tagidx)) = $free_tagidx(tagidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.32 def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-469.99 def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.63 @@ -4387,13 +5161,10 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.34 def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.38 def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.29 def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 @@ -4402,10 +5173,8 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.30 def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.61 def $free_instr{typeidx : uN}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.69 @@ -4430,7 +5199,6 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.32 def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.61 def $free_instr{typeidx : uN}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.55 @@ -4441,10 +5209,8 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.41 def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 def $free_instr{localidx : uN}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 @@ -4501,6 +5267,30 @@ def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:589.1-590.47 def $free_block{`instr*` : instr*}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] -- let{free : free} free = $free_list($free_instr(instr)*{instr <- `instr*`}) + -- wf_free: `%`($free_list($free_instr(instr)*{instr <- `instr*`})) + -- (wf_free: `%`($free_instr(instr)))*{instr <- `instr*`} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation free_instr_is_wf: `%%`(instr : instr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule free_instr_is_wf0{instr : instr, ret_val : free}: + `%%`(instr, ret_val) + -- wf_instr: `%`(instr) + -- if (ret_val = $free_instr(instr)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation free_block_is_wf: `%%`(var_0 : instr*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule free_block_is_wf0{var_0 : instr*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_block(var_0)) + -- wf_free: `%`(ret_val) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4508,6 +5298,15 @@ def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_expr_is_wf: `%%`(expr : expr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_expr_is_wf0{expr : expr, ret_val : free}: + `%%`(expr, ret_val) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- if (ret_val = $free_expr(expr)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = | ACTIVE(tableidx : tableidx, expr : expr) @@ -4698,85 +5497,216 @@ def $free_type(type : type) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_type_is_wf: `%%`(type : type, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_type_is_wf0{type : type, ret_val : free}: + `%%`(type, ret_val) + -- if (ret_val = $free_type(type)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag(tag : tag) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_tag_is_wf: `%%`(tag : tag, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_tag_is_wf0{tag : tag, ret_val : free}: + `%%`(tag, ret_val) + -- wf_tag: `%`(tag) + -- if (ret_val = $free_tag(tag)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global(global : global) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_global_is_wf: `%%`(global : global, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_global_is_wf0{global : global, ret_val : free}: + `%%`(global, ret_val) + -- wf_global: `%`(global) + -- if (ret_val = $free_global(global)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem(mem : mem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_mem_is_wf: `%%`(mem : mem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_mem_is_wf0{mem : mem, ret_val : free}: + `%%`(mem, ret_val) + -- wf_mem: `%`(mem) + -- if (ret_val = $free_mem(mem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table(table : table) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_table_is_wf: `%%`(table : table, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_table_is_wf0{table : table, ret_val : free}: + `%%`(table, ret_val) + -- wf_table: `%`(table) + -- if (ret_val = $free_table(table)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local(local : local) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_local_is_wf: `%%`(local : local, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_local_is_wf0{local : local, ret_val : free}: + `%%`(local, ret_val) + -- wf_local: `%`(local) + -- if (ret_val = $free_local(local)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func(func : func) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_func_is_wf: `%%`(func : func, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_func_is_wf0{func : func, ret_val : free}: + `%%`(func, ret_val) + -- wf_func: `%`(func) + -- if (ret_val = $free_func(func)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(datamode : datamode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_datamode_is_wf: `%%`(datamode : datamode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_datamode_is_wf0{datamode : datamode, ret_val : free}: + `%%`(datamode, ret_val) + -- wf_datamode: `%`(datamode) + -- if (ret_val = $free_datamode(datamode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_data_is_wf: `%%`(data : data, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_data_is_wf0{data : data, ret_val : free}: + `%%`(data, ret_val) + -- wf_data: `%`(data) + -- if (ret_val = $free_data(data)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(elemmode : elemmode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elemmode_is_wf: `%%`(elemmode : elemmode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elemmode_is_wf0{elemmode : elemmode, ret_val : free}: + `%%`(elemmode, ret_val) + -- wf_elemmode: `%`(elemmode) + -- if (ret_val = $free_elemmode(elemmode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elem_is_wf: `%%`(elem : elem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elem_is_wf0{elem : elem, ret_val : free}: + `%%`(elem, ret_val) + -- wf_elem: `%`(elem) + -- if (ret_val = $free_elem(elem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start(start : start) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_start_is_wf: `%%`(start : start, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_start_is_wf0{start : start, ret_val : free}: + `%%`(start, ret_val) + -- wf_start: `%`(start) + -- if (ret_val = $free_start(start)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import(import : import) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_import_is_wf: `%%`(import : import, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_import_is_wf0{import : import, ret_val : free}: + `%%`(import, ret_val) + -- wf_import: `%`(import) + -- if (ret_val = $free_import(import)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export(export : export) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_export_is_wf: `%%`(export : export, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_export_is_wf0{export : export, ret_val : free}: + `%%`(export, ret_val) + -- wf_export: `%`(export) + -- if (ret_val = $free_export(export)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module(module : module) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_module_is_wf: `%%`(module : module, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_module_is_wf0{module : module, ret_val : free}: + `%%`(module, ret_val) + -- wf_module: `%`(module) + -- if (ret_val = $free_module(module)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $funcidx_module(module : module) : funcidx* ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec @@ -4862,6 +5792,21 @@ def $with_locals(context : context, localidx*, localtype*) : context? ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation with_locals_is_wf: `%%%%`(context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule with_locals_is_wf0{context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context}: + `%%%%`(context, var_0, var_1, ret_val) + -- wf_context: `%`(context) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_localtype: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($with_locals(context, var_0, var_1))) + -- wf_context: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(deftype*) : deftype* ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 @@ -4877,6 +5822,16 @@ def $clos_valtype(context : context, valtype : valtype) : valtype def $clos_valtype{C : context, t : valtype}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_valtype_is_wf: `%%%`(context : context, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_valtype_is_wf0{context : context, valtype : valtype, ret_val : valtype}: + `%%%`(context, valtype, ret_val) + -- wf_context: `%`(context) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $clos_valtype(context, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -4895,25 +5850,43 @@ def $clos_externtype(context : context, externtype : externtype) : externtype def $clos_externtype{C : context, xt : externtype}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_externtype_is_wf: `%%%`(context : context, externtype : externtype, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_externtype_is_wf0{context : context, externtype : externtype, ret_val : externtype}: + `%%%`(context, externtype, ret_val) + -- wf_context: `%`(context) + -- wf_externtype: `%`(externtype) + -- if (ret_val = $clos_externtype(context, externtype)) + -- wf_externtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_moduletype_is_wf: `%%%`(context : context, moduletype : moduletype, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_moduletype_is_wf0{context : context, moduletype : moduletype, ret_val : moduletype}: + `%%%`(context, moduletype, ret_val) + -- wf_context: `%`(context) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $clos_moduletype(context, moduletype)) + -- wf_moduletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypenat = @@ -4924,21 +5897,18 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) @@ -4946,6 +5916,7 @@ relation Expand: `%~~%`(deftype, comptype) rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: `%~~%`(deftype, comptype) -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- wf_subtype: `%`($unrolldt(deftype)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -4953,7 +5924,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, nat : nat) : bool @@ -4971,6 +5941,16 @@ def $unrollht_(context : context, heaptype : heaptype) : subtype ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $unrollht_{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation unrollht__is_wf: `%%%`(context : context, heaptype : heaptype, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule unrollht__is_wf0{context : context, heaptype : heaptype, ret_val : subtype}: + `%%%`(context, heaptype, ret_val) + -- wf_context: `%`(context) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = $unrollht_(context, heaptype)) + -- wf_subtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -4979,20 +5959,15 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 rule bot{C : context}: `%|-%:OK`(C, BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) @@ -5000,8 +5975,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) @@ -5009,26 +5982,20 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) -- Numtype_ok: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) -- Vectype_ok: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) @@ -5036,22 +6003,17 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_uN.0] = dt) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (C.RECS_context[i] = st) - -- wf_context: `%`(C) -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) @@ -5059,8 +6021,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) @@ -5068,8 +6028,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) @@ -5077,14 +6035,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) @@ -5092,23 +6047,17 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) @@ -5121,8 +6070,7 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) -- (if ($unrollht_(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_subtype: `%`($unrollht_(C, (typeuse : typeuse <: heaptype))))*{typeuse <- `typeuse*`} -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 @@ -5130,16 +6078,12 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 rule empty{C : context, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypenat(i)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypenat(i)) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypenat((i + 1))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) @@ -5149,7 +6093,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}}) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 @@ -5158,26 +6101,17 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) @@ -5185,14 +6119,13 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) - -- wf_context: `%`(C) + -- wf_subtype: `%`($unrolldt(deftype_1)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 @@ -5200,8 +6133,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: @@ -5209,118 +6140,79 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) -- wf_heaptype: `%`(heaptype') ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 rule `rec-array`{C : context, i : n, `final?` : final?, fieldtype : fieldtype}: `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 rule `rec-func`{C : context, i : n, `final?` : final?, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 @@ -5328,9 +6220,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) -- wf_heaptype: `%`(ANY_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5339,9 +6228,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) -- wf_heaptype: `%`(FUNC_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5350,9 +6236,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) -- wf_heaptype: `%`(EXN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5361,18 +6244,12 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) -- wf_heaptype: `%`(EXTERN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) @@ -5380,17 +6257,11 @@ relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) @@ -5398,28 +6269,20 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) @@ -5427,9 +6290,6 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) @@ -5437,15 +6297,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) @@ -5453,18 +6309,12 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) } ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5473,8 +6323,6 @@ relation Localtype_ok: `%|-%:OK`(context, localtype) rule _{C : context, init : init, t : valtype}: `%|-%:OK`(C, `%%`_localtype(init, t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) @@ -5484,9 +6332,7 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (if (C.LOCALS_context[x!`%`_uN.0] = lct))*{lct <- `lct*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand_use: `%~~_%%`(typeuse, context, comptype) @@ -5494,16 +6340,11 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) -- Expand: `%~~%`(deftype, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5526,9 +6367,7 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- (if ($unrolldt(C.TYPES_context[x!`%`_uN.0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`($unrolldt(C.TYPES_context[x!`%`_uN.0])))*{x <- `x*`} -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5539,17 +6378,12 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) } @@ -5561,8 +6395,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) @@ -5571,8 +6403,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) `%|-%:OK`(C, typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5581,8 +6411,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Memtype_ok: `%|-%:OK`(context, memtype) @@ -5590,8 +6418,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) @@ -5600,8 +6426,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Externtype_ok: `%|-%:OK`(context, externtype) @@ -5609,37 +6433,27 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5651,10 +6465,8 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) -- (if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_uN: `%%`(32, iter))*{iter <- $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5664,17 +6476,11 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) -- if (n_1 >= n_2) -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule eps{C : context, n_1 : n, n_2 : n}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) -- if (n_1 >= n_2) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) @@ -5683,7 +6489,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) @@ -5691,18 +6496,12 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) @@ -5710,9 +6509,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) @@ -5722,9 +6518,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) @@ -5732,41 +6525,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) - -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) @@ -5774,17 +6552,11 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5794,8 +6566,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_catch(x, l)) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5803,50 +6573,49 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val?? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0))))) - -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))))) - -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(?(VCONST_val(Vnn, `%`_vec_(0)))) - -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) - -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) def $default_{x0 : valtype}(x0) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation default__is_wf: `%%`(valtype : valtype, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule default__is_wf0{valtype : valtype, ret_val : val?}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if (ret_val = !($default_(valtype))) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) -- if (!($default_(t)) =/= ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) @@ -5855,7 +6624,6 @@ relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (m < (2 ^ $size((at : addrtype <: numtype)))) - -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec def $is_packtype(storagetype : storagetype) : bool @@ -5870,33 +6638,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: @@ -5904,18 +6661,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) - -- wf_context: `%`(C) -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5925,8 +6677,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5937,9 +6687,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5950,18 +6697,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: @@ -5969,8 +6710,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]))*{l <- `l*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_uN.0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 @@ -5978,17 +6717,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -5998,10 +6731,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -6011,27 +6741,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- wf_reftype: `%`($diffrt(rt_1, rt_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 @@ -6040,9 +6762,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6052,9 +6771,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 @@ -6064,10 +6780,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6078,10 +6791,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6094,10 +6804,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6108,9 +6815,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6118,9 +6822,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 @@ -6129,8 +6830,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6139,48 +6838,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule `ref.null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule `ref.func`{C : context, x : idx, dt : deftype}: `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) -- if (x <- C.REFS_context) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule `ref.i31`{C : context}: `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule `ref.is_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule `ref.as_non_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule `ref.eq`{C : context}: `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule `ref.test`{C : context, rt : reftype, rt' : reftype}: @@ -6188,9 +6869,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.TEST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: @@ -6198,24 +6876,15 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.CAST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule `i31.get`{C : context, sx : sx}: `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 @@ -6223,9 +6892,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 @@ -6234,9 +6901,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) @@ -6245,9 +6909,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(?(MUT_mut), zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) @@ -6255,9 +6916,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 @@ -6265,18 +6923,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 @@ -6284,9 +6937,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_uN.0], rt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 @@ -6295,9 +6945,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 @@ -6305,34 +6953,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule `array.set`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule `array.len`{C : context}: `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.LEN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule `array.fill`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 @@ -6341,9 +6977,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) @@ -6352,9 +6985,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_uN.0] : reftype <: storagetype), zt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 @@ -6363,115 +6993,77 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule `local.get`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule `local.set`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule `local.tee`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule `global.set`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 @@ -6480,9 +7072,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.TABLES_context[x_1!`%`_uN.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_uN.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) @@ -6492,46 +7081,31 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_uN.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule `elem.drop`{C : context, x : idx, rt : reftype}: `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.ELEMS_context[x!`%`_uN.0] = rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 @@ -6539,9 +7113,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x_1!`%`_uN.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_uN.0] = `%%PAGE`_memtype(at_2, lim_2)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) @@ -6550,27 +7121,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 rule `data.drop`{C : context, x : idx}: `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.DATAS_context[x!`%`_uN.0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 @@ -6578,9 +7140,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 @@ -6588,9 +7147,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 @@ -6598,9 +7154,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 @@ -6608,9 +7161,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 @@ -6618,9 +7168,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 @@ -6628,9 +7175,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 @@ -6638,9 +7182,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 @@ -6649,9 +7190,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 @@ -6659,9 +7197,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 @@ -6670,217 +7205,131 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if (i!`%`_uN.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim(sh!`%`_bshape.0)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -6888,10 +7337,7 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_uN.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -6903,9 +7349,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 @@ -6913,9 +7356,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -6925,8 +7365,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6935,88 +7373,62 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) -- if (!($default_(t)) = ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.null`{C : context, ht : heaptype}: `%|-%CONST`(C, `REF.NULL`_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.i31`{C : context}: `%|-%CONST`(C, `REF.I31`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.func`{C : context, x : idx}: `%|-%CONST`(C, `REF.FUNC`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new_default`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_default`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_fixed`{C : context, x : idx, n : n}: `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `any.convert_extern`{C : context}: `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `extern.convert_any`{C : context}: `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `global.get`{C : context, x : idx, t : valtype}: `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7024,8 +7436,6 @@ relation Instr_const: `%|-%CONST`(context, instr) `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) @@ -7036,8 +7446,6 @@ relation Expr_const: `%|-%CONST`(context, expr) rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) @@ -7046,9 +7454,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) `%|-%:%CONST`(C, expr, t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) @@ -7058,7 +7463,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) -- if (x!`%`_uN.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_oktypeidx: `%`(OK_oktypeidx(x)) @@ -7068,8 +7472,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Global_ok: `%|-%:%`(context, global, globaltype) @@ -7079,8 +7481,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7089,8 +7489,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Table_ok: `%|-%:%`(context, table, tabletype) @@ -7100,8 +7498,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7110,17 +7506,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) @@ -7130,8 +7520,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) @@ -7140,16 +7528,12 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7158,24 +7542,16 @@ relation Data_ok: `%|-%:%`(context, data, datatype) rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: @@ -7183,9 +7559,6 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7196,8 +7569,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Start_ok: `%|-%:OK`(context, start) @@ -7205,8 +7576,6 @@ relation Start_ok: `%|-%:OK`(context, start) rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7215,8 +7584,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Externidx_ok: `%|-%:%`(context, externidx, externtype) @@ -7224,41 +7591,26 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) -- if (C.TAGS_context[x!`%`_uN.0] = jt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) -- if (C.GLOBALS_context[x!`%`_uN.0] = gt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) -- if (C.MEMS_context[x!`%`_uN.0] = mt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) -- if (C.TABLES_context[x!`%`_uN.0] = tt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Export_ok: `%|-%:%%`(context, export, name, externtype) @@ -7266,9 +7618,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) -- Externidx_ok: `%|-%:%`(C, externidx, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { @@ -7278,17 +7627,12 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7300,14 +7644,12 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7331,7 +7673,6 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) @@ -7358,11 +7699,13 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) - -- wf_context: `%`(C) -- wf_context: `%`(C') -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- (wf_uN: `%%`(32, iter))*{iter <- $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}))} + -- (wf_typeuse: `%`(iter))*{iter <- $tagsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_globaltype: `%`(iter))*{iter <- $globalsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_memtype: `%`(iter))*{iter <- $memsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_tabletype: `%`(iter))*{iter <- $tablesxt(xt_I*{xt_I <- `xt_I*`})} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -7404,81 +7747,272 @@ def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmadd : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmadd_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmadd_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_fmadd) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmin : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmin_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmin_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmin) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmax : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmax_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmax_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmax) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_idot : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_idot_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_idot_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_idot) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_iq15mulr : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_iq15mulr_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_iq15mulr_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_iq15mulr) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_u : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_u_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_u_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_trunc_u) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_s : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_s_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_s_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_trunc_s) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_swizzle : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_swizzle_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_swizzle_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_swizzle) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_laneselect : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_laneselect_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_laneselect_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_laneselect) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $s33_to_u32(s33 : s33) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibits_(N : N, iN : iN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibits__is_wf: `%%%`(N : N, iN : iN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibits__is_wf0{N : N, iN : iN, ret_val : bit*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibits_(N, iN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbits_(N : N, fN : fN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbits__is_wf: `%%%`(N : N, fN : fN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbits__is_wf0{N : N, fN : fN, ret_val : bit*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbits_(N, fN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibytes_(N : N, iN : iN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibytes__is_wf: `%%%`(N : N, iN : iN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibytes__is_wf0{N : N, iN : iN, ret_val : byte*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibytes_(N, iN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbytes_(N : N, fN : fN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbytes__is_wf: `%%%`(N : N, fN : fN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbytes__is_wf0{N : N, fN : fN, ret_val : byte*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbytes_(N, fN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $nbytes_(numtype : numtype, num_ : num_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation nbytes__is_wf: `%%%`(numtype : numtype, num_ : num_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule nbytes__is_wf0{numtype : numtype, num_ : num_, ret_val : byte*}: + `%%%`(numtype, num_, ret_val) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $nbytes_(numtype, num_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $vbytes_(vectype : vectype, vec_ : vec_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation vbytes__is_wf: `%%%`(vectype : vectype, vec_ : vec_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule vbytes__is_wf0{vectype : vectype, vec_ : vec_, ret_val : byte*}: + `%%%`(vectype, vec_, ret_val) + -- wf_uN: `%%`($vsize(vectype), vec_) + -- if (ret_val = $vbytes_(vectype, vec_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zbytes__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zbytes__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : byte*}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $zbytes_(storagetype, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cbytes__is_wf: `%%%`(Cnn : Cnn, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cbytes__is_wf0{Cnn : Cnn, lit_ : lit_, ret_val : byte*}: + `%%%`(Cnn, lit_, ret_val) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), lit_) + -- if (ret_val = $cbytes_(Cnn, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibits_(N : N, bit*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbits_(N : N, bit*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbits__is_wf: `%%%`(N : N, var_0 : bit*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbits__is_wf0{N : N, var_0 : bit*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_bit: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbits_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibytes_(N : N, byte*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbytes_(N : N, byte*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbytes__is_wf: `%%%`(N : N, var_0 : byte*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbytes__is_wf0{N : N, var_0 : byte*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbytes_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_nbytes_(numtype : numtype, byte*) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_nbytes__is_wf: `%%%`(numtype : numtype, var_0 : byte*, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_nbytes__is_wf0{numtype : numtype, var_0 : byte*, ret_val : num_}: + `%%%`(numtype, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_nbytes_(numtype, var_0)) + -- wf_num_: `%%`(numtype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_vbytes_(vectype : vectype, byte*) : vec_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_zbytes__is_wf: `%%%`(storagetype : storagetype, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_zbytes__is_wf0{storagetype : storagetype, var_0 : byte*, ret_val : lit_}: + `%%%`(storagetype, var_0, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_zbytes_(storagetype, var_0)) + -- wf_lit_: `%%`(storagetype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_cbytes__is_wf: `%%%`(Cnn : Cnn, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_cbytes__is_wf0{Cnn : Cnn, var_0 : byte*, ret_val : lit_}: + `%%%`(Cnn, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_cbytes_(Cnn, var_0)) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $signed_(N : N, nat : nat) : int ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7510,10 +8044,16 @@ def $sx(storagetype : storagetype) : sx?? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zero_is_wf: `%%`(lanetype : lanetype, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zero_is_wf0{lanetype : lanetype, ret_val : lane_}: + `%%`(lanetype, ret_val) + -- if (ret_val = $zero(lanetype)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7542,7 +8082,6 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -7562,28 +8101,23 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN((i!`%`_uN.0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN((i!`%`_uN.0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7591,7 +8125,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7599,7 +8132,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7607,13 +8139,11 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, i_1!`%`_uN.0)) /\ (j_2 = $signed_(N, i_2!`%`_uN.0))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7641,19 +8171,15 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7704,116 +8230,277 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fabs__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fabs__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fabs_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fneg_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fneg__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fneg__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fneg_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsqrt_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsqrt__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsqrt__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fsqrt_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fceil_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fceil__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fceil__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fceil_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ffloor_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ffloor__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ffloor__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ffloor_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ftrunc_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ftrunc__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ftrunc__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ftrunc_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fnearest_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fnearest__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fnearest__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fnearest_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fadd_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fadd__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fadd__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fadd_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsub_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsub__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsub__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fsub_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmul_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmul__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmul__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmul_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fdiv_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fdiv__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fdiv__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fdiv_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_min__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_min__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_min_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_max__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_max__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_max_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fcopysign_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fcopysign__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fcopysign__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fcopysign_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $feq_(N : N, fN : fN, fN : fN) : u32 @@ -7835,9 +8522,31 @@ def $fge_(N : N, fN : fN, fN : fN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_madd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_madd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_madd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_nmadd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_nmadd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_nmadd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wrap__(M : M, N : N, iN : iN) : iN @@ -7856,26 +8565,69 @@ def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $demote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation demote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule demote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $demote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $promote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation promote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule promote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $promote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $convert__(M : M, N : N, sx : sx, iN : iN) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation convert___is_wf: `%%%%%`(M : M, N : N, sx : sx, iN : iN, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule convert___is_wf0{M : M, N : N, sx : sx, iN : iN, ret_val : fN}: + `%%%%%`(M, N, sx, iN, ret_val) + -- wf_uN: `%%`(M, iN) + -- if (ret_val = $convert__(M, N, sx, iN)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation reinterpret___is_wf: `%%%%`(numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule reinterpret___is_wf0{numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_}: + `%%%%`(numtype_1, numtype_2, num_, ret_val) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $reinterpret__(numtype_1, numtype_2, num_)) + -- wf_num_: `%%`(numtype_2, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) - -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lpacknum__is_wf: `%%%`(lanetype : lanetype, num_ : num_, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lpacknum__is_wf0{lanetype : lanetype, num_ : num_, ret_val : lane_}: + `%%%`(lanetype, num_, ret_val) + -- wf_num_: `%%`($lunpack(lanetype), num_) + -- if (ret_val = $lpacknum_(lanetype, num_)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7883,7 +8635,16 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`((!($cunpack(storagetype)) : consttype <: storagetype), lit_) + -- if (ret_val = $cpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`(storagetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -7891,7 +8652,15 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lunpacknum__is_wf: `%%%`(lanetype : lanetype, lane_ : lane_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lunpacknum__is_wf0{lanetype : lanetype, lane_ : lane_, ret_val : num_}: + `%%%`(lanetype, lane_, ret_val) + -- wf_lane_: `%%`(lanetype, lane_) + -- if (ret_val = $lunpacknum_(lanetype, lane_)) + -- wf_num_: `%%`($lunpack(lanetype), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7899,103 +8668,103 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cunpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cunpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $cunpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`((!($cunpack(storagetype)) : consttype <: storagetype), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation unop__is_wf: `%%%%`(numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule unop__is_wf0{numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*}: + `%%%%`(numtype, unop_, num_, ret_val) + -- wf_unop_: `%%`(numtype, unop_) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $unop_(numtype, unop_, num_)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation binop__is_wf: `%%%%%`(numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule binop__is_wf0{numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*}: + `%%%%%`(numtype, binop_, num_, num__0, ret_val) + -- wf_binop_: `%%`(numtype, binop_) + -- wf_num_: `%%`(numtype, num_) + -- wf_num_: `%%`(numtype, num__0) + -- if (ret_val = $binop_(numtype, binop_, num_, num__0)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -8033,37 +8802,48 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) - -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) - -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cvtop___is_wf: `%%%%%`(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cvtop___is_wf0{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*}: + `%%%%%`(numtype_1, numtype_2, cvtop__, num_, ret_val) + -- wf_cvtop__: `%%%`(numtype_1, numtype_2, cvtop__) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $cvtop__(numtype_1, numtype_2, cvtop__, num_)) + -- (wf_num_: `%%`(numtype_2, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_) : lane_* +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lanes__is_wf: `%%%`(shape : shape, vec_ : vec_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lanes__is_wf0{shape : shape, vec_ : vec_, ret_val : lane_*}: + `%%%`(shape, vec_, ret_val) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(128, vec_) + -- if (ret_val = $lanes_(shape, vec_)) + -- (wf_lane_: `%%`($lanetype(shape), ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $inv_lanes_(shape : shape, lane_*) : vec_ @@ -8108,13 +8888,11 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else (if ($signed_(N, i!`%`_uN.0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[(i!`%`_uN.0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* @@ -8122,8 +8900,9 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* @@ -8131,6 +8910,9 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} @@ -8141,8 +8923,10 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8151,8 +8935,10 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8161,6 +8947,10 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8171,6 +8961,10 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8182,6 +8976,11 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c_3*` : lane_*} c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} @@ -8193,6 +8992,11 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c_3*` : lane_*} c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} @@ -8203,8 +9007,10 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8214,8 +9020,10 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8226,8 +9034,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- if ($isize(Inn) = $fsize(Fnn)) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size((Fnn : Fnn <: numtype)), $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_uN: `%%`(1, `%`_uN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8237,8 +9046,9 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ @@ -8246,8 +9056,9 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 @@ -8255,7 +9066,8 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter))*{iter <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) @@ -8267,8 +9079,10 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ @@ -8277,6 +9091,8 @@ def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : lane_*} c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8304,175 +9120,142 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] -- let{c : iN} c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) + -- wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] -- let{c : fN} c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) + -- wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- let{`c?` : iN?} c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} + -- (wf_uN: `%%`($size((Inn_2 : addrtype <: numtype)), iter))?{iter <- $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- let{`c?` : iN?} c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} + -- (wf_uN: `%%`($size((Inn_2 : addrtype <: numtype)), iter))?{iter <- $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- let{`c*` : fN*} c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} + -- (wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), iter))*{iter <- $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- let{`c*` : fN*} c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} + -- (wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), iter))*{iter <- $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lcvtop___is_wf: `%%%%%`(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lcvtop___is_wf0{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*}: + `%%%%%`(shape_1, shape_2, vcvtop__, lane_, ret_val) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_1, shape_2, vcvtop__) + -- wf_lane_: `%%`($lanetype(shape_1), lane_) + -- if (ret_val = $lcvtop__(shape_1, shape_2, vcvtop__, lane_)) + -- (wf_lane_: `%%`($lanetype(shape_2), ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ @@ -8482,7 +9265,10 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8491,7 +9277,10 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8500,7 +9289,11 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- wf_lane_: `%%`(Lnn_2, $zero(Lnn_2)) + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) @@ -8508,31 +9301,25 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ @@ -8543,6 +9330,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c'_2*` : iN*} c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} @@ -8553,8 +9345,6 @@ def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_uN.0*{i <- `i*`}) - -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ @@ -8563,32 +9353,31 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, iter))*{iter <- $concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1, i_2)))*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, iter))*{iter <- $concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1, i_2)))*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ @@ -8599,8 +9388,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c'_2*` : iN*} c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8612,22 +9404,10 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ @@ -8638,7 +9418,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -8998,20 +9780,38 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval? def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = ?((val : val <: fieldval)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation packfield__is_wf: `%%%`(storagetype : storagetype, val : val, ret_val : fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packfield__is_wf0{storagetype : storagetype, val : val, ret_val : fieldval}: + `%%%`(storagetype, val, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_val: `%`(val) + -- if (ret_val = !($packfield_(storagetype, val))) + -- wf_fieldval: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = ?(val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation unpackfield__is_wf: `%%%%`(storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule unpackfield__is_wf0{storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val}: + `%%%%`(storagetype, var_0, fieldval, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = !($unpackfield_(storagetype, var_0, fieldval))) + -- wf_val: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -9082,11 +9882,29 @@ def $store(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $store{s : store, f : frame}(`%;%`_state(s, f)) = s +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation store_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $store(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $frame(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation frame_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $frame(state)) + -- wf_frame: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tagaddr(state : state) : tagaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9097,61 +9915,169 @@ def $moduleinst(state : state) : moduleinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation moduleinst_is_wf: `%%`(state : state, ret_val : moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_is_wf0{state : state, ret_val : moduleinst}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $moduleinst(state)) + -- wf_moduleinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst(state : state) : taginst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation taginst_is_wf: `%%`(state : state, ret_val : taginst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_is_wf0{state : state, ret_val : taginst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $taginst(state)) + -- (wf_taginst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst(state : state) : globalinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation globalinst_is_wf: `%%`(state : state, ret_val : globalinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_is_wf0{state : state, ret_val : globalinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $globalinst(state)) + -- (wf_globalinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst(state : state) : meminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation meminst_is_wf: `%%`(state : state, ret_val : meminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_is_wf0{state : state, ret_val : meminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $meminst(state)) + -- (wf_meminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst(state : state) : tableinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tableinst_is_wf: `%%`(state : state, ret_val : tableinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_is_wf0{state : state, ret_val : tableinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $tableinst(state)) + -- (wf_tableinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst(state : state) : funcinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation funcinst_is_wf: `%%`(state : state, ret_val : funcinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_is_wf0{state : state, ret_val : funcinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $funcinst(state)) + -- (wf_funcinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst(state : state) : datainst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation datainst_is_wf: `%%`(state : state, ret_val : datainst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_is_wf0{state : state, ret_val : datainst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $datainst(state)) + -- (wf_datainst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst(state : state) : eleminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation eleminst_is_wf: `%%`(state : state, ret_val : eleminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_is_wf0{state : state, ret_val : eleminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $eleminst(state)) + -- (wf_eleminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst(state : state) : structinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation structinst_is_wf: `%%`(state : state, ret_val : structinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_is_wf0{state : state, ret_val : structinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $structinst(state)) + -- (wf_structinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst(state : state) : arrayinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation arrayinst_is_wf: `%%`(state : state, ret_val : arrayinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_is_wf0{state : state, ret_val : arrayinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $arrayinst(state)) + -- (wf_arrayinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst(state : state) : exninst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation exninst_is_wf: `%%`(state : state, ret_val : exninst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_is_wf0{state : state, ret_val : exninst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $exninst(state)) + -- (wf_exninst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof{z : state}(z) = $frame(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fof_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fof_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $fof(state)) + -- wf_frame: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9162,123 +10088,337 @@ def $sof(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $sof{z : state}(z) = $store(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation sof_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule sof_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $sof(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tag_is_wf: `%%%`(state : state, tagidx : tagidx, ret_val : taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tag_is_wf0{state : state, tagidx : tagidx, ret_val : taginst}: + `%%%`(state, tagidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $tag(state, tagidx)) + -- wf_taginst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation global_is_wf: `%%%`(state : state, globalidx : globalidx, ret_val : globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule global_is_wf0{state : state, globalidx : globalidx, ret_val : globalinst}: + `%%%`(state, globalidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $global(state, globalidx)) + -- wf_globalinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation mem_is_wf: `%%%`(state : state, memidx : memidx, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule mem_is_wf0{state : state, memidx : memidx, ret_val : meminst}: + `%%%`(state, memidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $mem(state, memidx)) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation table_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule table_is_wf0{state : state, tableidx : tableidx, ret_val : tableinst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $table(state, tableidx)) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation func_is_wf: `%%%`(state : state, funcidx : funcidx, ret_val : funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule func_is_wf0{state : state, funcidx : funcidx, ret_val : funcinst}: + `%%%`(state, funcidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $func(state, funcidx)) + -- wf_funcinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation data_is_wf: `%%%`(state : state, dataidx : dataidx, ret_val : datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule data_is_wf0{state : state, dataidx : dataidx, ret_val : datainst}: + `%%%`(state, dataidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $data(state, dataidx)) + -- wf_datainst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation elem_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule elem_is_wf0{state : state, tableidx : tableidx, ret_val : eleminst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $elem(state, tableidx)) + -- wf_eleminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[x!`%`_uN.0] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation local_is_wf: `%%%`(state : state, localidx : localidx, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule local_is_wf0{state : state, localidx : localidx, ret_val : val?}: + `%%%`(state, localidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $local(state, localidx)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_uN.0] = ?(v)]) - -- wf_state: `%`(`%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_uN.0] = ?(v)])) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_local_is_wf: `%%%%`(state : state, localidx : localidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_local_is_wf0{state : state, localidx : localidx, val : val, ret_val : state}: + `%%%%`(state, localidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_local(state, localidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_global_is_wf: `%%%%`(state : state, globalidx : globalidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_global_is_wf0{state : state, globalidx : globalidx, val : val, ret_val : state}: + `%%%%`(state, globalidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_global(state, globalidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_table_is_wf: `%%%%%`(state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_table_is_wf0{state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state}: + `%%%%%`(state, tableidx, nat, ref, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_ref: `%`(ref) + -- if (ret_val = $with_table(state, tableidx, nat, ref)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_tableinst_is_wf: `%%%%`(state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_tableinst_is_wf0{state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state}: + `%%%%`(state, tableidx, tableinst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_tableinst: `%`(tableinst) + -- if (ret_val = $with_tableinst(state, tableidx, tableinst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{z : state, x : uN, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_mem_is_wf: `%%%%%%`(state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_mem_is_wf0{state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state}: + `%%%%%%`(state, memidx, nat, nat_0, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_mem(state, memidx, nat, nat_0, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_meminst_is_wf: `%%%%`(state : state, memidx : memidx, meminst : meminst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_meminst_is_wf0{state : state, memidx : memidx, meminst : meminst, ret_val : state}: + `%%%%`(state, memidx, meminst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- wf_meminst: `%`(meminst) + -- if (ret_val = $with_meminst(state, memidx, meminst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{z : state, x : uN, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_elem_is_wf: `%%%%`(state : state, elemidx : elemidx, var_0 : ref*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_elem_is_wf0{state : state, elemidx : elemidx, var_0 : ref*, ret_val : state}: + `%%%%`(state, elemidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, elemidx) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_elem(state, elemidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_data_is_wf: `%%%%`(state : state, dataidx : dataidx, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_data_is_wf0{state : state, dataidx : dataidx, var_0 : byte*, ret_val : state}: + `%%%%`(state, dataidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_data(state, dataidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_struct_is_wf: `%%%%%`(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_struct_is_wf0{state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, structaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_struct(state, structaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_array_is_wf: `%%%%%`(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_array_is_wf0{state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, arrayaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_array(state, arrayaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_structinst_is_wf: `%%%`(state : state, var_0 : structinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_structinst_is_wf0{state : state, var_0 : structinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_structinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_structinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_arrayinst_is_wf: `%%%`(state : state, var_0 : arrayinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_arrayinst_is_wf0{state : state, var_0 : arrayinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_arrayinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_arrayinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_exninst_is_wf: `%%%`(state : state, var_0 : exninst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_exninst_is_wf0{state : state, var_0 : exninst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_exninst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_exninst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? @@ -9289,12 +10429,21 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- if (i'!`%`_uN.0 = (|r'*{r' <- `r'*`}| + n)) -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} -- if ((i'!`%`_uN.0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) - -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growtable_is_wf: `%%%%`(tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growtable_is_wf0{tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst}: + `%%%%`(tableinst, nat, ref, ret_val) + -- wf_tableinst: `%`(tableinst) + -- wf_ref: `%`(ref) + -- if (ret_val = !($growtable(tableinst, nat, ref))) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9304,27 +10453,31 @@ def $growmem(meminst : meminst, nat : nat) : meminst? -- if ((i'!`%`_uN.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} -- if (i'!`%`_uN.0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_meminst: `%`(meminst') -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growmem_is_wf: `%%%`(meminst : meminst, nat : nat, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growmem_is_wf0{meminst : meminst, nat : nat, ret_val : meminst}: + `%%%`(meminst, nat, ret_val) + -- wf_meminst: `%`(meminst) + -- if (ret_val = !($growmem(meminst, nat))) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -9334,65 +10487,41 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.38 rule null{s : store}: `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.NULL_ADDR`_ref) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.33 rule i31{s : store, i : u31}: `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.I31_NUM`_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - -- wf_store: `%`(s) -- wf_exninst: `%`(exn) - -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.35 rule host{s : store, a : addr}: `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.HOST_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 rule extern{s : store, ref : ref}: `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.EXTERN`_ref(ref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) @@ -9401,9 +10530,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) -- wf_reftype: `%`(rt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -9414,31 +10540,22 @@ relation Val_ok: `%|-%:%`(store, val, valtype) rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) -- Num_ok: `%|-%:%`(s, num, nt) - -- wf_store: `%`(s) - -- wf_num: `%`(num) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) -- Vec_ok: `%|-%:%`(s, vec, vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Packval_ok: `%|-%:%`(store, packval, packtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, pt : packtype, c : iN}: `%|-%:%`(s, PACK_packval(pt, c), pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(PACK_packval(pt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) @@ -9446,16 +10563,11 @@ relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) rule val{s : store, val : val, t : valtype}: `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule packval{s : store, packval : packval, pt : packtype}: `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) -- Packval_ok: `%|-%:%`(s, packval, pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(packval) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -9466,44 +10578,32 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-111.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:113.1-115.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:117.1-119.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:121.1-123.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:125.1-128.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) -- wf_externtype: `%`(xt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -9513,35 +10613,82 @@ def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_valtype_is_wf: `%%%`(moduleinst : moduleinst, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_valtype_is_wf0{moduleinst : moduleinst, valtype : valtype, ret_val : valtype}: + `%%%`(moduleinst, valtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $inst_valtype(moduleinst, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_reftype_is_wf: `%%%`(moduleinst : moduleinst, reftype : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_reftype_is_wf0{moduleinst : moduleinst, reftype : reftype, ret_val : reftype}: + `%%%`(moduleinst, reftype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_reftype: `%`(reftype) + -- if (ret_val = $inst_reftype(moduleinst, reftype)) + -- wf_reftype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_globaltype_is_wf: `%%%`(moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_globaltype_is_wf0{moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype}: + `%%%`(moduleinst, globaltype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = $inst_globaltype(moduleinst, globaltype)) + -- wf_globaltype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_memtype_is_wf: `%%%`(moduleinst : moduleinst, memtype : memtype, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_memtype_is_wf0{moduleinst : moduleinst, memtype : memtype, ret_val : memtype}: + `%%%`(moduleinst, memtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $inst_memtype(moduleinst, memtype)) + -- wf_memtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_tabletype_is_wf: `%%%`(moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_tabletype_is_wf0{moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype}: + `%%%`(moduleinst, tabletype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = $inst_tabletype(moduleinst, tabletype)) + -- wf_tabletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_br_on_null-addr`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null_0`{val : val, l : labelidx}: `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9550,8 +10697,6 @@ relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) rule `br_on_non_null-null_0`{val : val, l : labelidx}: `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9560,9 +10705,6 @@ relation `Step_pure_before_ref.is_null-false`: `%`(instr*) rule `ref.is_null-true_0`{ref : ref}: `%`([(ref : ref <: instr) `REF.IS_NULL`_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9571,9 +10713,6 @@ relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) rule `ref.as_non_null-null_0`{ref : ref}: `%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instr: `%`(TRAP_instr) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9582,10 +10721,6 @@ relation `Step_pure_before_ref.eq-true`: `%`(instr*) rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9595,19 +10730,11 @@ relation `Step_pure_before_ref.eq-false`: `%`(instr*) `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) -- if (ref_1 = ref_2) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_1`{ref_1 : ref, ref_2 : ref}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9616,274 +10743,181 @@ relation `Step_pure_before_extern.convert_any-addr`: `%`(instr*) rule `extern.convert_any-null_0`{ref : ref}: `%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) -- if (l!`%`_uN.0 = 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) -- if (l!`%`_uN.0 > 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])]) -- if (!($proj_num__0(i))!`%`_uN.0 < |l*{l <- `l*`}|) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) -- if (!($proj_num__0(i))!`%`_uN.0 >= |l*{l <- `l*`}|) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) -- ~ `Step_pure_before_br_on_null-addr`: `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-handler`{n : n, `catch*` : catch*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.tee`{val : val, x : idx}: `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.i31`{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- ~ `Step_pure_before_ref.is_null-false`: `%`([(ref : ref <: instr) `REF.IS_NULL`_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instr: `%`(TRAP_instr) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9891,224 +10925,150 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) -- if (ref_1 = ref_2) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- ~ `Step_pure_before_ref.eq-false`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{sx : sx}: `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(`REF.I31_NUM`_instr(i)) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new`{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) -- ~ `Step_pure_before_extern.convert_any-addr`: `%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr]) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`: `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{ref : ref}: `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) -- if (c <- $unop_(nt, unop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) -- if ($unop_(nt, unop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) -- if (c <- $binop_(nt, binop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) -- if ($binop_(nt, binop, c_1, c_2) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvunop_(V128_vectype, vvunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vunop_(sh, vunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) -- if ($vunop_(sh, vunop, c_1) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*}: @@ -10116,71 +11076,53 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)) -- if (!($proj_num__0(c))!`%`_uN.0 = $prod($inez_($jsizenn(Jnn), !($proj_lane__2(i)))!`%`_uN.0*{i <- `i*`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), i))*{i <- `i*`} - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} + -- (wf_uN: `%%`(32, $inez_($jsizenn(Jnn), !($proj_lane__2(i)))))*{i <- `i*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_1)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)} -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) @@ -10188,75 +11130,67 @@ relation Step_pure: `%~>%`(instr*, instr*) rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0])))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_uN: `%%`(32, $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0])))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_uN.0] = $lpacknum_(Lnn, c_2)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_uN.0] = $lpacknum_(Lnn, c_2)])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)} + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_2)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextunop__(sh_1, sh_2, vextunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation blocktype__is_wf: `%%%`(state : state, blocktype : blocktype, ret_val : instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule blocktype__is_wf0{state : state, blocktype : blocktype, ret_val : instrtype}: + `%%%`(state, blocktype, ret_val) + -- wf_state: `%`(state) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $blocktype_(state, blocktype)) + -- wf_instrtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) @@ -10266,8 +11200,7 @@ relation `Step_read_before_br_on_cast-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10278,7 +11211,7 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10286,34 +11219,24 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) @@ -10321,8 +11244,7 @@ relation `Step_read_before_table.fill-zero`: `%`(config) rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-succ`: `%`(config) @@ -10331,14 +11253,12 @@ relation `Step_read_before_table.fill-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-zero`: `%`(config) @@ -10346,8 +11266,8 @@ relation `Step_read_before_table.copy-zero`: `%`(config) rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-le`: `%`(config) @@ -10356,14 +11276,13 @@ relation `Step_read_before_table.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-gt`: `%`(config) @@ -10372,29 +11291,19 @@ relation `Step_read_before_table.copy-gt`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.init-zero`: `%`(config) @@ -10402,8 +11311,8 @@ relation `Step_read_before_table.init-zero`: `%`(config) rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.init-succ`: `%`(config) @@ -10412,14 +11321,13 @@ relation `Step_read_before_table.init-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.fill-zero`: `%`(config) @@ -10427,8 +11335,7 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.fill-succ`: `%`(config) @@ -10437,14 +11344,12 @@ relation `Step_read_before_memory.fill-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-zero`: `%`(config) @@ -10452,8 +11357,8 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-le`: `%`(config) @@ -10462,14 +11367,13 @@ relation `Step_read_before_memory.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-gt`: `%`(config) @@ -10478,29 +11382,19 @@ relation `Step_read_before_memory.copy-gt`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.init-zero`: `%`(config) @@ -10508,8 +11402,8 @@ relation `Step_read_before_memory.init-zero`: `%`(config) rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.init-succ`: `%`(config) @@ -10518,14 +11412,13 @@ relation `Step_read_before_memory.init-succ`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_ref.test-false`: `%`(config) @@ -10535,8 +11428,7 @@ relation `Step_read_before_ref.test-false`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10547,7 +11439,7 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10556,8 +11448,7 @@ relation `Step_read_before_array.fill-zero`: `%`(config) rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.fill-succ`: `%`(config) @@ -10566,14 +11457,12 @@ relation `Step_read_before_array.fill-succ`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-zero`: `%`(config) @@ -10581,15 +11470,13 @@ relation `Step_read_before_array.copy-zero`: `%`(config) rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-le`: `%`(config) @@ -10598,21 +11485,18 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-gt`: `%`(config) @@ -10622,17 +11506,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10640,21 +11513,18 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_elem-zero`: `%`(config) @@ -10662,15 +11532,13 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_elem-succ`: `%`(config) @@ -10679,21 +11547,18 @@ relation `Step_read_before_array.init_elem-succ`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-zero`: `%`(config) @@ -10702,16 +11567,14 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-num`: `%`(config) @@ -10720,23 +11583,20 @@ relation `Step_read_before_array.init_data-num`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) @@ -10744,16 +11604,14 @@ relation Step_read: `%~>%`(config, instr*) rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10762,15 +11620,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: @@ -10778,29 +11634,23 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, yy : typeuse}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: @@ -10809,8 +11659,7 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) @@ -10819,305 +11668,226 @@ relation Step_read: `%~>%`(config, instr*) rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($local(z, x) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) + -- (wf_val: `%`(iter))?{iter <- $local(z, x)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `global.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($global(z, x).VALUE_globalinst = val) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) + -- wf_globalinst: `%`($global(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[!($proj_num__0(i))!`%`_uN.0] : ref <: instr)]) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) - -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tableinst: `%`($table(z, x)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), []) -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), []) -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0] : ref <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) rule `vload-splat-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: @@ -11135,8 +11904,9 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))^M{})) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))^M{})) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))) @@ -11144,8 +11914,7 @@ relation Step_read: `%~>%`(config, instr*) rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: @@ -11153,15 +11922,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: @@ -11170,8 +11939,10 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[j!`%`_uN.0] = mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, k)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[j!`%`_uN.0] = mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))) @@ -11180,116 +11951,75 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) - -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_meminst: `%`($mem(z, x)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), []) -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), []) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), []) -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL`_instr(ht)])) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])]) - -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -11297,16 +12027,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -11314,37 +12041,31 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))}*{zt <- `zt*`} + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [(!($unpackfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_uN.0])) : val <: instr)]) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11352,33 +12073,28 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (!($default_($unpack(zt))) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))} + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[!($proj_num__0(i))!`%`_uN.0 : n]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(i))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11386,107 +12102,81 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[!($proj_num__0(i))!`%`_uN.0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_byte: `%`(iter))*{iter <- $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))} + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)}^n{c <- `c*`} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[!($proj_num__0(i))!`%`_uN.0])) : val <: instr)]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), []) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: @@ -11494,17 +12184,6 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11513,81 +12192,53 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), []) -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if (ref = $elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0]) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11595,7 +12246,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), []) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: @@ -11603,15 +12253,8 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11623,23 +12266,18 @@ relation Step: `%~>%`(config, config) rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11647,8 +12285,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11656,8 +12292,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11665,8 +12299,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) @@ -11676,104 +12308,88 @@ relation Step: `%~>%`(config, config) -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_taginst: `%`($tag(z, x)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- wf_exninst: `%`({TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 rule `local.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:322.1-323.58 rule `global.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:340.1-342.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-354.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if (ti = !($growtable($table(z, x), n, ref))) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_tableinst: `%`(!($growtable($table(z, x), n, ref))) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:356.1-357.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:417.1-418.51 rule `elem.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:501.1-504.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:506.1-510.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))} + -- wf_uN: `%%`(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-531.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:534.1-537.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + N) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-544.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: @@ -11781,28 +12397,23 @@ relation Step: `%~>%`(config, config) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, `%`_iN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0))} -- wf_uN: `%%`(N, `%`_uN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:553.1-556.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if (mi = !($growmem($mem(z, x), n))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_meminst: `%`(!($growmem($mem(z, x), n))) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:558.1-559.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:619.1-620.51 rule `data.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:700.1-704.65 rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: @@ -11810,23 +12421,18 @@ relation Step: `%~>%`(config, config) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:721.1-722.55 rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:724.1-727.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_uN.0, !($packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val))), [])) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, i!`%`_uN.0, !($packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val))), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:740.1-745.65 @@ -11834,30 +12440,24 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-786.66 rule `array.set-null`{z : state, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:788.1-790.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-795.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, !($packfield_(zt, val))), [])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, !($packfield_(zt, val))), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -11869,7 +12469,6 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: @@ -11877,8 +12476,8 @@ relation Steps: `%~>*%`(config, config) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11911,9 +12510,18 @@ def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) -- if (taginst = {TYPE tagtype}) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_taginst: `%`({TYPE tagtype}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctag_is_wf: `%%%`(store : store, tagtype : tagtype, ret_val : (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctag_is_wf0{store : store, tagtype : tagtype, ret_val : (store, tagaddr)}: + `%%%`(store, tagtype, ret_val) + -- wf_store: `%`(store) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = $alloctag(store, tagtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11925,6 +12533,22 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- let{ja : tagaddr, s_1 : store} (s_1, ja) = $alloctag(s, tagtype) -- let{s_2 : store, `ja'*` : tagaddr*} (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) + -- wf_store: `%`($alloctag(s, tagtype).0) + -- wf_store: `%`($alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation alloctags_is_wf: `%%%`(store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule alloctags_is_wf0{store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_typeuse: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $alloctags(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11932,9 +12556,19 @@ def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, gl ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) -- if (globalinst = {TYPE globaltype, VALUE val}) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocglobal_is_wf: `%%%%`(store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocglobal_is_wf0{store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)}: + `%%%%`(store, globaltype, val, ret_val) + -- wf_store: `%`(store) + -- wf_globaltype: `%`(globaltype) + -- wf_val: `%`(val) + -- if (ret_val = $allocglobal(store, globaltype, val)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11946,6 +12580,23 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- let{ga : globaladdr, s_1 : store} (s_1, ga) = $allocglobal(s, globaltype, val) -- let{s_2 : store, `ga'*` : globaladdr*} (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) + -- wf_store: `%`($allocglobal(s, globaltype, val).0) + -- wf_store: `%`($allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation allocglobals_is_wf: `%%%%`(store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule allocglobals_is_wf0{store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $allocglobals(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11953,9 +12604,18 @@ def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmem_is_wf: `%%%`(store : store, memtype : memtype, ret_val : (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmem_is_wf0{store : store, memtype : memtype, ret_val : (store, memaddr)}: + `%%%`(store, memtype, ret_val) + -- wf_store: `%`(store) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $allocmem(store, memtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11967,6 +12627,22 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- let{ma : memaddr, s_1 : store} (s_1, ma) = $allocmem(s, memtype) -- let{s_2 : store, `ma'*` : memaddr*} (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) + -- wf_store: `%`($allocmem(s, memtype).0) + -- wf_store: `%`($allocmems(s_1, memtype'*{memtype' <- `memtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation allocmems_is_wf: `%%%`(store : store, var_0 : memtype*, ret_val : (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule allocmems_is_wf0{store : store, var_0 : memtype*, ret_val : (store, memaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_memtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocmems(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11974,9 +12650,19 @@ def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, table ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctable_is_wf: `%%%%`(store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctable_is_wf0{store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)}: + `%%%%`(store, tabletype, ref, ret_val) + -- wf_store: `%`(store) + -- wf_tabletype: `%`(tabletype) + -- wf_ref: `%`(ref) + -- if (ret_val = $alloctable(store, tabletype, ref)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11988,6 +12674,23 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- let{ta : tableaddr, s_1 : store} (s_1, ta) = $alloctable(s, tabletype, ref) -- let{s_2 : store, `ta'*` : tableaddr*} (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) + -- wf_store: `%`($alloctable(s, tabletype, ref).0) + -- wf_store: `%`($alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation alloctables_is_wf: `%%%%`(store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule alloctables_is_wf0{store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_tabletype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $alloctables(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11995,9 +12698,19 @@ def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocfunc_is_wf: `%%%%%`(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocfunc_is_wf0{store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)}: + `%%%%%`(store, deftype, funccode, moduleinst, ret_val) + -- wf_store: `%`(store) + -- wf_funccode: `%`(funccode) + -- wf_moduleinst: `%`(moduleinst) + -- if (ret_val = $allocfunc(store, deftype, funccode, moduleinst)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12009,6 +12722,23 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- let{fa : funcaddr, s_1 : store} (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) -- let{s_2 : store, `fa'*` : funcaddr*} (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) + -- wf_store: `%`($allocfunc(s, dt, funccode, moduleinst).0) + -- wf_store: `%`($allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation allocfuncs_is_wf: `%%%%%`(store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule allocfuncs_is_wf0{store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)}: + `%%%%%`(store, var_0, var_1, var_2, ret_val) + -- wf_store: `%`(store) + -- (wf_funccode: `%`(var_1))*{var_1 <- var_1} + -- (wf_moduleinst: `%`(var_2))*{var_2 <- var_2} + -- if (ret_val = $allocfuncs(store, var_0, var_1, var_2)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12016,9 +12746,18 @@ def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocdata_is_wf: `%%%%`(store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocdata_is_wf0{store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)}: + `%%%%`(store, datatype, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocdata(store, datatype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12030,6 +12769,22 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) -- let{da : dataaddr, s_1 : store} (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) -- let{s_2 : store, `da'*` : dataaddr*} (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) + -- wf_store: `%`($allocdata(s, ok, b*{b <- `b*`}).0) + -- wf_store: `%`($allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation allocdatas_is_wf: `%%%%`(store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule allocdatas_is_wf0{store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocdatas(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12037,9 +12792,19 @@ def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocelem_is_wf: `%%%%`(store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocelem_is_wf0{store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)}: + `%%%%`(store, elemtype, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_reftype: `%`(elemtype) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocelem(store, elemtype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12051,31 +12816,63 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- let{ea : elemaddr, s_1 : store} (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- wf_store: `%`($allocelem(s, rt, ref*{ref <- `ref*`}).0) + -- wf_store: `%`($allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation allocelems_is_wf: `%%%%`(store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule allocelems_is_wf0{store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_reftype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocelems(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexport_is_wf: `%%%`(moduleinst : moduleinst, export : export, ret_val : exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexport_is_wf0{moduleinst : moduleinst, export : export, ret_val : exportinst}: + `%%%`(moduleinst, export, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_export: `%`(export) + -- if (ret_val = $allocexport(moduleinst, export)) + -- wf_exportinst: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexports_is_wf: `%%%`(moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexports_is_wf0{moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*}: + `%%%`(moduleinst, var_0, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- (wf_export: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocexports(moduleinst, var_0)) + -- (wf_exportinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12104,8 +12901,19 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_uN.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`($alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}).0) + -- (wf_typeuse: `%`($subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{tagtype <- `tagtype*`} + -- wf_store: `%`($allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`}).0) + -- (wf_globaltype: `%`($subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{globaltype <- `globaltype*`} + -- wf_store: `%`($allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}).0) + -- (wf_memtype: `%`($subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{memtype <- `memtype*`} + -- wf_store: `%`($alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`}).0) + -- (wf_tabletype: `%`($subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{tabletype <- `tabletype*`} + -- wf_store: `%`($allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}).0) + -- wf_store: `%`($allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).0) + -- (wf_reftype: `%`($subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{elemtype <- `elemtype*`} + -- wf_store: `%`($allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_uN.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{}).0) + -- (wf_exportinst: `%`(iter))*{iter <- $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})} -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} @@ -12117,16 +12925,36 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmodule_is_wf: `%%%%%%%`(store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmodule_is_wf0{store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)}: + `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- (wf_ref: `%`(var_2))*{var_2 <- var_2} + -- (wf_ref: `%`(var_3))*{var_3 <- var_3}*{var_3 <- var_3} + -- if (ret_val = $allocmodule(store, module, var_0, var_1, var_2, var_3)) + -- wf_store: `%`(ret_val.0) + -- wf_moduleinst: `%`(ret_val.1) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_(dataidx : dataidx, data : data) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, n : nat, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(y, x)) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation rundata__is_wf: `%%%`(dataidx : dataidx, data : data, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule rundata__is_wf0{dataidx : dataidx, data : data, ret_val : instr*}: + `%%%`(dataidx, data, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- wf_data: `%`(data) + -- if (ret_val = $rundata_(dataidx, data)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -12134,13 +12962,18 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`TABLE.INIT`_instr(y, x)) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation runelem__is_wf: `%%%`(elemidx : elemidx, elem : elem, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule runelem__is_wf0{elemidx : elemidx, elem : elem, ret_val : instr*}: + `%%%`(elemidx, elem, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- wf_elem: `%`(elem) + -- if (ret_val = $runelem_(elemidx, elem)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12153,8 +12986,24 @@ def $evalexprs(state : state, expr*) : (state, ref*) def $evalexprs{z : state, expr : instr*, `expr'*` : expr*, ref : ref, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) -- let{z'' : state, `ref'*` : ref*} (z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`}) - -- wf_ref: `%`(ref) -- wf_state: `%`(z') + -- wf_state: `%`($evalexprs(z', expr'*{expr' <- `expr'*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z', expr'*{expr' <- `expr'*`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation evalexprs_is_wf: `%%%`(state : state, var_0 : expr*, ret_val : (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule evalexprs_is_wf0{state : state, var_0 : expr*, ret_val : (state, ref*)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprs(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12168,6 +13017,25 @@ def $evalexprss(state : state, expr**) : (state, ref**) def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) -- let{`ref*` : ref*, z' : state} (z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`}) -- let{z'' : state, `ref'**` : ref**} (z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) + -- wf_state: `%`($evalexprs(z, expr*{expr <- `expr*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z, expr*{expr <- `expr*`}).1} + -- wf_state: `%`($evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}).0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation evalexprss_is_wf: `%%%`(state : state, var_0 : expr**, ret_val : (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule evalexprss_is_wf0{state : state, var_0 : expr**, ret_val : (state, ref**)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprss(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12183,12 +13051,30 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- let{s : store, f : frame} `%;%`_state(s, f) = z' -- let{s' : store, a : addr} (s', a) = $allocglobal(s, gt, val) -- let{z'' : state, `val'*` : val*} (z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}) - -- wf_val: `%`(val) -- wf_state: `%`(z') + -- wf_store: `%`($allocglobal(s, gt, val).0) + -- wf_state: `%`($evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}).0) + -- (wf_val: `%`(iter))*{iter <- $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}).1} -- wf_state: `%`(`%;%`_state(s, f)) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) } +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation evalglobals_is_wf: `%%%%`(state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule evalglobals_is_wf0{state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)}: + `%%%%`(state, var_0, var_1, ret_val) + -- wf_state: `%`(state) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_instr: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $evalglobals(state, var_0, var_1)) + -- wf_state: `%`(ret_val.0) + -- (wf_val: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12212,7 +13098,18 @@ def $instantiate(store : store, module : module, externaddr*) : config -- let{`instr_E*` : instr*} instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){}) -- let{`instr_S?` : instr?} instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} -- wf_state: `%`(z) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_state: `%`($evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}).0) + -- (wf_val: `%`(iter))*{iter <- $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}).1} + -- wf_state: `%`($evalexprs(z', expr_T*{expr_T <- `expr_T*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z', expr_T*{expr_T <- `expr_T*`}).1} + -- wf_state: `%`($evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`}).0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- $evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`}).1} + -- wf_store: `%`($allocmodule(s''', module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).0) + -- wf_moduleinst: `%`($allocmodule(s''', module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).1) + -- (wf_instr: `%`(iter))*{iter <- $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})} + -- (wf_instr: `%`(iter))*{iter <- $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])}^(i_D<|data*{data <- `data*`}|){} + -- (wf_instr: `%`(iter))*{iter <- $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})} + -- (wf_instr: `%`(iter))*{iter <- $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])}^(i_E<|elem*{elem <- `elem*`}|){} -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} @@ -12227,15 +13124,34 @@ def $instantiate(store : store, module : module, externaddr*) : config -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){} -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation instantiate_is_wf: `%%%%`(store : store, module : module, var_0 : externaddr*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule instantiate_is_wf0{store : store, module : module, var_0 : externaddr*, ret_val : config}: + `%%%%`(store, module, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- if (ret_val = $instantiate(store, module, var_0)) + -- wf_config: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation invoke_is_wf: `%%%%`(store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule invoke_is_wf0{store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config}: + `%%%%`(store, funcaddr, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_val: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $invoke(store, funcaddr, var_0)) + -- wf_config: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec syntax castop = (null?, null?) @@ -12254,6 +13170,14 @@ syntax nopt = u32* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec def $ieee_(N : N, rat : rat) : fNmag +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation ieee__is_wf: `%%%`(N : N, rat : rat, ret_val : fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule ieee__is_wf0{N : N, rat : rat, ret_val : fNmag}: + `%%%`(N, rat, ret_val) + -- if (ret_val = $ieee_(N, rat)) + -- wf_fNmag: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec syntax idctxt = { @@ -12298,11 +13222,23 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 def $concat_idctxt{I : idctxt, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation concat_idctxt_is_wf: `%%`(var_0 : idctxt*, ret_val : idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule concat_idctxt_is_wf0{var_0 : idctxt*, ret_val : idctxt}: + `%%`(var_0, ret_val) + -- (wf_idctxt: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $concat_idctxt(var_0)) + -- wf_idctxt: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -12320,7 +13256,17 @@ relation Idctxt_ok: `|-%:OK`(idctxt) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -- wf_idctxt: `%`(I) + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TYPES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TAGS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.GLOBALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.MEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TABLES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.FUNCS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.DATAS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.ELEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LOCALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LABELS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])}*{`field*` <- `field**`} -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -12435,6 +13381,19 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation importsd_is_wf: `%%`(var_0 : decl*, ret_val : import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule importsd_is_wf0{var_0 : decl*, ret_val : import*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $importsd(var_0)) + -- (wf_import: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 @@ -12448,6 +13407,19 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation tagsd_is_wf: `%%`(var_0 : decl*, ret_val : tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule tagsd_is_wf0{var_0 : decl*, ret_val : tag*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tagsd(var_0)) + -- (wf_tag: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 @@ -12461,6 +13433,19 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation globalsd_is_wf: `%%`(var_0 : decl*, ret_val : global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule globalsd_is_wf0{var_0 : decl*, ret_val : global*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsd(var_0)) + -- (wf_global: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 @@ -12474,6 +13459,19 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation memsd_is_wf: `%%`(var_0 : decl*, ret_val : mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule memsd_is_wf0{var_0 : decl*, ret_val : mem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsd(var_0)) + -- (wf_mem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 @@ -12487,6 +13485,19 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation tablesd_is_wf: `%%`(var_0 : decl*, ret_val : table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule tablesd_is_wf0{var_0 : decl*, ret_val : table*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesd(var_0)) + -- (wf_table: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 @@ -12500,6 +13511,19 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation funcsd_is_wf: `%%`(var_0 : decl*, ret_val : func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule funcsd_is_wf0{var_0 : decl*, ret_val : func*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $funcsd(var_0)) + -- (wf_func: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 @@ -12513,6 +13537,19 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation datasd_is_wf: `%%`(var_0 : decl*, ret_val : data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule datasd_is_wf0{var_0 : decl*, ret_val : data*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $datasd(var_0)) + -- (wf_data: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 @@ -12526,6 +13563,19 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation elemsd_is_wf: `%%`(var_0 : decl*, ret_val : elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule elemsd_is_wf0{var_0 : decl*, ret_val : elem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $elemsd(var_0)) + -- (wf_elem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 @@ -12539,6 +13589,19 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation startsd_is_wf: `%%`(var_0 : decl*, ret_val : start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule startsd_is_wf0{var_0 : decl*, ret_val : start*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $startsd(var_0)) + -- (wf_start: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 def $exportsd(decl*) : export* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 @@ -12549,11 +13612,25 @@ def $exportsd(decl*) : export* def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) } +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation exportsd_is_wf: `%%`(var_0 : decl*, ret_val : export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule exportsd_is_wf0{var_0 : decl*, ret_val : export*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $exportsd(var_0)) + -- (wf_export: `%`(ret_val))*{ret_val <- ret_val} +} + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered(decl*) : bool ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true -- if ($importsd(decl*{decl <- `decl*`}) = []) + -- (wf_import: `%`(iter))*{iter <- $importsd(decl*{decl <- `decl*`})} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) @@ -12577,7 +13654,6 @@ relation Context_ok: `|-%:OK`(context) -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt : reftype <: valtype)])))*{rt <- `rt*`} -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)])))?{rt' <- `rt'?`} -- (if (x!`%`_uN.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} - -- wf_context: `%`(C) -- wf_context: `%`(C_0) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -12591,23 +13667,16 @@ relation Localval_ok: `%|-%:%`(store, val?, localtype) rule set{s : store, val : val, t : valtype}: `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule unset{s : store}: `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, BOT_valtype)) - -- wf_store: `%`(s) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, BOT_valtype)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Datainst_ok: `%|-%:%`(store, datainst, datatype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{s : store, `b*` : byte*}: `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) - -- wf_store: `%`(s) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) @@ -12616,8 +13685,6 @@ relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12626,9 +13693,7 @@ relation Exportinst_ok: `%|-%:OK`(store, exportinst) rule _{s : store, nm : name, xa : externaddr, xt : externtype}: `%|-%:OK`(s, {NAME nm, ADDR xa}) -- Externaddr_ok: `%|-%:%`(s, xa, xt) - -- wf_store: `%`(s) -- wf_externtype: `%`(xt) - -- wf_exportinst: `%`({NAME nm, ADDR xa}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) @@ -12646,9 +13711,6 @@ relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) -- (Exportinst_ok: `%|-%:OK`(s, exportinst))*{exportinst <- `exportinst*`} -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} - -- wf_store: `%`(s) - -- wf_moduleinst: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}) - -- wf_context: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (wf_externtype: `%`(TAG_externtype(tagtype)))*{tagtype <- `tagtype*`} -- (wf_externtype: `%`(GLOBAL_externtype(globaltype)))*{globaltype <- `globaltype*`} @@ -12663,10 +13725,6 @@ relation Frame_ok: `%|-%:%`(store, frame, context) `%|-%:%`(s, {LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}, C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) - -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rec { @@ -12677,29 +13735,18 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) rule plain{s : store, C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 rule ref{s : store, C : context, ref : ref, rt : reftype}: `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_ref: `%`(ref) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) @@ -12709,30 +13756,19 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) -- Frame_ok: `%|-%:%`(s, f, C') -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) -- wf_context: `%`(C') - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRAP_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 @@ -12740,9 +13776,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 rule empty{s : store, C : context}: `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -12750,11 +13783,7 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_uN.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -12766,10 +13795,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 @@ -12777,10 +13802,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 @@ -12789,9 +13810,6 @@ relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) } @@ -12801,8 +13819,6 @@ relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) rule _{s : store, jt : tagtype}: `%|-%:%`(s, {TYPE jt}, jt) -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) - -- wf_store: `%`(s) - -- wf_taginst: `%`({TYPE jt}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12812,10 +13828,8 @@ relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Meminst_ok: `%|-%:%`(store, meminst, memtype) @@ -12824,10 +13838,8 @@ relation Meminst_ok: `%|-%:%`(store, meminst, memtype) `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) - -- wf_store: `%`(s) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) @@ -12837,10 +13849,8 @@ relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- if (|ref*{ref <- `ref*`}| = n) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) @@ -12851,9 +13861,7 @@ relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- Func_ok: `%|-%:%`(C, func, dt') -- Deftype_sub: `%|-%<:%`(C, dt', dt) - -- wf_store: `%`(s) -- wf_context: `%`(C) - -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE (func : func <: funccode)}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12863,8 +13871,6 @@ relation Structinst_ok: `%|-%:OK`(store, structinst) `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} - -- wf_store: `%`(s) - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12874,8 +13880,6 @@ relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} - -- wf_store: `%`(s) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12886,8 +13890,6 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) -- if ((dt : deftype <: typeuse) = s.TAGS_store[ta].TYPE_taginst) -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} - -- wf_store: `%`(s) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12900,9 +13902,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(fv_1, s, fv_2) -- ImmutReachable: `%>>_%%`(fv_1, s, fv') -- ImmutReachable: `%>>_%%`(fv', s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) -- wf_fieldval: `%`(fv') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 @@ -12910,8 +13909,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) @@ -12919,21 +13916,15 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 rule `ref.exn`{a : addr, s : store, i : nat}: `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, (s.EXNS_store[a].FIELDS_exninst[i] : val <: fieldval)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 rule `ref.extern`{ref : ref, s : store}: `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(ref)) } ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12951,9 +13942,6 @@ relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: `~%>>_%%`(fv_1, s, fv_2) -- if $NotImmutReachable(fv_1, s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Store_ok: `|-%:OK`(store) @@ -12974,7 +13962,6 @@ relation Store_ok: `|-%:OK`(store) -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) - -- wf_store: `%`(s) -- (wf_typeuse: `%`(tagtype))*{tagtype <- `tagtype*`} -- (wf_globaltype: `%`(globaltype))*{globaltype <- `globaltype*`} -- (wf_memtype: `%`(memtype))*{memtype <- `memtype*`} @@ -12990,7 +13977,6 @@ relation Extend_taginst: `%<=%`(taginst, taginst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{jt : tagtype}: `%<=%`({TYPE jt}, {TYPE jt}) - -- wf_taginst: `%`({TYPE jt}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_globalinst: `%<=%`(globalinst, globalinst) @@ -12998,8 +13984,6 @@ relation Extend_globalinst: `%<=%`(globalinst, globalinst) rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_meminst: `%<=%`(meminst, meminst) @@ -13008,8 +13992,6 @@ relation Extend_meminst: `%<=%`(meminst, meminst) `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) -- if (n <= n') -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_tableinst: `%<=%`(tableinst, tableinst) @@ -13018,15 +14000,12 @@ relation Extend_tableinst: `%<=%`(tableinst, tableinst) `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) -- if (n <= n') -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_funcinst: `%<=%`(funcinst, funcinst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{dt : deftype, mm : moduleinst, fc : funccode}: `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) - -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_datainst: `%<=%`(datainst, datainst) @@ -13034,8 +14013,6 @@ relation Extend_datainst: `%<=%`(datainst, datainst) rule _{`b*` : byte*, `b'*` : byte*}: `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) - -- wf_datainst: `%`({BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_eleminst: `%<=%`(eleminst, eleminst) @@ -13043,8 +14020,6 @@ relation Extend_eleminst: `%<=%`(eleminst, eleminst) rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) - -- wf_eleminst: `%`({TYPE rt, REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_structinst: `%<=%`(structinst, structinst) @@ -13053,8 +14028,6 @@ relation Extend_structinst: `%<=%`(structinst, structinst) `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -13064,8 +14037,6 @@ relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -13073,7 +14044,6 @@ relation Extend_exninst: `%<=%`(exninst, exninst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{ta : tagaddr, `val*` : val*}: `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_store: `%<=%`(store, store) @@ -13090,8 +14060,6 @@ relation Extend_store: `%<=%`(store, store) -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} - -- wf_store: `%`(s) - -- wf_store: `%`(s') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation State_ok: `|-%:%`(state, context) @@ -13100,8 +14068,6 @@ relation State_ok: `|-%:%`(state, context) `|-%:%`(`%;%`_state(s, f), C) -- Store_ok: `|-%:OK`(s) -- Frame_ok: `%|-%:%`(s, f, C) - -- wf_context: `%`(C) - -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Config_ok: `|-%:OK`(config) @@ -13112,7 +14078,6 @@ relation Config_ok: `|-%:OK`(config) -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) -- (wf_valtype: `%`(t))*{t <- `t*`} - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat @@ -13173,17 +14138,11 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule `i32.add`{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 @@ -13191,8 +14150,6 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) } @@ -13202,27 +14159,26 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation instrdots_is_wf: `%`(ret_val : instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule instrdots_is_wf0{ret_val : instr*}: + `%`(ret_val) + -- if (ret_val = $instrdots) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec syntax label = | `LABEL_%{%}`(n : n, `instr*` : instr*) @@ -13248,6 +14204,15 @@ relation wf_callframe: `%`(callframe) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation allocX_is_wf(syntax X, syntax Y): `%%%%`(store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule allocX_is_wf0{syntax X, syntax Y, store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)}: + `%%%%`(store, X_0, Y_0, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocX(syntax X, syntax Y, store, X_0, Y_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rec { @@ -13259,6 +14224,21 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) -- let{s_2 : store, `a'*` : addr*} (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) + -- wf_store: `%`($allocX(syntax X, syntax Y, s, X, Y).0) + -- wf_store: `%`($allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}).0) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 +relation allocXs_is_wf(syntax X, syntax Y): `%%%%`(store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 + rule allocXs_is_wf0{syntax X, syntax Y, store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocXs(syntax X, syntax Y, store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec diff --git a/spectec/test-middlend/specification.exp/07-else-simplification.il b/spectec/test-middlend/specification.exp/07-else-simplification.il index 034731a017..6dff73eaa9 100644 --- a/spectec/test-middlend/specification.exp/07-else-simplification.il +++ b/spectec/test-middlend/specification.exp/07-else-simplification.il @@ -314,19 +314,40 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fzero_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fzero_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fzero(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fnat_is_wf: `%%%`(N : N, nat : nat, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fnat_is_wf0{N : N, nat : nat, ret_val : fN}: + `%%%`(N, nat, ret_val) + -- if (ret_val = $fnat(N, nat)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fone_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fone_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fone(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -377,23 +398,27 @@ def $utf8(char*) : byte* def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation utf8_is_wf: `%%`(var_0 : char*, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule utf8_is_wf0{var_0 : char*, ret_val : byte*}: + `%%`(var_0, ret_val) + -- (wf_char: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $utf8(var_0)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -582,10 +607,18 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_opt_is_wf: `%%`(var_0 : free?, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_opt_is_wf0{var_0 : free?, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))?{var_0 <- var_0} + -- if (ret_val = $free_opt(var_0)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -593,70 +626,162 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation free_list_is_wf: `%%`(var_0 : free*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule free_list_is_wf0{var_0 : free*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_list(var_0)) + -- wf_free: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_typeidx_is_wf: `%%`(typeidx : typeidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_typeidx_is_wf0{typeidx : typeidx, ret_val : free}: + `%%`(typeidx, ret_val) + -- wf_uN: `%%`(32, typeidx) + -- if (ret_val = $free_typeidx(typeidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_funcidx_is_wf: `%%`(funcidx : funcidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_funcidx_is_wf0{funcidx : funcidx, ret_val : free}: + `%%`(funcidx, ret_val) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $free_funcidx(funcidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_globalidx_is_wf: `%%`(globalidx : globalidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_globalidx_is_wf0{globalidx : globalidx, ret_val : free}: + `%%`(globalidx, ret_val) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $free_globalidx(globalidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tableidx_is_wf: `%%`(tableidx : tableidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tableidx_is_wf0{tableidx : tableidx, ret_val : free}: + `%%`(tableidx, ret_val) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $free_tableidx(tableidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_memidx_is_wf: `%%`(memidx : memidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_memidx_is_wf0{memidx : memidx, ret_val : free}: + `%%`(memidx, ret_val) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $free_memidx(memidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_elemidx_is_wf: `%%`(elemidx : elemidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_elemidx_is_wf0{elemidx : elemidx, ret_val : free}: + `%%`(elemidx, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- if (ret_val = $free_elemidx(elemidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_dataidx_is_wf: `%%`(dataidx : dataidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_dataidx_is_wf0{dataidx : dataidx, ret_val : free}: + `%%`(dataidx, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $free_dataidx(dataidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_localidx_is_wf: `%%`(localidx : localidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_localidx_is_wf0{localidx : localidx, ret_val : free}: + `%%`(localidx, ret_val) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $free_localidx(localidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_labelidx_is_wf: `%%`(labelidx : labelidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_labelidx_is_wf0{labelidx : labelidx, ret_val : free}: + `%%`(labelidx, ret_val) + -- wf_uN: `%%`(32, labelidx) + -- if (ret_val = $free_labelidx(labelidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx(tagidx : tagidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx{tagidx : uN}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tagidx_is_wf: `%%`(tagidx : tagidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tagidx_is_wf0{tagidx : tagidx, ret_val : free}: + `%%`(tagidx, ret_val) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $free_tagidx(tagidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -671,6 +796,15 @@ def $free_externidx(externidx : externidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_externidx_is_wf: `%%`(externidx : externidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_externidx_is_wf0{externidx : externidx, ret_val : free}: + `%%`(externidx, ret_val) + -- wf_externidx: `%`(externidx) + -- if (ret_val = $free_externidx(externidx)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = | NULL @@ -1035,73 +1169,157 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ANYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ANYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ANYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EQREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EQREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EQREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation I31REF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule I31REF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $I31REF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation STRUCTREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule STRUCTREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $STRUCTREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ARRAYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ARRAYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ARRAYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation FUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule FUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $FUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLFUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLFUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLFUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1410,7 +1628,15 @@ def $unpack(storagetype : storagetype) : valtype def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype - -- wf_valtype: `%`(I32_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation unpack_is_wf: `%%`(storagetype : storagetype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule unpack_is_wf0{storagetype : storagetype, ret_val : valtype}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $unpack(storagetype)) + -- wf_valtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1448,10 +1674,18 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation diffrt_is_wf: `%%%`(reftype : reftype, reftype_0 : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule diffrt_is_wf0{reftype : reftype, reftype_0 : reftype, ret_val : reftype}: + `%%%`(reftype, reftype_0, ret_val) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + -- if (ret_val = $diffrt(reftype, reftype_0)) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype? @@ -1489,6 +1723,19 @@ def $globalsxt(externtype*) : globaltype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation globalsxt_is_wf: `%%`(var_0 : externtype*, ret_val : globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule globalsxt_is_wf0{var_0 : externtype*, ret_val : globaltype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsxt(var_0)) + -- (wf_globaltype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 @@ -1502,6 +1749,19 @@ def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation memsxt_is_wf: `%%`(var_0 : externtype*, ret_val : memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule memsxt_is_wf0{var_0 : externtype*, ret_val : memtype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsxt(var_0)) + -- (wf_memtype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 @@ -1515,6 +1775,19 @@ def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation tablesxt_is_wf: `%%`(var_0 : externtype*, ret_val : tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule tablesxt_is_wf0{var_0 : externtype*, ret_val : tabletype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesxt(var_0)) + -- (wf_tabletype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 @@ -1541,6 +1814,21 @@ def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation subst_typevar_is_wf: `%%%%`(typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule subst_typevar_is_wf0{typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typevar, var_0, var_1, ret_val) + -- wf_typevar: `%`(typevar) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($subst_typevar(typevar, var_0, var_1))) + -- wf_typeuse: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.73 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 @@ -1550,11 +1838,27 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})) -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_typevar: `%`(_IDX_typevar(x)) + -- (wf_typevar: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).0} + -- (wf_typeuse: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).1} def $minus_recs{x0 : typevar*, x1 : typeuse*}(x0, x1) = ?() -- otherwise } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation minus_recs_is_wf: `%%%`(var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule minus_recs_is_wf0{var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)}: + `%%%`(var_0, var_1, ret_val) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($minus_recs(var_0, var_1))) + -- (wf_typevar: `%`(iter))*{iter <- ret_val.0} + -- (wf_typeuse: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1593,7 +1897,6 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1605,7 +1908,6 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1618,31 +1920,28 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- (wf_typevar: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).0} + -- (wf_typeuse: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).1} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype @@ -1650,6 +1949,98 @@ def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation subst_typeuse_is_wf: `%%%%`(typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule subst_typeuse_is_wf0{typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typeuse, var_0, var_1, ret_val) + -- wf_typeuse: `%`(typeuse) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_typeuse(typeuse, var_0, var_1)) + -- wf_typeuse: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation subst_heaptype_is_wf: `%%%%`(heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule subst_heaptype_is_wf0{heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype}: + `%%%%`(heaptype, var_0, var_1, ret_val) + -- wf_heaptype: `%`(heaptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_heaptype(heaptype, var_0, var_1)) + -- wf_heaptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation subst_reftype_is_wf: `%%%%`(reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule subst_reftype_is_wf0{reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype}: + `%%%%`(reftype, var_0, var_1, ret_val) + -- wf_reftype: `%`(reftype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_reftype(reftype, var_0, var_1)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation subst_valtype_is_wf: `%%%%`(valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule subst_valtype_is_wf0{valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype}: + `%%%%`(valtype, var_0, var_1, ret_val) + -- wf_valtype: `%`(valtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_valtype(valtype, var_0, var_1)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation subst_storagetype_is_wf: `%%%%`(storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule subst_storagetype_is_wf0{storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype}: + `%%%%`(storagetype, var_0, var_1, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_storagetype(storagetype, var_0, var_1)) + -- wf_storagetype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation subst_fieldtype_is_wf: `%%%%`(fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule subst_fieldtype_is_wf0{fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype}: + `%%%%`(fieldtype, var_0, var_1, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_fieldtype(fieldtype, var_0, var_1)) + -- wf_fieldtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation subst_comptype_is_wf: `%%%%`(comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule subst_comptype_is_wf0{comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype}: + `%%%%`(comptype, var_0, var_1, ret_val) + -- wf_comptype: `%`(comptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_comptype(comptype, var_0, var_1)) + -- wf_comptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation subst_subtype_is_wf: `%%%%`(subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule subst_subtype_is_wf0{subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype}: + `%%%%`(subtype, var_0, var_1, ret_val) + -- wf_subtype: `%`(subtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_subtype(subtype, var_0, var_1)) + -- wf_subtype: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1664,97 +2055,204 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_globaltype_is_wf: `%%%%`(globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_globaltype_is_wf0{globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype}: + `%%%%`(globaltype, var_0, var_1, ret_val) + -- wf_globaltype: `%`(globaltype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_globaltype(globaltype, var_0, var_1)) + -- wf_globaltype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_memtype_is_wf: `%%%%`(memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_memtype_is_wf0{memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype}: + `%%%%`(memtype, var_0, var_1, ret_val) + -- wf_memtype: `%`(memtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_memtype(memtype, var_0, var_1)) + -- wf_memtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_tabletype_is_wf: `%%%%`(tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_tabletype_is_wf0{tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype}: + `%%%%`(tabletype, var_0, var_1, ret_val) + -- wf_tabletype: `%`(tabletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_tabletype(tabletype, var_0, var_1)) + -- wf_tabletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_externtype_is_wf: `%%%%`(externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_externtype_is_wf0{externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype}: + `%%%%`(externtype, var_0, var_1, ret_val) + -- wf_externtype: `%`(externtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_externtype(externtype, var_0, var_1)) + -- wf_externtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_moduletype_is_wf: `%%%%`(moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_moduletype_is_wf0{moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype}: + `%%%%`(moduletype, var_0, var_1, ret_val) + -- wf_moduletype: `%`(moduletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_moduletype(moduletype, var_0, var_1)) + -- wf_moduletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, n : nat, `tu*` : typeuse*, i : nat}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_moduletype_is_wf: `%%`(moduletype : moduletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_moduletype_is_wf0{moduletype : moduletype, ret_val : free}: + `%%`(moduletype, ret_val) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $free_moduletype(moduletype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax num_ = | mk_num__0(Inn : Inn, var_x : iN) @@ -2477,7 +3208,15 @@ relation wf_shape: `%`(shape) def $dim(shape : shape) : dim ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) - -- wf_dim: `%`(`%`_dim(N)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation dim_is_wf: `%%`(shape : shape, ret_val : dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_is_wf0{shape : shape, ret_val : dim}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $dim(shape)) + -- wf_dim: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $lanetype(shape : shape) : lanetype @@ -4221,22 +4960,45 @@ syntax expr = instr* def $memarg0 : memarg ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} - -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation memarg0_is_wf: `%`(ret_val : memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg0_is_wf0{ret_val : memarg}: + `%`(ret_val) + -- if (ret_val = $memarg0) + -- wf_memarg: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const(consttype : consttype, lit_ : lit_) : instr ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{numtype : numtype, c : num_}((numtype : numtype <: consttype), mk_lit__0_lit_(numtype, c)) = CONST_instr(numtype, c) - -- wf_instr: `%`(CONST_instr(numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{vectype : vectype, c : uN}((vectype : vectype <: consttype), mk_lit__1_lit_(vectype, c)) = VCONST_instr(vectype, c) - -- wf_instr: `%`(VCONST_instr(vectype, c)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation const_is_wf: `%%%`(consttype : consttype, lit_ : lit_, ret_val : instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule const_is_wf0{consttype : consttype, lit_ : lit_, ret_val : instr}: + `%%%`(consttype, lit_, ret_val) + -- wf_lit_: `%%`((consttype : consttype <: storagetype), lit_) + -- if (ret_val = $const(consttype, lit_)) + -- wf_instr: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_shape_is_wf: `%%`(shape : shape, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_shape_is_wf0{shape : shape, ret_val : free}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $free_shape(shape)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4244,6 +5006,15 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype{typeidx : uN}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_blocktype_is_wf: `%%`(blocktype : blocktype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_blocktype_is_wf0{blocktype : blocktype, ret_val : free}: + `%%`(blocktype, ret_val) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $free_blocktype(blocktype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4255,6 +5026,15 @@ def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch{labelidx : uN}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_catch_is_wf: `%%`(catch : catch, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_catch_is_wf0{catch : catch, ret_val : free}: + `%%`(catch, ret_val) + -- wf_catch: `%`(catch) + -- if (ret_val = $free_catch(catch)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { @@ -4266,7 +5046,6 @@ def $shift_labelidxs(labelidx*) : labelidx* def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.91 def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4276,13 +5055,10 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-435.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.92 @@ -4313,7 +5089,6 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.66 @@ -4324,7 +5099,6 @@ def $free_instr(instr : instr) : free def $free_instr{tagidx : uN}(THROW_instr(tagidx)) = $free_tagidx(tagidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.32 def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-469.99 def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.63 @@ -4387,13 +5161,10 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.34 def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.38 def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.29 def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 @@ -4402,10 +5173,8 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.30 def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.61 def $free_instr{typeidx : uN}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.69 @@ -4430,7 +5199,6 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.32 def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.61 def $free_instr{typeidx : uN}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.55 @@ -4441,10 +5209,8 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.41 def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 def $free_instr{localidx : uN}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 @@ -4501,6 +5267,30 @@ def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:589.1-590.47 def $free_block{`instr*` : instr*}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] -- let{free : free} free = $free_list($free_instr(instr)*{instr <- `instr*`}) + -- wf_free: `%`($free_list($free_instr(instr)*{instr <- `instr*`})) + -- (wf_free: `%`($free_instr(instr)))*{instr <- `instr*`} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation free_instr_is_wf: `%%`(instr : instr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule free_instr_is_wf0{instr : instr, ret_val : free}: + `%%`(instr, ret_val) + -- wf_instr: `%`(instr) + -- if (ret_val = $free_instr(instr)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation free_block_is_wf: `%%`(var_0 : instr*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule free_block_is_wf0{var_0 : instr*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_block(var_0)) + -- wf_free: `%`(ret_val) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4508,6 +5298,15 @@ def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_expr_is_wf: `%%`(expr : expr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_expr_is_wf0{expr : expr, ret_val : free}: + `%%`(expr, ret_val) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- if (ret_val = $free_expr(expr)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = | ACTIVE(tableidx : tableidx, expr : expr) @@ -4698,85 +5497,216 @@ def $free_type(type : type) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_type_is_wf: `%%`(type : type, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_type_is_wf0{type : type, ret_val : free}: + `%%`(type, ret_val) + -- if (ret_val = $free_type(type)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag(tag : tag) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_tag_is_wf: `%%`(tag : tag, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_tag_is_wf0{tag : tag, ret_val : free}: + `%%`(tag, ret_val) + -- wf_tag: `%`(tag) + -- if (ret_val = $free_tag(tag)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global(global : global) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_global_is_wf: `%%`(global : global, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_global_is_wf0{global : global, ret_val : free}: + `%%`(global, ret_val) + -- wf_global: `%`(global) + -- if (ret_val = $free_global(global)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem(mem : mem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_mem_is_wf: `%%`(mem : mem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_mem_is_wf0{mem : mem, ret_val : free}: + `%%`(mem, ret_val) + -- wf_mem: `%`(mem) + -- if (ret_val = $free_mem(mem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table(table : table) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_table_is_wf: `%%`(table : table, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_table_is_wf0{table : table, ret_val : free}: + `%%`(table, ret_val) + -- wf_table: `%`(table) + -- if (ret_val = $free_table(table)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local(local : local) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_local_is_wf: `%%`(local : local, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_local_is_wf0{local : local, ret_val : free}: + `%%`(local, ret_val) + -- wf_local: `%`(local) + -- if (ret_val = $free_local(local)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func(func : func) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_func_is_wf: `%%`(func : func, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_func_is_wf0{func : func, ret_val : free}: + `%%`(func, ret_val) + -- wf_func: `%`(func) + -- if (ret_val = $free_func(func)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(datamode : datamode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_datamode_is_wf: `%%`(datamode : datamode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_datamode_is_wf0{datamode : datamode, ret_val : free}: + `%%`(datamode, ret_val) + -- wf_datamode: `%`(datamode) + -- if (ret_val = $free_datamode(datamode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_data_is_wf: `%%`(data : data, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_data_is_wf0{data : data, ret_val : free}: + `%%`(data, ret_val) + -- wf_data: `%`(data) + -- if (ret_val = $free_data(data)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(elemmode : elemmode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elemmode_is_wf: `%%`(elemmode : elemmode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elemmode_is_wf0{elemmode : elemmode, ret_val : free}: + `%%`(elemmode, ret_val) + -- wf_elemmode: `%`(elemmode) + -- if (ret_val = $free_elemmode(elemmode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elem_is_wf: `%%`(elem : elem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elem_is_wf0{elem : elem, ret_val : free}: + `%%`(elem, ret_val) + -- wf_elem: `%`(elem) + -- if (ret_val = $free_elem(elem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start(start : start) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_start_is_wf: `%%`(start : start, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_start_is_wf0{start : start, ret_val : free}: + `%%`(start, ret_val) + -- wf_start: `%`(start) + -- if (ret_val = $free_start(start)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import(import : import) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_import_is_wf: `%%`(import : import, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_import_is_wf0{import : import, ret_val : free}: + `%%`(import, ret_val) + -- wf_import: `%`(import) + -- if (ret_val = $free_import(import)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export(export : export) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_export_is_wf: `%%`(export : export, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_export_is_wf0{export : export, ret_val : free}: + `%%`(export, ret_val) + -- wf_export: `%`(export) + -- if (ret_val = $free_export(export)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module(module : module) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_module_is_wf: `%%`(module : module, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_module_is_wf0{module : module, ret_val : free}: + `%%`(module, ret_val) + -- wf_module: `%`(module) + -- if (ret_val = $free_module(module)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $funcidx_module(module : module) : funcidx* ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec @@ -4862,6 +5792,21 @@ def $with_locals(context : context, localidx*, localtype*) : context? ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation with_locals_is_wf: `%%%%`(context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule with_locals_is_wf0{context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context}: + `%%%%`(context, var_0, var_1, ret_val) + -- wf_context: `%`(context) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_localtype: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($with_locals(context, var_0, var_1))) + -- wf_context: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(deftype*) : deftype* ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 @@ -4877,6 +5822,16 @@ def $clos_valtype(context : context, valtype : valtype) : valtype def $clos_valtype{C : context, t : valtype}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_valtype_is_wf: `%%%`(context : context, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_valtype_is_wf0{context : context, valtype : valtype, ret_val : valtype}: + `%%%`(context, valtype, ret_val) + -- wf_context: `%`(context) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $clos_valtype(context, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -4895,25 +5850,43 @@ def $clos_externtype(context : context, externtype : externtype) : externtype def $clos_externtype{C : context, xt : externtype}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_externtype_is_wf: `%%%`(context : context, externtype : externtype, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_externtype_is_wf0{context : context, externtype : externtype, ret_val : externtype}: + `%%%`(context, externtype, ret_val) + -- wf_context: `%`(context) + -- wf_externtype: `%`(externtype) + -- if (ret_val = $clos_externtype(context, externtype)) + -- wf_externtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_moduletype_is_wf: `%%%`(context : context, moduletype : moduletype, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_moduletype_is_wf0{context : context, moduletype : moduletype, ret_val : moduletype}: + `%%%`(context, moduletype, ret_val) + -- wf_context: `%`(context) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $clos_moduletype(context, moduletype)) + -- wf_moduletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypenat = @@ -4924,21 +5897,18 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) @@ -4946,6 +5916,7 @@ relation Expand: `%~~%`(deftype, comptype) rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: `%~~%`(deftype, comptype) -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- wf_subtype: `%`($unrolldt(deftype)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -4953,7 +5924,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, nat : nat) : bool @@ -4971,6 +5941,16 @@ def $unrollht_(context : context, heaptype : heaptype) : subtype ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $unrollht_{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation unrollht__is_wf: `%%%`(context : context, heaptype : heaptype, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule unrollht__is_wf0{context : context, heaptype : heaptype, ret_val : subtype}: + `%%%`(context, heaptype, ret_val) + -- wf_context: `%`(context) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = $unrollht_(context, heaptype)) + -- wf_subtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -4979,20 +5959,15 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 rule bot{C : context}: `%|-%:OK`(C, BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) @@ -5000,8 +5975,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) @@ -5009,26 +5982,20 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) -- Numtype_ok: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) -- Vectype_ok: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) @@ -5036,22 +6003,17 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_uN.0] = dt) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (C.RECS_context[i] = st) - -- wf_context: `%`(C) -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) @@ -5059,8 +6021,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) @@ -5068,8 +6028,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) @@ -5077,14 +6035,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) @@ -5092,23 +6047,17 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) @@ -5121,8 +6070,7 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) -- (if ($unrollht_(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_subtype: `%`($unrollht_(C, (typeuse : typeuse <: heaptype))))*{typeuse <- `typeuse*`} -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 @@ -5130,16 +6078,12 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 rule empty{C : context, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypenat(i)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypenat(i)) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypenat((i + 1))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) @@ -5149,7 +6093,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}}) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 @@ -5158,26 +6101,17 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) @@ -5185,14 +6119,13 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) - -- wf_context: `%`(C) + -- wf_subtype: `%`($unrolldt(deftype_1)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 @@ -5200,8 +6133,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: @@ -5209,118 +6140,79 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) -- wf_heaptype: `%`(heaptype') ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 rule `rec-array`{C : context, i : n, `final?` : final?, fieldtype : fieldtype}: `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 rule `rec-func`{C : context, i : n, `final?` : final?, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 @@ -5328,9 +6220,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) -- wf_heaptype: `%`(ANY_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5339,9 +6228,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) -- wf_heaptype: `%`(FUNC_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5350,9 +6236,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) -- wf_heaptype: `%`(EXN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5361,18 +6244,12 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) -- wf_heaptype: `%`(EXTERN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) @@ -5380,17 +6257,11 @@ relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) @@ -5398,28 +6269,20 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) @@ -5427,9 +6290,6 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) @@ -5437,15 +6297,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) @@ -5453,18 +6309,12 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) } ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5473,8 +6323,6 @@ relation Localtype_ok: `%|-%:OK`(context, localtype) rule _{C : context, init : init, t : valtype}: `%|-%:OK`(C, `%%`_localtype(init, t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) @@ -5484,9 +6332,7 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (if (C.LOCALS_context[x!`%`_uN.0] = lct))*{lct <- `lct*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand_use: `%~~_%%`(typeuse, context, comptype) @@ -5494,16 +6340,11 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) -- Expand: `%~~%`(deftype, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5526,9 +6367,7 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- (if ($unrolldt(C.TYPES_context[x!`%`_uN.0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`($unrolldt(C.TYPES_context[x!`%`_uN.0])))*{x <- `x*`} -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5539,17 +6378,12 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) } @@ -5561,8 +6395,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) @@ -5571,8 +6403,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) `%|-%:OK`(C, typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5581,8 +6411,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Memtype_ok: `%|-%:OK`(context, memtype) @@ -5590,8 +6418,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) @@ -5600,8 +6426,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Externtype_ok: `%|-%:OK`(context, externtype) @@ -5609,37 +6433,27 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5651,10 +6465,8 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) -- (if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_uN: `%%`(32, iter))*{iter <- $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5664,17 +6476,11 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) -- if (n_1 >= n_2) -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule eps{C : context, n_1 : n, n_2 : n}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) -- if (n_1 >= n_2) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) @@ -5683,7 +6489,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) @@ -5691,18 +6496,12 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) @@ -5710,9 +6509,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) @@ -5722,9 +6518,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) @@ -5732,41 +6525,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) - -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) @@ -5774,17 +6552,11 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5794,8 +6566,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_catch(x, l)) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5803,50 +6573,49 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val?? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0))))) - -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))))) - -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(?(VCONST_val(Vnn, `%`_vec_(0)))) - -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) - -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) def $default_{x0 : valtype}(x0) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation default__is_wf: `%%`(valtype : valtype, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule default__is_wf0{valtype : valtype, ret_val : val?}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if (ret_val = !($default_(valtype))) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) -- if (!($default_(t)) =/= ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) @@ -5855,7 +6624,6 @@ relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (m < (2 ^ $size((at : addrtype <: numtype)))) - -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec def $is_packtype(storagetype : storagetype) : bool @@ -5870,33 +6638,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: @@ -5904,18 +6661,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) - -- wf_context: `%`(C) -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5925,8 +6677,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5937,9 +6687,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5950,18 +6697,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: @@ -5969,8 +6710,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]))*{l <- `l*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_uN.0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 @@ -5978,17 +6717,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -5998,10 +6731,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -6011,27 +6741,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- wf_reftype: `%`($diffrt(rt_1, rt_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 @@ -6040,9 +6762,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6052,9 +6771,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 @@ -6064,10 +6780,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6078,10 +6791,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6094,10 +6804,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6108,9 +6815,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6118,9 +6822,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 @@ -6129,8 +6830,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6139,48 +6838,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule `ref.null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule `ref.func`{C : context, x : idx, dt : deftype}: `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) -- if (x <- C.REFS_context) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule `ref.i31`{C : context}: `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule `ref.is_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule `ref.as_non_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule `ref.eq`{C : context}: `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule `ref.test`{C : context, rt : reftype, rt' : reftype}: @@ -6188,9 +6869,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.TEST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: @@ -6198,24 +6876,15 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.CAST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule `i31.get`{C : context, sx : sx}: `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 @@ -6223,9 +6892,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 @@ -6234,9 +6901,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) @@ -6245,9 +6909,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(?(MUT_mut), zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) @@ -6255,9 +6916,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 @@ -6265,18 +6923,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 @@ -6284,9 +6937,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_uN.0], rt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 @@ -6295,9 +6945,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 @@ -6305,34 +6953,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule `array.set`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule `array.len`{C : context}: `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.LEN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule `array.fill`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 @@ -6341,9 +6977,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) @@ -6352,9 +6985,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_uN.0] : reftype <: storagetype), zt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 @@ -6363,115 +6993,77 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule `local.get`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule `local.set`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule `local.tee`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule `global.set`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 @@ -6480,9 +7072,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.TABLES_context[x_1!`%`_uN.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_uN.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) @@ -6492,46 +7081,31 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_uN.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule `elem.drop`{C : context, x : idx, rt : reftype}: `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.ELEMS_context[x!`%`_uN.0] = rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 @@ -6539,9 +7113,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x_1!`%`_uN.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_uN.0] = `%%PAGE`_memtype(at_2, lim_2)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) @@ -6550,27 +7121,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 rule `data.drop`{C : context, x : idx}: `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.DATAS_context[x!`%`_uN.0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 @@ -6578,9 +7140,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 @@ -6588,9 +7147,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 @@ -6598,9 +7154,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 @@ -6608,9 +7161,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 @@ -6618,9 +7168,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 @@ -6628,9 +7175,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 @@ -6638,9 +7182,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 @@ -6649,9 +7190,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 @@ -6659,9 +7197,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 @@ -6670,217 +7205,131 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if (i!`%`_uN.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim(sh!`%`_bshape.0)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -6888,10 +7337,7 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_uN.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -6903,9 +7349,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 @@ -6913,9 +7356,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -6925,8 +7365,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6935,88 +7373,62 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) -- if (!($default_(t)) = ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.null`{C : context, ht : heaptype}: `%|-%CONST`(C, `REF.NULL`_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.i31`{C : context}: `%|-%CONST`(C, `REF.I31`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.func`{C : context, x : idx}: `%|-%CONST`(C, `REF.FUNC`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new_default`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_default`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_fixed`{C : context, x : idx, n : n}: `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `any.convert_extern`{C : context}: `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `extern.convert_any`{C : context}: `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `global.get`{C : context, x : idx, t : valtype}: `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7024,8 +7436,6 @@ relation Instr_const: `%|-%CONST`(context, instr) `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) @@ -7036,8 +7446,6 @@ relation Expr_const: `%|-%CONST`(context, expr) rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) @@ -7046,9 +7454,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) `%|-%:%CONST`(C, expr, t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) @@ -7058,7 +7463,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) -- if (x!`%`_uN.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_oktypeidx: `%`(OK_oktypeidx(x)) @@ -7068,8 +7472,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Global_ok: `%|-%:%`(context, global, globaltype) @@ -7079,8 +7481,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7089,8 +7489,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Table_ok: `%|-%:%`(context, table, tabletype) @@ -7100,8 +7498,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7110,17 +7506,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) @@ -7130,8 +7520,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) @@ -7140,16 +7528,12 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7158,24 +7542,16 @@ relation Data_ok: `%|-%:%`(context, data, datatype) rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: @@ -7183,9 +7559,6 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7196,8 +7569,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Start_ok: `%|-%:OK`(context, start) @@ -7205,8 +7576,6 @@ relation Start_ok: `%|-%:OK`(context, start) rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7215,8 +7584,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Externidx_ok: `%|-%:%`(context, externidx, externtype) @@ -7224,41 +7591,26 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) -- if (C.TAGS_context[x!`%`_uN.0] = jt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) -- if (C.GLOBALS_context[x!`%`_uN.0] = gt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) -- if (C.MEMS_context[x!`%`_uN.0] = mt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) -- if (C.TABLES_context[x!`%`_uN.0] = tt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) -- if (C.FUNCS_context[x!`%`_uN.0] = dt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Export_ok: `%|-%:%%`(context, export, name, externtype) @@ -7266,9 +7618,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) -- Externidx_ok: `%|-%:%`(C, externidx, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { @@ -7278,17 +7627,12 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7300,14 +7644,12 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7331,7 +7673,6 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) @@ -7358,11 +7699,13 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) - -- wf_context: `%`(C) -- wf_context: `%`(C') -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- (wf_uN: `%%`(32, iter))*{iter <- $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}))} + -- (wf_typeuse: `%`(iter))*{iter <- $tagsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_globaltype: `%`(iter))*{iter <- $globalsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_memtype: `%`(iter))*{iter <- $memsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_tabletype: `%`(iter))*{iter <- $tablesxt(xt_I*{xt_I <- `xt_I*`})} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -7404,81 +7747,272 @@ def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmadd : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmadd_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmadd_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_fmadd) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmin : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmin_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmin_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmin) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmax : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmax_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmax_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmax) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_idot : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_idot_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_idot_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_idot) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_iq15mulr : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_iq15mulr_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_iq15mulr_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_iq15mulr) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_u : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_u_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_u_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_trunc_u) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_s : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_s_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_s_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_trunc_s) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_swizzle : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_swizzle_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_swizzle_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_swizzle) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_laneselect : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_laneselect_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_laneselect_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_laneselect) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $s33_to_u32(s33 : s33) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibits_(N : N, iN : iN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibits__is_wf: `%%%`(N : N, iN : iN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibits__is_wf0{N : N, iN : iN, ret_val : bit*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibits_(N, iN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbits_(N : N, fN : fN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbits__is_wf: `%%%`(N : N, fN : fN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbits__is_wf0{N : N, fN : fN, ret_val : bit*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbits_(N, fN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibytes_(N : N, iN : iN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibytes__is_wf: `%%%`(N : N, iN : iN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibytes__is_wf0{N : N, iN : iN, ret_val : byte*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibytes_(N, iN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbytes_(N : N, fN : fN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbytes__is_wf: `%%%`(N : N, fN : fN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbytes__is_wf0{N : N, fN : fN, ret_val : byte*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbytes_(N, fN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $nbytes_(numtype : numtype, num_ : num_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation nbytes__is_wf: `%%%`(numtype : numtype, num_ : num_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule nbytes__is_wf0{numtype : numtype, num_ : num_, ret_val : byte*}: + `%%%`(numtype, num_, ret_val) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $nbytes_(numtype, num_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $vbytes_(vectype : vectype, vec_ : vec_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation vbytes__is_wf: `%%%`(vectype : vectype, vec_ : vec_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule vbytes__is_wf0{vectype : vectype, vec_ : vec_, ret_val : byte*}: + `%%%`(vectype, vec_, ret_val) + -- wf_uN: `%%`($vsize(vectype), vec_) + -- if (ret_val = $vbytes_(vectype, vec_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zbytes__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zbytes__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : byte*}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $zbytes_(storagetype, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cbytes__is_wf: `%%%`(Cnn : Cnn, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cbytes__is_wf0{Cnn : Cnn, lit_ : lit_, ret_val : byte*}: + `%%%`(Cnn, lit_, ret_val) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), lit_) + -- if (ret_val = $cbytes_(Cnn, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibits_(N : N, bit*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbits_(N : N, bit*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbits__is_wf: `%%%`(N : N, var_0 : bit*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbits__is_wf0{N : N, var_0 : bit*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_bit: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbits_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibytes_(N : N, byte*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbytes_(N : N, byte*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbytes__is_wf: `%%%`(N : N, var_0 : byte*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbytes__is_wf0{N : N, var_0 : byte*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbytes_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_nbytes_(numtype : numtype, byte*) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_nbytes__is_wf: `%%%`(numtype : numtype, var_0 : byte*, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_nbytes__is_wf0{numtype : numtype, var_0 : byte*, ret_val : num_}: + `%%%`(numtype, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_nbytes_(numtype, var_0)) + -- wf_num_: `%%`(numtype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_vbytes_(vectype : vectype, byte*) : vec_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_zbytes__is_wf: `%%%`(storagetype : storagetype, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_zbytes__is_wf0{storagetype : storagetype, var_0 : byte*, ret_val : lit_}: + `%%%`(storagetype, var_0, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_zbytes_(storagetype, var_0)) + -- wf_lit_: `%%`(storagetype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_cbytes__is_wf: `%%%`(Cnn : Cnn, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_cbytes__is_wf0{Cnn : Cnn, var_0 : byte*, ret_val : lit_}: + `%%%`(Cnn, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_cbytes_(Cnn, var_0)) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $signed_(N : N, nat : nat) : int ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7510,10 +8044,16 @@ def $sx(storagetype : storagetype) : sx?? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zero_is_wf: `%%`(lanetype : lanetype, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zero_is_wf0{lanetype : lanetype, ret_val : lane_}: + `%%`(lanetype, ret_val) + -- if (ret_val = $zero(lanetype)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7542,7 +8082,6 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -7562,28 +8101,23 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN((i!`%`_uN.0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN((i!`%`_uN.0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7591,7 +8125,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7599,7 +8132,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7607,13 +8139,11 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, i_1!`%`_uN.0)) /\ (j_2 = $signed_(N, i_2!`%`_uN.0))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7641,19 +8171,15 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7704,116 +8230,277 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fabs__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fabs__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fabs_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fneg_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fneg__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fneg__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fneg_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsqrt_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsqrt__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsqrt__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fsqrt_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fceil_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fceil__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fceil__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fceil_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ffloor_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ffloor__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ffloor__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ffloor_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ftrunc_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ftrunc__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ftrunc__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ftrunc_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fnearest_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fnearest__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fnearest__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fnearest_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fadd_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fadd__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fadd__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fadd_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsub_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsub__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsub__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fsub_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmul_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmul__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmul__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmul_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fdiv_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fdiv__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fdiv__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fdiv_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_min__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_min__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_min_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_max__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_max__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_max_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fcopysign_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fcopysign__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fcopysign__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fcopysign_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $feq_(N : N, fN : fN, fN : fN) : u32 @@ -7835,9 +8522,31 @@ def $fge_(N : N, fN : fN, fN : fN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_madd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_madd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_madd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_nmadd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_nmadd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_nmadd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wrap__(M : M, N : N, iN : iN) : iN @@ -7856,26 +8565,69 @@ def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $demote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation demote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule demote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $demote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $promote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation promote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule promote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $promote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $convert__(M : M, N : N, sx : sx, iN : iN) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation convert___is_wf: `%%%%%`(M : M, N : N, sx : sx, iN : iN, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule convert___is_wf0{M : M, N : N, sx : sx, iN : iN, ret_val : fN}: + `%%%%%`(M, N, sx, iN, ret_val) + -- wf_uN: `%%`(M, iN) + -- if (ret_val = $convert__(M, N, sx, iN)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation reinterpret___is_wf: `%%%%`(numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule reinterpret___is_wf0{numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_}: + `%%%%`(numtype_1, numtype_2, num_, ret_val) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $reinterpret__(numtype_1, numtype_2, num_)) + -- wf_num_: `%%`(numtype_2, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) - -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lpacknum__is_wf: `%%%`(lanetype : lanetype, num_ : num_, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lpacknum__is_wf0{lanetype : lanetype, num_ : num_, ret_val : lane_}: + `%%%`(lanetype, num_, ret_val) + -- wf_num_: `%%`($lunpack(lanetype), num_) + -- if (ret_val = $lpacknum_(lanetype, num_)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7883,7 +8635,16 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`((!($cunpack(storagetype)) : consttype <: storagetype), lit_) + -- if (ret_val = $cpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`(storagetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -7891,7 +8652,15 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lunpacknum__is_wf: `%%%`(lanetype : lanetype, lane_ : lane_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lunpacknum__is_wf0{lanetype : lanetype, lane_ : lane_, ret_val : num_}: + `%%%`(lanetype, lane_, ret_val) + -- wf_lane_: `%%`(lanetype, lane_) + -- if (ret_val = $lunpacknum_(lanetype, lane_)) + -- wf_num_: `%%`($lunpack(lanetype), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7899,103 +8668,103 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cunpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cunpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $cunpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`((!($cunpack(storagetype)) : consttype <: storagetype), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation unop__is_wf: `%%%%`(numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule unop__is_wf0{numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*}: + `%%%%`(numtype, unop_, num_, ret_val) + -- wf_unop_: `%%`(numtype, unop_) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $unop_(numtype, unop_, num_)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation binop__is_wf: `%%%%%`(numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule binop__is_wf0{numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*}: + `%%%%%`(numtype, binop_, num_, num__0, ret_val) + -- wf_binop_: `%%`(numtype, binop_) + -- wf_num_: `%%`(numtype, num_) + -- wf_num_: `%%`(numtype, num__0) + -- if (ret_val = $binop_(numtype, binop_, num_, num__0)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -8033,37 +8802,48 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) - -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) - -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cvtop___is_wf: `%%%%%`(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cvtop___is_wf0{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*}: + `%%%%%`(numtype_1, numtype_2, cvtop__, num_, ret_val) + -- wf_cvtop__: `%%%`(numtype_1, numtype_2, cvtop__) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $cvtop__(numtype_1, numtype_2, cvtop__, num_)) + -- (wf_num_: `%%`(numtype_2, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_) : lane_* +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lanes__is_wf: `%%%`(shape : shape, vec_ : vec_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lanes__is_wf0{shape : shape, vec_ : vec_, ret_val : lane_*}: + `%%%`(shape, vec_, ret_val) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(128, vec_) + -- if (ret_val = $lanes_(shape, vec_)) + -- (wf_lane_: `%%`($lanetype(shape), ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $inv_lanes_(shape : shape, lane_*) : vec_ @@ -8108,13 +8888,11 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else (if ($signed_(N, i!`%`_uN.0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[(i!`%`_uN.0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* @@ -8122,8 +8900,9 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* @@ -8131,6 +8910,9 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} @@ -8141,8 +8923,10 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8151,8 +8935,10 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8161,6 +8947,10 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8171,6 +8961,10 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8182,6 +8976,11 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c_3*` : lane_*} c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} @@ -8193,6 +8992,11 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c_3*` : lane_*} c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} @@ -8203,8 +9007,10 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8214,8 +9020,10 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8226,8 +9034,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- if ($isize(Inn) = $fsize(Fnn)) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size((Fnn : Fnn <: numtype)), $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_uN: `%%`(1, `%`_uN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8237,8 +9046,9 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ @@ -8246,8 +9056,9 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 @@ -8255,7 +9066,8 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter))*{iter <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) @@ -8267,8 +9079,10 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ @@ -8277,6 +9091,8 @@ def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : lane_*} c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8304,175 +9120,142 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] -- let{c : iN} c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) + -- wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] -- let{c : fN} c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) + -- wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- let{`c?` : iN?} c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} + -- (wf_uN: `%%`($size((Inn_2 : addrtype <: numtype)), iter))?{iter <- $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- let{`c?` : iN?} c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} + -- (wf_uN: `%%`($size((Inn_2 : addrtype <: numtype)), iter))?{iter <- $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- let{`c*` : fN*} c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} + -- (wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), iter))*{iter <- $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- let{`c*` : fN*} c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} + -- (wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), iter))*{iter <- $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lcvtop___is_wf: `%%%%%`(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lcvtop___is_wf0{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*}: + `%%%%%`(shape_1, shape_2, vcvtop__, lane_, ret_val) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_1, shape_2, vcvtop__) + -- wf_lane_: `%%`($lanetype(shape_1), lane_) + -- if (ret_val = $lcvtop__(shape_1, shape_2, vcvtop__, lane_)) + -- (wf_lane_: `%%`($lanetype(shape_2), ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ @@ -8482,7 +9265,10 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8491,7 +9277,10 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8500,7 +9289,11 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- wf_lane_: `%%`(Lnn_2, $zero(Lnn_2)) + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) @@ -8508,31 +9301,25 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ @@ -8543,6 +9330,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c'_2*` : iN*} c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} @@ -8553,8 +9345,6 @@ def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_uN.0*{i <- `i*`}) - -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ @@ -8563,32 +9353,31 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, iter))*{iter <- $concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1, i_2)))*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, iter))*{iter <- $concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1, i_2)))*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ @@ -8599,8 +9388,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c'_2*` : iN*} c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8612,22 +9404,10 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ @@ -8638,7 +9418,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -8998,20 +9780,38 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval? def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = ?((val : val <: fieldval)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation packfield__is_wf: `%%%`(storagetype : storagetype, val : val, ret_val : fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packfield__is_wf0{storagetype : storagetype, val : val, ret_val : fieldval}: + `%%%`(storagetype, val, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_val: `%`(val) + -- if (ret_val = !($packfield_(storagetype, val))) + -- wf_fieldval: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = ?(val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation unpackfield__is_wf: `%%%%`(storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule unpackfield__is_wf0{storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val}: + `%%%%`(storagetype, var_0, fieldval, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = !($unpackfield_(storagetype, var_0, fieldval))) + -- wf_val: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -9082,11 +9882,29 @@ def $store(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $store{s : store, f : frame}(`%;%`_state(s, f)) = s +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation store_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $store(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $frame(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation frame_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $frame(state)) + -- wf_frame: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tagaddr(state : state) : tagaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9097,61 +9915,169 @@ def $moduleinst(state : state) : moduleinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation moduleinst_is_wf: `%%`(state : state, ret_val : moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_is_wf0{state : state, ret_val : moduleinst}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $moduleinst(state)) + -- wf_moduleinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst(state : state) : taginst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation taginst_is_wf: `%%`(state : state, ret_val : taginst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_is_wf0{state : state, ret_val : taginst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $taginst(state)) + -- (wf_taginst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst(state : state) : globalinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation globalinst_is_wf: `%%`(state : state, ret_val : globalinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_is_wf0{state : state, ret_val : globalinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $globalinst(state)) + -- (wf_globalinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst(state : state) : meminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation meminst_is_wf: `%%`(state : state, ret_val : meminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_is_wf0{state : state, ret_val : meminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $meminst(state)) + -- (wf_meminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst(state : state) : tableinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tableinst_is_wf: `%%`(state : state, ret_val : tableinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_is_wf0{state : state, ret_val : tableinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $tableinst(state)) + -- (wf_tableinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst(state : state) : funcinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation funcinst_is_wf: `%%`(state : state, ret_val : funcinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_is_wf0{state : state, ret_val : funcinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $funcinst(state)) + -- (wf_funcinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst(state : state) : datainst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation datainst_is_wf: `%%`(state : state, ret_val : datainst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_is_wf0{state : state, ret_val : datainst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $datainst(state)) + -- (wf_datainst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst(state : state) : eleminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation eleminst_is_wf: `%%`(state : state, ret_val : eleminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_is_wf0{state : state, ret_val : eleminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $eleminst(state)) + -- (wf_eleminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst(state : state) : structinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation structinst_is_wf: `%%`(state : state, ret_val : structinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_is_wf0{state : state, ret_val : structinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $structinst(state)) + -- (wf_structinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst(state : state) : arrayinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation arrayinst_is_wf: `%%`(state : state, ret_val : arrayinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_is_wf0{state : state, ret_val : arrayinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $arrayinst(state)) + -- (wf_arrayinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst(state : state) : exninst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation exninst_is_wf: `%%`(state : state, ret_val : exninst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_is_wf0{state : state, ret_val : exninst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $exninst(state)) + -- (wf_exninst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof{z : state}(z) = $frame(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fof_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fof_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $fof(state)) + -- wf_frame: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9162,123 +10088,337 @@ def $sof(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $sof{z : state}(z) = $store(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation sof_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule sof_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $sof(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tag_is_wf: `%%%`(state : state, tagidx : tagidx, ret_val : taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tag_is_wf0{state : state, tagidx : tagidx, ret_val : taginst}: + `%%%`(state, tagidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $tag(state, tagidx)) + -- wf_taginst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation global_is_wf: `%%%`(state : state, globalidx : globalidx, ret_val : globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule global_is_wf0{state : state, globalidx : globalidx, ret_val : globalinst}: + `%%%`(state, globalidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $global(state, globalidx)) + -- wf_globalinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation mem_is_wf: `%%%`(state : state, memidx : memidx, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule mem_is_wf0{state : state, memidx : memidx, ret_val : meminst}: + `%%%`(state, memidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $mem(state, memidx)) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation table_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule table_is_wf0{state : state, tableidx : tableidx, ret_val : tableinst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $table(state, tableidx)) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation func_is_wf: `%%%`(state : state, funcidx : funcidx, ret_val : funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule func_is_wf0{state : state, funcidx : funcidx, ret_val : funcinst}: + `%%%`(state, funcidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $func(state, funcidx)) + -- wf_funcinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation data_is_wf: `%%%`(state : state, dataidx : dataidx, ret_val : datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule data_is_wf0{state : state, dataidx : dataidx, ret_val : datainst}: + `%%%`(state, dataidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $data(state, dataidx)) + -- wf_datainst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation elem_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule elem_is_wf0{state : state, tableidx : tableidx, ret_val : eleminst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $elem(state, tableidx)) + -- wf_eleminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[x!`%`_uN.0] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation local_is_wf: `%%%`(state : state, localidx : localidx, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule local_is_wf0{state : state, localidx : localidx, ret_val : val?}: + `%%%`(state, localidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $local(state, localidx)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_uN.0] = ?(v)]) - -- wf_state: `%`(`%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_uN.0] = ?(v)])) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_local_is_wf: `%%%%`(state : state, localidx : localidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_local_is_wf0{state : state, localidx : localidx, val : val, ret_val : state}: + `%%%%`(state, localidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_local(state, localidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_global_is_wf: `%%%%`(state : state, globalidx : globalidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_global_is_wf0{state : state, globalidx : globalidx, val : val, ret_val : state}: + `%%%%`(state, globalidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_global(state, globalidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_table_is_wf: `%%%%%`(state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_table_is_wf0{state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state}: + `%%%%%`(state, tableidx, nat, ref, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_ref: `%`(ref) + -- if (ret_val = $with_table(state, tableidx, nat, ref)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_tableinst_is_wf: `%%%%`(state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_tableinst_is_wf0{state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state}: + `%%%%`(state, tableidx, tableinst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_tableinst: `%`(tableinst) + -- if (ret_val = $with_tableinst(state, tableidx, tableinst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{z : state, x : uN, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_mem_is_wf: `%%%%%%`(state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_mem_is_wf0{state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state}: + `%%%%%%`(state, memidx, nat, nat_0, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_mem(state, memidx, nat, nat_0, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_meminst_is_wf: `%%%%`(state : state, memidx : memidx, meminst : meminst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_meminst_is_wf0{state : state, memidx : memidx, meminst : meminst, ret_val : state}: + `%%%%`(state, memidx, meminst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- wf_meminst: `%`(meminst) + -- if (ret_val = $with_meminst(state, memidx, meminst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{z : state, x : uN, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_elem_is_wf: `%%%%`(state : state, elemidx : elemidx, var_0 : ref*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_elem_is_wf0{state : state, elemidx : elemidx, var_0 : ref*, ret_val : state}: + `%%%%`(state, elemidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, elemidx) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_elem(state, elemidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_data_is_wf: `%%%%`(state : state, dataidx : dataidx, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_data_is_wf0{state : state, dataidx : dataidx, var_0 : byte*, ret_val : state}: + `%%%%`(state, dataidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_data(state, dataidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_struct_is_wf: `%%%%%`(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_struct_is_wf0{state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, structaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_struct(state, structaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_array_is_wf: `%%%%%`(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_array_is_wf0{state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, arrayaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_array(state, arrayaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_structinst_is_wf: `%%%`(state : state, var_0 : structinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_structinst_is_wf0{state : state, var_0 : structinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_structinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_structinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_arrayinst_is_wf: `%%%`(state : state, var_0 : arrayinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_arrayinst_is_wf0{state : state, var_0 : arrayinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_arrayinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_arrayinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_exninst_is_wf: `%%%`(state : state, var_0 : exninst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_exninst_is_wf0{state : state, var_0 : exninst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_exninst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_exninst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? @@ -9289,12 +10429,21 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- if (i'!`%`_uN.0 = (|r'*{r' <- `r'*`}| + n)) -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} -- if ((i'!`%`_uN.0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) - -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growtable_is_wf: `%%%%`(tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growtable_is_wf0{tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst}: + `%%%%`(tableinst, nat, ref, ret_val) + -- wf_tableinst: `%`(tableinst) + -- wf_ref: `%`(ref) + -- if (ret_val = !($growtable(tableinst, nat, ref))) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9304,27 +10453,31 @@ def $growmem(meminst : meminst, nat : nat) : meminst? -- if ((i'!`%`_uN.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} -- if (i'!`%`_uN.0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_meminst: `%`(meminst') -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growmem_is_wf: `%%%`(meminst : meminst, nat : nat, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growmem_is_wf0{meminst : meminst, nat : nat, ret_val : meminst}: + `%%%`(meminst, nat, ret_val) + -- wf_meminst: `%`(meminst) + -- if (ret_val = !($growmem(meminst, nat))) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -9334,65 +10487,41 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.38 rule null{s : store}: `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.NULL_ADDR`_ref) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.33 rule i31{s : store, i : u31}: `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.I31_NUM`_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - -- wf_store: `%`(s) -- wf_exninst: `%`(exn) - -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.35 rule host{s : store, a : addr}: `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.HOST_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 rule extern{s : store, ref : ref}: `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.EXTERN`_ref(ref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) @@ -9401,9 +10530,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) -- wf_reftype: `%`(rt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -9414,31 +10540,22 @@ relation Val_ok: `%|-%:%`(store, val, valtype) rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) -- Num_ok: `%|-%:%`(s, num, nt) - -- wf_store: `%`(s) - -- wf_num: `%`(num) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) -- Vec_ok: `%|-%:%`(s, vec, vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Packval_ok: `%|-%:%`(store, packval, packtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, pt : packtype, c : iN}: `%|-%:%`(s, PACK_packval(pt, c), pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(PACK_packval(pt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) @@ -9446,16 +10563,11 @@ relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) rule val{s : store, val : val, t : valtype}: `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule packval{s : store, packval : packval, pt : packtype}: `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) -- Packval_ok: `%|-%:%`(s, packval, pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(packval) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -9466,44 +10578,32 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-111.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:113.1-115.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:117.1-119.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:121.1-123.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:125.1-128.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) -- wf_externtype: `%`(xt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -9513,36 +10613,82 @@ def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_valtype_is_wf: `%%%`(moduleinst : moduleinst, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_valtype_is_wf0{moduleinst : moduleinst, valtype : valtype, ret_val : valtype}: + `%%%`(moduleinst, valtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $inst_valtype(moduleinst, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_reftype_is_wf: `%%%`(moduleinst : moduleinst, reftype : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_reftype_is_wf0{moduleinst : moduleinst, reftype : reftype, ret_val : reftype}: + `%%%`(moduleinst, reftype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_reftype: `%`(reftype) + -- if (ret_val = $inst_reftype(moduleinst, reftype)) + -- wf_reftype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_globaltype_is_wf: `%%%`(moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_globaltype_is_wf0{moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype}: + `%%%`(moduleinst, globaltype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = $inst_globaltype(moduleinst, globaltype)) + -- wf_globaltype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_memtype_is_wf: `%%%`(moduleinst : moduleinst, memtype : memtype, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_memtype_is_wf0{moduleinst : moduleinst, memtype : memtype, ret_val : memtype}: + `%%%`(moduleinst, memtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $inst_memtype(moduleinst, memtype)) + -- wf_memtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_tabletype_is_wf: `%%%`(moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_tabletype_is_wf0{moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype}: + `%%%`(moduleinst, tabletype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = $inst_tabletype(moduleinst, tabletype)) + -- wf_tabletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9550,265 +10696,174 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) -- if (l!`%`_uN.0 = 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) -- if (l!`%`_uN.0 > 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- if (!($proj_num__0(c))!`%`_uN.0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])]) -- if (!($proj_num__0(i))!`%`_uN.0 < |l*{l <- `l*`}|) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) -- if (!($proj_num__0(i))!`%`_uN.0 >= |l*{l <- `l*`}|) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) -- if (val =/= `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) -- if (val =/= `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-handler`{n : n, `catch*` : catch*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.tee`{val : val, x : idx}: `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.i31`{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instr: `%`(TRAP_instr) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9816,225 +10871,151 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) -- if (ref_1 = ref_2) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref_1 =/= ref_2) -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{sx : sx}: `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(`REF.I31_NUM`_instr(i)) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new`{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`: `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{ref : ref}: `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) -- if (c <- $unop_(nt, unop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) -- if ($unop_(nt, unop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) -- if (c <- $binop_(nt, binop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) -- if ($binop_(nt, binop, c_1, c_2) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvunop_(V128_vectype, vvunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vunop_(sh, vunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) -- if ($vunop_(sh, vunop, c_1) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*}: @@ -10042,71 +11023,53 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)) -- if (!($proj_num__0(c))!`%`_uN.0 = $prod($inez_($jsizenn(Jnn), !($proj_lane__2(i)))!`%`_uN.0*{i <- `i*`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), i))*{i <- `i*`} - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} + -- (wf_uN: `%%`(32, $inez_($jsizenn(Jnn), !($proj_lane__2(i)))))*{i <- `i*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_1)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)} -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) @@ -10114,75 +11077,67 @@ relation Step_pure: `%~>%`(instr*, instr*) rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0])))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_uN: `%%`(32, $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0])))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_uN.0] = $lpacknum_(Lnn, c_2)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_uN.0] = $lpacknum_(Lnn, c_2)])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)} + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_2)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextunop__(sh_1, sh_2, vextunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation blocktype__is_wf: `%%%`(state : state, blocktype : blocktype, ret_val : instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule blocktype__is_wf0{state : state, blocktype : blocktype, ret_val : instrtype}: + `%%%`(state, blocktype, ret_val) + -- wf_state: `%`(state) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $blocktype_(state, blocktype)) + -- wf_instrtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) @@ -10192,8 +11147,7 @@ relation `Step_read_before_br_on_cast-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10204,7 +11158,7 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10212,34 +11166,24 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) @@ -10247,8 +11191,7 @@ relation `Step_read_before_table.fill-zero`: `%`(config) rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-zero`: `%`(config) @@ -10256,8 +11199,8 @@ relation `Step_read_before_table.copy-zero`: `%`(config) rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-le`: `%`(config) @@ -10266,14 +11209,13 @@ relation `Step_read_before_table.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-gt`: `%`(config) @@ -10282,29 +11224,19 @@ relation `Step_read_before_table.copy-gt`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.init-zero`: `%`(config) @@ -10312,8 +11244,8 @@ relation `Step_read_before_table.init-zero`: `%`(config) rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.fill-zero`: `%`(config) @@ -10321,8 +11253,7 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-zero`: `%`(config) @@ -10330,8 +11261,8 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-le`: `%`(config) @@ -10340,14 +11271,13 @@ relation `Step_read_before_memory.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.init-zero`: `%`(config) @@ -10355,8 +11285,8 @@ relation `Step_read_before_memory.init-zero`: `%`(config) rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_ref.test-false`: `%`(config) @@ -10366,8 +11296,7 @@ relation `Step_read_before_ref.test-false`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10378,7 +11307,7 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10387,8 +11316,21 @@ relation `Step_read_before_array.fill-zero`: `%`(config) rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-zero`: `%`(config) @@ -10396,15 +11338,13 @@ relation `Step_read_before_array.copy-zero`: `%`(config) rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-le`: `%`(config) @@ -10413,21 +11353,18 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-gt`: `%`(config) @@ -10437,17 +11374,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10455,37 +11381,52 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.init_elem-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-zero`: `%`(config) @@ -10494,16 +11435,14 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-num`: `%`(config) @@ -10512,23 +11451,20 @@ relation `Step_read_before_array.init_data-num`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) @@ -10536,16 +11472,14 @@ relation Step_read: `%~>%`(config, instr*) rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10554,15 +11488,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: @@ -10570,29 +11502,23 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, yy : typeuse}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: @@ -10601,8 +11527,7 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) @@ -10611,307 +11536,228 @@ relation Step_read: `%~>%`(config, instr*) rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($local(z, x) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) + -- (wf_val: `%`(iter))?{iter <- $local(z, x)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `global.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($global(z, x).VALUE_globalinst = val) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) + -- wf_globalinst: `%`($global(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[!($proj_num__0(i))!`%`_uN.0] : ref <: instr)]) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) - -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tableinst: `%`($table(z, x)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), []) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) -- if (n =/= 0) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), []) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0] : ref <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) -- if (n =/= 0) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) rule `vload-splat-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: @@ -10929,8 +11774,9 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))^M{})) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))^M{})) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))) @@ -10938,8 +11784,7 @@ relation Step_read: `%~>%`(config, instr*) rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: @@ -10947,15 +11792,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: @@ -10964,8 +11809,10 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[j!`%`_uN.0] = mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, k)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[j!`%`_uN.0] = mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))) @@ -10974,49 +11821,39 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) - -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_meminst: `%`($mem(z, x)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), []) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) -- if (n =/= 0) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), []) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -11024,15 +11861,6 @@ relation Step_read: `%~>%`(config, instr*) -- if (n =/= 0) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -11040,55 +11868,33 @@ relation Step_read: `%~>%`(config, instr*) -- if (!($proj_num__0(i_1))!`%`_uN.0 > !($proj_num__0(i_2))!`%`_uN.0) -- if (n =/= 0) -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), []) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$data(z, y).BYTES_datainst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) -- if (n =/= 0) -- if (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL`_instr(ht)])) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])]) - -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -11096,16 +11902,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -11113,37 +11916,31 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))}*{zt <- `zt*`} + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [(!($unpackfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_uN.0])) : val <: instr)]) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11151,33 +11948,28 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (!($default_($unpack(zt))) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))} + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[!($proj_num__0(i))!`%`_uN.0 : n]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(i))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11185,129 +11977,88 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[!($proj_num__0(i))!`%`_uN.0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_byte: `%`(iter))*{iter <- $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))} + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)}^n{c <- `c*`} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[!($proj_num__0(i))!`%`_uN.0])) : val <: instr)]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) - -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) - -- if (n =/= 0) - -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), []) - -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) - -- if (n =/= 0) - -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11316,84 +12067,53 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), []) - -- if ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|) - -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) - -- if (n =/= 0) - -- if ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|) - -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if (ref = $elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0]) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11401,7 +12121,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), []) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: @@ -11409,15 +12128,8 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11429,23 +12141,18 @@ relation Step: `%~>%`(config, config) rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11453,8 +12160,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11462,8 +12167,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11471,8 +12174,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) @@ -11482,104 +12183,88 @@ relation Step: `%~>%`(config, config) -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_taginst: `%`($tag(z, x)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- wf_exninst: `%`({TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 rule `local.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:322.1-323.58 rule `global.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:340.1-342.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-354.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if (ti = !($growtable($table(z, x), n, ref))) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_tableinst: `%`(!($growtable($table(z, x), n, ref))) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:356.1-357.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:417.1-418.51 rule `elem.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:501.1-504.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:506.1-510.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))} + -- wf_uN: `%%`(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-531.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:534.1-537.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + N) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-544.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: @@ -11587,28 +12272,23 @@ relation Step: `%~>%`(config, config) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, `%`_iN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0))} -- wf_uN: `%%`(N, `%`_uN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:553.1-556.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if (mi = !($growmem($mem(z, x), n))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_meminst: `%`(!($growmem($mem(z, x), n))) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:558.1-559.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:619.1-620.51 rule `data.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:700.1-704.65 rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: @@ -11616,23 +12296,18 @@ relation Step: `%~>%`(config, config) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:721.1-722.55 rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:724.1-727.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_uN.0, !($packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val))), [])) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, i!`%`_uN.0, !($packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val))), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:740.1-745.65 @@ -11640,30 +12315,24 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-786.66 rule `array.set-null`{z : state, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:788.1-790.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-795.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, !($packfield_(zt, val))), [])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, !($packfield_(zt, val))), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -11675,7 +12344,6 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: @@ -11683,8 +12351,8 @@ relation Steps: `%~>*%`(config, config) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11717,9 +12385,18 @@ def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) -- if (taginst = {TYPE tagtype}) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_taginst: `%`({TYPE tagtype}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctag_is_wf: `%%%`(store : store, tagtype : tagtype, ret_val : (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctag_is_wf0{store : store, tagtype : tagtype, ret_val : (store, tagaddr)}: + `%%%`(store, tagtype, ret_val) + -- wf_store: `%`(store) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = $alloctag(store, tagtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11731,6 +12408,22 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- let{ja : tagaddr, s_1 : store} (s_1, ja) = $alloctag(s, tagtype) -- let{s_2 : store, `ja'*` : tagaddr*} (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) + -- wf_store: `%`($alloctag(s, tagtype).0) + -- wf_store: `%`($alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation alloctags_is_wf: `%%%`(store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule alloctags_is_wf0{store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_typeuse: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $alloctags(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11738,9 +12431,19 @@ def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, gl ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) -- if (globalinst = {TYPE globaltype, VALUE val}) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocglobal_is_wf: `%%%%`(store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocglobal_is_wf0{store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)}: + `%%%%`(store, globaltype, val, ret_val) + -- wf_store: `%`(store) + -- wf_globaltype: `%`(globaltype) + -- wf_val: `%`(val) + -- if (ret_val = $allocglobal(store, globaltype, val)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11752,6 +12455,23 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- let{ga : globaladdr, s_1 : store} (s_1, ga) = $allocglobal(s, globaltype, val) -- let{s_2 : store, `ga'*` : globaladdr*} (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) + -- wf_store: `%`($allocglobal(s, globaltype, val).0) + -- wf_store: `%`($allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation allocglobals_is_wf: `%%%%`(store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule allocglobals_is_wf0{store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $allocglobals(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11759,9 +12479,18 @@ def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmem_is_wf: `%%%`(store : store, memtype : memtype, ret_val : (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmem_is_wf0{store : store, memtype : memtype, ret_val : (store, memaddr)}: + `%%%`(store, memtype, ret_val) + -- wf_store: `%`(store) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $allocmem(store, memtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11773,6 +12502,22 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- let{ma : memaddr, s_1 : store} (s_1, ma) = $allocmem(s, memtype) -- let{s_2 : store, `ma'*` : memaddr*} (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) + -- wf_store: `%`($allocmem(s, memtype).0) + -- wf_store: `%`($allocmems(s_1, memtype'*{memtype' <- `memtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation allocmems_is_wf: `%%%`(store : store, var_0 : memtype*, ret_val : (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule allocmems_is_wf0{store : store, var_0 : memtype*, ret_val : (store, memaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_memtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocmems(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11780,9 +12525,19 @@ def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, table ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctable_is_wf: `%%%%`(store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctable_is_wf0{store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)}: + `%%%%`(store, tabletype, ref, ret_val) + -- wf_store: `%`(store) + -- wf_tabletype: `%`(tabletype) + -- wf_ref: `%`(ref) + -- if (ret_val = $alloctable(store, tabletype, ref)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11794,6 +12549,23 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- let{ta : tableaddr, s_1 : store} (s_1, ta) = $alloctable(s, tabletype, ref) -- let{s_2 : store, `ta'*` : tableaddr*} (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) + -- wf_store: `%`($alloctable(s, tabletype, ref).0) + -- wf_store: `%`($alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation alloctables_is_wf: `%%%%`(store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule alloctables_is_wf0{store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_tabletype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $alloctables(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11801,9 +12573,19 @@ def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocfunc_is_wf: `%%%%%`(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocfunc_is_wf0{store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)}: + `%%%%%`(store, deftype, funccode, moduleinst, ret_val) + -- wf_store: `%`(store) + -- wf_funccode: `%`(funccode) + -- wf_moduleinst: `%`(moduleinst) + -- if (ret_val = $allocfunc(store, deftype, funccode, moduleinst)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11815,6 +12597,23 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- let{fa : funcaddr, s_1 : store} (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) -- let{s_2 : store, `fa'*` : funcaddr*} (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) + -- wf_store: `%`($allocfunc(s, dt, funccode, moduleinst).0) + -- wf_store: `%`($allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation allocfuncs_is_wf: `%%%%%`(store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule allocfuncs_is_wf0{store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)}: + `%%%%%`(store, var_0, var_1, var_2, ret_val) + -- wf_store: `%`(store) + -- (wf_funccode: `%`(var_1))*{var_1 <- var_1} + -- (wf_moduleinst: `%`(var_2))*{var_2 <- var_2} + -- if (ret_val = $allocfuncs(store, var_0, var_1, var_2)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11822,9 +12621,18 @@ def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocdata_is_wf: `%%%%`(store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocdata_is_wf0{store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)}: + `%%%%`(store, datatype, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocdata(store, datatype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11836,6 +12644,22 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) -- let{da : dataaddr, s_1 : store} (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) -- let{s_2 : store, `da'*` : dataaddr*} (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) + -- wf_store: `%`($allocdata(s, ok, b*{b <- `b*`}).0) + -- wf_store: `%`($allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation allocdatas_is_wf: `%%%%`(store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule allocdatas_is_wf0{store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocdatas(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11843,9 +12667,19 @@ def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocelem_is_wf: `%%%%`(store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocelem_is_wf0{store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)}: + `%%%%`(store, elemtype, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_reftype: `%`(elemtype) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocelem(store, elemtype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11857,31 +12691,63 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- let{ea : elemaddr, s_1 : store} (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- wf_store: `%`($allocelem(s, rt, ref*{ref <- `ref*`}).0) + -- wf_store: `%`($allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation allocelems_is_wf: `%%%%`(store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule allocelems_is_wf0{store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_reftype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocelems(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexport_is_wf: `%%%`(moduleinst : moduleinst, export : export, ret_val : exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexport_is_wf0{moduleinst : moduleinst, export : export, ret_val : exportinst}: + `%%%`(moduleinst, export, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_export: `%`(export) + -- if (ret_val = $allocexport(moduleinst, export)) + -- wf_exportinst: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexports_is_wf: `%%%`(moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexports_is_wf0{moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*}: + `%%%`(moduleinst, var_0, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- (wf_export: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocexports(moduleinst, var_0)) + -- (wf_exportinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11910,8 +12776,19 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_uN.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`($alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}).0) + -- (wf_typeuse: `%`($subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{tagtype <- `tagtype*`} + -- wf_store: `%`($allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`}).0) + -- (wf_globaltype: `%`($subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{globaltype <- `globaltype*`} + -- wf_store: `%`($allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}).0) + -- (wf_memtype: `%`($subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{memtype <- `memtype*`} + -- wf_store: `%`($alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`}).0) + -- (wf_tabletype: `%`($subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{tabletype <- `tabletype*`} + -- wf_store: `%`($allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}).0) + -- wf_store: `%`($allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).0) + -- (wf_reftype: `%`($subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{elemtype <- `elemtype*`} + -- wf_store: `%`($allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_uN.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{}).0) + -- (wf_exportinst: `%`(iter))*{iter <- $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})} -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} @@ -11923,16 +12800,36 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmodule_is_wf: `%%%%%%%`(store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmodule_is_wf0{store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)}: + `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- (wf_ref: `%`(var_2))*{var_2 <- var_2} + -- (wf_ref: `%`(var_3))*{var_3 <- var_3}*{var_3 <- var_3} + -- if (ret_val = $allocmodule(store, module, var_0, var_1, var_2, var_3)) + -- wf_store: `%`(ret_val.0) + -- wf_moduleinst: `%`(ret_val.1) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_(dataidx : dataidx, data : data) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, n : nat, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(y, x)) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation rundata__is_wf: `%%%`(dataidx : dataidx, data : data, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule rundata__is_wf0{dataidx : dataidx, data : data, ret_val : instr*}: + `%%%`(dataidx, data, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- wf_data: `%`(data) + -- if (ret_val = $rundata_(dataidx, data)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -11940,13 +12837,18 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`TABLE.INIT`_instr(y, x)) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation runelem__is_wf: `%%%`(elemidx : elemidx, elem : elem, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule runelem__is_wf0{elemidx : elemidx, elem : elem, ret_val : instr*}: + `%%%`(elemidx, elem, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- wf_elem: `%`(elem) + -- if (ret_val = $runelem_(elemidx, elem)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11959,8 +12861,24 @@ def $evalexprs(state : state, expr*) : (state, ref*) def $evalexprs{z : state, expr : instr*, `expr'*` : expr*, ref : ref, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) -- let{z'' : state, `ref'*` : ref*} (z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`}) - -- wf_ref: `%`(ref) -- wf_state: `%`(z') + -- wf_state: `%`($evalexprs(z', expr'*{expr' <- `expr'*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z', expr'*{expr' <- `expr'*`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation evalexprs_is_wf: `%%%`(state : state, var_0 : expr*, ret_val : (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule evalexprs_is_wf0{state : state, var_0 : expr*, ret_val : (state, ref*)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprs(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11974,6 +12892,25 @@ def $evalexprss(state : state, expr**) : (state, ref**) def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) -- let{`ref*` : ref*, z' : state} (z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`}) -- let{z'' : state, `ref'**` : ref**} (z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) + -- wf_state: `%`($evalexprs(z, expr*{expr <- `expr*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z, expr*{expr <- `expr*`}).1} + -- wf_state: `%`($evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}).0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation evalexprss_is_wf: `%%%`(state : state, var_0 : expr**, ret_val : (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule evalexprss_is_wf0{state : state, var_0 : expr**, ret_val : (state, ref**)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprss(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11989,12 +12926,30 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- let{s : store, f : frame} `%;%`_state(s, f) = z' -- let{s' : store, a : addr} (s', a) = $allocglobal(s, gt, val) -- let{z'' : state, `val'*` : val*} (z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}) - -- wf_val: `%`(val) -- wf_state: `%`(z') + -- wf_store: `%`($allocglobal(s, gt, val).0) + -- wf_state: `%`($evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}).0) + -- (wf_val: `%`(iter))*{iter <- $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}).1} -- wf_state: `%`(`%;%`_state(s, f)) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) } +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation evalglobals_is_wf: `%%%%`(state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule evalglobals_is_wf0{state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)}: + `%%%%`(state, var_0, var_1, ret_val) + -- wf_state: `%`(state) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_instr: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $evalglobals(state, var_0, var_1)) + -- wf_state: `%`(ret_val.0) + -- (wf_val: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12018,7 +12973,18 @@ def $instantiate(store : store, module : module, externaddr*) : config -- let{`instr_E*` : instr*} instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){}) -- let{`instr_S?` : instr?} instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} -- wf_state: `%`(z) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_state: `%`($evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}).0) + -- (wf_val: `%`(iter))*{iter <- $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}).1} + -- wf_state: `%`($evalexprs(z', expr_T*{expr_T <- `expr_T*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z', expr_T*{expr_T <- `expr_T*`}).1} + -- wf_state: `%`($evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`}).0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- $evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`}).1} + -- wf_store: `%`($allocmodule(s''', module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).0) + -- wf_moduleinst: `%`($allocmodule(s''', module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).1) + -- (wf_instr: `%`(iter))*{iter <- $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})} + -- (wf_instr: `%`(iter))*{iter <- $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])}^(i_D<|data*{data <- `data*`}|){} + -- (wf_instr: `%`(iter))*{iter <- $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})} + -- (wf_instr: `%`(iter))*{iter <- $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])}^(i_E<|elem*{elem <- `elem*`}|){} -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} @@ -12033,15 +12999,34 @@ def $instantiate(store : store, module : module, externaddr*) : config -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){} -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation instantiate_is_wf: `%%%%`(store : store, module : module, var_0 : externaddr*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule instantiate_is_wf0{store : store, module : module, var_0 : externaddr*, ret_val : config}: + `%%%%`(store, module, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- if (ret_val = $instantiate(store, module, var_0)) + -- wf_config: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation invoke_is_wf: `%%%%`(store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule invoke_is_wf0{store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config}: + `%%%%`(store, funcaddr, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_val: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $invoke(store, funcaddr, var_0)) + -- wf_config: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec syntax castop = (null?, null?) @@ -12060,6 +13045,14 @@ syntax nopt = u32* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec def $ieee_(N : N, rat : rat) : fNmag +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation ieee__is_wf: `%%%`(N : N, rat : rat, ret_val : fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule ieee__is_wf0{N : N, rat : rat, ret_val : fNmag}: + `%%%`(N, rat, ret_val) + -- if (ret_val = $ieee_(N, rat)) + -- wf_fNmag: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec syntax idctxt = { @@ -12104,11 +13097,23 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 def $concat_idctxt{I : idctxt, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation concat_idctxt_is_wf: `%%`(var_0 : idctxt*, ret_val : idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule concat_idctxt_is_wf0{var_0 : idctxt*, ret_val : idctxt}: + `%%`(var_0, ret_val) + -- (wf_idctxt: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $concat_idctxt(var_0)) + -- wf_idctxt: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -12126,7 +13131,17 @@ relation Idctxt_ok: `|-%:OK`(idctxt) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -- wf_idctxt: `%`(I) + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TYPES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TAGS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.GLOBALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.MEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TABLES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.FUNCS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.DATAS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.ELEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LOCALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LABELS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])}*{`field*` <- `field**`} -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -12241,6 +13256,19 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation importsd_is_wf: `%%`(var_0 : decl*, ret_val : import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule importsd_is_wf0{var_0 : decl*, ret_val : import*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $importsd(var_0)) + -- (wf_import: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 @@ -12254,6 +13282,19 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation tagsd_is_wf: `%%`(var_0 : decl*, ret_val : tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule tagsd_is_wf0{var_0 : decl*, ret_val : tag*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tagsd(var_0)) + -- (wf_tag: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 @@ -12267,6 +13308,19 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation globalsd_is_wf: `%%`(var_0 : decl*, ret_val : global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule globalsd_is_wf0{var_0 : decl*, ret_val : global*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsd(var_0)) + -- (wf_global: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 @@ -12280,6 +13334,19 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation memsd_is_wf: `%%`(var_0 : decl*, ret_val : mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule memsd_is_wf0{var_0 : decl*, ret_val : mem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsd(var_0)) + -- (wf_mem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 @@ -12293,6 +13360,19 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation tablesd_is_wf: `%%`(var_0 : decl*, ret_val : table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule tablesd_is_wf0{var_0 : decl*, ret_val : table*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesd(var_0)) + -- (wf_table: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 @@ -12306,6 +13386,19 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation funcsd_is_wf: `%%`(var_0 : decl*, ret_val : func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule funcsd_is_wf0{var_0 : decl*, ret_val : func*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $funcsd(var_0)) + -- (wf_func: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 @@ -12319,6 +13412,19 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation datasd_is_wf: `%%`(var_0 : decl*, ret_val : data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule datasd_is_wf0{var_0 : decl*, ret_val : data*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $datasd(var_0)) + -- (wf_data: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 @@ -12332,6 +13438,19 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation elemsd_is_wf: `%%`(var_0 : decl*, ret_val : elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule elemsd_is_wf0{var_0 : decl*, ret_val : elem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $elemsd(var_0)) + -- (wf_elem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 @@ -12345,6 +13464,19 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation startsd_is_wf: `%%`(var_0 : decl*, ret_val : start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule startsd_is_wf0{var_0 : decl*, ret_val : start*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $startsd(var_0)) + -- (wf_start: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 def $exportsd(decl*) : export* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 @@ -12355,11 +13487,25 @@ def $exportsd(decl*) : export* def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) } +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation exportsd_is_wf: `%%`(var_0 : decl*, ret_val : export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule exportsd_is_wf0{var_0 : decl*, ret_val : export*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $exportsd(var_0)) + -- (wf_export: `%`(ret_val))*{ret_val <- ret_val} +} + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered(decl*) : bool ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true -- if ($importsd(decl*{decl <- `decl*`}) = []) + -- (wf_import: `%`(iter))*{iter <- $importsd(decl*{decl <- `decl*`})} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) @@ -12383,7 +13529,6 @@ relation Context_ok: `|-%:OK`(context) -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt : reftype <: valtype)])))*{rt <- `rt*`} -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)])))?{rt' <- `rt'?`} -- (if (x!`%`_uN.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} - -- wf_context: `%`(C) -- wf_context: `%`(C_0) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -12397,23 +13542,16 @@ relation Localval_ok: `%|-%:%`(store, val?, localtype) rule set{s : store, val : val, t : valtype}: `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule unset{s : store}: `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, BOT_valtype)) - -- wf_store: `%`(s) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, BOT_valtype)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Datainst_ok: `%|-%:%`(store, datainst, datatype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{s : store, `b*` : byte*}: `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) - -- wf_store: `%`(s) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) @@ -12422,8 +13560,6 @@ relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12432,9 +13568,7 @@ relation Exportinst_ok: `%|-%:OK`(store, exportinst) rule _{s : store, nm : name, xa : externaddr, xt : externtype}: `%|-%:OK`(s, {NAME nm, ADDR xa}) -- Externaddr_ok: `%|-%:%`(s, xa, xt) - -- wf_store: `%`(s) -- wf_externtype: `%`(xt) - -- wf_exportinst: `%`({NAME nm, ADDR xa}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) @@ -12452,9 +13586,6 @@ relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) -- (Exportinst_ok: `%|-%:OK`(s, exportinst))*{exportinst <- `exportinst*`} -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} - -- wf_store: `%`(s) - -- wf_moduleinst: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}) - -- wf_context: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (wf_externtype: `%`(TAG_externtype(tagtype)))*{tagtype <- `tagtype*`} -- (wf_externtype: `%`(GLOBAL_externtype(globaltype)))*{globaltype <- `globaltype*`} @@ -12469,10 +13600,6 @@ relation Frame_ok: `%|-%:%`(store, frame, context) `%|-%:%`(s, {LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}, C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) - -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rec { @@ -12483,29 +13610,18 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) rule plain{s : store, C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 rule ref{s : store, C : context, ref : ref, rt : reftype}: `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_ref: `%`(ref) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) @@ -12515,30 +13631,19 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) -- Frame_ok: `%|-%:%`(s, f, C') -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) -- wf_context: `%`(C') - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRAP_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 @@ -12546,9 +13651,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 rule empty{s : store, C : context}: `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -12556,11 +13658,7 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_uN.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -12572,10 +13670,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 @@ -12583,10 +13677,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 @@ -12595,9 +13685,6 @@ relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) } @@ -12607,8 +13694,6 @@ relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) rule _{s : store, jt : tagtype}: `%|-%:%`(s, {TYPE jt}, jt) -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) - -- wf_store: `%`(s) - -- wf_taginst: `%`({TYPE jt}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12618,10 +13703,8 @@ relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Meminst_ok: `%|-%:%`(store, meminst, memtype) @@ -12630,10 +13713,8 @@ relation Meminst_ok: `%|-%:%`(store, meminst, memtype) `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) - -- wf_store: `%`(s) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) @@ -12643,10 +13724,8 @@ relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- if (|ref*{ref <- `ref*`}| = n) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) @@ -12657,9 +13736,7 @@ relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- Func_ok: `%|-%:%`(C, func, dt') -- Deftype_sub: `%|-%<:%`(C, dt', dt) - -- wf_store: `%`(s) -- wf_context: `%`(C) - -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE (func : func <: funccode)}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12669,8 +13746,6 @@ relation Structinst_ok: `%|-%:OK`(store, structinst) `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} - -- wf_store: `%`(s) - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12680,8 +13755,6 @@ relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} - -- wf_store: `%`(s) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12692,8 +13765,6 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) -- if ((dt : deftype <: typeuse) = s.TAGS_store[ta].TYPE_taginst) -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} - -- wf_store: `%`(s) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12706,9 +13777,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(fv_1, s, fv_2) -- ImmutReachable: `%>>_%%`(fv_1, s, fv') -- ImmutReachable: `%>>_%%`(fv', s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) -- wf_fieldval: `%`(fv') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 @@ -12716,8 +13784,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) @@ -12725,21 +13791,15 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 rule `ref.exn`{a : addr, s : store, i : nat}: `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, (s.EXNS_store[a].FIELDS_exninst[i] : val <: fieldval)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 rule `ref.extern`{ref : ref, s : store}: `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(ref)) } ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12757,9 +13817,6 @@ relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: `~%>>_%%`(fv_1, s, fv_2) -- if $NotImmutReachable(fv_1, s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Store_ok: `|-%:OK`(store) @@ -12780,7 +13837,6 @@ relation Store_ok: `|-%:OK`(store) -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) - -- wf_store: `%`(s) -- (wf_typeuse: `%`(tagtype))*{tagtype <- `tagtype*`} -- (wf_globaltype: `%`(globaltype))*{globaltype <- `globaltype*`} -- (wf_memtype: `%`(memtype))*{memtype <- `memtype*`} @@ -12796,7 +13852,6 @@ relation Extend_taginst: `%<=%`(taginst, taginst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{jt : tagtype}: `%<=%`({TYPE jt}, {TYPE jt}) - -- wf_taginst: `%`({TYPE jt}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_globalinst: `%<=%`(globalinst, globalinst) @@ -12804,8 +13859,6 @@ relation Extend_globalinst: `%<=%`(globalinst, globalinst) rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_meminst: `%<=%`(meminst, meminst) @@ -12814,8 +13867,6 @@ relation Extend_meminst: `%<=%`(meminst, meminst) `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) -- if (n <= n') -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_tableinst: `%<=%`(tableinst, tableinst) @@ -12824,15 +13875,12 @@ relation Extend_tableinst: `%<=%`(tableinst, tableinst) `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) -- if (n <= n') -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_funcinst: `%<=%`(funcinst, funcinst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{dt : deftype, mm : moduleinst, fc : funccode}: `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) - -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_datainst: `%<=%`(datainst, datainst) @@ -12840,8 +13888,6 @@ relation Extend_datainst: `%<=%`(datainst, datainst) rule _{`b*` : byte*, `b'*` : byte*}: `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) - -- wf_datainst: `%`({BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_eleminst: `%<=%`(eleminst, eleminst) @@ -12849,8 +13895,6 @@ relation Extend_eleminst: `%<=%`(eleminst, eleminst) rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) - -- wf_eleminst: `%`({TYPE rt, REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_structinst: `%<=%`(structinst, structinst) @@ -12859,8 +13903,6 @@ relation Extend_structinst: `%<=%`(structinst, structinst) `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12870,8 +13912,6 @@ relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12879,7 +13919,6 @@ relation Extend_exninst: `%<=%`(exninst, exninst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{ta : tagaddr, `val*` : val*}: `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_store: `%<=%`(store, store) @@ -12896,8 +13935,6 @@ relation Extend_store: `%<=%`(store, store) -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} - -- wf_store: `%`(s) - -- wf_store: `%`(s') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation State_ok: `|-%:%`(state, context) @@ -12906,8 +13943,6 @@ relation State_ok: `|-%:%`(state, context) `|-%:%`(`%;%`_state(s, f), C) -- Store_ok: `|-%:OK`(s) -- Frame_ok: `%|-%:%`(s, f, C) - -- wf_context: `%`(C) - -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Config_ok: `|-%:OK`(config) @@ -12918,7 +13953,6 @@ relation Config_ok: `|-%:OK`(config) -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) -- (wf_valtype: `%`(t))*{t <- `t*`} - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat @@ -12979,17 +14013,11 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule `i32.add`{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 @@ -12997,8 +14025,6 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) } @@ -13008,27 +14034,26 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation instrdots_is_wf: `%`(ret_val : instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule instrdots_is_wf0{ret_val : instr*}: + `%`(ret_val) + -- if (ret_val = $instrdots) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec syntax label = | `LABEL_%{%}`(n : n, `instr*` : instr*) @@ -13054,6 +14079,15 @@ relation wf_callframe: `%`(callframe) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation allocX_is_wf(syntax X, syntax Y): `%%%%`(store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule allocX_is_wf0{syntax X, syntax Y, store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)}: + `%%%%`(store, X_0, Y_0, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocX(syntax X, syntax Y, store, X_0, Y_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rec { @@ -13065,6 +14099,21 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) -- let{s_2 : store, `a'*` : addr*} (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) + -- wf_store: `%`($allocX(syntax X, syntax Y, s, X, Y).0) + -- wf_store: `%`($allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}).0) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 +relation allocXs_is_wf(syntax X, syntax Y): `%%%%`(store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 + rule allocXs_is_wf0{syntax X, syntax Y, store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocXs(syntax X, syntax Y, store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec @@ -15431,7 +16480,7 @@ grammar Tblocktype_(I : I) : blocktype prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tcatch_(I : I) : catch @@ -15502,7 +16551,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "return" => RETURN_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -15511,7 +16560,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec diff --git a/spectec/test-middlend/specification.exp/08-uncase-removal.il b/spectec/test-middlend/specification.exp/08-uncase-removal.il index 2f3d052fab..0a4cb96f46 100644 --- a/spectec/test-middlend/specification.exp/08-uncase-removal.il +++ b/spectec/test-middlend/specification.exp/08-uncase-removal.il @@ -329,19 +329,40 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fzero_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fzero_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fzero(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fnat_is_wf: `%%%`(N : N, nat : nat, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fnat_is_wf0{N : N, nat : nat, ret_val : fN}: + `%%%`(N, nat, ret_val) + -- if (ret_val = $fnat(N, nat)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fone_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fone_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fone(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -402,23 +423,27 @@ def $utf8(char*) : byte* def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation utf8_is_wf: `%%`(var_0 : char*, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule utf8_is_wf0{var_0 : char*, ret_val : byte*}: + `%%`(var_0, ret_val) + -- (wf_char: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $utf8(var_0)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -612,10 +637,18 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_opt_is_wf: `%%`(var_0 : free?, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_opt_is_wf0{var_0 : free?, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))?{var_0 <- var_0} + -- if (ret_val = $free_opt(var_0)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -623,70 +656,162 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation free_list_is_wf: `%%`(var_0 : free*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule free_list_is_wf0{var_0 : free*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_list(var_0)) + -- wf_free: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_typeidx_is_wf: `%%`(typeidx : typeidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_typeidx_is_wf0{typeidx : typeidx, ret_val : free}: + `%%`(typeidx, ret_val) + -- wf_uN: `%%`(32, typeidx) + -- if (ret_val = $free_typeidx(typeidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_funcidx_is_wf: `%%`(funcidx : funcidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_funcidx_is_wf0{funcidx : funcidx, ret_val : free}: + `%%`(funcidx, ret_val) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $free_funcidx(funcidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_globalidx_is_wf: `%%`(globalidx : globalidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_globalidx_is_wf0{globalidx : globalidx, ret_val : free}: + `%%`(globalidx, ret_val) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $free_globalidx(globalidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tableidx_is_wf: `%%`(tableidx : tableidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tableidx_is_wf0{tableidx : tableidx, ret_val : free}: + `%%`(tableidx, ret_val) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $free_tableidx(tableidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_memidx_is_wf: `%%`(memidx : memidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_memidx_is_wf0{memidx : memidx, ret_val : free}: + `%%`(memidx, ret_val) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $free_memidx(memidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_elemidx_is_wf: `%%`(elemidx : elemidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_elemidx_is_wf0{elemidx : elemidx, ret_val : free}: + `%%`(elemidx, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- if (ret_val = $free_elemidx(elemidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_dataidx_is_wf: `%%`(dataidx : dataidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_dataidx_is_wf0{dataidx : dataidx, ret_val : free}: + `%%`(dataidx, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $free_dataidx(dataidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_localidx_is_wf: `%%`(localidx : localidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_localidx_is_wf0{localidx : localidx, ret_val : free}: + `%%`(localidx, ret_val) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $free_localidx(localidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_labelidx_is_wf: `%%`(labelidx : labelidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_labelidx_is_wf0{labelidx : labelidx, ret_val : free}: + `%%`(labelidx, ret_val) + -- wf_uN: `%%`(32, labelidx) + -- if (ret_val = $free_labelidx(labelidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx(tagidx : tagidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx{tagidx : uN}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tagidx_is_wf: `%%`(tagidx : tagidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tagidx_is_wf0{tagidx : tagidx, ret_val : free}: + `%%`(tagidx, ret_val) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $free_tagidx(tagidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -701,6 +826,15 @@ def $free_externidx(externidx : externidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_externidx_is_wf: `%%`(externidx : externidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_externidx_is_wf0{externidx : externidx, ret_val : free}: + `%%`(externidx, ret_val) + -- wf_externidx: `%`(externidx) + -- if (ret_val = $free_externidx(externidx)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = | NULL @@ -1065,73 +1199,157 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ANYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ANYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ANYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EQREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EQREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EQREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation I31REF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule I31REF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $I31REF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation STRUCTREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule STRUCTREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $STRUCTREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ARRAYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ARRAYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ARRAYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation FUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule FUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $FUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLFUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLFUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLFUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1440,7 +1658,15 @@ def $unpack(storagetype : storagetype) : valtype def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype - -- wf_valtype: `%`(I32_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation unpack_is_wf: `%%`(storagetype : storagetype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule unpack_is_wf0{storagetype : storagetype, ret_val : valtype}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $unpack(storagetype)) + -- wf_valtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1478,10 +1704,18 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation diffrt_is_wf: `%%%`(reftype : reftype, reftype_0 : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule diffrt_is_wf0{reftype : reftype, reftype_0 : reftype, ret_val : reftype}: + `%%%`(reftype, reftype_0, ret_val) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + -- if (ret_val = $diffrt(reftype, reftype_0)) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype? @@ -1519,6 +1753,19 @@ def $globalsxt(externtype*) : globaltype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation globalsxt_is_wf: `%%`(var_0 : externtype*, ret_val : globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule globalsxt_is_wf0{var_0 : externtype*, ret_val : globaltype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsxt(var_0)) + -- (wf_globaltype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 @@ -1532,6 +1779,19 @@ def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation memsxt_is_wf: `%%`(var_0 : externtype*, ret_val : memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule memsxt_is_wf0{var_0 : externtype*, ret_val : memtype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsxt(var_0)) + -- (wf_memtype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 @@ -1545,6 +1805,19 @@ def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation tablesxt_is_wf: `%%`(var_0 : externtype*, ret_val : tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule tablesxt_is_wf0{var_0 : externtype*, ret_val : tabletype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesxt(var_0)) + -- (wf_tabletype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 @@ -1571,6 +1844,21 @@ def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation subst_typevar_is_wf: `%%%%`(typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule subst_typevar_is_wf0{typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typevar, var_0, var_1, ret_val) + -- wf_typevar: `%`(typevar) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($subst_typevar(typevar, var_0, var_1))) + -- wf_typeuse: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.73 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 @@ -1580,11 +1868,27 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})) -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_typevar: `%`(_IDX_typevar(x)) + -- (wf_typevar: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).0} + -- (wf_typeuse: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).1} def $minus_recs{x0 : typevar*, x1 : typeuse*}(x0, x1) = ?() -- otherwise } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation minus_recs_is_wf: `%%%`(var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule minus_recs_is_wf0{var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)}: + `%%%`(var_0, var_1, ret_val) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($minus_recs(var_0, var_1))) + -- (wf_typevar: `%`(iter))*{iter <- ret_val.0} + -- (wf_typeuse: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1623,7 +1927,6 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1635,7 +1938,6 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1648,31 +1950,28 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- (wf_typevar: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).0} + -- (wf_typeuse: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).1} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype @@ -1680,6 +1979,98 @@ def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation subst_typeuse_is_wf: `%%%%`(typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule subst_typeuse_is_wf0{typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typeuse, var_0, var_1, ret_val) + -- wf_typeuse: `%`(typeuse) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_typeuse(typeuse, var_0, var_1)) + -- wf_typeuse: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation subst_heaptype_is_wf: `%%%%`(heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule subst_heaptype_is_wf0{heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype}: + `%%%%`(heaptype, var_0, var_1, ret_val) + -- wf_heaptype: `%`(heaptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_heaptype(heaptype, var_0, var_1)) + -- wf_heaptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation subst_reftype_is_wf: `%%%%`(reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule subst_reftype_is_wf0{reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype}: + `%%%%`(reftype, var_0, var_1, ret_val) + -- wf_reftype: `%`(reftype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_reftype(reftype, var_0, var_1)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation subst_valtype_is_wf: `%%%%`(valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule subst_valtype_is_wf0{valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype}: + `%%%%`(valtype, var_0, var_1, ret_val) + -- wf_valtype: `%`(valtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_valtype(valtype, var_0, var_1)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation subst_storagetype_is_wf: `%%%%`(storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule subst_storagetype_is_wf0{storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype}: + `%%%%`(storagetype, var_0, var_1, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_storagetype(storagetype, var_0, var_1)) + -- wf_storagetype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation subst_fieldtype_is_wf: `%%%%`(fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule subst_fieldtype_is_wf0{fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype}: + `%%%%`(fieldtype, var_0, var_1, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_fieldtype(fieldtype, var_0, var_1)) + -- wf_fieldtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation subst_comptype_is_wf: `%%%%`(comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule subst_comptype_is_wf0{comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype}: + `%%%%`(comptype, var_0, var_1, ret_val) + -- wf_comptype: `%`(comptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_comptype(comptype, var_0, var_1)) + -- wf_comptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation subst_subtype_is_wf: `%%%%`(subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule subst_subtype_is_wf0{subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype}: + `%%%%`(subtype, var_0, var_1, ret_val) + -- wf_subtype: `%`(subtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_subtype(subtype, var_0, var_1)) + -- wf_subtype: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1694,97 +2085,204 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_globaltype_is_wf: `%%%%`(globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_globaltype_is_wf0{globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype}: + `%%%%`(globaltype, var_0, var_1, ret_val) + -- wf_globaltype: `%`(globaltype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_globaltype(globaltype, var_0, var_1)) + -- wf_globaltype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_memtype_is_wf: `%%%%`(memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_memtype_is_wf0{memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype}: + `%%%%`(memtype, var_0, var_1, ret_val) + -- wf_memtype: `%`(memtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_memtype(memtype, var_0, var_1)) + -- wf_memtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_tabletype_is_wf: `%%%%`(tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_tabletype_is_wf0{tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype}: + `%%%%`(tabletype, var_0, var_1, ret_val) + -- wf_tabletype: `%`(tabletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_tabletype(tabletype, var_0, var_1)) + -- wf_tabletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_externtype_is_wf: `%%%%`(externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_externtype_is_wf0{externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype}: + `%%%%`(externtype, var_0, var_1, ret_val) + -- wf_externtype: `%`(externtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_externtype(externtype, var_0, var_1)) + -- wf_externtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_moduletype_is_wf: `%%%%`(moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_moduletype_is_wf0{moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype}: + `%%%%`(moduletype, var_0, var_1, ret_val) + -- wf_moduletype: `%`(moduletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_moduletype(moduletype, var_0, var_1)) + -- wf_moduletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, n : nat, `tu*` : typeuse*, i : nat}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_moduletype_is_wf: `%%`(moduletype : moduletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_moduletype_is_wf0{moduletype : moduletype, ret_val : free}: + `%%`(moduletype, ret_val) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $free_moduletype(moduletype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax num_ = | mk_num__0(Inn : Inn, var_x : iN) @@ -2517,7 +3248,15 @@ relation wf_shape: `%`(shape) def $dim(shape : shape) : dim ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) - -- wf_dim: `%`(`%`_dim(N)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation dim_is_wf: `%%`(shape : shape, ret_val : dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_is_wf0{shape : shape, ret_val : dim}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $dim(shape)) + -- wf_dim: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $lanetype(shape : shape) : lanetype @@ -4271,22 +5010,45 @@ syntax expr = instr* def $memarg0 : memarg ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} - -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation memarg0_is_wf: `%`(ret_val : memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg0_is_wf0{ret_val : memarg}: + `%`(ret_val) + -- if (ret_val = $memarg0) + -- wf_memarg: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const(consttype : consttype, lit_ : lit_) : instr ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{numtype : numtype, c : num_}((numtype : numtype <: consttype), mk_lit__0_lit_(numtype, c)) = CONST_instr(numtype, c) - -- wf_instr: `%`(CONST_instr(numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{vectype : vectype, c : uN}((vectype : vectype <: consttype), mk_lit__1_lit_(vectype, c)) = VCONST_instr(vectype, c) - -- wf_instr: `%`(VCONST_instr(vectype, c)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation const_is_wf: `%%%`(consttype : consttype, lit_ : lit_, ret_val : instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule const_is_wf0{consttype : consttype, lit_ : lit_, ret_val : instr}: + `%%%`(consttype, lit_, ret_val) + -- wf_lit_: `%%`((consttype : consttype <: storagetype), lit_) + -- if (ret_val = $const(consttype, lit_)) + -- wf_instr: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_shape_is_wf: `%%`(shape : shape, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_shape_is_wf0{shape : shape, ret_val : free}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $free_shape(shape)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4294,6 +5056,15 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype{typeidx : uN}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_blocktype_is_wf: `%%`(blocktype : blocktype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_blocktype_is_wf0{blocktype : blocktype, ret_val : free}: + `%%`(blocktype, ret_val) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $free_blocktype(blocktype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4305,6 +5076,15 @@ def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch{labelidx : uN}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_catch_is_wf: `%%`(catch : catch, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_catch_is_wf0{catch : catch, ret_val : free}: + `%%`(catch, ret_val) + -- wf_catch: `%`(catch) + -- if (ret_val = $free_catch(catch)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { @@ -4316,7 +5096,6 @@ def $shift_labelidxs(labelidx*) : labelidx* def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.91 def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4326,13 +5105,10 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-435.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.92 @@ -4363,7 +5139,6 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.66 @@ -4374,7 +5149,6 @@ def $free_instr(instr : instr) : free def $free_instr{tagidx : uN}(THROW_instr(tagidx)) = $free_tagidx(tagidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.32 def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-469.99 def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.63 @@ -4437,13 +5211,10 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.34 def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.38 def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.29 def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 @@ -4452,10 +5223,8 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.30 def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.61 def $free_instr{typeidx : uN}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.69 @@ -4480,7 +5249,6 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.32 def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.61 def $free_instr{typeidx : uN}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.55 @@ -4491,10 +5259,8 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.41 def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 def $free_instr{localidx : uN}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 @@ -4551,6 +5317,30 @@ def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:589.1-590.47 def $free_block{`instr*` : instr*}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] -- let{free : free} free = $free_list($free_instr(instr)*{instr <- `instr*`}) + -- wf_free: `%`($free_list($free_instr(instr)*{instr <- `instr*`})) + -- (wf_free: `%`($free_instr(instr)))*{instr <- `instr*`} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation free_instr_is_wf: `%%`(instr : instr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule free_instr_is_wf0{instr : instr, ret_val : free}: + `%%`(instr, ret_val) + -- wf_instr: `%`(instr) + -- if (ret_val = $free_instr(instr)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation free_block_is_wf: `%%`(var_0 : instr*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule free_block_is_wf0{var_0 : instr*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_block(var_0)) + -- wf_free: `%`(ret_val) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4558,6 +5348,15 @@ def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_expr_is_wf: `%%`(expr : expr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_expr_is_wf0{expr : expr, ret_val : free}: + `%%`(expr, ret_val) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- if (ret_val = $free_expr(expr)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = | ACTIVE(tableidx : tableidx, expr : expr) @@ -4748,85 +5547,216 @@ def $free_type(type : type) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_type_is_wf: `%%`(type : type, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_type_is_wf0{type : type, ret_val : free}: + `%%`(type, ret_val) + -- if (ret_val = $free_type(type)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag(tag : tag) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_tag_is_wf: `%%`(tag : tag, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_tag_is_wf0{tag : tag, ret_val : free}: + `%%`(tag, ret_val) + -- wf_tag: `%`(tag) + -- if (ret_val = $free_tag(tag)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global(global : global) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_global_is_wf: `%%`(global : global, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_global_is_wf0{global : global, ret_val : free}: + `%%`(global, ret_val) + -- wf_global: `%`(global) + -- if (ret_val = $free_global(global)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem(mem : mem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_mem_is_wf: `%%`(mem : mem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_mem_is_wf0{mem : mem, ret_val : free}: + `%%`(mem, ret_val) + -- wf_mem: `%`(mem) + -- if (ret_val = $free_mem(mem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table(table : table) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_table_is_wf: `%%`(table : table, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_table_is_wf0{table : table, ret_val : free}: + `%%`(table, ret_val) + -- wf_table: `%`(table) + -- if (ret_val = $free_table(table)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local(local : local) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_local_is_wf: `%%`(local : local, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_local_is_wf0{local : local, ret_val : free}: + `%%`(local, ret_val) + -- wf_local: `%`(local) + -- if (ret_val = $free_local(local)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func(func : func) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_func_is_wf: `%%`(func : func, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_func_is_wf0{func : func, ret_val : free}: + `%%`(func, ret_val) + -- wf_func: `%`(func) + -- if (ret_val = $free_func(func)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(datamode : datamode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_datamode_is_wf: `%%`(datamode : datamode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_datamode_is_wf0{datamode : datamode, ret_val : free}: + `%%`(datamode, ret_val) + -- wf_datamode: `%`(datamode) + -- if (ret_val = $free_datamode(datamode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_data_is_wf: `%%`(data : data, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_data_is_wf0{data : data, ret_val : free}: + `%%`(data, ret_val) + -- wf_data: `%`(data) + -- if (ret_val = $free_data(data)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(elemmode : elemmode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elemmode_is_wf: `%%`(elemmode : elemmode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elemmode_is_wf0{elemmode : elemmode, ret_val : free}: + `%%`(elemmode, ret_val) + -- wf_elemmode: `%`(elemmode) + -- if (ret_val = $free_elemmode(elemmode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elem_is_wf: `%%`(elem : elem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elem_is_wf0{elem : elem, ret_val : free}: + `%%`(elem, ret_val) + -- wf_elem: `%`(elem) + -- if (ret_val = $free_elem(elem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start(start : start) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_start_is_wf: `%%`(start : start, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_start_is_wf0{start : start, ret_val : free}: + `%%`(start, ret_val) + -- wf_start: `%`(start) + -- if (ret_val = $free_start(start)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import(import : import) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_import_is_wf: `%%`(import : import, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_import_is_wf0{import : import, ret_val : free}: + `%%`(import, ret_val) + -- wf_import: `%`(import) + -- if (ret_val = $free_import(import)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export(export : export) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_export_is_wf: `%%`(export : export, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_export_is_wf0{export : export, ret_val : free}: + `%%`(export, ret_val) + -- wf_export: `%`(export) + -- if (ret_val = $free_export(export)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module(module : module) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_module_is_wf: `%%`(module : module, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_module_is_wf0{module : module, ret_val : free}: + `%%`(module, ret_val) + -- wf_module: `%`(module) + -- if (ret_val = $free_module(module)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $funcidx_module(module : module) : funcidx* ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec @@ -4912,6 +5842,21 @@ def $with_locals(context : context, localidx*, localtype*) : context? ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation with_locals_is_wf: `%%%%`(context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule with_locals_is_wf0{context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context}: + `%%%%`(context, var_0, var_1, ret_val) + -- wf_context: `%`(context) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_localtype: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($with_locals(context, var_0, var_1))) + -- wf_context: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(deftype*) : deftype* ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 @@ -4927,6 +5872,16 @@ def $clos_valtype(context : context, valtype : valtype) : valtype def $clos_valtype{C : context, t : valtype}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_valtype_is_wf: `%%%`(context : context, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_valtype_is_wf0{context : context, valtype : valtype, ret_val : valtype}: + `%%%`(context, valtype, ret_val) + -- wf_context: `%`(context) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $clos_valtype(context, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -4945,25 +5900,43 @@ def $clos_externtype(context : context, externtype : externtype) : externtype def $clos_externtype{C : context, xt : externtype}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_externtype_is_wf: `%%%`(context : context, externtype : externtype, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_externtype_is_wf0{context : context, externtype : externtype, ret_val : externtype}: + `%%%`(context, externtype, ret_val) + -- wf_context: `%`(context) + -- wf_externtype: `%`(externtype) + -- if (ret_val = $clos_externtype(context, externtype)) + -- wf_externtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_moduletype_is_wf: `%%%`(context : context, moduletype : moduletype, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_moduletype_is_wf0{context : context, moduletype : moduletype, ret_val : moduletype}: + `%%%`(context, moduletype, ret_val) + -- wf_context: `%`(context) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $clos_moduletype(context, moduletype)) + -- wf_moduletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypenat = @@ -4974,21 +5947,18 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) @@ -4996,6 +5966,7 @@ relation Expand: `%~~%`(deftype, comptype) rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: `%~~%`(deftype, comptype) -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- wf_subtype: `%`($unrolldt(deftype)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5003,7 +5974,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, nat : nat) : bool @@ -5021,6 +5991,16 @@ def $unrollht_(context : context, heaptype : heaptype) : subtype ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $unrollht_{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation unrollht__is_wf: `%%%`(context : context, heaptype : heaptype, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule unrollht__is_wf0{context : context, heaptype : heaptype, ret_val : subtype}: + `%%%`(context, heaptype, ret_val) + -- wf_context: `%`(context) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = $unrollht_(context, heaptype)) + -- wf_subtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -5029,20 +6009,15 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 rule bot{C : context}: `%|-%:OK`(C, BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) @@ -5050,8 +6025,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) @@ -5059,26 +6032,20 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) -- Numtype_ok: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) -- Vectype_ok: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) @@ -5086,22 +6053,17 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (C.RECS_context[i] = st) - -- wf_context: `%`(C) -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) @@ -5109,8 +6071,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) @@ -5118,8 +6078,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) @@ -5127,14 +6085,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) @@ -5142,23 +6097,17 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) @@ -5171,8 +6120,7 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) -- (if ($unrollht_(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_subtype: `%`($unrollht_(C, (typeuse : typeuse <: heaptype))))*{typeuse <- `typeuse*`} -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 @@ -5180,16 +6128,12 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 rule empty{C : context, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypenat(i)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypenat(i)) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypenat((i + 1))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) @@ -5199,7 +6143,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}}) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 @@ -5208,26 +6151,17 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) @@ -5235,14 +6169,13 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) - -- wf_context: `%`(C) + -- wf_subtype: `%`($unrolldt(deftype_1)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 @@ -5250,8 +6183,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: @@ -5259,118 +6190,79 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) -- wf_heaptype: `%`(heaptype') ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 rule `rec-array`{C : context, i : n, `final?` : final?, fieldtype : fieldtype}: `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 rule `rec-func`{C : context, i : n, `final?` : final?, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 @@ -5378,9 +6270,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) -- wf_heaptype: `%`(ANY_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5389,9 +6278,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) -- wf_heaptype: `%`(FUNC_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5400,9 +6286,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) -- wf_heaptype: `%`(EXN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5411,18 +6294,12 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) -- wf_heaptype: `%`(EXTERN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) @@ -5430,17 +6307,11 @@ relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) @@ -5448,28 +6319,20 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) @@ -5477,9 +6340,6 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) @@ -5487,15 +6347,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) @@ -5503,18 +6359,12 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) } ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5523,8 +6373,6 @@ relation Localtype_ok: `%|-%:OK`(context, localtype) rule _{C : context, init : init, t : valtype}: `%|-%:OK`(C, `%%`_localtype(init, t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) @@ -5534,9 +6382,7 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand_use: `%~~_%%`(typeuse, context, comptype) @@ -5544,16 +6390,11 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) -- Expand: `%~~%`(deftype, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5576,9 +6417,7 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`($unrolldt(C.TYPES_context[$proj_uN_0(x).0])))*{x <- `x*`} -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5589,17 +6428,12 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) } @@ -5611,8 +6445,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) @@ -5621,8 +6453,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) `%|-%:OK`(C, typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5631,8 +6461,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Memtype_ok: `%|-%:OK`(context, memtype) @@ -5640,8 +6468,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) @@ -5650,8 +6476,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Externtype_ok: `%|-%:OK`(context, externtype) @@ -5659,37 +6483,27 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5701,10 +6515,8 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_uN: `%%`(32, iter))*{iter <- $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5714,17 +6526,11 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) -- if (n_1 >= n_2) -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule eps{C : context, n_1 : n, n_2 : n}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) -- if (n_1 >= n_2) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) @@ -5733,7 +6539,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) @@ -5741,18 +6546,12 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) @@ -5760,9 +6559,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) @@ -5772,9 +6568,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) @@ -5782,41 +6575,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) - -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) @@ -5824,17 +6602,11 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5844,8 +6616,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_catch(x, l)) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5853,50 +6623,49 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val?? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0))))) - -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))))) - -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(?(VCONST_val(Vnn, `%`_vec_(0)))) - -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) - -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) def $default_{x0 : valtype}(x0) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation default__is_wf: `%%`(valtype : valtype, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule default__is_wf0{valtype : valtype, ret_val : val?}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if (ret_val = !($default_(valtype))) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t) -- if (!($default_(t)) =/= ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) @@ -5905,7 +6674,6 @@ relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (m < (2 ^ $size((at : addrtype <: numtype)))) - -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec def $is_packtype(storagetype : storagetype) : bool @@ -5920,33 +6688,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: @@ -5954,18 +6711,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) - -- wf_context: `%`(C) -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5975,8 +6727,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -5987,9 +6737,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6000,18 +6747,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: @@ -6019,8 +6760,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 @@ -6028,17 +6767,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -6048,10 +6781,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -6061,27 +6791,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- wf_reftype: `%`($diffrt(rt_1, rt_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 @@ -6090,9 +6812,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6102,9 +6821,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 @@ -6114,10 +6830,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6128,10 +6841,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6144,10 +6854,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6158,9 +6865,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6168,9 +6872,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 @@ -6179,8 +6880,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6189,48 +6888,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule `ref.null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule `ref.func`{C : context, x : idx, dt : deftype}: `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (x <- C.REFS_context) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule `ref.i31`{C : context}: `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule `ref.is_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule `ref.as_non_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule `ref.eq`{C : context}: `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule `ref.test`{C : context, rt : reftype, rt' : reftype}: @@ -6238,9 +6919,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.TEST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: @@ -6248,24 +6926,15 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.CAST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule `i31.get`{C : context, sx : sx}: `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 @@ -6273,9 +6942,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 @@ -6284,9 +6951,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) @@ -6295,9 +6959,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) @@ -6305,9 +6966,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 @@ -6315,18 +6973,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 @@ -6334,9 +6987,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 @@ -6345,9 +6995,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 @@ -6355,34 +7003,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule `array.set`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule `array.len`{C : context}: `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.LEN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule `array.fill`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 @@ -6391,9 +7027,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) @@ -6402,9 +7035,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[$proj_uN_0(y).0] : reftype <: storagetype), zt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 @@ -6413,115 +7043,77 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule `local.get`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule `local.set`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule `local.tee`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule `global.set`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 @@ -6530,9 +7122,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) @@ -6542,46 +7131,31 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule `elem.drop`{C : context, x : idx, rt : reftype}: `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 @@ -6589,9 +7163,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) @@ -6600,27 +7171,18 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 rule `data.drop`{C : context, x : idx}: `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 @@ -6628,9 +7190,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 @@ -6638,9 +7197,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 @@ -6648,9 +7204,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 @@ -6658,9 +7211,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 @@ -6668,9 +7218,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 @@ -6678,9 +7225,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 @@ -6688,9 +7232,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 @@ -6699,9 +7240,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 @@ -6709,9 +7247,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 @@ -6720,217 +7255,131 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim($proj_bshape_0(sh).0)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -6938,10 +7387,7 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -6953,9 +7399,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 @@ -6963,9 +7406,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -6975,8 +7415,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6985,88 +7423,62 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) rule _{t : valtype}: `|-%NONDEFAULTABLE`(t) -- if (!($default_(t)) = ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.null`{C : context, ht : heaptype}: `%|-%CONST`(C, `REF.NULL`_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.i31`{C : context}: `%|-%CONST`(C, `REF.I31`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.func`{C : context, x : idx}: `%|-%CONST`(C, `REF.FUNC`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new_default`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_default`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_fixed`{C : context, x : idx, n : n}: `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `any.convert_extern`{C : context}: `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `extern.convert_any`{C : context}: `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `global.get`{C : context, x : idx, t : valtype}: `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7074,8 +7486,6 @@ relation Instr_const: `%|-%CONST`(context, instr) `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) @@ -7086,8 +7496,6 @@ relation Expr_const: `%|-%CONST`(context, expr) rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) @@ -7096,9 +7504,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) `%|-%:%CONST`(C, expr, t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) @@ -7108,7 +7513,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_oktypeidx: `%`(OK_oktypeidx(x)) @@ -7118,8 +7522,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Global_ok: `%|-%:%`(context, global, globaltype) @@ -7129,8 +7531,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7139,8 +7539,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Table_ok: `%|-%:%`(context, table, tabletype) @@ -7150,8 +7548,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7160,17 +7556,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) @@ -7180,8 +7570,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) @@ -7190,16 +7578,12 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7208,24 +7592,16 @@ relation Data_ok: `%|-%:%`(context, data, datatype) rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: @@ -7233,9 +7609,6 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7246,8 +7619,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Start_ok: `%|-%:OK`(context, start) @@ -7255,8 +7626,6 @@ relation Start_ok: `%|-%:OK`(context, start) rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7265,8 +7634,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Externidx_ok: `%|-%:%`(context, externidx, externtype) @@ -7274,41 +7641,26 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Export_ok: `%|-%:%%`(context, export, name, externtype) @@ -7316,9 +7668,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) -- Externidx_ok: `%|-%:%`(C, externidx, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { @@ -7328,17 +7677,12 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7350,14 +7694,12 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7381,7 +7723,6 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) @@ -7408,11 +7749,13 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) - -- wf_context: `%`(C) -- wf_context: `%`(C') -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- (wf_uN: `%%`(32, iter))*{iter <- $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}))} + -- (wf_typeuse: `%`(iter))*{iter <- $tagsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_globaltype: `%`(iter))*{iter <- $globalsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_memtype: `%`(iter))*{iter <- $memsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_tabletype: `%`(iter))*{iter <- $tablesxt(xt_I*{xt_I <- `xt_I*`})} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -7464,81 +7807,272 @@ def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmadd : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmadd_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmadd_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_fmadd) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmin : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmin_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmin_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmin) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmax : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmax_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmax_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmax) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_idot : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_idot_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_idot_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_idot) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_iq15mulr : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_iq15mulr_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_iq15mulr_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_iq15mulr) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_u : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_u_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_u_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_trunc_u) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_s : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_s_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_s_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_trunc_s) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_swizzle : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_swizzle_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_swizzle_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_swizzle) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_laneselect : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_laneselect_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_laneselect_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_laneselect) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $s33_to_u32(s33 : s33) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibits_(N : N, iN : iN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibits__is_wf: `%%%`(N : N, iN : iN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibits__is_wf0{N : N, iN : iN, ret_val : bit*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibits_(N, iN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbits_(N : N, fN : fN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbits__is_wf: `%%%`(N : N, fN : fN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbits__is_wf0{N : N, fN : fN, ret_val : bit*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbits_(N, fN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibytes_(N : N, iN : iN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibytes__is_wf: `%%%`(N : N, iN : iN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibytes__is_wf0{N : N, iN : iN, ret_val : byte*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibytes_(N, iN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbytes_(N : N, fN : fN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbytes__is_wf: `%%%`(N : N, fN : fN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbytes__is_wf0{N : N, fN : fN, ret_val : byte*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbytes_(N, fN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $nbytes_(numtype : numtype, num_ : num_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation nbytes__is_wf: `%%%`(numtype : numtype, num_ : num_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule nbytes__is_wf0{numtype : numtype, num_ : num_, ret_val : byte*}: + `%%%`(numtype, num_, ret_val) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $nbytes_(numtype, num_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $vbytes_(vectype : vectype, vec_ : vec_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation vbytes__is_wf: `%%%`(vectype : vectype, vec_ : vec_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule vbytes__is_wf0{vectype : vectype, vec_ : vec_, ret_val : byte*}: + `%%%`(vectype, vec_, ret_val) + -- wf_uN: `%%`($vsize(vectype), vec_) + -- if (ret_val = $vbytes_(vectype, vec_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zbytes__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zbytes__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : byte*}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $zbytes_(storagetype, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cbytes__is_wf: `%%%`(Cnn : Cnn, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cbytes__is_wf0{Cnn : Cnn, lit_ : lit_, ret_val : byte*}: + `%%%`(Cnn, lit_, ret_val) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), lit_) + -- if (ret_val = $cbytes_(Cnn, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibits_(N : N, bit*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbits_(N : N, bit*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbits__is_wf: `%%%`(N : N, var_0 : bit*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbits__is_wf0{N : N, var_0 : bit*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_bit: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbits_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibytes_(N : N, byte*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbytes_(N : N, byte*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbytes__is_wf: `%%%`(N : N, var_0 : byte*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbytes__is_wf0{N : N, var_0 : byte*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbytes_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_nbytes_(numtype : numtype, byte*) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_nbytes__is_wf: `%%%`(numtype : numtype, var_0 : byte*, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_nbytes__is_wf0{numtype : numtype, var_0 : byte*, ret_val : num_}: + `%%%`(numtype, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_nbytes_(numtype, var_0)) + -- wf_num_: `%%`(numtype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_vbytes_(vectype : vectype, byte*) : vec_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_zbytes__is_wf: `%%%`(storagetype : storagetype, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_zbytes__is_wf0{storagetype : storagetype, var_0 : byte*, ret_val : lit_}: + `%%%`(storagetype, var_0, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_zbytes_(storagetype, var_0)) + -- wf_lit_: `%%`(storagetype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_cbytes__is_wf: `%%%`(Cnn : Cnn, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_cbytes__is_wf0{Cnn : Cnn, var_0 : byte*, ret_val : lit_}: + `%%%`(Cnn, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_cbytes_(Cnn, var_0)) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $signed_(N : N, nat : nat) : int ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7570,10 +8104,16 @@ def $sx(storagetype : storagetype) : sx?? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zero_is_wf: `%%`(lanetype : lanetype, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zero_is_wf0{lanetype : lanetype, ret_val : lane_}: + `%%`(lanetype, ret_val) + -- if (ret_val = $zero(lanetype)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7602,7 +8142,6 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -7622,28 +8161,23 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7651,7 +8185,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7659,7 +8192,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7667,13 +8199,11 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7701,19 +8231,15 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7764,116 +8290,277 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fabs__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fabs__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fabs_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fneg_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fneg__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fneg__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fneg_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsqrt_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsqrt__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsqrt__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fsqrt_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fceil_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fceil__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fceil__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fceil_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ffloor_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ffloor__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ffloor__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ffloor_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ftrunc_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ftrunc__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ftrunc__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ftrunc_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fnearest_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fnearest__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fnearest__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fnearest_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fadd_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fadd__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fadd__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fadd_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsub_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsub__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsub__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fsub_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmul_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmul__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmul__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmul_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fdiv_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fdiv__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fdiv__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fdiv_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_min__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_min__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_min_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_max__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_max__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_max_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fcopysign_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fcopysign__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fcopysign__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fcopysign_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $feq_(N : N, fN : fN, fN : fN) : u32 @@ -7895,9 +8582,31 @@ def $fge_(N : N, fN : fN, fN : fN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_madd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_madd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_madd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_nmadd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_nmadd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_nmadd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wrap__(M : M, N : N, iN : iN) : iN @@ -7916,26 +8625,69 @@ def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $demote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation demote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule demote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $demote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $promote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation promote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule promote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $promote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $convert__(M : M, N : N, sx : sx, iN : iN) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation convert___is_wf: `%%%%%`(M : M, N : N, sx : sx, iN : iN, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule convert___is_wf0{M : M, N : N, sx : sx, iN : iN, ret_val : fN}: + `%%%%%`(M, N, sx, iN, ret_val) + -- wf_uN: `%%`(M, iN) + -- if (ret_val = $convert__(M, N, sx, iN)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation reinterpret___is_wf: `%%%%`(numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule reinterpret___is_wf0{numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_}: + `%%%%`(numtype_1, numtype_2, num_, ret_val) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $reinterpret__(numtype_1, numtype_2, num_)) + -- wf_num_: `%%`(numtype_2, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) - -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lpacknum__is_wf: `%%%`(lanetype : lanetype, num_ : num_, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lpacknum__is_wf0{lanetype : lanetype, num_ : num_, ret_val : lane_}: + `%%%`(lanetype, num_, ret_val) + -- wf_num_: `%%`($lunpack(lanetype), num_) + -- if (ret_val = $lpacknum_(lanetype, num_)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7943,7 +8695,16 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`((!($cunpack(storagetype)) : consttype <: storagetype), lit_) + -- if (ret_val = $cpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`(storagetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -7951,7 +8712,15 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lunpacknum__is_wf: `%%%`(lanetype : lanetype, lane_ : lane_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lunpacknum__is_wf0{lanetype : lanetype, lane_ : lane_, ret_val : num_}: + `%%%`(lanetype, lane_, ret_val) + -- wf_lane_: `%%`(lanetype, lane_) + -- if (ret_val = $lunpacknum_(lanetype, lane_)) + -- wf_num_: `%%`($lunpack(lanetype), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -7959,103 +8728,103 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cunpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cunpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $cunpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`((!($cunpack(storagetype)) : consttype <: storagetype), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation unop__is_wf: `%%%%`(numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule unop__is_wf0{numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*}: + `%%%%`(numtype, unop_, num_, ret_val) + -- wf_unop_: `%%`(numtype, unop_) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $unop_(numtype, unop_, num_)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation binop__is_wf: `%%%%%`(numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule binop__is_wf0{numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*}: + `%%%%%`(numtype, binop_, num_, num__0, ret_val) + -- wf_binop_: `%%`(numtype, binop_) + -- wf_num_: `%%`(numtype, num_) + -- wf_num_: `%%`(numtype, num__0) + -- if (ret_val = $binop_(numtype, binop_, num_, num__0)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -8093,37 +8862,48 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) - -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) - -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cvtop___is_wf: `%%%%%`(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cvtop___is_wf0{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*}: + `%%%%%`(numtype_1, numtype_2, cvtop__, num_, ret_val) + -- wf_cvtop__: `%%%`(numtype_1, numtype_2, cvtop__) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $cvtop__(numtype_1, numtype_2, cvtop__, num_)) + -- (wf_num_: `%%`(numtype_2, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_) : lane_* +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lanes__is_wf: `%%%`(shape : shape, vec_ : vec_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lanes__is_wf0{shape : shape, vec_ : vec_, ret_val : lane_*}: + `%%%`(shape, vec_, ret_val) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(128, vec_) + -- if (ret_val = $lanes_(shape, vec_)) + -- (wf_lane_: `%%`($lanetype(shape), ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $inv_lanes_(shape : shape, lane_*) : vec_ @@ -8168,13 +8948,11 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* @@ -8182,8 +8960,9 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* @@ -8191,6 +8970,9 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} @@ -8201,8 +8983,10 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8211,8 +8995,10 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8221,6 +9007,10 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8231,6 +9021,10 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8242,6 +9036,11 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c_3*` : lane_*} c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} @@ -8253,6 +9052,11 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c_3*` : lane_*} c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} @@ -8263,8 +9067,10 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8274,8 +9080,10 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8286,8 +9094,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- if ($isize(Inn) = $fsize(Fnn)) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size((Fnn : Fnn <: numtype)), $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8297,8 +9106,9 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ @@ -8306,8 +9116,9 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 @@ -8315,7 +9126,8 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter))*{iter <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) @@ -8327,8 +9139,10 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ @@ -8337,6 +9151,8 @@ def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : lane_*} c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8364,175 +9180,142 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] -- let{c : iN} c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) + -- wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] -- let{c : fN} c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) + -- wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- let{`c?` : iN?} c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} + -- (wf_uN: `%%`($size((Inn_2 : addrtype <: numtype)), iter))?{iter <- $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- let{`c?` : iN?} c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} + -- (wf_uN: `%%`($size((Inn_2 : addrtype <: numtype)), iter))?{iter <- $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- let{`c*` : fN*} c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} + -- (wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), iter))*{iter <- $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- let{`c*` : fN*} c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} + -- (wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), iter))*{iter <- $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lcvtop___is_wf: `%%%%%`(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lcvtop___is_wf0{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*}: + `%%%%%`(shape_1, shape_2, vcvtop__, lane_, ret_val) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_1, shape_2, vcvtop__) + -- wf_lane_: `%%`($lanetype(shape_1), lane_) + -- if (ret_val = $lcvtop__(shape_1, shape_2, vcvtop__, lane_)) + -- (wf_lane_: `%%`($lanetype(shape_2), ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ @@ -8542,7 +9325,10 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8551,7 +9337,10 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8560,7 +9349,11 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- wf_lane_: `%%`(Lnn_2, $zero(Lnn_2)) + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) @@ -8568,31 +9361,25 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ @@ -8603,6 +9390,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c'_2*` : iN*} c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} @@ -8613,8 +9405,6 @@ def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) - -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ @@ -8623,32 +9413,31 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, iter))*{iter <- $concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1, i_2)))*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, iter))*{iter <- $concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1, i_2)))*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ @@ -8659,8 +9448,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c'_2*` : iN*} c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8672,22 +9464,10 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ @@ -8698,7 +9478,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -9058,20 +9840,38 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval? def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = ?((val : val <: fieldval)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation packfield__is_wf: `%%%`(storagetype : storagetype, val : val, ret_val : fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packfield__is_wf0{storagetype : storagetype, val : val, ret_val : fieldval}: + `%%%`(storagetype, val, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_val: `%`(val) + -- if (ret_val = !($packfield_(storagetype, val))) + -- wf_fieldval: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = ?(val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation unpackfield__is_wf: `%%%%`(storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule unpackfield__is_wf0{storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val}: + `%%%%`(storagetype, var_0, fieldval, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = !($unpackfield_(storagetype, var_0, fieldval))) + -- wf_val: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -9142,11 +9942,29 @@ def $store(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $store{s : store, f : frame}(`%;%`_state(s, f)) = s +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation store_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $store(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $frame(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation frame_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $frame(state)) + -- wf_frame: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tagaddr(state : state) : tagaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9157,61 +9975,169 @@ def $moduleinst(state : state) : moduleinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation moduleinst_is_wf: `%%`(state : state, ret_val : moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_is_wf0{state : state, ret_val : moduleinst}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $moduleinst(state)) + -- wf_moduleinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst(state : state) : taginst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation taginst_is_wf: `%%`(state : state, ret_val : taginst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_is_wf0{state : state, ret_val : taginst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $taginst(state)) + -- (wf_taginst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst(state : state) : globalinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation globalinst_is_wf: `%%`(state : state, ret_val : globalinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_is_wf0{state : state, ret_val : globalinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $globalinst(state)) + -- (wf_globalinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst(state : state) : meminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation meminst_is_wf: `%%`(state : state, ret_val : meminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_is_wf0{state : state, ret_val : meminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $meminst(state)) + -- (wf_meminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst(state : state) : tableinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tableinst_is_wf: `%%`(state : state, ret_val : tableinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_is_wf0{state : state, ret_val : tableinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $tableinst(state)) + -- (wf_tableinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst(state : state) : funcinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation funcinst_is_wf: `%%`(state : state, ret_val : funcinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_is_wf0{state : state, ret_val : funcinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $funcinst(state)) + -- (wf_funcinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst(state : state) : datainst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation datainst_is_wf: `%%`(state : state, ret_val : datainst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_is_wf0{state : state, ret_val : datainst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $datainst(state)) + -- (wf_datainst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst(state : state) : eleminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation eleminst_is_wf: `%%`(state : state, ret_val : eleminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_is_wf0{state : state, ret_val : eleminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $eleminst(state)) + -- (wf_eleminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst(state : state) : structinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation structinst_is_wf: `%%`(state : state, ret_val : structinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_is_wf0{state : state, ret_val : structinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $structinst(state)) + -- (wf_structinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst(state : state) : arrayinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation arrayinst_is_wf: `%%`(state : state, ret_val : arrayinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_is_wf0{state : state, ret_val : arrayinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $arrayinst(state)) + -- (wf_arrayinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst(state : state) : exninst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation exninst_is_wf: `%%`(state : state, ret_val : exninst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_is_wf0{state : state, ret_val : exninst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $exninst(state)) + -- (wf_exninst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof{z : state}(z) = $frame(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fof_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fof_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $fof(state)) + -- wf_frame: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9222,123 +10148,337 @@ def $sof(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $sof{z : state}(z) = $store(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation sof_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule sof_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $sof(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tag_is_wf: `%%%`(state : state, tagidx : tagidx, ret_val : taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tag_is_wf0{state : state, tagidx : tagidx, ret_val : taginst}: + `%%%`(state, tagidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $tag(state, tagidx)) + -- wf_taginst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation global_is_wf: `%%%`(state : state, globalidx : globalidx, ret_val : globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule global_is_wf0{state : state, globalidx : globalidx, ret_val : globalinst}: + `%%%`(state, globalidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $global(state, globalidx)) + -- wf_globalinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation mem_is_wf: `%%%`(state : state, memidx : memidx, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule mem_is_wf0{state : state, memidx : memidx, ret_val : meminst}: + `%%%`(state, memidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $mem(state, memidx)) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation table_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule table_is_wf0{state : state, tableidx : tableidx, ret_val : tableinst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $table(state, tableidx)) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation func_is_wf: `%%%`(state : state, funcidx : funcidx, ret_val : funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule func_is_wf0{state : state, funcidx : funcidx, ret_val : funcinst}: + `%%%`(state, funcidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $func(state, funcidx)) + -- wf_funcinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation data_is_wf: `%%%`(state : state, dataidx : dataidx, ret_val : datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule data_is_wf0{state : state, dataidx : dataidx, ret_val : datainst}: + `%%%`(state, dataidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $data(state, dataidx)) + -- wf_datainst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation elem_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule elem_is_wf0{state : state, tableidx : tableidx, ret_val : eleminst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $elem(state, tableidx)) + -- wf_eleminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[$proj_uN_0(x).0] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation local_is_wf: `%%%`(state : state, localidx : localidx, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule local_is_wf0{state : state, localidx : localidx, ret_val : val?}: + `%%%`(state, localidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $local(state, localidx)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) - -- wf_state: `%`(`%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_local_is_wf: `%%%%`(state : state, localidx : localidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_local_is_wf0{state : state, localidx : localidx, val : val, ret_val : state}: + `%%%%`(state, localidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_local(state, localidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_global_is_wf: `%%%%`(state : state, globalidx : globalidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_global_is_wf0{state : state, globalidx : globalidx, val : val, ret_val : state}: + `%%%%`(state, globalidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_global(state, globalidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_table_is_wf: `%%%%%`(state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_table_is_wf0{state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state}: + `%%%%%`(state, tableidx, nat, ref, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_ref: `%`(ref) + -- if (ret_val = $with_table(state, tableidx, nat, ref)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_tableinst_is_wf: `%%%%`(state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_tableinst_is_wf0{state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state}: + `%%%%`(state, tableidx, tableinst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_tableinst: `%`(tableinst) + -- if (ret_val = $with_tableinst(state, tableidx, tableinst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{z : state, x : uN, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_mem_is_wf: `%%%%%%`(state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_mem_is_wf0{state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state}: + `%%%%%%`(state, memidx, nat, nat_0, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_mem(state, memidx, nat, nat_0, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_meminst_is_wf: `%%%%`(state : state, memidx : memidx, meminst : meminst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_meminst_is_wf0{state : state, memidx : memidx, meminst : meminst, ret_val : state}: + `%%%%`(state, memidx, meminst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- wf_meminst: `%`(meminst) + -- if (ret_val = $with_meminst(state, memidx, meminst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{z : state, x : uN, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_elem_is_wf: `%%%%`(state : state, elemidx : elemidx, var_0 : ref*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_elem_is_wf0{state : state, elemidx : elemidx, var_0 : ref*, ret_val : state}: + `%%%%`(state, elemidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, elemidx) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_elem(state, elemidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_data_is_wf: `%%%%`(state : state, dataidx : dataidx, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_data_is_wf0{state : state, dataidx : dataidx, var_0 : byte*, ret_val : state}: + `%%%%`(state, dataidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_data(state, dataidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_struct_is_wf: `%%%%%`(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_struct_is_wf0{state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, structaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_struct(state, structaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_array_is_wf: `%%%%%`(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_array_is_wf0{state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, arrayaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_array(state, arrayaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_structinst_is_wf: `%%%`(state : state, var_0 : structinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_structinst_is_wf0{state : state, var_0 : structinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_structinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_structinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_arrayinst_is_wf: `%%%`(state : state, var_0 : arrayinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_arrayinst_is_wf0{state : state, var_0 : arrayinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_arrayinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_arrayinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_exninst_is_wf: `%%%`(state : state, var_0 : exninst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_exninst_is_wf0{state : state, var_0 : exninst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_exninst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_exninst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? @@ -9349,12 +10489,21 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) - -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growtable_is_wf: `%%%%`(tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growtable_is_wf0{tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst}: + `%%%%`(tableinst, nat, ref, ret_val) + -- wf_tableinst: `%`(tableinst) + -- wf_ref: `%`(ref) + -- if (ret_val = !($growtable(tableinst, nat, ref))) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9364,27 +10513,31 @@ def $growmem(meminst : meminst, nat : nat) : meminst? -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} -- if ($proj_uN_0(i').0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_meminst: `%`(meminst') -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growmem_is_wf: `%%%`(meminst : meminst, nat : nat, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growmem_is_wf0{meminst : meminst, nat : nat, ret_val : meminst}: + `%%%`(meminst, nat, ret_val) + -- wf_meminst: `%`(meminst) + -- if (ret_val = !($growmem(meminst, nat))) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -9394,65 +10547,41 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.38 rule null{s : store}: `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.NULL_ADDR`_ref) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.33 rule i31{s : store, i : u31}: `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.I31_NUM`_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - -- wf_store: `%`(s) -- wf_exninst: `%`(exn) - -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.35 rule host{s : store, a : addr}: `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.HOST_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 rule extern{s : store, ref : ref}: `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.EXTERN`_ref(ref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) @@ -9461,9 +10590,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) -- wf_reftype: `%`(rt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -9474,31 +10600,22 @@ relation Val_ok: `%|-%:%`(store, val, valtype) rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) -- Num_ok: `%|-%:%`(s, num, nt) - -- wf_store: `%`(s) - -- wf_num: `%`(num) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) -- Vec_ok: `%|-%:%`(s, vec, vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Packval_ok: `%|-%:%`(store, packval, packtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, pt : packtype, c : iN}: `%|-%:%`(s, PACK_packval(pt, c), pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(PACK_packval(pt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) @@ -9506,16 +10623,11 @@ relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) rule val{s : store, val : val, t : valtype}: `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule packval{s : store, packval : packval, pt : packtype}: `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) -- Packval_ok: `%|-%:%`(s, packval, pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(packval) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -9526,44 +10638,32 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-111.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:113.1-115.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:117.1-119.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:121.1-123.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:125.1-128.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) -- wf_externtype: `%`(xt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -9573,36 +10673,82 @@ def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_valtype_is_wf: `%%%`(moduleinst : moduleinst, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_valtype_is_wf0{moduleinst : moduleinst, valtype : valtype, ret_val : valtype}: + `%%%`(moduleinst, valtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $inst_valtype(moduleinst, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_reftype_is_wf: `%%%`(moduleinst : moduleinst, reftype : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_reftype_is_wf0{moduleinst : moduleinst, reftype : reftype, ret_val : reftype}: + `%%%`(moduleinst, reftype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_reftype: `%`(reftype) + -- if (ret_val = $inst_reftype(moduleinst, reftype)) + -- wf_reftype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_globaltype_is_wf: `%%%`(moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_globaltype_is_wf0{moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype}: + `%%%`(moduleinst, globaltype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = $inst_globaltype(moduleinst, globaltype)) + -- wf_globaltype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_memtype_is_wf: `%%%`(moduleinst : moduleinst, memtype : memtype, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_memtype_is_wf0{moduleinst : moduleinst, memtype : memtype, ret_val : memtype}: + `%%%`(moduleinst, memtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $inst_memtype(moduleinst, memtype)) + -- wf_memtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_tabletype_is_wf: `%%%`(moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_tabletype_is_wf0{moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype}: + `%%%`(moduleinst, tabletype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = $inst_tabletype(moduleinst, tabletype)) + -- wf_tabletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9610,265 +10756,174 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) -- if ($proj_uN_0(l).0 = 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) -- if ($proj_uN_0(l).0 > 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) -- if (val =/= `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) -- if (val =/= `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-handler`{n : n, `catch*` : catch*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.tee`{val : val, x : idx}: `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.i31`{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instr: `%`(TRAP_instr) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9876,225 +10931,151 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) -- if (ref_1 = ref_2) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref_1 =/= ref_2) -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{sx : sx}: `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(`REF.I31_NUM`_instr(i)) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new`{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`: `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{ref : ref}: `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) -- if (c <- $unop_(nt, unop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) -- if ($unop_(nt, unop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) -- if (c <- $binop_(nt, binop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) -- if ($binop_(nt, binop, c_1, c_2) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvunop_(V128_vectype, vvunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vunop_(sh, vunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) -- if ($vunop_(sh, vunop, c_1) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*}: @@ -10102,71 +11083,53 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)) -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), i))*{i <- `i*`} - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} + -- (wf_uN: `%%`(32, $inez_($jsizenn(Jnn), !($proj_lane__2(i)))))*{i <- `i*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_1)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)} -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) @@ -10174,75 +11137,67 @@ relation Step_pure: `%~>%`(instr*, instr*) rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_uN: `%%`(32, $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)} + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_2)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextunop__(sh_1, sh_2, vextunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation blocktype__is_wf: `%%%`(state : state, blocktype : blocktype, ret_val : instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule blocktype__is_wf0{state : state, blocktype : blocktype, ret_val : instrtype}: + `%%%`(state, blocktype, ret_val) + -- wf_state: `%`(state) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $blocktype_(state, blocktype)) + -- wf_instrtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) @@ -10252,8 +11207,7 @@ relation `Step_read_before_br_on_cast-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10264,7 +11218,7 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10272,34 +11226,24 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) @@ -10307,8 +11251,7 @@ relation `Step_read_before_table.fill-zero`: `%`(config) rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-zero`: `%`(config) @@ -10316,8 +11259,8 @@ relation `Step_read_before_table.copy-zero`: `%`(config) rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-le`: `%`(config) @@ -10326,14 +11269,13 @@ relation `Step_read_before_table.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-gt`: `%`(config) @@ -10342,29 +11284,19 @@ relation `Step_read_before_table.copy-gt`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.init-zero`: `%`(config) @@ -10372,8 +11304,8 @@ relation `Step_read_before_table.init-zero`: `%`(config) rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.fill-zero`: `%`(config) @@ -10381,8 +11313,7 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-zero`: `%`(config) @@ -10390,8 +11321,8 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-le`: `%`(config) @@ -10400,14 +11331,13 @@ relation `Step_read_before_memory.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.init-zero`: `%`(config) @@ -10415,8 +11345,8 @@ relation `Step_read_before_memory.init-zero`: `%`(config) rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_ref.test-false`: `%`(config) @@ -10426,8 +11356,7 @@ relation `Step_read_before_ref.test-false`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10438,7 +11367,7 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10447,8 +11376,21 @@ relation `Step_read_before_array.fill-zero`: `%`(config) rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-zero`: `%`(config) @@ -10456,15 +11398,13 @@ relation `Step_read_before_array.copy-zero`: `%`(config) rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-le`: `%`(config) @@ -10473,21 +11413,18 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-gt`: `%`(config) @@ -10497,17 +11434,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10515,37 +11441,52 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.init_elem-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-zero`: `%`(config) @@ -10554,16 +11495,14 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-num`: `%`(config) @@ -10572,23 +11511,20 @@ relation `Step_read_before_array.init_data-num`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) @@ -10596,16 +11532,14 @@ relation Step_read: `%~>%`(config, instr*) rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10614,15 +11548,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: @@ -10630,29 +11562,23 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, yy : typeuse}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: @@ -10661,8 +11587,7 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) @@ -10671,307 +11596,228 @@ relation Step_read: `%~>%`(config, instr*) rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($local(z, x) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) + -- (wf_val: `%`(iter))?{iter <- $local(z, x)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `global.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($global(z, x).VALUE_globalinst = val) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) + -- wf_globalinst: `%`($global(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0] : ref <: instr)]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) - -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tableinst: `%`($table(z, x)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), []) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) -- if (n =/= 0) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), []) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0] : ref <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[(($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) rule `vload-splat-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: @@ -10989,8 +11834,9 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) @@ -10998,8 +11844,7 @@ relation Step_read: `%~>%`(config, instr*) rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: @@ -11007,15 +11852,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: @@ -11024,8 +11869,10 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, k)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) @@ -11034,49 +11881,39 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) - -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_meminst: `%`($mem(z, x)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), []) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) -- if (n =/= 0) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), []) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -11084,15 +11921,6 @@ relation Step_read: `%~>%`(config, instr*) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -11100,55 +11928,33 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), []) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL`_instr(ht)])) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) - -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -11156,16 +11962,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -11173,37 +11976,31 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))}*{zt <- `zt*`} + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])) : val <: instr)]) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11211,33 +12008,28 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (!($default_($unpack(zt))) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))} + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11245,129 +12037,88 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_byte: `%`(iter))*{iter <- $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))} + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)}^n{c <- `c*`} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])) : val <: instr)]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) - -- if (n =/= 0) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), []) - -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) - -- if (n =/= 0) - -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11376,84 +12127,53 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), []) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) - -- if (n =/= 0) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11461,7 +12181,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), []) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: @@ -11469,15 +12188,8 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11489,23 +12201,18 @@ relation Step: `%~>%`(config, config) rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11513,8 +12220,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11522,8 +12227,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11531,8 +12234,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) @@ -11542,104 +12243,88 @@ relation Step: `%~>%`(config, config) -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_taginst: `%`($tag(z, x)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 rule `local.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:322.1-323.58 rule `global.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:340.1-342.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-354.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if (ti = !($growtable($table(z, x), n, ref))) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_tableinst: `%`(!($growtable($table(z, x), n, ref))) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:356.1-357.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:417.1-418.51 rule `elem.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:501.1-504.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:506.1-510.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))} + -- wf_uN: `%%`(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-531.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:534.1-537.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-544.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: @@ -11647,28 +12332,23 @@ relation Step: `%~>%`(config, config) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))} -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:553.1-556.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if (mi = !($growmem($mem(z, x), n))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_meminst: `%`(!($growmem($mem(z, x), n))) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:558.1-559.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:619.1-620.51 rule `data.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:700.1-704.65 rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: @@ -11676,23 +12356,18 @@ relation Step: `%~>%`(config, config) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:721.1-722.55 rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:724.1-727.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:740.1-745.65 @@ -11700,30 +12375,24 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-786.66 rule `array.set-null`{z : state, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:788.1-790.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-795.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -11735,7 +12404,6 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: @@ -11743,8 +12411,8 @@ relation Steps: `%~>*%`(config, config) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11777,9 +12445,18 @@ def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) -- if (taginst = {TYPE tagtype}) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_taginst: `%`({TYPE tagtype}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctag_is_wf: `%%%`(store : store, tagtype : tagtype, ret_val : (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctag_is_wf0{store : store, tagtype : tagtype, ret_val : (store, tagaddr)}: + `%%%`(store, tagtype, ret_val) + -- wf_store: `%`(store) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = $alloctag(store, tagtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11791,6 +12468,22 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- let{ja : tagaddr, s_1 : store} (s_1, ja) = $alloctag(s, tagtype) -- let{s_2 : store, `ja'*` : tagaddr*} (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) + -- wf_store: `%`($alloctag(s, tagtype).0) + -- wf_store: `%`($alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation alloctags_is_wf: `%%%`(store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule alloctags_is_wf0{store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_typeuse: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $alloctags(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11798,9 +12491,19 @@ def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, gl ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) -- if (globalinst = {TYPE globaltype, VALUE val}) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocglobal_is_wf: `%%%%`(store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocglobal_is_wf0{store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)}: + `%%%%`(store, globaltype, val, ret_val) + -- wf_store: `%`(store) + -- wf_globaltype: `%`(globaltype) + -- wf_val: `%`(val) + -- if (ret_val = $allocglobal(store, globaltype, val)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11812,6 +12515,23 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- let{ga : globaladdr, s_1 : store} (s_1, ga) = $allocglobal(s, globaltype, val) -- let{s_2 : store, `ga'*` : globaladdr*} (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) + -- wf_store: `%`($allocglobal(s, globaltype, val).0) + -- wf_store: `%`($allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation allocglobals_is_wf: `%%%%`(store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule allocglobals_is_wf0{store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $allocglobals(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11819,9 +12539,18 @@ def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmem_is_wf: `%%%`(store : store, memtype : memtype, ret_val : (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmem_is_wf0{store : store, memtype : memtype, ret_val : (store, memaddr)}: + `%%%`(store, memtype, ret_val) + -- wf_store: `%`(store) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $allocmem(store, memtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11833,6 +12562,22 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- let{ma : memaddr, s_1 : store} (s_1, ma) = $allocmem(s, memtype) -- let{s_2 : store, `ma'*` : memaddr*} (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) + -- wf_store: `%`($allocmem(s, memtype).0) + -- wf_store: `%`($allocmems(s_1, memtype'*{memtype' <- `memtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation allocmems_is_wf: `%%%`(store : store, var_0 : memtype*, ret_val : (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule allocmems_is_wf0{store : store, var_0 : memtype*, ret_val : (store, memaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_memtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocmems(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11840,9 +12585,19 @@ def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, table ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctable_is_wf: `%%%%`(store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctable_is_wf0{store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)}: + `%%%%`(store, tabletype, ref, ret_val) + -- wf_store: `%`(store) + -- wf_tabletype: `%`(tabletype) + -- wf_ref: `%`(ref) + -- if (ret_val = $alloctable(store, tabletype, ref)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11854,6 +12609,23 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- let{ta : tableaddr, s_1 : store} (s_1, ta) = $alloctable(s, tabletype, ref) -- let{s_2 : store, `ta'*` : tableaddr*} (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) + -- wf_store: `%`($alloctable(s, tabletype, ref).0) + -- wf_store: `%`($alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation alloctables_is_wf: `%%%%`(store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule alloctables_is_wf0{store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_tabletype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $alloctables(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11861,9 +12633,19 @@ def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocfunc_is_wf: `%%%%%`(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocfunc_is_wf0{store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)}: + `%%%%%`(store, deftype, funccode, moduleinst, ret_val) + -- wf_store: `%`(store) + -- wf_funccode: `%`(funccode) + -- wf_moduleinst: `%`(moduleinst) + -- if (ret_val = $allocfunc(store, deftype, funccode, moduleinst)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11875,6 +12657,23 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- let{fa : funcaddr, s_1 : store} (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) -- let{s_2 : store, `fa'*` : funcaddr*} (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) + -- wf_store: `%`($allocfunc(s, dt, funccode, moduleinst).0) + -- wf_store: `%`($allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation allocfuncs_is_wf: `%%%%%`(store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule allocfuncs_is_wf0{store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)}: + `%%%%%`(store, var_0, var_1, var_2, ret_val) + -- wf_store: `%`(store) + -- (wf_funccode: `%`(var_1))*{var_1 <- var_1} + -- (wf_moduleinst: `%`(var_2))*{var_2 <- var_2} + -- if (ret_val = $allocfuncs(store, var_0, var_1, var_2)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11882,9 +12681,18 @@ def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocdata_is_wf: `%%%%`(store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocdata_is_wf0{store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)}: + `%%%%`(store, datatype, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocdata(store, datatype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11896,6 +12704,22 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) -- let{da : dataaddr, s_1 : store} (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) -- let{s_2 : store, `da'*` : dataaddr*} (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) + -- wf_store: `%`($allocdata(s, ok, b*{b <- `b*`}).0) + -- wf_store: `%`($allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation allocdatas_is_wf: `%%%%`(store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule allocdatas_is_wf0{store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocdatas(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11903,9 +12727,19 @@ def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocelem_is_wf: `%%%%`(store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocelem_is_wf0{store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)}: + `%%%%`(store, elemtype, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_reftype: `%`(elemtype) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocelem(store, elemtype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -11917,31 +12751,63 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- let{ea : elemaddr, s_1 : store} (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- wf_store: `%`($allocelem(s, rt, ref*{ref <- `ref*`}).0) + -- wf_store: `%`($allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation allocelems_is_wf: `%%%%`(store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule allocelems_is_wf0{store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_reftype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocelems(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexport_is_wf: `%%%`(moduleinst : moduleinst, export : export, ret_val : exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexport_is_wf0{moduleinst : moduleinst, export : export, ret_val : exportinst}: + `%%%`(moduleinst, export, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_export: `%`(export) + -- if (ret_val = $allocexport(moduleinst, export)) + -- wf_exportinst: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexports_is_wf: `%%%`(moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexports_is_wf0{moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*}: + `%%%`(moduleinst, var_0, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- (wf_export: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocexports(moduleinst, var_0)) + -- (wf_exportinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11970,8 +12836,19 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[$proj_uN_0(x).0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`($alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}).0) + -- (wf_typeuse: `%`($subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{tagtype <- `tagtype*`} + -- wf_store: `%`($allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`}).0) + -- (wf_globaltype: `%`($subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{globaltype <- `globaltype*`} + -- wf_store: `%`($allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}).0) + -- (wf_memtype: `%`($subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{memtype <- `memtype*`} + -- wf_store: `%`($alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`}).0) + -- (wf_tabletype: `%`($subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{tabletype <- `tabletype*`} + -- wf_store: `%`($allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}).0) + -- wf_store: `%`($allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).0) + -- (wf_reftype: `%`($subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{elemtype <- `elemtype*`} + -- wf_store: `%`($allocfuncs(s_6, dt*{dt <- `dt*`}[$proj_uN_0(x).0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{}).0) + -- (wf_exportinst: `%`(iter))*{iter <- $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})} -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} @@ -11983,16 +12860,36 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmodule_is_wf: `%%%%%%%`(store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmodule_is_wf0{store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)}: + `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- (wf_ref: `%`(var_2))*{var_2 <- var_2} + -- (wf_ref: `%`(var_3))*{var_3 <- var_3}*{var_3 <- var_3} + -- if (ret_val = $allocmodule(store, module, var_0, var_1, var_2, var_3)) + -- wf_store: `%`(ret_val.0) + -- wf_moduleinst: `%`(ret_val.1) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_(dataidx : dataidx, data : data) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, n : nat, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(y, x)) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation rundata__is_wf: `%%%`(dataidx : dataidx, data : data, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule rundata__is_wf0{dataidx : dataidx, data : data, ret_val : instr*}: + `%%%`(dataidx, data, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- wf_data: `%`(data) + -- if (ret_val = $rundata_(dataidx, data)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -12000,13 +12897,18 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`TABLE.INIT`_instr(y, x)) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation runelem__is_wf: `%%%`(elemidx : elemidx, elem : elem, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule runelem__is_wf0{elemidx : elemidx, elem : elem, ret_val : instr*}: + `%%%`(elemidx, elem, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- wf_elem: `%`(elem) + -- if (ret_val = $runelem_(elemidx, elem)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12019,8 +12921,24 @@ def $evalexprs(state : state, expr*) : (state, ref*) def $evalexprs{z : state, expr : instr*, `expr'*` : expr*, ref : ref, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) -- let{z'' : state, `ref'*` : ref*} (z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`}) - -- wf_ref: `%`(ref) -- wf_state: `%`(z') + -- wf_state: `%`($evalexprs(z', expr'*{expr' <- `expr'*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z', expr'*{expr' <- `expr'*`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation evalexprs_is_wf: `%%%`(state : state, var_0 : expr*, ret_val : (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule evalexprs_is_wf0{state : state, var_0 : expr*, ret_val : (state, ref*)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprs(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12034,6 +12952,25 @@ def $evalexprss(state : state, expr**) : (state, ref**) def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) -- let{`ref*` : ref*, z' : state} (z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`}) -- let{z'' : state, `ref'**` : ref**} (z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) + -- wf_state: `%`($evalexprs(z, expr*{expr <- `expr*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z, expr*{expr <- `expr*`}).1} + -- wf_state: `%`($evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}).0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation evalexprss_is_wf: `%%%`(state : state, var_0 : expr**, ret_val : (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule evalexprss_is_wf0{state : state, var_0 : expr**, ret_val : (state, ref**)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprss(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12049,12 +12986,30 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- let{s : store, f : frame} `%;%`_state(s, f) = z' -- let{s' : store, a : addr} (s', a) = $allocglobal(s, gt, val) -- let{z'' : state, `val'*` : val*} (z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}) - -- wf_val: `%`(val) -- wf_state: `%`(z') + -- wf_store: `%`($allocglobal(s, gt, val).0) + -- wf_state: `%`($evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}).0) + -- (wf_val: `%`(iter))*{iter <- $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}).1} -- wf_state: `%`(`%;%`_state(s, f)) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) } +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation evalglobals_is_wf: `%%%%`(state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule evalglobals_is_wf0{state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)}: + `%%%%`(state, var_0, var_1, ret_val) + -- wf_state: `%`(state) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_instr: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $evalglobals(state, var_0, var_1)) + -- wf_state: `%`(ret_val.0) + -- (wf_val: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12078,7 +13033,18 @@ def $instantiate(store : store, module : module, externaddr*) : config -- let{`instr_E*` : instr*} instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){}) -- let{`instr_S?` : instr?} instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} -- wf_state: `%`(z) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_state: `%`($evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}).0) + -- (wf_val: `%`(iter))*{iter <- $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}).1} + -- wf_state: `%`($evalexprs(z', expr_T*{expr_T <- `expr_T*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z', expr_T*{expr_T <- `expr_T*`}).1} + -- wf_state: `%`($evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`}).0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- $evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`}).1} + -- wf_store: `%`($allocmodule(s''', module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).0) + -- wf_moduleinst: `%`($allocmodule(s''', module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).1) + -- (wf_instr: `%`(iter))*{iter <- $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})} + -- (wf_instr: `%`(iter))*{iter <- $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])}^(i_D<|data*{data <- `data*`}|){} + -- (wf_instr: `%`(iter))*{iter <- $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})} + -- (wf_instr: `%`(iter))*{iter <- $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])}^(i_E<|elem*{elem <- `elem*`}|){} -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} @@ -12093,15 +13059,34 @@ def $instantiate(store : store, module : module, externaddr*) : config -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){} -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation instantiate_is_wf: `%%%%`(store : store, module : module, var_0 : externaddr*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule instantiate_is_wf0{store : store, module : module, var_0 : externaddr*, ret_val : config}: + `%%%%`(store, module, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- if (ret_val = $instantiate(store, module, var_0)) + -- wf_config: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation invoke_is_wf: `%%%%`(store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule invoke_is_wf0{store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config}: + `%%%%`(store, funcaddr, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_val: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $invoke(store, funcaddr, var_0)) + -- wf_config: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec syntax castop = (null?, null?) @@ -12120,6 +13105,14 @@ syntax nopt = u32* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec def $ieee_(N : N, rat : rat) : fNmag +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation ieee__is_wf: `%%%`(N : N, rat : rat, ret_val : fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule ieee__is_wf0{N : N, rat : rat, ret_val : fNmag}: + `%%%`(N, rat, ret_val) + -- if (ret_val = $ieee_(N, rat)) + -- wf_fNmag: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec syntax idctxt = { @@ -12164,11 +13157,23 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 def $concat_idctxt{I : idctxt, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation concat_idctxt_is_wf: `%%`(var_0 : idctxt*, ret_val : idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule concat_idctxt_is_wf0{var_0 : idctxt*, ret_val : idctxt}: + `%%`(var_0, ret_val) + -- (wf_idctxt: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $concat_idctxt(var_0)) + -- wf_idctxt: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -12186,7 +13191,17 @@ relation Idctxt_ok: `|-%:OK`(idctxt) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -- wf_idctxt: `%`(I) + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TYPES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TAGS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.GLOBALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.MEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TABLES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.FUNCS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.DATAS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.ELEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LOCALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LABELS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])}*{`field*` <- `field**`} -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -12301,6 +13316,19 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation importsd_is_wf: `%%`(var_0 : decl*, ret_val : import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule importsd_is_wf0{var_0 : decl*, ret_val : import*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $importsd(var_0)) + -- (wf_import: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 @@ -12314,6 +13342,19 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation tagsd_is_wf: `%%`(var_0 : decl*, ret_val : tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule tagsd_is_wf0{var_0 : decl*, ret_val : tag*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tagsd(var_0)) + -- (wf_tag: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 @@ -12327,6 +13368,19 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation globalsd_is_wf: `%%`(var_0 : decl*, ret_val : global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule globalsd_is_wf0{var_0 : decl*, ret_val : global*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsd(var_0)) + -- (wf_global: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 @@ -12340,6 +13394,19 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation memsd_is_wf: `%%`(var_0 : decl*, ret_val : mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule memsd_is_wf0{var_0 : decl*, ret_val : mem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsd(var_0)) + -- (wf_mem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 @@ -12353,6 +13420,19 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation tablesd_is_wf: `%%`(var_0 : decl*, ret_val : table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule tablesd_is_wf0{var_0 : decl*, ret_val : table*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesd(var_0)) + -- (wf_table: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 @@ -12366,6 +13446,19 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation funcsd_is_wf: `%%`(var_0 : decl*, ret_val : func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule funcsd_is_wf0{var_0 : decl*, ret_val : func*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $funcsd(var_0)) + -- (wf_func: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 @@ -12379,6 +13472,19 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation datasd_is_wf: `%%`(var_0 : decl*, ret_val : data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule datasd_is_wf0{var_0 : decl*, ret_val : data*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $datasd(var_0)) + -- (wf_data: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 @@ -12392,6 +13498,19 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation elemsd_is_wf: `%%`(var_0 : decl*, ret_val : elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule elemsd_is_wf0{var_0 : decl*, ret_val : elem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $elemsd(var_0)) + -- (wf_elem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 @@ -12405,6 +13524,19 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation startsd_is_wf: `%%`(var_0 : decl*, ret_val : start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule startsd_is_wf0{var_0 : decl*, ret_val : start*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $startsd(var_0)) + -- (wf_start: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 def $exportsd(decl*) : export* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 @@ -12415,11 +13547,25 @@ def $exportsd(decl*) : export* def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) } +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation exportsd_is_wf: `%%`(var_0 : decl*, ret_val : export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule exportsd_is_wf0{var_0 : decl*, ret_val : export*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $exportsd(var_0)) + -- (wf_export: `%`(ret_val))*{ret_val <- ret_val} +} + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered(decl*) : bool ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true -- if ($importsd(decl*{decl <- `decl*`}) = []) + -- (wf_import: `%`(iter))*{iter <- $importsd(decl*{decl <- `decl*`})} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) @@ -12443,7 +13589,6 @@ relation Context_ok: `|-%:OK`(context) -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt : reftype <: valtype)])))*{rt <- `rt*`} -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)])))?{rt' <- `rt'?`} -- (if ($proj_uN_0(x).0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} - -- wf_context: `%`(C) -- wf_context: `%`(C_0) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -12457,23 +13602,16 @@ relation Localval_ok: `%|-%:%`(store, val?, localtype) rule set{s : store, val : val, t : valtype}: `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule unset{s : store}: `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, BOT_valtype)) - -- wf_store: `%`(s) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, BOT_valtype)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Datainst_ok: `%|-%:%`(store, datainst, datatype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{s : store, `b*` : byte*}: `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) - -- wf_store: `%`(s) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) @@ -12482,8 +13620,6 @@ relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12492,9 +13628,7 @@ relation Exportinst_ok: `%|-%:OK`(store, exportinst) rule _{s : store, nm : name, xa : externaddr, xt : externtype}: `%|-%:OK`(s, {NAME nm, ADDR xa}) -- Externaddr_ok: `%|-%:%`(s, xa, xt) - -- wf_store: `%`(s) -- wf_externtype: `%`(xt) - -- wf_exportinst: `%`({NAME nm, ADDR xa}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) @@ -12512,9 +13646,6 @@ relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) -- (Exportinst_ok: `%|-%:OK`(s, exportinst))*{exportinst <- `exportinst*`} -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} - -- wf_store: `%`(s) - -- wf_moduleinst: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}) - -- wf_context: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (wf_externtype: `%`(TAG_externtype(tagtype)))*{tagtype <- `tagtype*`} -- (wf_externtype: `%`(GLOBAL_externtype(globaltype)))*{globaltype <- `globaltype*`} @@ -12529,10 +13660,6 @@ relation Frame_ok: `%|-%:%`(store, frame, context) `%|-%:%`(s, {LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}, C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) - -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rec { @@ -12543,29 +13670,18 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) rule plain{s : store, C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 rule ref{s : store, C : context, ref : ref, rt : reftype}: `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_ref: `%`(ref) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) @@ -12575,30 +13691,19 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) -- Frame_ok: `%|-%:%`(s, f, C') -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) -- wf_context: `%`(C') - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRAP_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 @@ -12606,9 +13711,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 rule empty{s : store, C : context}: `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -12616,11 +13718,7 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -12632,10 +13730,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 @@ -12643,10 +13737,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 @@ -12655,9 +13745,6 @@ relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) } @@ -12667,8 +13754,6 @@ relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) rule _{s : store, jt : tagtype}: `%|-%:%`(s, {TYPE jt}, jt) -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) - -- wf_store: `%`(s) - -- wf_taginst: `%`({TYPE jt}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12678,10 +13763,8 @@ relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Meminst_ok: `%|-%:%`(store, meminst, memtype) @@ -12690,10 +13773,8 @@ relation Meminst_ok: `%|-%:%`(store, meminst, memtype) `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) - -- wf_store: `%`(s) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) @@ -12703,10 +13784,8 @@ relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- if (|ref*{ref <- `ref*`}| = n) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) @@ -12717,9 +13796,7 @@ relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- Func_ok: `%|-%:%`(C, func, dt') -- Deftype_sub: `%|-%<:%`(C, dt', dt) - -- wf_store: `%`(s) -- wf_context: `%`(C) - -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE (func : func <: funccode)}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12729,8 +13806,6 @@ relation Structinst_ok: `%|-%:OK`(store, structinst) `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} - -- wf_store: `%`(s) - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12740,8 +13815,6 @@ relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} - -- wf_store: `%`(s) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12752,8 +13825,6 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) -- if ((dt : deftype <: typeuse) = s.TAGS_store[ta].TYPE_taginst) -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} - -- wf_store: `%`(s) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12766,9 +13837,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(fv_1, s, fv_2) -- ImmutReachable: `%>>_%%`(fv_1, s, fv') -- ImmutReachable: `%>>_%%`(fv', s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) -- wf_fieldval: `%`(fv') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 @@ -12776,8 +13844,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) @@ -12785,21 +13851,15 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 rule `ref.exn`{a : addr, s : store, i : nat}: `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, (s.EXNS_store[a].FIELDS_exninst[i] : val <: fieldval)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 rule `ref.extern`{ref : ref, s : store}: `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(ref)) } ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12817,9 +13877,6 @@ relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: `~%>>_%%`(fv_1, s, fv_2) -- if $NotImmutReachable(fv_1, s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Store_ok: `|-%:OK`(store) @@ -12840,7 +13897,6 @@ relation Store_ok: `|-%:OK`(store) -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) - -- wf_store: `%`(s) -- (wf_typeuse: `%`(tagtype))*{tagtype <- `tagtype*`} -- (wf_globaltype: `%`(globaltype))*{globaltype <- `globaltype*`} -- (wf_memtype: `%`(memtype))*{memtype <- `memtype*`} @@ -12856,7 +13912,6 @@ relation Extend_taginst: `%<=%`(taginst, taginst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{jt : tagtype}: `%<=%`({TYPE jt}, {TYPE jt}) - -- wf_taginst: `%`({TYPE jt}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_globalinst: `%<=%`(globalinst, globalinst) @@ -12864,8 +13919,6 @@ relation Extend_globalinst: `%<=%`(globalinst, globalinst) rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_meminst: `%<=%`(meminst, meminst) @@ -12874,8 +13927,6 @@ relation Extend_meminst: `%<=%`(meminst, meminst) `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) -- if (n <= n') -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_tableinst: `%<=%`(tableinst, tableinst) @@ -12884,15 +13935,12 @@ relation Extend_tableinst: `%<=%`(tableinst, tableinst) `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) -- if (n <= n') -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_funcinst: `%<=%`(funcinst, funcinst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{dt : deftype, mm : moduleinst, fc : funccode}: `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) - -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_datainst: `%<=%`(datainst, datainst) @@ -12900,8 +13948,6 @@ relation Extend_datainst: `%<=%`(datainst, datainst) rule _{`b*` : byte*, `b'*` : byte*}: `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) - -- wf_datainst: `%`({BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_eleminst: `%<=%`(eleminst, eleminst) @@ -12909,8 +13955,6 @@ relation Extend_eleminst: `%<=%`(eleminst, eleminst) rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) - -- wf_eleminst: `%`({TYPE rt, REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_structinst: `%<=%`(structinst, structinst) @@ -12919,8 +13963,6 @@ relation Extend_structinst: `%<=%`(structinst, structinst) `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12930,8 +13972,6 @@ relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12939,7 +13979,6 @@ relation Extend_exninst: `%<=%`(exninst, exninst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{ta : tagaddr, `val*` : val*}: `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_store: `%<=%`(store, store) @@ -12956,8 +13995,6 @@ relation Extend_store: `%<=%`(store, store) -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} - -- wf_store: `%`(s) - -- wf_store: `%`(s') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation State_ok: `|-%:%`(state, context) @@ -12966,8 +14003,6 @@ relation State_ok: `|-%:%`(state, context) `|-%:%`(`%;%`_state(s, f), C) -- Store_ok: `|-%:OK`(s) -- Frame_ok: `%|-%:%`(s, f, C) - -- wf_context: `%`(C) - -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Config_ok: `|-%:OK`(config) @@ -12978,7 +14013,6 @@ relation Config_ok: `|-%:OK`(config) -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) -- (wf_valtype: `%`(t))*{t <- `t*`} - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat @@ -13039,17 +14073,11 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule `i32.add`{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 @@ -13057,8 +14085,6 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) } @@ -13068,27 +14094,26 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation instrdots_is_wf: `%`(ret_val : instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule instrdots_is_wf0{ret_val : instr*}: + `%`(ret_val) + -- if (ret_val = $instrdots) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec syntax label = | `LABEL_%{%}`(n : n, `instr*` : instr*) @@ -13114,6 +14139,15 @@ relation wf_callframe: `%`(callframe) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation allocX_is_wf(syntax X, syntax Y): `%%%%`(store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule allocX_is_wf0{syntax X, syntax Y, store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)}: + `%%%%`(store, X_0, Y_0, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocX(syntax X, syntax Y, store, X_0, Y_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rec { @@ -13125,6 +14159,21 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) -- let{s_2 : store, `a'*` : addr*} (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) + -- wf_store: `%`($allocX(syntax X, syntax Y, s, X, Y).0) + -- wf_store: `%`($allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}).0) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 +relation allocXs_is_wf(syntax X, syntax Y): `%%%%`(store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 + rule allocXs_is_wf0{syntax X, syntax Y, store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocXs(syntax X, syntax Y, store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec diff --git a/spectec/test-middlend/specification.exp/09-sideconditions.il b/spectec/test-middlend/specification.exp/09-sideconditions.il index 4b6b566f00..fc11f01cbf 100644 --- a/spectec/test-middlend/specification.exp/09-sideconditions.il +++ b/spectec/test-middlend/specification.exp/09-sideconditions.il @@ -329,19 +329,40 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fzero_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fzero_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fzero(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fnat_is_wf: `%%%`(N : N, nat : nat, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fnat_is_wf0{N : N, nat : nat, ret_val : fN}: + `%%%`(N, nat, ret_val) + -- if (ret_val = $fnat(N, nat)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fone_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fone_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fone(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -402,23 +423,27 @@ def $utf8(char*) : byte* def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation utf8_is_wf: `%%`(var_0 : char*, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule utf8_is_wf0{var_0 : char*, ret_val : byte*}: + `%%`(var_0, ret_val) + -- (wf_char: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $utf8(var_0)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -612,10 +637,18 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_opt_is_wf: `%%`(var_0 : free?, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_opt_is_wf0{var_0 : free?, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))?{var_0 <- var_0} + -- if (ret_val = $free_opt(var_0)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -623,70 +656,162 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation free_list_is_wf: `%%`(var_0 : free*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule free_list_is_wf0{var_0 : free*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_list(var_0)) + -- wf_free: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_typeidx_is_wf: `%%`(typeidx : typeidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_typeidx_is_wf0{typeidx : typeidx, ret_val : free}: + `%%`(typeidx, ret_val) + -- wf_uN: `%%`(32, typeidx) + -- if (ret_val = $free_typeidx(typeidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_funcidx_is_wf: `%%`(funcidx : funcidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_funcidx_is_wf0{funcidx : funcidx, ret_val : free}: + `%%`(funcidx, ret_val) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $free_funcidx(funcidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_globalidx_is_wf: `%%`(globalidx : globalidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_globalidx_is_wf0{globalidx : globalidx, ret_val : free}: + `%%`(globalidx, ret_val) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $free_globalidx(globalidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tableidx_is_wf: `%%`(tableidx : tableidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tableidx_is_wf0{tableidx : tableidx, ret_val : free}: + `%%`(tableidx, ret_val) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $free_tableidx(tableidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_memidx_is_wf: `%%`(memidx : memidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_memidx_is_wf0{memidx : memidx, ret_val : free}: + `%%`(memidx, ret_val) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $free_memidx(memidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_elemidx_is_wf: `%%`(elemidx : elemidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_elemidx_is_wf0{elemidx : elemidx, ret_val : free}: + `%%`(elemidx, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- if (ret_val = $free_elemidx(elemidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_dataidx_is_wf: `%%`(dataidx : dataidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_dataidx_is_wf0{dataidx : dataidx, ret_val : free}: + `%%`(dataidx, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $free_dataidx(dataidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_localidx_is_wf: `%%`(localidx : localidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_localidx_is_wf0{localidx : localidx, ret_val : free}: + `%%`(localidx, ret_val) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $free_localidx(localidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_labelidx_is_wf: `%%`(labelidx : labelidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_labelidx_is_wf0{labelidx : labelidx, ret_val : free}: + `%%`(labelidx, ret_val) + -- wf_uN: `%%`(32, labelidx) + -- if (ret_val = $free_labelidx(labelidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx(tagidx : tagidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx{tagidx : uN}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tagidx_is_wf: `%%`(tagidx : tagidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tagidx_is_wf0{tagidx : tagidx, ret_val : free}: + `%%`(tagidx, ret_val) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $free_tagidx(tagidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -701,6 +826,15 @@ def $free_externidx(externidx : externidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_externidx_is_wf: `%%`(externidx : externidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_externidx_is_wf0{externidx : externidx, ret_val : free}: + `%%`(externidx, ret_val) + -- wf_externidx: `%`(externidx) + -- if (ret_val = $free_externidx(externidx)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = | NULL @@ -1065,73 +1199,157 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ANYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ANYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ANYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EQREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EQREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EQREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation I31REF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule I31REF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $I31REF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation STRUCTREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule STRUCTREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $STRUCTREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ARRAYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ARRAYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ARRAYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation FUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule FUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $FUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLFUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLFUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLFUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1439,7 +1657,15 @@ def $unpack(storagetype : storagetype) : valtype def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype - -- wf_valtype: `%`(I32_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation unpack_is_wf: `%%`(storagetype : storagetype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule unpack_is_wf0{storagetype : storagetype, ret_val : valtype}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $unpack(storagetype)) + -- wf_valtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1477,10 +1703,18 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation diffrt_is_wf: `%%%`(reftype : reftype, reftype_0 : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule diffrt_is_wf0{reftype : reftype, reftype_0 : reftype, ret_val : reftype}: + `%%%`(reftype, reftype_0, ret_val) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + -- if (ret_val = $diffrt(reftype, reftype_0)) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype? @@ -1518,6 +1752,19 @@ def $globalsxt(externtype*) : globaltype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation globalsxt_is_wf: `%%`(var_0 : externtype*, ret_val : globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule globalsxt_is_wf0{var_0 : externtype*, ret_val : globaltype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsxt(var_0)) + -- (wf_globaltype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 @@ -1531,6 +1778,19 @@ def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation memsxt_is_wf: `%%`(var_0 : externtype*, ret_val : memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule memsxt_is_wf0{var_0 : externtype*, ret_val : memtype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsxt(var_0)) + -- (wf_memtype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 @@ -1544,6 +1804,19 @@ def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation tablesxt_is_wf: `%%`(var_0 : externtype*, ret_val : tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule tablesxt_is_wf0{var_0 : externtype*, ret_val : tabletype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesxt(var_0)) + -- (wf_tabletype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 @@ -1570,6 +1843,22 @@ def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation subst_typevar_is_wf: `%%%%`(typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule subst_typevar_is_wf0{typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typevar, var_0, var_1, ret_val) + -- wf_typevar: `%`(typevar) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if ($subst_typevar(typevar, var_0, var_1) =/= ?()) + -- if (ret_val = !($subst_typevar(typevar, var_0, var_1))) + -- wf_typeuse: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.73 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 @@ -1579,11 +1868,28 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})) -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_typevar: `%`(_IDX_typevar(x)) + -- (wf_typevar: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).0} + -- (wf_typeuse: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).1} def $minus_recs{x0 : typevar*, x1 : typeuse*}(x0, x1) = ?() -- otherwise } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation minus_recs_is_wf: `%%%`(var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule minus_recs_is_wf0{var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)}: + `%%%`(var_0, var_1, ret_val) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if ($minus_recs(var_0, var_1) =/= ?()) + -- if (ret_val = !($minus_recs(var_0, var_1))) + -- (wf_typevar: `%`(iter))*{iter <- ret_val.0} + -- (wf_typeuse: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1622,7 +1928,6 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -1634,7 +1939,6 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1647,31 +1951,28 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- (wf_typevar: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).0} + -- (wf_typeuse: `%`(iter))*{iter <- !($minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})).1} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype @@ -1679,6 +1980,98 @@ def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation subst_typeuse_is_wf: `%%%%`(typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule subst_typeuse_is_wf0{typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typeuse, var_0, var_1, ret_val) + -- wf_typeuse: `%`(typeuse) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_typeuse(typeuse, var_0, var_1)) + -- wf_typeuse: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation subst_heaptype_is_wf: `%%%%`(heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule subst_heaptype_is_wf0{heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype}: + `%%%%`(heaptype, var_0, var_1, ret_val) + -- wf_heaptype: `%`(heaptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_heaptype(heaptype, var_0, var_1)) + -- wf_heaptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation subst_reftype_is_wf: `%%%%`(reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule subst_reftype_is_wf0{reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype}: + `%%%%`(reftype, var_0, var_1, ret_val) + -- wf_reftype: `%`(reftype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_reftype(reftype, var_0, var_1)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation subst_valtype_is_wf: `%%%%`(valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule subst_valtype_is_wf0{valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype}: + `%%%%`(valtype, var_0, var_1, ret_val) + -- wf_valtype: `%`(valtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_valtype(valtype, var_0, var_1)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation subst_storagetype_is_wf: `%%%%`(storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule subst_storagetype_is_wf0{storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype}: + `%%%%`(storagetype, var_0, var_1, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_storagetype(storagetype, var_0, var_1)) + -- wf_storagetype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation subst_fieldtype_is_wf: `%%%%`(fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule subst_fieldtype_is_wf0{fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype}: + `%%%%`(fieldtype, var_0, var_1, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_fieldtype(fieldtype, var_0, var_1)) + -- wf_fieldtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation subst_comptype_is_wf: `%%%%`(comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule subst_comptype_is_wf0{comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype}: + `%%%%`(comptype, var_0, var_1, ret_val) + -- wf_comptype: `%`(comptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_comptype(comptype, var_0, var_1)) + -- wf_comptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation subst_subtype_is_wf: `%%%%`(subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule subst_subtype_is_wf0{subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype}: + `%%%%`(subtype, var_0, var_1, ret_val) + -- wf_subtype: `%`(subtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_subtype(subtype, var_0, var_1)) + -- wf_subtype: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1693,97 +2086,204 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_globaltype_is_wf: `%%%%`(globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_globaltype_is_wf0{globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype}: + `%%%%`(globaltype, var_0, var_1, ret_val) + -- wf_globaltype: `%`(globaltype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_globaltype(globaltype, var_0, var_1)) + -- wf_globaltype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_memtype_is_wf: `%%%%`(memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_memtype_is_wf0{memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype}: + `%%%%`(memtype, var_0, var_1, ret_val) + -- wf_memtype: `%`(memtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_memtype(memtype, var_0, var_1)) + -- wf_memtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_tabletype_is_wf: `%%%%`(tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_tabletype_is_wf0{tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype}: + `%%%%`(tabletype, var_0, var_1, ret_val) + -- wf_tabletype: `%`(tabletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_tabletype(tabletype, var_0, var_1)) + -- wf_tabletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_externtype_is_wf: `%%%%`(externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_externtype_is_wf0{externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype}: + `%%%%`(externtype, var_0, var_1, ret_val) + -- wf_externtype: `%`(externtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_externtype(externtype, var_0, var_1)) + -- wf_externtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_moduletype_is_wf: `%%%%`(moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_moduletype_is_wf0{moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype}: + `%%%%`(moduletype, var_0, var_1, ret_val) + -- wf_moduletype: `%`(moduletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_moduletype(moduletype, var_0, var_1)) + -- wf_moduletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, n : nat, `tu*` : typeuse*, i : nat}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_moduletype_is_wf: `%%`(moduletype : moduletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_moduletype_is_wf0{moduletype : moduletype, ret_val : free}: + `%%`(moduletype, ret_val) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $free_moduletype(moduletype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax num_ = | mk_num__0(Inn : Inn, var_x : iN) @@ -2516,7 +3249,15 @@ relation wf_shape: `%`(shape) def $dim(shape : shape) : dim ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) - -- wf_dim: `%`(`%`_dim(N)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation dim_is_wf: `%%`(shape : shape, ret_val : dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_is_wf0{shape : shape, ret_val : dim}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $dim(shape)) + -- wf_dim: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $lanetype(shape : shape) : lanetype @@ -4271,22 +5012,45 @@ syntax expr = instr* def $memarg0 : memarg ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} - -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation memarg0_is_wf: `%`(ret_val : memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg0_is_wf0{ret_val : memarg}: + `%`(ret_val) + -- if (ret_val = $memarg0) + -- wf_memarg: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const(consttype : consttype, lit_ : lit_) : instr ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{numtype : numtype, c : num_}((numtype : numtype <: consttype), mk_lit__0_lit_(numtype, c)) = CONST_instr(numtype, c) - -- wf_instr: `%`(CONST_instr(numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{vectype : vectype, c : uN}((vectype : vectype <: consttype), mk_lit__1_lit_(vectype, c)) = VCONST_instr(vectype, c) - -- wf_instr: `%`(VCONST_instr(vectype, c)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation const_is_wf: `%%%`(consttype : consttype, lit_ : lit_, ret_val : instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule const_is_wf0{consttype : consttype, lit_ : lit_, ret_val : instr}: + `%%%`(consttype, lit_, ret_val) + -- wf_lit_: `%%`((consttype : consttype <: storagetype), lit_) + -- if (ret_val = $const(consttype, lit_)) + -- wf_instr: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_shape_is_wf: `%%`(shape : shape, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_shape_is_wf0{shape : shape, ret_val : free}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $free_shape(shape)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4294,6 +5058,15 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype{typeidx : uN}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_blocktype_is_wf: `%%`(blocktype : blocktype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_blocktype_is_wf0{blocktype : blocktype, ret_val : free}: + `%%`(blocktype, ret_val) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $free_blocktype(blocktype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4305,6 +5078,15 @@ def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch{labelidx : uN}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_catch_is_wf: `%%`(catch : catch, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_catch_is_wf0{catch : catch, ret_val : free}: + `%%`(catch, ret_val) + -- wf_catch: `%`(catch) + -- if (ret_val = $free_catch(catch)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { @@ -4316,7 +5098,6 @@ def $shift_labelidxs(labelidx*) : labelidx* def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.91 def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4326,13 +5107,10 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-435.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.92 @@ -4363,7 +5141,6 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.66 @@ -4374,7 +5151,6 @@ def $free_instr(instr : instr) : free def $free_instr{tagidx : uN}(THROW_instr(tagidx)) = $free_tagidx(tagidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.32 def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-469.99 def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.63 @@ -4437,13 +5213,10 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.34 def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.38 def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.29 def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 @@ -4452,10 +5225,8 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.30 def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.61 def $free_instr{typeidx : uN}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.69 @@ -4480,7 +5251,6 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.32 def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.61 def $free_instr{typeidx : uN}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.55 @@ -4491,10 +5261,8 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.41 def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 def $free_instr{localidx : uN}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 @@ -4551,6 +5319,30 @@ def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:589.1-590.47 def $free_block{`instr*` : instr*}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] -- let{free : free} free = $free_list($free_instr(instr)*{instr <- `instr*`}) + -- wf_free: `%`($free_list($free_instr(instr)*{instr <- `instr*`})) + -- (wf_free: `%`($free_instr(instr)))*{instr <- `instr*`} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation free_instr_is_wf: `%%`(instr : instr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule free_instr_is_wf0{instr : instr, ret_val : free}: + `%%`(instr, ret_val) + -- wf_instr: `%`(instr) + -- if (ret_val = $free_instr(instr)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation free_block_is_wf: `%%`(var_0 : instr*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule free_block_is_wf0{var_0 : instr*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_block(var_0)) + -- wf_free: `%`(ret_val) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4558,6 +5350,15 @@ def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_expr_is_wf: `%%`(expr : expr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_expr_is_wf0{expr : expr, ret_val : free}: + `%%`(expr, ret_val) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- if (ret_val = $free_expr(expr)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = | ACTIVE(tableidx : tableidx, expr : expr) @@ -4748,85 +5549,216 @@ def $free_type(type : type) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_type_is_wf: `%%`(type : type, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_type_is_wf0{type : type, ret_val : free}: + `%%`(type, ret_val) + -- if (ret_val = $free_type(type)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag(tag : tag) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_tag_is_wf: `%%`(tag : tag, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_tag_is_wf0{tag : tag, ret_val : free}: + `%%`(tag, ret_val) + -- wf_tag: `%`(tag) + -- if (ret_val = $free_tag(tag)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global(global : global) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_global_is_wf: `%%`(global : global, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_global_is_wf0{global : global, ret_val : free}: + `%%`(global, ret_val) + -- wf_global: `%`(global) + -- if (ret_val = $free_global(global)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem(mem : mem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_mem_is_wf: `%%`(mem : mem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_mem_is_wf0{mem : mem, ret_val : free}: + `%%`(mem, ret_val) + -- wf_mem: `%`(mem) + -- if (ret_val = $free_mem(mem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table(table : table) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_table_is_wf: `%%`(table : table, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_table_is_wf0{table : table, ret_val : free}: + `%%`(table, ret_val) + -- wf_table: `%`(table) + -- if (ret_val = $free_table(table)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local(local : local) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_local_is_wf: `%%`(local : local, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_local_is_wf0{local : local, ret_val : free}: + `%%`(local, ret_val) + -- wf_local: `%`(local) + -- if (ret_val = $free_local(local)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func(func : func) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_func_is_wf: `%%`(func : func, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_func_is_wf0{func : func, ret_val : free}: + `%%`(func, ret_val) + -- wf_func: `%`(func) + -- if (ret_val = $free_func(func)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(datamode : datamode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_datamode_is_wf: `%%`(datamode : datamode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_datamode_is_wf0{datamode : datamode, ret_val : free}: + `%%`(datamode, ret_val) + -- wf_datamode: `%`(datamode) + -- if (ret_val = $free_datamode(datamode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_data_is_wf: `%%`(data : data, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_data_is_wf0{data : data, ret_val : free}: + `%%`(data, ret_val) + -- wf_data: `%`(data) + -- if (ret_val = $free_data(data)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(elemmode : elemmode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elemmode_is_wf: `%%`(elemmode : elemmode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elemmode_is_wf0{elemmode : elemmode, ret_val : free}: + `%%`(elemmode, ret_val) + -- wf_elemmode: `%`(elemmode) + -- if (ret_val = $free_elemmode(elemmode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elem_is_wf: `%%`(elem : elem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elem_is_wf0{elem : elem, ret_val : free}: + `%%`(elem, ret_val) + -- wf_elem: `%`(elem) + -- if (ret_val = $free_elem(elem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start(start : start) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_start_is_wf: `%%`(start : start, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_start_is_wf0{start : start, ret_val : free}: + `%%`(start, ret_val) + -- wf_start: `%`(start) + -- if (ret_val = $free_start(start)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import(import : import) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_import_is_wf: `%%`(import : import, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_import_is_wf0{import : import, ret_val : free}: + `%%`(import, ret_val) + -- wf_import: `%`(import) + -- if (ret_val = $free_import(import)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export(export : export) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_export_is_wf: `%%`(export : export, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_export_is_wf0{export : export, ret_val : free}: + `%%`(export, ret_val) + -- wf_export: `%`(export) + -- if (ret_val = $free_export(export)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module(module : module) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_module_is_wf: `%%`(module : module, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_module_is_wf0{module : module, ret_val : free}: + `%%`(module, ret_val) + -- wf_module: `%`(module) + -- if (ret_val = $free_module(module)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $funcidx_module(module : module) : funcidx* ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec @@ -4912,6 +5844,22 @@ def $with_locals(context : context, localidx*, localtype*) : context? ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation with_locals_is_wf: `%%%%`(context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule with_locals_is_wf0{context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context}: + `%%%%`(context, var_0, var_1, ret_val) + -- wf_context: `%`(context) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_localtype: `%`(var_1))*{var_1 <- var_1} + -- if ($with_locals(context, var_0, var_1) =/= ?()) + -- if (ret_val = !($with_locals(context, var_0, var_1))) + -- wf_context: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(deftype*) : deftype* ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 @@ -4927,6 +5875,16 @@ def $clos_valtype(context : context, valtype : valtype) : valtype def $clos_valtype{C : context, t : valtype}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_valtype_is_wf: `%%%`(context : context, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_valtype_is_wf0{context : context, valtype : valtype, ret_val : valtype}: + `%%%`(context, valtype, ret_val) + -- wf_context: `%`(context) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $clos_valtype(context, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -4945,25 +5903,43 @@ def $clos_externtype(context : context, externtype : externtype) : externtype def $clos_externtype{C : context, xt : externtype}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_externtype_is_wf: `%%%`(context : context, externtype : externtype, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_externtype_is_wf0{context : context, externtype : externtype, ret_val : externtype}: + `%%%`(context, externtype, ret_val) + -- wf_context: `%`(context) + -- wf_externtype: `%`(externtype) + -- if (ret_val = $clos_externtype(context, externtype)) + -- wf_externtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_moduletype_is_wf: `%%%`(context : context, moduletype : moduletype, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_moduletype_is_wf0{context : context, moduletype : moduletype, ret_val : moduletype}: + `%%%`(context, moduletype, ret_val) + -- wf_context: `%`(context) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $clos_moduletype(context, moduletype)) + -- wf_moduletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypenat = @@ -4974,21 +5950,18 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) @@ -4996,6 +5969,7 @@ relation Expand: `%~~%`(deftype, comptype) rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: `%~~%`(deftype, comptype) -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- wf_subtype: `%`($unrolldt(deftype)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5003,7 +5977,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, nat : nat) : bool @@ -5021,6 +5994,16 @@ def $unrollht_(context : context, heaptype : heaptype) : subtype ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $unrollht_{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation unrollht__is_wf: `%%%`(context : context, heaptype : heaptype, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule unrollht__is_wf0{context : context, heaptype : heaptype, ret_val : subtype}: + `%%%`(context, heaptype, ret_val) + -- wf_context: `%`(context) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = $unrollht_(context, heaptype)) + -- wf_subtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -5029,20 +6012,15 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 rule bot{C : context}: `%|-%:OK`(C, BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) @@ -5050,8 +6028,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) @@ -5059,26 +6035,20 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) -- Numtype_ok: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) -- Vectype_ok: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) @@ -5087,23 +6057,18 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) - -- wf_context: `%`(C) -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) @@ -5111,8 +6076,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) @@ -5120,8 +6083,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) @@ -5129,14 +6090,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) @@ -5144,23 +6102,17 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) @@ -5175,8 +6127,7 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) -- (if ($unrollht_(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_subtype: `%`($unrollht_(C, (typeuse : typeuse <: heaptype))))*{typeuse <- `typeuse*`} -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 @@ -5184,16 +6135,12 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 rule empty{C : context, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypenat(i)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypenat(i)) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypenat((i + 1))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) @@ -5203,7 +6150,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}}) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 @@ -5213,26 +6159,17 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) @@ -5240,7 +6177,6 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: @@ -5248,7 +6184,7 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) - -- wf_context: `%`(C) + -- wf_subtype: `%`($unrolldt(deftype_1)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 @@ -5256,8 +6192,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: @@ -5265,95 +6199,64 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) -- wf_heaptype: `%`(heaptype') ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 @@ -5361,9 +6264,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 @@ -5371,9 +6271,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 @@ -5382,8 +6279,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- if (j < |typeuse*{typeuse <- `typeuse*`}|) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 @@ -5391,9 +6286,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) -- wf_heaptype: `%`(ANY_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5402,9 +6294,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) -- wf_heaptype: `%`(FUNC_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5413,9 +6302,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) -- wf_heaptype: `%`(EXN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5424,18 +6310,12 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) -- wf_heaptype: `%`(EXTERN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) @@ -5443,17 +6323,11 @@ relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) @@ -5461,28 +6335,20 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) @@ -5491,9 +6357,6 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) @@ -5501,15 +6364,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) @@ -5517,18 +6376,12 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) } ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5537,8 +6390,6 @@ relation Localtype_ok: `%|-%:OK`(context, localtype) rule _{C : context, init : init, t : valtype}: `%|-%:OK`(C, `%%`_localtype(init, t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) @@ -5550,9 +6401,7 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- if (|`lct*`| = |`x*`|) -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand_use: `%~~_%%`(typeuse, context, comptype) @@ -5560,17 +6409,12 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) -- Expand: `%~~%`(deftype, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5596,9 +6440,7 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`($unrolldt(C.TYPES_context[$proj_uN_0(x).0])))*{x <- `x*`} -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5609,17 +6451,12 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) } @@ -5631,8 +6468,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) @@ -5641,8 +6476,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) `%|-%:OK`(C, typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5651,8 +6484,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Memtype_ok: `%|-%:OK`(context, memtype) @@ -5660,8 +6491,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) @@ -5670,8 +6499,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Externtype_ok: `%|-%:OK`(context, externtype) @@ -5679,37 +6506,27 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5723,10 +6540,8 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- if (|`t*`| = |`x*`|) -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_uN: `%%`(32, iter))*{iter <- $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5736,17 +6551,11 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) -- if (n_1 >= n_2) -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule eps{C : context, n_1 : n, n_2 : n}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) -- if (n_1 >= n_2) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) @@ -5755,7 +6564,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) @@ -5763,18 +6571,12 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) @@ -5782,9 +6584,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) @@ -5794,9 +6593,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) @@ -5804,41 +6600,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) - -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) @@ -5846,18 +6627,12 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5870,8 +6645,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5882,8 +6655,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5891,36 +6662,38 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val?? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0))))) - -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))))) - -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(?(VCONST_val(Vnn, `%`_vec_(0)))) - -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) - -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) def $default_{x0 : valtype}(x0) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation default__is_wf: `%%`(valtype : valtype, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule default__is_wf0{valtype : valtype, ret_val : val?}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if ($default_(valtype) =/= ?()) + -- if (ret_val = !($default_(valtype))) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -5928,7 +6701,7 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) `|-%DEFAULTABLE`(t) -- if ($default_(t) =/= ?()) -- if (!($default_(t)) =/= ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) @@ -5937,7 +6710,6 @@ relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (m < (2 ^ $size((at : addrtype <: numtype)))) - -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec def $is_packtype(storagetype : storagetype) : bool @@ -5952,33 +6724,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: @@ -5986,18 +6747,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) - -- wf_context: `%`(C) -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6007,8 +6763,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6019,9 +6773,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6033,9 +6784,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 @@ -6043,9 +6791,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: @@ -6055,8 +6800,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(l').0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 @@ -6065,18 +6808,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -6087,10 +6824,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -6101,19 +6835,14 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- wf_reftype: `%`($diffrt(rt_1, rt_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 @@ -6121,9 +6850,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 @@ -6134,9 +6860,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6146,9 +6869,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 @@ -6159,10 +6879,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6174,10 +6891,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6192,10 +6906,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6208,9 +6919,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6218,9 +6926,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 @@ -6229,8 +6934,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6239,9 +6942,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule `ref.null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule `ref.func`{C : context, x : idx, dt : deftype}: @@ -6250,39 +6950,24 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (|C.REFS_context| > 0) -- if (x <- C.REFS_context) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule `ref.i31`{C : context}: `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule `ref.is_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule `ref.as_non_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule `ref.eq`{C : context}: `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule `ref.test`{C : context, rt : reftype, rt' : reftype}: @@ -6290,9 +6975,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.TEST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: @@ -6300,25 +6982,16 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.CAST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule `i31.get`{C : context, sx : sx}: `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 @@ -6327,9 +7000,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 @@ -6340,9 +7011,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) @@ -6353,9 +7021,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) @@ -6364,9 +7029,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 @@ -6375,9 +7037,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 @@ -6385,9 +7045,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 @@ -6397,9 +7054,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 @@ -6410,9 +7064,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 @@ -6421,9 +7073,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 @@ -6431,26 +7080,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule `array.len`{C : context}: `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.LEN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule `array.fill`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 @@ -6461,9 +7101,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) @@ -6474,9 +7111,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[$proj_uN_0(y).0] : reftype <: storagetype), zt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 @@ -6487,35 +7121,24 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule `local.get`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 @@ -6523,9 +7146,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 @@ -6533,9 +7153,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 @@ -6543,9 +7160,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 @@ -6553,9 +7167,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 @@ -6563,9 +7174,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 @@ -6573,9 +7181,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 @@ -6583,9 +7188,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 @@ -6593,9 +7195,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 @@ -6603,9 +7202,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 @@ -6616,9 +7212,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) @@ -6630,10 +7223,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 @@ -6641,19 +7231,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 @@ -6661,9 +7245,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 @@ -6671,9 +7252,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 @@ -6683,9 +7261,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) @@ -6696,9 +7271,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 @@ -6706,9 +7278,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: @@ -6716,9 +7285,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 @@ -6727,9 +7293,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 @@ -6738,9 +7301,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 @@ -6749,9 +7309,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 @@ -6760,9 +7317,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 @@ -6771,9 +7325,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 @@ -6782,9 +7333,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 @@ -6793,9 +7341,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 @@ -6805,9 +7350,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 @@ -6816,9 +7358,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 @@ -6828,217 +7367,131 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim($proj_bshape_0(sh).0)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -7050,10 +7503,7 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- if ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}) =/= ?()) -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -7065,9 +7515,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 @@ -7075,9 +7522,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -7087,8 +7531,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7098,89 +7540,63 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) `|-%NONDEFAULTABLE`(t) -- if ($default_(t) =/= ?()) -- if (!($default_(t)) = ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.null`{C : context, ht : heaptype}: `%|-%CONST`(C, `REF.NULL`_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.i31`{C : context}: `%|-%CONST`(C, `REF.I31`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.func`{C : context, x : idx}: `%|-%CONST`(C, `REF.FUNC`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new_default`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_default`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_fixed`{C : context, x : idx, n : n}: `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `any.convert_extern`{C : context}: `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `extern.convert_any`{C : context}: `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `global.get`{C : context, x : idx, t : valtype}: `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7190,8 +7606,6 @@ relation Instr_const: `%|-%CONST`(context, instr) -- if (Inn <- [I32_Inn I64_Inn]) -- if (|[mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]| > 0) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) @@ -7202,8 +7616,6 @@ relation Expr_const: `%|-%CONST`(context, expr) rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) @@ -7212,9 +7624,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) `%|-%:%CONST`(C, expr, t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) @@ -7224,7 +7633,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_oktypeidx: `%`(OK_oktypeidx(x)) @@ -7234,8 +7642,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Global_ok: `%|-%:%`(context, global, globaltype) @@ -7245,8 +7651,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7255,8 +7659,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Table_ok: `%|-%:%`(context, table, tabletype) @@ -7266,8 +7668,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7276,17 +7676,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) @@ -7298,8 +7692,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) @@ -7308,8 +7700,6 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: @@ -7317,8 +7707,6 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7327,24 +7715,16 @@ relation Data_ok: `%|-%:%`(context, data, datatype) rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: @@ -7353,9 +7733,6 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7366,8 +7743,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Start_ok: `%|-%:OK`(context, start) @@ -7376,8 +7751,6 @@ relation Start_ok: `%|-%:OK`(context, start) `%|-%:OK`(C, START_start(x)) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7386,8 +7759,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Externidx_ok: `%|-%:%`(context, externidx, externtype) @@ -7396,45 +7767,30 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Export_ok: `%|-%:%%`(context, export, name, externtype) @@ -7442,9 +7798,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) -- Externidx_ok: `%|-%:%`(C, externidx, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { @@ -7454,17 +7807,12 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7476,14 +7824,12 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7507,7 +7853,6 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) @@ -7543,11 +7888,13 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) - -- wf_context: `%`(C) -- wf_context: `%`(C') -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- (wf_uN: `%%`(32, iter))*{iter <- $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}))} + -- (wf_typeuse: `%`(iter))*{iter <- $tagsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_globaltype: `%`(iter))*{iter <- $globalsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_memtype: `%`(iter))*{iter <- $memsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_tabletype: `%`(iter))*{iter <- $tablesxt(xt_I*{xt_I <- `xt_I*`})} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -7599,81 +7946,272 @@ def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmadd : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmadd_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmadd_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_fmadd) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmin : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmin_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmin_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmin) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmax : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmax_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmax_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmax) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_idot : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_idot_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_idot_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_idot) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_iq15mulr : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_iq15mulr_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_iq15mulr_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_iq15mulr) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_u : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_u_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_u_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_trunc_u) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_s : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_s_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_s_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_trunc_s) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_swizzle : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_swizzle_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_swizzle_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_swizzle) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_laneselect : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_laneselect_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_laneselect_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_laneselect) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $s33_to_u32(s33 : s33) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibits_(N : N, iN : iN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibits__is_wf: `%%%`(N : N, iN : iN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibits__is_wf0{N : N, iN : iN, ret_val : bit*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibits_(N, iN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbits_(N : N, fN : fN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbits__is_wf: `%%%`(N : N, fN : fN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbits__is_wf0{N : N, fN : fN, ret_val : bit*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbits_(N, fN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibytes_(N : N, iN : iN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibytes__is_wf: `%%%`(N : N, iN : iN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibytes__is_wf0{N : N, iN : iN, ret_val : byte*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibytes_(N, iN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbytes_(N : N, fN : fN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbytes__is_wf: `%%%`(N : N, fN : fN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbytes__is_wf0{N : N, fN : fN, ret_val : byte*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbytes_(N, fN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $nbytes_(numtype : numtype, num_ : num_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation nbytes__is_wf: `%%%`(numtype : numtype, num_ : num_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule nbytes__is_wf0{numtype : numtype, num_ : num_, ret_val : byte*}: + `%%%`(numtype, num_, ret_val) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $nbytes_(numtype, num_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $vbytes_(vectype : vectype, vec_ : vec_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation vbytes__is_wf: `%%%`(vectype : vectype, vec_ : vec_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule vbytes__is_wf0{vectype : vectype, vec_ : vec_, ret_val : byte*}: + `%%%`(vectype, vec_, ret_val) + -- wf_uN: `%%`($vsize(vectype), vec_) + -- if (ret_val = $vbytes_(vectype, vec_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zbytes__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zbytes__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : byte*}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $zbytes_(storagetype, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cbytes__is_wf: `%%%`(Cnn : Cnn, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cbytes__is_wf0{Cnn : Cnn, lit_ : lit_, ret_val : byte*}: + `%%%`(Cnn, lit_, ret_val) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), lit_) + -- if (ret_val = $cbytes_(Cnn, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibits_(N : N, bit*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbits_(N : N, bit*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbits__is_wf: `%%%`(N : N, var_0 : bit*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbits__is_wf0{N : N, var_0 : bit*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_bit: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbits_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibytes_(N : N, byte*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbytes_(N : N, byte*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbytes__is_wf: `%%%`(N : N, var_0 : byte*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbytes__is_wf0{N : N, var_0 : byte*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbytes_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_nbytes_(numtype : numtype, byte*) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_nbytes__is_wf: `%%%`(numtype : numtype, var_0 : byte*, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_nbytes__is_wf0{numtype : numtype, var_0 : byte*, ret_val : num_}: + `%%%`(numtype, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_nbytes_(numtype, var_0)) + -- wf_num_: `%%`(numtype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_vbytes_(vectype : vectype, byte*) : vec_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_zbytes__is_wf: `%%%`(storagetype : storagetype, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_zbytes__is_wf0{storagetype : storagetype, var_0 : byte*, ret_val : lit_}: + `%%%`(storagetype, var_0, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_zbytes_(storagetype, var_0)) + -- wf_lit_: `%%`(storagetype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_cbytes__is_wf: `%%%`(Cnn : Cnn, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_cbytes__is_wf0{Cnn : Cnn, var_0 : byte*, ret_val : lit_}: + `%%%`(Cnn, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_cbytes_(Cnn, var_0)) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $signed_(N : N, nat : nat) : int ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7705,10 +8243,16 @@ def $sx(storagetype : storagetype) : sx?? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zero_is_wf: `%%`(lanetype : lanetype, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zero_is_wf0{lanetype : lanetype, ret_val : lane_}: + `%%`(lanetype, ret_val) + -- if (ret_val = $zero(lanetype)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7737,7 +8281,6 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -7757,28 +8300,23 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7786,7 +8324,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7794,7 +8331,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7802,13 +8338,11 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7836,19 +8370,15 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -7899,116 +8429,277 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fabs__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fabs__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fabs_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fneg_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fneg__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fneg__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fneg_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsqrt_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsqrt__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsqrt__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fsqrt_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fceil_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fceil__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fceil__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fceil_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ffloor_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ffloor__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ffloor__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ffloor_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ftrunc_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ftrunc__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ftrunc__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ftrunc_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fnearest_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fnearest__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fnearest__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fnearest_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fadd_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fadd__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fadd__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fadd_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsub_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsub__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsub__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fsub_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmul_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmul__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmul__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmul_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fdiv_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fdiv__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fdiv__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fdiv_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_min__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_min__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_min_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_max__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_max__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_max_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fcopysign_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fcopysign__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fcopysign__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fcopysign_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $feq_(N : N, fN : fN, fN : fN) : u32 @@ -8030,9 +8721,31 @@ def $fge_(N : N, fN : fN, fN : fN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_madd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_madd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_madd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_nmadd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_nmadd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_nmadd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wrap__(M : M, N : N, iN : iN) : iN @@ -8051,26 +8764,69 @@ def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $demote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation demote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule demote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $demote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $promote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation promote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule promote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $promote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $convert__(M : M, N : N, sx : sx, iN : iN) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation convert___is_wf: `%%%%%`(M : M, N : N, sx : sx, iN : iN, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule convert___is_wf0{M : M, N : N, sx : sx, iN : iN, ret_val : fN}: + `%%%%%`(M, N, sx, iN, ret_val) + -- wf_uN: `%%`(M, iN) + -- if (ret_val = $convert__(M, N, sx, iN)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation reinterpret___is_wf: `%%%%`(numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule reinterpret___is_wf0{numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_}: + `%%%%`(numtype_1, numtype_2, num_, ret_val) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $reinterpret__(numtype_1, numtype_2, num_)) + -- wf_num_: `%%`(numtype_2, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) - -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lpacknum__is_wf: `%%%`(lanetype : lanetype, num_ : num_, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lpacknum__is_wf0{lanetype : lanetype, num_ : num_, ret_val : lane_}: + `%%%`(lanetype, num_, ret_val) + -- wf_num_: `%%`($lunpack(lanetype), num_) + -- if (ret_val = $lpacknum_(lanetype, num_)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -8078,7 +8834,17 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if ($cunpack(storagetype) =/= ?()) + -- wf_lit_: `%%`((!($cunpack(storagetype)) : consttype <: storagetype), lit_) + -- if (ret_val = $cpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`(storagetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -8086,7 +8852,15 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lunpacknum__is_wf: `%%%`(lanetype : lanetype, lane_ : lane_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lunpacknum__is_wf0{lanetype : lanetype, lane_ : lane_, ret_val : num_}: + `%%%`(lanetype, lane_, ret_val) + -- wf_lane_: `%%`(lanetype, lane_) + -- if (ret_val = $lunpacknum_(lanetype, lane_)) + -- wf_num_: `%%`($lunpack(lanetype), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -8094,103 +8868,104 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cunpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cunpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $cunpacknum_(storagetype, lit_)) + -- if ($cunpack(storagetype) =/= ?()) + -- wf_lit_: `%%`((!($cunpack(storagetype)) : consttype <: storagetype), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation unop__is_wf: `%%%%`(numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule unop__is_wf0{numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*}: + `%%%%`(numtype, unop_, num_, ret_val) + -- wf_unop_: `%%`(numtype, unop_) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $unop_(numtype, unop_, num_)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation binop__is_wf: `%%%%%`(numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule binop__is_wf0{numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*}: + `%%%%%`(numtype, binop_, num_, num__0, ret_val) + -- wf_binop_: `%%`(numtype, binop_) + -- wf_num_: `%%`(numtype, num_) + -- wf_num_: `%%`(numtype, num__0) + -- if (ret_val = $binop_(numtype, binop_, num_, num__0)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -8228,37 +9003,48 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) - -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) - -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cvtop___is_wf: `%%%%%`(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cvtop___is_wf0{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*}: + `%%%%%`(numtype_1, numtype_2, cvtop__, num_, ret_val) + -- wf_cvtop__: `%%%`(numtype_1, numtype_2, cvtop__) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $cvtop__(numtype_1, numtype_2, cvtop__, num_)) + -- (wf_num_: `%%`(numtype_2, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_) : lane_* +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lanes__is_wf: `%%%`(shape : shape, vec_ : vec_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lanes__is_wf0{shape : shape, vec_ : vec_, ret_val : lane_*}: + `%%%`(shape, vec_, ret_val) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(128, vec_) + -- if (ret_val = $lanes_(shape, vec_)) + -- (wf_lane_: `%%`($lanetype(shape), ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $inv_lanes_(shape : shape, lane_*) : vec_ @@ -8303,13 +9089,11 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* @@ -8317,8 +9101,9 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* @@ -8326,6 +9111,9 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} @@ -8336,8 +9124,10 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8346,8 +9136,10 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8356,6 +9148,10 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8366,6 +9162,10 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8377,6 +9177,11 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c_3*` : lane_*} c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} @@ -8388,6 +9193,11 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c_3*` : lane_*} c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), iter))*{iter <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} @@ -8398,8 +9208,10 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8409,8 +9221,10 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8421,8 +9235,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- if ($isize(Inn) = $fsize(Fnn)) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size((Fnn : Fnn <: numtype)), $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))))*{c_1 <- `c_1*`, c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} @@ -8432,8 +9247,9 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ @@ -8441,8 +9257,9 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 @@ -8450,7 +9267,8 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter))*{iter <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) @@ -8462,8 +9280,10 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ @@ -8472,6 +9292,8 @@ def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c*` : lane_*} c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8499,175 +9321,142 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] -- let{c : iN} c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) + -- wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] -- let{c : fN} c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) + -- wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- let{`c?` : iN?} c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} + -- (wf_uN: `%%`($size((Inn_2 : addrtype <: numtype)), iter))?{iter <- $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- let{`c?` : iN?} c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} + -- (wf_uN: `%%`($size((Inn_2 : addrtype <: numtype)), iter))?{iter <- $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- let{`c*` : fN*} c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} + -- (wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), iter))*{iter <- $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- let{`c*` : fN*} c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} + -- (wf_fN: `%%`($lsizenn2((Fnn_2 : Fnn <: lanetype)), iter))*{iter <- $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lcvtop___is_wf: `%%%%%`(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lcvtop___is_wf0{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*}: + `%%%%%`(shape_1, shape_2, vcvtop__, lane_, ret_val) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_1, shape_2, vcvtop__) + -- wf_lane_: `%%`($lanetype(shape_1), lane_) + -- if (ret_val = $lcvtop__(shape_1, shape_2, vcvtop__, lane_)) + -- (wf_lane_: `%%`($lanetype(shape_2), ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ @@ -8677,7 +9466,10 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8686,7 +9478,10 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8695,7 +9490,11 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) -- let{`c**` : lane_**} c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- iter}*{iter <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})} + -- (wf_lane_: `%%`(Lnn_2, iter))*{iter <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)}*{c_1 <- `c_1*`} + -- wf_lane_: `%%`(Lnn_2, $zero(Lnn_2)) + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})))*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) @@ -8703,31 +9502,25 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ @@ -8738,6 +9531,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c'_2*` : iN*} c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} @@ -8748,8 +9546,6 @@ def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) - -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ @@ -8758,32 +9554,31 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- let{`c_1*` : lane_*} c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, iter))*{iter <- $concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1, i_2)))*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, iter))*{iter <- $concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1, i_2)))*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ @@ -8794,8 +9589,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- let{`c'_1*` : iN*} c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} -- let{`c'_2*` : iN*} c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} -- let{`c*` : iN*} c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), iter))*{iter <- $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8807,22 +9605,10 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ @@ -8833,7 +9619,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -9193,20 +9981,40 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval? def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = ?((val : val <: fieldval)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation packfield__is_wf: `%%%`(storagetype : storagetype, val : val, ret_val : fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packfield__is_wf0{storagetype : storagetype, val : val, ret_val : fieldval}: + `%%%`(storagetype, val, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_val: `%`(val) + -- if ($packfield_(storagetype, val) =/= ?()) + -- if (ret_val = !($packfield_(storagetype, val))) + -- wf_fieldval: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = ?(val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation unpackfield__is_wf: `%%%%`(storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule unpackfield__is_wf0{storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val}: + `%%%%`(storagetype, var_0, fieldval, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_fieldval: `%`(fieldval) + -- if ($unpackfield_(storagetype, var_0, fieldval) =/= ?()) + -- if (ret_val = !($unpackfield_(storagetype, var_0, fieldval))) + -- wf_val: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -9277,11 +10085,29 @@ def $store(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $store{s : store, f : frame}(`%;%`_state(s, f)) = s +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation store_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $store(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $frame(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation frame_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $frame(state)) + -- wf_frame: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tagaddr(state : state) : tagaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9292,61 +10118,169 @@ def $moduleinst(state : state) : moduleinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation moduleinst_is_wf: `%%`(state : state, ret_val : moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_is_wf0{state : state, ret_val : moduleinst}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $moduleinst(state)) + -- wf_moduleinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst(state : state) : taginst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation taginst_is_wf: `%%`(state : state, ret_val : taginst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_is_wf0{state : state, ret_val : taginst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $taginst(state)) + -- (wf_taginst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst(state : state) : globalinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation globalinst_is_wf: `%%`(state : state, ret_val : globalinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_is_wf0{state : state, ret_val : globalinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $globalinst(state)) + -- (wf_globalinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst(state : state) : meminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation meminst_is_wf: `%%`(state : state, ret_val : meminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_is_wf0{state : state, ret_val : meminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $meminst(state)) + -- (wf_meminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst(state : state) : tableinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tableinst_is_wf: `%%`(state : state, ret_val : tableinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_is_wf0{state : state, ret_val : tableinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $tableinst(state)) + -- (wf_tableinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst(state : state) : funcinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation funcinst_is_wf: `%%`(state : state, ret_val : funcinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_is_wf0{state : state, ret_val : funcinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $funcinst(state)) + -- (wf_funcinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst(state : state) : datainst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation datainst_is_wf: `%%`(state : state, ret_val : datainst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_is_wf0{state : state, ret_val : datainst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $datainst(state)) + -- (wf_datainst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst(state : state) : eleminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation eleminst_is_wf: `%%`(state : state, ret_val : eleminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_is_wf0{state : state, ret_val : eleminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $eleminst(state)) + -- (wf_eleminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst(state : state) : structinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation structinst_is_wf: `%%`(state : state, ret_val : structinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_is_wf0{state : state, ret_val : structinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $structinst(state)) + -- (wf_structinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst(state : state) : arrayinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation arrayinst_is_wf: `%%`(state : state, ret_val : arrayinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_is_wf0{state : state, ret_val : arrayinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $arrayinst(state)) + -- (wf_arrayinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst(state : state) : exninst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation exninst_is_wf: `%%`(state : state, ret_val : exninst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_is_wf0{state : state, ret_val : exninst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $exninst(state)) + -- (wf_exninst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof{z : state}(z) = $frame(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fof_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fof_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $fof(state)) + -- wf_frame: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9357,123 +10291,337 @@ def $sof(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $sof{z : state}(z) = $store(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation sof_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule sof_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $sof(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tag_is_wf: `%%%`(state : state, tagidx : tagidx, ret_val : taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tag_is_wf0{state : state, tagidx : tagidx, ret_val : taginst}: + `%%%`(state, tagidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $tag(state, tagidx)) + -- wf_taginst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation global_is_wf: `%%%`(state : state, globalidx : globalidx, ret_val : globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule global_is_wf0{state : state, globalidx : globalidx, ret_val : globalinst}: + `%%%`(state, globalidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $global(state, globalidx)) + -- wf_globalinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation mem_is_wf: `%%%`(state : state, memidx : memidx, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule mem_is_wf0{state : state, memidx : memidx, ret_val : meminst}: + `%%%`(state, memidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $mem(state, memidx)) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation table_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule table_is_wf0{state : state, tableidx : tableidx, ret_val : tableinst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $table(state, tableidx)) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation func_is_wf: `%%%`(state : state, funcidx : funcidx, ret_val : funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule func_is_wf0{state : state, funcidx : funcidx, ret_val : funcinst}: + `%%%`(state, funcidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $func(state, funcidx)) + -- wf_funcinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation data_is_wf: `%%%`(state : state, dataidx : dataidx, ret_val : datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule data_is_wf0{state : state, dataidx : dataidx, ret_val : datainst}: + `%%%`(state, dataidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $data(state, dataidx)) + -- wf_datainst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation elem_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule elem_is_wf0{state : state, tableidx : tableidx, ret_val : eleminst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $elem(state, tableidx)) + -- wf_eleminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[$proj_uN_0(x).0] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation local_is_wf: `%%%`(state : state, localidx : localidx, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule local_is_wf0{state : state, localidx : localidx, ret_val : val?}: + `%%%`(state, localidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $local(state, localidx)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) - -- wf_state: `%`(`%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_local_is_wf: `%%%%`(state : state, localidx : localidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_local_is_wf0{state : state, localidx : localidx, val : val, ret_val : state}: + `%%%%`(state, localidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_local(state, localidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_global_is_wf: `%%%%`(state : state, globalidx : globalidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_global_is_wf0{state : state, globalidx : globalidx, val : val, ret_val : state}: + `%%%%`(state, globalidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_global(state, globalidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_table_is_wf: `%%%%%`(state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_table_is_wf0{state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state}: + `%%%%%`(state, tableidx, nat, ref, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_ref: `%`(ref) + -- if (ret_val = $with_table(state, tableidx, nat, ref)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_tableinst_is_wf: `%%%%`(state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_tableinst_is_wf0{state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state}: + `%%%%`(state, tableidx, tableinst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_tableinst: `%`(tableinst) + -- if (ret_val = $with_tableinst(state, tableidx, tableinst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{z : state, x : uN, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_mem_is_wf: `%%%%%%`(state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_mem_is_wf0{state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state}: + `%%%%%%`(state, memidx, nat, nat_0, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_mem(state, memidx, nat, nat_0, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_meminst_is_wf: `%%%%`(state : state, memidx : memidx, meminst : meminst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_meminst_is_wf0{state : state, memidx : memidx, meminst : meminst, ret_val : state}: + `%%%%`(state, memidx, meminst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- wf_meminst: `%`(meminst) + -- if (ret_val = $with_meminst(state, memidx, meminst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{z : state, x : uN, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_elem_is_wf: `%%%%`(state : state, elemidx : elemidx, var_0 : ref*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_elem_is_wf0{state : state, elemidx : elemidx, var_0 : ref*, ret_val : state}: + `%%%%`(state, elemidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, elemidx) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_elem(state, elemidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_data_is_wf: `%%%%`(state : state, dataidx : dataidx, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_data_is_wf0{state : state, dataidx : dataidx, var_0 : byte*, ret_val : state}: + `%%%%`(state, dataidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_data(state, dataidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_struct_is_wf: `%%%%%`(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_struct_is_wf0{state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, structaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_struct(state, structaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_array_is_wf: `%%%%%`(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_array_is_wf0{state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, arrayaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_array(state, arrayaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_structinst_is_wf: `%%%`(state : state, var_0 : structinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_structinst_is_wf0{state : state, var_0 : structinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_structinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_structinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_arrayinst_is_wf: `%%%`(state : state, var_0 : arrayinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_arrayinst_is_wf0{state : state, var_0 : arrayinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_arrayinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_arrayinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_exninst_is_wf: `%%%`(state : state, var_0 : exninst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_exninst_is_wf0{state : state, var_0 : exninst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_exninst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_exninst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? @@ -9484,12 +10632,22 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) - -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growtable_is_wf: `%%%%`(tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growtable_is_wf0{tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst}: + `%%%%`(tableinst, nat, ref, ret_val) + -- wf_tableinst: `%`(tableinst) + -- wf_ref: `%`(ref) + -- if ($growtable(tableinst, nat, ref) =/= ?()) + -- if (ret_val = !($growtable(tableinst, nat, ref))) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9499,27 +10657,32 @@ def $growmem(meminst : meminst, nat : nat) : meminst? -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} -- if ($proj_uN_0(i').0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_meminst: `%`(meminst') -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growmem_is_wf: `%%%`(meminst : meminst, nat : nat, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growmem_is_wf0{meminst : meminst, nat : nat, ret_val : meminst}: + `%%%`(meminst, nat, ret_val) + -- wf_meminst: `%`(meminst) + -- if ($growmem(meminst, nat) =/= ?()) + -- if (ret_val = !($growmem(meminst, nat))) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -9529,69 +10692,45 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.38 rule null{s : store}: `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.NULL_ADDR`_ref) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.33 rule i31{s : store, i : u31}: `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.I31_NUM`_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) - -- wf_store: `%`(s) -- wf_exninst: `%`(exn) - -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.35 rule host{s : store, a : addr}: `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.HOST_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 rule extern{s : store, ref : ref}: `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.EXTERN`_ref(ref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) @@ -9600,9 +10739,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) -- wf_reftype: `%`(rt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -9613,31 +10749,22 @@ relation Val_ok: `%|-%:%`(store, val, valtype) rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) -- Num_ok: `%|-%:%`(s, num, nt) - -- wf_store: `%`(s) - -- wf_num: `%`(num) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) -- Vec_ok: `%|-%:%`(s, vec, vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Packval_ok: `%|-%:%`(store, packval, packtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, pt : packtype, c : iN}: `%|-%:%`(s, PACK_packval(pt, c), pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(PACK_packval(pt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) @@ -9645,16 +10772,11 @@ relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) rule val{s : store, val : val, t : valtype}: `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule packval{s : store, packval : packval, pt : packtype}: `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) -- Packval_ok: `%|-%:%`(s, packval, pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(packval) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -9666,48 +10788,36 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-111.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:113.1-115.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:117.1-119.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:121.1-123.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:125.1-128.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) -- wf_externtype: `%`(xt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -9717,36 +10827,82 @@ def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_valtype_is_wf: `%%%`(moduleinst : moduleinst, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_valtype_is_wf0{moduleinst : moduleinst, valtype : valtype, ret_val : valtype}: + `%%%`(moduleinst, valtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $inst_valtype(moduleinst, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_reftype_is_wf: `%%%`(moduleinst : moduleinst, reftype : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_reftype_is_wf0{moduleinst : moduleinst, reftype : reftype, ret_val : reftype}: + `%%%`(moduleinst, reftype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_reftype: `%`(reftype) + -- if (ret_val = $inst_reftype(moduleinst, reftype)) + -- wf_reftype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_globaltype_is_wf: `%%%`(moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_globaltype_is_wf0{moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype}: + `%%%`(moduleinst, globaltype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = $inst_globaltype(moduleinst, globaltype)) + -- wf_globaltype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_memtype_is_wf: `%%%`(moduleinst : moduleinst, memtype : memtype, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_memtype_is_wf0{moduleinst : moduleinst, memtype : memtype, ret_val : memtype}: + `%%%`(moduleinst, memtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $inst_memtype(moduleinst, memtype)) + -- wf_memtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_tabletype_is_wf: `%%%`(moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_tabletype_is_wf0{moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype}: + `%%%`(moduleinst, tabletype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = $inst_tabletype(moduleinst, tabletype)) + -- wf_tabletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9754,274 +10910,183 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) -- if ($proj_uN_0(l).0 = 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) -- if ($proj_uN_0(l).0 > 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) -- if (val =/= `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) -- if (val =/= `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-handler`{n : n, `catch*` : catch*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.tee`{val : val, x : idx}: `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.i31`{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instr: `%`(TRAP_instr) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10029,237 +11094,163 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) -- if (ref_1 = ref_2) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref_1 =/= ref_2) -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{sx : sx}: `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(`REF.I31_NUM`_instr(i)) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new`{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`: `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{ref : ref}: `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) -- if ($unop_(nt, unop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) -- if ($binop_(nt, binop, c_1, c_2) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvunop_(V128_vectype, vvunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) -- if ($vunop_(sh, vunop, c_1) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*}: @@ -10269,64 +11260,48 @@ relation Step_pure: `%~>%`(instr*, instr*) -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), i))*{i <- `i*`} - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} + -- (wf_uN: `%%`(32, $inez_($jsizenn(Jnn), !($proj_lane__2(i)))))*{i <- `i*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_1)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10334,9 +11309,7 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)} -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) @@ -10347,75 +11320,67 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if ($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)|) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_uN: `%%`(32, $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)} + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_2)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextunop__(sh_1, sh_2, vextunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation blocktype__is_wf: `%%%`(state : state, blocktype : blocktype, ret_val : instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule blocktype__is_wf0{state : state, blocktype : blocktype, ret_val : instrtype}: + `%%%`(state, blocktype, ret_val) + -- wf_state: `%`(state) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $blocktype_(state, blocktype)) + -- wf_instrtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) @@ -10425,8 +11390,7 @@ relation `Step_read_before_br_on_cast-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10437,7 +11401,7 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10445,15 +11409,10 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: @@ -10462,10 +11421,7 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: @@ -10474,9 +11430,7 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) @@ -10485,8 +11439,7 @@ relation `Step_read_before_table.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-zero`: `%`(config) @@ -10496,8 +11449,8 @@ relation `Step_read_before_table.copy-zero`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-le`: `%`(config) @@ -10506,7 +11459,6 @@ relation `Step_read_before_table.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -10514,8 +11466,8 @@ relation `Step_read_before_table.copy-le`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-gt`: `%`(config) @@ -10526,22 +11478,12 @@ relation `Step_read_before_table.copy-gt`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -10549,8 +11491,8 @@ relation `Step_read_before_table.copy-gt`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.init-zero`: `%`(config) @@ -10560,8 +11502,8 @@ relation `Step_read_before_table.init-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.fill-zero`: `%`(config) @@ -10570,8 +11512,7 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-zero`: `%`(config) @@ -10581,8 +11522,8 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-le`: `%`(config) @@ -10591,7 +11532,6 @@ relation `Step_read_before_memory.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -10599,8 +11539,8 @@ relation `Step_read_before_memory.copy-le`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.init-zero`: `%`(config) @@ -10610,8 +11550,8 @@ relation `Step_read_before_memory.init-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_ref.test-false`: `%`(config) @@ -10621,8 +11561,7 @@ relation `Step_read_before_ref.test-false`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10633,7 +11572,7 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10644,8 +11583,23 @@ relation `Step_read_before_array.fill-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-zero`: `%`(config) @@ -10655,8 +11609,7 @@ relation `Step_read_before_array.copy-zero`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -10664,8 +11617,7 @@ relation `Step_read_before_array.copy-zero`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-le`: `%`(config) @@ -10674,7 +11626,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -10682,8 +11633,7 @@ relation `Step_read_before_array.copy-le`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -10691,8 +11641,7 @@ relation `Step_read_before_array.copy-le`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-gt`: `%`(config) @@ -10705,17 +11654,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if ($sx(zt_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10723,7 +11661,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -10731,8 +11668,7 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -10740,8 +11676,7 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_elem-zero`: `%`(config) @@ -10750,8 +11685,7 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -10759,8 +11693,30 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-zero`: `%`(config) @@ -10771,8 +11727,7 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- if ($proj_num__0(j) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10781,8 +11736,7 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-num`: `%`(config) @@ -10791,7 +11745,6 @@ relation `Step_read_before_array.init_data-num`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: @@ -10800,8 +11753,7 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- if ($proj_num__0(j) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10810,8 +11762,7 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) @@ -10819,16 +11770,14 @@ relation Step_read: `%~>%`(config, instr*) rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10837,15 +11786,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: @@ -10853,15 +11800,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: @@ -10869,15 +11814,11 @@ relation Step_read: `%~>%`(config, instr*) -- if (a < |$funcinst(z)|) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, yy : typeuse}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: @@ -10888,8 +11829,7 @@ relation Step_read: `%~>%`(config, instr*) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- (if ($default_(t) =/= ?()))*{t <- `t*`} -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) @@ -10900,72 +11840,48 @@ relation Step_read: `%~>%`(config, instr*) -- if (a < |$funcinst(z)|) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: @@ -10974,9 +11890,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: @@ -10985,75 +11899,60 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($local(z, x) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) + -- (wf_val: `%`(iter))?{iter <- $local(z, x)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `global.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($global(z, x).VALUE_globalinst = val) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) + -- wf_globalinst: `%`($global(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0] : ref <: instr)]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) - -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tableinst: `%`($table(z, x)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11061,8 +11960,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: @@ -11070,7 +11968,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: @@ -11078,12 +11975,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (n =/= 0) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -11091,15 +11982,14 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: @@ -11108,15 +11998,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_2) =/= ?()) -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: @@ -11124,15 +12005,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11140,8 +12012,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11150,7 +12022,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11160,69 +12031,58 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, Jnn : Jnn}: @@ -11230,8 +12090,9 @@ relation Step_read: `%~>%`(config, instr*) -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: @@ -11251,8 +12111,9 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) @@ -11261,8 +12122,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: @@ -11271,16 +12131,16 @@ relation Step_read: `%~>%`(config, instr*) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: @@ -11290,8 +12150,10 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, k)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) @@ -11300,8 +12162,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) - -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_meminst: `%`($mem(z, x)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11309,8 +12170,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: @@ -11318,7 +12178,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: @@ -11326,12 +12185,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (n =/= 0) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -11339,8 +12192,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -11349,7 +12202,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -11359,15 +12211,6 @@ relation Step_read: `%~>%`(config, instr*) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -11377,15 +12220,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11393,8 +12227,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11403,7 +12237,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11413,27 +12246,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL`_instr(ht)])) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -11441,16 +12262,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -11458,15 +12276,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: @@ -11475,16 +12291,13 @@ relation Step_read: `%~>%`(config, instr*) -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) =/= ?()))*{zt <- `zt*`} -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))}*{zt <- `zt*`} + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -11494,7 +12307,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) -- if (a < |$structinst(z)|) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11503,9 +12315,8 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) =/= ?()) -- if (!($default_($unpack(zt))) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))} + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11513,17 +12324,14 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: @@ -11532,8 +12340,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11544,16 +12351,14 @@ relation Step_read: `%~>%`(config, instr*) -- if ($zsize(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_byte: `%`(iter))*{iter <- $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))} + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)}^n{c <- `c*`} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: @@ -11561,8 +12366,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: @@ -11572,27 +12376,20 @@ relation Step_read: `%~>%`(config, instr*) -- if (a < |$arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) -- if (a < |$arrayinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: @@ -11600,44 +12397,27 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- if (n =/= 0) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -11645,8 +12425,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -11654,45 +12433,23 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), []) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if (n =/= 0) - -- if (a_2 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- if (a_1 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ($sx(zt_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11704,24 +12461,11 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ($sx(zt_2) =/= ?()) -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11729,54 +12473,34 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), []) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- if (n =/= 0) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11784,8 +12508,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: @@ -11794,8 +12517,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11803,7 +12525,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), []) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: @@ -11815,15 +12536,8 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11835,23 +12549,18 @@ relation Step: `%~>%`(config, config) rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11859,8 +12568,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11868,8 +12575,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -11877,8 +12582,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) @@ -11890,82 +12593,69 @@ relation Step: `%~>%`(config, config) -- if (a = |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_taginst: `%`($tag(z, x)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 rule `local.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:322.1-323.58 rule `global.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:340.1-342.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-354.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_tableinst: `%`(!($growtable($table(z, x), n, ref))) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:356.1-357.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:417.1-418.51 rule `elem.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:501.1-504.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:506.1-510.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: @@ -11973,32 +12663,29 @@ relation Step: `%~>%`(config, config) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))} + -- wf_uN: `%%`(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-531.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:534.1-537.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-544.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: @@ -12009,8 +12696,7 @@ relation Step: `%~>%`(config, config) -- if ($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))} -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:553.1-556.37 @@ -12018,20 +12704,16 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_meminst: `%`(!($growmem($mem(z, x), n))) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:558.1-559.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:619.1-620.51 rule `data.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:700.1-704.65 rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: @@ -12040,16 +12722,13 @@ relation Step: `%~>%`(config, config) -- if (a = |$structinst(z)|) -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`, zt <- `zt*`} -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:721.1-722.55 rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:724.1-727.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -12057,8 +12736,6 @@ relation Step: `%~>%`(config, config) -- if ($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val) =/= ?()) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:740.1-745.65 @@ -12067,16 +12744,13 @@ relation Step: `%~>%`(config, config) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`} -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-786.66 rule `array.set-null`{z : state, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:788.1-790.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: @@ -12084,8 +12758,7 @@ relation Step: `%~>%`(config, config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-795.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: @@ -12093,8 +12766,6 @@ relation Step: `%~>%`(config, config) -- if ($proj_num__0(i) =/= ?()) -- if ($packfield_(zt, val) =/= ?()) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -12106,7 +12777,6 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: @@ -12114,8 +12784,8 @@ relation Steps: `%~>*%`(config, config) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12148,9 +12818,18 @@ def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) -- if (taginst = {TYPE tagtype}) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_taginst: `%`({TYPE tagtype}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctag_is_wf: `%%%`(store : store, tagtype : tagtype, ret_val : (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctag_is_wf0{store : store, tagtype : tagtype, ret_val : (store, tagaddr)}: + `%%%`(store, tagtype, ret_val) + -- wf_store: `%`(store) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = $alloctag(store, tagtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12162,6 +12841,22 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- let{ja : tagaddr, s_1 : store} (s_1, ja) = $alloctag(s, tagtype) -- let{s_2 : store, `ja'*` : tagaddr*} (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) + -- wf_store: `%`($alloctag(s, tagtype).0) + -- wf_store: `%`($alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation alloctags_is_wf: `%%%`(store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule alloctags_is_wf0{store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_typeuse: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $alloctags(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12169,9 +12864,19 @@ def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, gl ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) -- if (globalinst = {TYPE globaltype, VALUE val}) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocglobal_is_wf: `%%%%`(store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocglobal_is_wf0{store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)}: + `%%%%`(store, globaltype, val, ret_val) + -- wf_store: `%`(store) + -- wf_globaltype: `%`(globaltype) + -- wf_val: `%`(val) + -- if (ret_val = $allocglobal(store, globaltype, val)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12183,6 +12888,23 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- let{ga : globaladdr, s_1 : store} (s_1, ga) = $allocglobal(s, globaltype, val) -- let{s_2 : store, `ga'*` : globaladdr*} (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) + -- wf_store: `%`($allocglobal(s, globaltype, val).0) + -- wf_store: `%`($allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation allocglobals_is_wf: `%%%%`(store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule allocglobals_is_wf0{store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $allocglobals(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12190,9 +12912,18 @@ def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmem_is_wf: `%%%`(store : store, memtype : memtype, ret_val : (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmem_is_wf0{store : store, memtype : memtype, ret_val : (store, memaddr)}: + `%%%`(store, memtype, ret_val) + -- wf_store: `%`(store) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $allocmem(store, memtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12204,6 +12935,22 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- let{ma : memaddr, s_1 : store} (s_1, ma) = $allocmem(s, memtype) -- let{s_2 : store, `ma'*` : memaddr*} (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) + -- wf_store: `%`($allocmem(s, memtype).0) + -- wf_store: `%`($allocmems(s_1, memtype'*{memtype' <- `memtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation allocmems_is_wf: `%%%`(store : store, var_0 : memtype*, ret_val : (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule allocmems_is_wf0{store : store, var_0 : memtype*, ret_val : (store, memaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_memtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocmems(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12211,9 +12958,19 @@ def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, table ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctable_is_wf: `%%%%`(store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctable_is_wf0{store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)}: + `%%%%`(store, tabletype, ref, ret_val) + -- wf_store: `%`(store) + -- wf_tabletype: `%`(tabletype) + -- wf_ref: `%`(ref) + -- if (ret_val = $alloctable(store, tabletype, ref)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12225,6 +12982,23 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- let{ta : tableaddr, s_1 : store} (s_1, ta) = $alloctable(s, tabletype, ref) -- let{s_2 : store, `ta'*` : tableaddr*} (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) + -- wf_store: `%`($alloctable(s, tabletype, ref).0) + -- wf_store: `%`($alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation alloctables_is_wf: `%%%%`(store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule alloctables_is_wf0{store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_tabletype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $alloctables(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12232,9 +13006,19 @@ def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocfunc_is_wf: `%%%%%`(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocfunc_is_wf0{store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)}: + `%%%%%`(store, deftype, funccode, moduleinst, ret_val) + -- wf_store: `%`(store) + -- wf_funccode: `%`(funccode) + -- wf_moduleinst: `%`(moduleinst) + -- if (ret_val = $allocfunc(store, deftype, funccode, moduleinst)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12246,6 +13030,23 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- let{fa : funcaddr, s_1 : store} (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) -- let{s_2 : store, `fa'*` : funcaddr*} (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) + -- wf_store: `%`($allocfunc(s, dt, funccode, moduleinst).0) + -- wf_store: `%`($allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation allocfuncs_is_wf: `%%%%%`(store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule allocfuncs_is_wf0{store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)}: + `%%%%%`(store, var_0, var_1, var_2, ret_val) + -- wf_store: `%`(store) + -- (wf_funccode: `%`(var_1))*{var_1 <- var_1} + -- (wf_moduleinst: `%`(var_2))*{var_2 <- var_2} + -- if (ret_val = $allocfuncs(store, var_0, var_1, var_2)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12253,9 +13054,18 @@ def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocdata_is_wf: `%%%%`(store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocdata_is_wf0{store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)}: + `%%%%`(store, datatype, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocdata(store, datatype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12267,6 +13077,22 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) -- let{da : dataaddr, s_1 : store} (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) -- let{s_2 : store, `da'*` : dataaddr*} (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) + -- wf_store: `%`($allocdata(s, ok, b*{b <- `b*`}).0) + -- wf_store: `%`($allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation allocdatas_is_wf: `%%%%`(store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule allocdatas_is_wf0{store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocdatas(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12274,9 +13100,19 @@ def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocelem_is_wf: `%%%%`(store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocelem_is_wf0{store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)}: + `%%%%`(store, elemtype, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_reftype: `%`(elemtype) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocelem(store, elemtype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12288,31 +13124,63 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- let{ea : elemaddr, s_1 : store} (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- wf_store: `%`($allocelem(s, rt, ref*{ref <- `ref*`}).0) + -- wf_store: `%`($allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation allocelems_is_wf: `%%%%`(store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule allocelems_is_wf0{store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_reftype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocelems(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexport_is_wf: `%%%`(moduleinst : moduleinst, export : export, ret_val : exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexport_is_wf0{moduleinst : moduleinst, export : export, ret_val : exportinst}: + `%%%`(moduleinst, export, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_export: `%`(export) + -- if (ret_val = $allocexport(moduleinst, export)) + -- wf_exportinst: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexports_is_wf: `%%%`(moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexports_is_wf0{moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*}: + `%%%`(moduleinst, var_0, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- (wf_export: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocexports(moduleinst, var_0)) + -- (wf_exportinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12341,8 +13209,19 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[$proj_uN_0(x).0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`($alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}).0) + -- (wf_typeuse: `%`($subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{tagtype <- `tagtype*`} + -- wf_store: `%`($allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`}).0) + -- (wf_globaltype: `%`($subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{globaltype <- `globaltype*`} + -- wf_store: `%`($allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}).0) + -- (wf_memtype: `%`($subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{memtype <- `memtype*`} + -- wf_store: `%`($alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`}).0) + -- (wf_tabletype: `%`($subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{tabletype <- `tabletype*`} + -- wf_store: `%`($allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}).0) + -- wf_store: `%`($allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).0) + -- (wf_reftype: `%`($subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})))*{elemtype <- `elemtype*`} + -- wf_store: `%`($allocfuncs(s_6, dt*{dt <- `dt*`}[$proj_uN_0(x).0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{}).0) + -- (wf_exportinst: `%`(iter))*{iter <- $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})} -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} @@ -12354,16 +13233,36 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmodule_is_wf: `%%%%%%%`(store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmodule_is_wf0{store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)}: + `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- (wf_ref: `%`(var_2))*{var_2 <- var_2} + -- (wf_ref: `%`(var_3))*{var_3 <- var_3}*{var_3 <- var_3} + -- if (ret_val = $allocmodule(store, module, var_0, var_1, var_2, var_3)) + -- wf_store: `%`(ret_val.0) + -- wf_moduleinst: `%`(ret_val.1) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_(dataidx : dataidx, data : data) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, n : nat, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(y, x)) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation rundata__is_wf: `%%%`(dataidx : dataidx, data : data, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule rundata__is_wf0{dataidx : dataidx, data : data, ret_val : instr*}: + `%%%`(dataidx, data, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- wf_data: `%`(data) + -- if (ret_val = $rundata_(dataidx, data)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -12371,13 +13270,18 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`TABLE.INIT`_instr(y, x)) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation runelem__is_wf: `%%%`(elemidx : elemidx, elem : elem, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule runelem__is_wf0{elemidx : elemidx, elem : elem, ret_val : instr*}: + `%%%`(elemidx, elem, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- wf_elem: `%`(elem) + -- if (ret_val = $runelem_(elemidx, elem)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -12390,8 +13294,24 @@ def $evalexprs(state : state, expr*) : (state, ref*) def $evalexprs{z : state, expr : instr*, `expr'*` : expr*, ref : ref, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) -- let{z'' : state, `ref'*` : ref*} (z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`}) - -- wf_ref: `%`(ref) -- wf_state: `%`(z') + -- wf_state: `%`($evalexprs(z', expr'*{expr' <- `expr'*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z', expr'*{expr' <- `expr'*`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation evalexprs_is_wf: `%%%`(state : state, var_0 : expr*, ret_val : (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule evalexprs_is_wf0{state : state, var_0 : expr*, ret_val : (state, ref*)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprs(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12405,6 +13325,25 @@ def $evalexprss(state : state, expr**) : (state, ref**) def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) -- let{`ref*` : ref*, z' : state} (z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`}) -- let{z'' : state, `ref'**` : ref**} (z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) + -- wf_state: `%`($evalexprs(z, expr*{expr <- `expr*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z, expr*{expr <- `expr*`}).1} + -- wf_state: `%`($evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}).0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation evalexprss_is_wf: `%%%`(state : state, var_0 : expr**, ret_val : (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule evalexprss_is_wf0{state : state, var_0 : expr**, ret_val : (state, ref**)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprss(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12420,12 +13359,30 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- let{s : store, f : frame} `%;%`_state(s, f) = z' -- let{s' : store, a : addr} (s', a) = $allocglobal(s, gt, val) -- let{z'' : state, `val'*` : val*} (z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}) - -- wf_val: `%`(val) -- wf_state: `%`(z') + -- wf_store: `%`($allocglobal(s, gt, val).0) + -- wf_state: `%`($evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}).0) + -- (wf_val: `%`(iter))*{iter <- $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}).1} -- wf_state: `%`(`%;%`_state(s, f)) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) } +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation evalglobals_is_wf: `%%%%`(state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule evalglobals_is_wf0{state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)}: + `%%%%`(state, var_0, var_1, ret_val) + -- wf_state: `%`(state) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_instr: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $evalglobals(state, var_0, var_1)) + -- wf_state: `%`(ret_val.0) + -- (wf_val: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12449,7 +13406,18 @@ def $instantiate(store : store, module : module, externaddr*) : config -- let{`instr_E*` : instr*} instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){}) -- let{`instr_S?` : instr?} instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} -- wf_state: `%`(z) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_state: `%`($evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}).0) + -- (wf_val: `%`(iter))*{iter <- $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}).1} + -- wf_state: `%`($evalexprs(z', expr_T*{expr_T <- `expr_T*`}).0) + -- (wf_ref: `%`(iter))*{iter <- $evalexprs(z', expr_T*{expr_T <- `expr_T*`}).1} + -- wf_state: `%`($evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`}).0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- $evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`}).1} + -- wf_store: `%`($allocmodule(s''', module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).0) + -- wf_moduleinst: `%`($allocmodule(s''', module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}).1) + -- (wf_instr: `%`(iter))*{iter <- $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})} + -- (wf_instr: `%`(iter))*{iter <- $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])}^(i_D<|data*{data <- `data*`}|){} + -- (wf_instr: `%`(iter))*{iter <- $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})} + -- (wf_instr: `%`(iter))*{iter <- $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])}^(i_E<|elem*{elem <- `elem*`}|){} -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} @@ -12464,15 +13432,34 @@ def $instantiate(store : store, module : module, externaddr*) : config -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){} -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation instantiate_is_wf: `%%%%`(store : store, module : module, var_0 : externaddr*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule instantiate_is_wf0{store : store, module : module, var_0 : externaddr*, ret_val : config}: + `%%%%`(store, module, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- if (ret_val = $instantiate(store, module, var_0)) + -- wf_config: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation invoke_is_wf: `%%%%`(store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule invoke_is_wf0{store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config}: + `%%%%`(store, funcaddr, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_val: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $invoke(store, funcaddr, var_0)) + -- wf_config: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec syntax castop = (null?, null?) @@ -12491,6 +13478,14 @@ syntax nopt = u32* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec def $ieee_(N : N, rat : rat) : fNmag +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation ieee__is_wf: `%%%`(N : N, rat : rat, ret_val : fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule ieee__is_wf0{N : N, rat : rat, ret_val : fNmag}: + `%%%`(N, rat, ret_val) + -- if (ret_val = $ieee_(N, rat)) + -- wf_fNmag: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec syntax idctxt = { @@ -12535,11 +13530,23 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 def $concat_idctxt{I : idctxt, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation concat_idctxt_is_wf: `%%`(var_0 : idctxt*, ret_val : idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule concat_idctxt_is_wf0{var_0 : idctxt*, ret_val : idctxt}: + `%%`(var_0, ret_val) + -- (wf_idctxt: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $concat_idctxt(var_0)) + -- wf_idctxt: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -12557,7 +13564,17 @@ relation Idctxt_ok: `|-%:OK`(idctxt) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -- wf_idctxt: `%`(I) + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TYPES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TAGS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.GLOBALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.MEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TABLES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.FUNCS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.DATAS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.ELEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LOCALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LABELS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])}*{`field*` <- `field**`} -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -12672,6 +13689,19 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation importsd_is_wf: `%%`(var_0 : decl*, ret_val : import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule importsd_is_wf0{var_0 : decl*, ret_val : import*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $importsd(var_0)) + -- (wf_import: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 @@ -12685,6 +13715,19 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation tagsd_is_wf: `%%`(var_0 : decl*, ret_val : tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule tagsd_is_wf0{var_0 : decl*, ret_val : tag*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tagsd(var_0)) + -- (wf_tag: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 @@ -12698,6 +13741,19 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation globalsd_is_wf: `%%`(var_0 : decl*, ret_val : global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule globalsd_is_wf0{var_0 : decl*, ret_val : global*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsd(var_0)) + -- (wf_global: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 @@ -12711,6 +13767,19 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation memsd_is_wf: `%%`(var_0 : decl*, ret_val : mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule memsd_is_wf0{var_0 : decl*, ret_val : mem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsd(var_0)) + -- (wf_mem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 @@ -12724,6 +13793,19 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation tablesd_is_wf: `%%`(var_0 : decl*, ret_val : table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule tablesd_is_wf0{var_0 : decl*, ret_val : table*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesd(var_0)) + -- (wf_table: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 @@ -12737,6 +13819,19 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation funcsd_is_wf: `%%`(var_0 : decl*, ret_val : func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule funcsd_is_wf0{var_0 : decl*, ret_val : func*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $funcsd(var_0)) + -- (wf_func: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 @@ -12750,6 +13845,19 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation datasd_is_wf: `%%`(var_0 : decl*, ret_val : data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule datasd_is_wf0{var_0 : decl*, ret_val : data*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $datasd(var_0)) + -- (wf_data: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 @@ -12763,6 +13871,19 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation elemsd_is_wf: `%%`(var_0 : decl*, ret_val : elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule elemsd_is_wf0{var_0 : decl*, ret_val : elem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $elemsd(var_0)) + -- (wf_elem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 @@ -12776,6 +13897,19 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation startsd_is_wf: `%%`(var_0 : decl*, ret_val : start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule startsd_is_wf0{var_0 : decl*, ret_val : start*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $startsd(var_0)) + -- (wf_start: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 def $exportsd(decl*) : export* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 @@ -12786,11 +13920,25 @@ def $exportsd(decl*) : export* def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) } +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation exportsd_is_wf: `%%`(var_0 : decl*, ret_val : export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule exportsd_is_wf0{var_0 : decl*, ret_val : export*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $exportsd(var_0)) + -- (wf_export: `%`(ret_val))*{ret_val <- ret_val} +} + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered(decl*) : bool ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true -- if ($importsd(decl*{decl <- `decl*`}) = []) + -- (wf_import: `%`(iter))*{iter <- $importsd(decl*{decl <- `decl*`})} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) @@ -12816,7 +13964,6 @@ relation Context_ok: `|-%:OK`(context) -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt : reftype <: valtype)])))*{rt <- `rt*`} -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)])))?{rt' <- `rt'?`} -- (if ($proj_uN_0(x).0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} - -- wf_context: `%`(C) -- wf_context: `%`(C_0) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -12832,23 +13979,16 @@ relation Localval_ok: `%|-%:%`(store, val?, localtype) rule set{s : store, val : val, t : valtype}: `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule unset{s : store}: `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, BOT_valtype)) - -- wf_store: `%`(s) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, BOT_valtype)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Datainst_ok: `%|-%:%`(store, datainst, datatype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{s : store, `b*` : byte*}: `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) - -- wf_store: `%`(s) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) @@ -12857,8 +13997,6 @@ relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -12867,9 +14005,7 @@ relation Exportinst_ok: `%|-%:OK`(store, exportinst) rule _{s : store, nm : name, xa : externaddr, xt : externtype}: `%|-%:OK`(s, {NAME nm, ADDR xa}) -- Externaddr_ok: `%|-%:%`(s, xa, xt) - -- wf_store: `%`(s) -- wf_externtype: `%`(xt) - -- wf_exportinst: `%`({NAME nm, ADDR xa}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) @@ -12897,9 +14033,6 @@ relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) -- if (|TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}| > 0) -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} - -- wf_store: `%`(s) - -- wf_moduleinst: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}) - -- wf_context: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (wf_externtype: `%`(TAG_externtype(tagtype)))*{tagtype <- `tagtype*`} -- (wf_externtype: `%`(GLOBAL_externtype(globaltype)))*{globaltype <- `globaltype*`} @@ -12915,10 +14048,6 @@ relation Frame_ok: `%|-%:%`(store, frame, context) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- if (|`lct*`| = |`val?*`|) -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) - -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rec { @@ -12929,29 +14058,18 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) rule plain{s : store, C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 rule ref{s : store, C : context, ref : ref, rt : reftype}: `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_ref: `%`(ref) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) @@ -12961,30 +14079,19 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) -- Frame_ok: `%|-%:%`(s, f, C') -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) -- wf_context: `%`(C') - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRAP_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 @@ -12992,9 +14099,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 rule empty{s : store, C : context}: `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -13006,11 +14110,7 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- if ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}) =/= ?()) -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -13022,10 +14122,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 @@ -13033,10 +14129,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 @@ -13045,9 +14137,6 @@ relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) } @@ -13057,8 +14146,6 @@ relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) rule _{s : store, jt : tagtype}: `%|-%:%`(s, {TYPE jt}, jt) -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) - -- wf_store: `%`(s) - -- wf_taginst: `%`({TYPE jt}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -13068,10 +14155,8 @@ relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Meminst_ok: `%|-%:%`(store, meminst, memtype) @@ -13080,10 +14165,8 @@ relation Meminst_ok: `%|-%:%`(store, meminst, memtype) `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) - -- wf_store: `%`(s) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) @@ -13093,10 +14176,8 @@ relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- if (|ref*{ref <- `ref*`}| = n) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) @@ -13107,9 +14188,7 @@ relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- Func_ok: `%|-%:%`(C, func, dt') -- Deftype_sub: `%|-%<:%`(C, dt', dt) - -- wf_store: `%`(s) -- wf_context: `%`(C) - -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE (func : func <: funccode)}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -13120,8 +14199,6 @@ relation Structinst_ok: `%|-%:OK`(store, structinst) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (|`fv*`| = |`zt*`|) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} - -- wf_store: `%`(s) - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -13131,8 +14208,6 @@ relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} - -- wf_store: `%`(s) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -13145,8 +14220,6 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if (|`t*`| = |`val*`|) -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} - -- wf_store: `%`(s) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -13159,9 +14232,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(fv_1, s, fv_2) -- ImmutReachable: `%>>_%%`(fv_1, s, fv') -- ImmutReachable: `%>>_%%`(fv', s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) -- wf_fieldval: `%`(fv') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 @@ -13172,8 +14242,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (i < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) @@ -13183,8 +14251,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) -- if (i < |s.ARRAYS_store[a].FIELDS_arrayinst|) -- if (a < |s.ARRAYS_store|) -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 @@ -13192,14 +14258,10 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, (s.EXNS_store[a].FIELDS_exninst[i] : val <: fieldval)) -- if (i < |s.EXNS_store[a].FIELDS_exninst|) -- if (a < |s.EXNS_store|) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 rule `ref.extern`{ref : ref, s : store}: `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(ref)) } ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -13217,9 +14279,6 @@ relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: `~%>>_%%`(fv_1, s, fv_2) -- if $NotImmutReachable(fv_1, s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Store_ok: `|-%:OK`(store) @@ -13247,7 +14306,6 @@ relation Store_ok: `|-%:OK`(store) -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) - -- wf_store: `%`(s) -- (wf_typeuse: `%`(tagtype))*{tagtype <- `tagtype*`} -- (wf_globaltype: `%`(globaltype))*{globaltype <- `globaltype*`} -- (wf_memtype: `%`(memtype))*{memtype <- `memtype*`} @@ -13263,7 +14321,6 @@ relation Extend_taginst: `%<=%`(taginst, taginst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{jt : tagtype}: `%<=%`({TYPE jt}, {TYPE jt}) - -- wf_taginst: `%`({TYPE jt}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_globalinst: `%<=%`(globalinst, globalinst) @@ -13271,8 +14328,6 @@ relation Extend_globalinst: `%<=%`(globalinst, globalinst) rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_meminst: `%<=%`(meminst, meminst) @@ -13281,8 +14336,6 @@ relation Extend_meminst: `%<=%`(meminst, meminst) `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) -- if (n <= n') -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_tableinst: `%<=%`(tableinst, tableinst) @@ -13291,15 +14344,12 @@ relation Extend_tableinst: `%<=%`(tableinst, tableinst) `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) -- if (n <= n') -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_funcinst: `%<=%`(funcinst, funcinst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{dt : deftype, mm : moduleinst, fc : funccode}: `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) - -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_datainst: `%<=%`(datainst, datainst) @@ -13307,8 +14357,6 @@ relation Extend_datainst: `%<=%`(datainst, datainst) rule _{`b*` : byte*, `b'*` : byte*}: `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) - -- wf_datainst: `%`({BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_eleminst: `%<=%`(eleminst, eleminst) @@ -13316,8 +14364,6 @@ relation Extend_eleminst: `%<=%`(eleminst, eleminst) rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) - -- wf_eleminst: `%`({TYPE rt, REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_structinst: `%<=%`(structinst, structinst) @@ -13328,8 +14374,6 @@ relation Extend_structinst: `%<=%`(structinst, structinst) -- if (|`fv*`| = |`fv'*`|) -- if (|`fv*`| = |`mut?*`|) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -13340,8 +14384,6 @@ relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (|`fv*`| = |`fv'*`|) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -13349,7 +14391,6 @@ relation Extend_exninst: `%<=%`(exninst, exninst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{ta : tagaddr, `val*` : val*}: `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_store: `%<=%`(store, store) @@ -13386,8 +14427,6 @@ relation Extend_store: `%<=%`(store, store) -- (if (a < |s.EXNS_store|))^(a<|s.EXNS_store|){} -- (if (a < |s'.EXNS_store|))^(a<|s.EXNS_store|){} -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} - -- wf_store: `%`(s) - -- wf_store: `%`(s') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation State_ok: `|-%:%`(state, context) @@ -13396,8 +14435,6 @@ relation State_ok: `|-%:%`(state, context) `|-%:%`(`%;%`_state(s, f), C) -- Store_ok: `|-%:OK`(s) -- Frame_ok: `%|-%:%`(s, f, C) - -- wf_context: `%`(C) - -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Config_ok: `|-%:OK`(config) @@ -13408,7 +14445,6 @@ relation Config_ok: `|-%:OK`(config) -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) -- (wf_valtype: `%`(t))*{t <- `t*`} - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat @@ -13469,18 +14505,12 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule `i32.add`{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 @@ -13488,8 +14518,6 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) } @@ -13499,27 +14527,26 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation instrdots_is_wf: `%`(ret_val : instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule instrdots_is_wf0{ret_val : instr*}: + `%`(ret_val) + -- if (ret_val = $instrdots) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec syntax label = | `LABEL_%{%}`(n : n, `instr*` : instr*) @@ -13545,6 +14572,15 @@ relation wf_callframe: `%`(callframe) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation allocX_is_wf(syntax X, syntax Y): `%%%%`(store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule allocX_is_wf0{syntax X, syntax Y, store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)}: + `%%%%`(store, X_0, Y_0, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocX(syntax X, syntax Y, store, X_0, Y_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rec { @@ -13556,6 +14592,21 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) -- let{s_2 : store, `a'*` : addr*} (s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}) + -- wf_store: `%`($allocX(syntax X, syntax Y, s, X, Y).0) + -- wf_store: `%`($allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}).0) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 +relation allocXs_is_wf(syntax X, syntax Y): `%%%%`(store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 + rule allocXs_is_wf0{syntax X, syntax Y, store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocXs(syntax X, syntax Y, store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec diff --git a/spectec/test-middlend/specification.exp/10-sub-expansion.il b/spectec/test-middlend/specification.exp/10-sub-expansion.il index 558ba5a42a..49dde4c286 100644 --- a/spectec/test-middlend/specification.exp/10-sub-expansion.il +++ b/spectec/test-middlend/specification.exp/10-sub-expansion.il @@ -329,19 +329,40 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fzero_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fzero_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fzero(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fnat_is_wf: `%%%`(N : N, nat : nat, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fnat_is_wf0{N : N, nat : nat, ret_val : fN}: + `%%%`(N, nat, ret_val) + -- if (ret_val = $fnat(N, nat)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fone_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fone_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fone(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -402,23 +423,27 @@ def $utf8(char*) : byte* def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation utf8_is_wf: `%%`(var_0 : char*, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule utf8_is_wf0{var_0 : char*, ret_val : byte*}: + `%%`(var_0, ret_val) + -- (wf_char: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $utf8(var_0)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -612,10 +637,18 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_opt_is_wf: `%%`(var_0 : free?, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_opt_is_wf0{var_0 : free?, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))?{var_0 <- var_0} + -- if (ret_val = $free_opt(var_0)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -623,70 +656,162 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'#1*{free'#1 <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation free_list_is_wf: `%%`(var_0 : free*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule free_list_is_wf0{var_0 : free*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_list(var_0)) + -- wf_free: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_typeidx_is_wf: `%%`(typeidx : typeidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_typeidx_is_wf0{typeidx : typeidx, ret_val : free}: + `%%`(typeidx, ret_val) + -- wf_uN: `%%`(32, typeidx) + -- if (ret_val = $free_typeidx(typeidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_funcidx_is_wf: `%%`(funcidx : funcidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_funcidx_is_wf0{funcidx : funcidx, ret_val : free}: + `%%`(funcidx, ret_val) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $free_funcidx(funcidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_globalidx_is_wf: `%%`(globalidx : globalidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_globalidx_is_wf0{globalidx : globalidx, ret_val : free}: + `%%`(globalidx, ret_val) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $free_globalidx(globalidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tableidx_is_wf: `%%`(tableidx : tableidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tableidx_is_wf0{tableidx : tableidx, ret_val : free}: + `%%`(tableidx, ret_val) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $free_tableidx(tableidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_memidx_is_wf: `%%`(memidx : memidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_memidx_is_wf0{memidx : memidx, ret_val : free}: + `%%`(memidx, ret_val) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $free_memidx(memidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_elemidx_is_wf: `%%`(elemidx : elemidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_elemidx_is_wf0{elemidx : elemidx, ret_val : free}: + `%%`(elemidx, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- if (ret_val = $free_elemidx(elemidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_dataidx_is_wf: `%%`(dataidx : dataidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_dataidx_is_wf0{dataidx : dataidx, ret_val : free}: + `%%`(dataidx, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $free_dataidx(dataidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_localidx_is_wf: `%%`(localidx : localidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_localidx_is_wf0{localidx : localidx, ret_val : free}: + `%%`(localidx, ret_val) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $free_localidx(localidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_labelidx_is_wf: `%%`(labelidx : labelidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_labelidx_is_wf0{labelidx : labelidx, ret_val : free}: + `%%`(labelidx, ret_val) + -- wf_uN: `%%`(32, labelidx) + -- if (ret_val = $free_labelidx(labelidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx(tagidx : tagidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx{tagidx : uN}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tagidx_is_wf: `%%`(tagidx : tagidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tagidx_is_wf0{tagidx : tagidx, ret_val : free}: + `%%`(tagidx, ret_val) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $free_tagidx(tagidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -701,6 +826,15 @@ def $free_externidx(externidx : externidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_externidx_is_wf: `%%`(externidx : externidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_externidx_is_wf0{externidx : externidx, ret_val : free}: + `%%`(externidx, ret_val) + -- wf_externidx: `%`(externidx) + -- if (ret_val = $free_externidx(externidx)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = | NULL @@ -1065,73 +1199,157 @@ syntax Cnn = def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ANYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ANYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ANYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EQREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EQREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EQREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation I31REF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule I31REF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $I31REF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation STRUCTREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule STRUCTREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $STRUCTREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ARRAYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ARRAYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ARRAYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation FUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule FUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $FUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLFUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLFUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLFUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1475,10 +1693,17 @@ def $unpack(storagetype : storagetype) : valtype def $unpack(I32_storagetype) = I32_valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I8_storagetype) = I32_valtype - -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I16_storagetype) = I32_valtype - -- wf_valtype: `%`(I32_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation unpack_is_wf: `%%`(storagetype : storagetype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule unpack_is_wf0{storagetype : storagetype, ret_val : valtype}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $unpack(storagetype)) + -- wf_valtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1544,10 +1769,18 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#1?{null_1#1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#2?{null_1#2 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1#3?{null_1#3 <- `null_1?`}, ht_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation diffrt_is_wf: `%%%`(reftype : reftype, reftype_0 : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule diffrt_is_wf0{reftype : reftype, reftype_0 : reftype, ret_val : reftype}: + `%%%`(reftype, reftype_0, ret_val) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + -- if (ret_val = $diffrt(reftype, reftype_0)) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype? @@ -1585,6 +1818,19 @@ def $globalsxt(externtype*) : globaltype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation globalsxt_is_wf: `%%`(var_0 : externtype*, ret_val : globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule globalsxt_is_wf0{var_0 : externtype*, ret_val : globaltype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsxt(var_0)) + -- (wf_globaltype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 @@ -1598,6 +1844,19 @@ def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation memsxt_is_wf: `%%`(var_0 : externtype*, ret_val : memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule memsxt_is_wf0{var_0 : externtype*, ret_val : memtype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsxt(var_0)) + -- (wf_memtype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 @@ -1611,6 +1870,19 @@ def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation tablesxt_is_wf: `%%`(var_0 : externtype*, ret_val : tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule tablesxt_is_wf0{var_0 : externtype*, ret_val : tabletype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesxt(var_0)) + -- (wf_tabletype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 @@ -1637,6 +1909,22 @@ def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation subst_typevar_is_wf: `%%%%`(typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule subst_typevar_is_wf0{typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typevar, var_0, var_1, ret_val) + -- wf_typevar: `%`(typevar) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if ($subst_typevar(typevar, var_0, var_1) =/= ?()) + -- if (ret_val = !($subst_typevar(typevar, var_0, var_1))) + -- wf_typeuse: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.73 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 @@ -1646,25 +1934,42 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}) = ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})) -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#2*{tv'#2 <- `tv'*`}, tu'#2*{tu'#2 <- `tu'*`}) = !($minus_recs(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`})) - -- wf_typevar: `%`(_IDX_typevar(x)) + -- (wf_typevar: `%`(iter#1))*{iter#1 <- !($minus_recs(tv#4*{tv#4 <- `tv*`}, tu#4*{tu#4 <- `tu*`})).0} + -- (wf_typeuse: `%`(iter#2))*{iter#2 <- !($minus_recs(tv#5*{tv#5 <- `tv*`}, tu#5*{tu#5 <- `tu*`})).1} def $minus_recs{x0 : typevar*, x1 : typeuse*}(x0, x1) = ?() -- otherwise } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation minus_recs_is_wf: `%%%`(var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule minus_recs_is_wf0{var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)}: + `%%%`(var_0, var_1, ret_val) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if ($minus_recs(var_0, var_1) =/= ?()) + -- if (ret_val = !($minus_recs(var_0, var_1))) + -- (wf_typevar: `%`(iter))*{iter <- ret_val.0} + -- (wf_typeuse: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv#4*{tv#4 <- `tv*`}, tu#4*{tu#4 <- `tu*`}) = pt + def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv#6*{tv#6 <- `tv*`}, tu#6*{tu#6 <- `tu*`}) = pt ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv#5*{tv#5 <- `tv*`}, tu#5*{tu#5 <- `tu*`}) = nt + def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv#7*{tv#7 <- `tv*`}, tu#7*{tu#7 <- `tu*`}) = nt ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv#6*{tv#6 <- `tv*`}, tu#6*{tu#6 <- `tu*`}) = vt + def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv#8*{tv#8 <- `tv*`}, tu#8*{tu#8 <- `tu*`}) = vt ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { @@ -1672,209 +1977,403 @@ rec { ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 - def $subst_typeuse{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_typeuse(n), tv#7*{tv#7 <- `tv*`}, tu#7*{tu#7 <- `tu*`}) = !($subst_typevar(REC_typevar(n), tv#8*{tv#8 <- `tv*`}, tu#8*{tu#8 <- `tu*`})) + def $subst_typeuse{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_typeuse(n), tv#9*{tv#9 <- `tv*`}, tu#9*{tu#9 <- `tu*`}) = !($subst_typevar(REC_typevar(n), tv#10*{tv#10 <- `tv*`}, tu#10*{tu#10 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 - def $subst_typeuse{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_typeuse(typeidx), tv#9*{tv#9 <- `tv*`}, tu#9*{tu#9 <- `tu*`}) = !($subst_typevar(_IDX_typevar(typeidx), tv#10*{tv#10 <- `tv*`}, tu#10*{tu#10 <- `tu*`})) + def $subst_typeuse{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_typeuse(typeidx), tv#11*{tv#11 <- `tv*`}, tu#11*{tu#11 <- `tu*`}) = !($subst_typevar(_IDX_typevar(typeidx), tv#12*{tv#12 <- `tv*`}, tu#12*{tu#12 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 - def $subst_typeuse{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_typeuse(rectype, n), tv#11*{tv#11 <- `tv*`}, tu#11*{tu#11 <- `tu*`}) = ($subst_deftype(_DEF_deftype(rectype, n), tv#12*{tv#12 <- `tv*`}, tu#12*{tu#12 <- `tu*`}) : deftype <: typeuse) + def $subst_typeuse{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_typeuse(rectype, n), tv#13*{tv#13 <- `tv*`}, tu#13*{tu#13 <- `tu*`}) = ($subst_deftype(_DEF_deftype(rectype, n), tv#14*{tv#14 <- `tv*`}, tu#14*{tu#14 <- `tu*`}) : deftype <: typeuse) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_heaptype(n), tv#13*{tv#13 <- `tv*`}, tu#13*{tu#13 <- `tu*`}) = (!($subst_typevar(REC_typevar(n), tv#14*{tv#14 <- `tv*`}, tu#14*{tu#14 <- `tu*`})) : typeuse <: heaptype) + def $subst_heaptype{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_heaptype(n), tv#15*{tv#15 <- `tv*`}, tu#15*{tu#15 <- `tu*`}) = (!($subst_typevar(REC_typevar(n), tv#16*{tv#16 <- `tv*`}, tu#16*{tu#16 <- `tu*`})) : typeuse <: heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_heaptype(typeidx), tv#15*{tv#15 <- `tv*`}, tu#15*{tu#15 <- `tu*`}) = (!($subst_typevar(_IDX_typevar(typeidx), tv#16*{tv#16 <- `tv*`}, tu#16*{tu#16 <- `tu*`})) : typeuse <: heaptype) + def $subst_heaptype{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_heaptype(typeidx), tv#17*{tv#17 <- `tv*`}, tu#17*{tu#17 <- `tu*`}) = (!($subst_typevar(_IDX_typevar(typeidx), tv#18*{tv#18 <- `tv*`}, tu#18*{tu#18 <- `tu*`})) : typeuse <: heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 - def $subst_heaptype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_heaptype(rectype, n), tv#17*{tv#17 <- `tv*`}, tu#17*{tu#17 <- `tu*`}) = ($subst_deftype(_DEF_deftype(rectype, n), tv#18*{tv#18 <- `tv*`}, tu#18*{tu#18 <- `tu*`}) : deftype <: heaptype) + def $subst_heaptype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_heaptype(rectype, n), tv#19*{tv#19 <- `tv*`}, tu#19*{tu#19 <- `tu*`}) = ($subst_deftype(_DEF_deftype(rectype, n), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`}) : deftype <: heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 - def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv#19*{tv#19 <- `tv*`}, tu#19*{tu#19 <- `tu*`}) = ht + def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}) = ht ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 - def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null#2?{null#2 <- `null?`}, $subst_heaptype(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}))) + def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#22*{tv#22 <- `tv*`}, tu#22*{tu#22 <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I32_valtype, tv#22*{tv#22 <- `tv*`}, tu#22*{tu#22 <- `tu*`}) = ($subst_numtype(I32_numtype, tv#23*{tv#23 <- `tv*`}, tu#23*{tu#23 <- `tu*`}) : numtype <: valtype) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I32_valtype, tv#23*{tv#23 <- `tv*`}, tu#23*{tu#23 <- `tu*`}) = ($subst_numtype(I32_numtype, tv#24*{tv#24 <- `tv*`}, tu#24*{tu#24 <- `tu*`}) : numtype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I64_valtype, tv#24*{tv#24 <- `tv*`}, tu#24*{tu#24 <- `tu*`}) = ($subst_numtype(I64_numtype, tv#25*{tv#25 <- `tv*`}, tu#25*{tu#25 <- `tu*`}) : numtype <: valtype) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I64_valtype, tv#25*{tv#25 <- `tv*`}, tu#25*{tu#25 <- `tu*`}) = ($subst_numtype(I64_numtype, tv#26*{tv#26 <- `tv*`}, tu#26*{tu#26 <- `tu*`}) : numtype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F32_valtype, tv#26*{tv#26 <- `tv*`}, tu#26*{tu#26 <- `tu*`}) = ($subst_numtype(F32_numtype, tv#27*{tv#27 <- `tv*`}, tu#27*{tu#27 <- `tu*`}) : numtype <: valtype) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F32_valtype, tv#27*{tv#27 <- `tv*`}, tu#27*{tu#27 <- `tu*`}) = ($subst_numtype(F32_numtype, tv#28*{tv#28 <- `tv*`}, tu#28*{tu#28 <- `tu*`}) : numtype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F64_valtype, tv#28*{tv#28 <- `tv*`}, tu#28*{tu#28 <- `tu*`}) = ($subst_numtype(F64_numtype, tv#29*{tv#29 <- `tv*`}, tu#29*{tu#29 <- `tu*`}) : numtype <: valtype) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F64_valtype, tv#29*{tv#29 <- `tv*`}, tu#29*{tu#29 <- `tu*`}) = ($subst_numtype(F64_numtype, tv#30*{tv#30 <- `tv*`}, tu#30*{tu#30 <- `tu*`}) : numtype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(V128_valtype, tv#30*{tv#30 <- `tv*`}, tu#30*{tu#30 <- `tu*`}) = ($subst_vectype(V128_vectype, tv#31*{tv#31 <- `tv*`}, tu#31*{tu#31 <- `tu*`}) : vectype <: valtype) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(V128_valtype, tv#31*{tv#31 <- `tv*`}, tu#31*{tu#31 <- `tu*`}) = ($subst_vectype(V128_vectype, tv#32*{tv#32 <- `tv*`}, tu#32*{tu#32 <- `tu*`}) : vectype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 - def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(`null?`, heaptype), tv#32*{tv#32 <- `tv*`}, tu#32*{tu#32 <- `tu*`}) = ($subst_reftype(REF_reftype(`null?`, heaptype), tv#33*{tv#33 <- `tv*`}, tu#33*{tu#33 <- `tu*`}) : reftype <: valtype) + def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(`null?`, heaptype), tv#33*{tv#33 <- `tv*`}, tu#33*{tu#33 <- `tu*`}) = ($subst_reftype(REF_reftype(`null?`, heaptype), tv#34*{tv#34 <- `tv*`}, tu#34*{tu#34 <- `tu*`}) : reftype <: valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv#34*{tv#34 <- `tv*`}, tu#34*{tu#34 <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv#35*{tv#35 <- `tv*`}, tu#35*{tu#35 <- `tu*`}) = BOT_valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_storagetype, tv#35*{tv#35 <- `tv*`}, tu#35*{tu#35 <- `tu*`}) = ($subst_valtype(BOT_valtype, tv#36*{tv#36 <- `tv*`}, tu#36*{tu#36 <- `tu*`}) : valtype <: storagetype) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_storagetype, tv#36*{tv#36 <- `tv*`}, tu#36*{tu#36 <- `tu*`}) = ($subst_valtype(BOT_valtype, tv#37*{tv#37 <- `tv*`}, tu#37*{tu#37 <- `tu*`}) : valtype <: storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_storagetype(`null?`, heaptype), tv#37*{tv#37 <- `tv*`}, tu#37*{tu#37 <- `tu*`}) = ($subst_valtype(REF_valtype(`null?`, heaptype), tv#38*{tv#38 <- `tv*`}, tu#38*{tu#38 <- `tu*`}) : valtype <: storagetype) + def $subst_storagetype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_storagetype(`null?`, heaptype), tv#38*{tv#38 <- `tv*`}, tu#38*{tu#38 <- `tu*`}) = ($subst_valtype(REF_valtype(`null?`, heaptype), tv#39*{tv#39 <- `tv*`}, tu#39*{tu#39 <- `tu*`}) : valtype <: storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(V128_storagetype, tv#39*{tv#39 <- `tv*`}, tu#39*{tu#39 <- `tu*`}) = ($subst_valtype(V128_valtype, tv#40*{tv#40 <- `tv*`}, tu#40*{tu#40 <- `tu*`}) : valtype <: storagetype) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(V128_storagetype, tv#40*{tv#40 <- `tv*`}, tu#40*{tu#40 <- `tu*`}) = ($subst_valtype(V128_valtype, tv#41*{tv#41 <- `tv*`}, tu#41*{tu#41 <- `tu*`}) : valtype <: storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F64_storagetype, tv#41*{tv#41 <- `tv*`}, tu#41*{tu#41 <- `tu*`}) = ($subst_valtype(F64_valtype, tv#42*{tv#42 <- `tv*`}, tu#42*{tu#42 <- `tu*`}) : valtype <: storagetype) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F64_storagetype, tv#42*{tv#42 <- `tv*`}, tu#42*{tu#42 <- `tu*`}) = ($subst_valtype(F64_valtype, tv#43*{tv#43 <- `tv*`}, tu#43*{tu#43 <- `tu*`}) : valtype <: storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F32_storagetype, tv#43*{tv#43 <- `tv*`}, tu#43*{tu#43 <- `tu*`}) = ($subst_valtype(F32_valtype, tv#44*{tv#44 <- `tv*`}, tu#44*{tu#44 <- `tu*`}) : valtype <: storagetype) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F32_storagetype, tv#44*{tv#44 <- `tv*`}, tu#44*{tu#44 <- `tu*`}) = ($subst_valtype(F32_valtype, tv#45*{tv#45 <- `tv*`}, tu#45*{tu#45 <- `tu*`}) : valtype <: storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I64_storagetype, tv#45*{tv#45 <- `tv*`}, tu#45*{tu#45 <- `tu*`}) = ($subst_valtype(I64_valtype, tv#46*{tv#46 <- `tv*`}, tu#46*{tu#46 <- `tu*`}) : valtype <: storagetype) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I64_storagetype, tv#46*{tv#46 <- `tv*`}, tu#46*{tu#46 <- `tu*`}) = ($subst_valtype(I64_valtype, tv#47*{tv#47 <- `tv*`}, tu#47*{tu#47 <- `tu*`}) : valtype <: storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I32_storagetype, tv#47*{tv#47 <- `tv*`}, tu#47*{tu#47 <- `tu*`}) = ($subst_valtype(I32_valtype, tv#48*{tv#48 <- `tv*`}, tu#48*{tu#48 <- `tu*`}) : valtype <: storagetype) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I32_storagetype, tv#48*{tv#48 <- `tv*`}, tu#48*{tu#48 <- `tu*`}) = ($subst_valtype(I32_valtype, tv#49*{tv#49 <- `tv*`}, tu#49*{tu#49 <- `tu*`}) : valtype <: storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I8_storagetype, tv#49*{tv#49 <- `tv*`}, tu#49*{tu#49 <- `tu*`}) = ($subst_packtype(I8_packtype, tv#50*{tv#50 <- `tv*`}, tu#50*{tu#50 <- `tu*`}) : packtype <: storagetype) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I8_storagetype, tv#50*{tv#50 <- `tv*`}, tu#50*{tu#50 <- `tu*`}) = ($subst_packtype(I8_packtype, tv#51*{tv#51 <- `tv*`}, tu#51*{tu#51 <- `tu*`}) : packtype <: storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I16_storagetype, tv#51*{tv#51 <- `tv*`}, tu#51*{tu#51 <- `tu*`}) = ($subst_packtype(I16_packtype, tv#52*{tv#52 <- `tv*`}, tu#52*{tu#52 <- `tu*`}) : packtype <: storagetype) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I16_storagetype, tv#52*{tv#52 <- `tv*`}, tu#52*{tu#52 <- `tu*`}) = ($subst_packtype(I16_packtype, tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`}) : packtype <: storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 - def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut#2?{mut#2 <- `mut?`}, $subst_storagetype(zt, tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}))) + def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft#1*{ft#1 <- `ft*`})), tv#55*{tv#55 <- `tv*`}, tu#55*{tu#55 <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft#2, tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`})*{ft#2 <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 - def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}))) + def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 - def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1#2, tv#60*{tv#60 <- `tv*`}, tu#60*{tu#60 <- `tu*`})*{t_1#2 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2#2, tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`})*{t_2#2 <- `t_2*`}))) + def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 - def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#3*{tu'#3 <- `tu'*`}, ct), tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final#2?{final#2 <- `final?`}, $subst_typeuse(tu'#4, tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`})*{tu'#4 <- `tu'*`}, $subst_comptype(ct, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}))) + def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#3*{tu'#3 <- `tu'*`}, ct), tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 - def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*}(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) - -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#3*{tv'#3 <- `tv'*`}, tu'#5*{tu'#5 <- `tu'*`}) = !($minus_recs(tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`})) + def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*}(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#3*{tv'#3 <- `tv'*`}, tu'#4*{tu'#4 <- `tu'*`}) = !($minus_recs(tv#60*{tv#60 <- `tv*`}, tu#60*{tu#60 <- `tu*`})) + -- (wf_typevar: `%`(iter#3))*{iter#3 <- !($minus_recs(tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`})).0} + -- (wf_typeuse: `%`(iter#4))*{iter#4 <- !($minus_recs(tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`})).1} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 - def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv#67*{tv#67 <- `tv*`}, tu#67*{tu#67 <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) + def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation subst_typeuse_is_wf: `%%%%`(typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule subst_typeuse_is_wf0{typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typeuse, var_0, var_1, ret_val) + -- wf_typeuse: `%`(typeuse) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_typeuse(typeuse, var_0, var_1)) + -- wf_typeuse: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation subst_heaptype_is_wf: `%%%%`(heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule subst_heaptype_is_wf0{heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype}: + `%%%%`(heaptype, var_0, var_1, ret_val) + -- wf_heaptype: `%`(heaptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_heaptype(heaptype, var_0, var_1)) + -- wf_heaptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation subst_reftype_is_wf: `%%%%`(reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule subst_reftype_is_wf0{reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype}: + `%%%%`(reftype, var_0, var_1, ret_val) + -- wf_reftype: `%`(reftype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_reftype(reftype, var_0, var_1)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation subst_valtype_is_wf: `%%%%`(valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule subst_valtype_is_wf0{valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype}: + `%%%%`(valtype, var_0, var_1, ret_val) + -- wf_valtype: `%`(valtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_valtype(valtype, var_0, var_1)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation subst_storagetype_is_wf: `%%%%`(storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule subst_storagetype_is_wf0{storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype}: + `%%%%`(storagetype, var_0, var_1, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_storagetype(storagetype, var_0, var_1)) + -- wf_storagetype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation subst_fieldtype_is_wf: `%%%%`(fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule subst_fieldtype_is_wf0{fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype}: + `%%%%`(fieldtype, var_0, var_1, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_fieldtype(fieldtype, var_0, var_1)) + -- wf_fieldtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation subst_comptype_is_wf: `%%%%`(comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule subst_comptype_is_wf0{comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype}: + `%%%%`(comptype, var_0, var_1, ret_val) + -- wf_comptype: `%`(comptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_comptype(comptype, var_0, var_1)) + -- wf_comptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation subst_subtype_is_wf: `%%%%`(subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule subst_subtype_is_wf0{subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype}: + `%%%%`(subtype, var_0, var_1, ret_val) + -- wf_subtype: `%`(subtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_subtype(subtype, var_0, var_1)) + -- wf_subtype: `%`(ret_val) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv#68*{tv#68 <- `tv*`}, tu#68*{tu#68 <- `tu*`}) = at + def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}) = at ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv#69*{tv#69 <- `tv*`}, tu#69*{tu#69 <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut#3?{mut#3 <- `mut?`}, t), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, $subst_valtype(t, tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}))) + def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut#2?{mut#2 <- `mut?`}, t), tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_globaltype_is_wf: `%%%%`(globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_globaltype_is_wf0{globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype}: + `%%%%`(globaltype, var_0, var_1, ret_val) + -- wf_globaltype: `%`(globaltype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_globaltype(globaltype, var_0, var_1)) + -- wf_globaltype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv#72*{tv#72 <- `tv*`}, tu#72*{tu#72 <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv#67*{tv#67 <- `tv*`}, tu#67*{tu#67 <- `tu*`}) = `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_memtype_is_wf: `%%%%`(memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_memtype_is_wf0{memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype}: + `%%%%`(memtype, var_0, var_1, ret_val) + -- wf_memtype: `%`(memtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_memtype(memtype, var_0, var_1)) + -- wf_memtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}))) + def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv#68*{tv#68 <- `tv*`}, tu#68*{tu#68 <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_tabletype_is_wf: `%%%%`(tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_tabletype_is_wf0{tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype}: + `%%%%`(tabletype, var_0, var_1, ret_val) + -- wf_tabletype: `%`(tabletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_tabletype(tabletype, var_0, var_1)) + -- wf_tabletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv#75*{tv#75 <- `tv*`}, tu#75*{tu#75 <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv#76*{tv#76 <- `tv*`}, tu#76*{tu#76 <- `tu*`}))) + def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv#69*{tv#69 <- `tv*`}, tu#69*{tu#69 <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv#77*{tv#77 <- `tv*`}, tu#77*{tu#77 <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv#78*{tv#78 <- `tv*`}, tu#78*{tu#78 <- `tu*`}))) + def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv#79*{tv#79 <- `tv*`}, tu#79*{tu#79 <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv#80*{tv#80 <- `tv*`}, tu#80*{tu#80 <- `tu*`}))) + def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv#72*{tv#72 <- `tv*`}, tu#72*{tu#72 <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv#81*{tv#81 <- `tv*`}, tu#81*{tu#81 <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv#82*{tv#82 <- `tv*`}, tu#82*{tu#82 <- `tu*`}))) + def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_externtype_is_wf: `%%%%`(externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv#83*{tv#83 <- `tv*`}, tu#83*{tu#83 <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(FUNC_externtype($subst_typeuse(tu', tv#84*{tv#84 <- `tv*`}, tu#84*{tu#84 <- `tu*`}))) + rule subst_externtype_is_wf0{externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype}: + `%%%%`(externtype, var_0, var_1, ret_val) + -- wf_externtype: `%`(externtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_externtype(externtype, var_0, var_1)) + -- wf_externtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#85*{tv#85 <- `tv*`}, tu#85*{tu#85 <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1#2, tv#86*{tv#86 <- `tv*`}, tu#86*{tu#86 <- `tu*`})*{xt_1#2 <- `xt_1*`}, $subst_externtype(xt_2#2, tv#87*{tv#87 <- `tv*`}, tu#87*{tu#87 <- `tu*`})*{xt_2#2 <- `xt_2*`})) + def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_moduletype_is_wf: `%%%%`(moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_moduletype_is_wf0{moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype}: + `%%%%`(moduletype, var_0, var_1, ret_val) + -- wf_moduletype: `%`(moduletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_moduletype(moduletype, var_0, var_1)) + -- wf_moduletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_valtype{t : valtype, n : nat, `tu*` : typeuse*, i : nat}(t, tu#88^n{tu#88 <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_moduletype(externtype_1#1*{externtype_1#1 <- `externtype_1*`}, externtype_2#1*{externtype_2#1 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_moduletype_is_wf: `%%`(moduletype : moduletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_moduletype_is_wf0{moduletype : moduletype, ret_val : free}: + `%%`(moduletype, ret_val) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $free_moduletype(moduletype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax num_ = | mk_num__0(Inn : Inn, var_x : iN) @@ -2671,7 +3403,15 @@ relation wf_shape: `%`(shape) def $dim(shape : shape) : dim ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) - -- wf_dim: `%`(`%`_dim(N)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation dim_is_wf: `%%`(shape : shape, ret_val : dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_is_wf0{shape : shape, ret_val : dim}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $dim(shape)) + -- wf_dim: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $lanetype(shape : shape) : lanetype @@ -4426,38 +5166,67 @@ syntax expr = instr* def $memarg0 : memarg ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} - -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation memarg0_is_wf: `%`(ret_val : memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg0_is_wf0{ret_val : memarg}: + `%`(ret_val) + -- if (ret_val = $memarg0) + -- wf_memarg: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const(consttype : consttype, lit_ : lit_) : instr ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : num_}(I32_consttype, mk_lit__0_lit_(I32_numtype, c)) = CONST_instr(I32_numtype, c) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : num_}(I64_consttype, mk_lit__0_lit_(I64_numtype, c)) = CONST_instr(I64_numtype, c) - -- wf_instr: `%`(CONST_instr(I64_numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : num_}(F32_consttype, mk_lit__0_lit_(F32_numtype, c)) = CONST_instr(F32_numtype, c) - -- wf_instr: `%`(CONST_instr(F32_numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : num_}(F64_consttype, mk_lit__0_lit_(F64_numtype, c)) = CONST_instr(F64_numtype, c) - -- wf_instr: `%`(CONST_instr(F64_numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : uN}(V128_consttype, mk_lit__1_lit_(V128_vectype, c)) = VCONST_instr(V128_vectype, c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation const_is_wf: `%%%`(consttype : consttype, lit_ : lit_, ret_val : instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule const_is_wf0{consttype : consttype, lit_ : lit_, ret_val : instr}: + `%%%`(consttype, lit_, ret_val) + -- wf_lit_: `%%`((consttype : consttype <: storagetype), lit_) + -- if (ret_val = $const(consttype, lit_)) + -- wf_instr: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_shape_is_wf: `%%`(shape : shape, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_shape_is_wf0{shape : shape, ret_val : free}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $free_shape(shape)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype#505?{valtype#505 <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) + def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype#504?{valtype#504 <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype{typeidx : uN}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_blocktype_is_wf: `%%`(blocktype : blocktype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_blocktype_is_wf0{blocktype : blocktype, ret_val : free}: + `%%`(blocktype, ret_val) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $free_blocktype(blocktype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4469,6 +5238,15 @@ def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch{labelidx : uN}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_catch_is_wf: `%%`(catch : catch, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_catch_is_wf0{catch : catch, ret_val : free}: + `%%`(catch, ret_val) + -- wf_catch: `%`(catch) + -- if (ret_val = $free_catch(catch)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { @@ -4480,7 +5258,6 @@ def $shift_labelidxs(labelidx*) : labelidx* def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'#1*{labelidx'#1 <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.91 def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'#2*{labelidx'#2 <- `labelidx'*`}) = [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4490,15 +5267,12 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-435.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.86 - def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype#506*{valtype#506 <- `valtype*#1`}?{`valtype*#1` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) + def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype#505*{valtype#505 <- `valtype*#1`}?{`valtype*#1` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr#1*{instr#1 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.91 @@ -4527,7 +5301,6 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.66 @@ -4538,7 +5311,6 @@ def $free_instr(instr : instr) : free def $free_instr{tagidx : uN}(THROW_instr(tagidx)) = $free_tagidx(tagidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.32 def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-469.99 def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch#1*{catch#1 <- `catch*`}), instr#3*{instr#3 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.63 @@ -4601,13 +5373,10 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.34 def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.38 def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.29 def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 @@ -4616,10 +5385,8 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.30 def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.61 def $free_instr{typeidx : uN}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.69 @@ -4644,7 +5411,6 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.32 def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.61 def $free_instr{typeidx : uN}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.55 @@ -4655,10 +5421,8 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.41 def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 def $free_instr{localidx : uN}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 @@ -4715,12 +5479,45 @@ def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:589.1-590.47 def $free_block{`instr*` : instr*}(instr#4*{instr#4 <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] -- let{free : free} free = $free_list($free_instr(instr#5)*{instr#5 <- `instr*`}) + -- wf_free: `%`($free_list($free_instr(instr#6)*{instr#6 <- `instr*`})) + -- (wf_free: `%`($free_instr(instr#7)))*{instr#7 <- `instr*`} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation free_instr_is_wf: `%%`(instr : instr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule free_instr_is_wf0{instr : instr, ret_val : free}: + `%%`(instr, ret_val) + -- wf_instr: `%`(instr) + -- if (ret_val = $free_instr(instr)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation free_block_is_wf: `%%`(var_0 : instr*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule free_block_is_wf0{var_0 : instr*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_block(var_0)) + -- wf_free: `%`(ret_val) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_expr{`instr*` : instr*}(instr#6*{instr#6 <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) + def $free_expr{`instr*` : instr*}(instr#8*{instr#8 <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_expr_is_wf: `%%`(expr : expr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_expr_is_wf0{expr : expr, ret_val : free}: + `%%`(expr, ret_val) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- if (ret_val = $free_expr(expr)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = @@ -4912,85 +5709,216 @@ def $free_type(type : type) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_type_is_wf: `%%`(type : type, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_type_is_wf0{type : type, ret_val : free}: + `%%`(type, ret_val) + -- if (ret_val = $free_type(type)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag(tag : tag) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_tag_is_wf: `%%`(tag : tag, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_tag_is_wf0{tag : tag, ret_val : free}: + `%%`(tag, ret_val) + -- wf_tag: `%`(tag) + -- if (ret_val = $free_tag(tag)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global(global : global) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_global_is_wf: `%%`(global : global, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_global_is_wf0{global : global, ret_val : free}: + `%%`(global, ret_val) + -- wf_global: `%`(global) + -- if (ret_val = $free_global(global)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem(mem : mem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_mem_is_wf: `%%`(mem : mem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_mem_is_wf0{mem : mem, ret_val : free}: + `%%`(mem, ret_val) + -- wf_mem: `%`(mem) + -- if (ret_val = $free_mem(mem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table(table : table) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_table_is_wf: `%%`(table : table, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_table_is_wf0{table : table, ret_val : free}: + `%%`(table, ret_val) + -- wf_table: `%`(table) + -- if (ret_val = $free_table(table)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local(local : local) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_local_is_wf: `%%`(local : local, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_local_is_wf0{local : local, ret_val : free}: + `%%`(local, ret_val) + -- wf_local: `%`(local) + -- if (ret_val = $free_local(local)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func(func : func) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local#1*{local#1 <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_func_is_wf: `%%`(func : func, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_func_is_wf0{func : func, ret_val : free}: + `%%`(func, ret_val) + -- wf_func: `%`(func) + -- if (ret_val = $free_func(func)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(datamode : datamode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_datamode_is_wf: `%%`(datamode : datamode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_datamode_is_wf0{datamode : datamode, ret_val : free}: + `%%`(datamode, ret_val) + -- wf_datamode: `%`(datamode) + -- if (ret_val = $free_datamode(datamode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte#1*{byte#1 <- `byte*`}, datamode)) = $free_datamode(datamode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_data_is_wf: `%%`(data : data, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_data_is_wf0{data : data, ret_val : free}: + `%%`(data, ret_val) + -- wf_data: `%`(data) + -- if (ret_val = $free_data(data)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(elemmode : elemmode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elemmode_is_wf: `%%`(elemmode : elemmode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elemmode_is_wf0{elemmode : elemmode, ret_val : free}: + `%%`(elemmode, ret_val) + -- wf_elemmode: `%`(elemmode) + -- if (ret_val = $free_elemmode(elemmode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr#358*{expr#358 <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elem_is_wf: `%%`(elem : elem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elem_is_wf0{elem : elem, ret_val : free}: + `%%`(elem, ret_val) + -- wf_elem: `%`(elem) + -- if (ret_val = $free_elem(elem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start(start : start) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_start_is_wf: `%%`(start : start, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_start_is_wf0{start : start, ret_val : free}: + `%%`(start, ret_val) + -- wf_start: `%`(start) + -- if (ret_val = $free_start(start)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import(import : import) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_import_is_wf: `%%`(import : import, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_import_is_wf0{import : import, ret_val : free}: + `%%`(import, ret_val) + -- wf_import: `%`(import) + -- if (ret_val = $free_import(import)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export(export : export) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_export_is_wf: `%%`(export : export, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_export_is_wf0{export : export, ret_val : free}: + `%%`(export, ret_val) + -- wf_export: `%`(export) + -- if (ret_val = $free_export(export)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module(module : module) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_list(type#1*{type#1 <- `type*`}), `%`_list(import#1*{import#1 <- `import*`}), `%`_list(tag#1*{tag#1 <- `tag*`}), `%`_list(global#1*{global#1 <- `global*`}), `%`_list(mem#1*{mem#1 <- `mem*`}), `%`_list(table#1*{table#1 <- `table*`}), `%`_list(func#1*{func#1 <- `func*`}), `%`_list(data#1*{data#1 <- `data*`}), `%`_list(elem#1*{elem#1 <- `elem*`}), start#1?{start#1 <- `start?`}, `%`_list(export#1*{export#1 <- `export*`}))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_module_is_wf: `%%`(module : module, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_module_is_wf0{module : module, ret_val : free}: + `%%`(module, ret_val) + -- wf_module: `%`(module) + -- if (ret_val = $free_module(module)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $funcidx_module(module : module) : funcidx* ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec @@ -5076,6 +6004,22 @@ def $with_locals(context : context, localidx*, localtype*) : context? ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation with_locals_is_wf: `%%%%`(context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule with_locals_is_wf0{context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context}: + `%%%%`(context, var_0, var_1, ret_val) + -- wf_context: `%`(context) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_localtype: `%`(var_1))*{var_1 <- var_1} + -- if ($with_locals(context, var_0, var_1) =/= ?()) + -- if (ret_val = !($with_locals(context, var_0, var_1))) + -- wf_context: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(deftype*) : deftype* ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 @@ -5091,6 +6035,16 @@ def $clos_valtype(context : context, valtype : valtype) : valtype def $clos_valtype{C : context, t : valtype}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt#4*{dt#4 <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_valtype_is_wf: `%%%`(context : context, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_valtype_is_wf0{context : context, valtype : valtype, ret_val : valtype}: + `%%%`(context, valtype, ret_val) + -- wf_context: `%`(context) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $clos_valtype(context, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -5109,25 +6063,43 @@ def $clos_externtype(context : context, externtype : externtype) : externtype def $clos_externtype{C : context, xt : externtype}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt#6*{dt#6 <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_externtype_is_wf: `%%%`(context : context, externtype : externtype, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_externtype_is_wf0{context : context, externtype : externtype, ret_val : externtype}: + `%%%`(context, externtype, ret_val) + -- wf_context: `%`(context) + -- wf_externtype: `%`(externtype) + -- if (ret_val = $clos_externtype(context, externtype)) + -- wf_externtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt#7*{dt#7 <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_moduletype_is_wf: `%%%`(context : context, moduletype : moduletype, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_moduletype_is_wf0{context : context, moduletype : moduletype, ret_val : moduletype}: + `%%%`(context, moduletype, ret_val) + -- wf_context: `%`(context) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $clos_moduletype(context, moduletype)) + -- wf_moduletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypenat = @@ -5138,21 +6110,18 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) @@ -5160,6 +6129,7 @@ relation Expand: `%~~%`(deftype, comptype) rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: `%~~%`(deftype, comptype) -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- wf_subtype: `%`($unrolldt(deftype)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5167,7 +6137,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, nat : nat) : bool @@ -5185,6 +6154,16 @@ def $unrollht_(context : context, heaptype : heaptype) : subtype ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $unrollht_{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation unrollht__is_wf: `%%%`(context : context, heaptype : heaptype, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule unrollht__is_wf0{context : context, heaptype : heaptype, ret_val : subtype}: + `%%%`(context, heaptype, ret_val) + -- wf_context: `%`(context) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = $unrollht_(context, heaptype)) + -- wf_subtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -5193,20 +6172,15 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 rule bot{C : context}: `%|-%:OK`(C, BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) @@ -5214,8 +6188,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) @@ -5223,26 +6195,20 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) -- Numtype_ok: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) -- Vectype_ok: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) @@ -5251,23 +6217,18 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) - -- wf_context: `%`(C) -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) @@ -5275,8 +6236,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) @@ -5284,8 +6243,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) @@ -5293,14 +6250,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) @@ -5308,23 +6262,17 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) @@ -5339,8 +6287,7 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) -- (if ($unrollht_(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_subtype: `%`($unrollht_(C, (typeuse : typeuse <: heaptype))))*{typeuse <- `typeuse*`} -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 @@ -5348,16 +6295,12 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 rule empty{C : context, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypenat(i)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypenat(i)) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypenat((i + 1))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) @@ -5367,7 +6310,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}}) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 @@ -5377,26 +6319,17 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) @@ -5404,7 +6337,6 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: @@ -5412,7 +6344,7 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) - -- wf_context: `%`(C) + -- wf_subtype: `%`($unrolldt(deftype_1)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 @@ -5420,8 +6352,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: @@ -5429,95 +6359,64 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) -- wf_heaptype: `%`(heaptype') ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 @@ -5525,9 +6424,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 @@ -5535,9 +6431,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 @@ -5546,8 +6439,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- if (j < |typeuse*{typeuse <- `typeuse*`}|) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 @@ -5555,9 +6446,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) -- wf_heaptype: `%`(ANY_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5566,9 +6454,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) -- wf_heaptype: `%`(FUNC_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5577,9 +6462,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) -- wf_heaptype: `%`(EXN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5588,18 +6470,12 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) -- wf_heaptype: `%`(EXTERN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) @@ -5607,17 +6483,11 @@ relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) @@ -5625,28 +6495,20 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) @@ -5655,9 +6517,6 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) @@ -5665,15 +6524,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) @@ -5681,18 +6536,12 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) } ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5701,8 +6550,6 @@ relation Localtype_ok: `%|-%:OK`(context, localtype) rule _{C : context, init : init, t : valtype}: `%|-%:OK`(C, `%%`_localtype(init, t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) @@ -5714,9 +6561,7 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- if (|`lct*`| = |`x*`|) -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand_use: `%~~_%%`(typeuse, context, comptype) @@ -5724,17 +6569,12 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) -- Expand: `%~~%`(deftype, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5760,9 +6600,7 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`($unrolldt(C.TYPES_context[$proj_uN_0(x).0])))*{x <- `x*`} -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5773,17 +6611,12 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) } @@ -5795,8 +6628,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) @@ -5805,8 +6636,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) `%|-%:OK`(C, typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5815,8 +6644,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Memtype_ok: `%|-%:OK`(context, memtype) @@ -5824,8 +6651,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) @@ -5834,8 +6659,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Externtype_ok: `%|-%:OK`(context, externtype) @@ -5843,37 +6666,27 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5887,10 +6700,8 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- if (|`t*`| = |`x*`|) -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_uN: `%%`(32, iter))*{iter <- $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5900,17 +6711,11 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) -- if (n_1 >= n_2) -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule eps{C : context, n_1 : n, n_2 : n}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) -- if (n_1 >= n_2) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) @@ -5919,7 +6724,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) @@ -5927,18 +6731,12 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) @@ -5946,9 +6744,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) @@ -5958,9 +6753,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) @@ -5968,41 +6760,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) - -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) @@ -6010,18 +6787,12 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6034,8 +6805,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6046,8 +6815,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6055,42 +6822,42 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val?? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I32_valtype) = ?(?(CONST_val((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, `%`_uN(0))))) - -- wf_val: `%`(CONST_val((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I64_valtype) = ?(?(CONST_val((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, `%`_uN(0))))) - -- wf_val: `%`(CONST_val((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F32_valtype) = ?(?(CONST_val((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $fzero($size((F32_Fnn : Fnn <: numtype))))))) - -- wf_val: `%`(CONST_val((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $fzero($size((F32_Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F64_valtype) = ?(?(CONST_val((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $fzero($size((F64_Fnn : Fnn <: numtype))))))) - -- wf_val: `%`(CONST_val((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $fzero($size((F64_Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(V128_valtype) = ?(?(VCONST_val(V128_vectype, `%`_vec_(0)))) - -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) - -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) def $default_{x0 : valtype}(x0) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation default__is_wf: `%%`(valtype : valtype, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule default__is_wf0{valtype : valtype, ret_val : val?}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if ($default_(valtype) =/= ?()) + -- if (ret_val = !($default_(valtype))) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -6098,7 +6865,7 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) `|-%DEFAULTABLE`(t) -- if ($default_(t) =/= ?()) -- if (!($default_(t)) =/= ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) @@ -6107,7 +6874,6 @@ relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (m < (2 ^ $size((at : addrtype <: numtype)))) - -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec def $is_packtype(storagetype : storagetype) : bool @@ -6122,33 +6888,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: @@ -6156,18 +6911,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) - -- wf_context: `%`(C) -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6177,8 +6927,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6189,9 +6937,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6203,9 +6948,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 @@ -6213,9 +6955,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: @@ -6225,8 +6964,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(l').0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 @@ -6235,18 +6972,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -6257,10 +6988,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -6271,19 +6999,14 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- wf_reftype: `%`($diffrt(rt_1, rt_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 @@ -6291,9 +7014,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 @@ -6304,9 +7024,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6316,9 +7033,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 @@ -6329,10 +7043,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6344,10 +7055,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6362,10 +7070,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6378,9 +7083,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6388,9 +7090,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 @@ -6399,8 +7098,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6409,9 +7106,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule `ref.null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule `ref.func`{C : context, x : idx, dt : deftype}: @@ -6420,39 +7114,24 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (|C.REFS_context| > 0) -- if (x <- C.REFS_context) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule `ref.i31`{C : context}: `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule `ref.is_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule `ref.as_non_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule `ref.eq`{C : context}: `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule `ref.test`{C : context, rt : reftype, rt' : reftype}: @@ -6460,9 +7139,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.TEST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: @@ -6470,25 +7146,16 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.CAST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule `i31.get`{C : context, sx : sx}: `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 @@ -6497,9 +7164,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 @@ -6510,9 +7175,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) @@ -6523,9 +7185,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) @@ -6534,9 +7193,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 @@ -6545,9 +7201,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 @@ -6555,9 +7209,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 @@ -6567,9 +7218,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 @@ -6580,9 +7228,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 @@ -6591,9 +7237,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 @@ -6601,26 +7244,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule `array.len`{C : context}: `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.LEN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule `array.fill`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 @@ -6631,9 +7265,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) @@ -6644,9 +7275,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[$proj_uN_0(y).0] : reftype <: storagetype), zt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 @@ -6657,35 +7285,24 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule `local.get`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 @@ -6693,9 +7310,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 @@ -6703,9 +7317,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 @@ -6713,9 +7324,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 @@ -6723,9 +7331,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 @@ -6733,9 +7338,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 @@ -6743,9 +7345,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 @@ -6753,9 +7352,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 @@ -6763,9 +7359,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 @@ -6773,9 +7366,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 @@ -6786,9 +7376,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) @@ -6800,10 +7387,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 @@ -6811,19 +7395,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 @@ -6831,9 +7409,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 @@ -6841,9 +7416,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 @@ -6853,9 +7425,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) @@ -6866,9 +7435,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 @@ -6876,9 +7442,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: @@ -6886,9 +7449,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 @@ -6897,9 +7457,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 @@ -6908,9 +7465,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 @@ -6919,9 +7473,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 @@ -6930,9 +7481,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 @@ -6941,9 +7489,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 @@ -6952,9 +7497,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 @@ -6963,9 +7505,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 @@ -6975,9 +7514,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 @@ -6986,9 +7522,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 @@ -6998,217 +7531,131 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim($proj_bshape_0(sh).0)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -7220,10 +7667,7 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- if ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}) =/= ?()) -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -7235,9 +7679,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 @@ -7245,9 +7686,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -7257,8 +7695,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7268,89 +7704,63 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) `|-%NONDEFAULTABLE`(t) -- if ($default_(t) =/= ?()) -- if (!($default_(t)) = ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.null`{C : context, ht : heaptype}: `%|-%CONST`(C, `REF.NULL`_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.i31`{C : context}: `%|-%CONST`(C, `REF.I31`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.func`{C : context, x : idx}: `%|-%CONST`(C, `REF.FUNC`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new_default`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_default`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_fixed`{C : context, x : idx, n : n}: `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `any.convert_extern`{C : context}: `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `extern.convert_any`{C : context}: `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `global.get`{C : context, x : idx, t : valtype}: `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7360,8 +7770,6 @@ relation Instr_const: `%|-%CONST`(context, instr) -- if (Inn <- [I32_Inn I64_Inn]) -- if (|[mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]| > 0) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) @@ -7372,8 +7780,6 @@ relation Expr_const: `%|-%CONST`(context, expr) rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) @@ -7382,9 +7788,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) `%|-%:%CONST`(C, expr, t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) @@ -7394,7 +7797,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_oktypeidx: `%`(OK_oktypeidx(x)) @@ -7404,8 +7806,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Global_ok: `%|-%:%`(context, global, globaltype) @@ -7415,8 +7815,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7425,8 +7823,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Table_ok: `%|-%:%`(context, table, tabletype) @@ -7436,8 +7832,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7446,17 +7840,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) @@ -7468,8 +7856,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) @@ -7478,8 +7864,6 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: @@ -7487,8 +7871,6 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7497,24 +7879,16 @@ relation Data_ok: `%|-%:%`(context, data, datatype) rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: @@ -7523,9 +7897,6 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7536,8 +7907,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Start_ok: `%|-%:OK`(context, start) @@ -7546,8 +7915,6 @@ relation Start_ok: `%|-%:OK`(context, start) `%|-%:OK`(C, START_start(x)) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7556,8 +7923,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Externidx_ok: `%|-%:%`(context, externidx, externtype) @@ -7566,45 +7931,30 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Export_ok: `%|-%:%%`(context, export, name, externtype) @@ -7612,9 +7962,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) -- Externidx_ok: `%|-%:%`(C, externidx, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { @@ -7624,17 +7971,12 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7646,14 +7988,12 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7677,7 +8017,6 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}(`%%%%%%`_nonfuncs(global#2*{global#2 <- `global*`}, mem#2*{mem#2 <- `mem*`}, table#2*{table#2 <- `table*`}, elem#2*{elem#2 <- `elem*`}, start#2?{start#2 <- `start?`}, export#2*{export#2 <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#3*{export#3 <- `export*`}))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) @@ -7713,11 +8052,13 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) - -- wf_context: `%`(C) -- wf_context: `%`(C') -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- (wf_uN: `%%`(32, iter))*{iter <- $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}))} + -- (wf_typeuse: `%`(iter))*{iter <- $tagsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_globaltype: `%`(iter))*{iter <- $globalsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_memtype: `%`(iter))*{iter <- $memsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_tabletype: `%`(iter))*{iter <- $tablesxt(xt_I*{xt_I <- `xt_I*`})} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -7769,81 +8110,272 @@ def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmadd : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmadd_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmadd_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_fmadd) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmin : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmin_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmin_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmin) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmax : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmax_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmax_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmax) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_idot : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_idot_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_idot_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_idot) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_iq15mulr : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_iq15mulr_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_iq15mulr_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_iq15mulr) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_u : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_u_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_u_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_trunc_u) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_s : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_s_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_s_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_trunc_s) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_swizzle : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_swizzle_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_swizzle_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_swizzle) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_laneselect : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_laneselect_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_laneselect_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_laneselect) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $s33_to_u32(s33 : s33) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibits_(N : N, iN : iN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibits__is_wf: `%%%`(N : N, iN : iN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibits__is_wf0{N : N, iN : iN, ret_val : bit*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibits_(N, iN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbits_(N : N, fN : fN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbits__is_wf: `%%%`(N : N, fN : fN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbits__is_wf0{N : N, fN : fN, ret_val : bit*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbits_(N, fN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibytes_(N : N, iN : iN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibytes__is_wf: `%%%`(N : N, iN : iN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibytes__is_wf0{N : N, iN : iN, ret_val : byte*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibytes_(N, iN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbytes_(N : N, fN : fN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbytes__is_wf: `%%%`(N : N, fN : fN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbytes__is_wf0{N : N, fN : fN, ret_val : byte*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbytes_(N, fN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $nbytes_(numtype : numtype, num_ : num_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation nbytes__is_wf: `%%%`(numtype : numtype, num_ : num_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule nbytes__is_wf0{numtype : numtype, num_ : num_, ret_val : byte*}: + `%%%`(numtype, num_, ret_val) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $nbytes_(numtype, num_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $vbytes_(vectype : vectype, vec_ : vec_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation vbytes__is_wf: `%%%`(vectype : vectype, vec_ : vec_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule vbytes__is_wf0{vectype : vectype, vec_ : vec_, ret_val : byte*}: + `%%%`(vectype, vec_, ret_val) + -- wf_uN: `%%`($vsize(vectype), vec_) + -- if (ret_val = $vbytes_(vectype, vec_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zbytes__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zbytes__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : byte*}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $zbytes_(storagetype, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cbytes__is_wf: `%%%`(Cnn : Cnn, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cbytes__is_wf0{Cnn : Cnn, lit_ : lit_, ret_val : byte*}: + `%%%`(Cnn, lit_, ret_val) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), lit_) + -- if (ret_val = $cbytes_(Cnn, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibits_(N : N, bit*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbits_(N : N, bit*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbits__is_wf: `%%%`(N : N, var_0 : bit*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbits__is_wf0{N : N, var_0 : bit*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_bit: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbits_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibytes_(N : N, byte*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbytes_(N : N, byte*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbytes__is_wf: `%%%`(N : N, var_0 : byte*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbytes__is_wf0{N : N, var_0 : byte*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbytes_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_nbytes_(numtype : numtype, byte*) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_nbytes__is_wf: `%%%`(numtype : numtype, var_0 : byte*, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_nbytes__is_wf0{numtype : numtype, var_0 : byte*, ret_val : num_}: + `%%%`(numtype, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_nbytes_(numtype, var_0)) + -- wf_num_: `%%`(numtype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_vbytes_(vectype : vectype, byte*) : vec_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_zbytes__is_wf: `%%%`(storagetype : storagetype, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_zbytes__is_wf0{storagetype : storagetype, var_0 : byte*, ret_val : lit_}: + `%%%`(storagetype, var_0, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_zbytes_(storagetype, var_0)) + -- wf_lit_: `%%`(storagetype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_cbytes__is_wf: `%%%`(Cnn : Cnn, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_cbytes__is_wf0{Cnn : Cnn, var_0 : byte*, ret_val : lit_}: + `%%%`(Cnn, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_cbytes_(Cnn, var_0)) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $signed_(N : N, nat : nat) : int ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7885,22 +8417,24 @@ def $sx(storagetype : storagetype) : sx?? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F32_lanetype) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $fzero($size((F32_Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $fzero($size((F32_Fnn : Fnn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F64_lanetype) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $fzero($size((F64_Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $fzero($size((F64_Fnn : Fnn <: numtype)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zero_is_wf: `%%`(lanetype : lanetype, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zero_is_wf0{lanetype : lanetype, ret_val : lane_}: + `%%`(lanetype, ret_val) + -- if (ret_val = $zero(lanetype)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7929,7 +8463,6 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -7949,28 +8482,23 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7978,7 +8506,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -7986,7 +8513,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -7994,13 +8520,11 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8028,19 +8552,15 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8091,116 +8611,277 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fneg_(N : N, fN : fN) : fN* +relation fabs__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fabs__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fabs_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fneg_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fneg__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fneg__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fneg_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsqrt_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsqrt__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsqrt__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fsqrt_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fceil_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fceil__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fceil__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fceil_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ffloor_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ffloor__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ffloor__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ffloor_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ftrunc_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ftrunc__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ftrunc__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ftrunc_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fnearest_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fnearest__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fnearest__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fnearest_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fadd_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fadd__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fadd__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fadd_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsub_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsub__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsub__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fsub_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmul_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmul__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmul__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmul_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fdiv_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fdiv__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fdiv__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fdiv_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_min__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_min__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_min_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_max__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_max__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_max_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fcopysign_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fcopysign__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fcopysign__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fcopysign_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $feq_(N : N, fN : fN, fN : fN) : u32 @@ -8222,9 +8903,31 @@ def $fge_(N : N, fN : fN, fN : fN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_madd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_madd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_madd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_nmadd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_nmadd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_nmadd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wrap__(M : M, N : N, iN : iN) : iN @@ -8243,38 +8946,77 @@ def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $demote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation demote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule demote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $demote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $promote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation promote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule promote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $promote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $convert__(M : M, N : N, sx : sx, iN : iN) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation convert___is_wf: `%%%%%`(M : M, N : N, sx : sx, iN : iN, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule convert___is_wf0{M : M, N : N, sx : sx, iN : iN, ret_val : fN}: + `%%%%%`(M, N, sx, iN, ret_val) + -- wf_uN: `%%`(M, iN) + -- if (ret_val = $convert__(M, N, sx, iN)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation reinterpret___is_wf: `%%%%`(numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule reinterpret___is_wf0{numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_}: + `%%%%`(numtype_1, numtype_2, num_, ret_val) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $reinterpret__(numtype_1, numtype_2, num_)) + -- wf_num_: `%%`(numtype_2, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) - -- wf_lane_: `%%`((I32_numtype : numtype <: lanetype), mk_lane__0_lane_(I32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) - -- wf_lane_: `%%`((I64_numtype : numtype <: lanetype), mk_lane__0_lane_(I64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) - -- wf_lane_: `%%`((F32_numtype : numtype <: lanetype), mk_lane__0_lane_(F32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) - -- wf_lane_: `%%`((F64_numtype : numtype <: lanetype), mk_lane__0_lane_(F64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack((I8_packtype : packtype <: lanetype))), $psize(I8_packtype), c)) - -- wf_lane_: `%%`((I8_packtype : packtype <: lanetype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack((I8_packtype : packtype <: lanetype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack((I16_packtype : packtype <: lanetype))), $psize(I16_packtype), c)) - -- wf_lane_: `%%`((I16_packtype : packtype <: lanetype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack((I16_packtype : packtype <: lanetype))), $psize(I16_packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lpacknum__is_wf: `%%%`(lanetype : lanetype, num_ : num_, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lpacknum__is_wf0{lanetype : lanetype, num_ : num_, ret_val : lane_}: + `%%%`(lanetype, num_, ret_val) + -- wf_num_: `%%`($lunpack(lanetype), num_) + -- if (ret_val = $lpacknum_(lanetype, num_)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -8290,10 +9032,19 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack((I8_packtype : packtype <: lanetype))), $psize(I8_packtype), c)) - -- wf_lit_: `%%`((I8_packtype : packtype <: storagetype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack((I8_packtype : packtype <: lanetype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack((I16_packtype : packtype <: lanetype))), $psize(I16_packtype), c)) - -- wf_lit_: `%%`((I16_packtype : packtype <: storagetype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack((I16_packtype : packtype <: lanetype))), $psize(I16_packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if ($cunpack(storagetype) =/= ?()) + -- wf_lit_: `%%`((!($cunpack(storagetype)) : consttype <: storagetype), lit_) + -- if (ret_val = $cpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`(storagetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -8307,10 +9058,17 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack((I8_packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((I8_packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack((I8_packtype : packtype <: lanetype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack((I16_packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((I16_packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack((I16_packtype : packtype <: lanetype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lunpacknum__is_wf: `%%%`(lanetype : lanetype, lane_ : lane_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lunpacknum__is_wf0{lanetype : lanetype, lane_ : lane_, ret_val : num_}: + `%%%`(lanetype, lane_, ret_val) + -- wf_lane_: `%%`(lanetype, lane_) + -- if (ret_val = $lunpacknum_(lanetype, lane_)) + -- wf_num_: `%%`($lunpack(lanetype), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -8326,196 +9084,166 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack((I8_packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`((!($cunpack((I8_packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack((I8_packtype : packtype <: lanetype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack((I16_packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`((!($cunpack((I16_packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack((I16_packtype : packtype <: lanetype))), U_sx, c)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cunpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cunpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $cunpacknum_(storagetype, lit_)) + -- if ($cunpack(storagetype) =/= ?()) + -- wf_lit_: `%%`((!($cunpack(storagetype)) : consttype <: storagetype), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn((I32_Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $iclz_($sizenn((I32_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn((I64_Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $iclz_($sizenn((I64_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn((I32_Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ictz_($sizenn((I32_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn((I64_Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ictz_($sizenn((I64_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn((I32_Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn((I32_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn((I64_Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn((I64_Inn : addrtype <: numtype)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn((I32_Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $iextend_($sizenn((I32_Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn((I64_Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $iextend_($sizenn((I64_Inn : addrtype <: numtype)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn((F32_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#1)))*{iter_0#1 <- $fabs_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#1)*{iter_0#1 <- $fabs_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fabs_($sizenn((F64_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#3)))*{iter_0#3 <- $fabs_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#6)*{iter_0#6 <- $fneg_($sizenn((F32_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#5)))*{iter_0#5 <- $fneg_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#3)*{iter_0#3 <- $fneg_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fneg_($sizenn((F64_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#7)))*{iter_0#7 <- $fneg_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fneg_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#10)*{iter_0#10 <- $fsqrt_($sizenn((F32_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#9)))*{iter_0#9 <- $fsqrt_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#5)*{iter_0#5 <- $fsqrt_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $fsqrt_($sizenn((F64_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#11)))*{iter_0#11 <- $fsqrt_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#6)*{iter_0#6 <- $fsqrt_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#14)*{iter_0#14 <- $fceil_($sizenn((F32_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#13)))*{iter_0#13 <- $fceil_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#7)*{iter_0#7 <- $fceil_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#16)*{iter_0#16 <- $fceil_($sizenn((F64_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#15)))*{iter_0#15 <- $fceil_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fceil_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#18)*{iter_0#18 <- $ffloor_($sizenn((F32_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#17)))*{iter_0#17 <- $ffloor_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#9)*{iter_0#9 <- $ffloor_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $ffloor_($sizenn((F64_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#19)))*{iter_0#19 <- $ffloor_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#10)*{iter_0#10 <- $ffloor_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#22)*{iter_0#22 <- $ftrunc_($sizenn((F32_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#21)))*{iter_0#21 <- $ftrunc_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#11)*{iter_0#11 <- $ftrunc_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $ftrunc_($sizenn((F64_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#23)))*{iter_0#23 <- $ftrunc_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $ftrunc_($sizenn((F64_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#26)*{iter_0#26 <- $fnearest_($sizenn((F32_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#25)))*{iter_0#25 <- $fnearest_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#13)*{iter_0#13 <- $fnearest_($sizenn((F32_Fnn : Fnn <: numtype)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fnearest_($sizenn((F64_Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#27)))*{iter_0#27 <- $fnearest_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#14)*{iter_0#14 <- $fnearest_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation unop__is_wf: `%%%%`(numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule unop__is_wf0{numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*}: + `%%%%`(numtype, unop_, num_, ret_val) + -- wf_unop_: `%%`(numtype, unop_) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $unop_(numtype, unop_, num_)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $iadd_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $iadd_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $isub_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $isub_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $imul_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $imul_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#30)*{iter_0#30 <- lift($idiv_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0#29)))*{iter_0#29 <- lift($idiv_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#15)*{iter_0#15 <- lift($idiv_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#32)*{iter_0#32 <- lift($idiv_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0#31)))*{iter_0#31 <- lift($idiv_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#16)*{iter_0#16 <- lift($idiv_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift($irem_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0#33)))*{iter_0#33 <- lift($irem_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#17)*{iter_0#17 <- lift($irem_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift($irem_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0#35)))*{iter_0#35 <- lift($irem_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#18)*{iter_0#18 <- lift($irem_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $iand_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $iand_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ior_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ior_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ixor_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ixor_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn((I32_Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ishl_($sizenn((I32_Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn((I64_Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ishl_($sizenn((I64_Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $ishr_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $ishr_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $irotl_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $irotl_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $irotr_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $irotr_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#38)*{iter_0#38 <- $fadd_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#37)))*{iter_0#37 <- $fadd_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#19)*{iter_0#19 <- $fadd_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#40)*{iter_0#40 <- $fadd_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#39)))*{iter_0#39 <- $fadd_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $fadd_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $fsub_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#41)))*{iter_0#41 <- $fsub_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#21)*{iter_0#21 <- $fsub_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $fsub_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#43)))*{iter_0#43 <- $fsub_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#22)*{iter_0#22 <- $fsub_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $fmul_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#45)))*{iter_0#45 <- $fmul_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#23)*{iter_0#23 <- $fmul_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $fmul_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#47)))*{iter_0#47 <- $fmul_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $fmul_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#50)*{iter_0#50 <- $fdiv_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#49)))*{iter_0#49 <- $fdiv_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#25)*{iter_0#25 <- $fdiv_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#52)*{iter_0#52 <- $fdiv_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#51)))*{iter_0#51 <- $fdiv_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#26)*{iter_0#26 <- $fdiv_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#54)*{iter_0#54 <- $fmin_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#53)))*{iter_0#53 <- $fmin_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#27)*{iter_0#27 <- $fmin_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#56)*{iter_0#56 <- $fmin_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#55)))*{iter_0#55 <- $fmin_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fmin_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#58)*{iter_0#58 <- $fmax_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#57)))*{iter_0#57 <- $fmax_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#29)*{iter_0#29 <- $fmax_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#60)*{iter_0#60 <- $fmax_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#59)))*{iter_0#59 <- $fmax_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#30)*{iter_0#30 <- $fmax_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#62)*{iter_0#62 <- $fcopysign_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#61)))*{iter_0#61 <- $fcopysign_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#31)*{iter_0#31 <- $fcopysign_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#64)*{iter_0#64 <- $fcopysign_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#63)))*{iter_0#63 <- $fcopysign_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#32)*{iter_0#32 <- $fcopysign_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation binop__is_wf: `%%%%%`(numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule binop__is_wf0{numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*}: + `%%%%%`(numtype, binop_, num_, num__0, ret_val) + -- wf_binop_: `%%`(numtype, binop_) + -- wf_num_: `%%`(numtype, num_) + -- wf_num_: `%%`(numtype, num__0) + -- if (ret_val = $binop_(numtype, binop_, num_, num__0)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -8579,124 +9307,108 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $extend__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $extend__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $extend__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $extend__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $wrap__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, $wrap__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $wrap__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, $wrap__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#66)*{iter_0#66 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0#65)))*{iter_0#65 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#33)*{iter_0#33 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#68)*{iter_0#68 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0#67)))*{iter_0#67 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#70)*{iter_0#70 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0#69)))*{iter_0#69 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#35)*{iter_0#35 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#72)*{iter_0#72 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0#71)))*{iter_0#71 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#74)*{iter_0#74 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0#73)))*{iter_0#73 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#37)*{iter_0#37 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#76)*{iter_0#76 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, iter_0#75)))*{iter_0#75 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#38)*{iter_0#38 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#78)*{iter_0#78 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0#77)))*{iter_0#77 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#39)*{iter_0#39 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#80)*{iter_0#80 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, iter_0#79)))*{iter_0#79 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#40)*{iter_0#40 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $convert__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $convert__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $convert__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $convert__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#82)*{iter_0#82 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#81)))*{iter_0#81 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} + def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#41)*{iter_0#41 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#84)*{iter_0#84 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#83)))*{iter_0#83 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} + def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#86)*{iter_0#86 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#85)))*{iter_0#85 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} + def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#43)*{iter_0#43 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#88)*{iter_0#88 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#87)))*{iter_0#87 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} + def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#90)*{iter_0#90 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#89)))*{iter_0#89 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} + def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#45)*{iter_0#45 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#92)*{iter_0#92 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#91)))*{iter_0#91 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} + def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#94)*{iter_0#94 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#93)))*{iter_0#93 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} + def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#47)*{iter_0#47 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#96)*{iter_0#96 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#95)))*{iter_0#95 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} + def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__((I32_Inn : addrtype <: numtype), (F32_Fnn : Fnn <: numtype), mk_num__0_num_(I32_Inn, i_1))] -- if ($size((I32_Inn : addrtype <: numtype)) = $size((F32_Fnn : Fnn <: numtype))) - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__((I64_Inn : addrtype <: numtype), (F32_Fnn : Fnn <: numtype), mk_num__0_num_(I64_Inn, i_1))] -- if ($size((I64_Inn : addrtype <: numtype)) = $size((F32_Fnn : Fnn <: numtype))) - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__((I32_Inn : addrtype <: numtype), (F64_Fnn : Fnn <: numtype), mk_num__0_num_(I32_Inn, i_1))] -- if ($size((I32_Inn : addrtype <: numtype)) = $size((F64_Fnn : Fnn <: numtype))) - -- wf_num_: `%%`((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__((I64_Inn : addrtype <: numtype), (F64_Fnn : Fnn <: numtype), mk_num__0_num_(I64_Inn, i_1))] -- if ($size((I64_Inn : addrtype <: numtype)) = $size((F64_Fnn : Fnn <: numtype))) - -- wf_num_: `%%`((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__((F32_Fnn : Fnn <: numtype), (I32_Inn : addrtype <: numtype), mk_num__1_num_(F32_Fnn, f_1))] -- if ($size((F32_Fnn : Fnn <: numtype)) = $size((I32_Inn : addrtype <: numtype))) - -- wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, f_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__((F64_Fnn : Fnn <: numtype), (I32_Inn : addrtype <: numtype), mk_num__1_num_(F64_Fnn, f_1))] -- if ($size((F64_Fnn : Fnn <: numtype)) = $size((I32_Inn : addrtype <: numtype))) - -- wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, f_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__((F32_Fnn : Fnn <: numtype), (I64_Inn : addrtype <: numtype), mk_num__1_num_(F32_Fnn, f_1))] -- if ($size((F32_Fnn : Fnn <: numtype)) = $size((I64_Inn : addrtype <: numtype))) - -- wf_num_: `%%`((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, f_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__((F64_Fnn : Fnn <: numtype), (I64_Inn : addrtype <: numtype), mk_num__1_num_(F64_Fnn, f_1))] -- if ($size((F64_Fnn : Fnn <: numtype)) = $size((I64_Inn : addrtype <: numtype))) - -- wf_num_: `%%`((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, f_1)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cvtop___is_wf: `%%%%%`(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cvtop___is_wf0{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*}: + `%%%%%`(numtype_1, numtype_2, cvtop__, num_, ret_val) + -- wf_cvtop__: `%%%`(numtype_1, numtype_2, cvtop__) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $cvtop__(numtype_1, numtype_2, cvtop__, num_)) + -- (wf_num_: `%%`(numtype_2, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_) : lane_* +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lanes__is_wf: `%%%`(shape : shape, vec_ : vec_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lanes__is_wf0{shape : shape, vec_ : vec_, ret_val : lane_*}: + `%%%`(shape, vec_, ret_val) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(128, vec_) + -- if (ret_val = $lanes_(shape, vec_)) + -- (wf_lane_: `%%`($lanetype(shape), ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $inv_lanes_(shape : shape, lane_*) : vec_ @@ -8909,458 +9621,582 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#1*{c#1 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#2*{c#2 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#5)*{c#5 <- `c*`})] + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#4)*{c#4 <- `c*`})] -- let{`c_1*` : lane_*} c_1#1*{c_1#1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c*` : iN*} c#3*{c#3 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#2)))*{c_1#2 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#5))*{iter#5 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#3)))))*{c_1#3 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#4)))*{c#4 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#8)*{c#8 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#3*{c_1#3 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#6*{c#6 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#4)))*{c_1#4 <- `c_1*`} + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#6)*{c#6 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#4*{c_1#4 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#5*{c#5 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#5)))*{c_1#5 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#6))*{iter#6 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#6)))))*{c_1#6 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#7)))*{c#7 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#11)*{c#11 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#5*{c_1#5 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#9*{c#9 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#6)))*{c_1#6 <- `c_1*`} + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#8)*{c#8 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#7*{c_1#7 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#7*{c#7 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#8)))*{c_1#8 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#7))*{iter#7 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#9)))))*{c_1#9 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#10)))*{c#10 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#14)*{c#14 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#7*{c_1#7 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#12*{c#12 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#8)))*{c_1#8 <- `c_1*`} + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#10)*{c#10 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#10*{c_1#10 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#9*{c#9 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#11)))*{c_1#11 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#8))*{iter#8 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#12)))))*{c_1#12 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#13)))*{c#13 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c#16*{c#16 <- `c*#2`})*{`c*#2` <- `c**`} - -- let{`c_1*` : lane_*} c_1#9*{c_1#9 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c**` : lane_**} c#15*{c#15 <- `c*#1`}*{`c*#1` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#97))*{iter_0#97 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#10)))))}*{c_1#10 <- `c_1*`}) + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c#12*{c#12 <- `c*#2`})*{`c*#2` <- `c**`} + -- let{`c_1*` : lane_*} c_1#13*{c_1#13 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#11*{c#11 <- `c*#1`}*{`c*#1` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#49))*{iter_0#49 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#14)))))}*{c_1#14 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#9))*{iter#9 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), iter#11))*{iter#11 <- iter#10}*{iter#10 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#50))*{iter_0#50 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#15)))))}*{c_1#15 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn((F32_Fnn : Fnn <: numtype)), iter#12))*{iter#12 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#16)))))}*{c_1#16 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#98))))*{iter_0#98 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#11)))))}*{c_1#11 <- `c_1*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c#18*{c#18 <- `c*#4`})*{`c*#4` <- `c**`} - -- let{`c_1*` : lane_*} c_1#12*{c_1#12 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c**` : lane_**} c#17*{c#17 <- `c*#3`}*{`c*#3` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#99))*{iter_0#99 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#13)))))}*{c_1#13 <- `c_1*`}) + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#51))))*{iter_0#51 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#17)))))}*{c_1#17 <- `c_1*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c#14*{c#14 <- `c*#4`})*{`c*#4` <- `c**`} + -- let{`c_1*` : lane_*} c_1#18*{c_1#18 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#13*{c#13 <- `c*#3`}*{`c*#3` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#52))*{iter_0#52 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#19)))))}*{c_1#19 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#13))*{iter#13 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), iter#15))*{iter#15 <- iter#14}*{iter#14 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#53))*{iter_0#53 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#20)))))}*{c_1#20 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn((F64_Fnn : Fnn <: numtype)), iter#16))*{iter#16 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#21)))))}*{c_1#21 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#100))))*{iter_0#100 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#14)))))}*{c_1#14 <- `c_1*`} + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#54))))*{iter_0#54 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#22)))))}*{c_1#22 <- `c_1*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#21)*{c#21 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#15*{c_1#15 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#16)*{c#16 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#23*{c_1#23 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2#1*{c_2#1 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#19*{c#19 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#16)), !($proj_lane__2(c_2#2)))*{c_1#16 <- `c_1*`, c_2#2 <- `c_2*`} + -- let{`c*` : iN*} c#15*{c#15 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#24)), !($proj_lane__2(c_2#2)))*{c_1#24 <- `c_1*`, c_2#2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#17))*{iter#17 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#18))*{iter#18 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#25)), !($proj_lane__2(c_2#3)))))*{c_1#25 <- `c_1*`, c_2#3 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#20)))*{c#20 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#24)*{c#24 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#17*{c_1#17 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#3*{c_2#3 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#22*{c#22 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#18)), !($proj_lane__2(c_2#4)))*{c_1#18 <- `c_1*`, c_2#4 <- `c_2*`} + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#18)*{c#18 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#26*{c_1#26 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#4*{c_2#4 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#17*{c#17 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#27)), !($proj_lane__2(c_2#5)))*{c_1#27 <- `c_1*`, c_2#5 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#19))*{iter#19 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#20))*{iter#20 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#28)), !($proj_lane__2(c_2#6)))))*{c_1#28 <- `c_1*`, c_2#6 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#23)))*{c#23 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#27)*{c#27 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#19*{c_1#19 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#5*{c_2#5 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#25*{c#25 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#20)), !($proj_lane__2(c_2#6)))*{c_1#20 <- `c_1*`, c_2#6 <- `c_2*`} + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#20)*{c#20 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#29*{c_1#29 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#7*{c_2#7 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#19*{c#19 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#30)), !($proj_lane__2(c_2#8)))*{c_1#30 <- `c_1*`, c_2#8 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#21))*{iter#21 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#22))*{iter#22 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#31)), !($proj_lane__2(c_2#9)))))*{c_1#31 <- `c_1*`, c_2#9 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#26)))*{c#26 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#30)*{c#30 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#21*{c_1#21 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#7*{c_2#7 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#28*{c#28 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#22)), !($proj_lane__2(c_2#8)))*{c_1#22 <- `c_1*`, c_2#8 <- `c_2*`} + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#22)*{c#22 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#32*{c_1#32 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#10*{c_2#10 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#21*{c#21 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#33)), !($proj_lane__2(c_2#11)))*{c_1#33 <- `c_1*`, c_2#11 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#23))*{iter#23 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#24))*{iter#24 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#34)), !($proj_lane__2(c_2#12)))))*{c_1#34 <- `c_1*`, c_2#12 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#29)))*{c#29 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#33)*{c#33 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#23*{c_1#23 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#9*{c_2#9 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#31*{c#31 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#24)), !($proj_lane__2(c_2#10)))*{c_1#24 <- `c_1*`, c_2#10 <- `c_2*`} + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#24)*{c#24 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#35*{c_1#35 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#13*{c_2#13 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#23*{c#23 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#36)), !($proj_lane__2(c_2#14)))*{c_1#36 <- `c_1*`, c_2#14 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#25))*{iter#25 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#26))*{iter#26 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#37)), !($proj_lane__2(c_2#15)))))*{c_1#37 <- `c_1*`, c_2#15 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#32)))*{c#32 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#36)*{c#36 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#25*{c_1#25 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#11*{c_2#11 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#34*{c#34 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#26)), !($proj_lane__2(c_2#12)))*{c_1#26 <- `c_1*`, c_2#12 <- `c_2*`} + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#26)*{c#26 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#38*{c_1#38 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#16*{c_2#16 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#25*{c#25 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#39)), !($proj_lane__2(c_2#17)))*{c_1#39 <- `c_1*`, c_2#17 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#27))*{iter#27 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#28))*{iter#28 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#40)), !($proj_lane__2(c_2#18)))))*{c_1#40 <- `c_1*`, c_2#18 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#35)))*{c#35 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#39)*{c#39 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#27*{c_1#27 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#13*{c_2#13 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#37*{c#37 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#28)), !($proj_lane__2(c_2#14)))*{c_1#28 <- `c_1*`, c_2#14 <- `c_2*`} + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#28)*{c#28 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#41*{c_1#41 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#19*{c_2#19 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#27*{c#27 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#42)), !($proj_lane__2(c_2#20)))*{c_1#42 <- `c_1*`, c_2#20 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#29))*{iter#29 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#30))*{iter#30 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#43)), !($proj_lane__2(c_2#21)))))*{c_1#43 <- `c_1*`, c_2#21 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#38)))*{c#38 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#42)*{c#42 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#29*{c_1#29 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#15*{c_2#15 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#40*{c#40 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#30)), !($proj_lane__2(c_2#16)))*{c_1#30 <- `c_1*`, c_2#16 <- `c_2*`} + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#30)*{c#30 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#44*{c_1#44 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#22*{c_2#22 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#29*{c#29 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#45)), !($proj_lane__2(c_2#23)))*{c_1#45 <- `c_1*`, c_2#23 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#31))*{iter#31 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#32))*{iter#32 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#46)), !($proj_lane__2(c_2#24)))))*{c_1#46 <- `c_1*`, c_2#24 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#41)))*{c#41 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c#44*{c#44 <- `c*#6`})*{`c*#6` <- `c**`} - -- let{`c_1*` : lane_*} c_1#31*{c_1#31 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#17*{c_2#17 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#43*{c#43 <- `c*#5`}*{`c*#5` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#101)*{iter_0#101 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#32)), !($proj_lane__2(c_2#18)))}*{c_1#32 <- `c_1*`, c_2#18 <- `c_2*`}) + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c#32*{c#32 <- `c*#6`})*{`c*#6` <- `c**`} + -- let{`c_1*` : lane_*} c_1#47*{c_1#47 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#25*{c_2#25 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#31*{c#31 <- `c*#5`}*{`c*#5` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#55)*{iter_0#55 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#48)), !($proj_lane__2(c_2#26)))}*{c_1#48 <- `c_1*`, c_2#26 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#33))*{iter#33 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#34))*{iter#34 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), iter#36))*{iter#36 <- iter#35}*{iter#35 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#56)*{iter_0#56 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#49)), !($proj_lane__2(c_2#27)))}*{c_1#49 <- `c_1*`, c_2#27 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#37))*{iter#37 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#50)), !($proj_lane__2(c_2#28)))}*{c_1#50 <- `c_1*`, c_2#28 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I32_Jnn, iter_0#102)))*{iter_0#102 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#33)), !($proj_lane__2(c_2#19)))}*{c_1#33 <- `c_1*`, c_2#19 <- `c_2*`} + -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I32_Jnn, iter_0#57)))*{iter_0#57 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#51)), !($proj_lane__2(c_2#29)))}*{c_1#51 <- `c_1*`, c_2#29 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c#46*{c#46 <- `c*#8`})*{`c*#8` <- `c**`} - -- let{`c_1*` : lane_*} c_1#34*{c_1#34 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#20*{c_2#20 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#45*{c#45 <- `c*#7`}*{`c*#7` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#103)*{iter_0#103 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#35)), !($proj_lane__2(c_2#21)))}*{c_1#35 <- `c_1*`, c_2#21 <- `c_2*`}) + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c#34*{c#34 <- `c*#8`})*{`c*#8` <- `c**`} + -- let{`c_1*` : lane_*} c_1#52*{c_1#52 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#30*{c_2#30 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#33*{c#33 <- `c*#7`}*{`c*#7` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#58)*{iter_0#58 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#53)), !($proj_lane__2(c_2#31)))}*{c_1#53 <- `c_1*`, c_2#31 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#38))*{iter#38 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#39))*{iter#39 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), iter#41))*{iter#41 <- iter#40}*{iter#40 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#59)*{iter_0#59 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#54)), !($proj_lane__2(c_2#32)))}*{c_1#54 <- `c_1*`, c_2#32 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#42))*{iter#42 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#55)), !($proj_lane__2(c_2#33)))}*{c_1#55 <- `c_1*`, c_2#33 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I64_Jnn, iter_0#104)))*{iter_0#104 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#36)), !($proj_lane__2(c_2#22)))}*{c_1#36 <- `c_1*`, c_2#22 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c#48*{c#48 <- `c*#10`})*{`c*#10` <- `c**`} - -- let{`c_1*` : lane_*} c_1#37*{c_1#37 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#23*{c_2#23 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#47*{c#47 <- `c*#9`}*{`c*#9` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#105)*{iter_0#105 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#38)), !($proj_lane__2(c_2#24)))}*{c_1#38 <- `c_1*`, c_2#24 <- `c_2*`}) + -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I64_Jnn, iter_0#60)))*{iter_0#60 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#56)), !($proj_lane__2(c_2#34)))}*{c_1#56 <- `c_1*`, c_2#34 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c#36*{c#36 <- `c*#10`})*{`c*#10` <- `c**`} + -- let{`c_1*` : lane_*} c_1#57*{c_1#57 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#35*{c_2#35 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#35*{c#35 <- `c*#9`}*{`c*#9` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#61)*{iter_0#61 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#58)), !($proj_lane__2(c_2#36)))}*{c_1#58 <- `c_1*`, c_2#36 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#43))*{iter#43 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#44))*{iter#44 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), iter#46))*{iter#46 <- iter#45}*{iter#45 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#62)*{iter_0#62 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#59)), !($proj_lane__2(c_2#37)))}*{c_1#59 <- `c_1*`, c_2#37 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#47))*{iter#47 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#60)), !($proj_lane__2(c_2#38)))}*{c_1#60 <- `c_1*`, c_2#38 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I8_Jnn, iter_0#106)))*{iter_0#106 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#39)), !($proj_lane__2(c_2#25)))}*{c_1#39 <- `c_1*`, c_2#25 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c#50*{c#50 <- `c*#12`})*{`c*#12` <- `c**`} - -- let{`c_1*` : lane_*} c_1#40*{c_1#40 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#26*{c_2#26 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#49*{c#49 <- `c*#11`}*{`c*#11` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#107)*{iter_0#107 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#41)), !($proj_lane__2(c_2#27)))}*{c_1#41 <- `c_1*`, c_2#27 <- `c_2*`}) + -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I8_Jnn, iter_0#63)))*{iter_0#63 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#61)), !($proj_lane__2(c_2#39)))}*{c_1#61 <- `c_1*`, c_2#39 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c#38*{c#38 <- `c*#12`})*{`c*#12` <- `c**`} + -- let{`c_1*` : lane_*} c_1#62*{c_1#62 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#40*{c_2#40 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#37*{c#37 <- `c*#11`}*{`c*#11` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#64)*{iter_0#64 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#63)), !($proj_lane__2(c_2#41)))}*{c_1#63 <- `c_1*`, c_2#41 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#48))*{iter#48 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#49))*{iter#49 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), iter#51))*{iter#51 <- iter#50}*{iter#50 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#65)*{iter_0#65 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#64)), !($proj_lane__2(c_2#42)))}*{c_1#64 <- `c_1*`, c_2#42 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#52))*{iter#52 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#65)), !($proj_lane__2(c_2#43)))}*{c_1#65 <- `c_1*`, c_2#43 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I16_Jnn, iter_0#108)))*{iter_0#108 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#42)), !($proj_lane__2(c_2#28)))}*{c_1#42 <- `c_1*`, c_2#28 <- `c_2*`} + -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I16_Jnn, iter_0#66)))*{iter_0#66 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#66)), !($proj_lane__2(c_2#44)))}*{c_1#66 <- `c_1*`, c_2#44 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c#52*{c#52 <- `c*#14`})*{`c*#14` <- `c**`} - -- let{`c_1*` : lane_*} c_1#43*{c_1#43 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#29*{c_2#29 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#51*{c#51 <- `c*#13`}*{`c*#13` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#109))*{iter_0#109 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#44)))), !($proj_num__1(!($proj_lane__0(c_2#30)))))}*{c_1#44 <- `c_1*`, c_2#30 <- `c_2*`}) + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c#40*{c#40 <- `c*#14`})*{`c*#14` <- `c**`} + -- let{`c_1*` : lane_*} c_1#67*{c_1#67 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#45*{c_2#45 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#39*{c#39 <- `c*#13`}*{`c*#13` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#67))*{iter_0#67 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#68)))), !($proj_num__1(!($proj_lane__0(c_2#46)))))}*{c_1#68 <- `c_1*`, c_2#46 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#53))*{iter#53 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#54))*{iter#54 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), iter#56))*{iter#56 <- iter#55}*{iter#55 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#68))*{iter_0#68 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#69)))), !($proj_num__1(!($proj_lane__0(c_2#47)))))}*{c_1#69 <- `c_1*`, c_2#47 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn((F32_Fnn : Fnn <: numtype)), iter#57))*{iter#57 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#70)))), !($proj_num__1(!($proj_lane__0(c_2#48)))))}*{c_1#70 <- `c_1*`, c_2#48 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#110))))*{iter_0#110 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#45)))), !($proj_num__1(!($proj_lane__0(c_2#31)))))}*{c_1#45 <- `c_1*`, c_2#31 <- `c_2*`} + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#69))))*{iter_0#69 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#71)))), !($proj_num__1(!($proj_lane__0(c_2#49)))))}*{c_1#71 <- `c_1*`, c_2#49 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c#54*{c#54 <- `c*#16`})*{`c*#16` <- `c**`} - -- let{`c_1*` : lane_*} c_1#46*{c_1#46 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#32*{c_2#32 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#53*{c#53 <- `c*#15`}*{`c*#15` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#111))*{iter_0#111 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#47)))), !($proj_num__1(!($proj_lane__0(c_2#33)))))}*{c_1#47 <- `c_1*`, c_2#33 <- `c_2*`}) + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c#42*{c#42 <- `c*#16`})*{`c*#16` <- `c**`} + -- let{`c_1*` : lane_*} c_1#72*{c_1#72 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#50*{c_2#50 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#41*{c#41 <- `c*#15`}*{`c*#15` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#70))*{iter_0#70 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#73)))), !($proj_num__1(!($proj_lane__0(c_2#51)))))}*{c_1#73 <- `c_1*`, c_2#51 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#58))*{iter#58 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#59))*{iter#59 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), iter#61))*{iter#61 <- iter#60}*{iter#60 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#71))*{iter_0#71 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#74)))), !($proj_num__1(!($proj_lane__0(c_2#52)))))}*{c_1#74 <- `c_1*`, c_2#52 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn((F64_Fnn : Fnn <: numtype)), iter#62))*{iter#62 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#75)))), !($proj_num__1(!($proj_lane__0(c_2#53)))))}*{c_1#75 <- `c_1*`, c_2#53 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#112))))*{iter_0#112 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#48)))), !($proj_num__1(!($proj_lane__0(c_2#34)))))}*{c_1#48 <- `c_1*`, c_2#34 <- `c_2*`} + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#72))))*{iter_0#72 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#76)))), !($proj_num__1(!($proj_lane__0(c_2#54)))))}*{c_1#76 <- `c_1*`, c_2#54 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c#56*{c#56 <- `c*#18`})*{`c*#18` <- `c**`} - -- let{`c_1*` : lane_*} c_1#49*{c_1#49 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#35*{c_2#35 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c#44*{c#44 <- `c*#18`})*{`c*#18` <- `c**`} + -- let{`c_1*` : lane_*} c_1#77*{c_1#77 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#55*{c_2#55 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) -- let{`c_3*` : lane_*} c_3#1*{c_3#1 <- `c_3*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#55*{c#55 <- `c*#17`}*{`c*#17` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#113)*{iter_0#113 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#50)), !($proj_lane__2(c_2#36)), !($proj_lane__2(c_3#2)))}*{c_1#50 <- `c_1*`, c_2#36 <- `c_2*`, c_3#2 <- `c_3*`}) + -- let{`c**` : lane_**} c#43*{c#43 <- `c*#17`}*{`c*#17` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#73)*{iter_0#73 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#78)), !($proj_lane__2(c_2#56)), !($proj_lane__2(c_3#2)))}*{c_1#78 <- `c_1*`, c_2#56 <- `c_2*`, c_3#2 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#63))*{iter#63 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#64))*{iter#64 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#65))*{iter#65 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), iter#67))*{iter#67 <- iter#66}*{iter#66 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#74)*{iter_0#74 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#79)), !($proj_lane__2(c_2#57)), !($proj_lane__2(c_3#3)))}*{c_1#79 <- `c_1*`, c_2#57 <- `c_2*`, c_3#3 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#68))*{iter#68 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#80)), !($proj_lane__2(c_2#58)), !($proj_lane__2(c_3#4)))}*{c_1#80 <- `c_1*`, c_2#58 <- `c_2*`, c_3#4 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I32_Jnn, iter_0#114)))*{iter_0#114 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#51)), !($proj_lane__2(c_2#37)), !($proj_lane__2(c_3#3)))}*{c_1#51 <- `c_1*`, c_2#37 <- `c_2*`, c_3#3 <- `c_3*`} + -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I32_Jnn, iter_0#75)))*{iter_0#75 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#81)), !($proj_lane__2(c_2#59)), !($proj_lane__2(c_3#5)))}*{c_1#81 <- `c_1*`, c_2#59 <- `c_2*`, c_3#5 <- `c_3*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c#58*{c#58 <- `c*#20`})*{`c*#20` <- `c**`} - -- let{`c_1*` : lane_*} c_1#52*{c_1#52 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#38*{c_2#38 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c_3*` : lane_*} c_3#4*{c_3#4 <- `c_3*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#57*{c#57 <- `c*#19`}*{`c*#19` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#115)*{iter_0#115 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#53)), !($proj_lane__2(c_2#39)), !($proj_lane__2(c_3#5)))}*{c_1#53 <- `c_1*`, c_2#39 <- `c_2*`, c_3#5 <- `c_3*`}) + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c#46*{c#46 <- `c*#20`})*{`c*#20` <- `c**`} + -- let{`c_1*` : lane_*} c_1#82*{c_1#82 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#60*{c_2#60 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#6*{c_3#6 <- `c_3*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#45*{c#45 <- `c*#19`}*{`c*#19` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#76)*{iter_0#76 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#83)), !($proj_lane__2(c_2#61)), !($proj_lane__2(c_3#7)))}*{c_1#83 <- `c_1*`, c_2#61 <- `c_2*`, c_3#7 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#69))*{iter#69 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#70))*{iter#70 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#71))*{iter#71 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), iter#73))*{iter#73 <- iter#72}*{iter#72 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#77)*{iter_0#77 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#84)), !($proj_lane__2(c_2#62)), !($proj_lane__2(c_3#8)))}*{c_1#84 <- `c_1*`, c_2#62 <- `c_2*`, c_3#8 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#74))*{iter#74 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#85)), !($proj_lane__2(c_2#63)), !($proj_lane__2(c_3#9)))}*{c_1#85 <- `c_1*`, c_2#63 <- `c_2*`, c_3#9 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I64_Jnn, iter_0#116)))*{iter_0#116 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#54)), !($proj_lane__2(c_2#40)), !($proj_lane__2(c_3#6)))}*{c_1#54 <- `c_1*`, c_2#40 <- `c_2*`, c_3#6 <- `c_3*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c#60*{c#60 <- `c*#22`})*{`c*#22` <- `c**`} - -- let{`c_1*` : lane_*} c_1#55*{c_1#55 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#41*{c_2#41 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c_3*` : lane_*} c_3#7*{c_3#7 <- `c_3*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#59*{c#59 <- `c*#21`}*{`c*#21` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#117)*{iter_0#117 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#56)), !($proj_lane__2(c_2#42)), !($proj_lane__2(c_3#8)))}*{c_1#56 <- `c_1*`, c_2#42 <- `c_2*`, c_3#8 <- `c_3*`}) + -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I64_Jnn, iter_0#78)))*{iter_0#78 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#86)), !($proj_lane__2(c_2#64)), !($proj_lane__2(c_3#10)))}*{c_1#86 <- `c_1*`, c_2#64 <- `c_2*`, c_3#10 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c#48*{c#48 <- `c*#22`})*{`c*#22` <- `c**`} + -- let{`c_1*` : lane_*} c_1#87*{c_1#87 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#65*{c_2#65 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#11*{c_3#11 <- `c_3*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#47*{c#47 <- `c*#21`}*{`c*#21` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#79)*{iter_0#79 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#88)), !($proj_lane__2(c_2#66)), !($proj_lane__2(c_3#12)))}*{c_1#88 <- `c_1*`, c_2#66 <- `c_2*`, c_3#12 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#75))*{iter#75 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#76))*{iter#76 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#77))*{iter#77 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), iter#79))*{iter#79 <- iter#78}*{iter#78 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#80)*{iter_0#80 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#89)), !($proj_lane__2(c_2#67)), !($proj_lane__2(c_3#13)))}*{c_1#89 <- `c_1*`, c_2#67 <- `c_2*`, c_3#13 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#80))*{iter#80 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#90)), !($proj_lane__2(c_2#68)), !($proj_lane__2(c_3#14)))}*{c_1#90 <- `c_1*`, c_2#68 <- `c_2*`, c_3#14 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I8_Jnn, iter_0#118)))*{iter_0#118 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#57)), !($proj_lane__2(c_2#43)), !($proj_lane__2(c_3#9)))}*{c_1#57 <- `c_1*`, c_2#43 <- `c_2*`, c_3#9 <- `c_3*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c#62*{c#62 <- `c*#24`})*{`c*#24` <- `c**`} - -- let{`c_1*` : lane_*} c_1#58*{c_1#58 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#44*{c_2#44 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c_3*` : lane_*} c_3#10*{c_3#10 <- `c_3*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#61*{c#61 <- `c*#23`}*{`c*#23` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#119)*{iter_0#119 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#59)), !($proj_lane__2(c_2#45)), !($proj_lane__2(c_3#11)))}*{c_1#59 <- `c_1*`, c_2#45 <- `c_2*`, c_3#11 <- `c_3*`}) + -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I8_Jnn, iter_0#81)))*{iter_0#81 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#91)), !($proj_lane__2(c_2#69)), !($proj_lane__2(c_3#15)))}*{c_1#91 <- `c_1*`, c_2#69 <- `c_2*`, c_3#15 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c#50*{c#50 <- `c*#24`})*{`c*#24` <- `c**`} + -- let{`c_1*` : lane_*} c_1#92*{c_1#92 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#70*{c_2#70 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#16*{c_3#16 <- `c_3*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#49*{c#49 <- `c*#23`}*{`c*#23` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#82)*{iter_0#82 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#93)), !($proj_lane__2(c_2#71)), !($proj_lane__2(c_3#17)))}*{c_1#93 <- `c_1*`, c_2#71 <- `c_2*`, c_3#17 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#81))*{iter#81 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#82))*{iter#82 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#83))*{iter#83 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), iter#85))*{iter#85 <- iter#84}*{iter#84 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#83)*{iter_0#83 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#94)), !($proj_lane__2(c_2#72)), !($proj_lane__2(c_3#18)))}*{c_1#94 <- `c_1*`, c_2#72 <- `c_2*`, c_3#18 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#86))*{iter#86 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#95)), !($proj_lane__2(c_2#73)), !($proj_lane__2(c_3#19)))}*{c_1#95 <- `c_1*`, c_2#73 <- `c_2*`, c_3#19 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I16_Jnn, iter_0#120)))*{iter_0#120 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#60)), !($proj_lane__2(c_2#46)), !($proj_lane__2(c_3#12)))}*{c_1#60 <- `c_1*`, c_2#46 <- `c_2*`, c_3#12 <- `c_3*`} + -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I16_Jnn, iter_0#84)))*{iter_0#84 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#96)), !($proj_lane__2(c_2#74)), !($proj_lane__2(c_3#20)))}*{c_1#96 <- `c_1*`, c_2#74 <- `c_2*`, c_3#20 <- `c_3*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c#64*{c#64 <- `c*#26`})*{`c*#26` <- `c**`} - -- let{`c_1*` : lane_*} c_1#61*{c_1#61 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#47*{c_2#47 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c_3*` : lane_*} c_3#13*{c_3#13 <- `c_3*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#63*{c#63 <- `c*#25`}*{`c*#25` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#121))*{iter_0#121 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#62)))), !($proj_num__1(!($proj_lane__0(c_2#48)))), !($proj_num__1(!($proj_lane__0(c_3#14)))))}*{c_1#62 <- `c_1*`, c_2#48 <- `c_2*`, c_3#14 <- `c_3*`}) + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c#52*{c#52 <- `c*#26`})*{`c*#26` <- `c**`} + -- let{`c_1*` : lane_*} c_1#97*{c_1#97 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#75*{c_2#75 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#21*{c_3#21 <- `c_3*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#51*{c#51 <- `c*#25`}*{`c*#25` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#85))*{iter_0#85 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#98)))), !($proj_num__1(!($proj_lane__0(c_2#76)))), !($proj_num__1(!($proj_lane__0(c_3#22)))))}*{c_1#98 <- `c_1*`, c_2#76 <- `c_2*`, c_3#22 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#87))*{iter#87 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#88))*{iter#88 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#89))*{iter#89 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), iter#91))*{iter#91 <- iter#90}*{iter#90 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#86))*{iter_0#86 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#99)))), !($proj_num__1(!($proj_lane__0(c_2#77)))), !($proj_num__1(!($proj_lane__0(c_3#23)))))}*{c_1#99 <- `c_1*`, c_2#77 <- `c_2*`, c_3#23 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn((F32_Fnn : Fnn <: numtype)), iter#92))*{iter#92 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#100)))), !($proj_num__1(!($proj_lane__0(c_2#78)))), !($proj_num__1(!($proj_lane__0(c_3#24)))))}*{c_1#100 <- `c_1*`, c_2#78 <- `c_2*`, c_3#24 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#122))))*{iter_0#122 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#63)))), !($proj_num__1(!($proj_lane__0(c_2#49)))), !($proj_num__1(!($proj_lane__0(c_3#15)))))}*{c_1#63 <- `c_1*`, c_2#49 <- `c_2*`, c_3#15 <- `c_3*`} + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#87))))*{iter_0#87 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#101)))), !($proj_num__1(!($proj_lane__0(c_2#79)))), !($proj_num__1(!($proj_lane__0(c_3#25)))))}*{c_1#101 <- `c_1*`, c_2#79 <- `c_2*`, c_3#25 <- `c_3*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c#66*{c#66 <- `c*#28`})*{`c*#28` <- `c**`} - -- let{`c_1*` : lane_*} c_1#64*{c_1#64 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#50*{c_2#50 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c_3*` : lane_*} c_3#16*{c_3#16 <- `c_3*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#65*{c#65 <- `c*#27`}*{`c*#27` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#123))*{iter_0#123 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#65)))), !($proj_num__1(!($proj_lane__0(c_2#51)))), !($proj_num__1(!($proj_lane__0(c_3#17)))))}*{c_1#65 <- `c_1*`, c_2#51 <- `c_2*`, c_3#17 <- `c_3*`}) + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c#54*{c#54 <- `c*#28`})*{`c*#28` <- `c**`} + -- let{`c_1*` : lane_*} c_1#102*{c_1#102 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#80*{c_2#80 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#26*{c_3#26 <- `c_3*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#53*{c#53 <- `c*#27`}*{`c*#27` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#88))*{iter_0#88 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#103)))), !($proj_num__1(!($proj_lane__0(c_2#81)))), !($proj_num__1(!($proj_lane__0(c_3#27)))))}*{c_1#103 <- `c_1*`, c_2#81 <- `c_2*`, c_3#27 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#93))*{iter#93 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#94))*{iter#94 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#95))*{iter#95 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), iter#97))*{iter#97 <- iter#96}*{iter#96 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#89))*{iter_0#89 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#104)))), !($proj_num__1(!($proj_lane__0(c_2#82)))), !($proj_num__1(!($proj_lane__0(c_3#28)))))}*{c_1#104 <- `c_1*`, c_2#82 <- `c_2*`, c_3#28 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn((F64_Fnn : Fnn <: numtype)), iter#98))*{iter#98 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#105)))), !($proj_num__1(!($proj_lane__0(c_2#83)))), !($proj_num__1(!($proj_lane__0(c_3#29)))))}*{c_1#105 <- `c_1*`, c_2#83 <- `c_2*`, c_3#29 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#124))))*{iter_0#124 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#66)))), !($proj_num__1(!($proj_lane__0(c_2#52)))), !($proj_num__1(!($proj_lane__0(c_3#18)))))}*{c_1#66 <- `c_1*`, c_2#52 <- `c_2*`, c_3#18 <- `c_3*`} + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#90))))*{iter_0#90 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#106)))), !($proj_num__1(!($proj_lane__0(c_2#84)))), !($proj_num__1(!($proj_lane__0(c_3#30)))))}*{c_1#106 <- `c_1*`, c_2#84 <- `c_2*`, c_3#30 <- `c_3*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#69)*{c#69 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#67*{c_1#67 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#53*{c_2#53 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#67*{c#67 <- `c*`} = $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#68)), !($proj_lane__2(c_2#54)))).0))*{c_1#68 <- `c_1*`, c_2#54 <- `c_2*`} + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#56)*{c#56 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#107*{c_1#107 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#85*{c_2#85 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#55*{c#55 <- `c*`} = $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#108)), !($proj_lane__2(c_2#86)))).0))*{c_1#108 <- `c_1*`, c_2#86 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#99))*{iter#99 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#100))*{iter#100 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#109)), !($proj_lane__2(c_2#87)))).0))))*{c_1#109 <- `c_1*`, c_2#87 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#68)))*{c#68 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#69)), !($proj_lane__2(c_2#55)))).0)))*{c_1#69 <- `c_1*`, c_2#55 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#72)*{c#72 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#70*{c_1#70 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#56*{c_2#56 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#70*{c#70 <- `c*`} = $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#71)), !($proj_lane__2(c_2#57)))).0))*{c_1#71 <- `c_1*`, c_2#57 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#110)), !($proj_lane__2(c_2#88)))).0)))*{c_1#110 <- `c_1*`, c_2#88 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#58)*{c#58 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#111*{c_1#111 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#89*{c_2#89 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#57*{c#57 <- `c*`} = $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#112)), !($proj_lane__2(c_2#90)))).0))*{c_1#112 <- `c_1*`, c_2#90 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#101))*{iter#101 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#102))*{iter#102 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#113)), !($proj_lane__2(c_2#91)))).0))))*{c_1#113 <- `c_1*`, c_2#91 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#71)))*{c#71 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#72)), !($proj_lane__2(c_2#58)))).0)))*{c_1#72 <- `c_1*`, c_2#58 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#75)*{c#75 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#73*{c_1#73 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#59*{c_2#59 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#73*{c#73 <- `c*`} = $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#74)), !($proj_lane__2(c_2#60)))).0))*{c_1#74 <- `c_1*`, c_2#60 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#114)), !($proj_lane__2(c_2#92)))).0)))*{c_1#114 <- `c_1*`, c_2#92 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#60)*{c#60 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#115*{c_1#115 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#93*{c_2#93 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#59*{c#59 <- `c*`} = $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#116)), !($proj_lane__2(c_2#94)))).0))*{c_1#116 <- `c_1*`, c_2#94 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#103))*{iter#103 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#104))*{iter#104 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#117)), !($proj_lane__2(c_2#95)))).0))))*{c_1#117 <- `c_1*`, c_2#95 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#74)))*{c#74 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#75)), !($proj_lane__2(c_2#61)))).0)))*{c_1#75 <- `c_1*`, c_2#61 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#118)), !($proj_lane__2(c_2#96)))).0)))*{c_1#118 <- `c_1*`, c_2#96 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#78)*{c#78 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#76*{c_1#76 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#62*{c_2#62 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#76*{c#76 <- `c*`} = $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#77)), !($proj_lane__2(c_2#63)))).0))*{c_1#77 <- `c_1*`, c_2#63 <- `c_2*`} + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#62)*{c#62 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#119*{c_1#119 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#97*{c_2#97 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#61*{c#61 <- `c*`} = $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#120)), !($proj_lane__2(c_2#98)))).0))*{c_1#120 <- `c_1*`, c_2#98 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#105))*{iter#105 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#106))*{iter#106 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#121)), !($proj_lane__2(c_2#99)))).0))))*{c_1#121 <- `c_1*`, c_2#99 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#77)))*{c#77 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#78)), !($proj_lane__2(c_2#64)))).0)))*{c_1#78 <- `c_1*`, c_2#64 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#122)), !($proj_lane__2(c_2#100)))).0)))*{c_1#122 <- `c_1*`, c_2#100 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#81)*{c#81 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#79*{c_1#79 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#65*{c_2#65 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#79*{c#79 <- `c*`} = $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#80)), !($proj_lane__2(c_2#66)))).0))*{c_1#80 <- `c_1*`, c_2#66 <- `c_2*`} + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#64)*{c#64 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#123*{c_1#123 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#101*{c_2#101 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#63*{c#63 <- `c*`} = $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#124)), !($proj_lane__2(c_2#102)))).0))*{c_1#124 <- `c_1*`, c_2#102 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#107))*{iter#107 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#108))*{iter#108 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#125)), !($proj_lane__2(c_2#103)))).0))))*{c_1#125 <- `c_1*`, c_2#103 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#80)))*{c#80 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#81)), !($proj_lane__2(c_2#67)))).0)))*{c_1#81 <- `c_1*`, c_2#67 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#126)), !($proj_lane__2(c_2#104)))).0)))*{c_1#126 <- `c_1*`, c_2#104 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#84)*{c#84 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#82*{c_1#82 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#68*{c_2#68 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#82*{c#82 <- `c*`} = $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#83)), !($proj_lane__2(c_2#69)))).0))*{c_1#83 <- `c_1*`, c_2#69 <- `c_2*`} + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#66)*{c#66 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#127*{c_1#127 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#105*{c_2#105 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#65*{c#65 <- `c*`} = $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#128)), !($proj_lane__2(c_2#106)))).0))*{c_1#128 <- `c_1*`, c_2#106 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#109))*{iter#109 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#110))*{iter#110 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#129)), !($proj_lane__2(c_2#107)))).0))))*{c_1#129 <- `c_1*`, c_2#107 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#83)))*{c#83 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#84)), !($proj_lane__2(c_2#70)))).0)))*{c_1#84 <- `c_1*`, c_2#70 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#87)*{c#87 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#85*{c_1#85 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#71*{c_2#71 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#85*{c#85 <- `c*`} = $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#86)), !($proj_lane__2(c_2#72)))).0))*{c_1#86 <- `c_1*`, c_2#72 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#130)), !($proj_lane__2(c_2#108)))).0)))*{c_1#130 <- `c_1*`, c_2#108 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#68)*{c#68 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#131*{c_1#131 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#109*{c_2#109 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#67*{c#67 <- `c*`} = $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#132)), !($proj_lane__2(c_2#110)))).0))*{c_1#132 <- `c_1*`, c_2#110 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#111))*{iter#111 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#112))*{iter#112 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#133)), !($proj_lane__2(c_2#111)))).0))))*{c_1#133 <- `c_1*`, c_2#111 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#86)))*{c#86 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#87)), !($proj_lane__2(c_2#73)))).0)))*{c_1#87 <- `c_1*`, c_2#73 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#90)*{c#90 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#88*{c_1#88 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#74*{c_2#74 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#88*{c#88 <- `c*`} = $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#89)), !($proj_lane__2(c_2#75)))).0))*{c_1#89 <- `c_1*`, c_2#75 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#134)), !($proj_lane__2(c_2#112)))).0)))*{c_1#134 <- `c_1*`, c_2#112 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#70)*{c#70 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#135*{c_1#135 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#113*{c_2#113 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#69*{c#69 <- `c*`} = $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#136)), !($proj_lane__2(c_2#114)))).0))*{c_1#136 <- `c_1*`, c_2#114 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#113))*{iter#113 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#114))*{iter#114 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#137)), !($proj_lane__2(c_2#115)))).0))))*{c_1#137 <- `c_1*`, c_2#115 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#89)))*{c#89 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#90)), !($proj_lane__2(c_2#76)))).0)))*{c_1#90 <- `c_1*`, c_2#76 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#138)), !($proj_lane__2(c_2#116)))).0)))*{c_1#138 <- `c_1*`, c_2#116 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#93).0)))*{c#93 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#91*{c_1#91 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#77*{c_2#77 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#91*{c#91 <- `c*`} = $extend__(1, $sizenn((F32_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#92)))), !($proj_num__1(!($proj_lane__0(c_2#78)))))).0))*{c_1#92 <- `c_1*`, c_2#78 <- `c_2*`} + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#72).0)))*{c#72 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#139*{c_1#139 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#117*{c_2#117 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#71*{c#71 <- `c*`} = $extend__(1, $sizenn((F32_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#140)))), !($proj_num__1(!($proj_lane__0(c_2#118)))))).0))*{c_1#140 <- `c_1*`, c_2#118 <- `c_2*`} -- if ($isize(Inn) = $fsize(F32_Fnn)) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#92).0)))))*{c#92 <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#115))*{iter#115 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#116))*{iter#116 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size((F32_Fnn : Fnn <: numtype)), $extend__(1, $sizenn((F32_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#141)))), !($proj_num__1(!($proj_lane__0(c_2#119)))))).0))))*{c_1#141 <- `c_1*`, c_2#119 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#93)))), !($proj_num__1(!($proj_lane__0(c_2#79)))))).0)))*{c_1#93 <- `c_1*`, c_2#79 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#142)))), !($proj_num__1(!($proj_lane__0(c_2#120)))))).0)))*{c_1#142 <- `c_1*`, c_2#120 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#96).0)))*{c#96 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#94*{c_1#94 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#80*{c_2#80 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#94*{c#94 <- `c*`} = $extend__(1, $sizenn((F64_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#95)))), !($proj_num__1(!($proj_lane__0(c_2#81)))))).0))*{c_1#95 <- `c_1*`, c_2#81 <- `c_2*`} + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#74).0)))*{c#74 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#143*{c_1#143 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#121*{c_2#121 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#73*{c#73 <- `c*`} = $extend__(1, $sizenn((F64_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#144)))), !($proj_num__1(!($proj_lane__0(c_2#122)))))).0))*{c_1#144 <- `c_1*`, c_2#122 <- `c_2*`} -- if ($isize(Inn) = $fsize(F64_Fnn)) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#95).0)))))*{c#95 <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#117))*{iter#117 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#118))*{iter#118 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size((F64_Fnn : Fnn <: numtype)), $extend__(1, $sizenn((F64_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#145)))), !($proj_num__1(!($proj_lane__0(c_2#123)))))).0))))*{c_1#145 <- `c_1*`, c_2#123 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#96)))), !($proj_num__1(!($proj_lane__0(c_2#82)))))).0)))*{c_1#96 <- `c_1*`, c_2#82 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#146)))), !($proj_num__1(!($proj_lane__0(c_2#124)))))).0)))*{c_1#146 <- `c_1*`, c_2#124 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#99)*{c#99 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#97*{c_1#97 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#97*{c#97 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#98)), i)*{c_1#98 <- `c_1*`} + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#76)*{c#76 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#147*{c_1#147 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#75*{c#75 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#148)), i)*{c_1#148 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#119))*{iter#119 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#149)), i)))*{c_1#149 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#98)))*{c#98 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#102)*{c#102 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#99*{c_1#99 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#100*{c#100 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#100)), i)*{c_1#100 <- `c_1*`} + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#78)*{c#78 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#150*{c_1#150 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#77*{c#77 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#151)), i)*{c_1#151 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#120))*{iter#120 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#152)), i)))*{c_1#152 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#101)))*{c#101 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#105)*{c#105 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#101*{c_1#101 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#103*{c#103 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#102)), i)*{c_1#102 <- `c_1*`} + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#80)*{c#80 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#153*{c_1#153 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#79*{c#79 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#154)), i)*{c_1#154 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#121))*{iter#121 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#155)), i)))*{c_1#155 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#104)))*{c#104 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#108)*{c#108 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#103*{c_1#103 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#106*{c#106 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#104)), i)*{c_1#104 <- `c_1*`} + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#82)*{c#82 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#156*{c_1#156 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#81*{c#81 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#157)), i)*{c_1#157 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#122))*{iter#122 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#158)), i)))*{c_1#158 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#107)))*{c#107 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#111)*{c#111 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#105*{c_1#105 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#109*{c#109 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#106)), i)*{c_1#106 <- `c_1*`} + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#84)*{c#84 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#159*{c_1#159 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#83*{c#83 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#160)), i)*{c_1#160 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#123))*{iter#123 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#161)), i)))*{c_1#161 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#110)))*{c#110 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#114)*{c#114 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#107*{c_1#107 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#112*{c#112 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#108)), i)*{c_1#108 <- `c_1*`} + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#86)*{c#86 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#162*{c_1#162 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#85*{c#85 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#163)), i)*{c_1#163 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#124))*{iter#124 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#164)), i)))*{c_1#164 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#113)))*{c#113 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#117)*{c#117 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#109*{c_1#109 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#115*{c#115 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#110)), i)*{c_1#110 <- `c_1*`} + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#88)*{c#88 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#165*{c_1#165 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#87*{c#87 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#166)), i)*{c_1#166 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#125))*{iter#125 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#167)), i)))*{c_1#167 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#116)))*{c#116 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#120)*{c#120 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#111*{c_1#111 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#118*{c#118 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#112)), i)*{c_1#112 <- `c_1*`} + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#90)*{c#90 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#168*{c_1#168 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#89*{c#89 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#169)), i)*{c_1#169 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#126))*{iter#126 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#170)), i)))*{c_1#170 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#119)))*{c#119 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- let{`c_1*` : lane_*} c_1#113*{c_1#113 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#114)), `%`_iN(0))).0)*{c_1#114 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- let{`c_1*` : lane_*} c_1#171*{c_1#171 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#172)), `%`_iN(0))).0)*{c_1#172 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#127))*{iter#127 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#128))*{iter#128 <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#115)), `%`_iN(0))).0)))*{c_1#115 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#173)), `%`_iN(0))).0)))*{c_1#173 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- let{`c_1*` : lane_*} c_1#116*{c_1#116 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#117)), `%`_iN(0))).0)*{c_1#117 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- let{`c_1*` : lane_*} c_1#174*{c_1#174 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#175)), `%`_iN(0))).0)*{c_1#175 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#129))*{iter#129 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#130))*{iter#130 <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#118)), `%`_iN(0))).0)))*{c_1#118 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#176)), `%`_iN(0))).0)))*{c_1#176 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- let{`c_1*` : lane_*} c_1#119*{c_1#119 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#120)), `%`_iN(0))).0)*{c_1#120 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- let{`c_1*` : lane_*} c_1#177*{c_1#177 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#178)), `%`_iN(0))).0)*{c_1#178 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#131))*{iter#131 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#132))*{iter#132 <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#121)), `%`_iN(0))).0)))*{c_1#121 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#179)), `%`_iN(0))).0)))*{c_1#179 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- let{`c_1*` : lane_*} c_1#122*{c_1#122 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#123)), `%`_iN(0))).0)*{c_1#123 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- let{`c_1*` : lane_*} c_1#180*{c_1#180 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#181)), `%`_iN(0))).0)*{c_1#181 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#133))*{iter#133 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#134))*{iter#134 <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#124)), `%`_iN(0))).0)))*{c_1#124 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#182)), `%`_iN(0))).0)))*{c_1#182 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#123)*{c#123 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#125*{c_1#125 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#83*{c_2#83 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#121*{c#121 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#126))*{c_1#126 <- `c_1*`}, !($proj_lane__2(c_2#84)))*{c_2#84 <- `c_2*`} + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#92)*{c#92 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#183*{c_1#183 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#125*{c_2#125 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#91*{c#91 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#184))*{c_1#184 <- `c_1*`}, !($proj_lane__2(c_2#126)))*{c_2#126 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#135))*{iter#135 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#136))*{iter#136 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#185))*{c_1#185 <- `c_1*`}, !($proj_lane__2(c_2#127)))))*{c_2#127 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#122)))*{c#122 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#126)*{c#126 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#127*{c_1#127 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#85*{c_2#85 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#124*{c#124 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#128))*{c_1#128 <- `c_1*`}, !($proj_lane__2(c_2#86)))*{c_2#86 <- `c_2*`} + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#94)*{c#94 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#186*{c_1#186 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#128*{c_2#128 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#93*{c#93 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#187))*{c_1#187 <- `c_1*`}, !($proj_lane__2(c_2#129)))*{c_2#129 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#137))*{iter#137 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#138))*{iter#138 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#188))*{c_1#188 <- `c_1*`}, !($proj_lane__2(c_2#130)))))*{c_2#130 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#125)))*{c#125 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#129)*{c#129 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#129*{c_1#129 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#87*{c_2#87 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#127*{c#127 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#130))*{c_1#130 <- `c_1*`}, !($proj_lane__2(c_2#88)))*{c_2#88 <- `c_2*`} + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#96)*{c#96 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#189*{c_1#189 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#131*{c_2#131 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#95*{c#95 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#190))*{c_1#190 <- `c_1*`}, !($proj_lane__2(c_2#132)))*{c_2#132 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#139))*{iter#139 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#140))*{iter#140 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#191))*{c_1#191 <- `c_1*`}, !($proj_lane__2(c_2#133)))))*{c_2#133 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#128)))*{c#128 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#132)*{c#132 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#131*{c_1#131 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#89*{c_2#89 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#130*{c#130 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#132))*{c_1#132 <- `c_1*`}, !($proj_lane__2(c_2#90)))*{c_2#90 <- `c_2*`} + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#98)*{c#98 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#192*{c_1#192 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#134*{c_2#134 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#97*{c#97 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#193))*{c_1#193 <- `c_1*`}, !($proj_lane__2(c_2#135)))*{c_2#135 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#141))*{iter#141 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#142))*{iter#142 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#194))*{c_1#194 <- `c_1*`}, !($proj_lane__2(c_2#136)))))*{c_2#136 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#131)))*{c#131 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), i#138497*{i#138497 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c#134*{c#134 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#133*{c_1#133 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#91*{c_2#91 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : lane_*} c#133*{c#133 <- `c*`} = c_1#134*{c_1#134 <- `c_1*`} ++ c_2#92*{c_2#92 <- `c_2*`}[$proj_uN_0(i#138500).0]*{i#138500 <- `i*`} + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), i#138592*{i#138592 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c#100*{c#100 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#195*{c_1#195 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#137*{c_2#137 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#99*{c#99 <- `c*`} = c_1#196*{c_1#196 <- `c_1*`} ++ c_2#138*{c_2#138 <- `c_2*`}[$proj_uN_0(i#138595).0]*{i#138595 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#143))*{iter#143 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#144))*{iter#144 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i#138504*{i#138504 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c#136*{c#136 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#135*{c_1#135 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#93*{c_2#93 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : lane_*} c#135*{c#135 <- `c*`} = c_1#136*{c_1#136 <- `c_1*`} ++ c_2#94*{c_2#94 <- `c_2*`}[$proj_uN_0(i#138507).0]*{i#138507 <- `i*`} + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i#138603*{i#138603 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c#102*{c#102 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#197*{c_1#197 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#139*{c_2#139 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#101*{c#101 <- `c*`} = c_1#198*{c_1#198 <- `c_1*`} ++ c_2#140*{c_2#140 <- `c_2*`}[$proj_uN_0(i#138606).0]*{i#138606 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#145))*{iter#145 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#146))*{iter#146 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i#138511*{i#138511 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c#138*{c#138 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#137*{c_1#137 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#95*{c_2#95 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : lane_*} c#137*{c#137 <- `c*`} = c_1#138*{c_1#138 <- `c_1*`} ++ c_2#96*{c_2#96 <- `c_2*`}[$proj_uN_0(i#138514).0]*{i#138514 <- `i*`} + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i#138614*{i#138614 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c#104*{c#104 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#199*{c_1#199 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#141*{c_2#141 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#103*{c#103 <- `c*`} = c_1#200*{c_1#200 <- `c_1*`} ++ c_2#142*{c_2#142 <- `c_2*`}[$proj_uN_0(i#138617).0]*{i#138617 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#147))*{iter#147 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#148))*{iter#148 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i#138518*{i#138518 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c#140*{c#140 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#139*{c_1#139 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#97*{c_2#97 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) - -- let{`c*` : lane_*} c#139*{c#139 <- `c*`} = c_1#140*{c_1#140 <- `c_1*`} ++ c_2#98*{c_2#98 <- `c_2*`}[$proj_uN_0(i#138521).0]*{i#138521 <- `i*`} + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i#138625*{i#138625 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c#106*{c#106 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#201*{c_1#201 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#143*{c_2#143 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#105*{c#105 <- `c*`} = c_1#202*{c_1#202 <- `c_1*`} ++ c_2#144*{c_2#144 <- `c_2*`}[$proj_uN_0(i#138628).0]*{i#138628 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#149))*{iter#149 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#150))*{iter#150 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -9388,722 +10224,614 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3021?{half#3021 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))) + -- wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3022?{half#3022 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))) + -- wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3023?{half#3023 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))) + -- wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3024?{half#3024 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))) + -- wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3025?{half#3025 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))) + -- wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3026?{half#3026 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))) + -- wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3027?{half#3027 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))) + -- wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3028?{half#3028 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))) + -- wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3489?{zero#3489 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#143))?{c#143 <- `c?`}) - -- let{`c?` : iN?} c#141?{c#141 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#142))))?{c#142 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3489?{zero#3489 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#108))?{c#108 <- `c?`}) + -- let{`c?` : iN?} c#107?{c#107 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#151))?{iter#151 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3490?{zero#3490 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#146))?{c#146 <- `c?`}) - -- let{`c?` : iN?} c#144?{c#144 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#145))))?{c#145 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3490?{zero#3490 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#110))?{c#110 <- `c?`}) + -- let{`c?` : iN?} c#109?{c#109 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#152))?{iter#152 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3491?{zero#3491 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#149))?{c#149 <- `c?`}) - -- let{`c?` : iN?} c#147?{c#147 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#148))))?{c#148 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3491?{zero#3491 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#112))?{c#112 <- `c?`}) + -- let{`c?` : iN?} c#111?{c#111 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#153))?{iter#153 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3492?{zero#3492 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#152))?{c#152 <- `c?`}) - -- let{`c?` : iN?} c#150?{c#150 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#151))))?{c#151 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3492?{zero#3492 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#114))?{c#114 <- `c?`}) + -- let{`c?` : iN?} c#113?{c#113 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#154))?{iter#154 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3493?{zero#3493 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#155))?{c#155 <- `c?`}) - -- let{`c?` : iN?} c#153?{c#153 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#154))))?{c#154 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3493?{zero#3493 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#116))?{c#116 <- `c?`}) + -- let{`c?` : iN?} c#115?{c#115 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#155))?{iter#155 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3494?{zero#3494 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#158))?{c#158 <- `c?`}) - -- let{`c?` : iN?} c#156?{c#156 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#157))))?{c#157 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3494?{zero#3494 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#118))?{c#118 <- `c?`}) + -- let{`c?` : iN?} c#117?{c#117 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#156))?{iter#156 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3495?{zero#3495 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#161))?{c#161 <- `c?`}) - -- let{`c?` : iN?} c#159?{c#159 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#160))))?{c#160 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3495?{zero#3495 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#120))?{c#120 <- `c?`}) + -- let{`c?` : iN?} c#119?{c#119 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#157))?{iter#157 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3496?{zero#3496 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#164))?{c#164 <- `c?`}) - -- let{`c?` : iN?} c#162?{c#162 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#163))))?{c#163 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3496?{zero#3496 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#122))?{c#122 <- `c?`}) + -- let{`c?` : iN?} c#121?{c#121 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#158))?{iter#158 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3497?{zero#3497 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#167))?{c#167 <- `c?`}) - -- let{`c?` : iN?} c#165?{c#165 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#166))))?{c#166 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3497?{zero#3497 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#124))?{c#124 <- `c?`}) + -- let{`c?` : iN?} c#123?{c#123 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#159))?{iter#159 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3498?{zero#3498 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#170))?{c#170 <- `c?`}) - -- let{`c?` : iN?} c#168?{c#168 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#169))))?{c#169 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3498?{zero#3498 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#126))?{c#126 <- `c?`}) + -- let{`c?` : iN?} c#125?{c#125 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#160))?{iter#160 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3499?{zero#3499 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#173))?{c#173 <- `c?`}) - -- let{`c?` : iN?} c#171?{c#171 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#172))))?{c#172 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3499?{zero#3499 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#128))?{c#128 <- `c?`}) + -- let{`c?` : iN?} c#127?{c#127 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#161))?{iter#161 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3500?{zero#3500 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#176))?{c#176 <- `c?`}) - -- let{`c?` : iN?} c#174?{c#174 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#175))))?{c#175 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3500?{zero#3500 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#130))?{c#130 <- `c?`}) + -- let{`c?` : iN?} c#129?{c#129 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#162))?{iter#162 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3501?{zero#3501 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#179))?{c#179 <- `c?`}) - -- let{`c?` : iN?} c#177?{c#177 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#178))))?{c#178 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3501?{zero#3501 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#132))?{c#132 <- `c?`}) + -- let{`c?` : iN?} c#131?{c#131 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#163))?{iter#163 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3502?{zero#3502 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#182))?{c#182 <- `c?`}) - -- let{`c?` : iN?} c#180?{c#180 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#181))))?{c#181 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3502?{zero#3502 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#134))?{c#134 <- `c?`}) + -- let{`c?` : iN?} c#133?{c#133 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#164))?{iter#164 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3503?{zero#3503 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#185))?{c#185 <- `c?`}) - -- let{`c?` : iN?} c#183?{c#183 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#184))))?{c#184 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3503?{zero#3503 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#136))?{c#136 <- `c?`}) + -- let{`c?` : iN?} c#135?{c#135 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#165))?{iter#165 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3504?{zero#3504 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#188))?{c#188 <- `c?`}) - -- let{`c?` : iN?} c#186?{c#186 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#187))))?{c#187 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3504?{zero#3504 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#138))?{c#138 <- `c?`}) + -- let{`c?` : iN?} c#137?{c#137 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#166))?{iter#166 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3505?{zero#3505 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#191))?{c#191 <- `c?`}) - -- let{`c?` : iN?} c#189?{c#189 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#190))))?{c#190 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3505?{zero#3505 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#140))?{c#140 <- `c?`}) + -- let{`c?` : iN?} c#139?{c#139 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#167))?{iter#167 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3506?{zero#3506 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#194))?{c#194 <- `c?`}) - -- let{`c?` : iN?} c#192?{c#192 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#193))))?{c#193 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3506?{zero#3506 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#142))?{c#142 <- `c?`}) + -- let{`c?` : iN?} c#141?{c#141 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#168))?{iter#168 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3507?{zero#3507 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#197))?{c#197 <- `c?`}) - -- let{`c?` : iN?} c#195?{c#195 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#196))))?{c#196 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3507?{zero#3507 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#144))?{c#144 <- `c?`}) + -- let{`c?` : iN?} c#143?{c#143 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#169))?{iter#169 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3508?{zero#3508 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#200))?{c#200 <- `c?`}) - -- let{`c?` : iN?} c#198?{c#198 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#199))))?{c#199 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3508?{zero#3508 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#146))?{c#146 <- `c?`}) + -- let{`c?` : iN?} c#145?{c#145 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#170))?{iter#170 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3509?{zero#3509 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#203))?{c#203 <- `c?`}) - -- let{`c?` : iN?} c#201?{c#201 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#202))))?{c#202 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3509?{zero#3509 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#148))?{c#148 <- `c?`}) + -- let{`c?` : iN?} c#147?{c#147 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#171))?{iter#171 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3510?{zero#3510 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#206))?{c#206 <- `c?`}) - -- let{`c?` : iN?} c#204?{c#204 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#205))))?{c#205 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3510?{zero#3510 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#150))?{c#150 <- `c?`}) + -- let{`c?` : iN?} c#149?{c#149 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#172))?{iter#172 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3511?{zero#3511 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#209))?{c#209 <- `c?`}) - -- let{`c?` : iN?} c#207?{c#207 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#208))))?{c#208 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3511?{zero#3511 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#152))?{c#152 <- `c?`}) + -- let{`c?` : iN?} c#151?{c#151 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#173))?{iter#173 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3512?{zero#3512 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#212))?{c#212 <- `c?`}) - -- let{`c?` : iN?} c#210?{c#210 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#211))))?{c#211 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3512?{zero#3512 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#154))?{c#154 <- `c?`}) + -- let{`c?` : iN?} c#153?{c#153 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#174))?{iter#174 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3513?{zero#3513 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#215))?{c#215 <- `c?`}) - -- let{`c?` : iN?} c#213?{c#213 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#214))))?{c#214 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3513?{zero#3513 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#156))?{c#156 <- `c?`}) + -- let{`c?` : iN?} c#155?{c#155 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#175))?{iter#175 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3514?{zero#3514 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#218))?{c#218 <- `c?`}) - -- let{`c?` : iN?} c#216?{c#216 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#217))))?{c#217 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3514?{zero#3514 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#158))?{c#158 <- `c?`}) + -- let{`c?` : iN?} c#157?{c#157 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#176))?{iter#176 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3515?{zero#3515 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#221))?{c#221 <- `c?`}) - -- let{`c?` : iN?} c#219?{c#219 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#220))))?{c#220 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3515?{zero#3515 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#160))?{c#160 <- `c?`}) + -- let{`c?` : iN?} c#159?{c#159 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#177))?{iter#177 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3516?{zero#3516 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#224))?{c#224 <- `c?`}) - -- let{`c?` : iN?} c#222?{c#222 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#223))))?{c#223 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3516?{zero#3516 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#162))?{c#162 <- `c?`}) + -- let{`c?` : iN?} c#161?{c#161 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#178))?{iter#178 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3517?{zero#3517 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#227))?{c#227 <- `c?`}) - -- let{`c?` : iN?} c#225?{c#225 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#226))))?{c#226 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3517?{zero#3517 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#164))?{c#164 <- `c?`}) + -- let{`c?` : iN?} c#163?{c#163 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#179))?{iter#179 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3518?{zero#3518 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#230))?{c#230 <- `c?`}) - -- let{`c?` : iN?} c#228?{c#228 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#229))))?{c#229 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3518?{zero#3518 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#166))?{c#166 <- `c?`}) + -- let{`c?` : iN?} c#165?{c#165 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#180))?{iter#180 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3519?{zero#3519 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#233))?{c#233 <- `c?`}) - -- let{`c?` : iN?} c#231?{c#231 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#232))))?{c#232 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3519?{zero#3519 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#168))?{c#168 <- `c?`}) + -- let{`c?` : iN?} c#167?{c#167 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#181))?{iter#181 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3520?{zero#3520 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#236))?{c#236 <- `c?`}) - -- let{`c?` : iN?} c#234?{c#234 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#235))))?{c#235 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3520?{zero#3520 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#170))?{c#170 <- `c?`}) + -- let{`c?` : iN?} c#169?{c#169 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#182))?{iter#182 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#239))*{c#239 <- `c*`} - -- let{`c*` : fN*} c#237*{c#237 <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#238))))*{c#238 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#172))*{c#172 <- `c*`} + -- let{`c*` : fN*} c#171*{c#171 <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#183))*{iter#183 <- $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#242))*{c#242 <- `c*`} - -- let{`c*` : fN*} c#240*{c#240 <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#241))))*{c#241 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#174))*{c#174 <- `c*`} + -- let{`c*` : fN*} c#173*{c#173 <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#184))*{iter#184 <- $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#245))*{c#245 <- `c*`} - -- let{`c*` : fN*} c#243*{c#243 <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#244))))*{c#244 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#176))*{c#176 <- `c*`} + -- let{`c*` : fN*} c#175*{c#175 <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#185))*{iter#185 <- $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#248))*{c#248 <- `c*`} - -- let{`c*` : fN*} c#246*{c#246 <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#247))))*{c#247 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#178))*{c#178 <- `c*`} + -- let{`c*` : fN*} c#177*{c#177 <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#186))*{iter#186 <- $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#251))*{c#251 <- `c*`} - -- let{`c*` : fN*} c#249*{c#249 <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#250))))*{c#250 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#180))*{c#180 <- `c*`} + -- let{`c*` : fN*} c#179*{c#179 <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#187))*{iter#187 <- $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#254))*{c#254 <- `c*`} - -- let{`c*` : fN*} c#252*{c#252 <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#253))))*{c#253 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#182))*{c#182 <- `c*`} + -- let{`c*` : fN*} c#181*{c#181 <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#188))*{iter#188 <- $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#257))*{c#257 <- `c*`} - -- let{`c*` : fN*} c#255*{c#255 <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#256))))*{c#256 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#184))*{c#184 <- `c*`} + -- let{`c*` : fN*} c#183*{c#183 <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#189))*{iter#189 <- $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#260))*{c#260 <- `c*`} - -- let{`c*` : fN*} c#258*{c#258 <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#259))))*{c#259 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#186))*{c#186 <- `c*`} + -- let{`c*` : fN*} c#185*{c#185 <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#190))*{iter#190 <- $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#263))*{c#263 <- `c*`} - -- let{`c*` : fN*} c#261*{c#261 <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#262))))*{c#262 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#188))*{c#188 <- `c*`} + -- let{`c*` : fN*} c#187*{c#187 <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#191))*{iter#191 <- $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#266))*{c#266 <- `c*`} - -- let{`c*` : fN*} c#264*{c#264 <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#265))))*{c#265 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#190))*{c#190 <- `c*`} + -- let{`c*` : fN*} c#189*{c#189 <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#192))*{iter#192 <- $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#269))*{c#269 <- `c*`} - -- let{`c*` : fN*} c#267*{c#267 <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#268))))*{c#268 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#192))*{c#192 <- `c*`} + -- let{`c*` : fN*} c#191*{c#191 <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#193))*{iter#193 <- $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#272))*{c#272 <- `c*`} - -- let{`c*` : fN*} c#270*{c#270 <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#271))))*{c#271 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#194))*{c#194 <- `c*`} + -- let{`c*` : fN*} c#193*{c#193 <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#194))*{iter#194 <- $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#275))*{c#275 <- `c*`} - -- let{`c*` : fN*} c#273*{c#273 <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#274))))*{c#274 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#196))*{c#196 <- `c*`} + -- let{`c*` : fN*} c#195*{c#195 <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#195))*{iter#195 <- $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#278))*{c#278 <- `c*`} - -- let{`c*` : fN*} c#276*{c#276 <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#277))))*{c#277 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#198))*{c#198 <- `c*`} + -- let{`c*` : fN*} c#197*{c#197 <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#196))*{iter#196 <- $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#281))*{c#281 <- `c*`} - -- let{`c*` : fN*} c#279*{c#279 <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#280))))*{c#280 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#200))*{c#200 <- `c*`} + -- let{`c*` : fN*} c#199*{c#199 <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#197))*{iter#197 <- $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#284))*{c#284 <- `c*`} - -- let{`c*` : fN*} c#282*{c#282 <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#283))))*{c#283 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#202))*{c#202 <- `c*`} + -- let{`c*` : fN*} c#201*{c#201 <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#198))*{iter#198 <- $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lcvtop___is_wf: `%%%%%`(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lcvtop___is_wf0{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*}: + `%%%%%`(shape_1, shape_2, vcvtop__, lane_, ret_val) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_1, shape_2, vcvtop__) + -- wf_lane_: `%%`($lanetype(shape_1), lane_) + -- if (ret_val = $lcvtop__(shape_1, shape_2, vcvtop__, lane_)) + -- (wf_lane_: `%%`($lanetype(shape_2), ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- let{`c_1*` : lane_*} c_1#141*{c_1#141 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) - -- let{`c**` : lane_**} c#285*{c#285 <- `c*#29`}*{`c*#29` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#142)*{c_1#142 <- `c_1*`}) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#286*{c#286 <- `c*#30`})*{`c*#30` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- let{`c_1*` : lane_*} c_1#203*{c_1#203 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#203*{c#203 <- `c*#29`}*{`c*#29` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#204)*{c_1#204 <- `c_1*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#204*{c#204 <- `c*#30`})*{`c*#30` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), iter#199))*{iter#199 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#201))*{iter#201 <- iter#200}*{iter#200 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#205)*{c_1#205 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#202))*{iter#202 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#206)}*{c_1#206 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#205*{c#205 <- `c*#31`})))*{`c*#31` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- let{`c_1*` : lane_*} c_1#143*{c_1#143 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] - -- let{`c**` : lane_**} c#287*{c#287 <- `c*#31`}*{`c*#31` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#144)*{c_1#144 <- `c_1*`}) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#288*{c#288 <- `c*#32`})*{`c*#32` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- let{`c_1*` : lane_*} c_1#207*{c_1#207 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] + -- let{`c**` : lane_**} c#206*{c#206 <- `c*#32`}*{`c*#32` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#208)*{c_1#208 <- `c_1*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#207*{c#207 <- `c*#33`})*{`c*#33` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#203))*{iter#203 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#205))*{iter#205 <- iter#204}*{iter#204 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#209)*{c_1#209 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#206))*{iter#206 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#210)}*{c_1#210 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#208*{c#208 <- `c*#34`})))*{`c*#34` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- let{`c_1*` : lane_*} c_1#145*{c_1#145 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) - -- let{`c**` : lane_**} c#289*{c#289 <- `c*#33`}*{`c*#33` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#146)*{c_1#146 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#290*{c#290 <- `c*#34`})*{`c*#34` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- let{`c_1*` : lane_*} c_1#211*{c_1#211 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) + -- let{`c**` : lane_**} c#209*{c#209 <- `c*#35`}*{`c*#35` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#212)*{c_1#212 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#210*{c#210 <- `c*#36`})*{`c*#36` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#207))*{iter#207 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#209))*{iter#209 <- iter#208}*{iter#208 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#213)*{c_1#213 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})} + -- (wf_lane_: `%%`(Lnn_2, iter#210))*{iter#210 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#214)}*{c_1#214 <- `c_1*`} + -- wf_lane_: `%%`(Lnn_2, $zero(Lnn_2)) + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#211*{c#211 <- `c*#37`})))*{`c*#37` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) @@ -10111,918 +10839,821 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#139203*{i#139203 <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#139119*{i#139119 <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#147*{c_1#147 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#99*{c_2#99 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#1*{c'_1#1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#148)))*{c_1#148 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#1*{c'_2#1 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#100)))*{c_2#100 <- `c_2*`} + -- let{`c_1*` : lane_*} c_1#215*{c_1#215 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#145*{c_2#145 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#1*{c'_1#1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#216)))*{c_1#216 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#1*{c'_2#1 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#146)))*{c_2#146 <- `c_2*`} -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#2)*{c'_1#2 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#2)*{c'_2#2 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#211))*{iter#211 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#212))*{iter#212 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#217)))))*{c_1#217 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#147)))))*{c_2#147 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#3)*{c'_1#3 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#3)*{c'_2#3 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#3)))*{c'_1#3 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#3)))*{c'_2#3 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#4)))*{c'_1#4 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#4)))*{c'_2#4 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#149*{c_1#149 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#101*{c_2#101 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#4*{c'_1#4 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#150)))*{c_1#150 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#4*{c'_2#4 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#102)))*{c_2#102 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#5)*{c'_1#5 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#5)*{c'_2#5 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#218*{c_1#218 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#148*{c_2#148 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#5*{c'_1#5 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#219)))*{c_1#219 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#5*{c'_2#5 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#149)))*{c_2#149 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#6)*{c'_1#6 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#6)*{c'_2#6 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#213))*{iter#213 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#214))*{iter#214 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#220)))))*{c_1#220 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#150)))))*{c_2#150 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#7)*{c'_1#7 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#7)*{c'_2#7 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#6)))*{c'_1#6 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#6)))*{c'_2#6 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#8)))*{c'_1#8 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#8)))*{c'_2#8 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#151*{c_1#151 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#103*{c_2#103 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#7*{c'_1#7 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#152)))*{c_1#152 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#7*{c'_2#7 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#104)))*{c_2#104 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#8)*{c'_1#8 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#8)*{c'_2#8 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#221*{c_1#221 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#151*{c_2#151 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#9*{c'_1#9 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#222)))*{c_1#222 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#9*{c'_2#9 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#152)))*{c_2#152 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#10)*{c'_1#10 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#10)*{c'_2#10 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#215))*{iter#215 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#216))*{iter#216 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#223)))))*{c_1#223 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#153)))))*{c_2#153 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#11)*{c'_1#11 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#11)*{c'_2#11 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#9)))*{c'_1#9 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#9)))*{c'_2#9 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#12)))*{c'_1#12 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#12)))*{c'_2#12 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#153*{c_1#153 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#105*{c_2#105 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#10*{c'_1#10 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#154)))*{c_1#154 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#10*{c'_2#10 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#106)))*{c_2#106 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#11)*{c'_1#11 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#11)*{c'_2#11 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#224*{c_1#224 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#154*{c_2#154 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#13*{c'_1#13 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#225)))*{c_1#225 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#13*{c'_2#13 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#155)))*{c_2#155 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#14)*{c'_1#14 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#14)*{c'_2#14 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#217))*{iter#217 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#218))*{iter#218 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#226)))))*{c_1#226 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#156)))))*{c_2#156 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#15)*{c'_1#15 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#15)*{c'_2#15 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#12)))*{c'_1#12 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#12)))*{c'_2#12 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#16)))*{c'_1#16 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#16)))*{c'_2#16 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#155*{c_1#155 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#107*{c_2#107 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#13*{c'_1#13 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#156)))*{c_1#156 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#13*{c'_2#13 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#108)))*{c_2#108 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#14)*{c'_1#14 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#14)*{c'_2#14 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#227*{c_1#227 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#157*{c_2#157 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#17*{c'_1#17 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#228)))*{c_1#228 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#17*{c'_2#17 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#158)))*{c_2#158 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#18)*{c'_1#18 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#18)*{c'_2#18 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#219))*{iter#219 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#220))*{iter#220 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#229)))))*{c_1#229 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#159)))))*{c_2#159 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#19)*{c'_1#19 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#19)*{c'_2#19 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#15)))*{c'_1#15 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#15)))*{c'_2#15 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#20)))*{c'_1#20 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#20)))*{c'_2#20 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#157*{c_1#157 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#109*{c_2#109 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#16*{c'_1#16 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#158)))*{c_1#158 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#16*{c'_2#16 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#110)))*{c_2#110 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#17)*{c'_1#17 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#17)*{c'_2#17 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#230*{c_1#230 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#160*{c_2#160 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#21*{c'_1#21 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#231)))*{c_1#231 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#21*{c'_2#21 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#161)))*{c_2#161 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#22)*{c'_1#22 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#22)*{c'_2#22 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#221))*{iter#221 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#222))*{iter#222 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#232)))))*{c_1#232 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#162)))))*{c_2#162 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#23)*{c'_1#23 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#23)*{c'_2#23 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#18)))*{c'_1#18 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#18)))*{c'_2#18 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#24)))*{c'_1#24 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#24)))*{c'_2#24 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#159*{c_1#159 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#111*{c_2#111 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#19*{c'_1#19 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#160)))*{c_1#160 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#19*{c'_2#19 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#112)))*{c_2#112 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#20)*{c'_1#20 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#20)*{c'_2#20 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#233*{c_1#233 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#163*{c_2#163 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#25*{c'_1#25 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#234)))*{c_1#234 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#25*{c'_2#25 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#164)))*{c_2#164 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#26)*{c'_1#26 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#26)*{c'_2#26 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#223))*{iter#223 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#224))*{iter#224 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#235)))))*{c_1#235 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#165)))))*{c_2#165 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#27)*{c'_1#27 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#27)*{c'_2#27 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#21)))*{c'_1#21 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#21)))*{c'_2#21 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#28)))*{c'_1#28 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#28)))*{c'_2#28 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#161*{c_1#161 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#113*{c_2#113 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#22*{c'_1#22 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#162)))*{c_1#162 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#22*{c'_2#22 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#114)))*{c_2#114 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#23)*{c'_1#23 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#23)*{c'_2#23 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#236*{c_1#236 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#166*{c_2#166 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#29*{c'_1#29 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#237)))*{c_1#237 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#29*{c'_2#29 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#167)))*{c_2#167 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#30)*{c'_1#30 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#30)*{c'_2#30 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#225))*{iter#225 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#226))*{iter#226 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#238)))))*{c_1#238 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#168)))))*{c_2#168 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#31)*{c'_1#31 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#31)*{c'_2#31 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#24)))*{c'_1#24 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#24)))*{c'_2#24 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#32)))*{c'_1#32 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#32)))*{c'_2#32 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#163*{c_1#163 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#115*{c_2#115 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#25*{c'_1#25 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#164)))*{c_1#164 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#25*{c'_2#25 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#116)))*{c_2#116 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#26)*{c'_1#26 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#26)*{c'_2#26 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#239*{c_1#239 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#169*{c_2#169 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#33*{c'_1#33 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#240)))*{c_1#240 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#33*{c'_2#33 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#170)))*{c_2#170 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#34)*{c'_1#34 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#34)*{c'_2#34 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#227))*{iter#227 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#228))*{iter#228 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#241)))))*{c_1#241 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#171)))))*{c_2#171 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#35)*{c'_1#35 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#35)*{c'_2#35 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#27)))*{c'_1#27 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#27)))*{c'_2#27 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#36)))*{c'_1#36 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#36)))*{c'_2#36 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#165*{c_1#165 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#117*{c_2#117 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#28*{c'_1#28 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#166)))*{c_1#166 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#28*{c'_2#28 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#118)))*{c_2#118 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#29)*{c'_1#29 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#29)*{c'_2#29 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#242*{c_1#242 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#172*{c_2#172 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#37*{c'_1#37 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#243)))*{c_1#243 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#37*{c'_2#37 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#173)))*{c_2#173 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#38)*{c'_1#38 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#38)*{c'_2#38 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#229))*{iter#229 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#230))*{iter#230 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#244)))))*{c_1#244 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#174)))))*{c_2#174 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#39)*{c'_1#39 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#39)*{c'_2#39 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#30)))*{c'_1#30 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#30)))*{c'_2#30 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#40)))*{c'_1#40 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#40)))*{c'_2#40 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#167*{c_1#167 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#119*{c_2#119 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#31*{c'_1#31 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#168)))*{c_1#168 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#31*{c'_2#31 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#120)))*{c_2#120 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#32)*{c'_1#32 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#32)*{c'_2#32 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#245*{c_1#245 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#175*{c_2#175 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#41*{c'_1#41 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#246)))*{c_1#246 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#41*{c'_2#41 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#176)))*{c_2#176 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#42)*{c'_1#42 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#42)*{c'_2#42 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#231))*{iter#231 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#232))*{iter#232 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#247)))))*{c_1#247 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#177)))))*{c_2#177 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#43)*{c'_1#43 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#43)*{c'_2#43 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#33)))*{c'_1#33 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#33)))*{c'_2#33 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#44)))*{c'_1#44 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#44)))*{c'_2#44 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#169*{c_1#169 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#121*{c_2#121 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#34*{c'_1#34 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#170)))*{c_1#170 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#34*{c'_2#34 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#122)))*{c_2#122 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#35)*{c'_1#35 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#35)*{c'_2#35 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#248*{c_1#248 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#178*{c_2#178 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#45*{c'_1#45 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#249)))*{c_1#249 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#45*{c'_2#45 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#179)))*{c_2#179 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#46)*{c'_1#46 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#46)*{c'_2#46 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#233))*{iter#233 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#234))*{iter#234 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#250)))))*{c_1#250 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#180)))))*{c_2#180 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#47)*{c'_1#47 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#47)*{c'_2#47 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#36)))*{c'_1#36 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#36)))*{c'_2#36 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#48)))*{c'_1#48 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#48)))*{c'_2#48 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#171*{c_1#171 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#123*{c_2#123 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#37*{c'_1#37 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#172)))*{c_1#172 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#37*{c'_2#37 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#124)))*{c_2#124 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#38)*{c'_1#38 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#38)*{c'_2#38 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#251*{c_1#251 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#181*{c_2#181 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#49*{c'_1#49 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#252)))*{c_1#252 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#49*{c'_2#49 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#182)))*{c_2#182 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#50)*{c'_1#50 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#50)*{c'_2#50 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#235))*{iter#235 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#236))*{iter#236 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#253)))))*{c_1#253 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#183)))))*{c_2#183 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#51)*{c'_1#51 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#51)*{c'_2#51 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#39)))*{c'_1#39 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#39)))*{c'_2#39 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#52)))*{c'_1#52 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#52)))*{c'_2#52 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#173*{c_1#173 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#125*{c_2#125 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#40*{c'_1#40 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#174)))*{c_1#174 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#40*{c'_2#40 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#126)))*{c_2#126 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#41)*{c'_1#41 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#41)*{c'_2#41 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#254*{c_1#254 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#184*{c_2#184 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#53*{c'_1#53 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#255)))*{c_1#255 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#53*{c'_2#53 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#185)))*{c_2#185 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#54)*{c'_1#54 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#54)*{c'_2#54 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#237))*{iter#237 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#238))*{iter#238 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#256)))))*{c_1#256 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#186)))))*{c_2#186 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#55)*{c'_1#55 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#55)*{c'_2#55 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#42)))*{c'_1#42 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#42)))*{c'_2#42 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#56)))*{c'_1#56 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#56)))*{c'_2#56 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#175*{c_1#175 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#127*{c_2#127 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#43*{c'_1#43 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#176)))*{c_1#176 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#43*{c'_2#43 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#128)))*{c_2#128 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#44)*{c'_1#44 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#44)*{c'_2#44 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#257*{c_1#257 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#187*{c_2#187 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#57*{c'_1#57 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#258)))*{c_1#258 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#57*{c'_2#57 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#188)))*{c_2#188 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#58)*{c'_1#58 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#58)*{c'_2#58 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#239))*{iter#239 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#240))*{iter#240 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#259)))))*{c_1#259 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#189)))))*{c_2#189 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#59)*{c'_1#59 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#59)*{c'_2#59 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#45)))*{c'_1#45 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#45)))*{c'_2#45 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#60)))*{c'_1#60 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#60)))*{c'_2#60 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#177*{c_1#177 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#129*{c_2#129 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#46*{c'_1#46 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#178)))*{c_1#178 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#46*{c'_2#46 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#130)))*{c_2#130 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#47)*{c'_1#47 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#47)*{c'_2#47 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#260*{c_1#260 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#190*{c_2#190 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#61*{c'_1#61 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#261)))*{c_1#261 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#61*{c'_2#61 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#191)))*{c_2#191 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#62)*{c'_1#62 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#62)*{c'_2#62 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#241))*{iter#241 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#242))*{iter#242 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#262)))))*{c_1#262 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#192)))))*{c_2#192 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#63)*{c'_1#63 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#63)*{c'_2#63 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#48)))*{c'_1#48 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#48)))*{c'_2#48 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#64)))*{c'_1#64 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#64)))*{c'_2#64 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i#139349*{i#139349 <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- if ($concat_(syntax N, [j_1#1 j_2#1]*{j_1#1 <- `j_1*`, j_2#1 <- `j_2*`}) = $proj_uN_0(i#139350).0*{i#139350 <- `i*`}) - -- (wf_uN: `%%`(N, `%`_uN(j_1#2)))*{j_1#2 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2#2)))*{j_2#2 <- `j_2*`} + def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i#139344*{i#139344 <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax N, [j_1#1 j_2#1]*{j_1#1 <- `j_1*`, j_2#1 <- `j_2*`}) = $proj_uN_0(i#139345).0*{i#139345 <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#293)*{c#293 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#179*{c_1#179 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#49*{c'_1#49 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#180)))*{c_1#180 <- `c_1*`} - -- let{`c*` : iN*} c#291*{c#291 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#50*{c'_1#50 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#292)))*{c#292 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#213)*{c#213 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#263*{c_1#263 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#65*{c'_1#65 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#264)))*{c_1#264 <- `c_1*`} + -- let{`c*` : iN*} c#212*{c#212 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#66*{c'_1#66 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#243))*{iter#243 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#265)))))*{c_1#265 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#244))*{iter#244 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#67*{c'_1#67 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#296)*{c#296 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#181*{c_1#181 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#51*{c'_1#51 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#182)))*{c_1#182 <- `c_1*`} - -- let{`c*` : iN*} c#294*{c#294 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#52*{c'_1#52 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#295)))*{c#295 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#215)*{c#215 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#266*{c_1#266 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#68*{c'_1#68 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#267)))*{c_1#267 <- `c_1*`} + -- let{`c*` : iN*} c#214*{c#214 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#69*{c'_1#69 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#245))*{iter#245 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#268)))))*{c_1#268 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#246))*{iter#246 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#70*{c'_1#70 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#299)*{c#299 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#183*{c_1#183 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#53*{c'_1#53 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#184)))*{c_1#184 <- `c_1*`} - -- let{`c*` : iN*} c#297*{c#297 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#54*{c'_1#54 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#298)))*{c#298 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#217)*{c#217 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#269*{c_1#269 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#71*{c'_1#71 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#270)))*{c_1#270 <- `c_1*`} + -- let{`c*` : iN*} c#216*{c#216 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#72*{c'_1#72 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#247))*{iter#247 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#271)))))*{c_1#271 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#248))*{iter#248 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#73*{c'_1#73 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#302)*{c#302 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#185*{c_1#185 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#55*{c'_1#55 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#186)))*{c_1#186 <- `c_1*`} - -- let{`c*` : iN*} c#300*{c#300 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#56*{c'_1#56 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#301)))*{c#301 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#219)*{c#219 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#272*{c_1#272 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#74*{c'_1#74 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#273)))*{c_1#273 <- `c_1*`} + -- let{`c*` : iN*} c#218*{c#218 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#75*{c'_1#75 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#249))*{iter#249 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#274)))))*{c_1#274 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#250))*{iter#250 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#76*{c'_1#76 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#305)*{c#305 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#187*{c_1#187 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#57*{c'_1#57 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#188)))*{c_1#188 <- `c_1*`} - -- let{`c*` : iN*} c#303*{c#303 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#58*{c'_1#58 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#304)))*{c#304 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#221)*{c#221 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#275*{c_1#275 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#77*{c'_1#77 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#276)))*{c_1#276 <- `c_1*`} + -- let{`c*` : iN*} c#220*{c#220 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#78*{c'_1#78 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#251))*{iter#251 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#277)))))*{c_1#277 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#252))*{iter#252 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#79*{c'_1#79 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#308)*{c#308 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#189*{c_1#189 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#59*{c'_1#59 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#190)))*{c_1#190 <- `c_1*`} - -- let{`c*` : iN*} c#306*{c#306 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#60*{c'_1#60 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#307)))*{c#307 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#223)*{c#223 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#278*{c_1#278 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#80*{c'_1#80 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#279)))*{c_1#279 <- `c_1*`} + -- let{`c*` : iN*} c#222*{c#222 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#81*{c'_1#81 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#253))*{iter#253 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#280)))))*{c_1#280 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#254))*{iter#254 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#82*{c'_1#82 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#311)*{c#311 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#191*{c_1#191 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#61*{c'_1#61 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#192)))*{c_1#192 <- `c_1*`} - -- let{`c*` : iN*} c#309*{c#309 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#62*{c'_1#62 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#310)))*{c#310 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#225)*{c#225 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#281*{c_1#281 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#83*{c'_1#83 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#282)))*{c_1#282 <- `c_1*`} + -- let{`c*` : iN*} c#224*{c#224 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#84*{c'_1#84 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#255))*{iter#255 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#283)))))*{c_1#283 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#256))*{iter#256 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#85*{c'_1#85 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#314)*{c#314 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#193*{c_1#193 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#63*{c'_1#63 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#194)))*{c_1#194 <- `c_1*`} - -- let{`c*` : iN*} c#312*{c#312 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#64*{c'_1#64 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#313)))*{c#313 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#227)*{c#227 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#284*{c_1#284 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#86*{c'_1#86 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#285)))*{c_1#285 <- `c_1*`} + -- let{`c*` : iN*} c#226*{c#226 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#87*{c'_1#87 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#257))*{iter#257 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#286)))))*{c_1#286 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#258))*{iter#258 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#88*{c'_1#88 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#317)*{c#317 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#195*{c_1#195 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#65*{c'_1#65 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#196)))*{c_1#196 <- `c_1*`} - -- let{`c*` : iN*} c#315*{c#315 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#66*{c'_1#66 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#316)))*{c#316 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#229)*{c#229 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#287*{c_1#287 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#89*{c'_1#89 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#288)))*{c_1#288 <- `c_1*`} + -- let{`c*` : iN*} c#228*{c#228 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#90*{c'_1#90 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#259))*{iter#259 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#289)))))*{c_1#289 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#260))*{iter#260 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#91*{c'_1#91 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#320)*{c#320 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#197*{c_1#197 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#67*{c'_1#67 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#198)))*{c_1#198 <- `c_1*`} - -- let{`c*` : iN*} c#318*{c#318 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#68*{c'_1#68 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#319)))*{c#319 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#231)*{c#231 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#290*{c_1#290 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#92*{c'_1#92 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#291)))*{c_1#291 <- `c_1*`} + -- let{`c*` : iN*} c#230*{c#230 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#93*{c'_1#93 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#261))*{iter#261 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#292)))))*{c_1#292 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#262))*{iter#262 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#94*{c'_1#94 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#323)*{c#323 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#199*{c_1#199 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#69*{c'_1#69 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#200)))*{c_1#200 <- `c_1*`} - -- let{`c*` : iN*} c#321*{c#321 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#70*{c'_1#70 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#322)))*{c#322 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#233)*{c#233 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#293*{c_1#293 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#95*{c'_1#95 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#294)))*{c_1#294 <- `c_1*`} + -- let{`c*` : iN*} c#232*{c#232 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#96*{c'_1#96 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#263))*{iter#263 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#295)))))*{c_1#295 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#264))*{iter#264 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#97*{c'_1#97 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#326)*{c#326 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#201*{c_1#201 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#71*{c'_1#71 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#202)))*{c_1#202 <- `c_1*`} - -- let{`c*` : iN*} c#324*{c#324 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#72*{c'_1#72 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#325)))*{c#325 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#235)*{c#235 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#296*{c_1#296 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#98*{c'_1#98 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#297)))*{c_1#297 <- `c_1*`} + -- let{`c*` : iN*} c#234*{c#234 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#99*{c'_1#99 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#265))*{iter#265 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#298)))))*{c_1#298 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#266))*{iter#266 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#100*{c'_1#100 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#329)*{c#329 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#203*{c_1#203 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#73*{c'_1#73 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#204)))*{c_1#204 <- `c_1*`} - -- let{`c*` : iN*} c#327*{c#327 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#74*{c'_1#74 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#328)))*{c#328 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#237)*{c#237 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#299*{c_1#299 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#101*{c'_1#101 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#300)))*{c_1#300 <- `c_1*`} + -- let{`c*` : iN*} c#236*{c#236 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#102*{c'_1#102 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#267))*{iter#267 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#301)))))*{c_1#301 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#268))*{iter#268 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#103*{c'_1#103 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#332)*{c#332 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#205*{c_1#205 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#75*{c'_1#75 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#206)))*{c_1#206 <- `c_1*`} - -- let{`c*` : iN*} c#330*{c#330 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#76*{c'_1#76 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#331)))*{c#331 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#239)*{c#239 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#302*{c_1#302 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#104*{c'_1#104 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#303)))*{c_1#303 <- `c_1*`} + -- let{`c*` : iN*} c#238*{c#238 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#105*{c'_1#105 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#269))*{iter#269 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#304)))))*{c_1#304 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#270))*{iter#270 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#106*{c'_1#106 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#335)*{c#335 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#207*{c_1#207 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#77*{c'_1#77 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#208)))*{c_1#208 <- `c_1*`} - -- let{`c*` : iN*} c#333*{c#333 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#78*{c'_1#78 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#334)))*{c#334 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#241)*{c#241 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#305*{c_1#305 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#107*{c'_1#107 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#306)))*{c_1#306 <- `c_1*`} + -- let{`c*` : iN*} c#240*{c#240 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#108*{c'_1#108 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#271))*{iter#271 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#307)))))*{c_1#307 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#272))*{iter#272 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#109*{c'_1#109 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#338)*{c#338 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#209*{c_1#209 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#79*{c'_1#79 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#210)))*{c_1#210 <- `c_1*`} - -- let{`c*` : iN*} c#336*{c#336 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#80*{c'_1#80 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#337)))*{c#337 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#243)*{c#243 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#308*{c_1#308 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#110*{c'_1#110 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#309)))*{c_1#309 <- `c_1*`} + -- let{`c*` : iN*} c#242*{c#242 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#111*{c'_1#111 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#273))*{iter#273 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#310)))))*{c_1#310 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#274))*{iter#274 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#112*{c'_1#112 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#1*{i_1#1 <- `i_1*`}, i_2#1*{i_2#1 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- if ($concat_(syntax iN, [j_1#3 j_2#3]*{j_1#3 <- `j_1*`, j_2#3 <- `j_2*`}) = $imul_(N, i_1#2, i_2#2)*{i_1#2 <- `i_1*`, i_2#2 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1#4))*{j_1#4 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2#4))*{j_2#4 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#2 j_2#2]*{j_1#2 <- `j_1*`, j_2#2 <- `j_2*`}) = $imul_(N, i_1#2, i_2#2)*{i_1#2 <- `i_1*`, i_2#2 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#275))*{iter#275 <- $concat_(syntax iN, [j_1#3 j_2#3]*{j_1#3 <- `j_1*`, j_2#3 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#3, i_2#3)))*{i_1#3 <- `i_1*`, i_2#3 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#3*{i_1#3 <- `i_1*`}, i_2#3*{i_2#3 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- if ($concat_(syntax iN, [j_1#5 j_2#5]*{j_1#5 <- `j_1*`, j_2#5 <- `j_2*`}) = $imul_(N, i_1#4, i_2#4)*{i_1#4 <- `i_1*`, i_2#4 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1#6))*{j_1#6 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2#6))*{j_2#6 <- `j_2*`} + def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#4*{i_1#4 <- `i_1*`}, i_2#4*{i_2#4 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#4 j_2#4]*{j_1#4 <- `j_1*`, j_2#4 <- `j_2*`}) = $imul_(N, i_1#5, i_2#5)*{i_1#5 <- `i_1*`, i_2#5 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#276))*{iter#276 <- $concat_(syntax iN, [j_1#5 j_2#5]*{j_1#5 <- `j_1*`, j_2#5 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#6, i_2#6)))*{i_1#6 <- `i_1*`, i_2#6 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#341)*{c#341 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#211*{c_1#211 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#131*{c_2#131 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#81*{c'_1#81 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#212)))*{c_1#212 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#49*{c'_2#49 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#132)))*{c_2#132 <- `c_2*`} - -- let{`c*` : iN*} c#339*{c#339 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#82*{c'_1#82 <- `c'_1*`}, c'_2#50*{c'_2#50 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#340)))*{c#340 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#245)*{c#245 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#311*{c_1#311 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#193*{c_2#193 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#113*{c'_1#113 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#312)))*{c_1#312 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#65*{c'_2#65 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#194)))*{c_2#194 <- `c_2*`} + -- let{`c*` : iN*} c#244*{c#244 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#114*{c'_1#114 <- `c'_1*`}, c'_2#66*{c'_2#66 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#277))*{iter#277 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#278))*{iter#278 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#313)))))*{c_1#313 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#195)))))*{c_2#195 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#279))*{iter#279 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#115*{c'_1#115 <- `c'_1*`}, c'_2#67*{c'_2#67 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#344)*{c#344 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#213*{c_1#213 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#133*{c_2#133 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#83*{c'_1#83 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#214)))*{c_1#214 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#51*{c'_2#51 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#134)))*{c_2#134 <- `c_2*`} - -- let{`c*` : iN*} c#342*{c#342 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#84*{c'_1#84 <- `c'_1*`}, c'_2#52*{c'_2#52 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#343)))*{c#343 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#247)*{c#247 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#314*{c_1#314 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#196*{c_2#196 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#116*{c'_1#116 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#315)))*{c_1#315 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#68*{c'_2#68 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#197)))*{c_2#197 <- `c_2*`} + -- let{`c*` : iN*} c#246*{c#246 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#117*{c'_1#117 <- `c'_1*`}, c'_2#69*{c'_2#69 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#280))*{iter#280 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#281))*{iter#281 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#316)))))*{c_1#316 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#198)))))*{c_2#198 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#282))*{iter#282 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#118*{c'_1#118 <- `c'_1*`}, c'_2#70*{c'_2#70 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#347)*{c#347 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#215*{c_1#215 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#135*{c_2#135 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#85*{c'_1#85 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#216)))*{c_1#216 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#53*{c'_2#53 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#136)))*{c_2#136 <- `c_2*`} - -- let{`c*` : iN*} c#345*{c#345 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#86*{c'_1#86 <- `c'_1*`}, c'_2#54*{c'_2#54 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#346)))*{c#346 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#249)*{c#249 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#317*{c_1#317 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#199*{c_2#199 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#119*{c'_1#119 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#318)))*{c_1#318 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#71*{c'_2#71 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#200)))*{c_2#200 <- `c_2*`} + -- let{`c*` : iN*} c#248*{c#248 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#120*{c'_1#120 <- `c'_1*`}, c'_2#72*{c'_2#72 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#283))*{iter#283 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#284))*{iter#284 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#319)))))*{c_1#319 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#201)))))*{c_2#201 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#285))*{iter#285 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#121*{c'_1#121 <- `c'_1*`}, c'_2#73*{c'_2#73 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#350)*{c#350 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#217*{c_1#217 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#137*{c_2#137 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#87*{c'_1#87 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#218)))*{c_1#218 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#55*{c'_2#55 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#138)))*{c_2#138 <- `c_2*`} - -- let{`c*` : iN*} c#348*{c#348 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#88*{c'_1#88 <- `c'_1*`}, c'_2#56*{c'_2#56 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#349)))*{c#349 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#251)*{c#251 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#320*{c_1#320 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#202*{c_2#202 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#122*{c'_1#122 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#321)))*{c_1#321 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#74*{c'_2#74 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#203)))*{c_2#203 <- `c_2*`} + -- let{`c*` : iN*} c#250*{c#250 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#123*{c'_1#123 <- `c'_1*`}, c'_2#75*{c'_2#75 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#286))*{iter#286 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#287))*{iter#287 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#322)))))*{c_1#322 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#204)))))*{c_2#204 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#288))*{iter#288 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#124*{c'_1#124 <- `c'_1*`}, c'_2#76*{c'_2#76 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#353)*{c#353 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#219*{c_1#219 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#139*{c_2#139 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#89*{c'_1#89 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#220)))*{c_1#220 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#57*{c'_2#57 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#140)))*{c_2#140 <- `c_2*`} - -- let{`c*` : iN*} c#351*{c#351 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#90*{c'_1#90 <- `c'_1*`}, c'_2#58*{c'_2#58 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#352)))*{c#352 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#253)*{c#253 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#323*{c_1#323 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#205*{c_2#205 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#125*{c'_1#125 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#324)))*{c_1#324 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#77*{c'_2#77 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#206)))*{c_2#206 <- `c_2*`} + -- let{`c*` : iN*} c#252*{c#252 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#126*{c'_1#126 <- `c'_1*`}, c'_2#78*{c'_2#78 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#289))*{iter#289 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#290))*{iter#290 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#325)))))*{c_1#325 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#207)))))*{c_2#207 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#291))*{iter#291 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#127*{c'_1#127 <- `c'_1*`}, c'_2#79*{c'_2#79 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#356)*{c#356 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#221*{c_1#221 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#141*{c_2#141 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#91*{c'_1#91 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#222)))*{c_1#222 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#59*{c'_2#59 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#142)))*{c_2#142 <- `c_2*`} - -- let{`c*` : iN*} c#354*{c#354 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#92*{c'_1#92 <- `c'_1*`}, c'_2#60*{c'_2#60 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#355)))*{c#355 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#255)*{c#255 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#326*{c_1#326 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#208*{c_2#208 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#128*{c'_1#128 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#327)))*{c_1#327 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#80*{c'_2#80 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#209)))*{c_2#209 <- `c_2*`} + -- let{`c*` : iN*} c#254*{c#254 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#129*{c'_1#129 <- `c'_1*`}, c'_2#81*{c'_2#81 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#292))*{iter#292 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#293))*{iter#293 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#328)))))*{c_1#328 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#210)))))*{c_2#210 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#294))*{iter#294 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#130*{c'_1#130 <- `c'_1*`}, c'_2#82*{c'_2#82 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#359)*{c#359 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#223*{c_1#223 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#143*{c_2#143 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#93*{c'_1#93 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#224)))*{c_1#224 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#61*{c'_2#61 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#144)))*{c_2#144 <- `c_2*`} - -- let{`c*` : iN*} c#357*{c#357 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#94*{c'_1#94 <- `c'_1*`}, c'_2#62*{c'_2#62 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#358)))*{c#358 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#257)*{c#257 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#329*{c_1#329 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#211*{c_2#211 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#131*{c'_1#131 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#330)))*{c_1#330 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#83*{c'_2#83 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#212)))*{c_2#212 <- `c_2*`} + -- let{`c*` : iN*} c#256*{c#256 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#132*{c'_1#132 <- `c'_1*`}, c'_2#84*{c'_2#84 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#295))*{iter#295 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#296))*{iter#296 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#331)))))*{c_1#331 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#213)))))*{c_2#213 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#297))*{iter#297 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#133*{c'_1#133 <- `c'_1*`}, c'_2#85*{c'_2#85 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#362)*{c#362 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#225*{c_1#225 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#145*{c_2#145 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#95*{c'_1#95 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#226)))*{c_1#226 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#63*{c'_2#63 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#146)))*{c_2#146 <- `c_2*`} - -- let{`c*` : iN*} c#360*{c#360 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#96*{c'_1#96 <- `c'_1*`}, c'_2#64*{c'_2#64 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#361)))*{c#361 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#259)*{c#259 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#332*{c_1#332 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#214*{c_2#214 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#134*{c'_1#134 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#333)))*{c_1#333 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#86*{c'_2#86 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#215)))*{c_2#215 <- `c_2*`} + -- let{`c*` : iN*} c#258*{c#258 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#135*{c'_1#135 <- `c'_1*`}, c'_2#87*{c'_2#87 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#298))*{iter#298 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#299))*{iter#299 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#334)))))*{c_1#334 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#216)))))*{c_2#216 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#300))*{iter#300 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#136*{c'_1#136 <- `c'_1*`}, c'_2#88*{c'_2#88 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#365)*{c#365 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#227*{c_1#227 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#147*{c_2#147 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#97*{c'_1#97 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#228)))*{c_1#228 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#65*{c'_2#65 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#148)))*{c_2#148 <- `c_2*`} - -- let{`c*` : iN*} c#363*{c#363 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#98*{c'_1#98 <- `c'_1*`}, c'_2#66*{c'_2#66 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#364)))*{c#364 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#261)*{c#261 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#335*{c_1#335 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#217*{c_2#217 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#137*{c'_1#137 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#336)))*{c_1#336 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#89*{c'_2#89 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#218)))*{c_2#218 <- `c_2*`} + -- let{`c*` : iN*} c#260*{c#260 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#138*{c'_1#138 <- `c'_1*`}, c'_2#90*{c'_2#90 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#301))*{iter#301 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#302))*{iter#302 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#337)))))*{c_1#337 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#219)))))*{c_2#219 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#303))*{iter#303 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#139*{c'_1#139 <- `c'_1*`}, c'_2#91*{c'_2#91 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#368)*{c#368 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#229*{c_1#229 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#149*{c_2#149 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#99*{c'_1#99 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#230)))*{c_1#230 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#67*{c'_2#67 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#150)))*{c_2#150 <- `c_2*`} - -- let{`c*` : iN*} c#366*{c#366 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#100*{c'_1#100 <- `c'_1*`}, c'_2#68*{c'_2#68 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#367)))*{c#367 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#263)*{c#263 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#338*{c_1#338 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#220*{c_2#220 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#140*{c'_1#140 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#339)))*{c_1#339 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#92*{c'_2#92 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#221)))*{c_2#221 <- `c_2*`} + -- let{`c*` : iN*} c#262*{c#262 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#141*{c'_1#141 <- `c'_1*`}, c'_2#93*{c'_2#93 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#304))*{iter#304 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#305))*{iter#305 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#340)))))*{c_1#340 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#222)))))*{c_2#222 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#306))*{iter#306 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#142*{c'_1#142 <- `c'_1*`}, c'_2#94*{c'_2#94 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#371)*{c#371 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#231*{c_1#231 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#151*{c_2#151 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#101*{c'_1#101 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#232)))*{c_1#232 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#69*{c'_2#69 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#152)))*{c_2#152 <- `c_2*`} - -- let{`c*` : iN*} c#369*{c#369 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#102*{c'_1#102 <- `c'_1*`}, c'_2#70*{c'_2#70 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#370)))*{c#370 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#265)*{c#265 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#341*{c_1#341 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#223*{c_2#223 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#143*{c'_1#143 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#342)))*{c_1#342 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#95*{c'_2#95 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#224)))*{c_2#224 <- `c_2*`} + -- let{`c*` : iN*} c#264*{c#264 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#144*{c'_1#144 <- `c'_1*`}, c'_2#96*{c'_2#96 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#307))*{iter#307 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#308))*{iter#308 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#343)))))*{c_1#343 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#225)))))*{c_2#225 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#309))*{iter#309 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#145*{c'_1#145 <- `c'_1*`}, c'_2#97*{c'_2#97 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#374)*{c#374 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#233*{c_1#233 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#153*{c_2#153 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#103*{c'_1#103 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#234)))*{c_1#234 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#71*{c'_2#71 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#154)))*{c_2#154 <- `c_2*`} - -- let{`c*` : iN*} c#372*{c#372 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#104*{c'_1#104 <- `c'_1*`}, c'_2#72*{c'_2#72 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#373)))*{c#373 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#267)*{c#267 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#344*{c_1#344 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#226*{c_2#226 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#146*{c'_1#146 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#345)))*{c_1#345 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#98*{c'_2#98 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#227)))*{c_2#227 <- `c_2*`} + -- let{`c*` : iN*} c#266*{c#266 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#147*{c'_1#147 <- `c'_1*`}, c'_2#99*{c'_2#99 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#310))*{iter#310 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#311))*{iter#311 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#346)))))*{c_1#346 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#228)))))*{c_2#228 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#312))*{iter#312 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#148*{c'_1#148 <- `c'_1*`}, c'_2#100*{c'_2#100 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#377)*{c#377 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#235*{c_1#235 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#155*{c_2#155 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#105*{c'_1#105 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#236)))*{c_1#236 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#73*{c'_2#73 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#156)))*{c_2#156 <- `c_2*`} - -- let{`c*` : iN*} c#375*{c#375 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#106*{c'_1#106 <- `c'_1*`}, c'_2#74*{c'_2#74 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#376)))*{c#376 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#269)*{c#269 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#347*{c_1#347 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#229*{c_2#229 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#149*{c'_1#149 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#348)))*{c_1#348 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#101*{c'_2#101 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#230)))*{c_2#230 <- `c_2*`} + -- let{`c*` : iN*} c#268*{c#268 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#150*{c'_1#150 <- `c'_1*`}, c'_2#102*{c'_2#102 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#313))*{iter#313 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#314))*{iter#314 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#349)))))*{c_1#349 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#231)))))*{c_2#231 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#315))*{iter#315 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#151*{c'_1#151 <- `c'_1*`}, c'_2#103*{c'_2#103 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#380)*{c#380 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#237*{c_1#237 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#157*{c_2#157 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#107*{c'_1#107 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#238)))*{c_1#238 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#75*{c'_2#75 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#158)))*{c_2#158 <- `c_2*`} - -- let{`c*` : iN*} c#378*{c#378 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#108*{c'_1#108 <- `c'_1*`}, c'_2#76*{c'_2#76 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#379)))*{c#379 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#271)*{c#271 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#350*{c_1#350 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#232*{c_2#232 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#152*{c'_1#152 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#351)))*{c_1#351 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#104*{c'_2#104 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#233)))*{c_2#233 <- `c_2*`} + -- let{`c*` : iN*} c#270*{c#270 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#153*{c'_1#153 <- `c'_1*`}, c'_2#105*{c'_2#105 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#316))*{iter#316 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#317))*{iter#317 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#352)))))*{c_1#352 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#234)))))*{c_2#234 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#318))*{iter#318 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#154*{c'_1#154 <- `c'_1*`}, c'_2#106*{c'_2#106 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#383)*{c#383 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#239*{c_1#239 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#159*{c_2#159 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#109*{c'_1#109 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#240)))*{c_1#240 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#77*{c'_2#77 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#160)))*{c_2#160 <- `c_2*`} - -- let{`c*` : iN*} c#381*{c#381 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#110*{c'_1#110 <- `c'_1*`}, c'_2#78*{c'_2#78 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#382)))*{c#382 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#273)*{c#273 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#353*{c_1#353 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#235*{c_2#235 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#155*{c'_1#155 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#354)))*{c_1#354 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#107*{c'_2#107 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#236)))*{c_2#236 <- `c_2*`} + -- let{`c*` : iN*} c#272*{c#272 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#156*{c'_1#156 <- `c'_1*`}, c'_2#108*{c'_2#108 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#319))*{iter#319 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#320))*{iter#320 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#355)))))*{c_1#355 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#237)))))*{c_2#237 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#321))*{iter#321 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#157*{c'_1#157 <- `c'_1*`}, c'_2#109*{c'_2#109 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#386)*{c#386 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#241*{c_1#241 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#161*{c_2#161 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#111*{c'_1#111 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#242)))*{c_1#242 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#79*{c'_2#79 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#162)))*{c_2#162 <- `c_2*`} - -- let{`c*` : iN*} c#384*{c#384 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#112*{c'_1#112 <- `c'_1*`}, c'_2#80*{c'_2#80 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#385)))*{c#385 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#275)*{c#275 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#356*{c_1#356 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#238*{c_2#238 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#158*{c'_1#158 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#357)))*{c_1#357 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#110*{c'_2#110 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#239)))*{c_2#239 <- `c_2*`} + -- let{`c*` : iN*} c#274*{c#274 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#159*{c'_1#159 <- `c'_1*`}, c'_2#111*{c'_2#111 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#322))*{iter#322 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#323))*{iter#323 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#358)))))*{c_1#358 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#240)))))*{c_2#240 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#324))*{iter#324 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#160*{c'_1#160 <- `c'_1*`}, c'_2#112*{c'_2#112 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivmul_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1#5*{i_1#5 <- `i_1*`}, i_2#5*{i_2#5 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1#7*{i_1#7 <- `i_1*`}, i_2#7*{i_2#7 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ @@ -11033,7 +11664,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#325))*{iter#325 <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11048,7 +11681,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#326))*{iter#326 <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11063,7 +11698,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#327))*{iter#327 <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11078,7 +11715,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#328))*{iter#328 <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11093,7 +11732,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#329))*{iter#329 <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11108,7 +11749,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#330))*{iter#330 <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11123,7 +11766,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#331))*{iter#331 <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11138,7 +11783,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#332))*{iter#332 <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11153,7 +11800,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#333))*{iter#333 <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11168,7 +11817,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#334))*{iter#334 <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11183,7 +11834,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#335))*{iter#335 <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11198,7 +11851,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#336))*{iter#336 <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11213,7 +11868,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#337))*{iter#337 <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11228,7 +11885,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#338))*{iter#338 <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11243,7 +11902,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#339))*{iter#339 <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11258,7 +11919,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#340))*{iter#340 <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11630,13 +12293,22 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval? def $packfield_{val : val}(I32_storagetype, val) = ?((val : val <: fieldval)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation packfield__is_wf: `%%%`(storagetype : storagetype, val : val, ret_val : fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packfield__is_wf0{storagetype : storagetype, val : val, ret_val : fieldval}: + `%%%`(storagetype, val, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_val: `%`(val) + -- if ($packfield_(storagetype, val) =/= ?()) + -- if (ret_val = !($packfield_(storagetype, val))) + -- wf_fieldval: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -11781,13 +12453,22 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? def $unpackfield_{numtype : numtype, var_0 : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation unpackfield__is_wf: `%%%%`(storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule unpackfield__is_wf0{storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val}: + `%%%%`(storagetype, var_0, fieldval, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_fieldval: `%`(fieldval) + -- if ($unpackfield_(storagetype, var_0, fieldval) =/= ?()) + -- if (ret_val = !($unpackfield_(storagetype, var_0, fieldval))) + -- wf_val: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -11858,10 +12539,28 @@ def $store(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $store{s : store, f : frame}(`%;%`_state(s, f)) = s +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation store_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $store(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $frame(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation frame_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $frame(state)) + -- wf_frame: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tagaddr(state : state) : tagaddr* @@ -11873,61 +12572,169 @@ def $moduleinst(state : state) : moduleinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation moduleinst_is_wf: `%%`(state : state, ret_val : moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_is_wf0{state : state, ret_val : moduleinst}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $moduleinst(state)) + -- wf_moduleinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst(state : state) : taginst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation taginst_is_wf: `%%`(state : state, ret_val : taginst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_is_wf0{state : state, ret_val : taginst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $taginst(state)) + -- (wf_taginst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst(state : state) : globalinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation globalinst_is_wf: `%%`(state : state, ret_val : globalinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_is_wf0{state : state, ret_val : globalinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $globalinst(state)) + -- (wf_globalinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst(state : state) : meminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation meminst_is_wf: `%%`(state : state, ret_val : meminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_is_wf0{state : state, ret_val : meminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $meminst(state)) + -- (wf_meminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst(state : state) : tableinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tableinst_is_wf: `%%`(state : state, ret_val : tableinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_is_wf0{state : state, ret_val : tableinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $tableinst(state)) + -- (wf_tableinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst(state : state) : funcinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation funcinst_is_wf: `%%`(state : state, ret_val : funcinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_is_wf0{state : state, ret_val : funcinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $funcinst(state)) + -- (wf_funcinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst(state : state) : datainst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation datainst_is_wf: `%%`(state : state, ret_val : datainst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_is_wf0{state : state, ret_val : datainst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $datainst(state)) + -- (wf_datainst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst(state : state) : eleminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation eleminst_is_wf: `%%`(state : state, ret_val : eleminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_is_wf0{state : state, ret_val : eleminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $eleminst(state)) + -- (wf_eleminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst(state : state) : structinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation structinst_is_wf: `%%`(state : state, ret_val : structinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_is_wf0{state : state, ret_val : structinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $structinst(state)) + -- (wf_structinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst(state : state) : arrayinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation arrayinst_is_wf: `%%`(state : state, ret_val : arrayinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_is_wf0{state : state, ret_val : arrayinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $arrayinst(state)) + -- (wf_arrayinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst(state : state) : exninst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation exninst_is_wf: `%%`(state : state, ret_val : exninst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_is_wf0{state : state, ret_val : exninst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $exninst(state)) + -- (wf_exninst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof{z : state}(z) = $frame(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fof_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fof_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $fof(state)) + -- wf_frame: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -11938,123 +12745,337 @@ def $sof(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $sof{z : state}(z) = $store(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation sof_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule sof_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $sof(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tag_is_wf: `%%%`(state : state, tagidx : tagidx, ret_val : taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tag_is_wf0{state : state, tagidx : tagidx, ret_val : taginst}: + `%%%`(state, tagidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $tag(state, tagidx)) + -- wf_taginst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation global_is_wf: `%%%`(state : state, globalidx : globalidx, ret_val : globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule global_is_wf0{state : state, globalidx : globalidx, ret_val : globalinst}: + `%%%`(state, globalidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $global(state, globalidx)) + -- wf_globalinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation mem_is_wf: `%%%`(state : state, memidx : memidx, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule mem_is_wf0{state : state, memidx : memidx, ret_val : meminst}: + `%%%`(state, memidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $mem(state, memidx)) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation table_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule table_is_wf0{state : state, tableidx : tableidx, ret_val : tableinst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $table(state, tableidx)) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation func_is_wf: `%%%`(state : state, funcidx : funcidx, ret_val : funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule func_is_wf0{state : state, funcidx : funcidx, ret_val : funcinst}: + `%%%`(state, funcidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $func(state, funcidx)) + -- wf_funcinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation data_is_wf: `%%%`(state : state, dataidx : dataidx, ret_val : datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule data_is_wf0{state : state, dataidx : dataidx, ret_val : datainst}: + `%%%`(state, dataidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $data(state, dataidx)) + -- wf_datainst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation elem_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule elem_is_wf0{state : state, tableidx : tableidx, ret_val : eleminst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $elem(state, tableidx)) + -- wf_eleminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[$proj_uN_0(x).0] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation local_is_wf: `%%%`(state : state, localidx : localidx, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule local_is_wf0{state : state, localidx : localidx, ret_val : val?}: + `%%%`(state, localidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $local(state, localidx)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) - -- wf_state: `%`(`%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_local_is_wf: `%%%%`(state : state, localidx : localidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_local_is_wf0{state : state, localidx : localidx, val : val, ret_val : state}: + `%%%%`(state, localidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_local(state, localidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_global_is_wf: `%%%%`(state : state, globalidx : globalidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_global_is_wf0{state : state, globalidx : globalidx, val : val, ret_val : state}: + `%%%%`(state, globalidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_global(state, globalidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_table_is_wf: `%%%%%`(state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_table_is_wf0{state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state}: + `%%%%%`(state, tableidx, nat, ref, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_ref: `%`(ref) + -- if (ret_val = $with_table(state, tableidx, nat, ref)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_tableinst_is_wf: `%%%%`(state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_tableinst_is_wf0{state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state}: + `%%%%`(state, tableidx, tableinst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_tableinst: `%`(tableinst) + -- if (ret_val = $with_tableinst(state, tableidx, tableinst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{z : state, x : uN, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b#1*{b#1 <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b#2*{b#2 <- `b*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_mem_is_wf: `%%%%%%`(state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_mem_is_wf0{state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state}: + `%%%%%%`(state, memidx, nat, nat_0, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_mem(state, memidx, nat, nat_0, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_meminst_is_wf: `%%%%`(state : state, memidx : memidx, meminst : meminst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_meminst_is_wf0{state : state, memidx : memidx, meminst : meminst, ret_val : state}: + `%%%%`(state, memidx, meminst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- wf_meminst: `%`(meminst) + -- if (ret_val = $with_meminst(state, memidx, meminst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{z : state, x : uN, `r*` : ref*}(z, x, r#1*{r#1 <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r#2*{r#2 <- `r*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_elem_is_wf: `%%%%`(state : state, elemidx : elemidx, var_0 : ref*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_elem_is_wf0{state : state, elemidx : elemidx, var_0 : ref*, ret_val : state}: + `%%%%`(state, elemidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, elemidx) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_elem(state, elemidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b#3*{b#3 <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b#4*{b#4 <- `b*`}], $fof(z))) + def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b#2*{b#2 <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_data_is_wf: `%%%%`(state : state, dataidx : dataidx, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_data_is_wf0{state : state, dataidx : dataidx, var_0 : byte*, ret_val : state}: + `%%%%`(state, dataidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_data(state, dataidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_struct_is_wf: `%%%%%`(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_struct_is_wf0{state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, structaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_struct(state, structaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_array_is_wf: `%%%%%`(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_array_is_wf0{state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, arrayaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_array(state, arrayaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{z : state, `si*` : structinst*}(z, si#1*{si#1 <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store =++ si#2*{si#2 <- `si*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_structinst_is_wf: `%%%`(state : state, var_0 : structinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_structinst_is_wf0{state : state, var_0 : structinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_structinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_structinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai#1*{ai#1 <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store =++ ai#2*{ai#2 <- `ai*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_arrayinst_is_wf: `%%%`(state : state, var_0 : arrayinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_arrayinst_is_wf0{state : state, var_0 : arrayinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_arrayinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_arrayinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{z : state, `exn*` : exninst*}(z, exn#1*{exn#1 <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[EXNS_store =++ exn#2*{exn#2 <- `exn*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_exninst_is_wf: `%%%`(state : state, var_0 : exninst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_exninst_is_wf0{state : state, var_0 : exninst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_exninst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_exninst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? @@ -12065,42 +13086,57 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- if ($proj_uN_0(i').0 = (|r'#3*{r'#3 <- `r'*`}| + n)) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#3).0))?{j#3 <- `j?`} -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) - -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#4?{j#4 <- `j?`}), rt), REFS r'#4*{r'#4 <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#5?{j#5 <- `j?`}), rt), REFS r'#5*{r'#5 <- `r'*`} ++ r^n{}}) def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growtable_is_wf: `%%%%`(tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growtable_is_wf0{tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst}: + `%%%%`(tableinst, nat, ref, ret_val) + -- wf_tableinst: `%`(tableinst) + -- wf_ref: `%`(ref) + -- if ($growtable(tableinst, nat, ref) =/= ?()) + -- if (ret_val = !($growtable(tableinst, nat, ref))) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, i' : uN}(meminst, n) = ?(meminst') - -- let{at : addrtype, i : u64, `j?` : u64?, `b*` : byte*} {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#5*{b#5 <- `b*`}} = meminst - -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#6*{b#6 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#7*{b#7 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- let{at : addrtype, i : u64, `j?` : u64?, `b*` : byte*} {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#3*{b#3 <- `b*`}} = meminst + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#4*{b#4 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#5*{b#5 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#8).0))?{j#8 <- `j?`} -- if ($proj_uN_0(i').0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#9?{j#9 <- `j?`})), BYTES b#8*{b#8 <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#10?{j#10 <- `j?`})), BYTES b#9*{b#9 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#9?{j#9 <- `j?`})), BYTES b#6*{b#6 <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#10?{j#10 <- `j?`})), BYTES b#7*{b#7 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growmem_is_wf: `%%%`(meminst : meminst, nat : nat, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growmem_is_wf0{meminst : meminst, nat : nat, ret_val : meminst}: + `%%%`(meminst, nat, ret_val) + -- wf_meminst: `%`(meminst) + -- if ($growmem(meminst, nat) =/= ?()) + -- if (ret_val = !($growmem(meminst, nat))) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -12110,69 +13146,45 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.38 rule null{s : store}: `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.NULL_ADDR`_ref) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.33 rule i31{s : store, i : u31}: `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.I31_NUM`_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) - -- wf_store: `%`(s) -- wf_exninst: `%`(exn) - -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.35 rule host{s : store, a : addr}: `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.HOST_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 rule extern{s : store, ref : ref}: `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.EXTERN`_ref(ref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) @@ -12181,9 +13193,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) -- wf_reftype: `%`(rt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -12194,31 +13203,22 @@ relation Val_ok: `%|-%:%`(store, val, valtype) rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) -- Num_ok: `%|-%:%`(s, num, nt) - -- wf_store: `%`(s) - -- wf_num: `%`(num) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) -- Vec_ok: `%|-%:%`(s, vec, vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Packval_ok: `%|-%:%`(store, packval, packtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, pt : packtype, c : iN}: `%|-%:%`(s, PACK_packval(pt, c), pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(PACK_packval(pt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) @@ -12226,16 +13226,11 @@ relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) rule val{s : store, val : val, t : valtype}: `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule packval{s : store, packval : packval, pt : packtype}: `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) -- Packval_ok: `%|-%:%`(s, packval, pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(packval) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -12247,48 +13242,36 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-111.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:113.1-115.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:117.1-119.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:121.1-123.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:125.1-128.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) -- wf_externtype: `%`(xt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -12298,36 +13281,82 @@ def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_valtype_is_wf: `%%%`(moduleinst : moduleinst, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_valtype_is_wf0{moduleinst : moduleinst, valtype : valtype, ret_val : valtype}: + `%%%`(moduleinst, valtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $inst_valtype(moduleinst, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_reftype_is_wf: `%%%`(moduleinst : moduleinst, reftype : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_reftype_is_wf0{moduleinst : moduleinst, reftype : reftype, ret_val : reftype}: + `%%%`(moduleinst, reftype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_reftype: `%`(reftype) + -- if (ret_val = $inst_reftype(moduleinst, reftype)) + -- wf_reftype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_globaltype_is_wf: `%%%`(moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_globaltype_is_wf0{moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype}: + `%%%`(moduleinst, globaltype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = $inst_globaltype(moduleinst, globaltype)) + -- wf_globaltype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_memtype_is_wf: `%%%`(moduleinst : moduleinst, memtype : memtype, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_memtype_is_wf0{moduleinst : moduleinst, memtype : memtype, ret_val : memtype}: + `%%%`(moduleinst, memtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $inst_memtype(moduleinst, memtype)) + -- wf_memtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_tabletype_is_wf: `%%%`(moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_tabletype_is_wf0{moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype}: + `%%%`(moduleinst, tabletype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = $inst_tabletype(moduleinst, tabletype)) + -- wf_tabletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref}: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12335,274 +13364,183 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) -- if ($proj_uN_0(l).0 = 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) -- if ($proj_uN_0(l).0 > 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) -- if (val =/= `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) -- if (val =/= `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-handler`{n : n, `catch*` : catch*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.tee`{val : val, x : idx}: `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.i31`{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instr: `%`(TRAP_instr) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12610,237 +13548,163 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) -- if (ref_1 = ref_2) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref_1 =/= ref_2) -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{sx : sx}: `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(`REF.I31_NUM`_instr(i)) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new`{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`: `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{ref : ref}: `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) -- if ($unop_(nt, unop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) -- if ($binop_(nt, binop, c_1, c_2) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvunop_(V128_vectype, vvunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) -- if ($vunop_(sh, vunop, c_1) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*}: @@ -12850,64 +13714,48 @@ relation Step_pure: `%~>%`(instr*, instr*) -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), i))*{i <- `i*`} - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} + -- (wf_uN: `%%`(32, $inez_($jsizenn(Jnn), !($proj_lane__2(i)))))*{i <- `i*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_1)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12915,9 +13763,7 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)} -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) @@ -12928,75 +13774,67 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if ($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)|) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_uN: `%%`(32, $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)} + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_2)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextunop__(sh_1, sh_2, vextunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1#3*{t_1#3 <- `t_1*`}), `%`_resulttype(t_2#3*{t_2#3 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1#4*{t_1#4 <- `t_1*`}), [], `%`_resulttype(t_2#4*{t_2#4 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#5*{t_1#5 <- `t_1*`}), `%`_resulttype(t_2#5*{t_2#5 <- `t_2*`}))) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1#2*{t_1#2 <- `t_1*`}), `%`_resulttype(t_2#2*{t_2#2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#3*{t_1#3 <- `t_1*`}), `%`_resulttype(t_2#3*{t_2#3 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t#1?{t#1 <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t#2?{t#2 <- `t?`})))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation blocktype__is_wf: `%%%`(state : state, blocktype : blocktype, ret_val : instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule blocktype__is_wf0{state : state, blocktype : blocktype, ret_val : instrtype}: + `%%%`(state, blocktype, ret_val) + -- wf_state: `%`(state) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $blocktype_(state, blocktype)) + -- wf_instrtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) @@ -13006,8 +13844,7 @@ relation `Step_read_before_br_on_cast-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13018,7 +13855,7 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13026,15 +13863,10 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: @@ -13043,10 +13875,7 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: @@ -13055,9 +13884,7 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) @@ -13066,8 +13893,7 @@ relation `Step_read_before_table.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-zero`: `%`(config) @@ -13077,8 +13903,8 @@ relation `Step_read_before_table.copy-zero`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-le`: `%`(config) @@ -13087,7 +13913,6 @@ relation `Step_read_before_table.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -13095,8 +13920,8 @@ relation `Step_read_before_table.copy-le`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-gt`: `%`(config) @@ -13107,22 +13932,12 @@ relation `Step_read_before_table.copy-gt`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -13130,8 +13945,8 @@ relation `Step_read_before_table.copy-gt`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.init-zero`: `%`(config) @@ -13141,8 +13956,8 @@ relation `Step_read_before_table.init-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.fill-zero`: `%`(config) @@ -13151,8 +13966,7 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-zero`: `%`(config) @@ -13162,8 +13976,8 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-le`: `%`(config) @@ -13172,7 +13986,6 @@ relation `Step_read_before_memory.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -13180,8 +13993,8 @@ relation `Step_read_before_memory.copy-le`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.init-zero`: `%`(config) @@ -13191,8 +14004,8 @@ relation `Step_read_before_memory.init-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_ref.test-false`: `%`(config) @@ -13202,8 +14015,7 @@ relation `Step_read_before_ref.test-false`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13214,7 +14026,7 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13225,8 +14037,23 @@ relation `Step_read_before_array.fill-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-zero`: `%`(config) @@ -13236,8 +14063,7 @@ relation `Step_read_before_array.copy-zero`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13245,8 +14071,7 @@ relation `Step_read_before_array.copy-zero`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-le`: `%`(config) @@ -13255,7 +14080,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13263,8 +14087,7 @@ relation `Step_read_before_array.copy-le`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13272,8 +14095,7 @@ relation `Step_read_before_array.copy-le`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-gt`: `%`(config) @@ -13286,17 +14108,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if ($sx(zt_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13304,7 +14115,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13312,8 +14122,7 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13321,8 +14130,7 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_elem-zero`: `%`(config) @@ -13331,8 +14139,7 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -13340,8 +14147,30 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-zero`: `%`(config) @@ -13352,8 +14181,7 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- if ($proj_num__0(j) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13362,8 +14190,7 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-num`: `%`(config) @@ -13372,7 +14199,6 @@ relation `Step_read_before_array.init_data-num`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: @@ -13381,8 +14207,7 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- if ($proj_num__0(j) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13391,8 +14216,7 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) @@ -13400,16 +14224,14 @@ relation Step_read: `%~>%`(config, instr*) rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13418,15 +14240,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: @@ -13434,15 +14254,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: @@ -13450,15 +14268,11 @@ relation Step_read: `%~>%`(config, instr*) -- if (a < |$funcinst(z)|) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, yy : typeuse}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: @@ -13469,8 +14283,7 @@ relation Step_read: `%~>%`(config, instr*) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- (if ($default_(t) =/= ?()))*{t <- `t*`} -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) @@ -13481,72 +14294,48 @@ relation Step_read: `%~>%`(config, instr*) -- if (a < |$funcinst(z)|) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: @@ -13555,9 +14344,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: @@ -13566,75 +14353,60 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($local(z, x) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) + -- (wf_val: `%`(iter))?{iter <- $local(z, x)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `global.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($global(z, x).VALUE_globalinst = val) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) + -- wf_globalinst: `%`($global(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0] : ref <: instr)]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) - -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tableinst: `%`($table(z, x)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13642,8 +14414,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: @@ -13651,7 +14422,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: @@ -13659,12 +14429,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (n =/= 0) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -13672,15 +14436,14 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: @@ -13689,15 +14452,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_2) =/= ?()) -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: @@ -13705,15 +14459,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -13721,8 +14466,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -13731,7 +14476,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -13741,69 +14485,58 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, Jnn : Jnn}: @@ -13811,8 +14544,9 @@ relation Step_read: `%~>%`(config, instr*) -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: @@ -13832,8 +14565,9 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) @@ -13842,8 +14576,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: @@ -13852,16 +14585,16 @@ relation Step_read: `%~>%`(config, instr*) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: @@ -13871,8 +14604,10 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, k)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) @@ -13881,8 +14616,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) - -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_meminst: `%`($mem(z, x)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13890,8 +14624,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: @@ -13899,7 +14632,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: @@ -13907,12 +14639,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (n =/= 0) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -13920,8 +14646,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -13930,7 +14656,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -13940,15 +14665,6 @@ relation Step_read: `%~>%`(config, instr*) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -13958,15 +14674,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -13974,8 +14681,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -13984,7 +14691,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -13994,27 +14700,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL`_instr(ht)])) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -14022,16 +14716,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -14039,15 +14730,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: @@ -14056,16 +14745,13 @@ relation Step_read: `%~>%`(config, instr*) -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) =/= ?()))*{zt <- `zt*`} -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))}*{zt <- `zt*`} + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -14075,7 +14761,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) -- if (a < |$structinst(z)|) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14084,9 +14769,8 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) =/= ?()) -- if (!($default_($unpack(zt))) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))} + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14094,17 +14778,14 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: @@ -14113,8 +14794,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14125,16 +14805,14 @@ relation Step_read: `%~>%`(config, instr*) -- if ($zsize(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_byte: `%`(iter))*{iter <- $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))} + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)}^n{c <- `c*`} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: @@ -14142,8 +14820,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: @@ -14153,27 +14830,20 @@ relation Step_read: `%~>%`(config, instr*) -- if (a < |$arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) -- if (a < |$arrayinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: @@ -14181,44 +14851,27 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- if (n =/= 0) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -14226,8 +14879,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -14235,45 +14887,23 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), []) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if (n =/= 0) - -- if (a_2 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- if (a_1 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ($sx(zt_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14285,24 +14915,11 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ($sx(zt_2) =/= ?()) -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14310,54 +14927,34 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), []) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- if (n =/= 0) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14365,8 +14962,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: @@ -14375,8 +14971,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14384,7 +14979,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), []) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: @@ -14396,15 +14990,8 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14416,23 +15003,18 @@ relation Step: `%~>%`(config, config) rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -14440,8 +15022,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -14449,8 +15029,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -14458,8 +15036,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) @@ -14471,82 +15047,69 @@ relation Step: `%~>%`(config, config) -- if (a = |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_taginst: `%`($tag(z, x)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 rule `local.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:322.1-323.58 rule `global.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:340.1-342.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-354.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_tableinst: `%`(!($growtable($table(z, x), n, ref))) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:356.1-357.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:417.1-418.51 rule `elem.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:501.1-504.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:506.1-510.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: @@ -14554,32 +15117,29 @@ relation Step: `%~>%`(config, config) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))} + -- wf_uN: `%%`(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-531.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:534.1-537.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-544.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: @@ -14590,8 +15150,7 @@ relation Step: `%~>%`(config, config) -- if ($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))} -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:553.1-556.37 @@ -14599,20 +15158,16 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_meminst: `%`(!($growmem($mem(z, x), n))) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:558.1-559.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:619.1-620.51 rule `data.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:700.1-704.65 rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: @@ -14621,16 +15176,13 @@ relation Step: `%~>%`(config, config) -- if (a = |$structinst(z)|) -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`, zt <- `zt*`} -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:721.1-722.55 rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:724.1-727.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -14638,8 +15190,6 @@ relation Step: `%~>%`(config, config) -- if ($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val) =/= ?()) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:740.1-745.65 @@ -14648,16 +15198,13 @@ relation Step: `%~>%`(config, config) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`} -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-786.66 rule `array.set-null`{z : state, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:788.1-790.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: @@ -14665,8 +15212,7 @@ relation Step: `%~>%`(config, config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-795.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: @@ -14674,8 +15220,6 @@ relation Step: `%~>%`(config, config) -- if ($proj_num__0(i) =/= ?()) -- if ($packfield_(zt, val) =/= ?()) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -14687,7 +15231,6 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: @@ -14695,8 +15238,8 @@ relation Steps: `%~>*%`(config, config) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14729,9 +15272,18 @@ def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) -- if (taginst = {TYPE tagtype}) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_taginst: `%`({TYPE tagtype}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctag_is_wf: `%%%`(store : store, tagtype : tagtype, ret_val : (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctag_is_wf0{store : store, tagtype : tagtype, ret_val : (store, tagaddr)}: + `%%%`(store, tagtype, ret_val) + -- wf_store: `%`(store) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = $alloctag(store, tagtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14743,6 +15295,22 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*}(s, [tagtype] ++ tagtype'#1*{tagtype'#1 <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- let{ja : tagaddr, s_1 : store} (s_1, ja) = $alloctag(s, tagtype) -- let{s_2 : store, `ja'*` : tagaddr*} (s_2, ja'#1*{ja'#1 <- `ja'*`}) = $alloctags(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}) + -- wf_store: `%`($alloctag(s, tagtype).0) + -- wf_store: `%`($alloctags(s_1, tagtype'#3*{tagtype'#3 <- `tagtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation alloctags_is_wf: `%%%`(store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule alloctags_is_wf0{store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_typeuse: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $alloctags(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14750,9 +15318,19 @@ def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, gl ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) -- if (globalinst = {TYPE globaltype, VALUE val}) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocglobal_is_wf: `%%%%`(store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocglobal_is_wf0{store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)}: + `%%%%`(store, globaltype, val, ret_val) + -- wf_store: `%`(store) + -- wf_globaltype: `%`(globaltype) + -- wf_val: `%`(val) + -- if (ret_val = $allocglobal(store, globaltype, val)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14764,6 +15342,23 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*}(s, [globaltype] ++ globaltype'#1*{globaltype'#1 <- `globaltype'*`}, [val] ++ val'#1*{val'#1 <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- let{ga : globaladdr, s_1 : store} (s_1, ga) = $allocglobal(s, globaltype, val) -- let{s_2 : store, `ga'*` : globaladdr*} (s_2, ga'#1*{ga'#1 <- `ga'*`}) = $allocglobals(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}) + -- wf_store: `%`($allocglobal(s, globaltype, val).0) + -- wf_store: `%`($allocglobals(s_1, globaltype'#3*{globaltype'#3 <- `globaltype'*`}, val'#3*{val'#3 <- `val'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation allocglobals_is_wf: `%%%%`(store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule allocglobals_is_wf0{store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $allocglobals(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14771,9 +15366,18 @@ def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#11?{j#11 <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#12?{j#12 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#13?{j#13 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmem_is_wf: `%%%`(store : store, memtype : memtype, ret_val : (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmem_is_wf0{store : store, memtype : memtype, ret_val : (store, memaddr)}: + `%%%`(store, memtype, ret_val) + -- wf_store: `%`(store) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $allocmem(store, memtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14785,6 +15389,22 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*}(s, [memtype] ++ memtype'#1*{memtype'#1 <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- let{ma : memaddr, s_1 : store} (s_1, ma) = $allocmem(s, memtype) -- let{s_2 : store, `ma'*` : memaddr*} (s_2, ma'#1*{ma'#1 <- `ma'*`}) = $allocmems(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}) + -- wf_store: `%`($allocmem(s, memtype).0) + -- wf_store: `%`($allocmems(s_1, memtype'#3*{memtype'#3 <- `memtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation allocmems_is_wf: `%%%`(store : store, var_0 : memtype*, ret_val : (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule allocmems_is_wf0{store : store, var_0 : memtype*, ret_val : (store, memaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_memtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocmems(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14792,9 +15412,19 @@ def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, table ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j#14?{j#14 <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#15?{j#15 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#16?{j#16 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctable_is_wf: `%%%%`(store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctable_is_wf0{store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)}: + `%%%%`(store, tabletype, ref, ret_val) + -- wf_store: `%`(store) + -- wf_tabletype: `%`(tabletype) + -- wf_ref: `%`(ref) + -- if (ret_val = $alloctable(store, tabletype, ref)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14806,6 +15436,23 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*}(s, [tabletype] ++ tabletype'#1*{tabletype'#1 <- `tabletype'*`}, [ref] ++ ref'#1*{ref'#1 <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- let{ta : tableaddr, s_1 : store} (s_1, ta) = $alloctable(s, tabletype, ref) -- let{s_2 : store, `ta'*` : tableaddr*} (s_2, ta'#1*{ta'#1 <- `ta'*`}) = $alloctables(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}) + -- wf_store: `%`($alloctable(s, tabletype, ref).0) + -- wf_store: `%`($alloctables(s_1, tabletype'#3*{tabletype'#3 <- `tabletype'*`}, ref'#3*{ref'#3 <- `ref'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation alloctables_is_wf: `%%%%`(store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule alloctables_is_wf0{store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_tabletype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $alloctables(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14813,9 +15460,19 @@ def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocfunc_is_wf: `%%%%%`(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocfunc_is_wf0{store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)}: + `%%%%%`(store, deftype, funccode, moduleinst, ret_val) + -- wf_store: `%`(store) + -- wf_funccode: `%`(funccode) + -- wf_moduleinst: `%`(moduleinst) + -- if (ret_val = $allocfunc(store, deftype, funccode, moduleinst)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14827,6 +15484,23 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*}(s, [dt] ++ dt'#3*{dt'#3 <- `dt'*`}, [funccode] ++ funccode'#1*{funccode'#1 <- `funccode'*`}, [moduleinst] ++ moduleinst'#1*{moduleinst'#1 <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- let{fa : funcaddr, s_1 : store} (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) -- let{s_2 : store, `fa'*` : funcaddr*} (s_2, fa'#1*{fa'#1 <- `fa'*`}) = $allocfuncs(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}) + -- wf_store: `%`($allocfunc(s, dt, funccode, moduleinst).0) + -- wf_store: `%`($allocfuncs(s_1, dt'#5*{dt'#5 <- `dt'*`}, funccode'#3*{funccode'#3 <- `funccode'*`}, moduleinst'#3*{moduleinst'#3 <- `moduleinst'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation allocfuncs_is_wf: `%%%%%`(store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule allocfuncs_is_wf0{store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)}: + `%%%%%`(store, var_0, var_1, var_2, ret_val) + -- wf_store: `%`(store) + -- (wf_funccode: `%`(var_1))*{var_1 <- var_1} + -- (wf_moduleinst: `%`(var_2))*{var_2 <- var_2} + -- if (ret_val = $allocfuncs(store, var_0, var_1, var_2)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14834,9 +15508,18 @@ def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte#2*{byte#2 <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) -- if (datainst = {BYTES byte#3*{byte#3 <- `byte*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_datainst: `%`({BYTES byte#4*{byte#4 <- `byte*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocdata_is_wf: `%%%%`(store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocdata_is_wf0{store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)}: + `%%%%`(store, datatype, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocdata(store, datatype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14845,9 +15528,25 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 - def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**}(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#10*{b#10 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) - -- let{da : dataaddr, s_1 : store} (s_1, da) = $allocdata(s, ok, b#11*{b#11 <- `b*`}) + def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**}(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#8*{b#8 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- let{da : dataaddr, s_1 : store} (s_1, da) = $allocdata(s, ok, b#9*{b#9 <- `b*`}) -- let{s_2 : store, `da'*` : dataaddr*} (s_2, da'#1*{da'#1 <- `da'*`}) = $allocdatas(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}) + -- wf_store: `%`($allocdata(s, ok, b#10*{b#10 <- `b*`}).0) + -- wf_store: `%`($allocdatas(s_1, ok'#3*{ok'#3 <- `ok'*`}, b'#3*{b'#3 <- `b'*#3`}*{`b'*#3` <- `b'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation allocdatas_is_wf: `%%%%`(store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule allocdatas_is_wf0{store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocdatas(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14855,9 +15554,19 @@ def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref#1*{ref#1 <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) -- if (eleminst = {TYPE elemtype, REFS ref#2*{ref#2 <- `ref*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) -- wf_eleminst: `%`({TYPE elemtype, REFS ref#3*{ref#3 <- `ref*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocelem_is_wf: `%%%%`(store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocelem_is_wf0{store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)}: + `%%%%`(store, elemtype, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_reftype: `%`(elemtype) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocelem(store, elemtype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14866,46 +15575,78 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 - def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**}(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#3*{ref'#3 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**}(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#4*{ref'#4 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- let{ea : elemaddr, s_1 : store} (s_1, ea) = $allocelem(s, rt, ref#5*{ref#5 <- `ref*`}) - -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'#1*{ea'#1 <- `ea'*`}) = $allocelems(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#4*{ref'#4 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}) + -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'#1*{ea'#1 <- `ea'*`}) = $allocelems(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#5*{ref'#5 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}) + -- wf_store: `%`($allocelem(s, rt, ref#6*{ref#6 <- `ref*`}).0) + -- wf_store: `%`($allocelems(s_1, rt'#3*{rt'#3 <- `rt'*`}, ref'#6*{ref'#6 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation allocelems_is_wf: `%%%%`(store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule allocelems_is_wf0{store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_reftype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocelems(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexport_is_wf: `%%%`(moduleinst : moduleinst, export : export, ret_val : exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexport_is_wf0{moduleinst : moduleinst, export : export, ret_val : exportinst}: + `%%%`(moduleinst, export, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_export: `%`(export) + -- if (ret_val = $allocexport(moduleinst, export)) + -- wf_exportinst: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export#4*{export#4 <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export#3*{export#3 <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexports_is_wf: `%%%`(moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexports_is_wf0{moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*}: + `%%%`(moduleinst, var_0, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- (wf_export: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocexports(moduleinst, var_0)) + -- (wf_exportinst: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `xi*` : exportinst*}(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}) = (s_7, moduleinst) - -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#2*{type#2 <- `type*`}), `%`_list(import#2*{import#2 <- `import*`}), `%`_list(tag#2*{tag#2 <- `tag*`}), `%`_list(global#4*{global#4 <- `global*`}), `%`_list(mem#4*{mem#4 <- `mem*`}), `%`_list(table#4*{table#4 <- `table*`}), `%`_list(func#3*{func#3 <- `func*`}), `%`_list(data#2*{data#2 <- `data*`}), `%`_list(elem#4*{elem#4 <- `elem*`}), start#4?{start#4 <- `start?`}, `%`_list(export#5*{export#5 <- `export*`})) = module + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#2*{type#2 <- `type*`}), `%`_list(import#2*{import#2 <- `import*`}), `%`_list(tag#2*{tag#2 <- `tag*`}), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list(func#3*{func#3 <- `func*`}), `%`_list(data#2*{data#2 <- `data*`}), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#4*{export#4 <- `export*`})) = module -- if (tag#3*{tag#3 <- `tag*`} = TAG_tag(tagtype#78)*{tagtype#78 <- `tagtype*`}) - -- if (global#5*{global#5 <- `global*`} = GLOBAL_global(globaltype#122, expr_G#1)*{expr_G#1 <- `expr_G*`, globaltype#122 <- `globaltype*`}) - -- if (mem#5*{mem#5 <- `mem*`} = MEMORY_mem(memtype#122)*{memtype#122 <- `memtype*`}) - -- if (table#5*{table#5 <- `table*`} = TABLE_table(tabletype#156, expr_T#1)*{expr_T#1 <- `expr_T*`, tabletype#156 <- `tabletype*`}) + -- if (global#4*{global#4 <- `global*`} = GLOBAL_global(globaltype#122, expr_G#1)*{expr_G#1 <- `expr_G*`, globaltype#122 <- `globaltype*`}) + -- if (mem#4*{mem#4 <- `mem*`} = MEMORY_mem(memtype#122)*{memtype#122 <- `memtype*`}) + -- if (table#4*{table#4 <- `table*`} = TABLE_table(tabletype#156, expr_T#1)*{expr_T#1 <- `expr_T*`, tabletype#156 <- `tabletype*`}) -- if (func#4*{func#4 <- `func*`} = FUNC_func(x#2, local#2*{local#2 <- `local*#82`}, expr_F#1)*{expr_F#1 <- `expr_F*`, `local*#82` <- `local**`, x#2 <- `x*`}) -- if (data#3*{data#3 <- `data*`} = DATA_data(byte#5*{byte#5 <- `byte*#110`}, datamode#110)*{`byte*#110` <- `byte**`, datamode#110 <- `datamode*`}) - -- if (elem#5*{elem#5 <- `elem*`} = ELEM_elem(elemtype#1, expr_E#1*{expr_E#1 <- `expr_E*#1`}, elemmode#230)*{elemmode#230 <- `elemmode*`, elemtype#1 <- `elemtype*`, `expr_E*#1` <- `expr_E**`}) + -- if (elem#4*{elem#4 <- `elem*`} = ELEM_elem(elemtype#1, expr_E#1*{expr_E#1 <- `expr_E*#1`}, elemmode#230)*{elemmode#230 <- `elemmode*`, elemtype#1 <- `elemtype*`, `expr_E*#1` <- `expr_E**`}) -- let{`aa_I*` : tagaddr*} aa_I#1*{aa_I#1 <- `aa_I*`} = $tagsxa(externaddr#2*{externaddr#2 <- `externaddr*`}) -- let{`ga_I*` : globaladdr*} ga_I#1*{ga_I#1 <- `ga_I*`} = $globalsxa(externaddr#3*{externaddr#3 <- `externaddr*`}) -- let{`ma_I*` : memaddr*} ma_I#1*{ma_I#1 <- `ma_I*`} = $memsxa(externaddr#4*{externaddr#4 <- `externaddr*`}) @@ -14920,31 +15661,62 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- let{s_5 : store, `da*` : dataaddr*} (s_5, da#1*{da#1 <- `da*`}) = $allocdatas(s_4, OK_datatype^|data#4*{data#4 <- `data*`}|{}, byte#6*{byte#6 <- `byte*#112`}*{`byte*#112` <- `byte**`}) -- let{s_6 : store, `ea*` : elemaddr*} (s_6, ea#1*{ea#1 <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype#2, (dt#13 : deftype <: typeuse)*{dt#13 <- `dt*`})*{elemtype#2 <- `elemtype*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}) -- if ((s_7, fa#2*{fa#2 <- `fa*`}) = $allocfuncs(s_6, dt#14*{dt#14 <- `dt*`}[$proj_uN_0(x#3).0]*{x#3 <- `x*`}, FUNC_funccode(x#4, local#3*{local#3 <- `local*#84`}, expr_F#2)*{expr_F#2 <- `expr_F*`, `local*#84` <- `local**`, x#4 <- `x*`}, moduleinst^|func#6*{func#6 <- `func*`}|{})) - -- if (xi#1*{xi#1 <- `xi*`} = $allocexports({TYPES [], TAGS aa_I#2*{aa_I#2 <- `aa_I*`} ++ aa#2*{aa#2 <- `aa*`}, GLOBALS ga_I#2*{ga_I#2 <- `ga_I*`} ++ ga#2*{ga#2 <- `ga*`}, MEMS ma_I#2*{ma_I#2 <- `ma_I*`} ++ ma#2*{ma#2 <- `ma*`}, TABLES ta_I#2*{ta_I#2 <- `ta_I*`} ++ ta#2*{ta#2 <- `ta*`}, FUNCS fa_I#2*{fa_I#2 <- `fa_I*`} ++ fa#3*{fa#3 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#6*{export#6 <- `export*`})) + -- if (xi#1*{xi#1 <- `xi*`} = $allocexports({TYPES [], TAGS aa_I#2*{aa_I#2 <- `aa_I*`} ++ aa#2*{aa#2 <- `aa*`}, GLOBALS ga_I#2*{ga_I#2 <- `ga_I*`} ++ ga#2*{ga#2 <- `ga*`}, MEMS ma_I#2*{ma_I#2 <- `ma_I*`} ++ ma#2*{ma#2 <- `ma*`}, TABLES ta_I#2*{ta_I#2 <- `ta_I*`} ++ ta#2*{ta#2 <- `ta*`}, FUNCS fa_I#2*{fa_I#2 <- `fa_I*`} ++ fa#3*{fa#3 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#5*{export#5 <- `export*`})) -- if (moduleinst = {TYPES dt#15*{dt#15 <- `dt*`}, TAGS aa_I#3*{aa_I#3 <- `aa_I*`} ++ aa#3*{aa#3 <- `aa*`}, GLOBALS ga_I#3*{ga_I#3 <- `ga_I*`} ++ ga#3*{ga#3 <- `ga*`}, MEMS ma_I#3*{ma_I#3 <- `ma_I*`} ++ ma#3*{ma#3 <- `ma*`}, TABLES ta_I#3*{ta_I#3 <- `ta_I*`} ++ ta#3*{ta#3 <- `ta*`}, FUNCS fa_I#3*{fa_I#3 <- `fa_I*`} ++ fa#4*{fa#4 <- `fa*`}, DATAS da#2*{da#2 <- `da*`}, ELEMS ea#2*{ea#2 <- `ea*`}, EXPORTS xi#2*{xi#2 <- `xi*`}}) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) - -- wf_module: `%`(MODULE_module(`%`_list(type#4*{type#4 <- `type*`}), `%`_list(import#3*{import#3 <- `import*`}), `%`_list(tag#4*{tag#4 <- `tag*`}), `%`_list(global#6*{global#6 <- `global*`}), `%`_list(mem#6*{mem#6 <- `mem*`}), `%`_list(table#6*{table#6 <- `table*`}), `%`_list(func#7*{func#7 <- `func*`}), `%`_list(data#5*{data#5 <- `data*`}), `%`_list(elem#6*{elem#6 <- `elem*`}), start#5?{start#5 <- `start?`}, `%`_list(export#7*{export#7 <- `export*`}))) - -- (wf_tag: `%`(TAG_tag(tagtype#81)))*{tagtype#81 <- `tagtype*`} - -- (wf_global: `%`(GLOBAL_global(globaltype#125, expr_G#2)))*{expr_G#2 <- `expr_G*`, globaltype#125 <- `globaltype*`} - -- (wf_mem: `%`(MEMORY_mem(memtype#125)))*{memtype#125 <- `memtype*`} - -- (wf_table: `%`(TABLE_table(tabletype#159, expr_T#2)))*{expr_T#2 <- `expr_T*`, tabletype#159 <- `tabletype*`} - -- (wf_func: `%`(FUNC_func(x#5, local#4*{local#4 <- `local*#85`}, expr_F#3)))*{expr_F#3 <- `expr_F*`, `local*#85` <- `local**`, x#5 <- `x*`} - -- (wf_data: `%`(DATA_data(byte#7*{byte#7 <- `byte*#113`}, datamode#112)))*{`byte*#113` <- `byte**`, datamode#112 <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(elemtype#3, expr_E#2*{expr_E#2 <- `expr_E*#2`}, elemmode#232)))*{elemmode#232 <- `elemmode*`, elemtype#3 <- `elemtype*`, `expr_E*#2` <- `expr_E**`} - -- wf_moduleinst: `%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_moduleinst: `%`({TYPES dt#16*{dt#16 <- `dt*`}, TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) + -- wf_store: `%`($alloctags(s, $subst_all_tagtype(tagtype#81, (dt#16 : deftype <: typeuse)*{dt#16 <- `dt*`})*{tagtype#81 <- `tagtype*`}).0) + -- (wf_typeuse: `%`($subst_all_tagtype(tagtype#82, (dt#17 : deftype <: typeuse)*{dt#17 <- `dt*`})))*{tagtype#82 <- `tagtype*`} + -- wf_store: `%`($allocglobals(s_1, $subst_all_globaltype(globaltype#125, (dt#18 : deftype <: typeuse)*{dt#18 <- `dt*`})*{globaltype#125 <- `globaltype*`}, val_G#3*{val_G#3 <- `val_G*`}).0) + -- (wf_globaltype: `%`($subst_all_globaltype(globaltype#126, (dt#19 : deftype <: typeuse)*{dt#19 <- `dt*`})))*{globaltype#126 <- `globaltype*`} + -- wf_store: `%`($allocmems(s_2, $subst_all_memtype(memtype#125, (dt#20 : deftype <: typeuse)*{dt#20 <- `dt*`})*{memtype#125 <- `memtype*`}).0) + -- (wf_memtype: `%`($subst_all_memtype(memtype#126, (dt#21 : deftype <: typeuse)*{dt#21 <- `dt*`})))*{memtype#126 <- `memtype*`} + -- wf_store: `%`($alloctables(s_3, $subst_all_tabletype(tabletype#159, (dt#22 : deftype <: typeuse)*{dt#22 <- `dt*`})*{tabletype#159 <- `tabletype*`}, ref_T#3*{ref_T#3 <- `ref_T*`}).0) + -- (wf_tabletype: `%`($subst_all_tabletype(tabletype#160, (dt#23 : deftype <: typeuse)*{dt#23 <- `dt*`})))*{tabletype#160 <- `tabletype*`} + -- wf_store: `%`($allocdatas(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#113`}*{`byte*#113` <- `byte**`}).0) + -- wf_store: `%`($allocelems(s_5, $subst_all_reftype(elemtype#3, (dt#24 : deftype <: typeuse)*{dt#24 <- `dt*`})*{elemtype#3 <- `elemtype*`}, ref_E#3*{ref_E#3 <- `ref_E*#3`}*{`ref_E*#3` <- `ref_E**`}).0) + -- (wf_reftype: `%`($subst_all_reftype(elemtype#4, (dt#25 : deftype <: typeuse)*{dt#25 <- `dt*`})))*{elemtype#4 <- `elemtype*`} + -- wf_store: `%`($allocfuncs(s_6, dt#26*{dt#26 <- `dt*`}[$proj_uN_0(x#5).0]*{x#5 <- `x*`}, FUNC_funccode(x#6, local#4*{local#4 <- `local*#85`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#85` <- `local**`, x#6 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}).0) + -- (wf_exportinst: `%`(iter#341))*{iter#341 <- $allocexports({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#6*{export#6 <- `export*`})} + -- wf_module: `%`(MODULE_module(`%`_list(type#4*{type#4 <- `type*`}), `%`_list(import#3*{import#3 <- `import*`}), `%`_list(tag#4*{tag#4 <- `tag*`}), `%`_list(global#5*{global#5 <- `global*`}), `%`_list(mem#5*{mem#5 <- `mem*`}), `%`_list(table#5*{table#5 <- `table*`}), `%`_list(func#8*{func#8 <- `func*`}), `%`_list(data#6*{data#6 <- `data*`}), `%`_list(elem#5*{elem#5 <- `elem*`}), start#4?{start#4 <- `start?`}, `%`_list(export#7*{export#7 <- `export*`}))) + -- (wf_tag: `%`(TAG_tag(tagtype#83)))*{tagtype#83 <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype#127, expr_G#2)))*{expr_G#2 <- `expr_G*`, globaltype#127 <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype#127)))*{memtype#127 <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype#161, expr_T#2)))*{expr_T#2 <- `expr_T*`, tabletype#161 <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x#7, local#5*{local#5 <- `local*#86`}, expr_F#4)))*{expr_F#4 <- `expr_F*`, `local*#86` <- `local**`, x#7 <- `x*`} + -- (wf_data: `%`(DATA_data(byte#8*{byte#8 <- `byte*#114`}, datamode#112)))*{`byte*#114` <- `byte**`, datamode#112 <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype#5, expr_E#2*{expr_E#2 <- `expr_E*#2`}, elemmode#232)))*{elemmode#232 <- `elemmode*`, elemtype#5 <- `elemtype*`, `expr_E*#2` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt#27*{dt#27 <- `dt*`}, TAGS aa_I#6*{aa_I#6 <- `aa_I*`} ++ aa#6*{aa#6 <- `aa*`}, GLOBALS ga_I#6*{ga_I#6 <- `ga_I*`} ++ ga#6*{ga#6 <- `ga*`}, MEMS ma_I#6*{ma_I#6 <- `ma_I*`} ++ ma#6*{ma#6 <- `ma*`}, TABLES ta_I#6*{ta_I#6 <- `ta_I*`} ++ ta#6*{ta#6 <- `ta*`}, FUNCS fa_I#6*{fa_I#6 <- `fa_I*`} ++ fa#7*{fa#7 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmodule_is_wf: `%%%%%%%`(store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmodule_is_wf0{store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)}: + `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- (wf_ref: `%`(var_2))*{var_2 <- var_2} + -- (wf_ref: `%`(var_3))*{var_3 <- var_3}*{var_3 <- var_3} + -- if (ret_val = $allocmodule(store, module, var_0, var_1, var_2, var_3)) + -- wf_store: `%`(ret_val.0) + -- wf_moduleinst: `%`(ret_val.1) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_(dataidx : dataidx, data : data) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, n : nat, `b*` : byte*}(x, DATA_data(b#12^n{b#12 <- `b*`}, PASSIVE_datamode)) = [] + def $rundata_{x : uN, n : nat, `b*` : byte*}(x, DATA_data(b#11^n{b#11 <- `b*`}, PASSIVE_datamode)) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}(x, DATA_data(b#12^n{b#12 <- `b*`}, ACTIVE_datamode(y, instr#9*{instr#9 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation rundata__is_wf: `%%%`(dataidx : dataidx, data : data, ret_val : instr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}(x, DATA_data(b#13^n{b#13 <- `b*`}, ACTIVE_datamode(y, instr#7*{instr#7 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(y, x)) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) + rule rundata__is_wf0{dataidx : dataidx, data : data, ret_val : instr*}: + `%%%`(dataidx, data, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- wf_data: `%`(data) + -- if (ret_val = $rundata_(dataidx, data)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -14952,13 +15724,18 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e#1^n{e#1 <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e#2^n{e#2 <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e#3^n{e#3 <- `e*`}, ACTIVE_elemmode(y, instr#8*{instr#8 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`TABLE.INIT`_instr(y, x)) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e#3^n{e#3 <- `e*`}, ACTIVE_elemmode(y, instr#10*{instr#10 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation runelem__is_wf: `%%%`(elemidx : elemidx, elem : elem, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule runelem__is_wf0{elemidx : elemidx, elem : elem, ret_val : instr*}: + `%%%`(elemidx, elem, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- wf_elem: `%`(elem) + -- if (ret_val = $runelem_(elemidx, elem)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14970,9 +15747,25 @@ def $evalexprs(state : state, expr*) : (state, ref*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-165.46 def $evalexprs{z : state, expr : instr*, `expr'*` : expr*, ref : ref, z' : state}(z, [expr] ++ expr'#1*{expr'#1 <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) - -- let{z'' : state, `ref'*` : ref*} (z'', ref'#5*{ref'#5 <- `ref'*`}) = $evalexprs(z', expr'#2*{expr'#2 <- `expr'*`}) - -- wf_ref: `%`(ref) + -- let{z'' : state, `ref'*` : ref*} (z'', ref'#7*{ref'#7 <- `ref'*`}) = $evalexprs(z', expr'#2*{expr'#2 <- `expr'*`}) -- wf_state: `%`(z') + -- wf_state: `%`($evalexprs(z', expr'#3*{expr'#3 <- `expr'*`}).0) + -- (wf_ref: `%`(iter#342))*{iter#342 <- $evalexprs(z', expr'#4*{expr'#4 <- `expr'*`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation evalexprs_is_wf: `%%%`(state : state, var_0 : expr*, ret_val : (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule evalexprs_is_wf0{state : state, var_0 : expr*, ret_val : (state, ref*)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprs(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14983,9 +15776,28 @@ def $evalexprss(state : state, expr**) : (state, ref**) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:168.1-168.35 def $evalexprss{z : state}(z, []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.1-172.49 - def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**}(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#3*{expr'#3 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) - -- let{`ref*` : ref*, z' : state} (z', ref#6*{ref#6 <- `ref*`}) = $evalexprs(z, expr#366*{expr#366 <- `expr*`}) - -- let{z'' : state, `ref'**` : ref**} (z'', ref'#6*{ref'#6 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`}) = $evalexprss(z', expr'#4*{expr'#4 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}) + def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**}(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#5*{expr'#5 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- let{`ref*` : ref*, z' : state} (z', ref#7*{ref#7 <- `ref*`}) = $evalexprs(z, expr#366*{expr#366 <- `expr*`}) + -- let{z'' : state, `ref'**` : ref**} (z'', ref'#8*{ref'#8 <- `ref'*#4`}*{`ref'*#4` <- `ref'**`}) = $evalexprss(z', expr'#6*{expr'#6 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}) + -- wf_state: `%`($evalexprs(z, expr#367*{expr#367 <- `expr*`}).0) + -- (wf_ref: `%`(iter#343))*{iter#343 <- $evalexprs(z, expr#368*{expr#368 <- `expr*`}).1} + -- wf_state: `%`($evalexprss(z', expr'#7*{expr'#7 <- `expr'*#3`}*{`expr'*#3` <- `expr'**`}).0) + -- (wf_ref: `%`(iter#345))*{iter#345 <- iter#344}*{iter#344 <- $evalexprss(z', expr'#8*{expr'#8 <- `expr'*#4`}*{`expr'*#4` <- `expr'**`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation evalexprss_is_wf: `%%%`(state : state, var_0 : expr**, ret_val : (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule evalexprss_is_wf0{state : state, var_0 : expr**, ret_val : (state, ref**)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprss(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14996,63 +15808,111 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:175.1-175.41 def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 - def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, val : val, z' : state}(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#5*{expr'#5 <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, val : val, z' : state}(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#9*{expr'#9 <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) -- let{s : store, f : frame} `%;%`_state(s, f) = z' -- let{s' : store, a : addr} (s', a) = $allocglobal(s, gt, val) - -- let{z'' : state, `val'*` : val*} (z'', val'#3*{val'#3 <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#6*{expr'#6 <- `expr'*`}) - -- wf_val: `%`(val) + -- let{z'' : state, `val'*` : val*} (z'', val'#4*{val'#4 <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#10*{expr'#10 <- `expr'*`}) -- wf_state: `%`(z') + -- wf_store: `%`($allocglobal(s, gt, val).0) + -- wf_state: `%`($evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#3*{gt'#3 <- `gt'*`}, expr'#11*{expr'#11 <- `expr'*`}).0) + -- (wf_val: `%`(iter#346))*{iter#346 <- $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#4*{gt'#4 <- `gt'*`}, expr'#12*{expr'#12 <- `expr'*`}).1} -- wf_state: `%`(`%;%`_state(s, f)) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) } +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation evalglobals_is_wf: `%%%%`(state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule evalglobals_is_wf0{state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)}: + `%%%%`(state, var_0, var_1, ret_val) + -- wf_state: `%`(state) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_instr: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $evalglobals(state, var_0, var_1)) + -- wf_state: `%`(ret_val.0) + -- (wf_val: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, `xt_I*` : externtype*, `xt_E*` : externtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, i_D : nat, i_E : nat}(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I#1*{xt_I#1 <- `xt_I*`}, xt_E#1*{xt_E#1 <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr#8, xt_I#2))*{externaddr#8 <- `externaddr*`, xt_I#2 <- `xt_I*`} - -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#5*{type#5 <- `type*`}), `%`_list(import#4*{import#4 <- `import*`}), `%`_list(tag#5*{tag#5 <- `tag*`}), `%`_list(global#7*{global#7 <- `global*`}), `%`_list(mem#7*{mem#7 <- `mem*`}), `%`_list(table#7*{table#7 <- `table*`}), `%`_list(func#8*{func#8 <- `func*`}), `%`_list(data#6*{data#6 <- `data*`}), `%`_list(elem#7*{elem#7 <- `elem*`}), start#6?{start#6 <- `start?`}, `%`_list(export#8*{export#8 <- `export*`})) = module - -- if (global#8*{global#8 <- `global*`} = GLOBAL_global(globaltype#127, expr_G#3)*{expr_G#3 <- `expr_G*`, globaltype#127 <- `globaltype*`}) - -- if (table#8*{table#8 <- `table*`} = TABLE_table(tabletype#161, expr_T#3)*{expr_T#3 <- `expr_T*`, tabletype#161 <- `tabletype*`}) - -- if (data#7*{data#7 <- `data*`} = DATA_data(byte#8*{byte#8 <- `byte*#117`}, datamode#116)*{`byte*#117` <- `byte**`, datamode#116 <- `datamode*`}) - -- if (elem#8*{elem#8 <- `elem*`} = ELEM_elem(reftype#517, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#517 <- `reftype*`}) - -- if (start#7?{start#7 <- `start?`} = START_start(x#6)?{x#6 <- `x?`}) - -- if (moduleinst_0 = {TYPES $alloctypes(type#6*{type#6 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#9*{externaddr#9 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#10*{externaddr#10 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#9*{func#9 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#5*{type#5 <- `type*`}), `%`_list(import#4*{import#4 <- `import*`}), `%`_list(tag#5*{tag#5 <- `tag*`}), `%`_list(global#6*{global#6 <- `global*`}), `%`_list(mem#6*{mem#6 <- `mem*`}), `%`_list(table#6*{table#6 <- `table*`}), `%`_list(func#9*{func#9 <- `func*`}), `%`_list(data#7*{data#7 <- `data*`}), `%`_list(elem#6*{elem#6 <- `elem*`}), start#5?{start#5 <- `start?`}, `%`_list(export#8*{export#8 <- `export*`})) = module + -- if (global#7*{global#7 <- `global*`} = GLOBAL_global(globaltype#129, expr_G#3)*{expr_G#3 <- `expr_G*`, globaltype#129 <- `globaltype*`}) + -- if (table#7*{table#7 <- `table*`} = TABLE_table(tabletype#163, expr_T#3)*{expr_T#3 <- `expr_T*`, tabletype#163 <- `tabletype*`}) + -- if (data#8*{data#8 <- `data*`} = DATA_data(byte#9*{byte#9 <- `byte*#118`}, datamode#116)*{`byte*#118` <- `byte**`, datamode#116 <- `datamode*`}) + -- if (elem#7*{elem#7 <- `elem*`} = ELEM_elem(reftype#516, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#516 <- `reftype*`}) + -- if (start#6?{start#6 <- `start?`} = START_start(x#8)?{x#8 <- `x?`}) + -- if (moduleinst_0 = {TYPES $alloctypes(type#6*{type#6 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#9*{externaddr#9 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#10*{externaddr#10 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#10*{func#10 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- let{z' : state, `val_G*` : val*} (z', val_G#3*{val_G#3 <- `val_G*`}) = $evalglobals(z, globaltype#129*{globaltype#129 <- `globaltype*`}, expr_G#4*{expr_G#4 <- `expr_G*`}) - -- let{z'' : state, `ref_T*` : ref*} (z'', ref_T#3*{ref_T#3 <- `ref_T*`}) = $evalexprs(z', expr_T#4*{expr_T#4 <- `expr_T*`}) - -- let{z''' : state, `ref_E**` : ref**} (z''', ref_E#3*{ref_E#3 <- `ref_E*#3`}*{`ref_E*#3` <- `ref_E**`}) = $evalexprss(z'', expr_E#4*{expr_E#4 <- `expr_E*#4`}*{`expr_E*#4` <- `expr_E**`}) + -- let{z' : state, `val_G*` : val*} (z', val_G#4*{val_G#4 <- `val_G*`}) = $evalglobals(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#4*{expr_G#4 <- `expr_G*`}) + -- let{z'' : state, `ref_T*` : ref*} (z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = $evalexprs(z', expr_T#4*{expr_T#4 <- `expr_T*`}) + -- let{z''' : state, `ref_E**` : ref**} (z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = $evalexprss(z'', expr_E#4*{expr_E#4 <- `expr_E*#4`}*{`expr_E*#4` <- `expr_E**`}) -- let{s''' : store, f : frame} `%;%`_state(s''', f) = z''' - -- let{s'''' : store, moduleinst : moduleinst} (s'''', moduleinst) = $allocmodule(s''', module, externaddr#11*{externaddr#11 <- `externaddr*`}, val_G#4*{val_G#4 <- `val_G*`}, ref_T#4*{ref_T#4 <- `ref_T*`}, ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) - -- let{`instr_D*` : instr*} instr_D#1*{instr_D#1 <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#1), data#9*{data#9 <- `data*`}[i_D#1])^(i_D#1<|data#8*{data#8 <- `data*`}|){}) - -- let{`instr_E*` : instr*} instr_E#1*{instr_E#1 <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#1), elem#10*{elem#10 <- `elem*`}[i_E#1])^(i_E#1<|elem#9*{elem#9 <- `elem*`}|){}) - -- let{`instr_S?` : instr?} instr_S#1?{instr_S#1 <- `instr_S?`} = CALL_instr(x#7)?{x#7 <- `x?`} + -- let{s'''' : store, moduleinst : moduleinst} (s'''', moduleinst) = $allocmodule(s''', module, externaddr#11*{externaddr#11 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}) + -- let{`instr_D*` : instr*} instr_D#1*{instr_D#1 <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#1), data#10*{data#10 <- `data*`}[i_D#1])^(i_D#1<|data#9*{data#9 <- `data*`}|){}) + -- let{`instr_E*` : instr*} instr_E#1*{instr_E#1 <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#1), elem#9*{elem#9 <- `elem*`}[i_E#1])^(i_E#1<|elem#8*{elem#8 <- `elem*`}|){}) + -- let{`instr_S?` : instr?} instr_S#1?{instr_S#1 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`} -- wf_state: `%`(z) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E#2*{instr_E#2 <- `instr_E*`} ++ instr_D#2*{instr_D#2 <- `instr_D*`} ++ lift(instr_S#2?{instr_S#2 <- `instr_S?`}))) + -- wf_state: `%`($evalglobals(z, globaltype#132*{globaltype#132 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}).0) + -- (wf_val: `%`(iter#347))*{iter#347 <- $evalglobals(z, globaltype#133*{globaltype#133 <- `globaltype*`}, expr_G#6*{expr_G#6 <- `expr_G*`}).1} + -- wf_state: `%`($evalexprs(z', expr_T#5*{expr_T#5 <- `expr_T*`}).0) + -- (wf_ref: `%`(iter#348))*{iter#348 <- $evalexprs(z', expr_T#6*{expr_T#6 <- `expr_T*`}).1} + -- wf_state: `%`($evalexprss(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}).0) + -- (wf_ref: `%`(iter#350))*{iter#350 <- iter#349}*{iter#349 <- $evalexprss(z'', expr_E#6*{expr_E#6 <- `expr_E*#6`}*{`expr_E*#6` <- `expr_E**`}).1} + -- wf_store: `%`($allocmodule(s''', module, externaddr#12*{externaddr#12 <- `externaddr*`}, val_G#6*{val_G#6 <- `val_G*`}, ref_T#6*{ref_T#6 <- `ref_T*`}, ref_E#6*{ref_E#6 <- `ref_E*#6`}*{`ref_E*#6` <- `ref_E**`}).0) + -- wf_moduleinst: `%`($allocmodule(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#7*{val_G#7 <- `val_G*`}, ref_T#7*{ref_T#7 <- `ref_T*`}, ref_E#7*{ref_E#7 <- `ref_E*#7`}*{`ref_E*#7` <- `ref_E**`}).1) + -- (wf_instr: `%`(iter#351))*{iter#351 <- $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#2), data#12*{data#12 <- `data*`}[i_D#2])^(i_D#2<|data#11*{data#11 <- `data*`}|){})} + -- (wf_instr: `%`(iter#352))*{iter#352 <- $rundata_(`%`_dataidx(i_D#3), data#14*{data#14 <- `data*`}[i_D#3])}^(i_D#3<|data#13*{data#13 <- `data*`}|){} + -- (wf_instr: `%`(iter#353))*{iter#353 <- $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#2), elem#11*{elem#11 <- `elem*`}[i_E#2])^(i_E#2<|elem#10*{elem#10 <- `elem*`}|){})} + -- (wf_instr: `%`(iter#354))*{iter#354 <- $runelem_(`%`_elemidx(i_E#3), elem#13*{elem#13 <- `elem*`}[i_E#3])}^(i_E#3<|elem#12*{elem#12 <- `elem*`}|){} -- wf_moduletype: `%`(`%->%`_moduletype(xt_I#3*{xt_I#3 <- `xt_I*`}, xt_E#2*{xt_E#2 <- `xt_E*`})) - -- wf_module: `%`(MODULE_module(`%`_list(type#7*{type#7 <- `type*`}), `%`_list(import#5*{import#5 <- `import*`}), `%`_list(tag#6*{tag#6 <- `tag*`}), `%`_list(global#9*{global#9 <- `global*`}), `%`_list(mem#8*{mem#8 <- `mem*`}), `%`_list(table#9*{table#9 <- `table*`}), `%`_list(func#10*{func#10 <- `func*`}), `%`_list(data#10*{data#10 <- `data*`}), `%`_list(elem#11*{elem#11 <- `elem*`}), start#8?{start#8 <- `start?`}, `%`_list(export#9*{export#9 <- `export*`}))) - -- (wf_global: `%`(GLOBAL_global(globaltype#130, expr_G#5)))*{expr_G#5 <- `expr_G*`, globaltype#130 <- `globaltype*`} - -- (wf_table: `%`(TABLE_table(tabletype#163, expr_T#5)))*{expr_T#5 <- `expr_T*`, tabletype#163 <- `tabletype*`} - -- (wf_data: `%`(DATA_data(byte#9*{byte#9 <- `byte*#119`}, datamode#118)))*{`byte*#119` <- `byte**`, datamode#118 <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(reftype#519, expr_E#5*{expr_E#5 <- `expr_E*#5`}, elemmode#239)))*{elemmode#239 <- `elemmode*`, `expr_E*#5` <- `expr_E**`, reftype#519 <- `reftype*`} - -- (wf_start: `%`(START_start(x#8)))?{x#8 <- `x?`} - -- wf_moduleinst: `%`({TYPES $alloctypes(type#8*{type#8 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#12*{externaddr#12 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#13*{externaddr#13 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#11*{func#11 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_module: `%`(MODULE_module(`%`_list(type#7*{type#7 <- `type*`}), `%`_list(import#5*{import#5 <- `import*`}), `%`_list(tag#6*{tag#6 <- `tag*`}), `%`_list(global#8*{global#8 <- `global*`}), `%`_list(mem#7*{mem#7 <- `mem*`}), `%`_list(table#8*{table#8 <- `table*`}), `%`_list(func#11*{func#11 <- `func*`}), `%`_list(data#15*{data#15 <- `data*`}), `%`_list(elem#14*{elem#14 <- `elem*`}), start#7?{start#7 <- `start?`}, `%`_list(export#9*{export#9 <- `export*`}))) + -- (wf_global: `%`(GLOBAL_global(globaltype#134, expr_G#7)))*{expr_G#7 <- `expr_G*`, globaltype#134 <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype#165, expr_T#7)))*{expr_T#7 <- `expr_T*`, tabletype#165 <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte#10*{byte#10 <- `byte*#120`}, datamode#118)))*{`byte*#120` <- `byte**`, datamode#118 <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype#518, expr_E#7*{expr_E#7 <- `expr_E*#7`}, elemmode#239)))*{elemmode#239 <- `elemmode*`, `expr_E*#7` <- `expr_E**`, reftype#518 <- `reftype*`} + -- (wf_start: `%`(START_start(x#10)))?{x#10 <- `x?`} + -- wf_moduleinst: `%`({TYPES $alloctypes(type#8*{type#8 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#14*{externaddr#14 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#15*{externaddr#15 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#12*{func#12 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) -- wf_state: `%`(`%;%`_state(s''', f)) - -- (wf_uN: `%%`(32, `%`_uN(i_D#2)))^(i_D#2<|data#11*{data#11 <- `data*`}|){} - -- (wf_uN: `%%`(32, `%`_uN(i_E#2)))^(i_E#2<|elem#12*{elem#12 <- `elem*`}|){} - -- (wf_instr: `%`(CALL_instr(x#9)))?{x#9 <- `x?`} + -- (wf_uN: `%%`(32, `%`_uN(i_D#4)))^(i_D#4<|data#16*{data#16 <- `data*`}|){} + -- (wf_uN: `%%`(32, `%`_uN(i_E#4)))^(i_E#4<|elem#15*{elem#15 <- `elem*`}|){} + -- (wf_instr: `%`(CALL_instr(x#11)))?{x#11 <- `x?`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation instantiate_is_wf: `%%%%`(store : store, module : module, var_0 : externaddr*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule instantiate_is_wf0{store : store, module : module, var_0 : externaddr*, ret_val : config}: + `%%%%`(store, module, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- if (ret_val = $instantiate(store, module, var_0)) + -- wf_config: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val#1*{val#1 <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) - -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1#6*{t_1#6 <- `t_1*`}), `%`_resulttype(t_2#6*{t_2#6 <- `t_2*`}))) - -- (Val_ok: `%|-%:%`(s, val#2, t_1#7))*{t_1#7 <- `t_1*`, val#2 <- `val*`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val#3 : val <: instr)*{val#3 <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#8*{t_1#8 <- `t_1*`}), `%`_resulttype(t_2#7*{t_2#7 <- `t_2*`}))) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1#4*{t_1#4 <- `t_1*`}), `%`_resulttype(t_2#4*{t_2#4 <- `t_2*`}))) + -- (Val_ok: `%|-%:%`(s, val#2, t_1#5))*{t_1#5 <- `t_1*`, val#2 <- `val*`} + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#6*{t_1#6 <- `t_1*`}), `%`_resulttype(t_2#5*{t_2#5 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation invoke_is_wf: `%%%%`(store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule invoke_is_wf0{store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config}: + `%%%%`(store, funcaddr, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_val: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $invoke(store, funcaddr, var_0)) + -- wf_config: `%`(ret_val) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec syntax castop = (null?, null?) @@ -15072,6 +15932,14 @@ syntax nopt = u32* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec def $ieee_(N : N, rat : rat) : fNmag +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation ieee__is_wf: `%%%`(N : N, rat : rat, ret_val : fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule ieee__is_wf0{N : N, rat : rat, ret_val : fNmag}: + `%%%`(N, rat, ret_val) + -- if (ret_val = $ieee_(N, rat)) + -- wf_fNmag: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec syntax idctxt = { @@ -15116,11 +15984,23 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 def $concat_idctxt{I : idctxt, `I'*` : I*}([I] ++ I'#1*{I'#1 <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation concat_idctxt_is_wf: `%%`(var_0 : idctxt*, ret_val : idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule concat_idctxt_is_wf0{var_0 : idctxt*, ret_val : idctxt}: + `%%`(var_0, ret_val) + -- (wf_idctxt: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $concat_idctxt(var_0)) + -- wf_idctxt: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -15138,7 +16018,17 @@ relation Idctxt_ok: `|-%:OK`(idctxt) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -- wf_idctxt: `%`(I) + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TYPES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TAGS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.GLOBALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.MEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TABLES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.FUNCS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.DATAS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.ELEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LOCALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LABELS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])}*{`field*` <- `field**`} -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -15253,6 +16143,19 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation importsd_is_wf: `%%`(var_0 : decl*, ret_val : import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule importsd_is_wf0{var_0 : decl*, ret_val : import*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $importsd(var_0)) + -- (wf_import: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 @@ -15266,6 +16169,19 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation tagsd_is_wf: `%%`(var_0 : decl*, ret_val : tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule tagsd_is_wf0{var_0 : decl*, ret_val : tag*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tagsd(var_0)) + -- (wf_tag: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 @@ -15279,6 +16195,19 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation globalsd_is_wf: `%%`(var_0 : decl*, ret_val : global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule globalsd_is_wf0{var_0 : decl*, ret_val : global*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsd(var_0)) + -- (wf_global: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 @@ -15292,6 +16221,19 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation memsd_is_wf: `%%`(var_0 : decl*, ret_val : mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule memsd_is_wf0{var_0 : decl*, ret_val : mem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsd(var_0)) + -- (wf_mem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 @@ -15305,6 +16247,19 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation tablesd_is_wf: `%%`(var_0 : decl*, ret_val : table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule tablesd_is_wf0{var_0 : decl*, ret_val : table*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesd(var_0)) + -- (wf_table: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 @@ -15318,6 +16273,19 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation funcsd_is_wf: `%%`(var_0 : decl*, ret_val : func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule funcsd_is_wf0{var_0 : decl*, ret_val : func*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $funcsd(var_0)) + -- (wf_func: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 @@ -15331,6 +16299,19 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation datasd_is_wf: `%%`(var_0 : decl*, ret_val : data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule datasd_is_wf0{var_0 : decl*, ret_val : data*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $datasd(var_0)) + -- (wf_data: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 @@ -15344,6 +16325,19 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation elemsd_is_wf: `%%`(var_0 : decl*, ret_val : elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule elemsd_is_wf0{var_0 : decl*, ret_val : elem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $elemsd(var_0)) + -- (wf_elem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 @@ -15357,6 +16351,19 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation startsd_is_wf: `%%`(var_0 : decl*, ret_val : start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule startsd_is_wf0{var_0 : decl*, ret_val : start*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $startsd(var_0)) + -- (wf_start: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 def $exportsd(decl*) : export* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 @@ -15367,11 +16374,25 @@ def $exportsd(decl*) : export* def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#33*{decl'#33 <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) } +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation exportsd_is_wf: `%%`(var_0 : decl*, ret_val : export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule exportsd_is_wf0{var_0 : decl*, ret_val : export*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $exportsd(var_0)) + -- (wf_export: `%`(ret_val))*{ret_val <- ret_val} +} + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered(decl*) : bool ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{`decl*` : decl*}(decl#1*{decl#1 <- `decl*`}) = true -- if ($importsd(decl#2*{decl#2 <- `decl*`}) = []) + -- (wf_import: `%`(iter#355))*{iter#355 <- $importsd(decl#3*{decl#3 <- `decl*`})} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*}(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}) = (((((($importsd(decl_1#7*{decl_1#7 <- `decl_1*`}) = []) /\ ($tagsd(decl_1#6*{decl_1#6 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1#5*{decl_1#5 <- `decl_1*`}) = [])) /\ ($memsd(decl_1#4*{decl_1#4 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1#3*{decl_1#3 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1#2*{decl_1#2 <- `decl_1*`}) = [])) @@ -15397,7 +16418,6 @@ relation Context_ok: `|-%:OK`(context) -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt : reftype <: valtype)])))*{rt <- `rt*`} -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)])))?{rt' <- `rt'?`} -- (if ($proj_uN_0(x).0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} - -- wf_context: `%`(C) -- wf_context: `%`(C_0) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -15413,23 +16433,16 @@ relation Localval_ok: `%|-%:%`(store, val?, localtype) rule set{s : store, val : val, t : valtype}: `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule unset{s : store}: `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, BOT_valtype)) - -- wf_store: `%`(s) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, BOT_valtype)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Datainst_ok: `%|-%:%`(store, datainst, datatype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{s : store, `b*` : byte*}: `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) - -- wf_store: `%`(s) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) @@ -15438,8 +16451,6 @@ relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15448,9 +16459,7 @@ relation Exportinst_ok: `%|-%:OK`(store, exportinst) rule _{s : store, nm : name, xa : externaddr, xt : externtype}: `%|-%:OK`(s, {NAME nm, ADDR xa}) -- Externaddr_ok: `%|-%:%`(s, xa, xt) - -- wf_store: `%`(s) -- wf_externtype: `%`(xt) - -- wf_exportinst: `%`({NAME nm, ADDR xa}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) @@ -15478,9 +16487,6 @@ relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) -- if (|TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}| > 0) -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} - -- wf_store: `%`(s) - -- wf_moduleinst: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}) - -- wf_context: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (wf_externtype: `%`(TAG_externtype(tagtype)))*{tagtype <- `tagtype*`} -- (wf_externtype: `%`(GLOBAL_externtype(globaltype)))*{globaltype <- `globaltype*`} @@ -15496,10 +16502,6 @@ relation Frame_ok: `%|-%:%`(store, frame, context) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- if (|`lct*`| = |`val?*`|) -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) - -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rec { @@ -15510,29 +16512,18 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) rule plain{s : store, C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 rule ref{s : store, C : context, ref : ref, rt : reftype}: `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_ref: `%`(ref) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) @@ -15542,30 +16533,19 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) -- Frame_ok: `%|-%:%`(s, f, C') -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) -- wf_context: `%`(C') - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRAP_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 @@ -15573,9 +16553,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 rule empty{s : store, C : context}: `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -15587,11 +16564,7 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- if ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}) =/= ?()) -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -15603,10 +16576,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 @@ -15614,10 +16583,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 @@ -15626,9 +16591,6 @@ relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) } @@ -15638,8 +16600,6 @@ relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) rule _{s : store, jt : tagtype}: `%|-%:%`(s, {TYPE jt}, jt) -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) - -- wf_store: `%`(s) - -- wf_taginst: `%`({TYPE jt}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15649,10 +16609,8 @@ relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Meminst_ok: `%|-%:%`(store, meminst, memtype) @@ -15661,10 +16619,8 @@ relation Meminst_ok: `%|-%:%`(store, meminst, memtype) `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) - -- wf_store: `%`(s) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) @@ -15674,10 +16630,8 @@ relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- if (|ref*{ref <- `ref*`}| = n) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) @@ -15688,9 +16642,7 @@ relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- Func_ok: `%|-%:%`(C, func, dt') -- Deftype_sub: `%|-%<:%`(C, dt', dt) - -- wf_store: `%`(s) -- wf_context: `%`(C) - -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE (func : func <: funccode)}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15701,8 +16653,6 @@ relation Structinst_ok: `%|-%:OK`(store, structinst) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (|`fv*`| = |`zt*`|) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} - -- wf_store: `%`(s) - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15712,8 +16662,6 @@ relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} - -- wf_store: `%`(s) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15726,8 +16674,6 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if (|`t*`| = |`val*`|) -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} - -- wf_store: `%`(s) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15740,9 +16686,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(fv_1, s, fv_2) -- ImmutReachable: `%>>_%%`(fv_1, s, fv') -- ImmutReachable: `%>>_%%`(fv', s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) -- wf_fieldval: `%`(fv') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 @@ -15753,8 +16696,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (i < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) @@ -15764,8 +16705,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) -- if (i < |s.ARRAYS_store[a].FIELDS_arrayinst|) -- if (a < |s.ARRAYS_store|) -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 @@ -15773,14 +16712,10 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, (s.EXNS_store[a].FIELDS_exninst[i] : val <: fieldval)) -- if (i < |s.EXNS_store[a].FIELDS_exninst|) -- if (a < |s.EXNS_store|) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 rule `ref.extern`{ref : ref, s : store}: `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(ref)) } ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15798,9 +16733,6 @@ relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: `~%>>_%%`(fv_1, s, fv_2) -- if $NotImmutReachable(fv_1, s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Store_ok: `|-%:OK`(store) @@ -15828,7 +16760,6 @@ relation Store_ok: `|-%:OK`(store) -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) - -- wf_store: `%`(s) -- (wf_typeuse: `%`(tagtype))*{tagtype <- `tagtype*`} -- (wf_globaltype: `%`(globaltype))*{globaltype <- `globaltype*`} -- (wf_memtype: `%`(memtype))*{memtype <- `memtype*`} @@ -15844,7 +16775,6 @@ relation Extend_taginst: `%<=%`(taginst, taginst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{jt : tagtype}: `%<=%`({TYPE jt}, {TYPE jt}) - -- wf_taginst: `%`({TYPE jt}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_globalinst: `%<=%`(globalinst, globalinst) @@ -15852,8 +16782,6 @@ relation Extend_globalinst: `%<=%`(globalinst, globalinst) rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_meminst: `%<=%`(meminst, meminst) @@ -15862,8 +16790,6 @@ relation Extend_meminst: `%<=%`(meminst, meminst) `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) -- if (n <= n') -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_tableinst: `%<=%`(tableinst, tableinst) @@ -15872,15 +16798,12 @@ relation Extend_tableinst: `%<=%`(tableinst, tableinst) `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) -- if (n <= n') -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_funcinst: `%<=%`(funcinst, funcinst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{dt : deftype, mm : moduleinst, fc : funccode}: `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) - -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_datainst: `%<=%`(datainst, datainst) @@ -15888,8 +16811,6 @@ relation Extend_datainst: `%<=%`(datainst, datainst) rule _{`b*` : byte*, `b'*` : byte*}: `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) - -- wf_datainst: `%`({BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_eleminst: `%<=%`(eleminst, eleminst) @@ -15897,8 +16818,6 @@ relation Extend_eleminst: `%<=%`(eleminst, eleminst) rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) - -- wf_eleminst: `%`({TYPE rt, REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_structinst: `%<=%`(structinst, structinst) @@ -15909,8 +16828,6 @@ relation Extend_structinst: `%<=%`(structinst, structinst) -- if (|`fv*`| = |`fv'*`|) -- if (|`fv*`| = |`mut?*`|) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15921,8 +16838,6 @@ relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (|`fv*`| = |`fv'*`|) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15930,7 +16845,6 @@ relation Extend_exninst: `%<=%`(exninst, exninst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{ta : tagaddr, `val*` : val*}: `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_store: `%<=%`(store, store) @@ -15967,8 +16881,6 @@ relation Extend_store: `%<=%`(store, store) -- (if (a < |s.EXNS_store|))^(a<|s.EXNS_store|){} -- (if (a < |s'.EXNS_store|))^(a<|s.EXNS_store|){} -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} - -- wf_store: `%`(s) - -- wf_store: `%`(s') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation State_ok: `|-%:%`(state, context) @@ -15977,8 +16889,6 @@ relation State_ok: `|-%:%`(state, context) `|-%:%`(`%;%`_state(s, f), C) -- Store_ok: `|-%:OK`(s) -- Frame_ok: `%|-%:%`(s, f, C) - -- wf_context: `%`(C) - -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Config_ok: `|-%:OK`(config) @@ -15989,7 +16899,6 @@ relation Config_ok: `|-%:OK`(config) -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) -- (wf_valtype: `%`(t))*{t <- `t*`} - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat @@ -16050,18 +16959,12 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule `i32.add`{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 @@ -16069,8 +16972,6 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) } @@ -16080,27 +16981,26 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation instrdots_is_wf: `%`(ret_val : instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule instrdots_is_wf0{ret_val : instr*}: + `%`(ret_val) + -- if (ret_val = $instrdots) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec syntax label = | `LABEL_%{%}`(n : n, `instr*` : instr*) @@ -16126,6 +17026,15 @@ relation wf_callframe: `%`(callframe) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation allocX_is_wf(syntax X, syntax Y): `%%%%`(store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule allocX_is_wf0{syntax X, syntax Y, store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)}: + `%%%%`(store, X_0, Y_0, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocX(syntax X, syntax Y, store, X_0, Y_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rec { @@ -16137,6 +17046,21 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*}(syntax X, syntax Y, s, [X] ++ X'#1*{X'#1 <- `X'*`}, [Y] ++ Y'#1*{Y'#1 <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) -- let{s_2 : store, `a'*` : addr*} (s_2, a'#1*{a'#1 <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'#2*{X'#2 <- `X'*`}, Y'#2*{Y'#2 <- `Y'*`}) + -- wf_store: `%`($allocX(syntax X, syntax Y, s, X, Y).0) + -- wf_store: `%`($allocXs(syntax X, syntax Y, s_1, X'#3*{X'#3 <- `X'*`}, Y'#3*{Y'#3 <- `Y'*`}).0) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 +relation allocXs_is_wf(syntax X, syntax Y): `%%%%`(store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 + rule allocXs_is_wf0{syntax X, syntax Y, store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocXs(syntax X, syntax Y, store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec diff --git a/spectec/test-middlend/specification.exp/11-sub.il b/spectec/test-middlend/specification.exp/11-sub.il index df87529f89..58def11a7c 100644 --- a/spectec/test-middlend/specification.exp/11-sub.il +++ b/spectec/test-middlend/specification.exp/11-sub.il @@ -329,19 +329,40 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fzero_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fzero_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fzero(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fnat_is_wf: `%%%`(N : N, nat : nat, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fnat_is_wf0{N : N, nat : nat, ret_val : fN}: + `%%%`(N, nat, ret_val) + -- if (ret_val = $fnat(N, nat)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fone_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fone_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fone(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -402,23 +423,27 @@ def $utf8(char*) : byte* def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation utf8_is_wf: `%%`(var_0 : char*, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule utf8_is_wf0{var_0 : char*, ret_val : byte*}: + `%%`(var_0, ret_val) + -- (wf_char: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $utf8(var_0)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -612,10 +637,18 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_opt_is_wf: `%%`(var_0 : free?, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_opt_is_wf0{var_0 : free?, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))?{var_0 <- var_0} + -- if (ret_val = $free_opt(var_0)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -623,70 +656,162 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'#1*{free'#1 <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation free_list_is_wf: `%%`(var_0 : free*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule free_list_is_wf0{var_0 : free*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_list(var_0)) + -- wf_free: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_typeidx_is_wf: `%%`(typeidx : typeidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_typeidx_is_wf0{typeidx : typeidx, ret_val : free}: + `%%`(typeidx, ret_val) + -- wf_uN: `%%`(32, typeidx) + -- if (ret_val = $free_typeidx(typeidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_funcidx_is_wf: `%%`(funcidx : funcidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_funcidx_is_wf0{funcidx : funcidx, ret_val : free}: + `%%`(funcidx, ret_val) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $free_funcidx(funcidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_globalidx_is_wf: `%%`(globalidx : globalidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_globalidx_is_wf0{globalidx : globalidx, ret_val : free}: + `%%`(globalidx, ret_val) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $free_globalidx(globalidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tableidx_is_wf: `%%`(tableidx : tableidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tableidx_is_wf0{tableidx : tableidx, ret_val : free}: + `%%`(tableidx, ret_val) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $free_tableidx(tableidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_memidx_is_wf: `%%`(memidx : memidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_memidx_is_wf0{memidx : memidx, ret_val : free}: + `%%`(memidx, ret_val) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $free_memidx(memidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_elemidx_is_wf: `%%`(elemidx : elemidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_elemidx_is_wf0{elemidx : elemidx, ret_val : free}: + `%%`(elemidx, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- if (ret_val = $free_elemidx(elemidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_dataidx_is_wf: `%%`(dataidx : dataidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_dataidx_is_wf0{dataidx : dataidx, ret_val : free}: + `%%`(dataidx, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $free_dataidx(dataidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_localidx_is_wf: `%%`(localidx : localidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_localidx_is_wf0{localidx : localidx, ret_val : free}: + `%%`(localidx, ret_val) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $free_localidx(localidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_labelidx_is_wf: `%%`(labelidx : labelidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_labelidx_is_wf0{labelidx : labelidx, ret_val : free}: + `%%`(labelidx, ret_val) + -- wf_uN: `%%`(32, labelidx) + -- if (ret_val = $free_labelidx(labelidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx(tagidx : tagidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx{tagidx : uN}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tagidx_is_wf: `%%`(tagidx : tagidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tagidx_is_wf0{tagidx : tagidx, ret_val : free}: + `%%`(tagidx, ret_val) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $free_tagidx(tagidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -701,6 +826,15 @@ def $free_externidx(externidx : externidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_externidx_is_wf: `%%`(externidx : externidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_externidx_is_wf0{externidx : externidx, ret_val : free}: + `%%`(externidx, ret_val) + -- wf_externidx: `%`(externidx) + -- if (ret_val = $free_externidx(externidx)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = | NULL @@ -1149,77 +1283,168 @@ syntax Cnn = | F64 | V128 +def $storagetype_Cnn(Cnn) : storagetype + def $storagetype_Cnn(I32_Cnn) = I32_storagetype + def $storagetype_Cnn(I64_Cnn) = I64_storagetype + def $storagetype_Cnn(F32_Cnn) = F32_storagetype + def $storagetype_Cnn(F64_Cnn) = F64_storagetype + def $storagetype_Cnn(V128_Cnn) = V128_storagetype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ANYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ANYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ANYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EQREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EQREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EQREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation I31REF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule I31REF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $I31REF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation STRUCTREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule STRUCTREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $STRUCTREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ARRAYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ARRAYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ARRAYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation FUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule FUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $FUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLFUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLFUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLFUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1595,10 +1820,17 @@ def $unpack(storagetype : storagetype) : valtype def $unpack(I32_storagetype) = I32_valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I8_storagetype) = I32_valtype - -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I16_storagetype) = I32_valtype - -- wf_valtype: `%`(I32_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation unpack_is_wf: `%%`(storagetype : storagetype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule unpack_is_wf0{storagetype : storagetype, ret_val : valtype}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $unpack(storagetype)) + -- wf_valtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1664,10 +1896,18 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#1?{null_1#1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#2?{null_1#2 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1#3?{null_1#3 <- `null_1?`}, ht_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation diffrt_is_wf: `%%%`(reftype : reftype, reftype_0 : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule diffrt_is_wf0{reftype : reftype, reftype_0 : reftype, ret_val : reftype}: + `%%%`(reftype, reftype_0, ret_val) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + -- if (ret_val = $diffrt(reftype, reftype_0)) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype? @@ -1705,6 +1945,19 @@ def $globalsxt(externtype*) : globaltype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation globalsxt_is_wf: `%%`(var_0 : externtype*, ret_val : globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule globalsxt_is_wf0{var_0 : externtype*, ret_val : globaltype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsxt(var_0)) + -- (wf_globaltype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 @@ -1718,6 +1971,19 @@ def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation memsxt_is_wf: `%%`(var_0 : externtype*, ret_val : memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule memsxt_is_wf0{var_0 : externtype*, ret_val : memtype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsxt(var_0)) + -- (wf_memtype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 @@ -1731,6 +1997,19 @@ def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation tablesxt_is_wf: `%%`(var_0 : externtype*, ret_val : tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule tablesxt_is_wf0{var_0 : externtype*, ret_val : tabletype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesxt(var_0)) + -- (wf_tabletype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 @@ -1757,6 +2036,22 @@ def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation subst_typevar_is_wf: `%%%%`(typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule subst_typevar_is_wf0{typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typevar, var_0, var_1, ret_val) + -- wf_typevar: `%`(typevar) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if ($subst_typevar(typevar, var_0, var_1) =/= ?()) + -- if (ret_val = !($subst_typevar(typevar, var_0, var_1))) + -- wf_typeuse: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.73 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 @@ -1766,25 +2061,42 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}) = ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})) -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#2*{tv'#2 <- `tv'*`}, tu'#2*{tu'#2 <- `tu'*`}) = !($minus_recs(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`})) - -- wf_typevar: `%`(_IDX_typevar(x)) + -- (wf_typevar: `%`(iter#1))*{iter#1 <- !($minus_recs(tv#4*{tv#4 <- `tv*`}, tu#4*{tu#4 <- `tu*`})).0} + -- (wf_typeuse: `%`(iter#2))*{iter#2 <- !($minus_recs(tv#5*{tv#5 <- `tv*`}, tu#5*{tu#5 <- `tu*`})).1} def $minus_recs{x0 : typevar*, x1 : typeuse*}(x0, x1) = ?() -- otherwise } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation minus_recs_is_wf: `%%%`(var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule minus_recs_is_wf0{var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)}: + `%%%`(var_0, var_1, ret_val) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if ($minus_recs(var_0, var_1) =/= ?()) + -- if (ret_val = !($minus_recs(var_0, var_1))) + -- (wf_typevar: `%`(iter))*{iter <- ret_val.0} + -- (wf_typeuse: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv#4*{tv#4 <- `tv*`}, tu#4*{tu#4 <- `tu*`}) = pt + def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv#6*{tv#6 <- `tv*`}, tu#6*{tu#6 <- `tu*`}) = pt ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv#5*{tv#5 <- `tv*`}, tu#5*{tu#5 <- `tu*`}) = nt + def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv#7*{tv#7 <- `tv*`}, tu#7*{tu#7 <- `tu*`}) = nt ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv#6*{tv#6 <- `tv*`}, tu#6*{tu#6 <- `tu*`}) = vt + def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv#8*{tv#8 <- `tv*`}, tu#8*{tu#8 <- `tu*`}) = vt ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { @@ -1792,209 +2104,403 @@ rec { ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 - def $subst_typeuse{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_typeuse(n), tv#7*{tv#7 <- `tv*`}, tu#7*{tu#7 <- `tu*`}) = !($subst_typevar(REC_typevar(n), tv#8*{tv#8 <- `tv*`}, tu#8*{tu#8 <- `tu*`})) + def $subst_typeuse{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_typeuse(n), tv#9*{tv#9 <- `tv*`}, tu#9*{tu#9 <- `tu*`}) = !($subst_typevar(REC_typevar(n), tv#10*{tv#10 <- `tv*`}, tu#10*{tu#10 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 - def $subst_typeuse{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_typeuse(typeidx), tv#9*{tv#9 <- `tv*`}, tu#9*{tu#9 <- `tu*`}) = !($subst_typevar(_IDX_typevar(typeidx), tv#10*{tv#10 <- `tv*`}, tu#10*{tu#10 <- `tu*`})) + def $subst_typeuse{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_typeuse(typeidx), tv#11*{tv#11 <- `tv*`}, tu#11*{tu#11 <- `tu*`}) = !($subst_typevar(_IDX_typevar(typeidx), tv#12*{tv#12 <- `tv*`}, tu#12*{tu#12 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 - def $subst_typeuse{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_typeuse(rectype, n), tv#11*{tv#11 <- `tv*`}, tu#11*{tu#11 <- `tu*`}) = $typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv#12*{tv#12 <- `tv*`}, tu#12*{tu#12 <- `tu*`})) + def $subst_typeuse{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_typeuse(rectype, n), tv#13*{tv#13 <- `tv*`}, tu#13*{tu#13 <- `tu*`}) = $typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv#14*{tv#14 <- `tv*`}, tu#14*{tu#14 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_heaptype(n), tv#13*{tv#13 <- `tv*`}, tu#13*{tu#13 <- `tu*`}) = $heaptype_typeuse(!($subst_typevar(REC_typevar(n), tv#14*{tv#14 <- `tv*`}, tu#14*{tu#14 <- `tu*`}))) + def $subst_heaptype{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_heaptype(n), tv#15*{tv#15 <- `tv*`}, tu#15*{tu#15 <- `tu*`}) = $heaptype_typeuse(!($subst_typevar(REC_typevar(n), tv#16*{tv#16 <- `tv*`}, tu#16*{tu#16 <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_heaptype(typeidx), tv#15*{tv#15 <- `tv*`}, tu#15*{tu#15 <- `tu*`}) = $heaptype_typeuse(!($subst_typevar(_IDX_typevar(typeidx), tv#16*{tv#16 <- `tv*`}, tu#16*{tu#16 <- `tu*`}))) + def $subst_heaptype{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_heaptype(typeidx), tv#17*{tv#17 <- `tv*`}, tu#17*{tu#17 <- `tu*`}) = $heaptype_typeuse(!($subst_typevar(_IDX_typevar(typeidx), tv#18*{tv#18 <- `tv*`}, tu#18*{tu#18 <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 - def $subst_heaptype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_heaptype(rectype, n), tv#17*{tv#17 <- `tv*`}, tu#17*{tu#17 <- `tu*`}) = $heaptype_deftype($subst_deftype(_DEF_deftype(rectype, n), tv#18*{tv#18 <- `tv*`}, tu#18*{tu#18 <- `tu*`})) + def $subst_heaptype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_heaptype(rectype, n), tv#19*{tv#19 <- `tv*`}, tu#19*{tu#19 <- `tu*`}) = $heaptype_deftype($subst_deftype(_DEF_deftype(rectype, n), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 - def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv#19*{tv#19 <- `tv*`}, tu#19*{tu#19 <- `tu*`}) = ht + def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}) = ht ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 - def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null#2?{null#2 <- `null?`}, $subst_heaptype(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}))) + def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#22*{tv#22 <- `tv*`}, tu#22*{tu#22 <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I32_valtype, tv#22*{tv#22 <- `tv*`}, tu#22*{tu#22 <- `tu*`}) = $valtype_numtype($subst_numtype(I32_numtype, tv#23*{tv#23 <- `tv*`}, tu#23*{tu#23 <- `tu*`})) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I32_valtype, tv#23*{tv#23 <- `tv*`}, tu#23*{tu#23 <- `tu*`}) = $valtype_numtype($subst_numtype(I32_numtype, tv#24*{tv#24 <- `tv*`}, tu#24*{tu#24 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I64_valtype, tv#24*{tv#24 <- `tv*`}, tu#24*{tu#24 <- `tu*`}) = $valtype_numtype($subst_numtype(I64_numtype, tv#25*{tv#25 <- `tv*`}, tu#25*{tu#25 <- `tu*`})) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I64_valtype, tv#25*{tv#25 <- `tv*`}, tu#25*{tu#25 <- `tu*`}) = $valtype_numtype($subst_numtype(I64_numtype, tv#26*{tv#26 <- `tv*`}, tu#26*{tu#26 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F32_valtype, tv#26*{tv#26 <- `tv*`}, tu#26*{tu#26 <- `tu*`}) = $valtype_numtype($subst_numtype(F32_numtype, tv#27*{tv#27 <- `tv*`}, tu#27*{tu#27 <- `tu*`})) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F32_valtype, tv#27*{tv#27 <- `tv*`}, tu#27*{tu#27 <- `tu*`}) = $valtype_numtype($subst_numtype(F32_numtype, tv#28*{tv#28 <- `tv*`}, tu#28*{tu#28 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F64_valtype, tv#28*{tv#28 <- `tv*`}, tu#28*{tu#28 <- `tu*`}) = $valtype_numtype($subst_numtype(F64_numtype, tv#29*{tv#29 <- `tv*`}, tu#29*{tu#29 <- `tu*`})) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F64_valtype, tv#29*{tv#29 <- `tv*`}, tu#29*{tu#29 <- `tu*`}) = $valtype_numtype($subst_numtype(F64_numtype, tv#30*{tv#30 <- `tv*`}, tu#30*{tu#30 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(V128_valtype, tv#30*{tv#30 <- `tv*`}, tu#30*{tu#30 <- `tu*`}) = $valtype_vectype($subst_vectype(V128_vectype, tv#31*{tv#31 <- `tv*`}, tu#31*{tu#31 <- `tu*`})) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(V128_valtype, tv#31*{tv#31 <- `tv*`}, tu#31*{tu#31 <- `tu*`}) = $valtype_vectype($subst_vectype(V128_vectype, tv#32*{tv#32 <- `tv*`}, tu#32*{tu#32 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 - def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(`null?`, heaptype), tv#32*{tv#32 <- `tv*`}, tu#32*{tu#32 <- `tu*`}) = $valtype_reftype($subst_reftype(REF_reftype(`null?`, heaptype), tv#33*{tv#33 <- `tv*`}, tu#33*{tu#33 <- `tu*`})) + def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(`null?`, heaptype), tv#33*{tv#33 <- `tv*`}, tu#33*{tu#33 <- `tu*`}) = $valtype_reftype($subst_reftype(REF_reftype(`null?`, heaptype), tv#34*{tv#34 <- `tv*`}, tu#34*{tu#34 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv#34*{tv#34 <- `tv*`}, tu#34*{tu#34 <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv#35*{tv#35 <- `tv*`}, tu#35*{tu#35 <- `tu*`}) = BOT_valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_storagetype, tv#35*{tv#35 <- `tv*`}, tu#35*{tu#35 <- `tu*`}) = $storagetype_valtype($subst_valtype(BOT_valtype, tv#36*{tv#36 <- `tv*`}, tu#36*{tu#36 <- `tu*`})) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_storagetype, tv#36*{tv#36 <- `tv*`}, tu#36*{tu#36 <- `tu*`}) = $storagetype_valtype($subst_valtype(BOT_valtype, tv#37*{tv#37 <- `tv*`}, tu#37*{tu#37 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_storagetype(`null?`, heaptype), tv#37*{tv#37 <- `tv*`}, tu#37*{tu#37 <- `tu*`}) = $storagetype_valtype($subst_valtype(REF_valtype(`null?`, heaptype), tv#38*{tv#38 <- `tv*`}, tu#38*{tu#38 <- `tu*`})) + def $subst_storagetype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_storagetype(`null?`, heaptype), tv#38*{tv#38 <- `tv*`}, tu#38*{tu#38 <- `tu*`}) = $storagetype_valtype($subst_valtype(REF_valtype(`null?`, heaptype), tv#39*{tv#39 <- `tv*`}, tu#39*{tu#39 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(V128_storagetype, tv#39*{tv#39 <- `tv*`}, tu#39*{tu#39 <- `tu*`}) = $storagetype_valtype($subst_valtype(V128_valtype, tv#40*{tv#40 <- `tv*`}, tu#40*{tu#40 <- `tu*`})) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(V128_storagetype, tv#40*{tv#40 <- `tv*`}, tu#40*{tu#40 <- `tu*`}) = $storagetype_valtype($subst_valtype(V128_valtype, tv#41*{tv#41 <- `tv*`}, tu#41*{tu#41 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F64_storagetype, tv#41*{tv#41 <- `tv*`}, tu#41*{tu#41 <- `tu*`}) = $storagetype_valtype($subst_valtype(F64_valtype, tv#42*{tv#42 <- `tv*`}, tu#42*{tu#42 <- `tu*`})) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F64_storagetype, tv#42*{tv#42 <- `tv*`}, tu#42*{tu#42 <- `tu*`}) = $storagetype_valtype($subst_valtype(F64_valtype, tv#43*{tv#43 <- `tv*`}, tu#43*{tu#43 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F32_storagetype, tv#43*{tv#43 <- `tv*`}, tu#43*{tu#43 <- `tu*`}) = $storagetype_valtype($subst_valtype(F32_valtype, tv#44*{tv#44 <- `tv*`}, tu#44*{tu#44 <- `tu*`})) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F32_storagetype, tv#44*{tv#44 <- `tv*`}, tu#44*{tu#44 <- `tu*`}) = $storagetype_valtype($subst_valtype(F32_valtype, tv#45*{tv#45 <- `tv*`}, tu#45*{tu#45 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I64_storagetype, tv#45*{tv#45 <- `tv*`}, tu#45*{tu#45 <- `tu*`}) = $storagetype_valtype($subst_valtype(I64_valtype, tv#46*{tv#46 <- `tv*`}, tu#46*{tu#46 <- `tu*`})) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I64_storagetype, tv#46*{tv#46 <- `tv*`}, tu#46*{tu#46 <- `tu*`}) = $storagetype_valtype($subst_valtype(I64_valtype, tv#47*{tv#47 <- `tv*`}, tu#47*{tu#47 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I32_storagetype, tv#47*{tv#47 <- `tv*`}, tu#47*{tu#47 <- `tu*`}) = $storagetype_valtype($subst_valtype(I32_valtype, tv#48*{tv#48 <- `tv*`}, tu#48*{tu#48 <- `tu*`})) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I32_storagetype, tv#48*{tv#48 <- `tv*`}, tu#48*{tu#48 <- `tu*`}) = $storagetype_valtype($subst_valtype(I32_valtype, tv#49*{tv#49 <- `tv*`}, tu#49*{tu#49 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I8_storagetype, tv#49*{tv#49 <- `tv*`}, tu#49*{tu#49 <- `tu*`}) = $storagetype_packtype($subst_packtype(I8_packtype, tv#50*{tv#50 <- `tv*`}, tu#50*{tu#50 <- `tu*`})) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I8_storagetype, tv#50*{tv#50 <- `tv*`}, tu#50*{tu#50 <- `tu*`}) = $storagetype_packtype($subst_packtype(I8_packtype, tv#51*{tv#51 <- `tv*`}, tu#51*{tu#51 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I16_storagetype, tv#51*{tv#51 <- `tv*`}, tu#51*{tu#51 <- `tu*`}) = $storagetype_packtype($subst_packtype(I16_packtype, tv#52*{tv#52 <- `tv*`}, tu#52*{tu#52 <- `tu*`})) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I16_storagetype, tv#52*{tv#52 <- `tv*`}, tu#52*{tu#52 <- `tu*`}) = $storagetype_packtype($subst_packtype(I16_packtype, tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 - def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut#2?{mut#2 <- `mut?`}, $subst_storagetype(zt, tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}))) + def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft#1*{ft#1 <- `ft*`})), tv#55*{tv#55 <- `tv*`}, tu#55*{tu#55 <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft#2, tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`})*{ft#2 <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 - def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}))) + def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 - def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1#2, tv#60*{tv#60 <- `tv*`}, tu#60*{tu#60 <- `tu*`})*{t_1#2 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2#2, tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`})*{t_2#2 <- `t_2*`}))) + def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 - def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#3*{tu'#3 <- `tu'*`}, ct), tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final#2?{final#2 <- `final?`}, $subst_typeuse(tu'#4, tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`})*{tu'#4 <- `tu'*`}, $subst_comptype(ct, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}))) + def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#3*{tu'#3 <- `tu'*`}, ct), tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 - def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*}(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) - -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#3*{tv'#3 <- `tv'*`}, tu'#5*{tu'#5 <- `tu'*`}) = !($minus_recs(tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`})) + def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*}(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#3*{tv'#3 <- `tv'*`}, tu'#4*{tu'#4 <- `tu'*`}) = !($minus_recs(tv#60*{tv#60 <- `tv*`}, tu#60*{tu#60 <- `tu*`})) + -- (wf_typevar: `%`(iter#3))*{iter#3 <- !($minus_recs(tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`})).0} + -- (wf_typeuse: `%`(iter#4))*{iter#4 <- !($minus_recs(tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`})).1} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 - def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv#67*{tv#67 <- `tv*`}, tu#67*{tu#67 <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) + def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation subst_typeuse_is_wf: `%%%%`(typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule subst_typeuse_is_wf0{typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typeuse, var_0, var_1, ret_val) + -- wf_typeuse: `%`(typeuse) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_typeuse(typeuse, var_0, var_1)) + -- wf_typeuse: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation subst_heaptype_is_wf: `%%%%`(heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule subst_heaptype_is_wf0{heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype}: + `%%%%`(heaptype, var_0, var_1, ret_val) + -- wf_heaptype: `%`(heaptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_heaptype(heaptype, var_0, var_1)) + -- wf_heaptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation subst_reftype_is_wf: `%%%%`(reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule subst_reftype_is_wf0{reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype}: + `%%%%`(reftype, var_0, var_1, ret_val) + -- wf_reftype: `%`(reftype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_reftype(reftype, var_0, var_1)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation subst_valtype_is_wf: `%%%%`(valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule subst_valtype_is_wf0{valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype}: + `%%%%`(valtype, var_0, var_1, ret_val) + -- wf_valtype: `%`(valtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_valtype(valtype, var_0, var_1)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation subst_storagetype_is_wf: `%%%%`(storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule subst_storagetype_is_wf0{storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype}: + `%%%%`(storagetype, var_0, var_1, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_storagetype(storagetype, var_0, var_1)) + -- wf_storagetype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation subst_fieldtype_is_wf: `%%%%`(fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule subst_fieldtype_is_wf0{fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype}: + `%%%%`(fieldtype, var_0, var_1, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_fieldtype(fieldtype, var_0, var_1)) + -- wf_fieldtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation subst_comptype_is_wf: `%%%%`(comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule subst_comptype_is_wf0{comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype}: + `%%%%`(comptype, var_0, var_1, ret_val) + -- wf_comptype: `%`(comptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_comptype(comptype, var_0, var_1)) + -- wf_comptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation subst_subtype_is_wf: `%%%%`(subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule subst_subtype_is_wf0{subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype}: + `%%%%`(subtype, var_0, var_1, ret_val) + -- wf_subtype: `%`(subtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_subtype(subtype, var_0, var_1)) + -- wf_subtype: `%`(ret_val) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv#68*{tv#68 <- `tv*`}, tu#68*{tu#68 <- `tu*`}) = at + def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}) = at ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv#69*{tv#69 <- `tv*`}, tu#69*{tu#69 <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut#3?{mut#3 <- `mut?`}, t), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, $subst_valtype(t, tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}))) + def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut#2?{mut#2 <- `mut?`}, t), tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_globaltype_is_wf: `%%%%`(globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_globaltype_is_wf0{globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype}: + `%%%%`(globaltype, var_0, var_1, ret_val) + -- wf_globaltype: `%`(globaltype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_globaltype(globaltype, var_0, var_1)) + -- wf_globaltype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv#72*{tv#72 <- `tv*`}, tu#72*{tu#72 <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv#67*{tv#67 <- `tv*`}, tu#67*{tu#67 <- `tu*`}) = `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_memtype_is_wf: `%%%%`(memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_memtype_is_wf0{memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype}: + `%%%%`(memtype, var_0, var_1, ret_val) + -- wf_memtype: `%`(memtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_memtype(memtype, var_0, var_1)) + -- wf_memtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}))) + def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv#68*{tv#68 <- `tv*`}, tu#68*{tu#68 <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_tabletype_is_wf: `%%%%`(tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_tabletype_is_wf0{tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype}: + `%%%%`(tabletype, var_0, var_1, ret_val) + -- wf_tabletype: `%`(tabletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_tabletype(tabletype, var_0, var_1)) + -- wf_tabletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv#75*{tv#75 <- `tv*`}, tu#75*{tu#75 <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv#76*{tv#76 <- `tv*`}, tu#76*{tu#76 <- `tu*`}))) + def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv#69*{tv#69 <- `tv*`}, tu#69*{tu#69 <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv#77*{tv#77 <- `tv*`}, tu#77*{tu#77 <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv#78*{tv#78 <- `tv*`}, tu#78*{tu#78 <- `tu*`}))) + def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv#79*{tv#79 <- `tv*`}, tu#79*{tu#79 <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv#80*{tv#80 <- `tv*`}, tu#80*{tu#80 <- `tu*`}))) + def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv#81*{tv#81 <- `tv*`}, tu#81*{tu#81 <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv#82*{tv#82 <- `tv*`}, tu#82*{tu#82 <- `tu*`}))) + def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv#72*{tv#72 <- `tv*`}, tu#72*{tu#72 <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv#83*{tv#83 <- `tv*`}, tu#83*{tu#83 <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(FUNC_externtype($subst_typeuse(tu', tv#84*{tv#84 <- `tv*`}, tu#84*{tu#84 <- `tu*`}))) + def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_externtype_is_wf: `%%%%`(externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_externtype_is_wf0{externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype}: + `%%%%`(externtype, var_0, var_1, ret_val) + -- wf_externtype: `%`(externtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_externtype(externtype, var_0, var_1)) + -- wf_externtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#85*{tv#85 <- `tv*`}, tu#85*{tu#85 <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1#2, tv#86*{tv#86 <- `tv*`}, tu#86*{tu#86 <- `tu*`})*{xt_1#2 <- `xt_1*`}, $subst_externtype(xt_2#2, tv#87*{tv#87 <- `tv*`}, tu#87*{tu#87 <- `tu*`})*{xt_2#2 <- `xt_2*`})) + def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_moduletype_is_wf: `%%%%`(moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_moduletype_is_wf0{moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype}: + `%%%%`(moduletype, var_0, var_1, ret_val) + -- wf_moduletype: `%`(moduletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_moduletype(moduletype, var_0, var_1)) + -- wf_moduletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_valtype{t : valtype, n : nat, `tu*` : typeuse*, i : nat}(t, tu#88^n{tu#88 <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_moduletype(externtype_1#1*{externtype_1#1 <- `externtype_1*`}, externtype_2#1*{externtype_2#1 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_moduletype_is_wf: `%%`(moduletype : moduletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_moduletype_is_wf0{moduletype : moduletype, ret_val : free}: + `%%`(moduletype, ret_val) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $free_moduletype(moduletype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax num_ = | mk_num__0(Inn : Inn, var_x : iN) @@ -2791,7 +3530,15 @@ relation wf_shape: `%`(shape) def $dim(shape : shape) : dim ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) - -- wf_dim: `%`(`%`_dim(N)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation dim_is_wf: `%%`(shape : shape, ret_val : dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_is_wf0{shape : shape, ret_val : dim}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $dim(shape)) + -- wf_dim: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $lanetype(shape : shape) : lanetype @@ -4578,38 +5325,67 @@ syntax expr = instr* def $memarg0 : memarg ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} - -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation memarg0_is_wf: `%`(ret_val : memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg0_is_wf0{ret_val : memarg}: + `%`(ret_val) + -- if (ret_val = $memarg0) + -- wf_memarg: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const(consttype : consttype, lit_ : lit_) : instr ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : num_}(I32_consttype, mk_lit__0_lit_(I32_numtype, c)) = CONST_instr(I32_numtype, c) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : num_}(I64_consttype, mk_lit__0_lit_(I64_numtype, c)) = CONST_instr(I64_numtype, c) - -- wf_instr: `%`(CONST_instr(I64_numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : num_}(F32_consttype, mk_lit__0_lit_(F32_numtype, c)) = CONST_instr(F32_numtype, c) - -- wf_instr: `%`(CONST_instr(F32_numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : num_}(F64_consttype, mk_lit__0_lit_(F64_numtype, c)) = CONST_instr(F64_numtype, c) - -- wf_instr: `%`(CONST_instr(F64_numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : uN}(V128_consttype, mk_lit__1_lit_(V128_vectype, c)) = VCONST_instr(V128_vectype, c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation const_is_wf: `%%%`(consttype : consttype, lit_ : lit_, ret_val : instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule const_is_wf0{consttype : consttype, lit_ : lit_, ret_val : instr}: + `%%%`(consttype, lit_, ret_val) + -- wf_lit_: `%%`($storagetype_consttype(consttype), lit_) + -- if (ret_val = $const(consttype, lit_)) + -- wf_instr: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_shape_is_wf: `%%`(shape : shape, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_shape_is_wf0{shape : shape, ret_val : free}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $free_shape(shape)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype#505?{valtype#505 <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) + def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype#504?{valtype#504 <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype{typeidx : uN}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_blocktype_is_wf: `%%`(blocktype : blocktype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_blocktype_is_wf0{blocktype : blocktype, ret_val : free}: + `%%`(blocktype, ret_val) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $free_blocktype(blocktype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4621,6 +5397,15 @@ def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch{labelidx : uN}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_catch_is_wf: `%%`(catch : catch, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_catch_is_wf0{catch : catch, ret_val : free}: + `%%`(catch, ret_val) + -- wf_catch: `%`(catch) + -- if (ret_val = $free_catch(catch)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { @@ -4632,7 +5417,6 @@ def $shift_labelidxs(labelidx*) : labelidx* def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'#1*{labelidx'#1 <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.91 def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'#2*{labelidx'#2 <- `labelidx'*`}) = [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4642,15 +5426,12 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-435.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.86 - def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype#506*{valtype#506 <- `valtype*#1`}?{`valtype*#1` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) + def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype#505*{valtype#505 <- `valtype*#1`}?{`valtype*#1` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr#1*{instr#1 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.91 @@ -4679,7 +5460,6 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.66 @@ -4690,7 +5470,6 @@ def $free_instr(instr : instr) : free def $free_instr{tagidx : uN}(THROW_instr(tagidx)) = $free_tagidx(tagidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.32 def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-469.99 def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch#1*{catch#1 <- `catch*`}), instr#3*{instr#3 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.63 @@ -4753,13 +5532,10 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.34 def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.38 def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.29 def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 @@ -4768,10 +5544,8 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.30 def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.61 def $free_instr{typeidx : uN}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.69 @@ -4796,7 +5570,6 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.32 def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.61 def $free_instr{typeidx : uN}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.55 @@ -4807,10 +5580,8 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.41 def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 def $free_instr{localidx : uN}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 @@ -4867,12 +5638,45 @@ def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:589.1-590.47 def $free_block{`instr*` : instr*}(instr#4*{instr#4 <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] -- let{free : free} free = $free_list($free_instr(instr#5)*{instr#5 <- `instr*`}) + -- wf_free: `%`($free_list($free_instr(instr#6)*{instr#6 <- `instr*`})) + -- (wf_free: `%`($free_instr(instr#7)))*{instr#7 <- `instr*`} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation free_instr_is_wf: `%%`(instr : instr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule free_instr_is_wf0{instr : instr, ret_val : free}: + `%%`(instr, ret_val) + -- wf_instr: `%`(instr) + -- if (ret_val = $free_instr(instr)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation free_block_is_wf: `%%`(var_0 : instr*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule free_block_is_wf0{var_0 : instr*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_block(var_0)) + -- wf_free: `%`(ret_val) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_expr{`instr*` : instr*}(instr#6*{instr#6 <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) + def $free_expr{`instr*` : instr*}(instr#8*{instr#8 <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_expr_is_wf: `%%`(expr : expr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_expr_is_wf0{expr : expr, ret_val : free}: + `%%`(expr, ret_val) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- if (ret_val = $free_expr(expr)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = @@ -5064,85 +5868,216 @@ def $free_type(type : type) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_type_is_wf: `%%`(type : type, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_type_is_wf0{type : type, ret_val : free}: + `%%`(type, ret_val) + -- if (ret_val = $free_type(type)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag(tag : tag) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_tag_is_wf: `%%`(tag : tag, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_tag_is_wf0{tag : tag, ret_val : free}: + `%%`(tag, ret_val) + -- wf_tag: `%`(tag) + -- if (ret_val = $free_tag(tag)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global(global : global) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_global_is_wf: `%%`(global : global, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_global_is_wf0{global : global, ret_val : free}: + `%%`(global, ret_val) + -- wf_global: `%`(global) + -- if (ret_val = $free_global(global)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem(mem : mem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_mem_is_wf: `%%`(mem : mem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_mem_is_wf0{mem : mem, ret_val : free}: + `%%`(mem, ret_val) + -- wf_mem: `%`(mem) + -- if (ret_val = $free_mem(mem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table(table : table) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_table_is_wf: `%%`(table : table, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_table_is_wf0{table : table, ret_val : free}: + `%%`(table, ret_val) + -- wf_table: `%`(table) + -- if (ret_val = $free_table(table)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local(local : local) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_local_is_wf: `%%`(local : local, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_local_is_wf0{local : local, ret_val : free}: + `%%`(local, ret_val) + -- wf_local: `%`(local) + -- if (ret_val = $free_local(local)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func(func : func) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local#1*{local#1 <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_func_is_wf: `%%`(func : func, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_func_is_wf0{func : func, ret_val : free}: + `%%`(func, ret_val) + -- wf_func: `%`(func) + -- if (ret_val = $free_func(func)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(datamode : datamode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_datamode_is_wf: `%%`(datamode : datamode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_datamode_is_wf0{datamode : datamode, ret_val : free}: + `%%`(datamode, ret_val) + -- wf_datamode: `%`(datamode) + -- if (ret_val = $free_datamode(datamode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte#1*{byte#1 <- `byte*`}, datamode)) = $free_datamode(datamode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_data_is_wf: `%%`(data : data, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_data_is_wf0{data : data, ret_val : free}: + `%%`(data, ret_val) + -- wf_data: `%`(data) + -- if (ret_val = $free_data(data)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(elemmode : elemmode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elemmode_is_wf: `%%`(elemmode : elemmode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elemmode_is_wf0{elemmode : elemmode, ret_val : free}: + `%%`(elemmode, ret_val) + -- wf_elemmode: `%`(elemmode) + -- if (ret_val = $free_elemmode(elemmode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr#358*{expr#358 <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elem_is_wf: `%%`(elem : elem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elem_is_wf0{elem : elem, ret_val : free}: + `%%`(elem, ret_val) + -- wf_elem: `%`(elem) + -- if (ret_val = $free_elem(elem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start(start : start) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_start_is_wf: `%%`(start : start, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_start_is_wf0{start : start, ret_val : free}: + `%%`(start, ret_val) + -- wf_start: `%`(start) + -- if (ret_val = $free_start(start)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import(import : import) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_import_is_wf: `%%`(import : import, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_import_is_wf0{import : import, ret_val : free}: + `%%`(import, ret_val) + -- wf_import: `%`(import) + -- if (ret_val = $free_import(import)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export(export : export) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_export_is_wf: `%%`(export : export, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_export_is_wf0{export : export, ret_val : free}: + `%%`(export, ret_val) + -- wf_export: `%`(export) + -- if (ret_val = $free_export(export)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module(module : module) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_list(type#1*{type#1 <- `type*`}), `%`_list(import#1*{import#1 <- `import*`}), `%`_list(tag#1*{tag#1 <- `tag*`}), `%`_list(global#1*{global#1 <- `global*`}), `%`_list(mem#1*{mem#1 <- `mem*`}), `%`_list(table#1*{table#1 <- `table*`}), `%`_list(func#1*{func#1 <- `func*`}), `%`_list(data#1*{data#1 <- `data*`}), `%`_list(elem#1*{elem#1 <- `elem*`}), start#1?{start#1 <- `start?`}, `%`_list(export#1*{export#1 <- `export*`}))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_module_is_wf: `%%`(module : module, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_module_is_wf0{module : module, ret_val : free}: + `%%`(module, ret_val) + -- wf_module: `%`(module) + -- if (ret_val = $free_module(module)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $funcidx_module(module : module) : funcidx* ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec @@ -5228,6 +6163,22 @@ def $with_locals(context : context, localidx*, localtype*) : context? ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation with_locals_is_wf: `%%%%`(context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule with_locals_is_wf0{context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context}: + `%%%%`(context, var_0, var_1, ret_val) + -- wf_context: `%`(context) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_localtype: `%`(var_1))*{var_1 <- var_1} + -- if ($with_locals(context, var_0, var_1) =/= ?()) + -- if (ret_val = !($with_locals(context, var_0, var_1))) + -- wf_context: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(deftype*) : deftype* ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 @@ -5243,6 +6194,16 @@ def $clos_valtype(context : context, valtype : valtype) : valtype def $clos_valtype{C : context, t : valtype}(C, t) = $subst_all_valtype(t, $typeuse_deftype(dt)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt#4*{dt#4 <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_valtype_is_wf: `%%%`(context : context, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_valtype_is_wf0{context : context, valtype : valtype, ret_val : valtype}: + `%%%`(context, valtype, ret_val) + -- wf_context: `%`(context) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $clos_valtype(context, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -5261,25 +6222,43 @@ def $clos_externtype(context : context, externtype : externtype) : externtype def $clos_externtype{C : context, xt : externtype}(C, xt) = $subst_all_externtype(xt, $typeuse_deftype(dt)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt#6*{dt#6 <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_externtype_is_wf: `%%%`(context : context, externtype : externtype, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_externtype_is_wf0{context : context, externtype : externtype, ret_val : externtype}: + `%%%`(context, externtype, ret_val) + -- wf_context: `%`(context) + -- wf_externtype: `%`(externtype) + -- if (ret_val = $clos_externtype(context, externtype)) + -- wf_externtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype}(C, mmt) = $subst_all_moduletype(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt#7*{dt#7 <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_moduletype_is_wf: `%%%`(context : context, moduletype : moduletype, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_moduletype_is_wf0{context : context, moduletype : moduletype, ret_val : moduletype}: + `%%%`(context, moduletype, ret_val) + -- wf_context: `%`(context) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $clos_moduletype(context, moduletype)) + -- wf_moduletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypenat = @@ -5290,21 +6269,18 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) @@ -5312,6 +6288,7 @@ relation Expand: `%~~%`(deftype, comptype) rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: `%~~%`(deftype, comptype) -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- wf_subtype: `%`($unrolldt(deftype)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5319,7 +6296,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, nat : nat) : bool @@ -5337,6 +6313,16 @@ def $unrollht_(context : context, heaptype : heaptype) : subtype ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $unrollht_{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation unrollht__is_wf: `%%%`(context : context, heaptype : heaptype, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule unrollht__is_wf0{context : context, heaptype : heaptype, ret_val : subtype}: + `%%%`(context, heaptype, ret_val) + -- wf_context: `%`(context) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = $unrollht_(context, heaptype)) + -- wf_subtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -5345,20 +6331,15 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, $heaptype_absheaptype(absheaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, $heaptype_typeuse(typeuse)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 rule bot{C : context}: `%|-%:OK`(C, BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) @@ -5366,8 +6347,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) @@ -5375,26 +6354,20 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) rule num{C : context, numtype : numtype}: `%|-%:OK`(C, $valtype_numtype(numtype)) -- Numtype_ok: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, $valtype_vectype(vectype)) -- Vectype_ok: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, $valtype_reftype(reftype)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) @@ -5403,23 +6376,18 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) - -- wf_context: `%`(C) -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, $typeuse_deftype(deftype)) -- Deftype_ok: `%|-%:OK`(C, deftype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) @@ -5427,8 +6395,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) @@ -5436,8 +6402,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) @@ -5445,14 +6409,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) rule val{C : context, valtype : valtype}: `%|-%:OK`(C, $storagetype_valtype(valtype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, $storagetype_packtype(packtype)) -- Packtype_ok: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) @@ -5460,23 +6421,17 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) @@ -5491,8 +6446,7 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) -- (if ($unrollht_(C, $heaptype_typeuse(typeuse)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_subtype: `%`($unrollht_(C, $heaptype_typeuse(typeuse))))*{typeuse <- `typeuse*`} -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 @@ -5500,16 +6454,12 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 rule empty{C : context, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypenat(i)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypenat(i)) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypenat((i + 1))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) @@ -5519,7 +6469,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}}) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 @@ -5529,26 +6478,17 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) @@ -5556,7 +6496,6 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: @@ -5564,7 +6503,7 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) - -- wf_context: `%`(C) + -- wf_subtype: `%`($unrolldt(deftype_1)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 @@ -5572,8 +6511,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: @@ -5581,95 +6518,64 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) -- wf_heaptype: `%`(heaptype') ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, $heaptype_deftype(deftype), STRUCT_heaptype) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, $heaptype_deftype(deftype), ARRAY_heaptype) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, $heaptype_deftype(deftype), FUNC_heaptype) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 @@ -5677,9 +6583,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 @@ -5687,9 +6590,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 @@ -5698,8 +6598,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- if (j < |typeuse*{typeuse <- `typeuse*`}|) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 @@ -5707,9 +6605,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) -- wf_heaptype: `%`(ANY_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5718,9 +6613,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) -- wf_heaptype: `%`(FUNC_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5729,9 +6621,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) -- wf_heaptype: `%`(EXN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5740,18 +6629,12 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) -- wf_heaptype: `%`(EXTERN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) @@ -5759,17 +6642,11 @@ relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) @@ -5777,28 +6654,20 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) @@ -5807,9 +6676,6 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) @@ -5817,15 +6683,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) @@ -5833,18 +6695,12 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) } ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5853,8 +6709,6 @@ relation Localtype_ok: `%|-%:OK`(context, localtype) rule _{C : context, init : init, t : valtype}: `%|-%:OK`(C, `%%`_localtype(init, t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) @@ -5866,9 +6720,7 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- if (|`lct*`| = |`x*`|) -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand_use: `%~~_%%`(typeuse, context, comptype) @@ -5876,17 +6728,12 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`($typeuse_deftype(deftype), C, comptype) -- Expand: `%~~%`(deftype, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5912,9 +6759,7 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`($unrolldt(C.TYPES_context[$proj_uN_0(x).0])))*{x <- `x*`} -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5925,17 +6770,12 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) } @@ -5947,8 +6787,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) @@ -5957,8 +6795,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) `%|-%:OK`(C, typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5967,8 +6803,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Memtype_ok: `%|-%:OK`(context, memtype) @@ -5976,8 +6810,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size($numtype_addrtype(addrtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) @@ -5986,8 +6818,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size($numtype_addrtype(addrtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Externtype_ok: `%|-%:OK`(context, externtype) @@ -5995,37 +6825,27 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -6039,10 +6859,8 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- if (|`t*`| = |`x*`|) -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_uN: `%%`(32, iter))*{iter <- $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -6052,17 +6870,11 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) -- if (n_1 >= n_2) -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule eps{C : context, n_1 : n, n_2 : n}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) -- if (n_1 >= n_2) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) @@ -6071,7 +6883,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) @@ -6079,18 +6890,12 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) @@ -6098,9 +6903,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) @@ -6110,9 +6912,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) @@ -6120,41 +6919,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) @@ -6162,18 +6946,12 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6186,8 +6964,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6198,8 +6974,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6207,42 +6981,42 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val?? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I32_valtype) = ?(?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0))))) - -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I64_valtype) = ?(?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0))))) - -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F32_valtype) = ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F64_valtype) = ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(V128_valtype) = ?(?(VCONST_val(V128_vectype, `%`_vec_(0)))) - -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) - -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) def $default_{x0 : valtype}(x0) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation default__is_wf: `%%`(valtype : valtype, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule default__is_wf0{valtype : valtype, ret_val : val?}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if ($default_(valtype) =/= ?()) + -- if (ret_val = !($default_(valtype))) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -6250,7 +7024,7 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) `|-%DEFAULTABLE`(t) -- if ($default_(t) =/= ?()) -- if (!($default_(t)) =/= ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) @@ -6259,7 +7033,6 @@ relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (m < (2 ^ $size($numtype_addrtype(at)))) - -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec def $is_packtype(storagetype : storagetype) : bool @@ -6274,33 +7047,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: @@ -6308,18 +7070,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = $valtype_numtype(numtype)) \/ (t' = $valtype_vectype(vectype))) - -- wf_context: `%`(C) -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6329,8 +7086,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6341,9 +7096,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6355,9 +7107,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 @@ -6365,9 +7114,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: @@ -6377,8 +7123,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(l').0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 @@ -6387,18 +7131,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -6409,10 +7147,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -6423,19 +7158,14 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + -- wf_reftype: `%`($diffrt(rt_1, rt_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 @@ -6443,9 +7173,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 @@ -6456,9 +7183,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6468,9 +7192,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 @@ -6481,10 +7202,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6496,10 +7214,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6514,10 +7229,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6530,9 +7242,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6540,9 +7249,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 @@ -6551,8 +7257,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6561,9 +7265,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule `ref.null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule `ref.func`{C : context, x : idx, dt : deftype}: @@ -6572,39 +7273,24 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (|C.REFS_context| > 0) -- if (x <- C.REFS_context) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule `ref.i31`{C : context}: `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule `ref.is_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule `ref.as_non_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule `ref.eq`{C : context}: `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule `ref.test`{C : context, rt : reftype, rt' : reftype}: @@ -6612,9 +7298,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.TEST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: @@ -6622,25 +7305,16 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.CAST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule `i31.get`{C : context, sx : sx}: `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 @@ -6649,9 +7323,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 @@ -6662,9 +7334,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) @@ -6675,9 +7344,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) @@ -6686,9 +7352,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 @@ -6697,9 +7360,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 @@ -6707,9 +7368,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 @@ -6719,9 +7377,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 @@ -6732,9 +7387,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 @@ -6743,9 +7396,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 @@ -6753,26 +7403,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule `array.len`{C : context}: `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.LEN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule `array.fill`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 @@ -6783,9 +7424,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) @@ -6796,9 +7434,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 @@ -6809,35 +7444,24 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule `local.get`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 @@ -6845,9 +7469,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 @@ -6855,9 +7476,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 @@ -6865,9 +7483,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 @@ -6875,9 +7490,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 @@ -6885,9 +7497,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 @@ -6895,9 +7504,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 @@ -6905,9 +7511,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 @@ -6915,9 +7518,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 @@ -6925,9 +7525,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 @@ -6938,9 +7535,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) @@ -6952,10 +7546,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 @@ -6963,19 +7554,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 @@ -6983,9 +7568,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 @@ -6993,9 +7575,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 @@ -7005,9 +7584,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) @@ -7018,9 +7594,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 @@ -7028,9 +7601,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: @@ -7038,9 +7608,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 @@ -7049,9 +7616,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 @@ -7060,9 +7624,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 @@ -7071,9 +7632,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 @@ -7082,9 +7640,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 @@ -7093,9 +7648,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 @@ -7104,9 +7656,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 @@ -7115,9 +7664,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 @@ -7127,9 +7673,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 @@ -7138,9 +7681,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 @@ -7150,217 +7690,131 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim($proj_bshape_0(sh).0)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -7372,10 +7826,7 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- if ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}) =/= ?()) -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -7387,9 +7838,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 @@ -7397,9 +7845,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -7409,8 +7854,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7420,89 +7863,63 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) `|-%NONDEFAULTABLE`(t) -- if ($default_(t) =/= ?()) -- if (!($default_(t)) = ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.null`{C : context, ht : heaptype}: `%|-%CONST`(C, `REF.NULL`_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.i31`{C : context}: `%|-%CONST`(C, `REF.I31`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.func`{C : context, x : idx}: `%|-%CONST`(C, `REF.FUNC`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new_default`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_default`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_fixed`{C : context, x : idx, n : n}: `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `any.convert_extern`{C : context}: `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `extern.convert_any`{C : context}: `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `global.get`{C : context, x : idx, t : valtype}: `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7512,8 +7929,6 @@ relation Instr_const: `%|-%CONST`(context, instr) -- if (Inn <- [I32_Inn I64_Inn]) -- if (|[mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]| > 0) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr($numtype_addrtype(Inn), binop)) -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, ADD_binop_Inn)) -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, SUB_binop_Inn)) -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, MUL_binop_Inn)) @@ -7524,8 +7939,6 @@ relation Expr_const: `%|-%CONST`(context, expr) rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) @@ -7534,9 +7947,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) `%|-%:%CONST`(C, expr, t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) @@ -7546,7 +7956,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_oktypeidx: `%`(OK_oktypeidx(x)) @@ -7556,8 +7965,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Global_ok: `%|-%:%`(context, global, globaltype) @@ -7567,8 +7974,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7577,8 +7982,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Table_ok: `%|-%:%`(context, table, tabletype) @@ -7588,8 +7991,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(rt)) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7598,17 +7999,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) @@ -7620,8 +8015,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) @@ -7630,8 +8023,6 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: @@ -7639,8 +8030,6 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7649,24 +8038,16 @@ relation Data_ok: `%|-%:%`(context, data, datatype) rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: @@ -7675,9 +8056,6 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7688,8 +8066,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(elemtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Start_ok: `%|-%:OK`(context, start) @@ -7698,8 +8074,6 @@ relation Start_ok: `%|-%:OK`(context, start) `%|-%:OK`(C, START_start(x)) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7708,8 +8082,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Externidx_ok: `%|-%:%`(context, externidx, externtype) @@ -7718,45 +8090,30 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Export_ok: `%|-%:%%`(context, export, name, externtype) @@ -7764,9 +8121,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) -- Externidx_ok: `%|-%:%`(C, externidx, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { @@ -7776,17 +8130,12 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7798,14 +8147,12 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7829,7 +8176,6 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}(`%%%%%%`_nonfuncs(global#2*{global#2 <- `global*`}, mem#2*{mem#2 <- `mem*`}, table#2*{table#2 <- `table*`}, elem#2*{elem#2 <- `elem*`}, start#2?{start#2 <- `start?`}, export#2*{export#2 <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#3*{export#3 <- `export*`}))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) @@ -7865,11 +8211,13 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) - -- wf_context: `%`(C) -- wf_context: `%`(C') -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- (wf_uN: `%%`(32, iter))*{iter <- $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}))} + -- (wf_typeuse: `%`(iter))*{iter <- $tagsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_globaltype: `%`(iter))*{iter <- $globalsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_memtype: `%`(iter))*{iter <- $memsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_tabletype: `%`(iter))*{iter <- $tablesxt(xt_I*{xt_I <- `xt_I*`})} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -7921,81 +8269,272 @@ def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmadd : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmadd_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmadd_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_fmadd) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmin : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmin_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmin_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmin) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmax : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmax_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmax_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmax) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_idot : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_idot_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_idot_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_idot) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_iq15mulr : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_iq15mulr_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_iq15mulr_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_iq15mulr) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_u : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_u_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_u_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_trunc_u) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_s : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_s_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_s_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_trunc_s) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_swizzle : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_swizzle_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_swizzle_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_swizzle) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_laneselect : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_laneselect_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_laneselect_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_laneselect) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $s33_to_u32(s33 : s33) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibits_(N : N, iN : iN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibits__is_wf: `%%%`(N : N, iN : iN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibits__is_wf0{N : N, iN : iN, ret_val : bit*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibits_(N, iN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbits_(N : N, fN : fN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbits__is_wf: `%%%`(N : N, fN : fN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbits__is_wf0{N : N, fN : fN, ret_val : bit*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbits_(N, fN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibytes_(N : N, iN : iN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibytes__is_wf: `%%%`(N : N, iN : iN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibytes__is_wf0{N : N, iN : iN, ret_val : byte*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibytes_(N, iN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbytes_(N : N, fN : fN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbytes__is_wf: `%%%`(N : N, fN : fN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbytes__is_wf0{N : N, fN : fN, ret_val : byte*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbytes_(N, fN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $nbytes_(numtype : numtype, num_ : num_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation nbytes__is_wf: `%%%`(numtype : numtype, num_ : num_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule nbytes__is_wf0{numtype : numtype, num_ : num_, ret_val : byte*}: + `%%%`(numtype, num_, ret_val) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $nbytes_(numtype, num_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $vbytes_(vectype : vectype, vec_ : vec_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation vbytes__is_wf: `%%%`(vectype : vectype, vec_ : vec_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule vbytes__is_wf0{vectype : vectype, vec_ : vec_, ret_val : byte*}: + `%%%`(vectype, vec_, ret_val) + -- wf_uN: `%%`($vsize(vectype), vec_) + -- if (ret_val = $vbytes_(vectype, vec_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zbytes__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zbytes__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : byte*}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $zbytes_(storagetype, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cbytes__is_wf: `%%%`(Cnn : Cnn, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cbytes__is_wf0{Cnn : Cnn, lit_ : lit_, ret_val : byte*}: + `%%%`(Cnn, lit_, ret_val) + -- wf_lit_: `%%`($storagetype_Cnn(Cnn), lit_) + -- if (ret_val = $cbytes_(Cnn, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibits_(N : N, bit*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbits_(N : N, bit*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbits__is_wf: `%%%`(N : N, var_0 : bit*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbits__is_wf0{N : N, var_0 : bit*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_bit: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbits_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibytes_(N : N, byte*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbytes_(N : N, byte*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbytes__is_wf: `%%%`(N : N, var_0 : byte*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbytes__is_wf0{N : N, var_0 : byte*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbytes_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_nbytes_(numtype : numtype, byte*) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_nbytes__is_wf: `%%%`(numtype : numtype, var_0 : byte*, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_nbytes__is_wf0{numtype : numtype, var_0 : byte*, ret_val : num_}: + `%%%`(numtype, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_nbytes_(numtype, var_0)) + -- wf_num_: `%%`(numtype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_vbytes_(vectype : vectype, byte*) : vec_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_zbytes__is_wf: `%%%`(storagetype : storagetype, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_zbytes__is_wf0{storagetype : storagetype, var_0 : byte*, ret_val : lit_}: + `%%%`(storagetype, var_0, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_zbytes_(storagetype, var_0)) + -- wf_lit_: `%%`(storagetype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_cbytes__is_wf: `%%%`(Cnn : Cnn, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_cbytes__is_wf0{Cnn : Cnn, var_0 : byte*, ret_val : lit_}: + `%%%`(Cnn, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_cbytes_(Cnn, var_0)) + -- wf_lit_: `%%`($storagetype_Cnn(Cnn), ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $signed_(N : N, nat : nat) : int ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8037,22 +8576,24 @@ def $sx(storagetype : storagetype) : sx?? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zero_is_wf: `%%`(lanetype : lanetype, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zero_is_wf0{lanetype : lanetype, ret_val : lane_}: + `%%`(lanetype, ret_val) + -- if (ret_val = $zero(lanetype)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -8081,7 +8622,6 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -8101,28 +8641,23 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -8130,7 +8665,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8138,7 +8672,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -8146,13 +8679,11 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8180,19 +8711,15 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8243,116 +8770,277 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fneg_(N : N, fN : fN) : fN* +relation fabs__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fabs__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fabs_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fneg_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fneg__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fneg__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fneg_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsqrt_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsqrt__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsqrt__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fsqrt_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fceil_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fceil__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fceil__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fceil_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ffloor_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ffloor__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ffloor__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ffloor_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ftrunc_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ftrunc__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ftrunc__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ftrunc_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fnearest_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fnearest__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fnearest__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fnearest_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fadd_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fadd__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fadd__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fadd_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsub_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsub__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsub__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fsub_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmul_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmul__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmul__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmul_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fdiv_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fdiv__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fdiv__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fdiv_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_min__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_min__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_min_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_max__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_max__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_max_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fcopysign_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fcopysign__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fcopysign__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fcopysign_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $feq_(N : N, fN : fN, fN : fN) : u32 @@ -8374,9 +9062,31 @@ def $fge_(N : N, fN : fN, fN : fN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_madd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_madd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_madd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_nmadd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_nmadd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_nmadd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wrap__(M : M, N : N, iN : iN) : iN @@ -8395,38 +9105,77 @@ def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $demote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation demote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule demote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $demote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $promote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation promote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule promote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $promote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $convert__(M : M, N : N, sx : sx, iN : iN) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation convert___is_wf: `%%%%%`(M : M, N : N, sx : sx, iN : iN, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule convert___is_wf0{M : M, N : N, sx : sx, iN : iN, ret_val : fN}: + `%%%%%`(M, N, sx, iN, ret_val) + -- wf_uN: `%%`(M, iN) + -- if (ret_val = $convert__(M, N, sx, iN)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation reinterpret___is_wf: `%%%%`(numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule reinterpret___is_wf0{numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_}: + `%%%%`(numtype_1, numtype_2, num_, ret_val) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $reinterpret__(numtype_1, numtype_2, num_)) + -- wf_num_: `%%`(numtype_2, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) - -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) - -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lpacknum__is_wf: `%%%`(lanetype : lanetype, num_ : num_, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lpacknum__is_wf0{lanetype : lanetype, num_ : num_, ret_val : lane_}: + `%%%`(lanetype, num_, ret_val) + -- wf_num_: `%%`($lunpack(lanetype), num_) + -- if (ret_val = $lpacknum_(lanetype, num_)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -8442,10 +9191,19 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) - -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) - -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if ($cunpack(storagetype) =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(storagetype))), lit_) + -- if (ret_val = $cpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`(storagetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -8459,10 +9217,17 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) - -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) - -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lunpacknum__is_wf: `%%%`(lanetype : lanetype, lane_ : lane_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lunpacknum__is_wf0{lanetype : lanetype, lane_ : lane_, ret_val : num_}: + `%%%`(lanetype, lane_, ret_val) + -- wf_lane_: `%%`(lanetype, lane_) + -- if (ret_val = $lunpacknum_(lanetype, lane_)) + -- wf_num_: `%%`($lunpack(lanetype), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -8478,196 +9243,166 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) - -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) - -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cunpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cunpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $cunpacknum_(storagetype, lit_)) + -- if ($cunpack(storagetype) =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(storagetype))), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#1)))*{iter_0#1 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#1)*{iter_0#1 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#3)))*{iter_0#3 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#6)*{iter_0#6 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#5)))*{iter_0#5 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#3)*{iter_0#3 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#7)))*{iter_0#7 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#10)*{iter_0#10 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#9)))*{iter_0#9 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#5)*{iter_0#5 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#11)))*{iter_0#11 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#6)*{iter_0#6 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#14)*{iter_0#14 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#13)))*{iter_0#13 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#7)*{iter_0#7 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#16)*{iter_0#16 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#15)))*{iter_0#15 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#18)*{iter_0#18 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#17)))*{iter_0#17 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#9)*{iter_0#9 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#19)))*{iter_0#19 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#10)*{iter_0#10 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#22)*{iter_0#22 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#21)))*{iter_0#21 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#11)*{iter_0#11 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#23)))*{iter_0#23 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#26)*{iter_0#26 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#25)))*{iter_0#25 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#13)*{iter_0#13 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#27)))*{iter_0#27 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#14)*{iter_0#14 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation unop__is_wf: `%%%%`(numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule unop__is_wf0{numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*}: + `%%%%`(numtype, unop_, num_, ret_val) + -- wf_unop_: `%%`(numtype, unop_) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $unop_(numtype, unop_, num_)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#30)*{iter_0#30 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#29)))*{iter_0#29 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#15)*{iter_0#15 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#32)*{iter_0#32 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#31)))*{iter_0#31 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#16)*{iter_0#16 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#33)))*{iter_0#33 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#17)*{iter_0#17 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#35)))*{iter_0#35 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#18)*{iter_0#18 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#38)*{iter_0#38 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#37)))*{iter_0#37 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#19)*{iter_0#19 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#40)*{iter_0#40 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#39)))*{iter_0#39 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#41)))*{iter_0#41 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#21)*{iter_0#21 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#43)))*{iter_0#43 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#22)*{iter_0#22 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#45)))*{iter_0#45 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#23)*{iter_0#23 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#47)))*{iter_0#47 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#50)*{iter_0#50 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#49)))*{iter_0#49 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#25)*{iter_0#25 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#52)*{iter_0#52 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#51)))*{iter_0#51 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#26)*{iter_0#26 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#54)*{iter_0#54 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#53)))*{iter_0#53 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#27)*{iter_0#27 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#56)*{iter_0#56 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#55)))*{iter_0#55 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#58)*{iter_0#58 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#57)))*{iter_0#57 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#29)*{iter_0#29 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#60)*{iter_0#60 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#59)))*{iter_0#59 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#30)*{iter_0#30 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#62)*{iter_0#62 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#61)))*{iter_0#61 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#31)*{iter_0#31 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#64)*{iter_0#64 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#63)))*{iter_0#63 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#32)*{iter_0#32 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation binop__is_wf: `%%%%%`(numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule binop__is_wf0{numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*}: + `%%%%%`(numtype, binop_, num_, num__0, ret_val) + -- wf_binop_: `%%`(numtype, binop_) + -- wf_num_: `%%`(numtype, num_) + -- wf_num_: `%%`(numtype, num__0) + -- if (ret_val = $binop_(numtype, binop_, num_, num__0)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -8731,124 +9466,108 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#66)*{iter_0#66 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#65)))*{iter_0#65 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#33)*{iter_0#33 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#68)*{iter_0#68 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#67)))*{iter_0#67 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#70)*{iter_0#70 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#69)))*{iter_0#69 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#35)*{iter_0#35 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#72)*{iter_0#72 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#71)))*{iter_0#71 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#74)*{iter_0#74 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#73)))*{iter_0#73 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#37)*{iter_0#37 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#76)*{iter_0#76 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#75)))*{iter_0#75 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#38)*{iter_0#38 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#78)*{iter_0#78 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#77)))*{iter_0#77 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#39)*{iter_0#39 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#80)*{iter_0#80 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#79)))*{iter_0#79 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#40)*{iter_0#40 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#82)*{iter_0#82 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#81)))*{iter_0#81 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#41)*{iter_0#41 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#84)*{iter_0#84 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#83)))*{iter_0#83 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#86)*{iter_0#86 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#85)))*{iter_0#85 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#43)*{iter_0#43 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#88)*{iter_0#88 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#87)))*{iter_0#87 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#90)*{iter_0#90 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#89)))*{iter_0#89 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#45)*{iter_0#45 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#92)*{iter_0#92 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#91)))*{iter_0#91 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#94)*{iter_0#94 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#93)))*{iter_0#93 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#47)*{iter_0#47 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#96)*{iter_0#96 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#95)))*{iter_0#95 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))] -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))] -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))] -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))] -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))] -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))] -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))] -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))] -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cvtop___is_wf: `%%%%%`(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cvtop___is_wf0{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*}: + `%%%%%`(numtype_1, numtype_2, cvtop__, num_, ret_val) + -- wf_cvtop__: `%%%`(numtype_1, numtype_2, cvtop__) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $cvtop__(numtype_1, numtype_2, cvtop__, num_)) + -- (wf_num_: `%%`(numtype_2, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_) : lane_* +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lanes__is_wf: `%%%`(shape : shape, vec_ : vec_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lanes__is_wf0{shape : shape, vec_ : vec_, ret_val : lane_*}: + `%%%`(shape, vec_, ret_val) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(128, vec_) + -- if (ret_val = $lanes_(shape, vec_)) + -- (wf_lane_: `%%`($lanetype(shape), ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $inv_lanes_(shape : shape, lane_*) : vec_ @@ -9061,458 +9780,582 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#1*{c#1 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#2*{c#2 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#5)*{c#5 <- `c*`})] + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#4)*{c#4 <- `c*`})] -- let{`c_1*` : lane_*} c_1#1*{c_1#1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) -- let{`c*` : iN*} c#3*{c#3 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#2)))*{c_1#2 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#5))*{iter#5 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#3)))))*{c_1#3 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#4)))*{c#4 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#8)*{c#8 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#3*{c_1#3 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#6*{c#6 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#4)))*{c_1#4 <- `c_1*`} + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#6)*{c#6 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#4*{c_1#4 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#5*{c#5 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#5)))*{c_1#5 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#6))*{iter#6 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#6)))))*{c_1#6 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#7)))*{c#7 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#11)*{c#11 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#5*{c_1#5 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#9*{c#9 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#6)))*{c_1#6 <- `c_1*`} + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#8)*{c#8 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#7*{c_1#7 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#7*{c#7 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#8)))*{c_1#8 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#7))*{iter#7 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#9)))))*{c_1#9 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#10)))*{c#10 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#14)*{c#14 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#7*{c_1#7 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#12*{c#12 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#8)))*{c_1#8 <- `c_1*`} + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#10)*{c#10 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#10*{c_1#10 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#9*{c#9 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#11)))*{c_1#11 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#8))*{iter#8 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#12)))))*{c_1#12 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#13)))*{c#13 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#16*{c#16 <- `c*#2`})*{`c*#2` <- `c**`} - -- let{`c_1*` : lane_*} c_1#9*{c_1#9 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) - -- let{`c**` : lane_**} c#15*{c#15 <- `c*#1`}*{`c*#1` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#97))*{iter_0#97 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#10)))))}*{c_1#10 <- `c_1*`}) + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#12*{c#12 <- `c*#2`})*{`c*#2` <- `c**`} + -- let{`c_1*` : lane_*} c_1#13*{c_1#13 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#11*{c#11 <- `c*#1`}*{`c*#1` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#49))*{iter_0#49 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#14)))))}*{c_1#14 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#9))*{iter#9 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#11))*{iter#11 <- iter#10}*{iter#10 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#50))*{iter_0#50 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#15)))))}*{c_1#15 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#12))*{iter#12 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#16)))))}*{c_1#16 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#98))))*{iter_0#98 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#11)))))}*{c_1#11 <- `c_1*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#18*{c#18 <- `c*#4`})*{`c*#4` <- `c**`} - -- let{`c_1*` : lane_*} c_1#12*{c_1#12 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) - -- let{`c**` : lane_**} c#17*{c#17 <- `c*#3`}*{`c*#3` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#99))*{iter_0#99 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#13)))))}*{c_1#13 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#51))))*{iter_0#51 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#17)))))}*{c_1#17 <- `c_1*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#14*{c#14 <- `c*#4`})*{`c*#4` <- `c**`} + -- let{`c_1*` : lane_*} c_1#18*{c_1#18 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#13*{c#13 <- `c*#3`}*{`c*#3` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#52))*{iter_0#52 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#19)))))}*{c_1#19 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#13))*{iter#13 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#15))*{iter#15 <- iter#14}*{iter#14 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#53))*{iter_0#53 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#20)))))}*{c_1#20 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#16))*{iter#16 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#21)))))}*{c_1#21 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#100))))*{iter_0#100 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#14)))))}*{c_1#14 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#54))))*{iter_0#54 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#22)))))}*{c_1#22 <- `c_1*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#21)*{c#21 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#15*{c_1#15 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#16)*{c#16 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#23*{c_1#23 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2#1*{c_2#1 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#19*{c#19 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#16)), !($proj_lane__2(c_2#2)))*{c_1#16 <- `c_1*`, c_2#2 <- `c_2*`} + -- let{`c*` : iN*} c#15*{c#15 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#24)), !($proj_lane__2(c_2#2)))*{c_1#24 <- `c_1*`, c_2#2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#17))*{iter#17 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#18))*{iter#18 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#25)), !($proj_lane__2(c_2#3)))))*{c_1#25 <- `c_1*`, c_2#3 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#20)))*{c#20 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#24)*{c#24 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#17*{c_1#17 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#3*{c_2#3 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#22*{c#22 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#18)), !($proj_lane__2(c_2#4)))*{c_1#18 <- `c_1*`, c_2#4 <- `c_2*`} + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#18)*{c#18 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#26*{c_1#26 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#4*{c_2#4 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#17*{c#17 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#27)), !($proj_lane__2(c_2#5)))*{c_1#27 <- `c_1*`, c_2#5 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#19))*{iter#19 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#20))*{iter#20 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#28)), !($proj_lane__2(c_2#6)))))*{c_1#28 <- `c_1*`, c_2#6 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#23)))*{c#23 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#27)*{c#27 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#19*{c_1#19 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#5*{c_2#5 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#25*{c#25 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#20)), !($proj_lane__2(c_2#6)))*{c_1#20 <- `c_1*`, c_2#6 <- `c_2*`} + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#20)*{c#20 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#29*{c_1#29 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#7*{c_2#7 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#19*{c#19 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#30)), !($proj_lane__2(c_2#8)))*{c_1#30 <- `c_1*`, c_2#8 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#21))*{iter#21 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#22))*{iter#22 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#31)), !($proj_lane__2(c_2#9)))))*{c_1#31 <- `c_1*`, c_2#9 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#26)))*{c#26 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#30)*{c#30 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#21*{c_1#21 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#7*{c_2#7 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#28*{c#28 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#22)), !($proj_lane__2(c_2#8)))*{c_1#22 <- `c_1*`, c_2#8 <- `c_2*`} + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#22)*{c#22 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#32*{c_1#32 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#10*{c_2#10 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#21*{c#21 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#33)), !($proj_lane__2(c_2#11)))*{c_1#33 <- `c_1*`, c_2#11 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#23))*{iter#23 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#24))*{iter#24 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#34)), !($proj_lane__2(c_2#12)))))*{c_1#34 <- `c_1*`, c_2#12 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#29)))*{c#29 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#33)*{c#33 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#23*{c_1#23 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#9*{c_2#9 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#31*{c#31 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#24)), !($proj_lane__2(c_2#10)))*{c_1#24 <- `c_1*`, c_2#10 <- `c_2*`} + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#24)*{c#24 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#35*{c_1#35 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#13*{c_2#13 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#23*{c#23 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#36)), !($proj_lane__2(c_2#14)))*{c_1#36 <- `c_1*`, c_2#14 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#25))*{iter#25 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#26))*{iter#26 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#37)), !($proj_lane__2(c_2#15)))))*{c_1#37 <- `c_1*`, c_2#15 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#32)))*{c#32 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#36)*{c#36 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#25*{c_1#25 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#11*{c_2#11 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#34*{c#34 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#26)), !($proj_lane__2(c_2#12)))*{c_1#26 <- `c_1*`, c_2#12 <- `c_2*`} + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#26)*{c#26 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#38*{c_1#38 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#16*{c_2#16 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#25*{c#25 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#39)), !($proj_lane__2(c_2#17)))*{c_1#39 <- `c_1*`, c_2#17 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#27))*{iter#27 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#28))*{iter#28 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#40)), !($proj_lane__2(c_2#18)))))*{c_1#40 <- `c_1*`, c_2#18 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#35)))*{c#35 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#39)*{c#39 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#27*{c_1#27 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#13*{c_2#13 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#37*{c#37 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#28)), !($proj_lane__2(c_2#14)))*{c_1#28 <- `c_1*`, c_2#14 <- `c_2*`} + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#28)*{c#28 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#41*{c_1#41 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#19*{c_2#19 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#27*{c#27 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#42)), !($proj_lane__2(c_2#20)))*{c_1#42 <- `c_1*`, c_2#20 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#29))*{iter#29 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#30))*{iter#30 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#43)), !($proj_lane__2(c_2#21)))))*{c_1#43 <- `c_1*`, c_2#21 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#38)))*{c#38 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#42)*{c#42 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#29*{c_1#29 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#15*{c_2#15 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#40*{c#40 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#30)), !($proj_lane__2(c_2#16)))*{c_1#30 <- `c_1*`, c_2#16 <- `c_2*`} + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#30)*{c#30 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#44*{c_1#44 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#22*{c_2#22 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#29*{c#29 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#45)), !($proj_lane__2(c_2#23)))*{c_1#45 <- `c_1*`, c_2#23 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#31))*{iter#31 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#32))*{iter#32 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#46)), !($proj_lane__2(c_2#24)))))*{c_1#46 <- `c_1*`, c_2#24 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#41)))*{c#41 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#44*{c#44 <- `c*#6`})*{`c*#6` <- `c**`} - -- let{`c_1*` : lane_*} c_1#31*{c_1#31 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#17*{c_2#17 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#43*{c#43 <- `c*#5`}*{`c*#5` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#101)*{iter_0#101 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#32)), !($proj_lane__2(c_2#18)))}*{c_1#32 <- `c_1*`, c_2#18 <- `c_2*`}) + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#32*{c#32 <- `c*#6`})*{`c*#6` <- `c**`} + -- let{`c_1*` : lane_*} c_1#47*{c_1#47 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#25*{c_2#25 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#31*{c#31 <- `c*#5`}*{`c*#5` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#55)*{iter_0#55 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#48)), !($proj_lane__2(c_2#26)))}*{c_1#48 <- `c_1*`, c_2#26 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#33))*{iter#33 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#34))*{iter#34 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), iter#36))*{iter#36 <- iter#35}*{iter#35 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#56)*{iter_0#56 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#49)), !($proj_lane__2(c_2#27)))}*{c_1#49 <- `c_1*`, c_2#27 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#37))*{iter#37 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#50)), !($proj_lane__2(c_2#28)))}*{c_1#50 <- `c_1*`, c_2#28 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#102)))*{iter_0#102 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#33)), !($proj_lane__2(c_2#19)))}*{c_1#33 <- `c_1*`, c_2#19 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#57)))*{iter_0#57 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#51)), !($proj_lane__2(c_2#29)))}*{c_1#51 <- `c_1*`, c_2#29 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#46*{c#46 <- `c*#8`})*{`c*#8` <- `c**`} - -- let{`c_1*` : lane_*} c_1#34*{c_1#34 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#20*{c_2#20 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#45*{c#45 <- `c*#7`}*{`c*#7` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#103)*{iter_0#103 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#35)), !($proj_lane__2(c_2#21)))}*{c_1#35 <- `c_1*`, c_2#21 <- `c_2*`}) + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#34*{c#34 <- `c*#8`})*{`c*#8` <- `c**`} + -- let{`c_1*` : lane_*} c_1#52*{c_1#52 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#30*{c_2#30 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#33*{c#33 <- `c*#7`}*{`c*#7` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#58)*{iter_0#58 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#53)), !($proj_lane__2(c_2#31)))}*{c_1#53 <- `c_1*`, c_2#31 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#38))*{iter#38 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#39))*{iter#39 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), iter#41))*{iter#41 <- iter#40}*{iter#40 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#59)*{iter_0#59 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#54)), !($proj_lane__2(c_2#32)))}*{c_1#54 <- `c_1*`, c_2#32 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#42))*{iter#42 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#55)), !($proj_lane__2(c_2#33)))}*{c_1#55 <- `c_1*`, c_2#33 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#104)))*{iter_0#104 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#36)), !($proj_lane__2(c_2#22)))}*{c_1#36 <- `c_1*`, c_2#22 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#48*{c#48 <- `c*#10`})*{`c*#10` <- `c**`} - -- let{`c_1*` : lane_*} c_1#37*{c_1#37 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#23*{c_2#23 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#47*{c#47 <- `c*#9`}*{`c*#9` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#105)*{iter_0#105 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#38)), !($proj_lane__2(c_2#24)))}*{c_1#38 <- `c_1*`, c_2#24 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#60)))*{iter_0#60 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#56)), !($proj_lane__2(c_2#34)))}*{c_1#56 <- `c_1*`, c_2#34 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#36*{c#36 <- `c*#10`})*{`c*#10` <- `c**`} + -- let{`c_1*` : lane_*} c_1#57*{c_1#57 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#35*{c_2#35 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#35*{c#35 <- `c*#9`}*{`c*#9` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#61)*{iter_0#61 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#58)), !($proj_lane__2(c_2#36)))}*{c_1#58 <- `c_1*`, c_2#36 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#43))*{iter#43 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#44))*{iter#44 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), iter#46))*{iter#46 <- iter#45}*{iter#45 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#62)*{iter_0#62 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#59)), !($proj_lane__2(c_2#37)))}*{c_1#59 <- `c_1*`, c_2#37 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#47))*{iter#47 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#60)), !($proj_lane__2(c_2#38)))}*{c_1#60 <- `c_1*`, c_2#38 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#106)))*{iter_0#106 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#39)), !($proj_lane__2(c_2#25)))}*{c_1#39 <- `c_1*`, c_2#25 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#50*{c#50 <- `c*#12`})*{`c*#12` <- `c**`} - -- let{`c_1*` : lane_*} c_1#40*{c_1#40 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#26*{c_2#26 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#49*{c#49 <- `c*#11`}*{`c*#11` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#107)*{iter_0#107 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#41)), !($proj_lane__2(c_2#27)))}*{c_1#41 <- `c_1*`, c_2#27 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#63)))*{iter_0#63 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#61)), !($proj_lane__2(c_2#39)))}*{c_1#61 <- `c_1*`, c_2#39 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#38*{c#38 <- `c*#12`})*{`c*#12` <- `c**`} + -- let{`c_1*` : lane_*} c_1#62*{c_1#62 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#40*{c_2#40 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#37*{c#37 <- `c*#11`}*{`c*#11` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#64)*{iter_0#64 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#63)), !($proj_lane__2(c_2#41)))}*{c_1#63 <- `c_1*`, c_2#41 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#48))*{iter#48 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#49))*{iter#49 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), iter#51))*{iter#51 <- iter#50}*{iter#50 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#65)*{iter_0#65 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#64)), !($proj_lane__2(c_2#42)))}*{c_1#64 <- `c_1*`, c_2#42 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#52))*{iter#52 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#65)), !($proj_lane__2(c_2#43)))}*{c_1#65 <- `c_1*`, c_2#43 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#108)))*{iter_0#108 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#42)), !($proj_lane__2(c_2#28)))}*{c_1#42 <- `c_1*`, c_2#28 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#66)))*{iter_0#66 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#66)), !($proj_lane__2(c_2#44)))}*{c_1#66 <- `c_1*`, c_2#44 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#52*{c#52 <- `c*#14`})*{`c*#14` <- `c**`} - -- let{`c_1*` : lane_*} c_1#43*{c_1#43 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#29*{c_2#29 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#51*{c#51 <- `c*#13`}*{`c*#13` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#109))*{iter_0#109 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#44)))), !($proj_num__1(!($proj_lane__0(c_2#30)))))}*{c_1#44 <- `c_1*`, c_2#30 <- `c_2*`}) + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#40*{c#40 <- `c*#14`})*{`c*#14` <- `c**`} + -- let{`c_1*` : lane_*} c_1#67*{c_1#67 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#45*{c_2#45 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#39*{c#39 <- `c*#13`}*{`c*#13` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#67))*{iter_0#67 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#68)))), !($proj_num__1(!($proj_lane__0(c_2#46)))))}*{c_1#68 <- `c_1*`, c_2#46 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#53))*{iter#53 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#54))*{iter#54 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#56))*{iter#56 <- iter#55}*{iter#55 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#68))*{iter_0#68 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#69)))), !($proj_num__1(!($proj_lane__0(c_2#47)))))}*{c_1#69 <- `c_1*`, c_2#47 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#57))*{iter#57 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#70)))), !($proj_num__1(!($proj_lane__0(c_2#48)))))}*{c_1#70 <- `c_1*`, c_2#48 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#110))))*{iter_0#110 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#45)))), !($proj_num__1(!($proj_lane__0(c_2#31)))))}*{c_1#45 <- `c_1*`, c_2#31 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#69))))*{iter_0#69 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#71)))), !($proj_num__1(!($proj_lane__0(c_2#49)))))}*{c_1#71 <- `c_1*`, c_2#49 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#54*{c#54 <- `c*#16`})*{`c*#16` <- `c**`} - -- let{`c_1*` : lane_*} c_1#46*{c_1#46 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#32*{c_2#32 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#53*{c#53 <- `c*#15`}*{`c*#15` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#111))*{iter_0#111 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#47)))), !($proj_num__1(!($proj_lane__0(c_2#33)))))}*{c_1#47 <- `c_1*`, c_2#33 <- `c_2*`}) + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#42*{c#42 <- `c*#16`})*{`c*#16` <- `c**`} + -- let{`c_1*` : lane_*} c_1#72*{c_1#72 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#50*{c_2#50 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#41*{c#41 <- `c*#15`}*{`c*#15` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#70))*{iter_0#70 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#73)))), !($proj_num__1(!($proj_lane__0(c_2#51)))))}*{c_1#73 <- `c_1*`, c_2#51 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#58))*{iter#58 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#59))*{iter#59 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#61))*{iter#61 <- iter#60}*{iter#60 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#71))*{iter_0#71 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#74)))), !($proj_num__1(!($proj_lane__0(c_2#52)))))}*{c_1#74 <- `c_1*`, c_2#52 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#62))*{iter#62 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#75)))), !($proj_num__1(!($proj_lane__0(c_2#53)))))}*{c_1#75 <- `c_1*`, c_2#53 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#112))))*{iter_0#112 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#48)))), !($proj_num__1(!($proj_lane__0(c_2#34)))))}*{c_1#48 <- `c_1*`, c_2#34 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#72))))*{iter_0#72 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#76)))), !($proj_num__1(!($proj_lane__0(c_2#54)))))}*{c_1#76 <- `c_1*`, c_2#54 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#56*{c#56 <- `c*#18`})*{`c*#18` <- `c**`} - -- let{`c_1*` : lane_*} c_1#49*{c_1#49 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#35*{c_2#35 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#44*{c#44 <- `c*#18`})*{`c*#18` <- `c**`} + -- let{`c_1*` : lane_*} c_1#77*{c_1#77 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#55*{c_2#55 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) -- let{`c_3*` : lane_*} c_3#1*{c_3#1 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#55*{c#55 <- `c*#17`}*{`c*#17` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#113)*{iter_0#113 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#50)), !($proj_lane__2(c_2#36)), !($proj_lane__2(c_3#2)))}*{c_1#50 <- `c_1*`, c_2#36 <- `c_2*`, c_3#2 <- `c_3*`}) + -- let{`c**` : lane_**} c#43*{c#43 <- `c*#17`}*{`c*#17` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#73)*{iter_0#73 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#78)), !($proj_lane__2(c_2#56)), !($proj_lane__2(c_3#2)))}*{c_1#78 <- `c_1*`, c_2#56 <- `c_2*`, c_3#2 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#63))*{iter#63 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#64))*{iter#64 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#65))*{iter#65 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), iter#67))*{iter#67 <- iter#66}*{iter#66 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#74)*{iter_0#74 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#79)), !($proj_lane__2(c_2#57)), !($proj_lane__2(c_3#3)))}*{c_1#79 <- `c_1*`, c_2#57 <- `c_2*`, c_3#3 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#68))*{iter#68 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#80)), !($proj_lane__2(c_2#58)), !($proj_lane__2(c_3#4)))}*{c_1#80 <- `c_1*`, c_2#58 <- `c_2*`, c_3#4 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#114)))*{iter_0#114 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#51)), !($proj_lane__2(c_2#37)), !($proj_lane__2(c_3#3)))}*{c_1#51 <- `c_1*`, c_2#37 <- `c_2*`, c_3#3 <- `c_3*`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#75)))*{iter_0#75 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#81)), !($proj_lane__2(c_2#59)), !($proj_lane__2(c_3#5)))}*{c_1#81 <- `c_1*`, c_2#59 <- `c_2*`, c_3#5 <- `c_3*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#58*{c#58 <- `c*#20`})*{`c*#20` <- `c**`} - -- let{`c_1*` : lane_*} c_1#52*{c_1#52 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#38*{c_2#38 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) - -- let{`c_3*` : lane_*} c_3#4*{c_3#4 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#57*{c#57 <- `c*#19`}*{`c*#19` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#115)*{iter_0#115 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#53)), !($proj_lane__2(c_2#39)), !($proj_lane__2(c_3#5)))}*{c_1#53 <- `c_1*`, c_2#39 <- `c_2*`, c_3#5 <- `c_3*`}) + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#46*{c#46 <- `c*#20`})*{`c*#20` <- `c**`} + -- let{`c_1*` : lane_*} c_1#82*{c_1#82 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#60*{c_2#60 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#6*{c_3#6 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#45*{c#45 <- `c*#19`}*{`c*#19` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#76)*{iter_0#76 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#83)), !($proj_lane__2(c_2#61)), !($proj_lane__2(c_3#7)))}*{c_1#83 <- `c_1*`, c_2#61 <- `c_2*`, c_3#7 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#69))*{iter#69 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#70))*{iter#70 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#71))*{iter#71 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), iter#73))*{iter#73 <- iter#72}*{iter#72 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#77)*{iter_0#77 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#84)), !($proj_lane__2(c_2#62)), !($proj_lane__2(c_3#8)))}*{c_1#84 <- `c_1*`, c_2#62 <- `c_2*`, c_3#8 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#74))*{iter#74 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#85)), !($proj_lane__2(c_2#63)), !($proj_lane__2(c_3#9)))}*{c_1#85 <- `c_1*`, c_2#63 <- `c_2*`, c_3#9 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#116)))*{iter_0#116 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#54)), !($proj_lane__2(c_2#40)), !($proj_lane__2(c_3#6)))}*{c_1#54 <- `c_1*`, c_2#40 <- `c_2*`, c_3#6 <- `c_3*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#60*{c#60 <- `c*#22`})*{`c*#22` <- `c**`} - -- let{`c_1*` : lane_*} c_1#55*{c_1#55 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#41*{c_2#41 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) - -- let{`c_3*` : lane_*} c_3#7*{c_3#7 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#59*{c#59 <- `c*#21`}*{`c*#21` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#117)*{iter_0#117 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#56)), !($proj_lane__2(c_2#42)), !($proj_lane__2(c_3#8)))}*{c_1#56 <- `c_1*`, c_2#42 <- `c_2*`, c_3#8 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#78)))*{iter_0#78 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#86)), !($proj_lane__2(c_2#64)), !($proj_lane__2(c_3#10)))}*{c_1#86 <- `c_1*`, c_2#64 <- `c_2*`, c_3#10 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#48*{c#48 <- `c*#22`})*{`c*#22` <- `c**`} + -- let{`c_1*` : lane_*} c_1#87*{c_1#87 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#65*{c_2#65 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#11*{c_3#11 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#47*{c#47 <- `c*#21`}*{`c*#21` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#79)*{iter_0#79 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#88)), !($proj_lane__2(c_2#66)), !($proj_lane__2(c_3#12)))}*{c_1#88 <- `c_1*`, c_2#66 <- `c_2*`, c_3#12 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#75))*{iter#75 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#76))*{iter#76 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#77))*{iter#77 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), iter#79))*{iter#79 <- iter#78}*{iter#78 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#80)*{iter_0#80 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#89)), !($proj_lane__2(c_2#67)), !($proj_lane__2(c_3#13)))}*{c_1#89 <- `c_1*`, c_2#67 <- `c_2*`, c_3#13 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#80))*{iter#80 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#90)), !($proj_lane__2(c_2#68)), !($proj_lane__2(c_3#14)))}*{c_1#90 <- `c_1*`, c_2#68 <- `c_2*`, c_3#14 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#118)))*{iter_0#118 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#57)), !($proj_lane__2(c_2#43)), !($proj_lane__2(c_3#9)))}*{c_1#57 <- `c_1*`, c_2#43 <- `c_2*`, c_3#9 <- `c_3*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#62*{c#62 <- `c*#24`})*{`c*#24` <- `c**`} - -- let{`c_1*` : lane_*} c_1#58*{c_1#58 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#44*{c_2#44 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) - -- let{`c_3*` : lane_*} c_3#10*{c_3#10 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#61*{c#61 <- `c*#23`}*{`c*#23` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#119)*{iter_0#119 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#59)), !($proj_lane__2(c_2#45)), !($proj_lane__2(c_3#11)))}*{c_1#59 <- `c_1*`, c_2#45 <- `c_2*`, c_3#11 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#81)))*{iter_0#81 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#91)), !($proj_lane__2(c_2#69)), !($proj_lane__2(c_3#15)))}*{c_1#91 <- `c_1*`, c_2#69 <- `c_2*`, c_3#15 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#50*{c#50 <- `c*#24`})*{`c*#24` <- `c**`} + -- let{`c_1*` : lane_*} c_1#92*{c_1#92 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#70*{c_2#70 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#16*{c_3#16 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#49*{c#49 <- `c*#23`}*{`c*#23` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#82)*{iter_0#82 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#93)), !($proj_lane__2(c_2#71)), !($proj_lane__2(c_3#17)))}*{c_1#93 <- `c_1*`, c_2#71 <- `c_2*`, c_3#17 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#81))*{iter#81 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#82))*{iter#82 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#83))*{iter#83 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), iter#85))*{iter#85 <- iter#84}*{iter#84 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#83)*{iter_0#83 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#94)), !($proj_lane__2(c_2#72)), !($proj_lane__2(c_3#18)))}*{c_1#94 <- `c_1*`, c_2#72 <- `c_2*`, c_3#18 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#86))*{iter#86 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#95)), !($proj_lane__2(c_2#73)), !($proj_lane__2(c_3#19)))}*{c_1#95 <- `c_1*`, c_2#73 <- `c_2*`, c_3#19 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#120)))*{iter_0#120 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#60)), !($proj_lane__2(c_2#46)), !($proj_lane__2(c_3#12)))}*{c_1#60 <- `c_1*`, c_2#46 <- `c_2*`, c_3#12 <- `c_3*`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#84)))*{iter_0#84 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#96)), !($proj_lane__2(c_2#74)), !($proj_lane__2(c_3#20)))}*{c_1#96 <- `c_1*`, c_2#74 <- `c_2*`, c_3#20 <- `c_3*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#64*{c#64 <- `c*#26`})*{`c*#26` <- `c**`} - -- let{`c_1*` : lane_*} c_1#61*{c_1#61 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#47*{c_2#47 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) - -- let{`c_3*` : lane_*} c_3#13*{c_3#13 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#63*{c#63 <- `c*#25`}*{`c*#25` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#121))*{iter_0#121 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#62)))), !($proj_num__1(!($proj_lane__0(c_2#48)))), !($proj_num__1(!($proj_lane__0(c_3#14)))))}*{c_1#62 <- `c_1*`, c_2#48 <- `c_2*`, c_3#14 <- `c_3*`}) + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#52*{c#52 <- `c*#26`})*{`c*#26` <- `c**`} + -- let{`c_1*` : lane_*} c_1#97*{c_1#97 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#75*{c_2#75 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#21*{c_3#21 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#51*{c#51 <- `c*#25`}*{`c*#25` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#85))*{iter_0#85 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#98)))), !($proj_num__1(!($proj_lane__0(c_2#76)))), !($proj_num__1(!($proj_lane__0(c_3#22)))))}*{c_1#98 <- `c_1*`, c_2#76 <- `c_2*`, c_3#22 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#87))*{iter#87 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#88))*{iter#88 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#89))*{iter#89 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#91))*{iter#91 <- iter#90}*{iter#90 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#86))*{iter_0#86 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#99)))), !($proj_num__1(!($proj_lane__0(c_2#77)))), !($proj_num__1(!($proj_lane__0(c_3#23)))))}*{c_1#99 <- `c_1*`, c_2#77 <- `c_2*`, c_3#23 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#92))*{iter#92 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#100)))), !($proj_num__1(!($proj_lane__0(c_2#78)))), !($proj_num__1(!($proj_lane__0(c_3#24)))))}*{c_1#100 <- `c_1*`, c_2#78 <- `c_2*`, c_3#24 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#122))))*{iter_0#122 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#63)))), !($proj_num__1(!($proj_lane__0(c_2#49)))), !($proj_num__1(!($proj_lane__0(c_3#15)))))}*{c_1#63 <- `c_1*`, c_2#49 <- `c_2*`, c_3#15 <- `c_3*`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#87))))*{iter_0#87 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#101)))), !($proj_num__1(!($proj_lane__0(c_2#79)))), !($proj_num__1(!($proj_lane__0(c_3#25)))))}*{c_1#101 <- `c_1*`, c_2#79 <- `c_2*`, c_3#25 <- `c_3*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#66*{c#66 <- `c*#28`})*{`c*#28` <- `c**`} - -- let{`c_1*` : lane_*} c_1#64*{c_1#64 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#50*{c_2#50 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) - -- let{`c_3*` : lane_*} c_3#16*{c_3#16 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#65*{c#65 <- `c*#27`}*{`c*#27` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#123))*{iter_0#123 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#65)))), !($proj_num__1(!($proj_lane__0(c_2#51)))), !($proj_num__1(!($proj_lane__0(c_3#17)))))}*{c_1#65 <- `c_1*`, c_2#51 <- `c_2*`, c_3#17 <- `c_3*`}) + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#54*{c#54 <- `c*#28`})*{`c*#28` <- `c**`} + -- let{`c_1*` : lane_*} c_1#102*{c_1#102 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#80*{c_2#80 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#26*{c_3#26 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#53*{c#53 <- `c*#27`}*{`c*#27` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#88))*{iter_0#88 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#103)))), !($proj_num__1(!($proj_lane__0(c_2#81)))), !($proj_num__1(!($proj_lane__0(c_3#27)))))}*{c_1#103 <- `c_1*`, c_2#81 <- `c_2*`, c_3#27 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#93))*{iter#93 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#94))*{iter#94 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#95))*{iter#95 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#97))*{iter#97 <- iter#96}*{iter#96 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#89))*{iter_0#89 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#104)))), !($proj_num__1(!($proj_lane__0(c_2#82)))), !($proj_num__1(!($proj_lane__0(c_3#28)))))}*{c_1#104 <- `c_1*`, c_2#82 <- `c_2*`, c_3#28 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#98))*{iter#98 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#105)))), !($proj_num__1(!($proj_lane__0(c_2#83)))), !($proj_num__1(!($proj_lane__0(c_3#29)))))}*{c_1#105 <- `c_1*`, c_2#83 <- `c_2*`, c_3#29 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#124))))*{iter_0#124 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#66)))), !($proj_num__1(!($proj_lane__0(c_2#52)))), !($proj_num__1(!($proj_lane__0(c_3#18)))))}*{c_1#66 <- `c_1*`, c_2#52 <- `c_2*`, c_3#18 <- `c_3*`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#90))))*{iter_0#90 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#106)))), !($proj_num__1(!($proj_lane__0(c_2#84)))), !($proj_num__1(!($proj_lane__0(c_3#30)))))}*{c_1#106 <- `c_1*`, c_2#84 <- `c_2*`, c_3#30 <- `c_3*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#69)*{c#69 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#67*{c_1#67 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#53*{c_2#53 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#67*{c#67 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#68)), !($proj_lane__2(c_2#54)))).0))*{c_1#68 <- `c_1*`, c_2#54 <- `c_2*`} + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#56)*{c#56 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#107*{c_1#107 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#85*{c_2#85 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#55*{c#55 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#108)), !($proj_lane__2(c_2#86)))).0))*{c_1#108 <- `c_1*`, c_2#86 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#99))*{iter#99 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#100))*{iter#100 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#109)), !($proj_lane__2(c_2#87)))).0))))*{c_1#109 <- `c_1*`, c_2#87 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#68)))*{c#68 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#69)), !($proj_lane__2(c_2#55)))).0)))*{c_1#69 <- `c_1*`, c_2#55 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#72)*{c#72 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#70*{c_1#70 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#56*{c_2#56 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#70*{c#70 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#71)), !($proj_lane__2(c_2#57)))).0))*{c_1#71 <- `c_1*`, c_2#57 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#110)), !($proj_lane__2(c_2#88)))).0)))*{c_1#110 <- `c_1*`, c_2#88 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#58)*{c#58 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#111*{c_1#111 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#89*{c_2#89 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#57*{c#57 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#112)), !($proj_lane__2(c_2#90)))).0))*{c_1#112 <- `c_1*`, c_2#90 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#101))*{iter#101 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#102))*{iter#102 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#113)), !($proj_lane__2(c_2#91)))).0))))*{c_1#113 <- `c_1*`, c_2#91 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#71)))*{c#71 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#72)), !($proj_lane__2(c_2#58)))).0)))*{c_1#72 <- `c_1*`, c_2#58 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#75)*{c#75 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#73*{c_1#73 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#59*{c_2#59 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#73*{c#73 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#74)), !($proj_lane__2(c_2#60)))).0))*{c_1#74 <- `c_1*`, c_2#60 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#114)), !($proj_lane__2(c_2#92)))).0)))*{c_1#114 <- `c_1*`, c_2#92 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#60)*{c#60 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#115*{c_1#115 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#93*{c_2#93 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#59*{c#59 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#116)), !($proj_lane__2(c_2#94)))).0))*{c_1#116 <- `c_1*`, c_2#94 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#103))*{iter#103 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#104))*{iter#104 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#117)), !($proj_lane__2(c_2#95)))).0))))*{c_1#117 <- `c_1*`, c_2#95 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#74)))*{c#74 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#75)), !($proj_lane__2(c_2#61)))).0)))*{c_1#75 <- `c_1*`, c_2#61 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#118)), !($proj_lane__2(c_2#96)))).0)))*{c_1#118 <- `c_1*`, c_2#96 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#78)*{c#78 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#76*{c_1#76 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#62*{c_2#62 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#76*{c#76 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#77)), !($proj_lane__2(c_2#63)))).0))*{c_1#77 <- `c_1*`, c_2#63 <- `c_2*`} + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#62)*{c#62 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#119*{c_1#119 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#97*{c_2#97 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#61*{c#61 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#120)), !($proj_lane__2(c_2#98)))).0))*{c_1#120 <- `c_1*`, c_2#98 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#105))*{iter#105 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#106))*{iter#106 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#121)), !($proj_lane__2(c_2#99)))).0))))*{c_1#121 <- `c_1*`, c_2#99 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#77)))*{c#77 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#78)), !($proj_lane__2(c_2#64)))).0)))*{c_1#78 <- `c_1*`, c_2#64 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#122)), !($proj_lane__2(c_2#100)))).0)))*{c_1#122 <- `c_1*`, c_2#100 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#81)*{c#81 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#79*{c_1#79 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#65*{c_2#65 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#79*{c#79 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#80)), !($proj_lane__2(c_2#66)))).0))*{c_1#80 <- `c_1*`, c_2#66 <- `c_2*`} + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#64)*{c#64 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#123*{c_1#123 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#101*{c_2#101 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#63*{c#63 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#124)), !($proj_lane__2(c_2#102)))).0))*{c_1#124 <- `c_1*`, c_2#102 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#107))*{iter#107 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#108))*{iter#108 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#125)), !($proj_lane__2(c_2#103)))).0))))*{c_1#125 <- `c_1*`, c_2#103 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#80)))*{c#80 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#81)), !($proj_lane__2(c_2#67)))).0)))*{c_1#81 <- `c_1*`, c_2#67 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#126)), !($proj_lane__2(c_2#104)))).0)))*{c_1#126 <- `c_1*`, c_2#104 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#84)*{c#84 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#82*{c_1#82 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#68*{c_2#68 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#82*{c#82 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#83)), !($proj_lane__2(c_2#69)))).0))*{c_1#83 <- `c_1*`, c_2#69 <- `c_2*`} + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#66)*{c#66 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#127*{c_1#127 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#105*{c_2#105 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#65*{c#65 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#128)), !($proj_lane__2(c_2#106)))).0))*{c_1#128 <- `c_1*`, c_2#106 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#109))*{iter#109 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#110))*{iter#110 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#129)), !($proj_lane__2(c_2#107)))).0))))*{c_1#129 <- `c_1*`, c_2#107 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#83)))*{c#83 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#84)), !($proj_lane__2(c_2#70)))).0)))*{c_1#84 <- `c_1*`, c_2#70 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#87)*{c#87 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#85*{c_1#85 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#71*{c_2#71 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#85*{c#85 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#86)), !($proj_lane__2(c_2#72)))).0))*{c_1#86 <- `c_1*`, c_2#72 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#130)), !($proj_lane__2(c_2#108)))).0)))*{c_1#130 <- `c_1*`, c_2#108 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#68)*{c#68 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#131*{c_1#131 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#109*{c_2#109 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#67*{c#67 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#132)), !($proj_lane__2(c_2#110)))).0))*{c_1#132 <- `c_1*`, c_2#110 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#111))*{iter#111 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#112))*{iter#112 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#133)), !($proj_lane__2(c_2#111)))).0))))*{c_1#133 <- `c_1*`, c_2#111 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#86)))*{c#86 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#87)), !($proj_lane__2(c_2#73)))).0)))*{c_1#87 <- `c_1*`, c_2#73 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#90)*{c#90 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#88*{c_1#88 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#74*{c_2#74 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#88*{c#88 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#89)), !($proj_lane__2(c_2#75)))).0))*{c_1#89 <- `c_1*`, c_2#75 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#134)), !($proj_lane__2(c_2#112)))).0)))*{c_1#134 <- `c_1*`, c_2#112 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#70)*{c#70 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#135*{c_1#135 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#113*{c_2#113 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#69*{c#69 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#136)), !($proj_lane__2(c_2#114)))).0))*{c_1#136 <- `c_1*`, c_2#114 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#113))*{iter#113 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#114))*{iter#114 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#137)), !($proj_lane__2(c_2#115)))).0))))*{c_1#137 <- `c_1*`, c_2#115 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#89)))*{c#89 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#90)), !($proj_lane__2(c_2#76)))).0)))*{c_1#90 <- `c_1*`, c_2#76 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#138)), !($proj_lane__2(c_2#116)))).0)))*{c_1#138 <- `c_1*`, c_2#116 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#93).0)))*{c#93 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#91*{c_1#91 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#77*{c_2#77 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#91*{c#91 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#92)))), !($proj_num__1(!($proj_lane__0(c_2#78)))))).0))*{c_1#92 <- `c_1*`, c_2#78 <- `c_2*`} + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#72).0)))*{c#72 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#139*{c_1#139 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#117*{c_2#117 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#71*{c#71 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#140)))), !($proj_num__1(!($proj_lane__0(c_2#118)))))).0))*{c_1#140 <- `c_1*`, c_2#118 <- `c_2*`} -- if ($isize(Inn) = $fsize(F32_Fnn)) - -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#92).0)))))*{c#92 <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#115))*{iter#115 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#116))*{iter#116 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size($numtype_Fnn(F32_Fnn)), $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#141)))), !($proj_num__1(!($proj_lane__0(c_2#119)))))).0))))*{c_1#141 <- `c_1*`, c_2#119 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#93)))), !($proj_num__1(!($proj_lane__0(c_2#79)))))).0)))*{c_1#93 <- `c_1*`, c_2#79 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#142)))), !($proj_num__1(!($proj_lane__0(c_2#120)))))).0)))*{c_1#142 <- `c_1*`, c_2#120 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#96).0)))*{c#96 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#94*{c_1#94 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#80*{c_2#80 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#94*{c#94 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#95)))), !($proj_num__1(!($proj_lane__0(c_2#81)))))).0))*{c_1#95 <- `c_1*`, c_2#81 <- `c_2*`} + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#74).0)))*{c#74 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#143*{c_1#143 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#121*{c_2#121 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#73*{c#73 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#144)))), !($proj_num__1(!($proj_lane__0(c_2#122)))))).0))*{c_1#144 <- `c_1*`, c_2#122 <- `c_2*`} -- if ($isize(Inn) = $fsize(F64_Fnn)) - -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#95).0)))))*{c#95 <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#117))*{iter#117 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#118))*{iter#118 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size($numtype_Fnn(F64_Fnn)), $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#145)))), !($proj_num__1(!($proj_lane__0(c_2#123)))))).0))))*{c_1#145 <- `c_1*`, c_2#123 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#96)))), !($proj_num__1(!($proj_lane__0(c_2#82)))))).0)))*{c_1#96 <- `c_1*`, c_2#82 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#146)))), !($proj_num__1(!($proj_lane__0(c_2#124)))))).0)))*{c_1#146 <- `c_1*`, c_2#124 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#99)*{c#99 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#97*{c_1#97 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#97*{c#97 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#98)), i)*{c_1#98 <- `c_1*`} + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#76)*{c#76 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#147*{c_1#147 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#75*{c#75 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#148)), i)*{c_1#148 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#119))*{iter#119 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#149)), i)))*{c_1#149 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#98)))*{c#98 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#102)*{c#102 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#99*{c_1#99 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#100*{c#100 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#100)), i)*{c_1#100 <- `c_1*`} + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#78)*{c#78 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#150*{c_1#150 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#77*{c#77 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#151)), i)*{c_1#151 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#120))*{iter#120 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#152)), i)))*{c_1#152 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#101)))*{c#101 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#105)*{c#105 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#101*{c_1#101 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#103*{c#103 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#102)), i)*{c_1#102 <- `c_1*`} + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#80)*{c#80 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#153*{c_1#153 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#79*{c#79 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#154)), i)*{c_1#154 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#121))*{iter#121 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#155)), i)))*{c_1#155 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#104)))*{c#104 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#108)*{c#108 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#103*{c_1#103 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#106*{c#106 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#104)), i)*{c_1#104 <- `c_1*`} + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#82)*{c#82 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#156*{c_1#156 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#81*{c#81 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#157)), i)*{c_1#157 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#122))*{iter#122 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#158)), i)))*{c_1#158 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#107)))*{c#107 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#111)*{c#111 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#105*{c_1#105 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#109*{c#109 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#106)), i)*{c_1#106 <- `c_1*`} + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#84)*{c#84 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#159*{c_1#159 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#83*{c#83 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#160)), i)*{c_1#160 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#123))*{iter#123 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#161)), i)))*{c_1#161 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#110)))*{c#110 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#114)*{c#114 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#107*{c_1#107 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#112*{c#112 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#108)), i)*{c_1#108 <- `c_1*`} + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#86)*{c#86 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#162*{c_1#162 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#85*{c#85 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#163)), i)*{c_1#163 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#124))*{iter#124 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#164)), i)))*{c_1#164 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#113)))*{c#113 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#117)*{c#117 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#109*{c_1#109 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#115*{c#115 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#110)), i)*{c_1#110 <- `c_1*`} + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#88)*{c#88 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#165*{c_1#165 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#87*{c#87 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#166)), i)*{c_1#166 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#125))*{iter#125 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#167)), i)))*{c_1#167 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#116)))*{c#116 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#120)*{c#120 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#111*{c_1#111 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#118*{c#118 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#112)), i)*{c_1#112 <- `c_1*`} + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#90)*{c#90 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#168*{c_1#168 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#89*{c#89 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#169)), i)*{c_1#169 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#126))*{iter#126 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#170)), i)))*{c_1#170 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#119)))*{c#119 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- let{`c_1*` : lane_*} c_1#113*{c_1#113 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#114)), `%`_iN(0))).0)*{c_1#114 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- let{`c_1*` : lane_*} c_1#171*{c_1#171 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#172)), `%`_iN(0))).0)*{c_1#172 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#127))*{iter#127 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#128))*{iter#128 <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#115)), `%`_iN(0))).0)))*{c_1#115 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#173)), `%`_iN(0))).0)))*{c_1#173 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- let{`c_1*` : lane_*} c_1#116*{c_1#116 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#117)), `%`_iN(0))).0)*{c_1#117 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- let{`c_1*` : lane_*} c_1#174*{c_1#174 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#175)), `%`_iN(0))).0)*{c_1#175 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#129))*{iter#129 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#130))*{iter#130 <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#118)), `%`_iN(0))).0)))*{c_1#118 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#176)), `%`_iN(0))).0)))*{c_1#176 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- let{`c_1*` : lane_*} c_1#119*{c_1#119 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#120)), `%`_iN(0))).0)*{c_1#120 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- let{`c_1*` : lane_*} c_1#177*{c_1#177 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#178)), `%`_iN(0))).0)*{c_1#178 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#131))*{iter#131 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#132))*{iter#132 <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#121)), `%`_iN(0))).0)))*{c_1#121 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#179)), `%`_iN(0))).0)))*{c_1#179 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- let{`c_1*` : lane_*} c_1#122*{c_1#122 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#123)), `%`_iN(0))).0)*{c_1#123 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- let{`c_1*` : lane_*} c_1#180*{c_1#180 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#181)), `%`_iN(0))).0)*{c_1#181 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#133))*{iter#133 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#134))*{iter#134 <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#124)), `%`_iN(0))).0)))*{c_1#124 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#182)), `%`_iN(0))).0)))*{c_1#182 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#123)*{c#123 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#125*{c_1#125 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#83*{c_2#83 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#121*{c#121 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#126))*{c_1#126 <- `c_1*`}, !($proj_lane__2(c_2#84)))*{c_2#84 <- `c_2*`} + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#92)*{c#92 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#183*{c_1#183 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#125*{c_2#125 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#91*{c#91 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#184))*{c_1#184 <- `c_1*`}, !($proj_lane__2(c_2#126)))*{c_2#126 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#135))*{iter#135 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#136))*{iter#136 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#185))*{c_1#185 <- `c_1*`}, !($proj_lane__2(c_2#127)))))*{c_2#127 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#122)))*{c#122 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#126)*{c#126 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#127*{c_1#127 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#85*{c_2#85 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#124*{c#124 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#128))*{c_1#128 <- `c_1*`}, !($proj_lane__2(c_2#86)))*{c_2#86 <- `c_2*`} + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#94)*{c#94 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#186*{c_1#186 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#128*{c_2#128 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#93*{c#93 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#187))*{c_1#187 <- `c_1*`}, !($proj_lane__2(c_2#129)))*{c_2#129 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#137))*{iter#137 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#138))*{iter#138 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#188))*{c_1#188 <- `c_1*`}, !($proj_lane__2(c_2#130)))))*{c_2#130 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#125)))*{c#125 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#129)*{c#129 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#129*{c_1#129 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#87*{c_2#87 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#127*{c#127 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#130))*{c_1#130 <- `c_1*`}, !($proj_lane__2(c_2#88)))*{c_2#88 <- `c_2*`} + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#96)*{c#96 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#189*{c_1#189 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#131*{c_2#131 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#95*{c#95 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#190))*{c_1#190 <- `c_1*`}, !($proj_lane__2(c_2#132)))*{c_2#132 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#139))*{iter#139 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#140))*{iter#140 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#191))*{c_1#191 <- `c_1*`}, !($proj_lane__2(c_2#133)))))*{c_2#133 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#128)))*{c#128 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#132)*{c#132 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#131*{c_1#131 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#89*{c_2#89 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#130*{c#130 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#132))*{c_1#132 <- `c_1*`}, !($proj_lane__2(c_2#90)))*{c_2#90 <- `c_2*`} + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#98)*{c#98 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#192*{c_1#192 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#134*{c_2#134 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#97*{c#97 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#193))*{c_1#193 <- `c_1*`}, !($proj_lane__2(c_2#135)))*{c_2#135 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#141))*{iter#141 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#142))*{iter#142 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#194))*{c_1#194 <- `c_1*`}, !($proj_lane__2(c_2#136)))))*{c_2#136 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#131)))*{c#131 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), i#138497*{i#138497 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#134*{c#134 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#133*{c_1#133 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#91*{c_2#91 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : lane_*} c#133*{c#133 <- `c*`} = c_1#134*{c_1#134 <- `c_1*`} ++ c_2#92*{c_2#92 <- `c_2*`}[$proj_uN_0(i#138500).0]*{i#138500 <- `i*`} + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), i#138592*{i#138592 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#100*{c#100 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#195*{c_1#195 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#137*{c_2#137 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#99*{c#99 <- `c*`} = c_1#196*{c_1#196 <- `c_1*`} ++ c_2#138*{c_2#138 <- `c_2*`}[$proj_uN_0(i#138595).0]*{i#138595 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#143))*{iter#143 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#144))*{iter#144 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i#138504*{i#138504 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#136*{c#136 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#135*{c_1#135 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#93*{c_2#93 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : lane_*} c#135*{c#135 <- `c*`} = c_1#136*{c_1#136 <- `c_1*`} ++ c_2#94*{c_2#94 <- `c_2*`}[$proj_uN_0(i#138507).0]*{i#138507 <- `i*`} + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i#138603*{i#138603 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#102*{c#102 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#197*{c_1#197 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#139*{c_2#139 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#101*{c#101 <- `c*`} = c_1#198*{c_1#198 <- `c_1*`} ++ c_2#140*{c_2#140 <- `c_2*`}[$proj_uN_0(i#138606).0]*{i#138606 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#145))*{iter#145 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#146))*{iter#146 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i#138511*{i#138511 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#138*{c#138 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#137*{c_1#137 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#95*{c_2#95 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : lane_*} c#137*{c#137 <- `c*`} = c_1#138*{c_1#138 <- `c_1*`} ++ c_2#96*{c_2#96 <- `c_2*`}[$proj_uN_0(i#138514).0]*{i#138514 <- `i*`} + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i#138614*{i#138614 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#104*{c#104 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#199*{c_1#199 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#141*{c_2#141 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#103*{c#103 <- `c*`} = c_1#200*{c_1#200 <- `c_1*`} ++ c_2#142*{c_2#142 <- `c_2*`}[$proj_uN_0(i#138617).0]*{i#138617 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#147))*{iter#147 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#148))*{iter#148 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i#138518*{i#138518 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#140*{c#140 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#139*{c_1#139 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#97*{c_2#97 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : lane_*} c#139*{c#139 <- `c*`} = c_1#140*{c_1#140 <- `c_1*`} ++ c_2#98*{c_2#98 <- `c_2*`}[$proj_uN_0(i#138521).0]*{i#138521 <- `i*`} + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i#138625*{i#138625 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#106*{c#106 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#201*{c_1#201 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#143*{c_2#143 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#105*{c#105 <- `c*`} = c_1#202*{c_1#202 <- `c_1*`} ++ c_2#144*{c_2#144 <- `c_2*`}[$proj_uN_0(i#138628).0]*{i#138628 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#149))*{iter#149 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#150))*{iter#150 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -9540,722 +10383,614 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3021?{half#3021 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3022?{half#3022 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3023?{half#3023 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3024?{half#3024 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3025?{half#3025 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3026?{half#3026 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3027?{half#3027 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3028?{half#3028 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3489?{zero#3489 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#143))?{c#143 <- `c?`}) - -- let{`c?` : iN?} c#141?{c#141 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#142))))?{c#142 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3489?{zero#3489 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#108))?{c#108 <- `c?`}) + -- let{`c?` : iN?} c#107?{c#107 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#151))?{iter#151 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3490?{zero#3490 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#146))?{c#146 <- `c?`}) - -- let{`c?` : iN?} c#144?{c#144 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#145))))?{c#145 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3490?{zero#3490 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#110))?{c#110 <- `c?`}) + -- let{`c?` : iN?} c#109?{c#109 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#152))?{iter#152 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3491?{zero#3491 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#149))?{c#149 <- `c?`}) - -- let{`c?` : iN?} c#147?{c#147 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#148))))?{c#148 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3491?{zero#3491 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#112))?{c#112 <- `c?`}) + -- let{`c?` : iN?} c#111?{c#111 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#153))?{iter#153 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3492?{zero#3492 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#152))?{c#152 <- `c?`}) - -- let{`c?` : iN?} c#150?{c#150 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#151))))?{c#151 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3492?{zero#3492 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#114))?{c#114 <- `c?`}) + -- let{`c?` : iN?} c#113?{c#113 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#154))?{iter#154 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3493?{zero#3493 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#155))?{c#155 <- `c?`}) - -- let{`c?` : iN?} c#153?{c#153 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#154))))?{c#154 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3493?{zero#3493 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#116))?{c#116 <- `c?`}) + -- let{`c?` : iN?} c#115?{c#115 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#155))?{iter#155 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3494?{zero#3494 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#158))?{c#158 <- `c?`}) - -- let{`c?` : iN?} c#156?{c#156 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#157))))?{c#157 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3494?{zero#3494 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#118))?{c#118 <- `c?`}) + -- let{`c?` : iN?} c#117?{c#117 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#156))?{iter#156 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3495?{zero#3495 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#161))?{c#161 <- `c?`}) - -- let{`c?` : iN?} c#159?{c#159 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#160))))?{c#160 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3495?{zero#3495 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#120))?{c#120 <- `c?`}) + -- let{`c?` : iN?} c#119?{c#119 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#157))?{iter#157 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3496?{zero#3496 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#164))?{c#164 <- `c?`}) - -- let{`c?` : iN?} c#162?{c#162 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#163))))?{c#163 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3496?{zero#3496 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#122))?{c#122 <- `c?`}) + -- let{`c?` : iN?} c#121?{c#121 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#158))?{iter#158 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3497?{zero#3497 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#167))?{c#167 <- `c?`}) - -- let{`c?` : iN?} c#165?{c#165 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#166))))?{c#166 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3497?{zero#3497 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#124))?{c#124 <- `c?`}) + -- let{`c?` : iN?} c#123?{c#123 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#159))?{iter#159 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3498?{zero#3498 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#170))?{c#170 <- `c?`}) - -- let{`c?` : iN?} c#168?{c#168 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#169))))?{c#169 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3498?{zero#3498 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#126))?{c#126 <- `c?`}) + -- let{`c?` : iN?} c#125?{c#125 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#160))?{iter#160 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3499?{zero#3499 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#173))?{c#173 <- `c?`}) - -- let{`c?` : iN?} c#171?{c#171 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#172))))?{c#172 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3499?{zero#3499 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#128))?{c#128 <- `c?`}) + -- let{`c?` : iN?} c#127?{c#127 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#161))?{iter#161 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3500?{zero#3500 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#176))?{c#176 <- `c?`}) - -- let{`c?` : iN?} c#174?{c#174 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#175))))?{c#175 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3500?{zero#3500 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#130))?{c#130 <- `c?`}) + -- let{`c?` : iN?} c#129?{c#129 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#162))?{iter#162 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3501?{zero#3501 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#179))?{c#179 <- `c?`}) - -- let{`c?` : iN?} c#177?{c#177 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#178))))?{c#178 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3501?{zero#3501 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#132))?{c#132 <- `c?`}) + -- let{`c?` : iN?} c#131?{c#131 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#163))?{iter#163 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3502?{zero#3502 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#182))?{c#182 <- `c?`}) - -- let{`c?` : iN?} c#180?{c#180 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#181))))?{c#181 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3502?{zero#3502 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#134))?{c#134 <- `c?`}) + -- let{`c?` : iN?} c#133?{c#133 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#164))?{iter#164 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3503?{zero#3503 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#185))?{c#185 <- `c?`}) - -- let{`c?` : iN?} c#183?{c#183 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#184))))?{c#184 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3503?{zero#3503 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#136))?{c#136 <- `c?`}) + -- let{`c?` : iN?} c#135?{c#135 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#165))?{iter#165 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3504?{zero#3504 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#188))?{c#188 <- `c?`}) - -- let{`c?` : iN?} c#186?{c#186 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#187))))?{c#187 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3504?{zero#3504 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#138))?{c#138 <- `c?`}) + -- let{`c?` : iN?} c#137?{c#137 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#166))?{iter#166 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3505?{zero#3505 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#191))?{c#191 <- `c?`}) - -- let{`c?` : iN?} c#189?{c#189 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#190))))?{c#190 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3505?{zero#3505 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#140))?{c#140 <- `c?`}) + -- let{`c?` : iN?} c#139?{c#139 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#167))?{iter#167 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3506?{zero#3506 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#194))?{c#194 <- `c?`}) - -- let{`c?` : iN?} c#192?{c#192 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#193))))?{c#193 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3506?{zero#3506 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#142))?{c#142 <- `c?`}) + -- let{`c?` : iN?} c#141?{c#141 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#168))?{iter#168 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3507?{zero#3507 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#197))?{c#197 <- `c?`}) - -- let{`c?` : iN?} c#195?{c#195 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#196))))?{c#196 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3507?{zero#3507 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#144))?{c#144 <- `c?`}) + -- let{`c?` : iN?} c#143?{c#143 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#169))?{iter#169 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3508?{zero#3508 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#200))?{c#200 <- `c?`}) - -- let{`c?` : iN?} c#198?{c#198 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#199))))?{c#199 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3508?{zero#3508 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#146))?{c#146 <- `c?`}) + -- let{`c?` : iN?} c#145?{c#145 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#170))?{iter#170 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3509?{zero#3509 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#203))?{c#203 <- `c?`}) - -- let{`c?` : iN?} c#201?{c#201 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#202))))?{c#202 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3509?{zero#3509 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#148))?{c#148 <- `c?`}) + -- let{`c?` : iN?} c#147?{c#147 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#171))?{iter#171 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3510?{zero#3510 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#206))?{c#206 <- `c?`}) - -- let{`c?` : iN?} c#204?{c#204 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#205))))?{c#205 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3510?{zero#3510 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#150))?{c#150 <- `c?`}) + -- let{`c?` : iN?} c#149?{c#149 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#172))?{iter#172 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3511?{zero#3511 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#209))?{c#209 <- `c?`}) - -- let{`c?` : iN?} c#207?{c#207 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#208))))?{c#208 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3511?{zero#3511 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#152))?{c#152 <- `c?`}) + -- let{`c?` : iN?} c#151?{c#151 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#173))?{iter#173 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3512?{zero#3512 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#212))?{c#212 <- `c?`}) - -- let{`c?` : iN?} c#210?{c#210 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#211))))?{c#211 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3512?{zero#3512 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#154))?{c#154 <- `c?`}) + -- let{`c?` : iN?} c#153?{c#153 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#174))?{iter#174 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3513?{zero#3513 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#215))?{c#215 <- `c?`}) - -- let{`c?` : iN?} c#213?{c#213 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#214))))?{c#214 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3513?{zero#3513 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#156))?{c#156 <- `c?`}) + -- let{`c?` : iN?} c#155?{c#155 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#175))?{iter#175 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3514?{zero#3514 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#218))?{c#218 <- `c?`}) - -- let{`c?` : iN?} c#216?{c#216 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#217))))?{c#217 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3514?{zero#3514 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#158))?{c#158 <- `c?`}) + -- let{`c?` : iN?} c#157?{c#157 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#176))?{iter#176 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3515?{zero#3515 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#221))?{c#221 <- `c?`}) - -- let{`c?` : iN?} c#219?{c#219 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#220))))?{c#220 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3515?{zero#3515 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#160))?{c#160 <- `c?`}) + -- let{`c?` : iN?} c#159?{c#159 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#177))?{iter#177 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3516?{zero#3516 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#224))?{c#224 <- `c?`}) - -- let{`c?` : iN?} c#222?{c#222 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#223))))?{c#223 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3516?{zero#3516 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#162))?{c#162 <- `c?`}) + -- let{`c?` : iN?} c#161?{c#161 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#178))?{iter#178 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3517?{zero#3517 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#227))?{c#227 <- `c?`}) - -- let{`c?` : iN?} c#225?{c#225 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#226))))?{c#226 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3517?{zero#3517 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#164))?{c#164 <- `c?`}) + -- let{`c?` : iN?} c#163?{c#163 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#179))?{iter#179 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3518?{zero#3518 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#230))?{c#230 <- `c?`}) - -- let{`c?` : iN?} c#228?{c#228 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#229))))?{c#229 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3518?{zero#3518 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#166))?{c#166 <- `c?`}) + -- let{`c?` : iN?} c#165?{c#165 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#180))?{iter#180 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3519?{zero#3519 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#233))?{c#233 <- `c?`}) - -- let{`c?` : iN?} c#231?{c#231 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#232))))?{c#232 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3519?{zero#3519 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#168))?{c#168 <- `c?`}) + -- let{`c?` : iN?} c#167?{c#167 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#181))?{iter#181 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3520?{zero#3520 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#236))?{c#236 <- `c?`}) - -- let{`c?` : iN?} c#234?{c#234 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#235))))?{c#235 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3520?{zero#3520 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#170))?{c#170 <- `c?`}) + -- let{`c?` : iN?} c#169?{c#169 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#182))?{iter#182 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#239))*{c#239 <- `c*`} - -- let{`c*` : fN*} c#237*{c#237 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#238))))*{c#238 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#172))*{c#172 <- `c*`} + -- let{`c*` : fN*} c#171*{c#171 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#183))*{iter#183 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#242))*{c#242 <- `c*`} - -- let{`c*` : fN*} c#240*{c#240 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#241))))*{c#241 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#174))*{c#174 <- `c*`} + -- let{`c*` : fN*} c#173*{c#173 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#184))*{iter#184 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#245))*{c#245 <- `c*`} - -- let{`c*` : fN*} c#243*{c#243 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#244))))*{c#244 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#176))*{c#176 <- `c*`} + -- let{`c*` : fN*} c#175*{c#175 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#185))*{iter#185 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#248))*{c#248 <- `c*`} - -- let{`c*` : fN*} c#246*{c#246 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#247))))*{c#247 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#178))*{c#178 <- `c*`} + -- let{`c*` : fN*} c#177*{c#177 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#186))*{iter#186 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#251))*{c#251 <- `c*`} - -- let{`c*` : fN*} c#249*{c#249 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#250))))*{c#250 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#180))*{c#180 <- `c*`} + -- let{`c*` : fN*} c#179*{c#179 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#187))*{iter#187 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#254))*{c#254 <- `c*`} - -- let{`c*` : fN*} c#252*{c#252 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#253))))*{c#253 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#182))*{c#182 <- `c*`} + -- let{`c*` : fN*} c#181*{c#181 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#188))*{iter#188 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#257))*{c#257 <- `c*`} - -- let{`c*` : fN*} c#255*{c#255 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#256))))*{c#256 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#184))*{c#184 <- `c*`} + -- let{`c*` : fN*} c#183*{c#183 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#189))*{iter#189 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#260))*{c#260 <- `c*`} - -- let{`c*` : fN*} c#258*{c#258 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#259))))*{c#259 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#186))*{c#186 <- `c*`} + -- let{`c*` : fN*} c#185*{c#185 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#190))*{iter#190 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#263))*{c#263 <- `c*`} - -- let{`c*` : fN*} c#261*{c#261 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#262))))*{c#262 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#188))*{c#188 <- `c*`} + -- let{`c*` : fN*} c#187*{c#187 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#191))*{iter#191 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#266))*{c#266 <- `c*`} - -- let{`c*` : fN*} c#264*{c#264 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#265))))*{c#265 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#190))*{c#190 <- `c*`} + -- let{`c*` : fN*} c#189*{c#189 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#192))*{iter#192 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#269))*{c#269 <- `c*`} - -- let{`c*` : fN*} c#267*{c#267 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#268))))*{c#268 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#192))*{c#192 <- `c*`} + -- let{`c*` : fN*} c#191*{c#191 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#193))*{iter#193 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#272))*{c#272 <- `c*`} - -- let{`c*` : fN*} c#270*{c#270 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#271))))*{c#271 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#194))*{c#194 <- `c*`} + -- let{`c*` : fN*} c#193*{c#193 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#194))*{iter#194 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#275))*{c#275 <- `c*`} - -- let{`c*` : fN*} c#273*{c#273 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#274))))*{c#274 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#196))*{c#196 <- `c*`} + -- let{`c*` : fN*} c#195*{c#195 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#195))*{iter#195 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#278))*{c#278 <- `c*`} - -- let{`c*` : fN*} c#276*{c#276 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#277))))*{c#277 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#198))*{c#198 <- `c*`} + -- let{`c*` : fN*} c#197*{c#197 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#196))*{iter#196 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#281))*{c#281 <- `c*`} - -- let{`c*` : fN*} c#279*{c#279 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#280))))*{c#280 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#200))*{c#200 <- `c*`} + -- let{`c*` : fN*} c#199*{c#199 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#197))*{iter#197 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#284))*{c#284 <- `c*`} - -- let{`c*` : fN*} c#282*{c#282 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#283))))*{c#283 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#202))*{c#202 <- `c*`} + -- let{`c*` : fN*} c#201*{c#201 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#198))*{iter#198 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lcvtop___is_wf: `%%%%%`(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lcvtop___is_wf0{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*}: + `%%%%%`(shape_1, shape_2, vcvtop__, lane_, ret_val) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_1, shape_2, vcvtop__) + -- wf_lane_: `%%`($lanetype(shape_1), lane_) + -- if (ret_val = $lcvtop__(shape_1, shape_2, vcvtop__, lane_)) + -- (wf_lane_: `%%`($lanetype(shape_2), ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- let{`c_1*` : lane_*} c_1#141*{c_1#141 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) - -- let{`c**` : lane_**} c#285*{c#285 <- `c*#29`}*{`c*#29` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#142)*{c_1#142 <- `c_1*`}) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#286*{c#286 <- `c*#30`})*{`c*#30` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- let{`c_1*` : lane_*} c_1#203*{c_1#203 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#203*{c#203 <- `c*#29`}*{`c*#29` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#204)*{c_1#204 <- `c_1*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#204*{c#204 <- `c*#30`})*{`c*#30` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), iter#199))*{iter#199 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#201))*{iter#201 <- iter#200}*{iter#200 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#205)*{c_1#205 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#202))*{iter#202 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#206)}*{c_1#206 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#205*{c#205 <- `c*#31`})))*{`c*#31` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- let{`c_1*` : lane_*} c_1#143*{c_1#143 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] - -- let{`c**` : lane_**} c#287*{c#287 <- `c*#31`}*{`c*#31` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#144)*{c_1#144 <- `c_1*`}) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#288*{c#288 <- `c*#32`})*{`c*#32` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- let{`c_1*` : lane_*} c_1#207*{c_1#207 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] + -- let{`c**` : lane_**} c#206*{c#206 <- `c*#32`}*{`c*#32` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#208)*{c_1#208 <- `c_1*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#207*{c#207 <- `c*#33`})*{`c*#33` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#203))*{iter#203 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#205))*{iter#205 <- iter#204}*{iter#204 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#209)*{c_1#209 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#206))*{iter#206 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#210)}*{c_1#210 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#208*{c#208 <- `c*#34`})))*{`c*#34` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- let{`c_1*` : lane_*} c_1#145*{c_1#145 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) - -- let{`c**` : lane_**} c#289*{c#289 <- `c*#33`}*{`c*#33` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#146)*{c_1#146 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#290*{c#290 <- `c*#34`})*{`c*#34` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- let{`c_1*` : lane_*} c_1#211*{c_1#211 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) + -- let{`c**` : lane_**} c#209*{c#209 <- `c*#35`}*{`c*#35` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#212)*{c_1#212 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#210*{c#210 <- `c*#36`})*{`c*#36` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#207))*{iter#207 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#209))*{iter#209 <- iter#208}*{iter#208 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#213)*{c_1#213 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})} + -- (wf_lane_: `%%`(Lnn_2, iter#210))*{iter#210 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#214)}*{c_1#214 <- `c_1*`} + -- wf_lane_: `%%`(Lnn_2, $zero(Lnn_2)) + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#211*{c#211 <- `c*#37`})))*{`c*#37` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) @@ -10263,918 +10998,821 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#139203*{i#139203 <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#139119*{i#139119 <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#147*{c_1#147 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#99*{c_2#99 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#1*{c'_1#1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#148)))*{c_1#148 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#1*{c'_2#1 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#100)))*{c_2#100 <- `c_2*`} + -- let{`c_1*` : lane_*} c_1#215*{c_1#215 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#145*{c_2#145 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#1*{c'_1#1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#216)))*{c_1#216 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#1*{c'_2#1 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#146)))*{c_2#146 <- `c_2*`} -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#2)*{c'_1#2 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#2)*{c'_2#2 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#211))*{iter#211 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#212))*{iter#212 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#217)))))*{c_1#217 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#147)))))*{c_2#147 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#3)*{c'_1#3 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#3)*{c'_2#3 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#3)))*{c'_1#3 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#3)))*{c'_2#3 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#4)))*{c'_1#4 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#4)))*{c'_2#4 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#149*{c_1#149 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#101*{c_2#101 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#4*{c'_1#4 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#150)))*{c_1#150 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#4*{c'_2#4 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#102)))*{c_2#102 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#5)*{c'_1#5 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#5)*{c'_2#5 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#218*{c_1#218 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#148*{c_2#148 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#5*{c'_1#5 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#219)))*{c_1#219 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#5*{c'_2#5 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#149)))*{c_2#149 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#6)*{c'_1#6 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#6)*{c'_2#6 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#213))*{iter#213 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#214))*{iter#214 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#220)))))*{c_1#220 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#150)))))*{c_2#150 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#7)*{c'_1#7 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#7)*{c'_2#7 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#6)))*{c'_1#6 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#6)))*{c'_2#6 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#8)))*{c'_1#8 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#8)))*{c'_2#8 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#151*{c_1#151 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#103*{c_2#103 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#7*{c'_1#7 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#152)))*{c_1#152 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#7*{c'_2#7 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#104)))*{c_2#104 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#8)*{c'_1#8 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#8)*{c'_2#8 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#221*{c_1#221 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#151*{c_2#151 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#9*{c'_1#9 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#222)))*{c_1#222 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#9*{c'_2#9 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#152)))*{c_2#152 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#10)*{c'_1#10 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#10)*{c'_2#10 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#215))*{iter#215 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#216))*{iter#216 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#223)))))*{c_1#223 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#153)))))*{c_2#153 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#11)*{c'_1#11 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#11)*{c'_2#11 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#9)))*{c'_1#9 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#9)))*{c'_2#9 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#12)))*{c'_1#12 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#12)))*{c'_2#12 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#153*{c_1#153 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#105*{c_2#105 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#10*{c'_1#10 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#154)))*{c_1#154 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#10*{c'_2#10 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#106)))*{c_2#106 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#11)*{c'_1#11 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#11)*{c'_2#11 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#224*{c_1#224 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#154*{c_2#154 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#13*{c'_1#13 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#225)))*{c_1#225 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#13*{c'_2#13 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#155)))*{c_2#155 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#14)*{c'_1#14 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#14)*{c'_2#14 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#217))*{iter#217 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#218))*{iter#218 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#226)))))*{c_1#226 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#156)))))*{c_2#156 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#15)*{c'_1#15 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#15)*{c'_2#15 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#12)))*{c'_1#12 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#12)))*{c'_2#12 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#16)))*{c'_1#16 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#16)))*{c'_2#16 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#155*{c_1#155 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#107*{c_2#107 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#13*{c'_1#13 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#156)))*{c_1#156 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#13*{c'_2#13 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#108)))*{c_2#108 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#14)*{c'_1#14 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#14)*{c'_2#14 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#227*{c_1#227 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#157*{c_2#157 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#17*{c'_1#17 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#228)))*{c_1#228 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#17*{c'_2#17 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#158)))*{c_2#158 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#18)*{c'_1#18 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#18)*{c'_2#18 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#219))*{iter#219 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#220))*{iter#220 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#229)))))*{c_1#229 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#159)))))*{c_2#159 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#19)*{c'_1#19 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#19)*{c'_2#19 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#15)))*{c'_1#15 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#15)))*{c'_2#15 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#20)))*{c'_1#20 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#20)))*{c'_2#20 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#157*{c_1#157 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#109*{c_2#109 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#16*{c'_1#16 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#158)))*{c_1#158 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#16*{c'_2#16 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#110)))*{c_2#110 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#17)*{c'_1#17 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#17)*{c'_2#17 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#230*{c_1#230 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#160*{c_2#160 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#21*{c'_1#21 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#231)))*{c_1#231 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#21*{c'_2#21 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#161)))*{c_2#161 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#22)*{c'_1#22 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#22)*{c'_2#22 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#221))*{iter#221 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#222))*{iter#222 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#232)))))*{c_1#232 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#162)))))*{c_2#162 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#23)*{c'_1#23 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#23)*{c'_2#23 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#18)))*{c'_1#18 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#18)))*{c'_2#18 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#24)))*{c'_1#24 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#24)))*{c'_2#24 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#159*{c_1#159 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#111*{c_2#111 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#19*{c'_1#19 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#160)))*{c_1#160 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#19*{c'_2#19 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#112)))*{c_2#112 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#20)*{c'_1#20 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#20)*{c'_2#20 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#233*{c_1#233 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#163*{c_2#163 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#25*{c'_1#25 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#234)))*{c_1#234 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#25*{c'_2#25 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#164)))*{c_2#164 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#26)*{c'_1#26 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#26)*{c'_2#26 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#223))*{iter#223 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#224))*{iter#224 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#235)))))*{c_1#235 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#165)))))*{c_2#165 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#27)*{c'_1#27 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#27)*{c'_2#27 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#21)))*{c'_1#21 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#21)))*{c'_2#21 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#28)))*{c'_1#28 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#28)))*{c'_2#28 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#161*{c_1#161 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#113*{c_2#113 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#22*{c'_1#22 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#162)))*{c_1#162 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#22*{c'_2#22 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#114)))*{c_2#114 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#23)*{c'_1#23 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#23)*{c'_2#23 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#236*{c_1#236 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#166*{c_2#166 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#29*{c'_1#29 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#237)))*{c_1#237 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#29*{c'_2#29 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#167)))*{c_2#167 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#30)*{c'_1#30 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#30)*{c'_2#30 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#225))*{iter#225 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#226))*{iter#226 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#238)))))*{c_1#238 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#168)))))*{c_2#168 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#31)*{c'_1#31 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#31)*{c'_2#31 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#24)))*{c'_1#24 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#24)))*{c'_2#24 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#32)))*{c'_1#32 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#32)))*{c'_2#32 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#163*{c_1#163 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#115*{c_2#115 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#25*{c'_1#25 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#164)))*{c_1#164 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#25*{c'_2#25 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#116)))*{c_2#116 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#26)*{c'_1#26 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#26)*{c'_2#26 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#239*{c_1#239 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#169*{c_2#169 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#33*{c'_1#33 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#240)))*{c_1#240 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#33*{c'_2#33 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#170)))*{c_2#170 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#34)*{c'_1#34 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#34)*{c'_2#34 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#227))*{iter#227 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#228))*{iter#228 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#241)))))*{c_1#241 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#171)))))*{c_2#171 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#35)*{c'_1#35 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#35)*{c'_2#35 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#27)))*{c'_1#27 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#27)))*{c'_2#27 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#36)))*{c'_1#36 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#36)))*{c'_2#36 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#165*{c_1#165 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#117*{c_2#117 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#28*{c'_1#28 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#166)))*{c_1#166 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#28*{c'_2#28 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#118)))*{c_2#118 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#29)*{c'_1#29 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#29)*{c'_2#29 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#242*{c_1#242 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#172*{c_2#172 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#37*{c'_1#37 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#243)))*{c_1#243 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#37*{c'_2#37 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#173)))*{c_2#173 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#38)*{c'_1#38 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#38)*{c'_2#38 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#229))*{iter#229 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#230))*{iter#230 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#244)))))*{c_1#244 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#174)))))*{c_2#174 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#39)*{c'_1#39 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#39)*{c'_2#39 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#30)))*{c'_1#30 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#30)))*{c'_2#30 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#40)))*{c'_1#40 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#40)))*{c'_2#40 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#167*{c_1#167 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#119*{c_2#119 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#31*{c'_1#31 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#168)))*{c_1#168 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#31*{c'_2#31 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#120)))*{c_2#120 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#32)*{c'_1#32 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#32)*{c'_2#32 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#245*{c_1#245 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#175*{c_2#175 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#41*{c'_1#41 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#246)))*{c_1#246 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#41*{c'_2#41 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#176)))*{c_2#176 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#42)*{c'_1#42 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#42)*{c'_2#42 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#231))*{iter#231 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#232))*{iter#232 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#247)))))*{c_1#247 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#177)))))*{c_2#177 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#43)*{c'_1#43 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#43)*{c'_2#43 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#33)))*{c'_1#33 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#33)))*{c'_2#33 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#44)))*{c'_1#44 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#44)))*{c'_2#44 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#169*{c_1#169 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#121*{c_2#121 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#34*{c'_1#34 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#170)))*{c_1#170 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#34*{c'_2#34 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#122)))*{c_2#122 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#35)*{c'_1#35 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#35)*{c'_2#35 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#248*{c_1#248 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#178*{c_2#178 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#45*{c'_1#45 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#249)))*{c_1#249 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#45*{c'_2#45 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#179)))*{c_2#179 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#46)*{c'_1#46 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#46)*{c'_2#46 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#233))*{iter#233 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#234))*{iter#234 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#250)))))*{c_1#250 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#180)))))*{c_2#180 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#47)*{c'_1#47 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#47)*{c'_2#47 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#36)))*{c'_1#36 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#36)))*{c'_2#36 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#48)))*{c'_1#48 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#48)))*{c'_2#48 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#171*{c_1#171 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#123*{c_2#123 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#37*{c'_1#37 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#172)))*{c_1#172 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#37*{c'_2#37 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#124)))*{c_2#124 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#38)*{c'_1#38 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#38)*{c'_2#38 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#251*{c_1#251 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#181*{c_2#181 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#49*{c'_1#49 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#252)))*{c_1#252 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#49*{c'_2#49 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#182)))*{c_2#182 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#50)*{c'_1#50 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#50)*{c'_2#50 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#235))*{iter#235 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#236))*{iter#236 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#253)))))*{c_1#253 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#183)))))*{c_2#183 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#51)*{c'_1#51 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#51)*{c'_2#51 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#39)))*{c'_1#39 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#39)))*{c'_2#39 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#52)))*{c'_1#52 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#52)))*{c'_2#52 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#173*{c_1#173 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#125*{c_2#125 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#40*{c'_1#40 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#174)))*{c_1#174 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#40*{c'_2#40 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#126)))*{c_2#126 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#41)*{c'_1#41 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#41)*{c'_2#41 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#254*{c_1#254 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#184*{c_2#184 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#53*{c'_1#53 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#255)))*{c_1#255 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#53*{c'_2#53 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#185)))*{c_2#185 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#54)*{c'_1#54 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#54)*{c'_2#54 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#237))*{iter#237 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#238))*{iter#238 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#256)))))*{c_1#256 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#186)))))*{c_2#186 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#55)*{c'_1#55 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#55)*{c'_2#55 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#42)))*{c'_1#42 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#42)))*{c'_2#42 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#56)))*{c'_1#56 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#56)))*{c'_2#56 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#175*{c_1#175 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#127*{c_2#127 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#43*{c'_1#43 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#176)))*{c_1#176 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#43*{c'_2#43 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#128)))*{c_2#128 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#44)*{c'_1#44 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#44)*{c'_2#44 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#257*{c_1#257 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#187*{c_2#187 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#57*{c'_1#57 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#258)))*{c_1#258 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#57*{c'_2#57 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#188)))*{c_2#188 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#58)*{c'_1#58 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#58)*{c'_2#58 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#239))*{iter#239 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#240))*{iter#240 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#259)))))*{c_1#259 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#189)))))*{c_2#189 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#59)*{c'_1#59 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#59)*{c'_2#59 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#45)))*{c'_1#45 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#45)))*{c'_2#45 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#60)))*{c'_1#60 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#60)))*{c'_2#60 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#177*{c_1#177 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#129*{c_2#129 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#46*{c'_1#46 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#178)))*{c_1#178 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#46*{c'_2#46 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#130)))*{c_2#130 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#47)*{c'_1#47 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#47)*{c'_2#47 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#260*{c_1#260 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#190*{c_2#190 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#61*{c'_1#61 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#261)))*{c_1#261 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#61*{c'_2#61 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#191)))*{c_2#191 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#62)*{c'_1#62 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#62)*{c'_2#62 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#241))*{iter#241 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#242))*{iter#242 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#262)))))*{c_1#262 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#192)))))*{c_2#192 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#63)*{c'_1#63 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#63)*{c'_2#63 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#48)))*{c'_1#48 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#48)))*{c'_2#48 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#64)))*{c'_1#64 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#64)))*{c'_2#64 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i#139349*{i#139349 <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- if ($concat_(syntax N, [j_1#1 j_2#1]*{j_1#1 <- `j_1*`, j_2#1 <- `j_2*`}) = $proj_uN_0(i#139350).0*{i#139350 <- `i*`}) - -- (wf_uN: `%%`(N, `%`_uN(j_1#2)))*{j_1#2 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2#2)))*{j_2#2 <- `j_2*`} + def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i#139344*{i#139344 <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax N, [j_1#1 j_2#1]*{j_1#1 <- `j_1*`, j_2#1 <- `j_2*`}) = $proj_uN_0(i#139345).0*{i#139345 <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#293)*{c#293 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#179*{c_1#179 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#49*{c'_1#49 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#180)))*{c_1#180 <- `c_1*`} - -- let{`c*` : iN*} c#291*{c#291 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#50*{c'_1#50 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#292)))*{c#292 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#213)*{c#213 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#263*{c_1#263 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#65*{c'_1#65 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#264)))*{c_1#264 <- `c_1*`} + -- let{`c*` : iN*} c#212*{c#212 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#66*{c'_1#66 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#243))*{iter#243 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#265)))))*{c_1#265 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#244))*{iter#244 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#67*{c'_1#67 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#296)*{c#296 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#181*{c_1#181 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#51*{c'_1#51 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#182)))*{c_1#182 <- `c_1*`} - -- let{`c*` : iN*} c#294*{c#294 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#52*{c'_1#52 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#295)))*{c#295 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#215)*{c#215 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#266*{c_1#266 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#68*{c'_1#68 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#267)))*{c_1#267 <- `c_1*`} + -- let{`c*` : iN*} c#214*{c#214 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#69*{c'_1#69 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#245))*{iter#245 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#268)))))*{c_1#268 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#246))*{iter#246 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#70*{c'_1#70 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#299)*{c#299 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#183*{c_1#183 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#53*{c'_1#53 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#184)))*{c_1#184 <- `c_1*`} - -- let{`c*` : iN*} c#297*{c#297 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#54*{c'_1#54 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#298)))*{c#298 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#217)*{c#217 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#269*{c_1#269 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#71*{c'_1#71 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#270)))*{c_1#270 <- `c_1*`} + -- let{`c*` : iN*} c#216*{c#216 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#72*{c'_1#72 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#247))*{iter#247 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#271)))))*{c_1#271 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#248))*{iter#248 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#73*{c'_1#73 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#302)*{c#302 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#185*{c_1#185 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#55*{c'_1#55 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#186)))*{c_1#186 <- `c_1*`} - -- let{`c*` : iN*} c#300*{c#300 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#56*{c'_1#56 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#301)))*{c#301 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#219)*{c#219 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#272*{c_1#272 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#74*{c'_1#74 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#273)))*{c_1#273 <- `c_1*`} + -- let{`c*` : iN*} c#218*{c#218 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#75*{c'_1#75 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#249))*{iter#249 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#274)))))*{c_1#274 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#250))*{iter#250 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#76*{c'_1#76 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#305)*{c#305 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#187*{c_1#187 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#57*{c'_1#57 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#188)))*{c_1#188 <- `c_1*`} - -- let{`c*` : iN*} c#303*{c#303 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#58*{c'_1#58 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#304)))*{c#304 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#221)*{c#221 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#275*{c_1#275 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#77*{c'_1#77 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#276)))*{c_1#276 <- `c_1*`} + -- let{`c*` : iN*} c#220*{c#220 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#78*{c'_1#78 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#251))*{iter#251 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#277)))))*{c_1#277 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#252))*{iter#252 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#79*{c'_1#79 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#308)*{c#308 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#189*{c_1#189 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#59*{c'_1#59 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#190)))*{c_1#190 <- `c_1*`} - -- let{`c*` : iN*} c#306*{c#306 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#60*{c'_1#60 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#307)))*{c#307 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#223)*{c#223 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#278*{c_1#278 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#80*{c'_1#80 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#279)))*{c_1#279 <- `c_1*`} + -- let{`c*` : iN*} c#222*{c#222 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#81*{c'_1#81 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#253))*{iter#253 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#280)))))*{c_1#280 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#254))*{iter#254 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#82*{c'_1#82 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#311)*{c#311 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#191*{c_1#191 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#61*{c'_1#61 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#192)))*{c_1#192 <- `c_1*`} - -- let{`c*` : iN*} c#309*{c#309 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#62*{c'_1#62 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#310)))*{c#310 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#225)*{c#225 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#281*{c_1#281 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#83*{c'_1#83 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#282)))*{c_1#282 <- `c_1*`} + -- let{`c*` : iN*} c#224*{c#224 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#84*{c'_1#84 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#255))*{iter#255 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#283)))))*{c_1#283 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#256))*{iter#256 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#85*{c'_1#85 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#314)*{c#314 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#193*{c_1#193 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#63*{c'_1#63 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#194)))*{c_1#194 <- `c_1*`} - -- let{`c*` : iN*} c#312*{c#312 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#64*{c'_1#64 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#313)))*{c#313 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#227)*{c#227 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#284*{c_1#284 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#86*{c'_1#86 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#285)))*{c_1#285 <- `c_1*`} + -- let{`c*` : iN*} c#226*{c#226 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#87*{c'_1#87 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#257))*{iter#257 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#286)))))*{c_1#286 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#258))*{iter#258 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#88*{c'_1#88 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#317)*{c#317 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#195*{c_1#195 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#65*{c'_1#65 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#196)))*{c_1#196 <- `c_1*`} - -- let{`c*` : iN*} c#315*{c#315 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#66*{c'_1#66 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#316)))*{c#316 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#229)*{c#229 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#287*{c_1#287 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#89*{c'_1#89 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#288)))*{c_1#288 <- `c_1*`} + -- let{`c*` : iN*} c#228*{c#228 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#90*{c'_1#90 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#259))*{iter#259 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#289)))))*{c_1#289 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#260))*{iter#260 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#91*{c'_1#91 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#320)*{c#320 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#197*{c_1#197 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#67*{c'_1#67 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#198)))*{c_1#198 <- `c_1*`} - -- let{`c*` : iN*} c#318*{c#318 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#68*{c'_1#68 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#319)))*{c#319 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#231)*{c#231 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#290*{c_1#290 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#92*{c'_1#92 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#291)))*{c_1#291 <- `c_1*`} + -- let{`c*` : iN*} c#230*{c#230 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#93*{c'_1#93 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#261))*{iter#261 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#292)))))*{c_1#292 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#262))*{iter#262 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#94*{c'_1#94 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#323)*{c#323 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#199*{c_1#199 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#69*{c'_1#69 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#200)))*{c_1#200 <- `c_1*`} - -- let{`c*` : iN*} c#321*{c#321 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#70*{c'_1#70 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#322)))*{c#322 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#233)*{c#233 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#293*{c_1#293 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#95*{c'_1#95 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#294)))*{c_1#294 <- `c_1*`} + -- let{`c*` : iN*} c#232*{c#232 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#96*{c'_1#96 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#263))*{iter#263 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#295)))))*{c_1#295 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#264))*{iter#264 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#97*{c'_1#97 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#326)*{c#326 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#201*{c_1#201 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#71*{c'_1#71 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#202)))*{c_1#202 <- `c_1*`} - -- let{`c*` : iN*} c#324*{c#324 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#72*{c'_1#72 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#325)))*{c#325 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#235)*{c#235 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#296*{c_1#296 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#98*{c'_1#98 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#297)))*{c_1#297 <- `c_1*`} + -- let{`c*` : iN*} c#234*{c#234 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#99*{c'_1#99 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#265))*{iter#265 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#298)))))*{c_1#298 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#266))*{iter#266 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#100*{c'_1#100 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#329)*{c#329 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#203*{c_1#203 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#73*{c'_1#73 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#204)))*{c_1#204 <- `c_1*`} - -- let{`c*` : iN*} c#327*{c#327 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#74*{c'_1#74 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#328)))*{c#328 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#237)*{c#237 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#299*{c_1#299 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#101*{c'_1#101 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#300)))*{c_1#300 <- `c_1*`} + -- let{`c*` : iN*} c#236*{c#236 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#102*{c'_1#102 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#267))*{iter#267 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#301)))))*{c_1#301 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#268))*{iter#268 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#103*{c'_1#103 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#332)*{c#332 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#205*{c_1#205 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#75*{c'_1#75 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#206)))*{c_1#206 <- `c_1*`} - -- let{`c*` : iN*} c#330*{c#330 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#76*{c'_1#76 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#331)))*{c#331 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#239)*{c#239 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#302*{c_1#302 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#104*{c'_1#104 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#303)))*{c_1#303 <- `c_1*`} + -- let{`c*` : iN*} c#238*{c#238 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#105*{c'_1#105 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#269))*{iter#269 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#304)))))*{c_1#304 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#270))*{iter#270 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#106*{c'_1#106 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#335)*{c#335 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#207*{c_1#207 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#77*{c'_1#77 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#208)))*{c_1#208 <- `c_1*`} - -- let{`c*` : iN*} c#333*{c#333 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#78*{c'_1#78 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#334)))*{c#334 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#241)*{c#241 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#305*{c_1#305 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#107*{c'_1#107 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#306)))*{c_1#306 <- `c_1*`} + -- let{`c*` : iN*} c#240*{c#240 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#108*{c'_1#108 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#271))*{iter#271 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#307)))))*{c_1#307 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#272))*{iter#272 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#109*{c'_1#109 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#338)*{c#338 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#209*{c_1#209 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#79*{c'_1#79 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#210)))*{c_1#210 <- `c_1*`} - -- let{`c*` : iN*} c#336*{c#336 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#80*{c'_1#80 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#337)))*{c#337 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#243)*{c#243 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#308*{c_1#308 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#110*{c'_1#110 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#309)))*{c_1#309 <- `c_1*`} + -- let{`c*` : iN*} c#242*{c#242 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#111*{c'_1#111 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#273))*{iter#273 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#310)))))*{c_1#310 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#274))*{iter#274 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#112*{c'_1#112 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#1*{i_1#1 <- `i_1*`}, i_2#1*{i_2#1 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- if ($concat_(syntax iN, [j_1#3 j_2#3]*{j_1#3 <- `j_1*`, j_2#3 <- `j_2*`}) = $imul_(N, i_1#2, i_2#2)*{i_1#2 <- `i_1*`, i_2#2 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1#4))*{j_1#4 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2#4))*{j_2#4 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#2 j_2#2]*{j_1#2 <- `j_1*`, j_2#2 <- `j_2*`}) = $imul_(N, i_1#2, i_2#2)*{i_1#2 <- `i_1*`, i_2#2 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#275))*{iter#275 <- $concat_(syntax iN, [j_1#3 j_2#3]*{j_1#3 <- `j_1*`, j_2#3 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#3, i_2#3)))*{i_1#3 <- `i_1*`, i_2#3 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#3*{i_1#3 <- `i_1*`}, i_2#3*{i_2#3 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- if ($concat_(syntax iN, [j_1#5 j_2#5]*{j_1#5 <- `j_1*`, j_2#5 <- `j_2*`}) = $imul_(N, i_1#4, i_2#4)*{i_1#4 <- `i_1*`, i_2#4 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1#6))*{j_1#6 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2#6))*{j_2#6 <- `j_2*`} + def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#4*{i_1#4 <- `i_1*`}, i_2#4*{i_2#4 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#4 j_2#4]*{j_1#4 <- `j_1*`, j_2#4 <- `j_2*`}) = $imul_(N, i_1#5, i_2#5)*{i_1#5 <- `i_1*`, i_2#5 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#276))*{iter#276 <- $concat_(syntax iN, [j_1#5 j_2#5]*{j_1#5 <- `j_1*`, j_2#5 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#6, i_2#6)))*{i_1#6 <- `i_1*`, i_2#6 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#341)*{c#341 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#211*{c_1#211 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#131*{c_2#131 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#81*{c'_1#81 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#212)))*{c_1#212 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#49*{c'_2#49 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#132)))*{c_2#132 <- `c_2*`} - -- let{`c*` : iN*} c#339*{c#339 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#82*{c'_1#82 <- `c'_1*`}, c'_2#50*{c'_2#50 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#340)))*{c#340 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#245)*{c#245 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#311*{c_1#311 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#193*{c_2#193 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#113*{c'_1#113 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#312)))*{c_1#312 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#65*{c'_2#65 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#194)))*{c_2#194 <- `c_2*`} + -- let{`c*` : iN*} c#244*{c#244 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#114*{c'_1#114 <- `c'_1*`}, c'_2#66*{c'_2#66 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#277))*{iter#277 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#278))*{iter#278 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#313)))))*{c_1#313 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#195)))))*{c_2#195 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#279))*{iter#279 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#115*{c'_1#115 <- `c'_1*`}, c'_2#67*{c'_2#67 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#344)*{c#344 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#213*{c_1#213 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#133*{c_2#133 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#83*{c'_1#83 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#214)))*{c_1#214 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#51*{c'_2#51 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#134)))*{c_2#134 <- `c_2*`} - -- let{`c*` : iN*} c#342*{c#342 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#84*{c'_1#84 <- `c'_1*`}, c'_2#52*{c'_2#52 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#343)))*{c#343 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#247)*{c#247 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#314*{c_1#314 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#196*{c_2#196 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#116*{c'_1#116 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#315)))*{c_1#315 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#68*{c'_2#68 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#197)))*{c_2#197 <- `c_2*`} + -- let{`c*` : iN*} c#246*{c#246 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#117*{c'_1#117 <- `c'_1*`}, c'_2#69*{c'_2#69 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#280))*{iter#280 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#281))*{iter#281 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#316)))))*{c_1#316 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#198)))))*{c_2#198 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#282))*{iter#282 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#118*{c'_1#118 <- `c'_1*`}, c'_2#70*{c'_2#70 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#347)*{c#347 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#215*{c_1#215 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#135*{c_2#135 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#85*{c'_1#85 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#216)))*{c_1#216 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#53*{c'_2#53 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#136)))*{c_2#136 <- `c_2*`} - -- let{`c*` : iN*} c#345*{c#345 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#86*{c'_1#86 <- `c'_1*`}, c'_2#54*{c'_2#54 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#346)))*{c#346 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#249)*{c#249 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#317*{c_1#317 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#199*{c_2#199 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#119*{c'_1#119 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#318)))*{c_1#318 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#71*{c'_2#71 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#200)))*{c_2#200 <- `c_2*`} + -- let{`c*` : iN*} c#248*{c#248 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#120*{c'_1#120 <- `c'_1*`}, c'_2#72*{c'_2#72 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#283))*{iter#283 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#284))*{iter#284 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#319)))))*{c_1#319 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#201)))))*{c_2#201 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#285))*{iter#285 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#121*{c'_1#121 <- `c'_1*`}, c'_2#73*{c'_2#73 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#350)*{c#350 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#217*{c_1#217 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#137*{c_2#137 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#87*{c'_1#87 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#218)))*{c_1#218 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#55*{c'_2#55 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#138)))*{c_2#138 <- `c_2*`} - -- let{`c*` : iN*} c#348*{c#348 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#88*{c'_1#88 <- `c'_1*`}, c'_2#56*{c'_2#56 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#349)))*{c#349 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#251)*{c#251 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#320*{c_1#320 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#202*{c_2#202 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#122*{c'_1#122 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#321)))*{c_1#321 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#74*{c'_2#74 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#203)))*{c_2#203 <- `c_2*`} + -- let{`c*` : iN*} c#250*{c#250 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#123*{c'_1#123 <- `c'_1*`}, c'_2#75*{c'_2#75 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#286))*{iter#286 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#287))*{iter#287 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#322)))))*{c_1#322 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#204)))))*{c_2#204 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#288))*{iter#288 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#124*{c'_1#124 <- `c'_1*`}, c'_2#76*{c'_2#76 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#353)*{c#353 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#219*{c_1#219 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#139*{c_2#139 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#89*{c'_1#89 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#220)))*{c_1#220 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#57*{c'_2#57 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#140)))*{c_2#140 <- `c_2*`} - -- let{`c*` : iN*} c#351*{c#351 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#90*{c'_1#90 <- `c'_1*`}, c'_2#58*{c'_2#58 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#352)))*{c#352 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#253)*{c#253 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#323*{c_1#323 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#205*{c_2#205 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#125*{c'_1#125 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#324)))*{c_1#324 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#77*{c'_2#77 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#206)))*{c_2#206 <- `c_2*`} + -- let{`c*` : iN*} c#252*{c#252 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#126*{c'_1#126 <- `c'_1*`}, c'_2#78*{c'_2#78 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#289))*{iter#289 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#290))*{iter#290 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#325)))))*{c_1#325 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#207)))))*{c_2#207 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#291))*{iter#291 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#127*{c'_1#127 <- `c'_1*`}, c'_2#79*{c'_2#79 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#356)*{c#356 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#221*{c_1#221 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#141*{c_2#141 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#91*{c'_1#91 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#222)))*{c_1#222 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#59*{c'_2#59 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#142)))*{c_2#142 <- `c_2*`} - -- let{`c*` : iN*} c#354*{c#354 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#92*{c'_1#92 <- `c'_1*`}, c'_2#60*{c'_2#60 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#355)))*{c#355 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#255)*{c#255 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#326*{c_1#326 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#208*{c_2#208 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#128*{c'_1#128 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#327)))*{c_1#327 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#80*{c'_2#80 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#209)))*{c_2#209 <- `c_2*`} + -- let{`c*` : iN*} c#254*{c#254 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#129*{c'_1#129 <- `c'_1*`}, c'_2#81*{c'_2#81 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#292))*{iter#292 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#293))*{iter#293 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#328)))))*{c_1#328 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#210)))))*{c_2#210 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#294))*{iter#294 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#130*{c'_1#130 <- `c'_1*`}, c'_2#82*{c'_2#82 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#359)*{c#359 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#223*{c_1#223 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#143*{c_2#143 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#93*{c'_1#93 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#224)))*{c_1#224 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#61*{c'_2#61 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#144)))*{c_2#144 <- `c_2*`} - -- let{`c*` : iN*} c#357*{c#357 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#94*{c'_1#94 <- `c'_1*`}, c'_2#62*{c'_2#62 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#358)))*{c#358 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#257)*{c#257 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#329*{c_1#329 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#211*{c_2#211 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#131*{c'_1#131 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#330)))*{c_1#330 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#83*{c'_2#83 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#212)))*{c_2#212 <- `c_2*`} + -- let{`c*` : iN*} c#256*{c#256 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#132*{c'_1#132 <- `c'_1*`}, c'_2#84*{c'_2#84 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#295))*{iter#295 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#296))*{iter#296 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#331)))))*{c_1#331 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#213)))))*{c_2#213 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#297))*{iter#297 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#133*{c'_1#133 <- `c'_1*`}, c'_2#85*{c'_2#85 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#362)*{c#362 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#225*{c_1#225 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#145*{c_2#145 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#95*{c'_1#95 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#226)))*{c_1#226 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#63*{c'_2#63 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#146)))*{c_2#146 <- `c_2*`} - -- let{`c*` : iN*} c#360*{c#360 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#96*{c'_1#96 <- `c'_1*`}, c'_2#64*{c'_2#64 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#361)))*{c#361 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#259)*{c#259 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#332*{c_1#332 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#214*{c_2#214 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#134*{c'_1#134 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#333)))*{c_1#333 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#86*{c'_2#86 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#215)))*{c_2#215 <- `c_2*`} + -- let{`c*` : iN*} c#258*{c#258 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#135*{c'_1#135 <- `c'_1*`}, c'_2#87*{c'_2#87 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#298))*{iter#298 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#299))*{iter#299 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#334)))))*{c_1#334 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#216)))))*{c_2#216 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#300))*{iter#300 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#136*{c'_1#136 <- `c'_1*`}, c'_2#88*{c'_2#88 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#365)*{c#365 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#227*{c_1#227 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#147*{c_2#147 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#97*{c'_1#97 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#228)))*{c_1#228 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#65*{c'_2#65 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#148)))*{c_2#148 <- `c_2*`} - -- let{`c*` : iN*} c#363*{c#363 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#98*{c'_1#98 <- `c'_1*`}, c'_2#66*{c'_2#66 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#364)))*{c#364 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#261)*{c#261 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#335*{c_1#335 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#217*{c_2#217 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#137*{c'_1#137 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#336)))*{c_1#336 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#89*{c'_2#89 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#218)))*{c_2#218 <- `c_2*`} + -- let{`c*` : iN*} c#260*{c#260 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#138*{c'_1#138 <- `c'_1*`}, c'_2#90*{c'_2#90 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#301))*{iter#301 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#302))*{iter#302 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#337)))))*{c_1#337 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#219)))))*{c_2#219 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#303))*{iter#303 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#139*{c'_1#139 <- `c'_1*`}, c'_2#91*{c'_2#91 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#368)*{c#368 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#229*{c_1#229 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#149*{c_2#149 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#99*{c'_1#99 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#230)))*{c_1#230 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#67*{c'_2#67 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#150)))*{c_2#150 <- `c_2*`} - -- let{`c*` : iN*} c#366*{c#366 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#100*{c'_1#100 <- `c'_1*`}, c'_2#68*{c'_2#68 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#367)))*{c#367 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#263)*{c#263 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#338*{c_1#338 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#220*{c_2#220 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#140*{c'_1#140 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#339)))*{c_1#339 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#92*{c'_2#92 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#221)))*{c_2#221 <- `c_2*`} + -- let{`c*` : iN*} c#262*{c#262 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#141*{c'_1#141 <- `c'_1*`}, c'_2#93*{c'_2#93 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#304))*{iter#304 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#305))*{iter#305 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#340)))))*{c_1#340 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#222)))))*{c_2#222 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#306))*{iter#306 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#142*{c'_1#142 <- `c'_1*`}, c'_2#94*{c'_2#94 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#371)*{c#371 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#231*{c_1#231 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#151*{c_2#151 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#101*{c'_1#101 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#232)))*{c_1#232 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#69*{c'_2#69 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#152)))*{c_2#152 <- `c_2*`} - -- let{`c*` : iN*} c#369*{c#369 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#102*{c'_1#102 <- `c'_1*`}, c'_2#70*{c'_2#70 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#370)))*{c#370 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#265)*{c#265 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#341*{c_1#341 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#223*{c_2#223 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#143*{c'_1#143 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#342)))*{c_1#342 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#95*{c'_2#95 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#224)))*{c_2#224 <- `c_2*`} + -- let{`c*` : iN*} c#264*{c#264 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#144*{c'_1#144 <- `c'_1*`}, c'_2#96*{c'_2#96 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#307))*{iter#307 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#308))*{iter#308 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#343)))))*{c_1#343 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#225)))))*{c_2#225 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#309))*{iter#309 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#145*{c'_1#145 <- `c'_1*`}, c'_2#97*{c'_2#97 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#374)*{c#374 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#233*{c_1#233 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#153*{c_2#153 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#103*{c'_1#103 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#234)))*{c_1#234 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#71*{c'_2#71 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#154)))*{c_2#154 <- `c_2*`} - -- let{`c*` : iN*} c#372*{c#372 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#104*{c'_1#104 <- `c'_1*`}, c'_2#72*{c'_2#72 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#373)))*{c#373 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#267)*{c#267 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#344*{c_1#344 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#226*{c_2#226 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#146*{c'_1#146 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#345)))*{c_1#345 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#98*{c'_2#98 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#227)))*{c_2#227 <- `c_2*`} + -- let{`c*` : iN*} c#266*{c#266 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#147*{c'_1#147 <- `c'_1*`}, c'_2#99*{c'_2#99 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#310))*{iter#310 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#311))*{iter#311 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#346)))))*{c_1#346 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#228)))))*{c_2#228 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#312))*{iter#312 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#148*{c'_1#148 <- `c'_1*`}, c'_2#100*{c'_2#100 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#377)*{c#377 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#235*{c_1#235 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#155*{c_2#155 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#105*{c'_1#105 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#236)))*{c_1#236 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#73*{c'_2#73 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#156)))*{c_2#156 <- `c_2*`} - -- let{`c*` : iN*} c#375*{c#375 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#106*{c'_1#106 <- `c'_1*`}, c'_2#74*{c'_2#74 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#376)))*{c#376 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#269)*{c#269 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#347*{c_1#347 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#229*{c_2#229 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#149*{c'_1#149 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#348)))*{c_1#348 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#101*{c'_2#101 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#230)))*{c_2#230 <- `c_2*`} + -- let{`c*` : iN*} c#268*{c#268 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#150*{c'_1#150 <- `c'_1*`}, c'_2#102*{c'_2#102 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#313))*{iter#313 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#314))*{iter#314 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#349)))))*{c_1#349 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#231)))))*{c_2#231 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#315))*{iter#315 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#151*{c'_1#151 <- `c'_1*`}, c'_2#103*{c'_2#103 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#380)*{c#380 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#237*{c_1#237 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#157*{c_2#157 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#107*{c'_1#107 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#238)))*{c_1#238 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#75*{c'_2#75 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#158)))*{c_2#158 <- `c_2*`} - -- let{`c*` : iN*} c#378*{c#378 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#108*{c'_1#108 <- `c'_1*`}, c'_2#76*{c'_2#76 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#379)))*{c#379 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#271)*{c#271 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#350*{c_1#350 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#232*{c_2#232 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#152*{c'_1#152 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#351)))*{c_1#351 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#104*{c'_2#104 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#233)))*{c_2#233 <- `c_2*`} + -- let{`c*` : iN*} c#270*{c#270 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#153*{c'_1#153 <- `c'_1*`}, c'_2#105*{c'_2#105 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#316))*{iter#316 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#317))*{iter#317 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#352)))))*{c_1#352 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#234)))))*{c_2#234 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#318))*{iter#318 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#154*{c'_1#154 <- `c'_1*`}, c'_2#106*{c'_2#106 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#383)*{c#383 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#239*{c_1#239 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#159*{c_2#159 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#109*{c'_1#109 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#240)))*{c_1#240 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#77*{c'_2#77 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#160)))*{c_2#160 <- `c_2*`} - -- let{`c*` : iN*} c#381*{c#381 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#110*{c'_1#110 <- `c'_1*`}, c'_2#78*{c'_2#78 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#382)))*{c#382 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#273)*{c#273 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#353*{c_1#353 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#235*{c_2#235 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#155*{c'_1#155 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#354)))*{c_1#354 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#107*{c'_2#107 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#236)))*{c_2#236 <- `c_2*`} + -- let{`c*` : iN*} c#272*{c#272 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#156*{c'_1#156 <- `c'_1*`}, c'_2#108*{c'_2#108 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#319))*{iter#319 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#320))*{iter#320 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#355)))))*{c_1#355 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#237)))))*{c_2#237 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#321))*{iter#321 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#157*{c'_1#157 <- `c'_1*`}, c'_2#109*{c'_2#109 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#386)*{c#386 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#241*{c_1#241 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#161*{c_2#161 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#111*{c'_1#111 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#242)))*{c_1#242 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#79*{c'_2#79 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#162)))*{c_2#162 <- `c_2*`} - -- let{`c*` : iN*} c#384*{c#384 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#112*{c'_1#112 <- `c'_1*`}, c'_2#80*{c'_2#80 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#385)))*{c#385 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#275)*{c#275 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#356*{c_1#356 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#238*{c_2#238 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#158*{c'_1#158 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#357)))*{c_1#357 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#110*{c'_2#110 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#239)))*{c_2#239 <- `c_2*`} + -- let{`c*` : iN*} c#274*{c#274 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#159*{c'_1#159 <- `c'_1*`}, c'_2#111*{c'_2#111 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#322))*{iter#322 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#323))*{iter#323 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#358)))))*{c_1#358 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#240)))))*{c_2#240 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#324))*{iter#324 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#160*{c'_1#160 <- `c'_1*`}, c'_2#112*{c'_2#112 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivmul_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1#5*{i_1#5 <- `i_1*`}, i_2#5*{i_2#5 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1#7*{i_1#7 <- `i_1*`}, i_2#7*{i_2#7 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ @@ -11185,7 +11823,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#325))*{iter#325 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11200,7 +11840,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#326))*{iter#326 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11215,7 +11857,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#327))*{iter#327 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11230,7 +11874,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#328))*{iter#328 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11245,7 +11891,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#329))*{iter#329 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11260,7 +11908,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#330))*{iter#330 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11275,7 +11925,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#331))*{iter#331 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11290,7 +11942,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#332))*{iter#332 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11305,7 +11959,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#333))*{iter#333 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11320,7 +11976,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#334))*{iter#334 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11335,7 +11993,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#335))*{iter#335 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11350,7 +12010,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#336))*{iter#336 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11365,7 +12027,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#337))*{iter#337 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11380,7 +12044,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#338))*{iter#338 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11395,7 +12061,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#339))*{iter#339 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11410,7 +12078,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#340))*{iter#340 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11816,13 +12486,22 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval? def $packfield_{val : val}(I32_storagetype, val) = ?($fieldval_val(val)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation packfield__is_wf: `%%%`(storagetype : storagetype, val : val, ret_val : fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packfield__is_wf0{storagetype : storagetype, val : val, ret_val : fieldval}: + `%%%`(storagetype, val, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_val: `%`(val) + -- if ($packfield_(storagetype, val) =/= ?()) + -- if (ret_val = !($packfield_(storagetype, val))) + -- wf_fieldval: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -11967,13 +12646,22 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? def $unpackfield_{numtype : numtype, var_0 : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation unpackfield__is_wf: `%%%%`(storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule unpackfield__is_wf0{storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val}: + `%%%%`(storagetype, var_0, fieldval, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_fieldval: `%`(fieldval) + -- if ($unpackfield_(storagetype, var_0, fieldval) =/= ?()) + -- if (ret_val = !($unpackfield_(storagetype, var_0, fieldval))) + -- wf_val: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -12044,10 +12732,28 @@ def $store(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $store{s : store, f : frame}(`%;%`_state(s, f)) = s +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation store_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $store(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $frame(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation frame_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $frame(state)) + -- wf_frame: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tagaddr(state : state) : tagaddr* @@ -12059,61 +12765,169 @@ def $moduleinst(state : state) : moduleinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation moduleinst_is_wf: `%%`(state : state, ret_val : moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_is_wf0{state : state, ret_val : moduleinst}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $moduleinst(state)) + -- wf_moduleinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst(state : state) : taginst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation taginst_is_wf: `%%`(state : state, ret_val : taginst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_is_wf0{state : state, ret_val : taginst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $taginst(state)) + -- (wf_taginst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst(state : state) : globalinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation globalinst_is_wf: `%%`(state : state, ret_val : globalinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_is_wf0{state : state, ret_val : globalinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $globalinst(state)) + -- (wf_globalinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst(state : state) : meminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation meminst_is_wf: `%%`(state : state, ret_val : meminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_is_wf0{state : state, ret_val : meminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $meminst(state)) + -- (wf_meminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst(state : state) : tableinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tableinst_is_wf: `%%`(state : state, ret_val : tableinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_is_wf0{state : state, ret_val : tableinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $tableinst(state)) + -- (wf_tableinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst(state : state) : funcinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation funcinst_is_wf: `%%`(state : state, ret_val : funcinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_is_wf0{state : state, ret_val : funcinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $funcinst(state)) + -- (wf_funcinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst(state : state) : datainst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation datainst_is_wf: `%%`(state : state, ret_val : datainst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_is_wf0{state : state, ret_val : datainst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $datainst(state)) + -- (wf_datainst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst(state : state) : eleminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation eleminst_is_wf: `%%`(state : state, ret_val : eleminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_is_wf0{state : state, ret_val : eleminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $eleminst(state)) + -- (wf_eleminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst(state : state) : structinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation structinst_is_wf: `%%`(state : state, ret_val : structinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_is_wf0{state : state, ret_val : structinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $structinst(state)) + -- (wf_structinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst(state : state) : arrayinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation arrayinst_is_wf: `%%`(state : state, ret_val : arrayinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_is_wf0{state : state, ret_val : arrayinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $arrayinst(state)) + -- (wf_arrayinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst(state : state) : exninst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation exninst_is_wf: `%%`(state : state, ret_val : exninst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_is_wf0{state : state, ret_val : exninst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $exninst(state)) + -- (wf_exninst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof{z : state}(z) = $frame(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fof_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fof_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $fof(state)) + -- wf_frame: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -12124,123 +12938,337 @@ def $sof(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $sof{z : state}(z) = $store(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation sof_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule sof_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $sof(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tag_is_wf: `%%%`(state : state, tagidx : tagidx, ret_val : taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tag_is_wf0{state : state, tagidx : tagidx, ret_val : taginst}: + `%%%`(state, tagidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $tag(state, tagidx)) + -- wf_taginst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation global_is_wf: `%%%`(state : state, globalidx : globalidx, ret_val : globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule global_is_wf0{state : state, globalidx : globalidx, ret_val : globalinst}: + `%%%`(state, globalidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $global(state, globalidx)) + -- wf_globalinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation mem_is_wf: `%%%`(state : state, memidx : memidx, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule mem_is_wf0{state : state, memidx : memidx, ret_val : meminst}: + `%%%`(state, memidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $mem(state, memidx)) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation table_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule table_is_wf0{state : state, tableidx : tableidx, ret_val : tableinst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $table(state, tableidx)) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation func_is_wf: `%%%`(state : state, funcidx : funcidx, ret_val : funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule func_is_wf0{state : state, funcidx : funcidx, ret_val : funcinst}: + `%%%`(state, funcidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $func(state, funcidx)) + -- wf_funcinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation data_is_wf: `%%%`(state : state, dataidx : dataidx, ret_val : datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule data_is_wf0{state : state, dataidx : dataidx, ret_val : datainst}: + `%%%`(state, dataidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $data(state, dataidx)) + -- wf_datainst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation elem_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule elem_is_wf0{state : state, tableidx : tableidx, ret_val : eleminst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $elem(state, tableidx)) + -- wf_eleminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[$proj_uN_0(x).0] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation local_is_wf: `%%%`(state : state, localidx : localidx, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule local_is_wf0{state : state, localidx : localidx, ret_val : val?}: + `%%%`(state, localidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $local(state, localidx)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) - -- wf_state: `%`(`%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_local_is_wf: `%%%%`(state : state, localidx : localidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_local_is_wf0{state : state, localidx : localidx, val : val, ret_val : state}: + `%%%%`(state, localidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_local(state, localidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_global_is_wf: `%%%%`(state : state, globalidx : globalidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_global_is_wf0{state : state, globalidx : globalidx, val : val, ret_val : state}: + `%%%%`(state, globalidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_global(state, globalidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_table_is_wf: `%%%%%`(state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_table_is_wf0{state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state}: + `%%%%%`(state, tableidx, nat, ref, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_ref: `%`(ref) + -- if (ret_val = $with_table(state, tableidx, nat, ref)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_tableinst_is_wf: `%%%%`(state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_tableinst_is_wf0{state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state}: + `%%%%`(state, tableidx, tableinst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_tableinst: `%`(tableinst) + -- if (ret_val = $with_tableinst(state, tableidx, tableinst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{z : state, x : uN, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b#1*{b#1 <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b#2*{b#2 <- `b*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_mem_is_wf: `%%%%%%`(state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_mem_is_wf0{state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state}: + `%%%%%%`(state, memidx, nat, nat_0, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_mem(state, memidx, nat, nat_0, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_meminst_is_wf: `%%%%`(state : state, memidx : memidx, meminst : meminst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_meminst_is_wf0{state : state, memidx : memidx, meminst : meminst, ret_val : state}: + `%%%%`(state, memidx, meminst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- wf_meminst: `%`(meminst) + -- if (ret_val = $with_meminst(state, memidx, meminst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{z : state, x : uN, `r*` : ref*}(z, x, r#1*{r#1 <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r#2*{r#2 <- `r*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_elem_is_wf: `%%%%`(state : state, elemidx : elemidx, var_0 : ref*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_elem_is_wf0{state : state, elemidx : elemidx, var_0 : ref*, ret_val : state}: + `%%%%`(state, elemidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, elemidx) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_elem(state, elemidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b#3*{b#3 <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b#4*{b#4 <- `b*`}], $fof(z))) + def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b#2*{b#2 <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_data_is_wf: `%%%%`(state : state, dataidx : dataidx, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_data_is_wf0{state : state, dataidx : dataidx, var_0 : byte*, ret_val : state}: + `%%%%`(state, dataidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_data(state, dataidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_struct_is_wf: `%%%%%`(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_struct_is_wf0{state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, structaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_struct(state, structaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_array_is_wf: `%%%%%`(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_array_is_wf0{state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, arrayaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_array(state, arrayaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{z : state, `si*` : structinst*}(z, si#1*{si#1 <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store =++ si#2*{si#2 <- `si*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_structinst_is_wf: `%%%`(state : state, var_0 : structinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_structinst_is_wf0{state : state, var_0 : structinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_structinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_structinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai#1*{ai#1 <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store =++ ai#2*{ai#2 <- `ai*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_arrayinst_is_wf: `%%%`(state : state, var_0 : arrayinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_arrayinst_is_wf0{state : state, var_0 : arrayinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_arrayinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_arrayinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{z : state, `exn*` : exninst*}(z, exn#1*{exn#1 <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[EXNS_store =++ exn#2*{exn#2 <- `exn*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_exninst_is_wf: `%%%`(state : state, var_0 : exninst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_exninst_is_wf0{state : state, var_0 : exninst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_exninst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_exninst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? @@ -12251,42 +13279,57 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- if ($proj_uN_0(i').0 = (|r'#3*{r'#3 <- `r'*`}| + n)) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#3).0))?{j#3 <- `j?`} -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) - -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#4?{j#4 <- `j?`}), rt), REFS r'#4*{r'#4 <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#5?{j#5 <- `j?`}), rt), REFS r'#5*{r'#5 <- `r'*`} ++ r^n{}}) def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growtable_is_wf: `%%%%`(tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growtable_is_wf0{tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst}: + `%%%%`(tableinst, nat, ref, ret_val) + -- wf_tableinst: `%`(tableinst) + -- wf_ref: `%`(ref) + -- if ($growtable(tableinst, nat, ref) =/= ?()) + -- if (ret_val = !($growtable(tableinst, nat, ref))) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, i' : uN}(meminst, n) = ?(meminst') - -- let{at : addrtype, i : u64, `j?` : u64?, `b*` : byte*} {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#5*{b#5 <- `b*`}} = meminst - -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#6*{b#6 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#7*{b#7 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- let{at : addrtype, i : u64, `j?` : u64?, `b*` : byte*} {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#3*{b#3 <- `b*`}} = meminst + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#4*{b#4 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#5*{b#5 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#8).0))?{j#8 <- `j?`} -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#9?{j#9 <- `j?`})), BYTES b#8*{b#8 <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#10?{j#10 <- `j?`})), BYTES b#9*{b#9 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#9?{j#9 <- `j?`})), BYTES b#6*{b#6 <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#10?{j#10 <- `j?`})), BYTES b#7*{b#7 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growmem_is_wf: `%%%`(meminst : meminst, nat : nat, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growmem_is_wf0{meminst : meminst, nat : nat, ret_val : meminst}: + `%%%`(meminst, nat, ret_val) + -- wf_meminst: `%`(meminst) + -- if ($growmem(meminst, nat) =/= ?()) + -- if (ret_val = !($growmem(meminst, nat))) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -12296,69 +13339,45 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.38 rule null{s : store}: `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.NULL_ADDR`_ref) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.33 rule i31{s : store, i : u31}: `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.I31_NUM`_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) - -- wf_store: `%`(s) -- wf_exninst: `%`(exn) - -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.35 rule host{s : store, a : addr}: `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.HOST_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 rule extern{s : store, ref : ref}: `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.EXTERN`_ref(ref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) @@ -12367,9 +13386,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) -- wf_reftype: `%`(rt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -12380,31 +13396,22 @@ relation Val_ok: `%|-%:%`(store, val, valtype) rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, $val_num(num), $valtype_numtype(nt)) -- Num_ok: `%|-%:%`(s, num, nt) - -- wf_store: `%`(s) - -- wf_num: `%`(num) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, $val_vec(vec), $valtype_vectype(vt)) -- Vec_ok: `%|-%:%`(s, vec, vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, $val_ref(ref), $valtype_reftype(rt)) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Packval_ok: `%|-%:%`(store, packval, packtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, pt : packtype, c : iN}: `%|-%:%`(s, PACK_packval(pt, c), pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(PACK_packval(pt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) @@ -12412,16 +13419,11 @@ relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) rule val{s : store, val : val, t : valtype}: `%|-%:%`(s, $fieldval_val(val), $storagetype_valtype(t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule packval{s : store, packval : packval, pt : packtype}: `%|-%:%`(s, $fieldval_packval(packval), $storagetype_packtype(pt)) -- Packval_ok: `%|-%:%`(s, packval, pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(packval) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -12433,48 +13435,36 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-111.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:113.1-115.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:117.1-119.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:121.1-123.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:125.1-128.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) -- wf_externtype: `%`(xt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -12484,36 +13474,82 @@ def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (iter_val#3 : deftype <: typeuse)*{iter_val#3 <- moduleinst.TYPES_moduleinst}) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_valtype_is_wf: `%%%`(moduleinst : moduleinst, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_valtype_is_wf0{moduleinst : moduleinst, valtype : valtype, ret_val : valtype}: + `%%%`(moduleinst, valtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $inst_valtype(moduleinst, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (iter_val#4 : deftype <: typeuse)*{iter_val#4 <- moduleinst.TYPES_moduleinst}) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_reftype_is_wf: `%%%`(moduleinst : moduleinst, reftype : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_reftype_is_wf0{moduleinst : moduleinst, reftype : reftype, ret_val : reftype}: + `%%%`(moduleinst, reftype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_reftype: `%`(reftype) + -- if (ret_val = $inst_reftype(moduleinst, reftype)) + -- wf_reftype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (iter_val#5 : deftype <: typeuse)*{iter_val#5 <- moduleinst.TYPES_moduleinst}) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_globaltype_is_wf: `%%%`(moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_globaltype_is_wf0{moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype}: + `%%%`(moduleinst, globaltype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = $inst_globaltype(moduleinst, globaltype)) + -- wf_globaltype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (iter_val#6 : deftype <: typeuse)*{iter_val#6 <- moduleinst.TYPES_moduleinst}) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_memtype_is_wf: `%%%`(moduleinst : moduleinst, memtype : memtype, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_memtype_is_wf0{moduleinst : moduleinst, memtype : memtype, ret_val : memtype}: + `%%%`(moduleinst, memtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $inst_memtype(moduleinst, memtype)) + -- wf_memtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (iter_val#7 : deftype <: typeuse)*{iter_val#7 <- moduleinst.TYPES_moduleinst}) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_tabletype_is_wf: `%%%`(moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_tabletype_is_wf0{moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype}: + `%%%`(moduleinst, tabletype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = $inst_tabletype(moduleinst, tabletype)) + -- wf_tabletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref}: `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12521,274 +13557,183 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([$instr_val(val) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_1)]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_2)]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) -- if ($proj_uN_0(l).0 = 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) -- if ($proj_uN_0(l).0 > 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [BR_instr(l)]) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [$instr_val(val)]) -- if (val =/= `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], []) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], [$instr_val(val) BR_instr(l)]) -- if (val =/= `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})], $instr_val(val)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`($instr_val(val)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-handler`{n : n, `catch*` : catch*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.tee`{val : val, x : idx}: `%~>%`([$instr_val(val) `LOCAL.TEE`_instr(x)], [$instr_val(val) $instr_val(val) `LOCAL.SET`_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.i31`{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref}: `%~>%`([$instr_ref(ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([$instr_ref(ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref}: `%~>%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr], [TRAP_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instr: `%`(TRAP_instr) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr], [$instr_ref(ref)]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12796,237 +13741,163 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) -- if (ref_1 = ref_2) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref_1 =/= ref_2) -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{sx : sx}: `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(`REF.I31_NUM`_instr(i)) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new`{val : val, n : n, x : idx}: `%~>%`([$instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], $instr_val(val)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ref : ref}: `%~>%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{ref : ref}: `%~>%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`: `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{ref : ref}: `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [$instr_ref(ref)]) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) -- if ($unop_(nt, unop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) -- if ($binop_(nt, binop, c_1, c_2) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvunop_(V128_vectype, vvunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) -- if ($vunop_(sh, vunop, c_1) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*}: @@ -13036,64 +13907,48 @@ relation Step_pure: `%~>%`(instr*, instr*) -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), i))*{i <- `i*`} - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)} + -- (wf_uN: `%%`(32, $inez_($jsizenn(Jnn), !($proj_lane__2(i)))))*{i <- `i*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_1)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13101,9 +13956,7 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)} -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) @@ -13114,75 +13967,67 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)|) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_uN: `%%`(32, $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)} + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_2)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextunop__(sh_1, sh_2, vextunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1#3*{t_1#3 <- `t_1*`}), `%`_resulttype(t_2#3*{t_2#3 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1#4*{t_1#4 <- `t_1*`}), [], `%`_resulttype(t_2#4*{t_2#4 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#5*{t_1#5 <- `t_1*`}), `%`_resulttype(t_2#5*{t_2#5 <- `t_2*`}))) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1#2*{t_1#2 <- `t_1*`}), `%`_resulttype(t_2#2*{t_2#2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#3*{t_1#3 <- `t_1*`}), `%`_resulttype(t_2#3*{t_2#3 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t#1?{t#1 <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t#2?{t#2 <- `t?`})))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation blocktype__is_wf: `%%%`(state : state, blocktype : blocktype, ret_val : instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule blocktype__is_wf0{state : state, blocktype : blocktype, ret_val : instrtype}: + `%%%`(state, blocktype, ret_val) + -- wf_state: `%`(state) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $blocktype_(state, blocktype)) + -- wf_instrtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) @@ -13192,8 +14037,7 @@ relation `Step_read_before_br_on_cast-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13204,7 +14048,7 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13212,15 +14056,10 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: @@ -13229,10 +14068,7 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: @@ -13241,9 +14077,7 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) @@ -13252,8 +14086,7 @@ relation `Step_read_before_table.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-zero`: `%`(config) @@ -13263,8 +14096,8 @@ relation `Step_read_before_table.copy-zero`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-le`: `%`(config) @@ -13273,7 +14106,6 @@ relation `Step_read_before_table.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -13281,8 +14113,8 @@ relation `Step_read_before_table.copy-le`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-gt`: `%`(config) @@ -13293,22 +14125,12 @@ relation `Step_read_before_table.copy-gt`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -13316,8 +14138,8 @@ relation `Step_read_before_table.copy-gt`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.init-zero`: `%`(config) @@ -13327,8 +14149,8 @@ relation `Step_read_before_table.init-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.fill-zero`: `%`(config) @@ -13337,8 +14159,7 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-zero`: `%`(config) @@ -13348,8 +14169,8 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-le`: `%`(config) @@ -13358,7 +14179,6 @@ relation `Step_read_before_memory.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -13366,8 +14186,8 @@ relation `Step_read_before_memory.copy-le`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.init-zero`: `%`(config) @@ -13377,8 +14197,8 @@ relation `Step_read_before_memory.init-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_ref.test-false`: `%`(config) @@ -13388,8 +14208,7 @@ relation `Step_read_before_ref.test-false`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13400,7 +14219,7 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13411,8 +14230,23 @@ relation `Step_read_before_array.fill-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-zero`: `%`(config) @@ -13422,8 +14256,7 @@ relation `Step_read_before_array.copy-zero`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13431,8 +14264,7 @@ relation `Step_read_before_array.copy-zero`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-le`: `%`(config) @@ -13441,7 +14273,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13449,8 +14280,7 @@ relation `Step_read_before_array.copy-le`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13458,8 +14288,7 @@ relation `Step_read_before_array.copy-le`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-gt`: `%`(config) @@ -13472,17 +14301,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if ($sx(zt_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13490,7 +14308,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13498,8 +14315,7 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13507,8 +14323,7 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_elem-zero`: `%`(config) @@ -13517,8 +14332,7 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -13526,8 +14340,30 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-zero`: `%`(config) @@ -13538,8 +14374,7 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- if ($proj_num__0(j) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13548,8 +14383,7 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-num`: `%`(config) @@ -13558,7 +14392,6 @@ relation `Step_read_before_array.init_data-num`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: @@ -13567,8 +14400,7 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- if ($proj_num__0(j) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13577,8 +14409,7 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) @@ -13586,16 +14417,14 @@ relation Step_read: `%~>%`(config, instr*) rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13604,15 +14433,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: @@ -13620,15 +14447,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: @@ -13636,15 +14461,11 @@ relation Step_read: `%~>%`(config, instr*) -- if (a < |$funcinst(z)|) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, yy : typeuse}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: @@ -13655,8 +14476,7 @@ relation Step_read: `%~>%`(config, instr*) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- (if ($default_(t) =/= ?()))*{t <- `t*`} -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) @@ -13667,72 +14487,48 @@ relation Step_read: `%~>%`(config, instr*) -- if (a < |$funcinst(z)|) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: @@ -13741,9 +14537,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: @@ -13752,75 +14546,60 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [$instr_val(val)]) -- if ($local(z, x) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) + -- (wf_val: `%`(iter))?{iter <- $local(z, x)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `global.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [$instr_val(val)]) -- if ($global(z, x).VALUE_globalinst = val) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) + -- wf_globalinst: `%`($global(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) - -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tableinst: `%`($table(z, x)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13828,8 +14607,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: @@ -13837,7 +14615,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: @@ -13845,12 +14622,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (n =/= 0) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -13858,15 +14629,14 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: @@ -13875,15 +14645,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_2) =/= ?()) -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: @@ -13891,15 +14652,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -13907,8 +14659,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -13917,7 +14669,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -13927,69 +14678,58 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, Jnn : Jnn}: @@ -13997,8 +14737,9 @@ relation Step_read: `%~>%`(config, instr*) -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: @@ -14018,8 +14758,9 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) @@ -14028,8 +14769,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: @@ -14038,16 +14778,16 @@ relation Step_read: `%~>%`(config, instr*) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: @@ -14057,8 +14797,10 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, k)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) @@ -14067,8 +14809,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) - -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_meminst: `%`($mem(z, x)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14076,8 +14817,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: @@ -14085,7 +14825,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: @@ -14093,12 +14832,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (n =/= 0) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -14106,8 +14839,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -14116,7 +14849,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -14126,15 +14858,6 @@ relation Step_read: `%~>%`(config, instr*) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -14144,15 +14867,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14160,8 +14874,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14170,7 +14884,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14180,27 +14893,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL`_instr(ht)])) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -14208,16 +14909,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -14225,15 +14923,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: @@ -14242,16 +14938,13 @@ relation Step_read: `%~>%`(config, instr*) -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) =/= ?()))*{zt <- `zt*`} -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))}*{zt <- `zt*`} + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -14261,7 +14954,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) -- if (a < |$structinst(z)|) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14270,9 +14962,8 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) =/= ?()) -- if (!($default_($unpack(zt))) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))} + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14280,17 +14971,14 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), $instr_ref(ref)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: @@ -14299,8 +14987,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14311,16 +14998,14 @@ relation Step_read: `%~>%`(config, instr*) -- if ($zsize(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_byte: `%`(iter))*{iter <- $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))} + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)}^n{c <- `c*`} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: @@ -14328,8 +15013,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: @@ -14339,27 +15023,20 @@ relation Step_read: `%~>%`(config, instr*) -- if (a < |$arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) -- if (a < |$arrayinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: @@ -14367,44 +15044,27 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- if (n =/= 0) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -14412,8 +15072,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -14421,45 +15080,23 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), []) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if (n =/= 0) - -- if (a_2 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- if (a_1 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ($sx(zt_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14471,24 +15108,11 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ($sx(zt_2) =/= ?()) -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14496,54 +15120,34 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), []) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- if (n =/= 0) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14551,8 +15155,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: @@ -14561,8 +15164,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14570,7 +15172,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), []) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: @@ -14582,15 +15183,8 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14602,23 +15196,18 @@ relation Step: `%~>%`(config, config) rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -14626,8 +15215,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -14635,8 +15222,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -14644,8 +15229,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) @@ -14657,82 +15240,69 @@ relation Step: `%~>%`(config, config) -- if (a = |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_taginst: `%`($tag(z, x)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 rule `local.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:322.1-323.58 rule `global.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:340.1-342.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-354.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) - -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_tableinst: `%`(!($growtable($table(z, x), n, ref))) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:356.1-357.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:417.1-418.51 rule `elem.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:501.1-504.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:506.1-510.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: @@ -14740,32 +15310,29 @@ relation Step: `%~>%`(config, config) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))} + -- wf_uN: `%%`(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-531.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:534.1-537.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-544.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: @@ -14776,8 +15343,7 @@ relation Step: `%~>%`(config, config) -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))} -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:553.1-556.37 @@ -14785,20 +15351,16 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_meminst: `%`(!($growmem($mem(z, x), n))) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:558.1-559.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:619.1-620.51 rule `data.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:700.1-704.65 rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: @@ -14807,16 +15369,13 @@ relation Step: `%~>%`(config, config) -- if (a = |$structinst(z)|) -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`, zt <- `zt*`} -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:721.1-722.55 rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(val) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(val) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:724.1-727.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -14824,8 +15383,6 @@ relation Step: `%~>%`(config, config) -- if ($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val) =/= ?()) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:740.1-745.65 @@ -14834,16 +15391,13 @@ relation Step: `%~>%`(config, config) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`} -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-786.66 rule `array.set-null`{z : state, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:788.1-790.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: @@ -14851,8 +15405,7 @@ relation Step: `%~>%`(config, config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-795.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: @@ -14860,8 +15413,6 @@ relation Step: `%~>%`(config, config) -- if ($proj_num__0(i) =/= ?()) -- if ($packfield_(zt, val) =/= ?()) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -14873,7 +15424,6 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: @@ -14881,8 +15431,8 @@ relation Steps: `%~>*%`(config, config) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14915,9 +15465,18 @@ def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) -- if (taginst = {TYPE tagtype}) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_taginst: `%`({TYPE tagtype}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctag_is_wf: `%%%`(store : store, tagtype : tagtype, ret_val : (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctag_is_wf0{store : store, tagtype : tagtype, ret_val : (store, tagaddr)}: + `%%%`(store, tagtype, ret_val) + -- wf_store: `%`(store) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = $alloctag(store, tagtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14929,6 +15488,22 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*}(s, [tagtype] ++ tagtype'#1*{tagtype'#1 <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- let{ja : tagaddr, s_1 : store} (s_1, ja) = $alloctag(s, tagtype) -- let{s_2 : store, `ja'*` : tagaddr*} (s_2, ja'#1*{ja'#1 <- `ja'*`}) = $alloctags(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}) + -- wf_store: `%`($alloctag(s, tagtype).0) + -- wf_store: `%`($alloctags(s_1, tagtype'#3*{tagtype'#3 <- `tagtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation alloctags_is_wf: `%%%`(store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule alloctags_is_wf0{store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_typeuse: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $alloctags(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14936,9 +15511,19 @@ def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, gl ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) -- if (globalinst = {TYPE globaltype, VALUE val}) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocglobal_is_wf: `%%%%`(store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocglobal_is_wf0{store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)}: + `%%%%`(store, globaltype, val, ret_val) + -- wf_store: `%`(store) + -- wf_globaltype: `%`(globaltype) + -- wf_val: `%`(val) + -- if (ret_val = $allocglobal(store, globaltype, val)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14950,6 +15535,23 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*}(s, [globaltype] ++ globaltype'#1*{globaltype'#1 <- `globaltype'*`}, [val] ++ val'#1*{val'#1 <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- let{ga : globaladdr, s_1 : store} (s_1, ga) = $allocglobal(s, globaltype, val) -- let{s_2 : store, `ga'*` : globaladdr*} (s_2, ga'#1*{ga'#1 <- `ga'*`}) = $allocglobals(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}) + -- wf_store: `%`($allocglobal(s, globaltype, val).0) + -- wf_store: `%`($allocglobals(s_1, globaltype'#3*{globaltype'#3 <- `globaltype'*`}, val'#3*{val'#3 <- `val'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation allocglobals_is_wf: `%%%%`(store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule allocglobals_is_wf0{store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $allocglobals(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14957,9 +15559,18 @@ def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#11?{j#11 <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#12?{j#12 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#13?{j#13 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmem_is_wf: `%%%`(store : store, memtype : memtype, ret_val : (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmem_is_wf0{store : store, memtype : memtype, ret_val : (store, memaddr)}: + `%%%`(store, memtype, ret_val) + -- wf_store: `%`(store) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $allocmem(store, memtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14971,6 +15582,22 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*}(s, [memtype] ++ memtype'#1*{memtype'#1 <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- let{ma : memaddr, s_1 : store} (s_1, ma) = $allocmem(s, memtype) -- let{s_2 : store, `ma'*` : memaddr*} (s_2, ma'#1*{ma'#1 <- `ma'*`}) = $allocmems(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}) + -- wf_store: `%`($allocmem(s, memtype).0) + -- wf_store: `%`($allocmems(s_1, memtype'#3*{memtype'#3 <- `memtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation allocmems_is_wf: `%%%`(store : store, var_0 : memtype*, ret_val : (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule allocmems_is_wf0{store : store, var_0 : memtype*, ret_val : (store, memaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_memtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocmems(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14978,9 +15605,19 @@ def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, table ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j#14?{j#14 <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#15?{j#15 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#16?{j#16 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctable_is_wf: `%%%%`(store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctable_is_wf0{store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)}: + `%%%%`(store, tabletype, ref, ret_val) + -- wf_store: `%`(store) + -- wf_tabletype: `%`(tabletype) + -- wf_ref: `%`(ref) + -- if (ret_val = $alloctable(store, tabletype, ref)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14992,6 +15629,23 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*}(s, [tabletype] ++ tabletype'#1*{tabletype'#1 <- `tabletype'*`}, [ref] ++ ref'#1*{ref'#1 <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- let{ta : tableaddr, s_1 : store} (s_1, ta) = $alloctable(s, tabletype, ref) -- let{s_2 : store, `ta'*` : tableaddr*} (s_2, ta'#1*{ta'#1 <- `ta'*`}) = $alloctables(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}) + -- wf_store: `%`($alloctable(s, tabletype, ref).0) + -- wf_store: `%`($alloctables(s_1, tabletype'#3*{tabletype'#3 <- `tabletype'*`}, ref'#3*{ref'#3 <- `ref'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation alloctables_is_wf: `%%%%`(store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule alloctables_is_wf0{store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_tabletype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $alloctables(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14999,9 +15653,19 @@ def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocfunc_is_wf: `%%%%%`(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocfunc_is_wf0{store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)}: + `%%%%%`(store, deftype, funccode, moduleinst, ret_val) + -- wf_store: `%`(store) + -- wf_funccode: `%`(funccode) + -- wf_moduleinst: `%`(moduleinst) + -- if (ret_val = $allocfunc(store, deftype, funccode, moduleinst)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -15013,6 +15677,23 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*}(s, [dt] ++ dt'#3*{dt'#3 <- `dt'*`}, [funccode] ++ funccode'#1*{funccode'#1 <- `funccode'*`}, [moduleinst] ++ moduleinst'#1*{moduleinst'#1 <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- let{fa : funcaddr, s_1 : store} (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) -- let{s_2 : store, `fa'*` : funcaddr*} (s_2, fa'#1*{fa'#1 <- `fa'*`}) = $allocfuncs(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}) + -- wf_store: `%`($allocfunc(s, dt, funccode, moduleinst).0) + -- wf_store: `%`($allocfuncs(s_1, dt'#5*{dt'#5 <- `dt'*`}, funccode'#3*{funccode'#3 <- `funccode'*`}, moduleinst'#3*{moduleinst'#3 <- `moduleinst'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation allocfuncs_is_wf: `%%%%%`(store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule allocfuncs_is_wf0{store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)}: + `%%%%%`(store, var_0, var_1, var_2, ret_val) + -- wf_store: `%`(store) + -- (wf_funccode: `%`(var_1))*{var_1 <- var_1} + -- (wf_moduleinst: `%`(var_2))*{var_2 <- var_2} + -- if (ret_val = $allocfuncs(store, var_0, var_1, var_2)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15020,9 +15701,18 @@ def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte#2*{byte#2 <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) -- if (datainst = {BYTES byte#3*{byte#3 <- `byte*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_datainst: `%`({BYTES byte#4*{byte#4 <- `byte*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocdata_is_wf: `%%%%`(store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocdata_is_wf0{store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)}: + `%%%%`(store, datatype, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocdata(store, datatype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -15031,9 +15721,25 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 - def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**}(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#10*{b#10 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) - -- let{da : dataaddr, s_1 : store} (s_1, da) = $allocdata(s, ok, b#11*{b#11 <- `b*`}) + def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**}(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#8*{b#8 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- let{da : dataaddr, s_1 : store} (s_1, da) = $allocdata(s, ok, b#9*{b#9 <- `b*`}) -- let{s_2 : store, `da'*` : dataaddr*} (s_2, da'#1*{da'#1 <- `da'*`}) = $allocdatas(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}) + -- wf_store: `%`($allocdata(s, ok, b#10*{b#10 <- `b*`}).0) + -- wf_store: `%`($allocdatas(s_1, ok'#3*{ok'#3 <- `ok'*`}, b'#3*{b'#3 <- `b'*#3`}*{`b'*#3` <- `b'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation allocdatas_is_wf: `%%%%`(store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule allocdatas_is_wf0{store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocdatas(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15041,9 +15747,19 @@ def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref#1*{ref#1 <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) -- if (eleminst = {TYPE elemtype, REFS ref#2*{ref#2 <- `ref*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) -- wf_eleminst: `%`({TYPE elemtype, REFS ref#3*{ref#3 <- `ref*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocelem_is_wf: `%%%%`(store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocelem_is_wf0{store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)}: + `%%%%`(store, elemtype, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_reftype: `%`(elemtype) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocelem(store, elemtype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -15052,46 +15768,78 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 - def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**}(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#3*{ref'#3 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**}(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#4*{ref'#4 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- let{ea : elemaddr, s_1 : store} (s_1, ea) = $allocelem(s, rt, ref#5*{ref#5 <- `ref*`}) - -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'#1*{ea'#1 <- `ea'*`}) = $allocelems(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#4*{ref'#4 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}) + -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'#1*{ea'#1 <- `ea'*`}) = $allocelems(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#5*{ref'#5 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}) + -- wf_store: `%`($allocelem(s, rt, ref#6*{ref#6 <- `ref*`}).0) + -- wf_store: `%`($allocelems(s_1, rt'#3*{rt'#3 <- `rt'*`}, ref'#6*{ref'#6 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation allocelems_is_wf: `%%%%`(store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule allocelems_is_wf0{store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_reftype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocelems(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexport_is_wf: `%%%`(moduleinst : moduleinst, export : export, ret_val : exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexport_is_wf0{moduleinst : moduleinst, export : export, ret_val : exportinst}: + `%%%`(moduleinst, export, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_export: `%`(export) + -- if (ret_val = $allocexport(moduleinst, export)) + -- wf_exportinst: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export#4*{export#4 <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export#3*{export#3 <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexports_is_wf: `%%%`(moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexports_is_wf0{moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*}: + `%%%`(moduleinst, var_0, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- (wf_export: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocexports(moduleinst, var_0)) + -- (wf_exportinst: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `xi*` : exportinst*}(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}) = (s_7, moduleinst) - -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#2*{type#2 <- `type*`}), `%`_list(import#2*{import#2 <- `import*`}), `%`_list(tag#2*{tag#2 <- `tag*`}), `%`_list(global#4*{global#4 <- `global*`}), `%`_list(mem#4*{mem#4 <- `mem*`}), `%`_list(table#4*{table#4 <- `table*`}), `%`_list(func#3*{func#3 <- `func*`}), `%`_list(data#2*{data#2 <- `data*`}), `%`_list(elem#4*{elem#4 <- `elem*`}), start#4?{start#4 <- `start?`}, `%`_list(export#5*{export#5 <- `export*`})) = module + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#2*{type#2 <- `type*`}), `%`_list(import#2*{import#2 <- `import*`}), `%`_list(tag#2*{tag#2 <- `tag*`}), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list(func#3*{func#3 <- `func*`}), `%`_list(data#2*{data#2 <- `data*`}), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#4*{export#4 <- `export*`})) = module -- if (tag#3*{tag#3 <- `tag*`} = TAG_tag(tagtype#78)*{tagtype#78 <- `tagtype*`}) - -- if (global#5*{global#5 <- `global*`} = GLOBAL_global(globaltype#122, expr_G#1)*{expr_G#1 <- `expr_G*`, globaltype#122 <- `globaltype*`}) - -- if (mem#5*{mem#5 <- `mem*`} = MEMORY_mem(memtype#122)*{memtype#122 <- `memtype*`}) - -- if (table#5*{table#5 <- `table*`} = TABLE_table(tabletype#156, expr_T#1)*{expr_T#1 <- `expr_T*`, tabletype#156 <- `tabletype*`}) + -- if (global#4*{global#4 <- `global*`} = GLOBAL_global(globaltype#122, expr_G#1)*{expr_G#1 <- `expr_G*`, globaltype#122 <- `globaltype*`}) + -- if (mem#4*{mem#4 <- `mem*`} = MEMORY_mem(memtype#122)*{memtype#122 <- `memtype*`}) + -- if (table#4*{table#4 <- `table*`} = TABLE_table(tabletype#156, expr_T#1)*{expr_T#1 <- `expr_T*`, tabletype#156 <- `tabletype*`}) -- if (func#4*{func#4 <- `func*`} = FUNC_func(x#2, local#2*{local#2 <- `local*#82`}, expr_F#1)*{expr_F#1 <- `expr_F*`, `local*#82` <- `local**`, x#2 <- `x*`}) -- if (data#3*{data#3 <- `data*`} = DATA_data(byte#5*{byte#5 <- `byte*#110`}, datamode#110)*{`byte*#110` <- `byte**`, datamode#110 <- `datamode*`}) - -- if (elem#5*{elem#5 <- `elem*`} = ELEM_elem(elemtype#1, expr_E#1*{expr_E#1 <- `expr_E*#1`}, elemmode#230)*{elemmode#230 <- `elemmode*`, elemtype#1 <- `elemtype*`, `expr_E*#1` <- `expr_E**`}) + -- if (elem#4*{elem#4 <- `elem*`} = ELEM_elem(elemtype#1, expr_E#1*{expr_E#1 <- `expr_E*#1`}, elemmode#230)*{elemmode#230 <- `elemmode*`, elemtype#1 <- `elemtype*`, `expr_E*#1` <- `expr_E**`}) -- let{`aa_I*` : tagaddr*} aa_I#1*{aa_I#1 <- `aa_I*`} = $tagsxa(externaddr#2*{externaddr#2 <- `externaddr*`}) -- let{`ga_I*` : globaladdr*} ga_I#1*{ga_I#1 <- `ga_I*`} = $globalsxa(externaddr#3*{externaddr#3 <- `externaddr*`}) -- let{`ma_I*` : memaddr*} ma_I#1*{ma_I#1 <- `ma_I*`} = $memsxa(externaddr#4*{externaddr#4 <- `externaddr*`}) @@ -15106,31 +15854,62 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- let{s_5 : store, `da*` : dataaddr*} (s_5, da#1*{da#1 <- `da*`}) = $allocdatas(s_4, OK_datatype^|data#4*{data#4 <- `data*`}|{}, byte#6*{byte#6 <- `byte*#112`}*{`byte*#112` <- `byte**`}) -- let{s_6 : store, `ea*` : elemaddr*} (s_6, ea#1*{ea#1 <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype#2, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`})*{elemtype#2 <- `elemtype*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}) -- if ((s_7, fa#2*{fa#2 <- `fa*`}) = $allocfuncs(s_6, dt#14*{dt#14 <- `dt*`}[$proj_uN_0(x#3).0]*{x#3 <- `x*`}, FUNC_funccode(x#4, local#3*{local#3 <- `local*#84`}, expr_F#2)*{expr_F#2 <- `expr_F*`, `local*#84` <- `local**`, x#4 <- `x*`}, moduleinst^|func#6*{func#6 <- `func*`}|{})) - -- if (xi#1*{xi#1 <- `xi*`} = $allocexports({TYPES [], TAGS aa_I#2*{aa_I#2 <- `aa_I*`} ++ aa#2*{aa#2 <- `aa*`}, GLOBALS ga_I#2*{ga_I#2 <- `ga_I*`} ++ ga#2*{ga#2 <- `ga*`}, MEMS ma_I#2*{ma_I#2 <- `ma_I*`} ++ ma#2*{ma#2 <- `ma*`}, TABLES ta_I#2*{ta_I#2 <- `ta_I*`} ++ ta#2*{ta#2 <- `ta*`}, FUNCS fa_I#2*{fa_I#2 <- `fa_I*`} ++ fa#3*{fa#3 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#6*{export#6 <- `export*`})) + -- if (xi#1*{xi#1 <- `xi*`} = $allocexports({TYPES [], TAGS aa_I#2*{aa_I#2 <- `aa_I*`} ++ aa#2*{aa#2 <- `aa*`}, GLOBALS ga_I#2*{ga_I#2 <- `ga_I*`} ++ ga#2*{ga#2 <- `ga*`}, MEMS ma_I#2*{ma_I#2 <- `ma_I*`} ++ ma#2*{ma#2 <- `ma*`}, TABLES ta_I#2*{ta_I#2 <- `ta_I*`} ++ ta#2*{ta#2 <- `ta*`}, FUNCS fa_I#2*{fa_I#2 <- `fa_I*`} ++ fa#3*{fa#3 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#5*{export#5 <- `export*`})) -- if (moduleinst = {TYPES dt#15*{dt#15 <- `dt*`}, TAGS aa_I#3*{aa_I#3 <- `aa_I*`} ++ aa#3*{aa#3 <- `aa*`}, GLOBALS ga_I#3*{ga_I#3 <- `ga_I*`} ++ ga#3*{ga#3 <- `ga*`}, MEMS ma_I#3*{ma_I#3 <- `ma_I*`} ++ ma#3*{ma#3 <- `ma*`}, TABLES ta_I#3*{ta_I#3 <- `ta_I*`} ++ ta#3*{ta#3 <- `ta*`}, FUNCS fa_I#3*{fa_I#3 <- `fa_I*`} ++ fa#4*{fa#4 <- `fa*`}, DATAS da#2*{da#2 <- `da*`}, ELEMS ea#2*{ea#2 <- `ea*`}, EXPORTS xi#2*{xi#2 <- `xi*`}}) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) - -- wf_module: `%`(MODULE_module(`%`_list(type#4*{type#4 <- `type*`}), `%`_list(import#3*{import#3 <- `import*`}), `%`_list(tag#4*{tag#4 <- `tag*`}), `%`_list(global#6*{global#6 <- `global*`}), `%`_list(mem#6*{mem#6 <- `mem*`}), `%`_list(table#6*{table#6 <- `table*`}), `%`_list(func#7*{func#7 <- `func*`}), `%`_list(data#5*{data#5 <- `data*`}), `%`_list(elem#6*{elem#6 <- `elem*`}), start#5?{start#5 <- `start?`}, `%`_list(export#7*{export#7 <- `export*`}))) - -- (wf_tag: `%`(TAG_tag(tagtype#81)))*{tagtype#81 <- `tagtype*`} - -- (wf_global: `%`(GLOBAL_global(globaltype#125, expr_G#2)))*{expr_G#2 <- `expr_G*`, globaltype#125 <- `globaltype*`} - -- (wf_mem: `%`(MEMORY_mem(memtype#125)))*{memtype#125 <- `memtype*`} - -- (wf_table: `%`(TABLE_table(tabletype#159, expr_T#2)))*{expr_T#2 <- `expr_T*`, tabletype#159 <- `tabletype*`} - -- (wf_func: `%`(FUNC_func(x#5, local#4*{local#4 <- `local*#85`}, expr_F#3)))*{expr_F#3 <- `expr_F*`, `local*#85` <- `local**`, x#5 <- `x*`} - -- (wf_data: `%`(DATA_data(byte#7*{byte#7 <- `byte*#113`}, datamode#112)))*{`byte*#113` <- `byte**`, datamode#112 <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(elemtype#3, expr_E#2*{expr_E#2 <- `expr_E*#2`}, elemmode#232)))*{elemmode#232 <- `elemmode*`, elemtype#3 <- `elemtype*`, `expr_E*#2` <- `expr_E**`} - -- wf_moduleinst: `%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_moduleinst: `%`({TYPES dt#16*{dt#16 <- `dt*`}, TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) + -- wf_store: `%`($alloctags(s, $subst_all_tagtype(tagtype#81, $typeuse_deftype(dt#16)*{dt#16 <- `dt*`})*{tagtype#81 <- `tagtype*`}).0) + -- (wf_typeuse: `%`($subst_all_tagtype(tagtype#82, $typeuse_deftype(dt#17)*{dt#17 <- `dt*`})))*{tagtype#82 <- `tagtype*`} + -- wf_store: `%`($allocglobals(s_1, $subst_all_globaltype(globaltype#125, $typeuse_deftype(dt#18)*{dt#18 <- `dt*`})*{globaltype#125 <- `globaltype*`}, val_G#3*{val_G#3 <- `val_G*`}).0) + -- (wf_globaltype: `%`($subst_all_globaltype(globaltype#126, $typeuse_deftype(dt#19)*{dt#19 <- `dt*`})))*{globaltype#126 <- `globaltype*`} + -- wf_store: `%`($allocmems(s_2, $subst_all_memtype(memtype#125, $typeuse_deftype(dt#20)*{dt#20 <- `dt*`})*{memtype#125 <- `memtype*`}).0) + -- (wf_memtype: `%`($subst_all_memtype(memtype#126, $typeuse_deftype(dt#21)*{dt#21 <- `dt*`})))*{memtype#126 <- `memtype*`} + -- wf_store: `%`($alloctables(s_3, $subst_all_tabletype(tabletype#159, $typeuse_deftype(dt#22)*{dt#22 <- `dt*`})*{tabletype#159 <- `tabletype*`}, ref_T#3*{ref_T#3 <- `ref_T*`}).0) + -- (wf_tabletype: `%`($subst_all_tabletype(tabletype#160, $typeuse_deftype(dt#23)*{dt#23 <- `dt*`})))*{tabletype#160 <- `tabletype*`} + -- wf_store: `%`($allocdatas(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#113`}*{`byte*#113` <- `byte**`}).0) + -- wf_store: `%`($allocelems(s_5, $subst_all_reftype(elemtype#3, $typeuse_deftype(dt#24)*{dt#24 <- `dt*`})*{elemtype#3 <- `elemtype*`}, ref_E#3*{ref_E#3 <- `ref_E*#3`}*{`ref_E*#3` <- `ref_E**`}).0) + -- (wf_reftype: `%`($subst_all_reftype(elemtype#4, $typeuse_deftype(dt#25)*{dt#25 <- `dt*`})))*{elemtype#4 <- `elemtype*`} + -- wf_store: `%`($allocfuncs(s_6, dt#26*{dt#26 <- `dt*`}[$proj_uN_0(x#5).0]*{x#5 <- `x*`}, FUNC_funccode(x#6, local#4*{local#4 <- `local*#85`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#85` <- `local**`, x#6 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}).0) + -- (wf_exportinst: `%`(iter#341))*{iter#341 <- $allocexports({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#6*{export#6 <- `export*`})} + -- wf_module: `%`(MODULE_module(`%`_list(type#4*{type#4 <- `type*`}), `%`_list(import#3*{import#3 <- `import*`}), `%`_list(tag#4*{tag#4 <- `tag*`}), `%`_list(global#5*{global#5 <- `global*`}), `%`_list(mem#5*{mem#5 <- `mem*`}), `%`_list(table#5*{table#5 <- `table*`}), `%`_list(func#8*{func#8 <- `func*`}), `%`_list(data#6*{data#6 <- `data*`}), `%`_list(elem#5*{elem#5 <- `elem*`}), start#4?{start#4 <- `start?`}, `%`_list(export#7*{export#7 <- `export*`}))) + -- (wf_tag: `%`(TAG_tag(tagtype#83)))*{tagtype#83 <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype#127, expr_G#2)))*{expr_G#2 <- `expr_G*`, globaltype#127 <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype#127)))*{memtype#127 <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype#161, expr_T#2)))*{expr_T#2 <- `expr_T*`, tabletype#161 <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x#7, local#5*{local#5 <- `local*#86`}, expr_F#4)))*{expr_F#4 <- `expr_F*`, `local*#86` <- `local**`, x#7 <- `x*`} + -- (wf_data: `%`(DATA_data(byte#8*{byte#8 <- `byte*#114`}, datamode#112)))*{`byte*#114` <- `byte**`, datamode#112 <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype#5, expr_E#2*{expr_E#2 <- `expr_E*#2`}, elemmode#232)))*{elemmode#232 <- `elemmode*`, elemtype#5 <- `elemtype*`, `expr_E*#2` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt#27*{dt#27 <- `dt*`}, TAGS aa_I#6*{aa_I#6 <- `aa_I*`} ++ aa#6*{aa#6 <- `aa*`}, GLOBALS ga_I#6*{ga_I#6 <- `ga_I*`} ++ ga#6*{ga#6 <- `ga*`}, MEMS ma_I#6*{ma_I#6 <- `ma_I*`} ++ ma#6*{ma#6 <- `ma*`}, TABLES ta_I#6*{ta_I#6 <- `ta_I*`} ++ ta#6*{ta#6 <- `ta*`}, FUNCS fa_I#6*{fa_I#6 <- `fa_I*`} ++ fa#7*{fa#7 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmodule_is_wf: `%%%%%%%`(store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmodule_is_wf0{store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)}: + `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- (wf_ref: `%`(var_2))*{var_2 <- var_2} + -- (wf_ref: `%`(var_3))*{var_3 <- var_3}*{var_3 <- var_3} + -- if (ret_val = $allocmodule(store, module, var_0, var_1, var_2, var_3)) + -- wf_store: `%`(ret_val.0) + -- wf_moduleinst: `%`(ret_val.1) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_(dataidx : dataidx, data : data) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, n : nat, `b*` : byte*}(x, DATA_data(b#12^n{b#12 <- `b*`}, PASSIVE_datamode)) = [] + def $rundata_{x : uN, n : nat, `b*` : byte*}(x, DATA_data(b#11^n{b#11 <- `b*`}, PASSIVE_datamode)) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}(x, DATA_data(b#12^n{b#12 <- `b*`}, ACTIVE_datamode(y, instr#9*{instr#9 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation rundata__is_wf: `%%%`(dataidx : dataidx, data : data, ret_val : instr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}(x, DATA_data(b#13^n{b#13 <- `b*`}, ACTIVE_datamode(y, instr#7*{instr#7 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(y, x)) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) + rule rundata__is_wf0{dataidx : dataidx, data : data, ret_val : instr*}: + `%%%`(dataidx, data, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- wf_data: `%`(data) + -- if (ret_val = $rundata_(dataidx, data)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -15138,13 +15917,18 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e#1^n{e#1 <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e#2^n{e#2 <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e#3^n{e#3 <- `e*`}, ACTIVE_elemmode(y, instr#8*{instr#8 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`TABLE.INIT`_instr(y, x)) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e#3^n{e#3 <- `e*`}, ACTIVE_elemmode(y, instr#10*{instr#10 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation runelem__is_wf: `%%%`(elemidx : elemidx, elem : elem, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule runelem__is_wf0{elemidx : elemidx, elem : elem, ret_val : instr*}: + `%%%`(elemidx, elem, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- wf_elem: `%`(elem) + -- if (ret_val = $runelem_(elemidx, elem)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -15156,9 +15940,25 @@ def $evalexprs(state : state, expr*) : (state, ref*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-165.46 def $evalexprs{z : state, expr : instr*, `expr'*` : expr*, ref : ref, z' : state}(z, [expr] ++ expr'#1*{expr'#1 <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [$val_ref(ref)]) - -- let{z'' : state, `ref'*` : ref*} (z'', ref'#5*{ref'#5 <- `ref'*`}) = $evalexprs(z', expr'#2*{expr'#2 <- `expr'*`}) - -- wf_ref: `%`(ref) + -- let{z'' : state, `ref'*` : ref*} (z'', ref'#7*{ref'#7 <- `ref'*`}) = $evalexprs(z', expr'#2*{expr'#2 <- `expr'*`}) -- wf_state: `%`(z') + -- wf_state: `%`($evalexprs(z', expr'#3*{expr'#3 <- `expr'*`}).0) + -- (wf_ref: `%`(iter#342))*{iter#342 <- $evalexprs(z', expr'#4*{expr'#4 <- `expr'*`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation evalexprs_is_wf: `%%%`(state : state, var_0 : expr*, ret_val : (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule evalexprs_is_wf0{state : state, var_0 : expr*, ret_val : (state, ref*)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprs(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15169,9 +15969,28 @@ def $evalexprss(state : state, expr**) : (state, ref**) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:168.1-168.35 def $evalexprss{z : state}(z, []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.1-172.49 - def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**}(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#3*{expr'#3 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) - -- let{`ref*` : ref*, z' : state} (z', ref#6*{ref#6 <- `ref*`}) = $evalexprs(z, expr#366*{expr#366 <- `expr*`}) - -- let{z'' : state, `ref'**` : ref**} (z'', ref'#6*{ref'#6 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`}) = $evalexprss(z', expr'#4*{expr'#4 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}) + def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**}(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#5*{expr'#5 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- let{`ref*` : ref*, z' : state} (z', ref#7*{ref#7 <- `ref*`}) = $evalexprs(z, expr#366*{expr#366 <- `expr*`}) + -- let{z'' : state, `ref'**` : ref**} (z'', ref'#8*{ref'#8 <- `ref'*#4`}*{`ref'*#4` <- `ref'**`}) = $evalexprss(z', expr'#6*{expr'#6 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}) + -- wf_state: `%`($evalexprs(z, expr#367*{expr#367 <- `expr*`}).0) + -- (wf_ref: `%`(iter#343))*{iter#343 <- $evalexprs(z, expr#368*{expr#368 <- `expr*`}).1} + -- wf_state: `%`($evalexprss(z', expr'#7*{expr'#7 <- `expr'*#3`}*{`expr'*#3` <- `expr'**`}).0) + -- (wf_ref: `%`(iter#345))*{iter#345 <- iter#344}*{iter#344 <- $evalexprss(z', expr'#8*{expr'#8 <- `expr'*#4`}*{`expr'*#4` <- `expr'**`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation evalexprss_is_wf: `%%%`(state : state, var_0 : expr**, ret_val : (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule evalexprss_is_wf0{state : state, var_0 : expr**, ret_val : (state, ref**)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprss(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15182,63 +16001,111 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:175.1-175.41 def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 - def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, val : val, z' : state}(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#5*{expr'#5 <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, val : val, z' : state}(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#9*{expr'#9 <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) -- let{s : store, f : frame} `%;%`_state(s, f) = z' -- let{s' : store, a : addr} (s', a) = $allocglobal(s, gt, val) - -- let{z'' : state, `val'*` : val*} (z'', val'#3*{val'#3 <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#6*{expr'#6 <- `expr'*`}) - -- wf_val: `%`(val) + -- let{z'' : state, `val'*` : val*} (z'', val'#4*{val'#4 <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#10*{expr'#10 <- `expr'*`}) -- wf_state: `%`(z') + -- wf_store: `%`($allocglobal(s, gt, val).0) + -- wf_state: `%`($evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#3*{gt'#3 <- `gt'*`}, expr'#11*{expr'#11 <- `expr'*`}).0) + -- (wf_val: `%`(iter#346))*{iter#346 <- $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#4*{gt'#4 <- `gt'*`}, expr'#12*{expr'#12 <- `expr'*`}).1} -- wf_state: `%`(`%;%`_state(s, f)) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) } +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation evalglobals_is_wf: `%%%%`(state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule evalglobals_is_wf0{state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)}: + `%%%%`(state, var_0, var_1, ret_val) + -- wf_state: `%`(state) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_instr: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $evalglobals(state, var_0, var_1)) + -- wf_state: `%`(ret_val.0) + -- (wf_val: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, `xt_I*` : externtype*, `xt_E*` : externtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, i_D : nat, i_E : nat}(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I#1*{xt_I#1 <- `xt_I*`}, xt_E#1*{xt_E#1 <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr#8, xt_I#2))*{externaddr#8 <- `externaddr*`, xt_I#2 <- `xt_I*`} - -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#5*{type#5 <- `type*`}), `%`_list(import#4*{import#4 <- `import*`}), `%`_list(tag#5*{tag#5 <- `tag*`}), `%`_list(global#7*{global#7 <- `global*`}), `%`_list(mem#7*{mem#7 <- `mem*`}), `%`_list(table#7*{table#7 <- `table*`}), `%`_list(func#8*{func#8 <- `func*`}), `%`_list(data#6*{data#6 <- `data*`}), `%`_list(elem#7*{elem#7 <- `elem*`}), start#6?{start#6 <- `start?`}, `%`_list(export#8*{export#8 <- `export*`})) = module - -- if (global#8*{global#8 <- `global*`} = GLOBAL_global(globaltype#127, expr_G#3)*{expr_G#3 <- `expr_G*`, globaltype#127 <- `globaltype*`}) - -- if (table#8*{table#8 <- `table*`} = TABLE_table(tabletype#161, expr_T#3)*{expr_T#3 <- `expr_T*`, tabletype#161 <- `tabletype*`}) - -- if (data#7*{data#7 <- `data*`} = DATA_data(byte#8*{byte#8 <- `byte*#117`}, datamode#116)*{`byte*#117` <- `byte**`, datamode#116 <- `datamode*`}) - -- if (elem#8*{elem#8 <- `elem*`} = ELEM_elem(reftype#517, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#517 <- `reftype*`}) - -- if (start#7?{start#7 <- `start?`} = START_start(x#6)?{x#6 <- `x?`}) - -- if (moduleinst_0 = {TYPES $alloctypes(type#6*{type#6 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#9*{externaddr#9 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#10*{externaddr#10 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#9*{func#9 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#5*{type#5 <- `type*`}), `%`_list(import#4*{import#4 <- `import*`}), `%`_list(tag#5*{tag#5 <- `tag*`}), `%`_list(global#6*{global#6 <- `global*`}), `%`_list(mem#6*{mem#6 <- `mem*`}), `%`_list(table#6*{table#6 <- `table*`}), `%`_list(func#9*{func#9 <- `func*`}), `%`_list(data#7*{data#7 <- `data*`}), `%`_list(elem#6*{elem#6 <- `elem*`}), start#5?{start#5 <- `start?`}, `%`_list(export#8*{export#8 <- `export*`})) = module + -- if (global#7*{global#7 <- `global*`} = GLOBAL_global(globaltype#129, expr_G#3)*{expr_G#3 <- `expr_G*`, globaltype#129 <- `globaltype*`}) + -- if (table#7*{table#7 <- `table*`} = TABLE_table(tabletype#163, expr_T#3)*{expr_T#3 <- `expr_T*`, tabletype#163 <- `tabletype*`}) + -- if (data#8*{data#8 <- `data*`} = DATA_data(byte#9*{byte#9 <- `byte*#118`}, datamode#116)*{`byte*#118` <- `byte**`, datamode#116 <- `datamode*`}) + -- if (elem#7*{elem#7 <- `elem*`} = ELEM_elem(reftype#516, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#516 <- `reftype*`}) + -- if (start#6?{start#6 <- `start?`} = START_start(x#8)?{x#8 <- `x?`}) + -- if (moduleinst_0 = {TYPES $alloctypes(type#6*{type#6 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#9*{externaddr#9 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#10*{externaddr#10 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#10*{func#10 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- let{z' : state, `val_G*` : val*} (z', val_G#3*{val_G#3 <- `val_G*`}) = $evalglobals(z, globaltype#129*{globaltype#129 <- `globaltype*`}, expr_G#4*{expr_G#4 <- `expr_G*`}) - -- let{z'' : state, `ref_T*` : ref*} (z'', ref_T#3*{ref_T#3 <- `ref_T*`}) = $evalexprs(z', expr_T#4*{expr_T#4 <- `expr_T*`}) - -- let{z''' : state, `ref_E**` : ref**} (z''', ref_E#3*{ref_E#3 <- `ref_E*#3`}*{`ref_E*#3` <- `ref_E**`}) = $evalexprss(z'', expr_E#4*{expr_E#4 <- `expr_E*#4`}*{`expr_E*#4` <- `expr_E**`}) + -- let{z' : state, `val_G*` : val*} (z', val_G#4*{val_G#4 <- `val_G*`}) = $evalglobals(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#4*{expr_G#4 <- `expr_G*`}) + -- let{z'' : state, `ref_T*` : ref*} (z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = $evalexprs(z', expr_T#4*{expr_T#4 <- `expr_T*`}) + -- let{z''' : state, `ref_E**` : ref**} (z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = $evalexprss(z'', expr_E#4*{expr_E#4 <- `expr_E*#4`}*{`expr_E*#4` <- `expr_E**`}) -- let{s''' : store, f : frame} `%;%`_state(s''', f) = z''' - -- let{s'''' : store, moduleinst : moduleinst} (s'''', moduleinst) = $allocmodule(s''', module, externaddr#11*{externaddr#11 <- `externaddr*`}, val_G#4*{val_G#4 <- `val_G*`}, ref_T#4*{ref_T#4 <- `ref_T*`}, ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) - -- let{`instr_D*` : instr*} instr_D#1*{instr_D#1 <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#1), data#9*{data#9 <- `data*`}[i_D#1])^(i_D#1<|data#8*{data#8 <- `data*`}|){}) - -- let{`instr_E*` : instr*} instr_E#1*{instr_E#1 <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#1), elem#10*{elem#10 <- `elem*`}[i_E#1])^(i_E#1<|elem#9*{elem#9 <- `elem*`}|){}) - -- let{`instr_S?` : instr?} instr_S#1?{instr_S#1 <- `instr_S?`} = CALL_instr(x#7)?{x#7 <- `x?`} + -- let{s'''' : store, moduleinst : moduleinst} (s'''', moduleinst) = $allocmodule(s''', module, externaddr#11*{externaddr#11 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}) + -- let{`instr_D*` : instr*} instr_D#1*{instr_D#1 <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#1), data#10*{data#10 <- `data*`}[i_D#1])^(i_D#1<|data#9*{data#9 <- `data*`}|){}) + -- let{`instr_E*` : instr*} instr_E#1*{instr_E#1 <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#1), elem#9*{elem#9 <- `elem*`}[i_E#1])^(i_E#1<|elem#8*{elem#8 <- `elem*`}|){}) + -- let{`instr_S?` : instr?} instr_S#1?{instr_S#1 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`} -- wf_state: `%`(z) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E#2*{instr_E#2 <- `instr_E*`} ++ instr_D#2*{instr_D#2 <- `instr_D*`} ++ lift(instr_S#2?{instr_S#2 <- `instr_S?`}))) + -- wf_state: `%`($evalglobals(z, globaltype#132*{globaltype#132 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}).0) + -- (wf_val: `%`(iter#347))*{iter#347 <- $evalglobals(z, globaltype#133*{globaltype#133 <- `globaltype*`}, expr_G#6*{expr_G#6 <- `expr_G*`}).1} + -- wf_state: `%`($evalexprs(z', expr_T#5*{expr_T#5 <- `expr_T*`}).0) + -- (wf_ref: `%`(iter#348))*{iter#348 <- $evalexprs(z', expr_T#6*{expr_T#6 <- `expr_T*`}).1} + -- wf_state: `%`($evalexprss(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}).0) + -- (wf_ref: `%`(iter#350))*{iter#350 <- iter#349}*{iter#349 <- $evalexprss(z'', expr_E#6*{expr_E#6 <- `expr_E*#6`}*{`expr_E*#6` <- `expr_E**`}).1} + -- wf_store: `%`($allocmodule(s''', module, externaddr#12*{externaddr#12 <- `externaddr*`}, val_G#6*{val_G#6 <- `val_G*`}, ref_T#6*{ref_T#6 <- `ref_T*`}, ref_E#6*{ref_E#6 <- `ref_E*#6`}*{`ref_E*#6` <- `ref_E**`}).0) + -- wf_moduleinst: `%`($allocmodule(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#7*{val_G#7 <- `val_G*`}, ref_T#7*{ref_T#7 <- `ref_T*`}, ref_E#7*{ref_E#7 <- `ref_E*#7`}*{`ref_E*#7` <- `ref_E**`}).1) + -- (wf_instr: `%`(iter#351))*{iter#351 <- $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#2), data#12*{data#12 <- `data*`}[i_D#2])^(i_D#2<|data#11*{data#11 <- `data*`}|){})} + -- (wf_instr: `%`(iter#352))*{iter#352 <- $rundata_(`%`_dataidx(i_D#3), data#14*{data#14 <- `data*`}[i_D#3])}^(i_D#3<|data#13*{data#13 <- `data*`}|){} + -- (wf_instr: `%`(iter#353))*{iter#353 <- $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#2), elem#11*{elem#11 <- `elem*`}[i_E#2])^(i_E#2<|elem#10*{elem#10 <- `elem*`}|){})} + -- (wf_instr: `%`(iter#354))*{iter#354 <- $runelem_(`%`_elemidx(i_E#3), elem#13*{elem#13 <- `elem*`}[i_E#3])}^(i_E#3<|elem#12*{elem#12 <- `elem*`}|){} -- wf_moduletype: `%`(`%->%`_moduletype(xt_I#3*{xt_I#3 <- `xt_I*`}, xt_E#2*{xt_E#2 <- `xt_E*`})) - -- wf_module: `%`(MODULE_module(`%`_list(type#7*{type#7 <- `type*`}), `%`_list(import#5*{import#5 <- `import*`}), `%`_list(tag#6*{tag#6 <- `tag*`}), `%`_list(global#9*{global#9 <- `global*`}), `%`_list(mem#8*{mem#8 <- `mem*`}), `%`_list(table#9*{table#9 <- `table*`}), `%`_list(func#10*{func#10 <- `func*`}), `%`_list(data#10*{data#10 <- `data*`}), `%`_list(elem#11*{elem#11 <- `elem*`}), start#8?{start#8 <- `start?`}, `%`_list(export#9*{export#9 <- `export*`}))) - -- (wf_global: `%`(GLOBAL_global(globaltype#130, expr_G#5)))*{expr_G#5 <- `expr_G*`, globaltype#130 <- `globaltype*`} - -- (wf_table: `%`(TABLE_table(tabletype#163, expr_T#5)))*{expr_T#5 <- `expr_T*`, tabletype#163 <- `tabletype*`} - -- (wf_data: `%`(DATA_data(byte#9*{byte#9 <- `byte*#119`}, datamode#118)))*{`byte*#119` <- `byte**`, datamode#118 <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(reftype#519, expr_E#5*{expr_E#5 <- `expr_E*#5`}, elemmode#239)))*{elemmode#239 <- `elemmode*`, `expr_E*#5` <- `expr_E**`, reftype#519 <- `reftype*`} - -- (wf_start: `%`(START_start(x#8)))?{x#8 <- `x?`} - -- wf_moduleinst: `%`({TYPES $alloctypes(type#8*{type#8 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#12*{externaddr#12 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#13*{externaddr#13 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#11*{func#11 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_module: `%`(MODULE_module(`%`_list(type#7*{type#7 <- `type*`}), `%`_list(import#5*{import#5 <- `import*`}), `%`_list(tag#6*{tag#6 <- `tag*`}), `%`_list(global#8*{global#8 <- `global*`}), `%`_list(mem#7*{mem#7 <- `mem*`}), `%`_list(table#8*{table#8 <- `table*`}), `%`_list(func#11*{func#11 <- `func*`}), `%`_list(data#15*{data#15 <- `data*`}), `%`_list(elem#14*{elem#14 <- `elem*`}), start#7?{start#7 <- `start?`}, `%`_list(export#9*{export#9 <- `export*`}))) + -- (wf_global: `%`(GLOBAL_global(globaltype#134, expr_G#7)))*{expr_G#7 <- `expr_G*`, globaltype#134 <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype#165, expr_T#7)))*{expr_T#7 <- `expr_T*`, tabletype#165 <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte#10*{byte#10 <- `byte*#120`}, datamode#118)))*{`byte*#120` <- `byte**`, datamode#118 <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype#518, expr_E#7*{expr_E#7 <- `expr_E*#7`}, elemmode#239)))*{elemmode#239 <- `elemmode*`, `expr_E*#7` <- `expr_E**`, reftype#518 <- `reftype*`} + -- (wf_start: `%`(START_start(x#10)))?{x#10 <- `x?`} + -- wf_moduleinst: `%`({TYPES $alloctypes(type#8*{type#8 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#14*{externaddr#14 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#15*{externaddr#15 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#12*{func#12 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) -- wf_state: `%`(`%;%`_state(s''', f)) - -- (wf_uN: `%%`(32, `%`_uN(i_D#2)))^(i_D#2<|data#11*{data#11 <- `data*`}|){} - -- (wf_uN: `%%`(32, `%`_uN(i_E#2)))^(i_E#2<|elem#12*{elem#12 <- `elem*`}|){} - -- (wf_instr: `%`(CALL_instr(x#9)))?{x#9 <- `x?`} + -- (wf_uN: `%%`(32, `%`_uN(i_D#4)))^(i_D#4<|data#16*{data#16 <- `data*`}|){} + -- (wf_uN: `%%`(32, `%`_uN(i_E#4)))^(i_E#4<|elem#15*{elem#15 <- `elem*`}|){} + -- (wf_instr: `%`(CALL_instr(x#11)))?{x#11 <- `x?`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation instantiate_is_wf: `%%%%`(store : store, module : module, var_0 : externaddr*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule instantiate_is_wf0{store : store, module : module, var_0 : externaddr*, ret_val : config}: + `%%%%`(store, module, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- if (ret_val = $instantiate(store, module, var_0)) + -- wf_config: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val#1*{val#1 <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))]) - -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1#6*{t_1#6 <- `t_1*`}), `%`_resulttype(t_2#6*{t_2#6 <- `t_2*`}))) - -- (Val_ok: `%|-%:%`(s, val#2, t_1#7))*{t_1#7 <- `t_1*`, val#2 <- `val*`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val#3)*{val#3 <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#8*{t_1#8 <- `t_1*`}), `%`_resulttype(t_2#7*{t_2#7 <- `t_2*`}))) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1#4*{t_1#4 <- `t_1*`}), `%`_resulttype(t_2#4*{t_2#4 <- `t_2*`}))) + -- (Val_ok: `%|-%:%`(s, val#2, t_1#5))*{t_1#5 <- `t_1*`, val#2 <- `val*`} + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#6*{t_1#6 <- `t_1*`}), `%`_resulttype(t_2#5*{t_2#5 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation invoke_is_wf: `%%%%`(store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule invoke_is_wf0{store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config}: + `%%%%`(store, funcaddr, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_val: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $invoke(store, funcaddr, var_0)) + -- wf_config: `%`(ret_val) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec syntax castop = (null?, null?) @@ -15258,6 +16125,14 @@ syntax nopt = u32* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec def $ieee_(N : N, rat : rat) : fNmag +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation ieee__is_wf: `%%%`(N : N, rat : rat, ret_val : fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule ieee__is_wf0{N : N, rat : rat, ret_val : fNmag}: + `%%%`(N, rat, ret_val) + -- if (ret_val = $ieee_(N, rat)) + -- wf_fNmag: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec syntax idctxt = { @@ -15302,11 +16177,23 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 def $concat_idctxt{I : idctxt, `I'*` : I*}([I] ++ I'#1*{I'#1 <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation concat_idctxt_is_wf: `%%`(var_0 : idctxt*, ret_val : idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule concat_idctxt_is_wf0{var_0 : idctxt*, ret_val : idctxt}: + `%%`(var_0, ret_val) + -- (wf_idctxt: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $concat_idctxt(var_0)) + -- wf_idctxt: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -15324,7 +16211,17 @@ relation Idctxt_ok: `|-%:OK`(idctxt) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -- wf_idctxt: `%`(I) + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TYPES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TAGS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.GLOBALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.MEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TABLES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.FUNCS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.DATAS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.ELEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LOCALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LABELS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])}*{`field*` <- `field**`} -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -15472,6 +16369,19 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation importsd_is_wf: `%%`(var_0 : decl*, ret_val : import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule importsd_is_wf0{var_0 : decl*, ret_val : import*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $importsd(var_0)) + -- (wf_import: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 @@ -15485,6 +16395,19 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation tagsd_is_wf: `%%`(var_0 : decl*, ret_val : tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule tagsd_is_wf0{var_0 : decl*, ret_val : tag*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tagsd(var_0)) + -- (wf_tag: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 @@ -15498,6 +16421,19 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation globalsd_is_wf: `%%`(var_0 : decl*, ret_val : global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule globalsd_is_wf0{var_0 : decl*, ret_val : global*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsd(var_0)) + -- (wf_global: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 @@ -15511,6 +16447,19 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation memsd_is_wf: `%%`(var_0 : decl*, ret_val : mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule memsd_is_wf0{var_0 : decl*, ret_val : mem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsd(var_0)) + -- (wf_mem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 @@ -15524,6 +16473,19 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation tablesd_is_wf: `%%`(var_0 : decl*, ret_val : table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule tablesd_is_wf0{var_0 : decl*, ret_val : table*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesd(var_0)) + -- (wf_table: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 @@ -15537,6 +16499,19 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation funcsd_is_wf: `%%`(var_0 : decl*, ret_val : func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule funcsd_is_wf0{var_0 : decl*, ret_val : func*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $funcsd(var_0)) + -- (wf_func: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 @@ -15550,6 +16525,19 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation datasd_is_wf: `%%`(var_0 : decl*, ret_val : data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule datasd_is_wf0{var_0 : decl*, ret_val : data*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $datasd(var_0)) + -- (wf_data: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 @@ -15563,6 +16551,19 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation elemsd_is_wf: `%%`(var_0 : decl*, ret_val : elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule elemsd_is_wf0{var_0 : decl*, ret_val : elem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $elemsd(var_0)) + -- (wf_elem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 @@ -15576,6 +16577,19 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation startsd_is_wf: `%%`(var_0 : decl*, ret_val : start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule startsd_is_wf0{var_0 : decl*, ret_val : start*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $startsd(var_0)) + -- (wf_start: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 def $exportsd(decl*) : export* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 @@ -15586,11 +16600,25 @@ def $exportsd(decl*) : export* def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#33*{decl'#33 <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) } +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation exportsd_is_wf: `%%`(var_0 : decl*, ret_val : export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule exportsd_is_wf0{var_0 : decl*, ret_val : export*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $exportsd(var_0)) + -- (wf_export: `%`(ret_val))*{ret_val <- ret_val} +} + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered(decl*) : bool ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{`decl*` : decl*}(decl#1*{decl#1 <- `decl*`}) = true -- if ($importsd(decl#2*{decl#2 <- `decl*`}) = []) + -- (wf_import: `%`(iter#355))*{iter#355 <- $importsd(decl#3*{decl#3 <- `decl*`})} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*}(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}) = (((((($importsd(decl_1#7*{decl_1#7 <- `decl_1*`}) = []) /\ ($tagsd(decl_1#6*{decl_1#6 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1#5*{decl_1#5 <- `decl_1*`}) = [])) /\ ($memsd(decl_1#4*{decl_1#4 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1#3*{decl_1#3 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1#2*{decl_1#2 <- `decl_1*`}) = [])) @@ -15616,7 +16644,6 @@ relation Context_ok: `|-%:OK`(context) -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt)])))*{rt <- `rt*`} -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt')])))?{rt' <- `rt'?`} -- (if ($proj_uN_0(x).0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} - -- wf_context: `%`(C) -- wf_context: `%`(C_0) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -15632,23 +16659,16 @@ relation Localval_ok: `%|-%:%`(store, val?, localtype) rule set{s : store, val : val, t : valtype}: `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule unset{s : store}: `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, BOT_valtype)) - -- wf_store: `%`(s) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, BOT_valtype)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Datainst_ok: `%|-%:%`(store, datainst, datatype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{s : store, `b*` : byte*}: `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) - -- wf_store: `%`(s) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) @@ -15657,8 +16677,6 @@ relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15667,9 +16685,7 @@ relation Exportinst_ok: `%|-%:OK`(store, exportinst) rule _{s : store, nm : name, xa : externaddr, xt : externtype}: `%|-%:OK`(s, {NAME nm, ADDR xa}) -- Externaddr_ok: `%|-%:%`(s, xa, xt) - -- wf_store: `%`(s) -- wf_externtype: `%`(xt) - -- wf_exportinst: `%`({NAME nm, ADDR xa}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) @@ -15697,9 +16713,6 @@ relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) -- if (|TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}| > 0) -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} - -- wf_store: `%`(s) - -- wf_moduleinst: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}) - -- wf_context: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (wf_externtype: `%`(TAG_externtype(tagtype)))*{tagtype <- `tagtype*`} -- (wf_externtype: `%`(GLOBAL_externtype(globaltype)))*{globaltype <- `globaltype*`} @@ -15715,10 +16728,6 @@ relation Frame_ok: `%|-%:%`(store, frame, context) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- if (|`lct*`| = |`val?*`|) -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) - -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rec { @@ -15729,29 +16738,18 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) rule plain{s : store, C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 rule ref{s : store, C : context, ref : ref, rt : reftype}: `%;%|-%:%`(s, C, $instr_ref(ref), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_ref: `%`(ref) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) @@ -15761,30 +16759,19 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) -- Frame_ok: `%|-%:%`(s, f, C') -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) -- wf_context: `%`(C') - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRAP_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 @@ -15792,9 +16779,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 rule empty{s : store, C : context}: `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -15806,11 +16790,7 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- if ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}) =/= ?()) -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -15822,10 +16802,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 @@ -15833,10 +16809,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 @@ -15845,9 +16817,6 @@ relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) } @@ -15857,8 +16826,6 @@ relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) rule _{s : store, jt : tagtype}: `%|-%:%`(s, {TYPE jt}, jt) -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) - -- wf_store: `%`(s) - -- wf_taginst: `%`({TYPE jt}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15868,10 +16835,8 @@ relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Meminst_ok: `%|-%:%`(store, meminst, memtype) @@ -15880,10 +16845,8 @@ relation Meminst_ok: `%|-%:%`(store, meminst, memtype) `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) - -- wf_store: `%`(s) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) @@ -15893,10 +16856,8 @@ relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- if (|ref*{ref <- `ref*`}| = n) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) @@ -15907,9 +16868,7 @@ relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- Func_ok: `%|-%:%`(C, func, dt') -- Deftype_sub: `%|-%<:%`(C, dt', dt) - -- wf_store: `%`(s) -- wf_context: `%`(C) - -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE $funccode_func(func)}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15920,8 +16879,6 @@ relation Structinst_ok: `%|-%:OK`(store, structinst) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (|`fv*`| = |`zt*`|) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} - -- wf_store: `%`(s) - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15931,8 +16888,6 @@ relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} - -- wf_store: `%`(s) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15945,8 +16900,6 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if (|`t*`| = |`val*`|) -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} - -- wf_store: `%`(s) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15959,9 +16912,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(fv_1, s, fv_2) -- ImmutReachable: `%>>_%%`(fv_1, s, fv') -- ImmutReachable: `%>>_%%`(fv', s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) -- wf_fieldval: `%`(fv') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 @@ -15972,8 +16922,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (i < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) @@ -15983,8 +16931,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) -- if (i < |s.ARRAYS_store[a].FIELDS_arrayinst|) -- if (a < |s.ARRAYS_store|) -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 @@ -15992,14 +16938,10 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, $fieldval_val(s.EXNS_store[a].FIELDS_exninst[i])) -- if (i < |s.EXNS_store[a].FIELDS_exninst|) -- if (a < |s.EXNS_store|) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 rule `ref.extern`{ref : ref, s : store}: `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, $fieldval_ref(ref)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(ref)) } ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16017,9 +16959,6 @@ relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: `~%>>_%%`(fv_1, s, fv_2) -- if $NotImmutReachable(fv_1, s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Store_ok: `|-%:OK`(store) @@ -16047,7 +16986,6 @@ relation Store_ok: `|-%:OK`(store) -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) - -- wf_store: `%`(s) -- (wf_typeuse: `%`(tagtype))*{tagtype <- `tagtype*`} -- (wf_globaltype: `%`(globaltype))*{globaltype <- `globaltype*`} -- (wf_memtype: `%`(memtype))*{memtype <- `memtype*`} @@ -16063,7 +17001,6 @@ relation Extend_taginst: `%<=%`(taginst, taginst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{jt : tagtype}: `%<=%`({TYPE jt}, {TYPE jt}) - -- wf_taginst: `%`({TYPE jt}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_globalinst: `%<=%`(globalinst, globalinst) @@ -16071,8 +17008,6 @@ relation Extend_globalinst: `%<=%`(globalinst, globalinst) rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_meminst: `%<=%`(meminst, meminst) @@ -16081,8 +17016,6 @@ relation Extend_meminst: `%<=%`(meminst, meminst) `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) -- if (n <= n') -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_tableinst: `%<=%`(tableinst, tableinst) @@ -16091,15 +17024,12 @@ relation Extend_tableinst: `%<=%`(tableinst, tableinst) `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) -- if (n <= n') -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_funcinst: `%<=%`(funcinst, funcinst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{dt : deftype, mm : moduleinst, fc : funccode}: `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) - -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_datainst: `%<=%`(datainst, datainst) @@ -16107,8 +17037,6 @@ relation Extend_datainst: `%<=%`(datainst, datainst) rule _{`b*` : byte*, `b'*` : byte*}: `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) - -- wf_datainst: `%`({BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_eleminst: `%<=%`(eleminst, eleminst) @@ -16116,8 +17044,6 @@ relation Extend_eleminst: `%<=%`(eleminst, eleminst) rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) - -- wf_eleminst: `%`({TYPE rt, REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_structinst: `%<=%`(structinst, structinst) @@ -16128,8 +17054,6 @@ relation Extend_structinst: `%<=%`(structinst, structinst) -- if (|`fv*`| = |`fv'*`|) -- if (|`fv*`| = |`mut?*`|) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16140,8 +17064,6 @@ relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (|`fv*`| = |`fv'*`|) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16149,7 +17071,6 @@ relation Extend_exninst: `%<=%`(exninst, exninst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{ta : tagaddr, `val*` : val*}: `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_store: `%<=%`(store, store) @@ -16186,8 +17107,6 @@ relation Extend_store: `%<=%`(store, store) -- (if (a < |s.EXNS_store|))^(a<|s.EXNS_store|){} -- (if (a < |s'.EXNS_store|))^(a<|s.EXNS_store|){} -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} - -- wf_store: `%`(s) - -- wf_store: `%`(s') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation State_ok: `|-%:%`(state, context) @@ -16196,8 +17115,6 @@ relation State_ok: `|-%:%`(state, context) `|-%:%`(`%;%`_state(s, f), C) -- Store_ok: `|-%:OK`(s) -- Frame_ok: `%|-%:%`(s, f, C) - -- wf_context: `%`(C) - -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Config_ok: `|-%:OK`(config) @@ -16208,7 +17125,6 @@ relation Config_ok: `|-%:OK`(config) -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) -- (wf_valtype: `%`(t))*{t <- `t*`} - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat @@ -16269,18 +17185,12 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule `i32.add`{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 @@ -16288,8 +17198,6 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) } @@ -16299,27 +17207,26 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation instrdots_is_wf: `%`(ret_val : instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule instrdots_is_wf0{ret_val : instr*}: + `%`(ret_val) + -- if (ret_val = $instrdots) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec syntax label = | `LABEL_%{%}`(n : n, `instr*` : instr*) @@ -16345,6 +17252,15 @@ relation wf_callframe: `%`(callframe) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation allocX_is_wf(syntax X, syntax Y): `%%%%`(store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule allocX_is_wf0{syntax X, syntax Y, store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)}: + `%%%%`(store, X_0, Y_0, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocX(syntax X, syntax Y, store, X_0, Y_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rec { @@ -16356,6 +17272,21 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*}(syntax X, syntax Y, s, [X] ++ X'#1*{X'#1 <- `X'*`}, [Y] ++ Y'#1*{Y'#1 <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) -- let{s_2 : store, `a'*` : addr*} (s_2, a'#1*{a'#1 <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'#2*{X'#2 <- `X'*`}, Y'#2*{Y'#2 <- `Y'*`}) + -- wf_store: `%`($allocX(syntax X, syntax Y, s, X, Y).0) + -- wf_store: `%`($allocXs(syntax X, syntax Y, s_1, X'#3*{X'#3 <- `X'*`}, Y'#3*{Y'#3 <- `Y'*`}).0) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 +relation allocXs_is_wf(syntax X, syntax Y): `%%%%`(store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 + rule allocXs_is_wf0{syntax X, syntax Y, store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocXs(syntax X, syntax Y, store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec diff --git a/spectec/test-middlend/specification.exp/12-alias-demut.il b/spectec/test-middlend/specification.exp/12-alias-demut.il index 281b75b353..6c9d4305ae 100644 --- a/spectec/test-middlend/specification.exp/12-alias-demut.il +++ b/spectec/test-middlend/specification.exp/12-alias-demut.il @@ -329,19 +329,40 @@ syntax f64 = fN def $fzero(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fzero_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fzero_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fzero(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fnat_is_wf: `%%%`(N : N, nat : nat, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fnat_is_wf0{N : N, nat : nat, ret_val : fN}: + `%%%`(N, nat, ret_val) + -- if (ret_val = $fnat(N, nat)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fone_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fone_is_wf0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fone(N)) + -- wf_fN: `%%`(N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -402,23 +423,27 @@ def $utf8(char*) : byte* def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation utf8_is_wf: `%%`(var_0 : char*, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule utf8_is_wf0{var_0 : char*, ret_val : byte*}: + `%%`(var_0, ret_val) + -- (wf_char: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $utf8(var_0)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -612,10 +637,18 @@ relation wf_free: `%`(free) def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_opt_is_wf: `%%`(var_0 : free?, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_opt_is_wf0{var_0 : free?, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))?{var_0 <- var_0} + -- if (ret_val = $free_opt(var_0)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -623,70 +656,162 @@ rec { def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'#1*{free'#1 <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation free_list_is_wf: `%%`(var_0 : free*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule free_list_is_wf0{var_0 : free*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_list(var_0)) + -- wf_free: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_typeidx_is_wf: `%%`(typeidx : typeidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_typeidx_is_wf0{typeidx : typeidx, ret_val : free}: + `%%`(typeidx, ret_val) + -- wf_uN: `%%`(32, typeidx) + -- if (ret_val = $free_typeidx(typeidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_funcidx_is_wf: `%%`(funcidx : funcidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_funcidx_is_wf0{funcidx : funcidx, ret_val : free}: + `%%`(funcidx, ret_val) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $free_funcidx(funcidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_globalidx_is_wf: `%%`(globalidx : globalidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_globalidx_is_wf0{globalidx : globalidx, ret_val : free}: + `%%`(globalidx, ret_val) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $free_globalidx(globalidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tableidx_is_wf: `%%`(tableidx : tableidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tableidx_is_wf0{tableidx : tableidx, ret_val : free}: + `%%`(tableidx, ret_val) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $free_tableidx(tableidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_memidx_is_wf: `%%`(memidx : memidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_memidx_is_wf0{memidx : memidx, ret_val : free}: + `%%`(memidx, ret_val) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $free_memidx(memidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_elemidx_is_wf: `%%`(elemidx : elemidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_elemidx_is_wf0{elemidx : elemidx, ret_val : free}: + `%%`(elemidx, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- if (ret_val = $free_elemidx(elemidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_dataidx_is_wf: `%%`(dataidx : dataidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_dataidx_is_wf0{dataidx : dataidx, ret_val : free}: + `%%`(dataidx, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $free_dataidx(dataidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_localidx_is_wf: `%%`(localidx : localidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_localidx_is_wf0{localidx : localidx, ret_val : free}: + `%%`(localidx, ret_val) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $free_localidx(localidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_labelidx_is_wf: `%%`(labelidx : labelidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_labelidx_is_wf0{labelidx : labelidx, ret_val : free}: + `%%`(labelidx, ret_val) + -- wf_uN: `%%`(32, labelidx) + -- if (ret_val = $free_labelidx(labelidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx(tagidx : tagidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx{tagidx : uN}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tagidx_is_wf: `%%`(tagidx : tagidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tagidx_is_wf0{tagidx : tagidx, ret_val : free}: + `%%`(tagidx, ret_val) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $free_tagidx(tagidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -701,6 +826,15 @@ def $free_externidx(externidx : externidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_externidx_is_wf: `%%`(externidx : externidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_externidx_is_wf0{externidx : externidx, ret_val : free}: + `%%`(externidx, ret_val) + -- wf_externidx: `%`(externidx) + -- if (ret_val = $free_externidx(externidx)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = | NULL @@ -1149,77 +1283,168 @@ syntax Cnn = | F64 | V128 +def $storagetype_Cnn(Cnn) : storagetype + def $storagetype_Cnn(I32_Cnn) = I32_storagetype + def $storagetype_Cnn(I64_Cnn) = I64_storagetype + def $storagetype_Cnn(F32_Cnn) = F32_storagetype + def $storagetype_Cnn(F64_Cnn) = F64_storagetype + def $storagetype_Cnn(V128_Cnn) = V128_storagetype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ANYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ANYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ANYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EQREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EQREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EQREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation I31REF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule I31REF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $I31REF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation STRUCTREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule STRUCTREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $STRUCTREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ARRAYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ARRAYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ARRAYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation FUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule FUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $FUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLFUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLFUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLFUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1595,10 +1820,17 @@ def $unpack(storagetype : storagetype) : valtype def $unpack(I32_storagetype) = I32_valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I8_storagetype) = I32_valtype - -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I16_storagetype) = I32_valtype - -- wf_valtype: `%`(I32_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation unpack_is_wf: `%%`(storagetype : storagetype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule unpack_is_wf0{storagetype : storagetype, ret_val : valtype}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $unpack(storagetype)) + -- wf_valtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? @@ -1664,10 +1896,18 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $diffrt(reftype : reftype, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#1?{null_1#1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#2?{null_1#2 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1#3?{null_1#3 <- `null_1?`}, ht_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation diffrt_is_wf: `%%%`(reftype : reftype, reftype_0 : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule diffrt_is_wf0{reftype : reftype, reftype_0 : reftype, ret_val : reftype}: + `%%%`(reftype, reftype_0, ret_val) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + -- if (ret_val = $diffrt(reftype, reftype_0)) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype? @@ -1705,6 +1945,19 @@ def $globalsxt(externtype*) : globaltype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation globalsxt_is_wf: `%%`(var_0 : externtype*, ret_val : globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule globalsxt_is_wf0{var_0 : externtype*, ret_val : globaltype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsxt(var_0)) + -- (wf_globaltype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 @@ -1718,6 +1971,19 @@ def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation memsxt_is_wf: `%%`(var_0 : externtype*, ret_val : memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule memsxt_is_wf0{var_0 : externtype*, ret_val : memtype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsxt(var_0)) + -- (wf_memtype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 @@ -1731,6 +1997,19 @@ def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation tablesxt_is_wf: `%%`(var_0 : externtype*, ret_val : tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule tablesxt_is_wf0{var_0 : externtype*, ret_val : tabletype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesxt(var_0)) + -- (wf_tabletype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 @@ -1757,6 +2036,22 @@ def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation subst_typevar_is_wf: `%%%%`(typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule subst_typevar_is_wf0{typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typevar, var_0, var_1, ret_val) + -- wf_typevar: `%`(typevar) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if ($subst_typevar(typevar, var_0, var_1) =/= ?()) + -- if (ret_val = !($subst_typevar(typevar, var_0, var_1))) + -- wf_typeuse: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.73 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 @@ -1766,25 +2061,42 @@ def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}) = ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})) -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#2*{tv'#2 <- `tv'*`}, tu'#2*{tu'#2 <- `tu'*`}) = !($minus_recs(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`})) - -- wf_typevar: `%`(_IDX_typevar(x)) + -- (wf_typevar: `%`(iter#1))*{iter#1 <- !($minus_recs(tv#4*{tv#4 <- `tv*`}, tu#4*{tu#4 <- `tu*`})).0} + -- (wf_typeuse: `%`(iter#2))*{iter#2 <- !($minus_recs(tv#5*{tv#5 <- `tv*`}, tu#5*{tu#5 <- `tu*`})).1} def $minus_recs{x0 : typevar*, x1 : typeuse*}(x0, x1) = ?() -- otherwise } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation minus_recs_is_wf: `%%%`(var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule minus_recs_is_wf0{var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)}: + `%%%`(var_0, var_1, ret_val) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if ($minus_recs(var_0, var_1) =/= ?()) + -- if (ret_val = !($minus_recs(var_0, var_1))) + -- (wf_typevar: `%`(iter))*{iter <- ret_val.0} + -- (wf_typeuse: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv#4*{tv#4 <- `tv*`}, tu#4*{tu#4 <- `tu*`}) = pt + def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv#6*{tv#6 <- `tv*`}, tu#6*{tu#6 <- `tu*`}) = pt ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv#5*{tv#5 <- `tv*`}, tu#5*{tu#5 <- `tu*`}) = nt + def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv#7*{tv#7 <- `tv*`}, tu#7*{tu#7 <- `tu*`}) = nt ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv#6*{tv#6 <- `tv*`}, tu#6*{tu#6 <- `tu*`}) = vt + def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv#8*{tv#8 <- `tv*`}, tu#8*{tu#8 <- `tu*`}) = vt ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { @@ -1792,209 +2104,403 @@ rec { ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 - def $subst_typeuse{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_typeuse(n), tv#7*{tv#7 <- `tv*`}, tu#7*{tu#7 <- `tu*`}) = !($subst_typevar(REC_typevar(n), tv#8*{tv#8 <- `tv*`}, tu#8*{tu#8 <- `tu*`})) + def $subst_typeuse{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_typeuse(n), tv#9*{tv#9 <- `tv*`}, tu#9*{tu#9 <- `tu*`}) = !($subst_typevar(REC_typevar(n), tv#10*{tv#10 <- `tv*`}, tu#10*{tu#10 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 - def $subst_typeuse{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_typeuse(typeidx), tv#9*{tv#9 <- `tv*`}, tu#9*{tu#9 <- `tu*`}) = !($subst_typevar(_IDX_typevar(typeidx), tv#10*{tv#10 <- `tv*`}, tu#10*{tu#10 <- `tu*`})) + def $subst_typeuse{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_typeuse(typeidx), tv#11*{tv#11 <- `tv*`}, tu#11*{tu#11 <- `tu*`}) = !($subst_typevar(_IDX_typevar(typeidx), tv#12*{tv#12 <- `tv*`}, tu#12*{tu#12 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 - def $subst_typeuse{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_typeuse(rectype, n), tv#11*{tv#11 <- `tv*`}, tu#11*{tu#11 <- `tu*`}) = $typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv#12*{tv#12 <- `tv*`}, tu#12*{tu#12 <- `tu*`})) + def $subst_typeuse{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_typeuse(rectype, n), tv#13*{tv#13 <- `tv*`}, tu#13*{tu#13 <- `tu*`}) = $typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv#14*{tv#14 <- `tv*`}, tu#14*{tu#14 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_heaptype(n), tv#13*{tv#13 <- `tv*`}, tu#13*{tu#13 <- `tu*`}) = $heaptype_typeuse(!($subst_typevar(REC_typevar(n), tv#14*{tv#14 <- `tv*`}, tu#14*{tu#14 <- `tu*`}))) + def $subst_heaptype{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_heaptype(n), tv#15*{tv#15 <- `tv*`}, tu#15*{tu#15 <- `tu*`}) = $heaptype_typeuse(!($subst_typevar(REC_typevar(n), tv#16*{tv#16 <- `tv*`}, tu#16*{tu#16 <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_heaptype(typeidx), tv#15*{tv#15 <- `tv*`}, tu#15*{tu#15 <- `tu*`}) = $heaptype_typeuse(!($subst_typevar(_IDX_typevar(typeidx), tv#16*{tv#16 <- `tv*`}, tu#16*{tu#16 <- `tu*`}))) + def $subst_heaptype{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_heaptype(typeidx), tv#17*{tv#17 <- `tv*`}, tu#17*{tu#17 <- `tu*`}) = $heaptype_typeuse(!($subst_typevar(_IDX_typevar(typeidx), tv#18*{tv#18 <- `tv*`}, tu#18*{tu#18 <- `tu*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 - def $subst_heaptype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_heaptype(rectype, n), tv#17*{tv#17 <- `tv*`}, tu#17*{tu#17 <- `tu*`}) = $heaptype_deftype($subst_deftype(_DEF_deftype(rectype, n), tv#18*{tv#18 <- `tv*`}, tu#18*{tu#18 <- `tu*`})) + def $subst_heaptype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_heaptype(rectype, n), tv#19*{tv#19 <- `tv*`}, tu#19*{tu#19 <- `tu*`}) = $heaptype_deftype($subst_deftype(_DEF_deftype(rectype, n), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 - def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv#19*{tv#19 <- `tv*`}, tu#19*{tu#19 <- `tu*`}) = ht + def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}) = ht ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 - def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null#2?{null#2 <- `null?`}, $subst_heaptype(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}))) + def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#22*{tv#22 <- `tv*`}, tu#22*{tu#22 <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I32_valtype, tv#22*{tv#22 <- `tv*`}, tu#22*{tu#22 <- `tu*`}) = $valtype_numtype($subst_numtype(I32_numtype, tv#23*{tv#23 <- `tv*`}, tu#23*{tu#23 <- `tu*`})) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I32_valtype, tv#23*{tv#23 <- `tv*`}, tu#23*{tu#23 <- `tu*`}) = $valtype_numtype($subst_numtype(I32_numtype, tv#24*{tv#24 <- `tv*`}, tu#24*{tu#24 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I64_valtype, tv#24*{tv#24 <- `tv*`}, tu#24*{tu#24 <- `tu*`}) = $valtype_numtype($subst_numtype(I64_numtype, tv#25*{tv#25 <- `tv*`}, tu#25*{tu#25 <- `tu*`})) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I64_valtype, tv#25*{tv#25 <- `tv*`}, tu#25*{tu#25 <- `tu*`}) = $valtype_numtype($subst_numtype(I64_numtype, tv#26*{tv#26 <- `tv*`}, tu#26*{tu#26 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F32_valtype, tv#26*{tv#26 <- `tv*`}, tu#26*{tu#26 <- `tu*`}) = $valtype_numtype($subst_numtype(F32_numtype, tv#27*{tv#27 <- `tv*`}, tu#27*{tu#27 <- `tu*`})) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F32_valtype, tv#27*{tv#27 <- `tv*`}, tu#27*{tu#27 <- `tu*`}) = $valtype_numtype($subst_numtype(F32_numtype, tv#28*{tv#28 <- `tv*`}, tu#28*{tu#28 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F64_valtype, tv#28*{tv#28 <- `tv*`}, tu#28*{tu#28 <- `tu*`}) = $valtype_numtype($subst_numtype(F64_numtype, tv#29*{tv#29 <- `tv*`}, tu#29*{tu#29 <- `tu*`})) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F64_valtype, tv#29*{tv#29 <- `tv*`}, tu#29*{tu#29 <- `tu*`}) = $valtype_numtype($subst_numtype(F64_numtype, tv#30*{tv#30 <- `tv*`}, tu#30*{tu#30 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(V128_valtype, tv#30*{tv#30 <- `tv*`}, tu#30*{tu#30 <- `tu*`}) = $valtype_vectype($subst_vectype(V128_vectype, tv#31*{tv#31 <- `tv*`}, tu#31*{tu#31 <- `tu*`})) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(V128_valtype, tv#31*{tv#31 <- `tv*`}, tu#31*{tu#31 <- `tu*`}) = $valtype_vectype($subst_vectype(V128_vectype, tv#32*{tv#32 <- `tv*`}, tu#32*{tu#32 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 - def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(`null?`, heaptype), tv#32*{tv#32 <- `tv*`}, tu#32*{tu#32 <- `tu*`}) = $valtype_reftype($subst_reftype(REF_reftype(`null?`, heaptype), tv#33*{tv#33 <- `tv*`}, tu#33*{tu#33 <- `tu*`})) + def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(`null?`, heaptype), tv#33*{tv#33 <- `tv*`}, tu#33*{tu#33 <- `tu*`}) = $valtype_reftype($subst_reftype(REF_reftype(`null?`, heaptype), tv#34*{tv#34 <- `tv*`}, tu#34*{tu#34 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv#34*{tv#34 <- `tv*`}, tu#34*{tu#34 <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv#35*{tv#35 <- `tv*`}, tu#35*{tu#35 <- `tu*`}) = BOT_valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_storagetype, tv#35*{tv#35 <- `tv*`}, tu#35*{tu#35 <- `tu*`}) = $storagetype_valtype($subst_valtype(BOT_valtype, tv#36*{tv#36 <- `tv*`}, tu#36*{tu#36 <- `tu*`})) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_storagetype, tv#36*{tv#36 <- `tv*`}, tu#36*{tu#36 <- `tu*`}) = $storagetype_valtype($subst_valtype(BOT_valtype, tv#37*{tv#37 <- `tv*`}, tu#37*{tu#37 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_storagetype(`null?`, heaptype), tv#37*{tv#37 <- `tv*`}, tu#37*{tu#37 <- `tu*`}) = $storagetype_valtype($subst_valtype(REF_valtype(`null?`, heaptype), tv#38*{tv#38 <- `tv*`}, tu#38*{tu#38 <- `tu*`})) + def $subst_storagetype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_storagetype(`null?`, heaptype), tv#38*{tv#38 <- `tv*`}, tu#38*{tu#38 <- `tu*`}) = $storagetype_valtype($subst_valtype(REF_valtype(`null?`, heaptype), tv#39*{tv#39 <- `tv*`}, tu#39*{tu#39 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(V128_storagetype, tv#39*{tv#39 <- `tv*`}, tu#39*{tu#39 <- `tu*`}) = $storagetype_valtype($subst_valtype(V128_valtype, tv#40*{tv#40 <- `tv*`}, tu#40*{tu#40 <- `tu*`})) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(V128_storagetype, tv#40*{tv#40 <- `tv*`}, tu#40*{tu#40 <- `tu*`}) = $storagetype_valtype($subst_valtype(V128_valtype, tv#41*{tv#41 <- `tv*`}, tu#41*{tu#41 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F64_storagetype, tv#41*{tv#41 <- `tv*`}, tu#41*{tu#41 <- `tu*`}) = $storagetype_valtype($subst_valtype(F64_valtype, tv#42*{tv#42 <- `tv*`}, tu#42*{tu#42 <- `tu*`})) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F64_storagetype, tv#42*{tv#42 <- `tv*`}, tu#42*{tu#42 <- `tu*`}) = $storagetype_valtype($subst_valtype(F64_valtype, tv#43*{tv#43 <- `tv*`}, tu#43*{tu#43 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F32_storagetype, tv#43*{tv#43 <- `tv*`}, tu#43*{tu#43 <- `tu*`}) = $storagetype_valtype($subst_valtype(F32_valtype, tv#44*{tv#44 <- `tv*`}, tu#44*{tu#44 <- `tu*`})) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F32_storagetype, tv#44*{tv#44 <- `tv*`}, tu#44*{tu#44 <- `tu*`}) = $storagetype_valtype($subst_valtype(F32_valtype, tv#45*{tv#45 <- `tv*`}, tu#45*{tu#45 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I64_storagetype, tv#45*{tv#45 <- `tv*`}, tu#45*{tu#45 <- `tu*`}) = $storagetype_valtype($subst_valtype(I64_valtype, tv#46*{tv#46 <- `tv*`}, tu#46*{tu#46 <- `tu*`})) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I64_storagetype, tv#46*{tv#46 <- `tv*`}, tu#46*{tu#46 <- `tu*`}) = $storagetype_valtype($subst_valtype(I64_valtype, tv#47*{tv#47 <- `tv*`}, tu#47*{tu#47 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I32_storagetype, tv#47*{tv#47 <- `tv*`}, tu#47*{tu#47 <- `tu*`}) = $storagetype_valtype($subst_valtype(I32_valtype, tv#48*{tv#48 <- `tv*`}, tu#48*{tu#48 <- `tu*`})) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I32_storagetype, tv#48*{tv#48 <- `tv*`}, tu#48*{tu#48 <- `tu*`}) = $storagetype_valtype($subst_valtype(I32_valtype, tv#49*{tv#49 <- `tv*`}, tu#49*{tu#49 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I8_storagetype, tv#49*{tv#49 <- `tv*`}, tu#49*{tu#49 <- `tu*`}) = $storagetype_packtype($subst_packtype(I8_packtype, tv#50*{tv#50 <- `tv*`}, tu#50*{tu#50 <- `tu*`})) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I8_storagetype, tv#50*{tv#50 <- `tv*`}, tu#50*{tu#50 <- `tu*`}) = $storagetype_packtype($subst_packtype(I8_packtype, tv#51*{tv#51 <- `tv*`}, tu#51*{tu#51 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I16_storagetype, tv#51*{tv#51 <- `tv*`}, tu#51*{tu#51 <- `tu*`}) = $storagetype_packtype($subst_packtype(I16_packtype, tv#52*{tv#52 <- `tv*`}, tu#52*{tu#52 <- `tu*`})) + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I16_storagetype, tv#52*{tv#52 <- `tv*`}, tu#52*{tu#52 <- `tu*`}) = $storagetype_packtype($subst_packtype(I16_packtype, tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 - def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut#2?{mut#2 <- `mut?`}, $subst_storagetype(zt, tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}))) + def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft#1*{ft#1 <- `ft*`})), tv#55*{tv#55 <- `tv*`}, tu#55*{tu#55 <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft#2, tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`})*{ft#2 <- `ft*`}))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 - def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}))) + def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 - def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1#2, tv#60*{tv#60 <- `tv*`}, tu#60*{tu#60 <- `tu*`})*{t_1#2 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2#2, tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`})*{t_2#2 <- `t_2*`}))) + def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 - def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#3*{tu'#3 <- `tu'*`}, ct), tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final#2?{final#2 <- `final?`}, $subst_typeuse(tu'#4, tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`})*{tu'#4 <- `tu'*`}, $subst_comptype(ct, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}))) + def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#3*{tu'#3 <- `tu'*`}, ct), tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 - def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*}(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) - -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#3*{tv'#3 <- `tv'*`}, tu'#5*{tu'#5 <- `tu'*`}) = !($minus_recs(tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`})) + def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*}(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#3*{tv'#3 <- `tv'*`}, tu'#4*{tu'#4 <- `tu'*`}) = !($minus_recs(tv#60*{tv#60 <- `tv*`}, tu#60*{tu#60 <- `tu*`})) + -- (wf_typevar: `%`(iter#3))*{iter#3 <- !($minus_recs(tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`})).0} + -- (wf_typeuse: `%`(iter#4))*{iter#4 <- !($minus_recs(tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`})).1} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 - def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv#67*{tv#67 <- `tv*`}, tu#67*{tu#67 <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) + def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation subst_typeuse_is_wf: `%%%%`(typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule subst_typeuse_is_wf0{typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typeuse, var_0, var_1, ret_val) + -- wf_typeuse: `%`(typeuse) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_typeuse(typeuse, var_0, var_1)) + -- wf_typeuse: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation subst_heaptype_is_wf: `%%%%`(heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule subst_heaptype_is_wf0{heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype}: + `%%%%`(heaptype, var_0, var_1, ret_val) + -- wf_heaptype: `%`(heaptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_heaptype(heaptype, var_0, var_1)) + -- wf_heaptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation subst_reftype_is_wf: `%%%%`(reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule subst_reftype_is_wf0{reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype}: + `%%%%`(reftype, var_0, var_1, ret_val) + -- wf_reftype: `%`(reftype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_reftype(reftype, var_0, var_1)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation subst_valtype_is_wf: `%%%%`(valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule subst_valtype_is_wf0{valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype}: + `%%%%`(valtype, var_0, var_1, ret_val) + -- wf_valtype: `%`(valtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_valtype(valtype, var_0, var_1)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation subst_storagetype_is_wf: `%%%%`(storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule subst_storagetype_is_wf0{storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype}: + `%%%%`(storagetype, var_0, var_1, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_storagetype(storagetype, var_0, var_1)) + -- wf_storagetype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation subst_fieldtype_is_wf: `%%%%`(fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule subst_fieldtype_is_wf0{fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype}: + `%%%%`(fieldtype, var_0, var_1, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_fieldtype(fieldtype, var_0, var_1)) + -- wf_fieldtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation subst_comptype_is_wf: `%%%%`(comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule subst_comptype_is_wf0{comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype}: + `%%%%`(comptype, var_0, var_1, ret_val) + -- wf_comptype: `%`(comptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_comptype(comptype, var_0, var_1)) + -- wf_comptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation subst_subtype_is_wf: `%%%%`(subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule subst_subtype_is_wf0{subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype}: + `%%%%`(subtype, var_0, var_1, ret_val) + -- wf_subtype: `%`(subtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_subtype(subtype, var_0, var_1)) + -- wf_subtype: `%`(ret_val) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv#68*{tv#68 <- `tv*`}, tu#68*{tu#68 <- `tu*`}) = at + def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}) = at ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv#69*{tv#69 <- `tv*`}, tu#69*{tu#69 <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut#3?{mut#3 <- `mut?`}, t), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, $subst_valtype(t, tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}))) + def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut#2?{mut#2 <- `mut?`}, t), tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_globaltype_is_wf: `%%%%`(globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_globaltype_is_wf0{globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype}: + `%%%%`(globaltype, var_0, var_1, ret_val) + -- wf_globaltype: `%`(globaltype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_globaltype(globaltype, var_0, var_1)) + -- wf_globaltype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv#72*{tv#72 <- `tv*`}, tu#72*{tu#72 <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv#67*{tv#67 <- `tv*`}, tu#67*{tu#67 <- `tu*`}) = `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_memtype_is_wf: `%%%%`(memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_memtype_is_wf0{memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype}: + `%%%%`(memtype, var_0, var_1, ret_val) + -- wf_memtype: `%`(memtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_memtype(memtype, var_0, var_1)) + -- wf_memtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}))) + def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv#68*{tv#68 <- `tv*`}, tu#68*{tu#68 <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_tabletype_is_wf: `%%%%`(tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_tabletype_is_wf0{tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype}: + `%%%%`(tabletype, var_0, var_1, ret_val) + -- wf_tabletype: `%`(tabletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_tabletype(tabletype, var_0, var_1)) + -- wf_tabletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv#75*{tv#75 <- `tv*`}, tu#75*{tu#75 <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv#76*{tv#76 <- `tv*`}, tu#76*{tu#76 <- `tu*`}))) + def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv#69*{tv#69 <- `tv*`}, tu#69*{tu#69 <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv#77*{tv#77 <- `tv*`}, tu#77*{tu#77 <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv#78*{tv#78 <- `tv*`}, tu#78*{tu#78 <- `tu*`}))) + def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv#79*{tv#79 <- `tv*`}, tu#79*{tu#79 <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv#80*{tv#80 <- `tv*`}, tu#80*{tu#80 <- `tu*`}))) + def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv#81*{tv#81 <- `tv*`}, tu#81*{tu#81 <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv#82*{tv#82 <- `tv*`}, tu#82*{tu#82 <- `tu*`}))) + def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv#72*{tv#72 <- `tv*`}, tu#72*{tu#72 <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv#83*{tv#83 <- `tv*`}, tu#83*{tu#83 <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(FUNC_externtype($subst_typeuse(tu', tv#84*{tv#84 <- `tv*`}, tu#84*{tu#84 <- `tu*`}))) + def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_externtype_is_wf: `%%%%`(externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_externtype_is_wf0{externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype}: + `%%%%`(externtype, var_0, var_1, ret_val) + -- wf_externtype: `%`(externtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_externtype(externtype, var_0, var_1)) + -- wf_externtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#85*{tv#85 <- `tv*`}, tu#85*{tu#85 <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1#2, tv#86*{tv#86 <- `tv*`}, tu#86*{tu#86 <- `tu*`})*{xt_1#2 <- `xt_1*`}, $subst_externtype(xt_2#2, tv#87*{tv#87 <- `tv*`}, tu#87*{tu#87 <- `tu*`})*{xt_2#2 <- `xt_2*`})) + def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_moduletype_is_wf: `%%%%`(moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_moduletype_is_wf0{moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype}: + `%%%%`(moduletype, var_0, var_1, ret_val) + -- wf_moduletype: `%`(moduletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_moduletype(moduletype, var_0, var_1)) + -- wf_moduletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_valtype{t : valtype, n : nat, `tu*` : typeuse*, i : nat}(t, tu#88^n{tu#88 <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_moduletype(externtype_1#1*{externtype_1#1 <- `externtype_1*`}, externtype_2#1*{externtype_2#1 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_moduletype_is_wf: `%%`(moduletype : moduletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_moduletype_is_wf0{moduletype : moduletype, ret_val : free}: + `%%`(moduletype, ret_val) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $free_moduletype(moduletype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax num_ = | mk_num__0(Inn : Inn, var_x : iN) @@ -2791,7 +3530,15 @@ relation wf_shape: `%`(shape) def $dim(shape : shape) : dim ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) - -- wf_dim: `%`(`%`_dim(N)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation dim_is_wf: `%%`(shape : shape, ret_val : dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_is_wf0{shape : shape, ret_val : dim}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $dim(shape)) + -- wf_dim: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $lanetype(shape : shape) : lanetype @@ -4578,38 +5325,67 @@ syntax expr = instr* def $memarg0 : memarg ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} - -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation memarg0_is_wf: `%`(ret_val : memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg0_is_wf0{ret_val : memarg}: + `%`(ret_val) + -- if (ret_val = $memarg0) + -- wf_memarg: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const(consttype : consttype, lit_ : lit_) : instr ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : num_}(I32_consttype, mk_lit__0_lit_(I32_numtype, c)) = CONST_instr(I32_numtype, c) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : num_}(I64_consttype, mk_lit__0_lit_(I64_numtype, c)) = CONST_instr(I64_numtype, c) - -- wf_instr: `%`(CONST_instr(I64_numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : num_}(F32_consttype, mk_lit__0_lit_(F32_numtype, c)) = CONST_instr(F32_numtype, c) - -- wf_instr: `%`(CONST_instr(F32_numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : num_}(F64_consttype, mk_lit__0_lit_(F64_numtype, c)) = CONST_instr(F64_numtype, c) - -- wf_instr: `%`(CONST_instr(F64_numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : uN}(V128_consttype, mk_lit__1_lit_(V128_vectype, c)) = VCONST_instr(V128_vectype, c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation const_is_wf: `%%%`(consttype : consttype, lit_ : lit_, ret_val : instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule const_is_wf0{consttype : consttype, lit_ : lit_, ret_val : instr}: + `%%%`(consttype, lit_, ret_val) + -- wf_lit_: `%%`($storagetype_consttype(consttype), lit_) + -- if (ret_val = $const(consttype, lit_)) + -- wf_instr: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_shape_is_wf: `%%`(shape : shape, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_shape_is_wf0{shape : shape, ret_val : free}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $free_shape(shape)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype#505?{valtype#505 <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) + def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype#504?{valtype#504 <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype{typeidx : uN}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_blocktype_is_wf: `%%`(blocktype : blocktype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_blocktype_is_wf0{blocktype : blocktype, ret_val : free}: + `%%`(blocktype, ret_val) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $free_blocktype(blocktype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4621,6 +5397,15 @@ def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch{labelidx : uN}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_catch_is_wf: `%%`(catch : catch, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_catch_is_wf0{catch : catch, ret_val : free}: + `%%`(catch, ret_val) + -- wf_catch: `%`(catch) + -- if (ret_val = $free_catch(catch)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { @@ -4632,7 +5417,6 @@ def $shift_labelidxs(labelidx*) : labelidx* def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'#1*{labelidx'#1 <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.91 def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'#2*{labelidx'#2 <- `labelidx'*`}) = [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4642,15 +5426,12 @@ rec { def $free_instr(instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-435.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.86 - def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype#506*{valtype#506 <- `valtype*#1`}?{`valtype*#1` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) + def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype#505*{valtype#505 <- `valtype*#1`}?{`valtype*#1` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr#1*{instr#1 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.91 @@ -4679,7 +5460,6 @@ def $free_instr(instr : instr) : free def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.66 @@ -4690,7 +5470,6 @@ def $free_instr(instr : instr) : free def $free_instr{tagidx : uN}(THROW_instr(tagidx)) = $free_tagidx(tagidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.32 def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-469.99 def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch#1*{catch#1 <- `catch*`}), instr#3*{instr#3 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.63 @@ -4753,13 +5532,10 @@ def $free_instr(instr : instr) : free def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.34 def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.38 def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.29 def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 @@ -4768,10 +5544,8 @@ def $free_instr(instr : instr) : free def $free_instr{funcidx : uN}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.30 def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.61 def $free_instr{typeidx : uN}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.69 @@ -4796,7 +5570,6 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.32 def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.61 def $free_instr{typeidx : uN}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.55 @@ -4807,10 +5580,8 @@ def $free_instr(instr : instr) : free def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.41 def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 def $free_instr{localidx : uN}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 @@ -4867,12 +5638,45 @@ def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:589.1-590.47 def $free_block{`instr*` : instr*}(instr#4*{instr#4 <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] -- let{free : free} free = $free_list($free_instr(instr#5)*{instr#5 <- `instr*`}) + -- wf_free: `%`($free_list($free_instr(instr#6)*{instr#6 <- `instr*`})) + -- (wf_free: `%`($free_instr(instr#7)))*{instr#7 <- `instr*`} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation free_instr_is_wf: `%%`(instr : instr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule free_instr_is_wf0{instr : instr, ret_val : free}: + `%%`(instr, ret_val) + -- wf_instr: `%`(instr) + -- if (ret_val = $free_instr(instr)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation free_block_is_wf: `%%`(var_0 : instr*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule free_block_is_wf0{var_0 : instr*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_block(var_0)) + -- wf_free: `%`(ret_val) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_expr{`instr*` : instr*}(instr#6*{instr#6 <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) + def $free_expr{`instr*` : instr*}(instr#8*{instr#8 <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_expr_is_wf: `%%`(expr : expr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_expr_is_wf0{expr : expr, ret_val : free}: + `%%`(expr, ret_val) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- if (ret_val = $free_expr(expr)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = @@ -5064,85 +5868,216 @@ def $free_type(type : type) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_type_is_wf: `%%`(type : type, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_type_is_wf0{type : type, ret_val : free}: + `%%`(type, ret_val) + -- if (ret_val = $free_type(type)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag(tag : tag) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_tag_is_wf: `%%`(tag : tag, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_tag_is_wf0{tag : tag, ret_val : free}: + `%%`(tag, ret_val) + -- wf_tag: `%`(tag) + -- if (ret_val = $free_tag(tag)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global(global : global) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_global_is_wf: `%%`(global : global, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_global_is_wf0{global : global, ret_val : free}: + `%%`(global, ret_val) + -- wf_global: `%`(global) + -- if (ret_val = $free_global(global)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem(mem : mem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_mem_is_wf: `%%`(mem : mem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_mem_is_wf0{mem : mem, ret_val : free}: + `%%`(mem, ret_val) + -- wf_mem: `%`(mem) + -- if (ret_val = $free_mem(mem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table(table : table) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_table_is_wf: `%%`(table : table, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_table_is_wf0{table : table, ret_val : free}: + `%%`(table, ret_val) + -- wf_table: `%`(table) + -- if (ret_val = $free_table(table)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local(local : local) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_local_is_wf: `%%`(local : local, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_local_is_wf0{local : local, ret_val : free}: + `%%`(local, ret_val) + -- wf_local: `%`(local) + -- if (ret_val = $free_local(local)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func(func : func) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local#1*{local#1 <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_func_is_wf: `%%`(func : func, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_func_is_wf0{func : func, ret_val : free}: + `%%`(func, ret_val) + -- wf_func: `%`(func) + -- if (ret_val = $free_func(func)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(datamode : datamode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_datamode_is_wf: `%%`(datamode : datamode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_datamode_is_wf0{datamode : datamode, ret_val : free}: + `%%`(datamode, ret_val) + -- wf_datamode: `%`(datamode) + -- if (ret_val = $free_datamode(datamode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte#1*{byte#1 <- `byte*`}, datamode)) = $free_datamode(datamode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_data_is_wf: `%%`(data : data, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_data_is_wf0{data : data, ret_val : free}: + `%%`(data, ret_val) + -- wf_data: `%`(data) + -- if (ret_val = $free_data(data)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(elemmode : elemmode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elemmode_is_wf: `%%`(elemmode : elemmode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elemmode_is_wf0{elemmode : elemmode, ret_val : free}: + `%%`(elemmode, ret_val) + -- wf_elemmode: `%`(elemmode) + -- if (ret_val = $free_elemmode(elemmode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr#358*{expr#358 <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elem_is_wf: `%%`(elem : elem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elem_is_wf0{elem : elem, ret_val : free}: + `%%`(elem, ret_val) + -- wf_elem: `%`(elem) + -- if (ret_val = $free_elem(elem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start(start : start) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_start_is_wf: `%%`(start : start, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_start_is_wf0{start : start, ret_val : free}: + `%%`(start, ret_val) + -- wf_start: `%`(start) + -- if (ret_val = $free_start(start)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import(import : import) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_import_is_wf: `%%`(import : import, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_import_is_wf0{import : import, ret_val : free}: + `%%`(import, ret_val) + -- wf_import: `%`(import) + -- if (ret_val = $free_import(import)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export(export : export) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_export_is_wf: `%%`(export : export, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_export_is_wf0{export : export, ret_val : free}: + `%%`(export, ret_val) + -- wf_export: `%`(export) + -- if (ret_val = $free_export(export)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module(module : module) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_list(type#1*{type#1 <- `type*`}), `%`_list(import#1*{import#1 <- `import*`}), `%`_list(tag#1*{tag#1 <- `tag*`}), `%`_list(global#1*{global#1 <- `global*`}), `%`_list(mem#1*{mem#1 <- `mem*`}), `%`_list(table#1*{table#1 <- `table*`}), `%`_list(func#1*{func#1 <- `func*`}), `%`_list(data#1*{data#1 <- `data*`}), `%`_list(elem#1*{elem#1 <- `elem*`}), start#1?{start#1 <- `start?`}, `%`_list(export#1*{export#1 <- `export*`}))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_module_is_wf: `%%`(module : module, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_module_is_wf0{module : module, ret_val : free}: + `%%`(module, ret_val) + -- wf_module: `%`(module) + -- if (ret_val = $free_module(module)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $funcidx_module(module : module) : funcidx* ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec @@ -5228,6 +6163,22 @@ def $with_locals(context : context, localidx*, localtype*) : context? ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation with_locals_is_wf: `%%%%`(context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule with_locals_is_wf0{context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context}: + `%%%%`(context, var_0, var_1, ret_val) + -- wf_context: `%`(context) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_localtype: `%`(var_1))*{var_1 <- var_1} + -- if ($with_locals(context, var_0, var_1) =/= ?()) + -- if (ret_val = !($with_locals(context, var_0, var_1))) + -- wf_context: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(deftype*) : deftype* ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 @@ -5243,6 +6194,16 @@ def $clos_valtype(context : context, valtype : valtype) : valtype def $clos_valtype{C : context, t : valtype}(C, t) = $subst_all_valtype(t, $typeuse_deftype(dt)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt#4*{dt#4 <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_valtype_is_wf: `%%%`(context : context, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_valtype_is_wf0{context : context, valtype : valtype, ret_val : valtype}: + `%%%`(context, valtype, ret_val) + -- wf_context: `%`(context) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $clos_valtype(context, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -5261,25 +6222,43 @@ def $clos_externtype(context : context, externtype : externtype) : externtype def $clos_externtype{C : context, xt : externtype}(C, xt) = $subst_all_externtype(xt, $typeuse_deftype(dt)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt#6*{dt#6 <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_externtype_is_wf: `%%%`(context : context, externtype : externtype, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_externtype_is_wf0{context : context, externtype : externtype, ret_val : externtype}: + `%%%`(context, externtype, ret_val) + -- wf_context: `%`(context) + -- wf_externtype: `%`(externtype) + -- if (ret_val = $clos_externtype(context, externtype)) + -- wf_externtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype}(C, mmt) = $subst_all_moduletype(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}) -- let{`dt*` : deftype*} dt#7*{dt#7 <- `dt*`} = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_moduletype_is_wf: `%%%`(context : context, moduletype : moduletype, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_moduletype_is_wf0{context : context, moduletype : moduletype, ret_val : moduletype}: + `%%%`(context, moduletype, ret_val) + -- wf_context: `%`(context) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $clos_moduletype(context, moduletype)) + -- wf_moduletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypenat = @@ -5290,21 +6269,18 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) @@ -5312,6 +6288,7 @@ relation Expand: `%~~%`(deftype, comptype) rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: `%~~%`(deftype, comptype) -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- wf_subtype: `%`($unrolldt(deftype)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5319,7 +6296,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(typeuse : typeuse, nat : nat) : bool @@ -5337,6 +6313,16 @@ def $unrollht_(context : context, heaptype : heaptype) : subtype ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $unrollht_{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation unrollht__is_wf: `%%%`(context : context, heaptype : heaptype, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule unrollht__is_wf0{context : context, heaptype : heaptype, ret_val : subtype}: + `%%%`(context, heaptype, ret_val) + -- wf_context: `%`(context) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = $unrollht_(context, heaptype)) + -- wf_subtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -5345,20 +6331,15 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, $heaptype_absheaptype(absheaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, $heaptype_typeuse(typeuse)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 rule bot{C : context}: `%|-%:OK`(C, BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) @@ -5366,8 +6347,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) @@ -5375,26 +6354,20 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) rule num{C : context, numtype : numtype}: `%|-%:OK`(C, $valtype_numtype(numtype)) -- Numtype_ok: `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, $valtype_vectype(vectype)) -- Vectype_ok: `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, $valtype_reftype(reftype)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) @@ -5403,23 +6376,18 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) - -- wf_context: `%`(C) -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, $typeuse_deftype(deftype)) -- Deftype_ok: `%|-%:OK`(C, deftype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) @@ -5427,8 +6395,6 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) @@ -5436,8 +6402,6 @@ relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) @@ -5445,14 +6409,11 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) rule val{C : context, valtype : valtype}: `%|-%:OK`(C, $storagetype_valtype(valtype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, $storagetype_packtype(packtype)) -- Packtype_ok: `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) @@ -5460,23 +6421,17 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) @@ -5491,8 +6446,7 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) -- (if ($unrollht_(C, $heaptype_typeuse(typeuse)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_subtype: `%`($unrollht_(C, $heaptype_typeuse(typeuse))))*{typeuse <- `typeuse*`} -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 @@ -5500,16 +6454,12 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 rule empty{C : context, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypenat(i)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypenat(i)) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypenat((i + 1))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) @@ -5519,7 +6469,6 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) -- if (i < n) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}}) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 @@ -5529,26 +6478,17 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) @@ -5556,7 +6496,6 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: @@ -5564,7 +6503,7 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) - -- wf_context: `%`(C) + -- wf_subtype: `%`($unrolldt(deftype_1)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 @@ -5572,8 +6511,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: @@ -5581,95 +6518,64 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) -- wf_heaptype: `%`(heaptype') ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, $heaptype_deftype(deftype), STRUCT_heaptype) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, $heaptype_deftype(deftype), ARRAY_heaptype) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, $heaptype_deftype(deftype), FUNC_heaptype) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(STRUCT_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 @@ -5677,9 +6583,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 @@ -5687,9 +6590,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(FUNC_heaptype) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 @@ -5698,8 +6598,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- if (j < |typeuse*{typeuse <- `typeuse*`}|) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 @@ -5707,9 +6605,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) -- wf_heaptype: `%`(ANY_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5718,9 +6613,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) -- wf_heaptype: `%`(FUNC_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5729,9 +6621,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) -- wf_heaptype: `%`(EXN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5740,18 +6629,12 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) -- if (heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) -- wf_heaptype: `%`(EXTERN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) @@ -5759,17 +6642,11 @@ relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) @@ -5777,28 +6654,20 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) @@ -5807,9 +6676,6 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) @@ -5817,15 +6683,11 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) @@ -5833,18 +6695,12 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) } ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5853,8 +6709,6 @@ relation Localtype_ok: `%|-%:OK`(context, localtype) rule _{C : context, init : init, t : valtype}: `%|-%:OK`(C, `%%`_localtype(init, t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) @@ -5866,9 +6720,7 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- if (|`lct*`| = |`x*`|) -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand_use: `%~~_%%`(typeuse, context, comptype) @@ -5876,17 +6728,12 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`($typeuse_deftype(deftype), C, comptype) -- Expand: `%~~%`(deftype, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5912,9 +6759,7 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`($unrolldt(C.TYPES_context[$proj_uN_0(x).0])))*{x <- `x*`} -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5925,17 +6770,12 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) } @@ -5947,8 +6787,6 @@ relation Limits_ok: `%|-%:%`(context, limits, nat) `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) @@ -5957,8 +6795,6 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) `%|-%:OK`(C, typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5967,8 +6803,6 @@ relation Globaltype_ok: `%|-%:OK`(context, globaltype) rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Memtype_ok: `%|-%:OK`(context, memtype) @@ -5976,8 +6810,6 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size($numtype_addrtype(addrtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) @@ -5986,8 +6818,6 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size($numtype_addrtype(addrtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Externtype_ok: `%|-%:OK`(context, externtype) @@ -5995,37 +6825,27 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -6039,10 +6859,8 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- if (|`t*`| = |`x*`|) -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} - -- wf_context: `%`(C) -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_uN: `%%`(32, iter))*{iter <- $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -6052,17 +6870,11 @@ relation Limits_sub: `%|-%<:%`(context, limits, limits) `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) -- if (n_1 >= n_2) -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule eps{C : context, n_1 : n, n_2 : n}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) -- if (n_1 >= n_2) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) @@ -6071,7 +6883,6 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) @@ -6079,18 +6890,12 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) @@ -6098,9 +6903,6 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) @@ -6110,9 +6912,6 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) @@ -6120,41 +6919,26 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) @@ -6162,18 +6946,12 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6186,8 +6964,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6198,8 +6974,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6207,42 +6981,42 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val?? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I32_valtype) = ?(?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0))))) - -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(I64_valtype) = ?(?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0))))) - -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F32_valtype) = ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F64_valtype) = ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(V128_valtype) = ?(?(VCONST_val(V128_vectype, `%`_vec_(0)))) - -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) - -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) def $default_{x0 : valtype}(x0) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation default__is_wf: `%%`(valtype : valtype, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule default__is_wf0{valtype : valtype, ret_val : val?}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if ($default_(valtype) =/= ?()) + -- if (ret_val = !($default_(valtype))) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -6250,7 +7024,7 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) `|-%DEFAULTABLE`(t) -- if ($default_(t) =/= ?()) -- if (!($default_(t)) =/= ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) @@ -6259,7 +7033,6 @@ relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (m < (2 ^ $size($numtype_addrtype(at)))) - -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec def $is_packtype(storagetype : storagetype) : bool @@ -6274,33 +7047,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: @@ -6308,18 +7070,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = $valtype_numtype(numtype)) \/ (t' = $valtype_vectype(vectype))) - -- wf_context: `%`(C) -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6329,8 +7086,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6341,9 +7096,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6355,9 +7107,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 @@ -6365,9 +7114,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: @@ -6377,8 +7123,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(l').0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 @@ -6387,18 +7131,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -6409,10 +7147,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: @@ -6423,19 +7158,14 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + -- wf_reftype: `%`($diffrt(rt_1, rt_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 @@ -6443,9 +7173,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 @@ -6456,9 +7183,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6468,9 +7192,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 @@ -6481,10 +7202,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6496,10 +7214,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) @@ -6514,10 +7229,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6530,9 +7242,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6540,9 +7249,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 @@ -6551,8 +7257,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6561,9 +7265,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule `ref.null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule `ref.func`{C : context, x : idx, dt : deftype}: @@ -6572,39 +7273,24 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (|C.REFS_context| > 0) -- if (x <- C.REFS_context) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule `ref.i31`{C : context}: `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule `ref.is_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule `ref.as_non_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule `ref.eq`{C : context}: `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule `ref.test`{C : context, rt : reftype, rt' : reftype}: @@ -6612,9 +7298,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.TEST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: @@ -6622,25 +7305,16 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.CAST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule `i31.get`{C : context, sx : sx}: `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 @@ -6649,9 +7323,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 @@ -6662,9 +7334,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) @@ -6675,9 +7344,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) @@ -6686,9 +7352,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 @@ -6697,9 +7360,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 @@ -6707,9 +7368,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 @@ -6719,9 +7377,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 @@ -6732,9 +7387,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 @@ -6743,9 +7396,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 @@ -6753,26 +7403,17 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule `array.len`{C : context}: `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.LEN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule `array.fill`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 @@ -6783,9 +7424,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) @@ -6796,9 +7434,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 @@ -6809,35 +7444,24 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule `local.get`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 @@ -6845,9 +7469,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 @@ -6855,9 +7476,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 @@ -6865,9 +7483,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 @@ -6875,9 +7490,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 @@ -6885,9 +7497,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 @@ -6895,9 +7504,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 @@ -6905,9 +7511,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 @@ -6915,9 +7518,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 @@ -6925,9 +7525,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 @@ -6938,9 +7535,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) @@ -6952,10 +7546,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 @@ -6963,19 +7554,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 @@ -6983,9 +7568,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 @@ -6993,9 +7575,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 @@ -7005,9 +7584,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) @@ -7018,9 +7594,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 @@ -7028,9 +7601,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: @@ -7038,9 +7608,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 @@ -7049,9 +7616,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 @@ -7060,9 +7624,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 @@ -7071,9 +7632,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 @@ -7082,9 +7640,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 @@ -7093,9 +7648,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 @@ -7104,9 +7656,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 @@ -7115,9 +7664,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 @@ -7127,9 +7673,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 @@ -7138,9 +7681,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 @@ -7150,217 +7690,131 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 rule vconst{C : context, c : vec_}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 rule vunop{C : context, sh : shape, vunop : vunop_}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 rule vternop{C : context, sh : shape, vternop : vternop_}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim($proj_bshape_0(sh).0)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -7372,10 +7826,7 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- if ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}) =/= ?()) -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -7387,9 +7838,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 @@ -7397,9 +7845,6 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) } @@ -7409,8 +7854,6 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7420,89 +7863,63 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) `|-%NONDEFAULTABLE`(t) -- if ($default_(t) =/= ?()) -- if (!($default_(t)) = ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.null`{C : context, ht : heaptype}: `%|-%CONST`(C, `REF.NULL`_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.i31`{C : context}: `%|-%CONST`(C, `REF.I31`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `ref.func`{C : context, x : idx}: `%|-%CONST`(C, `REF.FUNC`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `struct.new_default`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_default`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `array.new_fixed`{C : context, x : idx, n : n}: `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `any.convert_extern`{C : context}: `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `extern.convert_any`{C : context}: `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule `global.get`{C : context, x : idx, t : valtype}: `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7512,8 +7929,6 @@ relation Instr_const: `%|-%CONST`(context, instr) -- if (Inn <- [I32_Inn I64_Inn]) -- if (|[mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]| > 0) -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr($numtype_addrtype(Inn), binop)) -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, ADD_binop_Inn)) -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, SUB_binop_Inn)) -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, MUL_binop_Inn)) @@ -7524,8 +7939,6 @@ relation Expr_const: `%|-%CONST`(context, expr) rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) @@ -7534,9 +7947,6 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) `%|-%:%CONST`(C, expr, t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) -- Expr_const: `%|-%CONST`(C, expr) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) @@ -7546,7 +7956,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_oktypeidx: `%`(OK_oktypeidx(x)) @@ -7556,8 +7965,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Global_ok: `%|-%:%`(context, global, globaltype) @@ -7567,8 +7974,6 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7577,8 +7982,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) -- Memtype_ok: `%|-%:OK`(C, memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Table_ok: `%|-%:%`(context, table, tabletype) @@ -7588,8 +7991,6 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(rt)) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7598,17 +7999,11 @@ relation Local_ok: `%|-%:%`(context, local, localtype) rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) @@ -7620,8 +8015,6 @@ relation Func_ok: `%|-%:%`(context, func, deftype) -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) @@ -7630,8 +8023,6 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: @@ -7639,8 +8030,6 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7649,24 +8038,16 @@ relation Data_ok: `%|-%:%`(context, data, datatype) rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: @@ -7675,9 +8056,6 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7688,8 +8066,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(elemtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Start_ok: `%|-%:OK`(context, start) @@ -7698,8 +8074,6 @@ relation Start_ok: `%|-%:OK`(context, start) `%|-%:OK`(C, START_start(x)) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7708,8 +8082,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Externidx_ok: `%|-%:%`(context, externidx, externtype) @@ -7718,45 +8090,30 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Export_ok: `%|-%:%%`(context, export, name, externtype) @@ -7764,9 +8121,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) -- Externidx_ok: `%|-%:%`(C, externidx, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { @@ -7776,17 +8130,12 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7798,14 +8147,12 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7829,7 +8176,6 @@ relation wf_nonfuncs: `%`(nonfuncs) def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}(`%%%%%%`_nonfuncs(global#2*{global#2 <- `global*`}, mem#2*{mem#2 <- `mem*`}, table#2*{table#2 <- `table*`}, elem#2*{elem#2 <- `elem*`}, start#2?{start#2 <- `start?`}, export#2*{export#2 <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#3*{export#3 <- `export*`}))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) @@ -7865,11 +8211,13 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) - -- wf_context: `%`(C) -- wf_context: `%`(C') -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- (wf_uN: `%%`(32, iter))*{iter <- $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}))} + -- (wf_typeuse: `%`(iter))*{iter <- $tagsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_globaltype: `%`(iter))*{iter <- $globalsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_memtype: `%`(iter))*{iter <- $memsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_tabletype: `%`(iter))*{iter <- $tablesxt(xt_I*{xt_I <- `xt_I*`})} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -7921,81 +8269,272 @@ def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmadd : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmadd_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmadd_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_fmadd) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmin : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmin_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmin_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmin) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmax : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmax_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmax_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmax) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_idot : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_idot_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_idot_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_idot) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_iq15mulr : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_iq15mulr_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_iq15mulr_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_iq15mulr) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_u : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_u_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_u_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_trunc_u) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_s : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_s_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_s_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_trunc_s) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_swizzle : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_swizzle_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_swizzle_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_swizzle) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_laneselect : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_laneselect_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_laneselect_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_laneselect) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $s33_to_u32(s33 : s33) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibits_(N : N, iN : iN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibits__is_wf: `%%%`(N : N, iN : iN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibits__is_wf0{N : N, iN : iN, ret_val : bit*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibits_(N, iN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbits_(N : N, fN : fN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbits__is_wf: `%%%`(N : N, fN : fN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbits__is_wf0{N : N, fN : fN, ret_val : bit*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbits_(N, fN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibytes_(N : N, iN : iN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibytes__is_wf: `%%%`(N : N, iN : iN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibytes__is_wf0{N : N, iN : iN, ret_val : byte*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibytes_(N, iN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbytes_(N : N, fN : fN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbytes__is_wf: `%%%`(N : N, fN : fN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbytes__is_wf0{N : N, fN : fN, ret_val : byte*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbytes_(N, fN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $nbytes_(numtype : numtype, num_ : num_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation nbytes__is_wf: `%%%`(numtype : numtype, num_ : num_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule nbytes__is_wf0{numtype : numtype, num_ : num_, ret_val : byte*}: + `%%%`(numtype, num_, ret_val) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $nbytes_(numtype, num_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $vbytes_(vectype : vectype, vec_ : vec_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation vbytes__is_wf: `%%%`(vectype : vectype, vec_ : vec_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule vbytes__is_wf0{vectype : vectype, vec_ : vec_, ret_val : byte*}: + `%%%`(vectype, vec_, ret_val) + -- wf_uN: `%%`($vsize(vectype), vec_) + -- if (ret_val = $vbytes_(vectype, vec_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zbytes__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zbytes__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : byte*}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $zbytes_(storagetype, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cbytes__is_wf: `%%%`(Cnn : Cnn, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cbytes__is_wf0{Cnn : Cnn, lit_ : lit_, ret_val : byte*}: + `%%%`(Cnn, lit_, ret_val) + -- wf_lit_: `%%`($storagetype_Cnn(Cnn), lit_) + -- if (ret_val = $cbytes_(Cnn, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibits_(N : N, bit*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbits_(N : N, bit*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbits__is_wf: `%%%`(N : N, var_0 : bit*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbits__is_wf0{N : N, var_0 : bit*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_bit: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbits_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibytes_(N : N, byte*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbytes_(N : N, byte*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbytes__is_wf: `%%%`(N : N, var_0 : byte*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbytes__is_wf0{N : N, var_0 : byte*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbytes_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_nbytes_(numtype : numtype, byte*) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_nbytes__is_wf: `%%%`(numtype : numtype, var_0 : byte*, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_nbytes__is_wf0{numtype : numtype, var_0 : byte*, ret_val : num_}: + `%%%`(numtype, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_nbytes_(numtype, var_0)) + -- wf_num_: `%%`(numtype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_vbytes_(vectype : vectype, byte*) : vec_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_zbytes__is_wf: `%%%`(storagetype : storagetype, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_zbytes__is_wf0{storagetype : storagetype, var_0 : byte*, ret_val : lit_}: + `%%%`(storagetype, var_0, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_zbytes_(storagetype, var_0)) + -- wf_lit_: `%%`(storagetype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_cbytes__is_wf: `%%%`(Cnn : Cnn, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_cbytes__is_wf0{Cnn : Cnn, var_0 : byte*, ret_val : lit_}: + `%%%`(Cnn, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_cbytes_(Cnn, var_0)) + -- wf_lit_: `%%`($storagetype_Cnn(Cnn), ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $signed_(N : N, nat : nat) : int ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8037,22 +8576,24 @@ def $sx(storagetype : storagetype) : sx?? def $zero(lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zero_is_wf: `%%`(lanetype : lanetype, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zero_is_wf0{lanetype : lanetype, ret_val : lane_}: + `%%`(lanetype, ret_val) + -- if (ret_val = $zero(lanetype)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -8081,7 +8622,6 @@ def $sat_s_(N : N, int : int) : int def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN @@ -8101,28 +8641,23 @@ def $ipopcnt_(N : N, iN : iN) : iN def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -8130,7 +8665,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8138,7 +8672,6 @@ def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? @@ -8146,13 +8679,11 @@ def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8180,19 +8711,15 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8243,116 +8770,277 @@ def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* def $ieqz_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fneg_(N : N, fN : fN) : fN* +relation fabs__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fabs__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fabs_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fneg_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fneg__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fneg__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fneg_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsqrt_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsqrt__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsqrt__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fsqrt_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fceil_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fceil__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fceil__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fceil_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ffloor_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ffloor__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ffloor__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ffloor_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ftrunc_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ftrunc__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ftrunc__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ftrunc_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fnearest_(N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fnearest__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fnearest__is_wf0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fnearest_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fadd_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fadd__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fadd__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fadd_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsub_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsub__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsub__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fsub_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmul_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmul__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmul__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmul_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fdiv_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fdiv__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fdiv__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fdiv_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmin_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmin__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmax_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmax__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_min__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_min__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_min_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_max__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_max__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_max_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fcopysign_(N : N, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fcopysign__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fcopysign__is_wf0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fcopysign_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $feq_(N : N, fN : fN, fN : fN) : u32 @@ -8374,9 +9062,31 @@ def $fge_(N : N, fN : fN, fN : fN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_madd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_madd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_madd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_nmadd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_nmadd__is_wf0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_nmadd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wrap__(M : M, N : N, iN : iN) : iN @@ -8395,38 +9105,77 @@ def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $demote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation demote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule demote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $demote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $promote__(M : M, N : N, fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation promote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule promote___is_wf0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $promote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $convert__(M : M, N : N, sx : sx, iN : iN) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation convert___is_wf: `%%%%%`(M : M, N : N, sx : sx, iN : iN, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule convert___is_wf0{M : M, N : N, sx : sx, iN : iN, ret_val : fN}: + `%%%%%`(M, N, sx, iN, ret_val) + -- wf_uN: `%%`(M, iN) + -- if (ret_val = $convert__(M, N, sx, iN)) + -- wf_fN: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation reinterpret___is_wf: `%%%%`(numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule reinterpret___is_wf0{numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_}: + `%%%%`(numtype_1, numtype_2, num_, ret_val) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $reinterpret__(numtype_1, numtype_2, num_)) + -- wf_num_: `%%`(numtype_2, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) - -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) - -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lpacknum__is_wf: `%%%`(lanetype : lanetype, num_ : num_, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lpacknum__is_wf0{lanetype : lanetype, num_ : num_, ret_val : lane_}: + `%%%`(lanetype, num_, ret_val) + -- wf_num_: `%%`($lunpack(lanetype), num_) + -- if (ret_val = $lpacknum_(lanetype, num_)) + -- wf_lane_: `%%`(lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -8442,10 +9191,19 @@ def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) - -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) - -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if ($cunpack(storagetype) =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(storagetype))), lit_) + -- if (ret_val = $cpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`(storagetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ @@ -8459,10 +9217,17 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) - -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) - -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lunpacknum__is_wf: `%%%`(lanetype : lanetype, lane_ : lane_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lunpacknum__is_wf0{lanetype : lanetype, lane_ : lane_, ret_val : num_}: + `%%%`(lanetype, lane_, ret_val) + -- wf_lane_: `%%`(lanetype, lane_) + -- if (ret_val = $lunpacknum_(lanetype, lane_)) + -- wf_num_: `%%`($lunpack(lanetype), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ @@ -8478,196 +9243,166 @@ def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ def $cunpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) - -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) - -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cunpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cunpacknum__is_wf0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $cunpacknum_(storagetype, lit_)) + -- if ($cunpack(storagetype) =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(storagetype))), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#1)))*{iter_0#1 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#1)*{iter_0#1 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#3)))*{iter_0#3 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#6)*{iter_0#6 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#5)))*{iter_0#5 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#3)*{iter_0#3 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#7)))*{iter_0#7 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#10)*{iter_0#10 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#9)))*{iter_0#9 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#5)*{iter_0#5 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#11)))*{iter_0#11 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#6)*{iter_0#6 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#14)*{iter_0#14 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#13)))*{iter_0#13 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#7)*{iter_0#7 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#16)*{iter_0#16 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#15)))*{iter_0#15 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#18)*{iter_0#18 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#17)))*{iter_0#17 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#9)*{iter_0#9 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#19)))*{iter_0#19 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#10)*{iter_0#10 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#22)*{iter_0#22 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#21)))*{iter_0#21 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#11)*{iter_0#11 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#23)))*{iter_0#23 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#26)*{iter_0#26 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#25)))*{iter_0#25 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#13)*{iter_0#13 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#27)))*{iter_0#27 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#14)*{iter_0#14 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation unop__is_wf: `%%%%`(numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule unop__is_wf0{numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*}: + `%%%%`(numtype, unop_, num_, ret_val) + -- wf_unop_: `%%`(numtype, unop_) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $unop_(numtype, unop_, num_)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#30)*{iter_0#30 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#29)))*{iter_0#29 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#15)*{iter_0#15 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#32)*{iter_0#32 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#31)))*{iter_0#31 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#16)*{iter_0#16 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#33)))*{iter_0#33 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#17)*{iter_0#17 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#35)))*{iter_0#35 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#18)*{iter_0#18 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#38)*{iter_0#38 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#37)))*{iter_0#37 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#19)*{iter_0#19 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#40)*{iter_0#40 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#39)))*{iter_0#39 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#41)))*{iter_0#41 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#21)*{iter_0#21 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#43)))*{iter_0#43 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#22)*{iter_0#22 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#45)))*{iter_0#45 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#23)*{iter_0#23 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#47)))*{iter_0#47 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#50)*{iter_0#50 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#49)))*{iter_0#49 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#25)*{iter_0#25 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#52)*{iter_0#52 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#51)))*{iter_0#51 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#26)*{iter_0#26 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#54)*{iter_0#54 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#53)))*{iter_0#53 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#27)*{iter_0#27 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#56)*{iter_0#56 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#55)))*{iter_0#55 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#58)*{iter_0#58 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#57)))*{iter_0#57 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#29)*{iter_0#29 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#60)*{iter_0#60 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#59)))*{iter_0#59 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#30)*{iter_0#30 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#62)*{iter_0#62 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#61)))*{iter_0#61 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#31)*{iter_0#31 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#64)*{iter_0#64 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#63)))*{iter_0#63 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#32)*{iter_0#32 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation binop__is_wf: `%%%%%`(numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule binop__is_wf0{numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*}: + `%%%%%`(numtype, binop_, num_, num__0, ret_val) + -- wf_binop_: `%%`(numtype, binop_) + -- wf_num_: `%%`(numtype, num_) + -- wf_num_: `%%`(numtype, num__0) + -- if (ret_val = $binop_(numtype, binop_, num_, num__0)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 @@ -8731,124 +9466,108 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#66)*{iter_0#66 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#65)))*{iter_0#65 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#33)*{iter_0#33 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#68)*{iter_0#68 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#67)))*{iter_0#67 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#70)*{iter_0#70 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#69)))*{iter_0#69 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#35)*{iter_0#35 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#72)*{iter_0#72 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#71)))*{iter_0#71 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#74)*{iter_0#74 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#73)))*{iter_0#73 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#37)*{iter_0#37 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#76)*{iter_0#76 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#75)))*{iter_0#75 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#38)*{iter_0#38 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#78)*{iter_0#78 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#77)))*{iter_0#77 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#39)*{iter_0#39 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#80)*{iter_0#80 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#79)))*{iter_0#79 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#40)*{iter_0#40 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#82)*{iter_0#82 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#81)))*{iter_0#81 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#41)*{iter_0#41 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#84)*{iter_0#84 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#83)))*{iter_0#83 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#86)*{iter_0#86 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#85)))*{iter_0#85 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#43)*{iter_0#43 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#88)*{iter_0#88 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#87)))*{iter_0#87 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#90)*{iter_0#90 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#89)))*{iter_0#89 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#45)*{iter_0#45 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#92)*{iter_0#92 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#91)))*{iter_0#91 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#94)*{iter_0#94 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#93)))*{iter_0#93 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#47)*{iter_0#47 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#96)*{iter_0#96 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#95)))*{iter_0#95 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))] -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))] -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))] -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))] -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))] -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))] -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))] -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))] -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cvtop___is_wf: `%%%%%`(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cvtop___is_wf0{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*}: + `%%%%%`(numtype_1, numtype_2, cvtop__, num_, ret_val) + -- wf_cvtop__: `%%%`(numtype_1, numtype_2, cvtop__) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $cvtop__(numtype_1, numtype_2, cvtop__, num_)) + -- (wf_num_: `%%`(numtype_2, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_) : lane_* +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lanes__is_wf: `%%%`(shape : shape, vec_ : vec_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lanes__is_wf0{shape : shape, vec_ : vec_, ret_val : lane_*}: + `%%%`(shape, vec_, ret_val) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(128, vec_) + -- if (ret_val = $lanes_(shape, vec_)) + -- (wf_lane_: `%%`($lanetype(shape), ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $inv_lanes_(shape : shape, lane_*) : vec_ @@ -9061,458 +9780,582 @@ def $half(half : half, nat : nat, nat : nat) : nat def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#1*{c#1 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#2*{c#2 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#5)*{c#5 <- `c*`})] + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#4)*{c#4 <- `c*`})] -- let{`c_1*` : lane_*} c_1#1*{c_1#1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) -- let{`c*` : iN*} c#3*{c#3 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#2)))*{c_1#2 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#5))*{iter#5 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#3)))))*{c_1#3 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#4)))*{c#4 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#8)*{c#8 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#3*{c_1#3 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#6*{c#6 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#4)))*{c_1#4 <- `c_1*`} + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#6)*{c#6 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#4*{c_1#4 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#5*{c#5 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#5)))*{c_1#5 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#6))*{iter#6 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#6)))))*{c_1#6 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#7)))*{c#7 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#11)*{c#11 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#5*{c_1#5 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#9*{c#9 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#6)))*{c_1#6 <- `c_1*`} + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#8)*{c#8 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#7*{c_1#7 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#7*{c#7 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#8)))*{c_1#8 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#7))*{iter#7 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#9)))))*{c_1#9 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#10)))*{c#10 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#14)*{c#14 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#7*{c_1#7 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#12*{c#12 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#8)))*{c_1#8 <- `c_1*`} + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#10)*{c#10 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#10*{c_1#10 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#9*{c#9 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#11)))*{c_1#11 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#8))*{iter#8 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#12)))))*{c_1#12 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#13)))*{c#13 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#16*{c#16 <- `c*#2`})*{`c*#2` <- `c**`} - -- let{`c_1*` : lane_*} c_1#9*{c_1#9 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) - -- let{`c**` : lane_**} c#15*{c#15 <- `c*#1`}*{`c*#1` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#97))*{iter_0#97 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#10)))))}*{c_1#10 <- `c_1*`}) + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#12*{c#12 <- `c*#2`})*{`c*#2` <- `c**`} + -- let{`c_1*` : lane_*} c_1#13*{c_1#13 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#11*{c#11 <- `c*#1`}*{`c*#1` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#49))*{iter_0#49 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#14)))))}*{c_1#14 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#9))*{iter#9 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#11))*{iter#11 <- iter#10}*{iter#10 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#50))*{iter_0#50 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#15)))))}*{c_1#15 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#12))*{iter#12 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#16)))))}*{c_1#16 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#98))))*{iter_0#98 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#11)))))}*{c_1#11 <- `c_1*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#18*{c#18 <- `c*#4`})*{`c*#4` <- `c**`} - -- let{`c_1*` : lane_*} c_1#12*{c_1#12 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) - -- let{`c**` : lane_**} c#17*{c#17 <- `c*#3`}*{`c*#3` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#99))*{iter_0#99 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#13)))))}*{c_1#13 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#51))))*{iter_0#51 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#17)))))}*{c_1#17 <- `c_1*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#14*{c#14 <- `c*#4`})*{`c*#4` <- `c**`} + -- let{`c_1*` : lane_*} c_1#18*{c_1#18 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#13*{c#13 <- `c*#3`}*{`c*#3` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#52))*{iter_0#52 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#19)))))}*{c_1#19 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#13))*{iter#13 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#15))*{iter#15 <- iter#14}*{iter#14 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#53))*{iter_0#53 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#20)))))}*{c_1#20 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#16))*{iter#16 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#21)))))}*{c_1#21 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#100))))*{iter_0#100 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#14)))))}*{c_1#14 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#54))))*{iter_0#54 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#22)))))}*{c_1#22 <- `c_1*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#21)*{c#21 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#15*{c_1#15 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#16)*{c#16 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#23*{c_1#23 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) -- let{`c_2*` : lane_*} c_2#1*{c_2#1 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#19*{c#19 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#16)), !($proj_lane__2(c_2#2)))*{c_1#16 <- `c_1*`, c_2#2 <- `c_2*`} + -- let{`c*` : iN*} c#15*{c#15 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#24)), !($proj_lane__2(c_2#2)))*{c_1#24 <- `c_1*`, c_2#2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#17))*{iter#17 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#18))*{iter#18 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#25)), !($proj_lane__2(c_2#3)))))*{c_1#25 <- `c_1*`, c_2#3 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#20)))*{c#20 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#24)*{c#24 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#17*{c_1#17 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#3*{c_2#3 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#22*{c#22 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#18)), !($proj_lane__2(c_2#4)))*{c_1#18 <- `c_1*`, c_2#4 <- `c_2*`} + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#18)*{c#18 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#26*{c_1#26 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#4*{c_2#4 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#17*{c#17 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#27)), !($proj_lane__2(c_2#5)))*{c_1#27 <- `c_1*`, c_2#5 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#19))*{iter#19 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#20))*{iter#20 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#28)), !($proj_lane__2(c_2#6)))))*{c_1#28 <- `c_1*`, c_2#6 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#23)))*{c#23 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#27)*{c#27 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#19*{c_1#19 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#5*{c_2#5 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#25*{c#25 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#20)), !($proj_lane__2(c_2#6)))*{c_1#20 <- `c_1*`, c_2#6 <- `c_2*`} + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#20)*{c#20 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#29*{c_1#29 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#7*{c_2#7 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#19*{c#19 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#30)), !($proj_lane__2(c_2#8)))*{c_1#30 <- `c_1*`, c_2#8 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#21))*{iter#21 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#22))*{iter#22 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#31)), !($proj_lane__2(c_2#9)))))*{c_1#31 <- `c_1*`, c_2#9 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#26)))*{c#26 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#30)*{c#30 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#21*{c_1#21 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#7*{c_2#7 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#28*{c#28 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#22)), !($proj_lane__2(c_2#8)))*{c_1#22 <- `c_1*`, c_2#8 <- `c_2*`} + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#22)*{c#22 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#32*{c_1#32 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#10*{c_2#10 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#21*{c#21 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#33)), !($proj_lane__2(c_2#11)))*{c_1#33 <- `c_1*`, c_2#11 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#23))*{iter#23 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#24))*{iter#24 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#34)), !($proj_lane__2(c_2#12)))))*{c_1#34 <- `c_1*`, c_2#12 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#29)))*{c#29 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#33)*{c#33 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#23*{c_1#23 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#9*{c_2#9 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#31*{c#31 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#24)), !($proj_lane__2(c_2#10)))*{c_1#24 <- `c_1*`, c_2#10 <- `c_2*`} + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#24)*{c#24 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#35*{c_1#35 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#13*{c_2#13 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#23*{c#23 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#36)), !($proj_lane__2(c_2#14)))*{c_1#36 <- `c_1*`, c_2#14 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#25))*{iter#25 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#26))*{iter#26 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#37)), !($proj_lane__2(c_2#15)))))*{c_1#37 <- `c_1*`, c_2#15 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#32)))*{c#32 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#36)*{c#36 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#25*{c_1#25 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#11*{c_2#11 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#34*{c#34 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#26)), !($proj_lane__2(c_2#12)))*{c_1#26 <- `c_1*`, c_2#12 <- `c_2*`} + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#26)*{c#26 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#38*{c_1#38 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#16*{c_2#16 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#25*{c#25 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#39)), !($proj_lane__2(c_2#17)))*{c_1#39 <- `c_1*`, c_2#17 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#27))*{iter#27 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#28))*{iter#28 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#40)), !($proj_lane__2(c_2#18)))))*{c_1#40 <- `c_1*`, c_2#18 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#35)))*{c#35 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#39)*{c#39 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#27*{c_1#27 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#13*{c_2#13 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#37*{c#37 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#28)), !($proj_lane__2(c_2#14)))*{c_1#28 <- `c_1*`, c_2#14 <- `c_2*`} + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#28)*{c#28 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#41*{c_1#41 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#19*{c_2#19 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#27*{c#27 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#42)), !($proj_lane__2(c_2#20)))*{c_1#42 <- `c_1*`, c_2#20 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#29))*{iter#29 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#30))*{iter#30 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#43)), !($proj_lane__2(c_2#21)))))*{c_1#43 <- `c_1*`, c_2#21 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#38)))*{c#38 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#42)*{c#42 <- `c*`})] - -- let{`c_1*` : lane_*} c_1#29*{c_1#29 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#15*{c_2#15 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#40*{c#40 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#30)), !($proj_lane__2(c_2#16)))*{c_1#30 <- `c_1*`, c_2#16 <- `c_2*`} + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#30)*{c#30 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#44*{c_1#44 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#22*{c_2#22 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#29*{c#29 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#45)), !($proj_lane__2(c_2#23)))*{c_1#45 <- `c_1*`, c_2#23 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#31))*{iter#31 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#32))*{iter#32 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#46)), !($proj_lane__2(c_2#24)))))*{c_1#46 <- `c_1*`, c_2#24 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#41)))*{c#41 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#44*{c#44 <- `c*#6`})*{`c*#6` <- `c**`} - -- let{`c_1*` : lane_*} c_1#31*{c_1#31 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#17*{c_2#17 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#43*{c#43 <- `c*#5`}*{`c*#5` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#101)*{iter_0#101 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#32)), !($proj_lane__2(c_2#18)))}*{c_1#32 <- `c_1*`, c_2#18 <- `c_2*`}) + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#32*{c#32 <- `c*#6`})*{`c*#6` <- `c**`} + -- let{`c_1*` : lane_*} c_1#47*{c_1#47 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#25*{c_2#25 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#31*{c#31 <- `c*#5`}*{`c*#5` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#55)*{iter_0#55 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#48)), !($proj_lane__2(c_2#26)))}*{c_1#48 <- `c_1*`, c_2#26 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#33))*{iter#33 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#34))*{iter#34 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), iter#36))*{iter#36 <- iter#35}*{iter#35 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#56)*{iter_0#56 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#49)), !($proj_lane__2(c_2#27)))}*{c_1#49 <- `c_1*`, c_2#27 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#37))*{iter#37 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#50)), !($proj_lane__2(c_2#28)))}*{c_1#50 <- `c_1*`, c_2#28 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#102)))*{iter_0#102 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#33)), !($proj_lane__2(c_2#19)))}*{c_1#33 <- `c_1*`, c_2#19 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#57)))*{iter_0#57 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#51)), !($proj_lane__2(c_2#29)))}*{c_1#51 <- `c_1*`, c_2#29 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#46*{c#46 <- `c*#8`})*{`c*#8` <- `c**`} - -- let{`c_1*` : lane_*} c_1#34*{c_1#34 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#20*{c_2#20 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#45*{c#45 <- `c*#7`}*{`c*#7` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#103)*{iter_0#103 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#35)), !($proj_lane__2(c_2#21)))}*{c_1#35 <- `c_1*`, c_2#21 <- `c_2*`}) + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#34*{c#34 <- `c*#8`})*{`c*#8` <- `c**`} + -- let{`c_1*` : lane_*} c_1#52*{c_1#52 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#30*{c_2#30 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#33*{c#33 <- `c*#7`}*{`c*#7` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#58)*{iter_0#58 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#53)), !($proj_lane__2(c_2#31)))}*{c_1#53 <- `c_1*`, c_2#31 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#38))*{iter#38 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#39))*{iter#39 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), iter#41))*{iter#41 <- iter#40}*{iter#40 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#59)*{iter_0#59 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#54)), !($proj_lane__2(c_2#32)))}*{c_1#54 <- `c_1*`, c_2#32 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#42))*{iter#42 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#55)), !($proj_lane__2(c_2#33)))}*{c_1#55 <- `c_1*`, c_2#33 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#104)))*{iter_0#104 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#36)), !($proj_lane__2(c_2#22)))}*{c_1#36 <- `c_1*`, c_2#22 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#48*{c#48 <- `c*#10`})*{`c*#10` <- `c**`} - -- let{`c_1*` : lane_*} c_1#37*{c_1#37 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#23*{c_2#23 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#47*{c#47 <- `c*#9`}*{`c*#9` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#105)*{iter_0#105 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#38)), !($proj_lane__2(c_2#24)))}*{c_1#38 <- `c_1*`, c_2#24 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#60)))*{iter_0#60 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#56)), !($proj_lane__2(c_2#34)))}*{c_1#56 <- `c_1*`, c_2#34 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#36*{c#36 <- `c*#10`})*{`c*#10` <- `c**`} + -- let{`c_1*` : lane_*} c_1#57*{c_1#57 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#35*{c_2#35 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#35*{c#35 <- `c*#9`}*{`c*#9` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#61)*{iter_0#61 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#58)), !($proj_lane__2(c_2#36)))}*{c_1#58 <- `c_1*`, c_2#36 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#43))*{iter#43 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#44))*{iter#44 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), iter#46))*{iter#46 <- iter#45}*{iter#45 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#62)*{iter_0#62 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#59)), !($proj_lane__2(c_2#37)))}*{c_1#59 <- `c_1*`, c_2#37 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#47))*{iter#47 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#60)), !($proj_lane__2(c_2#38)))}*{c_1#60 <- `c_1*`, c_2#38 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#106)))*{iter_0#106 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#39)), !($proj_lane__2(c_2#25)))}*{c_1#39 <- `c_1*`, c_2#25 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#50*{c#50 <- `c*#12`})*{`c*#12` <- `c**`} - -- let{`c_1*` : lane_*} c_1#40*{c_1#40 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#26*{c_2#26 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#49*{c#49 <- `c*#11`}*{`c*#11` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#107)*{iter_0#107 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#41)), !($proj_lane__2(c_2#27)))}*{c_1#41 <- `c_1*`, c_2#27 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#63)))*{iter_0#63 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#61)), !($proj_lane__2(c_2#39)))}*{c_1#61 <- `c_1*`, c_2#39 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#38*{c#38 <- `c*#12`})*{`c*#12` <- `c**`} + -- let{`c_1*` : lane_*} c_1#62*{c_1#62 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#40*{c_2#40 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#37*{c#37 <- `c*#11`}*{`c*#11` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#64)*{iter_0#64 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#63)), !($proj_lane__2(c_2#41)))}*{c_1#63 <- `c_1*`, c_2#41 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#48))*{iter#48 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#49))*{iter#49 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), iter#51))*{iter#51 <- iter#50}*{iter#50 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#65)*{iter_0#65 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#64)), !($proj_lane__2(c_2#42)))}*{c_1#64 <- `c_1*`, c_2#42 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#52))*{iter#52 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#65)), !($proj_lane__2(c_2#43)))}*{c_1#65 <- `c_1*`, c_2#43 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#108)))*{iter_0#108 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#42)), !($proj_lane__2(c_2#28)))}*{c_1#42 <- `c_1*`, c_2#28 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#66)))*{iter_0#66 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#66)), !($proj_lane__2(c_2#44)))}*{c_1#66 <- `c_1*`, c_2#44 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#52*{c#52 <- `c*#14`})*{`c*#14` <- `c**`} - -- let{`c_1*` : lane_*} c_1#43*{c_1#43 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#29*{c_2#29 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#51*{c#51 <- `c*#13`}*{`c*#13` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#109))*{iter_0#109 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#44)))), !($proj_num__1(!($proj_lane__0(c_2#30)))))}*{c_1#44 <- `c_1*`, c_2#30 <- `c_2*`}) + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#40*{c#40 <- `c*#14`})*{`c*#14` <- `c**`} + -- let{`c_1*` : lane_*} c_1#67*{c_1#67 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#45*{c_2#45 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#39*{c#39 <- `c*#13`}*{`c*#13` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#67))*{iter_0#67 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#68)))), !($proj_num__1(!($proj_lane__0(c_2#46)))))}*{c_1#68 <- `c_1*`, c_2#46 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#53))*{iter#53 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#54))*{iter#54 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#56))*{iter#56 <- iter#55}*{iter#55 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#68))*{iter_0#68 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#69)))), !($proj_num__1(!($proj_lane__0(c_2#47)))))}*{c_1#69 <- `c_1*`, c_2#47 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#57))*{iter#57 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#70)))), !($proj_num__1(!($proj_lane__0(c_2#48)))))}*{c_1#70 <- `c_1*`, c_2#48 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#110))))*{iter_0#110 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#45)))), !($proj_num__1(!($proj_lane__0(c_2#31)))))}*{c_1#45 <- `c_1*`, c_2#31 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#69))))*{iter_0#69 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#71)))), !($proj_num__1(!($proj_lane__0(c_2#49)))))}*{c_1#71 <- `c_1*`, c_2#49 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#54*{c#54 <- `c*#16`})*{`c*#16` <- `c**`} - -- let{`c_1*` : lane_*} c_1#46*{c_1#46 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#32*{c_2#32 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) - -- let{`c**` : lane_**} c#53*{c#53 <- `c*#15`}*{`c*#15` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#111))*{iter_0#111 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#47)))), !($proj_num__1(!($proj_lane__0(c_2#33)))))}*{c_1#47 <- `c_1*`, c_2#33 <- `c_2*`}) + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#42*{c#42 <- `c*#16`})*{`c*#16` <- `c**`} + -- let{`c_1*` : lane_*} c_1#72*{c_1#72 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#50*{c_2#50 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#41*{c#41 <- `c*#15`}*{`c*#15` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#70))*{iter_0#70 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#73)))), !($proj_num__1(!($proj_lane__0(c_2#51)))))}*{c_1#73 <- `c_1*`, c_2#51 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#58))*{iter#58 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#59))*{iter#59 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#61))*{iter#61 <- iter#60}*{iter#60 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#71))*{iter_0#71 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#74)))), !($proj_num__1(!($proj_lane__0(c_2#52)))))}*{c_1#74 <- `c_1*`, c_2#52 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#62))*{iter#62 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#75)))), !($proj_num__1(!($proj_lane__0(c_2#53)))))}*{c_1#75 <- `c_1*`, c_2#53 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#112))))*{iter_0#112 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#48)))), !($proj_num__1(!($proj_lane__0(c_2#34)))))}*{c_1#48 <- `c_1*`, c_2#34 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#72))))*{iter_0#72 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#76)))), !($proj_num__1(!($proj_lane__0(c_2#54)))))}*{c_1#76 <- `c_1*`, c_2#54 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#56*{c#56 <- `c*#18`})*{`c*#18` <- `c**`} - -- let{`c_1*` : lane_*} c_1#49*{c_1#49 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#35*{c_2#35 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#44*{c#44 <- `c*#18`})*{`c*#18` <- `c**`} + -- let{`c_1*` : lane_*} c_1#77*{c_1#77 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#55*{c_2#55 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) -- let{`c_3*` : lane_*} c_3#1*{c_3#1 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#55*{c#55 <- `c*#17`}*{`c*#17` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#113)*{iter_0#113 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#50)), !($proj_lane__2(c_2#36)), !($proj_lane__2(c_3#2)))}*{c_1#50 <- `c_1*`, c_2#36 <- `c_2*`, c_3#2 <- `c_3*`}) + -- let{`c**` : lane_**} c#43*{c#43 <- `c*#17`}*{`c*#17` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#73)*{iter_0#73 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#78)), !($proj_lane__2(c_2#56)), !($proj_lane__2(c_3#2)))}*{c_1#78 <- `c_1*`, c_2#56 <- `c_2*`, c_3#2 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#63))*{iter#63 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#64))*{iter#64 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#65))*{iter#65 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), iter#67))*{iter#67 <- iter#66}*{iter#66 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#74)*{iter_0#74 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#79)), !($proj_lane__2(c_2#57)), !($proj_lane__2(c_3#3)))}*{c_1#79 <- `c_1*`, c_2#57 <- `c_2*`, c_3#3 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#68))*{iter#68 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#80)), !($proj_lane__2(c_2#58)), !($proj_lane__2(c_3#4)))}*{c_1#80 <- `c_1*`, c_2#58 <- `c_2*`, c_3#4 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#114)))*{iter_0#114 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#51)), !($proj_lane__2(c_2#37)), !($proj_lane__2(c_3#3)))}*{c_1#51 <- `c_1*`, c_2#37 <- `c_2*`, c_3#3 <- `c_3*`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#75)))*{iter_0#75 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#81)), !($proj_lane__2(c_2#59)), !($proj_lane__2(c_3#5)))}*{c_1#81 <- `c_1*`, c_2#59 <- `c_2*`, c_3#5 <- `c_3*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#58*{c#58 <- `c*#20`})*{`c*#20` <- `c**`} - -- let{`c_1*` : lane_*} c_1#52*{c_1#52 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#38*{c_2#38 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) - -- let{`c_3*` : lane_*} c_3#4*{c_3#4 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#57*{c#57 <- `c*#19`}*{`c*#19` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#115)*{iter_0#115 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#53)), !($proj_lane__2(c_2#39)), !($proj_lane__2(c_3#5)))}*{c_1#53 <- `c_1*`, c_2#39 <- `c_2*`, c_3#5 <- `c_3*`}) + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#46*{c#46 <- `c*#20`})*{`c*#20` <- `c**`} + -- let{`c_1*` : lane_*} c_1#82*{c_1#82 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#60*{c_2#60 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#6*{c_3#6 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#45*{c#45 <- `c*#19`}*{`c*#19` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#76)*{iter_0#76 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#83)), !($proj_lane__2(c_2#61)), !($proj_lane__2(c_3#7)))}*{c_1#83 <- `c_1*`, c_2#61 <- `c_2*`, c_3#7 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#69))*{iter#69 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#70))*{iter#70 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#71))*{iter#71 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), iter#73))*{iter#73 <- iter#72}*{iter#72 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#77)*{iter_0#77 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#84)), !($proj_lane__2(c_2#62)), !($proj_lane__2(c_3#8)))}*{c_1#84 <- `c_1*`, c_2#62 <- `c_2*`, c_3#8 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#74))*{iter#74 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#85)), !($proj_lane__2(c_2#63)), !($proj_lane__2(c_3#9)))}*{c_1#85 <- `c_1*`, c_2#63 <- `c_2*`, c_3#9 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#116)))*{iter_0#116 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#54)), !($proj_lane__2(c_2#40)), !($proj_lane__2(c_3#6)))}*{c_1#54 <- `c_1*`, c_2#40 <- `c_2*`, c_3#6 <- `c_3*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#60*{c#60 <- `c*#22`})*{`c*#22` <- `c**`} - -- let{`c_1*` : lane_*} c_1#55*{c_1#55 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#41*{c_2#41 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) - -- let{`c_3*` : lane_*} c_3#7*{c_3#7 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#59*{c#59 <- `c*#21`}*{`c*#21` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#117)*{iter_0#117 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#56)), !($proj_lane__2(c_2#42)), !($proj_lane__2(c_3#8)))}*{c_1#56 <- `c_1*`, c_2#42 <- `c_2*`, c_3#8 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#78)))*{iter_0#78 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#86)), !($proj_lane__2(c_2#64)), !($proj_lane__2(c_3#10)))}*{c_1#86 <- `c_1*`, c_2#64 <- `c_2*`, c_3#10 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#48*{c#48 <- `c*#22`})*{`c*#22` <- `c**`} + -- let{`c_1*` : lane_*} c_1#87*{c_1#87 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#65*{c_2#65 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#11*{c_3#11 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#47*{c#47 <- `c*#21`}*{`c*#21` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#79)*{iter_0#79 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#88)), !($proj_lane__2(c_2#66)), !($proj_lane__2(c_3#12)))}*{c_1#88 <- `c_1*`, c_2#66 <- `c_2*`, c_3#12 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#75))*{iter#75 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#76))*{iter#76 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#77))*{iter#77 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), iter#79))*{iter#79 <- iter#78}*{iter#78 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#80)*{iter_0#80 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#89)), !($proj_lane__2(c_2#67)), !($proj_lane__2(c_3#13)))}*{c_1#89 <- `c_1*`, c_2#67 <- `c_2*`, c_3#13 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#80))*{iter#80 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#90)), !($proj_lane__2(c_2#68)), !($proj_lane__2(c_3#14)))}*{c_1#90 <- `c_1*`, c_2#68 <- `c_2*`, c_3#14 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#118)))*{iter_0#118 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#57)), !($proj_lane__2(c_2#43)), !($proj_lane__2(c_3#9)))}*{c_1#57 <- `c_1*`, c_2#43 <- `c_2*`, c_3#9 <- `c_3*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#62*{c#62 <- `c*#24`})*{`c*#24` <- `c**`} - -- let{`c_1*` : lane_*} c_1#58*{c_1#58 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#44*{c_2#44 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) - -- let{`c_3*` : lane_*} c_3#10*{c_3#10 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#61*{c#61 <- `c*#23`}*{`c*#23` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#119)*{iter_0#119 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#59)), !($proj_lane__2(c_2#45)), !($proj_lane__2(c_3#11)))}*{c_1#59 <- `c_1*`, c_2#45 <- `c_2*`, c_3#11 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#81)))*{iter_0#81 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#91)), !($proj_lane__2(c_2#69)), !($proj_lane__2(c_3#15)))}*{c_1#91 <- `c_1*`, c_2#69 <- `c_2*`, c_3#15 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#50*{c#50 <- `c*#24`})*{`c*#24` <- `c**`} + -- let{`c_1*` : lane_*} c_1#92*{c_1#92 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#70*{c_2#70 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#16*{c_3#16 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#49*{c#49 <- `c*#23`}*{`c*#23` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#82)*{iter_0#82 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#93)), !($proj_lane__2(c_2#71)), !($proj_lane__2(c_3#17)))}*{c_1#93 <- `c_1*`, c_2#71 <- `c_2*`, c_3#17 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#81))*{iter#81 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#82))*{iter#82 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#83))*{iter#83 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), iter#85))*{iter#85 <- iter#84}*{iter#84 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#83)*{iter_0#83 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#94)), !($proj_lane__2(c_2#72)), !($proj_lane__2(c_3#18)))}*{c_1#94 <- `c_1*`, c_2#72 <- `c_2*`, c_3#18 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#86))*{iter#86 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#95)), !($proj_lane__2(c_2#73)), !($proj_lane__2(c_3#19)))}*{c_1#95 <- `c_1*`, c_2#73 <- `c_2*`, c_3#19 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#120)))*{iter_0#120 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#60)), !($proj_lane__2(c_2#46)), !($proj_lane__2(c_3#12)))}*{c_1#60 <- `c_1*`, c_2#46 <- `c_2*`, c_3#12 <- `c_3*`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#84)))*{iter_0#84 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#96)), !($proj_lane__2(c_2#74)), !($proj_lane__2(c_3#20)))}*{c_1#96 <- `c_1*`, c_2#74 <- `c_2*`, c_3#20 <- `c_3*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#64*{c#64 <- `c*#26`})*{`c*#26` <- `c**`} - -- let{`c_1*` : lane_*} c_1#61*{c_1#61 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#47*{c_2#47 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) - -- let{`c_3*` : lane_*} c_3#13*{c_3#13 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#63*{c#63 <- `c*#25`}*{`c*#25` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#121))*{iter_0#121 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#62)))), !($proj_num__1(!($proj_lane__0(c_2#48)))), !($proj_num__1(!($proj_lane__0(c_3#14)))))}*{c_1#62 <- `c_1*`, c_2#48 <- `c_2*`, c_3#14 <- `c_3*`}) + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#52*{c#52 <- `c*#26`})*{`c*#26` <- `c**`} + -- let{`c_1*` : lane_*} c_1#97*{c_1#97 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#75*{c_2#75 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#21*{c_3#21 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#51*{c#51 <- `c*#25`}*{`c*#25` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#85))*{iter_0#85 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#98)))), !($proj_num__1(!($proj_lane__0(c_2#76)))), !($proj_num__1(!($proj_lane__0(c_3#22)))))}*{c_1#98 <- `c_1*`, c_2#76 <- `c_2*`, c_3#22 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#87))*{iter#87 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#88))*{iter#88 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#89))*{iter#89 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#91))*{iter#91 <- iter#90}*{iter#90 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#86))*{iter_0#86 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#99)))), !($proj_num__1(!($proj_lane__0(c_2#77)))), !($proj_num__1(!($proj_lane__0(c_3#23)))))}*{c_1#99 <- `c_1*`, c_2#77 <- `c_2*`, c_3#23 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#92))*{iter#92 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#100)))), !($proj_num__1(!($proj_lane__0(c_2#78)))), !($proj_num__1(!($proj_lane__0(c_3#24)))))}*{c_1#100 <- `c_1*`, c_2#78 <- `c_2*`, c_3#24 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#122))))*{iter_0#122 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#63)))), !($proj_num__1(!($proj_lane__0(c_2#49)))), !($proj_num__1(!($proj_lane__0(c_3#15)))))}*{c_1#63 <- `c_1*`, c_2#49 <- `c_2*`, c_3#15 <- `c_3*`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#87))))*{iter_0#87 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#101)))), !($proj_num__1(!($proj_lane__0(c_2#79)))), !($proj_num__1(!($proj_lane__0(c_3#25)))))}*{c_1#101 <- `c_1*`, c_2#79 <- `c_2*`, c_3#25 <- `c_3*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#66*{c#66 <- `c*#28`})*{`c*#28` <- `c**`} - -- let{`c_1*` : lane_*} c_1#64*{c_1#64 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#50*{c_2#50 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) - -- let{`c_3*` : lane_*} c_3#16*{c_3#16 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3) - -- let{`c**` : lane_**} c#65*{c#65 <- `c*#27`}*{`c*#27` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#123))*{iter_0#123 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#65)))), !($proj_num__1(!($proj_lane__0(c_2#51)))), !($proj_num__1(!($proj_lane__0(c_3#17)))))}*{c_1#65 <- `c_1*`, c_2#51 <- `c_2*`, c_3#17 <- `c_3*`}) + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#54*{c#54 <- `c*#28`})*{`c*#28` <- `c**`} + -- let{`c_1*` : lane_*} c_1#102*{c_1#102 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#80*{c_2#80 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#26*{c_3#26 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#53*{c#53 <- `c*#27`}*{`c*#27` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#88))*{iter_0#88 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#103)))), !($proj_num__1(!($proj_lane__0(c_2#81)))), !($proj_num__1(!($proj_lane__0(c_3#27)))))}*{c_1#103 <- `c_1*`, c_2#81 <- `c_2*`, c_3#27 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#93))*{iter#93 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#94))*{iter#94 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#95))*{iter#95 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#97))*{iter#97 <- iter#96}*{iter#96 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#89))*{iter_0#89 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#104)))), !($proj_num__1(!($proj_lane__0(c_2#82)))), !($proj_num__1(!($proj_lane__0(c_3#28)))))}*{c_1#104 <- `c_1*`, c_2#82 <- `c_2*`, c_3#28 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#98))*{iter#98 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#105)))), !($proj_num__1(!($proj_lane__0(c_2#83)))), !($proj_num__1(!($proj_lane__0(c_3#29)))))}*{c_1#105 <- `c_1*`, c_2#83 <- `c_2*`, c_3#29 <- `c_3*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#124))))*{iter_0#124 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#66)))), !($proj_num__1(!($proj_lane__0(c_2#52)))), !($proj_num__1(!($proj_lane__0(c_3#18)))))}*{c_1#66 <- `c_1*`, c_2#52 <- `c_2*`, c_3#18 <- `c_3*`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#90))))*{iter_0#90 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#106)))), !($proj_num__1(!($proj_lane__0(c_2#84)))), !($proj_num__1(!($proj_lane__0(c_3#30)))))}*{c_1#106 <- `c_1*`, c_2#84 <- `c_2*`, c_3#30 <- `c_3*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#69)*{c#69 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#67*{c_1#67 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#53*{c_2#53 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#67*{c#67 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#68)), !($proj_lane__2(c_2#54)))).0))*{c_1#68 <- `c_1*`, c_2#54 <- `c_2*`} + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#56)*{c#56 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#107*{c_1#107 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#85*{c_2#85 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#55*{c#55 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#108)), !($proj_lane__2(c_2#86)))).0))*{c_1#108 <- `c_1*`, c_2#86 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#99))*{iter#99 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#100))*{iter#100 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#109)), !($proj_lane__2(c_2#87)))).0))))*{c_1#109 <- `c_1*`, c_2#87 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#68)))*{c#68 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#69)), !($proj_lane__2(c_2#55)))).0)))*{c_1#69 <- `c_1*`, c_2#55 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#72)*{c#72 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#70*{c_1#70 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#56*{c_2#56 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#70*{c#70 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#71)), !($proj_lane__2(c_2#57)))).0))*{c_1#71 <- `c_1*`, c_2#57 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#110)), !($proj_lane__2(c_2#88)))).0)))*{c_1#110 <- `c_1*`, c_2#88 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#58)*{c#58 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#111*{c_1#111 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#89*{c_2#89 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#57*{c#57 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#112)), !($proj_lane__2(c_2#90)))).0))*{c_1#112 <- `c_1*`, c_2#90 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#101))*{iter#101 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#102))*{iter#102 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#113)), !($proj_lane__2(c_2#91)))).0))))*{c_1#113 <- `c_1*`, c_2#91 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#71)))*{c#71 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#72)), !($proj_lane__2(c_2#58)))).0)))*{c_1#72 <- `c_1*`, c_2#58 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#75)*{c#75 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#73*{c_1#73 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#59*{c_2#59 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#73*{c#73 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#74)), !($proj_lane__2(c_2#60)))).0))*{c_1#74 <- `c_1*`, c_2#60 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#114)), !($proj_lane__2(c_2#92)))).0)))*{c_1#114 <- `c_1*`, c_2#92 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#60)*{c#60 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#115*{c_1#115 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#93*{c_2#93 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#59*{c#59 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#116)), !($proj_lane__2(c_2#94)))).0))*{c_1#116 <- `c_1*`, c_2#94 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#103))*{iter#103 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#104))*{iter#104 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#117)), !($proj_lane__2(c_2#95)))).0))))*{c_1#117 <- `c_1*`, c_2#95 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#74)))*{c#74 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#75)), !($proj_lane__2(c_2#61)))).0)))*{c_1#75 <- `c_1*`, c_2#61 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#118)), !($proj_lane__2(c_2#96)))).0)))*{c_1#118 <- `c_1*`, c_2#96 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#78)*{c#78 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#76*{c_1#76 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#62*{c_2#62 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#76*{c#76 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#77)), !($proj_lane__2(c_2#63)))).0))*{c_1#77 <- `c_1*`, c_2#63 <- `c_2*`} + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#62)*{c#62 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#119*{c_1#119 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#97*{c_2#97 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#61*{c#61 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#120)), !($proj_lane__2(c_2#98)))).0))*{c_1#120 <- `c_1*`, c_2#98 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#105))*{iter#105 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#106))*{iter#106 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#121)), !($proj_lane__2(c_2#99)))).0))))*{c_1#121 <- `c_1*`, c_2#99 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#77)))*{c#77 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#78)), !($proj_lane__2(c_2#64)))).0)))*{c_1#78 <- `c_1*`, c_2#64 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#122)), !($proj_lane__2(c_2#100)))).0)))*{c_1#122 <- `c_1*`, c_2#100 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#81)*{c#81 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#79*{c_1#79 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#65*{c_2#65 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#79*{c#79 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#80)), !($proj_lane__2(c_2#66)))).0))*{c_1#80 <- `c_1*`, c_2#66 <- `c_2*`} + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#64)*{c#64 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#123*{c_1#123 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#101*{c_2#101 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#63*{c#63 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#124)), !($proj_lane__2(c_2#102)))).0))*{c_1#124 <- `c_1*`, c_2#102 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#107))*{iter#107 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#108))*{iter#108 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#125)), !($proj_lane__2(c_2#103)))).0))))*{c_1#125 <- `c_1*`, c_2#103 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#80)))*{c#80 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#81)), !($proj_lane__2(c_2#67)))).0)))*{c_1#81 <- `c_1*`, c_2#67 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#126)), !($proj_lane__2(c_2#104)))).0)))*{c_1#126 <- `c_1*`, c_2#104 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#84)*{c#84 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#82*{c_1#82 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#68*{c_2#68 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#82*{c#82 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#83)), !($proj_lane__2(c_2#69)))).0))*{c_1#83 <- `c_1*`, c_2#69 <- `c_2*`} + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#66)*{c#66 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#127*{c_1#127 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#105*{c_2#105 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#65*{c#65 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#128)), !($proj_lane__2(c_2#106)))).0))*{c_1#128 <- `c_1*`, c_2#106 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#109))*{iter#109 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#110))*{iter#110 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#129)), !($proj_lane__2(c_2#107)))).0))))*{c_1#129 <- `c_1*`, c_2#107 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#83)))*{c#83 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#84)), !($proj_lane__2(c_2#70)))).0)))*{c_1#84 <- `c_1*`, c_2#70 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#87)*{c#87 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#85*{c_1#85 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#71*{c_2#71 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#85*{c#85 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#86)), !($proj_lane__2(c_2#72)))).0))*{c_1#86 <- `c_1*`, c_2#72 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#130)), !($proj_lane__2(c_2#108)))).0)))*{c_1#130 <- `c_1*`, c_2#108 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#68)*{c#68 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#131*{c_1#131 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#109*{c_2#109 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#67*{c#67 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#132)), !($proj_lane__2(c_2#110)))).0))*{c_1#132 <- `c_1*`, c_2#110 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#111))*{iter#111 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#112))*{iter#112 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#133)), !($proj_lane__2(c_2#111)))).0))))*{c_1#133 <- `c_1*`, c_2#111 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#86)))*{c#86 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#87)), !($proj_lane__2(c_2#73)))).0)))*{c_1#87 <- `c_1*`, c_2#73 <- `c_2*`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#90)*{c#90 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#88*{c_1#88 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#74*{c_2#74 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#88*{c#88 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#89)), !($proj_lane__2(c_2#75)))).0))*{c_1#89 <- `c_1*`, c_2#75 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#134)), !($proj_lane__2(c_2#112)))).0)))*{c_1#134 <- `c_1*`, c_2#112 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#70)*{c#70 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#135*{c_1#135 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#113*{c_2#113 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#69*{c#69 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#136)), !($proj_lane__2(c_2#114)))).0))*{c_1#136 <- `c_1*`, c_2#114 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#113))*{iter#113 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#114))*{iter#114 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#137)), !($proj_lane__2(c_2#115)))).0))))*{c_1#137 <- `c_1*`, c_2#115 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#89)))*{c#89 <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#90)), !($proj_lane__2(c_2#76)))).0)))*{c_1#90 <- `c_1*`, c_2#76 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#138)), !($proj_lane__2(c_2#116)))).0)))*{c_1#138 <- `c_1*`, c_2#116 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#93).0)))*{c#93 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#91*{c_1#91 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#77*{c_2#77 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#91*{c#91 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#92)))), !($proj_num__1(!($proj_lane__0(c_2#78)))))).0))*{c_1#92 <- `c_1*`, c_2#78 <- `c_2*`} + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#72).0)))*{c#72 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#139*{c_1#139 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#117*{c_2#117 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#71*{c#71 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#140)))), !($proj_num__1(!($proj_lane__0(c_2#118)))))).0))*{c_1#140 <- `c_1*`, c_2#118 <- `c_2*`} -- if ($isize(Inn) = $fsize(F32_Fnn)) - -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#92).0)))))*{c#92 <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#115))*{iter#115 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#116))*{iter#116 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size($numtype_Fnn(F32_Fnn)), $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#141)))), !($proj_num__1(!($proj_lane__0(c_2#119)))))).0))))*{c_1#141 <- `c_1*`, c_2#119 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#93)))), !($proj_num__1(!($proj_lane__0(c_2#79)))))).0)))*{c_1#93 <- `c_1*`, c_2#79 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#142)))), !($proj_num__1(!($proj_lane__0(c_2#120)))))).0)))*{c_1#142 <- `c_1*`, c_2#120 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#96).0)))*{c#96 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#94*{c_1#94 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#80*{c_2#80 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#94*{c#94 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#95)))), !($proj_num__1(!($proj_lane__0(c_2#81)))))).0))*{c_1#95 <- `c_1*`, c_2#81 <- `c_2*`} + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#74).0)))*{c#74 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#143*{c_1#143 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#121*{c_2#121 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#73*{c#73 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#144)))), !($proj_num__1(!($proj_lane__0(c_2#122)))))).0))*{c_1#144 <- `c_1*`, c_2#122 <- `c_2*`} -- if ($isize(Inn) = $fsize(F64_Fnn)) - -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#95).0)))))*{c#95 <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#117))*{iter#117 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#118))*{iter#118 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size($numtype_Fnn(F64_Fnn)), $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#145)))), !($proj_num__1(!($proj_lane__0(c_2#123)))))).0))))*{c_1#145 <- `c_1*`, c_2#123 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#96)))), !($proj_num__1(!($proj_lane__0(c_2#82)))))).0)))*{c_1#96 <- `c_1*`, c_2#82 <- `c_2*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#146)))), !($proj_num__1(!($proj_lane__0(c_2#124)))))).0)))*{c_1#146 <- `c_1*`, c_2#124 <- `c_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#99)*{c#99 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#97*{c_1#97 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#97*{c#97 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#98)), i)*{c_1#98 <- `c_1*`} + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#76)*{c#76 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#147*{c_1#147 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#75*{c#75 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#148)), i)*{c_1#148 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#119))*{iter#119 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#149)), i)))*{c_1#149 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#98)))*{c#98 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#102)*{c#102 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#99*{c_1#99 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#100*{c#100 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#100)), i)*{c_1#100 <- `c_1*`} + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#78)*{c#78 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#150*{c_1#150 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#77*{c#77 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#151)), i)*{c_1#151 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#120))*{iter#120 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#152)), i)))*{c_1#152 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#101)))*{c#101 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#105)*{c#105 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#101*{c_1#101 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#103*{c#103 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#102)), i)*{c_1#102 <- `c_1*`} + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#80)*{c#80 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#153*{c_1#153 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#79*{c#79 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#154)), i)*{c_1#154 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#121))*{iter#121 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#155)), i)))*{c_1#155 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#104)))*{c#104 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#108)*{c#108 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#103*{c_1#103 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#106*{c#106 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#104)), i)*{c_1#104 <- `c_1*`} + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#82)*{c#82 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#156*{c_1#156 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#81*{c#81 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#157)), i)*{c_1#157 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#122))*{iter#122 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#158)), i)))*{c_1#158 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#107)))*{c#107 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#111)*{c#111 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#105*{c_1#105 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#109*{c#109 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#106)), i)*{c_1#106 <- `c_1*`} + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#84)*{c#84 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#159*{c_1#159 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#83*{c#83 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#160)), i)*{c_1#160 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#123))*{iter#123 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#161)), i)))*{c_1#161 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#110)))*{c#110 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#114)*{c#114 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#107*{c_1#107 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#112*{c#112 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#108)), i)*{c_1#108 <- `c_1*`} + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#86)*{c#86 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#162*{c_1#162 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#85*{c#85 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#163)), i)*{c_1#163 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#124))*{iter#124 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#164)), i)))*{c_1#164 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#113)))*{c#113 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#117)*{c#117 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#109*{c_1#109 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#115*{c#115 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#110)), i)*{c_1#110 <- `c_1*`} + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#88)*{c#88 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#165*{c_1#165 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#87*{c#87 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#166)), i)*{c_1#166 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#125))*{iter#125 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#167)), i)))*{c_1#167 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#116)))*{c#116 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#120)*{c#120 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#111*{c_1#111 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c*` : iN*} c#118*{c#118 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#112)), i)*{c_1#112 <- `c_1*`} + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#90)*{c#90 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#168*{c_1#168 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#89*{c#89 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#169)), i)*{c_1#169 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#126))*{iter#126 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#170)), i)))*{c_1#170 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#119)))*{c#119 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- let{`c_1*` : lane_*} c_1#113*{c_1#113 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#114)), `%`_iN(0))).0)*{c_1#114 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- let{`c_1*` : lane_*} c_1#171*{c_1#171 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#172)), `%`_iN(0))).0)*{c_1#172 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#127))*{iter#127 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#128))*{iter#128 <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#115)), `%`_iN(0))).0)))*{c_1#115 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#173)), `%`_iN(0))).0)))*{c_1#173 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- let{`c_1*` : lane_*} c_1#116*{c_1#116 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#117)), `%`_iN(0))).0)*{c_1#117 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- let{`c_1*` : lane_*} c_1#174*{c_1#174 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#175)), `%`_iN(0))).0)*{c_1#175 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#129))*{iter#129 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#130))*{iter#130 <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#118)), `%`_iN(0))).0)))*{c_1#118 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#176)), `%`_iN(0))).0)))*{c_1#176 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- let{`c_1*` : lane_*} c_1#119*{c_1#119 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#120)), `%`_iN(0))).0)*{c_1#120 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- let{`c_1*` : lane_*} c_1#177*{c_1#177 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#178)), `%`_iN(0))).0)*{c_1#178 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#131))*{iter#131 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#132))*{iter#132 <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#121)), `%`_iN(0))).0)))*{c_1#121 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#179)), `%`_iN(0))).0)))*{c_1#179 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) - -- let{`c_1*` : lane_*} c_1#122*{c_1#122 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#123)), `%`_iN(0))).0)*{c_1#123 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) + -- let{`c_1*` : lane_*} c_1#180*{c_1#180 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#181)), `%`_iN(0))).0)*{c_1#181 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#133))*{iter#133 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#134))*{iter#134 <- $ibits_(32, c)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#124)), `%`_iN(0))).0)))*{c_1#124 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#182)), `%`_iN(0))).0)))*{c_1#182 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#123)*{c#123 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#125*{c_1#125 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#83*{c_2#83 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#121*{c#121 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#126))*{c_1#126 <- `c_1*`}, !($proj_lane__2(c_2#84)))*{c_2#84 <- `c_2*`} + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#92)*{c#92 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#183*{c_1#183 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#125*{c_2#125 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#91*{c#91 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#184))*{c_1#184 <- `c_1*`}, !($proj_lane__2(c_2#126)))*{c_2#126 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#135))*{iter#135 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#136))*{iter#136 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#185))*{c_1#185 <- `c_1*`}, !($proj_lane__2(c_2#127)))))*{c_2#127 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c#122)))*{c#122 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#126)*{c#126 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#127*{c_1#127 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#85*{c_2#85 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#124*{c#124 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#128))*{c_1#128 <- `c_1*`}, !($proj_lane__2(c_2#86)))*{c_2#86 <- `c_2*`} + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#94)*{c#94 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#186*{c_1#186 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#128*{c_2#128 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#93*{c#93 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#187))*{c_1#187 <- `c_1*`}, !($proj_lane__2(c_2#129)))*{c_2#129 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#137))*{iter#137 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#138))*{iter#138 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#188))*{c_1#188 <- `c_1*`}, !($proj_lane__2(c_2#130)))))*{c_2#130 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c#125)))*{c#125 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#129)*{c#129 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#129*{c_1#129 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#87*{c_2#87 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#127*{c#127 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#130))*{c_1#130 <- `c_1*`}, !($proj_lane__2(c_2#88)))*{c_2#88 <- `c_2*`} + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#96)*{c#96 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#189*{c_1#189 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#131*{c_2#131 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#95*{c#95 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#190))*{c_1#190 <- `c_1*`}, !($proj_lane__2(c_2#132)))*{c_2#132 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#139))*{iter#139 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#140))*{iter#140 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#191))*{c_1#191 <- `c_1*`}, !($proj_lane__2(c_2#133)))))*{c_2#133 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c#128)))*{c#128 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#132)*{c#132 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#131*{c_1#131 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#89*{c_2#89 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : iN*} c#130*{c#130 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#132))*{c_1#132 <- `c_1*`}, !($proj_lane__2(c_2#90)))*{c_2#90 <- `c_2*`} + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#98)*{c#98 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#192*{c_1#192 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#134*{c_2#134 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#97*{c#97 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#193))*{c_1#193 <- `c_1*`}, !($proj_lane__2(c_2#135)))*{c_2#135 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#141))*{iter#141 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#142))*{iter#142 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#194))*{c_1#194 <- `c_1*`}, !($proj_lane__2(c_2#136)))))*{c_2#136 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c#131)))*{c#131 <- `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), i#138497*{i#138497 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#134*{c#134 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#133*{c_1#133 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#91*{c_2#91 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : lane_*} c#133*{c#133 <- `c*`} = c_1#134*{c_1#134 <- `c_1*`} ++ c_2#92*{c_2#92 <- `c_2*`}[$proj_uN_0(i#138500).0]*{i#138500 <- `i*`} + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), i#138592*{i#138592 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#100*{c#100 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#195*{c_1#195 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#137*{c_2#137 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#99*{c#99 <- `c*`} = c_1#196*{c_1#196 <- `c_1*`} ++ c_2#138*{c_2#138 <- `c_2*`}[$proj_uN_0(i#138595).0]*{i#138595 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#143))*{iter#143 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#144))*{iter#144 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i#138504*{i#138504 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#136*{c#136 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#135*{c_1#135 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#93*{c_2#93 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : lane_*} c#135*{c#135 <- `c*`} = c_1#136*{c_1#136 <- `c_1*`} ++ c_2#94*{c_2#94 <- `c_2*`}[$proj_uN_0(i#138507).0]*{i#138507 <- `i*`} + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i#138603*{i#138603 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#102*{c#102 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#197*{c_1#197 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#139*{c_2#139 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#101*{c#101 <- `c*`} = c_1#198*{c_1#198 <- `c_1*`} ++ c_2#140*{c_2#140 <- `c_2*`}[$proj_uN_0(i#138606).0]*{i#138606 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#145))*{iter#145 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#146))*{iter#146 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i#138511*{i#138511 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#138*{c#138 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#137*{c_1#137 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#95*{c_2#95 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : lane_*} c#137*{c#137 <- `c*`} = c_1#138*{c_1#138 <- `c_1*`} ++ c_2#96*{c_2#96 <- `c_2*`}[$proj_uN_0(i#138514).0]*{i#138514 <- `i*`} + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i#138614*{i#138614 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#104*{c#104 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#199*{c_1#199 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#141*{c_2#141 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#103*{c#103 <- `c*`} = c_1#200*{c_1#200 <- `c_1*`} ++ c_2#142*{c_2#142 <- `c_2*`}[$proj_uN_0(i#138617).0]*{i#138617 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#147))*{iter#147 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#148))*{iter#148 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i#138518*{i#138518 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#140*{c#140 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#139*{c_1#139 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) - -- let{`c_2*` : lane_*} c_2#97*{c_2#97 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) - -- let{`c*` : lane_*} c#139*{c#139 <- `c*`} = c_1#140*{c_1#140 <- `c_1*`} ++ c_2#98*{c_2#98 <- `c_2*`}[$proj_uN_0(i#138521).0]*{i#138521 <- `i*`} + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i#138625*{i#138625 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#106*{c#106 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#201*{c_1#201 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#143*{c_2#143 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#105*{c#105 <- `c*`} = c_1#202*{c_1#202 <- `c_1*`} ++ c_2#144*{c_2#144 <- `c_2*`}[$proj_uN_0(i#138628).0]*{i#138628 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#149))*{iter#149 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#150))*{iter#150 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -9540,722 +10383,614 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3021?{half#3021 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3022?{half#3022 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3023?{half#3023 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3024?{half#3024 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3025?{half#3025 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3026?{half#3026 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3027?{half#3027 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3028?{half#3028 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) - -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3489?{zero#3489 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#143))?{c#143 <- `c?`}) - -- let{`c?` : iN?} c#141?{c#141 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#142))))?{c#142 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3489?{zero#3489 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#108))?{c#108 <- `c?`}) + -- let{`c?` : iN?} c#107?{c#107 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#151))?{iter#151 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3490?{zero#3490 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#146))?{c#146 <- `c?`}) - -- let{`c?` : iN?} c#144?{c#144 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#145))))?{c#145 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3490?{zero#3490 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#110))?{c#110 <- `c?`}) + -- let{`c?` : iN?} c#109?{c#109 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#152))?{iter#152 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3491?{zero#3491 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#149))?{c#149 <- `c?`}) - -- let{`c?` : iN?} c#147?{c#147 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#148))))?{c#148 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3491?{zero#3491 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#112))?{c#112 <- `c?`}) + -- let{`c?` : iN?} c#111?{c#111 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#153))?{iter#153 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3492?{zero#3492 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#152))?{c#152 <- `c?`}) - -- let{`c?` : iN?} c#150?{c#150 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#151))))?{c#151 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3492?{zero#3492 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#114))?{c#114 <- `c?`}) + -- let{`c?` : iN?} c#113?{c#113 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#154))?{iter#154 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3493?{zero#3493 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#155))?{c#155 <- `c?`}) - -- let{`c?` : iN?} c#153?{c#153 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#154))))?{c#154 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3493?{zero#3493 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#116))?{c#116 <- `c?`}) + -- let{`c?` : iN?} c#115?{c#115 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#155))?{iter#155 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3494?{zero#3494 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#158))?{c#158 <- `c?`}) - -- let{`c?` : iN?} c#156?{c#156 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#157))))?{c#157 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3494?{zero#3494 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#118))?{c#118 <- `c?`}) + -- let{`c?` : iN?} c#117?{c#117 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#156))?{iter#156 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3495?{zero#3495 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#161))?{c#161 <- `c?`}) - -- let{`c?` : iN?} c#159?{c#159 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#160))))?{c#160 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3495?{zero#3495 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#120))?{c#120 <- `c?`}) + -- let{`c?` : iN?} c#119?{c#119 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#157))?{iter#157 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3496?{zero#3496 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#164))?{c#164 <- `c?`}) - -- let{`c?` : iN?} c#162?{c#162 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#163))))?{c#163 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3496?{zero#3496 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#122))?{c#122 <- `c?`}) + -- let{`c?` : iN?} c#121?{c#121 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#158))?{iter#158 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3497?{zero#3497 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#167))?{c#167 <- `c?`}) - -- let{`c?` : iN?} c#165?{c#165 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#166))))?{c#166 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3497?{zero#3497 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#124))?{c#124 <- `c?`}) + -- let{`c?` : iN?} c#123?{c#123 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#159))?{iter#159 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3498?{zero#3498 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#170))?{c#170 <- `c?`}) - -- let{`c?` : iN?} c#168?{c#168 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#169))))?{c#169 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3498?{zero#3498 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#126))?{c#126 <- `c?`}) + -- let{`c?` : iN?} c#125?{c#125 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#160))?{iter#160 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3499?{zero#3499 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#173))?{c#173 <- `c?`}) - -- let{`c?` : iN?} c#171?{c#171 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#172))))?{c#172 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3499?{zero#3499 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#128))?{c#128 <- `c?`}) + -- let{`c?` : iN?} c#127?{c#127 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#161))?{iter#161 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3500?{zero#3500 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#176))?{c#176 <- `c?`}) - -- let{`c?` : iN?} c#174?{c#174 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#175))))?{c#175 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3500?{zero#3500 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#130))?{c#130 <- `c?`}) + -- let{`c?` : iN?} c#129?{c#129 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#162))?{iter#162 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3501?{zero#3501 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#179))?{c#179 <- `c?`}) - -- let{`c?` : iN?} c#177?{c#177 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#178))))?{c#178 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3501?{zero#3501 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#132))?{c#132 <- `c?`}) + -- let{`c?` : iN?} c#131?{c#131 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#163))?{iter#163 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3502?{zero#3502 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#182))?{c#182 <- `c?`}) - -- let{`c?` : iN?} c#180?{c#180 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#181))))?{c#181 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3502?{zero#3502 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#134))?{c#134 <- `c?`}) + -- let{`c?` : iN?} c#133?{c#133 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#164))?{iter#164 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3503?{zero#3503 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#185))?{c#185 <- `c?`}) - -- let{`c?` : iN?} c#183?{c#183 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#184))))?{c#184 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3503?{zero#3503 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#136))?{c#136 <- `c?`}) + -- let{`c?` : iN?} c#135?{c#135 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#165))?{iter#165 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3504?{zero#3504 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#188))?{c#188 <- `c?`}) - -- let{`c?` : iN?} c#186?{c#186 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#187))))?{c#187 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3504?{zero#3504 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#138))?{c#138 <- `c?`}) + -- let{`c?` : iN?} c#137?{c#137 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#166))?{iter#166 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3505?{zero#3505 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#191))?{c#191 <- `c?`}) - -- let{`c?` : iN?} c#189?{c#189 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#190))))?{c#190 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3505?{zero#3505 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#140))?{c#140 <- `c?`}) + -- let{`c?` : iN?} c#139?{c#139 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#167))?{iter#167 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3506?{zero#3506 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#194))?{c#194 <- `c?`}) - -- let{`c?` : iN?} c#192?{c#192 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#193))))?{c#193 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3506?{zero#3506 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#142))?{c#142 <- `c?`}) + -- let{`c?` : iN?} c#141?{c#141 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#168))?{iter#168 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3507?{zero#3507 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#197))?{c#197 <- `c?`}) - -- let{`c?` : iN?} c#195?{c#195 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#196))))?{c#196 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3507?{zero#3507 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#144))?{c#144 <- `c?`}) + -- let{`c?` : iN?} c#143?{c#143 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#169))?{iter#169 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3508?{zero#3508 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#200))?{c#200 <- `c?`}) - -- let{`c?` : iN?} c#198?{c#198 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#199))))?{c#199 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3508?{zero#3508 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#146))?{c#146 <- `c?`}) + -- let{`c?` : iN?} c#145?{c#145 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#170))?{iter#170 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3509?{zero#3509 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#203))?{c#203 <- `c?`}) - -- let{`c?` : iN?} c#201?{c#201 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#202))))?{c#202 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3509?{zero#3509 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#148))?{c#148 <- `c?`}) + -- let{`c?` : iN?} c#147?{c#147 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#171))?{iter#171 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3510?{zero#3510 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#206))?{c#206 <- `c?`}) - -- let{`c?` : iN?} c#204?{c#204 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#205))))?{c#205 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3510?{zero#3510 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#150))?{c#150 <- `c?`}) + -- let{`c?` : iN?} c#149?{c#149 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#172))?{iter#172 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3511?{zero#3511 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#209))?{c#209 <- `c?`}) - -- let{`c?` : iN?} c#207?{c#207 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#208))))?{c#208 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3511?{zero#3511 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#152))?{c#152 <- `c?`}) + -- let{`c?` : iN?} c#151?{c#151 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#173))?{iter#173 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3512?{zero#3512 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#212))?{c#212 <- `c?`}) - -- let{`c?` : iN?} c#210?{c#210 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#211))))?{c#211 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3512?{zero#3512 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#154))?{c#154 <- `c?`}) + -- let{`c?` : iN?} c#153?{c#153 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#174))?{iter#174 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3513?{zero#3513 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#215))?{c#215 <- `c?`}) - -- let{`c?` : iN?} c#213?{c#213 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#214))))?{c#214 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3513?{zero#3513 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#156))?{c#156 <- `c?`}) + -- let{`c?` : iN?} c#155?{c#155 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#175))?{iter#175 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3514?{zero#3514 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#218))?{c#218 <- `c?`}) - -- let{`c?` : iN?} c#216?{c#216 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#217))))?{c#217 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3514?{zero#3514 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#158))?{c#158 <- `c?`}) + -- let{`c?` : iN?} c#157?{c#157 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#176))?{iter#176 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3515?{zero#3515 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#221))?{c#221 <- `c?`}) - -- let{`c?` : iN?} c#219?{c#219 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#220))))?{c#220 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3515?{zero#3515 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#160))?{c#160 <- `c?`}) + -- let{`c?` : iN?} c#159?{c#159 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#177))?{iter#177 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3516?{zero#3516 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#224))?{c#224 <- `c?`}) - -- let{`c?` : iN?} c#222?{c#222 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#223))))?{c#223 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3516?{zero#3516 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#162))?{c#162 <- `c?`}) + -- let{`c?` : iN?} c#161?{c#161 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#178))?{iter#178 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3517?{zero#3517 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#227))?{c#227 <- `c?`}) - -- let{`c?` : iN?} c#225?{c#225 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#226))))?{c#226 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3517?{zero#3517 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#164))?{c#164 <- `c?`}) + -- let{`c?` : iN?} c#163?{c#163 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#179))?{iter#179 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3518?{zero#3518 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#230))?{c#230 <- `c?`}) - -- let{`c?` : iN?} c#228?{c#228 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#229))))?{c#229 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3518?{zero#3518 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#166))?{c#166 <- `c?`}) + -- let{`c?` : iN?} c#165?{c#165 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#180))?{iter#180 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3519?{zero#3519 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#233))?{c#233 <- `c?`}) - -- let{`c?` : iN?} c#231?{c#231 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#232))))?{c#232 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3519?{zero#3519 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#168))?{c#168 <- `c?`}) + -- let{`c?` : iN?} c#167?{c#167 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#181))?{iter#181 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3520?{zero#3520 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#236))?{c#236 <- `c?`}) - -- let{`c?` : iN?} c#234?{c#234 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#235))))?{c#235 <- `c?`} + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3520?{zero#3520 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#170))?{c#170 <- `c?`}) + -- let{`c?` : iN?} c#169?{c#169 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#182))?{iter#182 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#239))*{c#239 <- `c*`} - -- let{`c*` : fN*} c#237*{c#237 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#238))))*{c#238 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#172))*{c#172 <- `c*`} + -- let{`c*` : fN*} c#171*{c#171 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#183))*{iter#183 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#242))*{c#242 <- `c*`} - -- let{`c*` : fN*} c#240*{c#240 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#241))))*{c#241 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#174))*{c#174 <- `c*`} + -- let{`c*` : fN*} c#173*{c#173 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#184))*{iter#184 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#245))*{c#245 <- `c*`} - -- let{`c*` : fN*} c#243*{c#243 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#244))))*{c#244 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#176))*{c#176 <- `c*`} + -- let{`c*` : fN*} c#175*{c#175 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#185))*{iter#185 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#248))*{c#248 <- `c*`} - -- let{`c*` : fN*} c#246*{c#246 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#247))))*{c#247 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#178))*{c#178 <- `c*`} + -- let{`c*` : fN*} c#177*{c#177 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#186))*{iter#186 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#251))*{c#251 <- `c*`} - -- let{`c*` : fN*} c#249*{c#249 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#250))))*{c#250 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#180))*{c#180 <- `c*`} + -- let{`c*` : fN*} c#179*{c#179 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#187))*{iter#187 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#254))*{c#254 <- `c*`} - -- let{`c*` : fN*} c#252*{c#252 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#253))))*{c#253 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#182))*{c#182 <- `c*`} + -- let{`c*` : fN*} c#181*{c#181 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#188))*{iter#188 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#257))*{c#257 <- `c*`} - -- let{`c*` : fN*} c#255*{c#255 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#256))))*{c#256 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#184))*{c#184 <- `c*`} + -- let{`c*` : fN*} c#183*{c#183 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#189))*{iter#189 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#260))*{c#260 <- `c*`} - -- let{`c*` : fN*} c#258*{c#258 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#259))))*{c#259 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#186))*{c#186 <- `c*`} + -- let{`c*` : fN*} c#185*{c#185 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#190))*{iter#190 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#263))*{c#263 <- `c*`} - -- let{`c*` : fN*} c#261*{c#261 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#262))))*{c#262 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#188))*{c#188 <- `c*`} + -- let{`c*` : fN*} c#187*{c#187 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#191))*{iter#191 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#266))*{c#266 <- `c*`} - -- let{`c*` : fN*} c#264*{c#264 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#265))))*{c#265 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#190))*{c#190 <- `c*`} + -- let{`c*` : fN*} c#189*{c#189 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#192))*{iter#192 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#269))*{c#269 <- `c*`} - -- let{`c*` : fN*} c#267*{c#267 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#268))))*{c#268 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#192))*{c#192 <- `c*`} + -- let{`c*` : fN*} c#191*{c#191 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#193))*{iter#193 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#272))*{c#272 <- `c*`} - -- let{`c*` : fN*} c#270*{c#270 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#271))))*{c#271 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#194))*{c#194 <- `c*`} + -- let{`c*` : fN*} c#193*{c#193 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#194))*{iter#194 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#275))*{c#275 <- `c*`} - -- let{`c*` : fN*} c#273*{c#273 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#274))))*{c#274 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#196))*{c#196 <- `c*`} + -- let{`c*` : fN*} c#195*{c#195 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#195))*{iter#195 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#278))*{c#278 <- `c*`} - -- let{`c*` : fN*} c#276*{c#276 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#277))))*{c#277 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#198))*{c#198 <- `c*`} + -- let{`c*` : fN*} c#197*{c#197 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#196))*{iter#196 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#281))*{c#281 <- `c*`} - -- let{`c*` : fN*} c#279*{c#279 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#280))))*{c#280 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#200))*{c#200 <- `c*`} + -- let{`c*` : fN*} c#199*{c#199 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#197))*{iter#197 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#284))*{c#284 <- `c*`} - -- let{`c*` : fN*} c#282*{c#282 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#283))))*{c#283 <- `c*`} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#202))*{c#202 <- `c*`} + -- let{`c*` : fN*} c#201*{c#201 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#198))*{iter#198 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lcvtop___is_wf: `%%%%%`(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lcvtop___is_wf0{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*}: + `%%%%%`(shape_1, shape_2, vcvtop__, lane_, ret_val) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_1, shape_2, vcvtop__) + -- wf_lane_: `%%`($lanetype(shape_1), lane_) + -- if (ret_val = $lcvtop__(shape_1, shape_2, vcvtop__, lane_)) + -- (wf_lane_: `%%`($lanetype(shape_2), ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- let{`c_1*` : lane_*} c_1#141*{c_1#141 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) - -- let{`c**` : lane_**} c#285*{c#285 <- `c*#29`}*{`c*#29` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#142)*{c_1#142 <- `c_1*`}) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#286*{c#286 <- `c*#30`})*{`c*#30` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- let{`c_1*` : lane_*} c_1#203*{c_1#203 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#203*{c#203 <- `c*#29`}*{`c*#29` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#204)*{c_1#204 <- `c_1*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#204*{c#204 <- `c*#30`})*{`c*#30` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), iter#199))*{iter#199 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#201))*{iter#201 <- iter#200}*{iter#200 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#205)*{c_1#205 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#202))*{iter#202 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#206)}*{c_1#206 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#205*{c#205 <- `c*#31`})))*{`c*#31` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- let{`c_1*` : lane_*} c_1#143*{c_1#143 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] - -- let{`c**` : lane_**} c#287*{c#287 <- `c*#31`}*{`c*#31` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#144)*{c_1#144 <- `c_1*`}) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#288*{c#288 <- `c*#32`})*{`c*#32` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- let{`c_1*` : lane_*} c_1#207*{c_1#207 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] + -- let{`c**` : lane_**} c#206*{c#206 <- `c*#32`}*{`c*#32` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#208)*{c_1#208 <- `c_1*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#207*{c#207 <- `c*#33`})*{`c*#33` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#203))*{iter#203 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#205))*{iter#205 <- iter#204}*{iter#204 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#209)*{c_1#209 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#206))*{iter#206 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#210)}*{c_1#210 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#208*{c#208 <- `c*#34`})))*{`c*#34` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- let{`c_1*` : lane_*} c_1#145*{c_1#145 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) - -- let{`c**` : lane_**} c#289*{c#289 <- `c*#33`}*{`c*#33` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#146)*{c_1#146 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#290*{c#290 <- `c*#34`})*{`c*#34` <- `c**`}) - -- wf_uN: `%%`(128, v) + -- let{`c_1*` : lane_*} c_1#211*{c_1#211 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) + -- let{`c**` : lane_**} c#209*{c#209 <- `c*#35`}*{`c*#35` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#212)*{c_1#212 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#210*{c#210 <- `c*#36`})*{`c*#36` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#207))*{iter#207 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#209))*{iter#209 <- iter#208}*{iter#208 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#213)*{c_1#213 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})} + -- (wf_lane_: `%%`(Lnn_2, iter#210))*{iter#210 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#214)}*{c_1#214 <- `c_1*`} + -- wf_lane_: `%%`(Lnn_2, $zero(Lnn_2)) + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#211*{c#211 <- `c*#37`})))*{`c*#37` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) @@ -10263,918 +10998,821 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#139203*{i#139203 <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#139119*{i#139119 <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#147*{c_1#147 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#99*{c_2#99 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#1*{c'_1#1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#148)))*{c_1#148 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#1*{c'_2#1 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#100)))*{c_2#100 <- `c_2*`} + -- let{`c_1*` : lane_*} c_1#215*{c_1#215 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#145*{c_2#145 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#1*{c'_1#1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#216)))*{c_1#216 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#1*{c'_2#1 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#146)))*{c_2#146 <- `c_2*`} -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#2)*{c'_1#2 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#2)*{c'_2#2 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#211))*{iter#211 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#212))*{iter#212 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#217)))))*{c_1#217 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#147)))))*{c_2#147 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#3)*{c'_1#3 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#3)*{c'_2#3 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#3)))*{c'_1#3 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#3)))*{c'_2#3 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#4)))*{c'_1#4 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#4)))*{c'_2#4 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#149*{c_1#149 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#101*{c_2#101 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#4*{c'_1#4 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#150)))*{c_1#150 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#4*{c'_2#4 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#102)))*{c_2#102 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#5)*{c'_1#5 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#5)*{c'_2#5 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#218*{c_1#218 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#148*{c_2#148 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#5*{c'_1#5 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#219)))*{c_1#219 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#5*{c'_2#5 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#149)))*{c_2#149 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#6)*{c'_1#6 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#6)*{c'_2#6 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#213))*{iter#213 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#214))*{iter#214 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#220)))))*{c_1#220 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#150)))))*{c_2#150 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#7)*{c'_1#7 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#7)*{c'_2#7 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#6)))*{c'_1#6 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#6)))*{c'_2#6 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#8)))*{c'_1#8 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#8)))*{c'_2#8 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#151*{c_1#151 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#103*{c_2#103 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#7*{c'_1#7 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#152)))*{c_1#152 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#7*{c'_2#7 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#104)))*{c_2#104 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#8)*{c'_1#8 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#8)*{c'_2#8 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#221*{c_1#221 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#151*{c_2#151 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#9*{c'_1#9 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#222)))*{c_1#222 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#9*{c'_2#9 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#152)))*{c_2#152 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#10)*{c'_1#10 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#10)*{c'_2#10 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#215))*{iter#215 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#216))*{iter#216 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#223)))))*{c_1#223 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#153)))))*{c_2#153 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#11)*{c'_1#11 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#11)*{c'_2#11 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#9)))*{c'_1#9 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#9)))*{c'_2#9 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#12)))*{c'_1#12 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#12)))*{c'_2#12 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#153*{c_1#153 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#105*{c_2#105 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#10*{c'_1#10 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#154)))*{c_1#154 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#10*{c'_2#10 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#106)))*{c_2#106 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#11)*{c'_1#11 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#11)*{c'_2#11 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#224*{c_1#224 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#154*{c_2#154 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#13*{c'_1#13 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#225)))*{c_1#225 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#13*{c'_2#13 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#155)))*{c_2#155 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#14)*{c'_1#14 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#14)*{c'_2#14 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#217))*{iter#217 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#218))*{iter#218 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#226)))))*{c_1#226 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#156)))))*{c_2#156 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#15)*{c'_1#15 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#15)*{c'_2#15 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#12)))*{c'_1#12 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#12)))*{c'_2#12 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#16)))*{c'_1#16 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#16)))*{c'_2#16 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#155*{c_1#155 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#107*{c_2#107 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#13*{c'_1#13 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#156)))*{c_1#156 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#13*{c'_2#13 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#108)))*{c_2#108 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#14)*{c'_1#14 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#14)*{c'_2#14 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#227*{c_1#227 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#157*{c_2#157 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#17*{c'_1#17 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#228)))*{c_1#228 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#17*{c'_2#17 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#158)))*{c_2#158 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#18)*{c'_1#18 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#18)*{c'_2#18 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#219))*{iter#219 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#220))*{iter#220 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#229)))))*{c_1#229 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#159)))))*{c_2#159 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#19)*{c'_1#19 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#19)*{c'_2#19 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#15)))*{c'_1#15 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#15)))*{c'_2#15 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#20)))*{c'_1#20 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#20)))*{c'_2#20 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#157*{c_1#157 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#109*{c_2#109 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#16*{c'_1#16 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#158)))*{c_1#158 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#16*{c'_2#16 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#110)))*{c_2#110 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#17)*{c'_1#17 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#17)*{c'_2#17 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#230*{c_1#230 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#160*{c_2#160 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#21*{c'_1#21 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#231)))*{c_1#231 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#21*{c'_2#21 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#161)))*{c_2#161 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#22)*{c'_1#22 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#22)*{c'_2#22 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#221))*{iter#221 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#222))*{iter#222 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#232)))))*{c_1#232 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#162)))))*{c_2#162 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#23)*{c'_1#23 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#23)*{c'_2#23 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#18)))*{c'_1#18 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#18)))*{c'_2#18 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#24)))*{c'_1#24 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#24)))*{c'_2#24 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#159*{c_1#159 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#111*{c_2#111 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#19*{c'_1#19 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#160)))*{c_1#160 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#19*{c'_2#19 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#112)))*{c_2#112 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#20)*{c'_1#20 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#20)*{c'_2#20 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#233*{c_1#233 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#163*{c_2#163 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#25*{c'_1#25 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#234)))*{c_1#234 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#25*{c'_2#25 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#164)))*{c_2#164 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#26)*{c'_1#26 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#26)*{c'_2#26 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#223))*{iter#223 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#224))*{iter#224 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#235)))))*{c_1#235 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#165)))))*{c_2#165 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#27)*{c'_1#27 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#27)*{c'_2#27 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#21)))*{c'_1#21 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#21)))*{c'_2#21 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#28)))*{c'_1#28 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#28)))*{c'_2#28 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#161*{c_1#161 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#113*{c_2#113 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#22*{c'_1#22 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#162)))*{c_1#162 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#22*{c'_2#22 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#114)))*{c_2#114 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#23)*{c'_1#23 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#23)*{c'_2#23 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#236*{c_1#236 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#166*{c_2#166 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#29*{c'_1#29 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#237)))*{c_1#237 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#29*{c'_2#29 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#167)))*{c_2#167 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#30)*{c'_1#30 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#30)*{c'_2#30 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#225))*{iter#225 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#226))*{iter#226 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#238)))))*{c_1#238 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#168)))))*{c_2#168 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#31)*{c'_1#31 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#31)*{c'_2#31 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#24)))*{c'_1#24 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#24)))*{c'_2#24 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#32)))*{c'_1#32 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#32)))*{c'_2#32 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#163*{c_1#163 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#115*{c_2#115 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#25*{c'_1#25 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#164)))*{c_1#164 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#25*{c'_2#25 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#116)))*{c_2#116 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#26)*{c'_1#26 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#26)*{c'_2#26 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#239*{c_1#239 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#169*{c_2#169 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#33*{c'_1#33 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#240)))*{c_1#240 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#33*{c'_2#33 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#170)))*{c_2#170 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#34)*{c'_1#34 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#34)*{c'_2#34 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#227))*{iter#227 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#228))*{iter#228 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#241)))))*{c_1#241 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#171)))))*{c_2#171 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#35)*{c'_1#35 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#35)*{c'_2#35 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#27)))*{c'_1#27 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#27)))*{c'_2#27 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#36)))*{c'_1#36 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#36)))*{c'_2#36 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#165*{c_1#165 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#117*{c_2#117 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#28*{c'_1#28 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#166)))*{c_1#166 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#28*{c'_2#28 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#118)))*{c_2#118 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#29)*{c'_1#29 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#29)*{c'_2#29 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#242*{c_1#242 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#172*{c_2#172 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#37*{c'_1#37 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#243)))*{c_1#243 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#37*{c'_2#37 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#173)))*{c_2#173 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#38)*{c'_1#38 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#38)*{c'_2#38 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#229))*{iter#229 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#230))*{iter#230 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#244)))))*{c_1#244 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#174)))))*{c_2#174 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#39)*{c'_1#39 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#39)*{c'_2#39 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#30)))*{c'_1#30 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#30)))*{c'_2#30 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#40)))*{c'_1#40 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#40)))*{c'_2#40 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#167*{c_1#167 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#119*{c_2#119 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#31*{c'_1#31 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#168)))*{c_1#168 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#31*{c'_2#31 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#120)))*{c_2#120 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#32)*{c'_1#32 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#32)*{c'_2#32 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#245*{c_1#245 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#175*{c_2#175 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#41*{c'_1#41 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#246)))*{c_1#246 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#41*{c'_2#41 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#176)))*{c_2#176 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#42)*{c'_1#42 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#42)*{c'_2#42 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#231))*{iter#231 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#232))*{iter#232 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#247)))))*{c_1#247 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#177)))))*{c_2#177 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#43)*{c'_1#43 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#43)*{c'_2#43 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#33)))*{c'_1#33 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#33)))*{c'_2#33 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#44)))*{c'_1#44 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#44)))*{c'_2#44 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#169*{c_1#169 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#121*{c_2#121 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#34*{c'_1#34 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#170)))*{c_1#170 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#34*{c'_2#34 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#122)))*{c_2#122 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#35)*{c'_1#35 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#35)*{c'_2#35 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#248*{c_1#248 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#178*{c_2#178 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#45*{c'_1#45 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#249)))*{c_1#249 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#45*{c'_2#45 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#179)))*{c_2#179 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#46)*{c'_1#46 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#46)*{c'_2#46 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#233))*{iter#233 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#234))*{iter#234 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#250)))))*{c_1#250 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#180)))))*{c_2#180 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#47)*{c'_1#47 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#47)*{c'_2#47 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#36)))*{c'_1#36 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#36)))*{c'_2#36 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#48)))*{c'_1#48 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#48)))*{c'_2#48 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#171*{c_1#171 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#123*{c_2#123 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#37*{c'_1#37 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#172)))*{c_1#172 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#37*{c'_2#37 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#124)))*{c_2#124 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#38)*{c'_1#38 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#38)*{c'_2#38 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#251*{c_1#251 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#181*{c_2#181 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#49*{c'_1#49 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#252)))*{c_1#252 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#49*{c'_2#49 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#182)))*{c_2#182 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#50)*{c'_1#50 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#50)*{c'_2#50 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#235))*{iter#235 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#236))*{iter#236 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#253)))))*{c_1#253 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#183)))))*{c_2#183 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#51)*{c'_1#51 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#51)*{c'_2#51 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#39)))*{c'_1#39 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#39)))*{c'_2#39 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#52)))*{c'_1#52 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#52)))*{c'_2#52 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#173*{c_1#173 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#125*{c_2#125 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#40*{c'_1#40 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#174)))*{c_1#174 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#40*{c'_2#40 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#126)))*{c_2#126 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#41)*{c'_1#41 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#41)*{c'_2#41 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#254*{c_1#254 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#184*{c_2#184 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#53*{c'_1#53 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#255)))*{c_1#255 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#53*{c'_2#53 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#185)))*{c_2#185 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#54)*{c'_1#54 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#54)*{c'_2#54 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#237))*{iter#237 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#238))*{iter#238 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#256)))))*{c_1#256 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#186)))))*{c_2#186 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#55)*{c'_1#55 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#55)*{c'_2#55 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#42)))*{c'_1#42 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#42)))*{c'_2#42 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#56)))*{c'_1#56 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#56)))*{c'_2#56 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#175*{c_1#175 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#127*{c_2#127 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#43*{c'_1#43 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#176)))*{c_1#176 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#43*{c'_2#43 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#128)))*{c_2#128 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#44)*{c'_1#44 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#44)*{c'_2#44 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#257*{c_1#257 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#187*{c_2#187 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#57*{c'_1#57 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#258)))*{c_1#258 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#57*{c'_2#57 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#188)))*{c_2#188 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#58)*{c'_1#58 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#58)*{c'_2#58 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#239))*{iter#239 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#240))*{iter#240 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#259)))))*{c_1#259 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#189)))))*{c_2#189 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#59)*{c'_1#59 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#59)*{c'_2#59 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#45)))*{c'_1#45 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#45)))*{c'_2#45 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#60)))*{c'_1#60 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#60)))*{c'_2#60 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v - -- let{`c_1*` : lane_*} c_1#177*{c_1#177 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{`c_2*` : lane_*} c_2#129*{c_2#129 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) - -- let{`c'_1*` : iN*} c'_1#46*{c'_1#46 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#178)))*{c_1#178 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#46*{c'_2#46 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#130)))*{c_2#130 <- `c_2*`} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#47)*{c'_1#47 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#47)*{c'_2#47 <- `c'_2*`}) + -- let{`c_1*` : lane_*} c_1#260*{c_1#260 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#190*{c_2#190 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#61*{c'_1#61 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#261)))*{c_1#261 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#61*{c'_2#61 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#191)))*{c_2#191 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#62)*{c'_1#62 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#62)*{c'_2#62 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#241))*{iter#241 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#242))*{iter#242 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#262)))))*{c_1#262 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#192)))))*{c_2#192 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#63)*{c'_1#63 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#63)*{c'_2#63 <- `c'_2*`})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#48)))*{c'_1#48 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#48)))*{c'_2#48 <- `c'_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#64)))*{c'_1#64 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#64)))*{c'_2#64 <- `c'_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i#139349*{i#139349 <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- if ($concat_(syntax N, [j_1#1 j_2#1]*{j_1#1 <- `j_1*`, j_2#1 <- `j_2*`}) = $proj_uN_0(i#139350).0*{i#139350 <- `i*`}) - -- (wf_uN: `%%`(N, `%`_uN(j_1#2)))*{j_1#2 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2#2)))*{j_2#2 <- `j_2*`} + def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i#139344*{i#139344 <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax N, [j_1#1 j_2#1]*{j_1#1 <- `j_1*`, j_2#1 <- `j_2*`}) = $proj_uN_0(i#139345).0*{i#139345 <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#293)*{c#293 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#179*{c_1#179 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#49*{c'_1#49 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#180)))*{c_1#180 <- `c_1*`} - -- let{`c*` : iN*} c#291*{c#291 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#50*{c'_1#50 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#292)))*{c#292 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#213)*{c#213 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#263*{c_1#263 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#65*{c'_1#65 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#264)))*{c_1#264 <- `c_1*`} + -- let{`c*` : iN*} c#212*{c#212 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#66*{c'_1#66 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#243))*{iter#243 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#265)))))*{c_1#265 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#244))*{iter#244 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#67*{c'_1#67 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#296)*{c#296 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#181*{c_1#181 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#51*{c'_1#51 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#182)))*{c_1#182 <- `c_1*`} - -- let{`c*` : iN*} c#294*{c#294 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#52*{c'_1#52 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#295)))*{c#295 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#215)*{c#215 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#266*{c_1#266 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#68*{c'_1#68 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#267)))*{c_1#267 <- `c_1*`} + -- let{`c*` : iN*} c#214*{c#214 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#69*{c'_1#69 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#245))*{iter#245 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#268)))))*{c_1#268 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#246))*{iter#246 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#70*{c'_1#70 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#299)*{c#299 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#183*{c_1#183 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#53*{c'_1#53 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#184)))*{c_1#184 <- `c_1*`} - -- let{`c*` : iN*} c#297*{c#297 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#54*{c'_1#54 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#298)))*{c#298 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#217)*{c#217 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#269*{c_1#269 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#71*{c'_1#71 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#270)))*{c_1#270 <- `c_1*`} + -- let{`c*` : iN*} c#216*{c#216 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#72*{c'_1#72 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#247))*{iter#247 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#271)))))*{c_1#271 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#248))*{iter#248 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#73*{c'_1#73 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#302)*{c#302 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#185*{c_1#185 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#55*{c'_1#55 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#186)))*{c_1#186 <- `c_1*`} - -- let{`c*` : iN*} c#300*{c#300 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#56*{c'_1#56 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#301)))*{c#301 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#219)*{c#219 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#272*{c_1#272 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#74*{c'_1#74 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#273)))*{c_1#273 <- `c_1*`} + -- let{`c*` : iN*} c#218*{c#218 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#75*{c'_1#75 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#249))*{iter#249 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#274)))))*{c_1#274 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#250))*{iter#250 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#76*{c'_1#76 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#305)*{c#305 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#187*{c_1#187 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#57*{c'_1#57 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#188)))*{c_1#188 <- `c_1*`} - -- let{`c*` : iN*} c#303*{c#303 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#58*{c'_1#58 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#304)))*{c#304 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#221)*{c#221 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#275*{c_1#275 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#77*{c'_1#77 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#276)))*{c_1#276 <- `c_1*`} + -- let{`c*` : iN*} c#220*{c#220 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#78*{c'_1#78 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#251))*{iter#251 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#277)))))*{c_1#277 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#252))*{iter#252 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#79*{c'_1#79 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#308)*{c#308 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#189*{c_1#189 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#59*{c'_1#59 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#190)))*{c_1#190 <- `c_1*`} - -- let{`c*` : iN*} c#306*{c#306 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#60*{c'_1#60 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#307)))*{c#307 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#223)*{c#223 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#278*{c_1#278 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#80*{c'_1#80 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#279)))*{c_1#279 <- `c_1*`} + -- let{`c*` : iN*} c#222*{c#222 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#81*{c'_1#81 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#253))*{iter#253 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#280)))))*{c_1#280 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#254))*{iter#254 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#82*{c'_1#82 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#311)*{c#311 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#191*{c_1#191 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#61*{c'_1#61 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#192)))*{c_1#192 <- `c_1*`} - -- let{`c*` : iN*} c#309*{c#309 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#62*{c'_1#62 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#310)))*{c#310 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#225)*{c#225 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#281*{c_1#281 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#83*{c'_1#83 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#282)))*{c_1#282 <- `c_1*`} + -- let{`c*` : iN*} c#224*{c#224 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#84*{c'_1#84 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#255))*{iter#255 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#283)))))*{c_1#283 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#256))*{iter#256 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#85*{c'_1#85 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#314)*{c#314 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#193*{c_1#193 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#63*{c'_1#63 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#194)))*{c_1#194 <- `c_1*`} - -- let{`c*` : iN*} c#312*{c#312 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#64*{c'_1#64 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#313)))*{c#313 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#227)*{c#227 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#284*{c_1#284 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#86*{c'_1#86 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#285)))*{c_1#285 <- `c_1*`} + -- let{`c*` : iN*} c#226*{c#226 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#87*{c'_1#87 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#257))*{iter#257 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#286)))))*{c_1#286 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#258))*{iter#258 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#88*{c'_1#88 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#317)*{c#317 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#195*{c_1#195 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#65*{c'_1#65 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#196)))*{c_1#196 <- `c_1*`} - -- let{`c*` : iN*} c#315*{c#315 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#66*{c'_1#66 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#316)))*{c#316 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#229)*{c#229 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#287*{c_1#287 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#89*{c'_1#89 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#288)))*{c_1#288 <- `c_1*`} + -- let{`c*` : iN*} c#228*{c#228 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#90*{c'_1#90 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#259))*{iter#259 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#289)))))*{c_1#289 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#260))*{iter#260 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#91*{c'_1#91 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#320)*{c#320 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#197*{c_1#197 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#67*{c'_1#67 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#198)))*{c_1#198 <- `c_1*`} - -- let{`c*` : iN*} c#318*{c#318 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#68*{c'_1#68 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#319)))*{c#319 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#231)*{c#231 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#290*{c_1#290 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#92*{c'_1#92 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#291)))*{c_1#291 <- `c_1*`} + -- let{`c*` : iN*} c#230*{c#230 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#93*{c'_1#93 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#261))*{iter#261 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#292)))))*{c_1#292 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#262))*{iter#262 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#94*{c'_1#94 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#323)*{c#323 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#199*{c_1#199 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#69*{c'_1#69 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#200)))*{c_1#200 <- `c_1*`} - -- let{`c*` : iN*} c#321*{c#321 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#70*{c'_1#70 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#322)))*{c#322 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#233)*{c#233 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#293*{c_1#293 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#95*{c'_1#95 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#294)))*{c_1#294 <- `c_1*`} + -- let{`c*` : iN*} c#232*{c#232 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#96*{c'_1#96 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#263))*{iter#263 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#295)))))*{c_1#295 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#264))*{iter#264 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#97*{c'_1#97 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#326)*{c#326 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#201*{c_1#201 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#71*{c'_1#71 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#202)))*{c_1#202 <- `c_1*`} - -- let{`c*` : iN*} c#324*{c#324 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#72*{c'_1#72 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#325)))*{c#325 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#235)*{c#235 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#296*{c_1#296 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#98*{c'_1#98 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#297)))*{c_1#297 <- `c_1*`} + -- let{`c*` : iN*} c#234*{c#234 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#99*{c'_1#99 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#265))*{iter#265 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#298)))))*{c_1#298 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#266))*{iter#266 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#100*{c'_1#100 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#329)*{c#329 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#203*{c_1#203 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#73*{c'_1#73 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#204)))*{c_1#204 <- `c_1*`} - -- let{`c*` : iN*} c#327*{c#327 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#74*{c'_1#74 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#328)))*{c#328 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#237)*{c#237 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#299*{c_1#299 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#101*{c'_1#101 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#300)))*{c_1#300 <- `c_1*`} + -- let{`c*` : iN*} c#236*{c#236 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#102*{c'_1#102 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#267))*{iter#267 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#301)))))*{c_1#301 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#268))*{iter#268 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#103*{c'_1#103 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#332)*{c#332 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#205*{c_1#205 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#75*{c'_1#75 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#206)))*{c_1#206 <- `c_1*`} - -- let{`c*` : iN*} c#330*{c#330 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#76*{c'_1#76 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#331)))*{c#331 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#239)*{c#239 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#302*{c_1#302 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#104*{c'_1#104 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#303)))*{c_1#303 <- `c_1*`} + -- let{`c*` : iN*} c#238*{c#238 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#105*{c'_1#105 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#269))*{iter#269 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#304)))))*{c_1#304 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#270))*{iter#270 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#106*{c'_1#106 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#335)*{c#335 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#207*{c_1#207 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#77*{c'_1#77 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#208)))*{c_1#208 <- `c_1*`} - -- let{`c*` : iN*} c#333*{c#333 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#78*{c'_1#78 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#334)))*{c#334 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#241)*{c#241 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#305*{c_1#305 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#107*{c'_1#107 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#306)))*{c_1#306 <- `c_1*`} + -- let{`c*` : iN*} c#240*{c#240 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#108*{c'_1#108 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#271))*{iter#271 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#307)))))*{c_1#307 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#272))*{iter#272 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#109*{c'_1#109 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#338)*{c#338 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#209*{c_1#209 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{`c'_1*` : iN*} c'_1#79*{c'_1#79 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#210)))*{c_1#210 <- `c_1*`} - -- let{`c*` : iN*} c#336*{c#336 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#80*{c'_1#80 <- `c'_1*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#337)))*{c#337 <- `c*`} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#243)*{c#243 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#308*{c_1#308 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#110*{c'_1#110 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#309)))*{c_1#309 <- `c_1*`} + -- let{`c*` : iN*} c#242*{c#242 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#111*{c'_1#111 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#273))*{iter#273 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#310)))))*{c_1#310 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#274))*{iter#274 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#112*{c'_1#112 <- `c'_1*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#1*{i_1#1 <- `i_1*`}, i_2#1*{i_2#1 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- if ($concat_(syntax iN, [j_1#3 j_2#3]*{j_1#3 <- `j_1*`, j_2#3 <- `j_2*`}) = $imul_(N, i_1#2, i_2#2)*{i_1#2 <- `i_1*`, i_2#2 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1#4))*{j_1#4 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2#4))*{j_2#4 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#2 j_2#2]*{j_1#2 <- `j_1*`, j_2#2 <- `j_2*`}) = $imul_(N, i_1#2, i_2#2)*{i_1#2 <- `i_1*`, i_2#2 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#275))*{iter#275 <- $concat_(syntax iN, [j_1#3 j_2#3]*{j_1#3 <- `j_1*`, j_2#3 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#3, i_2#3)))*{i_1#3 <- `i_1*`, i_2#3 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#3*{i_1#3 <- `i_1*`}, i_2#3*{i_2#3 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- if ($concat_(syntax iN, [j_1#5 j_2#5]*{j_1#5 <- `j_1*`, j_2#5 <- `j_2*`}) = $imul_(N, i_1#4, i_2#4)*{i_1#4 <- `i_1*`, i_2#4 <- `i_2*`}) - -- (wf_uN: `%%`(N, j_1#6))*{j_1#6 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2#6))*{j_2#6 <- `j_2*`} + def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#4*{i_1#4 <- `i_1*`}, i_2#4*{i_2#4 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#4 j_2#4]*{j_1#4 <- `j_1*`, j_2#4 <- `j_2*`}) = $imul_(N, i_1#5, i_2#5)*{i_1#5 <- `i_1*`, i_2#5 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#276))*{iter#276 <- $concat_(syntax iN, [j_1#5 j_2#5]*{j_1#5 <- `j_1*`, j_2#5 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#6, i_2#6)))*{i_1#6 <- `i_1*`, i_2#6 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#341)*{c#341 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#211*{c_1#211 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#131*{c_2#131 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#81*{c'_1#81 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#212)))*{c_1#212 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#49*{c'_2#49 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#132)))*{c_2#132 <- `c_2*`} - -- let{`c*` : iN*} c#339*{c#339 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#82*{c'_1#82 <- `c'_1*`}, c'_2#50*{c'_2#50 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#340)))*{c#340 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#245)*{c#245 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#311*{c_1#311 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#193*{c_2#193 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#113*{c'_1#113 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#312)))*{c_1#312 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#65*{c'_2#65 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#194)))*{c_2#194 <- `c_2*`} + -- let{`c*` : iN*} c#244*{c#244 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#114*{c'_1#114 <- `c'_1*`}, c'_2#66*{c'_2#66 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#277))*{iter#277 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#278))*{iter#278 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#313)))))*{c_1#313 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#195)))))*{c_2#195 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#279))*{iter#279 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#115*{c'_1#115 <- `c'_1*`}, c'_2#67*{c'_2#67 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#344)*{c#344 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#213*{c_1#213 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#133*{c_2#133 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#83*{c'_1#83 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#214)))*{c_1#214 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#51*{c'_2#51 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#134)))*{c_2#134 <- `c_2*`} - -- let{`c*` : iN*} c#342*{c#342 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#84*{c'_1#84 <- `c'_1*`}, c'_2#52*{c'_2#52 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#343)))*{c#343 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#247)*{c#247 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#314*{c_1#314 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#196*{c_2#196 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#116*{c'_1#116 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#315)))*{c_1#315 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#68*{c'_2#68 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#197)))*{c_2#197 <- `c_2*`} + -- let{`c*` : iN*} c#246*{c#246 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#117*{c'_1#117 <- `c'_1*`}, c'_2#69*{c'_2#69 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#280))*{iter#280 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#281))*{iter#281 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#316)))))*{c_1#316 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#198)))))*{c_2#198 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#282))*{iter#282 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#118*{c'_1#118 <- `c'_1*`}, c'_2#70*{c'_2#70 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#347)*{c#347 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#215*{c_1#215 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#135*{c_2#135 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#85*{c'_1#85 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#216)))*{c_1#216 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#53*{c'_2#53 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#136)))*{c_2#136 <- `c_2*`} - -- let{`c*` : iN*} c#345*{c#345 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#86*{c'_1#86 <- `c'_1*`}, c'_2#54*{c'_2#54 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#346)))*{c#346 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#249)*{c#249 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#317*{c_1#317 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#199*{c_2#199 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#119*{c'_1#119 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#318)))*{c_1#318 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#71*{c'_2#71 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#200)))*{c_2#200 <- `c_2*`} + -- let{`c*` : iN*} c#248*{c#248 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#120*{c'_1#120 <- `c'_1*`}, c'_2#72*{c'_2#72 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#283))*{iter#283 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#284))*{iter#284 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#319)))))*{c_1#319 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#201)))))*{c_2#201 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#285))*{iter#285 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#121*{c'_1#121 <- `c'_1*`}, c'_2#73*{c'_2#73 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#350)*{c#350 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#217*{c_1#217 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#137*{c_2#137 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#87*{c'_1#87 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#218)))*{c_1#218 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#55*{c'_2#55 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#138)))*{c_2#138 <- `c_2*`} - -- let{`c*` : iN*} c#348*{c#348 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#88*{c'_1#88 <- `c'_1*`}, c'_2#56*{c'_2#56 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#349)))*{c#349 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#251)*{c#251 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#320*{c_1#320 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#202*{c_2#202 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#122*{c'_1#122 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#321)))*{c_1#321 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#74*{c'_2#74 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#203)))*{c_2#203 <- `c_2*`} + -- let{`c*` : iN*} c#250*{c#250 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#123*{c'_1#123 <- `c'_1*`}, c'_2#75*{c'_2#75 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#286))*{iter#286 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#287))*{iter#287 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#322)))))*{c_1#322 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#204)))))*{c_2#204 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#288))*{iter#288 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#124*{c'_1#124 <- `c'_1*`}, c'_2#76*{c'_2#76 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#353)*{c#353 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#219*{c_1#219 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#139*{c_2#139 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#89*{c'_1#89 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#220)))*{c_1#220 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#57*{c'_2#57 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#140)))*{c_2#140 <- `c_2*`} - -- let{`c*` : iN*} c#351*{c#351 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#90*{c'_1#90 <- `c'_1*`}, c'_2#58*{c'_2#58 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#352)))*{c#352 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#253)*{c#253 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#323*{c_1#323 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#205*{c_2#205 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#125*{c'_1#125 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#324)))*{c_1#324 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#77*{c'_2#77 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#206)))*{c_2#206 <- `c_2*`} + -- let{`c*` : iN*} c#252*{c#252 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#126*{c'_1#126 <- `c'_1*`}, c'_2#78*{c'_2#78 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#289))*{iter#289 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#290))*{iter#290 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#325)))))*{c_1#325 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#207)))))*{c_2#207 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#291))*{iter#291 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#127*{c'_1#127 <- `c'_1*`}, c'_2#79*{c'_2#79 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#356)*{c#356 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#221*{c_1#221 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#141*{c_2#141 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#91*{c'_1#91 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#222)))*{c_1#222 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#59*{c'_2#59 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#142)))*{c_2#142 <- `c_2*`} - -- let{`c*` : iN*} c#354*{c#354 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#92*{c'_1#92 <- `c'_1*`}, c'_2#60*{c'_2#60 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#355)))*{c#355 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#255)*{c#255 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#326*{c_1#326 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#208*{c_2#208 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#128*{c'_1#128 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#327)))*{c_1#327 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#80*{c'_2#80 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#209)))*{c_2#209 <- `c_2*`} + -- let{`c*` : iN*} c#254*{c#254 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#129*{c'_1#129 <- `c'_1*`}, c'_2#81*{c'_2#81 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#292))*{iter#292 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#293))*{iter#293 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#328)))))*{c_1#328 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#210)))))*{c_2#210 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#294))*{iter#294 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#130*{c'_1#130 <- `c'_1*`}, c'_2#82*{c'_2#82 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#359)*{c#359 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#223*{c_1#223 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#143*{c_2#143 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#93*{c'_1#93 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#224)))*{c_1#224 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#61*{c'_2#61 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#144)))*{c_2#144 <- `c_2*`} - -- let{`c*` : iN*} c#357*{c#357 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#94*{c'_1#94 <- `c'_1*`}, c'_2#62*{c'_2#62 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#358)))*{c#358 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#257)*{c#257 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#329*{c_1#329 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#211*{c_2#211 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#131*{c'_1#131 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#330)))*{c_1#330 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#83*{c'_2#83 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#212)))*{c_2#212 <- `c_2*`} + -- let{`c*` : iN*} c#256*{c#256 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#132*{c'_1#132 <- `c'_1*`}, c'_2#84*{c'_2#84 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#295))*{iter#295 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#296))*{iter#296 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#331)))))*{c_1#331 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#213)))))*{c_2#213 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#297))*{iter#297 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#133*{c'_1#133 <- `c'_1*`}, c'_2#85*{c'_2#85 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#362)*{c#362 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#225*{c_1#225 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#145*{c_2#145 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#95*{c'_1#95 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#226)))*{c_1#226 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#63*{c'_2#63 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#146)))*{c_2#146 <- `c_2*`} - -- let{`c*` : iN*} c#360*{c#360 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#96*{c'_1#96 <- `c'_1*`}, c'_2#64*{c'_2#64 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#361)))*{c#361 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#259)*{c#259 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#332*{c_1#332 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#214*{c_2#214 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#134*{c'_1#134 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#333)))*{c_1#333 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#86*{c'_2#86 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#215)))*{c_2#215 <- `c_2*`} + -- let{`c*` : iN*} c#258*{c#258 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#135*{c'_1#135 <- `c'_1*`}, c'_2#87*{c'_2#87 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#298))*{iter#298 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#299))*{iter#299 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#334)))))*{c_1#334 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#216)))))*{c_2#216 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#300))*{iter#300 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#136*{c'_1#136 <- `c'_1*`}, c'_2#88*{c'_2#88 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#365)*{c#365 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#227*{c_1#227 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#147*{c_2#147 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#97*{c'_1#97 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#228)))*{c_1#228 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#65*{c'_2#65 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#148)))*{c_2#148 <- `c_2*`} - -- let{`c*` : iN*} c#363*{c#363 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#98*{c'_1#98 <- `c'_1*`}, c'_2#66*{c'_2#66 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#364)))*{c#364 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#261)*{c#261 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#335*{c_1#335 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#217*{c_2#217 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#137*{c'_1#137 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#336)))*{c_1#336 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#89*{c'_2#89 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#218)))*{c_2#218 <- `c_2*`} + -- let{`c*` : iN*} c#260*{c#260 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#138*{c'_1#138 <- `c'_1*`}, c'_2#90*{c'_2#90 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#301))*{iter#301 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#302))*{iter#302 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#337)))))*{c_1#337 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#219)))))*{c_2#219 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#303))*{iter#303 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#139*{c'_1#139 <- `c'_1*`}, c'_2#91*{c'_2#91 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#368)*{c#368 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#229*{c_1#229 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#149*{c_2#149 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#99*{c'_1#99 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#230)))*{c_1#230 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#67*{c'_2#67 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#150)))*{c_2#150 <- `c_2*`} - -- let{`c*` : iN*} c#366*{c#366 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#100*{c'_1#100 <- `c'_1*`}, c'_2#68*{c'_2#68 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#367)))*{c#367 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#263)*{c#263 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#338*{c_1#338 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#220*{c_2#220 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#140*{c'_1#140 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#339)))*{c_1#339 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#92*{c'_2#92 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#221)))*{c_2#221 <- `c_2*`} + -- let{`c*` : iN*} c#262*{c#262 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#141*{c'_1#141 <- `c'_1*`}, c'_2#93*{c'_2#93 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#304))*{iter#304 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#305))*{iter#305 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#340)))))*{c_1#340 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#222)))))*{c_2#222 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#306))*{iter#306 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#142*{c'_1#142 <- `c'_1*`}, c'_2#94*{c'_2#94 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#371)*{c#371 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#231*{c_1#231 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#151*{c_2#151 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#101*{c'_1#101 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#232)))*{c_1#232 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#69*{c'_2#69 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#152)))*{c_2#152 <- `c_2*`} - -- let{`c*` : iN*} c#369*{c#369 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#102*{c'_1#102 <- `c'_1*`}, c'_2#70*{c'_2#70 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#370)))*{c#370 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#265)*{c#265 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#341*{c_1#341 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#223*{c_2#223 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#143*{c'_1#143 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#342)))*{c_1#342 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#95*{c'_2#95 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#224)))*{c_2#224 <- `c_2*`} + -- let{`c*` : iN*} c#264*{c#264 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#144*{c'_1#144 <- `c'_1*`}, c'_2#96*{c'_2#96 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#307))*{iter#307 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#308))*{iter#308 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#343)))))*{c_1#343 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#225)))))*{c_2#225 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#309))*{iter#309 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#145*{c'_1#145 <- `c'_1*`}, c'_2#97*{c'_2#97 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#374)*{c#374 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#233*{c_1#233 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#153*{c_2#153 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#103*{c'_1#103 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#234)))*{c_1#234 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#71*{c'_2#71 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#154)))*{c_2#154 <- `c_2*`} - -- let{`c*` : iN*} c#372*{c#372 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#104*{c'_1#104 <- `c'_1*`}, c'_2#72*{c'_2#72 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#373)))*{c#373 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#267)*{c#267 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#344*{c_1#344 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#226*{c_2#226 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#146*{c'_1#146 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#345)))*{c_1#345 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#98*{c'_2#98 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#227)))*{c_2#227 <- `c_2*`} + -- let{`c*` : iN*} c#266*{c#266 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#147*{c'_1#147 <- `c'_1*`}, c'_2#99*{c'_2#99 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#310))*{iter#310 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#311))*{iter#311 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#346)))))*{c_1#346 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#228)))))*{c_2#228 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#312))*{iter#312 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#148*{c'_1#148 <- `c'_1*`}, c'_2#100*{c'_2#100 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#377)*{c#377 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#235*{c_1#235 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#155*{c_2#155 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#105*{c'_1#105 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#236)))*{c_1#236 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#73*{c'_2#73 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#156)))*{c_2#156 <- `c_2*`} - -- let{`c*` : iN*} c#375*{c#375 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#106*{c'_1#106 <- `c'_1*`}, c'_2#74*{c'_2#74 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#376)))*{c#376 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#269)*{c#269 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#347*{c_1#347 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#229*{c_2#229 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#149*{c'_1#149 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#348)))*{c_1#348 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#101*{c'_2#101 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#230)))*{c_2#230 <- `c_2*`} + -- let{`c*` : iN*} c#268*{c#268 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#150*{c'_1#150 <- `c'_1*`}, c'_2#102*{c'_2#102 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#313))*{iter#313 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#314))*{iter#314 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#349)))))*{c_1#349 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#231)))))*{c_2#231 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#315))*{iter#315 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#151*{c'_1#151 <- `c'_1*`}, c'_2#103*{c'_2#103 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#380)*{c#380 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#237*{c_1#237 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#157*{c_2#157 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#107*{c'_1#107 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#238)))*{c_1#238 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#75*{c'_2#75 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#158)))*{c_2#158 <- `c_2*`} - -- let{`c*` : iN*} c#378*{c#378 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#108*{c'_1#108 <- `c'_1*`}, c'_2#76*{c'_2#76 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#379)))*{c#379 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#271)*{c#271 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#350*{c_1#350 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#232*{c_2#232 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#152*{c'_1#152 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#351)))*{c_1#351 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#104*{c'_2#104 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#233)))*{c_2#233 <- `c_2*`} + -- let{`c*` : iN*} c#270*{c#270 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#153*{c'_1#153 <- `c'_1*`}, c'_2#105*{c'_2#105 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#316))*{iter#316 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#317))*{iter#317 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#352)))))*{c_1#352 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#234)))))*{c_2#234 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#318))*{iter#318 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#154*{c'_1#154 <- `c'_1*`}, c'_2#106*{c'_2#106 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#383)*{c#383 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#239*{c_1#239 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#159*{c_2#159 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#109*{c'_1#109 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#240)))*{c_1#240 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#77*{c'_2#77 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#160)))*{c_2#160 <- `c_2*`} - -- let{`c*` : iN*} c#381*{c#381 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#110*{c'_1#110 <- `c'_1*`}, c'_2#78*{c'_2#78 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#382)))*{c#382 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#273)*{c#273 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#353*{c_1#353 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#235*{c_2#235 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#155*{c'_1#155 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#354)))*{c_1#354 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#107*{c'_2#107 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#236)))*{c_2#236 <- `c_2*`} + -- let{`c*` : iN*} c#272*{c#272 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#156*{c'_1#156 <- `c'_1*`}, c'_2#108*{c'_2#108 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#319))*{iter#319 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#320))*{iter#320 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#355)))))*{c_1#355 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#237)))))*{c_2#237 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#321))*{iter#321 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#157*{c'_1#157 <- `c'_1*`}, c'_2#109*{c'_2#109 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#386)*{c#386 <- `c*`}) - -- let{`c_1*` : lane_*} c_1#241*{c_1#241 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c_2*` : lane_*} c_2#161*{c_2#161 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{`c'_1*` : iN*} c'_1#111*{c'_1#111 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#242)))*{c_1#242 <- `c_1*`} - -- let{`c'_2*` : iN*} c'_2#79*{c'_2#79 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#162)))*{c_2#162 <- `c_2*`} - -- let{`c*` : iN*} c#384*{c#384 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#112*{c'_1#112 <- `c'_1*`}, c'_2#80*{c'_2#80 <- `c'_2*`}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#385)))*{c#385 <- `c*`} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#275)*{c#275 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#356*{c_1#356 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#238*{c_2#238 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#158*{c'_1#158 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#357)))*{c_1#357 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#110*{c'_2#110 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#239)))*{c_2#239 <- `c_2*`} + -- let{`c*` : iN*} c#274*{c#274 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#159*{c'_1#159 <- `c'_1*`}, c'_2#111*{c'_2#111 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#322))*{iter#322 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#323))*{iter#323 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#358)))))*{c_1#358 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#240)))))*{c_2#240 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#324))*{iter#324 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#160*{c'_1#160 <- `c'_1*`}, c'_2#112*{c'_2#112 <- `c'_2*`})} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivmul_(N : N, iN*, iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1#5*{i_1#5 <- `i_1*`}, i_2#5*{i_2#5 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1#7*{i_1#7 <- `i_1*`}, i_2#7*{i_2#7 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ @@ -11185,7 +11823,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#325))*{iter#325 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11200,7 +11840,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#326))*{iter#326 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11215,7 +11857,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#327))*{iter#327 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11230,7 +11874,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#328))*{iter#328 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11245,7 +11891,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#329))*{iter#329 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11260,7 +11908,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#330))*{iter#330 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11275,7 +11925,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#331))*{iter#331 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11290,7 +11942,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#332))*{iter#332 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11305,7 +11959,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#333))*{iter#333 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11320,7 +11976,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#334))*{iter#334 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11335,7 +11993,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#335))*{iter#335 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11350,7 +12010,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#336))*{iter#336 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11365,7 +12027,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#337))*{iter#337 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11380,7 +12044,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#338))*{iter#338 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11395,7 +12061,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#339))*{iter#339 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11410,7 +12078,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#340))*{iter#340 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) @@ -11816,13 +12486,22 @@ def $packfield_(storagetype : storagetype, val : val) : fieldval? def $packfield_{val : val}(I32_storagetype, val) = ?($fieldval_val(val)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation packfield__is_wf: `%%%`(storagetype : storagetype, val : val, ret_val : fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packfield__is_wf0{storagetype : storagetype, val : val, ret_val : fieldval}: + `%%%`(storagetype, val, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_val: `%`(val) + -- if ($packfield_(storagetype, val) =/= ?()) + -- if (ret_val = !($packfield_(storagetype, val))) + -- wf_fieldval: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -11967,13 +12646,22 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? def $unpackfield_{numtype : numtype, var_0 : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation unpackfield__is_wf: `%%%%`(storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule unpackfield__is_wf0{storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val}: + `%%%%`(storagetype, var_0, fieldval, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_fieldval: `%`(fieldval) + -- if ($unpackfield_(storagetype, var_0, fieldval) =/= ?()) + -- if (ret_val = !($unpackfield_(storagetype, var_0, fieldval))) + -- wf_val: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -12044,10 +12732,28 @@ def $store(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $store{s : store, f : frame}(`%;%`_state(s, f)) = s +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation store_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $store(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $frame(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation frame_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $frame(state)) + -- wf_frame: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tagaddr(state : state) : tagaddr* @@ -12059,61 +12765,169 @@ def $moduleinst(state : state) : moduleinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation moduleinst_is_wf: `%%`(state : state, ret_val : moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_is_wf0{state : state, ret_val : moduleinst}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $moduleinst(state)) + -- wf_moduleinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst(state : state) : taginst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation taginst_is_wf: `%%`(state : state, ret_val : taginst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_is_wf0{state : state, ret_val : taginst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $taginst(state)) + -- (wf_taginst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst(state : state) : globalinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation globalinst_is_wf: `%%`(state : state, ret_val : globalinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_is_wf0{state : state, ret_val : globalinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $globalinst(state)) + -- (wf_globalinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst(state : state) : meminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation meminst_is_wf: `%%`(state : state, ret_val : meminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_is_wf0{state : state, ret_val : meminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $meminst(state)) + -- (wf_meminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst(state : state) : tableinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tableinst_is_wf: `%%`(state : state, ret_val : tableinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_is_wf0{state : state, ret_val : tableinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $tableinst(state)) + -- (wf_tableinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst(state : state) : funcinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation funcinst_is_wf: `%%`(state : state, ret_val : funcinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_is_wf0{state : state, ret_val : funcinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $funcinst(state)) + -- (wf_funcinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst(state : state) : datainst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation datainst_is_wf: `%%`(state : state, ret_val : datainst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_is_wf0{state : state, ret_val : datainst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $datainst(state)) + -- (wf_datainst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst(state : state) : eleminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation eleminst_is_wf: `%%`(state : state, ret_val : eleminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_is_wf0{state : state, ret_val : eleminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $eleminst(state)) + -- (wf_eleminst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst(state : state) : structinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation structinst_is_wf: `%%`(state : state, ret_val : structinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_is_wf0{state : state, ret_val : structinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $structinst(state)) + -- (wf_structinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst(state : state) : arrayinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation arrayinst_is_wf: `%%`(state : state, ret_val : arrayinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_is_wf0{state : state, ret_val : arrayinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $arrayinst(state)) + -- (wf_arrayinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst(state : state) : exninst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation exninst_is_wf: `%%`(state : state, ret_val : exninst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_is_wf0{state : state, ret_val : exninst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $exninst(state)) + -- (wf_exninst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof(state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof{z : state}(z) = $frame(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fof_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fof_is_wf0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $fof(state)) + -- wf_frame: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -12124,123 +12938,337 @@ def $sof(state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $sof{z : state}(z) = $store(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation sof_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule sof_is_wf0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $sof(state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tag_is_wf: `%%%`(state : state, tagidx : tagidx, ret_val : taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tag_is_wf0{state : state, tagidx : tagidx, ret_val : taginst}: + `%%%`(state, tagidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $tag(state, tagidx)) + -- wf_taginst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation global_is_wf: `%%%`(state : state, globalidx : globalidx, ret_val : globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule global_is_wf0{state : state, globalidx : globalidx, ret_val : globalinst}: + `%%%`(state, globalidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $global(state, globalidx)) + -- wf_globalinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation mem_is_wf: `%%%`(state : state, memidx : memidx, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule mem_is_wf0{state : state, memidx : memidx, ret_val : meminst}: + `%%%`(state, memidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $mem(state, memidx)) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation table_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule table_is_wf0{state : state, tableidx : tableidx, ret_val : tableinst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $table(state, tableidx)) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation func_is_wf: `%%%`(state : state, funcidx : funcidx, ret_val : funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule func_is_wf0{state : state, funcidx : funcidx, ret_val : funcinst}: + `%%%`(state, funcidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $func(state, funcidx)) + -- wf_funcinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation data_is_wf: `%%%`(state : state, dataidx : dataidx, ret_val : datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule data_is_wf0{state : state, dataidx : dataidx, ret_val : datainst}: + `%%%`(state, dataidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $data(state, dataidx)) + -- wf_datainst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation elem_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule elem_is_wf0{state : state, tableidx : tableidx, ret_val : eleminst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $elem(state, tableidx)) + -- wf_eleminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[$proj_uN_0(x).0] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation local_is_wf: `%%%`(state : state, localidx : localidx, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule local_is_wf0{state : state, localidx : localidx, ret_val : val?}: + `%%%`(state, localidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $local(state, localidx)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) - -- wf_state: `%`(`%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_local_is_wf: `%%%%`(state : state, localidx : localidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_local_is_wf0{state : state, localidx : localidx, val : val, ret_val : state}: + `%%%%`(state, localidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_local(state, localidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_global_is_wf: `%%%%`(state : state, globalidx : globalidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_global_is_wf0{state : state, globalidx : globalidx, val : val, ret_val : state}: + `%%%%`(state, globalidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_global(state, globalidx, val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_table_is_wf: `%%%%%`(state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_table_is_wf0{state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state}: + `%%%%%`(state, tableidx, nat, ref, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_ref: `%`(ref) + -- if (ret_val = $with_table(state, tableidx, nat, ref)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_tableinst_is_wf: `%%%%`(state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_tableinst_is_wf0{state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state}: + `%%%%`(state, tableidx, tableinst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_tableinst: `%`(tableinst) + -- if (ret_val = $with_tableinst(state, tableidx, tableinst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem{z : state, x : uN, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b#1*{b#1 <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b#2*{b#2 <- `b*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_mem_is_wf: `%%%%%%`(state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_mem_is_wf0{state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state}: + `%%%%%%`(state, memidx, nat, nat_0, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_mem(state, memidx, nat, nat_0, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_meminst_is_wf: `%%%%`(state : state, memidx : memidx, meminst : meminst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_meminst_is_wf0{state : state, memidx : memidx, meminst : meminst, ret_val : state}: + `%%%%`(state, memidx, meminst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- wf_meminst: `%`(meminst) + -- if (ret_val = $with_meminst(state, memidx, meminst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem{z : state, x : uN, `r*` : ref*}(z, x, r#1*{r#1 <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r#2*{r#2 <- `r*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_elem_is_wf: `%%%%`(state : state, elemidx : elemidx, var_0 : ref*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_elem_is_wf0{state : state, elemidx : elemidx, var_0 : ref*, ret_val : state}: + `%%%%`(state, elemidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, elemidx) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_elem(state, elemidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b#3*{b#3 <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b#4*{b#4 <- `b*`}], $fof(z))) + def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b#2*{b#2 <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_data_is_wf: `%%%%`(state : state, dataidx : dataidx, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_data_is_wf0{state : state, dataidx : dataidx, var_0 : byte*, ret_val : state}: + `%%%%`(state, dataidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_data(state, dataidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_struct_is_wf: `%%%%%`(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_struct_is_wf0{state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, structaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_struct(state, structaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_array_is_wf: `%%%%%`(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_array_is_wf0{state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, arrayaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_array(state, arrayaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst{z : state, `si*` : structinst*}(z, si#1*{si#1 <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store =++ si#2*{si#2 <- `si*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_structinst_is_wf: `%%%`(state : state, var_0 : structinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_structinst_is_wf0{state : state, var_0 : structinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_structinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_structinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai#1*{ai#1 <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store =++ ai#2*{ai#2 <- `ai*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_arrayinst_is_wf: `%%%`(state : state, var_0 : arrayinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_arrayinst_is_wf0{state : state, var_0 : arrayinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_arrayinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_arrayinst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst{z : state, `exn*` : exninst*}(z, exn#1*{exn#1 <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[EXNS_store =++ exn#2*{exn#2 <- `exn*`}], $fof(z))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_exninst_is_wf: `%%%`(state : state, var_0 : exninst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_exninst_is_wf0{state : state, var_0 : exninst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_exninst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_exninst(state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? @@ -12251,42 +13279,57 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- if ($proj_uN_0(i').0 = (|r'#3*{r'#3 <- `r'*`}| + n)) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#3).0))?{j#3 <- `j?`} -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) - -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#4?{j#4 <- `j?`}), rt), REFS r'#4*{r'#4 <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#5?{j#5 <- `j?`}), rt), REFS r'#5*{r'#5 <- `r'*`} ++ r^n{}}) def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growtable_is_wf: `%%%%`(tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growtable_is_wf0{tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst}: + `%%%%`(tableinst, nat, ref, ret_val) + -- wf_tableinst: `%`(tableinst) + -- wf_ref: `%`(ref) + -- if ($growtable(tableinst, nat, ref) =/= ?()) + -- if (ret_val = !($growtable(tableinst, nat, ref))) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, i' : uN}(meminst, n) = ?(meminst') - -- let{at : addrtype, i : u64, `j?` : u64?, `b*` : byte*} {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#5*{b#5 <- `b*`}} = meminst - -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#6*{b#6 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#7*{b#7 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- let{at : addrtype, i : u64, `j?` : u64?, `b*` : byte*} {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#3*{b#3 <- `b*`}} = meminst + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#4*{b#4 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#5*{b#5 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#8).0))?{j#8 <- `j?`} -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#9?{j#9 <- `j?`})), BYTES b#8*{b#8 <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#10?{j#10 <- `j?`})), BYTES b#9*{b#9 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#9?{j#9 <- `j?`})), BYTES b#6*{b#6 <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#10?{j#10 <- `j?`})), BYTES b#7*{b#7 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growmem_is_wf: `%%%`(meminst : meminst, nat : nat, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growmem_is_wf0{meminst : meminst, nat : nat, ret_val : meminst}: + `%%%`(meminst, nat, ret_val) + -- wf_meminst: `%`(meminst) + -- if ($growmem(meminst, nat) =/= ?()) + -- if (ret_val = !($growmem(meminst, nat))) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -12296,69 +13339,45 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.38 rule null{s : store}: `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.NULL_ADDR`_ref) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.33 rule i31{s : store, i : u31}: `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.I31_NUM`_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) - -- wf_store: `%`(s) -- wf_exninst: `%`(exn) - -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.35 rule host{s : store, a : addr}: `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.HOST_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 rule extern{s : store, ref : ref}: `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.EXTERN`_ref(ref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) @@ -12367,9 +13386,6 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) -- wf_reftype: `%`(rt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -12380,31 +13396,22 @@ relation Val_ok: `%|-%:%`(store, val, valtype) rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, $val_num(num), $valtype_numtype(nt)) -- Num_ok: `%|-%:%`(s, num, nt) - -- wf_store: `%`(s) - -- wf_num: `%`(num) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, $val_vec(vec), $valtype_vectype(vt)) -- Vec_ok: `%|-%:%`(s, vec, vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, $val_ref(ref), $valtype_reftype(rt)) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Packval_ok: `%|-%:%`(store, packval, packtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{s : store, pt : packtype, c : iN}: `%|-%:%`(s, PACK_packval(pt, c), pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(PACK_packval(pt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) @@ -12412,16 +13419,11 @@ relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) rule val{s : store, val : val, t : valtype}: `%|-%:%`(s, $fieldval_val(val), $storagetype_valtype(t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule packval{s : store, packval : packval, pt : packtype}: `%|-%:%`(s, $fieldval_packval(packval), $storagetype_packtype(pt)) -- Packval_ok: `%|-%:%`(s, packval, pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(packval) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -12433,48 +13435,36 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-111.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:113.1-115.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:117.1-119.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:121.1-123.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:125.1-128.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) -- wf_externtype: `%`(xt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -12484,36 +13474,82 @@ def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (iter_val#3 : deftype <: typeuse)*{iter_val#3 <- moduleinst.TYPES_moduleinst}) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_valtype_is_wf: `%%%`(moduleinst : moduleinst, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_valtype_is_wf0{moduleinst : moduleinst, valtype : valtype, ret_val : valtype}: + `%%%`(moduleinst, valtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $inst_valtype(moduleinst, valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (iter_val#4 : deftype <: typeuse)*{iter_val#4 <- moduleinst.TYPES_moduleinst}) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_reftype_is_wf: `%%%`(moduleinst : moduleinst, reftype : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_reftype_is_wf0{moduleinst : moduleinst, reftype : reftype, ret_val : reftype}: + `%%%`(moduleinst, reftype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_reftype: `%`(reftype) + -- if (ret_val = $inst_reftype(moduleinst, reftype)) + -- wf_reftype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (iter_val#5 : deftype <: typeuse)*{iter_val#5 <- moduleinst.TYPES_moduleinst}) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_globaltype_is_wf: `%%%`(moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_globaltype_is_wf0{moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype}: + `%%%`(moduleinst, globaltype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = $inst_globaltype(moduleinst, globaltype)) + -- wf_globaltype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (iter_val#6 : deftype <: typeuse)*{iter_val#6 <- moduleinst.TYPES_moduleinst}) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_memtype_is_wf: `%%%`(moduleinst : moduleinst, memtype : memtype, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_memtype_is_wf0{moduleinst : moduleinst, memtype : memtype, ret_val : memtype}: + `%%%`(moduleinst, memtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $inst_memtype(moduleinst, memtype)) + -- wf_memtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (iter_val#7 : deftype <: typeuse)*{iter_val#7 <- moduleinst.TYPES_moduleinst}) +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_tabletype_is_wf: `%%%`(moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_tabletype_is_wf0{moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype}: + `%%%`(moduleinst, tabletype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = $inst_tabletype(moduleinst, tabletype)) + -- wf_tabletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_ref.eq-true`: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref}: `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12521,274 +13557,183 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([$instr_val(val) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_1)]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_2)]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) -- if ($proj_uN_0(l).0 = 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) -- if ($proj_uN_0(l).0 > 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-true`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_if-false`{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [BR_instr(l)]) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [$instr_val(val)]) -- if (val =/= `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], []) -- if (val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_val: `%`(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], [$instr_val(val) BR_instr(l)]) -- if (val =/= `REF.NULL_ADDR`_val) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})], $instr_val(val)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`($instr_val(val)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-handler`{n : n, `catch*` : catch*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.tee`{val : val, x : idx}: `%~>%`([$instr_val(val) `LOCAL.TEE`_instr(x)], [$instr_val(val) $instr_val(val) `LOCAL.SET`_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.i31`{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref}: `%~>%`([$instr_ref(ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([$instr_ref(ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref}: `%~>%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr], [TRAP_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instr: `%`(TRAP_instr) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr], [$instr_ref(ref)]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12796,237 +13741,163 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) -- if (ref_1 = ref_2) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- if (ref_1 =/= ref_2) -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{sx : sx}: `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(`REF.I31_NUM`_instr(i)) - -- wf_instr: `%`(`I31.GET`_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new`{val : val, n : n, x : idx}: `%~>%`([$instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], $instr_val(val)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ref : ref}: `%~>%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{ref : ref}: `%~>%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) -- if (ref =/= `REF.NULL_ADDR`_ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-null`: `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{ref : ref}: `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [$instr_ref(ref)]) - -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) -- if ($unop_(nt, unop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) -- if ($binop_(nt, binop, c_1, c_2) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvunop_(V128_vectype, vvunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) -- if ($vunop_(sh, vunop, c_1) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*}: @@ -13036,64 +13907,48 @@ relation Step_pure: `%~>%`(instr*, instr*) -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), i))*{i <- `i*`} - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)} + -- (wf_uN: `%%`(32, $inez_($jsizenn(Jnn), !($proj_lane__2(i)))))*{i <- `i*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_1)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13101,9 +13956,7 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)} -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) @@ -13114,75 +13967,67 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)|) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_uN: `%%`(32, $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)} + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_2)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextunop__(sh_1, sh_2, vextunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1#3*{t_1#3 <- `t_1*`}), `%`_resulttype(t_2#3*{t_2#3 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1#4*{t_1#4 <- `t_1*`}), [], `%`_resulttype(t_2#4*{t_2#4 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#5*{t_1#5 <- `t_1*`}), `%`_resulttype(t_2#5*{t_2#5 <- `t_2*`}))) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1#2*{t_1#2 <- `t_1*`}), `%`_resulttype(t_2#2*{t_2#2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#3*{t_1#3 <- `t_1*`}), `%`_resulttype(t_2#3*{t_2#3 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t#1?{t#1 <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t#2?{t#2 <- `t?`})))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation blocktype__is_wf: `%%%`(state : state, blocktype : blocktype, ret_val : instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule blocktype__is_wf0{state : state, blocktype : blocktype, ret_val : instrtype}: + `%%%`(state, blocktype, ret_val) + -- wf_state: `%`(state) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $blocktype_(state, blocktype)) + -- wf_instrtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) @@ -13192,8 +14037,7 @@ relation `Step_read_before_br_on_cast-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13204,7 +14048,7 @@ relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13212,15 +14056,10 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: @@ -13229,10 +14068,7 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: @@ -13241,9 +14077,7 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.fill-zero`: `%`(config) @@ -13252,8 +14086,7 @@ relation `Step_read_before_table.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-zero`: `%`(config) @@ -13263,8 +14096,8 @@ relation `Step_read_before_table.copy-zero`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-le`: `%`(config) @@ -13273,7 +14106,6 @@ relation `Step_read_before_table.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -13281,8 +14113,8 @@ relation `Step_read_before_table.copy-le`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-gt`: `%`(config) @@ -13293,22 +14125,12 @@ relation `Step_read_before_table.copy-gt`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -13316,8 +14138,8 @@ relation `Step_read_before_table.copy-gt`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.init-zero`: `%`(config) @@ -13327,8 +14149,8 @@ relation `Step_read_before_table.init-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.fill-zero`: `%`(config) @@ -13337,8 +14159,7 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-zero`: `%`(config) @@ -13348,8 +14169,8 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-le`: `%`(config) @@ -13358,7 +14179,6 @@ relation `Step_read_before_memory.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -13366,8 +14186,8 @@ relation `Step_read_before_memory.copy-le`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.init-zero`: `%`(config) @@ -13377,8 +14197,8 @@ relation `Step_read_before_memory.init-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_ref.test-false`: `%`(config) @@ -13388,8 +14208,7 @@ relation `Step_read_before_ref.test-false`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13400,7 +14219,7 @@ relation `Step_read_before_ref.cast-fail`: `%`(config) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13411,8 +14230,23 @@ relation `Step_read_before_array.fill-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-zero`: `%`(config) @@ -13422,8 +14256,7 @@ relation `Step_read_before_array.copy-zero`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13431,8 +14264,7 @@ relation `Step_read_before_array.copy-zero`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-le`: `%`(config) @@ -13441,7 +14273,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13449,8 +14280,7 @@ relation `Step_read_before_array.copy-le`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13458,8 +14288,7 @@ relation `Step_read_before_array.copy-le`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-gt`: `%`(config) @@ -13472,17 +14301,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if ($sx(zt_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13490,7 +14308,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13498,8 +14315,7 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13507,8 +14323,7 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_elem-zero`: `%`(config) @@ -13517,8 +14332,7 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -13526,8 +14340,30 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-zero`: `%`(config) @@ -13538,8 +14374,7 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- if ($proj_num__0(j) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13548,8 +14383,7 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-num`: `%`(config) @@ -13558,7 +14392,6 @@ relation `Step_read_before_array.init_data-num`: `%`(config) `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: @@ -13567,8 +14400,7 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- if ($proj_num__0(j) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13577,8 +14409,7 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) @@ -13586,16 +14417,14 @@ relation Step_read: `%~>%`(config, instr*) rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13604,15 +14433,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: @@ -13620,15 +14447,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: @@ -13636,15 +14461,11 @@ relation Step_read: `%~>%`(config, instr*) -- if (a < |$funcinst(z)|) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-null`{z : state, yy : typeuse}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: @@ -13655,8 +14476,7 @@ relation Step_read: `%~>%`(config, instr*) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- (if ($default_(t) =/= ?()))*{t <- `t*`} -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) @@ -13667,72 +14487,48 @@ relation Step_read: `%~>%`(config, instr*) -- if (a < |$funcinst(z)|) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + -- wf_moduleinst: `%`($moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: @@ -13741,9 +14537,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: @@ -13752,75 +14546,60 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`($blocktype_(z, bt)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `local.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [$instr_val(val)]) -- if ($local(z, x) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) + -- (wf_val: `%`(iter))?{iter <- $local(z, x)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `global.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [$instr_val(val)]) -- if ($global(z, x).VALUE_globalinst = val) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) + -- wf_globalinst: `%`($global(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) - -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tableinst: `%`($table(z, x)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13828,8 +14607,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: @@ -13837,7 +14615,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: @@ -13845,12 +14622,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (n =/= 0) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -13858,15 +14629,14 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: @@ -13875,15 +14645,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_2) =/= ?()) -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: @@ -13891,15 +14652,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -13907,8 +14659,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -13917,7 +14669,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -13927,69 +14678,58 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, Jnn : Jnn}: @@ -13997,8 +14737,9 @@ relation Step_read: `%~>%`(config, instr*) -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: @@ -14018,8 +14758,9 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) @@ -14028,8 +14769,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: @@ -14038,16 +14778,16 @@ relation Step_read: `%~>%`(config, instr*) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: @@ -14057,8 +14797,10 @@ relation Step_read: `%~>%`(config, instr*) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, k)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) @@ -14067,8 +14809,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) - -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_meminst: `%`($mem(z, x)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14076,8 +14817,7 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: @@ -14085,7 +14825,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: @@ -14093,12 +14832,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (n =/= 0) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -14106,8 +14839,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -14116,7 +14849,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -14126,15 +14858,6 @@ relation Step_read: `%~>%`(config, instr*) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -14144,15 +14867,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14160,8 +14874,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14170,7 +14884,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14180,27 +14893,15 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL`_instr(ht)])) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -14208,16 +14909,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: @@ -14225,15 +14923,13 @@ relation Step_read: `%~>%`(config, instr*) -- Ref_ok: `%|-%:%`(s, ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: @@ -14242,16 +14938,13 @@ relation Step_read: `%~>%`(config, instr*) -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) =/= ?()))*{zt <- `zt*`} -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))}*{zt <- `zt*`} + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -14261,7 +14954,6 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) -- if (a < |$structinst(z)|) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14270,9 +14962,8 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) =/= ?()) -- if (!($default_($unpack(zt))) = ?(val)) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))} + -- wf_valtype: `%`($unpack(zt)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14280,17 +14971,14 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), $instr_ref(ref)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: @@ -14299,8 +14987,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14311,16 +14998,14 @@ relation Step_read: `%~>%`(config, instr*) -- if ($zsize(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- (wf_byte: `%`(iter))*{iter <- $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))} + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)}^n{c <- `c*`} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: @@ -14328,8 +15013,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: @@ -14339,27 +15023,20 @@ relation Step_read: `%~>%`(config, instr*) -- if (a < |$arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) -- if (a < |$arrayinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: @@ -14367,44 +15044,27 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- if (n =/= 0) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -14412,8 +15072,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -14421,45 +15080,23 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), []) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if (n =/= 0) - -- if (a_2 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) - -- if (a_1 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ($sx(zt_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14471,24 +15108,11 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ($sx(zt_2) =/= ?()) -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14496,54 +15120,34 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), []) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- if (n =/= 0) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- wf_eleminst: `%`($elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14551,8 +15155,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: @@ -14561,8 +15164,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_num__0(j) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14570,7 +15172,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), []) -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- if (n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: @@ -14582,15 +15183,8 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)} + -- wf_datainst: `%`($data(z, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14602,23 +15196,18 @@ relation Step: `%~>%`(config, config) rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -14626,8 +15215,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -14635,8 +15222,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) @@ -14644,8 +15229,6 @@ relation Step: `%~>%`(config, config) rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) @@ -14657,82 +15240,69 @@ relation Step: `%~>%`(config, config) -- if (a = |$exninst(z)|) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_taginst: `%`($tag(z, x)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 rule `local.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:322.1-323.58 rule `global.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:340.1-342.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-354.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) - -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_tableinst: `%`(!($growtable($table(z, x), n, ref))) + -- wf_tableinst: `%`($table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:356.1-357.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:417.1-418.51 rule `elem.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:501.1-504.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:506.1-510.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: @@ -14740,32 +15310,29 @@ relation Step: `%~>%`(config, config) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))} + -- wf_uN: `%%`(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.63 rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-531.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if ($proj_num__0(i) =/= ?()) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:534.1-537.50 rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-544.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: @@ -14776,8 +15343,7 @@ relation Step: `%~>%`(config, config) -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))} -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:553.1-556.37 @@ -14785,20 +15351,16 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_meminst: `%`(!($growmem($mem(z, x), n))) + -- wf_meminst: `%`($mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:558.1-559.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:619.1-620.51 rule `data.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:700.1-704.65 rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: @@ -14807,16 +15369,13 @@ relation Step: `%~>%`(config, config) -- if (a = |$structinst(z)|) -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`, zt <- `zt*`} -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:721.1-722.55 rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(val) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(val) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:724.1-727.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -14824,8 +15383,6 @@ relation Step: `%~>%`(config, config) -- if ($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val) =/= ?()) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:740.1-745.65 @@ -14834,16 +15391,13 @@ relation Step: `%~>%`(config, config) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`} -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) - -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-786.66 rule `array.set-null`{z : state, i : num_, val : val, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:788.1-790.39 rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: @@ -14851,8 +15405,7 @@ relation Step: `%~>%`(config, config) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-795.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: @@ -14860,8 +15413,6 @@ relation Step: `%~>%`(config, config) -- if ($proj_num__0(i) =/= ?()) -- if ($packfield_(zt, val) =/= ?()) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -14873,7 +15424,6 @@ relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: @@ -14881,8 +15431,8 @@ relation Steps: `%~>*%`(config, config) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14915,9 +15465,18 @@ def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) -- if (taginst = {TYPE tagtype}) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_taginst: `%`({TYPE tagtype}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctag_is_wf: `%%%`(store : store, tagtype : tagtype, ret_val : (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctag_is_wf0{store : store, tagtype : tagtype, ret_val : (store, tagaddr)}: + `%%%`(store, tagtype, ret_val) + -- wf_store: `%`(store) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = $alloctag(store, tagtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14929,6 +15488,22 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*}(s, [tagtype] ++ tagtype'#1*{tagtype'#1 <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- let{ja : tagaddr, s_1 : store} (s_1, ja) = $alloctag(s, tagtype) -- let{s_2 : store, `ja'*` : tagaddr*} (s_2, ja'#1*{ja'#1 <- `ja'*`}) = $alloctags(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}) + -- wf_store: `%`($alloctag(s, tagtype).0) + -- wf_store: `%`($alloctags(s_1, tagtype'#3*{tagtype'#3 <- `tagtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation alloctags_is_wf: `%%%`(store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule alloctags_is_wf0{store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_typeuse: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $alloctags(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14936,9 +15511,19 @@ def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, gl ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) -- if (globalinst = {TYPE globaltype, VALUE val}) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocglobal_is_wf: `%%%%`(store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocglobal_is_wf0{store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)}: + `%%%%`(store, globaltype, val, ret_val) + -- wf_store: `%`(store) + -- wf_globaltype: `%`(globaltype) + -- wf_val: `%`(val) + -- if (ret_val = $allocglobal(store, globaltype, val)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14950,6 +15535,23 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*}(s, [globaltype] ++ globaltype'#1*{globaltype'#1 <- `globaltype'*`}, [val] ++ val'#1*{val'#1 <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- let{ga : globaladdr, s_1 : store} (s_1, ga) = $allocglobal(s, globaltype, val) -- let{s_2 : store, `ga'*` : globaladdr*} (s_2, ga'#1*{ga'#1 <- `ga'*`}) = $allocglobals(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}) + -- wf_store: `%`($allocglobal(s, globaltype, val).0) + -- wf_store: `%`($allocglobals(s_1, globaltype'#3*{globaltype'#3 <- `globaltype'*`}, val'#3*{val'#3 <- `val'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation allocglobals_is_wf: `%%%%`(store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule allocglobals_is_wf0{store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $allocglobals(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14957,9 +15559,18 @@ def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#11?{j#11 <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#12?{j#12 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#13?{j#13 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmem_is_wf: `%%%`(store : store, memtype : memtype, ret_val : (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmem_is_wf0{store : store, memtype : memtype, ret_val : (store, memaddr)}: + `%%%`(store, memtype, ret_val) + -- wf_store: `%`(store) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $allocmem(store, memtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14971,6 +15582,22 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*}(s, [memtype] ++ memtype'#1*{memtype'#1 <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- let{ma : memaddr, s_1 : store} (s_1, ma) = $allocmem(s, memtype) -- let{s_2 : store, `ma'*` : memaddr*} (s_2, ma'#1*{ma'#1 <- `ma'*`}) = $allocmems(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}) + -- wf_store: `%`($allocmem(s, memtype).0) + -- wf_store: `%`($allocmems(s_1, memtype'#3*{memtype'#3 <- `memtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation allocmems_is_wf: `%%%`(store : store, var_0 : memtype*, ret_val : (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule allocmems_is_wf0{store : store, var_0 : memtype*, ret_val : (store, memaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_memtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocmems(store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14978,9 +15605,19 @@ def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, table ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j#14?{j#14 <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#15?{j#15 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#16?{j#16 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctable_is_wf: `%%%%`(store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctable_is_wf0{store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)}: + `%%%%`(store, tabletype, ref, ret_val) + -- wf_store: `%`(store) + -- wf_tabletype: `%`(tabletype) + -- wf_ref: `%`(ref) + -- if (ret_val = $alloctable(store, tabletype, ref)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14992,6 +15629,23 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*}(s, [tabletype] ++ tabletype'#1*{tabletype'#1 <- `tabletype'*`}, [ref] ++ ref'#1*{ref'#1 <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- let{ta : tableaddr, s_1 : store} (s_1, ta) = $alloctable(s, tabletype, ref) -- let{s_2 : store, `ta'*` : tableaddr*} (s_2, ta'#1*{ta'#1 <- `ta'*`}) = $alloctables(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}) + -- wf_store: `%`($alloctable(s, tabletype, ref).0) + -- wf_store: `%`($alloctables(s_1, tabletype'#3*{tabletype'#3 <- `tabletype'*`}, ref'#3*{ref'#3 <- `ref'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation alloctables_is_wf: `%%%%`(store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule alloctables_is_wf0{store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_tabletype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $alloctables(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14999,9 +15653,19 @@ def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocfunc_is_wf: `%%%%%`(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocfunc_is_wf0{store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)}: + `%%%%%`(store, deftype, funccode, moduleinst, ret_val) + -- wf_store: `%`(store) + -- wf_funccode: `%`(funccode) + -- wf_moduleinst: `%`(moduleinst) + -- if (ret_val = $allocfunc(store, deftype, funccode, moduleinst)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -15013,6 +15677,23 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*}(s, [dt] ++ dt'#3*{dt'#3 <- `dt'*`}, [funccode] ++ funccode'#1*{funccode'#1 <- `funccode'*`}, [moduleinst] ++ moduleinst'#1*{moduleinst'#1 <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- let{fa : funcaddr, s_1 : store} (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) -- let{s_2 : store, `fa'*` : funcaddr*} (s_2, fa'#1*{fa'#1 <- `fa'*`}) = $allocfuncs(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}) + -- wf_store: `%`($allocfunc(s, dt, funccode, moduleinst).0) + -- wf_store: `%`($allocfuncs(s_1, dt'#5*{dt'#5 <- `dt'*`}, funccode'#3*{funccode'#3 <- `funccode'*`}, moduleinst'#3*{moduleinst'#3 <- `moduleinst'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation allocfuncs_is_wf: `%%%%%`(store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule allocfuncs_is_wf0{store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)}: + `%%%%%`(store, var_0, var_1, var_2, ret_val) + -- wf_store: `%`(store) + -- (wf_funccode: `%`(var_1))*{var_1 <- var_1} + -- (wf_moduleinst: `%`(var_2))*{var_2 <- var_2} + -- if (ret_val = $allocfuncs(store, var_0, var_1, var_2)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15020,9 +15701,18 @@ def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte#2*{byte#2 <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) -- if (datainst = {BYTES byte#3*{byte#3 <- `byte*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_datainst: `%`({BYTES byte#4*{byte#4 <- `byte*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocdata_is_wf: `%%%%`(store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocdata_is_wf0{store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)}: + `%%%%`(store, datatype, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocdata(store, datatype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -15031,9 +15721,25 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 - def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**}(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#10*{b#10 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) - -- let{da : dataaddr, s_1 : store} (s_1, da) = $allocdata(s, ok, b#11*{b#11 <- `b*`}) + def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**}(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#8*{b#8 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- let{da : dataaddr, s_1 : store} (s_1, da) = $allocdata(s, ok, b#9*{b#9 <- `b*`}) -- let{s_2 : store, `da'*` : dataaddr*} (s_2, da'#1*{da'#1 <- `da'*`}) = $allocdatas(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}) + -- wf_store: `%`($allocdata(s, ok, b#10*{b#10 <- `b*`}).0) + -- wf_store: `%`($allocdatas(s_1, ok'#3*{ok'#3 <- `ok'*`}, b'#3*{b'#3 <- `b'*#3`}*{`b'*#3` <- `b'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation allocdatas_is_wf: `%%%%`(store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule allocdatas_is_wf0{store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocdatas(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15041,9 +15747,19 @@ def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref#1*{ref#1 <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) -- if (eleminst = {TYPE elemtype, REFS ref#2*{ref#2 <- `ref*`}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) -- wf_eleminst: `%`({TYPE elemtype, REFS ref#3*{ref#3 <- `ref*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocelem_is_wf: `%%%%`(store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocelem_is_wf0{store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)}: + `%%%%`(store, elemtype, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_reftype: `%`(elemtype) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocelem(store, elemtype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -15052,46 +15768,78 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 - def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**}(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#3*{ref'#3 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**}(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#4*{ref'#4 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- let{ea : elemaddr, s_1 : store} (s_1, ea) = $allocelem(s, rt, ref#5*{ref#5 <- `ref*`}) - -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'#1*{ea'#1 <- `ea'*`}) = $allocelems(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#4*{ref'#4 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}) + -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'#1*{ea'#1 <- `ea'*`}) = $allocelems(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#5*{ref'#5 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}) + -- wf_store: `%`($allocelem(s, rt, ref#6*{ref#6 <- `ref*`}).0) + -- wf_store: `%`($allocelems(s_1, rt'#3*{rt'#3 <- `rt'*`}, ref'#6*{ref'#6 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation allocelems_is_wf: `%%%%`(store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule allocelems_is_wf0{store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_reftype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocelems(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport(moduleinst : moduleinst, export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexport_is_wf: `%%%`(moduleinst : moduleinst, export : export, ret_val : exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexport_is_wf0{moduleinst : moduleinst, export : export, ret_val : exportinst}: + `%%%`(moduleinst, export, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_export: `%`(export) + -- if (ret_val = $allocexport(moduleinst, export)) + -- wf_exportinst: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export#4*{export#4 <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export#3*{export#3 <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexports_is_wf: `%%%`(moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexports_is_wf0{moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*}: + `%%%`(moduleinst, var_0, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- (wf_export: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocexports(moduleinst, var_0)) + -- (wf_exportinst: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `xi*` : exportinst*}(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}) = (s_7, moduleinst) - -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#2*{type#2 <- `type*`}), `%`_list(import#2*{import#2 <- `import*`}), `%`_list(tag#2*{tag#2 <- `tag*`}), `%`_list(global#4*{global#4 <- `global*`}), `%`_list(mem#4*{mem#4 <- `mem*`}), `%`_list(table#4*{table#4 <- `table*`}), `%`_list(func#3*{func#3 <- `func*`}), `%`_list(data#2*{data#2 <- `data*`}), `%`_list(elem#4*{elem#4 <- `elem*`}), start#4?{start#4 <- `start?`}, `%`_list(export#5*{export#5 <- `export*`})) = module + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#2*{type#2 <- `type*`}), `%`_list(import#2*{import#2 <- `import*`}), `%`_list(tag#2*{tag#2 <- `tag*`}), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list(func#3*{func#3 <- `func*`}), `%`_list(data#2*{data#2 <- `data*`}), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#4*{export#4 <- `export*`})) = module -- if (tag#3*{tag#3 <- `tag*`} = TAG_tag(tagtype#78)*{tagtype#78 <- `tagtype*`}) - -- if (global#5*{global#5 <- `global*`} = GLOBAL_global(globaltype#122, expr_G#1)*{expr_G#1 <- `expr_G*`, globaltype#122 <- `globaltype*`}) - -- if (mem#5*{mem#5 <- `mem*`} = MEMORY_mem(memtype#122)*{memtype#122 <- `memtype*`}) - -- if (table#5*{table#5 <- `table*`} = TABLE_table(tabletype#156, expr_T#1)*{expr_T#1 <- `expr_T*`, tabletype#156 <- `tabletype*`}) + -- if (global#4*{global#4 <- `global*`} = GLOBAL_global(globaltype#122, expr_G#1)*{expr_G#1 <- `expr_G*`, globaltype#122 <- `globaltype*`}) + -- if (mem#4*{mem#4 <- `mem*`} = MEMORY_mem(memtype#122)*{memtype#122 <- `memtype*`}) + -- if (table#4*{table#4 <- `table*`} = TABLE_table(tabletype#156, expr_T#1)*{expr_T#1 <- `expr_T*`, tabletype#156 <- `tabletype*`}) -- if (func#4*{func#4 <- `func*`} = FUNC_func(x#2, local#2*{local#2 <- `local*#82`}, expr_F#1)*{expr_F#1 <- `expr_F*`, `local*#82` <- `local**`, x#2 <- `x*`}) -- if (data#3*{data#3 <- `data*`} = DATA_data(byte#5*{byte#5 <- `byte*#110`}, datamode#110)*{`byte*#110` <- `byte**`, datamode#110 <- `datamode*`}) - -- if (elem#5*{elem#5 <- `elem*`} = ELEM_elem(elemtype#1, expr_E#1*{expr_E#1 <- `expr_E*#1`}, elemmode#230)*{elemmode#230 <- `elemmode*`, elemtype#1 <- `elemtype*`, `expr_E*#1` <- `expr_E**`}) + -- if (elem#4*{elem#4 <- `elem*`} = ELEM_elem(elemtype#1, expr_E#1*{expr_E#1 <- `expr_E*#1`}, elemmode#230)*{elemmode#230 <- `elemmode*`, elemtype#1 <- `elemtype*`, `expr_E*#1` <- `expr_E**`}) -- let{`aa_I*` : tagaddr*} aa_I#1*{aa_I#1 <- `aa_I*`} = $tagsxa(externaddr#2*{externaddr#2 <- `externaddr*`}) -- let{`ga_I*` : globaladdr*} ga_I#1*{ga_I#1 <- `ga_I*`} = $globalsxa(externaddr#3*{externaddr#3 <- `externaddr*`}) -- let{`ma_I*` : memaddr*} ma_I#1*{ma_I#1 <- `ma_I*`} = $memsxa(externaddr#4*{externaddr#4 <- `externaddr*`}) @@ -15106,31 +15854,62 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- let{s_5 : store, `da*` : dataaddr*} (s_5, da#1*{da#1 <- `da*`}) = $allocdatas(s_4, OK_datatype^|data#4*{data#4 <- `data*`}|{}, byte#6*{byte#6 <- `byte*#112`}*{`byte*#112` <- `byte**`}) -- let{s_6 : store, `ea*` : elemaddr*} (s_6, ea#1*{ea#1 <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype#2, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`})*{elemtype#2 <- `elemtype*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}) -- if ((s_7, fa#2*{fa#2 <- `fa*`}) = $allocfuncs(s_6, dt#14*{dt#14 <- `dt*`}[$proj_uN_0(x#3).0]*{x#3 <- `x*`}, FUNC_funccode(x#4, local#3*{local#3 <- `local*#84`}, expr_F#2)*{expr_F#2 <- `expr_F*`, `local*#84` <- `local**`, x#4 <- `x*`}, moduleinst^|func#6*{func#6 <- `func*`}|{})) - -- if (xi#1*{xi#1 <- `xi*`} = $allocexports({TYPES [], TAGS aa_I#2*{aa_I#2 <- `aa_I*`} ++ aa#2*{aa#2 <- `aa*`}, GLOBALS ga_I#2*{ga_I#2 <- `ga_I*`} ++ ga#2*{ga#2 <- `ga*`}, MEMS ma_I#2*{ma_I#2 <- `ma_I*`} ++ ma#2*{ma#2 <- `ma*`}, TABLES ta_I#2*{ta_I#2 <- `ta_I*`} ++ ta#2*{ta#2 <- `ta*`}, FUNCS fa_I#2*{fa_I#2 <- `fa_I*`} ++ fa#3*{fa#3 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#6*{export#6 <- `export*`})) + -- if (xi#1*{xi#1 <- `xi*`} = $allocexports({TYPES [], TAGS aa_I#2*{aa_I#2 <- `aa_I*`} ++ aa#2*{aa#2 <- `aa*`}, GLOBALS ga_I#2*{ga_I#2 <- `ga_I*`} ++ ga#2*{ga#2 <- `ga*`}, MEMS ma_I#2*{ma_I#2 <- `ma_I*`} ++ ma#2*{ma#2 <- `ma*`}, TABLES ta_I#2*{ta_I#2 <- `ta_I*`} ++ ta#2*{ta#2 <- `ta*`}, FUNCS fa_I#2*{fa_I#2 <- `fa_I*`} ++ fa#3*{fa#3 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#5*{export#5 <- `export*`})) -- if (moduleinst = {TYPES dt#15*{dt#15 <- `dt*`}, TAGS aa_I#3*{aa_I#3 <- `aa_I*`} ++ aa#3*{aa#3 <- `aa*`}, GLOBALS ga_I#3*{ga_I#3 <- `ga_I*`} ++ ga#3*{ga#3 <- `ga*`}, MEMS ma_I#3*{ma_I#3 <- `ma_I*`} ++ ma#3*{ma#3 <- `ma*`}, TABLES ta_I#3*{ta_I#3 <- `ta_I*`} ++ ta#3*{ta#3 <- `ta*`}, FUNCS fa_I#3*{fa_I#3 <- `fa_I*`} ++ fa#4*{fa#4 <- `fa*`}, DATAS da#2*{da#2 <- `da*`}, ELEMS ea#2*{ea#2 <- `ea*`}, EXPORTS xi#2*{xi#2 <- `xi*`}}) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) - -- wf_module: `%`(MODULE_module(`%`_list(type#4*{type#4 <- `type*`}), `%`_list(import#3*{import#3 <- `import*`}), `%`_list(tag#4*{tag#4 <- `tag*`}), `%`_list(global#6*{global#6 <- `global*`}), `%`_list(mem#6*{mem#6 <- `mem*`}), `%`_list(table#6*{table#6 <- `table*`}), `%`_list(func#7*{func#7 <- `func*`}), `%`_list(data#5*{data#5 <- `data*`}), `%`_list(elem#6*{elem#6 <- `elem*`}), start#5?{start#5 <- `start?`}, `%`_list(export#7*{export#7 <- `export*`}))) - -- (wf_tag: `%`(TAG_tag(tagtype#81)))*{tagtype#81 <- `tagtype*`} - -- (wf_global: `%`(GLOBAL_global(globaltype#125, expr_G#2)))*{expr_G#2 <- `expr_G*`, globaltype#125 <- `globaltype*`} - -- (wf_mem: `%`(MEMORY_mem(memtype#125)))*{memtype#125 <- `memtype*`} - -- (wf_table: `%`(TABLE_table(tabletype#159, expr_T#2)))*{expr_T#2 <- `expr_T*`, tabletype#159 <- `tabletype*`} - -- (wf_func: `%`(FUNC_func(x#5, local#4*{local#4 <- `local*#85`}, expr_F#3)))*{expr_F#3 <- `expr_F*`, `local*#85` <- `local**`, x#5 <- `x*`} - -- (wf_data: `%`(DATA_data(byte#7*{byte#7 <- `byte*#113`}, datamode#112)))*{`byte*#113` <- `byte**`, datamode#112 <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(elemtype#3, expr_E#2*{expr_E#2 <- `expr_E*#2`}, elemmode#232)))*{elemmode#232 <- `elemmode*`, elemtype#3 <- `elemtype*`, `expr_E*#2` <- `expr_E**`} - -- wf_moduleinst: `%`({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_moduleinst: `%`({TYPES dt#16*{dt#16 <- `dt*`}, TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) + -- wf_store: `%`($alloctags(s, $subst_all_tagtype(tagtype#81, $typeuse_deftype(dt#16)*{dt#16 <- `dt*`})*{tagtype#81 <- `tagtype*`}).0) + -- (wf_typeuse: `%`($subst_all_tagtype(tagtype#82, $typeuse_deftype(dt#17)*{dt#17 <- `dt*`})))*{tagtype#82 <- `tagtype*`} + -- wf_store: `%`($allocglobals(s_1, $subst_all_globaltype(globaltype#125, $typeuse_deftype(dt#18)*{dt#18 <- `dt*`})*{globaltype#125 <- `globaltype*`}, val_G#3*{val_G#3 <- `val_G*`}).0) + -- (wf_globaltype: `%`($subst_all_globaltype(globaltype#126, $typeuse_deftype(dt#19)*{dt#19 <- `dt*`})))*{globaltype#126 <- `globaltype*`} + -- wf_store: `%`($allocmems(s_2, $subst_all_memtype(memtype#125, $typeuse_deftype(dt#20)*{dt#20 <- `dt*`})*{memtype#125 <- `memtype*`}).0) + -- (wf_memtype: `%`($subst_all_memtype(memtype#126, $typeuse_deftype(dt#21)*{dt#21 <- `dt*`})))*{memtype#126 <- `memtype*`} + -- wf_store: `%`($alloctables(s_3, $subst_all_tabletype(tabletype#159, $typeuse_deftype(dt#22)*{dt#22 <- `dt*`})*{tabletype#159 <- `tabletype*`}, ref_T#3*{ref_T#3 <- `ref_T*`}).0) + -- (wf_tabletype: `%`($subst_all_tabletype(tabletype#160, $typeuse_deftype(dt#23)*{dt#23 <- `dt*`})))*{tabletype#160 <- `tabletype*`} + -- wf_store: `%`($allocdatas(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#113`}*{`byte*#113` <- `byte**`}).0) + -- wf_store: `%`($allocelems(s_5, $subst_all_reftype(elemtype#3, $typeuse_deftype(dt#24)*{dt#24 <- `dt*`})*{elemtype#3 <- `elemtype*`}, ref_E#3*{ref_E#3 <- `ref_E*#3`}*{`ref_E*#3` <- `ref_E**`}).0) + -- (wf_reftype: `%`($subst_all_reftype(elemtype#4, $typeuse_deftype(dt#25)*{dt#25 <- `dt*`})))*{elemtype#4 <- `elemtype*`} + -- wf_store: `%`($allocfuncs(s_6, dt#26*{dt#26 <- `dt*`}[$proj_uN_0(x#5).0]*{x#5 <- `x*`}, FUNC_funccode(x#6, local#4*{local#4 <- `local*#85`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#85` <- `local**`, x#6 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}).0) + -- (wf_exportinst: `%`(iter#341))*{iter#341 <- $allocexports({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#6*{export#6 <- `export*`})} + -- wf_module: `%`(MODULE_module(`%`_list(type#4*{type#4 <- `type*`}), `%`_list(import#3*{import#3 <- `import*`}), `%`_list(tag#4*{tag#4 <- `tag*`}), `%`_list(global#5*{global#5 <- `global*`}), `%`_list(mem#5*{mem#5 <- `mem*`}), `%`_list(table#5*{table#5 <- `table*`}), `%`_list(func#8*{func#8 <- `func*`}), `%`_list(data#6*{data#6 <- `data*`}), `%`_list(elem#5*{elem#5 <- `elem*`}), start#4?{start#4 <- `start?`}, `%`_list(export#7*{export#7 <- `export*`}))) + -- (wf_tag: `%`(TAG_tag(tagtype#83)))*{tagtype#83 <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype#127, expr_G#2)))*{expr_G#2 <- `expr_G*`, globaltype#127 <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype#127)))*{memtype#127 <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype#161, expr_T#2)))*{expr_T#2 <- `expr_T*`, tabletype#161 <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x#7, local#5*{local#5 <- `local*#86`}, expr_F#4)))*{expr_F#4 <- `expr_F*`, `local*#86` <- `local**`, x#7 <- `x*`} + -- (wf_data: `%`(DATA_data(byte#8*{byte#8 <- `byte*#114`}, datamode#112)))*{`byte*#114` <- `byte**`, datamode#112 <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype#5, expr_E#2*{expr_E#2 <- `expr_E*#2`}, elemmode#232)))*{elemmode#232 <- `elemmode*`, elemtype#5 <- `elemtype*`, `expr_E*#2` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt#27*{dt#27 <- `dt*`}, TAGS aa_I#6*{aa_I#6 <- `aa_I*`} ++ aa#6*{aa#6 <- `aa*`}, GLOBALS ga_I#6*{ga_I#6 <- `ga_I*`} ++ ga#6*{ga#6 <- `ga*`}, MEMS ma_I#6*{ma_I#6 <- `ma_I*`} ++ ma#6*{ma#6 <- `ma*`}, TABLES ta_I#6*{ta_I#6 <- `ta_I*`} ++ ta#6*{ta#6 <- `ta*`}, FUNCS fa_I#6*{fa_I#6 <- `fa_I*`} ++ fa#7*{fa#7 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmodule_is_wf: `%%%%%%%`(store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmodule_is_wf0{store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)}: + `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- (wf_ref: `%`(var_2))*{var_2 <- var_2} + -- (wf_ref: `%`(var_3))*{var_3 <- var_3}*{var_3 <- var_3} + -- if (ret_val = $allocmodule(store, module, var_0, var_1, var_2, var_3)) + -- wf_store: `%`(ret_val.0) + -- wf_moduleinst: `%`(ret_val.1) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_(dataidx : dataidx, data : data) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, n : nat, `b*` : byte*}(x, DATA_data(b#12^n{b#12 <- `b*`}, PASSIVE_datamode)) = [] + def $rundata_{x : uN, n : nat, `b*` : byte*}(x, DATA_data(b#11^n{b#11 <- `b*`}, PASSIVE_datamode)) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}(x, DATA_data(b#12^n{b#12 <- `b*`}, ACTIVE_datamode(y, instr#9*{instr#9 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation rundata__is_wf: `%%%`(dataidx : dataidx, data : data, ret_val : instr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}(x, DATA_data(b#13^n{b#13 <- `b*`}, ACTIVE_datamode(y, instr#7*{instr#7 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(y, x)) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) + rule rundata__is_wf0{dataidx : dataidx, data : data, ret_val : instr*}: + `%%%`(dataidx, data, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- wf_data: `%`(data) + -- if (ret_val = $rundata_(dataidx, data)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* @@ -15138,13 +15917,18 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e#1^n{e#1 <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e#2^n{e#2 <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e#3^n{e#3 <- `e*`}, ACTIVE_elemmode(y, instr#8*{instr#8 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(`TABLE.INIT`_instr(y, x)) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e#3^n{e#3 <- `e*`}, ACTIVE_elemmode(y, instr#10*{instr#10 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation runelem__is_wf: `%%%`(elemidx : elemidx, elem : elem, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule runelem__is_wf0{elemidx : elemidx, elem : elem, ret_val : instr*}: + `%%%`(elemidx, elem, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- wf_elem: `%`(elem) + -- if (ret_val = $runelem_(elemidx, elem)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -15156,9 +15940,25 @@ def $evalexprs(state : state, expr*) : (state, ref*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-165.46 def $evalexprs{z : state, expr : instr*, `expr'*` : expr*, ref : ref, z' : state}(z, [expr] ++ expr'#1*{expr'#1 <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [$val_ref(ref)]) - -- let{z'' : state, `ref'*` : ref*} (z'', ref'#5*{ref'#5 <- `ref'*`}) = $evalexprs(z', expr'#2*{expr'#2 <- `expr'*`}) - -- wf_ref: `%`(ref) + -- let{z'' : state, `ref'*` : ref*} (z'', ref'#7*{ref'#7 <- `ref'*`}) = $evalexprs(z', expr'#2*{expr'#2 <- `expr'*`}) -- wf_state: `%`(z') + -- wf_state: `%`($evalexprs(z', expr'#3*{expr'#3 <- `expr'*`}).0) + -- (wf_ref: `%`(iter#342))*{iter#342 <- $evalexprs(z', expr'#4*{expr'#4 <- `expr'*`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation evalexprs_is_wf: `%%%`(state : state, var_0 : expr*, ret_val : (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule evalexprs_is_wf0{state : state, var_0 : expr*, ret_val : (state, ref*)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprs(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15169,9 +15969,28 @@ def $evalexprss(state : state, expr**) : (state, ref**) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:168.1-168.35 def $evalexprss{z : state}(z, []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.1-172.49 - def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**}(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#3*{expr'#3 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) - -- let{`ref*` : ref*, z' : state} (z', ref#6*{ref#6 <- `ref*`}) = $evalexprs(z, expr#366*{expr#366 <- `expr*`}) - -- let{z'' : state, `ref'**` : ref**} (z'', ref'#6*{ref'#6 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`}) = $evalexprss(z', expr'#4*{expr'#4 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}) + def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**}(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#5*{expr'#5 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- let{`ref*` : ref*, z' : state} (z', ref#7*{ref#7 <- `ref*`}) = $evalexprs(z, expr#366*{expr#366 <- `expr*`}) + -- let{z'' : state, `ref'**` : ref**} (z'', ref'#8*{ref'#8 <- `ref'*#4`}*{`ref'*#4` <- `ref'**`}) = $evalexprss(z', expr'#6*{expr'#6 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}) + -- wf_state: `%`($evalexprs(z, expr#367*{expr#367 <- `expr*`}).0) + -- (wf_ref: `%`(iter#343))*{iter#343 <- $evalexprs(z, expr#368*{expr#368 <- `expr*`}).1} + -- wf_state: `%`($evalexprss(z', expr'#7*{expr'#7 <- `expr'*#3`}*{`expr'*#3` <- `expr'**`}).0) + -- (wf_ref: `%`(iter#345))*{iter#345 <- iter#344}*{iter#344 <- $evalexprss(z', expr'#8*{expr'#8 <- `expr'*#4`}*{`expr'*#4` <- `expr'**`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation evalexprss_is_wf: `%%%`(state : state, var_0 : expr**, ret_val : (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule evalexprss_is_wf0{state : state, var_0 : expr**, ret_val : (state, ref**)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprss(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15182,63 +16001,111 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:175.1-175.41 def $evalglobals{z : state}(z, [], []) = (z, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 - def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, val : val, z' : state}(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#5*{expr'#5 <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, val : val, z' : state}(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#9*{expr'#9 <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) -- let{s : store, f : frame} `%;%`_state(s, f) = z' -- let{s' : store, a : addr} (s', a) = $allocglobal(s, gt, val) - -- let{z'' : state, `val'*` : val*} (z'', val'#3*{val'#3 <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#6*{expr'#6 <- `expr'*`}) - -- wf_val: `%`(val) + -- let{z'' : state, `val'*` : val*} (z'', val'#4*{val'#4 <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#10*{expr'#10 <- `expr'*`}) -- wf_state: `%`(z') + -- wf_store: `%`($allocglobal(s, gt, val).0) + -- wf_state: `%`($evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#3*{gt'#3 <- `gt'*`}, expr'#11*{expr'#11 <- `expr'*`}).0) + -- (wf_val: `%`(iter#346))*{iter#346 <- $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#4*{gt'#4 <- `gt'*`}, expr'#12*{expr'#12 <- `expr'*`}).1} -- wf_state: `%`(`%;%`_state(s, f)) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) } +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation evalglobals_is_wf: `%%%%`(state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule evalglobals_is_wf0{state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)}: + `%%%%`(state, var_0, var_1, ret_val) + -- wf_state: `%`(state) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_instr: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $evalglobals(state, var_0, var_1)) + -- wf_state: `%`(ret_val.0) + -- (wf_val: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, `xt_I*` : externtype*, `xt_E*` : externtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, i_D : nat, i_E : nat}(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I#1*{xt_I#1 <- `xt_I*`}, xt_E#1*{xt_E#1 <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr#8, xt_I#2))*{externaddr#8 <- `externaddr*`, xt_I#2 <- `xt_I*`} - -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#5*{type#5 <- `type*`}), `%`_list(import#4*{import#4 <- `import*`}), `%`_list(tag#5*{tag#5 <- `tag*`}), `%`_list(global#7*{global#7 <- `global*`}), `%`_list(mem#7*{mem#7 <- `mem*`}), `%`_list(table#7*{table#7 <- `table*`}), `%`_list(func#8*{func#8 <- `func*`}), `%`_list(data#6*{data#6 <- `data*`}), `%`_list(elem#7*{elem#7 <- `elem*`}), start#6?{start#6 <- `start?`}, `%`_list(export#8*{export#8 <- `export*`})) = module - -- if (global#8*{global#8 <- `global*`} = GLOBAL_global(globaltype#127, expr_G#3)*{expr_G#3 <- `expr_G*`, globaltype#127 <- `globaltype*`}) - -- if (table#8*{table#8 <- `table*`} = TABLE_table(tabletype#161, expr_T#3)*{expr_T#3 <- `expr_T*`, tabletype#161 <- `tabletype*`}) - -- if (data#7*{data#7 <- `data*`} = DATA_data(byte#8*{byte#8 <- `byte*#117`}, datamode#116)*{`byte*#117` <- `byte**`, datamode#116 <- `datamode*`}) - -- if (elem#8*{elem#8 <- `elem*`} = ELEM_elem(reftype#517, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#517 <- `reftype*`}) - -- if (start#7?{start#7 <- `start?`} = START_start(x#6)?{x#6 <- `x?`}) - -- if (moduleinst_0 = {TYPES $alloctypes(type#6*{type#6 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#9*{externaddr#9 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#10*{externaddr#10 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#9*{func#9 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#5*{type#5 <- `type*`}), `%`_list(import#4*{import#4 <- `import*`}), `%`_list(tag#5*{tag#5 <- `tag*`}), `%`_list(global#6*{global#6 <- `global*`}), `%`_list(mem#6*{mem#6 <- `mem*`}), `%`_list(table#6*{table#6 <- `table*`}), `%`_list(func#9*{func#9 <- `func*`}), `%`_list(data#7*{data#7 <- `data*`}), `%`_list(elem#6*{elem#6 <- `elem*`}), start#5?{start#5 <- `start?`}, `%`_list(export#8*{export#8 <- `export*`})) = module + -- if (global#7*{global#7 <- `global*`} = GLOBAL_global(globaltype#129, expr_G#3)*{expr_G#3 <- `expr_G*`, globaltype#129 <- `globaltype*`}) + -- if (table#7*{table#7 <- `table*`} = TABLE_table(tabletype#163, expr_T#3)*{expr_T#3 <- `expr_T*`, tabletype#163 <- `tabletype*`}) + -- if (data#8*{data#8 <- `data*`} = DATA_data(byte#9*{byte#9 <- `byte*#118`}, datamode#116)*{`byte*#118` <- `byte**`, datamode#116 <- `datamode*`}) + -- if (elem#7*{elem#7 <- `elem*`} = ELEM_elem(reftype#516, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#516 <- `reftype*`}) + -- if (start#6?{start#6 <- `start?`} = START_start(x#8)?{x#8 <- `x?`}) + -- if (moduleinst_0 = {TYPES $alloctypes(type#6*{type#6 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#9*{externaddr#9 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#10*{externaddr#10 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#10*{func#10 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- let{z' : state, `val_G*` : val*} (z', val_G#3*{val_G#3 <- `val_G*`}) = $evalglobals(z, globaltype#129*{globaltype#129 <- `globaltype*`}, expr_G#4*{expr_G#4 <- `expr_G*`}) - -- let{z'' : state, `ref_T*` : ref*} (z'', ref_T#3*{ref_T#3 <- `ref_T*`}) = $evalexprs(z', expr_T#4*{expr_T#4 <- `expr_T*`}) - -- let{z''' : state, `ref_E**` : ref**} (z''', ref_E#3*{ref_E#3 <- `ref_E*#3`}*{`ref_E*#3` <- `ref_E**`}) = $evalexprss(z'', expr_E#4*{expr_E#4 <- `expr_E*#4`}*{`expr_E*#4` <- `expr_E**`}) + -- let{z' : state, `val_G*` : val*} (z', val_G#4*{val_G#4 <- `val_G*`}) = $evalglobals(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#4*{expr_G#4 <- `expr_G*`}) + -- let{z'' : state, `ref_T*` : ref*} (z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = $evalexprs(z', expr_T#4*{expr_T#4 <- `expr_T*`}) + -- let{z''' : state, `ref_E**` : ref**} (z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = $evalexprss(z'', expr_E#4*{expr_E#4 <- `expr_E*#4`}*{`expr_E*#4` <- `expr_E**`}) -- let{s''' : store, f : frame} `%;%`_state(s''', f) = z''' - -- let{s'''' : store, moduleinst : moduleinst} (s'''', moduleinst) = $allocmodule(s''', module, externaddr#11*{externaddr#11 <- `externaddr*`}, val_G#4*{val_G#4 <- `val_G*`}, ref_T#4*{ref_T#4 <- `ref_T*`}, ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) - -- let{`instr_D*` : instr*} instr_D#1*{instr_D#1 <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#1), data#9*{data#9 <- `data*`}[i_D#1])^(i_D#1<|data#8*{data#8 <- `data*`}|){}) - -- let{`instr_E*` : instr*} instr_E#1*{instr_E#1 <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#1), elem#10*{elem#10 <- `elem*`}[i_E#1])^(i_E#1<|elem#9*{elem#9 <- `elem*`}|){}) - -- let{`instr_S?` : instr?} instr_S#1?{instr_S#1 <- `instr_S?`} = CALL_instr(x#7)?{x#7 <- `x?`} + -- let{s'''' : store, moduleinst : moduleinst} (s'''', moduleinst) = $allocmodule(s''', module, externaddr#11*{externaddr#11 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}) + -- let{`instr_D*` : instr*} instr_D#1*{instr_D#1 <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#1), data#10*{data#10 <- `data*`}[i_D#1])^(i_D#1<|data#9*{data#9 <- `data*`}|){}) + -- let{`instr_E*` : instr*} instr_E#1*{instr_E#1 <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#1), elem#9*{elem#9 <- `elem*`}[i_E#1])^(i_E#1<|elem#8*{elem#8 <- `elem*`}|){}) + -- let{`instr_S?` : instr?} instr_S#1?{instr_S#1 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`} -- wf_state: `%`(z) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E#2*{instr_E#2 <- `instr_E*`} ++ instr_D#2*{instr_D#2 <- `instr_D*`} ++ lift(instr_S#2?{instr_S#2 <- `instr_S?`}))) + -- wf_state: `%`($evalglobals(z, globaltype#132*{globaltype#132 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}).0) + -- (wf_val: `%`(iter#347))*{iter#347 <- $evalglobals(z, globaltype#133*{globaltype#133 <- `globaltype*`}, expr_G#6*{expr_G#6 <- `expr_G*`}).1} + -- wf_state: `%`($evalexprs(z', expr_T#5*{expr_T#5 <- `expr_T*`}).0) + -- (wf_ref: `%`(iter#348))*{iter#348 <- $evalexprs(z', expr_T#6*{expr_T#6 <- `expr_T*`}).1} + -- wf_state: `%`($evalexprss(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}).0) + -- (wf_ref: `%`(iter#350))*{iter#350 <- iter#349}*{iter#349 <- $evalexprss(z'', expr_E#6*{expr_E#6 <- `expr_E*#6`}*{`expr_E*#6` <- `expr_E**`}).1} + -- wf_store: `%`($allocmodule(s''', module, externaddr#12*{externaddr#12 <- `externaddr*`}, val_G#6*{val_G#6 <- `val_G*`}, ref_T#6*{ref_T#6 <- `ref_T*`}, ref_E#6*{ref_E#6 <- `ref_E*#6`}*{`ref_E*#6` <- `ref_E**`}).0) + -- wf_moduleinst: `%`($allocmodule(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#7*{val_G#7 <- `val_G*`}, ref_T#7*{ref_T#7 <- `ref_T*`}, ref_E#7*{ref_E#7 <- `ref_E*#7`}*{`ref_E*#7` <- `ref_E**`}).1) + -- (wf_instr: `%`(iter#351))*{iter#351 <- $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#2), data#12*{data#12 <- `data*`}[i_D#2])^(i_D#2<|data#11*{data#11 <- `data*`}|){})} + -- (wf_instr: `%`(iter#352))*{iter#352 <- $rundata_(`%`_dataidx(i_D#3), data#14*{data#14 <- `data*`}[i_D#3])}^(i_D#3<|data#13*{data#13 <- `data*`}|){} + -- (wf_instr: `%`(iter#353))*{iter#353 <- $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#2), elem#11*{elem#11 <- `elem*`}[i_E#2])^(i_E#2<|elem#10*{elem#10 <- `elem*`}|){})} + -- (wf_instr: `%`(iter#354))*{iter#354 <- $runelem_(`%`_elemidx(i_E#3), elem#13*{elem#13 <- `elem*`}[i_E#3])}^(i_E#3<|elem#12*{elem#12 <- `elem*`}|){} -- wf_moduletype: `%`(`%->%`_moduletype(xt_I#3*{xt_I#3 <- `xt_I*`}, xt_E#2*{xt_E#2 <- `xt_E*`})) - -- wf_module: `%`(MODULE_module(`%`_list(type#7*{type#7 <- `type*`}), `%`_list(import#5*{import#5 <- `import*`}), `%`_list(tag#6*{tag#6 <- `tag*`}), `%`_list(global#9*{global#9 <- `global*`}), `%`_list(mem#8*{mem#8 <- `mem*`}), `%`_list(table#9*{table#9 <- `table*`}), `%`_list(func#10*{func#10 <- `func*`}), `%`_list(data#10*{data#10 <- `data*`}), `%`_list(elem#11*{elem#11 <- `elem*`}), start#8?{start#8 <- `start?`}, `%`_list(export#9*{export#9 <- `export*`}))) - -- (wf_global: `%`(GLOBAL_global(globaltype#130, expr_G#5)))*{expr_G#5 <- `expr_G*`, globaltype#130 <- `globaltype*`} - -- (wf_table: `%`(TABLE_table(tabletype#163, expr_T#5)))*{expr_T#5 <- `expr_T*`, tabletype#163 <- `tabletype*`} - -- (wf_data: `%`(DATA_data(byte#9*{byte#9 <- `byte*#119`}, datamode#118)))*{`byte*#119` <- `byte**`, datamode#118 <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(reftype#519, expr_E#5*{expr_E#5 <- `expr_E*#5`}, elemmode#239)))*{elemmode#239 <- `elemmode*`, `expr_E*#5` <- `expr_E**`, reftype#519 <- `reftype*`} - -- (wf_start: `%`(START_start(x#8)))?{x#8 <- `x?`} - -- wf_moduleinst: `%`({TYPES $alloctypes(type#8*{type#8 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#12*{externaddr#12 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#13*{externaddr#13 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#11*{func#11 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_module: `%`(MODULE_module(`%`_list(type#7*{type#7 <- `type*`}), `%`_list(import#5*{import#5 <- `import*`}), `%`_list(tag#6*{tag#6 <- `tag*`}), `%`_list(global#8*{global#8 <- `global*`}), `%`_list(mem#7*{mem#7 <- `mem*`}), `%`_list(table#8*{table#8 <- `table*`}), `%`_list(func#11*{func#11 <- `func*`}), `%`_list(data#15*{data#15 <- `data*`}), `%`_list(elem#14*{elem#14 <- `elem*`}), start#7?{start#7 <- `start?`}, `%`_list(export#9*{export#9 <- `export*`}))) + -- (wf_global: `%`(GLOBAL_global(globaltype#134, expr_G#7)))*{expr_G#7 <- `expr_G*`, globaltype#134 <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype#165, expr_T#7)))*{expr_T#7 <- `expr_T*`, tabletype#165 <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte#10*{byte#10 <- `byte*#120`}, datamode#118)))*{`byte*#120` <- `byte**`, datamode#118 <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype#518, expr_E#7*{expr_E#7 <- `expr_E*#7`}, elemmode#239)))*{elemmode#239 <- `elemmode*`, `expr_E*#7` <- `expr_E**`, reftype#518 <- `reftype*`} + -- (wf_start: `%`(START_start(x#10)))?{x#10 <- `x?`} + -- wf_moduleinst: `%`({TYPES $alloctypes(type#8*{type#8 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#14*{externaddr#14 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#15*{externaddr#15 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#12*{func#12 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) -- wf_state: `%`(`%;%`_state(s''', f)) - -- (wf_uN: `%%`(32, `%`_uN(i_D#2)))^(i_D#2<|data#11*{data#11 <- `data*`}|){} - -- (wf_uN: `%%`(32, `%`_uN(i_E#2)))^(i_E#2<|elem#12*{elem#12 <- `elem*`}|){} - -- (wf_instr: `%`(CALL_instr(x#9)))?{x#9 <- `x?`} + -- (wf_uN: `%%`(32, `%`_uN(i_D#4)))^(i_D#4<|data#16*{data#16 <- `data*`}|){} + -- (wf_uN: `%%`(32, `%`_uN(i_E#4)))^(i_E#4<|elem#15*{elem#15 <- `elem*`}|){} + -- (wf_instr: `%`(CALL_instr(x#11)))?{x#11 <- `x?`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation instantiate_is_wf: `%%%%`(store : store, module : module, var_0 : externaddr*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule instantiate_is_wf0{store : store, module : module, var_0 : externaddr*, ret_val : config}: + `%%%%`(store, module, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- if (ret_val = $instantiate(store, module, var_0)) + -- wf_config: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val#1*{val#1 <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))]) - -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1#6*{t_1#6 <- `t_1*`}), `%`_resulttype(t_2#6*{t_2#6 <- `t_2*`}))) - -- (Val_ok: `%|-%:%`(s, val#2, t_1#7))*{t_1#7 <- `t_1*`, val#2 <- `val*`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val#3)*{val#3 <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#8*{t_1#8 <- `t_1*`}), `%`_resulttype(t_2#7*{t_2#7 <- `t_2*`}))) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1#4*{t_1#4 <- `t_1*`}), `%`_resulttype(t_2#4*{t_2#4 <- `t_2*`}))) + -- (Val_ok: `%|-%:%`(s, val#2, t_1#5))*{t_1#5 <- `t_1*`, val#2 <- `val*`} + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#6*{t_1#6 <- `t_1*`}), `%`_resulttype(t_2#5*{t_2#5 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation invoke_is_wf: `%%%%`(store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule invoke_is_wf0{store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config}: + `%%%%`(store, funcaddr, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_val: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $invoke(store, funcaddr, var_0)) + -- wf_config: `%`(ret_val) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec syntax castop = (null?, null?) @@ -15258,6 +16125,14 @@ syntax nopt = u32* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec def $ieee_(N : N, rat : rat) : fNmag +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation ieee__is_wf: `%%%`(N : N, rat : rat, ret_val : fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule ieee__is_wf0{N : N, rat : rat, ret_val : fNmag}: + `%%%`(N, rat, ret_val) + -- if (ret_val = $ieee_(N, rat)) + -- wf_fNmag: `%%`(N, ret_val) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec syntax idctxt = { @@ -15302,11 +16177,23 @@ rec { def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 def $concat_idctxt{I : idctxt, `I'*` : I*}([I] ++ I'#1*{I'#1 <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation concat_idctxt_is_wf: `%%`(var_0 : idctxt*, ret_val : idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule concat_idctxt_is_wf0{var_0 : idctxt*, ret_val : idctxt}: + `%%`(var_0, ret_val) + -- (wf_idctxt: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $concat_idctxt(var_0)) + -- wf_idctxt: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -15324,7 +16211,17 @@ relation Idctxt_ok: `|-%:OK`(idctxt) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -- wf_idctxt: `%`(I) + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TYPES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TAGS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.GLOBALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.MEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TABLES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.FUNCS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.DATAS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.ELEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LOCALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LABELS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])}*{`field*` <- `field**`} -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec @@ -15472,6 +16369,19 @@ def $importsd(decl*) : import* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation importsd_is_wf: `%%`(var_0 : decl*, ret_val : import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule importsd_is_wf0{var_0 : decl*, ret_val : import*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $importsd(var_0)) + -- (wf_import: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 @@ -15485,6 +16395,19 @@ def $tagsd(decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation tagsd_is_wf: `%%`(var_0 : decl*, ret_val : tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule tagsd_is_wf0{var_0 : decl*, ret_val : tag*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tagsd(var_0)) + -- (wf_tag: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 @@ -15498,6 +16421,19 @@ def $globalsd(decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation globalsd_is_wf: `%%`(var_0 : decl*, ret_val : global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule globalsd_is_wf0{var_0 : decl*, ret_val : global*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsd(var_0)) + -- (wf_global: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 @@ -15511,6 +16447,19 @@ def $memsd(decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation memsd_is_wf: `%%`(var_0 : decl*, ret_val : mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule memsd_is_wf0{var_0 : decl*, ret_val : mem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsd(var_0)) + -- (wf_mem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 @@ -15524,6 +16473,19 @@ def $tablesd(decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation tablesd_is_wf: `%%`(var_0 : decl*, ret_val : table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule tablesd_is_wf0{var_0 : decl*, ret_val : table*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesd(var_0)) + -- (wf_table: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 @@ -15537,6 +16499,19 @@ def $funcsd(decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation funcsd_is_wf: `%%`(var_0 : decl*, ret_val : func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule funcsd_is_wf0{var_0 : decl*, ret_val : func*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $funcsd(var_0)) + -- (wf_func: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 @@ -15550,6 +16525,19 @@ def $datasd(decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation datasd_is_wf: `%%`(var_0 : decl*, ret_val : data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule datasd_is_wf0{var_0 : decl*, ret_val : data*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $datasd(var_0)) + -- (wf_data: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 @@ -15563,6 +16551,19 @@ def $elemsd(decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation elemsd_is_wf: `%%`(var_0 : decl*, ret_val : elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule elemsd_is_wf0{var_0 : decl*, ret_val : elem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $elemsd(var_0)) + -- (wf_elem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 @@ -15576,6 +16577,19 @@ def $startsd(decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation startsd_is_wf: `%%`(var_0 : decl*, ret_val : start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule startsd_is_wf0{var_0 : decl*, ret_val : start*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $startsd(var_0)) + -- (wf_start: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 def $exportsd(decl*) : export* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 @@ -15586,11 +16600,25 @@ def $exportsd(decl*) : export* def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#33*{decl'#33 <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) } +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation exportsd_is_wf: `%%`(var_0 : decl*, ret_val : export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule exportsd_is_wf0{var_0 : decl*, ret_val : export*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $exportsd(var_0)) + -- (wf_export: `%`(ret_val))*{ret_val <- ret_val} +} + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered(decl*) : bool ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{`decl*` : decl*}(decl#1*{decl#1 <- `decl*`}) = true -- if ($importsd(decl#2*{decl#2 <- `decl*`}) = []) + -- (wf_import: `%`(iter#355))*{iter#355 <- $importsd(decl#3*{decl#3 <- `decl*`})} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*}(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}) = (((((($importsd(decl_1#7*{decl_1#7 <- `decl_1*`}) = []) /\ ($tagsd(decl_1#6*{decl_1#6 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1#5*{decl_1#5 <- `decl_1*`}) = [])) /\ ($memsd(decl_1#4*{decl_1#4 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1#3*{decl_1#3 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1#2*{decl_1#2 <- `decl_1*`}) = [])) @@ -15616,7 +16644,6 @@ relation Context_ok: `|-%:OK`(context) -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt)])))*{rt <- `rt*`} -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt')])))?{rt' <- `rt'?`} -- (if ($proj_uN_0(x).0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} - -- wf_context: `%`(C) -- wf_context: `%`(C_0) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) @@ -15632,23 +16659,16 @@ relation Localval_ok: `%|-%:%`(store, val?, localtype) rule set{s : store, val : val, t : valtype}: `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(val) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule unset{s : store}: `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, BOT_valtype)) - -- wf_store: `%`(s) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, BOT_valtype)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Datainst_ok: `%|-%:%`(store, datainst, datatype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{s : store, `b*` : byte*}: `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) - -- wf_store: `%`(s) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) @@ -15657,8 +16677,6 @@ relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15667,9 +16685,7 @@ relation Exportinst_ok: `%|-%:OK`(store, exportinst) rule _{s : store, nm : name, xa : externaddr, xt : externtype}: `%|-%:OK`(s, {NAME nm, ADDR xa}) -- Externaddr_ok: `%|-%:%`(s, xa, xt) - -- wf_store: `%`(s) -- wf_externtype: `%`(xt) - -- wf_exportinst: `%`({NAME nm, ADDR xa}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) @@ -15697,9 +16713,6 @@ relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) -- if (|TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}| > 0) -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} - -- wf_store: `%`(s) - -- wf_moduleinst: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}) - -- wf_context: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (wf_externtype: `%`(TAG_externtype(tagtype)))*{tagtype <- `tagtype*`} -- (wf_externtype: `%`(GLOBAL_externtype(globaltype)))*{globaltype <- `globaltype*`} @@ -15715,10 +16728,6 @@ relation Frame_ok: `%|-%:%`(store, frame, context) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- if (|`lct*`| = |`val?*`|) -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) - -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rec { @@ -15729,29 +16738,18 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) rule plain{s : store, C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 rule ref{s : store, C : context, ref : ref, rt : reftype}: `%;%|-%:%`(s, C, $instr_ref(ref), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_ref: `%`(ref) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []}) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) @@ -15761,30 +16759,19 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) -- Frame_ok: `%|-%:%`(s, f, C') -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) -- wf_context: `%`(C') - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRAP_instr) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 @@ -15792,9 +16779,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 rule empty{s : store, C : context}: `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: @@ -15806,11 +16790,7 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- if ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}) =/= ?()) -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} @@ -15822,10 +16802,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 @@ -15833,10 +16809,6 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 @@ -15845,9 +16817,6 @@ relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) } @@ -15857,8 +16826,6 @@ relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) rule _{s : store, jt : tagtype}: `%|-%:%`(s, {TYPE jt}, jt) -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) - -- wf_store: `%`(s) - -- wf_taginst: `%`({TYPE jt}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15868,10 +16835,8 @@ relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Val_ok: `%|-%:%`(s, val, t) - -- wf_store: `%`(s) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Meminst_ok: `%|-%:%`(store, meminst, memtype) @@ -15880,10 +16845,8 @@ relation Meminst_ok: `%|-%:%`(store, meminst, memtype) `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) - -- wf_store: `%`(s) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) @@ -15893,10 +16856,8 @@ relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- if (|ref*{ref <- `ref*`}| = n) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} - -- wf_store: `%`(s) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) @@ -15907,9 +16868,7 @@ relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) -- Func_ok: `%|-%:%`(C, func, dt') -- Deftype_sub: `%|-%<:%`(C, dt', dt) - -- wf_store: `%`(s) -- wf_context: `%`(C) - -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE $funccode_func(func)}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15920,8 +16879,6 @@ relation Structinst_ok: `%|-%:OK`(store, structinst) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (|`fv*`| = |`zt*`|) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} - -- wf_store: `%`(s) - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15931,8 +16888,6 @@ relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} - -- wf_store: `%`(s) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15945,8 +16900,6 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if (|`t*`| = |`val*`|) -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} - -- wf_store: `%`(s) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15959,9 +16912,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(fv_1, s, fv_2) -- ImmutReachable: `%>>_%%`(fv_1, s, fv') -- ImmutReachable: `%>>_%%`(fv', s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) -- wf_fieldval: `%`(fv') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 @@ -15972,8 +16922,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (i < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) @@ -15983,8 +16931,6 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) -- if (i < |s.ARRAYS_store[a].FIELDS_arrayinst|) -- if (a < |s.ARRAYS_store|) -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 @@ -15992,14 +16938,10 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, $fieldval_val(s.EXNS_store[a].FIELDS_exninst[i])) -- if (i < |s.EXNS_store[a].FIELDS_exninst|) -- if (a < |s.EXNS_store|) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 rule `ref.extern`{ref : ref, s : store}: `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, $fieldval_ref(ref)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(ref)) } ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16017,9 +16959,6 @@ relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: `~%>>_%%`(fv_1, s, fv_2) -- if $NotImmutReachable(fv_1, s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Store_ok: `|-%:OK`(store) @@ -16047,7 +16986,6 @@ relation Store_ok: `|-%:OK`(store) -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) - -- wf_store: `%`(s) -- (wf_typeuse: `%`(tagtype))*{tagtype <- `tagtype*`} -- (wf_globaltype: `%`(globaltype))*{globaltype <- `globaltype*`} -- (wf_memtype: `%`(memtype))*{memtype <- `memtype*`} @@ -16063,7 +17001,6 @@ relation Extend_taginst: `%<=%`(taginst, taginst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{jt : tagtype}: `%<=%`({TYPE jt}, {TYPE jt}) - -- wf_taginst: `%`({TYPE jt}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_globalinst: `%<=%`(globalinst, globalinst) @@ -16071,8 +17008,6 @@ relation Extend_globalinst: `%<=%`(globalinst, globalinst) rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_meminst: `%<=%`(meminst, meminst) @@ -16081,8 +17016,6 @@ relation Extend_meminst: `%<=%`(meminst, meminst) `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) -- if (n <= n') -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_tableinst: `%<=%`(tableinst, tableinst) @@ -16091,15 +17024,12 @@ relation Extend_tableinst: `%<=%`(tableinst, tableinst) `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) -- if (n <= n') -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_funcinst: `%<=%`(funcinst, funcinst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{dt : deftype, mm : moduleinst, fc : funccode}: `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) - -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_datainst: `%<=%`(datainst, datainst) @@ -16107,8 +17037,6 @@ relation Extend_datainst: `%<=%`(datainst, datainst) rule _{`b*` : byte*, `b'*` : byte*}: `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) - -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) - -- wf_datainst: `%`({BYTES b'*{b' <- `b'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_eleminst: `%<=%`(eleminst, eleminst) @@ -16116,8 +17044,6 @@ relation Extend_eleminst: `%<=%`(eleminst, eleminst) rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) - -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) - -- wf_eleminst: `%`({TYPE rt, REFS ref'*{ref' <- `ref'*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_structinst: `%<=%`(structinst, structinst) @@ -16128,8 +17054,6 @@ relation Extend_structinst: `%<=%`(structinst, structinst) -- if (|`fv*`| = |`fv'*`|) -- if (|`fv*`| = |`mut?*`|) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} - -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16140,8 +17064,6 @@ relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (|`fv*`| = |`fv'*`|) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16149,7 +17071,6 @@ relation Extend_exninst: `%<=%`(exninst, exninst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule _{ta : tagaddr, `val*` : val*}: `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) - -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_store: `%<=%`(store, store) @@ -16186,8 +17107,6 @@ relation Extend_store: `%<=%`(store, store) -- (if (a < |s.EXNS_store|))^(a<|s.EXNS_store|){} -- (if (a < |s'.EXNS_store|))^(a<|s.EXNS_store|){} -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} - -- wf_store: `%`(s) - -- wf_store: `%`(s') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation State_ok: `|-%:%`(state, context) @@ -16196,8 +17115,6 @@ relation State_ok: `|-%:%`(state, context) `|-%:%`(`%;%`_state(s, f), C) -- Store_ok: `|-%:OK`(s) -- Frame_ok: `%|-%:%`(s, f, C) - -- wf_context: `%`(C) - -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Config_ok: `|-%:OK`(config) @@ -16208,7 +17125,6 @@ relation Config_ok: `|-%:OK`(config) -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) -- (wf_valtype: `%`(t))*{t <- `t*`} - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat @@ -16269,18 +17185,12 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule `i32.add`{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 @@ -16288,8 +17198,6 @@ relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) } @@ -16299,27 +17207,26 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule 4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation instrdots_is_wf: `%`(ret_val : instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule instrdots_is_wf0{ret_val : instr*}: + `%`(ret_val) + -- if (ret_val = $instrdots) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec syntax label = | `LABEL_%{%}`(n : n, `instr*` : instr*) @@ -16345,6 +17252,15 @@ relation wf_callframe: `%`(callframe) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation allocX_is_wf(syntax X, syntax Y): `%%%%`(store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule allocX_is_wf0{syntax X, syntax Y, store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)}: + `%%%%`(store, X_0, Y_0, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocX(syntax X, syntax Y, store, X_0, Y_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rec { @@ -16356,6 +17272,21 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*}(syntax X, syntax Y, s, [X] ++ X'#1*{X'#1 <- `X'*`}, [Y] ++ Y'#1*{Y'#1 <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) -- let{s_2 : store, `a'*` : addr*} (s_2, a'#1*{a'#1 <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'#2*{X'#2 <- `X'*`}, Y'#2*{Y'#2 <- `Y'*`}) + -- wf_store: `%`($allocX(syntax X, syntax Y, s, X, Y).0) + -- wf_store: `%`($allocXs(syntax X, syntax Y, s_1, X'#3*{X'#3 <- `X'*`}, Y'#3*{Y'#3 <- `Y'*`}).0) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 +relation allocXs_is_wf(syntax X, syntax Y): `%%%%`(store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 + rule allocXs_is_wf0{syntax X, syntax Y, store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocXs(syntax X, syntax Y, store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec diff --git a/spectec/test-middlend/specification.exp/13-improve-ids.il b/spectec/test-middlend/specification.exp/13-improve-ids.il index 318fa9324d..70ebf027a2 100644 --- a/spectec/test-middlend/specification.exp/13-improve-ids.il +++ b/spectec/test-middlend/specification.exp/13-improve-ids.il @@ -156,61 +156,61 @@ def $ND : bool ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax bit = - | `%`(i : nat) + | mk_bit(i : nat) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_bit: `%`(bit) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rule bit_case_0{i : nat}: - `%`(`%`_bit(i)) + `%`(mk_bit_bit(i)) -- if ((i = 0) \/ (i = 1)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax byte = - | `%`(i : nat) + | mk_byte(i : nat) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $proj_byte_0(x : byte) : (nat) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_byte_0{v_num_0 : nat}(`%`_byte(v_num_0)) = (v_num_0) + def $proj_byte_0{v_num_0 : nat}(mk_byte_byte(v_num_0)) = (v_num_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_byte: `%`(byte) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rule byte_case_0{i : nat}: - `%`(`%`_byte(i)) + `%`(mk_byte_byte(i)) -- if ((i >= 0) /\ (i <= 255)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax uN = - | `%`(i : nat) + | mk_uN(i : nat) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $proj_uN_0(x : uN) : (nat) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_uN_0{v_num_0 : nat}(`%`_uN(v_num_0)) = (v_num_0) + def $proj_uN_0{v_num_0 : nat}(mk_uN_uN(v_num_0)) = (v_num_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_uN: `%%`(N, uN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rule uN_case_0{v_N : N, i : nat}: - `%%`(v_N, `%`_uN(i)) + `%%`(v_N, mk_uN_uN(i)) -- if ((i >= 0) /\ (i <= ((((2 ^ v_N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax sN = - | `%`(i : int) + | mk_sN(i : int) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $proj_sN_0(x : sN) : (int) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_sN_0{v_num_0 : int}(`%`_sN(v_num_0)) = (v_num_0) + def $proj_sN_0{v_num_0 : int}(mk_sN_sN(v_num_0)) = (v_num_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_sN: `%%`(N, sN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rule sN_case_0{v_N : N, i : int}: - `%%`(v_N, `%`_sN(i)) + `%%`(v_N, mk_sN_sN(i)) -- if ((((i >= - ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -329,19 +329,40 @@ syntax f64 = fN def $fzero(v_N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero{v_N : nat}(v_N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(v_N, POS_fN(SUBNORM_fNmag(0))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fzero_is_wf: `%%`(v_N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fzero_is_wf0{v_N : N, ret_val : fN}: + `%%`(v_N, ret_val) + -- if (ret_val = $fzero(v_N)) + -- wf_fN: `%%`(v_N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(v_N : N, nat : nat) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat{v_N : nat, v_n : nat}(v_N, v_n) = POS_fN(NORM_fNmag(v_n, (0 : nat <:> int))) - -- wf_fN: `%%`(v_N, POS_fN(NORM_fNmag(v_n, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fnat_is_wf: `%%%`(v_N : N, nat : nat, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fnat_is_wf0{v_N : N, nat : nat, ret_val : fN}: + `%%%`(v_N, nat, ret_val) + -- if (ret_val = $fnat(v_N, nat)) + -- wf_fN: `%%`(v_N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone(v_N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fone{v_N : nat}(v_N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(v_N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fone_is_wf: `%%`(v_N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fone_is_wf0{v_N : N, ret_val : fN}: + `%%`(v_N, ret_val) + -- if (ret_val = $fone(v_N)) + -- wf_fN: `%%`(v_N, ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(v_N : N) : nat @@ -356,28 +377,28 @@ syntax v128 = vN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax list{syntax X}(syntax X) = - | `%`(X_lst : X*) + | mk_list(X_lst : X*) -- if (|X_lst| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $proj_list_0(syntax X, x : list(syntax X)) : (X*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_list_0{syntax X, v_X_list_0 : X*}(syntax X, `%`_list(v_X_list_0)) = (v_X_list_0) + def $proj_list_0{syntax X, v_X_list_0 : X*}(syntax X, mk_list_list(v_X_list_0)) = (v_X_list_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax char = - | `%`(i : nat) + | mk_char(i : nat) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $proj_char_0(x : char) : (nat) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_char_0{v_num_0 : nat}(`%`_char(v_num_0)) = (v_num_0) + def $proj_char_0{v_num_0 : nat}(mk_char_char(v_num_0)) = (v_num_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_char: `%`(char) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rule char_case_0{i : nat}: - `%`(`%`_char(i)) + `%`(mk_char_char(i)) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec @@ -396,45 +417,49 @@ def $utf8(var_0 : char*) : byte* ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 def $utf8{ch : char}([ch]) = [b] -- if ($proj_char_0(ch).0 < 128) - -- let{b : byte} b = `%`_byte($proj_char_0(ch).0) - -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) + -- let{b : byte} b = mk_byte_byte($proj_char_0(ch).0) + -- wf_byte: `%`(mk_byte_byte($proj_char_0(ch).0)) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation utf8_is_wf: `%%`(var_0 : char*, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule utf8_is_wf0{var_0 : char*, ret_val : byte*}: + `%%`(var_0, ret_val) + -- (wf_char: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $utf8(var_0)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = - | `%`(char_lst : char*) + | mk_name(char_lst : char*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $proj_name_0(x : name) : (char*) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_name_0{v_char_list_0 : char*}(`%`_name(v_char_list_0)) = (v_char_list_0) + def $proj_name_0{v_char_list_0 : char*}(mk_name_name(v_char_list_0)) = (v_char_list_0) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_name: `%`(name) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rule name_case_0{char_lst : char*}: - `%`(`%`_name(char_lst)) + `%`(mk_name_name(char_lst)) -- (wf_char: `%`(v_char))*{v_char <- char_lst} -- if (|$utf8(char_lst)| < (2 ^ 32)) @@ -612,10 +637,18 @@ relation wf_free: `%`(free) def $free_opt(var_0 : free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{v_free : free}(?(v_free)) = v_free +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_opt_is_wf: `%%`(var_0 : free?, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_opt_is_wf0{var_0 : free?, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))?{var_0 <- var_0} + -- if (ret_val = $free_opt(var_0)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -623,70 +656,162 @@ rec { def $free_list(var_0 : free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 def $free_list{v_free : free, free'_lst : free*}([v_free] ++ free'_lst) = v_free +++ $free_list(free'_lst) } +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation free_list_is_wf: `%%`(var_0 : free*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule free_list_is_wf0{var_0 : free*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_list(var_0)) + -- wf_free: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx(v_typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx{v_typeidx : uN}(v_typeidx) = {TYPES [v_typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [v_typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_typeidx_is_wf: `%%`(v_typeidx : typeidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_typeidx_is_wf0{v_typeidx : typeidx, ret_val : free}: + `%%`(v_typeidx, ret_val) + -- wf_uN: `%%`(32, v_typeidx) + -- if (ret_val = $free_typeidx(v_typeidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(v_funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx{v_funcidx : uN}(v_funcidx) = {TYPES [], FUNCS [v_funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [v_funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_funcidx_is_wf: `%%`(v_funcidx : funcidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_funcidx_is_wf0{v_funcidx : funcidx, ret_val : free}: + `%%`(v_funcidx, ret_val) + -- wf_uN: `%%`(32, v_funcidx) + -- if (ret_val = $free_funcidx(v_funcidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(v_globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx{v_globalidx : uN}(v_globalidx) = {TYPES [], FUNCS [], GLOBALS [v_globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [v_globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_globalidx_is_wf: `%%`(v_globalidx : globalidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_globalidx_is_wf0{v_globalidx : globalidx, ret_val : free}: + `%%`(v_globalidx, ret_val) + -- wf_uN: `%%`(32, v_globalidx) + -- if (ret_val = $free_globalidx(v_globalidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(v_tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx{v_tableidx : uN}(v_tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [v_tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [v_tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tableidx_is_wf: `%%`(v_tableidx : tableidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tableidx_is_wf0{v_tableidx : tableidx, ret_val : free}: + `%%`(v_tableidx, ret_val) + -- wf_uN: `%%`(32, v_tableidx) + -- if (ret_val = $free_tableidx(v_tableidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(v_memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx{v_memidx : uN}(v_memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [v_memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [v_memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_memidx_is_wf: `%%`(v_memidx : memidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_memidx_is_wf0{v_memidx : memidx, ret_val : free}: + `%%`(v_memidx, ret_val) + -- wf_uN: `%%`(32, v_memidx) + -- if (ret_val = $free_memidx(v_memidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(v_elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx{v_elemidx : uN}(v_elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [v_elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [v_elemidx], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_elemidx_is_wf: `%%`(v_elemidx : elemidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_elemidx_is_wf0{v_elemidx : elemidx, ret_val : free}: + `%%`(v_elemidx, ret_val) + -- wf_uN: `%%`(32, v_elemidx) + -- if (ret_val = $free_elemidx(v_elemidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(v_dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx{v_dataidx : uN}(v_dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [v_dataidx], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [v_dataidx], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_dataidx_is_wf: `%%`(v_dataidx : dataidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_dataidx_is_wf0{v_dataidx : dataidx, ret_val : free}: + `%%`(v_dataidx, ret_val) + -- wf_uN: `%%`(32, v_dataidx) + -- if (ret_val = $free_dataidx(v_dataidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(v_localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx{v_localidx : uN}(v_localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [v_localidx], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [v_localidx], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_localidx_is_wf: `%%`(v_localidx : localidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_localidx_is_wf0{v_localidx : localidx, ret_val : free}: + `%%`(v_localidx, ret_val) + -- wf_uN: `%%`(32, v_localidx) + -- if (ret_val = $free_localidx(v_localidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(v_labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx{v_labelidx : uN}(v_labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [v_labelidx], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [v_labelidx], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_labelidx_is_wf: `%%`(v_labelidx : labelidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_labelidx_is_wf0{v_labelidx : labelidx, ret_val : free}: + `%%`(v_labelidx, ret_val) + -- wf_uN: `%%`(32, v_labelidx) + -- if (ret_val = $free_labelidx(v_labelidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx(v_tagidx : tagidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tagidx{v_tagidx : uN}(v_tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [v_tagidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [v_tagidx]}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tagidx_is_wf: `%%`(v_tagidx : tagidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tagidx_is_wf0{v_tagidx : tagidx, ret_val : free}: + `%%`(v_tagidx, ret_val) + -- wf_uN: `%%`(32, v_tagidx) + -- if (ret_val = $free_tagidx(v_tagidx)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(v_externidx : externidx) : free @@ -701,6 +826,15 @@ def $free_externidx(v_externidx : externidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{v_tagidx : uN}(TAG_externidx(v_tagidx)) = $free_tagidx(v_tagidx) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_externidx_is_wf: `%%`(v_externidx : externidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_externidx_is_wf0{v_externidx : externidx, ret_val : free}: + `%%`(v_externidx, ret_val) + -- wf_externidx: `%`(v_externidx) + -- if (ret_val = $free_externidx(v_externidx)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = | NULL @@ -815,7 +949,7 @@ syntax storagetype = ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 syntax fieldtype = - | `%%`(mut_opt : mut?, v_storagetype : storagetype) + | mk_fieldtype(mut_opt : mut?, v_storagetype : storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 syntax comptype = @@ -1052,7 +1186,7 @@ relation wf_storagetype: `%`(storagetype) relation wf_fieldtype: `%`(fieldtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 rule fieldtype_case_0{mut_opt : mut?, v_storagetype : storagetype}: - `%`(`%%`_fieldtype(mut_opt, v_storagetype)) + `%`(mk_fieldtype_fieldtype(mut_opt, v_storagetype)) -- wf_storagetype: `%`(v_storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 @@ -1149,77 +1283,168 @@ syntax Cnn = | F64 | V128 +def $storagetype_Cnn(var_0 : Cnn) : storagetype + def $storagetype_Cnn(I32_Cnn) = I32_storagetype + def $storagetype_Cnn(I64_Cnn) = I64_storagetype + def $storagetype_Cnn(F32_Cnn) = F32_storagetype + def $storagetype_Cnn(F64_Cnn) = F64_storagetype + def $storagetype_Cnn(V128_Cnn) = V128_storagetype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ANYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ANYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ANYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EQREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EQREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EQREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation I31REF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule I31REF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $I31REF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation STRUCTREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule STRUCTREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $STRUCTREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ARRAYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ARRAYREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ARRAYREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation FUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule FUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $FUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLFUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLFUNCREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLFUNCREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXTERNREF_is_wf0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXTERNREF) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -1282,13 +1507,13 @@ syntax Lnn = lanetype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax limits = - | `[%..%]`(v_u64 : u64, u64_opt : u64?) + | mk_limits(v_u64 : u64, u64_opt : u64?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation wf_limits: `%`(limits) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule limits_case_0{v_u64 : u64, u64_opt : u64?}: - `%`(`[%..%]`_limits(v_u64, u64_opt)) + `%`(mk_limits_limits(v_u64, u64_opt)) -- wf_uN: `%%`(64, v_u64) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1296,13 +1521,13 @@ syntax tagtype = typeuse ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax globaltype = - | `%%`(mut_opt : mut?, v_valtype : valtype) + | mk_globaltype(mut_opt : mut?, v_valtype : valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation wf_globaltype: `%`(globaltype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule globaltype_case_0{mut_opt : mut?, v_valtype : valtype}: - `%`(`%%`_globaltype(mut_opt, v_valtype)) + `%`(mk_globaltype_globaltype(mut_opt, v_valtype)) -- wf_valtype: `%`(v_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1318,13 +1543,13 @@ relation wf_memtype: `%`(memtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax tabletype = - | `%%%`(v_addrtype : addrtype, v_limits : limits, v_reftype : reftype) + | mk_tabletype(v_addrtype : addrtype, v_limits : limits, v_reftype : reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation wf_tabletype: `%`(tabletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule tabletype_case_0{v_addrtype : addrtype, v_limits : limits, v_reftype : reftype}: - `%`(`%%%`_tabletype(v_addrtype, v_limits, v_reftype)) + `%`(mk_tabletype_tabletype(v_addrtype, v_limits, v_reftype)) -- wf_limits: `%`(v_limits) -- wf_reftype: `%`(v_reftype) @@ -1372,13 +1597,13 @@ relation wf_externtype: `%`(externtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax moduletype = - | `%->%`(externtype_lst : externtype*, externtype_lst : externtype*) + | mk_moduletype(externtype_lst : externtype*, externtype_lst : externtype*) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec relation wf_moduletype: `%`(moduletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rule moduletype_case_0{externtype_lst : externtype*, externtype_lst_0 : externtype*}: - `%`(`%->%`_moduletype(externtype_lst, externtype_lst_0)) + `%`(mk_moduletype_moduletype(externtype_lst, externtype_lst_0)) -- (wf_externtype: `%`(v_externtype))*{v_externtype <- externtype_lst} -- (wf_externtype: `%`(externtype_lst_0))*{externtype_lst_0 <- externtype_lst_0} @@ -1501,7 +1726,7 @@ def $inv_jsize(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsize(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{v_n : nat}(v_n) = $Jnn_addrtype(iter_val#1)?{iter_val#1 <- $inv_isize(v_n)} + def $inv_jsize{v_n : nat}(v_n) = $Jnn_addrtype(iter_val_1)?{iter_val_1 <- $inv_isize(v_n)} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_fsize(nat : nat) : Fnn? @@ -1595,10 +1820,17 @@ def $unpack(v_storagetype : storagetype) : valtype def $unpack(I32_storagetype) = I32_valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I8_storagetype) = I32_valtype - -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $unpack(I16_storagetype) = I32_valtype - -- wf_valtype: `%`(I32_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation unpack_is_wf: `%%`(v_storagetype : storagetype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule unpack_is_wf0{v_storagetype : storagetype, ret_val : valtype}: + `%%`(v_storagetype, ret_val) + -- wf_storagetype: `%`(v_storagetype) + -- if (ret_val = $unpack(v_storagetype)) + -- wf_valtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $nunpack(v_storagetype : storagetype) : numtype? @@ -1664,10 +1896,18 @@ def $minat(v_addrtype : addrtype, v_addrtype_0 : addrtype) : addrtype def $diffrt(v_reftype : reftype, v_reftype_0 : reftype) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{null_1_opt : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1_opt, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $diffrt{null_1_opt : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1_opt, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1_opt, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1_opt, ht_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation diffrt_is_wf: `%%%`(v_reftype : reftype, reftype_0 : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule diffrt_is_wf0{v_reftype : reftype, reftype_0 : reftype, ret_val : reftype}: + `%%%`(v_reftype, reftype_0, ret_val) + -- wf_reftype: `%`(v_reftype) + -- wf_reftype: `%`(reftype_0) + -- if (ret_val = $diffrt(v_reftype, reftype_0)) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(v_typeuse : typeuse) : deftype? @@ -1705,6 +1945,19 @@ def $globalsxt(var_0 : externtype*) : globaltype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation globalsxt_is_wf: `%%`(var_0 : externtype*, ret_val : globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule globalsxt_is_wf0{var_0 : externtype*, ret_val : globaltype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsxt(var_0)) + -- (wf_globaltype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 def $memsxt(var_0 : externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 @@ -1718,6 +1971,19 @@ def $memsxt(var_0 : externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation memsxt_is_wf: `%%`(var_0 : externtype*, ret_val : memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule memsxt_is_wf0{var_0 : externtype*, ret_val : memtype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsxt(var_0)) + -- (wf_memtype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 def $tablesxt(var_0 : externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 @@ -1731,6 +1997,19 @@ def $tablesxt(var_0 : externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation tablesxt_is_wf: `%%`(var_0 : externtype*, ret_val : tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule tablesxt_is_wf0{var_0 : externtype*, ret_val : tabletype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesxt(var_0)) + -- (wf_tabletype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 def $funcsxt(var_0 : externtype*) : deftype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 @@ -1749,7 +2028,7 @@ def $subst_typevar(v_typevar : typevar, var_0 : typevar*, var_1 : typeuse*) : ty ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 def $subst_typevar{tv : typevar}(tv, [], []) = ?($typeuse_typevar(tv)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 - def $subst_typevar{tv : typevar, tv_1 : typevar, tv'_lst : typevar*, tu_1 : typeuse, tu'_lst : typeuse*}(tv, [tv_1] ++ tv'_lst, [tu_1] ++ tu'_lst) = (if (tv = tv_1) then tu_1 else iter_val#2)?{iter_val#2 <- $subst_typevar(tv, tv'_lst, tu'_lst)} + def $subst_typevar{tv : typevar, tv_1 : typevar, tv'_lst : typevar*, tu_1 : typeuse, tu'_lst : typeuse*}(tv, [tv_1] ++ tv'_lst, [tu_1] ++ tu'_lst) = (if (tv = tv_1) then tu_1 else iter_val_2)?{iter_val_2 <- $subst_typevar(tv, tv'_lst, tu'_lst)} def $subst_typevar{x0 : typevar, x1 : typevar*, x2 : typeuse*}(x0, x1, x2) = ?() -- otherwise } @@ -1757,6 +2036,22 @@ def $subst_typevar(v_typevar : typevar, var_0 : typevar*, var_1 : typeuse*) : ty ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation subst_typevar_is_wf: `%%%%`(v_typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule subst_typevar_is_wf0{v_typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(v_typevar, var_0, var_1, ret_val) + -- wf_typevar: `%`(v_typevar) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if ($subst_typevar(v_typevar, var_0, var_1) =/= ?()) + -- if (ret_val = !($subst_typevar(v_typevar, var_0, var_1))) + -- wf_typeuse: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.73 def $minus_recs(var_0 : typevar*, var_1 : typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 @@ -1766,11 +2061,28 @@ def $minus_recs(var_0 : typevar*, var_1 : typeuse*) : (typevar*, typeuse*)? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : uN, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*}([_IDX_typevar(x)] ++ tv_lst, [tu_1] ++ tu_lst) = ?(([_IDX_typevar(x)] ++ tv'_lst, [tu_1] ++ tu'_lst)) -- let{tv'_lst : typevar*, tu'_lst : typeuse*} (tv'_lst, tu'_lst) = !($minus_recs(tv_lst, tu_lst)) - -- wf_typevar: `%`(_IDX_typevar(x)) + -- (wf_typevar: `%`(iter_1))*{iter_1 <- !($minus_recs(tv_lst, tu_lst)).0} + -- (wf_typeuse: `%`(iter_2))*{iter_2 <- !($minus_recs(tv_lst, tu_lst)).1} def $minus_recs{x0 : typevar*, x1 : typeuse*}(x0, x1) = ?() -- otherwise } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation minus_recs_is_wf: `%%%`(var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule minus_recs_is_wf0{var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)}: + `%%%`(var_0, var_1, ret_val) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if ($minus_recs(var_0, var_1) =/= ?()) + -- if (ret_val = !($minus_recs(var_0, var_1))) + -- (wf_typevar: `%`(iter))*{iter <- ret_val.0} + -- (wf_typeuse: `%`(iter))*{iter <- ret_val.1} +} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_packtype(v_packtype : packtype, var_0 : typevar*, var_1 : typeuse*) : packtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1813,7 +2125,6 @@ def $subst_heaptype(v_heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*) : def $subst_reftype(v_reftype : reftype, var_0 : typevar*, var_1 : typeuse*) : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{null_opt : null?, ht : heaptype, tv_lst : typevar*, tu_lst : typeuse*}(REF_reftype(null_opt, ht), tv_lst, tu_lst) = REF_reftype(null_opt, $subst_heaptype(ht, tv_lst, tu_lst)) - -- wf_reftype: `%`(REF_reftype(null_opt, $subst_heaptype(ht, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(v_valtype : valtype, var_0 : typevar*, var_1 : typeuse*) : valtype @@ -1831,7 +2142,6 @@ def $subst_valtype(v_valtype : valtype, var_0 : typevar*, var_1 : typeuse*) : va def $subst_valtype{null_opt : null?, v_heaptype : heaptype, tv_lst : typevar*, tu_lst : typeuse*}(REF_valtype(null_opt, v_heaptype), tv_lst, tu_lst) = $valtype_reftype($subst_reftype(REF_reftype(null_opt, v_heaptype), tv_lst, tu_lst)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{tv_lst : typevar*, tu_lst : typeuse*}(BOT_valtype, tv_lst, tu_lst) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(v_storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*) : storagetype @@ -1857,32 +2167,29 @@ def $subst_storagetype(v_storagetype : storagetype, var_0 : typevar*, var_1 : ty ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 def $subst_fieldtype(v_fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 - def $subst_fieldtype{mut_opt : mut?, zt : storagetype, tv_lst : typevar*, tu_lst : typeuse*}(`%%`_fieldtype(mut_opt, zt), tv_lst, tu_lst) = `%%`_fieldtype(mut_opt, $subst_storagetype(zt, tv_lst, tu_lst)) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut_opt, $subst_storagetype(zt, tv_lst, tu_lst))) + def $subst_fieldtype{mut_opt : mut?, zt : storagetype, tv_lst : typevar*, tu_lst : typeuse*}(mk_fieldtype_fieldtype(mut_opt, zt), tv_lst, tu_lst) = mk_fieldtype_fieldtype(mut_opt, $subst_storagetype(zt, tv_lst, tu_lst)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(v_comptype : comptype, var_0 : typevar*, var_1 : typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 - def $subst_comptype{ft_lst : fieldtype*, tv_lst : typevar*, tu_lst : typeuse*}(STRUCT_comptype(`%`_list(ft_lst)), tv_lst, tu_lst) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv_lst, tu_lst)*{ft <- ft_lst})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft#2, tv_lst, tu_lst)*{ft#2 <- ft_lst}))) + def $subst_comptype{ft_lst : fieldtype*, tv_lst : typevar*, tu_lst : typeuse*}(STRUCT_comptype(mk_list_list(ft_lst)), tv_lst, tu_lst) = STRUCT_comptype(mk_list_list($subst_fieldtype(ft, tv_lst, tu_lst)*{ft <- ft_lst})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, tv_lst : typevar*, tu_lst : typeuse*}(ARRAY_comptype(ft), tv_lst, tu_lst) = ARRAY_comptype($subst_fieldtype(ft, tv_lst, tu_lst)) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 - def $subst_comptype{t_1_lst : valtype*, t_2_lst : valtype*, tv_lst : typevar*, tu_lst : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst)), tv_lst, tu_lst) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv_lst, tu_lst)*{t_1 <- t_1_lst}), `%`_resulttype($subst_valtype(t_2, tv_lst, tu_lst)*{t_2 <- t_2_lst})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1#2, tv_lst, tu_lst)*{t_1#2 <- t_1_lst}), `%`_resulttype($subst_valtype(t_2#2, tv_lst, tu_lst)*{t_2#2 <- t_2_lst}))) + def $subst_comptype{t_1_lst : valtype*, t_2_lst : valtype*, tv_lst : typevar*, tu_lst : typeuse*}(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)), tv_lst, tu_lst) = `FUNC%->%`_comptype(mk_list_resulttype($subst_valtype(t_1, tv_lst, tu_lst)*{t_1 <- t_1_lst}), mk_list_resulttype($subst_valtype(t_2, tv_lst, tu_lst)*{t_2 <- t_2_lst})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(v_subtype : subtype, var_0 : typevar*, var_1 : typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 def $subst_subtype{final_opt : final?, tu'_lst : typeuse*, ct : comptype, tv_lst : typevar*, tu_lst : typeuse*}(SUB_subtype(final_opt, tu'_lst, ct), tv_lst, tu_lst) = SUB_subtype(final_opt, $subst_typeuse(tu', tv_lst, tu_lst)*{tu' <- tu'_lst}, $subst_comptype(ct, tv_lst, tu_lst)) - -- wf_subtype: `%`(SUB_subtype(final_opt, $subst_typeuse(tu'#4, tv_lst, tu_lst)*{tu'#4 <- tu'_lst}, $subst_comptype(ct, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(v_rectype : rectype, var_0 : typevar*, var_1 : typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 - def $subst_rectype{st_lst : subtype*, tv_lst : typevar*, tu_lst : typeuse*}(REC_rectype(`%`_list(st_lst)), tv_lst, tu_lst) = REC_rectype(`%`_list($subst_subtype(st, tv'_lst, tu'_lst)*{st <- st_lst})) + def $subst_rectype{st_lst : subtype*, tv_lst : typevar*, tu_lst : typeuse*}(REC_rectype(mk_list_list(st_lst)), tv_lst, tu_lst) = REC_rectype(mk_list_list($subst_subtype(st, tv'_lst, tu'_lst)*{st <- st_lst})) -- let{tv'_lst : typevar*, tu'_lst : typeuse*} (tv'_lst, tu'_lst) = !($minus_recs(tv_lst, tu_lst)) + -- (wf_typevar: `%`(iter_3))*{iter_3 <- !($minus_recs(tv_lst, tu_lst)).0} + -- (wf_typeuse: `%`(iter_4))*{iter_4 <- !($minus_recs(tv_lst, tu_lst)).1} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 def $subst_deftype(v_deftype : deftype, var_0 : typevar*, var_1 : typeuse*) : deftype @@ -1890,6 +2197,98 @@ def $subst_deftype(v_deftype : deftype, var_0 : typevar*, var_1 : typeuse*) : de def $subst_deftype{qt : rectype, i : nat, tv_lst : typevar*, tu_lst : typeuse*}(_DEF_deftype(qt, i), tv_lst, tu_lst) = _DEF_deftype($subst_rectype(qt, tv_lst, tu_lst), i) } +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation subst_typeuse_is_wf: `%%%%`(v_typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule subst_typeuse_is_wf0{v_typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(v_typeuse, var_0, var_1, ret_val) + -- wf_typeuse: `%`(v_typeuse) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_typeuse(v_typeuse, var_0, var_1)) + -- wf_typeuse: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation subst_heaptype_is_wf: `%%%%`(v_heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule subst_heaptype_is_wf0{v_heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype}: + `%%%%`(v_heaptype, var_0, var_1, ret_val) + -- wf_heaptype: `%`(v_heaptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_heaptype(v_heaptype, var_0, var_1)) + -- wf_heaptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation subst_reftype_is_wf: `%%%%`(v_reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule subst_reftype_is_wf0{v_reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype}: + `%%%%`(v_reftype, var_0, var_1, ret_val) + -- wf_reftype: `%`(v_reftype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_reftype(v_reftype, var_0, var_1)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation subst_valtype_is_wf: `%%%%`(v_valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule subst_valtype_is_wf0{v_valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype}: + `%%%%`(v_valtype, var_0, var_1, ret_val) + -- wf_valtype: `%`(v_valtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_valtype(v_valtype, var_0, var_1)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation subst_storagetype_is_wf: `%%%%`(v_storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule subst_storagetype_is_wf0{v_storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype}: + `%%%%`(v_storagetype, var_0, var_1, ret_val) + -- wf_storagetype: `%`(v_storagetype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_storagetype(v_storagetype, var_0, var_1)) + -- wf_storagetype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation subst_fieldtype_is_wf: `%%%%`(v_fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule subst_fieldtype_is_wf0{v_fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype}: + `%%%%`(v_fieldtype, var_0, var_1, ret_val) + -- wf_fieldtype: `%`(v_fieldtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_fieldtype(v_fieldtype, var_0, var_1)) + -- wf_fieldtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation subst_comptype_is_wf: `%%%%`(v_comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule subst_comptype_is_wf0{v_comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype}: + `%%%%`(v_comptype, var_0, var_1, ret_val) + -- wf_comptype: `%`(v_comptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_comptype(v_comptype, var_0, var_1)) + -- wf_comptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation subst_subtype_is_wf: `%%%%`(v_subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule subst_subtype_is_wf0{v_subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype}: + `%%%%`(v_subtype, var_0, var_1, ret_val) + -- wf_subtype: `%`(v_subtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_subtype(v_subtype, var_0, var_1)) + -- wf_subtype: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_addrtype(v_addrtype : addrtype, var_0 : typevar*, var_1 : typeuse*) : addrtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1903,98 +2302,205 @@ def $subst_tagtype(v_tagtype : tagtype, var_0 : typevar*, var_1 : typeuse*) : ta ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_globaltype(v_globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*) : globaltype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_globaltype{mut_opt : mut?, t : valtype, tv_lst : typevar*, tu_lst : typeuse*}(`%%`_globaltype(mut_opt, t), tv_lst, tu_lst) = `%%`_globaltype(mut_opt, $subst_valtype(t, tv_lst, tu_lst)) - -- wf_globaltype: `%`(`%%`_globaltype(mut_opt, $subst_valtype(t, tv_lst, tu_lst))) + def $subst_globaltype{mut_opt : mut?, t : valtype, tv_lst : typevar*, tu_lst : typeuse*}(mk_globaltype_globaltype(mut_opt, t), tv_lst, tu_lst) = mk_globaltype_globaltype(mut_opt, $subst_valtype(t, tv_lst, tu_lst)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_globaltype_is_wf: `%%%%`(v_globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_globaltype_is_wf0{v_globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype}: + `%%%%`(v_globaltype, var_0, var_1, ret_val) + -- wf_globaltype: `%`(v_globaltype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_globaltype(v_globaltype, var_0, var_1)) + -- wf_globaltype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype(v_memtype : memtype, var_0 : typevar*, var_1 : typeuse*) : memtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, tv_lst : typevar*, tu_lst : typeuse*}(`%%PAGE`_memtype(at, lim), tv_lst, tu_lst) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_memtype_is_wf: `%%%%`(v_memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_memtype_is_wf0{v_memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype}: + `%%%%`(v_memtype, var_0, var_1, ret_val) + -- wf_memtype: `%`(v_memtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_memtype(v_memtype, var_0, var_1)) + -- wf_memtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_tabletype(v_tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*) : tabletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, tv_lst : typevar*, tu_lst : typeuse*}(`%%%`_tabletype(at, lim, rt), tv_lst, tu_lst) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv_lst, tu_lst)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv_lst, tu_lst))) + def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, tv_lst : typevar*, tu_lst : typeuse*}(mk_tabletype_tabletype(at, lim, rt), tv_lst, tu_lst) = mk_tabletype_tabletype(at, lim, $subst_reftype(rt, tv_lst, tu_lst)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_tabletype_is_wf: `%%%%`(v_tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_tabletype_is_wf0{v_tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype}: + `%%%%`(v_tabletype, var_0, var_1, ret_val) + -- wf_tabletype: `%`(v_tabletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_tabletype(v_tabletype, var_0, var_1)) + -- wf_tabletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype(v_externtype : externtype, var_0 : typevar*, var_1 : typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{jt : typeuse, tv_lst : typevar*, tu_lst : typeuse*}(TAG_externtype(jt), tv_lst, tu_lst) = TAG_externtype($subst_tagtype(jt, tv_lst, tu_lst)) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, tv_lst : typevar*, tu_lst : typeuse*}(GLOBAL_externtype(gt), tv_lst, tu_lst) = GLOBAL_externtype($subst_globaltype(gt, tv_lst, tu_lst)) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, tv_lst : typevar*, tu_lst : typeuse*}(TABLE_externtype(tt), tv_lst, tu_lst) = TABLE_externtype($subst_tabletype(tt, tv_lst, tu_lst)) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, tv_lst : typevar*, tu_lst : typeuse*}(MEM_externtype(mt), tv_lst, tu_lst) = MEM_externtype($subst_memtype(mt, tv_lst, tu_lst)) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv_lst, tu_lst))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{tu' : typeuse, tv_lst : typevar*, tu_lst : typeuse*}(FUNC_externtype(tu'), tv_lst, tu_lst) = FUNC_externtype($subst_typeuse(tu', tv_lst, tu_lst)) - -- wf_externtype: `%`(FUNC_externtype($subst_typeuse(tu', tv_lst, tu_lst))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_externtype_is_wf: `%%%%`(v_externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_externtype_is_wf0{v_externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype}: + `%%%%`(v_externtype, var_0, var_1, ret_val) + -- wf_externtype: `%`(v_externtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_externtype(v_externtype, var_0, var_1)) + -- wf_externtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(v_moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_moduletype{xt_1_lst : externtype*, xt_2_lst : externtype*, tv_lst : typevar*, tu_lst : typeuse*}(`%->%`_moduletype(xt_1_lst, xt_2_lst), tv_lst, tu_lst) = `%->%`_moduletype($subst_externtype(xt_1, tv_lst, tu_lst)*{xt_1 <- xt_1_lst}, $subst_externtype(xt_2, tv_lst, tu_lst)*{xt_2 <- xt_2_lst}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1#2, tv_lst, tu_lst)*{xt_1#2 <- xt_1_lst}, $subst_externtype(xt_2#2, tv_lst, tu_lst)*{xt_2#2 <- xt_2_lst})) + def $subst_moduletype{xt_1_lst : externtype*, xt_2_lst : externtype*, tv_lst : typevar*, tu_lst : typeuse*}(mk_moduletype_moduletype(xt_1_lst, xt_2_lst), tv_lst, tu_lst) = mk_moduletype_moduletype($subst_externtype(xt_1, tv_lst, tu_lst)*{xt_1 <- xt_1_lst}, $subst_externtype(xt_2, tv_lst, tu_lst)*{xt_2 <- xt_2_lst}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_moduletype_is_wf: `%%%%`(v_moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_moduletype_is_wf0{v_moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype}: + `%%%%`(v_moduletype, var_0, var_1, ret_val) + -- wf_moduletype: `%`(v_moduletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_moduletype(v_moduletype, var_0, var_1)) + -- wf_moduletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(v_valtype : valtype, var_0 : typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_valtype{t : valtype, v_n : nat, tu_lst : typeuse*, i : nat}(t, tu_lst) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_moduletype(externtype_1_lst, externtype_2_lst)) = $free_list($free_externtype(externtype_1)*{externtype_1 <- externtype_1_lst}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- externtype_2_lst}) + def $free_moduletype{externtype_1_lst : externtype*, externtype_2_lst : externtype*}(mk_moduletype_moduletype(externtype_1_lst, externtype_2_lst)) = $free_list($free_externtype(externtype_1)*{externtype_1 <- externtype_1_lst}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- externtype_2_lst}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_moduletype_is_wf: `%%`(v_moduletype : moduletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_moduletype_is_wf0{v_moduletype : moduletype, ret_val : free}: + `%%`(v_moduletype, ret_val) + -- wf_moduletype: `%`(v_moduletype) + -- if (ret_val = $free_moduletype(v_moduletype)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax num_ = @@ -2410,18 +3149,18 @@ def $proj_lit__2(var_x : lit_) : pack_? ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax sz = - | `%`(i : nat) + | mk_sz(i : nat) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_sz_0(x : sz) : (nat) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_sz_0{v_num_0 : nat}(`%`_sz(v_num_0)) = (v_num_0) + def $proj_sz_0{v_num_0 : nat}(mk_sz_sz(v_num_0)) = (v_num_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec relation wf_sz: `%`(sz) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule sz_case_0{i : nat}: - `%`(`%`_sz(i)) + `%`(mk_sz_sz(i)) -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -2761,18 +3500,18 @@ def $proj_cvtop___3(var_x : cvtop__) : cvtop__Fnn_1_Fnn_2? ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax dim = - | `%`(i : nat) + | mk_dim(i : nat) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_dim_0(x : dim) : (nat) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_dim_0{v_num_0 : nat}(`%`_dim(v_num_0)) = (v_num_0) + def $proj_dim_0{v_num_0 : nat}(mk_dim_dim(v_num_0)) = (v_num_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec relation wf_dim: `%`(dim) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule dim_case_0{i : nat}: - `%`(`%`_dim(i)) + `%`(mk_dim_dim(i)) -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -2790,50 +3529,58 @@ relation wf_shape: `%`(shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $fun_dim(v_shape : shape) : dim ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $fun_dim{v_Lnn : lanetype, v_N : nat}(`%X%`_shape(v_Lnn, `%`_dim(v_N))) = `%`_dim(v_N) - -- wf_dim: `%`(`%`_dim(v_N)) + def $fun_dim{v_Lnn : lanetype, v_N : nat}(`%X%`_shape(v_Lnn, mk_dim_dim(v_N))) = mk_dim_dim(v_N) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation dim_is_wf: `%%`(v_shape : shape, ret_val : dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_is_wf0{v_shape : shape, ret_val : dim}: + `%%`(v_shape, ret_val) + -- wf_shape: `%`(v_shape) + -- if (ret_val = $fun_dim(v_shape)) + -- wf_dim: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $fun_lanetype(v_shape : shape) : lanetype ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $fun_lanetype{v_Lnn : lanetype, v_N : nat}(`%X%`_shape(v_Lnn, `%`_dim(v_N))) = v_Lnn + def $fun_lanetype{v_Lnn : lanetype, v_N : nat}(`%X%`_shape(v_Lnn, mk_dim_dim(v_N))) = v_Lnn ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $unpackshape(v_shape : shape) : numtype ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $unpackshape{v_Lnn : lanetype, v_N : nat}(`%X%`_shape(v_Lnn, `%`_dim(v_N))) = $lunpack(v_Lnn) + def $unpackshape{v_Lnn : lanetype, v_N : nat}(`%X%`_shape(v_Lnn, mk_dim_dim(v_N))) = $lunpack(v_Lnn) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax ishape = - | `%`(v_shape : shape) + | mk_ishape(v_shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_ishape_0(x : ishape) : (shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_ishape_0{v_shape_0 : shape}(`%`_ishape(v_shape_0)) = (v_shape_0) + def $proj_ishape_0{v_shape_0 : shape}(mk_ishape_ishape(v_shape_0)) = (v_shape_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec relation wf_ishape: `%`(ishape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule ishape_case_0{v_Jnn : Jnn, v_shape : shape}: - `%`(`%`_ishape(v_shape)) + `%`(mk_ishape_ishape(v_shape)) -- wf_shape: `%`(v_shape) -- if ($fun_lanetype(v_shape) = $lanetype_Jnn(v_Jnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax bshape = - | `%`(v_shape : shape) + | mk_bshape(v_shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_bshape_0(x : bshape) : (shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_bshape_0{v_shape_0 : shape}(`%`_bshape(v_shape_0)) = (v_shape_0) + def $proj_bshape_0{v_shape_0 : shape}(mk_bshape_bshape(v_shape_0)) = (v_shape_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec relation wf_bshape: `%`(bshape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule bshape_case_0{v_shape : shape}: - `%`(`%`_bshape(v_shape)) + `%`(mk_bshape_bshape(v_shape)) -- wf_shape: `%`(v_shape) -- if ($fun_lanetype(v_shape) = I8_lanetype) @@ -2907,12 +3654,12 @@ relation wf_vunop_: `%%`(shape, vunop_) rule vunop__case_0{v_shape : shape, v_Jnn : Jnn, v_M : M, var_x : vunop_Jnn_M}: `%%`(v_shape, mk_vunop__0_vunop_(v_Jnn, v_M, var_x)) -- wf_vunop_Jnn_M: `%%%`(v_Jnn, v_M, var_x) - -- if (v_shape = `%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))) + -- if (v_shape = `%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vunop__case_1{v_shape : shape, v_Fnn : Fnn, v_M : M, var_x : vunop_Fnn_M}: `%%`(v_shape, mk_vunop__1_vunop_(v_Fnn, v_M, var_x)) - -- if (v_shape = `%X%`_shape($lanetype_Fnn(v_Fnn), `%`_dim(v_M))) + -- if (v_shape = `%X%`_shape($lanetype_Fnn(v_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vunop__0(var_x : vunop_) : vunop_Jnn_M? @@ -3015,12 +3762,12 @@ relation wf_vbinop_: `%%`(shape, vbinop_) rule vbinop__case_0{v_shape : shape, v_Jnn : Jnn, v_M : M, var_x : vbinop_Jnn_M}: `%%`(v_shape, mk_vbinop__0_vbinop_(v_Jnn, v_M, var_x)) -- wf_vbinop_Jnn_M: `%%%`(v_Jnn, v_M, var_x) - -- if (v_shape = `%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))) + -- if (v_shape = `%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vbinop__case_1{v_shape : shape, v_Fnn : Fnn, v_M : M, var_x : vbinop_Fnn_M}: `%%`(v_shape, mk_vbinop__1_vbinop_(v_Fnn, v_M, var_x)) - -- if (v_shape = `%X%`_shape($lanetype_Fnn(v_Fnn), `%`_dim(v_M))) + -- if (v_shape = `%X%`_shape($lanetype_Fnn(v_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vbinop__0(var_x : vbinop_) : vbinop_Jnn_M? @@ -3055,12 +3802,12 @@ relation wf_vternop_: `%%`(shape, vternop_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vternop__case_0{v_shape : shape, v_Jnn : Jnn, v_M : M, var_x : vternop_Jnn_M}: `%%`(v_shape, mk_vternop__0_vternop_(v_Jnn, v_M, var_x)) - -- if (v_shape = `%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))) + -- if (v_shape = `%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vternop__case_1{v_shape : shape, v_Fnn : Fnn, v_M : M, var_x : vternop_Fnn_M}: `%%`(v_shape, mk_vternop__1_vternop_(v_Fnn, v_M, var_x)) - -- if (v_shape = `%X%`_shape($lanetype_Fnn(v_Fnn), `%`_dim(v_M))) + -- if (v_shape = `%X%`_shape($lanetype_Fnn(v_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vternop__0(var_x : vternop_) : vternop_Jnn_M? @@ -3089,7 +3836,7 @@ relation wf_vtestop_: `%%`(shape, vtestop_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vtestop__case_0{v_shape : shape, v_Jnn : Jnn, v_M : M, var_x : vtestop_Jnn_M}: `%%`(v_shape, mk_vtestop__0_vtestop_(v_Jnn, v_M, var_x)) - -- if (v_shape = `%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))) + -- if (v_shape = `%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vtestop__0(var_x : vtestop_) : vtestop_Jnn_M @@ -3155,12 +3902,12 @@ relation wf_vrelop_: `%%`(shape, vrelop_) rule vrelop__case_0{v_shape : shape, v_Jnn : Jnn, v_M : M, var_x : vrelop_Jnn_M}: `%%`(v_shape, mk_vrelop__0_vrelop_(v_Jnn, v_M, var_x)) -- wf_vrelop_Jnn_M: `%%%`(v_Jnn, v_M, var_x) - -- if (v_shape = `%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))) + -- if (v_shape = `%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vrelop__case_1{v_shape : shape, v_Fnn : Fnn, v_M : M, var_x : vrelop_Fnn_M}: `%%`(v_shape, mk_vrelop__1_vrelop_(v_Fnn, v_M, var_x)) - -- if (v_shape = `%X%`_shape($lanetype_Fnn(v_Fnn), `%`_dim(v_M))) + -- if (v_shape = `%X%`_shape($lanetype_Fnn(v_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vrelop__0(var_x : vrelop_) : vrelop_Jnn_M? @@ -3190,7 +3937,7 @@ relation wf_vshiftop_: `%%`(ishape, vshiftop_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vshiftop__case_0{v_ishape : ishape, v_Jnn : Jnn, v_M : M, var_x : vshiftop_Jnn_M}: `%%`(v_ishape, mk_vshiftop__0_vshiftop_(v_Jnn, v_M, var_x)) - -- if (v_ishape = `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)))) + -- if (v_ishape = mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vshiftop__0(var_x : vshiftop_) : vshiftop_Jnn_M @@ -3211,7 +3958,7 @@ relation wf_vswizzlop_: `%%`(bshape, vswizzlop_) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vswizzlop__case_0{v_bshape : bshape, v_M : M, var_x : vswizzlop_M}: `%%`(v_bshape, mk_vswizzlop__0_vswizzlop_(v_M, var_x)) - -- if (v_bshape = `%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(v_M)))) + -- if (v_bshape = mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vswizzlop__0(var_x : vswizzlop_) : vswizzlop_M @@ -3239,8 +3986,8 @@ relation wf_vextunop__: `%%%`(ishape, ishape, vextunop__) rule vextunop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}: `%%%`(ishape_1, ishape_2, mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) -- wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) - -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) - -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + -- if (ishape_1 = mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), mk_dim_dim(M_1)))) + -- if (ishape_2 = mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), mk_dim_dim(M_2)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vextunop___0(var_x : vextunop__) : vextunop__Jnn_1_M_1_Jnn_2_M_2 @@ -3280,8 +4027,8 @@ relation wf_vextbinop__: `%%%`(ishape, ishape, vextbinop__) rule vextbinop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}: `%%%`(ishape_1, ishape_2, mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) -- wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) - -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) - -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + -- if (ishape_1 = mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), mk_dim_dim(M_1)))) + -- if (ishape_2 = mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), mk_dim_dim(M_2)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vextbinop___0(var_x : vextbinop__) : vextbinop__Jnn_1_M_1_Jnn_2_M_2 @@ -3309,8 +4056,8 @@ relation wf_vextternop__: `%%%`(ishape, ishape, vextternop__) rule vextternop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}: `%%%`(ishape_1, ishape_2, mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) -- wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) - -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) - -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + -- if (ishape_1 = mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), mk_dim_dim(M_1)))) + -- if (ishape_2 = mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), mk_dim_dim(M_2)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vextternop___0(var_x : vextternop__) : vextternop__Jnn_1_M_1_Jnn_2_M_2 @@ -3386,29 +4133,29 @@ relation wf_vcvtop__: `%%%`(shape, shape, vcvtop__) rule vcvtop___case_0{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}: `%%%`(shape_1, shape_2, mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) -- wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) - -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) - -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), mk_dim_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop___case_1{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}: `%%%`(shape_1, shape_2, mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) -- wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, var_x) - -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) - -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), mk_dim_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop___case_2{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}: `%%%`(shape_1, shape_2, mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) -- wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, var_x) - -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) - -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), mk_dim_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule vcvtop___case_3{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}: `%%%`(shape_1, shape_2, mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) -- wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, var_x) - -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) - -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), mk_dim_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $proj_vcvtop___0(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Jnn_2_M_2? @@ -3455,13 +4202,13 @@ relation wf_memarg: `%`(memarg) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax loadop_Inn = - | `%_%`(v_sz : sz, v_sx : sx) + | mk_loadop_Inn(v_sz : sz, v_sx : sx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec relation wf_loadop_Inn: `%%`(Inn, loadop_Inn) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule loadop_Inn_case_0{v_Inn : Inn, v_sz : sz, v_sx : sx}: - `%%`(v_Inn, `%_%`_loadop_Inn(v_sz, v_sx)) + `%%`(v_Inn, mk_loadop_Inn_loadop_Inn(v_sz, v_sx)) -- wf_sz: `%`(v_sz) -- if ($proj_sz_0(v_sz).0 < $sizenn($numtype_addrtype(v_Inn))) @@ -3484,13 +4231,13 @@ def $proj_loadop__0(var_x : loadop_) : loadop_Inn ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax storeop_Inn = - | `%`(v_sz : sz) + | mk_storeop_Inn(v_sz : sz) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec relation wf_storeop_Inn: `%%`(Inn, storeop_Inn) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rule storeop_Inn_case_0{v_Inn : Inn, v_sz : sz}: - `%%`(v_Inn, `%`_storeop_Inn(v_sz)) + `%%`(v_Inn, mk_storeop_Inn_storeop_Inn(v_sz)) -- wf_sz: `%`(v_sz) -- if ($proj_sz_0(v_sz).0 < $sizenn($numtype_addrtype(v_Inn))) @@ -3668,14 +4415,14 @@ rec { ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-43.19 syntax ref = - | `REF.I31_NUM`(v_u31 : u31) - | `REF.NULL_ADDR` - | `REF.STRUCT_ADDR`(v_structaddr : structaddr) - | `REF.ARRAY_ADDR`(v_arrayaddr : arrayaddr) - | `REF.FUNC_ADDR`(v_funcaddr : funcaddr) - | `REF.EXN_ADDR`(v_exnaddr : exnaddr) - | `REF.HOST_ADDR`(v_hostaddr : hostaddr) - | `REF.EXTERN`(v_ref : ref) + | REF_I31_NUM(v_u31 : u31) + | REF_NULL_ADDR + | REF_STRUCT_ADDR(v_structaddr : structaddr) + | REF_ARRAY_ADDR(v_arrayaddr : arrayaddr) + | REF_FUNC_ADDR(v_funcaddr : funcaddr) + | REF_EXN_ADDR(v_exnaddr : exnaddr) + | REF_HOST_ADDR(v_hostaddr : hostaddr) + | REF_EXTERN(v_ref : ref) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -3685,60 +4432,60 @@ rec { relation wf_ref: `%`(ref) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 rule ref_case_0{v_u31 : u31}: - `%`(`REF.I31_NUM`_ref(v_u31)) + `%`(REF_I31_NUM_ref(v_u31)) -- wf_uN: `%%`(31, v_u31) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 rule ref_case_1: - `%`(`REF.NULL_ADDR`_ref) + `%`(REF_NULL_ADDR_ref) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 rule ref_case_2{v_structaddr : structaddr}: - `%`(`REF.STRUCT_ADDR`_ref(v_structaddr)) + `%`(REF_STRUCT_ADDR_ref(v_structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 rule ref_case_3{v_arrayaddr : arrayaddr}: - `%`(`REF.ARRAY_ADDR`_ref(v_arrayaddr)) + `%`(REF_ARRAY_ADDR_ref(v_arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 rule ref_case_4{v_funcaddr : funcaddr}: - `%`(`REF.FUNC_ADDR`_ref(v_funcaddr)) + `%`(REF_FUNC_ADDR_ref(v_funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 rule ref_case_5{v_exnaddr : exnaddr}: - `%`(`REF.EXN_ADDR`_ref(v_exnaddr)) + `%`(REF_EXN_ADDR_ref(v_exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 rule ref_case_6{v_hostaddr : hostaddr}: - `%`(`REF.HOST_ADDR`_ref(v_hostaddr)) + `%`(REF_HOST_ADDR_ref(v_hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 rule ref_case_7{v_ref : ref}: - `%`(`REF.EXTERN`_ref(v_ref)) + `%`(REF_EXTERN_ref(v_ref)) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax val = | CONST(v_numtype : numtype, num_) | VCONST(v_vectype : vectype, vec_) - | `REF.I31_NUM`(v_u31 : u31) - | `REF.NULL_ADDR` - | `REF.STRUCT_ADDR`(v_structaddr : structaddr) - | `REF.ARRAY_ADDR`(v_arrayaddr : arrayaddr) - | `REF.FUNC_ADDR`(v_funcaddr : funcaddr) - | `REF.EXN_ADDR`(v_exnaddr : exnaddr) - | `REF.HOST_ADDR`(v_hostaddr : hostaddr) - | `REF.EXTERN`(v_ref : ref) + | REF_I31_NUM(v_u31 : u31) + | REF_NULL_ADDR + | REF_STRUCT_ADDR(v_structaddr : structaddr) + | REF_ARRAY_ADDR(v_arrayaddr : arrayaddr) + | REF_FUNC_ADDR(v_funcaddr : funcaddr) + | REF_EXN_ADDR(v_exnaddr : exnaddr) + | REF_HOST_ADDR(v_hostaddr : hostaddr) + | REF_EXTERN(v_ref : ref) def $val_ref(var_0 : ref) : val - def $val_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_val(x0) - def $val_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_val - def $val_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_val(x0) - def $val_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_val(x0) - def $val_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_val(x0) - def $val_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_val(x0) - def $val_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_val(x0) - def $val_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_val(x0) + def $val_ref{x0 : u31}(REF_I31_NUM_ref(x0)) = REF_I31_NUM_val(x0) + def $val_ref(REF_NULL_ADDR_ref) = REF_NULL_ADDR_val + def $val_ref{x0 : structaddr}(REF_STRUCT_ADDR_ref(x0)) = REF_STRUCT_ADDR_val(x0) + def $val_ref{x0 : arrayaddr}(REF_ARRAY_ADDR_ref(x0)) = REF_ARRAY_ADDR_val(x0) + def $val_ref{x0 : funcaddr}(REF_FUNC_ADDR_ref(x0)) = REF_FUNC_ADDR_val(x0) + def $val_ref{x0 : exnaddr}(REF_EXN_ADDR_ref(x0)) = REF_EXN_ADDR_val(x0) + def $val_ref{x0 : hostaddr}(REF_HOST_ADDR_ref(x0)) = REF_HOST_ADDR_val(x0) + def $val_ref{x0 : ref}(REF_EXTERN_ref(x0)) = REF_EXTERN_val(x0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec relation wf_val: `%`(val) @@ -3754,36 +4501,36 @@ relation wf_val: `%`(val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule val_case_2{v_u31 : u31}: - `%`(`REF.I31_NUM`_val(v_u31)) + `%`(REF_I31_NUM_val(v_u31)) -- wf_uN: `%%`(31, v_u31) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule val_case_3: - `%`(`REF.NULL_ADDR`_val) + `%`(REF_NULL_ADDR_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule val_case_4{v_structaddr : structaddr}: - `%`(`REF.STRUCT_ADDR`_val(v_structaddr)) + `%`(REF_STRUCT_ADDR_val(v_structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule val_case_5{v_arrayaddr : arrayaddr}: - `%`(`REF.ARRAY_ADDR`_val(v_arrayaddr)) + `%`(REF_ARRAY_ADDR_val(v_arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule val_case_6{v_funcaddr : funcaddr}: - `%`(`REF.FUNC_ADDR`_val(v_funcaddr)) + `%`(REF_FUNC_ADDR_val(v_funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule val_case_7{v_exnaddr : exnaddr}: - `%`(`REF.EXN_ADDR`_val(v_exnaddr)) + `%`(REF_EXN_ADDR_val(v_exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule val_case_8{v_hostaddr : hostaddr}: - `%`(`REF.HOST_ADDR`_val(v_hostaddr)) + `%`(REF_HOST_ADDR_val(v_hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule val_case_9{v_ref : ref}: - `%`(`REF.EXTERN`_val(v_ref)) + `%`(REF_EXTERN_val(v_ref)) -- wf_ref: `%`(v_ref) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -3830,58 +4577,58 @@ syntax instr = | THROW(v_tagidx : tagidx) | THROW_REF | TRY_TABLE(v_blocktype : blocktype, list(syntax catch), instr_lst : instr*) - | `LOCAL.GET`(v_localidx : localidx) - | `LOCAL.SET`(v_localidx : localidx) - | `LOCAL.TEE`(v_localidx : localidx) - | `GLOBAL.GET`(v_globalidx : globalidx) - | `GLOBAL.SET`(v_globalidx : globalidx) - | `TABLE.GET`(v_tableidx : tableidx) - | `TABLE.SET`(v_tableidx : tableidx) - | `TABLE.SIZE`(v_tableidx : tableidx) - | `TABLE.GROW`(v_tableidx : tableidx) - | `TABLE.FILL`(v_tableidx : tableidx) - | `TABLE.COPY`(v_tableidx : tableidx, v_tableidx : tableidx) - | `TABLE.INIT`(v_tableidx : tableidx, v_elemidx : elemidx) - | `ELEM.DROP`(v_elemidx : elemidx) + | LOCAL_GET(v_localidx : localidx) + | LOCAL_SET(v_localidx : localidx) + | LOCAL_TEE(v_localidx : localidx) + | GLOBAL_GET(v_globalidx : globalidx) + | GLOBAL_SET(v_globalidx : globalidx) + | TABLE_GET(v_tableidx : tableidx) + | TABLE_SET(v_tableidx : tableidx) + | TABLE_SIZE(v_tableidx : tableidx) + | TABLE_GROW(v_tableidx : tableidx) + | TABLE_FILL(v_tableidx : tableidx) + | TABLE_COPY(v_tableidx : tableidx, v_tableidx : tableidx) + | TABLE_INIT(v_tableidx : tableidx, v_elemidx : elemidx) + | ELEM_DROP(v_elemidx : elemidx) | LOAD(v_numtype : numtype, loadop_?, v_memidx : memidx, v_memarg : memarg) | STORE(v_numtype : numtype, storeop_?, v_memidx : memidx, v_memarg : memarg) | VLOAD(v_vectype : vectype, vloadop_?, v_memidx : memidx, v_memarg : memarg) | VLOAD_LANE(v_vectype : vectype, v_sz : sz, v_memidx : memidx, v_memarg : memarg, v_laneidx : laneidx) | VSTORE(v_vectype : vectype, v_memidx : memidx, v_memarg : memarg) | VSTORE_LANE(v_vectype : vectype, v_sz : sz, v_memidx : memidx, v_memarg : memarg, v_laneidx : laneidx) - | `MEMORY.SIZE`(v_memidx : memidx) - | `MEMORY.GROW`(v_memidx : memidx) - | `MEMORY.FILL`(v_memidx : memidx) - | `MEMORY.COPY`(v_memidx : memidx, v_memidx : memidx) - | `MEMORY.INIT`(v_memidx : memidx, v_dataidx : dataidx) - | `DATA.DROP`(v_dataidx : dataidx) - | `REF.NULL`(v_heaptype : heaptype) - | `REF.IS_NULL` - | `REF.AS_NON_NULL` - | `REF.EQ` - | `REF.TEST`(v_reftype : reftype) - | `REF.CAST`(v_reftype : reftype) - | `REF.FUNC`(v_funcidx : funcidx) - | `REF.I31` - | `I31.GET`(v_sx : sx) - | `STRUCT.NEW`(v_typeidx : typeidx) - | `STRUCT.NEW_DEFAULT`(v_typeidx : typeidx) - | `STRUCT.GET`(sx_opt : sx?, v_typeidx : typeidx, v_fieldidx : fieldidx) - | `STRUCT.SET`(v_typeidx : typeidx, v_fieldidx : fieldidx) - | `ARRAY.NEW`(v_typeidx : typeidx) - | `ARRAY.NEW_DEFAULT`(v_typeidx : typeidx) - | `ARRAY.NEW_FIXED`(v_typeidx : typeidx, v_u32 : u32) - | `ARRAY.NEW_DATA`(v_typeidx : typeidx, v_dataidx : dataidx) - | `ARRAY.NEW_ELEM`(v_typeidx : typeidx, v_elemidx : elemidx) - | `ARRAY.GET`(sx_opt : sx?, v_typeidx : typeidx) - | `ARRAY.SET`(v_typeidx : typeidx) - | `ARRAY.LEN` - | `ARRAY.FILL`(v_typeidx : typeidx) - | `ARRAY.COPY`(v_typeidx : typeidx, v_typeidx : typeidx) - | `ARRAY.INIT_DATA`(v_typeidx : typeidx, v_dataidx : dataidx) - | `ARRAY.INIT_ELEM`(v_typeidx : typeidx, v_elemidx : elemidx) - | `EXTERN.CONVERT_ANY` - | `ANY.CONVERT_EXTERN` + | MEMORY_SIZE(v_memidx : memidx) + | MEMORY_GROW(v_memidx : memidx) + | MEMORY_FILL(v_memidx : memidx) + | MEMORY_COPY(v_memidx : memidx, v_memidx : memidx) + | MEMORY_INIT(v_memidx : memidx, v_dataidx : dataidx) + | DATA_DROP(v_dataidx : dataidx) + | REF_NULL(v_heaptype : heaptype) + | REF_IS_NULL + | REF_AS_NON_NULL + | REF_EQ + | REF_TEST(v_reftype : reftype) + | REF_CAST(v_reftype : reftype) + | REF_FUNC(v_funcidx : funcidx) + | REF_I31 + | I31_GET(v_sx : sx) + | STRUCT_NEW(v_typeidx : typeidx) + | STRUCT_NEW_DEFAULT(v_typeidx : typeidx) + | STRUCT_GET(sx_opt : sx?, v_typeidx : typeidx, v_fieldidx : fieldidx) + | STRUCT_SET(v_typeidx : typeidx, v_fieldidx : fieldidx) + | ARRAY_NEW(v_typeidx : typeidx) + | ARRAY_NEW_DEFAULT(v_typeidx : typeidx) + | ARRAY_NEW_FIXED(v_typeidx : typeidx, v_u32 : u32) + | ARRAY_NEW_DATA(v_typeidx : typeidx, v_dataidx : dataidx) + | ARRAY_NEW_ELEM(v_typeidx : typeidx, v_elemidx : elemidx) + | ARRAY_GET(sx_opt : sx?, v_typeidx : typeidx) + | ARRAY_SET(v_typeidx : typeidx) + | ARRAY_LEN + | ARRAY_FILL(v_typeidx : typeidx) + | ARRAY_COPY(v_typeidx : typeidx, v_typeidx : typeidx) + | ARRAY_INIT_DATA(v_typeidx : typeidx, v_dataidx : dataidx) + | ARRAY_INIT_ELEM(v_typeidx : typeidx, v_elemidx : elemidx) + | EXTERN_CONVERT_ANY + | ANY_CONVERT_EXTERN | CONST(v_numtype : numtype, num_) | UNOP(v_numtype : numtype, unop_) | BINOP(v_numtype : numtype, binop_) @@ -3910,14 +4657,14 @@ syntax instr = | VSPLAT(v_shape : shape) | VEXTRACT_LANE(v_shape : shape, sx_opt : sx?, v_laneidx : laneidx) | VREPLACE_LANE(v_shape : shape, v_laneidx : laneidx) - | `REF.I31_NUM`(v_u31 : u31) - | `REF.NULL_ADDR` - | `REF.STRUCT_ADDR`(v_structaddr : structaddr) - | `REF.ARRAY_ADDR`(v_arrayaddr : arrayaddr) - | `REF.FUNC_ADDR`(v_funcaddr : funcaddr) - | `REF.EXN_ADDR`(v_exnaddr : exnaddr) - | `REF.HOST_ADDR`(v_hostaddr : hostaddr) - | `REF.EXTERN`(v_ref : ref) + | REF_I31_NUM(v_u31 : u31) + | REF_NULL_ADDR + | REF_STRUCT_ADDR(v_structaddr : structaddr) + | REF_ARRAY_ADDR(v_arrayaddr : arrayaddr) + | REF_FUNC_ADDR(v_funcaddr : funcaddr) + | REF_EXN_ADDR(v_exnaddr : exnaddr) + | REF_HOST_ADDR(v_hostaddr : hostaddr) + | REF_EXTERN(v_ref : ref) | `LABEL_%{%}%`(v_n : n, instr_lst : instr*, instr_lst : instr*) | `FRAME_%{%}%`(v_n : n, v_frame : frame, instr_lst : instr*) | `HANDLER_%{%}%`(v_n : n, catch_lst : catch*, instr_lst : instr*) @@ -3925,26 +4672,26 @@ syntax instr = } def $instr_ref(var_0 : ref) : instr - def $instr_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_instr(x0) - def $instr_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_instr - def $instr_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_instr(x0) - def $instr_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_instr(x0) - def $instr_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_instr(x0) - def $instr_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_instr(x0) - def $instr_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_instr(x0) - def $instr_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_instr(x0) + def $instr_ref{x0 : u31}(REF_I31_NUM_ref(x0)) = REF_I31_NUM_instr(x0) + def $instr_ref(REF_NULL_ADDR_ref) = REF_NULL_ADDR_instr + def $instr_ref{x0 : structaddr}(REF_STRUCT_ADDR_ref(x0)) = REF_STRUCT_ADDR_instr(x0) + def $instr_ref{x0 : arrayaddr}(REF_ARRAY_ADDR_ref(x0)) = REF_ARRAY_ADDR_instr(x0) + def $instr_ref{x0 : funcaddr}(REF_FUNC_ADDR_ref(x0)) = REF_FUNC_ADDR_instr(x0) + def $instr_ref{x0 : exnaddr}(REF_EXN_ADDR_ref(x0)) = REF_EXN_ADDR_instr(x0) + def $instr_ref{x0 : hostaddr}(REF_HOST_ADDR_ref(x0)) = REF_HOST_ADDR_instr(x0) + def $instr_ref{x0 : ref}(REF_EXTERN_ref(x0)) = REF_EXTERN_instr(x0) def $instr_val(var_0 : val) : instr def $instr_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_instr(x0, x1) def $instr_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_instr(x0, x1) - def $instr_val{x0 : u31}(`REF.I31_NUM`_val(x0)) = `REF.I31_NUM`_instr(x0) - def $instr_val(`REF.NULL_ADDR`_val) = `REF.NULL_ADDR`_instr - def $instr_val{x0 : structaddr}(`REF.STRUCT_ADDR`_val(x0)) = `REF.STRUCT_ADDR`_instr(x0) - def $instr_val{x0 : arrayaddr}(`REF.ARRAY_ADDR`_val(x0)) = `REF.ARRAY_ADDR`_instr(x0) - def $instr_val{x0 : funcaddr}(`REF.FUNC_ADDR`_val(x0)) = `REF.FUNC_ADDR`_instr(x0) - def $instr_val{x0 : exnaddr}(`REF.EXN_ADDR`_val(x0)) = `REF.EXN_ADDR`_instr(x0) - def $instr_val{x0 : hostaddr}(`REF.HOST_ADDR`_val(x0)) = `REF.HOST_ADDR`_instr(x0) - def $instr_val{x0 : ref}(`REF.EXTERN`_val(x0)) = `REF.EXTERN`_instr(x0) + def $instr_val{x0 : u31}(REF_I31_NUM_val(x0)) = REF_I31_NUM_instr(x0) + def $instr_val(REF_NULL_ADDR_val) = REF_NULL_ADDR_instr + def $instr_val{x0 : structaddr}(REF_STRUCT_ADDR_val(x0)) = REF_STRUCT_ADDR_instr(x0) + def $instr_val{x0 : arrayaddr}(REF_ARRAY_ADDR_val(x0)) = REF_ARRAY_ADDR_instr(x0) + def $instr_val{x0 : funcaddr}(REF_FUNC_ADDR_val(x0)) = REF_FUNC_ADDR_instr(x0) + def $instr_val{x0 : exnaddr}(REF_EXN_ADDR_val(x0)) = REF_EXN_ADDR_instr(x0) + def $instr_val{x0 : hostaddr}(REF_HOST_ADDR_val(x0)) = REF_HOST_ADDR_instr(x0) + def $instr_val{x0 : ref}(REF_EXTERN_val(x0)) = REF_EXTERN_instr(x0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -4080,69 +4827,69 @@ relation wf_instr: `%`(instr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_24{v_localidx : localidx}: - `%`(`LOCAL.GET`_instr(v_localidx)) + `%`(LOCAL_GET_instr(v_localidx)) -- wf_uN: `%%`(32, v_localidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_25{v_localidx : localidx}: - `%`(`LOCAL.SET`_instr(v_localidx)) + `%`(LOCAL_SET_instr(v_localidx)) -- wf_uN: `%%`(32, v_localidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_26{v_localidx : localidx}: - `%`(`LOCAL.TEE`_instr(v_localidx)) + `%`(LOCAL_TEE_instr(v_localidx)) -- wf_uN: `%%`(32, v_localidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_27{v_globalidx : globalidx}: - `%`(`GLOBAL.GET`_instr(v_globalidx)) + `%`(GLOBAL_GET_instr(v_globalidx)) -- wf_uN: `%%`(32, v_globalidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_28{v_globalidx : globalidx}: - `%`(`GLOBAL.SET`_instr(v_globalidx)) + `%`(GLOBAL_SET_instr(v_globalidx)) -- wf_uN: `%%`(32, v_globalidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_29{v_tableidx : tableidx}: - `%`(`TABLE.GET`_instr(v_tableidx)) + `%`(TABLE_GET_instr(v_tableidx)) -- wf_uN: `%%`(32, v_tableidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_30{v_tableidx : tableidx}: - `%`(`TABLE.SET`_instr(v_tableidx)) + `%`(TABLE_SET_instr(v_tableidx)) -- wf_uN: `%%`(32, v_tableidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_31{v_tableidx : tableidx}: - `%`(`TABLE.SIZE`_instr(v_tableidx)) + `%`(TABLE_SIZE_instr(v_tableidx)) -- wf_uN: `%%`(32, v_tableidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_32{v_tableidx : tableidx}: - `%`(`TABLE.GROW`_instr(v_tableidx)) + `%`(TABLE_GROW_instr(v_tableidx)) -- wf_uN: `%%`(32, v_tableidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_33{v_tableidx : tableidx}: - `%`(`TABLE.FILL`_instr(v_tableidx)) + `%`(TABLE_FILL_instr(v_tableidx)) -- wf_uN: `%%`(32, v_tableidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_34{v_tableidx : tableidx, tableidx_0 : tableidx}: - `%`(`TABLE.COPY`_instr(v_tableidx, tableidx_0)) + `%`(TABLE_COPY_instr(v_tableidx, tableidx_0)) -- wf_uN: `%%`(32, v_tableidx) -- wf_uN: `%%`(32, tableidx_0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_35{v_tableidx : tableidx, v_elemidx : elemidx}: - `%`(`TABLE.INIT`_instr(v_tableidx, v_elemidx)) + `%`(TABLE_INIT_instr(v_tableidx, v_elemidx)) -- wf_uN: `%%`(32, v_tableidx) -- wf_uN: `%%`(32, v_elemidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_36{v_elemidx : elemidx}: - `%`(`ELEM.DROP`_instr(v_elemidx)) + `%`(ELEM_DROP_instr(v_elemidx)) -- wf_uN: `%%`(32, v_elemidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 @@ -4190,170 +4937,170 @@ relation wf_instr: `%`(instr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_43{v_memidx : memidx}: - `%`(`MEMORY.SIZE`_instr(v_memidx)) + `%`(MEMORY_SIZE_instr(v_memidx)) -- wf_uN: `%%`(32, v_memidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_44{v_memidx : memidx}: - `%`(`MEMORY.GROW`_instr(v_memidx)) + `%`(MEMORY_GROW_instr(v_memidx)) -- wf_uN: `%%`(32, v_memidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_45{v_memidx : memidx}: - `%`(`MEMORY.FILL`_instr(v_memidx)) + `%`(MEMORY_FILL_instr(v_memidx)) -- wf_uN: `%%`(32, v_memidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_46{v_memidx : memidx, memidx_0 : memidx}: - `%`(`MEMORY.COPY`_instr(v_memidx, memidx_0)) + `%`(MEMORY_COPY_instr(v_memidx, memidx_0)) -- wf_uN: `%%`(32, v_memidx) -- wf_uN: `%%`(32, memidx_0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_47{v_memidx : memidx, v_dataidx : dataidx}: - `%`(`MEMORY.INIT`_instr(v_memidx, v_dataidx)) + `%`(MEMORY_INIT_instr(v_memidx, v_dataidx)) -- wf_uN: `%%`(32, v_memidx) -- wf_uN: `%%`(32, v_dataidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_48{v_dataidx : dataidx}: - `%`(`DATA.DROP`_instr(v_dataidx)) + `%`(DATA_DROP_instr(v_dataidx)) -- wf_uN: `%%`(32, v_dataidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_49{v_heaptype : heaptype}: - `%`(`REF.NULL`_instr(v_heaptype)) + `%`(REF_NULL_instr(v_heaptype)) -- wf_heaptype: `%`(v_heaptype) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_50: - `%`(`REF.IS_NULL`_instr) + `%`(REF_IS_NULL_instr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_51: - `%`(`REF.AS_NON_NULL`_instr) + `%`(REF_AS_NON_NULL_instr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_52: - `%`(`REF.EQ`_instr) + `%`(REF_EQ_instr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_53{v_reftype : reftype}: - `%`(`REF.TEST`_instr(v_reftype)) + `%`(REF_TEST_instr(v_reftype)) -- wf_reftype: `%`(v_reftype) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_54{v_reftype : reftype}: - `%`(`REF.CAST`_instr(v_reftype)) + `%`(REF_CAST_instr(v_reftype)) -- wf_reftype: `%`(v_reftype) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_55{v_funcidx : funcidx}: - `%`(`REF.FUNC`_instr(v_funcidx)) + `%`(REF_FUNC_instr(v_funcidx)) -- wf_uN: `%%`(32, v_funcidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_56: - `%`(`REF.I31`_instr) + `%`(REF_I31_instr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_57{v_sx : sx}: - `%`(`I31.GET`_instr(v_sx)) + `%`(I31_GET_instr(v_sx)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_58{v_typeidx : typeidx}: - `%`(`STRUCT.NEW`_instr(v_typeidx)) + `%`(STRUCT_NEW_instr(v_typeidx)) -- wf_uN: `%%`(32, v_typeidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_59{v_typeidx : typeidx}: - `%`(`STRUCT.NEW_DEFAULT`_instr(v_typeidx)) + `%`(STRUCT_NEW_DEFAULT_instr(v_typeidx)) -- wf_uN: `%%`(32, v_typeidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_60{sx_opt : sx?, v_typeidx : typeidx, v_fieldidx : fieldidx}: - `%`(`STRUCT.GET`_instr(sx_opt, v_typeidx, v_fieldidx)) + `%`(STRUCT_GET_instr(sx_opt, v_typeidx, v_fieldidx)) -- wf_uN: `%%`(32, v_typeidx) -- wf_uN: `%%`(32, v_fieldidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_61{v_typeidx : typeidx, v_fieldidx : fieldidx}: - `%`(`STRUCT.SET`_instr(v_typeidx, v_fieldidx)) + `%`(STRUCT_SET_instr(v_typeidx, v_fieldidx)) -- wf_uN: `%%`(32, v_typeidx) -- wf_uN: `%%`(32, v_fieldidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_62{v_typeidx : typeidx}: - `%`(`ARRAY.NEW`_instr(v_typeidx)) + `%`(ARRAY_NEW_instr(v_typeidx)) -- wf_uN: `%%`(32, v_typeidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_63{v_typeidx : typeidx}: - `%`(`ARRAY.NEW_DEFAULT`_instr(v_typeidx)) + `%`(ARRAY_NEW_DEFAULT_instr(v_typeidx)) -- wf_uN: `%%`(32, v_typeidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_64{v_typeidx : typeidx, v_u32 : u32}: - `%`(`ARRAY.NEW_FIXED`_instr(v_typeidx, v_u32)) + `%`(ARRAY_NEW_FIXED_instr(v_typeidx, v_u32)) -- wf_uN: `%%`(32, v_typeidx) -- wf_uN: `%%`(32, v_u32) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_65{v_typeidx : typeidx, v_dataidx : dataidx}: - `%`(`ARRAY.NEW_DATA`_instr(v_typeidx, v_dataidx)) + `%`(ARRAY_NEW_DATA_instr(v_typeidx, v_dataidx)) -- wf_uN: `%%`(32, v_typeidx) -- wf_uN: `%%`(32, v_dataidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_66{v_typeidx : typeidx, v_elemidx : elemidx}: - `%`(`ARRAY.NEW_ELEM`_instr(v_typeidx, v_elemidx)) + `%`(ARRAY_NEW_ELEM_instr(v_typeidx, v_elemidx)) -- wf_uN: `%%`(32, v_typeidx) -- wf_uN: `%%`(32, v_elemidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_67{sx_opt : sx?, v_typeidx : typeidx}: - `%`(`ARRAY.GET`_instr(sx_opt, v_typeidx)) + `%`(ARRAY_GET_instr(sx_opt, v_typeidx)) -- wf_uN: `%%`(32, v_typeidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_68{v_typeidx : typeidx}: - `%`(`ARRAY.SET`_instr(v_typeidx)) + `%`(ARRAY_SET_instr(v_typeidx)) -- wf_uN: `%%`(32, v_typeidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_69: - `%`(`ARRAY.LEN`_instr) + `%`(ARRAY_LEN_instr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_70{v_typeidx : typeidx}: - `%`(`ARRAY.FILL`_instr(v_typeidx)) + `%`(ARRAY_FILL_instr(v_typeidx)) -- wf_uN: `%%`(32, v_typeidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_71{v_typeidx : typeidx, typeidx_0 : typeidx}: - `%`(`ARRAY.COPY`_instr(v_typeidx, typeidx_0)) + `%`(ARRAY_COPY_instr(v_typeidx, typeidx_0)) -- wf_uN: `%%`(32, v_typeidx) -- wf_uN: `%%`(32, typeidx_0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_72{v_typeidx : typeidx, v_dataidx : dataidx}: - `%`(`ARRAY.INIT_DATA`_instr(v_typeidx, v_dataidx)) + `%`(ARRAY_INIT_DATA_instr(v_typeidx, v_dataidx)) -- wf_uN: `%%`(32, v_typeidx) -- wf_uN: `%%`(32, v_dataidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_73{v_typeidx : typeidx, v_elemidx : elemidx}: - `%`(`ARRAY.INIT_ELEM`_instr(v_typeidx, v_elemidx)) + `%`(ARRAY_INIT_ELEM_instr(v_typeidx, v_elemidx)) -- wf_uN: `%%`(32, v_typeidx) -- wf_uN: `%%`(32, v_elemidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_74: - `%`(`EXTERN.CONVERT_ANY`_instr) + `%`(EXTERN_CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_75: - `%`(`ANY.CONVERT_EXTERN`_instr) + `%`(ANY_CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_76{v_numtype : numtype, var_0 : num_}: @@ -4458,7 +5205,7 @@ relation wf_instr: `%`(instr) `%`(VSHUFFLE_instr(v_bshape, laneidx_lst)) -- wf_bshape: `%`(v_bshape) -- (wf_uN: `%%`(8, v_laneidx))*{v_laneidx <- laneidx_lst} - -- if (`%`_dim(|laneidx_lst|) = $fun_dim($proj_bshape_0(v_bshape).0)) + -- if (mk_dim_dim(|laneidx_lst|) = $fun_dim($proj_bshape_0(v_bshape).0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextunop__}: @@ -4516,36 +5263,36 @@ relation wf_instr: `%`(instr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_104{v_u31 : u31}: - `%`(`REF.I31_NUM`_instr(v_u31)) + `%`(REF_I31_NUM_instr(v_u31)) -- wf_uN: `%%`(31, v_u31) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_105: - `%`(`REF.NULL_ADDR`_instr) + `%`(REF_NULL_ADDR_instr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_106{v_structaddr : structaddr}: - `%`(`REF.STRUCT_ADDR`_instr(v_structaddr)) + `%`(REF_STRUCT_ADDR_instr(v_structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_107{v_arrayaddr : arrayaddr}: - `%`(`REF.ARRAY_ADDR`_instr(v_arrayaddr)) + `%`(REF_ARRAY_ADDR_instr(v_arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_108{v_funcaddr : funcaddr}: - `%`(`REF.FUNC_ADDR`_instr(v_funcaddr)) + `%`(REF_FUNC_ADDR_instr(v_funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_109{v_exnaddr : exnaddr}: - `%`(`REF.EXN_ADDR`_instr(v_exnaddr)) + `%`(REF_EXN_ADDR_instr(v_exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_110{v_hostaddr : hostaddr}: - `%`(`REF.HOST_ADDR`_instr(v_hostaddr)) + `%`(REF_HOST_ADDR_instr(v_hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 rule instr_case_111{v_ref : ref}: - `%`(`REF.EXTERN`_instr(v_ref)) + `%`(REF_EXTERN_instr(v_ref)) -- wf_ref: `%`(v_ref) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 @@ -4577,32 +5324,52 @@ syntax expr = instr* ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $memarg0 : memarg ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} - -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) + def $memarg0 = {ALIGN mk_uN_u32(0), OFFSET mk_uN_u64(0)} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation memarg0_is_wf: `%`(ret_val : memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg0_is_wf0{ret_val : memarg}: + `%`(ret_val) + -- if (ret_val = $memarg0) + -- wf_memarg: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const(v_consttype : consttype, v_lit_ : lit_) : instr ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : num_}(I32_consttype, mk_lit__0_lit_(I32_numtype, c)) = CONST_instr(I32_numtype, c) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : num_}(I64_consttype, mk_lit__0_lit_(I64_numtype, c)) = CONST_instr(I64_numtype, c) - -- wf_instr: `%`(CONST_instr(I64_numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : num_}(F32_consttype, mk_lit__0_lit_(F32_numtype, c)) = CONST_instr(F32_numtype, c) - -- wf_instr: `%`(CONST_instr(F32_numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : num_}(F64_consttype, mk_lit__0_lit_(F64_numtype, c)) = CONST_instr(F64_numtype, c) - -- wf_instr: `%`(CONST_instr(F64_numtype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const{c : uN}(V128_consttype, mk_lit__1_lit_(V128_vectype, c)) = VCONST_instr(V128_vectype, c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation const_is_wf: `%%%`(v_consttype : consttype, v_lit_ : lit_, ret_val : instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule const_is_wf0{v_consttype : consttype, v_lit_ : lit_, ret_val : instr}: + `%%%`(v_consttype, v_lit_, ret_val) + -- wf_lit_: `%%`($storagetype_consttype(v_consttype), v_lit_) + -- if (ret_val = $const(v_consttype, v_lit_)) + -- wf_instr: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(v_shape : shape) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape{v_lanetype : lanetype, v_dim : dim}(`%X%`_shape(v_lanetype, v_dim)) = $free_lanetype(v_lanetype) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_shape_is_wf: `%%`(v_shape : shape, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_shape_is_wf0{v_shape : shape, ret_val : free}: + `%%`(v_shape, ret_val) + -- wf_shape: `%`(v_shape) + -- if (ret_val = $free_shape(v_shape)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype(v_blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4610,6 +5377,15 @@ def $free_blocktype(v_blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype{v_typeidx : uN}(_IDX_blocktype(v_typeidx)) = $free_typeidx(v_typeidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_blocktype_is_wf: `%%`(v_blocktype : blocktype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_blocktype_is_wf0{v_blocktype : blocktype, ret_val : free}: + `%%`(v_blocktype, ret_val) + -- wf_blocktype: `%`(v_blocktype) + -- if (ret_val = $free_blocktype(v_blocktype)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch(v_catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4621,6 +5397,15 @@ def $free_catch(v_catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_catch{v_labelidx : uN}(CATCH_ALL_REF_catch(v_labelidx)) = $free_labelidx(v_labelidx) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_catch_is_wf: `%%`(v_catch : catch, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_catch_is_wf0{v_catch : catch, ret_val : free}: + `%%`(v_catch, ret_val) + -- wf_catch: `%`(v_catch) + -- if (ret_val = $free_catch(v_catch)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { @@ -4629,10 +5414,9 @@ def $shift_labelidxs(var_0 : labelidx*) : labelidx* ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.32 def $shift_labelidxs([]) = [] ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.66 - def $shift_labelidxs{labelidx'_lst : labelidx*}([`%`_labelidx(0)] ++ labelidx'_lst) = $shift_labelidxs(labelidx'_lst) + def $shift_labelidxs{labelidx'_lst : labelidx*}([mk_uN_labelidx(0)] ++ labelidx'_lst) = $shift_labelidxs(labelidx'_lst) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.91 - def $shift_labelidxs{v_labelidx : uN, labelidx'_lst : labelidx*}([v_labelidx] ++ labelidx'_lst) = [`%`_labelidx(((($proj_uN_0(v_labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'_lst) - -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(v_labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + def $shift_labelidxs{v_labelidx : uN, labelidx'_lst : labelidx*}([v_labelidx] ++ labelidx'_lst) = [mk_uN_labelidx(((($proj_uN_0(v_labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'_lst) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4642,13 +5426,10 @@ rec { def $free_instr(v_instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-435.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.86 def $free_instr{valtype_lst_opt : valtype*?}(SELECT_instr(valtype_lst_opt)) = $free_opt($free_list($free_valtype(v_valtype)*{v_valtype <- valtype_lst})?{valtype_lst <- valtype_lst_opt}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.92 @@ -4679,7 +5460,6 @@ def $free_instr(v_instr : instr) : free def $free_instr{v_tableidx : uN, v_typeuse : typeuse}(CALL_INDIRECT_instr(v_tableidx, v_typeuse)) = $free_tableidx(v_tableidx) +++ $free_typeuse(v_typeuse) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 def $free_instr{v_funcidx : uN}(RETURN_CALL_instr(v_funcidx)) = $free_funcidx(v_funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.66 @@ -4690,9 +5470,8 @@ def $free_instr(v_instr : instr) : free def $free_instr{v_tagidx : uN}(THROW_instr(v_tagidx)) = $free_tagidx(v_tagidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.32 def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-469.99 - def $free_instr{v_blocktype : blocktype, catch_lst : catch*, instr_lst : instr*}(TRY_TABLE_instr(v_blocktype, `%`_list(catch_lst), instr_lst)) = $free_blocktype(v_blocktype) +++ $free_list($free_catch(v_catch)*{v_catch <- catch_lst}) +++ $free_list($free_instr(v_instr)*{v_instr <- instr_lst}) + def $free_instr{v_blocktype : blocktype, catch_lst : catch*, instr_lst : instr*}(TRY_TABLE_instr(v_blocktype, mk_list_list(catch_lst), instr_lst)) = $free_blocktype(v_blocktype) +++ $free_list($free_catch(v_catch)*{v_catch <- catch_lst}) +++ $free_list($free_instr(v_instr)*{v_instr <- instr_lst}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.63 def $free_instr{v_numtype : numtype, numlit : num_}(CONST_instr(v_numtype, numlit)) = $free_numtype(v_numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.60 @@ -4750,93 +5529,85 @@ def $free_instr(v_instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:505.1-505.66 def $free_instr{v_shape : shape, v_laneidx : uN}(VREPLACE_LANE_instr(v_shape, v_laneidx)) = $free_shape(v_shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.62 - def $free_instr{v_heaptype : heaptype}(`REF.NULL`_instr(v_heaptype)) = $free_heaptype(v_heaptype) + def $free_instr{v_heaptype : heaptype}(REF_NULL_instr(v_heaptype)) = $free_heaptype(v_heaptype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.34 - def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + def $free_instr(REF_IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.38 - def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + def $free_instr(REF_AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.29 - def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + def $free_instr(REF_EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 - def $free_instr{v_reftype : reftype}(`REF.TEST`_instr(v_reftype)) = $free_reftype(v_reftype) + def $free_instr{v_reftype : reftype}(REF_TEST_instr(v_reftype)) = $free_reftype(v_reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 - def $free_instr{v_reftype : reftype}(`REF.CAST`_instr(v_reftype)) = $free_reftype(v_reftype) + def $free_instr{v_reftype : reftype}(REF_CAST_instr(v_reftype)) = $free_reftype(v_reftype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.59 - def $free_instr{v_funcidx : uN}(`REF.FUNC`_instr(v_funcidx)) = $free_funcidx(v_funcidx) + def $free_instr{v_funcidx : uN}(REF_FUNC_instr(v_funcidx)) = $free_funcidx(v_funcidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.30 - def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + def $free_instr(REF_I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.33 - def $free_instr{v_sx : sx}(`I31.GET`_instr(v_sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + def $free_instr{v_sx : sx}(I31_GET_instr(v_sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.61 - def $free_instr{v_typeidx : uN}(`STRUCT.NEW`_instr(v_typeidx)) = $free_typeidx(v_typeidx) + def $free_instr{v_typeidx : uN}(STRUCT_NEW_instr(v_typeidx)) = $free_typeidx(v_typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.69 - def $free_instr{v_typeidx : uN}(`STRUCT.NEW_DEFAULT`_instr(v_typeidx)) = $free_typeidx(v_typeidx) + def $free_instr{v_typeidx : uN}(STRUCT_NEW_DEFAULT_instr(v_typeidx)) = $free_typeidx(v_typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.69 - def $free_instr{sx_opt : sx?, v_typeidx : uN, v_u32 : uN}(`STRUCT.GET`_instr(sx_opt, v_typeidx, v_u32)) = $free_typeidx(v_typeidx) + def $free_instr{sx_opt : sx?, v_typeidx : uN, v_u32 : uN}(STRUCT_GET_instr(sx_opt, v_typeidx, v_u32)) = $free_typeidx(v_typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.65 - def $free_instr{v_typeidx : uN, v_u32 : uN}(`STRUCT.SET`_instr(v_typeidx, v_u32)) = $free_typeidx(v_typeidx) + def $free_instr{v_typeidx : uN, v_u32 : uN}(STRUCT_SET_instr(v_typeidx, v_u32)) = $free_typeidx(v_typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.60 - def $free_instr{v_typeidx : uN}(`ARRAY.NEW`_instr(v_typeidx)) = $free_typeidx(v_typeidx) + def $free_instr{v_typeidx : uN}(ARRAY_NEW_instr(v_typeidx)) = $free_typeidx(v_typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.68 - def $free_instr{v_typeidx : uN}(`ARRAY.NEW_DEFAULT`_instr(v_typeidx)) = $free_typeidx(v_typeidx) + def $free_instr{v_typeidx : uN}(ARRAY_NEW_DEFAULT_instr(v_typeidx)) = $free_typeidx(v_typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.70 - def $free_instr{v_typeidx : uN, v_u32 : uN}(`ARRAY.NEW_FIXED`_instr(v_typeidx, v_u32)) = $free_typeidx(v_typeidx) + def $free_instr{v_typeidx : uN, v_u32 : uN}(ARRAY_NEW_FIXED_instr(v_typeidx, v_u32)) = $free_typeidx(v_typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 - def $free_instr{v_typeidx : uN, v_dataidx : uN}(`ARRAY.NEW_DATA`_instr(v_typeidx, v_dataidx)) = $free_typeidx(v_typeidx) +++ $free_dataidx(v_dataidx) + def $free_instr{v_typeidx : uN, v_dataidx : uN}(ARRAY_NEW_DATA_instr(v_typeidx, v_dataidx)) = $free_typeidx(v_typeidx) +++ $free_dataidx(v_dataidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:528.1-529.51 - def $free_instr{v_typeidx : uN, v_elemidx : uN}(`ARRAY.NEW_ELEM`_instr(v_typeidx, v_elemidx)) = $free_typeidx(v_typeidx) +++ $free_elemidx(v_elemidx) + def $free_instr{v_typeidx : uN, v_elemidx : uN}(ARRAY_NEW_ELEM_instr(v_typeidx, v_elemidx)) = $free_typeidx(v_typeidx) +++ $free_elemidx(v_elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.64 - def $free_instr{sx_opt : sx?, v_typeidx : uN}(`ARRAY.GET`_instr(sx_opt, v_typeidx)) = $free_typeidx(v_typeidx) + def $free_instr{sx_opt : sx?, v_typeidx : uN}(ARRAY_GET_instr(sx_opt, v_typeidx)) = $free_typeidx(v_typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.60 - def $free_instr{v_typeidx : uN}(`ARRAY.SET`_instr(v_typeidx)) = $free_typeidx(v_typeidx) + def $free_instr{v_typeidx : uN}(ARRAY_SET_instr(v_typeidx)) = $free_typeidx(v_typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.32 - def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + def $free_instr(ARRAY_LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.61 - def $free_instr{v_typeidx : uN}(`ARRAY.FILL`_instr(v_typeidx)) = $free_typeidx(v_typeidx) + def $free_instr{v_typeidx : uN}(ARRAY_FILL_instr(v_typeidx)) = $free_typeidx(v_typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.55 - def $free_instr{typeidx_1 : uN, typeidx_2 : uN}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) + def $free_instr{typeidx_1 : uN, typeidx_2 : uN}(ARRAY_COPY_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-537.51 - def $free_instr{v_typeidx : uN, v_dataidx : uN}(`ARRAY.INIT_DATA`_instr(v_typeidx, v_dataidx)) = $free_typeidx(v_typeidx) +++ $free_dataidx(v_dataidx) + def $free_instr{v_typeidx : uN, v_dataidx : uN}(ARRAY_INIT_DATA_instr(v_typeidx, v_dataidx)) = $free_typeidx(v_typeidx) +++ $free_dataidx(v_dataidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:538.1-539.51 - def $free_instr{v_typeidx : uN, v_elemidx : uN}(`ARRAY.INIT_ELEM`_instr(v_typeidx, v_elemidx)) = $free_typeidx(v_typeidx) +++ $free_elemidx(v_elemidx) + def $free_instr{v_typeidx : uN, v_elemidx : uN}(ARRAY_INIT_ELEM_instr(v_typeidx, v_elemidx)) = $free_typeidx(v_typeidx) +++ $free_elemidx(v_elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.41 - def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + def $free_instr(EXTERN_CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 - def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + def $free_instr(ANY_CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 - def $free_instr{v_localidx : uN}(`LOCAL.GET`_instr(v_localidx)) = $free_localidx(v_localidx) + def $free_instr{v_localidx : uN}(LOCAL_GET_instr(v_localidx)) = $free_localidx(v_localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 - def $free_instr{v_localidx : uN}(`LOCAL.SET`_instr(v_localidx)) = $free_localidx(v_localidx) + def $free_instr{v_localidx : uN}(LOCAL_SET_instr(v_localidx)) = $free_localidx(v_localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.63 - def $free_instr{v_localidx : uN}(`LOCAL.TEE`_instr(v_localidx)) = $free_localidx(v_localidx) + def $free_instr{v_localidx : uN}(LOCAL_TEE_instr(v_localidx)) = $free_localidx(v_localidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.67 - def $free_instr{v_globalidx : uN}(`GLOBAL.GET`_instr(v_globalidx)) = $free_globalidx(v_globalidx) + def $free_instr{v_globalidx : uN}(GLOBAL_GET_instr(v_globalidx)) = $free_globalidx(v_globalidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.67 - def $free_instr{v_globalidx : uN}(`GLOBAL.SET`_instr(v_globalidx)) = $free_globalidx(v_globalidx) + def $free_instr{v_globalidx : uN}(GLOBAL_SET_instr(v_globalidx)) = $free_globalidx(v_globalidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:551.1-551.63 - def $free_instr{v_tableidx : uN}(`TABLE.GET`_instr(v_tableidx)) = $free_tableidx(v_tableidx) + def $free_instr{v_tableidx : uN}(TABLE_GET_instr(v_tableidx)) = $free_tableidx(v_tableidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.63 - def $free_instr{v_tableidx : uN}(`TABLE.SET`_instr(v_tableidx)) = $free_tableidx(v_tableidx) + def $free_instr{v_tableidx : uN}(TABLE_SET_instr(v_tableidx)) = $free_tableidx(v_tableidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.64 - def $free_instr{v_tableidx : uN}(`TABLE.SIZE`_instr(v_tableidx)) = $free_tableidx(v_tableidx) + def $free_instr{v_tableidx : uN}(TABLE_SIZE_instr(v_tableidx)) = $free_tableidx(v_tableidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-554.64 - def $free_instr{v_tableidx : uN}(`TABLE.GROW`_instr(v_tableidx)) = $free_tableidx(v_tableidx) + def $free_instr{v_tableidx : uN}(TABLE_GROW_instr(v_tableidx)) = $free_tableidx(v_tableidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.64 - def $free_instr{v_tableidx : uN}(`TABLE.FILL`_instr(v_tableidx)) = $free_tableidx(v_tableidx) + def $free_instr{v_tableidx : uN}(TABLE_FILL_instr(v_tableidx)) = $free_tableidx(v_tableidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.59 - def $free_instr{tableidx_1 : uN, tableidx_2 : uN}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) + def $free_instr{tableidx_1 : uN, tableidx_2 : uN}(TABLE_COPY_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.53 - def $free_instr{v_tableidx : uN, v_elemidx : uN}(`TABLE.INIT`_instr(v_tableidx, v_elemidx)) = $free_tableidx(v_tableidx) +++ $free_elemidx(v_elemidx) + def $free_instr{v_tableidx : uN, v_elemidx : uN}(TABLE_INIT_instr(v_tableidx, v_elemidx)) = $free_tableidx(v_tableidx) +++ $free_elemidx(v_elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-560.60 - def $free_instr{v_elemidx : uN}(`ELEM.DROP`_instr(v_elemidx)) = $free_elemidx(v_elemidx) + def $free_instr{v_elemidx : uN}(ELEM_DROP_instr(v_elemidx)) = $free_elemidx(v_elemidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-563.49 def $free_instr{v_numtype : numtype, loadop_opt : loadop_?, v_memidx : uN, v_memarg : memarg}(LOAD_instr(v_numtype, loadop_opt, v_memidx, v_memarg)) = $free_numtype(v_numtype) +++ $free_memidx(v_memidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-565.49 @@ -4850,23 +5621,47 @@ def $free_instr(v_instr : instr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-573.49 def $free_instr{v_vectype : vectype, v_sz : sz, v_memidx : uN, v_memarg : memarg, v_laneidx : uN}(VSTORE_LANE_instr(v_vectype, v_sz, v_memidx, v_memarg, v_laneidx)) = $free_vectype(v_vectype) +++ $free_memidx(v_memidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.59 - def $free_instr{v_memidx : uN}(`MEMORY.SIZE`_instr(v_memidx)) = $free_memidx(v_memidx) + def $free_instr{v_memidx : uN}(MEMORY_SIZE_instr(v_memidx)) = $free_memidx(v_memidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.59 - def $free_instr{v_memidx : uN}(`MEMORY.GROW`_instr(v_memidx)) = $free_memidx(v_memidx) + def $free_instr{v_memidx : uN}(MEMORY_GROW_instr(v_memidx)) = $free_memidx(v_memidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:576.1-576.59 - def $free_instr{v_memidx : uN}(`MEMORY.FILL`_instr(v_memidx)) = $free_memidx(v_memidx) + def $free_instr{v_memidx : uN}(MEMORY_FILL_instr(v_memidx)) = $free_memidx(v_memidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.51 - def $free_instr{memidx_1 : uN, memidx_2 : uN}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) + def $free_instr{memidx_1 : uN, memidx_2 : uN}(MEMORY_COPY_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-580.49 - def $free_instr{v_memidx : uN, v_dataidx : uN}(`MEMORY.INIT`_instr(v_memidx, v_dataidx)) = $free_memidx(v_memidx) +++ $free_dataidx(v_dataidx) + def $free_instr{v_memidx : uN, v_dataidx : uN}(MEMORY_INIT_instr(v_memidx, v_dataidx)) = $free_memidx(v_memidx) +++ $free_dataidx(v_dataidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:581.1-581.60 - def $free_instr{v_dataidx : uN}(`DATA.DROP`_instr(v_dataidx)) = $free_dataidx(v_dataidx) + def $free_instr{v_dataidx : uN}(DATA_DROP_instr(v_dataidx)) = $free_dataidx(v_dataidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.1-421.31 def $free_block(var_0 : instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:589.1-590.47 def $free_block{instr_lst : instr*}(instr_lst) = v_free[LABELS_free = $shift_labelidxs(v_free.LABELS_free)] - -- let{v_free : free} v_free = $free_list($free_instr(instr#5)*{instr#5 <- instr_lst}) + -- let{v_free : free} v_free = $free_list($free_instr(instr_5)*{instr_5 <- instr_lst}) + -- wf_free: `%`($free_list($free_instr(instr_6)*{instr_6 <- instr_lst})) + -- (wf_free: `%`($free_instr(instr_7)))*{instr_7 <- instr_lst} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation free_instr_is_wf: `%%`(v_instr : instr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule free_instr_is_wf0{v_instr : instr, ret_val : free}: + `%%`(v_instr, ret_val) + -- wf_instr: `%`(v_instr) + -- if (ret_val = $free_instr(v_instr)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation free_block_is_wf: `%%`(var_0 : instr*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule free_block_is_wf0{var_0 : instr*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_block(var_0)) + -- wf_free: `%`(ret_val) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4874,6 +5669,15 @@ def $free_expr(v_expr : expr) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_expr{instr_lst : instr*}(instr_lst) = $free_list($free_instr(v_instr)*{v_instr <- instr_lst}) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_expr_is_wf: `%%`(v_expr : expr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_expr_is_wf0{v_expr : expr, ret_val : free}: + `%%`(v_expr, ret_val) + -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} + -- if (ret_val = $free_expr(v_expr)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = | ACTIVE(v_tableidx : tableidx, v_expr : expr) @@ -5064,84 +5868,215 @@ def $free_type(v_type : type) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_type{v_rectype : rectype}(TYPE_type(v_rectype)) = $free_rectype(v_rectype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_type_is_wf: `%%`(v_type : type, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_type_is_wf0{v_type : type, ret_val : free}: + `%%`(v_type, ret_val) + -- if (ret_val = $free_type(v_type)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag(v_tag : tag) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_tag{v_tagtype : typeuse}(TAG_tag(v_tagtype)) = $free_tagtype(v_tagtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_tag_is_wf: `%%`(v_tag : tag, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_tag_is_wf0{v_tag : tag, ret_val : free}: + `%%`(v_tag, ret_val) + -- wf_tag: `%`(v_tag) + -- if (ret_val = $free_tag(v_tag)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global(v_global : global) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_global{v_globaltype : globaltype, v_expr : instr*}(GLOBAL_global(v_globaltype, v_expr)) = $free_globaltype(v_globaltype) +++ $free_expr(v_expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_global_is_wf: `%%`(v_global : global, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_global_is_wf0{v_global : global, ret_val : free}: + `%%`(v_global, ret_val) + -- wf_global: `%`(v_global) + -- if (ret_val = $free_global(v_global)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem(v_mem : mem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_mem{v_memtype : memtype}(MEMORY_mem(v_memtype)) = $free_memtype(v_memtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_mem_is_wf: `%%`(v_mem : mem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_mem_is_wf0{v_mem : mem, ret_val : free}: + `%%`(v_mem, ret_val) + -- wf_mem: `%`(v_mem) + -- if (ret_val = $free_mem(v_mem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table(v_table : table) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_table{v_tabletype : tabletype, v_expr : instr*}(TABLE_table(v_tabletype, v_expr)) = $free_tabletype(v_tabletype) +++ $free_expr(v_expr) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_table_is_wf: `%%`(v_table : table, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_table_is_wf0{v_table : table, ret_val : free}: + `%%`(v_table, ret_val) + -- wf_table: `%`(v_table) + -- if (ret_val = $free_table(v_table)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local(v_local : local) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_local_is_wf: `%%`(v_local : local, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_local_is_wf0{v_local : local, ret_val : free}: + `%%`(v_local, ret_val) + -- wf_local: `%`(v_local) + -- if (ret_val = $free_local(v_local)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func(v_func : func) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_func{v_typeidx : uN, local_lst : local*, v_expr : instr*}(FUNC_func(v_typeidx, local_lst, v_expr)) = $free_typeidx(v_typeidx) +++ $free_list($free_local(v_local)*{v_local <- local_lst}) +++ $free_block(v_expr)[LOCALS_free = []] +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_func_is_wf: `%%`(v_func : func, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_func_is_wf0{v_func : func, ret_val : free}: + `%%`(v_func, ret_val) + -- wf_func: `%`(v_func) + -- if (ret_val = $free_func(v_func)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(v_datamode : datamode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode{v_memidx : uN, v_expr : instr*}(ACTIVE_datamode(v_memidx, v_expr)) = $free_memidx(v_memidx) +++ $free_expr(v_expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_datamode_is_wf: `%%`(v_datamode : datamode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_datamode_is_wf0{v_datamode : datamode, ret_val : free}: + `%%`(v_datamode, ret_val) + -- wf_datamode: `%`(v_datamode) + -- if (ret_val = $free_datamode(v_datamode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(v_data : data) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data{byte_lst : byte*, v_datamode : datamode}(DATA_data(byte_lst, v_datamode)) = $free_datamode(v_datamode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_data_is_wf: `%%`(v_data : data, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_data_is_wf0{v_data : data, ret_val : free}: + `%%`(v_data, ret_val) + -- wf_data: `%`(v_data) + -- if (ret_val = $free_data(v_data)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(v_elemmode : elemmode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode{v_tableidx : uN, v_expr : instr*}(ACTIVE_elemmode(v_tableidx, v_expr)) = $free_tableidx(v_tableidx) +++ $free_expr(v_expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elemmode_is_wf: `%%`(v_elemmode : elemmode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elemmode_is_wf0{v_elemmode : elemmode, ret_val : free}: + `%%`(v_elemmode, ret_val) + -- wf_elemmode: `%`(v_elemmode) + -- if (ret_val = $free_elemmode(v_elemmode)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(v_elem : elem) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem{v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode}(ELEM_elem(v_reftype, expr_lst, v_elemmode)) = $free_reftype(v_reftype) +++ $free_list($free_expr(v_expr)*{v_expr <- expr_lst}) +++ $free_elemmode(v_elemmode) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elem_is_wf: `%%`(v_elem : elem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elem_is_wf0{v_elem : elem, ret_val : free}: + `%%`(v_elem, ret_val) + -- wf_elem: `%`(v_elem) + -- if (ret_val = $free_elem(v_elem)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start(v_start : start) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_start{v_funcidx : uN}(START_start(v_funcidx)) = $free_funcidx(v_funcidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_start_is_wf: `%%`(v_start : start, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_start_is_wf0{v_start : start, ret_val : free}: + `%%`(v_start, ret_val) + -- wf_start: `%`(v_start) + -- if (ret_val = $free_start(v_start)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import(v_import : import) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_import{name_1 : name, name_2 : name, v_externtype : externtype}(IMPORT_import(name_1, name_2, v_externtype)) = $free_externtype(v_externtype) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_import_is_wf: `%%`(v_import : import, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_import_is_wf0{v_import : import, ret_val : free}: + `%%`(v_import, ret_val) + -- wf_import: `%`(v_import) + -- if (ret_val = $free_import(v_import)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export(v_export : export) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_export{v_name : name, v_externidx : externidx}(EXPORT_export(v_name, v_externidx)) = $free_externidx(v_externidx) +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_export_is_wf: `%%`(v_export : export, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_export_is_wf0{v_export : export, ret_val : free}: + `%%`(v_export, ret_val) + -- wf_export: `%`(v_export) + -- if (ret_val = $free_export(v_export)) + -- wf_free: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module(v_module : module) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_module{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*}(MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst))) = $free_list($free_type(v_type)*{v_type <- type_lst}) +++ $free_list($free_tag(v_tag)*{v_tag <- tag_lst}) +++ $free_list($free_global(v_global)*{v_global <- global_lst}) +++ $free_list($free_mem(v_mem)*{v_mem <- mem_lst}) +++ $free_list($free_table(v_table)*{v_table <- table_lst}) +++ $free_list($free_func(v_func)*{v_func <- func_lst}) +++ $free_list($free_data(v_data)*{v_data <- data_lst}) +++ $free_list($free_elem(v_elem)*{v_elem <- elem_lst}) +++ $free_opt($free_start(v_start)?{v_start <- start_opt}) +++ $free_list($free_import(v_import)*{v_import <- import_lst}) +++ $free_list($free_export(v_export)*{v_export <- export_lst}) + def $free_module{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*}(MODULE_module(mk_list_list(type_lst), mk_list_list(import_lst), mk_list_list(tag_lst), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list(func_lst), mk_list_list(data_lst), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst))) = $free_list($free_type(v_type)*{v_type <- type_lst}) +++ $free_list($free_tag(v_tag)*{v_tag <- tag_lst}) +++ $free_list($free_global(v_global)*{v_global <- global_lst}) +++ $free_list($free_mem(v_mem)*{v_mem <- mem_lst}) +++ $free_list($free_table(v_table)*{v_table <- table_lst}) +++ $free_list($free_func(v_func)*{v_func <- func_lst}) +++ $free_list($free_data(v_data)*{v_data <- data_lst}) +++ $free_list($free_elem(v_elem)*{v_elem <- elem_lst}) +++ $free_opt($free_start(v_start)?{v_start <- start_opt}) +++ $free_list($free_import(v_import)*{v_import <- import_lst}) +++ $free_list($free_export(v_export)*{v_export <- export_lst}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_module_is_wf: `%%`(v_module : module, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_module_is_wf0{v_module : module, ret_val : free}: + `%%`(v_module, ret_val) + -- wf_module: `%`(v_module) + -- if (ret_val = $free_module(v_module)) + -- wf_free: `%`(ret_val) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $funcidx_module(v_module : module) : funcidx* @@ -5160,24 +6095,24 @@ syntax init = ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax localtype = - | `%%`(v_init : init, v_valtype : valtype) + | mk_localtype(v_init : init, v_valtype : valtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation wf_localtype: `%`(localtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule localtype_case_0{v_init : init, v_valtype : valtype}: - `%`(`%%`_localtype(v_init, v_valtype)) + `%`(mk_localtype_localtype(v_init, v_valtype)) -- wf_valtype: `%`(v_valtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax instrtype = - | `%->_%%`(v_resulttype : resulttype, localidx_lst : localidx*, v_resulttype : resulttype) + | mk_instrtype(v_resulttype : resulttype, localidx_lst : localidx*, v_resulttype : resulttype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec relation wf_instrtype: `%`(instrtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rule instrtype_case_0{v_resulttype : resulttype, localidx_lst : localidx*, resulttype_0 : resulttype}: - `%`(`%->_%%`_instrtype(v_resulttype, localidx_lst, resulttype_0)) + `%`(mk_instrtype_instrtype(v_resulttype, localidx_lst, resulttype_0)) -- (wf_uN: `%%`(32, v_localidx))*{v_localidx <- localidx_lst} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -5228,6 +6163,22 @@ def $with_locals(v_context : context, var_0 : localidx*, var_1 : localtype*) : c ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation with_locals_is_wf: `%%%%`(v_context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule with_locals_is_wf0{v_context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context}: + `%%%%`(v_context, var_0, var_1, ret_val) + -- wf_context: `%`(v_context) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_localtype: `%`(var_1))*{var_1 <- var_1} + -- if ($with_locals(v_context, var_0, var_1) =/= ?()) + -- if (ret_val = !($with_locals(v_context, var_0, var_1))) + -- wf_context: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(var_0 : deftype*) : deftype* ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 @@ -5243,6 +6194,16 @@ def $clos_valtype(v_context : context, v_valtype : valtype) : valtype def $clos_valtype{C : context, t : valtype}(C, t) = $subst_all_valtype(t, $typeuse_deftype(dt)*{dt <- dt_lst}) -- let{dt_lst : deftype*} dt_lst = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_valtype_is_wf: `%%%`(v_context : context, v_valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_valtype_is_wf0{v_context : context, v_valtype : valtype, ret_val : valtype}: + `%%%`(v_context, v_valtype, ret_val) + -- wf_context: `%`(v_context) + -- wf_valtype: `%`(v_valtype) + -- if (ret_val = $clos_valtype(v_context, v_valtype)) + -- wf_valtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype(v_context : context, v_deftype : deftype) : deftype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -5261,25 +6222,43 @@ def $clos_externtype(v_context : context, v_externtype : externtype) : externtyp def $clos_externtype{C : context, xt : externtype}(C, xt) = $subst_all_externtype(xt, $typeuse_deftype(dt)*{dt <- dt_lst}) -- let{dt_lst : deftype*} dt_lst = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_externtype_is_wf: `%%%`(v_context : context, v_externtype : externtype, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_externtype_is_wf0{v_context : context, v_externtype : externtype, ret_val : externtype}: + `%%%`(v_context, v_externtype, ret_val) + -- wf_context: `%`(v_context) + -- wf_externtype: `%`(v_externtype) + -- if (ret_val = $clos_externtype(v_context, v_externtype)) + -- wf_externtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype(v_context : context, v_moduletype : moduletype) : moduletype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype}(C, mmt) = $subst_all_moduletype(mmt, $typeuse_deftype(dt)*{dt <- dt_lst}) -- let{dt_lst : deftype*} dt_lst = $clos_deftypes(C.TYPES_context) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_moduletype_is_wf: `%%%`(v_context : context, v_moduletype : moduletype, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_moduletype_is_wf0{v_context : context, v_moduletype : moduletype, ret_val : moduletype}: + `%%%`(v_context, v_moduletype, ret_val) + -- wf_context: `%`(v_context) + -- wf_moduletype: `%`(v_moduletype) + -- if (ret_val = $clos_moduletype(v_context, v_moduletype)) + -- wf_moduletype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Numtype_ok{C : context, v_numtype : numtype}: `%|-%:OK`(C, v_numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Vectype_ok{C : context, v_vectype : vectype}: `%|-%:OK`(C, v_vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypenat = @@ -5290,21 +6269,18 @@ relation Packtype_ok: `%|-%:OK`(context, packtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Packtype_ok{C : context, v_packtype : packtype}: `%|-%:OK`(C, v_packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Packtype_sub{C : context, v_packtype : packtype}: `%|-%<:%`(C, v_packtype, v_packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Numtype_sub{C : context, v_numtype : numtype}: `%|-%<:%`(C, v_numtype, v_numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) @@ -5312,6 +6288,7 @@ relation Expand: `%~~%`(deftype, comptype) rule mk_Expand{v_deftype : deftype, v_comptype : comptype, final_opt : final?, typeuse_lst : typeuse*}: `%~~%`(v_deftype, v_comptype) -- if ($unrolldt(v_deftype) = SUB_subtype(final_opt, typeuse_lst, v_comptype)) + -- wf_subtype: `%`($unrolldt(v_deftype)) -- wf_subtype: `%`(SUB_subtype(final_opt, typeuse_lst, v_comptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5319,7 +6296,6 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Vectype_sub{C : context, v_vectype : vectype}: `%|-%<:%`(C, v_vectype, v_vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $before(v_typeuse : typeuse, nat : nat) : bool @@ -5337,6 +6313,16 @@ def $unrollht_(v_context : context, v_heaptype : heaptype) : subtype ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec def $unrollht_{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation unrollht__is_wf: `%%%`(v_context : context, v_heaptype : heaptype, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule unrollht__is_wf0{v_context : context, v_heaptype : heaptype, ret_val : subtype}: + `%%%`(v_context, v_heaptype, ret_val) + -- wf_context: `%`(v_context) + -- wf_heaptype: `%`(v_heaptype) + -- if (ret_val = $unrollht_(v_context, v_heaptype)) + -- wf_subtype: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -5345,20 +6331,15 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, v_absheaptype : absheaptype}: `%|-%:OK`(C, $heaptype_absheaptype(v_absheaptype)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, v_typeuse : typeuse}: `%|-%:OK`(C, $heaptype_typeuse(v_typeuse)) -- Typeuse_ok: `%|-%:OK`(C, v_typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(v_typeuse) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 rule bot{C : context}: `%|-%:OK`(C, BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) @@ -5366,8 +6347,6 @@ relation Reftype_ok: `%|-%:OK`(context, reftype) rule mk_Reftype_ok{C : context, v_heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(?(NULL_null), v_heaptype)) -- Heaptype_ok: `%|-%:OK`(C, v_heaptype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), v_heaptype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) @@ -5375,26 +6354,20 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) rule num{C : context, v_numtype : numtype}: `%|-%:OK`(C, $valtype_numtype(v_numtype)) -- Numtype_ok: `%|-%:OK`(C, v_numtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, v_vectype : vectype}: `%|-%:OK`(C, $valtype_vectype(v_vectype)) -- Vectype_ok: `%|-%:OK`(C, v_vectype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, v_reftype : reftype}: `%|-%:OK`(C, $valtype_reftype(v_reftype)) -- Reftype_ok: `%|-%:OK`(C, v_reftype) - -- wf_context: `%`(C) - -- wf_reftype: `%`(v_reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) @@ -5403,41 +6376,32 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) `%|-%:OK`(C, _IDX_typeuse(v_typeidx)) -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(v_typeidx).0] = dt) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(v_typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) - -- wf_context: `%`(C) -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, v_deftype : deftype}: `%|-%:OK`(C, $typeuse_deftype(v_deftype)) -- Deftype_ok: `%|-%:OK`(C, v_deftype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:60.1-62.32 rule mk_Resulttype_ok{C : context, t_lst : valtype*}: - `%|-%:OK`(C, `%`_resulttype(t_lst)) + `%|-%:OK`(C, mk_list_resulttype(t_lst)) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- t_lst} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- t_lst} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:130.1-132.43 rule mk_Fieldtype_ok{C : context, v_storagetype : storagetype}: - `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), v_storagetype)) + `%|-%:OK`(C, mk_fieldtype_fieldtype(?(MUT_mut), v_storagetype)) -- Storagetype_ok: `%|-%:OK`(C, v_storagetype) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), v_storagetype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) @@ -5445,38 +6409,29 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) rule val{C : context, v_valtype : valtype}: `%|-%:OK`(C, $storagetype_valtype(v_valtype)) -- Valtype_ok: `%|-%:OK`(C, v_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(v_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, v_packtype : packtype}: `%|-%:OK`(C, $storagetype_packtype(v_packtype)) -- Packtype_ok: `%|-%:OK`(C, v_packtype) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:135.1-137.42 rule struct{C : context, fieldtype_lst : fieldtype*}: - `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype_lst))) + `%|-%:OK`(C, STRUCT_comptype(mk_list_list(fieldtype_lst))) -- (Fieldtype_ok: `%|-%:OK`(C, v_fieldtype))*{v_fieldtype <- fieldtype_lst} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype_lst))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, v_fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(v_fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, v_fieldtype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(v_fieldtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: - `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1_lst)) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2_lst)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) + `%|-%:OK`(C, `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_1_lst)) + -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_2_lst)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) @@ -5491,25 +6446,20 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) -- (if ($unrollht_(C, $heaptype_typeuse(v_typeuse)) = SUB_subtype(?(), typeuse'_lst, comptype')))*{comptype' <- comptype'_lst, v_typeuse <- typeuse_lst, typeuse'_lst <- typeuse'_lst_lst} -- Comptype_ok: `%|-%:OK`(C, v_comptype) -- (Comptype_sub: `%|-%<:%`(C, v_comptype, comptype'))*{comptype' <- comptype'_lst} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse_lst, v_comptype)) + -- (wf_subtype: `%`($unrollht_(C, $heaptype_typeuse(v_typeuse))))*{v_typeuse <- typeuse_lst} -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'_lst, comptype')))*{comptype' <- comptype'_lst, typeuse'_lst <- typeuse'_lst_lst} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 rule empty{C : context, i : nat}: - `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypenat(i)) - -- wf_context: `%`(C) + `%|-%:%`(C, REC_rectype(mk_list_list([])), OK_oktypenat(i)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 rule cons{C : context, subtype_1 : subtype, subtype_lst : subtype*, i : nat}: - `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype_lst)), OK_oktypenat(i)) + `%|-%:%`(C, REC_rectype(mk_list_list([subtype_1] ++ subtype_lst)), OK_oktypenat(i)) -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) - -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype_lst)), OK_oktypenat((i + 1))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(v_subtype))*{v_subtype <- subtype_lst} + -- Rectype_ok2: `%|-%:%`(C, REC_rectype(mk_list_list(subtype_lst)), OK_oktypenat((i + 1))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) @@ -5517,38 +6467,28 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) rule mk_Deftype_ok{C : context, v_rectype : rectype, i : n, v_n : n, subtype_lst : subtype*}: `%|-%:OK`(C, _DEF_deftype(v_rectype, i)) -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype_lst} +++ C, v_rectype, OK_oktypenat(0)) - -- if (v_rectype = REC_rectype(`%`_list(subtype_lst))) + -- if (v_rectype = REC_rectype(mk_list_list(subtype_lst))) -- if (i < v_n) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype_lst}) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:181.1-183.41 rule struct{C : context, ft_1_lst : fieldtype*, ft'_1_lst : fieldtype*, ft_2_lst : fieldtype*}: - `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1_lst ++ ft'_1_lst)), STRUCT_comptype(`%`_list(ft_2_lst))) + `%|-%<:%`(C, STRUCT_comptype(mk_list_list(ft_1_lst ++ ft'_1_lst)), STRUCT_comptype(mk_list_list(ft_2_lst))) -- if (|ft_1_lst| = |ft_2_lst|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- ft_1_lst, ft_2 <- ft_2_lst} - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1_lst ++ ft'_1_lst))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2_lst))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 rule func{C : context, t_11_lst : valtype*, t_12_lst : valtype*, t_21_lst : valtype*, t_22_lst : valtype*}: - `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11_lst), `%`_resulttype(t_12_lst)), `FUNC%->%`_comptype(`%`_resulttype(t_21_lst), `%`_resulttype(t_22_lst))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21_lst), `%`_resulttype(t_11_lst)) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12_lst), `%`_resulttype(t_22_lst)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11_lst), `%`_resulttype(t_12_lst))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21_lst), `%`_resulttype(t_22_lst))) + `%|-%<:%`(C, `FUNC%->%`_comptype(mk_list_resulttype(t_11_lst), mk_list_resulttype(t_12_lst)), `FUNC%->%`_comptype(mk_list_resulttype(t_21_lst), mk_list_resulttype(t_22_lst))) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_21_lst), mk_list_resulttype(t_11_lst)) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_12_lst), mk_list_resulttype(t_22_lst)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) @@ -5556,7 +6496,6 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, final_opt : final?, typeuse_lst : typeuse*, ct : comptype, i : nat}: @@ -5564,7 +6503,7 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) -- if ($unrolldt(deftype_1) = SUB_subtype(final_opt, typeuse_lst, ct)) -- if (i < |typeuse_lst|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse_lst[i]), $heaptype_deftype(deftype_2)) - -- wf_context: `%`(C) + -- wf_subtype: `%`($unrolldt(deftype_1)) -- wf_subtype: `%`(SUB_subtype(final_opt, typeuse_lst, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 @@ -5572,8 +6511,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, v_heaptype : heaptype}: `%|-%<:%`(C, v_heaptype, v_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(v_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: @@ -5581,116 +6518,79 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) -- wf_heaptype: `%`(heaptype') ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule eq_any{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 rule i31_eq{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 rule struct_eq{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 rule array_eq{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, v_deftype : deftype, fieldtype_lst : fieldtype*}: `%|-%<:%`(C, $heaptype_deftype(v_deftype), STRUCT_heaptype) - -- Expand: `%~~%`(v_deftype, STRUCT_comptype(`%`_list(fieldtype_lst))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype_lst))) + -- Expand: `%~~%`(v_deftype, STRUCT_comptype(mk_list_list(fieldtype_lst))) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(fieldtype_lst))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, v_deftype : deftype, v_fieldtype : fieldtype}: `%|-%<:%`(C, $heaptype_deftype(v_deftype), ARRAY_heaptype) -- Expand: `%~~%`(v_deftype, ARRAY_comptype(v_fieldtype)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_comptype: `%`(ARRAY_comptype(v_fieldtype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, v_deftype : deftype, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%<:%`(C, $heaptype_deftype(v_deftype), FUNC_heaptype) - -- Expand: `%~~%`(v_deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) + -- Expand: `%~~%`(v_deftype, `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 rule typeidx_l{C : context, v_typeidx : typeidx, v_heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(v_typeidx), v_heaptype) -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(v_typeidx).0]), v_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(v_heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(v_typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 rule typeidx_r{C : context, v_heaptype : heaptype, v_typeidx : typeidx}: `%|-%<:%`(C, v_heaptype, _IDX_heaptype(v_typeidx)) -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(v_typeidx).0])) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(v_heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(v_typeidx)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 rule rec_struct{C : context, i : n, final_opt : final?, fieldtype_lst : fieldtype*}: `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) -- if (i < |C.RECS_context|) - -- if (C.RECS_context[i] = SUB_subtype(final_opt, [], STRUCT_comptype(`%`_list(fieldtype_lst)))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_subtype: `%`(SUB_subtype(final_opt, [], STRUCT_comptype(`%`_list(fieldtype_lst)))) + -- if (C.RECS_context[i] = SUB_subtype(final_opt, [], STRUCT_comptype(mk_list_list(fieldtype_lst)))) + -- wf_subtype: `%`(SUB_subtype(final_opt, [], STRUCT_comptype(mk_list_list(fieldtype_lst)))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 rule rec_array{C : context, i : n, final_opt : final?, v_fieldtype : fieldtype}: `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final_opt, [], ARRAY_comptype(v_fieldtype))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(ARRAY_heaptype) -- wf_subtype: `%`(SUB_subtype(final_opt, [], ARRAY_comptype(v_fieldtype))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 rule rec_func{C : context, i : n, final_opt : final?, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) -- if (i < |C.RECS_context|) - -- if (C.RECS_context[i] = SUB_subtype(final_opt, [], `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst)))) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_heaptype: `%`(FUNC_heaptype) - -- wf_subtype: `%`(SUB_subtype(final_opt, [], `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst)))) + -- if (C.RECS_context[i] = SUB_subtype(final_opt, [], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)))) + -- wf_subtype: `%`(SUB_subtype(final_opt, [], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 rule rec_sub{C : context, i : n, typeuse_lst : typeuse*, j : nat, final_opt : final?, ct : comptype}: @@ -5698,8 +6598,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- if (j < |typeuse_lst|) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final_opt, typeuse_lst, ct)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final_opt, typeuse_lst, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 @@ -5707,9 +6605,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NONE_heaptype, v_heaptype) -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, ANY_heaptype) -- if (v_heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(v_heaptype) - -- wf_heaptype: `%`(NONE_heaptype) -- wf_heaptype: `%`(ANY_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5718,9 +6613,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOFUNC_heaptype, v_heaptype) -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, FUNC_heaptype) -- if (v_heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(v_heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) -- wf_heaptype: `%`(FUNC_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5729,9 +6621,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXN_heaptype, v_heaptype) -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, EXN_heaptype) -- if (v_heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(v_heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) -- wf_heaptype: `%`(EXN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) @@ -5740,18 +6629,12 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, NOEXTERN_heaptype, v_heaptype) -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, EXTERN_heaptype) -- if (v_heaptype =/= BOT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(v_heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) -- wf_heaptype: `%`(EXTERN_heaptype) -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, v_heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, v_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(v_heaptype) - -- wf_heaptype: `%`(BOT_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) @@ -5759,17 +6642,11 @@ relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) @@ -5777,39 +6654,28 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, v_valtype : valtype}: `%|-%<:%`(C, BOT_valtype, v_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(v_valtype) - -- wf_valtype: `%`(BOT_valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-137.37 rule mk_Resulttype_sub{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: - `%|-%<:%`(C, `%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst)) + `%|-%<:%`(C, mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)) -- if (|t_1_lst| = |t_2_lst|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- t_1_lst, t_2 <- t_2_lst} - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- t_1_lst} - -- (wf_valtype: `%`(t_2))*{t_2 <- t_2_lst} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) @@ -5817,58 +6683,44 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:171.1-173.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: - `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + `%|-%<:%`(C, mk_fieldtype_fieldtype(?(), zt_1), mk_fieldtype_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: - `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + `%|-%<:%`(C, mk_fieldtype_fieldtype(?(MUT_mut), zt_1), mk_fieldtype_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) } ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Localtype_ok: `%|-%:OK`(context, localtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Localtype_ok{C : context, v_init : init, t : valtype}: - `%|-%:OK`(C, `%%`_localtype(v_init, t)) + `%|-%:OK`(C, mk_localtype_localtype(v_init, t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_localtype: `%`(`%%`_localtype(v_init, t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Instrtype_ok{C : context, t_1_lst : valtype*, x_lst : idx*, t_2_lst : valtype*, lct_lst : localtype*}: - `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_lst, `%`_resulttype(t_2_lst))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1_lst)) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2_lst)) + `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_1_lst)) + -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_2_lst)) -- if (|lct_lst| = |x_lst|) -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- x_lst} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- lct_lst, x <- x_lst} - -- wf_context: `%`(C) -- (wf_localtype: `%`(lct))*{lct <- lct_lst} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_lst, `%`_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand_use: `%~~_%%`(typeuse, context, comptype) @@ -5876,17 +6728,12 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) rule deftype{v_deftype : deftype, C : context, v_comptype : comptype}: `%~~_%%`($typeuse_deftype(v_deftype), C, v_comptype) -- Expand: `%~~%`(v_deftype, v_comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(v_comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule typeidx{v_typeidx : typeidx, C : context, v_comptype : comptype}: `%~~_%%`(_IDX_typeuse(v_typeidx), C, v_comptype) -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(v_typeidx).0], v_comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(v_comptype) - -- wf_typeuse: `%`(_IDX_typeuse(v_typeidx)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = @@ -5912,9 +6759,7 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), yy_lst, comptype')))*{comptype' <- comptype'_lst, x <- x_lst, yy_lst <- yy_lst_lst} -- Comptype_ok: `%|-%:OK`(C, v_comptype) -- (Comptype_sub: `%|-%<:%`(C, v_comptype, comptype'))*{comptype' <- comptype'_lst} - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- x_lst}, v_comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`($unrolldt(C.TYPES_context[$proj_uN_0(x).0])))*{x <- x_lst} -- (wf_subtype: `%`(SUB_subtype(?(), yy_lst, comptype')))*{comptype' <- comptype'_lst, yy_lst <- yy_lst_lst} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5924,31 +6769,24 @@ rec { relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 rule empty{C : context, x : idx}: - `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + `%|-%:%`(C, REC_rectype(mk_list_list([])), OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 rule cons{C : context, subtype_1 : subtype, subtype_lst : subtype*, x : idx}: - `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype_lst)), OK_oktypeidx(x)) + `%|-%:%`(C, REC_rectype(mk_list_list([subtype_1] ++ subtype_lst)), OK_oktypeidx(x)) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) - -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype_lst)), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(v_subtype))*{v_subtype <- subtype_lst} + -- Rectype_ok: `%|-%:%`(C, REC_rectype(mk_list_list(subtype_lst)), OK_oktypeidx(mk_uN_typeidx(($proj_uN_0(x).0 + 1)))) -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) + -- wf_oktypeidx: `%`(OK_oktypeidx(mk_uN_typeidx(($proj_uN_0(x).0 + 1)))) } ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Limits_ok{C : context, v_n : n, m_opt : m?, k : nat}: - `%|-%:%`(C, `[%..%]`_limits(`%`_u64(v_n), `%`_u64(v_m)?{v_m <- m_opt}), k) + `%|-%:%`(C, mk_limits_limits(mk_uN_u64(v_n), mk_uN_u64(v_m)?{v_m <- m_opt}), k) -- if (v_n <= k) -- (if ((v_n <= v_m) /\ (v_m <= k)))?{v_m <- m_opt} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(v_n), `%`_u64(v_m)?{v_m <- m_opt})) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) @@ -5956,19 +6794,15 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) rule mk_Tagtype_ok{C : context, v_typeuse : typeuse, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:OK`(C, v_typeuse) -- Typeuse_ok: `%|-%:OK`(C, v_typeuse) - -- Expand_use: `%~~_%%`(v_typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(v_typeuse) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) + -- Expand_use: `%~~_%%`(v_typeuse, C, `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Globaltype_ok: `%|-%:OK`(context, globaltype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Globaltype_ok{C : context, t : valtype}: - `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + `%|-%:OK`(C, mk_globaltype_globaltype(?(MUT_mut), t)) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Memtype_ok: `%|-%:OK`(context, memtype) @@ -5976,18 +6810,14 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) rule mk_Memtype_ok{C : context, v_addrtype : addrtype, v_limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(v_addrtype, v_limits)) -- Limits_ok: `%|-%:%`(C, v_limits, (2 ^ ((($size($numtype_addrtype(v_addrtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(v_addrtype, v_limits)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mk_Tabletype_ok{C : context, v_addrtype : addrtype, v_limits : limits, v_reftype : reftype}: - `%|-%:OK`(C, `%%%`_tabletype(v_addrtype, v_limits, v_reftype)) + `%|-%:OK`(C, mk_tabletype_tabletype(v_addrtype, v_limits, v_reftype)) -- Limits_ok: `%|-%:%`(C, v_limits, ((((2 ^ $size($numtype_addrtype(v_addrtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, v_reftype) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(v_addrtype, v_limits, v_reftype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Externtype_ok: `%|-%:OK`(context, externtype) @@ -5995,74 +6825,56 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) rule tag{C : context, v_tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(v_tagtype)) -- Tagtype_ok: `%|-%:OK`(C, v_tagtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(v_tagtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule global{C : context, v_globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(v_globaltype)) -- Globaltype_ok: `%|-%:OK`(C, v_globaltype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(v_globaltype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule mem{C : context, v_memtype : memtype}: `%|-%:OK`(C, MEM_externtype(v_memtype)) -- Memtype_ok: `%|-%:OK`(C, v_memtype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(v_memtype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule table{C : context, v_tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(v_tabletype)) -- Tabletype_ok: `%|-%:OK`(C, v_tabletype) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(v_tabletype)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule func{C : context, v_typeuse : typeuse, t_1_lst : valtype*, t_2_lst : valtype*}: `%|-%:OK`(C, FUNC_externtype(v_typeuse)) -- Typeuse_ok: `%|-%:OK`(C, v_typeuse) - -- Expand_use: `%~~_%%`(v_typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(v_typeuse)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) + -- Expand_use: `%~~_%%`(v_typeuse, C, `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Instrtype_sub{C : context, t_11_lst : valtype*, x_1_lst : idx*, t_12_lst : valtype*, t_21_lst : valtype*, x_2_lst : idx*, t_22_lst : valtype*, x_lst : idx*, t_lst : valtype*}: - `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11_lst), x_1_lst, `%`_resulttype(t_12_lst)), `%->_%%`_instrtype(`%`_resulttype(t_21_lst), x_2_lst, `%`_resulttype(t_22_lst))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21_lst), `%`_resulttype(t_11_lst)) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12_lst), `%`_resulttype(t_22_lst)) + `%|-%<:%`(C, mk_instrtype_instrtype(mk_list_resulttype(t_11_lst), x_1_lst, mk_list_resulttype(t_12_lst)), mk_instrtype_instrtype(mk_list_resulttype(t_21_lst), x_2_lst, mk_list_resulttype(t_22_lst))) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_21_lst), mk_list_resulttype(t_11_lst)) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_12_lst), mk_list_resulttype(t_22_lst)) -- if (x_lst = $setminus_(syntax localidx, x_2_lst, x_1_lst)) -- if (|t_lst| = |x_lst|) -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- x_lst} - -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- t_lst, x <- x_lst} - -- wf_context: `%`(C) + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = mk_localtype_localtype(SET_init, t)))*{t <- t_lst, x <- x_lst} -- (wf_uN: `%%`(32, x))*{x <- x_lst} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11_lst), x_1_lst, `%`_resulttype(t_12_lst))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21_lst), x_2_lst, `%`_resulttype(t_22_lst))) - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- t_lst} + -- (wf_uN: `%%`(32, iter))*{iter <- $setminus_(syntax localidx, x_2_lst, x_1_lst)} + -- (wf_localtype: `%`(mk_localtype_localtype(SET_init, t)))*{t <- t_lst} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule max{C : context, n_1 : n, m_1 : m, n_2 : n, m_2_opt : m?}: - `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- m_2_opt})) + `%|-%<:%`(C, mk_limits_limits(mk_uN_u64(n_1), ?(mk_uN_u64(m_1))), mk_limits_limits(mk_uN_u64(n_2), mk_uN_u64(m_2)?{m_2 <- m_2_opt})) -- if (n_1 >= n_2) -- (if (m_1 <= m_2))?{m_2 <- m_2_opt} - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- m_2_opt})) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule eps{C : context, n_1 : n, n_2 : n}: - `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) + `%|-%<:%`(C, mk_limits_limits(mk_uN_u64(n_1), ?()), mk_limits_limits(mk_uN_u64(n_2), ?())) -- if (n_1 >= n_2) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) @@ -6071,26 +6883,19 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: - `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + `%|-%<:%`(C, mk_globaltype_globaltype(?(), valtype_1), mk_globaltype_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: - `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + `%|-%<:%`(C, mk_globaltype_globaltype(?(MUT_mut), valtype_1), mk_globaltype_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) @@ -6098,21 +6903,15 @@ relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) rule mk_Memtype_sub{C : context, v_addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(v_addrtype, limits_1), `%%PAGE`_memtype(v_addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(v_addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(v_addrtype, limits_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mk_Tabletype_sub{C : context, v_addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: - `%|-%<:%`(C, `%%%`_tabletype(v_addrtype, limits_1, reftype_1), `%%%`_tabletype(v_addrtype, limits_2, reftype_2)) + `%|-%<:%`(C, mk_tabletype_tabletype(v_addrtype, limits_1, reftype_1), mk_tabletype_tabletype(v_addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(v_addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(v_addrtype, limits_2, reftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) @@ -6120,61 +6919,40 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, valtype_opt : valtype?}: - `%|-%:%`(C, _RESULT_blocktype(valtype_opt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype_opt)))) + `%|-%:%`(C, _RESULT_blocktype(valtype_opt), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(lift(valtype_opt)))) -- (Valtype_ok: `%|-%:OK`(C, v_valtype))?{v_valtype <- valtype_opt} - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype_opt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype_opt)))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, v_typeidx : typeidx, t_1_lst : valtype*, t_2_lst : valtype*}: - `%|-%:%`(C, _IDX_blocktype(v_typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + `%|-%:%`(C, _IDX_blocktype(v_typeidx), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(v_typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(v_typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(v_typeidx).0], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Catch_ok: `%|-%:OK`(context, catch) @@ -6183,83 +6961,78 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_catch(x, l)) -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_lst), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_lst), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, t_lst : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_lst ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_lst ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(v_valtype : valtype) : val?? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(I32_valtype) = ?(?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0))))) - -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) + def $default_(I32_valtype) = ?(?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, mk_uN_uN(0))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(I64_valtype) = ?(?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0))))) - -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) + def $default_(I64_valtype) = ?(?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, mk_uN_uN(0))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F32_valtype) = ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(F64_valtype) = ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(V128_valtype) = ?(?(VCONST_val(V128_vectype, `%`_vec_(0)))) - -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) + def $default_(V128_valtype) = ?(?(VCONST_val(V128_vectype, mk_uN_vec_(0)))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) - -- wf_val: `%`(`REF.NULL_ADDR`_val) + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(REF_NULL_ADDR_val)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) def $default_{x0 : valtype}(x0) = ?() -- otherwise -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Defaultable: `|-%DEFAULTABLE`(valtype) +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation default__is_wf: `%%`(v_valtype : valtype, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule default__is_wf0{v_valtype : valtype, ret_val : val?}: + `%%`(v_valtype, ret_val) + -- wf_valtype: `%`(v_valtype) + -- if ($default_(v_valtype) =/= ?()) + -- if (ret_val = !($default_(v_valtype))) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule mk_Defaultable{t : valtype}: `|-%DEFAULTABLE`(t) -- if ($default_(t) =/= ?()) -- if (!($default_(t)) =/= ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule mk_Memarg_ok{v_n : n, v_m : m, at : addrtype, v_N : N}: - `|-%:%->%`({ALIGN `%`_u32(v_n), OFFSET `%`_u64(v_m)}, at, v_N) + `|-%:%->%`({ALIGN mk_uN_u32(v_n), OFFSET mk_uN_u64(v_m)}, at, v_N) -- if (((2 ^ v_n) : nat <:> rat) <= ((v_N : nat <:> rat) / (8 : nat <:> rat))) -- if (v_m < (2 ^ $size($numtype_addrtype(at)))) - -- wf_memarg: `%`({ALIGN `%`_u32(v_n), OFFSET `%`_u64(v_m)}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec def $is_packtype(v_storagetype : storagetype) : bool @@ -6273,1113 +7046,791 @@ rec { relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: - `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + `%|-%:%`(C, NOP_instr, mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: - `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + `%|-%:%`(C, UNREACHABLE_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: - `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + `%|-%:%`(C, DROP_instr, mk_instrtype_instrtype(mk_list_resulttype([t]), [], mk_list_resulttype([]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule select_expl{C : context, t : valtype}: - `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + `%|-%:%`(C, SELECT_instr(?([t])), mk_instrtype_instrtype(mk_list_resulttype([t t I32_valtype]), [], mk_list_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule select_impl{C : context, t : valtype, t' : valtype, v_numtype : numtype, v_vectype : vectype}: - `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + `%|-%:%`(C, SELECT_instr(?()), mk_instrtype_instrtype(mk_list_resulttype([t t I32_valtype]), [], mk_list_resulttype([t]))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = $valtype_numtype(v_numtype)) \/ (t' = $valtype_vectype(v_vectype))) - -- wf_context: `%`(C) -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_lst : idx*}: - `%|-%:%`(C, BLOCK_instr(bt, instr_lst), `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_lst, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_lst, `%`_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr_lst)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_lst, `%`_resulttype(t_2_lst))) + `%|-%:%`(C, BLOCK_instr(bt, instr_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Blocktype_ok: `%|-%:%`(C, bt, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_lst : idx*}: - `%|-%:%`(C, LOOP_instr(bt, instr_lst), `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_lst, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_lst, `%`_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr_lst)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1_lst)], RETURN ?(), REFS [], RECS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_lst, `%`_resulttype(t_2_lst))) + `%|-%:%`(C, LOOP_instr(bt, instr_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Blocktype_ok: `%|-%:%`(C, bt, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_1_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_1_lst)], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, instr_1_lst : instr*, instr_2_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_1_lst : idx*, x_2_lst : idx*}: - `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst), `%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ [I32_valtype]), [], `%`_resulttype(t_2_lst))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_1_lst, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_1_lst, `%`_resulttype(t_2_lst))) - -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_2_lst, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_2_lst, `%`_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ [I32_valtype]), [], `%`_resulttype(t_2_lst))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_1_lst, `%`_resulttype(t_2_lst))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_2_lst, `%`_resulttype(t_2_lst))) + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [I32_valtype]), [], mk_list_resulttype(t_2_lst))) + -- Blocktype_ok: `%|-%:%`(C, bt, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_1_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_2_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_2_lst, mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_2_lst, mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: - `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ t_lst), [], `%`_resulttype(t_2_lst))) + `%|-%:%`(C, BR_instr(l), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t_lst) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ t_lst), [], `%`_resulttype(t_2_lst))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, t_lst : valtype*}: - `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_lst ++ [I32_valtype]), [], `%`_resulttype(t_lst))) + `%|-%:%`(C, BR_IF_instr(l), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [I32_valtype]), [], mk_list_resulttype(t_lst))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t_lst) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_lst ++ [I32_valtype]), [], `%`_resulttype(t_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, l_lst : labelidx*, l' : labelidx, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: - `%|-%:%`(C, BR_TABLE_instr(l_lst, l'), `%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ t_lst ++ [I32_valtype]), [], `%`_resulttype(t_2_lst))) + `%|-%:%`(C, BR_TABLE_instr(l_lst, l'), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst ++ [I32_valtype]), [], mk_list_resulttype(t_2_lst))) -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- l_lst} - -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_lst), C.LABELS_context[$proj_uN_0(l).0]))*{l <- l_lst} + -- (Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_lst), C.LABELS_context[$proj_uN_0(l).0]))*{l <- l_lst} -- if ($proj_uN_0(l').0 < |C.LABELS_context|) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_lst), C.LABELS_context[$proj_uN_0(l').0]) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ t_lst ++ [I32_valtype]), [], `%`_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l_lst, l')) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ t_lst ++ [I32_valtype]), [], `%`_resulttype(t_2_lst))) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_lst), C.LABELS_context[$proj_uN_0(l').0]) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst ++ [I32_valtype]), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst ++ [I32_valtype]), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, t_lst : valtype*, ht : heaptype}: - `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t_lst ++ [REF_valtype(?(), ht)]))) + `%|-%:%`(C, BR_ON_NULL_instr(l), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype(t_lst ++ [REF_valtype(?(), ht)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t_lst) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t_lst ++ [REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, t_lst : valtype*, ht : heaptype}: - `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t_lst))) + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype(t_lst))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)])) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t_lst))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, t_lst : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t_lst ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t_lst ++ [$valtype_reftype(rt)])) + -- if (C.LABELS_context[$proj_uN_0(l).0] = mk_list_resulttype(t_lst ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t_lst ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, t_lst : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t_lst ++ [$valtype_reftype(rt_2)]))) + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_2)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t_lst ++ [$valtype_reftype(rt)])) + -- if (C.LABELS_context[$proj_uN_0(l).0] = mk_list_resulttype(t_lst ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t_lst ++ [$valtype_reftype(rt_2)]))) + -- wf_reftype: `%`($diffrt(rt_1, rt_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, t_1_lst : valtype*, t_2_lst : valtype*}: - `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + `%|-%:%`(C, CALL_instr(x), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) - -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, t_1_lst : valtype*, t_2_lst : valtype*}: - `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2_lst))) + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype(t_2_lst))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2_lst))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, t_1_lst : valtype*, at : addrtype, t_2_lst : valtype*, lim : limits, rt : reftype}: - `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2_lst))) + `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [$valtype_addrtype(at)]), [], mk_list_resulttype(t_2_lst))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- if ($proj_uN_0(y).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2_lst))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: - `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ t_lst), [], `%`_resulttype(t_2_lst))) - -- if (C.RETURN_context = ?(`%`_resulttype(t_lst))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ t_lst), [], `%`_resulttype(t_2_lst))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + `%|-%:%`(C, RETURN_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) + -- if (C.RETURN_context = ?(mk_list_resulttype(t_lst))) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, t_3_lst : valtype*, t_1_lst : valtype*, t_4_lst : valtype*, t_2_lst : valtype*, t'_2_lst : valtype*}: - `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3_lst ++ t_1_lst), [], `%`_resulttype(t_4_lst))) + `%|-%:%`(C, RETURN_CALL_instr(x), mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst), [], mk_list_resulttype(t_4_lst))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) - -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- if (C.RETURN_context = ?(`%`_resulttype(t'_2_lst))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2_lst), `%`_resulttype(t'_2_lst)) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3_lst), [], `%`_resulttype(t_4_lst))) - -- wf_context: `%`(C) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- if (C.RETURN_context = ?(mk_list_resulttype(t'_2_lst))) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_2_lst), mk_list_resulttype(t'_2_lst)) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) -- (wf_valtype: `%`(t'_2))*{t'_2 <- t'_2_lst} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3_lst ++ t_1_lst), [], `%`_resulttype(t_4_lst))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3_lst), [], `%`_resulttype(t_4_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, t_3_lst : valtype*, t_1_lst : valtype*, t_4_lst : valtype*, t_2_lst : valtype*, t'_2_lst : valtype*}: - `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3_lst ++ t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4_lst))) + `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype(t_4_lst))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- if (C.RETURN_context = ?(`%`_resulttype(t'_2_lst))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2_lst), `%`_resulttype(t'_2_lst)) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3_lst), [], `%`_resulttype(t_4_lst))) - -- wf_context: `%`(C) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- if (C.RETURN_context = ?(mk_list_resulttype(t'_2_lst))) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_2_lst), mk_list_resulttype(t'_2_lst)) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) -- (wf_valtype: `%`(t'_2))*{t'_2 <- t'_2_lst} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3_lst ++ t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4_lst))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3_lst), [], `%`_resulttype(t_4_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, t_3_lst : valtype*, t_1_lst : valtype*, at : addrtype, t_4_lst : valtype*, lim : limits, rt : reftype, t_2_lst : valtype*, t'_2_lst : valtype*}: - `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3_lst ++ t_1_lst ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4_lst))) + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst ++ [$valtype_addrtype(at)]), [], mk_list_resulttype(t_4_lst))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- if ($proj_uN_0(y).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- if (C.RETURN_context = ?(`%`_resulttype(t'_2_lst))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2_lst), `%`_resulttype(t'_2_lst)) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3_lst), [], `%`_resulttype(t_4_lst))) - -- wf_context: `%`(C) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- if (C.RETURN_context = ?(mk_list_resulttype(t'_2_lst))) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_2_lst), mk_list_resulttype(t'_2_lst)) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) -- (wf_valtype: `%`(t'_2))*{t'_2 <- t'_2_lst} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3_lst ++ t_1_lst ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4_lst))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3_lst), [], `%`_resulttype(t_4_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: - `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ t_lst), [], `%`_resulttype(t_2_lst))) + `%|-%:%`(C, THROW_instr(x), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ t_lst), [], `%`_resulttype(t_2_lst))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: - `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2_lst))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2_lst))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + `%|-%:%`(C, THROW_REF_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], mk_list_resulttype(t_2_lst))) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, catch_lst : catch*, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_lst : idx*}: - `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch_lst), instr_lst), `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_lst, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_lst, `%`_resulttype(t_2_lst))) + `%|-%:%`(C, TRY_TABLE_instr(bt, mk_list_list(catch_lst), instr_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Blocktype_ok: `%|-%:%`(C, bt, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) -- (Catch_ok: `%|-%:OK`(C, v_catch))*{v_catch <- catch_lst} - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch_lst), instr_lst)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_lst, `%`_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 rule ref_null{C : context, ht : heaptype}: - `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + `%|-%:%`(C, REF_NULL_instr(ht), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(NULL_null), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 rule ref_func{C : context, x : idx, dt : deftype}: - `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + `%|-%:%`(C, REF_FUNC_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) -- if (|C.REFS_context| > 0) -- if (x <- C.REFS_context) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 rule ref_i31{C : context}: - `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + `%|-%:%`(C, REF_I31_instr, mk_instrtype_instrtype(mk_list_resulttype([I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), I31_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 rule ref_is_null{C : context, ht : heaptype}: - `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, REF_IS_NULL_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype([I32_valtype]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 rule ref_as_non_null{C : context, ht : heaptype}: - `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + `%|-%:%`(C, REF_AS_NON_NULL_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype([REF_valtype(?(), ht)]))) -- Heaptype_ok: `%|-%:OK`(C, ht) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 rule ref_eq{C : context}: - `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, REF_EQ_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 rule ref_test{C : context, rt : reftype, rt' : reftype}: - `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, REF_TEST_instr(rt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt')]), [], mk_list_resulttype([I32_valtype]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.TEST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 rule ref_cast{C : context, rt : reftype, rt' : reftype}: - `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) + `%|-%:%`(C, REF_CAST_instr(rt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt')]), [], mk_list_resulttype([$valtype_reftype(rt)]))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.CAST`_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 rule i31_get{C : context, v_sx : sx}: - `%|-%:%`(C, `I31.GET`_instr(v_sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`I31.GET`_instr(v_sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, I31_GET_instr(v_sx), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 rule struct_new{C : context, x : idx, zt_lst : storagetype*, mut_opt_lst : mut?*}: - `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- zt_lst}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + `%|-%:%`(C, STRUCT_NEW_instr(x), mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)*{zt <- zt_lst}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- zt_lst}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 rule struct_new_default{C : context, x : idx, mut_opt_lst : mut?*, zt_lst : storagetype*}: - `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + `%|-%:%`(C, STRUCT_NEW_DEFAULT_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- zt_lst} - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- (wf_valtype: `%`($unpack(zt)))*{zt <- zt_lst} + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 rule struct_get{C : context, sx_opt : sx?, x : idx, i : fieldidx, zt : storagetype, ft_lst : fieldtype*, mut_opt : mut?}: - `%|-%:%`(C, `STRUCT.GET`_instr(sx_opt, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + `%|-%:%`(C, STRUCT_GET_instr(sx_opt, x, i), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype([$unpack(zt)]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft_lst))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(ft_lst))) -- if ($proj_uN_0(i).0 < |ft_lst|) - -- if (ft_lst[$proj_uN_0(i).0] = `%%`_fieldtype(mut_opt, zt)) + -- if (ft_lst[$proj_uN_0(i).0] = mk_fieldtype_fieldtype(mut_opt, zt)) -- if ((sx_opt =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.GET`_instr(sx_opt, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_lst))) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut_opt, zt)) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_lst))) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(mut_opt, zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 rule struct_set{C : context, x : idx, i : fieldidx, zt : storagetype, ft_lst : fieldtype*}: - `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + `%|-%:%`(C, STRUCT_SET_instr(x, i), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft_lst))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(ft_lst))) -- if ($proj_uN_0(i).0 < |ft_lst|) - -- if (ft_lst[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_lst))) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) + -- if (ft_lst[$proj_uN_0(i).0] = mk_fieldtype_fieldtype(?(MUT_mut), zt)) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_lst))) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 rule array_new{C : context, x : idx, zt : storagetype, mut_opt : mut?}: - `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + `%|-%:%`(C, ARRAY_NEW_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$unpack(zt) I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 rule array_new_default{C : context, x : idx, mut_opt : mut?, zt : storagetype}: - `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + `%|-%:%`(C, ARRAY_NEW_DEFAULT_instr(x), mk_instrtype_instrtype(mk_list_resulttype([I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- wf_valtype: `%`($unpack(zt)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 rule array_new_fixed{C : context, x : idx, v_n : n, zt : storagetype, mut_opt : mut?}: - `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^v_n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + `%|-%:%`(C, ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n)), mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)^v_n{}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^v_n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 rule array_new_elem{C : context, x : idx, y : idx, mut_opt : mut?, rt : reftype}: - `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + `%|-%:%`(C, ARRAY_NEW_ELEM_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut_opt, $storagetype_reftype(rt)))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, $storagetype_reftype(rt)))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, $storagetype_reftype(rt)))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, $storagetype_reftype(rt)))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 rule array_new_data{C : context, x : idx, y : idx, mut_opt : mut?, zt : storagetype, v_numtype : numtype, v_vectype : vectype}: - `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + `%|-%:%`(C, ARRAY_NEW_DATA_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if (($unpack(zt) = $valtype_numtype(v_numtype)) \/ ($unpack(zt) = $valtype_vectype(v_vectype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- wf_valtype: `%`($unpack(zt)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 rule array_get{C : context, sx_opt : sx?, x : idx, zt : storagetype, mut_opt : mut?}: - `%|-%:%`(C, `ARRAY.GET`_instr(sx_opt, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + `%|-%:%`(C, ARRAY_GET_instr(sx_opt, x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], mk_list_resulttype([$unpack(zt)]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ((sx_opt =/= ?()) <=> $is_packtype(zt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx_opt, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 rule array_set{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + `%|-%:%`(C, ARRAY_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 rule array_len{C : context}: - `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.LEN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, ARRAY_LEN_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 rule array_fill{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, ARRAY_FILL_instr(x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 rule array_copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, mut_opt : mut?, zt_2 : storagetype}: - `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, ARRAY_COPY_instr(x_1, x_2), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt_1))) -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 rule array_init_elem{C : context, x : idx, y : idx, zt : storagetype}: - `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, ARRAY_INIT_ELEM_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 rule array_init_data{C : context, x : idx, y : idx, zt : storagetype, v_numtype : numtype, v_vectype : vectype}: - `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, ARRAY_INIT_DATA_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = $valtype_numtype(v_numtype)) \/ ($unpack(zt) = $valtype_vectype(v_vectype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- wf_valtype: `%`($unpack(zt)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 rule extern_convert_any{C : context, null_1_opt : null?, null_2_opt : null?}: - `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1_opt, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2_opt, EXTERN_heaptype)]))) + `%|-%:%`(C, EXTERN_CONVERT_ANY_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(null_1_opt, ANY_heaptype)]), [], mk_list_resulttype([REF_valtype(null_2_opt, EXTERN_heaptype)]))) -- if (null_1_opt = null_2_opt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1_opt, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2_opt, EXTERN_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 rule any_convert_extern{C : context, null_1_opt : null?, null_2_opt : null?}: - `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1_opt, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2_opt, ANY_heaptype)]))) + `%|-%:%`(C, ANY_CONVERT_EXTERN_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(null_1_opt, EXTERN_heaptype)]), [], mk_list_resulttype([REF_valtype(null_2_opt, ANY_heaptype)]))) -- if (null_1_opt = null_2_opt) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1_opt, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2_opt, ANY_heaptype)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 rule local_get{C : context, x : idx, t : valtype}: - `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + `%|-%:%`(C, LOCAL_GET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) - -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = mk_localtype_localtype(SET_init, t)) + -- wf_localtype: `%`(mk_localtype_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 rule local_set{C : context, x : idx, t : valtype, v_init : init}: - `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + `%|-%:%`(C, LOCAL_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([t]), [x], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) - -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(v_init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_localtype: `%`(`%%`_localtype(v_init, t)) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = mk_localtype_localtype(v_init, t)) + -- wf_localtype: `%`(mk_localtype_localtype(v_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 rule local_tee{C : context, x : idx, t : valtype, v_init : init}: - `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + `%|-%:%`(C, LOCAL_TEE_instr(x), mk_instrtype_instrtype(mk_list_resulttype([t]), [x], mk_list_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) - -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(v_init, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(v_init, t)) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = mk_localtype_localtype(v_init, t)) + -- wf_localtype: `%`(mk_localtype_localtype(v_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 rule global_get{C : context, x : idx, t : valtype, mut_opt : mut?}: - `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + `%|-%:%`(C, GLOBAL_GET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) - -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut_opt, t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(mut_opt, t)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = mk_globaltype_globaltype(mut_opt, t)) + -- wf_globaltype: `%`(mk_globaltype_globaltype(mut_opt, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 rule global_set{C : context, x : idx, t : valtype}: - `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + `%|-%:%`(C, GLOBAL_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([t]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) - -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = mk_globaltype_globaltype(?(MUT_mut), t)) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 rule table_get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + `%|-%:%`(C, TABLE_GET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_reftype(rt)]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 rule table_set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + `%|-%:%`(C, TABLE_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 rule table_size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: - `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + `%|-%:%`(C, TABLE_SIZE_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_addrtype(at)]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 rule table_grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: - `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + `%|-%:%`(C, TABLE_GROW_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_addrtype(at)]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 rule table_fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + `%|-%:%`(C, TABLE_FILL_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 rule table_copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: - `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + `%|-%:%`(C, TABLE_COPY_instr(x_1, x_2), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) + -- if (C.TABLES_context[$proj_uN_0(x_1).0] = mk_tabletype_tabletype(at_1, lim_1, rt_1)) -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) + -- if (C.TABLES_context[$proj_uN_0(x_2).0] = mk_tabletype_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) - -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at_2, lim_2, rt_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 rule table_init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: - `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, TABLE_INIT_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt_1)) -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt_1)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 rule elem_drop{C : context, x : idx, rt : reftype}: - `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + `%|-%:%`(C, ELEM_DROP_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) - -- wf_context: `%`(C) -- wf_reftype: `%`(rt) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 rule memory_size{C : context, x : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + `%|-%:%`(C, MEMORY_SIZE_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_addrtype(at)]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 rule memory_grow{C : context, x : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + `%|-%:%`(C, MEMORY_GROW_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_addrtype(at)]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 rule memory_fill{C : context, x : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + `%|-%:%`(C, MEMORY_FILL_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 rule memory_copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: - `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + `%|-%:%`(C, MEMORY_COPY_instr(x_1, x_2), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 rule memory_init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, MEMORY_INIT_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 rule data_drop{C : context, x : idx}: - `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + `%|-%:%`(C, DATA_DROP_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) - -- wf_context: `%`(C) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 rule load_val{C : context, nt : numtype, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, LOAD_instr(nt, ?(), x, v_memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + `%|-%:%`(C, LOAD_instr(nt, ?(), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(v_memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, v_memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 rule load_pack{C : context, v_Inn : Inn, v_M : M, v_sx : sx, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, `%_%`_loadop_Inn(`%`_sz(v_M), v_sx))), x, v_memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(v_Inn)]))) + `%|-%:%`(C, LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_M), v_sx))), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_addrtype(v_Inn)]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(v_memarg, at, v_M) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, `%_%`_loadop_Inn(`%`_sz(v_M), v_sx))), x, v_memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(v_Inn)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 rule store_val{C : context, nt : numtype, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, STORE_instr(nt, ?(), x, v_memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + `%|-%:%`(C, STORE_instr(nt, ?(), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(v_memarg, at, $size(nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, v_memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 rule store_pack{C : context, v_Inn : Inn, v_M : M, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, `%`_storeop_Inn(`%`_sz(v_M)))), x, v_memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(v_Inn)]), [], `%`_resulttype([]))) + `%|-%:%`(C, STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_M)))), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_addrtype(v_Inn)]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(v_memarg, at, v_M) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, `%`_storeop_Inn(`%`_sz(v_M)))), x, v_memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(v_Inn)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 rule vload_val{C : context, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, v_memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(v_memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, v_memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 rule vload_pack{C : context, v_M : M, v_N : N, v_sx : sx, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(v_M), v_N, v_sx)), x, v_memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_N, v_sx)), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(v_memarg, at, (v_M * v_N)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(v_M), v_N, v_sx)), x, v_memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 rule vload_splat{C : context, v_N : N, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(v_N))), x, v_memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(v_memarg, at, v_N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(v_N))), x, v_memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 rule vload_zero{C : context, v_N : N, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(v_N))), x, v_memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(v_memarg, at, v_N) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(v_N))), x, v_memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 rule vload_lane{C : context, v_N : N, x : idx, v_memarg : memarg, i : laneidx, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(v_N), x, v_memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, v_memarg, i), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([V128_valtype]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(v_memarg, at, v_N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (v_N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(v_N), x, v_memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 rule vstore{C : context, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VSTORE_instr(V128_vectype, x, v_memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, VSTORE_instr(V128_vectype, x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(v_memarg, at, $vsize(V128_vectype)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, v_memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 rule vstore_lane{C : context, v_N : N, x : idx, v_memarg : memarg, i : laneidx, at : addrtype, lim : limits}: - `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(v_N), x, v_memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, v_memarg, i), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(v_memarg, at, v_N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (v_N : nat <:> rat))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(v_N), x, v_memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_}: - `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) + `%|-%:%`(C, CONST_instr(nt, c_nt), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_}: - `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + `%|-%:%`(C, UNOP_instr(nt, unop_nt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_}: - `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + `%|-%:%`(C, BINOP_instr(nt, binop_nt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_}: - `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt)]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_}: - `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, RELOP_instr(nt, relop_nt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: - `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt_2)]), [], mk_list_resulttype([$valtype_numtype(nt_1)]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 rule vconst{C : context, c : vec_}: - `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VCONST_instr(V128_vectype, c), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 rule vvunop{C : context, v_vvunop : vvunop}: - `%|-%:%`(C, VVUNOP_instr(V128_vectype, v_vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, v_vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VVUNOP_instr(V128_vectype, v_vvunop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 rule vvbinop{C : context, v_vvbinop : vvbinop}: - `%|-%:%`(C, VVBINOP_instr(V128_vectype, v_vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, v_vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VVBINOP_instr(V128_vectype, v_vvbinop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 rule vvternop{C : context, v_vvternop : vvternop}: - `%|-%:%`(C, VVTERNOP_instr(V128_vectype, v_vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, v_vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, v_vvternop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 rule vvtestop{C : context, v_vvtestop : vvtestop}: - `%|-%:%`(C, VVTESTOP_instr(V128_vectype, v_vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, v_vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, v_vvtestop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 rule vunop{C : context, sh : shape, vunop : vunop_}: - `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VUNOP_instr(sh, vunop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_}: - `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VBINOP_instr(sh, vbinop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 rule vternop{C : context, sh : shape, vternop : vternop_}: - `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VTERNOP_instr(sh, vternop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_}: - `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_}: - `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VRELOP_instr(sh, vrelop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: - `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype I32_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 rule vbitmask{C : context, sh : ishape}: - `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, VBITMASK_instr(sh), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: - `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 rule vshuffle{C : context, sh : bshape, i_lst : laneidx*}: - `%|-%:%`(C, VSHUFFLE_instr(sh, i_lst), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSHUFFLE_instr(sh, i_lst), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($fun_dim($proj_bshape_0(sh).0)).0)))*{i <- i_lst} - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i_lst)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($fun_dim($proj_bshape_0(sh).0)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: - `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSPLAT_instr(sh), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype($unpackshape(sh))]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 rule vextract_lane{C : context, sh : shape, sx_opt : sx?, i : laneidx}: - `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx_opt, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx_opt, i), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([$valtype_numtype($unpackshape(sh))]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($fun_dim(sh)).0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx_opt, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- wf_dim: `%`($fun_dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: - `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], mk_list_resulttype([V128_valtype]))) -- if ($proj_uN_0(i).0 < $proj_dim_0($fun_dim(sh)).0) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- wf_dim: `%`($fun_dim(sh)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: - `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: - `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: - `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, v_sx : sx}: - `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, v_sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, v_sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, v_sx), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: - `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 rule empty{C : context}: - `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + `%|-%:%`(C, [], mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 rule seq{C : context, instr_1 : instr, instr_2_lst : instr*, t_1_lst : valtype*, x_1_lst : idx*, x_2_lst : idx*, t_3_lst : valtype*, t_2_lst : valtype*, init_lst : init*, t_lst : valtype*}: - `%|-%:%`(C, [instr_1] ++ instr_2_lst, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_1_lst ++ x_2_lst, `%`_resulttype(t_3_lst))) - -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_1_lst, `%`_resulttype(t_2_lst))) + `%|-%:%`(C, [instr_1] ++ instr_2_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst ++ x_2_lst, mk_list_resulttype(t_3_lst))) + -- Instr_ok: `%|-%:%`(C, instr_1, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) -- if (|init_lst| = |t_lst|) -- if (|init_lst| = |x_1_lst|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- x_1_lst} - -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst, x_1 <- x_1_lst} - -- if ($with_locals(C, x_1_lst, `%%`_localtype(SET_init, t)*{t <- t_lst}) =/= ?()) - -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1_lst, `%%`_localtype(SET_init, t)*{t <- t_lst})), instr_2_lst, `%->_%%`_instrtype(`%`_resulttype(t_2_lst), x_2_lst, `%`_resulttype(t_3_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- instr_2_lst} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_1_lst ++ x_2_lst, `%`_resulttype(t_3_lst))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_1_lst, `%`_resulttype(t_2_lst))) - -- (wf_localtype: `%`(`%%`_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst} - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- t_lst} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2_lst), x_2_lst, `%`_resulttype(t_3_lst))) + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = mk_localtype_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst, x_1 <- x_1_lst} + -- if ($with_locals(C, x_1_lst, mk_localtype_localtype(SET_init, t)*{t <- t_lst}) =/= ?()) + -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1_lst, mk_localtype_localtype(SET_init, t)*{t <- t_lst})), instr_2_lst, mk_instrtype_instrtype(mk_list_resulttype(t_2_lst), x_2_lst, mk_list_resulttype(t_3_lst))) + -- wf_context: `%`(!($with_locals(C, x_1_lst, mk_localtype_localtype(SET_init, t)*{t <- t_lst}))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) + -- (wf_localtype: `%`(mk_localtype_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst} + -- (wf_localtype: `%`(mk_localtype_localtype(SET_init, t)))*{t <- t_lst} + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_2_lst), x_2_lst, mk_list_resulttype(t_3_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 rule sub{C : context, instr_lst : instr*, it' : instrtype, it : instrtype}: @@ -7387,31 +7838,23 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- Instrs_ok: `%|-%:%`(C, instr_lst, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 rule frame{C : context, instr_lst : instr*, t_lst : valtype*, t_1_lst : valtype*, x_lst : idx*, t_2_lst : valtype*}: - `%|-%:%`(C, instr_lst, `%->_%%`_instrtype(`%`_resulttype(t_lst ++ t_1_lst), x_lst, `%`_resulttype(t_lst ++ t_2_lst))) - -- Instrs_ok: `%|-%:%`(C, instr_lst, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_lst, `%`_resulttype(t_2_lst))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_lst)) - -- wf_context: `%`(C) - -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_lst ++ t_1_lst), x_lst, `%`_resulttype(t_lst ++ t_2_lst))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_lst, `%`_resulttype(t_2_lst))) + `%|-%:%`(C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ t_1_lst), x_lst, mk_list_resulttype(t_lst ++ t_2_lst))) + -- Instrs_ok: `%|-%:%`(C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) } ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule mk_Expr_ok{C : context, instr_lst : instr*, t_lst : valtype*}: - `%|-%:%`(C, instr_lst, `%`_resulttype(t_lst)) - -- Instrs_ok: `%|-%:%`(C, instr_lst, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t_lst))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t_lst))) + `%|-%:%`(C, instr_lst, mk_list_resulttype(t_lst)) + -- Instrs_ok: `%|-%:%`(C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) @@ -7420,90 +7863,64 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) `|-%NONDEFAULTABLE`(t) -- if ($default_(t) =/= ?()) -- if (!($default_(t)) = ?()) - -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref_null{C : context, ht : heaptype}: - `%|-%CONST`(C, `REF.NULL`_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.NULL`_instr(ht)) + `%|-%CONST`(C, REF_NULL_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref_i31{C : context}: - `%|-%CONST`(C, `REF.I31`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.I31`_instr) + `%|-%CONST`(C, REF_I31_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref_func{C : context, x : idx}: - `%|-%CONST`(C, `REF.FUNC`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`REF.FUNC`_instr(x)) + `%|-%CONST`(C, REF_FUNC_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct_new{C : context, x : idx}: - `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + `%|-%CONST`(C, STRUCT_NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule struct_new_default{C : context, x : idx}: - `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) + `%|-%CONST`(C, STRUCT_NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array_new{C : context, x : idx}: - `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + `%|-%CONST`(C, ARRAY_NEW_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array_new_default{C : context, x : idx}: - `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) + `%|-%CONST`(C, ARRAY_NEW_DEFAULT_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule array_new_fixed{C : context, x : idx, v_n : n}: - `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))) + `%|-%CONST`(C, ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any_convert_extern{C : context}: - `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + `%|-%CONST`(C, ANY_CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule extern_convert_any{C : context}: - `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + `%|-%CONST`(C, EXTERN_CONVERT_ANY_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule global_get{C : context, x : idx, t : valtype}: - `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) + `%|-%CONST`(C, GLOBAL_GET_instr(x)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) - -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = mk_globaltype_globaltype(?(), t)) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule binop{C : context, v_Inn : Inn, binop : binop_}: @@ -7512,8 +7929,6 @@ relation Instr_const: `%|-%CONST`(context, instr) -- if (v_Inn <- [I32_Inn I64_Inn]) -- if (|[mk_binop__0_binop_(v_Inn, ADD_binop_Inn) mk_binop__0_binop_(v_Inn, SUB_binop_Inn) mk_binop__0_binop_(v_Inn, MUL_binop_Inn)]| > 0) -- if (binop <- [mk_binop__0_binop_(v_Inn, ADD_binop_Inn) mk_binop__0_binop_(v_Inn, SUB_binop_Inn) mk_binop__0_binop_(v_Inn, MUL_binop_Inn)]) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr($numtype_addrtype(v_Inn), binop)) -- wf_binop_: `%%`($numtype_addrtype(v_Inn), mk_binop__0_binop_(v_Inn, ADD_binop_Inn)) -- wf_binop_: `%%`($numtype_addrtype(v_Inn), mk_binop__0_binop_(v_Inn, SUB_binop_Inn)) -- wf_binop_: `%%`($numtype_addrtype(v_Inn), mk_binop__0_binop_(v_Inn, MUL_binop_Inn)) @@ -7524,19 +7939,14 @@ relation Expr_const: `%|-%CONST`(context, expr) rule mk_Expr_const{C : context, instr_lst : instr*}: `%|-%CONST`(C, instr_lst) -- (Instr_const: `%|-%CONST`(C, v_instr))*{v_instr <- instr_lst} - -- wf_context: `%`(C) - -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule mk_Expr_ok_const{C : context, v_expr : expr, t : valtype}: `%|-%:%CONST`(C, v_expr, t) - -- Expr_ok: `%|-%:%`(C, v_expr, `%`_resulttype([t])) + -- Expr_ok: `%|-%:%`(C, v_expr, mk_list_resulttype([t])) -- Expr_const: `%|-%CONST`(C, v_expr) - -- wf_context: `%`(C) - -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) @@ -7546,7 +7956,6 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) -- if (dt_lst = $rolldt(x, v_rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, v_rectype, OK_oktypeidx(x)) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_oktypeidx: `%`(OK_oktypeidx(x)) @@ -7556,8 +7965,6 @@ relation Tag_ok: `%|-%:%`(context, tag, tagtype) rule mk_Tag_ok{C : context, v_tagtype : tagtype}: `%|-%:%`(C, TAG_tag(v_tagtype), $clos_tagtype(C, v_tagtype)) -- Tagtype_ok: `%|-%:OK`(C, v_tagtype) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(v_tagtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Global_ok: `%|-%:%`(context, global, globaltype) @@ -7565,11 +7972,9 @@ relation Global_ok: `%|-%:%`(context, global, globaltype) rule mk_Global_ok{C : context, v_globaltype : globaltype, v_expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(v_globaltype, v_expr), v_globaltype) -- Globaltype_ok: `%|-%:OK`(C, v_globaltype) - -- if (v_globaltype = `%%`_globaltype(?(MUT_mut), t)) + -- if (v_globaltype = mk_globaltype_globaltype(?(MUT_mut), t)) -- Expr_ok_const: `%|-%:%CONST`(C, v_expr, t) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(v_globaltype, v_expr)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Mem_ok: `%|-%:%`(context, mem, memtype) @@ -7577,8 +7982,6 @@ relation Mem_ok: `%|-%:%`(context, mem, memtype) rule mk_Mem_ok{C : context, v_memtype : memtype}: `%|-%:%`(C, MEMORY_mem(v_memtype), v_memtype) -- Memtype_ok: `%|-%:OK`(C, v_memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(v_memtype)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Table_ok: `%|-%:%`(context, table, tabletype) @@ -7586,29 +7989,21 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) rule mk_Table_ok{C : context, v_tabletype : tabletype, v_expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(v_tabletype, v_expr), v_tabletype) -- Tabletype_ok: `%|-%:OK`(C, v_tabletype) - -- if (v_tabletype = `%%%`_tabletype(at, lim, rt)) + -- if (v_tabletype = mk_tabletype_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, v_expr, $valtype_reftype(rt)) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(v_tabletype, v_expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: - `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + `%|-%:%`(C, LOCAL_local(t), mk_localtype_localtype(SET_init, t)) -- Defaultable: `|-%DEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: - `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + `%|-%:%`(C, LOCAL_local(t), mk_localtype_localtype(UNSET_init, t)) -- Nondefaultable: `|-%NONDEFAULTABLE`(t) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) @@ -7616,22 +8011,18 @@ relation Func_ok: `%|-%:%`(context, func, deftype) rule mk_Func_ok{C : context, x : idx, local_lst : local*, v_expr : expr, t_1_lst : valtype*, t_2_lst : valtype*, lct_lst : localtype*}: `%|-%:%`(C, FUNC_func(x, local_lst, v_expr), C.TYPES_context[$proj_uN_0(x).0]) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if (|lct_lst| = |local_lst|) -- (Local_ok: `%|-%:%`(C, v_local, lct))*{lct <- lct_lst, v_local <- local_lst} - -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- t_1_lst} ++ lct_lst, LABELS [`%`_resulttype(t_2_lst)], RETURN ?(`%`_resulttype(t_2_lst)), REFS [], RECS []}, v_expr, `%`_resulttype(t_2_lst)) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local_lst, v_expr)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- t_1_lst} ++ lct_lst, LABELS [`%`_resulttype(t_2_lst)], RETURN ?(`%`_resulttype(t_2_lst)), REFS [], RECS []}) + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS mk_localtype_localtype(SET_init, t_1)*{t_1 <- t_1_lst} ++ lct_lst, LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(mk_list_resulttype(t_2_lst)), REFS [], RECS []}, v_expr, mk_list_resulttype(t_2_lst)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS mk_localtype_localtype(SET_init, t_1)*{t_1 <- t_1_lst} ++ lct_lst, LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(mk_list_resulttype(t_2_lst)), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Datamode_ok: `%|-%:%`(context, datamode, datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, v_expr : expr, at : addrtype, lim : limits}: @@ -7639,8 +8030,6 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, v_expr, $valtype_addrtype(at)) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, v_expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7649,36 +8038,25 @@ relation Data_ok: `%|-%:%`(context, data, datatype) rule mk_Data_ok{C : context, b_lst : byte*, v_datamode : datamode}: `%|-%:%`(C, DATA_data(b_lst, v_datamode), OK_datatype) -- Datamode_ok: `%|-%:%`(C, v_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b_lst, v_datamode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule active{C : context, x : idx, v_expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, v_expr), rt) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, v_expr, $valtype_addrtype(at)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, v_expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt')) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Elem_ok: `%|-%:%`(context, elem, elemtype) @@ -7688,8 +8066,6 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) -- Reftype_ok: `%|-%:OK`(C, v_elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, v_expr, $valtype_reftype(v_elemtype)))*{v_expr <- expr_lst} -- Elemmode_ok: `%|-%:%`(C, v_elemmode, v_elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(v_elemtype, expr_lst, v_elemmode)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Start_ok: `%|-%:OK`(context, start) @@ -7697,10 +8073,8 @@ relation Start_ok: `%|-%:OK`(context, start) rule mk_Start_ok{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) - -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(mk_list_resulttype([]), mk_list_resulttype([]))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype([]), mk_list_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) @@ -7708,8 +8082,6 @@ relation Import_ok: `%|-%:%`(context, import, externtype) rule mk_Import_ok{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Externidx_ok: `%|-%:%`(context, externidx, externtype) @@ -7718,45 +8090,30 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Export_ok: `%|-%:%%`(context, export, name, externtype) @@ -7764,9 +8121,6 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) rule mk_Export_ok{C : context, v_name : name, v_externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(v_name, v_externidx), v_name, xt) -- Externidx_ok: `%|-%:%`(C, v_externidx, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(v_name, v_externidx)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { @@ -7776,17 +8130,12 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 rule cons{C : context, global_1 : global, global_lst : global*, gt_1 : globaltype, gt_lst : globaltype*}: `%|-%:%`(C, [global_1] ++ global_lst, [gt_1] ++ gt_lst) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global_lst, gt_lst) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(v_global))*{v_global <- global_lst} - -- (wf_globaltype: `%`(gt))*{gt <- gt_lst} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -7798,26 +8147,24 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 rule empty{C : context}: `%|-%:%`(C, [], []) - -- wf_context: `%`(C) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 rule cons{C : context, type_1 : type, type_lst : type*, dt_1_lst : deftype*, dt_lst : deftype*}: `%|-%:%`(C, [type_1] ++ type_lst, dt_1_lst ++ dt_lst) -- Type_ok: `%|-%:%`(C, type_1, dt_1_lst) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type_lst, dt_lst) - -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt_1_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec syntax nonfuncs = - | `%%%%%%`(global_lst : global*, mem_lst : mem*, table_lst : table*, elem_lst : elem*, start_opt : start?, export_lst : export*) + | mk_nonfuncs(global_lst : global*, mem_lst : mem*, table_lst : table*, elem_lst : elem*, start_opt : start?, export_lst : export*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation wf_nonfuncs: `%`(nonfuncs) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule nonfuncs_case_0{global_lst : global*, mem_lst : mem*, table_lst : table*, elem_lst : elem*, start_opt : start?, export_lst : export*}: - `%`(`%%%%%%`_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst)) + `%`(mk_nonfuncs_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst)) -- (wf_global: `%`(v_global))*{v_global <- global_lst} -- (wf_mem: `%`(v_mem))*{v_mem <- mem_lst} -- (wf_table: `%`(v_table))*{v_table <- table_lst} @@ -7828,14 +8175,13 @@ relation wf_nonfuncs: `%`(nonfuncs) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs(v_nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - def $funcidx_nonfuncs{global_lst : global*, mem_lst : mem*, table_lst : table*, elem_lst : elem*, start_opt : start?, export_lst : export*}(`%%%%%%`_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst)) = $funcidx_module(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list([]), `%`_list([]), `%`_list(elem_lst), start_opt, `%`_list(export_lst))) - -- wf_module: `%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list([]), `%`_list([]), `%`_list(elem_lst), start_opt, `%`_list(export_lst))) + def $funcidx_nonfuncs{global_lst : global*, mem_lst : mem*, table_lst : table*, elem_lst : elem*, start_opt : start?, export_lst : export*}(mk_nonfuncs_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst)) = $funcidx_module(MODULE_module(mk_list_list([]), mk_list_list([]), mk_list_list([]), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list([]), mk_list_list([]), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule mk_Module_ok{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, C : context, xt_I_lst : externtype*, xt_E_lst : externtype*, dt'_lst : deftype*, C' : context, jt_lst : tagtype*, gt_lst : globaltype*, mt_lst : memtype*, tt_lst : tabletype*, dt_lst : deftype*, ok_lst : datatype*, rt_lst : reftype*, nm_lst : name*, jt_I_lst : tagtype*, mt_I_lst : memtype*, tt_I_lst : tabletype*, gt_I_lst : globaltype*, dt_I_lst : deftype*, x_lst : idx*}: - `|-%:%`(MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst)), $clos_moduletype(C, `%->%`_moduletype(xt_I_lst, xt_E_lst))) + `|-%:%`(MODULE_module(mk_list_list(type_lst), mk_list_list(import_lst), mk_list_list(tag_lst), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list(func_lst), mk_list_list(data_lst), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst)), $clos_moduletype(C, mk_moduletype_moduletype(xt_I_lst, xt_E_lst))) -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type_lst, dt'_lst) -- if (|import_lst| = |xt_I_lst|) -- (Import_ok: `%|-%:%`({TYPES dt'_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, v_import, xt_I))*{v_import <- import_lst, xt_I <- xt_I_lst} @@ -7859,143 +8205,336 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if $disjoint_(syntax name, nm_lst) -- if (C = C' +++ {TYPES [], TAGS jt_I_lst ++ jt_lst, GLOBALS gt_lst, MEMS mt_I_lst ++ mt_lst, TABLES tt_I_lst ++ tt_lst, FUNCS [], DATAS ok_lst, ELEMS rt_lst, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- if (C' = {TYPES dt'_lst, TAGS [], GLOBALS gt_I_lst, MEMS [], TABLES [], FUNCS dt_I_lst ++ dt_lst, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x_lst, RECS []}) - -- if (x_lst = $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst))) + -- if (x_lst = $funcidx_nonfuncs(mk_nonfuncs_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst))) -- if (jt_I_lst = $tagsxt(xt_I_lst)) -- if (gt_I_lst = $globalsxt(xt_I_lst)) -- if (mt_I_lst = $memsxt(xt_I_lst)) -- if (tt_I_lst = $tablesxt(xt_I_lst)) -- if (dt_I_lst = $funcsxt(xt_I_lst)) - -- wf_context: `%`(C) -- wf_context: `%`(C') -- (wf_name: `%`(nm))*{nm <- nm_lst} - -- wf_module: `%`(MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I_lst, xt_E_lst)) + -- (wf_uN: `%%`(32, iter))*{iter <- $funcidx_nonfuncs(mk_nonfuncs_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst))} + -- (wf_typeuse: `%`(iter))*{iter <- $tagsxt(xt_I_lst)} + -- (wf_globaltype: `%`(iter))*{iter <- $globalsxt(xt_I_lst)} + -- (wf_memtype: `%`(iter))*{iter <- $memsxt(xt_I_lst)} + -- (wf_tabletype: `%`(iter))*{iter <- $tablesxt(xt_I_lst)} -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES dt'_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES [], TAGS jt_I_lst ++ jt_lst, GLOBALS gt_lst, MEMS mt_I_lst ++ mt_lst, TABLES tt_I_lst ++ tt_lst, FUNCS [], DATAS ok_lst, ELEMS rt_lst, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- wf_context: `%`({TYPES dt'_lst, TAGS [], GLOBALS gt_I_lst, MEMS [], TABLES [], FUNCS dt_I_lst ++ dt_lst, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x_lst, RECS []}) - -- wf_nonfuncs: `%`(`%%%%%%`_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst)) + -- wf_nonfuncs: `%`(mk_nonfuncs_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed2 = - | `%`(i : nat) + | mk_relaxed2(i : nat) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $proj_relaxed2_0(x : relaxed2) : (nat) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec - def $proj_relaxed2_0{v_num_0 : nat}(`%`_relaxed2(v_num_0)) = (v_num_0) + def $proj_relaxed2_0{v_num_0 : nat}(mk_relaxed2_relaxed2(v_num_0)) = (v_num_0) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec relation wf_relaxed2: `%`(relaxed2) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec rule relaxed2_case_0{i : nat}: - `%`(`%`_relaxed2(i)) + `%`(mk_relaxed2_relaxed2(i)) -- if ((i = 0) \/ (i = 1)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed4 = - | `%`(i : nat) + | mk_relaxed4(i : nat) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $proj_relaxed4_0(x : relaxed4) : (nat) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec - def $proj_relaxed4_0{v_num_0 : nat}(`%`_relaxed4(v_num_0)) = (v_num_0) + def $proj_relaxed4_0{v_num_0 : nat}(mk_relaxed4_relaxed4(v_num_0)) = (v_num_0) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec relation wf_relaxed4: `%`(relaxed4) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec rule relaxed4_case_0{i : nat}: - `%`(`%`_relaxed4(i)) + `%`(mk_relaxed4_relaxed4(i)) -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -def $fun_relaxed2(v_relaxed2 : relaxed2, syntax X, X_0 : X, X_1 : X) : X +def $fun_relaxed2(v_relaxed2 : relaxed2, syntax v_X, v_X_0 : v_X, v_X_1 : v_X) : v_X ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec - def $fun_relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = (if $ND then [X_1 X_2][$proj_relaxed2_0(i).0] else [X_1 X_2][0]) + def $fun_relaxed2{i : relaxed2, syntax v_X, X_1 : v_X, X_2 : v_X}(i, syntax v_X, X_1, X_2) = (if $ND then [X_1 X_2][$proj_relaxed2_0(i).0] else [X_1 X_2][0]) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -def $fun_relaxed4(v_relaxed4 : relaxed4, syntax X, X_0 : X, X_1 : X, X_2 : X, X_3 : X) : X +def $fun_relaxed4(v_relaxed4 : relaxed4, syntax v_X, v_X_0 : v_X, v_X_1 : v_X, v_X_2 : v_X, v_X_3 : v_X) : v_X ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec - def $fun_relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][$proj_relaxed4_0(i).0] else [X_1 X_2 X_3 X_4][0]) + def $fun_relaxed4{i : relaxed4, syntax v_X, X_1 : v_X, X_2 : v_X, X_3 : v_X, X_4 : v_X}(i, syntax v_X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][$proj_relaxed4_0(i).0] else [X_1 X_2 X_3 X_4][0]) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmadd : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmadd_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmadd_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_fmadd) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmin : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmin_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmin_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmin) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmax : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmax_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmax_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmax) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_idot : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_idot_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_idot_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_idot) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_iq15mulr : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_iq15mulr_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_iq15mulr_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_iq15mulr) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_u : relaxed4 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_u_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_u_is_wf0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_trunc_u) + -- wf_relaxed4: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_trunc_s : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_s_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_s_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_trunc_s) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_swizzle : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_swizzle_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_swizzle_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_swizzle) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_laneselect : relaxed2 +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_laneselect_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_laneselect_is_wf0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_laneselect) + -- wf_relaxed2: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $s33_to_u32(v_s33 : s33) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibits_(v_N : N, v_iN : iN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibits__is_wf: `%%%`(v_N : N, v_iN : iN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibits__is_wf0{v_N : N, v_iN : iN, ret_val : bit*}: + `%%%`(v_N, v_iN, ret_val) + -- wf_uN: `%%`(v_N, v_iN) + -- if (ret_val = $ibits_(v_N, v_iN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbits_(v_N : N, v_fN : fN) : bit* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbits__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbits__is_wf0{v_N : N, v_fN : fN, ret_val : bit*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $fbits_(v_N, v_fN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ibytes_(v_N : N, v_iN : iN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibytes__is_wf: `%%%`(v_N : N, v_iN : iN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibytes__is_wf0{v_N : N, v_iN : iN, ret_val : byte*}: + `%%%`(v_N, v_iN, ret_val) + -- wf_uN: `%%`(v_N, v_iN) + -- if (ret_val = $ibytes_(v_N, v_iN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fbytes_(v_N : N, v_fN : fN) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbytes__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbytes__is_wf0{v_N : N, v_fN : fN, ret_val : byte*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $fbytes_(v_N, v_fN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $nbytes_(v_numtype : numtype, v_num_ : num_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation nbytes__is_wf: `%%%`(v_numtype : numtype, v_num_ : num_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule nbytes__is_wf0{v_numtype : numtype, v_num_ : num_, ret_val : byte*}: + `%%%`(v_numtype, v_num_, ret_val) + -- wf_num_: `%%`(v_numtype, v_num_) + -- if (ret_val = $nbytes_(v_numtype, v_num_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $vbytes_(v_vectype : vectype, v_vec_ : vec_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation vbytes__is_wf: `%%%`(v_vectype : vectype, v_vec_ : vec_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule vbytes__is_wf0{v_vectype : vectype, v_vec_ : vec_, ret_val : byte*}: + `%%%`(v_vectype, v_vec_, ret_val) + -- wf_uN: `%%`($vsize(v_vectype), v_vec_) + -- if (ret_val = $vbytes_(v_vectype, v_vec_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zbytes_(v_storagetype : storagetype, v_lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zbytes__is_wf: `%%%`(v_storagetype : storagetype, v_lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zbytes__is_wf0{v_storagetype : storagetype, v_lit_ : lit_, ret_val : byte*}: + `%%%`(v_storagetype, v_lit_, ret_val) + -- wf_storagetype: `%`(v_storagetype) + -- wf_lit_: `%%`(v_storagetype, v_lit_) + -- if (ret_val = $zbytes_(v_storagetype, v_lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cbytes_(v_Cnn : Cnn, v_lit_ : lit_) : byte* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cbytes__is_wf: `%%%`(v_Cnn : Cnn, v_lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cbytes__is_wf0{v_Cnn : Cnn, v_lit_ : lit_, ret_val : byte*}: + `%%%`(v_Cnn, v_lit_, ret_val) + -- wf_lit_: `%%`($storagetype_Cnn(v_Cnn), v_lit_) + -- if (ret_val = $cbytes_(v_Cnn, v_lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibits_(v_N : N, var_0 : bit*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbits_(v_N : N, var_0 : bit*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbits__is_wf: `%%%`(v_N : N, var_0 : bit*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbits__is_wf0{v_N : N, var_0 : bit*, ret_val : fN}: + `%%%`(v_N, var_0, ret_val) + -- (wf_bit: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbits_(v_N, var_0)) + -- wf_fN: `%%`(v_N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_ibytes_(v_N : N, var_0 : byte*) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_fbytes_(v_N : N, var_0 : byte*) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbytes__is_wf: `%%%`(v_N : N, var_0 : byte*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbytes__is_wf0{v_N : N, var_0 : byte*, ret_val : fN}: + `%%%`(v_N, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbytes_(v_N, var_0)) + -- wf_fN: `%%`(v_N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_nbytes_(v_numtype : numtype, var_0 : byte*) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_nbytes__is_wf: `%%%`(v_numtype : numtype, var_0 : byte*, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_nbytes__is_wf0{v_numtype : numtype, var_0 : byte*, ret_val : num_}: + `%%%`(v_numtype, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_nbytes_(v_numtype, var_0)) + -- wf_num_: `%%`(v_numtype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_vbytes_(v_vectype : vectype, var_0 : byte*) : vec_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_zbytes_(v_storagetype : storagetype, var_0 : byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_zbytes__is_wf: `%%%`(v_storagetype : storagetype, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_zbytes__is_wf0{v_storagetype : storagetype, var_0 : byte*, ret_val : lit_}: + `%%%`(v_storagetype, var_0, ret_val) + -- wf_storagetype: `%`(v_storagetype) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_zbytes_(v_storagetype, var_0)) + -- wf_lit_: `%%`(v_storagetype, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inv_cbytes_(v_Cnn : Cnn, var_0 : byte*) : lit_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_cbytes__is_wf: `%%%`(v_Cnn : Cnn, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_cbytes__is_wf0{v_Cnn : Cnn, var_0 : byte*, ret_val : lit_}: + `%%%`(v_Cnn, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_cbytes_(v_Cnn, var_0)) + -- wf_lit_: `%%`($storagetype_Cnn(v_Cnn), ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $signed_(v_N : N, nat : nat) : int ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8036,23 +8575,25 @@ def $fun_sx(v_storagetype : storagetype) : sx?? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_zero(v_lanetype : lanetype) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) + def $fun_zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, mk_uN_uN(0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) + def $fun_zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, mk_uN_uN(0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) + def $fun_zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, mk_uN_uN(0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) - -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) + def $fun_zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, mk_uN_uN(0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zero_is_wf: `%%`(v_lanetype : lanetype, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zero_is_wf0{v_lanetype : lanetype, ret_val : lane_}: + `%%`(v_lanetype, ret_val) + -- if (ret_val = $fun_zero(v_lanetype)) + -- wf_lane_: `%%`(v_lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(v_bool : bool) : nat @@ -8080,8 +8621,7 @@ def $sat_s_(v_N : N, int : int) : int ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_(v_N : N, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ineg_{v_N : nat, i_1 : uN}(v_N, i_1) = `%`_iN((((((2 ^ v_N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ v_N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(v_N, `%`_uN((((((2 ^ v_N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ v_N) : nat <:> int)) : int <:> nat))) + def $ineg_{v_N : nat, i_1 : uN}(v_N, i_1) = mk_uN_iN((((((2 ^ v_N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ v_N) : nat <:> int)) : int <:> nat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(v_N : N, v_iN : iN) : iN @@ -8100,59 +8640,50 @@ def $ipopcnt_(v_N : N, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iextend_(v_N : N, v_M : M, v_sx : sx, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{v_N : nat, v_M : nat, i : uN}(v_N, v_M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ v_M))) - -- wf_uN: `%%`(v_N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ v_M)))) + def $iextend_{v_N : nat, v_M : nat, i : uN}(v_N, v_M, U_sx, i) = mk_uN_iN(($proj_uN_0(i).0 \ (2 ^ v_M))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{v_N : nat, v_M : nat, i : uN}(v_N, v_M, S_sx, i) = `%`_iN($inv_signed_(v_N, $signed_(v_M, ($proj_uN_0(i).0 \ (2 ^ v_M))))) - -- wf_uN: `%%`(v_N, `%`_uN($inv_signed_(v_N, $signed_(v_M, ($proj_uN_0(i).0 \ (2 ^ v_M)))))) + def $iextend_{v_N : nat, v_M : nat, i : uN}(v_N, v_M, S_sx, i) = mk_uN_iN($inv_signed_(v_N, $signed_(v_M, ($proj_uN_0(i).0 \ (2 ^ v_M))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ v_N))) - -- wf_uN: `%%`(v_N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ v_N)))) + def $iadd_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ v_N))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = `%`_iN(((((((2 ^ v_N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ v_N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(v_N, `%`_uN(((((((2 ^ v_N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ v_N) : nat <:> int)) : int <:> nat))) + def $isub_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_iN(((((((2 ^ v_N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ v_N) : nat <:> int)) : int <:> nat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imul_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ v_N))) - -- wf_uN: `%%`(v_N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ v_N)))) + def $imul_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ v_N))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{v_N : nat, i_1 : uN}(v_N, U_sx, i_1, `%`_iN(0)) = ?() + def $idiv_{v_N : nat, i_1 : uN}(v_N, U_sx, i_1, mk_uN_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(v_N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + def $idiv_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = ?(mk_uN_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{v_N : nat, i_1 : uN}(v_N, S_sx, i_1, `%`_iN(0)) = ?() + def $idiv_{v_N : nat, i_1 : uN}(v_N, S_sx, i_1, mk_uN_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = ?() -- if ((($signed_(v_N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(v_N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(v_N, $truncz((($signed_(v_N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(v_N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(v_N, `%`_uN($inv_signed_(v_N, $truncz((($signed_(v_N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(v_N, $proj_uN_0(i_2).0) : int <:> rat)))))) + def $idiv_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = ?(mk_uN_iN($inv_signed_(v_N, $truncz((($signed_(v_N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(v_N, $proj_uN_0(i_2).0) : int <:> rat)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{v_N : nat, i_1 : uN}(v_N, U_sx, i_1, `%`_iN(0)) = ?() + def $irem_{v_N : nat, i_1 : uN}(v_N, U_sx, i_1, mk_uN_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(v_N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + def $irem_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = ?(mk_uN_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{v_N : nat, i_1 : uN}(v_N, S_sx, i_1, `%`_iN(0)) = ?() + def $irem_{v_N : nat, i_1 : uN}(v_N, S_sx, i_1, mk_uN_iN(0)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{v_N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(v_N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(v_N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + def $irem_{v_N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(v_N, S_sx, i_1, i_2) = ?(mk_uN_iN($inv_signed_(v_N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) -- if ((j_1 = $signed_(v_N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(v_N, $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(v_N, `%`_uN($inv_signed_(v_N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN @@ -8179,20 +8710,16 @@ def $imax_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = `%`_iN($sat_u_(v_N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) - -- wf_uN: `%%`(v_N, `%`_uN($sat_u_(v_N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) + def $iadd_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_iN($sat_u_(v_N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) + $signed_(v_N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(v_N, `%`_uN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) + $signed_(v_N, $proj_uN_0(i_2).0)))))) + def $iadd_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_iN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) + $signed_(v_N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = `%`_iN($sat_u_(v_N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) - -- wf_uN: `%%`(v_N, `%`_uN($sat_u_(v_N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) + def $isub_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_iN($sat_u_(v_N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) - $signed_(v_N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(v_N, `%`_uN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) - $signed_(v_N, $proj_uN_0(i_2).0)))))) + def $isub_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_iN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) - $signed_(v_N, $proj_uN_0(i_2).0))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN @@ -8242,117 +8769,278 @@ def $irelaxed_laneselect_(v_N : N, v_iN : iN, v_iN_0 : iN, v_iN_1 : iN) : iN* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_(v_N : N, v_iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieqz_{v_N : nat, i_1 : uN}(v_N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) + def $ieqz_{v_N : nat, i_1 : uN}(v_N, i_1) = mk_uN_u32($bool(($proj_uN_0(i_1).0 = 0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(v_N : N, v_iN : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inez_{v_N : nat, i_1 : uN}(v_N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) + def $inez_{v_N : nat, i_1 : uN}(v_N, i_1) = mk_uN_u32($bool(($proj_uN_0(i_1).0 =/= 0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(v_N : N, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieq_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) + def $ieq_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_u32($bool((i_1 = i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(v_N : N, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ine_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) + def $ine_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_u32($bool((i_1 =/= i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) + def $ilt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) < $signed_(v_N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) < $signed_(v_N, $proj_uN_0(i_2).0))))) + def $ilt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) < $signed_(v_N, $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) + def $igt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) > $signed_(v_N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) > $signed_(v_N, $proj_uN_0(i_2).0))))) + def $igt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) > $signed_(v_N, $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) + def $ile_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) <= $signed_(v_N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) <= $signed_(v_N, $proj_uN_0(i_2).0))))) + def $ile_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) <= $signed_(v_N, $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) + def $ige_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) >= $signed_(v_N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) >= $signed_(v_N, $proj_uN_0(i_2).0))))) + def $ige_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) >= $signed_(v_N, $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(v_N : N, v_fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fabs__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fabs__is_wf0{v_N : N, v_fN : fN, ret_val : fN*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $fabs_(v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fneg_(v_N : N, v_fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fneg__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fneg__is_wf0{v_N : N, v_fN : fN, ret_val : fN*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $fneg_(v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsqrt_(v_N : N, v_fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsqrt__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsqrt__is_wf0{v_N : N, v_fN : fN, ret_val : fN*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $fsqrt_(v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fceil_(v_N : N, v_fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fceil__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fceil__is_wf0{v_N : N, v_fN : fN, ret_val : fN*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $fceil_(v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ffloor_(v_N : N, v_fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ffloor__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ffloor__is_wf0{v_N : N, v_fN : fN, ret_val : fN*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $ffloor_(v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ftrunc_(v_N : N, v_fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ftrunc__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ftrunc__is_wf0{v_N : N, v_fN : fN, ret_val : fN*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $ftrunc_(v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fnearest_(v_N : N, v_fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fnearest__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fnearest__is_wf0{v_N : N, v_fN : fN, ret_val : fN*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $fnearest_(v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fadd_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fadd__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fadd__is_wf0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fadd_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fsub_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsub__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsub__is_wf0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fsub_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmul_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmul__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmul__is_wf0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fmul_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fdiv_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fdiv__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fdiv__is_wf0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fdiv_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmin_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmin__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmin__is_wf0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fmin_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fmax_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmax__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmax__is_wf0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fmax_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmin_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmin__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmin__is_wf0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fpmin_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fpmax_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmax__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmax__is_wf0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fpmax_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_min_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_min__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_min__is_wf0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $frelaxed_min_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_max_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_max__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_max__is_wf0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $frelaxed_max_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fcopysign_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fcopysign__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fcopysign__is_wf0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fcopysign_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $feq_(v_N : N, v_fN : fN, v_fN_0 : fN) : u32 @@ -8374,9 +9062,31 @@ def $fge_(v_N : N, v_fN : fN, v_fN_0 : fN) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_madd_(v_N : N, v_fN : fN, v_fN_0 : fN, v_fN_1 : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_madd__is_wf: `%%%%%`(v_N : N, v_fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_madd__is_wf0{v_N : N, v_fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(v_N, v_fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- wf_fN: `%%`(v_N, fN_1) + -- if (ret_val = $frelaxed_madd_(v_N, v_fN, fN_0, fN_1)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $frelaxed_nmadd_(v_N : N, v_fN : fN, v_fN_0 : fN, v_fN_1 : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_nmadd__is_wf: `%%%%%`(v_N : N, v_fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_nmadd__is_wf0{v_N : N, v_fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(v_N, v_fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- wf_fN: `%%`(v_N, fN_1) + -- if (ret_val = $frelaxed_nmadd_(v_N, v_fN, fN_0, fN_1)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wrap__(v_M : M, v_N : N, v_iN : iN) : iN @@ -8395,38 +9105,77 @@ def $relaxed_trunc__(v_M : M, v_N : N, v_sx : sx, v_fN : fN) : iN? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $demote__(v_M : M, v_N : N, v_fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation demote___is_wf: `%%%%`(v_M : M, v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule demote___is_wf0{v_M : M, v_N : N, v_fN : fN, ret_val : fN*}: + `%%%%`(v_M, v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_M, v_fN) + -- if (ret_val = $demote__(v_M, v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $promote__(v_M : M, v_N : N, v_fN : fN) : fN* +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation promote___is_wf: `%%%%`(v_M : M, v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule promote___is_wf0{v_M : M, v_N : N, v_fN : fN, ret_val : fN*}: + `%%%%`(v_M, v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_M, v_fN) + -- if (ret_val = $promote__(v_M, v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $convert__(v_M : M, v_N : N, v_sx : sx, v_iN : iN) : fN +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation convert___is_wf: `%%%%%`(v_M : M, v_N : N, v_sx : sx, v_iN : iN, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule convert___is_wf0{v_M : M, v_N : N, v_sx : sx, v_iN : iN, ret_val : fN}: + `%%%%%`(v_M, v_N, v_sx, v_iN, ret_val) + -- wf_uN: `%%`(v_M, v_iN) + -- if (ret_val = $convert__(v_M, v_N, v_sx, v_iN)) + -- wf_fN: `%%`(v_N, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $narrow__(v_M : M, v_N : N, v_sx : sx, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, v_num_ : num_) : num_ +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation reinterpret___is_wf: `%%%%`(numtype_1 : numtype, numtype_2 : numtype, v_num_ : num_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule reinterpret___is_wf0{numtype_1 : numtype, numtype_2 : numtype, v_num_ : num_, ret_val : num_}: + `%%%%`(numtype_1, numtype_2, v_num_, ret_val) + -- wf_num_: `%%`(numtype_1, v_num_) + -- if (ret_val = $reinterpret__(numtype_1, numtype_2, v_num_)) + -- wf_num_: `%%`(numtype_2, ret_val) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_(v_lanetype : lanetype, v_num_ : num_) : lane_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) - -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) - -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) - -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lpacknum__is_wf: `%%%`(v_lanetype : lanetype, v_num_ : num_, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lpacknum__is_wf0{v_lanetype : lanetype, v_num_ : num_, ret_val : lane_}: + `%%%`(v_lanetype, v_num_, ret_val) + -- wf_num_: `%%`($lunpack(v_lanetype), v_num_) + -- if (ret_val = $lpacknum_(v_lanetype, v_num_)) + -- wf_lane_: `%%`(v_lanetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ @@ -8442,10 +9191,19 @@ def $cpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ def $cpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) - -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) - -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cpacknum__is_wf: `%%%`(v_storagetype : storagetype, v_lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cpacknum__is_wf0{v_storagetype : storagetype, v_lit_ : lit_, ret_val : lit_}: + `%%%`(v_storagetype, v_lit_, ret_val) + -- wf_storagetype: `%`(v_storagetype) + -- if ($cunpack(v_storagetype) =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(v_storagetype))), v_lit_) + -- if (ret_val = $cpacknum_(v_storagetype, v_lit_)) + -- wf_lit_: `%%`(v_storagetype, ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_(v_lanetype : lanetype, v_lane_ : lane_) : num_ @@ -8459,10 +9217,17 @@ def $lunpacknum_(v_lanetype : lanetype, v_lane_ : lane_) : num_ def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) - -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) - -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lunpacknum__is_wf: `%%%`(v_lanetype : lanetype, v_lane_ : lane_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lunpacknum__is_wf0{v_lanetype : lanetype, v_lane_ : lane_, ret_val : num_}: + `%%%`(v_lanetype, v_lane_, ret_val) + -- wf_lane_: `%%`(v_lanetype, v_lane_) + -- if (ret_val = $lunpacknum_(v_lanetype, v_lane_)) + -- wf_num_: `%%`($lunpack(v_lanetype), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ @@ -8478,196 +9243,166 @@ def $cunpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ def $cunpacknum_{c : lit_}(V128_storagetype, c) = c ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) - -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) - -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cunpacknum__is_wf: `%%%`(v_storagetype : storagetype, v_lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cunpacknum__is_wf0{v_storagetype : storagetype, v_lit_ : lit_, ret_val : lit_}: + `%%%`(v_storagetype, v_lit_, ret_val) + -- wf_storagetype: `%`(v_storagetype) + -- wf_lit_: `%%`(v_storagetype, v_lit_) + -- if (ret_val = $cunpacknum_(v_storagetype, v_lit_)) + -- if ($cunpack(v_storagetype) =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(v_storagetype))), ret_val) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_(v_numtype : numtype, v_unop_ : unop_, v_num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{v_M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(v_M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), v_M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), v_M, S_sx, i))) + def $fun_unop_{v_M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(v_M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), v_M, S_sx, i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_unop_{v_M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(v_M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), v_M, S_sx, i))] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{v_M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(v_M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), v_M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), v_M, S_sx, i))) + def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0_1)*{iter_0_1 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#1)))*{iter_0#1 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0_2)*{iter_0_2 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#3)))*{iter_0#3 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0_3)*{iter_0_3 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#6)*{iter_0#6 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#5)))*{iter_0#5 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0_4)*{iter_0_4 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#7)))*{iter_0#7 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0_5)*{iter_0_5 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#10)*{iter_0#10 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#9)))*{iter_0#9 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0_6)*{iter_0_6 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#11)))*{iter_0#11 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0_7)*{iter_0_7 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#14)*{iter_0#14 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#13)))*{iter_0#13 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0_8)*{iter_0_8 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#16)*{iter_0#16 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#15)))*{iter_0#15 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0_9)*{iter_0_9 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#18)*{iter_0#18 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#17)))*{iter_0#17 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0_10)*{iter_0_10 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#19)))*{iter_0#19 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0_11)*{iter_0_11 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#22)*{iter_0#22 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#21)))*{iter_0#21 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0_12)*{iter_0_12 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#23)))*{iter_0#23 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0_13)*{iter_0_13 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#26)*{iter_0#26 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#25)))*{iter_0#25 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0_14)*{iter_0_14 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation unop__is_wf: `%%%%`(v_numtype : numtype, v_unop_ : unop_, v_num_ : num_, ret_val : num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#27)))*{iter_0#27 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule unop__is_wf0{v_numtype : numtype, v_unop_ : unop_, v_num_ : num_, ret_val : num_*}: + `%%%%`(v_numtype, v_unop_, v_num_, ret_val) + -- wf_unop_: `%%`(v_numtype, v_unop_) + -- wf_num_: `%%`(v_numtype, v_num_) + -- if (ret_val = $fun_unop_(v_numtype, v_unop_, v_num_)) + -- (wf_num_: `%%`(v_numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_(v_numtype : numtype, v_binop_ : binop_, v_num_ : num_, v_num__0 : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#30)*{iter_0#30 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#29)))*{iter_0#29 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} + def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0_15)*{iter_0_15 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#32)*{iter_0#32 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#31)))*{iter_0#31 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} + def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0_16)*{iter_0_16 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#33)))*{iter_0#33 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} + def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0_17)*{iter_0_17 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#35)))*{iter_0#35 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} + def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0_18)*{iter_0_18 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) + def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) + def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#38)*{iter_0#38 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#37)))*{iter_0#37 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0_19)*{iter_0_19 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0_20)*{iter_0_20 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#40)*{iter_0#40 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#39)))*{iter_0#39 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0_21)*{iter_0_21 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#41)))*{iter_0#41 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0_22)*{iter_0_22 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#43)))*{iter_0#43 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0_23)*{iter_0_23 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#45)))*{iter_0#45 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0_24)*{iter_0_24 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#47)))*{iter_0#47 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0_25)*{iter_0_25 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#50)*{iter_0#50 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#49)))*{iter_0#49 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0_26)*{iter_0_26 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#52)*{iter_0#52 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#51)))*{iter_0#51 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0_27)*{iter_0_27 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#54)*{iter_0#54 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#53)))*{iter_0#53 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0_28)*{iter_0_28 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#56)*{iter_0#56 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#55)))*{iter_0#55 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0_29)*{iter_0_29 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#58)*{iter_0#58 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#57)))*{iter_0#57 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0_30)*{iter_0_30 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#60)*{iter_0#60 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#59)))*{iter_0#59 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0_31)*{iter_0_31 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#62)*{iter_0#62 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#61)))*{iter_0#61 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0_32)*{iter_0_32 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation binop__is_wf: `%%%%%`(v_numtype : numtype, v_binop_ : binop_, v_num_ : num_, num__0 : num_, ret_val : num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#64)*{iter_0#64 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#63)))*{iter_0#63 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule binop__is_wf0{v_numtype : numtype, v_binop_ : binop_, v_num_ : num_, num__0 : num_, ret_val : num_*}: + `%%%%%`(v_numtype, v_binop_, v_num_, num__0, ret_val) + -- wf_binop_: `%%`(v_numtype, v_binop_) + -- wf_num_: `%%`(v_numtype, v_num_) + -- wf_num_: `%%`(v_numtype, num__0) + -- if (ret_val = $fun_binop_(v_numtype, v_binop_, v_num_, num__0)) + -- (wf_num_: `%%`(v_numtype, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_testop_(v_numtype : numtype, v_testop_ : testop_, v_num_ : num_) : u32 @@ -8731,324 +9466,308 @@ def $fun_relop_(v_numtype : numtype, v_relop_ : relop_, v_num_ : num_, v_num__0 def $fun_cvtop__(numtype_1 : numtype, numtype_2 : numtype, v_cvtop__ : cvtop__, v_num_ : num_) : num_* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#66)*{iter_0#66 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#65)))*{iter_0#65 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0_33)*{iter_0_33 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#68)*{iter_0#68 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#67)))*{iter_0#67 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0_34)*{iter_0_34 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#70)*{iter_0#70 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#69)))*{iter_0#69 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0_35)*{iter_0_35 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#72)*{iter_0#72 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#71)))*{iter_0#71 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0_36)*{iter_0_36 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#74)*{iter_0#74 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#73)))*{iter_0#73 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0_37)*{iter_0_37 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#76)*{iter_0#76 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0#75)))*{iter_0#75 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0_38)*{iter_0_38 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#78)*{iter_0#78 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#77)))*{iter_0#77 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0_39)*{iter_0_39 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#80)*{iter_0#80 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0#79)))*{iter_0#79 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0_40)*{iter_0_40 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))] - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#82)*{iter_0#82 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#81)))*{iter_0#81 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + def $fun_cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0_41)*{iter_0_41 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#84)*{iter_0#84 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#83)))*{iter_0#83 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + def $fun_cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0_42)*{iter_0_42 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#86)*{iter_0#86 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#85)))*{iter_0#85 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + def $fun_cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0_43)*{iter_0_43 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#88)*{iter_0#88 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#87)))*{iter_0#87 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + def $fun_cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0_44)*{iter_0_44 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#90)*{iter_0#90 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#89)))*{iter_0#89 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + def $fun_cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0_45)*{iter_0_45 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#92)*{iter_0#92 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#91)))*{iter_0#91 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + def $fun_cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0_46)*{iter_0_46 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#94)*{iter_0#94 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#93)))*{iter_0#93 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + def $fun_cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0_47)*{iter_0_47 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#96)*{iter_0#96 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} - -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#95)))*{iter_0#95 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + def $fun_cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0_48)*{iter_0_48 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))] -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))] -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))] -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))] -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))] -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))] -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))] -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) - -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))] -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) - -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cvtop___is_wf: `%%%%%`(numtype_1 : numtype, numtype_2 : numtype, v_cvtop__ : cvtop__, v_num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cvtop___is_wf0{numtype_1 : numtype, numtype_2 : numtype, v_cvtop__ : cvtop__, v_num_ : num_, ret_val : num_*}: + `%%%%%`(numtype_1, numtype_2, v_cvtop__, v_num_, ret_val) + -- wf_cvtop__: `%%%`(numtype_1, numtype_2, v_cvtop__) + -- wf_num_: `%%`(numtype_1, v_num_) + -- if (ret_val = $fun_cvtop__(numtype_1, numtype_2, v_cvtop__, v_num_)) + -- (wf_num_: `%%`(numtype_2, ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(v_shape : shape, v_vec_ : vec_) : lane_* +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lanes__is_wf: `%%%`(v_shape : shape, v_vec_ : vec_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lanes__is_wf0{v_shape : shape, v_vec_ : vec_, ret_val : lane_*}: + `%%%`(v_shape, v_vec_, ret_val) + -- wf_shape: `%`(v_shape) + -- wf_uN: `%%`(128, v_vec_) + -- if (ret_val = $lanes_(v_shape, v_vec_)) + -- (wf_lane_: `%%`($fun_lanetype(v_shape), ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $inv_lanes_(v_shape : shape, var_0 : lane_*) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $zeroop(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__) : zero? ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?(v_zero) + def $zeroop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?(v_zero) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?(v_zero) + def $zeroop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?(v_zero) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?(v_zero) + def $zeroop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?(v_zero) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?(v_zero) + def $zeroop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?(v_zero) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $halfop(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__) : half? ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?() + def $halfop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_half(v_half : half, nat : nat, nat_0 : nat) : nat @@ -9060,460 +9779,584 @@ def $fun_half(v_half : half, nat : nat, nat_0 : nat) : nat ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $iswizzle_lane_(v_N : N, var_0 : iN*, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $iswizzle_lane_{v_N : nat, c_lst : iN*, i : uN}(v_N, c_lst, i) = (if ($proj_uN_0(i).0 < |c_lst|) then c_lst[$proj_uN_0(i).0] else `%`_iN(0)) - -- wf_uN: `%%`(v_N, `%`_uN(0)) + def $iswizzle_lane_{v_N : nat, c_lst : iN*, i : uN}(v_N, c_lst, i) = (if ($proj_uN_0(i).0 < |c_lst|) then c_lst[$proj_uN_0(i).0] else mk_uN_iN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(v_N : N, var_0 : iN*, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{v_N : nat, c_lst : iN*, i : uN}(v_N, c_lst, i) = (if ($proj_uN_0(i).0 < |c_lst|) then c_lst[$proj_uN_0(i).0] else (if ($signed_(v_N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $fun_relaxed2($R_swizzle, syntax iN, `%`_iN(0), c_lst[($proj_uN_0(i).0 \ |c_lst|)]))) - -- wf_uN: `%%`(v_N, `%`_uN(0)) + def $irelaxed_swizzle_lane_{v_N : nat, c_lst : iN*, i : uN}(v_N, c_lst, i) = (if ($proj_uN_0(i).0 < |c_lst|) then c_lst[$proj_uN_0(i).0] else (if ($signed_(v_N, $proj_uN_0(i).0) < (0 : nat <:> int)) then mk_uN_iN(0) else $fun_relaxed2($R_swizzle, syntax iN, mk_uN_iN(0), c_lst[($proj_uN_0(i).0 \ |c_lst|)]))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(v_shape : shape, def $f_(v_N : N, v_iN : iN) : iN, v_vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c#5)*{c#5 <- c_lst})] - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_1) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#2)))*{c_1#2 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c#4)))*{c#4 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c#8)*{c#8 <- c_lst})] - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_1) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#4)))*{c_1#4 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c#7)))*{c#7 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c#11)*{c#11 <- c_lst})] - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_1) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#6)))*{c_1#6 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c#10)))*{c#10 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c#14)*{c#14 <- c_lst})] - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_1) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#8)))*{c_1#8 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c#13)))*{c#13 <- c_lst} + def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c_4)*{c_4 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_2)))*{c_1_2 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_5))*{iter_5 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_3)))))*{c_1_3 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c_6)*{c_6 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_5)))*{c_1_5 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_6))*{iter_6 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_6)))))*{c_1_6 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c_8)*{c_8 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_8)))*{c_1_8 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_7))*{iter_7 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_9)))))*{c_1_9 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c_10)*{c_10 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_11)))*{c_1_11 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_8))*{iter_8 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_12)))))*{c_1_12 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(v_shape : shape, def $f_(v_N : N, v_fN : fN) : fN*, v_vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvunop_{v_M : nat, def $f_(v_N : N, v_fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), c_lst#2)*{c_lst#2 <- c_lst_lst} - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), v_1) - -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#97))*{iter_0#97 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#10)))))}*{c_1#10 <- c_1_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#98))))*{iter_0#98 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#11)))))}*{c_1#11 <- c_1_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvunop_{v_M : nat, def $f_(v_N : N, v_fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), c_lst#4)*{c_lst#4 <- c_lst_lst} - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), v_1) - -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#99))*{iter_0#99 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#13)))))}*{c_1#13 <- c_1_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#100))))*{iter_0#100 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#14)))))}*{c_1#14 <- c_1_lst} + def $fvunop_{v_M : nat, def $f_(v_N : N, v_fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), c_lst_2)*{c_lst_2 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_49))*{iter_0_49 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_14)))))}*{c_1_14 <- c_1_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), iter_9))*{iter_9 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter_11))*{iter_11 <- iter_10}*{iter_10 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_50))*{iter_0_50 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_15)))))}*{c_1_15 <- c_1_lst})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter_12))*{iter_12 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_16)))))}*{c_1_16 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_51))))*{iter_0_51 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_17)))))}*{c_1_17 <- c_1_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{v_M : nat, def $f_(v_N : N, v_fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), c_lst_4)*{c_lst_4 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_52))*{iter_0_52 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_19)))))}*{c_1_19 <- c_1_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), iter_13))*{iter_13 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter_15))*{iter_15 <- iter_14}*{iter_14 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_53))*{iter_0_53 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_20)))))}*{c_1_20 <- c_1_lst})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter_16))*{iter_16 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_21)))))}*{c_1_21 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_54))))*{iter_0_54 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_22)))))}*{c_1_22 <- c_1_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_vec_ : vec_, v_vec__0 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c#21)*{c#21 <- c_lst})] - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#16)), !($proj_lane__2(c_2#2)))*{c_1#16 <- c_1_lst, c_2#2 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c#20)))*{c#20 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c#24)*{c#24 <- c_lst})] - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#18)), !($proj_lane__2(c_2#4)))*{c_1#18 <- c_1_lst, c_2#4 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c#23)))*{c#23 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c#27)*{c#27 <- c_lst})] - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#20)), !($proj_lane__2(c_2#6)))*{c_1#20 <- c_1_lst, c_2#6 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c#26)))*{c#26 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c#30)*{c#30 <- c_lst})] - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#22)), !($proj_lane__2(c_2#8)))*{c_1#22 <- c_1_lst, c_2#8 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c#29)))*{c#29 <- c_lst} + def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c_16)*{c_16 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_24)), !($proj_lane__2(c_2_2)))*{c_1_24 <- c_1_lst, c_2_2 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_17))*{iter_17 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_18))*{iter_18 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_25)), !($proj_lane__2(c_2_3)))))*{c_1_25 <- c_1_lst, c_2_3 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c_18)*{c_18 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_27)), !($proj_lane__2(c_2_5)))*{c_1_27 <- c_1_lst, c_2_5 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_19))*{iter_19 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_20))*{iter_20 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_28)), !($proj_lane__2(c_2_6)))))*{c_1_28 <- c_1_lst, c_2_6 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c_20)*{c_20 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_30)), !($proj_lane__2(c_2_8)))*{c_1_30 <- c_1_lst, c_2_8 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_21))*{iter_21 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_22))*{iter_22 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_31)), !($proj_lane__2(c_2_9)))))*{c_1_31 <- c_1_lst, c_2_9 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c_22)*{c_22 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_33)), !($proj_lane__2(c_2_11)))*{c_1_33 <- c_1_lst, c_2_11 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_23))*{iter_23 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_24))*{iter_24 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_34)), !($proj_lane__2(c_2_12)))))*{c_1_34 <- c_1_lst, c_2_12 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c#33)*{c#33 <- c_lst})] - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#24)), !($proj_lane__2(c_2#10)))*{c_1#24 <- c_1_lst, c_2#10 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c#32)))*{c#32 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c#36)*{c#36 <- c_lst})] - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#26)), !($proj_lane__2(c_2#12)))*{c_1#26 <- c_1_lst, c_2#12 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c#35)))*{c#35 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c#39)*{c#39 <- c_lst})] - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#28)), !($proj_lane__2(c_2#14)))*{c_1#28 <- c_1_lst, c_2#14 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c#38)))*{c#38 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c#42)*{c#42 <- c_lst})] - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#30)), !($proj_lane__2(c_2#16)))*{c_1#30 <- c_1_lst, c_2#16 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c#41)))*{c#41 <- c_lst} + def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c_24)*{c_24 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_36)), !($proj_lane__2(c_2_14)))*{c_1_36 <- c_1_lst, c_2_14 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_25))*{iter_25 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_26))*{iter_26 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_37)), !($proj_lane__2(c_2_15)))))*{c_1_37 <- c_1_lst, c_2_15 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c_26)*{c_26 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_39)), !($proj_lane__2(c_2_17)))*{c_1_39 <- c_1_lst, c_2_17 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_27))*{iter_27 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_28))*{iter_28 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_40)), !($proj_lane__2(c_2_18)))))*{c_1_40 <- c_1_lst, c_2_18 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c_28)*{c_28 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_42)), !($proj_lane__2(c_2_20)))*{c_1_42 <- c_1_lst, c_2_20 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_29))*{iter_29 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_30))*{iter_30 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_43)), !($proj_lane__2(c_2_21)))))*{c_1_43 <- c_1_lst, c_2_21 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c_30)*{c_30 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_45)), !($proj_lane__2(c_2_23)))*{c_1_45 <- c_1_lst, c_2_23 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_31))*{iter_31 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_32))*{iter_32 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_46)), !($proj_lane__2(c_2_24)))))*{c_1_46 <- c_1_lst, c_2_24 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), c_lst#6)*{c_lst#6 <- c_lst_lst} - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#101)*{iter_0#101 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#32)), !($proj_lane__2(c_2#18)))}*{c_1#32 <- c_1_lst, c_2#18 <- c_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#102)))*{iter_0#102 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#33)), !($proj_lane__2(c_2#19)))}*{c_1#33 <- c_1_lst, c_2#19 <- c_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), c_lst#8)*{c_lst#8 <- c_lst_lst} - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#103)*{iter_0#103 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#35)), !($proj_lane__2(c_2#21)))}*{c_1#35 <- c_1_lst, c_2#21 <- c_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#104)))*{iter_0#104 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#36)), !($proj_lane__2(c_2#22)))}*{c_1#36 <- c_1_lst, c_2#22 <- c_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), c_lst#10)*{c_lst#10 <- c_lst_lst} - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#105)*{iter_0#105 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#38)), !($proj_lane__2(c_2#24)))}*{c_1#38 <- c_1_lst, c_2#24 <- c_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#106)))*{iter_0#106 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#39)), !($proj_lane__2(c_2#25)))}*{c_1#39 <- c_1_lst, c_2#25 <- c_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), c_lst#12)*{c_lst#12 <- c_lst_lst} - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#107)*{iter_0#107 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#41)), !($proj_lane__2(c_2#27)))}*{c_1#41 <- c_1_lst, c_2#27 <- c_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#108)))*{iter_0#108 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#42)), !($proj_lane__2(c_2#28)))}*{c_1#42 <- c_1_lst, c_2#28 <- c_2_lst} + def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), c_lst_6)*{c_lst_6 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0_55)*{iter_0_55 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_48)), !($proj_lane__2(c_2_26)))}*{c_1_48 <- c_1_lst, c_2_26 <- c_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_33))*{iter_33 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_34))*{iter_34 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), iter_36))*{iter_36 <- iter_35}*{iter_35 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0_56)*{iter_0_56 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_49)), !($proj_lane__2(c_2_27)))}*{c_1_49 <- c_1_lst, c_2_27 <- c_2_lst})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_37))*{iter_37 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_50)), !($proj_lane__2(c_2_28)))}*{c_1_50 <- c_1_lst, c_2_28 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0_57)))*{iter_0_57 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_51)), !($proj_lane__2(c_2_29)))}*{c_1_51 <- c_1_lst, c_2_29 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), c_lst_8)*{c_lst_8 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0_58)*{iter_0_58 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_53)), !($proj_lane__2(c_2_31)))}*{c_1_53 <- c_1_lst, c_2_31 <- c_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_38))*{iter_38 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_39))*{iter_39 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), iter_41))*{iter_41 <- iter_40}*{iter_40 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0_59)*{iter_0_59 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_54)), !($proj_lane__2(c_2_32)))}*{c_1_54 <- c_1_lst, c_2_32 <- c_2_lst})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_42))*{iter_42 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_55)), !($proj_lane__2(c_2_33)))}*{c_1_55 <- c_1_lst, c_2_33 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0_60)))*{iter_0_60 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_56)), !($proj_lane__2(c_2_34)))}*{c_1_56 <- c_1_lst, c_2_34 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), c_lst_10)*{c_lst_10 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0_61)*{iter_0_61 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_58)), !($proj_lane__2(c_2_36)))}*{c_1_58 <- c_1_lst, c_2_36 <- c_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_43))*{iter_43 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_44))*{iter_44 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), iter_46))*{iter_46 <- iter_45}*{iter_45 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0_62)*{iter_0_62 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_59)), !($proj_lane__2(c_2_37)))}*{c_1_59 <- c_1_lst, c_2_37 <- c_2_lst})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_47))*{iter_47 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_60)), !($proj_lane__2(c_2_38)))}*{c_1_60 <- c_1_lst, c_2_38 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0_63)))*{iter_0_63 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_61)), !($proj_lane__2(c_2_39)))}*{c_1_61 <- c_1_lst, c_2_39 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), c_lst_12)*{c_lst_12 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0_64)*{iter_0_64 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_63)), !($proj_lane__2(c_2_41)))}*{c_1_63 <- c_1_lst, c_2_41 <- c_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_48))*{iter_48 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_49))*{iter_49 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), iter_51))*{iter_51 <- iter_50}*{iter_50 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0_65)*{iter_0_65 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_64)), !($proj_lane__2(c_2_42)))}*{c_1_64 <- c_1_lst, c_2_42 <- c_2_lst})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_52))*{iter_52 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_65)), !($proj_lane__2(c_2_43)))}*{c_1_65 <- c_1_lst, c_2_43 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0_66)))*{iter_0_66 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_66)), !($proj_lane__2(c_2_44)))}*{c_1_66 <- c_1_lst, c_2_44 <- c_2_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_vec_ : vec_, v_vec__0 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvbinop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), c_lst#14)*{c_lst#14 <- c_lst_lst} - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), v_2) - -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#109))*{iter_0#109 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#44)))), !($proj_num__1(!($proj_lane__0(c_2#30)))))}*{c_1#44 <- c_1_lst, c_2#30 <- c_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#110))))*{iter_0#110 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#45)))), !($proj_num__1(!($proj_lane__0(c_2#31)))))}*{c_1#45 <- c_1_lst, c_2#31 <- c_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvbinop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), c_lst#16)*{c_lst#16 <- c_lst_lst} - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), v_2) - -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#111))*{iter_0#111 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#47)))), !($proj_num__1(!($proj_lane__0(c_2#33)))))}*{c_1#47 <- c_1_lst, c_2#33 <- c_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#112))))*{iter_0#112 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#48)))), !($proj_num__1(!($proj_lane__0(c_2#34)))))}*{c_1#48 <- c_1_lst, c_2#34 <- c_2_lst} + def $fvbinop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), c_lst_14)*{c_lst_14 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_67))*{iter_0_67 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_68)))), !($proj_num__1(!($proj_lane__0(c_2_46)))))}*{c_1_68 <- c_1_lst, c_2_46 <- c_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), iter_53))*{iter_53 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), iter_54))*{iter_54 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter_56))*{iter_56 <- iter_55}*{iter_55 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_68))*{iter_0_68 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_69)))), !($proj_num__1(!($proj_lane__0(c_2_47)))))}*{c_1_69 <- c_1_lst, c_2_47 <- c_2_lst})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter_57))*{iter_57 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_70)))), !($proj_num__1(!($proj_lane__0(c_2_48)))))}*{c_1_70 <- c_1_lst, c_2_48 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_69))))*{iter_0_69 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_71)))), !($proj_num__1(!($proj_lane__0(c_2_49)))))}*{c_1_71 <- c_1_lst, c_2_49 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), c_lst_16)*{c_lst_16 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_70))*{iter_0_70 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_73)))), !($proj_num__1(!($proj_lane__0(c_2_51)))))}*{c_1_73 <- c_1_lst, c_2_51 <- c_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), iter_58))*{iter_58 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), iter_59))*{iter_59 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter_61))*{iter_61 <- iter_60}*{iter_60 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_71))*{iter_0_71 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_74)))), !($proj_num__1(!($proj_lane__0(c_2_52)))))}*{c_1_74 <- c_1_lst, c_2_52 <- c_2_lst})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter_62))*{iter_62 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_75)))), !($proj_num__1(!($proj_lane__0(c_2_53)))))}*{c_1_75 <- c_1_lst, c_2_53 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_72))))*{iter_0_72 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_76)))), !($proj_num__1(!($proj_lane__0(c_2_54)))))}*{c_1_76 <- c_1_lst, c_2_54 <- c_2_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), c_lst#18)*{c_lst#18 <- c_lst_lst} - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_2) - -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_3) - -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#113)*{iter_0#113 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#50)), !($proj_lane__2(c_2#36)), !($proj_lane__2(c_3#2)))}*{c_1#50 <- c_1_lst, c_2#36 <- c_2_lst, c_3#2 <- c_3_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#114)))*{iter_0#114 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#51)), !($proj_lane__2(c_2#37)), !($proj_lane__2(c_3#3)))}*{c_1#51 <- c_1_lst, c_2#37 <- c_2_lst, c_3#3 <- c_3_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), c_lst#20)*{c_lst#20 <- c_lst_lst} - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_2) - -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_3) - -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#115)*{iter_0#115 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#53)), !($proj_lane__2(c_2#39)), !($proj_lane__2(c_3#5)))}*{c_1#53 <- c_1_lst, c_2#39 <- c_2_lst, c_3#5 <- c_3_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#116)))*{iter_0#116 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#54)), !($proj_lane__2(c_2#40)), !($proj_lane__2(c_3#6)))}*{c_1#54 <- c_1_lst, c_2#40 <- c_2_lst, c_3#6 <- c_3_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), c_lst#22)*{c_lst#22 <- c_lst_lst} - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_2) - -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_3) - -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#117)*{iter_0#117 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#56)), !($proj_lane__2(c_2#42)), !($proj_lane__2(c_3#8)))}*{c_1#56 <- c_1_lst, c_2#42 <- c_2_lst, c_3#8 <- c_3_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#118)))*{iter_0#118 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#57)), !($proj_lane__2(c_2#43)), !($proj_lane__2(c_3#9)))}*{c_1#57 <- c_1_lst, c_2#43 <- c_2_lst, c_3#9 <- c_3_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), c_lst#24)*{c_lst#24 <- c_lst_lst} - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_2) - -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_3) - -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#119)*{iter_0#119 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#59)), !($proj_lane__2(c_2#45)), !($proj_lane__2(c_3#11)))}*{c_1#59 <- c_1_lst, c_2#45 <- c_2_lst, c_3#11 <- c_3_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#120)))*{iter_0#120 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#60)), !($proj_lane__2(c_2#46)), !($proj_lane__2(c_3#12)))}*{c_1#60 <- c_1_lst, c_2#46 <- c_2_lst, c_3#12 <- c_3_lst} + def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), c_lst_18)*{c_lst_18 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_3) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0_73)*{iter_0_73 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_78)), !($proj_lane__2(c_2_56)), !($proj_lane__2(c_3_2)))}*{c_1_78 <- c_1_lst, c_2_56 <- c_2_lst, c_3_2 <- c_3_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_63))*{iter_63 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_64))*{iter_64 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_65))*{iter_65 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), iter_67))*{iter_67 <- iter_66}*{iter_66 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0_74)*{iter_0_74 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_79)), !($proj_lane__2(c_2_57)), !($proj_lane__2(c_3_3)))}*{c_1_79 <- c_1_lst, c_2_57 <- c_2_lst, c_3_3 <- c_3_lst})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_68))*{iter_68 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_80)), !($proj_lane__2(c_2_58)), !($proj_lane__2(c_3_4)))}*{c_1_80 <- c_1_lst, c_2_58 <- c_2_lst, c_3_4 <- c_3_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0_75)))*{iter_0_75 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_81)), !($proj_lane__2(c_2_59)), !($proj_lane__2(c_3_5)))}*{c_1_81 <- c_1_lst, c_2_59 <- c_2_lst, c_3_5 <- c_3_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), c_lst_20)*{c_lst_20 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_3) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0_76)*{iter_0_76 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_83)), !($proj_lane__2(c_2_61)), !($proj_lane__2(c_3_7)))}*{c_1_83 <- c_1_lst, c_2_61 <- c_2_lst, c_3_7 <- c_3_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_69))*{iter_69 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_70))*{iter_70 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_71))*{iter_71 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), iter_73))*{iter_73 <- iter_72}*{iter_72 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0_77)*{iter_0_77 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_84)), !($proj_lane__2(c_2_62)), !($proj_lane__2(c_3_8)))}*{c_1_84 <- c_1_lst, c_2_62 <- c_2_lst, c_3_8 <- c_3_lst})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_74))*{iter_74 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_85)), !($proj_lane__2(c_2_63)), !($proj_lane__2(c_3_9)))}*{c_1_85 <- c_1_lst, c_2_63 <- c_2_lst, c_3_9 <- c_3_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0_78)))*{iter_0_78 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_86)), !($proj_lane__2(c_2_64)), !($proj_lane__2(c_3_10)))}*{c_1_86 <- c_1_lst, c_2_64 <- c_2_lst, c_3_10 <- c_3_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), c_lst_22)*{c_lst_22 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_3) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0_79)*{iter_0_79 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_88)), !($proj_lane__2(c_2_66)), !($proj_lane__2(c_3_12)))}*{c_1_88 <- c_1_lst, c_2_66 <- c_2_lst, c_3_12 <- c_3_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_75))*{iter_75 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_76))*{iter_76 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_77))*{iter_77 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), iter_79))*{iter_79 <- iter_78}*{iter_78 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0_80)*{iter_0_80 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_89)), !($proj_lane__2(c_2_67)), !($proj_lane__2(c_3_13)))}*{c_1_89 <- c_1_lst, c_2_67 <- c_2_lst, c_3_13 <- c_3_lst})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_80))*{iter_80 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_90)), !($proj_lane__2(c_2_68)), !($proj_lane__2(c_3_14)))}*{c_1_90 <- c_1_lst, c_2_68 <- c_2_lst, c_3_14 <- c_3_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0_81)))*{iter_0_81 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_91)), !($proj_lane__2(c_2_69)), !($proj_lane__2(c_3_15)))}*{c_1_91 <- c_1_lst, c_2_69 <- c_2_lst, c_3_15 <- c_3_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), c_lst_24)*{c_lst_24 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_3) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0_82)*{iter_0_82 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_93)), !($proj_lane__2(c_2_71)), !($proj_lane__2(c_3_17)))}*{c_1_93 <- c_1_lst, c_2_71 <- c_2_lst, c_3_17 <- c_3_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_81))*{iter_81 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_82))*{iter_82 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_83))*{iter_83 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), iter_85))*{iter_85 <- iter_84}*{iter_84 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0_83)*{iter_0_83 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_94)), !($proj_lane__2(c_2_72)), !($proj_lane__2(c_3_18)))}*{c_1_94 <- c_1_lst, c_2_72 <- c_2_lst, c_3_18 <- c_3_lst})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_86))*{iter_86 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_95)), !($proj_lane__2(c_2_73)), !($proj_lane__2(c_3_19)))}*{c_1_95 <- c_1_lst, c_2_73 <- c_2_lst, c_3_19 <- c_3_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0_84)))*{iter_0_84 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_96)), !($proj_lane__2(c_2_74)), !($proj_lane__2(c_3_20)))}*{c_1_96 <- c_1_lst, c_2_74 <- c_2_lst, c_3_20 <- c_3_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN) : fN*, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvternop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), c_lst#26)*{c_lst#26 <- c_lst_lst} - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), v_2) - -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), v_3) - -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#121))*{iter_0#121 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#62)))), !($proj_num__1(!($proj_lane__0(c_2#48)))), !($proj_num__1(!($proj_lane__0(c_3#14)))))}*{c_1#62 <- c_1_lst, c_2#48 <- c_2_lst, c_3#14 <- c_3_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#122))))*{iter_0#122 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#63)))), !($proj_num__1(!($proj_lane__0(c_2#49)))), !($proj_num__1(!($proj_lane__0(c_3#15)))))}*{c_1#63 <- c_1_lst, c_2#49 <- c_2_lst, c_3#15 <- c_3_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvternop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), c_lst#28)*{c_lst#28 <- c_lst_lst} - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), v_2) - -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), v_3) - -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#123))*{iter_0#123 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#65)))), !($proj_num__1(!($proj_lane__0(c_2#51)))), !($proj_num__1(!($proj_lane__0(c_3#17)))))}*{c_1#65 <- c_1_lst, c_2#51 <- c_2_lst, c_3#17 <- c_3_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#124))))*{iter_0#124 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#66)))), !($proj_num__1(!($proj_lane__0(c_2#52)))), !($proj_num__1(!($proj_lane__0(c_3#18)))))}*{c_1#66 <- c_1_lst, c_2#52 <- c_2_lst, c_3#18 <- c_3_lst} + def $fvternop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), c_lst_26)*{c_lst_26 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2) + -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_3) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_85))*{iter_0_85 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_98)))), !($proj_num__1(!($proj_lane__0(c_2_76)))), !($proj_num__1(!($proj_lane__0(c_3_22)))))}*{c_1_98 <- c_1_lst, c_2_76 <- c_2_lst, c_3_22 <- c_3_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), iter_87))*{iter_87 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), iter_88))*{iter_88 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), iter_89))*{iter_89 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter_91))*{iter_91 <- iter_90}*{iter_90 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_86))*{iter_0_86 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_99)))), !($proj_num__1(!($proj_lane__0(c_2_77)))), !($proj_num__1(!($proj_lane__0(c_3_23)))))}*{c_1_99 <- c_1_lst, c_2_77 <- c_2_lst, c_3_23 <- c_3_lst})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter_92))*{iter_92 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_100)))), !($proj_num__1(!($proj_lane__0(c_2_78)))), !($proj_num__1(!($proj_lane__0(c_3_24)))))}*{c_1_100 <- c_1_lst, c_2_78 <- c_2_lst, c_3_24 <- c_3_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_87))))*{iter_0_87 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_101)))), !($proj_num__1(!($proj_lane__0(c_2_79)))), !($proj_num__1(!($proj_lane__0(c_3_25)))))}*{c_1_101 <- c_1_lst, c_2_79 <- c_2_lst, c_3_25 <- c_3_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), c_lst_28)*{c_lst_28 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2) + -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_3) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_88))*{iter_0_88 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_103)))), !($proj_num__1(!($proj_lane__0(c_2_81)))), !($proj_num__1(!($proj_lane__0(c_3_27)))))}*{c_1_103 <- c_1_lst, c_2_81 <- c_2_lst, c_3_27 <- c_3_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), iter_93))*{iter_93 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), iter_94))*{iter_94 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), iter_95))*{iter_95 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter_97))*{iter_97 <- iter_96}*{iter_96 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_89))*{iter_0_89 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_104)))), !($proj_num__1(!($proj_lane__0(c_2_82)))), !($proj_num__1(!($proj_lane__0(c_3_28)))))}*{c_1_104 <- c_1_lst, c_2_82 <- c_2_lst, c_3_28 <- c_3_lst})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter_98))*{iter_98 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_105)))), !($proj_num__1(!($proj_lane__0(c_2_83)))), !($proj_num__1(!($proj_lane__0(c_3_29)))))}*{c_1_105 <- c_1_lst, c_2_83 <- c_2_lst, c_3_29 <- c_3_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_90))))*{iter_0_90 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_106)))), !($proj_num__1(!($proj_lane__0(c_2_84)))), !($proj_num__1(!($proj_lane__0(c_3_30)))))}*{c_1_106 <- c_1_lst, c_2_84 <- c_2_lst, c_3_30 <- c_3_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c#69)*{c#69 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#68)), !($proj_lane__2(c_2#54)))).0))*{c_1#68 <- c_1_lst, c_2#54 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c#68)))*{c#68 <- c_lst} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#69)), !($proj_lane__2(c_2#55)))).0)))*{c_1#69 <- c_1_lst, c_2#55 <- c_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c#72)*{c#72 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#71)), !($proj_lane__2(c_2#57)))).0))*{c_1#71 <- c_1_lst, c_2#57 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c#71)))*{c#71 <- c_lst} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#72)), !($proj_lane__2(c_2#58)))).0)))*{c_1#72 <- c_1_lst, c_2#58 <- c_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c#75)*{c#75 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#74)), !($proj_lane__2(c_2#60)))).0))*{c_1#74 <- c_1_lst, c_2#60 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c#74)))*{c#74 <- c_lst} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#75)), !($proj_lane__2(c_2#61)))).0)))*{c_1#75 <- c_1_lst, c_2#61 <- c_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c#78)*{c#78 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#77)), !($proj_lane__2(c_2#63)))).0))*{c_1#77 <- c_1_lst, c_2#63 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c#77)))*{c#77 <- c_lst} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#78)), !($proj_lane__2(c_2#64)))).0)))*{c_1#78 <- c_1_lst, c_2#64 <- c_2_lst} + def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c_56)*{c_56 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_108)), !($proj_lane__2(c_2_86)))).0))*{c_1_108 <- c_1_lst, c_2_86 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_99))*{iter_99 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_100))*{iter_100 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_109)), !($proj_lane__2(c_2_87)))).0))))*{c_1_109 <- c_1_lst, c_2_87 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_110)), !($proj_lane__2(c_2_88)))).0)))*{c_1_110 <- c_1_lst, c_2_88 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c_58)*{c_58 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_112)), !($proj_lane__2(c_2_90)))).0))*{c_1_112 <- c_1_lst, c_2_90 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_101))*{iter_101 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_102))*{iter_102 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_113)), !($proj_lane__2(c_2_91)))).0))))*{c_1_113 <- c_1_lst, c_2_91 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_114)), !($proj_lane__2(c_2_92)))).0)))*{c_1_114 <- c_1_lst, c_2_92 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c_60)*{c_60 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_116)), !($proj_lane__2(c_2_94)))).0))*{c_1_116 <- c_1_lst, c_2_94 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_103))*{iter_103 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_104))*{iter_104 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_117)), !($proj_lane__2(c_2_95)))).0))))*{c_1_117 <- c_1_lst, c_2_95 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_118)), !($proj_lane__2(c_2_96)))).0)))*{c_1_118 <- c_1_lst, c_2_96 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c_62)*{c_62 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_120)), !($proj_lane__2(c_2_98)))).0))*{c_1_120 <- c_1_lst, c_2_98 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_105))*{iter_105 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_106))*{iter_106 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_121)), !($proj_lane__2(c_2_99)))).0))))*{c_1_121 <- c_1_lst, c_2_99 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_122)), !($proj_lane__2(c_2_100)))).0)))*{c_1_122 <- c_1_lst, c_2_100 <- c_2_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c#81)*{c#81 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#80)), !($proj_lane__2(c_2#66)))).0))*{c_1#80 <- c_1_lst, c_2#66 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c#80)))*{c#80 <- c_lst} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#81)), !($proj_lane__2(c_2#67)))).0)))*{c_1#81 <- c_1_lst, c_2#67 <- c_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c#84)*{c#84 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#83)), !($proj_lane__2(c_2#69)))).0))*{c_1#83 <- c_1_lst, c_2#69 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c#83)))*{c#83 <- c_lst} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#84)), !($proj_lane__2(c_2#70)))).0)))*{c_1#84 <- c_1_lst, c_2#70 <- c_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c#87)*{c#87 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#86)), !($proj_lane__2(c_2#72)))).0))*{c_1#86 <- c_1_lst, c_2#72 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c#86)))*{c#86 <- c_lst} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#87)), !($proj_lane__2(c_2#73)))).0)))*{c_1#87 <- c_1_lst, c_2#73 <- c_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c#90)*{c#90 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#89)), !($proj_lane__2(c_2#75)))).0))*{c_1#89 <- c_1_lst, c_2#75 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c#89)))*{c#89 <- c_lst} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#90)), !($proj_lane__2(c_2#76)))).0)))*{c_1#90 <- c_1_lst, c_2#76 <- c_2_lst} + def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c_64)*{c_64 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_124)), !($proj_lane__2(c_2_102)))).0))*{c_1_124 <- c_1_lst, c_2_102 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_107))*{iter_107 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_108))*{iter_108 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_125)), !($proj_lane__2(c_2_103)))).0))))*{c_1_125 <- c_1_lst, c_2_103 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_126)), !($proj_lane__2(c_2_104)))).0)))*{c_1_126 <- c_1_lst, c_2_104 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c_66)*{c_66 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_128)), !($proj_lane__2(c_2_106)))).0))*{c_1_128 <- c_1_lst, c_2_106 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_109))*{iter_109 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_110))*{iter_110 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_129)), !($proj_lane__2(c_2_107)))).0))))*{c_1_129 <- c_1_lst, c_2_107 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_130)), !($proj_lane__2(c_2_108)))).0)))*{c_1_130 <- c_1_lst, c_2_108 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c_68)*{c_68 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_132)), !($proj_lane__2(c_2_110)))).0))*{c_1_132 <- c_1_lst, c_2_110 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_111))*{iter_111 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_112))*{iter_112 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_133)), !($proj_lane__2(c_2_111)))).0))))*{c_1_133 <- c_1_lst, c_2_111 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_134)), !($proj_lane__2(c_2_112)))).0)))*{c_1_134 <- c_1_lst, c_2_112 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c_70)*{c_70 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_136)), !($proj_lane__2(c_2_114)))).0))*{c_1_136 <- c_1_lst, c_2_114 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_113))*{iter_113 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_114))*{iter_114 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_137)), !($proj_lane__2(c_2_115)))).0))))*{c_1_137 <- c_1_lst, c_2_115 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_138)), !($proj_lane__2(c_2_116)))).0)))*{c_1_138 <- c_1_lst, c_2_116 <- c_2_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvrelop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_1 : uN, v_2 : uN, v_Inn : addrtype}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(v_Inn), `%`_dim(v_M)), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, `%`_uN($proj_uN_0(c#93).0)))*{c#93 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#92)))), !($proj_num__1(!($proj_lane__0(c_2#78)))))).0))*{c_1#92 <- c_1_lst, c_2#78 <- c_2_lst} + def $fvrelop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_1 : uN, v_2 : uN, v_Inn : addrtype}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M)), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, mk_uN_uN($proj_uN_0(c_72).0)))*{c_72 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, mk_uN_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_140)))), !($proj_num__1(!($proj_lane__0(c_2_118)))))).0))*{c_1_140 <- c_1_lst, c_2_118 <- c_2_lst} -- if ($isize(v_Inn) = $fsize(F32_Fnn)) - -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(v_Inn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(v_Inn), `%`_dim(v_M))), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, `%`_uN($proj_uN_0(c#92).0)))))*{c#92 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#93)))), !($proj_num__1(!($proj_lane__0(c_2#79)))))).0)))*{c_1#93 <- c_1_lst, c_2#79 <- c_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvrelop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_1 : uN, v_2 : uN, v_Inn : addrtype}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(v_Inn), `%`_dim(v_M)), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, `%`_uN($proj_uN_0(c#96).0)))*{c#96 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#95)))), !($proj_num__1(!($proj_lane__0(c_2#81)))))).0))*{c_1#95 <- c_1_lst, c_2#81 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), iter_115))*{iter_115 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), iter_116))*{iter_116 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($size($numtype_Fnn(F32_Fnn)), $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, mk_uN_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_141)))), !($proj_num__1(!($proj_lane__0(c_2_119)))))).0))))*{c_1_141 <- c_1_lst, c_2_119 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_142)))), !($proj_num__1(!($proj_lane__0(c_2_120)))))).0)))*{c_1_142 <- c_1_lst, c_2_120 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_1 : uN, v_2 : uN, v_Inn : addrtype}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M)), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, mk_uN_uN($proj_uN_0(c_74).0)))*{c_74 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, mk_uN_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_144)))), !($proj_num__1(!($proj_lane__0(c_2_122)))))).0))*{c_1_144 <- c_1_lst, c_2_122 <- c_2_lst} -- if ($isize(v_Inn) = $fsize(F64_Fnn)) - -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(v_Inn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(v_Inn), `%`_dim(v_M))), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, `%`_uN($proj_uN_0(c#95).0)))))*{c#95 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#96)))), !($proj_num__1(!($proj_lane__0(c_2#82)))))).0)))*{c_1#96 <- c_1_lst, c_2#82 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), iter_117))*{iter_117 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), iter_118))*{iter_118 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($size($numtype_Fnn(F64_Fnn)), $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, mk_uN_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_145)))), !($proj_num__1(!($proj_lane__0(c_2_123)))))).0))))*{c_1_145 <- c_1_lst, c_2_123 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_146)))), !($proj_num__1(!($proj_lane__0(c_2_124)))))).0)))*{c_1_146 <- c_1_lst, c_2_124 <- c_2_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_vec_ : vec_, v_u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c#99)*{c#99 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_1) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#98)), i)*{c_1#98 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c#98)))*{c#98 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c#102)*{c#102 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_1) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#100)), i)*{c_1#100 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c#101)))*{c#101 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c#105)*{c#105 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_1) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#102)), i)*{c_1#102 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c#104)))*{c#104 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c#108)*{c#108 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_1) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#104)), i)*{c_1#104 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c#107)))*{c#107 <- c_lst} + def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c_76)*{c_76 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_148)), i)*{c_1_148 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_119))*{iter_119 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_149)), i)))*{c_1_149 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c_78)*{c_78 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_151)), i)*{c_1_151 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_120))*{iter_120 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_152)), i)))*{c_1_152 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c_80)*{c_80 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_154)), i)*{c_1_154 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_121))*{iter_121 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_155)), i)))*{c_1_155 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c_82)*{c_82 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_157)), i)*{c_1_157 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_122))*{iter_122 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_158)), i)))*{c_1_158 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_vec_ : vec_, v_u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c#111)*{c#111 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_1) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#106)), i)*{c_1#106 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c#110)))*{c#110 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c#114)*{c#114 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_1) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#108)), i)*{c_1#108 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c#113)))*{c#113 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c#117)*{c#117 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_1) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#110)), i)*{c_1#110 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c#116)))*{c#116 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c#120)*{c#120 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_1) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#112)), i)*{c_1#112 <- c_1_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c#119)))*{c#119 <- c_lst} + def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c_84)*{c_84 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_160)), i)*{c_1_160 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_123))*{iter_123 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_161)), i)))*{c_1_161 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c_86)*{c_86 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_163)), i)*{c_1_163 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_124))*{iter_124 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_164)), i)))*{c_1_164 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c_88)*{c_88 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_166)), i)*{c_1_166 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_125))*{iter_125 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_167)), i)))*{c_1_167 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c_90)*{c_90 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_169)), i)*{c_1_169 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_126))*{iter_126 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_170)), i)))*{c_1_170 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(v_shape : shape, v_vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), v_1) = $irev_(32, c) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_1) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#114)), `%`_iN(0))).0)*{c_1#114 <- c_1_lst} ++ `%`_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#115)), `%`_iN(0))).0)))*{c_1#115 <- c_1_lst} - -- wf_bit: `%`(`%`_bit(0)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), v_1) = $irev_(32, c) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_1) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#117)), `%`_iN(0))).0)*{c_1#117 <- c_1_lst} ++ `%`_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#118)), `%`_iN(0))).0)))*{c_1#118 <- c_1_lst} - -- wf_bit: `%`(`%`_bit(0)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), v_1) = $irev_(32, c) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_1) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#120)), `%`_iN(0))).0)*{c_1#120 <- c_1_lst} ++ `%`_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#121)), `%`_iN(0))).0)))*{c_1#121 <- c_1_lst} - -- wf_bit: `%`(`%`_bit(0)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), v_1) = $irev_(32, c) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_1) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#123)), `%`_iN(0))).0)*{c_1#123 <- c_1_lst} ++ `%`_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#124)), `%`_iN(0))).0)))*{c_1#124 <- c_1_lst} - -- wf_bit: `%`(`%`_bit(0)) + def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), v_1) = $irev_(32, c) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1_172)), mk_uN_iN(0))).0)*{c_1_172 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_127))*{iter_127 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_bit: `%`(iter_128))*{iter_128 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1_173)), mk_uN_iN(0))).0)))*{c_1_173 <- c_1_lst} + -- wf_bit: `%`(mk_bit_bit(0)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), v_1) = $irev_(32, c) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1_175)), mk_uN_iN(0))).0)*{c_1_175 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_129))*{iter_129 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_bit: `%`(iter_130))*{iter_130 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1_176)), mk_uN_iN(0))).0)))*{c_1_176 <- c_1_lst} + -- wf_bit: `%`(mk_bit_bit(0)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), v_1) = $irev_(32, c) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1_178)), mk_uN_iN(0))).0)*{c_1_178 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_131))*{iter_131 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_bit: `%`(iter_132))*{iter_132 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1_179)), mk_uN_iN(0))).0)))*{c_1_179 <- c_1_lst} + -- wf_bit: `%`(mk_bit_bit(0)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), v_1) = $irev_(32, c) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1_181)), mk_uN_iN(0))).0)*{c_1_181 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_133))*{iter_133 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_bit: `%`(iter_134))*{iter_134 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1_182)), mk_uN_iN(0))).0)))*{c_1_182 <- c_1_lst} + -- wf_bit: `%`(mk_bit_bit(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_(v_shape : shape, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c#123)*{c#123 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#126))*{c_1#126 <- c_1_lst}, !($proj_lane__2(c_2#84)))*{c_2#84 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c#122)))*{c#122 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c#126)*{c#126 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#128))*{c_1#128 <- c_1_lst}, !($proj_lane__2(c_2#86)))*{c_2#86 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c#125)))*{c#125 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c#129)*{c#129 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#130))*{c_1#130 <- c_1_lst}, !($proj_lane__2(c_2#88)))*{c_2#88 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c#128)))*{c#128 <- c_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c#132)*{c#132 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#132))*{c_1#132 <- c_1_lst}, !($proj_lane__2(c_2#90)))*{c_2#90 <- c_2_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c#131)))*{c#131 <- c_lst} + def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c_92)*{c_92 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_184))*{c_1_184 <- c_1_lst}, !($proj_lane__2(c_2_126)))*{c_2_126 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_135))*{iter_135 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_136))*{iter_136 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_185))*{c_1_185 <- c_1_lst}, !($proj_lane__2(c_2_127)))))*{c_2_127 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c_94)*{c_94 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_187))*{c_1_187 <- c_1_lst}, !($proj_lane__2(c_2_129)))*{c_2_129 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_137))*{iter_137 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_138))*{iter_138 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_188))*{c_1_188 <- c_1_lst}, !($proj_lane__2(c_2_130)))))*{c_2_130 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c_96)*{c_96 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_190))*{c_1_190 <- c_1_lst}, !($proj_lane__2(c_2_132)))*{c_2_132 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_139))*{iter_139 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_140))*{iter_140 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_191))*{c_1_191 <- c_1_lst}, !($proj_lane__2(c_2_133)))))*{c_2_133 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c_98)*{c_98 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_193))*{c_1_193 <- c_1_lst}, !($proj_lane__2(c_2_135)))*{c_2_135 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_141))*{iter_141 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_142))*{iter_142 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_194))*{c_1_194 <- c_1_lst}, !($proj_lane__2(c_2_136)))))*{c_2_136 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(v_shape : shape, var_0 : laneidx*, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), c_lst) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : lane_*} c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i#138500).0]*{i#138500 <- i_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), c_lst) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : lane_*} c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i#138507).0]*{i#138507 <- i_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), c_lst) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : lane_*} c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i#138514).0]*{i#138514 <- i_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), c_lst) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v_2) - -- let{c_lst : lane_*} c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i#138521).0]*{i#138521 <- i_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), c_lst) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : lane_*} c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i_138595).0]*{i_138595 <- i_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_143))*{iter_143 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_144))*{iter_144 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), c_lst) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : lane_*} c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i_138606).0]*{i_138606 <- i_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_145))*{iter_145 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_146))*{iter_146 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), c_lst) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : lane_*} c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i_138617).0]*{i_138617 <- i_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_147))*{iter_147 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_148))*{iter_148 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), c_lst) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : lane_*} c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i_138628).0]*{i_138628 <- i_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_149))*{iter_149 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_150))*{iter_150 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vvunop_(v_vectype : vectype, v_vvunop : vvunop, v_vec_ : vec_) : vec_* @@ -9539,1346 +10382,1333 @@ def $vvternop_(v_vectype : vectype, v_vvternop : vvternop, v_vec_ : vec_, v_vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vunop_(v_shape : shape, v_vunop_ : vunop_, v_vec_ : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fabs_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fabs_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fneg_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fneg_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fsqrt_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fsqrt_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fceil_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fceil_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $ffloor_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $ffloor_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $ftrunc_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $ftrunc_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fnearest_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fnearest_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iabs_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iabs_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iabs_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iabs_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ineg_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ineg_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ineg_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ineg_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vbinop_(v_shape : shape, v_vbinop_ : vbinop_, v_vec_ : vec_, v_vec__0 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $imin_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $imin_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $imin_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $imin_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $imax_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $imax_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $imax_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $imax_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fadd_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fadd_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fsub_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fsub_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmul_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmul_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fdiv_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fdiv_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmin_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmin_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmax_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmax_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fpmin_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fpmin_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fpmax_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fpmax_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_min_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_min_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_max_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_max_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vternop_(v_shape : shape, v_vternop_ : vternop_, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vternop__0_vternop_(I32_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I32_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vternop__0_vternop_(I64_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I64_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vternop__0_vternop_(I8_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I8_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vternop__0_vternop_(I16_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I16_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, v_M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, v_M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, v_M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, v_M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, v_M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, v_M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, v_M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, v_M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vrelop_(v_shape : shape, v_vrelop_ : vrelop_, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ilt_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ilt_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ilt_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ilt_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $igt_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $igt_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $igt_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $igt_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ile_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ile_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ile_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ile_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ige_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ige_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ige_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ige_, v_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $feq_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $feq_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fne_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fne_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $flt_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $flt_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fgt_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fgt_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fle_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fle_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fge_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(v_M))) + def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fge_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__, v_lane_ : lane_) : lane_* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#143))?{c#143 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_108))?{c_108 <- c_opt}) -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#142))))?{c#142 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_151))?{iter_151 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#146))?{c#146 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_110))?{c_110 <- c_opt}) -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#145))))?{c#145 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_152))?{iter_152 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#149))?{c#149 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_112))?{c_112 <- c_opt}) -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#148))))?{c#148 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_153))?{iter_153 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#152))?{c#152 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_114))?{c_114 <- c_opt}) -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#151))))?{c#151 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_154))?{iter_154 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#155))?{c#155 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_116))?{c_116 <- c_opt}) -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#154))))?{c#154 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_155))?{iter_155 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#158))?{c#158 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_118))?{c_118 <- c_opt}) -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#157))))?{c#157 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_156))?{iter_156 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#161))?{c#161 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_120))?{c_120 <- c_opt}) -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#160))))?{c#160 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_157))?{iter_157 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#164))?{c#164 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_122))?{c_122 <- c_opt}) -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#163))))?{c#163 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_158))?{iter_158 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#167))?{c#167 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_124))?{c_124 <- c_opt}) -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#166))))?{c#166 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_159))?{iter_159 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#170))?{c#170 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_126))?{c_126 <- c_opt}) -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#169))))?{c#169 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_160))?{iter_160 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#173))?{c#173 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_128))?{c_128 <- c_opt}) -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#172))))?{c#172 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_161))?{iter_161 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#176))?{c#176 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_130))?{c_130 <- c_opt}) -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#175))))?{c#175 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_162))?{iter_162 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#179))?{c#179 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_132))?{c_132 <- c_opt}) -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#178))))?{c#178 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_163))?{iter_163 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#182))?{c#182 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_134))?{c_134 <- c_opt}) -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#181))))?{c#181 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_164))?{iter_164 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#185))?{c#185 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_136))?{c_136 <- c_opt}) -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#184))))?{c#184 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_165))?{iter_165 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#188))?{c#188 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_138))?{c_138 <- c_opt}) -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#187))))?{c#187 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_166))?{iter_166 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#191))?{c#191 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_140))?{c_140 <- c_opt}) -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#190))))?{c#190 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_167))?{iter_167 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#194))?{c#194 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_142))?{c_142 <- c_opt}) -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#193))))?{c#193 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_168))?{iter_168 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#197))?{c#197 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_144))?{c_144 <- c_opt}) -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#196))))?{c#196 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_169))?{iter_169 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#200))?{c#200 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_146))?{c_146 <- c_opt}) -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#199))))?{c#199 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_170))?{iter_170 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#203))?{c#203 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_148))?{c_148 <- c_opt}) -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#202))))?{c#202 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_171))?{iter_171 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#206))?{c#206 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_150))?{c_150 <- c_opt}) -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#205))))?{c#205 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_172))?{iter_172 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#209))?{c#209 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_152))?{c_152 <- c_opt}) -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#208))))?{c#208 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_173))?{iter_173 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#212))?{c#212 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_154))?{c_154 <- c_opt}) -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#211))))?{c#211 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_174))?{iter_174 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#215))?{c#215 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_156))?{c_156 <- c_opt}) -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#214))))?{c#214 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_175))?{iter_175 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#218))?{c#218 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_158))?{c_158 <- c_opt}) -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#217))))?{c#217 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_176))?{iter_176 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#221))?{c#221 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_160))?{c_160 <- c_opt}) -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#220))))?{c#220 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_177))?{iter_177 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#224))?{c#224 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_162))?{c_162 <- c_opt}) -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#223))))?{c#223 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_178))?{iter_178 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#227))?{c#227 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_164))?{c_164 <- c_opt}) -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#226))))?{c#226 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_179))?{iter_179 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#230))?{c#230 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_166))?{c_166 <- c_opt}) -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#229))))?{c#229 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_180))?{iter_180 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#233))?{c#233 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_168))?{c_168 <- c_opt}) -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#232))))?{c#232 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_181))?{iter_181 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#236))?{c#236 <- c_opt}) + def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_170))?{c_170 <- c_opt}) -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#235))))?{c#235 <- c_opt} + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_182))?{iter_182 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#239))*{c#239 <- c_lst} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c_172))*{c_172 <- c_lst} -- let{c_lst : fN*} c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#238))))*{c#238 <- c_lst} + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter_183))*{iter_183 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#242))*{c#242 <- c_lst} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c_174))*{c_174 <- c_lst} -- let{c_lst : fN*} c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#241))))*{c#241 <- c_lst} + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter_184))*{iter_184 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#245))*{c#245 <- c_lst} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c_176))*{c_176 <- c_lst} -- let{c_lst : fN*} c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#244))))*{c#244 <- c_lst} + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter_185))*{iter_185 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#248))*{c#248 <- c_lst} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c_178))*{c_178 <- c_lst} -- let{c_lst : fN*} c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#247))))*{c#247 <- c_lst} + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter_186))*{iter_186 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#251))*{c#251 <- c_lst} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c_180))*{c_180 <- c_lst} -- let{c_lst : fN*} c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#250))))*{c#250 <- c_lst} + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter_187))*{iter_187 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#254))*{c#254 <- c_lst} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c_182))*{c_182 <- c_lst} -- let{c_lst : fN*} c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#253))))*{c#253 <- c_lst} + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter_188))*{iter_188 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#257))*{c#257 <- c_lst} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c_184))*{c_184 <- c_lst} -- let{c_lst : fN*} c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#256))))*{c#256 <- c_lst} + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter_189))*{iter_189 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#260))*{c#260 <- c_lst} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c_186))*{c_186 <- c_lst} -- let{c_lst : fN*} c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#259))))*{c#259 <- c_lst} + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter_190))*{iter_190 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#263))*{c#263 <- c_lst} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c_188))*{c_188 <- c_lst} -- let{c_lst : fN*} c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#262))))*{c#262 <- c_lst} + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter_191))*{iter_191 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#266))*{c#266 <- c_lst} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c_190))*{c_190 <- c_lst} -- let{c_lst : fN*} c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#265))))*{c#265 <- c_lst} + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter_192))*{iter_192 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#269))*{c#269 <- c_lst} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c_192))*{c_192 <- c_lst} -- let{c_lst : fN*} c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#268))))*{c#268 <- c_lst} + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter_193))*{iter_193 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#272))*{c#272 <- c_lst} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c_194))*{c_194 <- c_lst} -- let{c_lst : fN*} c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#271))))*{c#271 <- c_lst} + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter_194))*{iter_194 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#275))*{c#275 <- c_lst} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c_196))*{c_196 <- c_lst} -- let{c_lst : fN*} c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#274))))*{c#274 <- c_lst} + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter_195))*{iter_195 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#278))*{c#278 <- c_lst} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c_198))*{c_198 <- c_lst} -- let{c_lst : fN*} c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#277))))*{c#277 <- c_lst} + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter_196))*{iter_196 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#281))*{c#281 <- c_lst} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c_200))*{c_200 <- c_lst} -- let{c_lst : fN*} c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#280))))*{c#280 <- c_lst} + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter_197))*{iter_197 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#284))*{c#284 <- c_lst} + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c_202))*{c_202 <- c_lst} -- let{c_lst : fN*} c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#283))))*{c#283 <- c_lst} + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter_198))*{iter_198 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lcvtop___is_wf: `%%%%%`(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__, v_lane_ : lane_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lcvtop___is_wf0{shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__, v_lane_ : lane_, ret_val : lane_*}: + `%%%%%`(shape_1, shape_2, v_vcvtop__, v_lane_, ret_val) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_1, shape_2, v_vcvtop__) + -- wf_lane_: `%%`($fun_lanetype(shape_1), v_lane_) + -- if (ret_val = $lcvtop__(shape_1, shape_2, v_vcvtop__, v_lane_)) + -- (wf_lane_: `%%`($fun_lanetype(shape_2), ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vcvtop__(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__, v_vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vcvtop__{Lnn_1 : lanetype, v_M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN}(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop, v_1) = v - -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop) = ?())) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(v_M)), v_1) - -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(v_M)), `%X%`_shape(Lnn_2, `%`_dim(v_M)), vcvtop, c_1#142)*{c_1#142 <- c_1_lst}) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(v_M)), c_lst#30)*{c_lst#30 <- c_lst_lst}) - -- wf_uN: `%%`(128, v) - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(v_M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(v_M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, v_half : half}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(v_half)) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$fun_half(v_half, 0, M_2) : M_2] - -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#144)*{c_1#144 <- c_1_lst}) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c_lst#32)*{c_lst#32 <- c_lst_lst}) - -- wf_uN: `%%`(128, v) - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) - -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#146)*{c_1#146 <- c_1_lst} ++ [$fun_zero(Lnn_2)]^M_1{}) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c_lst#34)*{c_lst#34 <- c_lst_lst}) - -- wf_uN: `%%`(128, v) - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + def $fun_vcvtop__{Lnn_1 : lanetype, v_M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN}(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, v_1) = v + -- if (($halfop(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop) = ?())) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), v_1) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, c_1_204)*{c_1_204 <- c_1_lst}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(v_M)), c_lst_30)*{c_lst_30 <- c_lst_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(v_M))), iter_199))*{iter_199 <- $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter_201))*{iter_201 <- iter_200}*{iter_200 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, c_1_205)*{c_1_205 <- c_1_lst})} + -- (wf_lane_: `%%`(Lnn_2, iter_202))*{iter_202 <- $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, c_1_206)}*{c_1_206 <- c_1_lst} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(v_M)), c_lst_31)))*{c_lst_31 <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, v_half : half}(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1) = v + -- if ($halfop(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop) = ?(v_half)) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1)[$fun_half(v_half, 0, M_2) : M_2] + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1_208)*{c_1_208 <- c_1_lst}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst_33)*{c_lst_33 <- c_lst_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))), iter_203))*{iter_203 <- $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter_205))*{iter_205 <- iter_204}*{iter_204 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1_209)*{c_1_209 <- c_1_lst})} + -- (wf_lane_: `%%`(Lnn_2, iter_206))*{iter_206 <- $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1_210)}*{c_1_210 <- c_1_lst} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst_34)))*{c_lst_34 <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN}(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1) = v + -- if ($zeroop(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop) = ?(ZERO_zero)) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1_212)*{c_1_212 <- c_1_lst} ++ [$fun_zero(Lnn_2)]^M_1{}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst_36)*{c_lst_36 <- c_lst_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))), iter_207))*{iter_207 <- $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter_209))*{iter_209 <- iter_208}*{iter_208 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1_213)*{c_1_213 <- c_1_lst} ++ [$fun_zero(Lnn_2)]^M_1{})} + -- (wf_lane_: `%%`(Lnn_2, iter_210))*{iter_210 <- $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1_214)}*{c_1_214 <- c_1_lst} + -- wf_lane_: `%%`(Lnn_2, $fun_zero(Lnn_2)) + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst_37)))*{c_lst_37 <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(M_2))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vshiftop_(v_ishape : ishape, v_vshiftop_ : vshiftop_, v_vec_ : vec_, v_u32 : u32) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), def $ishr_, v_sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), def $ishr_, v_sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), def $ishr_, v_sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), def $ishr_, v_sx, v, i) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(v_ishape : ishape, v_vec_ : vec_) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{v_M : nat, v : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(v_M))) + def $vbitmaskop_{v_M : nat, v : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{v_M : nat, v : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(v_M))) + def $vbitmaskop_{v_M : nat, v : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{v_M : nat, v : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(v_M))) + def $vbitmaskop_{v_M : nat, v : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{v_M : nat, v : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M)), v) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(v_M))) + def $vbitmaskop_{v_M : nat, v : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vswizzlop_(v_bshape : bshape, v_vswizzlop_ : vswizzlop_, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vswizzlop_{v_M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), mk_vswizzlop__0_vswizzlop_(v_M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M))) + def $fun_vswizzlop_{v_M : nat, v_1 : uN, v_2 : uN}(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vswizzlop__0_vswizzlop_(v_M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $iswizzle_lane_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vswizzlop_{v_M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), mk_vswizzlop__0_vswizzlop_(v_M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M))) + def $fun_vswizzlop_{v_M : nat, v_1 : uN, v_2 : uN}(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vswizzlop__0_vswizzlop_(v_M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $irelaxed_swizzle_lane_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(v_bshape : bshape, var_0 : laneidx*, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(v_M))), i_lst, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(v_M)), i_lst, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(v_M))) + def $vshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), i_lst, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) - -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#148)))*{c_1#148 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2#100)))*{c_2#100 <- c_2_lst} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#2)*{c'_1#2 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2#2)*{c'_2#2 <- c'_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#3)))*{c'_1#3 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#3)))*{c'_2#3 <- c'_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) - -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#150)))*{c_1#150 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2#102)))*{c_2#102 <- c_2_lst} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#5)*{c'_1#5 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2#5)*{c'_2#5 <- c'_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#6)))*{c'_1#6 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#6)))*{c'_2#6 <- c'_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) - -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#152)))*{c_1#152 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2#104)))*{c_2#104 <- c_2_lst} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#8)*{c'_1#8 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2#8)*{c'_2#8 <- c'_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#9)))*{c'_1#9 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#9)))*{c'_2#9 <- c'_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) - -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#154)))*{c_1#154 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2#106)))*{c_2#106 <- c_2_lst} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#11)*{c'_1#11 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2#11)*{c'_2#11 <- c'_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#12)))*{c'_1#12 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#12)))*{c'_2#12 <- c'_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) - -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#156)))*{c_1#156 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2#108)))*{c_2#108 <- c_2_lst} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#14)*{c'_1#14 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2#14)*{c'_2#14 <- c'_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#15)))*{c'_1#15 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#15)))*{c'_2#15 <- c'_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) - -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#158)))*{c_1#158 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2#110)))*{c_2#110 <- c_2_lst} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#17)*{c'_1#17 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2#17)*{c'_2#17 <- c'_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#18)))*{c'_1#18 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#18)))*{c'_2#18 <- c'_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) - -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#160)))*{c_1#160 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2#112)))*{c_2#112 <- c_2_lst} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#20)*{c'_1#20 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2#20)*{c'_2#20 <- c'_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#21)))*{c'_1#21 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#21)))*{c'_2#21 <- c'_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) - -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#162)))*{c_1#162 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2#114)))*{c_2#114 <- c_2_lst} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#23)*{c'_1#23 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2#23)*{c'_2#23 <- c'_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#24)))*{c'_1#24 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#24)))*{c'_2#24 <- c'_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) - -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#164)))*{c_1#164 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2#116)))*{c_2#116 <- c_2_lst} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#26)*{c'_1#26 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2#26)*{c'_2#26 <- c'_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#27)))*{c'_1#27 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#27)))*{c'_2#27 <- c'_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) - -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#166)))*{c_1#166 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2#118)))*{c_2#118 <- c_2_lst} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#29)*{c'_1#29 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2#29)*{c'_2#29 <- c'_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#30)))*{c'_1#30 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#30)))*{c'_2#30 <- c'_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) - -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#168)))*{c_1#168 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2#120)))*{c_2#120 <- c_2_lst} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#32)*{c'_1#32 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2#32)*{c'_2#32 <- c'_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#33)))*{c'_1#33 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#33)))*{c'_2#33 <- c'_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) - -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#170)))*{c_1#170 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2#122)))*{c_2#122 <- c_2_lst} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#35)*{c'_1#35 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2#35)*{c'_2#35 <- c'_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#36)))*{c'_1#36 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#36)))*{c'_2#36 <- c'_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) - -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#172)))*{c_1#172 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2#124)))*{c_2#124 <- c_2_lst} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#38)*{c'_1#38 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2#38)*{c'_2#38 <- c'_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#39)))*{c'_1#39 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#39)))*{c'_2#39 <- c'_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) - -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#174)))*{c_1#174 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2#126)))*{c_2#126 <- c_2_lst} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#41)*{c'_1#41 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2#41)*{c'_2#41 <- c'_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#42)))*{c'_1#42 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#42)))*{c'_2#42 <- c'_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) - -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#176)))*{c_1#176 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2#128)))*{c_2#128 <- c_2_lst} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#44)*{c'_1#44 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2#44)*{c'_2#44 <- c'_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#45)))*{c'_1#45 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#45)))*{c'_2#45 <- c'_2_lst} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), v_sx, v_1, v_2) = v - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) - -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#178)))*{c_1#178 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2#130)))*{c_2#130 <- c_2_lst} - -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#47)*{c'_1#47 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2#47)*{c'_2#47 <- c'_2_lst}) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#48)))*{c'_1#48 <- c'_1_lst} - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#48)))*{c'_2#48 <- c'_2_lst} + def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_216)))*{c_1_216 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2_146)))*{c_2_146 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1_2)*{c'_1_2 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2_2)*{c'_2_2 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_211))*{iter_211 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_212))*{iter_212 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_217)))))*{c_1_217 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2_147)))))*{c_2_147 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1_3)*{c'_1_3 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2_3)*{c'_2_3 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1_4)))*{c'_1_4 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2_4)))*{c'_2_4 <- c'_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_219)))*{c_1_219 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2_149)))*{c_2_149 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1_6)*{c'_1_6 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2_6)*{c'_2_6 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_213))*{iter_213 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_214))*{iter_214 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_220)))))*{c_1_220 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2_150)))))*{c_2_150 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1_7)*{c'_1_7 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2_7)*{c'_2_7 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1_8)))*{c'_1_8 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2_8)))*{c'_2_8 <- c'_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_222)))*{c_1_222 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2_152)))*{c_2_152 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1_10)*{c'_1_10 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2_10)*{c'_2_10 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_215))*{iter_215 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_216))*{iter_216 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_223)))))*{c_1_223 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2_153)))))*{c_2_153 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1_11)*{c'_1_11 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2_11)*{c'_2_11 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1_12)))*{c'_1_12 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2_12)))*{c'_2_12 <- c'_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_225)))*{c_1_225 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2_155)))*{c_2_155 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1_14)*{c'_1_14 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2_14)*{c'_2_14 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_217))*{iter_217 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_218))*{iter_218 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_226)))))*{c_1_226 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2_156)))))*{c_2_156 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1_15)*{c'_1_15 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2_15)*{c'_2_15 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1_16)))*{c'_1_16 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2_16)))*{c'_2_16 <- c'_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_228)))*{c_1_228 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2_158)))*{c_2_158 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1_18)*{c'_1_18 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2_18)*{c'_2_18 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_219))*{iter_219 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_220))*{iter_220 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_229)))))*{c_1_229 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2_159)))))*{c_2_159 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1_19)*{c'_1_19 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2_19)*{c'_2_19 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1_20)))*{c'_1_20 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2_20)))*{c'_2_20 <- c'_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_231)))*{c_1_231 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2_161)))*{c_2_161 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1_22)*{c'_1_22 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2_22)*{c'_2_22 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_221))*{iter_221 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_222))*{iter_222 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_232)))))*{c_1_232 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2_162)))))*{c_2_162 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1_23)*{c'_1_23 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2_23)*{c'_2_23 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1_24)))*{c'_1_24 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2_24)))*{c'_2_24 <- c'_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_234)))*{c_1_234 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2_164)))*{c_2_164 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1_26)*{c'_1_26 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2_26)*{c'_2_26 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_223))*{iter_223 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_224))*{iter_224 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_235)))))*{c_1_235 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2_165)))))*{c_2_165 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1_27)*{c'_1_27 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2_27)*{c'_2_27 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1_28)))*{c'_1_28 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2_28)))*{c'_2_28 <- c'_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_237)))*{c_1_237 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2_167)))*{c_2_167 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1_30)*{c'_1_30 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2_30)*{c'_2_30 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_225))*{iter_225 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_226))*{iter_226 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_238)))))*{c_1_238 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2_168)))))*{c_2_168 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1_31)*{c'_1_31 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2_31)*{c'_2_31 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1_32)))*{c'_1_32 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2_32)))*{c'_2_32 <- c'_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_240)))*{c_1_240 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2_170)))*{c_2_170 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1_34)*{c'_1_34 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2_34)*{c'_2_34 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_227))*{iter_227 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_228))*{iter_228 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_241)))))*{c_1_241 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2_171)))))*{c_2_171 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1_35)*{c'_1_35 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2_35)*{c'_2_35 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1_36)))*{c'_1_36 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2_36)))*{c'_2_36 <- c'_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_243)))*{c_1_243 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2_173)))*{c_2_173 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1_38)*{c'_1_38 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2_38)*{c'_2_38 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_229))*{iter_229 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_230))*{iter_230 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_244)))))*{c_1_244 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2_174)))))*{c_2_174 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1_39)*{c'_1_39 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2_39)*{c'_2_39 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1_40)))*{c'_1_40 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2_40)))*{c'_2_40 <- c'_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_246)))*{c_1_246 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2_176)))*{c_2_176 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1_42)*{c'_1_42 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2_42)*{c'_2_42 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_231))*{iter_231 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_232))*{iter_232 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_247)))))*{c_1_247 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2_177)))))*{c_2_177 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1_43)*{c'_1_43 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2_43)*{c'_2_43 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1_44)))*{c'_1_44 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2_44)))*{c'_2_44 <- c'_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_249)))*{c_1_249 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2_179)))*{c_2_179 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1_46)*{c'_1_46 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2_46)*{c'_2_46 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_233))*{iter_233 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_234))*{iter_234 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_250)))))*{c_1_250 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2_180)))))*{c_2_180 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1_47)*{c'_1_47 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2_47)*{c'_2_47 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1_48)))*{c'_1_48 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2_48)))*{c'_2_48 <- c'_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_252)))*{c_1_252 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2_182)))*{c_2_182 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1_50)*{c'_1_50 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2_50)*{c'_2_50 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_235))*{iter_235 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_236))*{iter_236 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_253)))))*{c_1_253 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2_183)))))*{c_2_183 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1_51)*{c'_1_51 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2_51)*{c'_2_51 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1_52)))*{c'_1_52 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2_52)))*{c'_2_52 <- c'_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_255)))*{c_1_255 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2_185)))*{c_2_185 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1_54)*{c'_1_54 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2_54)*{c'_2_54 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_237))*{iter_237 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_238))*{iter_238 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_256)))))*{c_1_256 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2_186)))))*{c_2_186 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1_55)*{c'_1_55 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2_55)*{c'_2_55 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1_56)))*{c'_1_56 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2_56)))*{c'_2_56 <- c'_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_258)))*{c_1_258 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2_188)))*{c_2_188 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1_58)*{c'_1_58 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2_58)*{c'_2_58 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_239))*{iter_239 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_240))*{iter_240 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_259)))))*{c_1_259 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2_189)))))*{c_2_189 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1_59)*{c'_1_59 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2_59)*{c'_2_59 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1_60)))*{c'_1_60 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2_60)))*{c'_2_60 <- c'_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_261)))*{c_1_261 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2_191)))*{c_2_191 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1_62)*{c'_1_62 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2_62)*{c'_2_62 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_241))*{iter_241 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_242))*{iter_242 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_262)))))*{c_1_262 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2_192)))))*{c_2_192 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1_63)*{c'_1_63 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2_63)*{c'_2_63 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1_64)))*{c'_1_64 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2_64)))*{c'_2_64 <- c'_2_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_(v_N : N, var_0 : iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivadd_pairwise_{v_N : nat, i_lst : iN*, j_1_lst : N*, j_2_lst : N*}(v_N, i_lst) = $iadd_(v_N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- j_1_lst, j_2 <- j_2_lst} - -- if ($concat_(syntax N, [j_1#1 j_2#1]*{j_1#1 <- j_1_lst, j_2#1 <- j_2_lst}) = $proj_uN_0(i#139350).0*{i#139350 <- i_lst}) - -- (wf_uN: `%%`(v_N, `%`_uN(j_1#2)))*{j_1#2 <- j_1_lst} - -- (wf_uN: `%%`(v_N, `%`_uN(j_2#2)))*{j_2#2 <- j_2_lst} + def $ivadd_pairwise_{v_N : nat, i_lst : iN*, j_1_lst : N*, j_2_lst : N*}(v_N, i_lst) = $iadd_(v_N, mk_uN_iN(j_1), mk_uN_iN(j_2))*{j_1 <- j_1_lst, j_2 <- j_2_lst} + -- if ($concat_(syntax N, [j_1_1 j_2_1]*{j_1_1 <- j_1_lst, j_2_1 <- j_2_lst}) = $proj_uN_0(i_139345).0*{i_139345 <- i_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#293)*{c#293 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#180)))*{c_1#180 <- c_1_lst} + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c_213)*{c_213 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_264)))*{c_1_264 <- c_1_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#292)))*{c#292 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#296)*{c#296 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#182)))*{c_1#182 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_243))*{iter_243 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_265)))))*{c_1_265 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_244))*{iter_244 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c_215)*{c_215 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_267)))*{c_1_267 <- c_1_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#295)))*{c#295 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#299)*{c#299 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#184)))*{c_1#184 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_245))*{iter_245 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_268)))))*{c_1_268 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_246))*{iter_246 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c_217)*{c_217 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_270)))*{c_1_270 <- c_1_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#298)))*{c#298 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#302)*{c#302 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1#186)))*{c_1#186 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_247))*{iter_247 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_271)))))*{c_1_271 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_248))*{iter_248 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c_219)*{c_219 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_273)))*{c_1_273 <- c_1_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#301)))*{c#301 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#305)*{c#305 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#188)))*{c_1#188 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_249))*{iter_249 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_274)))))*{c_1_274 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_250))*{iter_250 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c_221)*{c_221 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_276)))*{c_1_276 <- c_1_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#304)))*{c#304 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#308)*{c#308 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#190)))*{c_1#190 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_251))*{iter_251 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_277)))))*{c_1_277 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_252))*{iter_252 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c_223)*{c_223 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_279)))*{c_1_279 <- c_1_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#307)))*{c#307 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#311)*{c#311 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#192)))*{c_1#192 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_253))*{iter_253 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_280)))))*{c_1_280 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_254))*{iter_254 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c_225)*{c_225 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_282)))*{c_1_282 <- c_1_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#310)))*{c#310 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#314)*{c#314 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1#194)))*{c_1#194 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_255))*{iter_255 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_283)))))*{c_1_283 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_256))*{iter_256 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c_227)*{c_227 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_285)))*{c_1_285 <- c_1_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#313)))*{c#313 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#317)*{c#317 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#196)))*{c_1#196 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_257))*{iter_257 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_286)))))*{c_1_286 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_258))*{iter_258 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c_229)*{c_229 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_288)))*{c_1_288 <- c_1_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#316)))*{c#316 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#320)*{c#320 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#198)))*{c_1#198 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_259))*{iter_259 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_289)))))*{c_1_289 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_260))*{iter_260 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c_231)*{c_231 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_291)))*{c_1_291 <- c_1_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#319)))*{c#319 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#323)*{c#323 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#200)))*{c_1#200 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_261))*{iter_261 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_292)))))*{c_1_292 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_262))*{iter_262 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c_233)*{c_233 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_294)))*{c_1_294 <- c_1_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#322)))*{c#322 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#326)*{c#326 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1#202)))*{c_1#202 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_263))*{iter_263 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_295)))))*{c_1_295 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_264))*{iter_264 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c_235)*{c_235 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_297)))*{c_1_297 <- c_1_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#325)))*{c#325 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#329)*{c#329 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#204)))*{c_1#204 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_265))*{iter_265 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_298)))))*{c_1_298 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_266))*{iter_266 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c_237)*{c_237 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_300)))*{c_1_300 <- c_1_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#328)))*{c#328 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#332)*{c#332 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#206)))*{c_1#206 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_267))*{iter_267 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_301)))))*{c_1_301 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_268))*{iter_268 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c_239)*{c_239 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_303)))*{c_1_303 <- c_1_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#331)))*{c#331 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#335)*{c#335 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#208)))*{c_1#208 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_269))*{iter_269 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_304)))))*{c_1_304 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_270))*{iter_270 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c_241)*{c_241 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_306)))*{c_1_306 <- c_1_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#334)))*{c#334 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#338)*{c#338 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1#210)))*{c_1#210 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_271))*{iter_271 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_307)))))*{c_1_307 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_272))*{iter_272 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c_243)*{c_243 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_309)))*{c_1_309 <- c_1_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#337)))*{c#337 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_273))*{iter_273 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_310)))))*{c_1_310 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_274))*{iter_274 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextunop__(ishape_1 : ishape, ishape_2 : ishape, v_vextunop__ : vextunop__, v_vec_ : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(v_N : N, var_0 : iN*, var_1 : iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_{v_N : nat, i_1_lst : iN*, i_2_lst : iN*, j_1_lst : iN*, j_2_lst : iN*}(v_N, i_1_lst, i_2_lst) = $iadd_(v_N, j_1, j_2)*{j_1 <- j_1_lst, j_2 <- j_2_lst} - -- if ($concat_(syntax iN, [j_1#3 j_2#3]*{j_1#3 <- j_1_lst, j_2#3 <- j_2_lst}) = $imul_(v_N, i_1#2, i_2#2)*{i_1#2 <- i_1_lst, i_2#2 <- i_2_lst}) - -- (wf_uN: `%%`(v_N, j_1#4))*{j_1#4 <- j_1_lst} - -- (wf_uN: `%%`(v_N, j_2#4))*{j_2#4 <- j_2_lst} + -- if ($concat_(syntax iN, [j_1_2 j_2_2]*{j_1_2 <- j_1_lst, j_2_2 <- j_2_lst}) = $imul_(v_N, i_1_2, i_2_2)*{i_1_2 <- i_1_lst, i_2_2 <- i_2_lst}) + -- (wf_uN: `%%`(v_N, iter_275))*{iter_275 <- $concat_(syntax iN, [j_1_3 j_2_3]*{j_1_3 <- j_1_lst, j_2_3 <- j_2_lst})} + -- (wf_uN: `%%`(v_N, $imul_(v_N, i_1_3, i_2_3)))*{i_1_3 <- i_1_lst, i_2_3 <- i_2_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_(v_N : N, var_0 : iN*, var_1 : iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_sat_{v_N : nat, i_1_lst : iN*, i_2_lst : iN*, j_1_lst : iN*, j_2_lst : iN*}(v_N, i_1_lst, i_2_lst) = $iadd_sat_(v_N, S_sx, j_1, j_2)*{j_1 <- j_1_lst, j_2 <- j_2_lst} - -- if ($concat_(syntax iN, [j_1#5 j_2#5]*{j_1#5 <- j_1_lst, j_2#5 <- j_2_lst}) = $imul_(v_N, i_1#4, i_2#4)*{i_1#4 <- i_1_lst, i_2#4 <- i_2_lst}) - -- (wf_uN: `%%`(v_N, j_1#6))*{j_1#6 <- j_1_lst} - -- (wf_uN: `%%`(v_N, j_2#6))*{j_2#6 <- j_2_lst} + -- if ($concat_(syntax iN, [j_1_4 j_2_4]*{j_1_4 <- j_1_lst, j_2_4 <- j_2_lst}) = $imul_(v_N, i_1_5, i_2_5)*{i_1_5 <- i_1_lst, i_2_5 <- i_2_lst}) + -- (wf_uN: `%%`(v_N, iter_276))*{iter_276 <- $concat_(syntax iN, [j_1_5 j_2_5]*{j_1_5 <- j_1_lst, j_2_5 <- j_2_lst})} + -- (wf_uN: `%%`(v_N, $imul_(v_N, i_1_6, i_2_6)))*{i_1_6 <- i_1_lst, i_2_6 <- i_2_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : iN*, v_sx : sx, v_sx_0 : sx, v_laneidx : laneidx, v_laneidx_0 : laneidx, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#341)*{c#341 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#212)))*{c_1#212 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#132)))*{c_2#132 <- c_2_lst} + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c_245)*{c_245 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1_312)))*{c_1_312 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2_194)))*{c_2_194 <- c_2_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#340)))*{c#340 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#344)*{c#344 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#214)))*{c_1#214 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#134)))*{c_2#134 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_277))*{iter_277 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_278))*{iter_278 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1_313)))))*{c_1_313 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2_195)))))*{c_2_195 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_279))*{iter_279 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c_247)*{c_247 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1_315)))*{c_1_315 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2_197)))*{c_2_197 <- c_2_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#343)))*{c#343 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#347)*{c#347 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#216)))*{c_1#216 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#136)))*{c_2#136 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_280))*{iter_280 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_281))*{iter_281 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1_316)))))*{c_1_316 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2_198)))))*{c_2_198 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_282))*{iter_282 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c_249)*{c_249 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1_318)))*{c_1_318 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2_200)))*{c_2_200 <- c_2_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#346)))*{c#346 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#350)*{c#350 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#218)))*{c_1#218 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#138)))*{c_2#138 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_283))*{iter_283 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_284))*{iter_284 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1_319)))))*{c_1_319 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2_201)))))*{c_2_201 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_285))*{iter_285 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c_251)*{c_251 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1_321)))*{c_1_321 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2_203)))*{c_2_203 <- c_2_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c#349)))*{c#349 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#353)*{c#353 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#220)))*{c_1#220 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#140)))*{c_2#140 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_286))*{iter_286 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_287))*{iter_287 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1_322)))))*{c_1_322 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2_204)))))*{c_2_204 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_288))*{iter_288 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c_253)*{c_253 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1_324)))*{c_1_324 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2_206)))*{c_2_206 <- c_2_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#352)))*{c#352 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#356)*{c#356 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#222)))*{c_1#222 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#142)))*{c_2#142 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_289))*{iter_289 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_290))*{iter_290 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1_325)))))*{c_1_325 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2_207)))))*{c_2_207 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_291))*{iter_291 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c_255)*{c_255 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1_327)))*{c_1_327 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2_209)))*{c_2_209 <- c_2_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#355)))*{c#355 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#359)*{c#359 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#224)))*{c_1#224 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#144)))*{c_2#144 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_292))*{iter_292 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_293))*{iter_293 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1_328)))))*{c_1_328 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2_210)))))*{c_2_210 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_294))*{iter_294 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c_257)*{c_257 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1_330)))*{c_1_330 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2_212)))*{c_2_212 <- c_2_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#358)))*{c#358 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#362)*{c#362 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#226)))*{c_1#226 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#146)))*{c_2#146 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_295))*{iter_295 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_296))*{iter_296 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1_331)))))*{c_1_331 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2_213)))))*{c_2_213 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_297))*{iter_297 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c_259)*{c_259 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1_333)))*{c_1_333 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2_215)))*{c_2_215 <- c_2_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c#361)))*{c#361 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#365)*{c#365 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#228)))*{c_1#228 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#148)))*{c_2#148 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_298))*{iter_298 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_299))*{iter_299 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1_334)))))*{c_1_334 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2_216)))))*{c_2_216 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_300))*{iter_300 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c_261)*{c_261 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1_336)))*{c_1_336 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2_218)))*{c_2_218 <- c_2_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#364)))*{c#364 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#368)*{c#368 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#230)))*{c_1#230 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#150)))*{c_2#150 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_301))*{iter_301 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_302))*{iter_302 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1_337)))))*{c_1_337 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2_219)))))*{c_2_219 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_303))*{iter_303 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c_263)*{c_263 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1_339)))*{c_1_339 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2_221)))*{c_2_221 <- c_2_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#367)))*{c#367 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#371)*{c#371 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#232)))*{c_1#232 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#152)))*{c_2#152 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_304))*{iter_304 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_305))*{iter_305 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1_340)))))*{c_1_340 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2_222)))))*{c_2_222 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_306))*{iter_306 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c_265)*{c_265 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1_342)))*{c_1_342 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2_224)))*{c_2_224 <- c_2_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#370)))*{c#370 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#374)*{c#374 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#234)))*{c_1#234 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#154)))*{c_2#154 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_307))*{iter_307 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_308))*{iter_308 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1_343)))))*{c_1_343 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2_225)))))*{c_2_225 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_309))*{iter_309 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c_267)*{c_267 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1_345)))*{c_1_345 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2_227)))*{c_2_227 <- c_2_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c#373)))*{c#373 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#377)*{c#377 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#236)))*{c_1#236 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#156)))*{c_2#156 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_310))*{iter_310 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_311))*{iter_311 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1_346)))))*{c_1_346 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2_228)))))*{c_2_228 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_312))*{iter_312 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c_269)*{c_269 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1_348)))*{c_1_348 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2_230)))*{c_2_230 <- c_2_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#376)))*{c#376 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#380)*{c#380 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#238)))*{c_1#238 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#158)))*{c_2#158 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_313))*{iter_313 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_314))*{iter_314 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1_349)))))*{c_1_349 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2_231)))))*{c_2_231 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_315))*{iter_315 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c_271)*{c_271 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1_351)))*{c_1_351 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2_233)))*{c_2_233 <- c_2_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#379)))*{c#379 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#383)*{c#383 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#240)))*{c_1#240 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#160)))*{c_2#160 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_316))*{iter_316 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_317))*{iter_317 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1_352)))))*{c_1_352 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2_234)))))*{c_2_234 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_318))*{iter_318 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c_273)*{c_273 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1_354)))*{c_1_354 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2_236)))*{c_2_236 <- c_2_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#382)))*{c#382 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#386)*{c#386 <- c_lst}) - -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] - -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#242)))*{c_1#242 <- c_1_lst} - -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#162)))*{c_2#162 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_319))*{iter_319 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_320))*{iter_320 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1_355)))))*{c_1_355 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2_237)))))*{c_2_237 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_321))*{iter_321 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c_275)*{c_275 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1_357)))*{c_1_357 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2_239)))*{c_2_239 <- c_2_lst} -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c#385)))*{c#385 <- c_lst} - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_322))*{iter_322 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_323))*{iter_323 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1_358)))))*{c_1_358 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2_240)))))*{c_2_240 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_324))*{iter_324 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivmul_(v_N : N, var_0 : iN*, var_1 : iN*) : iN* @@ -10888,536 +11718,376 @@ def $ivmul_(v_N : N, var_0 : iN*, var_1 : iN*) : iN* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextbinop__(ishape_1 : ishape, ishape_2 : ishape, v_vextbinop__ : vextbinop__, v_vec_ : vec_, v_vec__0 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, v_sx, v_sx, `%`_laneidx($fun_half(v_half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($fun_half(v_half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vextternop__, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- let{v_M : M} v_M = (2 * M_2) - -- let{c' : vec_} c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) - -- let{c'' : vec_} c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- let{c' : vec_} c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter_325))*{iter_325 <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- let{v_M : M} v_M = (2 * M_2) - -- let{c' : vec_} c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) - -- let{c'' : vec_} c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- let{c' : vec_} c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter_326))*{iter_326 <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- let{v_M : M} v_M = (2 * M_2) - -- let{c' : vec_} c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) - -- let{c'' : vec_} c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- let{c' : vec_} c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter_327))*{iter_327 <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- let{v_M : M} v_M = (2 * M_2) - -- let{c' : vec_} c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) - -- let{c'' : vec_} c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- let{c' : vec_} c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter_328))*{iter_328 <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- let{v_M : M} v_M = (2 * M_2) - -- let{c' : vec_} c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) - -- let{c'' : vec_} c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- let{c' : vec_} c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter_329))*{iter_329 <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- let{v_M : M} v_M = (2 * M_2) - -- let{c' : vec_} c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) - -- let{c'' : vec_} c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- let{c' : vec_} c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter_330))*{iter_330 <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- let{v_M : M} v_M = (2 * M_2) - -- let{c' : vec_} c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) - -- let{c'' : vec_} c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- let{c' : vec_} c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter_331))*{iter_331 <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- let{v_M : M} v_M = (2 * M_2) - -- let{c' : vec_} c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) - -- let{c'' : vec_} c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- let{c' : vec_} c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter_332))*{iter_332 <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- let{v_M : M} v_M = (2 * M_2) - -- let{c' : vec_} c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) - -- let{c'' : vec_} c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- let{c' : vec_} c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter_333))*{iter_333 <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- let{v_M : M} v_M = (2 * M_2) - -- let{c' : vec_} c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) - -- let{c'' : vec_} c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- let{c' : vec_} c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter_334))*{iter_334 <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- let{v_M : M} v_M = (2 * M_2) - -- let{c' : vec_} c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) - -- let{c'' : vec_} c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- let{c' : vec_} c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter_335))*{iter_335 <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- let{v_M : M} v_M = (2 * M_2) - -- let{c' : vec_} c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) - -- let{c'' : vec_} c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- let{c' : vec_} c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter_336))*{iter_336 <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) -- let{v_M : M} v_M = (2 * M_2) - -- let{c' : vec_} c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) - -- let{c'' : vec_} c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- let{c' : vec_} c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter_337))*{iter_337 <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) -- let{v_M : M} v_M = (2 * M_2) - -- let{c' : vec_} c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) - -- let{c'' : vec_} c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- let{c' : vec_} c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter_338))*{iter_338 <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) -- let{v_M : M} v_M = (2 * M_2) - -- let{c' : vec_} c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) - -- let{c'' : vec_} c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- let{c' : vec_} c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter_339))*{iter_339 <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) -- let{v_M : M} v_M = (2 * M_2) - -- let{c' : vec_} c' = $fun_vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) - -- let{c'' : vec_} c'' = $fun_vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -- wf_uN: `%%`(128, c) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- let{c' : vec_} c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter_340))*{iter_340 <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax num = @@ -11450,7 +12120,7 @@ relation wf_vec: `%`(vec) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax result = | _VALS(val_lst : val*) - | `(REF.EXN_ADDR%)THROW_REF`(v_exnaddr : exnaddr) + | `(REF_EXN_ADDR%)THROW_REF`(v_exnaddr : exnaddr) | TRAP ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -11462,7 +12132,7 @@ relation wf_result: `%`(result) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule result_case_1{v_exnaddr : exnaddr}: - `%`(`(REF.EXN_ADDR%)THROW_REF`_result(v_exnaddr)) + `%`(`(REF_EXN_ADDR%)THROW_REF`_result(v_exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule result_case_2: @@ -11470,12 +12140,12 @@ relation wf_result: `%`(result) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax hostfunc = - | `...` + | mk_hostfunc ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax funccode = | FUNC(v_typeidx : typeidx, local_lst : local*, v_expr : expr) - | `...` + | mk_funccode def $funccode_func(var_0 : func) : funccode def $funccode_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_funccode(x0, x1, x2) @@ -11491,7 +12161,7 @@ relation wf_funccode: `%`(funccode) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule funccode_case_1: - `%`(`...`_funccode) + `%`(mk_funccode_funccode) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax taginst = @@ -11610,40 +12280,40 @@ relation wf_packval: `%`(packval) syntax fieldval = | CONST(v_numtype : numtype, num_) | VCONST(v_vectype : vectype, vec_) - | `REF.I31_NUM`(v_u31 : u31) - | `REF.NULL_ADDR` - | `REF.STRUCT_ADDR`(v_structaddr : structaddr) - | `REF.ARRAY_ADDR`(v_arrayaddr : arrayaddr) - | `REF.FUNC_ADDR`(v_funcaddr : funcaddr) - | `REF.EXN_ADDR`(v_exnaddr : exnaddr) - | `REF.HOST_ADDR`(v_hostaddr : hostaddr) - | `REF.EXTERN`(v_ref : ref) + | REF_I31_NUM(v_u31 : u31) + | REF_NULL_ADDR + | REF_STRUCT_ADDR(v_structaddr : structaddr) + | REF_ARRAY_ADDR(v_arrayaddr : arrayaddr) + | REF_FUNC_ADDR(v_funcaddr : funcaddr) + | REF_EXN_ADDR(v_exnaddr : exnaddr) + | REF_HOST_ADDR(v_hostaddr : hostaddr) + | REF_EXTERN(v_ref : ref) | PACK(v_packtype : packtype, iN) def $fieldval_packval(var_0 : packval) : fieldval def $fieldval_packval{x0 : packtype, x1 : iN}(PACK_packval(x0, x1)) = PACK_fieldval(x0, x1) def $fieldval_ref(var_0 : ref) : fieldval - def $fieldval_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_fieldval(x0) - def $fieldval_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_fieldval - def $fieldval_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_fieldval(x0) - def $fieldval_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_fieldval(x0) - def $fieldval_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_fieldval(x0) - def $fieldval_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_fieldval(x0) - def $fieldval_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_fieldval(x0) - def $fieldval_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_fieldval(x0) + def $fieldval_ref{x0 : u31}(REF_I31_NUM_ref(x0)) = REF_I31_NUM_fieldval(x0) + def $fieldval_ref(REF_NULL_ADDR_ref) = REF_NULL_ADDR_fieldval + def $fieldval_ref{x0 : structaddr}(REF_STRUCT_ADDR_ref(x0)) = REF_STRUCT_ADDR_fieldval(x0) + def $fieldval_ref{x0 : arrayaddr}(REF_ARRAY_ADDR_ref(x0)) = REF_ARRAY_ADDR_fieldval(x0) + def $fieldval_ref{x0 : funcaddr}(REF_FUNC_ADDR_ref(x0)) = REF_FUNC_ADDR_fieldval(x0) + def $fieldval_ref{x0 : exnaddr}(REF_EXN_ADDR_ref(x0)) = REF_EXN_ADDR_fieldval(x0) + def $fieldval_ref{x0 : hostaddr}(REF_HOST_ADDR_ref(x0)) = REF_HOST_ADDR_fieldval(x0) + def $fieldval_ref{x0 : ref}(REF_EXTERN_ref(x0)) = REF_EXTERN_fieldval(x0) def $fieldval_val(var_0 : val) : fieldval def $fieldval_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_fieldval(x0, x1) def $fieldval_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_fieldval(x0, x1) - def $fieldval_val{x0 : u31}(`REF.I31_NUM`_val(x0)) = `REF.I31_NUM`_fieldval(x0) - def $fieldval_val(`REF.NULL_ADDR`_val) = `REF.NULL_ADDR`_fieldval - def $fieldval_val{x0 : structaddr}(`REF.STRUCT_ADDR`_val(x0)) = `REF.STRUCT_ADDR`_fieldval(x0) - def $fieldval_val{x0 : arrayaddr}(`REF.ARRAY_ADDR`_val(x0)) = `REF.ARRAY_ADDR`_fieldval(x0) - def $fieldval_val{x0 : funcaddr}(`REF.FUNC_ADDR`_val(x0)) = `REF.FUNC_ADDR`_fieldval(x0) - def $fieldval_val{x0 : exnaddr}(`REF.EXN_ADDR`_val(x0)) = `REF.EXN_ADDR`_fieldval(x0) - def $fieldval_val{x0 : hostaddr}(`REF.HOST_ADDR`_val(x0)) = `REF.HOST_ADDR`_fieldval(x0) - def $fieldval_val{x0 : ref}(`REF.EXTERN`_val(x0)) = `REF.EXTERN`_fieldval(x0) + def $fieldval_val{x0 : u31}(REF_I31_NUM_val(x0)) = REF_I31_NUM_fieldval(x0) + def $fieldval_val(REF_NULL_ADDR_val) = REF_NULL_ADDR_fieldval + def $fieldval_val{x0 : structaddr}(REF_STRUCT_ADDR_val(x0)) = REF_STRUCT_ADDR_fieldval(x0) + def $fieldval_val{x0 : arrayaddr}(REF_ARRAY_ADDR_val(x0)) = REF_ARRAY_ADDR_fieldval(x0) + def $fieldval_val{x0 : funcaddr}(REF_FUNC_ADDR_val(x0)) = REF_FUNC_ADDR_fieldval(x0) + def $fieldval_val{x0 : exnaddr}(REF_EXN_ADDR_val(x0)) = REF_EXN_ADDR_fieldval(x0) + def $fieldval_val{x0 : hostaddr}(REF_HOST_ADDR_val(x0)) = REF_HOST_ADDR_fieldval(x0) + def $fieldval_val{x0 : ref}(REF_EXTERN_val(x0)) = REF_EXTERN_fieldval(x0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec relation wf_fieldval: `%`(fieldval) @@ -11659,36 +12329,36 @@ relation wf_fieldval: `%`(fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fieldval_case_2{v_u31 : u31}: - `%`(`REF.I31_NUM`_fieldval(v_u31)) + `%`(REF_I31_NUM_fieldval(v_u31)) -- wf_uN: `%%`(31, v_u31) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fieldval_case_3: - `%`(`REF.NULL_ADDR`_fieldval) + `%`(REF_NULL_ADDR_fieldval) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fieldval_case_4{v_structaddr : structaddr}: - `%`(`REF.STRUCT_ADDR`_fieldval(v_structaddr)) + `%`(REF_STRUCT_ADDR_fieldval(v_structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fieldval_case_5{v_arrayaddr : arrayaddr}: - `%`(`REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) + `%`(REF_ARRAY_ADDR_fieldval(v_arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fieldval_case_6{v_funcaddr : funcaddr}: - `%`(`REF.FUNC_ADDR`_fieldval(v_funcaddr)) + `%`(REF_FUNC_ADDR_fieldval(v_funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fieldval_case_7{v_exnaddr : exnaddr}: - `%`(`REF.EXN_ADDR`_fieldval(v_exnaddr)) + `%`(REF_EXN_ADDR_fieldval(v_exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fieldval_case_8{v_hostaddr : hostaddr}: - `%`(`REF.HOST_ADDR`_fieldval(v_hostaddr)) + `%`(REF_HOST_ADDR_fieldval(v_hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule fieldval_case_9{v_ref : ref}: - `%`(`REF.EXTERN`_fieldval(v_ref)) + `%`(REF_EXTERN_fieldval(v_ref)) -- wf_ref: `%`(v_ref) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -11771,25 +12441,25 @@ relation wf_store: `%`(store) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax state = - | `%;%`(v_store : store, v_frame : frame) + | mk_state(v_store : store, v_frame : frame) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec relation wf_state: `%`(state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule state_case_0{v_store : store, v_frame : frame}: - `%`(`%;%`_state(v_store, v_frame)) + `%`(mk_state_state(v_store, v_frame)) -- wf_store: `%`(v_store) -- wf_frame: `%`(v_frame) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax config = - | `%;%`(v_state : state, instr_lst : instr*) + | mk_config(v_state : state, instr_lst : instr*) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec relation wf_config: `%`(config) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rule config_case_0{v_state : state, instr_lst : instr*}: - `%`(`%;%`_config(v_state, instr_lst)) + `%`(mk_config_config(v_state, instr_lst)) -- wf_state: `%`(v_state) -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} @@ -11816,127 +12486,136 @@ def $packfield_(v_storagetype : storagetype, v_val : val) : fieldval? def $packfield_{v_val : val}(I32_storagetype, v_val) = ?($fieldval_val(v_val)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) - -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation packfield__is_wf: `%%%`(v_storagetype : storagetype, v_val : val, ret_val : fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packfield__is_wf0{v_storagetype : storagetype, v_val : val, ret_val : fieldval}: + `%%%`(v_storagetype, v_val, ret_val) + -- wf_storagetype: `%`(v_storagetype) + -- wf_val: `%`(v_val) + -- if ($packfield_(v_storagetype, v_val) =/= ?()) + -- if (ret_val = !($packfield_(v_storagetype, v_val))) + -- wf_fieldval: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_(v_storagetype : storagetype, var_0 : sx?, v_fieldval : fieldval) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_ref : ref}(BOT_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) = ?(`REF.EXTERN`_val(v_ref)) + def $unpackfield_{v_ref : ref}(BOT_storagetype, ?(), REF_EXTERN_fieldval(v_ref)) = ?(REF_EXTERN_val(v_ref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_ref : ref, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), `REF.EXTERN`_fieldval(v_ref)) = ?(`REF.EXTERN`_val(v_ref)) + def $unpackfield_{v_ref : ref, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_EXTERN_fieldval(v_ref)) = ?(REF_EXTERN_val(v_ref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_ref : ref}(V128_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) = ?(`REF.EXTERN`_val(v_ref)) + def $unpackfield_{v_ref : ref}(V128_storagetype, ?(), REF_EXTERN_fieldval(v_ref)) = ?(REF_EXTERN_val(v_ref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_ref : ref}(F64_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) = ?(`REF.EXTERN`_val(v_ref)) + def $unpackfield_{v_ref : ref}(F64_storagetype, ?(), REF_EXTERN_fieldval(v_ref)) = ?(REF_EXTERN_val(v_ref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_ref : ref}(F32_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) = ?(`REF.EXTERN`_val(v_ref)) + def $unpackfield_{v_ref : ref}(F32_storagetype, ?(), REF_EXTERN_fieldval(v_ref)) = ?(REF_EXTERN_val(v_ref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_ref : ref}(I64_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) = ?(`REF.EXTERN`_val(v_ref)) + def $unpackfield_{v_ref : ref}(I64_storagetype, ?(), REF_EXTERN_fieldval(v_ref)) = ?(REF_EXTERN_val(v_ref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_ref : ref}(I32_storagetype, ?(), `REF.EXTERN`_fieldval(v_ref)) = ?(`REF.EXTERN`_val(v_ref)) + def $unpackfield_{v_ref : ref}(I32_storagetype, ?(), REF_EXTERN_fieldval(v_ref)) = ?(REF_EXTERN_val(v_ref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(BOT_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) = ?(`REF.HOST_ADDR`_val(v_hostaddr)) + def $unpackfield_{v_hostaddr : hostaddr}(BOT_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = ?(REF_HOST_ADDR_val(v_hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) = ?(`REF.HOST_ADDR`_val(v_hostaddr)) + def $unpackfield_{v_hostaddr : hostaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = ?(REF_HOST_ADDR_val(v_hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(V128_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) = ?(`REF.HOST_ADDR`_val(v_hostaddr)) + def $unpackfield_{v_hostaddr : hostaddr}(V128_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = ?(REF_HOST_ADDR_val(v_hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(F64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) = ?(`REF.HOST_ADDR`_val(v_hostaddr)) + def $unpackfield_{v_hostaddr : hostaddr}(F64_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = ?(REF_HOST_ADDR_val(v_hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(F32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) = ?(`REF.HOST_ADDR`_val(v_hostaddr)) + def $unpackfield_{v_hostaddr : hostaddr}(F32_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = ?(REF_HOST_ADDR_val(v_hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(I64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) = ?(`REF.HOST_ADDR`_val(v_hostaddr)) + def $unpackfield_{v_hostaddr : hostaddr}(I64_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = ?(REF_HOST_ADDR_val(v_hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(I32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(v_hostaddr)) = ?(`REF.HOST_ADDR`_val(v_hostaddr)) + def $unpackfield_{v_hostaddr : hostaddr}(I32_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = ?(REF_HOST_ADDR_val(v_hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(BOT_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) = ?(`REF.EXN_ADDR`_val(v_exnaddr)) + def $unpackfield_{v_exnaddr : exnaddr}(BOT_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = ?(REF_EXN_ADDR_val(v_exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) = ?(`REF.EXN_ADDR`_val(v_exnaddr)) + def $unpackfield_{v_exnaddr : exnaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = ?(REF_EXN_ADDR_val(v_exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(V128_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) = ?(`REF.EXN_ADDR`_val(v_exnaddr)) + def $unpackfield_{v_exnaddr : exnaddr}(V128_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = ?(REF_EXN_ADDR_val(v_exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(F64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) = ?(`REF.EXN_ADDR`_val(v_exnaddr)) + def $unpackfield_{v_exnaddr : exnaddr}(F64_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = ?(REF_EXN_ADDR_val(v_exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(F32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) = ?(`REF.EXN_ADDR`_val(v_exnaddr)) + def $unpackfield_{v_exnaddr : exnaddr}(F32_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = ?(REF_EXN_ADDR_val(v_exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(I64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) = ?(`REF.EXN_ADDR`_val(v_exnaddr)) + def $unpackfield_{v_exnaddr : exnaddr}(I64_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = ?(REF_EXN_ADDR_val(v_exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(I32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(v_exnaddr)) = ?(`REF.EXN_ADDR`_val(v_exnaddr)) + def $unpackfield_{v_exnaddr : exnaddr}(I32_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = ?(REF_EXN_ADDR_val(v_exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(BOT_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) = ?(`REF.FUNC_ADDR`_val(v_funcaddr)) + def $unpackfield_{v_funcaddr : funcaddr}(BOT_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = ?(REF_FUNC_ADDR_val(v_funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) = ?(`REF.FUNC_ADDR`_val(v_funcaddr)) + def $unpackfield_{v_funcaddr : funcaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = ?(REF_FUNC_ADDR_val(v_funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(V128_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) = ?(`REF.FUNC_ADDR`_val(v_funcaddr)) + def $unpackfield_{v_funcaddr : funcaddr}(V128_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = ?(REF_FUNC_ADDR_val(v_funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(F64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) = ?(`REF.FUNC_ADDR`_val(v_funcaddr)) + def $unpackfield_{v_funcaddr : funcaddr}(F64_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = ?(REF_FUNC_ADDR_val(v_funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(F32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) = ?(`REF.FUNC_ADDR`_val(v_funcaddr)) + def $unpackfield_{v_funcaddr : funcaddr}(F32_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = ?(REF_FUNC_ADDR_val(v_funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(I64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) = ?(`REF.FUNC_ADDR`_val(v_funcaddr)) + def $unpackfield_{v_funcaddr : funcaddr}(I64_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = ?(REF_FUNC_ADDR_val(v_funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(I32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(v_funcaddr)) = ?(`REF.FUNC_ADDR`_val(v_funcaddr)) + def $unpackfield_{v_funcaddr : funcaddr}(I32_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = ?(REF_FUNC_ADDR_val(v_funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(BOT_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(v_arrayaddr)) + def $unpackfield_{v_arrayaddr : arrayaddr}(BOT_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = ?(REF_ARRAY_ADDR_val(v_arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(v_arrayaddr)) + def $unpackfield_{v_arrayaddr : arrayaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = ?(REF_ARRAY_ADDR_val(v_arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(V128_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(v_arrayaddr)) + def $unpackfield_{v_arrayaddr : arrayaddr}(V128_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = ?(REF_ARRAY_ADDR_val(v_arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(F64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(v_arrayaddr)) + def $unpackfield_{v_arrayaddr : arrayaddr}(F64_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = ?(REF_ARRAY_ADDR_val(v_arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(F32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(v_arrayaddr)) + def $unpackfield_{v_arrayaddr : arrayaddr}(F32_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = ?(REF_ARRAY_ADDR_val(v_arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(I64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(v_arrayaddr)) + def $unpackfield_{v_arrayaddr : arrayaddr}(I64_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = ?(REF_ARRAY_ADDR_val(v_arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(I32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(v_arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(v_arrayaddr)) + def $unpackfield_{v_arrayaddr : arrayaddr}(I32_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = ?(REF_ARRAY_ADDR_val(v_arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(BOT_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) = ?(`REF.STRUCT_ADDR`_val(v_structaddr)) + def $unpackfield_{v_structaddr : structaddr}(BOT_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = ?(REF_STRUCT_ADDR_val(v_structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) = ?(`REF.STRUCT_ADDR`_val(v_structaddr)) + def $unpackfield_{v_structaddr : structaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = ?(REF_STRUCT_ADDR_val(v_structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(V128_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) = ?(`REF.STRUCT_ADDR`_val(v_structaddr)) + def $unpackfield_{v_structaddr : structaddr}(V128_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = ?(REF_STRUCT_ADDR_val(v_structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(F64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) = ?(`REF.STRUCT_ADDR`_val(v_structaddr)) + def $unpackfield_{v_structaddr : structaddr}(F64_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = ?(REF_STRUCT_ADDR_val(v_structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(F32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) = ?(`REF.STRUCT_ADDR`_val(v_structaddr)) + def $unpackfield_{v_structaddr : structaddr}(F32_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = ?(REF_STRUCT_ADDR_val(v_structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(I64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) = ?(`REF.STRUCT_ADDR`_val(v_structaddr)) + def $unpackfield_{v_structaddr : structaddr}(I64_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = ?(REF_STRUCT_ADDR_val(v_structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(I32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(v_structaddr)) = ?(`REF.STRUCT_ADDR`_val(v_structaddr)) + def $unpackfield_{v_structaddr : structaddr}(I32_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = ?(REF_STRUCT_ADDR_val(v_structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(BOT_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + def $unpackfield_(BOT_storagetype, ?(), REF_NULL_ADDR_fieldval) = ?(REF_NULL_ADDR_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + def $unpackfield_{null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_NULL_ADDR_fieldval) = ?(REF_NULL_ADDR_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(V128_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + def $unpackfield_(V128_storagetype, ?(), REF_NULL_ADDR_fieldval) = ?(REF_NULL_ADDR_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(F64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + def $unpackfield_(F64_storagetype, ?(), REF_NULL_ADDR_fieldval) = ?(REF_NULL_ADDR_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(F32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + def $unpackfield_(F32_storagetype, ?(), REF_NULL_ADDR_fieldval) = ?(REF_NULL_ADDR_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(I64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + def $unpackfield_(I64_storagetype, ?(), REF_NULL_ADDR_fieldval) = ?(REF_NULL_ADDR_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_(I32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + def $unpackfield_(I32_storagetype, ?(), REF_NULL_ADDR_fieldval) = ?(REF_NULL_ADDR_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(BOT_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) = ?(`REF.I31_NUM`_val(v_u31)) + def $unpackfield_{v_u31 : u31}(BOT_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = ?(REF_I31_NUM_val(v_u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), `REF.I31_NUM`_fieldval(v_u31)) = ?(`REF.I31_NUM`_val(v_u31)) + def $unpackfield_{v_u31 : u31, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_I31_NUM_fieldval(v_u31)) = ?(REF_I31_NUM_val(v_u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(V128_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) = ?(`REF.I31_NUM`_val(v_u31)) + def $unpackfield_{v_u31 : u31}(V128_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = ?(REF_I31_NUM_val(v_u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(F64_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) = ?(`REF.I31_NUM`_val(v_u31)) + def $unpackfield_{v_u31 : u31}(F64_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = ?(REF_I31_NUM_val(v_u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(F32_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) = ?(`REF.I31_NUM`_val(v_u31)) + def $unpackfield_{v_u31 : u31}(F32_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = ?(REF_I31_NUM_val(v_u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(I64_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) = ?(`REF.I31_NUM`_val(v_u31)) + def $unpackfield_{v_u31 : u31}(I64_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = ?(REF_I31_NUM_val(v_u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(I32_storagetype, ?(), `REF.I31_NUM`_fieldval(v_u31)) = ?(`REF.I31_NUM`_val(v_u31)) + def $unpackfield_{v_u31 : u31}(I32_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = ?(REF_I31_NUM_val(v_u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{v_vectype : vectype, var_1 : vec_}(BOT_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) = ?(VCONST_val(v_vectype, var_1)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -11967,13 +12646,22 @@ def $unpackfield_(v_storagetype : storagetype, var_0 : sx?, v_fieldval : fieldva def $unpackfield_{v_numtype : numtype, var_0 : num_}(I32_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) = ?(CONST_val(v_numtype, var_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{v_sx : sx, i : uN}(I8_storagetype, ?(v_sx), PACK_fieldval(I8_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, v_sx, i)))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, v_sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $unpackfield_{v_sx : sx, i : uN}(I16_storagetype, ?(v_sx), PACK_fieldval(I16_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, v_sx, i)))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, v_sx, i)))) def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation unpackfield__is_wf: `%%%%`(v_storagetype : storagetype, var_0 : sx?, v_fieldval : fieldval, ret_val : val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule unpackfield__is_wf0{v_storagetype : storagetype, var_0 : sx?, v_fieldval : fieldval, ret_val : val}: + `%%%%`(v_storagetype, var_0, v_fieldval, ret_val) + -- wf_storagetype: `%`(v_storagetype) + -- wf_fieldval: `%`(v_fieldval) + -- if ($unpackfield_(v_storagetype, var_0, v_fieldval) =/= ?()) + -- if (ret_val = !($unpackfield_(v_storagetype, var_0, v_fieldval))) + -- wf_val: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -12042,78 +12730,204 @@ def $funcsxa(var_0 : externaddr*) : funcaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_store(v_state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $fun_store{s : store, f : frame}(`%;%`_state(s, f)) = s + def $fun_store{s : store, f : frame}(mk_state_state(s, f)) = s + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation store_is_wf: `%%`(v_state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_is_wf0{v_state : state, ret_val : store}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_store(v_state)) + -- wf_store: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_frame(v_state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $fun_frame{s : store, f : frame}(`%;%`_state(s, f)) = f + def $fun_frame{s : store, f : frame}(mk_state_state(s, f)) = f + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation frame_is_wf: `%%`(v_state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_is_wf0{v_state : state, ret_val : frame}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_frame(v_state)) + -- wf_frame: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_tagaddr(v_state : state) : tagaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $fun_tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst + def $fun_tagaddr{s : store, f : frame}(mk_state_state(s, f)) = f.MODULE_frame.TAGS_moduleinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_moduleinst(v_state : state) : moduleinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $fun_moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame + def $fun_moduleinst{s : store, f : frame}(mk_state_state(s, f)) = f.MODULE_frame + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation moduleinst_is_wf: `%%`(v_state : state, ret_val : moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_is_wf0{v_state : state, ret_val : moduleinst}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_moduleinst(v_state)) + -- wf_moduleinst: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_taginst(v_state : state) : taginst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $fun_taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store + def $fun_taginst{s : store, f : frame}(mk_state_state(s, f)) = s.TAGS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation taginst_is_wf: `%%`(v_state : state, ret_val : taginst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_is_wf0{v_state : state, ret_val : taginst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_taginst(v_state)) + -- (wf_taginst: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_globalinst(v_state : state) : globalinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $fun_globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store + def $fun_globalinst{s : store, f : frame}(mk_state_state(s, f)) = s.GLOBALS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation globalinst_is_wf: `%%`(v_state : state, ret_val : globalinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_is_wf0{v_state : state, ret_val : globalinst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_globalinst(v_state)) + -- (wf_globalinst: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_meminst(v_state : state) : meminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $fun_meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store + def $fun_meminst{s : store, f : frame}(mk_state_state(s, f)) = s.MEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation meminst_is_wf: `%%`(v_state : state, ret_val : meminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_is_wf0{v_state : state, ret_val : meminst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_meminst(v_state)) + -- (wf_meminst: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_tableinst(v_state : state) : tableinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $fun_tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store + def $fun_tableinst{s : store, f : frame}(mk_state_state(s, f)) = s.TABLES_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tableinst_is_wf: `%%`(v_state : state, ret_val : tableinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_is_wf0{v_state : state, ret_val : tableinst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_tableinst(v_state)) + -- (wf_tableinst: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_funcinst(v_state : state) : funcinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $fun_funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store + def $fun_funcinst{s : store, f : frame}(mk_state_state(s, f)) = s.FUNCS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation funcinst_is_wf: `%%`(v_state : state, ret_val : funcinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_is_wf0{v_state : state, ret_val : funcinst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_funcinst(v_state)) + -- (wf_funcinst: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_datainst(v_state : state) : datainst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $fun_datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store + def $fun_datainst{s : store, f : frame}(mk_state_state(s, f)) = s.DATAS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation datainst_is_wf: `%%`(v_state : state, ret_val : datainst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_is_wf0{v_state : state, ret_val : datainst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_datainst(v_state)) + -- (wf_datainst: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_eleminst(v_state : state) : eleminst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $fun_eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store + def $fun_eleminst{s : store, f : frame}(mk_state_state(s, f)) = s.ELEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation eleminst_is_wf: `%%`(v_state : state, ret_val : eleminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_is_wf0{v_state : state, ret_val : eleminst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_eleminst(v_state)) + -- (wf_eleminst: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_structinst(v_state : state) : structinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $fun_structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store + def $fun_structinst{s : store, f : frame}(mk_state_state(s, f)) = s.STRUCTS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation structinst_is_wf: `%%`(v_state : state, ret_val : structinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_is_wf0{v_state : state, ret_val : structinst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_structinst(v_state)) + -- (wf_structinst: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_arrayinst(v_state : state) : arrayinst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $fun_arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store + def $fun_arrayinst{s : store, f : frame}(mk_state_state(s, f)) = s.ARRAYS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation arrayinst_is_wf: `%%`(v_state : state, ret_val : arrayinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_is_wf0{v_state : state, ret_val : arrayinst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_arrayinst(v_state)) + -- (wf_arrayinst: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_exninst(v_state : state) : exninst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $fun_exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store + def $fun_exninst{s : store, f : frame}(mk_state_state(s, f)) = s.EXNS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation exninst_is_wf: `%%`(v_state : state, ret_val : exninst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_is_wf0{v_state : state, ret_val : exninst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_exninst(v_state)) + -- (wf_exninst: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof(v_state : state) : frame ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fof{z : state}(z) = $fun_frame(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fof_is_wf: `%%`(v_state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fof_is_wf0{v_state : state, ret_val : frame}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fof(v_state)) + -- wf_frame: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_type(v_state : state, v_typeidx : typeidx) : deftype ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -12124,169 +12938,398 @@ def $sof(v_state : state) : store ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $sof{z : state}(z) = $fun_store(z) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation sof_is_wf: `%%`(v_state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule sof_is_wf0{v_state : state, ret_val : store}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $sof(v_state)) + -- wf_store: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_tag(v_state : state, v_tagidx : tagidx) : taginst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tag_is_wf: `%%%`(v_state : state, v_tagidx : tagidx, ret_val : taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tag_is_wf0{v_state : state, v_tagidx : tagidx, ret_val : taginst}: + `%%%`(v_state, v_tagidx, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_tagidx) + -- if (ret_val = $fun_tag(v_state, v_tagidx)) + -- wf_taginst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_global(v_state : state, v_globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation global_is_wf: `%%%`(v_state : state, v_globalidx : globalidx, ret_val : globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule global_is_wf0{v_state : state, v_globalidx : globalidx, ret_val : globalinst}: + `%%%`(v_state, v_globalidx, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_globalidx) + -- if (ret_val = $fun_global(v_state, v_globalidx)) + -- wf_globalinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_mem(v_state : state, v_memidx : memidx) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation mem_is_wf: `%%%`(v_state : state, v_memidx : memidx, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule mem_is_wf0{v_state : state, v_memidx : memidx, ret_val : meminst}: + `%%%`(v_state, v_memidx, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_memidx) + -- if (ret_val = $fun_mem(v_state, v_memidx)) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_table(v_state : state, v_tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation table_is_wf: `%%%`(v_state : state, v_tableidx : tableidx, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule table_is_wf0{v_state : state, v_tableidx : tableidx, ret_val : tableinst}: + `%%%`(v_state, v_tableidx, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_tableidx) + -- if (ret_val = $fun_table(v_state, v_tableidx)) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_func(v_state : state, v_funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation func_is_wf: `%%%`(v_state : state, v_funcidx : funcidx, ret_val : funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule func_is_wf0{v_state : state, v_funcidx : funcidx, ret_val : funcinst}: + `%%%`(v_state, v_funcidx, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_funcidx) + -- if (ret_val = $fun_func(v_state, v_funcidx)) + -- wf_funcinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_data(v_state : state, v_dataidx : dataidx) : datainst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation data_is_wf: `%%%`(v_state : state, v_dataidx : dataidx, ret_val : datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule data_is_wf0{v_state : state, v_dataidx : dataidx, ret_val : datainst}: + `%%%`(v_state, v_dataidx, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_dataidx) + -- if (ret_val = $fun_data(v_state, v_dataidx)) + -- wf_datainst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_elem(v_state : state, v_tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation elem_is_wf: `%%%`(v_state : state, v_tableidx : tableidx, ret_val : eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule elem_is_wf0{v_state : state, v_tableidx : tableidx, ret_val : eleminst}: + `%%%`(v_state, v_tableidx, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_tableidx) + -- if (ret_val = $fun_elem(v_state, v_tableidx)) + -- wf_eleminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_local(v_state : state, v_localidx : localidx) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $fun_local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[$proj_uN_0(x).0] +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation local_is_wf: `%%%`(v_state : state, v_localidx : localidx, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule local_is_wf0{v_state : state, v_localidx : localidx, ret_val : val?}: + `%%%`(v_state, v_localidx, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_localidx) + -- if (ret_val = $fun_local(v_state, v_localidx)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local(v_state : state, v_localidx : localidx, v_val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) - -- wf_state: `%`(`%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) + def $with_local{z : state, x : uN, v : val}(z, x, v) = mk_state_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_local_is_wf: `%%%%`(v_state : state, v_localidx : localidx, v_val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_local_is_wf0{v_state : state, v_localidx : localidx, v_val : val, ret_val : state}: + `%%%%`(v_state, v_localidx, v_val, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_localidx) + -- wf_val: `%`(v_val) + -- if (ret_val = $with_local(v_state, v_localidx, v_val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(v_state : state, v_globalidx : globalidx, v_val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z))) + def $with_global{z : state, x : uN, v : val}(z, x, v) = mk_state_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_global_is_wf: `%%%%`(v_state : state, v_globalidx : globalidx, v_val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_global_is_wf0{v_state : state, v_globalidx : globalidx, v_val : val, ret_val : state}: + `%%%%`(v_state, v_globalidx, v_val, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_globalidx) + -- wf_val: `%`(v_val) + -- if (ret_val = $with_global(v_state, v_globalidx, v_val)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(v_state : state, v_tableidx : tableidx, nat : nat, v_ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z))) + def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = mk_state_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_table_is_wf: `%%%%%`(v_state : state, v_tableidx : tableidx, nat : nat, v_ref : ref, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_table_is_wf0{v_state : state, v_tableidx : tableidx, nat : nat, v_ref : ref, ret_val : state}: + `%%%%%`(v_state, v_tableidx, nat, v_ref, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_tableidx) + -- wf_ref: `%`(v_ref) + -- if (ret_val = $with_table(v_state, v_tableidx, nat, v_ref)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(v_state : state, v_tableidx : tableidx, v_tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z))) + def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = mk_state_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_tableinst_is_wf: `%%%%`(v_state : state, v_tableidx : tableidx, v_tableinst : tableinst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_tableinst_is_wf0{v_state : state, v_tableidx : tableidx, v_tableinst : tableinst, ret_val : state}: + `%%%%`(v_state, v_tableidx, v_tableinst, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_tableidx) + -- wf_tableinst: `%`(v_tableinst) + -- if (ret_val = $with_tableinst(v_state, v_tableidx, v_tableinst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(v_state : state, v_memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_mem{z : state, x : uN, i : nat, j : nat, b_lst : byte*}(z, x, i, j, b_lst) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b_lst], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b_lst], $fof(z))) + def $with_mem{z : state, x : uN, i : nat, j : nat, b_lst : byte*}(z, x, i, j, b_lst) = mk_state_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b_lst], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_mem_is_wf: `%%%%%%`(v_state : state, v_memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_mem_is_wf0{v_state : state, v_memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state}: + `%%%%%%`(v_state, v_memidx, nat, nat_0, var_0, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_memidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_mem(v_state, v_memidx, nat, nat_0, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(v_state : state, v_memidx : memidx, v_meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z))) + def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = mk_state_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_meminst_is_wf: `%%%%`(v_state : state, v_memidx : memidx, v_meminst : meminst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_meminst_is_wf0{v_state : state, v_memidx : memidx, v_meminst : meminst, ret_val : state}: + `%%%%`(v_state, v_memidx, v_meminst, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_memidx) + -- wf_meminst: `%`(v_meminst) + -- if (ret_val = $with_meminst(v_state, v_memidx, v_meminst)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(v_state : state, v_elemidx : elemidx, var_0 : ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_elem{z : state, x : uN, r_lst : ref*}(z, x, r_lst) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r_lst], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r_lst], $fof(z))) + def $with_elem{z : state, x : uN, r_lst : ref*}(z, x, r_lst) = mk_state_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r_lst], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_elem_is_wf: `%%%%`(v_state : state, v_elemidx : elemidx, var_0 : ref*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_elem_is_wf0{v_state : state, v_elemidx : elemidx, var_0 : ref*, ret_val : state}: + `%%%%`(v_state, v_elemidx, var_0, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_elemidx) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_elem(v_state, v_elemidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(v_state : state, v_dataidx : dataidx, var_0 : byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_data{z : state, x : uN, b_lst : byte*}(z, x, b_lst) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b_lst], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b_lst], $fof(z))) + def $with_data{z : state, x : uN, b_lst : byte*}(z, x, b_lst) = mk_state_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b_lst], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_data_is_wf: `%%%%`(v_state : state, v_dataidx : dataidx, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_data_is_wf0{v_state : state, v_dataidx : dataidx, var_0 : byte*, ret_val : state}: + `%%%%`(v_state, v_dataidx, var_0, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_dataidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_data(v_state, v_dataidx, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(v_state : state, v_structaddr : structaddr, nat : nat, v_fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z))) + def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = mk_state_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_struct_is_wf: `%%%%%`(v_state : state, v_structaddr : structaddr, nat : nat, v_fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_struct_is_wf0{v_state : state, v_structaddr : structaddr, nat : nat, v_fieldval : fieldval, ret_val : state}: + `%%%%%`(v_state, v_structaddr, nat, v_fieldval, ret_val) + -- wf_state: `%`(v_state) + -- wf_fieldval: `%`(v_fieldval) + -- if (ret_val = $with_struct(v_state, v_structaddr, nat, v_fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(v_state : state, v_arrayaddr : arrayaddr, nat : nat, v_fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z))) + def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = mk_state_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_array_is_wf: `%%%%%`(v_state : state, v_arrayaddr : arrayaddr, nat : nat, v_fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_array_is_wf0{v_state : state, v_arrayaddr : arrayaddr, nat : nat, v_fieldval : fieldval, ret_val : state}: + `%%%%%`(v_state, v_arrayaddr, nat, v_fieldval, ret_val) + -- wf_state: `%`(v_state) + -- wf_fieldval: `%`(v_fieldval) + -- if (ret_val = $with_array(v_state, v_arrayaddr, nat, v_fieldval)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(v_state : state, var_0 : structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_structinst{z : state, si_lst : structinst*}(z, si_lst) = `%;%`_state($sof(z)[STRUCTS_store =++ si_lst], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[STRUCTS_store =++ si_lst], $fof(z))) + def $add_structinst{z : state, si_lst : structinst*}(z, si_lst) = mk_state_state($sof(z)[STRUCTS_store =++ si_lst], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_structinst_is_wf: `%%%`(v_state : state, var_0 : structinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_structinst_is_wf0{v_state : state, var_0 : structinst*, ret_val : state}: + `%%%`(v_state, var_0, ret_val) + -- wf_state: `%`(v_state) + -- (wf_structinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_structinst(v_state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(v_state : state, var_0 : arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_arrayinst{z : state, ai_lst : arrayinst*}(z, ai_lst) = `%;%`_state($sof(z)[ARRAYS_store =++ ai_lst], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[ARRAYS_store =++ ai_lst], $fof(z))) + def $add_arrayinst{z : state, ai_lst : arrayinst*}(z, ai_lst) = mk_state_state($sof(z)[ARRAYS_store =++ ai_lst], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_arrayinst_is_wf: `%%%`(v_state : state, var_0 : arrayinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_arrayinst_is_wf0{v_state : state, var_0 : arrayinst*, ret_val : state}: + `%%%`(v_state, var_0, ret_val) + -- wf_state: `%`(v_state) + -- (wf_arrayinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_arrayinst(v_state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(v_state : state, var_0 : exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_exninst{z : state, exn_lst : exninst*}(z, exn_lst) = `%;%`_state($sof(z)[EXNS_store =++ exn_lst], $fof(z)) - -- wf_state: `%`(`%;%`_state($sof(z)[EXNS_store =++ exn_lst], $fof(z))) + def $add_exninst{z : state, exn_lst : exninst*}(z, exn_lst) = mk_state_state($sof(z)[EXNS_store =++ exn_lst], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_exninst_is_wf: `%%%`(v_state : state, var_0 : exninst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_exninst_is_wf0{v_state : state, var_0 : exninst*, ret_val : state}: + `%%%`(v_state, var_0, ret_val) + -- wf_state: `%`(v_state) + -- (wf_exninst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_exninst(v_state, var_0)) + -- wf_state: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(v_tableinst : tableinst, nat : nat, v_ref : ref) : tableinst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{v_tableinst : tableinst, v_n : nat, r : ref, tableinst' : tableinst, i' : uN}(v_tableinst, v_n, r) = ?(tableinst') - -- let{at : addrtype, i : u64, j_opt : u64?, rt : reftype, r'_lst : ref*} {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j_opt), rt), REFS r'_lst} = v_tableinst - -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) + -- let{at : addrtype, i : u64, j_opt : u64?, rt : reftype, r'_lst : ref*} {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS r'_lst} = v_tableinst + -- if (tableinst' = {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) -- if ($proj_uN_0(i').0 = (|r'_lst| + v_n)) - -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#3).0))?{j#3 <- j_opt} + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j_3).0))?{j_3 <- j_opt} -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) - -- wf_tableinst: `%`(tableinst') - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j_opt), rt), REFS r'_lst}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) + -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS r'_lst}) + -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growtable_is_wf: `%%%%`(v_tableinst : tableinst, nat : nat, v_ref : ref, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growtable_is_wf0{v_tableinst : tableinst, nat : nat, v_ref : ref, ret_val : tableinst}: + `%%%%`(v_tableinst, nat, v_ref, ret_val) + -- wf_tableinst: `%`(v_tableinst) + -- wf_ref: `%`(v_ref) + -- if ($growtable(v_tableinst, nat, v_ref) =/= ?()) + -- if (ret_val = !($growtable(v_tableinst, nat, v_ref))) + -- wf_tableinst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem(v_meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{v_meminst : meminst, v_n : nat, meminst' : meminst, i' : uN}(v_meminst, v_n) = ?(meminst') - -- let{at : addrtype, i : u64, j_opt : u64?, b_lst : byte*} {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j_opt)), BYTES b_lst} = v_meminst - -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j_opt)), BYTES b_lst ++ `%`_byte(0)^(v_n * (64 * $Ki)){}}) + -- let{at : addrtype, i : u64, j_opt : u64?, b_lst : byte*} {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES b_lst} = v_meminst + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i', j_opt)), BYTES b_lst ++ mk_byte_byte(0)^(v_n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b_lst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (v_n : nat <:> rat))) - -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#8).0))?{j#8 <- j_opt} + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j_8).0))?{j_8 <- j_opt} -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) - -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j_opt)), BYTES b_lst}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j_opt)), BYTES b_lst ++ `%`_byte(0)^(v_n * (64 * $Ki)){}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES b_lst}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i', j_opt)), BYTES b_lst ++ mk_byte_byte(0)^(v_n * (64 * $Ki)){}}) def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() -- otherwise +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growmem_is_wf: `%%%`(v_meminst : meminst, nat : nat, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growmem_is_wf0{v_meminst : meminst, nat : nat, ret_val : meminst}: + `%%%`(v_meminst, nat, ret_val) + -- wf_meminst: `%`(v_meminst) + -- if ($growmem(v_meminst, nat) =/= ?()) + -- if (ret_val = !($growmem(v_meminst, nat))) + -- wf_meminst: `%`(ret_val) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule mk_Num_ok{s : store, nt : numtype, c : num_}: `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule mk_Vec_ok{s : store, vt : vectype, c : vec_}: `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -12295,81 +13338,54 @@ rec { relation Ref_ok: `%|-%:%`(store, ref, reftype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.38 rule null{s : store}: - `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.NULL_ADDR`_ref) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) + `%|-%:%`(s, REF_NULL_ADDR_ref, REF_reftype(?(NULL_null), BOT_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.33 rule i31{s : store, i : u31}: - `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.I31_NUM`_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) + `%|-%:%`(s, REF_I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 rule struct{s : store, a : addr, dt : deftype}: - `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + `%|-%:%`(s, REF_STRUCT_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 rule array{s : store, a : addr, dt : deftype}: - `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + `%|-%:%`(s, REF_ARRAY_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 rule func{s : store, a : addr, dt : deftype}: - `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + `%|-%:%`(s, REF_FUNC_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: - `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) + `%|-%:%`(s, REF_EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) - -- wf_store: `%`(s) -- wf_exninst: `%`(exn) - -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.35 rule host{s : store, a : addr}: - `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.HOST_ADDR`_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + `%|-%:%`(s, REF_HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 rule extern{s : store, v_ref : ref}: - `%|-%:%`(s, `REF.EXTERN`_ref(v_ref), REF_reftype(?(), EXTERN_heaptype)) + `%|-%:%`(s, REF_EXTERN_ref(v_ref), REF_reftype(?(), EXTERN_heaptype)) -- Ref_ok: `%|-%:%`(s, v_ref, REF_reftype(?(), ANY_heaptype)) - -- if (v_ref =/= `REF.NULL_ADDR`_ref) - -- wf_store: `%`(s) - -- wf_ref: `%`(`REF.EXTERN`_ref(v_ref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- if (v_ref =/= REF_NULL_ADDR_ref) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) - -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + -- wf_ref: `%`(REF_NULL_ADDR_ref) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, v_ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, v_ref, rt) -- Ref_ok: `%|-%:%`(s, v_ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(v_ref) - -- wf_reftype: `%`(rt) -- wf_reftype: `%`(rt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -12380,31 +13396,22 @@ relation Val_ok: `%|-%:%`(store, val, valtype) rule num{s : store, v_num : num, nt : numtype}: `%|-%:%`(s, $val_num(v_num), $valtype_numtype(nt)) -- Num_ok: `%|-%:%`(s, v_num, nt) - -- wf_store: `%`(s) - -- wf_num: `%`(v_num) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule vec{s : store, v_vec : vec, vt : vectype}: `%|-%:%`(s, $val_vec(v_vec), $valtype_vectype(vt)) -- Vec_ok: `%|-%:%`(s, v_vec, vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(v_vec) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule ref{s : store, v_ref : ref, rt : reftype}: `%|-%:%`(s, $val_ref(v_ref), $valtype_reftype(rt)) -- Ref_ok: `%|-%:%`(s, v_ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(v_ref) - -- wf_reftype: `%`(rt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Packval_ok: `%|-%:%`(store, packval, packtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule mk_Packval_ok{s : store, pt : packtype, c : iN}: `%|-%:%`(s, PACK_packval(pt, c), pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(PACK_packval(pt, c)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) @@ -12412,16 +13419,11 @@ relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) rule val{s : store, v_val : val, t : valtype}: `%|-%:%`(s, $fieldval_val(v_val), $storagetype_valtype(t)) -- Val_ok: `%|-%:%`(s, v_val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(v_val) - -- wf_valtype: `%`(t) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule packval{s : store, v_packval : packval, pt : packtype}: `%|-%:%`(s, $fieldval_packval(v_packval), $storagetype_packtype(pt)) -- Packval_ok: `%|-%:%`(s, v_packval, pt) - -- wf_store: `%`(s) - -- wf_packval: `%`(v_packval) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -12433,48 +13435,36 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(v_taginst.TYPE_taginst)) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = v_taginst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(v_taginst.TYPE_taginst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-111.34 rule global{s : store, a : addr, v_globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(v_globalinst.TYPE_globalinst)) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = v_globalinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(v_globalinst.TYPE_globalinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:113.1-115.28 rule mem{s : store, a : addr, v_meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(v_meminst.TYPE_meminst)) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = v_meminst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(v_meminst.TYPE_meminst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:117.1-119.32 rule table{s : store, a : addr, v_tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(v_tableinst.TYPE_tableinst)) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = v_tableinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(v_tableinst.TYPE_tableinst)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:121.1-123.30 rule func{s : store, a : addr, v_funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(v_funcinst.TYPE_funcinst))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = v_funcinst) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(v_funcinst.TYPE_funcinst))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:125.1-128.37 rule sub{s : store, v_externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, v_externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, v_externaddr, xt') -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) -- wf_externtype: `%`(xt') -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) } @@ -12482,2116 +13472,1720 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype(v_moduleinst : moduleinst, v_valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_valtype{v_moduleinst : moduleinst, t : valtype}(v_moduleinst, t) = $subst_all_valtype(t, (iter_val#3 : deftype <: typeuse)*{iter_val#3 <- v_moduleinst.TYPES_moduleinst}) + def $inst_valtype{v_moduleinst : moduleinst, t : valtype}(v_moduleinst, t) = $subst_all_valtype(t, (iter_val_3 : deftype <: typeuse)*{iter_val_3 <- v_moduleinst.TYPES_moduleinst}) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_valtype_is_wf: `%%%`(v_moduleinst : moduleinst, v_valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_valtype_is_wf0{v_moduleinst : moduleinst, v_valtype : valtype, ret_val : valtype}: + `%%%`(v_moduleinst, v_valtype, ret_val) + -- wf_moduleinst: `%`(v_moduleinst) + -- wf_valtype: `%`(v_valtype) + -- if (ret_val = $inst_valtype(v_moduleinst, v_valtype)) + -- wf_valtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(v_moduleinst : moduleinst, v_reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_reftype{v_moduleinst : moduleinst, rt : reftype}(v_moduleinst, rt) = $subst_all_reftype(rt, (iter_val#4 : deftype <: typeuse)*{iter_val#4 <- v_moduleinst.TYPES_moduleinst}) + def $inst_reftype{v_moduleinst : moduleinst, rt : reftype}(v_moduleinst, rt) = $subst_all_reftype(rt, (iter_val_4 : deftype <: typeuse)*{iter_val_4 <- v_moduleinst.TYPES_moduleinst}) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_reftype_is_wf: `%%%`(v_moduleinst : moduleinst, v_reftype : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_reftype_is_wf0{v_moduleinst : moduleinst, v_reftype : reftype, ret_val : reftype}: + `%%%`(v_moduleinst, v_reftype, ret_val) + -- wf_moduleinst: `%`(v_moduleinst) + -- wf_reftype: `%`(v_reftype) + -- if (ret_val = $inst_reftype(v_moduleinst, v_reftype)) + -- wf_reftype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(v_moduleinst : moduleinst, v_globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_globaltype{v_moduleinst : moduleinst, gt : globaltype}(v_moduleinst, gt) = $subst_all_globaltype(gt, (iter_val#5 : deftype <: typeuse)*{iter_val#5 <- v_moduleinst.TYPES_moduleinst}) + def $inst_globaltype{v_moduleinst : moduleinst, gt : globaltype}(v_moduleinst, gt) = $subst_all_globaltype(gt, (iter_val_5 : deftype <: typeuse)*{iter_val_5 <- v_moduleinst.TYPES_moduleinst}) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_globaltype_is_wf: `%%%`(v_moduleinst : moduleinst, v_globaltype : globaltype, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_globaltype_is_wf0{v_moduleinst : moduleinst, v_globaltype : globaltype, ret_val : globaltype}: + `%%%`(v_moduleinst, v_globaltype, ret_val) + -- wf_moduleinst: `%`(v_moduleinst) + -- wf_globaltype: `%`(v_globaltype) + -- if (ret_val = $inst_globaltype(v_moduleinst, v_globaltype)) + -- wf_globaltype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(v_moduleinst : moduleinst, v_memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_memtype{v_moduleinst : moduleinst, mt : memtype}(v_moduleinst, mt) = $subst_all_memtype(mt, (iter_val#6 : deftype <: typeuse)*{iter_val#6 <- v_moduleinst.TYPES_moduleinst}) + def $inst_memtype{v_moduleinst : moduleinst, mt : memtype}(v_moduleinst, mt) = $subst_all_memtype(mt, (iter_val_6 : deftype <: typeuse)*{iter_val_6 <- v_moduleinst.TYPES_moduleinst}) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_memtype_is_wf: `%%%`(v_moduleinst : moduleinst, v_memtype : memtype, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_memtype_is_wf0{v_moduleinst : moduleinst, v_memtype : memtype, ret_val : memtype}: + `%%%`(v_moduleinst, v_memtype, ret_val) + -- wf_moduleinst: `%`(v_moduleinst) + -- wf_memtype: `%`(v_memtype) + -- if (ret_val = $inst_memtype(v_moduleinst, v_memtype)) + -- wf_memtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(v_moduleinst : moduleinst, v_tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_tabletype{v_moduleinst : moduleinst, tt : tabletype}(v_moduleinst, tt) = $subst_all_tabletype(tt, (iter_val#7 : deftype <: typeuse)*{iter_val#7 <- v_moduleinst.TYPES_moduleinst}) + def $inst_tabletype{v_moduleinst : moduleinst, tt : tabletype}(v_moduleinst, tt) = $subst_all_tabletype(tt, (iter_val_7 : deftype <: typeuse)*{iter_val_7 <- v_moduleinst.TYPES_moduleinst}) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_tabletype_is_wf: `%%%`(v_moduleinst : moduleinst, v_tabletype : tabletype, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_tabletype_is_wf0{v_moduleinst : moduleinst, v_tabletype : tabletype, ret_val : tabletype}: + `%%%`(v_moduleinst, v_tabletype, ret_val) + -- wf_moduleinst: `%`(v_moduleinst) + -- wf_tabletype: `%`(v_tabletype) + -- if (ret_val = $inst_tabletype(v_moduleinst, v_tabletype)) + -- wf_tabletype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure_before_ref_eq_true: `%`(instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_eq_null_0{ref_1 : ref, ref_2 : ref}: - `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) - -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr]) + -- if ((ref_1 = REF_NULL_ADDR_ref) /\ (ref_2 = REF_NULL_ADDR_ref)) + -- wf_ref: `%`(REF_NULL_ADDR_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{v_val : val}: `%~>%`([$instr_val(v_val) DROP_instr], []) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(DROP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule select_true{val_1 : val, val_2 : val, c : num_, t_lst_opt : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t_lst_opt)], [$instr_val(val_1)]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t_lst_opt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule select_false{val_1 : val, val_2 : val, c : num_, t_lst_opt : valtype*?}: `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t_lst_opt)], [$instr_val(val_2)]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t_lst_opt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule if_true{c : num_, bt : blocktype, instr_1_lst : instr*, instr_2_lst : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)], [BLOCK_instr(bt, instr_1_lst)]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule if_false{c : num_, bt : blocktype, instr_1_lst : instr*, instr_2_lst : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)], [BLOCK_instr(bt, instr_2_lst)]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule label_vals{v_n : n, instr_lst : instr*, val_lst : val*}: `%~>%`([`LABEL_%{%}%`_instr(v_n, instr_lst, $instr_val(v_val)*{v_val <- val_lst})], $instr_val(v_val)*{v_val <- val_lst}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_n, instr_lst, $instr_val(v_val)*{v_val <- val_lst})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_label_zero{v_n : n, instr'_lst : instr*, val'_lst : val*, val_lst : val*, l : labelidx, instr_lst : instr*}: `%~>%`([`LABEL_%{%}%`_instr(v_n, instr'_lst, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)], $instr_val(v_val)^v_n{v_val <- val_lst} ++ instr'_lst) -- if ($proj_uN_0(l).0 = 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_n, instr'_lst, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_label_succ{v_n : n, instr'_lst : instr*, val_lst : val*, l : labelidx, instr_lst : instr*}: - `%~>%`([`LABEL_%{%}%`_instr(v_n, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)], $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + `%~>%`([`LABEL_%{%}%`_instr(v_n, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)], $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(mk_uN_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) -- if ($proj_uN_0(l).0 > 0) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_n, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)) - -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_handler{v_n : n, catch_lst : catch*, val_lst : val*, l : labelidx, instr_lst : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)], $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_if_true{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_if_false{c : num_, l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_table_lt{i : num_, l_lst : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l_lst, l')], [BR_instr(l_lst[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l_lst|) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l_lst, l')) - -- wf_instr: `%`(BR_instr(l_lst[$proj_uN_0(!($proj_num__0(i))).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_table_ge{i : num_, l_lst : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l_lst, l')], [BR_instr(l')]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l_lst|) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l_lst, l')) - -- wf_instr: `%`(BR_instr(l')) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_null_null{v_val : val, l : labelidx}: `%~>%`([$instr_val(v_val) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- if (v_val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(`REF.NULL_ADDR`_val) + -- if (v_val = REF_NULL_ADDR_val) + -- wf_val: `%`(REF_NULL_ADDR_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_null_addr{v_val : val, l : labelidx}: `%~>%`([$instr_val(v_val) BR_ON_NULL_instr(l)], [$instr_val(v_val)]) - -- if (v_val =/= `REF.NULL_ADDR`_val) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- if (v_val =/= REF_NULL_ADDR_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_non_null_null{v_val : val, l : labelidx}: `%~>%`([$instr_val(v_val) BR_ON_NON_NULL_instr(l)], []) - -- if (v_val = `REF.NULL_ADDR`_val) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(`REF.NULL_ADDR`_val) + -- if (v_val = REF_NULL_ADDR_val) + -- wf_val: `%`(REF_NULL_ADDR_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_non_null_addr{v_val : val, l : labelidx}: `%~>%`([$instr_val(v_val) BR_ON_NON_NULL_instr(l)], [$instr_val(v_val) BR_instr(l)]) - -- if (v_val =/= `REF.NULL_ADDR`_val) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) + -- if (v_val =/= REF_NULL_ADDR_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: - `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) + `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE_GET_instr(x) REF_CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: - `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(`TABLE.GET`_instr(x)) - -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE_GET_instr(x) REF_CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule frame_vals{v_n : n, f : frame, val_lst : val*}: `%~>%`([`FRAME_%{%}%`_instr(v_n, f, $instr_val(v_val)^v_n{v_val <- val_lst})], $instr_val(v_val)^v_n{v_val <- val_lst}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(v_n, f, $instr_val(v_val)^v_n{v_val <- val_lst})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_frame{v_n : n, f : frame, val'_lst : val*, val_lst : val*, instr_lst : instr*}: `%~>%`([`FRAME_%{%}%`_instr(v_n, f, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)], $instr_val(v_val)^v_n{v_val <- val_lst}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(v_n, f, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_label{v_n : n, instr'_lst : instr*, val_lst : val*, instr_lst : instr*}: `%~>%`([`LABEL_%{%}%`_instr(v_n, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)], $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_n, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_handler{v_n : n, catch_lst : catch*, val_lst : val*, instr_lst : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)], $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)) - -- wf_instr: `%`(RETURN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule handler_vals{v_n : n, catch_lst : catch*, val_lst : val*}: `%~>%`([`HANDLER_%{%}%`_instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst})], $instr_val(v_val)*{v_val <- val_lst}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule trap_instrs{val_lst : val*, instr_lst : instr*}: `%~>%`($instr_val(v_val)*{v_val <- val_lst} ++ [TRAP_instr] ++ instr_lst, [TRAP_instr]) -- if ((val_lst =/= []) \/ (instr_lst =/= [])) - -- (wf_val: `%`(v_val))*{v_val <- val_lst} - -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule trap_label{v_n : n, instr'_lst : instr*}: `%~>%`([`LABEL_%{%}%`_instr(v_n, instr'_lst, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_n, instr'_lst, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule trap_handler{v_n : n, catch_lst : catch*}: `%~>%`([`HANDLER_%{%}%`_instr(v_n, catch_lst, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(v_n, catch_lst, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule trap_frame{v_n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(v_n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(v_n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local_tee{v_val : val, x : idx}: - `%~>%`([$instr_val(v_val) `LOCAL.TEE`_instr(x)], [$instr_val(v_val) $instr_val(v_val) `LOCAL.SET`_instr(x)]) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) - -- wf_instr: `%`(`LOCAL.SET`_instr(x)) + `%~>%`([$instr_val(v_val) LOCAL_TEE_instr(x)], [$instr_val(v_val) $instr_val(v_val) LOCAL_SET_instr(x)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_i31{i : num_}: - `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) + `%~>%`([CONST_instr(I32_numtype, i) REF_I31_instr], [REF_I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`REF.I31`_instr) - -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_is_null_true{v_ref : ref}: - `%~>%`([$instr_ref(v_ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- if (v_ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(v_ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + `%~>%`([$instr_ref(v_ref) REF_IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) + -- if (v_ref = REF_NULL_ADDR_ref) + -- wf_ref: `%`(REF_NULL_ADDR_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_is_null_false{v_ref : ref}: - `%~>%`([$instr_ref(v_ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- if (v_ref =/= `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(v_ref) - -- wf_instr: `%`(`REF.IS_NULL`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + `%~>%`([$instr_ref(v_ref) REF_IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))]) + -- if (v_ref =/= REF_NULL_ADDR_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_as_non_null_null{v_ref : ref}: - `%~>%`([$instr_ref(v_ref) `REF.AS_NON_NULL`_instr], [TRAP_instr]) - -- if (v_ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(v_ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + `%~>%`([$instr_ref(v_ref) REF_AS_NON_NULL_instr], [TRAP_instr]) + -- if (v_ref = REF_NULL_ADDR_ref) + -- wf_ref: `%`(REF_NULL_ADDR_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_as_non_null_addr{v_ref : ref}: - `%~>%`([$instr_ref(v_ref) `REF.AS_NON_NULL`_instr], [$instr_ref(v_ref)]) - -- if (v_ref =/= `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(v_ref) - -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + `%~>%`([$instr_ref(v_ref) REF_AS_NON_NULL_instr], [$instr_ref(v_ref)]) + -- if (v_ref =/= REF_NULL_ADDR_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_eq_null{ref_1 : ref, ref_2 : ref}: - `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) + -- if ((ref_1 = REF_NULL_ADDR_ref) /\ (ref_2 = REF_NULL_ADDR_ref)) + -- wf_ref: `%`(REF_NULL_ADDR_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_eq_true{ref_1 : ref, ref_2 : ref}: - `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) + -- if ((ref_1 =/= REF_NULL_ADDR_ref) \/ (ref_2 =/= REF_NULL_ADDR_ref)) -- if (ref_1 = ref_2) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_eq_false{ref_1 : ref, ref_2 : ref}: - `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))]) -- if (ref_1 =/= ref_2) - -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(`REF.EQ`_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- if ((ref_1 =/= REF_NULL_ADDR_ref) \/ (ref_2 =/= REF_NULL_ADDR_ref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule i31_get_null{v_sx : sx}: - `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(v_sx)], [TRAP_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`I31.GET`_instr(v_sx)) - -- wf_instr: `%`(TRAP_instr) + `%~>%`([REF_NULL_ADDR_instr I31_GET_instr(v_sx)], [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule i31_get_num{i : u31, v_sx : sx}: - `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(v_sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, v_sx, i)))]) - -- wf_instr: `%`(`REF.I31_NUM`_instr(i)) - -- wf_instr: `%`(`I31.GET`_instr(v_sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, v_sx, i)))) + `%~>%`([REF_I31_NUM_instr(i) I31_GET_instr(v_sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, v_sx, i)))]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new{v_val : val, v_n : n, x : idx}: - `%~>%`([$instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW`_instr(x)], $instr_val(v_val)^v_n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))]) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n)))) - -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))) + `%~>%`([$instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_instr(x)], $instr_val(v_val)^v_n{} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule extern_convert_any_null{v_ref : ref}: - `%~>%`([$instr_ref(v_ref) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) - -- if (v_ref = `REF.NULL_ADDR`_ref) - -- wf_ref: `%`(v_ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + `%~>%`([$instr_ref(v_ref) EXTERN_CONVERT_ANY_instr], [REF_NULL_ADDR_instr]) + -- if (v_ref = REF_NULL_ADDR_ref) + -- wf_ref: `%`(REF_NULL_ADDR_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule extern_convert_any_addr{v_ref : ref}: - `%~>%`([$instr_ref(v_ref) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(v_ref)]) - -- if (v_ref =/= `REF.NULL_ADDR`_ref) - -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) - -- wf_instr: `%`(`REF.EXTERN`_instr(v_ref)) + `%~>%`([$instr_ref(v_ref) EXTERN_CONVERT_ANY_instr], [REF_EXTERN_instr(v_ref)]) + -- if (v_ref =/= REF_NULL_ADDR_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule any_convert_extern_null: - `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + `%~>%`([REF_NULL_ADDR_instr ANY_CONVERT_EXTERN_instr], [REF_NULL_ADDR_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule any_convert_extern_addr{v_ref : ref}: - `%~>%`([`REF.EXTERN`_instr(v_ref) `ANY.CONVERT_EXTERN`_instr], [$instr_ref(v_ref)]) - -- wf_instr: `%`(`REF.EXTERN`_instr(v_ref)) - -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + `%~>%`([REF_EXTERN_instr(v_ref) ANY_CONVERT_EXTERN_instr], [$instr_ref(v_ref)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unop_val{nt : numtype, c_1 : num_, unop : unop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) -- if (|$fun_unop_(nt, unop, c_1)| > 0) -- if (c <- $fun_unop_(nt, unop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $fun_unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule unop_trap{nt : numtype, c_1 : num_, unop : unop_}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) -- if ($fun_unop_(nt, unop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $fun_unop_(nt, unop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule binop_val{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) -- if (|$fun_binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $fun_binop_(nt, binop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $fun_binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule binop_trap{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) -- if ($fun_binop_(nt, binop, c_1, c_2) = []) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt, iter))*{iter <- $fun_binop_(nt, binop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $fun_testop_(nt, testop, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $fun_testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $fun_relop_(nt, relop, c_1, c_2)) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $fun_relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule cvtop_val{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) -- if (|$fun_cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $fun_cvtop__(nt_1, nt_2, cvtop, c_1)) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $fun_cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule cvtop_trap{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($fun_cvtop__(nt_1, nt_2, cvtop, c_1) = []) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $fun_cvtop__(nt_1, nt_2, cvtop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, v_vvunop : vvunop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, v_vvunop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvunop_(V128_vectype, v_vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, v_vvunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, v_vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvunop_(V128_vectype, v_vvunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_, c_2 : vec_, v_vvbinop : vvbinop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, v_vvbinop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvbinop_(V128_vectype, v_vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, v_vvbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, v_vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvbinop_(V128_vectype, v_vvbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, v_vvternop : vvternop, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, v_vvternop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvternop_(V128_vectype, v_vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, v_vvternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, v_vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvternop_(V128_vectype, v_vvternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vunop_val{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) -- if (|$fun_vunop_(sh, vunop, c_1)| > 0) -- if (c <- $fun_vunop_(sh, vunop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $fun_vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vunop_trap{c_1 : vec_, sh : shape, vunop : vunop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) -- if ($fun_vunop_(sh, vunop, c_1) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $fun_vunop_(sh, vunop, c_1)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbinop_val{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) -- if (|$fun_vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $fun_vbinop_(sh, vbinop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $fun_vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbinop_trap{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) -- if ($fun_vbinop_(sh, vbinop, c_1, c_2) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $fun_vbinop_(sh, vbinop, c_1, c_2)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vternop_val{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) -- if (|$fun_vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $fun_vternop_(sh, vternop, c_1, c_2, c_3)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_uN: `%%`(128, iter))*{iter <- $fun_vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vternop_trap{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) -- if ($fun_vternop_(sh, vternop, c_1, c_2, c_3) = []) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) + -- (wf_uN: `%%`(128, iter))*{iter <- $fun_vternop_(sh, vternop, c_1, c_2, c_3)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_, v_Jnn : Jnn, v_M : M, c : num_, i_lst : lane_*}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), mk_vtestop__0_vtestop_(v_Jnn, v_M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) - -- if (i_lst = $lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), c_1)) + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), mk_vtestop__0_vtestop_(v_Jnn, v_M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) + -- if (i_lst = $lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c_1)) -- if ($proj_num__0(c) =/= ?()) -- (if ($proj_lane__2(i) =/= ?()))*{i <- i_lst} -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(v_Jnn), !($proj_lane__2(i)))).0*{i <- i_lst})) - -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), i))*{i <- i_lst} - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), mk_vtestop__0_vtestop_(v_Jnn, v_M, ALL_TRUE_vtestop_Jnn_M))) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), i))*{i <- i_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c_1)} + -- (wf_uN: `%%`(32, $inez_($jsizenn(v_Jnn), !($proj_lane__2(i)))))*{i <- i_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $fun_vrelop_(sh, vrelop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $fun_vrelop_(sh, vrelop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) -- if ($proj_num__0(i) =/= ?()) -- if (c = $fun_vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $fun_vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_uN: `%%`(32, $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $fun_vswizzlop_(sh, swizzlop, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $fun_vswizzlop_(sh, swizzlop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, i_lst : laneidx*, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i_lst)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshufflop_(sh, i_lst, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i_lst)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vshufflop_(sh, i_lst, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{v_Lnn : Lnn, c_1 : num_, v_M : M, c : vec_}: - `%~>%`([CONST_instr($lunpack(v_Lnn), c_1) VSPLAT_instr(`%X%`_shape(v_Lnn, `%`_dim(v_M)))], [VCONST_instr(V128_vectype, c)]) - -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, `%`_dim(v_M)), $lpacknum_(v_Lnn, c_1)^v_M{})) - -- wf_instr: `%`(CONST_instr($lunpack(v_Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(v_Lnn, `%`_dim(v_M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(v_Lnn, `%`_dim(v_M))) + `%~>%`([CONST_instr($lunpack(v_Lnn), c_1) VSPLAT_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)))], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), $lpacknum_(v_Lnn, c_1)^v_M{})) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), $lpacknum_(v_Lnn, c_1)^v_M{})) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape(v_Lnn, mk_dim_dim(v_M))), $lpacknum_(v_Lnn, c_1)) + -- wf_shape: `%`(`%X%`_shape(v_Lnn, mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextract_lane_num{c_1 : vec_, nt : numtype, v_M : M, i : laneidx, c_2 : num_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(v_M)), ?(), i)], [CONST_instr(nt, c_2)]) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(v_M)), c_1)|) - -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(v_M)), c_1)[$proj_uN_0(i).0]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(v_M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(v_M))), mk_lane__0_lane_(nt, c_2)) - -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(v_M))) + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M)), c_1)|) + -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M)), c_1)[$proj_uN_0(i).0]) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M)), c_1)} + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextract_lane_pack{c_1 : vec_, pt : packtype, v_M : M, v_sx : sx, i : laneidx, c_2 : num_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(v_M)), ?(v_sx), i)], [CONST_instr(I32_numtype, c_2)]) + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), ?(v_sx), i)], [CONST_instr(I32_numtype, c_2)]) -- if ($proj_num__0(c_2) =/= ?()) - -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(v_M)), c_1)[$proj_uN_0(i).0]) =/= ?()) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(v_M)), c_1)|) - -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, v_sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(v_M)), c_1)[$proj_uN_0(i).0])))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(v_M)), ?(v_sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) - -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(v_M))) + -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), c_1)[$proj_uN_0(i).0]) =/= ?()) + -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), c_1)|) + -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, v_sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), c_1)[$proj_uN_0(i).0])))) + -- wf_uN: `%%`(32, $extend__($psize(pt), 32, v_sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), c_1)[$proj_uN_0(i).0])))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), c_1)} + -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_, v_Lnn : Lnn, c_2 : num_, v_M : M, i : laneidx, c : vec_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(v_Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(v_Lnn, `%`_dim(v_M)), i)], [VCONST_instr(V128_vectype, c)]) - -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, `%`_dim(v_M)), $lanes_(`%X%`_shape(v_Lnn, `%`_dim(v_M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(v_Lnn, c_2)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(v_Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(v_Lnn, `%`_dim(v_M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(v_Lnn, `%`_dim(v_M))) + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(v_Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), i)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), $lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(v_Lnn, c_2)])) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), $lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(v_Lnn, c_2)])) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(v_Lnn, mk_dim_dim(v_M))), iter))*{iter <- $lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), c_1)} + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape(v_Lnn, mk_dim_dim(v_M))), $lpacknum_(v_Lnn, c_2)) + -- wf_shape: `%`(`%X%`_shape(v_Lnn, mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) -- if ($fun_vextunop__(sh_1, sh_2, vextunop, c_1) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $fun_vextunop__(sh_1, sh_2, vextunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) -- if ($fun_vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $fun_vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) -- if ($fun_vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $fun_vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, v_sx : sx, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, v_sx)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, v_sx, c_1, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, v_sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, v_sx, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $fun_vcvtop__(sh_1, sh_2, vcvtop, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_uN: `%%`(128, $fun_vcvtop__(sh_1, sh_2, vcvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(v_state : state, v_blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, x : uN, t_1_lst : valtype*, t_2_lst : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst)) - -- Expand: `%~~%`($fun_type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) + def $blocktype_{z : state, x : uN, t_1_lst : valtype*, t_2_lst : valtype*}(z, _IDX_blocktype(x)) = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst)) + -- Expand: `%~~%`($fun_type(z, x), `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + def $blocktype_{z : state, t_opt : valtype?}(z, _RESULT_blocktype(t_opt)) = mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(lift(t_opt))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation blocktype__is_wf: `%%%`(v_state : state, v_blocktype : blocktype, ret_val : instrtype) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, t_opt : valtype?}(z, _RESULT_blocktype(t_opt)) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t_opt))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t_opt)))) + rule blocktype__is_wf0{v_state : state, v_blocktype : blocktype, ret_val : instrtype}: + `%%%`(v_state, v_blocktype, ret_val) + -- wf_state: `%`(v_state) + -- wf_blocktype: `%`(v_blocktype) + -- if (ret_val = $blocktype_(v_state, v_blocktype)) + -- wf_instrtype: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_br_on_cast_fail: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_succeed_0{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: - `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- Ref_ok: `%|-%:%`(s, v_ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_br_on_cast_fail_fail: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_fail_succeed_0{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: - `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- Ref_ok: `%|-%:%`(s, v_ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_throw_ref_handler_next: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_catch_all_ref_0{z : state, v_n : n, l : labelidx, catch'_lst : catch*, a : addr}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_catch_all_0{z : state, v_n : n, l : labelidx, catch'_lst : catch*, a : addr}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_catch_ref_0{z : state, v_n : n, x : idx, l : labelidx, catch'_lst : catch*, a : addr, val_lst : val*}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) -- if (a < |$fun_exninst(z)|) -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) -- if ($fun_exninst(z)[a].TAG_exninst = $fun_tagaddr(z)[$proj_uN_0(x).0]) -- if (val_lst = $fun_exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(v_val))*{v_val <- val_lst} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $fun_exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_catch_0{z : state, v_n : n, x : idx, l : labelidx, catch'_lst : catch*, a : addr, val_lst : val*}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) -- if (a < |$fun_exninst(z)|) -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) -- if ($fun_exninst(z)[a].TAG_exninst = $fun_tagaddr(z)[$proj_uN_0(x).0]) -- if (val_lst = $fun_exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(v_val))*{v_val <- val_lst} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $fun_exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_table_fill_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_fill_oob_0{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.FILL`_instr(x)])) + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($fun_table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_table_copy_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_oob_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x_1, x_2)])) + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($fun_table(z, x_1)) + -- wf_tableinst: `%`($fun_table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_table_copy_le: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_zero_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)])) - -- ~ Step_read_before_table_copy_zero: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)])) + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- ~ Step_read_before_table_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) -- if (v_n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_oob_1{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x_1, x_2)])) + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($fun_table(z, x_1)) + -- wf_tableinst: `%`($fun_table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_table_copy_gt: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_le_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)])) - -- ~ Step_read_before_table_copy_le: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)])) + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- ~ Step_read_before_table_copy_le: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_zero_1{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)])) - -- ~ Step_read_before_table_copy_zero: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)])) + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- ~ Step_read_before_table_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) -- if (v_n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_oob_2{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x_1, x_2)])) + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($fun_table(z, x_1)) + -- wf_tableinst: `%`($fun_table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_table_init_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_init_oob_0{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `TABLE.INIT`_instr(x, y)])) + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($fun_table(z, x)) + -- wf_eleminst: `%`($fun_elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_memory_fill_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_fill_oob_0{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.FILL`_instr(x)])) + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($fun_mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_memory_copy_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_oob_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($fun_mem(z, x_1)) + -- wf_meminst: `%`($fun_mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_memory_copy_le: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_zero_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- ~ Step_read_before_memory_copy_zero: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- ~ Step_read_before_memory_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) -- if (v_n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_oob_1{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($fun_mem(z, x_1)) + -- wf_meminst: `%`($fun_mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_memory_init_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_init_oob_0{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `MEMORY.INIT`_instr(x, y)])) + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_datainst: `%`($fun_data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_ref_test_false: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_test_true_0{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: - `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.TEST`_instr(rt)])) + `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) -- Ref_ok: `%|-%:%`(s, v_ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_ref_cast_fail: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_cast_succeed_0{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: - `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.CAST`_instr(rt)])) + `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) -- Ref_ok: `%|-%:%`(s, v_ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_array_fill_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_fill_oob_0{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.FILL`_instr(x)])) + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$fun_arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_array_fill_succ: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_fill_zero_0{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- ~ Step_read_before_array_fill_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- if (v_n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_fill_oob_1{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_array_copy_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob2_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob1_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_array_copy_le: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_zero_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- ~ Step_read_before_array_copy_zero: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- ~ Step_read_before_array_copy_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- if (v_n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob2_1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob1_1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_array_copy_gt: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_le_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- ~ Step_read_before_array_copy_le: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- ~ Step_read_before_array_copy_le: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ($fun_sx(zt_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = !($fun_sx(zt_2)))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx_opt, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_zero_1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- ~ Step_read_before_array_copy_zero: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- ~ Step_read_before_array_copy_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- if (v_n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob2_2{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob1_2{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_array_init_elem_zero: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_elem_oob2_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($fun_elem(z, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_elem_oob1_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$fun_arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_array_init_elem_zero: `%`(config) +relation Step_read_before_array_init_elem_succ: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_init_elem_oob2_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + rule array_init_elem_zero_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- ~ Step_read_before_array_init_elem_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- if (v_n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_elem_oob2_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($fun_elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_init_elem_oob1_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + rule array_init_elem_oob1_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_array_init_data_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob2_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- wf_datainst: `%`($fun_data(z, y)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob1_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_array_init_data_num: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_zero_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- ~ Step_read_before_array_init_data_zero: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- ~ Step_read_before_array_init_data_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) -- if (v_n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob2_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- wf_datainst: `%`($fun_data(z, y)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob1_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule block{z : state, v_m : m, val_lst : val*, bt : blocktype, instr_lst : instr*, v_n : n, t_1_lst : valtype*, t_2_lst : valtype*}: - `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [BLOCK_instr(bt, instr_lst)]), [`LABEL_%{%}%`_instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_config: `%`(`%;%`_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [BLOCK_instr(bt, instr_lst)])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + `%~>%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [BLOCK_instr(bt, instr_lst)]), [`LABEL_%{%}%`_instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)]) + -- if ($blocktype_(z, bt) = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`($blocktype_(z, bt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule loop{z : state, v_m : m, val_lst : val*, bt : blocktype, instr_lst : instr*, t_1_lst : valtype*, v_n : n, t_2_lst : valtype*}: - `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [LOOP_instr(bt, instr_lst)]), [`LABEL_%{%}%`_instr(v_m, [LOOP_instr(bt, instr_lst)], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_config: `%`(`%;%`_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [LOOP_instr(bt, instr_lst)])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_m, [LOOP_instr(bt, instr_lst)], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + `%~>%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [LOOP_instr(bt, instr_lst)]), [`LABEL_%{%}%`_instr(v_m, [LOOP_instr(bt, instr_lst)], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)]) + -- if ($blocktype_(z, bt) = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`($blocktype_(z, bt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_succeed{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref) BR_instr(l)]) + `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref) BR_instr(l)]) -- Ref_ok: `%|-%:%`(s, v_ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_fail{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref)]) - -- ~ Step_read_before_br_on_cast_fail: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref)]) + -- ~ Step_read_before_br_on_cast_fail: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_fail_succeed{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref)]) + `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref)]) -- Ref_ok: `%|-%:%`(s, v_ref, rt) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_fail_fail{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref) BR_instr(l)]) - -- ~ Step_read_before_br_on_cast_fail_fail: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) + `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref) BR_instr(l)]) + -- ~ Step_read_before_br_on_cast_fail_fail: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: - `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))]) + `%~>%`(mk_config_config(z, [CALL_instr(x)]), [REF_FUNC_ADDR_instr(a) CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))]) -- if (a < |$fun_funcinst(z)|) -- if ($proj_uN_0(x).0 < |$fun_moduleinst(z).FUNCS_moduleinst|) -- if ($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))) + -- wf_moduleinst: `%`($fun_moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_ref_null{z : state, yy : typeuse}: - `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr CALL_REF_instr(yy)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_ref_func{z : state, v_n : n, val_lst : val*, a : addr, yy : typeuse, v_m : m, f : frame, instr_lst : instr*, fi : funcinst, t_1_lst : valtype*, t_2_lst : valtype*, x : idx, t_lst : valtype*}: - `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(v_m, f, [`LABEL_%{%}%`_instr(v_m, [], instr_lst)])]) + `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(v_m, f, [`LABEL_%{%}%`_instr(v_m, [], instr_lst)])]) -- if (a < |$fun_funcinst(z)|) -- if ($fun_funcinst(z)[a] = fi) - -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- t_lst}, instr_lst)) -- (if ($default_(t) =/= ?()))*{t <- t_lst} -- if (f = {LOCALS ?(v_val)^v_n{v_val <- val_lst} ++ !($default_(t))*{t <- t_lst}, MODULE fi.MODULE_funcinst}) - -- wf_config: `%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(v_m, f, [`LABEL_%{%}%`_instr(v_m, [], instr_lst)])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) + -- (wf_funcinst: `%`(iter))*{iter <- $fun_funcinst(z)} + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- t_lst}, instr_lst)) -- wf_frame: `%`({LOCALS ?(v_val)^v_n{v_val <- val_lst} ++ !($default_(t))*{t <- t_lst}, MODULE fi.MODULE_funcinst}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: - `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))]) + `%~>%`(mk_config_config(z, [RETURN_CALL_instr(x)]), [REF_FUNC_ADDR_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))]) -- if (a < |$fun_funcinst(z)|) -- if ($proj_uN_0(x).0 < |$fun_moduleinst(z).FUNCS_moduleinst|) -- if ($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))) + -- wf_moduleinst: `%`($fun_moduleinst(z)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_ref_label{z : state, k : n, instr'_lst : instr*, val_lst : val*, yy : typeuse, instr_lst : instr*}: - `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + `%~>%`(mk_config_config(z, [`LABEL_%{%}%`_instr(k, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_ref_handler{z : state, k : n, catch_lst : catch*, val_lst : val*, yy : typeuse, instr_lst : instr*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + `%~>%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(k, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_ref_frame_null{z : state, k : n, f : frame, val_lst : val*, yy : typeuse, instr_lst : instr*}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(v_val)*{v_val <- val_lst} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(v_val)*{v_val <- val_lst} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)])) - -- wf_instr: `%`(TRAP_instr) + `%~>%`(mk_config_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(v_val)*{v_val <- val_lst} ++ [REF_NULL_ADDR_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_ref_frame_addr{z : state, k : n, f : frame, val'_lst : val*, v_n : n, val_lst : val*, a : addr, yy : typeuse, instr_lst : instr*, t_1_lst : valtype*, v_m : m, t_2_lst : valtype*}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), $instr_val(v_val)^v_n{v_val <- val_lst} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) + `%~>%`(mk_config_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) -- if (a < |$fun_funcinst(z)|) - -- Expand: `%~~%`($fun_funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) + -- Expand: `%~~%`($fun_funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- (wf_funcinst: `%`(iter))*{iter <- $fun_funcinst(z)} + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_null{z : state}: - `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr THROW_REF_instr]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_instrs{z : state, val_lst : val*, a : addr, instr_lst : instr*}: - `%~>%`(`%;%`_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr_lst), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + `%~>%`(mk_config_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ [REF_EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr_lst), [REF_EXN_ADDR_instr(a) THROW_REF_instr]) -- if ((val_lst =/= []) \/ (instr_lst =/= [])) - -- wf_config: `%`(`%;%`_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr_lst)) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_label{z : state, v_n : n, instr'_lst : instr*, a : addr}: - `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(v_n, instr'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(v_n, instr'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) + `%~>%`(mk_config_config(z, [`LABEL_%{%}%`_instr(v_n, instr'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [REF_EXN_ADDR_instr(a) THROW_REF_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_frame{z : state, v_n : n, f : frame, a : addr}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(v_n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(v_n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) + `%~>%`(mk_config_config(z, [`FRAME_%{%}%`_instr(v_n, f, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [REF_EXN_ADDR_instr(a) THROW_REF_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_empty{z : state, v_n : n, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) + `%~>%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [], [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [REF_EXN_ADDR_instr(a) THROW_REF_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_catch{z : state, v_n : n, x : idx, l : labelidx, catch'_lst : catch*, a : addr, val_lst : val*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)]) + `%~>%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)]) -- if (a < |$fun_exninst(z)|) -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) -- if ($fun_exninst(z)[a].TAG_exninst = $fun_tagaddr(z)[$proj_uN_0(x).0]) -- if (val_lst = $fun_exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(v_val))*{v_val <- val_lst} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $fun_exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_catch_ref{z : state, v_n : n, x : idx, l : labelidx, catch'_lst : catch*, a : addr, val_lst : val*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), $instr_val(v_val)*{v_val <- val_lst} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) + `%~>%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(v_val)*{v_val <- val_lst} ++ [REF_EXN_ADDR_instr(a) BR_instr(l)]) -- if (a < |$fun_exninst(z)|) -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) -- if ($fun_exninst(z)[a].TAG_exninst = $fun_tagaddr(z)[$proj_uN_0(x).0]) -- if (val_lst = $fun_exninst(z)[a].FIELDS_exninst) - -- (wf_val: `%`(v_val))*{v_val <- val_lst} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + -- (wf_exninst: `%`(iter))*{iter <- $fun_exninst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_catch_all{z : state, v_n : n, l : labelidx, catch'_lst : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) + `%~>%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_catch_all_ref{z : state, v_n : n, l : labelidx, catch'_lst : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) - -- wf_instr: `%`(BR_instr(l)) + `%~>%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [REF_EXN_ADDR_instr(a) BR_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule throw_ref_handler_next{z : state, v_n : n, v_catch : catch, catch'_lst : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [v_catch] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(v_n, catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) - -- ~ Step_read_before_throw_ref_handler_next: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [v_catch] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, [v_catch] ++ catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(v_n, catch'_lst, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + `%~>%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [v_catch] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(v_n, catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]) + -- ~ Step_read_before_throw_ref_handler_next: `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [v_catch] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule try_table{z : state, v_m : m, val_lst : val*, bt : blocktype, catch_lst : catch*, instr_lst : instr*, v_n : n, t_1_lst : valtype*, t_2_lst : valtype*}: - `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [TRY_TABLE_instr(bt, `%`_list(catch_lst), instr_lst)]), [`HANDLER_%{%}%`_instr(v_n, catch_lst, [`LABEL_%{%}%`_instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)])]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_config: `%`(`%;%`_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [TRY_TABLE_instr(bt, `%`_list(catch_lst), instr_lst)])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(v_n, catch_lst, [`LABEL_%{%}%`_instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)])) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + `%~>%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [TRY_TABLE_instr(bt, mk_list_list(catch_lst), instr_lst)]), [`HANDLER_%{%}%`_instr(v_n, catch_lst, [`LABEL_%{%}%`_instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)])]) + -- if ($blocktype_(z, bt) = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`($blocktype_(z, bt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local_get{z : state, x : idx, v_val : val}: - `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [$instr_val(v_val)]) + `%~>%`(mk_config_config(z, [LOCAL_GET_instr(x)]), [$instr_val(v_val)]) -- if ($fun_local(z, x) = ?(v_val)) - -- wf_val: `%`(v_val) - -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) + -- (wf_val: `%`(iter))?{iter <- $fun_local(z, x)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule global_get{z : state, x : idx, v_val : val}: - `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [$instr_val(v_val)]) + `%~>%`(mk_config_config(z, [GLOBAL_GET_instr(x)]), [$instr_val(v_val)]) -- if ($fun_global(z, x).VALUE_globalinst = v_val) - -- wf_val: `%`(v_val) - -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) + -- wf_globalinst: `%`($fun_global(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_get_oob{z : state, at : addrtype, i : num_, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE_GET_instr(x)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($fun_table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_get_val{z : state, at : addrtype, i : num_, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [$instr_ref($fun_table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE_GET_instr(x)]), [$instr_ref($fun_table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_table(z, x).REFS_tableinst|) -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) + -- wf_tableinst: `%`($fun_table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_size{z : state, x : idx, at : addrtype, v_n : n, lim : limits, rt : reftype}: - `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n)))]) + `%~>%`(mk_config_config(z, [TABLE_SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n)))]) -- if (|$fun_table(z, x).REFS_tableinst| = v_n) - -- if ($fun_table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) - -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n)))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if ($fun_table(z, x).TYPE_tableinst = mk_tabletype_tabletype(at, lim, rt)) + -- wf_tableinst: `%`($fun_table(z, x)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_fill_oob{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($fun_table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_fill_zero{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.FILL`_instr(x)]), []) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)]), []) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) -- if (v_n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_fill_succ{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) -- if (v_n =/= 0) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_oob{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)]), [TRAP_instr]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($fun_table(z, x_1)) + -- wf_tableinst: `%`($fun_table(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_zero{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)]), []) - -- ~ Step_read_before_table_copy_zero: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)])) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)]), []) + -- ~ Step_read_before_table_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) -- if (v_n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_le{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) TABLE_GET_instr(y) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- ~ Step_read_before_table_copy_le: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)])) + -- ~ Step_read_before_table_copy_le: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_gt{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_GET_instr(y) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- ~ Step_read_before_table_copy_gt: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `TABLE.COPY`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.GET`_instr(y)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + -- ~ Step_read_before_table_copy_gt: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_init_oob{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_tableinst: `%`($fun_table(z, x)) + -- wf_eleminst: `%`($fun_elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_init_zero{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `TABLE.INIT`_instr(x, y)]), []) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)]), []) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|)) -- if (v_n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `TABLE.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_init_succ{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) $instr_ref($fun_elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) $instr_ref($fun_elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_INIT_instr(x, y)]) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$fun_elem(z, y).REFS_eleminst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if (v_n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `TABLE.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(`TABLE.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule load_num_oob{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($fun_mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule load_num_val{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_meminst: `%`($fun_mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule load_pack_oob{z : state, at : addrtype, i : num_, v_Inn : Inn, v_n : n, v_sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, `%_%`_loadop_Inn(`%`_sz(v_n), v_sx))), x, ao)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_n), v_sx))), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, `%_%`_loadop_Inn(`%`_sz(v_n), v_sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($fun_mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule load_pack_val{z : state, at : addrtype, i : num_, v_Inn : Inn, v_n : n, v_sx : sx, x : idx, ao : memarg, c : iN}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, `%_%`_loadop_Inn(`%`_sz(v_n), v_sx))), x, ao)]), [CONST_instr($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, $extend__(v_n, $size($numtype_addrtype(v_Inn)), v_sx, c)))]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_n), v_sx))), x, ao)]), [CONST_instr($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, $extend__(v_n, $size($numtype_addrtype(v_Inn)), v_sx, c)))]) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(v_n, c) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, `%_%`_loadop_Inn(`%`_sz(v_n), v_sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, $extend__(v_n, $size($numtype_addrtype(v_Inn)), v_sx, c)))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(v_n, c)} + -- wf_meminst: `%`($fun_mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_oob{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($fun_mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_val{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_meminst: `%`($fun_mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_pack_oob{z : state, at : addrtype, i : num_, v_M : M, v_K : K, v_sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(v_M), v_K, v_sx)), x, ao)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_K, v_sx)), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((v_M * v_K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(v_M), v_K, v_sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($fun_mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_pack_val{z : state, at : addrtype, i : num_, v_M : M, v_K : K, v_sx : sx, x : idx, ao : memarg, c : vec_, j_lst : iN*, v_Jnn : Jnn}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(v_M), v_K, v_sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_K, v_sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((v_M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(v_N))), x, ao)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(v_N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($fun_mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_splat_val{z : state, at : addrtype, i : num_, v_N : N, x : idx, ao : memarg, c : vec_, j : iN, v_Jnn : Jnn, v_M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(v_N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(v_N, j) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (v_N = $jsize(v_Jnn)) -- if ((v_M : nat <:> rat) = ((128 : nat <:> rat) / (v_N : nat <:> rat))) - -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), mk_lane__2_lane_(v_Jnn, `%`_uN($proj_uN_0(j).0))^v_M{})) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(v_N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(v_Jnn, `%`_uN($proj_uN_0(j).0))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(v_Jnn, mk_uN_uN($proj_uN_0(j).0))^v_M{})) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(v_N, j)} + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(v_Jnn, mk_uN_uN($proj_uN_0(j).0))^v_M{})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(v_Jnn, mk_uN_uN($proj_uN_0(j).0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_zero_oob{z : state, at : addrtype, i : num_, v_N : N, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(v_N))), x, ao)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, ao)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(v_N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($fun_mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_zero_val{z : state, at : addrtype, i : num_, v_N : N, x : idx, ao : memarg, c : vec_, j : iN}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(v_N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(v_N, j) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(v_N, 128, U_sx, j)) -- wf_uN: `%%`(v_N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(v_N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(v_N, j)} + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_uN: `%%`(128, $extend__(v_N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_lane_oob{z : state, at : addrtype, i : num_, c_1 : vec_, v_N : N, x : idx, ao : memarg, j : laneidx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(v_N), x, ao, j)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(v_N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($fun_mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vload_lane_val{z : state, at : addrtype, i : num_, c_1 : vec_, v_N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, v_Jnn : Jnn, v_M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(v_N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(v_N, k) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (v_N = $jsize(v_Jnn)) -- if ((v_M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (v_N : nat <:> rat))) - -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), $lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(v_Jnn, `%`_uN($proj_uN_0(k).0))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(v_N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))) - -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M))), mk_lane__2_lane_(v_Jnn, `%`_uN($proj_uN_0(k).0))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), $lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(v_Jnn, mk_uN_uN($proj_uN_0(k).0))])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(v_N, k)} + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), $lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(v_Jnn, mk_uN_uN($proj_uN_0(k).0))])) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c_1)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(v_Jnn, mk_uN_uN($proj_uN_0(k).0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_size{z : state, x : idx, at : addrtype, v_n : n, lim : limits}: - `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n)))]) + `%~>%`(mk_config_config(z, [MEMORY_SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n)))]) -- if ((v_n * (64 * $Ki)) = |$fun_mem(z, x).BYTES_meminst|) -- if ($fun_mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) - -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n)))) + -- wf_meminst: `%`($fun_mem(z, x)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_fill_oob{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($fun_mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_fill_zero{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.FILL`_instr(x)]), []) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)]), []) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) -- if (v_n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_fill_succ{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) -- if (v_n =/= 0) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.FILL`_instr(x)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_oob{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [TRAP_instr]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($fun_mem(z, x_1)) + -- wf_meminst: `%`($fun_mem(z, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_zero{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)]), []) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), []) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|)) -- if (v_n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_le{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if (v_n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|)) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_gt{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) -- if (v_n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(v_n))) `MEMORY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_init_oob{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_datainst: `%`($fun_data(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_init_zero{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `MEMORY.INIT`_instr(x, y)]), []) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)]), []) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_data(z, y).BYTES_datainst|)) -- if (v_n = 0) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `MEMORY.INIT`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_init_succ{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN($proj_byte_0($fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_INIT_instr(x, y)]) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$fun_data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if (v_n =/= 0) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_data(z, y).BYTES_datainst|)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `MEMORY.INIT`_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_null{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL`_instr(ht)])) - -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + `%~>%`(mk_config_config(z, [REF_NULL_instr(ht)]), [REF_NULL_ADDR_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_func{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) + `%~>%`(mk_config_config(z, [REF_FUNC_instr(x)]), [REF_FUNC_ADDR_instr($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) -- if ($proj_uN_0(x).0 < |$fun_moduleinst(z).FUNCS_moduleinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) - -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_test_true{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) -- Ref_ok: `%|-%:%`(s, v_ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_test_false{s : store, f : frame, v_ref : ref, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- ~ Step_read_before_ref_test_false: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.TEST`_instr(rt)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.TEST`_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))]) + -- ~ Step_read_before_ref_test_false: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_cast_succeed{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.CAST`_instr(rt)]), [$instr_ref(v_ref)]) + `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)]), [$instr_ref(v_ref)]) -- Ref_ok: `%|-%:%`(s, v_ref, rt') -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', $inst_reftype(f.MODULE_frame, rt)) -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.CAST`_instr(rt)])) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_cast_fail{s : store, f : frame, v_ref : ref, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.CAST`_instr(rt)]), [TRAP_instr]) - -- ~ Step_read_before_ref_cast_fail: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.CAST`_instr(rt)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(v_ref) `REF.CAST`_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) + `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)]), [TRAP_instr]) + -- ~ Step_read_before_ref_cast_fail: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct_new_default{z : state, x : idx, val_lst : val*, mut_opt_lst : mut?*, zt_lst : storagetype*}: - `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), $instr_val(v_val)*{v_val <- val_lst} ++ [`STRUCT.NEW`_instr(x)]) - -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + `%~>%`(mk_config_config(z, [STRUCT_NEW_DEFAULT_instr(x)]), $instr_val(v_val)*{v_val <- val_lst} ++ [STRUCT_NEW_instr(x)]) + -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if (|val_lst| = |zt_lst|) -- (if ($default_($unpack(zt)) =/= ?()))*{zt <- zt_lst} -- (if (!($default_($unpack(zt))) = ?(v_val)))*{v_val <- val_lst, zt <- zt_lst} - -- (wf_val: `%`(v_val))*{v_val <- val_lst} - -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))}*{zt <- zt_lst} + -- (wf_valtype: `%`($unpack(zt)))*{zt <- zt_lst} + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct_get_null{z : state, sx_opt : sx?, x : idx, i : fieldidx}: - `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx_opt, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx_opt, x, i)])) - -- wf_instr: `%`(TRAP_instr) + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr STRUCT_GET_instr(sx_opt, x, i)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct_get_struct{z : state, a : addr, sx_opt : sx?, x : idx, i : fieldidx, zt_lst : storagetype*, mut_opt_lst : mut?*}: - `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx_opt, x, i)]), [$instr_val(!($unpackfield_(zt_lst[$proj_uN_0(i).0], sx_opt, $fun_structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])))]) + `%~>%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) STRUCT_GET_instr(sx_opt, x, i)]), [$instr_val(!($unpackfield_(zt_lst[$proj_uN_0(i).0], sx_opt, $fun_structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])))]) -- if ($unpackfield_(zt_lst[$proj_uN_0(i).0], sx_opt, $fun_structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]) =/= ?()) -- if ($proj_uN_0(i).0 < |zt_lst|) -- if ($proj_uN_0(i).0 < |$fun_structinst(z)[a].FIELDS_structinst|) -- if (a < |$fun_structinst(z)|) - -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx_opt, x, i)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new_default{z : state, v_n : n, x : idx, v_val : val, mut_opt : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_DEFAULT`_instr(x)]), $instr_val(v_val)^v_n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))]) - -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DEFAULT_instr(x)]), $instr_val(v_val)^v_n{} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($default_($unpack(zt)) =/= ?()) -- if (!($default_($unpack(zt))) = ?(v_val)) - -- wf_val: `%`(v_val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_DEFAULT`_instr(x)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))} + -- wf_valtype: `%`($unpack(zt)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new_elem_oob{z : state, i : num_, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_ELEM_instr(x, y)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($fun_elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new_elem_alloc{z : state, i : num_, v_n : n, x : idx, y : idx, ref_lst : ref*}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_ELEM`_instr(x, y)]), $instr_ref(v_ref)^v_n{v_ref <- ref_lst} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))]) + `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_ELEM_instr(x, y)]), $instr_ref(v_ref)^v_n{v_ref <- ref_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) -- if ($proj_num__0(i) =/= ?()) -- if (ref_lst = $fun_elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : v_n]) - -- (wf_ref: `%`(v_ref))*{v_ref <- ref_lst} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))) + -- wf_eleminst: `%`($fun_elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new_data_oob{z : state, i : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) - -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(i) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- wf_datainst: `%`($fun_data(z, y)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new_data_num{z : state, i : num_, v_n : n, x : idx, y : idx, zt : storagetype, c_lst : lit_*, mut_opt : mut?}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^v_n{c <- c_lst} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))]) + `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^v_n{c <- c_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) -- (if ($cunpack(zt) =/= ?()))^v_n{} - -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($zsize(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^v_n{c <- c_lst}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- (wf_lit_: `%%`(zt, c))*{c <- c_lst} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.NEW_DATA`_instr(x, y)])) - -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- (wf_byte: `%`(iter))*{iter <- $concatn_(syntax byte, $zbytes_(zt, c)^v_n{c <- c_lst}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))} + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)}^v_n{c <- c_lst} + -- wf_datainst: `%`($fun_data(z, y)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_get_null{z : state, i : num_, sx_opt : sx?, x : idx}: - `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx_opt, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx_opt, x)])) - -- wf_instr: `%`(TRAP_instr) + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_get_oob{z : state, a : addr, i : num_, sx_opt : sx?, x : idx}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx_opt, x)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx_opt, x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_get_array{z : state, a : addr, i : num_, sx_opt : sx?, x : idx, zt : storagetype, mut_opt : mut?}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx_opt, x)]), [$instr_val(!($unpackfield_(zt, sx_opt, $fun_arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])))]) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)]), [$instr_val(!($unpackfield_(zt, sx_opt, $fun_arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])))]) -- if ($unpackfield_(zt, sx_opt, $fun_arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$fun_arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) - -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx_opt, x)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_len_null{z : state}: - `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr])) - -- wf_instr: `%`(TRAP_instr) + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr ARRAY_LEN_instr]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_len_array{z : state, a : addr}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$fun_arrayinst(z)[a].FIELDS_arrayinst|)))]) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) ARRAY_LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(|$fun_arrayinst(z)[a].FIELDS_arrayinst|)))]) -- if (a < |$fun_arrayinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$fun_arrayinst(z)[a].FIELDS_arrayinst|)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_fill_null{z : state, i : num_, v_val : val, v_n : n, x : idx}: - `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_fill_oob{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_fill_zero{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.FILL`_instr(x)]), []) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$fun_arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)]), []) + -- ~ Step_read_before_array_fill_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) -- if (v_n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.FILL`_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_fill_succ{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)]), [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x) REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) - -- if (v_n =/= 0) - -- if (a < |$fun_arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.FILL`_instr(x)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + -- ~ Step_read_before_array_fill_succ: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_null1{z : state, i_1 : num_, v_ref : ref, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(v_ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(v_ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i_1) $instr_ref(v_ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_null2{z : state, v_ref : ref, i_1 : num_, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [$instr_ref(v_ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [$instr_ref(v_ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + `%~>%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr(I32_numtype, i_1) REF_NULL_ADDR_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [TRAP_instr]) -- if ($proj_num__0(i_1) =/= ?()) -- if (a_1 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_oob2{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [TRAP_instr]) -- if ($proj_num__0(i_2) =/= ?()) -- if (a_2 < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_zero{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)]), []) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$fun_arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$fun_arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), []) + -- ~ Step_read_before_array_copy_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- if (v_n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_le{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx_opt, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY_GET_instr(sx_opt, x_2) ARRAY_SET_instr(x_1) REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- if (v_n =/= 0) - -- if (a_2 < |$fun_arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) - -- if (a_1 < |$fun_arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) - -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) + -- ~ Step_read_before_array_copy_le: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) -- if ($fun_sx(zt_2) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = !($fun_sx(zt_2)))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx_opt, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_gt{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.GET`_instr(sx_opt, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_GET_instr(sx_opt, x_2) ARRAY_SET_instr(x_1) REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) - -- ~ Step_read_before_array_copy_gt: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) + -- ~ Step_read_before_array_copy_gt: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) -- if ($fun_sx(zt_2) =/= ?()) -- if (sx_opt = !($fun_sx(zt_2))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.COPY`_instr(x_1, x_2)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.GET`_instr(sx_opt, x_2)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt_2))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_null{z : state, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_oob1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_oob2{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), [TRAP_instr]) -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- wf_eleminst: `%`($fun_elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_zero{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_ELEM`_instr(x, y)]), []) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$fun_arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), []) + -- ~ Step_read_before_array_init_elem_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) -- if (v_n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_ELEM`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_succ{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, v_ref : ref}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_ref(v_ref) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_ref(v_ref) ARRAY_SET_instr(x) REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_INIT_ELEM_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) - -- if (v_n =/= 0) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|) - -- if (a < |$fun_arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + -- ~ Step_read_before_array_init_elem_succ: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$fun_elem(z, y).REFS_eleminst|) -- if (v_ref = $fun_elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) - -- wf_ref: `%`(v_ref) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_ELEM`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- wf_eleminst: `%`($fun_elem(z, y)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_null{z : state, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), [TRAP_instr]) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob2{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) - -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) -- if ($zsize(zt) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- wf_datainst: `%`($fun_data(z, y)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_zero{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)]), []) - -- ~ Step_read_before_array_init_data_zero: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), []) + -- ~ Step_read_before_array_init_data_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) -- if (v_n = 0) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_num{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, zt : storagetype, c : lit_, mut_opt : mut?}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY_SET_instr(x) REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_INIT_DATA_instr(x, y)]) -- if ($cunpack(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) -- if ($zsize(zt) =/= ?()) - -- ~ Step_read_before_array_init_data_num: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- ~ Step_read_before_array_init_data_num: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($zbytes_(zt, c) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `ARRAY.INIT_DATA`_instr(x, y)])) - -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(`ARRAY.SET`_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)} + -- wf_datainst: `%`($fun_data(z, y)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rec { @@ -14600,269 +15194,226 @@ rec { relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, instr_lst : instr*, instr'_lst : instr*}: - `%~>%`(`%;%`_config(z, instr_lst), `%;%`_config(z, instr'_lst)) + `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z, instr'_lst)) -- Step_pure: `%~>%`(instr_lst, instr'_lst) - -- wf_config: `%`(`%;%`_config(z, instr_lst)) - -- wf_config: `%`(`%;%`_config(z, instr'_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, instr_lst : instr*, instr'_lst : instr*}: - `%~>%`(`%;%`_config(z, instr_lst), `%;%`_config(z, instr'_lst)) - -- Step_read: `%~>%`(`%;%`_config(z, instr_lst), instr'_lst) - -- wf_config: `%`(`%;%`_config(z, instr_lst)) - -- wf_config: `%`(`%;%`_config(z, instr'_lst)) + `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z, instr'_lst)) + -- Step_read: `%~>%`(mk_config_config(z, instr_lst), instr'_lst) + -- wf_config: `%`(mk_config_config(z, instr_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 rule ctxt_instrs{z : state, val_lst : val*, instr_lst : instr*, instr_1_lst : instr*, z' : state, instr'_lst : instr*}: - `%~>%`(`%;%`_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ instr_lst ++ instr_1_lst), `%;%`_config(z', $instr_val(v_val)*{v_val <- val_lst} ++ instr'_lst ++ instr_1_lst)) - -- Step: `%~>%`(`%;%`_config(z, instr_lst), `%;%`_config(z', instr'_lst)) + `%~>%`(mk_config_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ instr_lst ++ instr_1_lst), mk_config_config(z', $instr_val(v_val)*{v_val <- val_lst} ++ instr'_lst ++ instr_1_lst)) + -- Step: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z', instr'_lst)) -- if ((val_lst =/= []) \/ (instr_1_lst =/= [])) - -- wf_config: `%`(`%;%`_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ instr_lst ++ instr_1_lst)) - -- wf_config: `%`(`%;%`_config(z', $instr_val(v_val)*{v_val <- val_lst} ++ instr'_lst ++ instr_1_lst)) - -- wf_config: `%`(`%;%`_config(z, instr_lst)) - -- wf_config: `%`(`%;%`_config(z', instr'_lst)) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z', instr'_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 rule ctxt_label{z : state, v_n : n, instr_0_lst : instr*, instr_lst : instr*, z' : state, instr'_lst : instr*}: - `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(v_n, instr_0_lst, instr_lst)]), `%;%`_config(z', [`LABEL_%{%}%`_instr(v_n, instr_0_lst, instr'_lst)])) - -- Step: `%~>%`(`%;%`_config(z, instr_lst), `%;%`_config(z', instr'_lst)) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(v_n, instr_0_lst, instr_lst)])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(v_n, instr_0_lst, instr'_lst)])) - -- wf_config: `%`(`%;%`_config(z, instr_lst)) - -- wf_config: `%`(`%;%`_config(z', instr'_lst)) + `%~>%`(mk_config_config(z, [`LABEL_%{%}%`_instr(v_n, instr_0_lst, instr_lst)]), mk_config_config(z', [`LABEL_%{%}%`_instr(v_n, instr_0_lst, instr'_lst)])) + -- Step: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z', instr'_lst)) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z', instr'_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.36 rule ctxt_handler{z : state, v_n : n, catch_lst : catch*, instr_lst : instr*, z' : state, instr'_lst : instr*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, catch_lst, instr_lst)]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(v_n, catch_lst, instr'_lst)])) - -- Step: `%~>%`(`%;%`_config(z, instr_lst), `%;%`_config(z', instr'_lst)) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(v_n, catch_lst, instr_lst)])) - -- wf_config: `%`(`%;%`_config(z', [`HANDLER_%{%}%`_instr(v_n, catch_lst, instr'_lst)])) - -- wf_config: `%`(`%;%`_config(z, instr_lst)) - -- wf_config: `%`(`%;%`_config(z', instr'_lst)) + `%~>%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, catch_lst, instr_lst)]), mk_config_config(z', [`HANDLER_%{%}%`_instr(v_n, catch_lst, instr'_lst)])) + -- Step: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z', instr'_lst)) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z', instr'_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:45.1-47.45 rule ctxt_frame{s : store, f : frame, v_n : n, f' : frame, instr_lst : instr*, s' : store, f'' : frame, instr'_lst : instr*}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(v_n, f', instr_lst)]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(v_n, f'', instr'_lst)])) - -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr_lst), `%;%`_config(`%;%`_state(s', f''), instr'_lst)) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(v_n, f', instr_lst)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(v_n, f'', instr'_lst)])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr_lst)) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'_lst)) + `%~>%`(mk_config_config(mk_state_state(s, f), [`FRAME_%{%}%`_instr(v_n, f', instr_lst)]), mk_config_config(mk_state_state(s', f), [`FRAME_%{%}%`_instr(v_n, f'', instr'_lst)])) + -- Step: `%~>%`(mk_config_config(mk_state_state(s, f'), instr_lst), mk_config_config(mk_state_state(s', f''), instr'_lst)) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f'), instr_lst)) + -- wf_config: `%`(mk_config_config(mk_state_state(s', f''), instr'_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:231.1-235.49 rule throw{z : state, v_n : n, val_lst : val*, x : idx, exn : exninst, a : addr, t_lst : valtype*}: - `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [THROW_instr(x)]), mk_config_config($add_exninst(z, [exn]), [REF_EXN_ADDR_instr(a) THROW_REF_instr])) -- if ($as_deftype($fun_tag(z, x).TYPE_taginst) =/= ?()) - -- Expand: `%~~%`(!($as_deftype($fun_tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype($fun_tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if (a = |$fun_exninst(z)|) -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) -- if (exn = {TAG $fun_tagaddr(z)[$proj_uN_0(x).0], FIELDS val_lst}) - -- wf_config: `%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) + -- wf_taginst: `%`($fun_tag(z, x)) + -- (wf_exninst: `%`(iter))*{iter <- $fun_exninst(z)} + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- wf_exninst: `%`({TAG $fun_tagaddr(z)[$proj_uN_0(x).0], FIELDS val_lst}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:309.1-310.56 rule local_set{z : state, v_val : val, x : idx}: - `%~>%`(`%;%`_config(z, [$instr_val(v_val) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, v_val), [])) - -- wf_config: `%`(`%;%`_config(z, [$instr_val(v_val) `LOCAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, v_val), [])) + `%~>%`(mk_config_config(z, [$instr_val(v_val) LOCAL_SET_instr(x)]), mk_config_config($with_local(z, x, v_val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:322.1-323.58 rule global_set{z : state, v_val : val, x : idx}: - `%~>%`(`%;%`_config(z, [$instr_val(v_val) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, v_val), [])) - -- wf_config: `%`(`%;%`_config(z, [$instr_val(v_val) `GLOBAL.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, v_val), [])) + `%~>%`(mk_config_config(z, [$instr_val(v_val) GLOBAL_SET_instr(x)]), mk_config_config($with_global(z, x, v_val), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.33 rule table_set_oob{z : state, at : addrtype, i : num_, v_ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)]), mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_tableinst: `%`($fun_table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:340.1-342.32 rule table_set_val{z : state, at : addrtype, i : num_, v_ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, v_ref), [])) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)]), mk_config_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, v_ref), [])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_table(z, x).REFS_tableinst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) `TABLE.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, v_ref), [])) + -- wf_tableinst: `%`($fun_table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-354.46 rule table_grow_succeed{z : state, v_ref : ref, at : addrtype, v_n : n, x : idx, ti : tableinst}: - `%~>%`(`%;%`_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$fun_table(z, x).REFS_tableinst|)))])) + `%~>%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)]), mk_config_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(|$fun_table(z, x).REFS_tableinst|)))])) -- if ($growtable($fun_table(z, x), v_n, v_ref) =/= ?()) -- if (ti = !($growtable($fun_table(z, x), v_n, v_ref))) - -- wf_config: `%`(`%;%`_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$fun_table(z, x).REFS_tableinst|)))])) + -- wf_tableinst: `%`(!($growtable($fun_table(z, x), v_n, v_ref))) + -- wf_tableinst: `%`($fun_table(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:356.1-357.87 rule table_grow_fail{z : state, v_ref : ref, at : addrtype, v_n : n, x : idx}: - `%~>%`(`%;%`_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `TABLE.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + `%~>%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)]), mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:417.1-418.51 rule elem_drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) + `%~>%`(mk_config_config(z, [ELEM_DROP_instr(x)]), mk_config_config($with_elem(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:501.1-504.60 rule store_num_oob{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($fun_mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:506.1-510.29 rule store_num_val{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, b_lst : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if ($proj_num__0(i) =/= ?()) -- if (b_lst = $nbytes_(nt, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.52 rule store_pack_oob{z : state, at : addrtype, i : num_, v_Inn : Inn, c : num_, v_n : n, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, `%`_storeop_Inn(`%`_sz(v_n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)]), mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, `%`_storeop_Inn(`%`_sz(v_n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($fun_mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.52 rule store_pack_val{z : state, at : addrtype, i : num_, v_Inn : Inn, c : num_, v_n : n, x : idx, ao : memarg, b_lst : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, `%`_storeop_Inn(`%`_sz(v_n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(c) =/= ?()) -- if (b_lst = $ibytes_(v_n, $wrap__($size($numtype_addrtype(v_Inn)), v_n, !($proj_num__0(c))))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, `%`_storeop_Inn(`%`_sz(v_n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(v_n, $wrap__($size($numtype_addrtype(v_Inn)), v_n, !($proj_num__0(c))))} + -- wf_uN: `%%`(v_n, $wrap__($size($numtype_addrtype(v_Inn)), v_n, !($proj_num__0(c)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.63 rule vstore_oob{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($fun_mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-531.31 rule vstore_val{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, b_lst : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if ($proj_num__0(i) =/= ?()) -- if (b_lst = $vbytes_(V128_vectype, c)) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:534.1-537.50 rule vstore_lane_oob{z : state, at : addrtype, i : num_, c : vec_, v_N : N, x : idx, ao : memarg, j : laneidx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(v_N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + v_N) > |$fun_mem(z, x).BYTES_meminst|) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(v_N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- wf_meminst: `%`($fun_mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-544.49 rule vstore_lane_val{z : state, at : addrtype, i : num_, c : vec_, v_N : N, x : idx, ao : memarg, j : laneidx, b_lst : byte*, v_Jnn : Jnn, v_M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(v_N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) -- if ($proj_num__0(i) =/= ?()) -- if (v_N = $jsize(v_Jnn)) -- if ((v_M : nat <:> rat) = ((128 : nat <:> rat) / (v_N : nat <:> rat))) - -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), c)[$proj_uN_0(j).0]) =/= ?()) - -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), c)|) - -- if (b_lst = $ibytes_(v_N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), c)[$proj_uN_0(j).0]))).0))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(v_N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) - -- wf_uN: `%%`(v_N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), `%`_dim(v_M)), c)[$proj_uN_0(j).0]))).0)) + -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]) =/= ?()) + -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)|) + -- if (b_lst = $ibytes_(v_N, mk_uN_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]))).0))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(v_N, mk_uN_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]))).0))} + -- wf_uN: `%%`(v_N, mk_uN_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]))).0)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:553.1-556.37 rule memory_grow_succeed{z : state, at : addrtype, v_n : n, x : idx, mi : meminst}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$fun_mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)]), mk_config_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((|$fun_mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- if ($growmem($fun_mem(z, x), v_n) =/= ?()) -- if (mi = !($growmem($fun_mem(z, x), v_n))) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$fun_mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_meminst: `%`(!($growmem($fun_mem(z, x), v_n))) + -- wf_meminst: `%`($fun_mem(z, x)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:558.1-559.84 rule memory_grow_fail{z : state, at : addrtype, v_n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(v_n))) `MEMORY.GROW`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)]), mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:619.1-620.51 rule data_drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) + `%~>%`(mk_config_config(z, [DATA_DROP_instr(x)]), mk_config_config($with_data(z, x, []), [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:700.1-704.65 rule struct_new{z : state, v_n : n, val_lst : val*, x : idx, si : structinst, a : addr, mut_opt_lst : mut?*, zt_lst : storagetype*}: - `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) - -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)^v_n{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [STRUCT_NEW_instr(x)]), mk_config_config($add_structinst(z, [si]), [REF_STRUCT_ADDR_instr(a)])) + -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)^v_n{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if (a = |$fun_structinst(z)|) -- (if ($packfield_(zt, v_val) =/= ?()))^v_n{v_val <- val_lst, zt <- zt_lst} -- if (si = {TYPE $fun_type(z, x), FIELDS !($packfield_(zt, v_val))^v_n{v_val <- val_lst, zt <- zt_lst}}) - -- wf_config: `%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [`STRUCT.NEW`_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)^v_n{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- (wf_structinst: `%`(iter))*{iter <- $fun_structinst(z)} + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)^v_n{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- wf_structinst: `%`({TYPE $fun_type(z, x), FIELDS !($packfield_(zt, v_val))^v_n{v_val <- val_lst, zt <- zt_lst}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:721.1-722.55 rule struct_set_null{z : state, v_val : val, x : idx, i : fieldidx}: - `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(v_val) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(v_val) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr $instr_val(v_val) STRUCT_SET_instr(x, i)]), mk_config_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:724.1-727.46 rule struct_set_struct{z : state, a : addr, v_val : val, x : idx, i : fieldidx, zt_lst : storagetype*, mut_opt_lst : mut?*}: - `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(v_val) `STRUCT.SET`_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt_lst[$proj_uN_0(i).0], v_val))), [])) + `%~>%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) $instr_val(v_val) STRUCT_SET_instr(x, i)]), mk_config_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt_lst[$proj_uN_0(i).0], v_val))), [])) -- if ($packfield_(zt_lst[$proj_uN_0(i).0], v_val) =/= ?()) -- if ($proj_uN_0(i).0 < |zt_lst|) - -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) - -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(v_val) `STRUCT.SET`_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt_lst[$proj_uN_0(i).0], v_val))), [])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:740.1-745.65 rule array_new_fixed{z : state, v_n : n, val_lst : val*, x : idx, ai : arrayinst, a : addr, mut_opt : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))]), `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) - -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]), mk_config_config($add_arrayinst(z, [ai]), [REF_ARRAY_ADDR_instr(a)])) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- (if ($packfield_(zt, v_val) =/= ?()))^v_n{v_val <- val_lst} -- if ((a = |$fun_arrayinst(z)|) /\ (ai = {TYPE $fun_type(z, x), FIELDS !($packfield_(zt, v_val))^v_n{v_val <- val_lst}})) - -- wf_config: `%`(`%;%`_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- wf_arrayinst: `%`({TYPE $fun_type(z, x), FIELDS !($packfield_(zt, v_val))^v_n{v_val <- val_lst}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-786.66 rule array_set_null{z : state, i : num_, v_val : val, x : idx}: - `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(v_val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(v_val) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)]), mk_config_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:788.1-790.39 rule array_set_oob{z : state, a : addr, i : num_, v_val : val, x : idx}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)]), mk_config_config(z, [TRAP_instr])) -- if ($proj_num__0(i) =/= ?()) -- if (a < |$fun_arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-795.44 rule array_set_array{z : state, a : addr, i : num_, v_val : val, x : idx, zt : storagetype, mut_opt : mut?}: - `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, v_val))), [])) + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)]), mk_config_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, v_val))), [])) -- if ($proj_num__0(i) =/= ?()) -- if ($packfield_(zt, v_val) =/= ?()) - -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) - -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) `ARRAY.SET`_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, v_val))), [])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) } ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14872,17 +15423,16 @@ rec { relation Steps: `%~>*%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, instr_lst : instr*}: - `%~>*%`(`%;%`_config(z, instr_lst), `%;%`_config(z, instr_lst)) - -- wf_config: `%`(`%;%`_config(z, instr_lst)) + `%~>*%`(mk_config_config(z, instr_lst), mk_config_config(z, instr_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, instr_lst : instr*, z'' : state, instr''_lst : instr*, z' : state, instr'_lst : instr*}: - `%~>*%`(`%;%`_config(z, instr_lst), `%;%`_config(z'', instr''_lst)) - -- Step: `%~>%`(`%;%`_config(z, instr_lst), `%;%`_config(z', instr'_lst)) - -- Steps: `%~>*%`(`%;%`_config(z', instr'_lst), `%;%`_config(z'', instr''_lst)) - -- wf_config: `%`(`%;%`_config(z, instr_lst)) - -- wf_config: `%`(`%;%`_config(z'', instr''_lst)) - -- wf_config: `%`(`%;%`_config(z', instr'_lst)) + `%~>*%`(mk_config_config(z, instr_lst), mk_config_config(z'', instr''_lst)) + -- Step: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z', instr'_lst)) + -- Steps: `%~>*%`(mk_config_config(z', instr'_lst), mk_config_config(z'', instr''_lst)) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z', instr'_lst)) + -- wf_config: `%`(mk_config_config(z'', instr''_lst)) } ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14890,9 +15440,9 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule mk_Eval_expr{z : state, instr_lst : instr*, z' : state, val_lst : val*}: `%;%~>*%;%`(z, instr_lst, z', val_lst) - -- Steps: `%~>*%`(`%;%`_config(z, instr_lst), `%;%`_config(z', $instr_val(v_val)*{v_val <- val_lst})) - -- wf_config: `%`(`%;%`_config(z, instr_lst)) - -- wf_config: `%`(`%;%`_config(z', $instr_val(v_val)*{v_val <- val_lst})) + -- Steps: `%~>*%`(mk_config_config(z, instr_lst), mk_config_config(z', $instr_val(v_val)*{v_val <- val_lst})) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z', $instr_val(v_val)*{v_val <- val_lst})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14905,7 +15455,7 @@ def $alloctypes(var_0 : type*) : deftype* def $alloctypes{type'_lst : type*, v_type : type, deftype_lst : deftype*, x : uN}(type'_lst ++ [v_type]) = deftype'_lst ++ deftype_lst -- let{deftype'_lst : deftype*} deftype'_lst = $alloctypes(type'_lst) -- let{v_rectype : rectype} TYPE_type(v_rectype) = v_type - -- if (deftype_lst = $subst_all_deftypes($rolldt(x, v_rectype), $typeuse_deftype(deftype'#2)*{deftype'#2 <- deftype'_lst})) + -- if (deftype_lst = $subst_all_deftypes($rolldt(x, v_rectype), $typeuse_deftype(deftype'_2)*{deftype'_2 <- deftype'_lst})) -- if ($proj_uN_0(x).0 = |deftype'_lst|) -- wf_uN: `%%`(32, x) } @@ -14915,9 +15465,18 @@ def $alloctag(v_store : store, v_tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctag{s : store, v_tagtype : typeuse, v_taginst : taginst}(s, v_tagtype) = (s +++ {TAGS [v_taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) -- if (v_taginst = {TYPE v_tagtype}) - -- wf_store: `%`({TAGS [v_taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_taginst: `%`({TYPE v_tagtype}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctag_is_wf: `%%%`(v_store : store, v_tagtype : tagtype, ret_val : (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctag_is_wf0{v_store : store, v_tagtype : tagtype, ret_val : (store, tagaddr)}: + `%%%`(v_store, v_tagtype, ret_val) + -- wf_store: `%`(v_store) + -- wf_typeuse: `%`(v_tagtype) + -- if (ret_val = $alloctag(v_store, v_tagtype)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14929,6 +15488,22 @@ def $alloctags(v_store : store, var_0 : tagtype*) : (store, tagaddr*) def $alloctags{s : store, v_tagtype : typeuse, tagtype'_lst : tagtype*}(s, [v_tagtype] ++ tagtype'_lst) = (s_2, [ja] ++ ja'_lst) -- let{ja : tagaddr, s_1 : store} (s_1, ja) = $alloctag(s, v_tagtype) -- let{s_2 : store, ja'_lst : tagaddr*} (s_2, ja'_lst) = $alloctags(s_1, tagtype'_lst) + -- wf_store: `%`($alloctag(s, v_tagtype).0) + -- wf_store: `%`($alloctags(s_1, tagtype'_lst).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation alloctags_is_wf: `%%%`(v_store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule alloctags_is_wf0{v_store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)}: + `%%%`(v_store, var_0, ret_val) + -- wf_store: `%`(v_store) + -- (wf_typeuse: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $alloctags(v_store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14936,9 +15511,19 @@ def $allocglobal(v_store : store, v_globaltype : globaltype, v_val : val) : (sto ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocglobal{s : store, v_globaltype : globaltype, v_val : val, v_globalinst : globalinst}(s, v_globaltype, v_val) = (s +++ {TAGS [], GLOBALS [v_globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) -- if (v_globalinst = {TYPE v_globaltype, VALUE v_val}) - -- wf_store: `%`({TAGS [], GLOBALS [v_globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_globalinst: `%`({TYPE v_globaltype, VALUE v_val}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocglobal_is_wf: `%%%%`(v_store : store, v_globaltype : globaltype, v_val : val, ret_val : (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocglobal_is_wf0{v_store : store, v_globaltype : globaltype, v_val : val, ret_val : (store, globaladdr)}: + `%%%%`(v_store, v_globaltype, v_val, ret_val) + -- wf_store: `%`(v_store) + -- wf_globaltype: `%`(v_globaltype) + -- wf_val: `%`(v_val) + -- if (ret_val = $allocglobal(v_store, v_globaltype, v_val)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14950,15 +15535,41 @@ def $allocglobals(v_store : store, var_0 : globaltype*, var_1 : val*) : (store, def $allocglobals{s : store, v_globaltype : globaltype, globaltype'_lst : globaltype*, v_val : val, val'_lst : val*}(s, [v_globaltype] ++ globaltype'_lst, [v_val] ++ val'_lst) = (s_2, [ga] ++ ga'_lst) -- let{ga : globaladdr, s_1 : store} (s_1, ga) = $allocglobal(s, v_globaltype, v_val) -- let{s_2 : store, ga'_lst : globaladdr*} (s_2, ga'_lst) = $allocglobals(s_1, globaltype'_lst, val'_lst) + -- wf_store: `%`($allocglobal(s, v_globaltype, v_val).0) + -- wf_store: `%`($allocglobals(s_1, globaltype'_lst, val'_lst).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation allocglobals_is_wf: `%%%%`(v_store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule allocglobals_is_wf0{v_store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)}: + `%%%%`(v_store, var_0, var_1, ret_val) + -- wf_store: `%`(v_store) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $allocglobals(v_store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem(v_store : store, v_memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmem{s : store, at : addrtype, i : uN, j_opt : u64?, v_meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j_opt))) = (s +++ {TAGS [], GLOBALS [], MEMS [v_meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) - -- if (v_meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j_opt)), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [v_meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j_opt)), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + def $allocmem{s : store, at : addrtype, i : uN, j_opt : u64?, v_meminst : meminst}(s, `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt))) = (s +++ {TAGS [], GLOBALS [], MEMS [v_meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- if (v_meminst = {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES mk_byte_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES mk_byte_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmem_is_wf: `%%%`(v_store : store, v_memtype : memtype, ret_val : (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmem_is_wf0{v_store : store, v_memtype : memtype, ret_val : (store, memaddr)}: + `%%%`(v_store, v_memtype, ret_val) + -- wf_store: `%`(v_store) + -- wf_memtype: `%`(v_memtype) + -- if (ret_val = $allocmem(v_store, v_memtype)) + -- wf_store: `%`(ret_val.0) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14971,15 +15582,41 @@ def $allocmems(v_store : store, var_0 : memtype*) : (store, memaddr*) def $allocmems{s : store, v_memtype : memtype, memtype'_lst : memtype*}(s, [v_memtype] ++ memtype'_lst) = (s_2, [ma] ++ ma'_lst) -- let{ma : memaddr, s_1 : store} (s_1, ma) = $allocmem(s, v_memtype) -- let{s_2 : store, ma'_lst : memaddr*} (s_2, ma'_lst) = $allocmems(s_1, memtype'_lst) + -- wf_store: `%`($allocmem(s, v_memtype).0) + -- wf_store: `%`($allocmems(s_1, memtype'_lst).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation allocmems_is_wf: `%%%`(v_store : store, var_0 : memtype*, ret_val : (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule allocmems_is_wf0{v_store : store, var_0 : memtype*, ret_val : (store, memaddr*)}: + `%%%`(v_store, var_0, ret_val) + -- wf_store: `%`(v_store) + -- (wf_memtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocmems(v_store, var_0)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctable(v_store : store, v_tabletype : tabletype, v_ref : ref) : (store, tableaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctable{s : store, at : addrtype, i : uN, j_opt : u64?, rt : reftype, v_ref : ref, v_tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j_opt), rt), v_ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [v_tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) - -- if (v_tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j_opt), rt), REFS v_ref^$proj_uN_0(i).0{}}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [v_tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j_opt), rt), REFS v_ref^$proj_uN_0(i).0{}}) + def $alloctable{s : store, at : addrtype, i : uN, j_opt : u64?, rt : reftype, v_ref : ref, v_tableinst : tableinst}(s, mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), v_ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [v_tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- if (v_tableinst = {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS v_ref^$proj_uN_0(i).0{}}) + -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS v_ref^$proj_uN_0(i).0{}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctable_is_wf: `%%%%`(v_store : store, v_tabletype : tabletype, v_ref : ref, ret_val : (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctable_is_wf0{v_store : store, v_tabletype : tabletype, v_ref : ref, ret_val : (store, tableaddr)}: + `%%%%`(v_store, v_tabletype, v_ref, ret_val) + -- wf_store: `%`(v_store) + -- wf_tabletype: `%`(v_tabletype) + -- wf_ref: `%`(v_ref) + -- if (ret_val = $alloctable(v_store, v_tabletype, v_ref)) + -- wf_store: `%`(ret_val.0) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -14992,6 +15629,23 @@ def $alloctables(v_store : store, var_0 : tabletype*, var_1 : ref*) : (store, ta def $alloctables{s : store, v_tabletype : tabletype, tabletype'_lst : tabletype*, v_ref : ref, ref'_lst : ref*}(s, [v_tabletype] ++ tabletype'_lst, [v_ref] ++ ref'_lst) = (s_2, [ta] ++ ta'_lst) -- let{ta : tableaddr, s_1 : store} (s_1, ta) = $alloctable(s, v_tabletype, v_ref) -- let{s_2 : store, ta'_lst : tableaddr*} (s_2, ta'_lst) = $alloctables(s_1, tabletype'_lst, ref'_lst) + -- wf_store: `%`($alloctable(s, v_tabletype, v_ref).0) + -- wf_store: `%`($alloctables(s_1, tabletype'_lst, ref'_lst).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation alloctables_is_wf: `%%%%`(v_store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule alloctables_is_wf0{v_store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)}: + `%%%%`(v_store, var_0, var_1, ret_val) + -- wf_store: `%`(v_store) + -- (wf_tabletype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $alloctables(v_store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -14999,9 +15653,19 @@ def $allocfunc(v_store : store, v_deftype : deftype, v_funccode : funccode, v_mo ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocfunc{s : store, v_deftype : deftype, v_funccode : funccode, v_moduleinst : moduleinst, v_funcinst : funcinst}(s, v_deftype, v_funccode, v_moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [v_funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) -- if (v_funcinst = {TYPE v_deftype, MODULE v_moduleinst, CODE v_funccode}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [v_funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_funcinst: `%`({TYPE v_deftype, MODULE v_moduleinst, CODE v_funccode}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocfunc_is_wf: `%%%%%`(v_store : store, v_deftype : deftype, v_funccode : funccode, v_moduleinst : moduleinst, ret_val : (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocfunc_is_wf0{v_store : store, v_deftype : deftype, v_funccode : funccode, v_moduleinst : moduleinst, ret_val : (store, funcaddr)}: + `%%%%%`(v_store, v_deftype, v_funccode, v_moduleinst, ret_val) + -- wf_store: `%`(v_store) + -- wf_funccode: `%`(v_funccode) + -- wf_moduleinst: `%`(v_moduleinst) + -- if (ret_val = $allocfunc(v_store, v_deftype, v_funccode, v_moduleinst)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -15013,6 +15677,23 @@ def $allocfuncs(v_store : store, var_0 : deftype*, var_1 : funccode*, var_2 : mo def $allocfuncs{s : store, dt : deftype, dt'_lst : deftype*, v_funccode : funccode, funccode'_lst : funccode*, v_moduleinst : moduleinst, moduleinst'_lst : moduleinst*}(s, [dt] ++ dt'_lst, [v_funccode] ++ funccode'_lst, [v_moduleinst] ++ moduleinst'_lst) = (s_2, [fa] ++ fa'_lst) -- let{fa : funcaddr, s_1 : store} (s_1, fa) = $allocfunc(s, dt, v_funccode, v_moduleinst) -- let{s_2 : store, fa'_lst : funcaddr*} (s_2, fa'_lst) = $allocfuncs(s_1, dt'_lst, funccode'_lst, moduleinst'_lst) + -- wf_store: `%`($allocfunc(s, dt, v_funccode, v_moduleinst).0) + -- wf_store: `%`($allocfuncs(s_1, dt'_lst, funccode'_lst, moduleinst'_lst).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation allocfuncs_is_wf: `%%%%%`(v_store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule allocfuncs_is_wf0{v_store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)}: + `%%%%%`(v_store, var_0, var_1, var_2, ret_val) + -- wf_store: `%`(v_store) + -- (wf_funccode: `%`(var_1))*{var_1 <- var_1} + -- (wf_moduleinst: `%`(var_2))*{var_2 <- var_2} + -- if (ret_val = $allocfuncs(v_store, var_0, var_1, var_2)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15020,9 +15701,18 @@ def $allocdata(v_store : store, v_datatype : datatype, var_0 : byte*) : (store, ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocdata{s : store, byte_lst : byte*, v_datainst : datainst}(s, OK_datatype, byte_lst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [v_datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) -- if (v_datainst = {BYTES byte_lst}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [v_datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_datainst: `%`({BYTES byte_lst}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocdata_is_wf: `%%%%`(v_store : store, v_datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocdata_is_wf0{v_store : store, v_datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)}: + `%%%%`(v_store, v_datatype, var_0, ret_val) + -- wf_store: `%`(v_store) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocdata(v_store, v_datatype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -15034,6 +15724,22 @@ def $allocdatas(v_store : store, var_0 : datatype*, var_1 : byte**) : (store, da def $allocdatas{s : store, ok : datatype, ok'_lst : datatype*, b_lst : byte*, b'_lst_lst : byte**}(s, [ok] ++ ok'_lst, [b_lst] ++ b'_lst_lst) = (s_2, [da] ++ da'_lst) -- let{da : dataaddr, s_1 : store} (s_1, da) = $allocdata(s, ok, b_lst) -- let{s_2 : store, da'_lst : dataaddr*} (s_2, da'_lst) = $allocdatas(s_1, ok'_lst, b'_lst_lst) + -- wf_store: `%`($allocdata(s, ok, b_lst).0) + -- wf_store: `%`($allocdatas(s_1, ok'_lst, b'_lst_lst).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation allocdatas_is_wf: `%%%%`(v_store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule allocdatas_is_wf0{v_store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)}: + `%%%%`(v_store, var_0, var_1, ret_val) + -- wf_store: `%`(v_store) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocdatas(v_store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15041,9 +15747,19 @@ def $allocelem(v_store : store, v_elemtype : elemtype, var_0 : ref*) : (store, e ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocelem{s : store, v_elemtype : reftype, ref_lst : ref*, v_eleminst : eleminst}(s, v_elemtype, ref_lst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [v_eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) -- if (v_eleminst = {TYPE v_elemtype, REFS ref_lst}) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [v_eleminst], STRUCTS [], ARRAYS [], EXNS []}) -- wf_eleminst: `%`({TYPE v_elemtype, REFS ref_lst}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocelem_is_wf: `%%%%`(v_store : store, v_elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocelem_is_wf0{v_store : store, v_elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)}: + `%%%%`(v_store, v_elemtype, var_0, ret_val) + -- wf_store: `%`(v_store) + -- wf_reftype: `%`(v_elemtype) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocelem(v_store, v_elemtype, var_0)) + -- wf_store: `%`(ret_val.0) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -15055,96 +15771,164 @@ def $allocelems(v_store : store, var_0 : elemtype*, var_1 : ref**) : (store, ele def $allocelems{s : store, rt : reftype, rt'_lst : reftype*, ref_lst : ref*, ref'_lst_lst : ref**}(s, [rt] ++ rt'_lst, [ref_lst] ++ ref'_lst_lst) = (s_2, [ea] ++ ea'_lst) -- let{ea : elemaddr, s_1 : store} (s_1, ea) = $allocelem(s, rt, ref_lst) -- let{s_2 : store, ea'_lst : elemaddr*} (s_2, ea'_lst) = $allocelems(s_1, rt'_lst, ref'_lst_lst) + -- wf_store: `%`($allocelem(s, rt, ref_lst).0) + -- wf_store: `%`($allocelems(s_1, rt'_lst, ref'_lst_lst).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation allocelems_is_wf: `%%%%`(v_store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule allocelems_is_wf0{v_store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)}: + `%%%%`(v_store, var_0, var_1, ret_val) + -- wf_store: `%`(v_store) + -- (wf_reftype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocelems(v_store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport(v_moduleinst : moduleinst, v_export : export) : exportinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, TAG_externidx(x))) = {NAME v_name, ADDR TAG_externaddr(v_moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME v_name, ADDR TAG_externaddr(v_moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, GLOBAL_externidx(x))) = {NAME v_name, ADDR GLOBAL_externaddr(v_moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME v_name, ADDR GLOBAL_externaddr(v_moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, MEM_externidx(x))) = {NAME v_name, ADDR MEM_externaddr(v_moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME v_name, ADDR MEM_externaddr(v_moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, TABLE_externidx(x))) = {NAME v_name, ADDR TABLE_externaddr(v_moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME v_name, ADDR TABLE_externaddr(v_moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, FUNC_externidx(x))) = {NAME v_name, ADDR FUNC_externaddr(v_moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME v_name, ADDR FUNC_externaddr(v_moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexport_is_wf: `%%%`(v_moduleinst : moduleinst, v_export : export, ret_val : exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexport_is_wf0{v_moduleinst : moduleinst, v_export : export, ret_val : exportinst}: + `%%%`(v_moduleinst, v_export, ret_val) + -- wf_moduleinst: `%`(v_moduleinst) + -- wf_export: `%`(v_export) + -- if (ret_val = $allocexport(v_moduleinst, v_export)) + -- wf_exportinst: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(v_moduleinst : moduleinst, var_0 : export*) : exportinst* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports{v_moduleinst : moduleinst, export_lst : export*}(v_moduleinst, export_lst) = $allocexport(v_moduleinst, v_export)*{v_export <- export_lst} +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexports_is_wf: `%%%`(v_moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexports_is_wf0{v_moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*}: + `%%%`(v_moduleinst, var_0, ret_val) + -- wf_moduleinst: `%`(v_moduleinst) + -- (wf_export: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocexports(v_moduleinst, var_0)) + -- (wf_exportinst: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule(v_store : store, v_module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, v_module : module, externaddr_lst : externaddr*, val_G_lst : val*, ref_T_lst : ref*, ref_E_lst_lst : ref**, s_7 : store, v_moduleinst : moduleinst, tagtype_lst : tagtype*, expr_G_lst : expr*, globaltype_lst : globaltype*, memtype_lst : memtype*, expr_T_lst : expr*, tabletype_lst : tabletype*, expr_F_lst : expr*, local_lst_lst : local**, x_lst : idx*, byte_lst_lst : byte**, datamode_lst : datamode*, elemmode_lst : elemmode*, elemtype_lst : elemtype*, expr_E_lst_lst : expr**, xi_lst : exportinst*}(s, v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst) = (s_7, v_moduleinst) - -- let{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*} MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst)) = v_module - -- if (tag_lst = TAG_tag(tagtype#78)*{tagtype#78 <- tagtype_lst}) - -- if (global_lst = GLOBAL_global(globaltype#122, expr_G#1)*{expr_G#1 <- expr_G_lst, globaltype#122 <- globaltype_lst}) - -- if (mem_lst = MEMORY_mem(memtype#122)*{memtype#122 <- memtype_lst}) - -- if (table_lst = TABLE_table(tabletype#156, expr_T#1)*{expr_T#1 <- expr_T_lst, tabletype#156 <- tabletype_lst}) - -- if (func_lst = FUNC_func(x#2, local_lst#82, expr_F#1)*{expr_F#1 <- expr_F_lst, local_lst#82 <- local_lst_lst, x#2 <- x_lst}) - -- if (data_lst = DATA_data(byte_lst#110, datamode#110)*{byte_lst#110 <- byte_lst_lst, datamode#110 <- datamode_lst}) - -- if (elem_lst = ELEM_elem(elemtype#1, expr_E_lst#1, elemmode#230)*{elemmode#230 <- elemmode_lst, elemtype#1 <- elemtype_lst, expr_E_lst#1 <- expr_E_lst_lst}) + -- let{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*} MODULE_module(mk_list_list(type_lst), mk_list_list(import_lst), mk_list_list(tag_lst), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list(func_lst), mk_list_list(data_lst), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst)) = v_module + -- if (tag_lst = TAG_tag(tagtype_78)*{tagtype_78 <- tagtype_lst}) + -- if (global_lst = GLOBAL_global(globaltype_122, expr_G_1)*{expr_G_1 <- expr_G_lst, globaltype_122 <- globaltype_lst}) + -- if (mem_lst = MEMORY_mem(memtype_122)*{memtype_122 <- memtype_lst}) + -- if (table_lst = TABLE_table(tabletype_156, expr_T_1)*{expr_T_1 <- expr_T_lst, tabletype_156 <- tabletype_lst}) + -- if (func_lst = FUNC_func(x_2, local_lst_82, expr_F_1)*{expr_F_1 <- expr_F_lst, local_lst_82 <- local_lst_lst, x_2 <- x_lst}) + -- if (data_lst = DATA_data(byte_lst_110, datamode_110)*{byte_lst_110 <- byte_lst_lst, datamode_110 <- datamode_lst}) + -- if (elem_lst = ELEM_elem(elemtype_1, expr_E_lst_1, elemmode_230)*{elemmode_230 <- elemmode_lst, elemtype_1 <- elemtype_lst, expr_E_lst_1 <- expr_E_lst_lst}) -- let{aa_I_lst : tagaddr*} aa_I_lst = $tagsxa(externaddr_lst) -- let{ga_I_lst : globaladdr*} ga_I_lst = $globalsxa(externaddr_lst) -- let{ma_I_lst : memaddr*} ma_I_lst = $memsxa(externaddr_lst) -- let{ta_I_lst : tableaddr*} ta_I_lst = $tablesxa(externaddr_lst) -- let{fa_I_lst : funcaddr*} fa_I_lst = $funcsxa(externaddr_lst) -- let{dt_lst : deftype*} dt_lst = $alloctypes(type_lst) - -- let{fa_lst : nat*} fa_lst = (|s.FUNCS_store| + i_F#1)^(i_F#1<|func_lst|){} - -- let{s_1 : store, aa_lst : tagaddr*} (s_1, aa_lst) = $alloctags(s, $subst_all_tagtype(tagtype#80, $typeuse_deftype(dt#9)*{dt#9 <- dt_lst})*{tagtype#80 <- tagtype_lst}) - -- let{s_2 : store, ga_lst : globaladdr*} (s_2, ga_lst) = $allocglobals(s_1, $subst_all_globaltype(globaltype#124, $typeuse_deftype(dt#10)*{dt#10 <- dt_lst})*{globaltype#124 <- globaltype_lst}, val_G_lst) - -- let{s_3 : store, ma_lst : memaddr*} (s_3, ma_lst) = $allocmems(s_2, $subst_all_memtype(memtype#124, $typeuse_deftype(dt#11)*{dt#11 <- dt_lst})*{memtype#124 <- memtype_lst}) - -- let{s_4 : store, ta_lst : tableaddr*} (s_4, ta_lst) = $alloctables(s_3, $subst_all_tabletype(tabletype#158, $typeuse_deftype(dt#12)*{dt#12 <- dt_lst})*{tabletype#158 <- tabletype_lst}, ref_T_lst) + -- let{fa_lst : nat*} fa_lst = (|s.FUNCS_store| + i_F_1)^(i_F_1<|func_lst|){} + -- let{s_1 : store, aa_lst : tagaddr*} (s_1, aa_lst) = $alloctags(s, $subst_all_tagtype(tagtype_80, $typeuse_deftype(dt_9)*{dt_9 <- dt_lst})*{tagtype_80 <- tagtype_lst}) + -- let{s_2 : store, ga_lst : globaladdr*} (s_2, ga_lst) = $allocglobals(s_1, $subst_all_globaltype(globaltype_124, $typeuse_deftype(dt_10)*{dt_10 <- dt_lst})*{globaltype_124 <- globaltype_lst}, val_G_lst) + -- let{s_3 : store, ma_lst : memaddr*} (s_3, ma_lst) = $allocmems(s_2, $subst_all_memtype(memtype_124, $typeuse_deftype(dt_11)*{dt_11 <- dt_lst})*{memtype_124 <- memtype_lst}) + -- let{s_4 : store, ta_lst : tableaddr*} (s_4, ta_lst) = $alloctables(s_3, $subst_all_tabletype(tabletype_158, $typeuse_deftype(dt_12)*{dt_12 <- dt_lst})*{tabletype_158 <- tabletype_lst}, ref_T_lst) -- let{s_5 : store, da_lst : dataaddr*} (s_5, da_lst) = $allocdatas(s_4, OK_datatype^|data_lst|{}, byte_lst_lst) - -- let{s_6 : store, ea_lst : elemaddr*} (s_6, ea_lst) = $allocelems(s_5, $subst_all_reftype(elemtype#2, $typeuse_deftype(dt#13)*{dt#13 <- dt_lst})*{elemtype#2 <- elemtype_lst}, ref_E_lst_lst) - -- if ((s_7, fa_lst) = $allocfuncs(s_6, dt_lst[$proj_uN_0(x#3).0]*{x#3 <- x_lst}, FUNC_funccode(x#4, local_lst#84, expr_F#2)*{expr_F#2 <- expr_F_lst, local_lst#84 <- local_lst_lst, x#4 <- x_lst}, v_moduleinst^|func_lst|{})) + -- let{s_6 : store, ea_lst : elemaddr*} (s_6, ea_lst) = $allocelems(s_5, $subst_all_reftype(elemtype_2, $typeuse_deftype(dt_13)*{dt_13 <- dt_lst})*{elemtype_2 <- elemtype_lst}, ref_E_lst_lst) + -- if ((s_7, fa_lst) = $allocfuncs(s_6, dt_lst[$proj_uN_0(x_3).0]*{x_3 <- x_lst}, FUNC_funccode(x_4, local_lst_84, expr_F_2)*{expr_F_2 <- expr_F_lst, local_lst_84 <- local_lst_lst, x_4 <- x_lst}, v_moduleinst^|func_lst|{})) -- if (xi_lst = $allocexports({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}, export_lst)) -- if (v_moduleinst = {TYPES dt_lst, TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS da_lst, ELEMS ea_lst, EXPORTS xi_lst}) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(v_moduleinst) - -- wf_module: `%`(MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst))) - -- (wf_tag: `%`(TAG_tag(tagtype#81)))*{tagtype#81 <- tagtype_lst} - -- (wf_global: `%`(GLOBAL_global(globaltype#125, expr_G#2)))*{expr_G#2 <- expr_G_lst, globaltype#125 <- globaltype_lst} - -- (wf_mem: `%`(MEMORY_mem(memtype#125)))*{memtype#125 <- memtype_lst} - -- (wf_table: `%`(TABLE_table(tabletype#159, expr_T#2)))*{expr_T#2 <- expr_T_lst, tabletype#159 <- tabletype_lst} - -- (wf_func: `%`(FUNC_func(x#5, local_lst#85, expr_F#3)))*{expr_F#3 <- expr_F_lst, local_lst#85 <- local_lst_lst, x#5 <- x_lst} - -- (wf_data: `%`(DATA_data(byte_lst#113, datamode#112)))*{byte_lst#113 <- byte_lst_lst, datamode#112 <- datamode_lst} - -- (wf_elem: `%`(ELEM_elem(elemtype#3, expr_E_lst#2, elemmode#232)))*{elemmode#232 <- elemmode_lst, elemtype#3 <- elemtype_lst, expr_E_lst#2 <- expr_E_lst_lst} + -- wf_store: `%`($alloctags(s, $subst_all_tagtype(tagtype_81, $typeuse_deftype(dt_16)*{dt_16 <- dt_lst})*{tagtype_81 <- tagtype_lst}).0) + -- (wf_typeuse: `%`($subst_all_tagtype(tagtype_82, $typeuse_deftype(dt_17)*{dt_17 <- dt_lst})))*{tagtype_82 <- tagtype_lst} + -- wf_store: `%`($allocglobals(s_1, $subst_all_globaltype(globaltype_125, $typeuse_deftype(dt_18)*{dt_18 <- dt_lst})*{globaltype_125 <- globaltype_lst}, val_G_lst).0) + -- (wf_globaltype: `%`($subst_all_globaltype(globaltype_126, $typeuse_deftype(dt_19)*{dt_19 <- dt_lst})))*{globaltype_126 <- globaltype_lst} + -- wf_store: `%`($allocmems(s_2, $subst_all_memtype(memtype_125, $typeuse_deftype(dt_20)*{dt_20 <- dt_lst})*{memtype_125 <- memtype_lst}).0) + -- (wf_memtype: `%`($subst_all_memtype(memtype_126, $typeuse_deftype(dt_21)*{dt_21 <- dt_lst})))*{memtype_126 <- memtype_lst} + -- wf_store: `%`($alloctables(s_3, $subst_all_tabletype(tabletype_159, $typeuse_deftype(dt_22)*{dt_22 <- dt_lst})*{tabletype_159 <- tabletype_lst}, ref_T_lst).0) + -- (wf_tabletype: `%`($subst_all_tabletype(tabletype_160, $typeuse_deftype(dt_23)*{dt_23 <- dt_lst})))*{tabletype_160 <- tabletype_lst} + -- wf_store: `%`($allocdatas(s_4, OK_datatype^|data_lst|{}, byte_lst_lst).0) + -- wf_store: `%`($allocelems(s_5, $subst_all_reftype(elemtype_3, $typeuse_deftype(dt_24)*{dt_24 <- dt_lst})*{elemtype_3 <- elemtype_lst}, ref_E_lst_lst).0) + -- (wf_reftype: `%`($subst_all_reftype(elemtype_4, $typeuse_deftype(dt_25)*{dt_25 <- dt_lst})))*{elemtype_4 <- elemtype_lst} + -- wf_store: `%`($allocfuncs(s_6, dt_lst[$proj_uN_0(x_5).0]*{x_5 <- x_lst}, FUNC_funccode(x_6, local_lst_85, expr_F_3)*{expr_F_3 <- expr_F_lst, local_lst_85 <- local_lst_lst, x_6 <- x_lst}, v_moduleinst^|func_lst|{}).0) + -- (wf_exportinst: `%`(iter_341))*{iter_341 <- $allocexports({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}, export_lst)} + -- wf_module: `%`(MODULE_module(mk_list_list(type_lst), mk_list_list(import_lst), mk_list_list(tag_lst), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list(func_lst), mk_list_list(data_lst), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst))) + -- (wf_tag: `%`(TAG_tag(tagtype_83)))*{tagtype_83 <- tagtype_lst} + -- (wf_global: `%`(GLOBAL_global(globaltype_127, expr_G_2)))*{expr_G_2 <- expr_G_lst, globaltype_127 <- globaltype_lst} + -- (wf_mem: `%`(MEMORY_mem(memtype_127)))*{memtype_127 <- memtype_lst} + -- (wf_table: `%`(TABLE_table(tabletype_161, expr_T_2)))*{expr_T_2 <- expr_T_lst, tabletype_161 <- tabletype_lst} + -- (wf_func: `%`(FUNC_func(x_7, local_lst_86, expr_F_4)))*{expr_F_4 <- expr_F_lst, local_lst_86 <- local_lst_lst, x_7 <- x_lst} + -- (wf_data: `%`(DATA_data(byte_lst_114, datamode_112)))*{byte_lst_114 <- byte_lst_lst, datamode_112 <- datamode_lst} + -- (wf_elem: `%`(ELEM_elem(elemtype_5, expr_E_lst_2, elemmode_232)))*{elemmode_232 <- elemmode_lst, elemtype_5 <- elemtype_lst, expr_E_lst_2 <- expr_E_lst_lst} -- wf_moduleinst: `%`({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt_lst, TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS da_lst, ELEMS ea_lst, EXPORTS xi_lst}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmodule_is_wf: `%%%%%%%`(v_store : store, v_module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmodule_is_wf0{v_store : store, v_module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)}: + `%%%%%%%`(v_store, v_module, var_0, var_1, var_2, var_3, ret_val) + -- wf_store: `%`(v_store) + -- wf_module: `%`(v_module) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- (wf_ref: `%`(var_2))*{var_2 <- var_2} + -- (wf_ref: `%`(var_3))*{var_3 <- var_3}*{var_3 <- var_3} + -- if (ret_val = $allocmodule(v_store, v_module, var_0, var_1, var_2, var_3)) + -- wf_store: `%`(ret_val.0) + -- wf_moduleinst: `%`(ret_val.1) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_(v_dataidx : dataidx, v_data : data) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_{x : uN, v_n : nat, b_lst : byte*}(x, DATA_data(b_lst, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, v_n : nat, b_lst : byte*, y : uN, instr_lst : instr*}(x, DATA_data(b_lst, ACTIVE_datamode(y, instr_lst))) = instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n)))) - -- wf_instr: `%`(`MEMORY.INIT`_instr(y, x)) - -- wf_instr: `%`(`DATA.DROP`_instr(x)) + def $rundata_{x : uN, v_n : nat, b_lst : byte*, y : uN, instr_lst : instr*}(x, DATA_data(b_lst, ACTIVE_datamode(y, instr_lst))) = instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(y, x) DATA_DROP_instr(x)] + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation rundata__is_wf: `%%%`(v_dataidx : dataidx, v_data : data, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule rundata__is_wf0{v_dataidx : dataidx, v_data : data, ret_val : instr*}: + `%%%`(v_dataidx, v_data, ret_val) + -- wf_uN: `%%`(32, v_dataidx) + -- wf_data: `%`(v_data) + -- if (ret_val = $rundata_(v_dataidx, v_data)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(v_elemidx : elemidx, v_elem : elem) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_{x : uN, rt : reftype, v_n : nat, e_lst : expr*}(x, ELEM_elem(rt, e_lst, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, v_n : nat, e_lst : expr*}(x, ELEM_elem(rt, e_lst, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + def $runelem_{x : uN, rt : reftype, v_n : nat, e_lst : expr*}(x, ELEM_elem(rt, e_lst, DECLARE_elemmode)) = [ELEM_DROP_instr(x)] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : uN, rt : reftype, v_n : nat, e_lst : expr*, y : uN, instr_lst : instr*}(x, ELEM_elem(rt, e_lst, ACTIVE_elemmode(y, instr_lst))) = instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(y, x) ELEM_DROP_instr(x)] + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation runelem__is_wf: `%%%`(v_elemidx : elemidx, v_elem : elem, ret_val : instr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, v_n : nat, e_lst : expr*, y : uN, instr_lst : instr*}(x, ELEM_elem(rt, e_lst, ACTIVE_elemmode(y, instr_lst))) = instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(v_n)))) - -- wf_instr: `%`(`TABLE.INIT`_instr(y, x)) - -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + rule runelem__is_wf0{v_elemidx : elemidx, v_elem : elem, ret_val : instr*}: + `%%%`(v_elemidx, v_elem, ret_val) + -- wf_uN: `%%`(32, v_elemidx) + -- wf_elem: `%`(v_elem) + -- if (ret_val = $runelem_(v_elemidx, v_elem)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -15157,8 +15941,24 @@ def $evalexprs(v_state : state, var_0 : expr*) : (state, ref*) def $evalexprs{z : state, v_expr : instr*, expr'_lst : expr*, v_ref : ref, z' : state}(z, [v_expr] ++ expr'_lst) = (z'', [v_ref] ++ ref'_lst) -- Eval_expr: `%;%~>*%;%`(z, v_expr, z', [$val_ref(v_ref)]) -- let{z'' : state, ref'_lst : ref*} (z'', ref'_lst) = $evalexprs(z', expr'_lst) - -- wf_ref: `%`(v_ref) -- wf_state: `%`(z') + -- wf_state: `%`($evalexprs(z', expr'_lst).0) + -- (wf_ref: `%`(iter_342))*{iter_342 <- $evalexprs(z', expr'_lst).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation evalexprs_is_wf: `%%%`(v_state : state, var_0 : expr*, ret_val : (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule evalexprs_is_wf0{v_state : state, var_0 : expr*, ret_val : (state, ref*)}: + `%%%`(v_state, var_0, ret_val) + -- wf_state: `%`(v_state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprs(v_state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15172,6 +15972,25 @@ def $evalexprss(v_state : state, var_0 : expr**) : (state, ref**) def $evalexprss{z : state, expr_lst : expr*, expr'_lst_lst : expr**}(z, [expr_lst] ++ expr'_lst_lst) = (z'', [ref_lst] ++ ref'_lst_lst) -- let{ref_lst : ref*, z' : state} (z', ref_lst) = $evalexprs(z, expr_lst) -- let{z'' : state, ref'_lst_lst : ref**} (z'', ref'_lst_lst) = $evalexprss(z', expr'_lst_lst) + -- wf_state: `%`($evalexprs(z, expr_lst).0) + -- (wf_ref: `%`(iter_343))*{iter_343 <- $evalexprs(z, expr_lst).1} + -- wf_state: `%`($evalexprss(z', expr'_lst_lst).0) + -- (wf_ref: `%`(iter_345))*{iter_345 <- iter_344}*{iter_344 <- $evalexprss(z', expr'_lst_lst).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation evalexprss_is_wf: `%%%`(v_state : state, var_0 : expr**, ret_val : (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule evalexprss_is_wf0{v_state : state, var_0 : expr**, ret_val : (state, ref**)}: + `%%%`(v_state, var_0, ret_val) + -- wf_state: `%`(v_state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprss(v_state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15184,61 +16003,109 @@ def $evalglobals(v_state : state, var_0 : globaltype*, var_1 : expr*) : (state, ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 def $evalglobals{z : state, gt : globaltype, gt'_lst : globaltype*, v_expr : instr*, expr'_lst : expr*, v_val : val, z' : state}(z, [gt] ++ gt'_lst, [v_expr] ++ expr'_lst) = (z'', [v_val] ++ val'_lst) -- Eval_expr: `%;%~>*%;%`(z, v_expr, z', [v_val]) - -- let{s : store, f : frame} `%;%`_state(s, f) = z' + -- let{s : store, f : frame} mk_state_state(s, f) = z' -- let{s' : store, a : addr} (s', a) = $allocglobal(s, gt, v_val) - -- let{z'' : state, val'_lst : val*} (z'', val'_lst) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'_lst, expr'_lst) - -- wf_val: `%`(v_val) + -- let{z'' : state, val'_lst : val*} (z'', val'_lst) = $evalglobals(mk_state_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'_lst, expr'_lst) -- wf_state: `%`(z') - -- wf_state: `%`(`%;%`_state(s, f)) - -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) + -- wf_store: `%`($allocglobal(s, gt, v_val).0) + -- wf_state: `%`($evalglobals(mk_state_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'_lst, expr'_lst).0) + -- (wf_val: `%`(iter_346))*{iter_346 <- $evalglobals(mk_state_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'_lst, expr'_lst).1} + -- wf_state: `%`(mk_state_state(s, f)) + -- wf_state: `%`(mk_state_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation evalglobals_is_wf: `%%%%`(v_state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule evalglobals_is_wf0{v_state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)}: + `%%%%`(v_state, var_0, var_1, ret_val) + -- wf_state: `%`(v_state) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_instr: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $evalglobals(v_state, var_0, var_1)) + -- wf_state: `%`(ret_val.0) + -- (wf_val: `%`(iter))*{iter <- ret_val.1} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate(v_store : store, v_module : module, var_0 : externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $instantiate{s : store, v_module : module, externaddr_lst : externaddr*, xt_I_lst : externtype*, xt_E_lst : externtype*, expr_G_lst : expr*, globaltype_lst : globaltype*, expr_T_lst : expr*, tabletype_lst : tabletype*, byte_lst_lst : byte**, datamode_lst : datamode*, elemmode_lst : elemmode*, expr_E_lst_lst : expr**, reftype_lst : reftype*, x_opt : idx?, moduleinst_0 : moduleinst, z : state, i_D : nat, i_E : nat}(s, v_module, externaddr_lst) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt)) - -- Module_ok: `|-%:%`(v_module, `%->%`_moduletype(xt_I_lst, xt_E_lst)) - -- (Externaddr_ok: `%|-%:%`(s, externaddr#8, xt_I#2))*{externaddr#8 <- externaddr_lst, xt_I#2 <- xt_I_lst} - -- let{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*} MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst)) = v_module - -- if (global_lst = GLOBAL_global(globaltype#127, expr_G#3)*{expr_G#3 <- expr_G_lst, globaltype#127 <- globaltype_lst}) - -- if (table_lst = TABLE_table(tabletype#161, expr_T#3)*{expr_T#3 <- expr_T_lst, tabletype#161 <- tabletype_lst}) - -- if (data_lst = DATA_data(byte_lst#117, datamode#116)*{byte_lst#117 <- byte_lst_lst, datamode#116 <- datamode_lst}) - -- if (elem_lst = ELEM_elem(reftype#517, expr_E_lst#3, elemmode#237)*{elemmode#237 <- elemmode_lst, expr_E_lst#3 <- expr_E_lst_lst, reftype#517 <- reftype_lst}) - -- if (start_opt = START_start(x#6)?{x#6 <- x_opt}) - -- if (moduleinst_0 = {TYPES $alloctypes(type_lst), TAGS [], GLOBALS $globalsxa(externaddr_lst), MEMS [], TABLES [], FUNCS $funcsxa(externaddr_lst) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func_lst|){}, DATAS [], ELEMS [], EXPORTS []}) - -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + def $instantiate{s : store, v_module : module, externaddr_lst : externaddr*, xt_I_lst : externtype*, xt_E_lst : externtype*, expr_G_lst : expr*, globaltype_lst : globaltype*, expr_T_lst : expr*, tabletype_lst : tabletype*, byte_lst_lst : byte**, datamode_lst : datamode*, elemmode_lst : elemmode*, expr_E_lst_lst : expr**, reftype_lst : reftype*, x_opt : idx?, moduleinst_0 : moduleinst, z : state, i_D : nat, i_E : nat}(s, v_module, externaddr_lst) = mk_config_config(mk_state_state(s'''', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt)) + -- Module_ok: `|-%:%`(v_module, mk_moduletype_moduletype(xt_I_lst, xt_E_lst)) + -- (Externaddr_ok: `%|-%:%`(s, externaddr_8, xt_I_2))*{externaddr_8 <- externaddr_lst, xt_I_2 <- xt_I_lst} + -- let{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*} MODULE_module(mk_list_list(type_lst), mk_list_list(import_lst), mk_list_list(tag_lst), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list(func_lst), mk_list_list(data_lst), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst)) = v_module + -- if (global_lst = GLOBAL_global(globaltype_129, expr_G_3)*{expr_G_3 <- expr_G_lst, globaltype_129 <- globaltype_lst}) + -- if (table_lst = TABLE_table(tabletype_163, expr_T_3)*{expr_T_3 <- expr_T_lst, tabletype_163 <- tabletype_lst}) + -- if (data_lst = DATA_data(byte_lst_118, datamode_116)*{byte_lst_118 <- byte_lst_lst, datamode_116 <- datamode_lst}) + -- if (elem_lst = ELEM_elem(reftype_516, expr_E_lst_3, elemmode_237)*{elemmode_237 <- elemmode_lst, expr_E_lst_3 <- expr_E_lst_lst, reftype_516 <- reftype_lst}) + -- if (start_opt = START_start(x_8)?{x_8 <- x_opt}) + -- if (moduleinst_0 = {TYPES $alloctypes(type_lst), TAGS [], GLOBALS $globalsxa(externaddr_lst), MEMS [], TABLES [], FUNCS $funcsxa(externaddr_lst) ++ (|s.FUNCS_store| + i_F_2)^(i_F_2<|func_lst|){}, DATAS [], ELEMS [], EXPORTS []}) + -- if (z = mk_state_state(s, {LOCALS [], MODULE moduleinst_0})) -- let{z' : state, val_G_lst : val*} (z', val_G_lst) = $evalglobals(z, globaltype_lst, expr_G_lst) -- let{z'' : state, ref_T_lst : ref*} (z'', ref_T_lst) = $evalexprs(z', expr_T_lst) -- let{z''' : state, ref_E_lst_lst : ref**} (z''', ref_E_lst_lst) = $evalexprss(z'', expr_E_lst_lst) - -- let{s''' : store, f : frame} `%;%`_state(s''', f) = z''' + -- let{s''' : store, f : frame} mk_state_state(s''', f) = z''' -- let{s'''' : store, v_moduleinst : moduleinst} (s'''', v_moduleinst) = $allocmodule(s''', v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst) - -- let{instr_D_lst : instr*} instr_D_lst = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#1), data_lst[i_D#1])^(i_D#1<|data_lst|){}) - -- let{instr_E_lst : instr*} instr_E_lst = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#1), elem_lst[i_E#1])^(i_E#1<|elem_lst|){}) - -- let{instr_S_opt : instr?} instr_S_opt = CALL_instr(x#7)?{x#7 <- x_opt} + -- let{instr_D_lst : instr*} instr_D_lst = $concat_(syntax instr, $rundata_(mk_uN_dataidx(i_D_1), data_lst[i_D_1])^(i_D_1<|data_lst|){}) + -- let{instr_E_lst : instr*} instr_E_lst = $concat_(syntax instr, $runelem_(mk_uN_elemidx(i_E_1), elem_lst[i_E_1])^(i_E_1<|elem_lst|){}) + -- let{instr_S_opt : instr?} instr_S_opt = CALL_instr(x_9)?{x_9 <- x_opt} -- wf_state: `%`(z) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I_lst, xt_E_lst)) - -- wf_module: `%`(MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst))) - -- (wf_global: `%`(GLOBAL_global(globaltype#130, expr_G#5)))*{expr_G#5 <- expr_G_lst, globaltype#130 <- globaltype_lst} - -- (wf_table: `%`(TABLE_table(tabletype#163, expr_T#5)))*{expr_T#5 <- expr_T_lst, tabletype#163 <- tabletype_lst} - -- (wf_data: `%`(DATA_data(byte_lst#119, datamode#118)))*{byte_lst#119 <- byte_lst_lst, datamode#118 <- datamode_lst} - -- (wf_elem: `%`(ELEM_elem(reftype#519, expr_E_lst#5, elemmode#239)))*{elemmode#239 <- elemmode_lst, expr_E_lst#5 <- expr_E_lst_lst, reftype#519 <- reftype_lst} - -- (wf_start: `%`(START_start(x#8)))?{x#8 <- x_opt} - -- wf_moduleinst: `%`({TYPES $alloctypes(type_lst), TAGS [], GLOBALS $globalsxa(externaddr_lst), MEMS [], TABLES [], FUNCS $funcsxa(externaddr_lst) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func_lst|){}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- wf_state: `%`(`%;%`_state(s''', f)) - -- (wf_uN: `%%`(32, `%`_uN(i_D#2)))^(i_D#2<|data_lst|){} - -- (wf_uN: `%%`(32, `%`_uN(i_E#2)))^(i_E#2<|elem_lst|){} - -- (wf_instr: `%`(CALL_instr(x#9)))?{x#9 <- x_opt} + -- wf_state: `%`($evalglobals(z, globaltype_lst, expr_G_lst).0) + -- (wf_val: `%`(iter_347))*{iter_347 <- $evalglobals(z, globaltype_lst, expr_G_lst).1} + -- wf_state: `%`($evalexprs(z', expr_T_lst).0) + -- (wf_ref: `%`(iter_348))*{iter_348 <- $evalexprs(z', expr_T_lst).1} + -- wf_state: `%`($evalexprss(z'', expr_E_lst_lst).0) + -- (wf_ref: `%`(iter_350))*{iter_350 <- iter_349}*{iter_349 <- $evalexprss(z'', expr_E_lst_lst).1} + -- wf_store: `%`($allocmodule(s''', v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst).0) + -- wf_moduleinst: `%`($allocmodule(s''', v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst).1) + -- (wf_instr: `%`(iter_351))*{iter_351 <- $concat_(syntax instr, $rundata_(mk_uN_dataidx(i_D_2), data_lst[i_D_2])^(i_D_2<|data_lst|){})} + -- (wf_instr: `%`(iter_352))*{iter_352 <- $rundata_(mk_uN_dataidx(i_D_3), data_lst[i_D_3])}^(i_D_3<|data_lst|){} + -- (wf_instr: `%`(iter_353))*{iter_353 <- $concat_(syntax instr, $runelem_(mk_uN_elemidx(i_E_2), elem_lst[i_E_2])^(i_E_2<|elem_lst|){})} + -- (wf_instr: `%`(iter_354))*{iter_354 <- $runelem_(mk_uN_elemidx(i_E_3), elem_lst[i_E_3])}^(i_E_3<|elem_lst|){} + -- wf_moduletype: `%`(mk_moduletype_moduletype(xt_I_lst, xt_E_lst)) + -- wf_module: `%`(MODULE_module(mk_list_list(type_lst), mk_list_list(import_lst), mk_list_list(tag_lst), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list(func_lst), mk_list_list(data_lst), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst))) + -- (wf_global: `%`(GLOBAL_global(globaltype_134, expr_G_7)))*{expr_G_7 <- expr_G_lst, globaltype_134 <- globaltype_lst} + -- (wf_table: `%`(TABLE_table(tabletype_165, expr_T_7)))*{expr_T_7 <- expr_T_lst, tabletype_165 <- tabletype_lst} + -- (wf_data: `%`(DATA_data(byte_lst_120, datamode_118)))*{byte_lst_120 <- byte_lst_lst, datamode_118 <- datamode_lst} + -- (wf_elem: `%`(ELEM_elem(reftype_518, expr_E_lst_7, elemmode_239)))*{elemmode_239 <- elemmode_lst, expr_E_lst_7 <- expr_E_lst_lst, reftype_518 <- reftype_lst} + -- (wf_start: `%`(START_start(x_10)))?{x_10 <- x_opt} + -- wf_moduleinst: `%`({TYPES $alloctypes(type_lst), TAGS [], GLOBALS $globalsxa(externaddr_lst), MEMS [], TABLES [], FUNCS $funcsxa(externaddr_lst) ++ (|s.FUNCS_store| + i_F_3)^(i_F_3<|func_lst|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(mk_state_state(s, {LOCALS [], MODULE moduleinst_0})) + -- wf_state: `%`(mk_state_state(s''', f)) + -- (wf_uN: `%%`(32, mk_uN_uN(i_D_4)))^(i_D_4<|data_lst|){} + -- (wf_uN: `%%`(32, mk_uN_uN(i_E_4)))^(i_E_4<|elem_lst|){} + -- (wf_instr: `%`(CALL_instr(x_11)))?{x_11 <- x_opt} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation instantiate_is_wf: `%%%%`(v_store : store, v_module : module, var_0 : externaddr*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule instantiate_is_wf0{v_store : store, v_module : module, var_0 : externaddr*, ret_val : config}: + `%%%%`(v_store, v_module, var_0, ret_val) + -- wf_store: `%`(v_store) + -- wf_module: `%`(v_module) + -- if (ret_val = $instantiate(v_store, v_module, var_0)) + -- wf_config: `%`(ret_val) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(v_store : store, v_funcaddr : funcaddr, var_0 : val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $invoke{s : store, v_funcaddr : nat, val_lst : val*, t_1_lst : valtype*, t_2_lst : valtype*}(s, v_funcaddr, val_lst) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(v_val)*{v_val <- val_lst} ++ [`REF.FUNC_ADDR`_instr(v_funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[v_funcaddr].TYPE_funcinst))]) - -- Expand: `%~~%`(s.FUNCS_store[v_funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) - -- (Val_ok: `%|-%:%`(s, val#2, t_1#7))*{t_1#7 <- t_1_lst, val#2 <- val_lst} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val#3)*{val#3 <- val_lst} ++ [`REF.FUNC_ADDR`_instr(v_funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[v_funcaddr].TYPE_funcinst))])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst))) + def $invoke{s : store, v_funcaddr : nat, val_lst : val*, t_1_lst : valtype*, t_2_lst : valtype*}(s, v_funcaddr, val_lst) = mk_config_config(mk_state_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(v_val)*{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(v_funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[v_funcaddr].TYPE_funcinst))]) + -- Expand: `%~~%`(s.FUNCS_store[v_funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- (Val_ok: `%|-%:%`(s, val_2, t_1_5))*{t_1_5 <- t_1_lst, val_2 <- val_lst} + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation invoke_is_wf: `%%%%`(v_store : store, v_funcaddr : funcaddr, var_0 : val*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule invoke_is_wf0{v_store : store, v_funcaddr : funcaddr, var_0 : val*, ret_val : config}: + `%%%%`(v_store, v_funcaddr, var_0, ret_val) + -- wf_store: `%`(v_store) + -- (wf_val: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $invoke(v_store, v_funcaddr, var_0)) + -- wf_config: `%`(ret_val) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec syntax castop = (null?, null?) @@ -15258,6 +16125,14 @@ syntax nopt = u32* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec def $ieee_(v_N : N, rat : rat) : fNmag +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation ieee__is_wf: `%%%`(v_N : N, rat : rat, ret_val : fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule ieee__is_wf0{v_N : N, rat : rat, ret_val : fNmag}: + `%%%`(v_N, rat, ret_val) + -- if (ret_val = $ieee_(v_N, rat)) + -- wf_fNmag: `%%`(v_N, ret_val) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec syntax idctxt = { @@ -15302,11 +16177,23 @@ rec { def $concat_idctxt(var_0 : idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 def $concat_idctxt{v_I : idctxt, I'_lst : I*}([v_I] ++ I'_lst) = v_I +++ $concat_idctxt(I'_lst) } +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation concat_idctxt_is_wf: `%%`(var_0 : idctxt*, ret_val : idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule concat_idctxt_is_wf0{var_0 : idctxt*, ret_val : idctxt}: + `%%`(var_0, ret_val) + -- (wf_idctxt: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $concat_idctxt(var_0)) + -- wf_idctxt: `%`(ret_val) +} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec relation Idctxt_ok: `|-%:OK`(idctxt) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -15322,10 +16209,20 @@ relation Idctxt_ok: `|-%:OK`(idctxt) -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.ELEMS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.LOCALS_I)) -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.LABELS_I)) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field_lst))])))*{field_lst <- field_lst_lst} - -- if ([?(`%`_name(field_lst))*{field_lst <- field_lst_lst}] = v_I.FIELDS_I) - -- wf_idctxt: `%`(v_I) - -- (wf_name: `%`(`%`_name(field_lst)))*{field_lst <- field_lst_lst} + -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(mk_name_name(field_lst))])))*{field_lst <- field_lst_lst} + -- if ([?(mk_name_name(field_lst))*{field_lst <- field_lst_lst}] = v_I.FIELDS_I) + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.TYPES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.TAGS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.GLOBALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.MEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.TABLES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.FUNCS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.DATAS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.ELEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.LOCALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.LABELS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, [?(mk_name_name(field_lst))])}*{field_lst <- field_lst_lst} + -- (wf_name: `%`(mk_name_name(field_lst)))*{field_lst <- field_lst_lst} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $dots : () @@ -15472,6 +16369,19 @@ def $importsd(var_0 : decl*) : import* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation importsd_is_wf: `%%`(var_0 : decl*, ret_val : import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule importsd_is_wf0{var_0 : decl*, ret_val : import*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $importsd(var_0)) + -- (wf_import: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 def $tagsd(var_0 : decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 @@ -15485,6 +16395,19 @@ def $tagsd(var_0 : decl*) : tag* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation tagsd_is_wf: `%%`(var_0 : decl*, ret_val : tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule tagsd_is_wf0{var_0 : decl*, ret_val : tag*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tagsd(var_0)) + -- (wf_tag: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 def $globalsd(var_0 : decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 @@ -15498,6 +16421,19 @@ def $globalsd(var_0 : decl*) : global* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation globalsd_is_wf: `%%`(var_0 : decl*, ret_val : global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule globalsd_is_wf0{var_0 : decl*, ret_val : global*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsd(var_0)) + -- (wf_global: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 def $memsd(var_0 : decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 @@ -15511,6 +16447,19 @@ def $memsd(var_0 : decl*) : mem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation memsd_is_wf: `%%`(var_0 : decl*, ret_val : mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule memsd_is_wf0{var_0 : decl*, ret_val : mem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsd(var_0)) + -- (wf_mem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 def $tablesd(var_0 : decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 @@ -15524,6 +16473,19 @@ def $tablesd(var_0 : decl*) : table* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation tablesd_is_wf: `%%`(var_0 : decl*, ret_val : table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule tablesd_is_wf0{var_0 : decl*, ret_val : table*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesd(var_0)) + -- (wf_table: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 def $funcsd(var_0 : decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 @@ -15537,6 +16499,19 @@ def $funcsd(var_0 : decl*) : func* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation funcsd_is_wf: `%%`(var_0 : decl*, ret_val : func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule funcsd_is_wf0{var_0 : decl*, ret_val : func*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $funcsd(var_0)) + -- (wf_func: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 def $datasd(var_0 : decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 @@ -15550,6 +16525,19 @@ def $datasd(var_0 : decl*) : data* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation datasd_is_wf: `%%`(var_0 : decl*, ret_val : data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule datasd_is_wf0{var_0 : decl*, ret_val : data*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $datasd(var_0)) + -- (wf_data: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 def $elemsd(var_0 : decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 @@ -15563,6 +16551,19 @@ def $elemsd(var_0 : decl*) : elem* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation elemsd_is_wf: `%%`(var_0 : decl*, ret_val : elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule elemsd_is_wf0{var_0 : decl*, ret_val : elem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $elemsd(var_0)) + -- (wf_elem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 def $startsd(var_0 : decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 @@ -15576,6 +16577,19 @@ def $startsd(var_0 : decl*) : start* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation startsd_is_wf: `%%`(var_0 : decl*, ret_val : start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule startsd_is_wf0{var_0 : decl*, ret_val : start*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $startsd(var_0)) + -- (wf_start: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 def $exportsd(var_0 : decl*) : export* ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 @@ -15586,11 +16600,25 @@ def $exportsd(var_0 : decl*) : export* def $exportsd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $exportsd(decl'_lst) } +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation exportsd_is_wf: `%%`(var_0 : decl*, ret_val : export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule exportsd_is_wf0{var_0 : decl*, ret_val : export*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $exportsd(var_0)) + -- (wf_export: `%`(ret_val))*{ret_val <- ret_val} +} + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered(var_0 : decl*) : bool ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{decl_lst : decl*}(decl_lst) = true -- if ($importsd(decl_lst) = []) + -- (wf_import: `%`(iter_355))*{iter_355 <- $importsd(decl_lst)} ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{v_name : name, name_0 : name, v_externtype : externtype, decl_1_lst : decl*, decl_2_lst : decl*}(decl_1_lst ++ [IMPORT_decl(v_name, name_0, v_externtype)] ++ decl_2_lst) = (((((($importsd(decl_1_lst) = []) /\ ($tagsd(decl_1_lst) = [])) /\ ($globalsd(decl_1_lst) = [])) /\ ($memsd(decl_1_lst) = [])) /\ ($tablesd(decl_1_lst) = [])) /\ ($funcsd(decl_1_lst) = [])) @@ -15599,7 +16627,7 @@ relation Context_ok: `|-%:OK`(context) ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec rule mk_Context_ok{C : context, v_n : n, dt_lst : deftype*, jt_lst : tagtype*, gt_lst : globaltype*, mt_lst : memtype*, tt_lst : tabletype*, dt_F_lst : deftype*, ok_lst : datatype*, et_lst : elemtype*, lct_lst : localtype*, rt_lst : reftype*, rt'_opt : reftype?, x_lst : idx*, v_m : m, st_lst : subtype*, C_0 : context, t_1_lst : valtype*, t_2_lst : valtype*}: `|-%:OK`(C) - -- if (C = {TYPES dt_lst, TAGS jt_lst, GLOBALS gt_lst, MEMS mt_lst, TABLES tt_lst, FUNCS dt_F_lst, DATAS ok_lst, ELEMS et_lst, LOCALS lct_lst, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- rt_lst})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- rt'_opt}))), REFS x_lst, RECS st_lst}) + -- if (C = {TYPES dt_lst, TAGS jt_lst, GLOBALS gt_lst, MEMS mt_lst, TABLES tt_lst, FUNCS dt_F_lst, DATAS ok_lst, ELEMS et_lst, LOCALS lct_lst, LABELS [mk_list_resulttype($valtype_reftype(rt)*{rt <- rt_lst})], RETURN ?(mk_list_resulttype(lift($valtype_reftype(rt')?{rt' <- rt'_opt}))), REFS x_lst, RECS st_lst}) -- if (C_0 = {TYPES dt_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (Deftype_ok: `%|-%:OK`({TYPES dt_lst[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{dt_F <- dt_F_lst, t_1 <- t_1_lst, t_2 <- t_2_lst} + -- (Expand: `%~~%`(dt_F, `FUNC%->%`_comptype(mk_list_resulttype([t_1]), mk_list_resulttype([t_2]))))*{dt_F <- dt_F_lst, t_1 <- t_1_lst, t_2 <- t_2_lst} -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- et_lst} -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- lct_lst} - -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt)])))*{rt <- rt_lst} - -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt')])))?{rt' <- rt'_opt} + -- (Resulttype_ok: `%|-%:OK`(C_0, mk_list_resulttype([$valtype_reftype(rt)])))*{rt <- rt_lst} + -- (Resulttype_ok: `%|-%:OK`(C_0, mk_list_resulttype([$valtype_reftype(rt')])))?{rt' <- rt'_opt} -- (if ($proj_uN_0(x).0 < |dt_F_lst|))*{x <- x_lst} - -- wf_context: `%`(C) -- wf_context: `%`(C_0) - -- wf_context: `%`({TYPES dt_lst, TAGS jt_lst, GLOBALS gt_lst, MEMS mt_lst, TABLES tt_lst, FUNCS dt_F_lst, DATAS ok_lst, ELEMS et_lst, LOCALS lct_lst, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- rt_lst})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- rt'_opt}))), REFS x_lst, RECS st_lst}) + -- wf_context: `%`({TYPES dt_lst, TAGS jt_lst, GLOBALS gt_lst, MEMS mt_lst, TABLES tt_lst, FUNCS dt_F_lst, DATAS ok_lst, ELEMS et_lst, LOCALS lct_lst, LABELS [mk_list_resulttype($valtype_reftype(rt)*{rt <- rt_lst})], RETURN ?(mk_list_resulttype(lift($valtype_reftype(rt')?{rt' <- rt'_opt}))), REFS x_lst, RECS st_lst}) -- wf_context: `%`({TYPES dt_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (wf_context: `%`({TYPES dt_lst[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{t_1 <- t_1_lst, t_2 <- t_2_lst} + -- (wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype([t_1]), mk_list_resulttype([t_2]))))*{t_1 <- t_1_lst, t_2 <- t_2_lst} ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Localval_ok: `%|-%:%`(store, val?, localtype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule set{s : store, v_val : val, t : valtype}: - `%|-%:%`(s, ?(v_val), `%%`_localtype(SET_init, t)) + `%|-%:%`(s, ?(v_val), mk_localtype_localtype(SET_init, t)) -- Val_ok: `%|-%:%`(s, v_val, t) - -- wf_store: `%`(s) - -- wf_val: `%`(v_val) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule unset{s : store}: - `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, BOT_valtype)) - -- wf_store: `%`(s) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, BOT_valtype)) + `%|-%:%`(s, ?(), mk_localtype_localtype(UNSET_init, BOT_valtype)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Datainst_ok: `%|-%:%`(store, datainst, datatype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule mk_Datainst_ok{s : store, b_lst : byte*}: `%|-%:%`(s, {BYTES b_lst}, OK_datatype) - -- wf_store: `%`(s) - -- wf_datainst: `%`({BYTES b_lst}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) @@ -15657,8 +16677,6 @@ relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) `%|-%:%`(s, {TYPE rt, REFS ref_lst}, rt) -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) -- (Ref_ok: `%|-%:%`(s, v_ref, rt))*{v_ref <- ref_lst} - -- wf_store: `%`(s) - -- wf_eleminst: `%`({TYPE rt, REFS ref_lst}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15667,15 +16685,13 @@ relation Exportinst_ok: `%|-%:OK`(store, exportinst) rule mk_Exportinst_ok{s : store, nm : name, xa : externaddr, xt : externtype}: `%|-%:OK`(s, {NAME nm, ADDR xa}) -- Externaddr_ok: `%|-%:%`(s, xa, xt) - -- wf_store: `%`(s) -- wf_externtype: `%`(xt) - -- wf_exportinst: `%`({NAME nm, ADDR xa}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule mk_Moduleinst_ok{s : store, deftype_lst : deftype*, tagaddr_lst : tagaddr*, globaladdr_lst : globaladdr*, memaddr_lst : memaddr*, tableaddr_lst : tableaddr*, funcaddr_lst : funcaddr*, dataaddr_lst : dataaddr*, elemaddr_lst : elemaddr*, exportinst_lst : exportinst*, tagtype_lst : tagtype*, globaltype_lst : globaltype*, memtype_lst : memtype*, tabletype_lst : tabletype*, deftype_F_lst : deftype*, datatype_lst : datatype*, elemtype_lst : elemtype*, subtype_lst : subtype*}: - `%|-%:%`(s, {TYPES deftype_lst, TAGS tagaddr_lst, GLOBALS globaladdr_lst, MEMS memaddr_lst, TABLES tableaddr_lst, FUNCS funcaddr_lst, DATAS dataaddr_lst, ELEMS elemaddr_lst, EXPORTS exportinst_lst}, {TYPES deftype_lst, TAGS tagtype_lst, GLOBALS globaltype_lst, MEMS memtype_lst, TABLES tabletype_lst, FUNCS deftype_F_lst, DATAS datatype_lst, ELEMS elemtype_lst, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr_lst|){}, RECS subtype_lst}) + `%|-%:%`(s, {TYPES deftype_lst, TAGS tagaddr_lst, GLOBALS globaladdr_lst, MEMS memaddr_lst, TABLES tableaddr_lst, FUNCS funcaddr_lst, DATAS dataaddr_lst, ELEMS elemaddr_lst, EXPORTS exportinst_lst}, {TYPES deftype_lst, TAGS tagtype_lst, GLOBALS globaltype_lst, MEMS memtype_lst, TABLES tabletype_lst, FUNCS deftype_F_lst, DATAS datatype_lst, ELEMS elemtype_lst, LOCALS [], LABELS [], RETURN ?(), REFS mk_uN_funcidx(i)^(i<|funcaddr_lst|){}, RECS subtype_lst}) -- (Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, v_deftype))*{v_deftype <- deftype_lst} -- if (|tagaddr_lst| = |tagtype_lst|) -- (Externaddr_ok: `%|-%:%`(s, TAG_externaddr(v_tagaddr), TAG_externtype(v_tagtype)))*{v_tagaddr <- tagaddr_lst, v_tagtype <- tagtype_lst} @@ -15697,9 +16713,6 @@ relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) -- if $disjoint_(syntax name, v_exportinst.NAME_exportinst*{v_exportinst <- exportinst_lst}) -- if (|TAG_externaddr(v_tagaddr)*{v_tagaddr <- tagaddr_lst} ++ GLOBAL_externaddr(v_globaladdr)*{v_globaladdr <- globaladdr_lst} ++ MEM_externaddr(v_memaddr)*{v_memaddr <- memaddr_lst} ++ TABLE_externaddr(v_tableaddr)*{v_tableaddr <- tableaddr_lst} ++ FUNC_externaddr(v_funcaddr)*{v_funcaddr <- funcaddr_lst}| > 0) -- (if (v_exportinst.ADDR_exportinst <- TAG_externaddr(v_tagaddr)*{v_tagaddr <- tagaddr_lst} ++ GLOBAL_externaddr(v_globaladdr)*{v_globaladdr <- globaladdr_lst} ++ MEM_externaddr(v_memaddr)*{v_memaddr <- memaddr_lst} ++ TABLE_externaddr(v_tableaddr)*{v_tableaddr <- tableaddr_lst} ++ FUNC_externaddr(v_funcaddr)*{v_funcaddr <- funcaddr_lst}))*{v_exportinst <- exportinst_lst} - -- wf_store: `%`(s) - -- wf_moduleinst: `%`({TYPES deftype_lst, TAGS tagaddr_lst, GLOBALS globaladdr_lst, MEMS memaddr_lst, TABLES tableaddr_lst, FUNCS funcaddr_lst, DATAS dataaddr_lst, ELEMS elemaddr_lst, EXPORTS exportinst_lst}) - -- wf_context: `%`({TYPES deftype_lst, TAGS tagtype_lst, GLOBALS globaltype_lst, MEMS memtype_lst, TABLES tabletype_lst, FUNCS deftype_F_lst, DATAS datatype_lst, ELEMS elemtype_lst, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr_lst|){}, RECS subtype_lst}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (wf_externtype: `%`(TAG_externtype(v_tagtype)))*{v_tagtype <- tagtype_lst} -- (wf_externtype: `%`(GLOBAL_externtype(v_globaltype)))*{v_globaltype <- globaltype_lst} @@ -15715,10 +16728,6 @@ relation Frame_ok: `%|-%:%`(store, frame, context) -- Moduleinst_ok: `%|-%:%`(s, v_moduleinst, C) -- if (|lct_lst| = |val_opt_lst|) -- (Localval_ok: `%|-%:%`(s, val_opt, lct))*{lct <- lct_lst, val_opt <- val_opt_lst} - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_frame: `%`({LOCALS val_opt_lst, MODULE v_moduleinst}) - -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct_lst, LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rec { @@ -15727,94 +16736,65 @@ rec { relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:10.1-12.46 rule plain{s : store, C : context, v_instr : instr, t_1_lst : valtype*, x_lst : idx*, t_2_lst : valtype*}: - `%;%|-%:%`(s, C, v_instr, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_lst, `%`_resulttype(t_2_lst))) - -- Instr_ok: `%|-%:%`(C, v_instr, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_lst, `%`_resulttype(t_2_lst))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(v_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_lst, `%`_resulttype(t_2_lst))) + `%;%|-%:%`(s, C, v_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- Instr_ok: `%|-%:%`(C, v_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 rule ref{s : store, C : context, v_ref : ref, rt : reftype}: - `%;%|-%:%`(s, C, $instr_ref(v_ref), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) + `%;%|-%:%`(s, C, $instr_ref(v_ref), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_reftype(rt)]))) -- Ref_ok: `%|-%:%`(s, v_ref, rt) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_ref: `%`(v_ref) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 rule label{s : store, C : context, v_n : n, instr'_lst : instr*, instr_lst : instr*, t_lst : valtype*, t'_lst : valtype*, x'_lst : idx*, x_lst : idx*}: - `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(v_n, instr'_lst, instr_lst), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t_lst))) - -- Instrs_ok2: `%;%|-%:%`(s, C, instr'_lst, `%->_%%`_instrtype(`%`_resulttype(t'_lst), x'_lst, `%`_resulttype(t_lst))) - -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_lst, `%->_%%`_instrtype(`%`_resulttype([]), x_lst, `%`_resulttype(t_lst))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_n, instr'_lst, instr_lst)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t_lst))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t'_lst), x'_lst, `%`_resulttype(t_lst))) - -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'_lst)], RETURN ?(), REFS [], RECS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), x_lst, `%`_resulttype(t_lst))) + `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(v_n, instr'_lst, instr_lst), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr'_lst, mk_instrtype_instrtype(mk_list_resulttype(t'_lst), x'_lst, mk_list_resulttype(t_lst))) + -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t'_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype([]), x_lst, mk_list_resulttype(t_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t'_lst), x'_lst, mk_list_resulttype(t_lst))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t'_lst)], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), x_lst, mk_list_resulttype(t_lst))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:23.1-26.37 rule frame{s : store, C : context, v_n : n, f : frame, instr_lst : instr*, t_lst : valtype*, C' : context}: - `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(v_n, f, instr_lst), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t_lst))) + `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(v_n, f, instr_lst), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) -- Frame_ok: `%|-%:%`(s, f, C') - -- Expr_ok2: `%;%|-%:%`(s, C', instr_lst, `%`_resulttype(t_lst)) - -- wf_store: `%`(s) - -- wf_context: `%`(C) + -- Expr_ok2: `%;%|-%:%`(s, C', instr_lst, mk_list_resulttype(t_lst)) -- wf_context: `%`(C') - -- wf_instr: `%`(`FRAME_%{%}%`_instr(v_n, f, instr_lst)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t_lst))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 rule handler{s : store, C : context, v_n : n, catch_lst : catch*, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_lst : idx*}: - `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(v_n, catch_lst, instr_lst), `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(v_n, catch_lst, instr_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- (Catch_ok: `%|-%:OK`(C, v_catch))*{v_catch <- catch_lst} - -- Instrs_ok2: `%;%|-%:%`(s, C, instr_lst, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_lst, `%`_resulttype(t_2_lst))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(v_n, catch_lst, instr_lst)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_lst, `%`_resulttype(t_2_lst))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 rule trap{s : store, C : context, t_1_lst : valtype*, t_2_lst : valtype*}: - `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRAP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) + `%;%|-%:%`(s, C, TRAP_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 rule empty{s : store, C : context}: - `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + `%;%|-%:%`(s, C, [], mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 rule seq{s : store, C : context, instr_1 : instr, instr_2_lst : instr*, t_1_lst : valtype*, x_1_lst : idx*, x_2_lst : idx*, t_3_lst : valtype*, t_2_lst : valtype*, init_lst : init*, t_lst : valtype*}: - `%;%|-%:%`(s, C, [instr_1] ++ instr_2_lst, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_1_lst ++ x_2_lst, `%`_resulttype(t_3_lst))) - -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_1_lst, `%`_resulttype(t_2_lst))) + `%;%|-%:%`(s, C, [instr_1] ++ instr_2_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst ++ x_2_lst, mk_list_resulttype(t_3_lst))) + -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) -- if (|init_lst| = |t_lst|) -- if (|init_lst| = |x_1_lst|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- x_1_lst} - -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst, x_1 <- x_1_lst} - -- if ($with_locals(C, x_1_lst, `%%`_localtype(SET_init, t)*{t <- t_lst}) =/= ?()) - -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1_lst, `%%`_localtype(SET_init, t)*{t <- t_lst})), instr_2_lst, `%->_%%`_instrtype(`%`_resulttype(t_2_lst), x_2_lst, `%`_resulttype(t_3_lst))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- instr_2_lst} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_1_lst ++ x_2_lst, `%`_resulttype(t_3_lst))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_1_lst, `%`_resulttype(t_2_lst))) - -- (wf_localtype: `%`(`%%`_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst} - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- t_lst} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2_lst), x_2_lst, `%`_resulttype(t_3_lst))) + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = mk_localtype_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst, x_1 <- x_1_lst} + -- if ($with_locals(C, x_1_lst, mk_localtype_localtype(SET_init, t)*{t <- t_lst}) =/= ?()) + -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1_lst, mk_localtype_localtype(SET_init, t)*{t <- t_lst})), instr_2_lst, mk_instrtype_instrtype(mk_list_resulttype(t_2_lst), x_2_lst, mk_list_resulttype(t_3_lst))) + -- wf_context: `%`(!($with_locals(C, x_1_lst, mk_localtype_localtype(SET_init, t)*{t <- t_lst}))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) + -- (wf_localtype: `%`(mk_localtype_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst} + -- (wf_localtype: `%`(mk_localtype_localtype(SET_init, t)))*{t <- t_lst} + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_2_lst), x_2_lst, mk_list_resulttype(t_3_lst))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:47.1-51.33 rule sub{s : store, C : context, instr_lst : instr*, it' : instrtype, it : instrtype}: @@ -15822,33 +16802,22 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- Instrs_ok2: `%;%|-%:%`(s, C, instr_lst, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} - -- wf_instrtype: `%`(it') -- wf_instrtype: `%`(it) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 rule frame{s : store, C : context, instr_lst : instr*, t_lst : valtype*, t_1_lst : valtype*, x_lst : idx*, t_2_lst : valtype*}: - `%;%|-%:%`(s, C, instr_lst, `%->_%%`_instrtype(`%`_resulttype(t_lst ++ t_1_lst), x_lst, `%`_resulttype(t_lst ++ t_2_lst))) - -- Instrs_ok2: `%;%|-%:%`(s, C, instr_lst, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_lst, `%`_resulttype(t_2_lst))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_lst)) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_lst ++ t_1_lst), x_lst, `%`_resulttype(t_lst ++ t_2_lst))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), x_lst, `%`_resulttype(t_2_lst))) + `%;%|-%:%`(s, C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ t_1_lst), x_lst, mk_list_resulttype(t_lst ++ t_2_lst))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:60.1-62.44 rule mk_Expr_ok2{s : store, C : context, instr_lst : instr*, t_lst : valtype*}: - `%;%|-%:%`(s, C, instr_lst, `%`_resulttype(t_lst)) - -- Instrs_ok2: `%;%|-%:%`(s, C, instr_lst, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t_lst))) - -- wf_store: `%`(s) - -- wf_context: `%`(C) - -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t_lst))) + `%;%|-%:%`(s, C, instr_lst, mk_list_resulttype(t_lst)) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) } ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15857,46 +16826,38 @@ relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) rule mk_Taginst_ok{s : store, jt : tagtype}: `%|-%:%`(s, {TYPE jt}, jt) -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) - -- wf_store: `%`(s) - -- wf_taginst: `%`({TYPE jt}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule mk_Globalinst_ok{s : store, mut_opt : mut?, t : valtype, v_val : val}: - `%|-%:%`(s, {TYPE `%%`_globaltype(mut_opt, t), VALUE v_val}, `%%`_globaltype(mut_opt, t)) - -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut_opt, t)) + `%|-%:%`(s, {TYPE mk_globaltype_globaltype(mut_opt, t), VALUE v_val}, mk_globaltype_globaltype(mut_opt, t)) + -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, mk_globaltype_globaltype(mut_opt, t)) -- Val_ok: `%|-%:%`(s, v_val, t) - -- wf_store: `%`(s) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut_opt, t), VALUE v_val}) - -- wf_globaltype: `%`(`%%`_globaltype(mut_opt, t)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_globaltype: `%`(mk_globaltype_globaltype(mut_opt, t)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Meminst_ok: `%|-%:%`(store, meminst, memtype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule mk_Meminst_ok{s : store, at : addrtype, v_n : n, v_m : m, b_lst : byte*}: - `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(v_n), ?(`%`_u64(v_m)))), BYTES b_lst}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(v_n), ?(`%`_u64(v_m))))) - -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(v_n), ?(`%`_u64(v_m))))) + `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m)))), BYTES b_lst}, `%%PAGE`_memtype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))))) + -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))))) -- if (|b_lst| = (v_n * (64 * $Ki))) - -- wf_store: `%`(s) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(v_n), ?(`%`_u64(v_m)))), BYTES b_lst}) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(v_n), ?(`%`_u64(v_m))))) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule mk_Tableinst_ok{s : store, at : addrtype, v_n : n, v_m : m, rt : reftype, ref_lst : ref*}: - `%|-%:%`(s, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(v_n), ?(`%`_u64(v_m))), rt), REFS ref_lst}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(v_n), ?(`%`_u64(v_m))), rt)) - -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(v_n), ?(`%`_u64(v_m))), rt)) + `%|-%:%`(s, {TYPE mk_tabletype_tabletype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))), rt), REFS ref_lst}, mk_tabletype_tabletype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))), rt)) + -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, mk_tabletype_tabletype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))), rt)) -- if (|ref_lst| = v_n) -- (Ref_ok: `%|-%:%`(s, v_ref, rt))*{v_ref <- ref_lst} - -- wf_store: `%`(s) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(v_n), ?(`%`_u64(v_m))), rt), REFS ref_lst}) - -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(v_n), ?(`%`_u64(v_m))), rt)) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))), rt)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) @@ -15907,9 +16868,7 @@ relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) -- Moduleinst_ok: `%|-%:%`(s, v_moduleinst, C) -- Func_ok: `%|-%:%`(C, v_func, dt') -- Deftype_sub: `%|-%<:%`(C, dt', dt) - -- wf_store: `%`(s) -- wf_context: `%`(C) - -- wf_funcinst: `%`({TYPE dt, MODULE v_moduleinst, CODE $funccode_func(v_func)}) -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -15917,23 +16876,19 @@ relation Structinst_ok: `%|-%:OK`(store, structinst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule mk_Structinst_ok{s : store, dt : deftype, fv_lst : fieldval*, mut_opt_lst : mut?*, zt_lst : storagetype*}: `%|-%:OK`(s, {TYPE dt, FIELDS fv_lst}) - -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- Expand: `%~~%`(dt, STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if (|fv_lst| = |zt_lst|) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- fv_lst, zt <- zt_lst} - -- wf_store: `%`(s) - -- wf_structinst: `%`({TYPE dt, FIELDS fv_lst}) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule mk_Arrayinst_ok{s : store, dt : deftype, fv_lst : fieldval*, mut_opt : mut?, zt : storagetype}: `%|-%:OK`(s, {TYPE dt, FIELDS fv_lst}) - -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- Expand: `%~~%`(dt, ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- fv_lst} - -- wf_store: `%`(s) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv_lst}) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Exninst_ok: `%|-%:OK`(store, exninst) @@ -15942,12 +16897,10 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) `%|-%:OK`(s, {TAG ta, FIELDS val_lst}) -- if (ta < |s.TAGS_store|) -- if ($typeuse_deftype(dt) = s.TAGS_store[ta].TYPE_taginst) - -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if (|t_lst| = |val_lst|) -- (Val_ok: `%|-%:%`(s, v_val, t))*{t <- t_lst, v_val <- val_lst} - -- wf_store: `%`(s) - -- wf_exninst: `%`({TAG ta, FIELDS val_lst}) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_lst), `%`_resulttype([]))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rec { @@ -15959,47 +16912,36 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) `%>>_%%`(fv_1, s, fv_2) -- ImmutReachable: `%>>_%%`(fv_1, s, fv') -- ImmutReachable: `%>>_%%`(fv', s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) -- wf_fieldval: `%`(fv') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 rule ref_struct{a : addr, s : store, i : nat, ft_lst : fieldtype*, zt : storagetype}: - `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) + `%>>_%%`(REF_STRUCT_ADDR_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) -- if (i < |s.STRUCTS_store[a].FIELDS_structinst|) -- if (a < |s.STRUCTS_store|) - -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft_lst))) + -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(mk_list_list(ft_lst))) -- if (i < |ft_lst|) - -- if (ft_lst[i] = `%%`_fieldtype(?(), zt)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_lst))) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) + -- if (ft_lst[i] = mk_fieldtype_fieldtype(?(), zt)) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_lst))) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(), zt)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:232.1-234.42 rule ref_array{a : addr, s : store, i : nat, zt : storagetype}: - `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) + `%>>_%%`(REF_ARRAY_ADDR_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) -- if (i < |s.ARRAYS_store[a].FIELDS_arrayinst|) -- if (a < |s.ARRAYS_store|) - -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) + -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(mk_fieldtype_fieldtype(?(), zt))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(), zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 rule ref_exn{a : addr, s : store, i : nat}: - `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, $fieldval_val(s.EXNS_store[a].FIELDS_exninst[i])) + `%>>_%%`(REF_EXN_ADDR_fieldval(a), s, $fieldval_val(s.EXNS_store[a].FIELDS_exninst[i])) -- if (i < |s.EXNS_store[a].FIELDS_exninst|) -- if (a < |s.EXNS_store|) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 rule ref_extern{v_ref : ref, s : store}: - `%>>_%%`(`REF.EXTERN`_fieldval(v_ref), s, $fieldval_ref(v_ref)) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(v_ref)) + `%>>_%%`(REF_EXTERN_fieldval(v_ref), s, $fieldval_ref(v_ref)) } ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16017,9 +16959,6 @@ relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) rule mk_NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}: `~%>>_%%`(fv_1, s, fv_2) -- if $fun_NotImmutReachable(fv_1, s, fv_2) - -- wf_fieldval: `%`(fv_1) - -- wf_store: `%`(s) - -- wf_fieldval: `%`(fv_2) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Store_ok: `|-%:OK`(store) @@ -16043,19 +16982,18 @@ relation Store_ok: `|-%:OK`(store) -- (Structinst_ok: `%|-%:OK`(s, v_structinst))*{v_structinst <- structinst_lst} -- (Arrayinst_ok: `%|-%:OK`(s, v_arrayinst))*{v_arrayinst <- arrayinst_lst} -- (Exninst_ok: `%|-%:OK`(s, v_exninst))*{v_exninst <- exninst_lst} - -- (NotImmutReachable: `~%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, `REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst_lst|){} - -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst_lst|){} - -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst_lst|){} + -- (NotImmutReachable: `~%>>_%%`(REF_STRUCT_ADDR_fieldval(a), s, REF_STRUCT_ADDR_fieldval(a)))^(a<|structinst_lst|){} + -- (NotImmutReachable: `~%>>_%%`(REF_ARRAY_ADDR_fieldval(a), s, REF_ARRAY_ADDR_fieldval(a)))^(a<|arrayinst_lst|){} + -- (NotImmutReachable: `~%>>_%%`(REF_EXN_ADDR_fieldval(a), s, REF_EXN_ADDR_fieldval(a)))^(a<|exninst_lst|){} -- if (s = {TAGS taginst_lst, GLOBALS globalinst_lst, MEMS meminst_lst, TABLES tableinst_lst, FUNCS funcinst_lst, DATAS datainst_lst, ELEMS eleminst_lst, STRUCTS structinst_lst, ARRAYS arrayinst_lst, EXNS exninst_lst}) - -- wf_store: `%`(s) -- (wf_typeuse: `%`(v_tagtype))*{v_tagtype <- tagtype_lst} -- (wf_globaltype: `%`(v_globaltype))*{v_globaltype <- globaltype_lst} -- (wf_memtype: `%`(v_memtype))*{v_memtype <- memtype_lst} -- (wf_tabletype: `%`(v_tabletype))*{v_tabletype <- tabletype_lst} -- (wf_reftype: `%`(v_elemtype))*{v_elemtype <- elemtype_lst} - -- (wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst_lst|){} - -- (wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst_lst|){} - -- (wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)))^(a<|exninst_lst|){} + -- (wf_fieldval: `%`(REF_STRUCT_ADDR_fieldval(a)))^(a<|structinst_lst|){} + -- (wf_fieldval: `%`(REF_ARRAY_ADDR_fieldval(a)))^(a<|arrayinst_lst|){} + -- (wf_fieldval: `%`(REF_EXN_ADDR_fieldval(a)))^(a<|exninst_lst|){} -- wf_store: `%`({TAGS taginst_lst, GLOBALS globalinst_lst, MEMS meminst_lst, TABLES tableinst_lst, FUNCS funcinst_lst, DATAS datainst_lst, ELEMS eleminst_lst, STRUCTS structinst_lst, ARRAYS arrayinst_lst, EXNS exninst_lst}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -16063,43 +17001,35 @@ relation Extend_taginst: `%<=%`(taginst, taginst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule mk_Extend_taginst{jt : tagtype}: `%<=%`({TYPE jt}, {TYPE jt}) - -- wf_taginst: `%`({TYPE jt}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_globalinst: `%<=%`(globalinst, globalinst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule mk_Extend_globalinst{mut_opt : mut?, t : valtype, v_val : val, val' : val}: - `%<=%`({TYPE `%%`_globaltype(mut_opt, t), VALUE v_val}, {TYPE `%%`_globaltype(mut_opt, t), VALUE val'}) + `%<=%`({TYPE mk_globaltype_globaltype(mut_opt, t), VALUE v_val}, {TYPE mk_globaltype_globaltype(mut_opt, t), VALUE val'}) -- if ((mut_opt = ?(MUT_mut)) \/ (v_val = val')) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut_opt, t), VALUE v_val}) - -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut_opt, t), VALUE val'}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_meminst: `%<=%`(meminst, meminst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule mk_Extend_meminst{at : addrtype, v_n : n, v_m : m, b_lst : byte*, n' : n, b'_lst : byte*}: - `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(v_n), ?(`%`_u64(v_m)))), BYTES b_lst}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(v_m)))), BYTES b'_lst}) + `%<=%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m)))), BYTES b_lst}, {TYPE `%%PAGE`_memtype(at, mk_limits_limits(mk_uN_u64(n'), ?(mk_uN_u64(v_m)))), BYTES b'_lst}) -- if (v_n <= n') -- if (|b_lst| <= |b'_lst|) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(v_n), ?(`%`_u64(v_m)))), BYTES b_lst}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(v_m)))), BYTES b'_lst}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_tableinst: `%<=%`(tableinst, tableinst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule mk_Extend_tableinst{at : addrtype, v_n : n, v_m : m, rt : reftype, ref_lst : ref*, n' : n, ref'_lst : ref*}: - `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(v_n), ?(`%`_u64(v_m))), rt), REFS ref_lst}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(v_m))), rt), REFS ref'_lst}) + `%<=%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))), rt), REFS ref_lst}, {TYPE mk_tabletype_tabletype(at, mk_limits_limits(mk_uN_u64(n'), ?(mk_uN_u64(v_m))), rt), REFS ref'_lst}) -- if (v_n <= n') -- if (|ref_lst| <= |ref'_lst|) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(v_n), ?(`%`_u64(v_m))), rt), REFS ref_lst}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(v_m))), rt), REFS ref'_lst}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_funcinst: `%<=%`(funcinst, funcinst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule mk_Extend_funcinst{dt : deftype, mm : moduleinst, fc : funccode}: `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) - -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_datainst: `%<=%`(datainst, datainst) @@ -16107,8 +17037,6 @@ relation Extend_datainst: `%<=%`(datainst, datainst) rule mk_Extend_datainst{b_lst : byte*, b'_lst : byte*}: `%<=%`({BYTES b_lst}, {BYTES b'_lst}) -- if ((b_lst = b'_lst) \/ (b'_lst = [])) - -- wf_datainst: `%`({BYTES b_lst}) - -- wf_datainst: `%`({BYTES b'_lst}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_eleminst: `%<=%`(eleminst, eleminst) @@ -16116,40 +17044,33 @@ relation Extend_eleminst: `%<=%`(eleminst, eleminst) rule mk_Extend_eleminst{rt : reftype, ref_lst : ref*, ref'_lst : ref*}: `%<=%`({TYPE rt, REFS ref_lst}, {TYPE rt, REFS ref'_lst}) -- if ((ref_lst = ref'_lst) \/ (ref'_lst = [])) - -- wf_eleminst: `%`({TYPE rt, REFS ref_lst}) - -- wf_eleminst: `%`({TYPE rt, REFS ref'_lst}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_structinst: `%<=%`(structinst, structinst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule mk_Extend_structinst{dt : deftype, fv_lst : fieldval*, fv'_lst : fieldval*, mut_opt_lst : mut?*, zt_lst : storagetype*}: `%<=%`({TYPE dt, FIELDS fv_lst}, {TYPE dt, FIELDS fv'_lst}) - -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- Expand: `%~~%`(dt, STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if (|fv_lst| = |fv'_lst|) -- if (|fv_lst| = |mut_opt_lst|) -- (if ((mut_opt = ?(MUT_mut)) \/ (fv = fv')))*{fv <- fv_lst, fv' <- fv'_lst, mut_opt <- mut_opt_lst} - -- wf_structinst: `%`({TYPE dt, FIELDS fv_lst}) - -- wf_structinst: `%`({TYPE dt, FIELDS fv'_lst}) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule mk_Extend_arrayinst{dt : deftype, fv_lst : fieldval*, fv'_lst : fieldval*, mut_opt : mut?, zt : storagetype}: `%<=%`({TYPE dt, FIELDS fv_lst}, {TYPE dt, FIELDS fv'_lst}) - -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- Expand: `%~~%`(dt, ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if (|fv_lst| = |fv'_lst|) -- (if ((mut_opt = ?(MUT_mut)) \/ (fv = fv')))*{fv <- fv_lst, fv' <- fv'_lst} - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv_lst}) - -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'_lst}) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut_opt, zt))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_exninst: `%<=%`(exninst, exninst) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule mk_Extend_exninst{ta : tagaddr, val_lst : val*}: `%<=%`({TAG ta, FIELDS val_lst}, {TAG ta, FIELDS val_lst}) - -- wf_exninst: `%`({TAG ta, FIELDS val_lst}) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Extend_store: `%<=%`(store, store) @@ -16186,29 +17107,24 @@ relation Extend_store: `%<=%`(store, store) -- (if (a < |s.EXNS_store|))^(a<|s.EXNS_store|){} -- (if (a < |s'.EXNS_store|))^(a<|s.EXNS_store|){} -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} - -- wf_store: `%`(s) - -- wf_store: `%`(s') ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation State_ok: `|-%:%`(state, context) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule mk_State_ok{s : store, f : frame, C : context}: - `|-%:%`(`%;%`_state(s, f), C) + `|-%:%`(mk_state_state(s, f), C) -- Store_ok: `|-%:OK`(s) -- Frame_ok: `%|-%:%`(s, f, C) - -- wf_context: `%`(C) - -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec relation Config_ok: `|-%:OK`(config) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rule mk_Config_ok{z : state, instr_lst : instr*, C : context, t_lst : valtype*}: - `|-%:OK`(`%;%`_config(z, instr_lst)) + `|-%:OK`(mk_config_config(z, instr_lst)) -- State_ok: `|-%:%`(z, C) - -- Expr_ok: `%|-%:%`(C, instr_lst, `%`_resulttype(t_lst)) + -- Expr_ok: `%|-%:%`(C, instr_lst, mk_list_resulttype(t_lst)) -- wf_context: `%`(C) -- (wf_valtype: `%`(t))*{t <- t_lst} - -- wf_config: `%`(`%;%`_config(z, instr_lst)) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat @@ -16268,30 +17184,22 @@ rec { relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 rule i32_add{C : context}: - `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 rule global_get{C : context, x : idx, t : valtype, v_mut : mut}: - `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + `%|-%:%`(C, [GLOBAL_GET_instr(x)], mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) - -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(v_mut), t)) - -- wf_context: `%`(C) - -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(v_mut), t)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = mk_globaltype_globaltype(?(v_mut), t)) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(v_mut), t)) ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, v_blocktype : blocktype, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*}: - `%|-%:%`(C, [BLOCK_instr(v_blocktype, instr_lst)], `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- Blocktype_ok: `%|-%:%`(C, v_blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_lst, `%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(v_blocktype, instr_lst)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1_lst), [], `%`_resulttype(t_2_lst))) - -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []}) + `%|-%:%`(C, [BLOCK_instr(v_blocktype, instr_lst)], mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Blocktype_ok: `%|-%:%`(C, v_blocktype, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []}) } ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec @@ -16299,27 +17207,26 @@ relation NotationReduct: `~>%`(instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule r_2{q_1 : num_, q_4 : num_, q_3 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule r_3{q_1 : num_, q_5 : num_}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rule r_4{q_6 : num_}: `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec def $instrdots : instr* +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation instrdots_is_wf: `%`(ret_val : instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule instrdots_is_wf0{ret_val : instr*}: + `%`(ret_val) + -- if (ret_val = $instrdots) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec syntax label = | `LABEL_%{%}`(v_n : n, instr_lst : instr*) @@ -16343,36 +17250,60 @@ relation wf_callframe: `%`(callframe) -- wf_frame: `%`(v_frame) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, v_store : store, X_0 : X, Y_0 : Y) : (store, addr) +def $allocX(syntax v_X, syntax Y, v_store : store, v_X_0 : v_X, Y_0 : Y) : (store, addr) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation allocX_is_wf(syntax v_X, syntax Y): `%%%%`(v_store : store, X_0 : v_X, Y_0 : Y, ret_val : (store, addr)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule allocX_is_wf0{syntax v_X, syntax Y, v_store : store, X_0 : v_X, Y_0 : Y, ret_val : (store, addr)}: + `%%%%`(v_store, X_0, Y_0, ret_val) + -- wf_store: `%`(v_store) + -- if (ret_val = $allocX(syntax v_X, syntax Y, v_store, X_0, Y_0)) + -- wf_store: `%`(ret_val.0) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rec { ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, v_store : store, var_0 : X*, var_1 : Y*) : (store, addr*) +def $allocXs(syntax v_X, syntax Y, v_store : store, var_0 : v_X*, var_1 : Y*) : (store, addr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) + def $allocXs{syntax v_X, syntax Y, s : store}(syntax v_X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, X'_lst : X*, Y : Y, Y'_lst : Y*}(syntax X, syntax Y, s, [X] ++ X'_lst, [Y] ++ Y'_lst) = (s_2, [a] ++ a'_lst) - -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) - -- let{s_2 : store, a'_lst : addr*} (s_2, a'_lst) = $allocXs(syntax X, syntax Y, s_1, X'_lst, Y'_lst) + def $allocXs{syntax v_X, syntax Y, s : store, v_X : v_X, X'_lst : v_X*, Y : Y, Y'_lst : Y*}(syntax v_X, syntax Y, s, [v_X] ++ X'_lst, [Y] ++ Y'_lst) = (s_2, [a] ++ a'_lst) + -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax v_X, syntax Y, s, v_X, Y) + -- let{s_2 : store, a'_lst : addr*} (s_2, a'_lst) = $allocXs(syntax v_X, syntax Y, s_1, X'_lst, Y'_lst) + -- wf_store: `%`($allocX(syntax v_X, syntax Y, s, v_X, Y).0) + -- wf_store: `%`($allocXs(syntax v_X, syntax Y, s_1, X'_lst, Y'_lst).0) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 +relation allocXs_is_wf(syntax v_X, syntax Y): `%%%%`(v_store : store, var_0 : v_X*, var_1 : Y*, ret_val : (store, addr*)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 + rule allocXs_is_wf0{syntax v_X, syntax Y, v_store : store, var_0 : v_X*, var_1 : Y*, ret_val : (store, addr*)}: + `%%%%`(v_store, var_0, var_1, ret_val) + -- wf_store: `%`(v_store) + -- if (ret_val = $allocXs(syntax v_X, syntax Y, v_store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) } ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec syntax symdots = - | `%`(i : nat) + | mk_symdots(i : nat) ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec relation wf_symdots: `%`(symdots) ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec rule symdots_case_0{i : nat}: - `%`(`%`_symdots(i)) + `%`(mk_symdots_symdots(i)) -- if (i = 0) ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax X) : nat +def $var(syntax v_X) : nat ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 + def $var{syntax v_X}(syntax v_X) = 0 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec syntax abbreviated = () @@ -16386,7 +17317,7 @@ syntax syntax = () ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bbyte : byte ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) + prod{`` : nat} ``:(0x00 | ... | 0xFF) => mk_byte_byte(``) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec rec { @@ -16394,10 +17325,10 @@ rec { ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 grammar BuN(v_N : N) : uN ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 - prod{v_n : n} `%`_byte(v_n):Bbyte => `%`_uN(v_n) + prod{v_n : n} mk_byte_byte(v_n):Bbyte => mk_uN_uN(v_n) -- if ((v_n < (2 ^ 7)) /\ (v_n < (2 ^ v_N))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 - prod{v_m : m, v_n : n} {{`%`_byte(v_n):Bbyte} {`%`_uN(v_m):BuN((((v_N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * v_m) + (((v_n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) + prod{v_m : m, v_n : n} {{mk_byte_byte(v_n):Bbyte} {mk_uN_uN(v_m):BuN((((v_N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => mk_uN_uN((((2 ^ 7) * v_m) + (((v_n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) -- if ((v_n >= (2 ^ 7)) /\ (v_N > 7)) } @@ -16407,20 +17338,20 @@ rec { ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 grammar BsN(v_N : N) : sN ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 - prod{v_n : n} `%`_byte(v_n):Bbyte => `%`_sN((v_n : nat <:> int)) + prod{v_n : n} mk_byte_byte(v_n):Bbyte => mk_sN_sN((v_n : nat <:> int)) -- if ((v_n < (2 ^ 6)) /\ (v_n < (2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 - prod{v_n : n} `%`_byte(v_n):Bbyte => `%`_sN(((v_n : nat <:> int) - ((2 ^ 7) : nat <:> int))) + prod{v_n : n} mk_byte_byte(v_n):Bbyte => mk_sN_sN(((v_n : nat <:> int) - ((2 ^ 7) : nat <:> int))) -- if ((((2 ^ 6) <= v_n) /\ (v_n < (2 ^ 7))) /\ ((v_n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 - prod{i : sN, v_n : n} {{`%`_byte(v_n):Bbyte} {i:BsN((((v_N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * ($proj_sN_0(i).0 : int <:> nat)) + (((v_n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) + prod{i : sN, v_n : n} {{mk_byte_byte(v_n):Bbyte} {i:BsN((((v_N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => mk_sN_sN(((((2 ^ 7) * ($proj_sN_0(i).0 : int <:> nat)) + (((v_n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) -- if ((v_n >= (2 ^ 7)) /\ (v_N > 7)) } ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar BiN(v_N : N) : iN ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN} i:BsN(v_N) => `%`_iN($inv_signed_(v_N, $proj_sN_0(i).0)) + prod{i : sN} i:BsN(v_N) => mk_uN_iN($inv_signed_(v_N, $proj_sN_0(i).0)) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar BfN(v_N : N) : fN @@ -16465,7 +17396,7 @@ grammar Bf64 : f64 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Blist(syntax el, grammar BX : el) : el* ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{v_n : n, el_lst : el*} {{`%`_u32(v_n):Bu32} {el:BX^v_n{el <- el_lst}}} => el_lst + prod{v_n : n, el_lst : el*} {{mk_uN_u32(v_n):Bu32} {el:BX^v_n{el <- el_lst}}} => el_lst ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bname : name @@ -16613,7 +17544,7 @@ grammar Bvaltype : valtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bresulttype : resulttype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t_lst : valtype*} t_lst:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t_lst) + prod{t_lst : valtype*} t_lst:Blist(syntax valtype, grammar Bvaltype) => mk_list_resulttype(t_lst) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bmut : mut? @@ -16639,16 +17570,16 @@ grammar Bstoragetype : storagetype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bfieldtype : fieldtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{mut_opt : mut?, zt : storagetype} {{zt:Bstoragetype} {mut_opt:Bmut}} => `%%`_fieldtype(mut_opt, zt) + prod{mut_opt : mut?, zt : storagetype} {{zt:Bstoragetype} {mut_opt:Bmut}} => mk_fieldtype_fieldtype(mut_opt, zt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bcomptype : comptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ft_lst : fieldtype*} {{0x5F} {ft_lst:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft_lst)) + prod{ft_lst : fieldtype*} {{0x5F} {ft_lst:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(mk_list_list(ft_lst)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t_1_lst : valtype*, t_2_lst : valtype*} {{0x60} {`%`_resulttype(t_1_lst):Bresulttype} {`%`_resulttype(t_2_lst):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst)) + prod{t_1_lst : valtype*, t_2_lst : valtype*} {{0x60} {mk_list_resulttype(t_1_lst):Bresulttype} {mk_list_resulttype(t_2_lst):Bresulttype}} => `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bsubtype : subtype @@ -16662,20 +17593,20 @@ grammar Bsubtype : subtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Brectype : rectype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st_lst : subtype*} {{0x4E} {st_lst:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st_lst)) + prod{st_lst : subtype*} {{0x4E} {st_lst:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(mk_list_list(st_lst)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) + prod{st : subtype} st:Bsubtype => REC_rectype(mk_list_list([st])) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Blimits : (addrtype, limits) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{v_n : n} {{0x00} {`%`_u64(v_n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(v_n), ?())) + prod{v_n : n} {{0x00} {mk_uN_u64(v_n):Bu64}} => (I32_addrtype, mk_limits_limits(mk_uN_u64(v_n), ?())) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{v_n : n, v_m : m} {{0x01} {`%`_u64(v_n):Bu64} {`%`_u64(v_m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(v_n), ?(`%`_u64(v_m)))) + prod{v_n : n, v_m : m} {{0x01} {mk_uN_u64(v_n):Bu64} {mk_uN_u64(v_m):Bu64}} => (I32_addrtype, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m)))) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{v_n : n} {{0x04} {`%`_u64(v_n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(v_n), ?())) + prod{v_n : n} {{0x04} {mk_uN_u64(v_n):Bu64}} => (I64_addrtype, mk_limits_limits(mk_uN_u64(v_n), ?())) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{v_n : n, v_m : m} {{0x05} {`%`_u64(v_n):Bu64} {`%`_u64(v_m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(v_n), ?(`%`_u64(v_m)))) + prod{v_n : n, v_m : m} {{0x05} {mk_uN_u64(v_n):Bu64} {mk_uN_u64(v_m):Bu64}} => (I64_addrtype, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m)))) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Btagtype : tagtype @@ -16685,7 +17616,7 @@ grammar Btagtype : tagtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bglobaltype : globaltype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{mut_opt : mut?, t : valtype} {{t:Bvaltype} {mut_opt:Bmut}} => `%%`_globaltype(mut_opt, t) + prod{mut_opt : mut?, t : valtype} {{t:Bvaltype} {mut_opt:Bmut}} => mk_globaltype_globaltype(mut_opt, t) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bmemtype : memtype @@ -16695,7 +17626,7 @@ grammar Bmemtype : memtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Btabletype : tabletype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) + prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => mk_tabletype_tabletype(at, lim, rt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bexterntype : externtype @@ -16728,7 +17659,7 @@ grammar Bblocktype : blocktype ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx(($proj_sN_0(i).0 : int <:> nat))) + prod{i : s33} i:Bs33 => _IDX_blocktype(mk_uN_typeidx(($proj_sN_0(i).0 : int <:> nat))) -- if ($proj_sN_0(i).0 >= (0 : nat <:> int)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec @@ -16745,16 +17676,16 @@ grammar Bcatch : catch ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec grammar Bmemarg : memidxop ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{v_n : n, v_m : m} {{`%`_u32(v_n):Bu32} {`%`_u64(v_m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(v_n), OFFSET `%`_u64(v_m)}) + prod{v_n : n, v_m : m} {{mk_uN_u32(v_n):Bu32} {mk_uN_u64(v_m):Bu64}} => (mk_uN_memidx(0), {ALIGN mk_uN_u32(v_n), OFFSET mk_uN_u64(v_m)}) -- if (v_n < (2 ^ 6)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, v_n : n, v_m : m} {{`%`_u32(v_n):Bu32} {x:Bmemidx} {`%`_u64(v_m):Bu64}} => (x, {ALIGN `%`_u32((((v_n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(v_m)}) + prod{x : idx, v_n : n, v_m : m} {{mk_uN_u32(v_n):Bu32} {x:Bmemidx} {mk_uN_u64(v_m):Bu64}} => (x, {ALIGN mk_uN_u32((((v_n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET mk_uN_u64(v_m)}) -- if (((2 ^ 6) <= v_n) /\ (v_n < (2 ^ 7))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec grammar Blaneidx : laneidx ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} `%`_byte($proj_uN_0(l).0):Bbyte => `%`_laneidx($proj_uN_0(l).0) + prod{l : labelidx} mk_byte_byte($proj_uN_0(l).0):Bbyte => mk_uN_laneidx($proj_uN_0(l).0) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec rec { @@ -16804,41 +17735,41 @@ grammar Binstr : instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 - prod{bt : blocktype, c_lst : catch*, in_lst : instr*} {{0x1F} {bt:Bblocktype} {c_lst:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- in_lst}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c_lst), in_lst) + prod{bt : blocktype, c_lst : catch*, in_lst : instr*} {{0x1F} {bt:Bblocktype} {c_lst:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- in_lst}} {0x0B}} => TRY_TABLE_instr(bt, mk_list_list(c_lst), in_lst) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 - prod{l : labelidx, null_1_opt : null?, ht_1 : heaptype, null_2_opt : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1_opt, null_2_opt):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1_opt, ht_1), REF_reftype(null_2_opt, ht_2)) + prod{l : labelidx, null_1_opt : null?, ht_1 : heaptype, null_2_opt : null?, ht_2 : heaptype} {{0xFB} {mk_uN_u32(24):Bu32} {(null_1_opt, null_2_opt):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1_opt, ht_1), REF_reftype(null_2_opt, ht_2)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 - prod{l : labelidx, null_1_opt : null?, ht_1 : heaptype, null_2_opt : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1_opt, null_2_opt):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1_opt, ht_1), REF_reftype(null_2_opt, ht_2)) + prod{l : labelidx, null_1_opt : null?, ht_1 : heaptype, null_2_opt : null?, ht_2 : heaptype} {{0xFB} {mk_uN_u32(25):Bu32} {(null_1_opt, null_2_opt):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1_opt, ht_1), REF_reftype(null_2_opt, ht_2)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 - prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) + prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL_GET_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) + prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL_SET_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) + prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL_TEE_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) + prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL_GET_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) + prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL_SET_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 - prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) + prod{x : idx} {{0x25} {x:Btableidx}} => TABLE_GET_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 - prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) + prod{x : idx} {{0x26} {x:Btableidx}} => TABLE_SET_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 - prod{x : idx, y : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) + prod{x : idx, y : idx} {{0xFC} {mk_uN_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE_INIT_instr(x, y) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 - prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) + prod{x : idx} {{0xFC} {mk_uN_u32(13):Bu32} {x:Belemidx}} => ELEM_DROP_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{0xFC} {mk_uN_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE_COPY_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 - prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) + prod{x : idx} {{0xFC} {mk_uN_u32(15):Bu32} {x:Btableidx}} => TABLE_GROW_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 - prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) + prod{x : idx} {{0xFC} {mk_uN_u32(16):Bu32} {x:Btableidx}} => TABLE_SIZE_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 - prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) + prod{x : idx} {{0xFC} {mk_uN_u32(17):Bu32} {x:Btableidx}} => TABLE_FILL_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 @@ -16848,25 +17779,25 @@ grammar Binstr : instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 - prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), S_sx))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 - prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 - prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), S_sx))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 - prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), U_sx))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 - prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), S_sx))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 - prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 - prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), S_sx))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 - prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), U_sx))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 - prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(32), S_sx))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 - prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(32), U_sx))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 @@ -16876,95 +17807,95 @@ grammar Binstr : instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 - prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 - prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(16)))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 - prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 - prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(16)))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 - prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(32)))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 - prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) + prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY_SIZE_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) + prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY_GROW_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 - prod{x : idx, y : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) + prod{x : idx, y : idx} {{0xFC} {mk_uN_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY_INIT_instr(x, y) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 - prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) + prod{x : idx} {{0xFC} {mk_uN_u32(9):Bu32} {x:Bdataidx}} => DATA_DROP_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{0xFC} {mk_uN_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY_COPY_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 - prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) + prod{x : idx} {{0xFC} {mk_uN_u32(11):Bu32} {x:Bmemidx}} => MEMORY_FILL_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) + prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF_NULL_instr(ht) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 - prod 0xD1 => `REF.IS_NULL`_instr + prod 0xD1 => REF_IS_NULL_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 - prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) + prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF_FUNC_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 - prod 0xD3 => `REF.EQ`_instr + prod 0xD3 => REF_EQ_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 - prod 0xD4 => `REF.AS_NON_NULL`_instr + prod 0xD4 => REF_AS_NON_NULL_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) + prod{ht : heaptype} {{0xFB} {mk_uN_u32(20):Bu32} {ht:Bheaptype}} => REF_TEST_instr(REF_reftype(?(), ht)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) + prod{ht : heaptype} {{0xFB} {mk_uN_u32(21):Bu32} {ht:Bheaptype}} => REF_TEST_instr(REF_reftype(?(NULL_null), ht)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) + prod{ht : heaptype} {{0xFB} {mk_uN_u32(22):Bu32} {ht:Bheaptype}} => REF_CAST_instr(REF_reftype(?(), ht)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) + prod{ht : heaptype} {{0xFB} {mk_uN_u32(23):Bu32} {ht:Bheaptype}} => REF_CAST_instr(REF_reftype(?(NULL_null), ht)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 - prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) + prod{x : idx} {{0xFB} {mk_uN_u32(0):Bu32} {x:Btypeidx}} => STRUCT_NEW_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 - prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) + prod{x : idx} {{0xFB} {mk_uN_u32(1):Bu32} {x:Btypeidx}} => STRUCT_NEW_DEFAULT_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.57 - prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) + prod{x : idx, i : fieldidx} {{0xFB} {mk_uN_u32(2):Bu32} {x:Btypeidx} {i:Bfieldidx}} => STRUCT_GET_instr(?(), x, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.59 - prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) + prod{x : idx, i : fieldidx} {{0xFB} {mk_uN_u32(3):Bu32} {x:Btypeidx} {i:Bfieldidx}} => STRUCT_GET_instr(?(S_sx), x, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.59 - prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) + prod{x : idx, i : fieldidx} {{0xFB} {mk_uN_u32(4):Bu32} {x:Btypeidx} {i:Bfieldidx}} => STRUCT_GET_instr(?(U_sx), x, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.57 - prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) + prod{x : idx, i : fieldidx} {{0xFB} {mk_uN_u32(5):Bu32} {x:Btypeidx} {i:Bfieldidx}} => STRUCT_SET_instr(x, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 - prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) + prod{x : idx} {{0xFB} {mk_uN_u32(6):Bu32} {x:Btypeidx}} => ARRAY_NEW_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 - prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) + prod{x : idx} {{0xFB} {mk_uN_u32(7):Bu32} {x:Btypeidx}} => ARRAY_NEW_DEFAULT_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 - prod{x : idx, v_n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(v_n):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n)) + prod{x : idx, v_n : n} {{0xFB} {mk_uN_u32(8):Bu32} {x:Btypeidx} {mk_uN_u32(v_n):Bu32}} => ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) + prod{x : idx, y : idx} {{0xFB} {mk_uN_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY_NEW_DATA_instr(x, y) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) + prod{x : idx, y : idx} {{0xFB} {mk_uN_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY_NEW_ELEM_instr(x, y) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 - prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) + prod{x : idx} {{0xFB} {mk_uN_u32(11):Bu32} {x:Btypeidx}} => ARRAY_GET_instr(?(), x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 - prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) + prod{x : idx} {{0xFB} {mk_uN_u32(12):Bu32} {x:Btypeidx}} => ARRAY_GET_instr(?(S_sx), x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 - prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) + prod{x : idx} {{0xFB} {mk_uN_u32(13):Bu32} {x:Btypeidx}} => ARRAY_GET_instr(?(U_sx), x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 - prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) + prod{x : idx} {{0xFB} {mk_uN_u32(14):Bu32} {x:Btypeidx}} => ARRAY_SET_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 - prod {{0xFB} {`%`_u32(15):Bu32}} => `ARRAY.LEN`_instr + prod {{0xFB} {mk_uN_u32(15):Bu32}} => ARRAY_LEN_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 - prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) + prod{x : idx} {{0xFB} {mk_uN_u32(16):Bu32} {x:Btypeidx}} => ARRAY_FILL_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 - prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{0xFB} {mk_uN_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY_COPY_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) + prod{x : idx, y : idx} {{0xFB} {mk_uN_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY_INIT_DATA_instr(x, y) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) + prod{x : idx, y : idx} {{0xFB} {mk_uN_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY_INIT_ELEM_instr(x, y) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 - prod {{0xFB} {`%`_u32(26):Bu32}} => `ANY.CONVERT_EXTERN`_instr + prod {{0xFB} {mk_uN_u32(26):Bu32}} => ANY_CONVERT_EXTERN_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod {{0xFB} {`%`_u32(27):Bu32}} => `EXTERN.CONVERT_ANY`_instr + prod {{0xFB} {mk_uN_u32(27):Bu32}} => EXTERN_CONVERT_ANY_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 - prod {{0xFB} {`%`_u32(28):Bu32}} => `REF.I31`_instr + prod {{0xFB} {mk_uN_u32(28):Bu32}} => REF_I31_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 - prod {{0xFB} {`%`_u32(29):Bu32}} => `I31.GET`_instr(S_sx) + prod {{0xFB} {mk_uN_u32(29):Bu32}} => I31_GET_instr(S_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod {{0xFB} {`%`_u32(30):Bu32}} => `I31.GET`_instr(U_sx) + prod {{0xFB} {mk_uN_u32(30):Bu32}} => I31_GET_instr(U_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 @@ -17084,15 +18015,15 @@ grammar Binstr : instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 - prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(8)))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 - prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(16)))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 - prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(8)))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 - prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(16)))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(32)))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 @@ -17230,533 +18161,533 @@ grammar Binstr : instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 - prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + prod {{0xFC} {mk_uN_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 - prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + prod {{0xFC} {mk_uN_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 - prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + prod {{0xFC} {mk_uN_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 - prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + prod {{0xFC} {mk_uN_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 - prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + prod {{0xFC} {mk_uN_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 - prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + prod {{0xFC} {mk_uN_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 - prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + prod {{0xFC} {mk_uN_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 - prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + prod {{0xFC} {mk_uN_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(8), 8, S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(8), 8, U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(16), 4, S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(16), 4, U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(32), 2, S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(32), 2, U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(8))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(16))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(32))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(64))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(8), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(16), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(32), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(64), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(8), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(16), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(32), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(64), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(32))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(64))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 - prod{b_lst : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- b_lst}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b_lst)) + prod{b_lst : byte*} {{0xFD} {mk_uN_u32(12):Bu32} {b:Bbyte^16{b <- b_lst}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b_lst)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 - prod{l_lst : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx^16{l <- l_lst}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx($proj_uN_0(l).0)^16{l <- l_lst}) + prod{l_lst : labelidx*} {{0xFD} {mk_uN_u32(13):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx^16{l <- l_lst}}} => VSHUFFLE_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_uN_laneidx($proj_uN_0(l).0)^16{l <- l_lst}) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 - prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + prod {{0xFD} {mk_uN_u32(14):Bu32}} => VSWIZZLOP_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 - prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + prod {{0xFD} {mk_uN_u32(256):Bu32}} => VSWIZZLOP_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 - prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + prod {{0xFD} {mk_uN_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 - prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + prod {{0xFD} {mk_uN_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 - prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + prod {{0xFD} {mk_uN_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 - prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + prod {{0xFD} {mk_uN_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 - prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + prod {{0xFD} {mk_uN_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 - prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + prod {{0xFD} {mk_uN_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 - prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) + prod{l : labelidx} {{0xFD} {mk_uN_u32(21):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), ?(S_sx), mk_uN_laneidx($proj_uN_0(l).0)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 - prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) + prod{l : labelidx} {{0xFD} {mk_uN_u32(22):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), ?(U_sx), mk_uN_laneidx($proj_uN_0(l).0)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 - prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx($proj_uN_0(l).0)) + prod{l : labelidx} {{0xFD} {mk_uN_u32(23):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_uN_laneidx($proj_uN_0(l).0)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 - prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) + prod{l : labelidx} {{0xFD} {mk_uN_u32(24):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), ?(S_sx), mk_uN_laneidx($proj_uN_0(l).0)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 - prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) + prod{l : labelidx} {{0xFD} {mk_uN_u32(25):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), ?(U_sx), mk_uN_laneidx($proj_uN_0(l).0)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 - prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx($proj_uN_0(l).0)) + prod{l : labelidx} {{0xFD} {mk_uN_u32(26):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_uN_laneidx($proj_uN_0(l).0)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 - prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) + prod{l : labelidx} {{0xFD} {mk_uN_u32(27):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), ?(), mk_uN_laneidx($proj_uN_0(l).0)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 - prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) + prod{l : labelidx} {{0xFD} {mk_uN_u32(28):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_uN_laneidx($proj_uN_0(l).0)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 - prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) + prod{l : labelidx} {{0xFD} {mk_uN_u32(29):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), ?(), mk_uN_laneidx($proj_uN_0(l).0)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 - prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) + prod{l : labelidx} {{0xFD} {mk_uN_u32(30):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_uN_laneidx($proj_uN_0(l).0)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 - prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) + prod{l : labelidx} {{0xFD} {mk_uN_u32(31):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), ?(), mk_uN_laneidx($proj_uN_0(l).0)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 - prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) + prod{l : labelidx} {{0xFD} {mk_uN_u32(32):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_uN_laneidx($proj_uN_0(l).0)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 - prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) + prod{l : labelidx} {{0xFD} {mk_uN_u32(33):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), ?(), mk_uN_laneidx($proj_uN_0(l).0)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 - prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) + prod{l : labelidx} {{0xFD} {mk_uN_u32(34):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_uN_laneidx($proj_uN_0(l).0)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 - prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 - prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 - prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 - prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 - prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 - prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 - prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 - prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 - prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 - prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 - prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 - prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 - prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 - prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 - prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 - prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 - prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 - prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 - prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 - prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 - prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 - prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 - prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 - prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 - prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 - prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 - prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 - prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 - prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 - prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 - prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 - prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 - prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 - prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 - prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 - prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 - prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 - prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 - prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 - prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 - prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 - prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 - prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) + prod {{0xFD} {mk_uN_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 - prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) + prod {{0xFD} {mk_uN_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 - prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + prod {{0xFD} {mk_uN_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 - prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) + prod {{0xFD} {mk_uN_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 - prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) + prod {{0xFD} {mk_uN_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 - prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + prod {{0xFD} {mk_uN_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 - prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + prod {{0xFD} {mk_uN_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 - prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 - prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 - prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 - prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 - prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + prod {{0xFD} {mk_uN_u32(100):Bu32}} => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16)))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 - prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + prod {{0xFD} {mk_uN_u32(101):Bu32}} => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), S_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 - prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + prod {{0xFD} {mk_uN_u32(102):Bu32}} => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), U_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 - prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(107):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 - prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(108):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 - prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(109):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 - prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 - prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 - prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 - prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 - prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 - prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 - prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 - prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 - prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 - prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 - prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 - prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + prod {{0xFD} {mk_uN_u32(124):Bu32}} => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 - prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + prod {{0xFD} {mk_uN_u32(125):Bu32}} => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 - prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 - prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 - prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 - prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 - prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 - prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 - prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 - prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 - prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 - prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 - prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 - prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 - prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 - prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 - prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 - prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 - prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 - prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + prod {{0xFD} {mk_uN_u32(132):Bu32}} => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8)))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 - prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + prod {{0xFD} {mk_uN_u32(133):Bu32}} => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), S_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 - prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + prod {{0xFD} {mk_uN_u32(134):Bu32}} => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), U_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 - prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + prod {{0xFD} {mk_uN_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 - prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + prod {{0xFD} {mk_uN_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 - prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + prod {{0xFD} {mk_uN_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 - prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + prod {{0xFD} {mk_uN_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 - prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(139):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 - prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(140):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 - prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(141):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 - prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + prod {{0xFD} {mk_uN_u32(156):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 - prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + prod {{0xFD} {mk_uN_u32(157):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 - prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + prod {{0xFD} {mk_uN_u32(158):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 - prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + prod {{0xFD} {mk_uN_u32(159):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 - prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + prod {{0xFD} {mk_uN_u32(274):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 - prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + prod {{0xFD} {mk_uN_u32(126):Bu32}} => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 - prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + prod {{0xFD} {mk_uN_u32(127):Bu32}} => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 - prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 - prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 - prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 - prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + prod {{0xFD} {mk_uN_u32(164):Bu32}} => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4)))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 - prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + prod {{0xFD} {mk_uN_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 - prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + prod {{0xFD} {mk_uN_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 - prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + prod {{0xFD} {mk_uN_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 - prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + prod {{0xFD} {mk_uN_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 - prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(171):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 - prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(172):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 - prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(173):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 - prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 - prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 - prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 - prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 - prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 - prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 - prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 - prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + prod {{0xFD} {mk_uN_u32(186):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 - prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + prod {{0xFD} {mk_uN_u32(188):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 - prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + prod {{0xFD} {mk_uN_u32(189):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 - prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + prod {{0xFD} {mk_uN_u32(190):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 - prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + prod {{0xFD} {mk_uN_u32(191):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 - prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2)) + prod {{0xFD} {mk_uN_u32(275):Bu32}} => VEXTTERNOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 - prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 - prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 - prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 - prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + prod {{0xFD} {mk_uN_u32(196):Bu32}} => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2)))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 - prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + prod {{0xFD} {mk_uN_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 - prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + prod {{0xFD} {mk_uN_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 - prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + prod {{0xFD} {mk_uN_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 - prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + prod {{0xFD} {mk_uN_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 - prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(203):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 - prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(204):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 - prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + prod {{0xFD} {mk_uN_u32(205):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 - prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 - prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 - prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 - prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 - prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 - prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 - prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 - prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 - prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + prod {{0xFD} {mk_uN_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 - prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + prod {{0xFD} {mk_uN_u32(220):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 - prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + prod {{0xFD} {mk_uN_u32(221):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 - prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + prod {{0xFD} {mk_uN_u32(222):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 - prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + prod {{0xFD} {mk_uN_u32(223):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 - prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 - prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 - prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 - prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 - prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 - prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 - prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 - prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 - prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 - prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 - prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 - prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 - prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 - prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 - prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 - prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 - prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 - prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 - prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 - prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 - prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 - prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 - prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 - prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 - prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 - prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 - prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 - prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 - prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 - prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 - prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 - prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 - prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 - prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 - prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 - prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 - prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 - prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + prod {{0xFD} {mk_uN_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 - prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 - prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 - prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 - prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + prod {{0xFD} {mk_uN_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 - prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + prod {{0xFD} {mk_uN_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 - prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + prod {{0xFD} {mk_uN_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 - prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + prod {{0xFD} {mk_uN_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 - prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + prod {{0xFD} {mk_uN_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 - prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + prod {{0xFD} {mk_uN_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 - prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + prod {{0xFD} {mk_uN_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 - prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + prod {{0xFD} {mk_uN_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 - prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + prod {{0xFD} {mk_uN_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 - prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + prod {{0xFD} {mk_uN_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 - prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + prod {{0xFD} {mk_uN_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 - prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + prod {{0xFD} {mk_uN_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 - prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + prod {{0xFD} {mk_uN_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 - prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + prod {{0xFD} {mk_uN_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 - prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + prod {{0xFD} {mk_uN_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) } ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec @@ -17767,7 +18698,7 @@ grammar Bexpr : expr ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bsection_(v_N : N, syntax en, grammar BX : en*) : en* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{en_lst : en*, len : nat} {{`%`_byte(v_N):Bbyte} {`%`_u32(len):Bu32} {en_lst:BX}} => en_lst + prod{en_lst : en*, len : nat} {{mk_byte_byte(v_N):Bbyte} {mk_uN_u32(len):Bu32} {en_lst:BX}} => en_lst -- if (len = 0) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod eps => [] @@ -17810,8 +18741,8 @@ grammar Bfuncsec : typeidx* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btable : table ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [`REF.NULL`_instr(ht)]) - -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) + prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF_NULL_instr(ht)]) + -- if (tt = mk_tabletype_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) @@ -17868,21 +18799,21 @@ grammar Belemkind : reftype ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Belem : elem ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{y_lst : idx*, e_o : expr} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y_lst:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [`REF.FUNC`_instr(y)*{y <- y_lst}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) + prod{y_lst : idx*, e_o : expr} {{mk_uN_u32(0):Bu32} {e_o:Bexpr} {y_lst:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF_FUNC_instr(y)*{y <- y_lst}], ACTIVE_elemmode(mk_uN_tableidx(0), e_o)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, y_lst : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y_lst:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- y_lst}], PASSIVE_elemmode) + prod{rt : reftype, y_lst : idx*} {{mk_uN_u32(1):Bu32} {rt:Belemkind} {y_lst:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF_FUNC_instr(y)*{y <- y_lst}], PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, y_lst : idx*, x : idx, e : expr} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y_lst:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- y_lst}], ACTIVE_elemmode(x, e)) + prod{rt : reftype, y_lst : idx*, x : idx, e : expr} {{mk_uN_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y_lst:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF_FUNC_instr(y)*{y <- y_lst}], ACTIVE_elemmode(x, e)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, y_lst : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y_lst:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- y_lst}], DECLARE_elemmode) + prod{rt : reftype, y_lst : idx*} {{mk_uN_u32(3):Bu32} {rt:Belemkind} {y_lst:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF_FUNC_instr(y)*{y <- y_lst}], DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_lst : expr*, e_O : expr} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e_lst:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e_lst, ACTIVE_elemmode(`%`_tableidx(0), e_O)) + prod{e_lst : expr*, e_O : expr} {{mk_uN_u32(4):Bu32} {e_O:Bexpr} {e_lst:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e_lst, ACTIVE_elemmode(mk_uN_tableidx(0), e_O)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, e_lst : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e_lst:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e_lst, PASSIVE_elemmode) + prod{rt : reftype, e_lst : expr*} {{mk_uN_u32(5):Bu32} {rt:Breftype} {e_lst:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e_lst, PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, e_lst : expr*, x : idx, e_O : expr} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e_lst:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e_lst, ACTIVE_elemmode(x, e_O)) + prod{rt : reftype, e_lst : expr*, x : idx, e_O : expr} {{mk_uN_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e_lst:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e_lst, ACTIVE_elemmode(x, e_O)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, e_lst : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e_lst:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e_lst, DECLARE_elemmode) + prod{rt : reftype, e_lst : expr*} {{mk_uN_u32(7):Bu32} {rt:Breftype} {e_lst:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e_lst, DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Belemsec : elem* @@ -17892,7 +18823,7 @@ grammar Belemsec : elem* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Blocals : local* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{t : valtype, v_n : n} {{`%`_u32(v_n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^v_n{} + prod{t : valtype, v_n : n} {{mk_uN_u32(v_n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^v_n{} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bfunc : code @@ -17903,7 +18834,7 @@ grammar Bfunc : code ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcode : code ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{v_code : code, len : nat} {{`%`_u32(len):Bu32} {v_code:Bfunc}} => v_code + prod{v_code : code, len : nat} {{mk_uN_u32(len):Bu32} {v_code:Bfunc}} => v_code -- if (len = 0) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec @@ -17914,11 +18845,11 @@ grammar Bcodesec : code* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdata : data ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{b_lst : byte*, e : expr} {{`%`_u32(0):Bu32} {e:Bexpr} {b_lst:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b_lst, ACTIVE_datamode(`%`_memidx(0), e)) + prod{b_lst : byte*, e : expr} {{mk_uN_u32(0):Bu32} {e:Bexpr} {b_lst:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b_lst, ACTIVE_datamode(mk_uN_memidx(0), e)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{b_lst : byte*} {{`%`_u32(1):Bu32} {b_lst:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b_lst, PASSIVE_datamode) + prod{b_lst : byte*} {{mk_uN_u32(1):Bu32} {b_lst:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b_lst, PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{b_lst : byte*, x : idx, e : expr} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b_lst:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b_lst, ACTIVE_datamode(x, e)) + prod{b_lst : byte*, x : idx, e : expr} {{mk_uN_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b_lst:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b_lst, ACTIVE_datamode(x, e)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdatasec : data* @@ -17928,7 +18859,7 @@ grammar Bdatasec : data* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdatacnt : u32* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{v_n : n} `%`_u32(v_n):Bu32 => [`%`_u32(v_n)] + prod{v_n : n} mk_uN_u32(v_n):Bu32 => [mk_uN_u32(v_n)] ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdatacntsec : u32? @@ -17958,7 +18889,7 @@ grammar Bversion : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmodule : module ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, typeidx_lst : typeidx*, n_opt : n?, expr_lst : expr*, local_lst_lst : local**} {Bmagic Bversion {Bcustomsec*{}} {type_lst:Btypesec} {Bcustomsec*{}} {import_lst:Bimportsec} {Bcustomsec*{}} {typeidx_lst:Bfuncsec} {Bcustomsec*{}} {table_lst:Btablesec} {Bcustomsec*{}} {mem_lst:Bmemsec} {Bcustomsec*{}} {tag_lst:Btagsec} {Bcustomsec*{}} {global_lst:Bglobalsec} {Bcustomsec*{}} {export_lst:Bexportsec} {Bcustomsec*{}} {start_opt:Bstartsec} {Bcustomsec*{}} {elem_lst:Belemsec} {Bcustomsec*{}} {`%`_u32(v_n)?{v_n <- n_opt}:Bdatacntsec} {Bcustomsec*{}} {(local_lst, v_expr)*{v_expr <- expr_lst, local_lst <- local_lst_lst}:Bcodesec} {Bcustomsec*{}} {data_lst:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst)) + prod{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, typeidx_lst : typeidx*, n_opt : n?, expr_lst : expr*, local_lst_lst : local**} {Bmagic Bversion {Bcustomsec*{}} {type_lst:Btypesec} {Bcustomsec*{}} {import_lst:Bimportsec} {Bcustomsec*{}} {typeidx_lst:Bfuncsec} {Bcustomsec*{}} {table_lst:Btablesec} {Bcustomsec*{}} {mem_lst:Bmemsec} {Bcustomsec*{}} {tag_lst:Btagsec} {Bcustomsec*{}} {global_lst:Bglobalsec} {Bcustomsec*{}} {export_lst:Bexportsec} {Bcustomsec*{}} {start_opt:Bstartsec} {Bcustomsec*{}} {elem_lst:Belemsec} {Bcustomsec*{}} {mk_uN_u32(v_n)?{v_n <- n_opt}:Bdatacntsec} {Bcustomsec*{}} {(local_lst, v_expr)*{v_expr <- expr_lst, local_lst <- local_lst_lst}:Bcodesec} {Bcustomsec*{}} {data_lst:Bdatasec} {Bcustomsec*{}}} => MODULE_module(mk_list_list(type_lst), mk_list_list(import_lst), mk_list_list(tag_lst), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list(func_lst), mk_list_list(data_lst), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst)) -- (if (v_n = |data_lst|))?{v_n <- n_opt} -- if ((n_opt =/= ?()) \/ ($dataidx_funcs(func_lst) = [])) -- (if (v_func = FUNC_func(v_typeidx, local_lst, v_expr)))*{v_expr <- expr_lst, v_func <- func_lst, local_lst <- local_lst_lst, v_typeidx <- typeidx_lst} @@ -17966,9 +18897,9 @@ grammar Bmodule : module ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec grammar Tchar : char ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) + prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) + prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec grammar Tsource : () @@ -17993,57 +18924,57 @@ grammar TfNplain : () ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tidchar : char ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) + prod{`` : nat} ``:(0x30 | ... | 0x39) => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) + prod{`` : nat} ``:(0x41 | ... | 0x5A) => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) + prod{`` : nat} ``:(0x61 | ... | 0x7A) => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => `%`_char(``) + prod{`` : nat} ``:0x21 => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => `%`_char(``) + prod{`` : nat} ``:0x23 => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => `%`_char(``) + prod{`` : nat} ``:0x24 => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => `%`_char(``) + prod{`` : nat} ``:0x25 => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => `%`_char(``) + prod{`` : nat} ``:0x26 => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => `%`_char(``) + prod{`` : nat} ``:0x27 => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => `%`_char(``) + prod{`` : nat} ``:0x2A => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => `%`_char(``) + prod{`` : nat} ``:0x2B => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => `%`_char(``) + prod{`` : nat} ``:0x2D => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => `%`_char(``) + prod{`` : nat} ``:0x2E => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => `%`_char(``) + prod{`` : nat} ``:0x2F => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => `%`_char(``) + prod{`` : nat} ``:0x3A => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => `%`_char(``) + prod{`` : nat} ``:0x3C => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => `%`_char(``) + prod{`` : nat} ``:0x3D => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => `%`_char(``) + prod{`` : nat} ``:0x3E => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => `%`_char(``) + prod{`` : nat} ``:0x3F => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => `%`_char(``) + prod{`` : nat} ``:0x40 => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => `%`_char(``) + prod{`` : nat} ``:0x5C => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => `%`_char(``) + prod{`` : nat} ``:0x5E => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => `%`_char(``) + prod{`` : nat} ``:0x5F => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => `%`_char(``) + prod{`` : nat} ``:0x60 => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => `%`_char(``) + prod{`` : nat} ``:0x7C => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => `%`_char(``) + prod{`` : nat} ``:0x7E => mk_char_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tdigit : nat @@ -18112,21 +19043,21 @@ grammar Thexnum : nat grammar Tstringchar : char ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{c : char} c:Tchar => c - -- if (((($proj_char_0(c).0 >= 32) /\ ($proj_char_0(c).0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) + -- if (((($proj_char_0(c).0 >= 32) /\ ($proj_char_0(c).0 =/= 127)) /\ (c =/= mk_char_char(34))) /\ (c =/= mk_char_char(92))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => `%`_char(9) + prod "\\t" => mk_char_char(9) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => `%`_char(10) + prod "\\n" => mk_char_char(10) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => `%`_char(13) + prod "\\r" => mk_char_char(13) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => `%`_char(34) + prod "\\\"" => mk_char_char(34) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => `%`_char(39) + prod "\\'" => mk_char_char(39) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => `%`_char(92) + prod "\\\\" => mk_char_char(92) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{v_n : n} {{"\\u{"} {v_n:Thexnum} {"}"}} => `%`_char(v_n) + prod{v_n : n} {{"\\u{"} {v_n:Thexnum} {"}"}} => mk_char_char(v_n) -- if ((v_n < 55296) \/ ((59392 <= v_n) /\ (v_n < 1114112))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -18134,7 +19065,7 @@ grammar Tstringelem : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{c : char} c:Tstringchar => $utf8([c]) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] + prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [mk_byte_byte(((16 * h_1) + h_2))] ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tstring : byte* @@ -18145,15 +19076,15 @@ grammar Tstring : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tname : name ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c_lst : char*, b_lst : byte*} b_lst:Tstring => `%`_name(c_lst) + prod{c_lst : char*, b_lst : byte*} b_lst:Tstring => mk_name_name(c_lst) -- if (b_lst = $utf8(c_lst)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tid : name ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c_lst : char*} {{"$"} {c_lst:Tidchar+{}}} => `%`_name(c_lst) + prod{c_lst : char*} {{"$"} {c_lst:Tidchar+{}}} => mk_name_name(c_lst) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c_lst : char*} {{"$"} {`%`_name(c_lst):Tname}} => `%`_name(c_lst) + prod{c_lst : char*} {{"$"} {mk_name_name(c_lst):Tname}} => mk_name_name(c_lst) -- if (|c_lst| > 0) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec @@ -18206,13 +19137,13 @@ grammar Tblockcomment : () grammar Tblockchar : () ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + -- if ((c =/= mk_char_char(59)) /\ (c =/= mk_char_char(40))) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) + -- if ((c =/= mk_char_char(59)) /\ (c =/= mk_char_char(41))) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + -- if ((c =/= mk_char_char(59)) /\ (c =/= mk_char_char(40))) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 prod{`` : ()} ``:Tblockcomment => (``, ()).1 } @@ -18293,24 +19224,24 @@ grammar Tnum : nat ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TuN(v_N : N) : uN ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{v_n : n} v_n:Tnum => `%`_uN(v_n) + prod{v_n : n} v_n:Tnum => mk_uN_uN(v_n) -- if (v_n < (2 ^ v_N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{v_n : n} {{"0x"} {v_n:Thexnum}} => `%`_uN(v_n) + prod{v_n : n} {{"0x"} {v_n:Thexnum}} => mk_uN_uN(v_n) -- if (v_n < (2 ^ v_N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TsN(v_N : N) : sN ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{s : int, v_n : n} {{s:Tsign} {`%`_uN(v_n):TuN(v_N)}} => `%`_sN((s * (v_n : nat <:> int))) + prod{s : int, v_n : n} {{s:Tsign} {mk_uN_uN(v_n):TuN(v_N)}} => mk_sN_sN((s * (v_n : nat <:> int))) -- if ((- ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (v_n : nat <:> int))) /\ ((s * (v_n : nat <:> int)) < ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TiN(v_N : N) : iN ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{v_n : n} `%`_uN(v_n):TuN(v_N) => `%`_iN(v_n) + prod{v_n : n} mk_uN_uN(v_n):TuN(v_N) => mk_uN_iN(v_n) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN} i:TsN(v_N) => `%`_iN($inv_signed_(v_N, $proj_sN_0(i).0)) + prod{i : sN} i:TsN(v_N) => mk_uN_iN($inv_signed_(v_N, $proj_sN_0(i).0)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rec { @@ -18594,19 +19525,19 @@ grammar Tstoragetype_(v_I : I) : storagetype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tfieldtype_(v_I : I) : fieldtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} zt:Tstoragetype_(v_I) => `%%`_fieldtype(?(), zt) + prod{zt : storagetype} zt:Tstoragetype_(v_I) => mk_fieldtype_fieldtype(?(), zt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(v_I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) + prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(v_I)} {")"}} => mk_fieldtype_fieldtype(?(MUT_mut), zt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tfield_(v_I : I) : (fieldtype, name?) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype, id_opt : char?} {{"("} {"field"} {?(`%`_name(lift(id_opt))):Tid?{}} {ft:Tfieldtype_(v_I)} {")"}} => (ft, ?(`%`_name(lift(id_opt)))) + prod{ft : fieldtype, id_opt : char?} {{"("} {"field"} {?(mk_name_name(lift(id_opt))):Tid?{}} {ft:Tfieldtype_(v_I)} {")"}} => (ft, ?(mk_name_name(lift(id_opt)))) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tparam_(v_I : I) : (valtype, name?) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype, id_opt : char?} {{"("} {"param"} {?(`%`_name(lift(id_opt))):Tid?{}} {t:Tvaltype_(v_I)} {")"}} => (t, ?(`%`_name(lift(id_opt)))) + prod{t : valtype, id_opt : char?} {{"("} {"param"} {?(mk_name_name(lift(id_opt))):Tid?{}} {t:Tvaltype_(v_I)} {")"}} => (t, ?(mk_name_name(lift(id_opt)))) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tresult_(v_I : I) : valtype @@ -18616,11 +19547,11 @@ grammar Tresult_(v_I : I) : valtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tcomptype_(v_I : I) : (comptype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft_lst : fieldtype*, id_opt_lst : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id_opt))))*{ft <- ft_lst, id_opt <- id_opt_lst}:Tlist(syntax (fieldtype, name?), grammar Tfield_(v_I))} {")"}} => (STRUCT_comptype(`%`_list(ft_lst)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id_opt)))*{id_opt <- id_opt_lst}], TYPEDEFS []}) + prod{ft_lst : fieldtype*, id_opt_lst : char?*} {{"("} {"struct"} {(ft, ?(mk_name_name(lift(id_opt))))*{ft <- ft_lst, id_opt <- id_opt_lst}:Tlist(syntax (fieldtype, name?), grammar Tfield_(v_I))} {")"}} => (STRUCT_comptype(mk_list_list(ft_lst)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(mk_name_name(lift(id_opt)))*{id_opt <- id_opt_lst}], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(v_I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(v_I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(mk_name_name([]))]], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t_1_lst : valtype*, t_2_lst : valtype*, id_opt_lst : char?*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id_opt))))*{id_opt <- id_opt_lst, t_1 <- t_1_lst}:Tlist(syntax (valtype, name?), grammar Tparam_(v_I))} {t_2_lst:Tlist(syntax valtype, grammar Tresult_(v_I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) + prod{t_1_lst : valtype*, t_2_lst : valtype*, id_opt_lst : char?*} {{"("} {"func"} {(t_1, ?(mk_name_name(lift(id_opt))))*{id_opt <- id_opt_lst, t_1 <- t_1_lst}:Tlist(syntax (valtype, name?), grammar Tparam_(v_I))} {t_2_lst:Tlist(syntax valtype, grammar Tresult_(v_I))} {")"}} => (`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(mk_name_name([]))]], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tfinal : final @@ -18635,12 +19566,12 @@ grammar Tsubtype_(v_I : I) : (subtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Ttypedef_(v_I : I) : (subtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{st : subtype, I' : I, id_opt : char?} {{"("} {"type"} {?(`%`_name(lift(id_opt))):Tid?{}} {(st, I'):Tsubtype_(v_I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id_opt)))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{st : subtype, I' : I, id_opt : char?} {{"("} {"type"} {?(mk_name_name(lift(id_opt))):Tid?{}} {(st, I'):Tsubtype_(v_I)} {")"}} => (st, I' +++ {TYPES [?(mk_name_name(lift(id_opt)))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Trectype_(v_I : I) : (rectype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{st_lst : subtype*, I'_lst : I*} {{"("} {"rec"} {(st, I')*{I' <- I'_lst, st <- st_lst}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(v_I))} {")"}} => (REC_rectype(`%`_list(st_lst)), $concat_idctxt(I'_lst)) + prod{st_lst : subtype*, I'_lst : I*} {{"("} {"rec"} {(st, I')*{I' <- I'_lst, st <- st_lst}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(v_I))} {")"}} => (REC_rectype(mk_list_list(st_lst)), $concat_idctxt(I'_lst)) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Taddrtype : addrtype @@ -18652,22 +19583,22 @@ grammar Taddrtype : addrtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tlimits : limits ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{v_n : n} `%`_u64(v_n):Tu64 => `[%..%]`_limits(`%`_u64(v_n), ?()) + prod{v_n : n} mk_uN_u64(v_n):Tu64 => mk_limits_limits(mk_uN_u64(v_n), ?()) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{v_n : n, v_m : m} {{`%`_u64(v_n):Tu64} {`%`_u64(v_m):Tu64}} => `[%..%]`_limits(`%`_u64(v_n), ?(`%`_u64(v_m))) + prod{v_n : n, v_m : m} {{mk_uN_u64(v_n):Tu64} {mk_uN_u64(v_m):Tu64}} => mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Ttypeuse_(v_I : I) : (typeidx, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec prod{x : idx, I' : I, st_lst : subtype*, i : n, t_1_lst : valtype*, t_2_lst : valtype*} {{"("} {"type"} {x:Ttypeidx_(v_I)} {")"}} => (x, I') - -- if (v_I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st_lst)), i))) - -- if (st_lst[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst)))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1_lst|{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (v_I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(mk_list_list(st_lst)), i))) + -- if (st_lst[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(mk_name_name([]))^|t_1_lst|{}, LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I, id_opt_lst : char?*, t_1_lst : valtype*, t_2_lst : valtype*, st_lst : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(v_I)} {")"} {(t_1, ?(`%`_name(lift(id_opt))))*{id_opt <- id_opt_lst, t_1 <- t_1_lst}:Tparam_(v_I)*{}} {t_2_lst:Tresult_(v_I)*{}}} => (x, I') - -- if (v_I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st_lst)), i))) - -- if (st_lst[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1_lst), `%`_resulttype(t_2_lst)))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id_opt)))*{id_opt <- id_opt_lst}, LABELS [], FIELDS [], TYPEDEFS []}) + prod{x : idx, I' : I, id_opt_lst : char?*, t_1_lst : valtype*, t_2_lst : valtype*, st_lst : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(v_I)} {")"} {(t_1, ?(mk_name_name(lift(id_opt))))*{id_opt <- id_opt_lst, t_1 <- t_1_lst}:Tparam_(v_I)*{}} {t_2_lst:Tresult_(v_I)*{}}} => (x, I') + -- if (v_I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(mk_list_list(st_lst)), i))) + -- if (st_lst[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(mk_name_name(lift(id_opt)))*{id_opt <- id_opt_lst}, LABELS [], FIELDS [], TYPEDEFS []}) -- Idctxt_ok: `|-%:OK`(I') ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec @@ -18678,9 +19609,9 @@ grammar Ttagtype_(v_I : I) : tagtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tglobaltype_(v_I : I) : globaltype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(v_I) => `%%`_globaltype(?(), t) + prod{t : valtype} t:Tvaltype_(v_I) => mk_globaltype_globaltype(?(), t) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(v_I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) + prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(v_I)} {")"}} => mk_globaltype_globaltype(?(MUT_mut), t) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tmemtype_(v_I : I) : memtype @@ -18690,20 +19621,20 @@ grammar Tmemtype_(v_I : I) : memtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Ttabletype_(v_I : I) : tabletype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(v_I)}} => `%%%`_tabletype(at, lim, rt) + prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(v_I)}} => mk_tabletype_tabletype(at, lim, rt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Texterntype_(v_I : I) : (externtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{jt : tagtype, id_opt : char?} {{"("} {"tag"} {?(`%`_name(lift(id_opt))):Tid?{}} {jt:Ttagtype_(v_I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id_opt)))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{jt : tagtype, id_opt : char?} {{"("} {"tag"} {?(mk_name_name(lift(id_opt))):Tid?{}} {jt:Ttagtype_(v_I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(mk_name_name(lift(id_opt)))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{gt : globaltype, id_opt : char?} {{"("} {"global"} {?(`%`_name(lift(id_opt))):Tid?{}} {gt:Tglobaltype_(v_I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id_opt)))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{gt : globaltype, id_opt : char?} {{"("} {"global"} {?(mk_name_name(lift(id_opt))):Tid?{}} {gt:Tglobaltype_(v_I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(mk_name_name(lift(id_opt)))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{mt : memtype, id_opt : char?} {{"("} {"memory"} {?(`%`_name(lift(id_opt))):Tid?{}} {mt:Tmemtype_(v_I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id_opt)))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{mt : memtype, id_opt : char?} {{"("} {"memory"} {?(mk_name_name(lift(id_opt))):Tid?{}} {mt:Tmemtype_(v_I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(mk_name_name(lift(id_opt)))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{tt : tabletype, id_opt : char?} {{"("} {"table"} {?(`%`_name(lift(id_opt))):Tid?{}} {tt:Ttabletype_(v_I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id_opt)))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{tt : tabletype, id_opt : char?} {{"("} {"table"} {?(mk_name_name(lift(id_opt))):Tid?{}} {tt:Ttabletype_(v_I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(mk_name_name(lift(id_opt)))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, id_opt : char?, I' : I} {{"("} {"func"} {?(`%`_name(lift(id_opt))):Tid?{}} {(x, I'):Ttypeuse_(v_I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id_opt)))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{x : idx, id_opt : char?, I' : I} {{"("} {"func"} {?(mk_name_name(lift(id_opt))):Tid?{}} {(x, I'):Ttypeuse_(v_I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(mk_name_name(lift(id_opt)))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tlabel_(v_I : I) : (name?, I) @@ -18722,7 +19653,7 @@ grammar Tblocktype_(v_I : I) : blocktype prod{t_opt : valtype?} t_opt:Tresult_(v_I)?{} => _RESULT_blocktype(t_opt) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(v_I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(mk_name_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tcatch_(v_I : I) : catch @@ -18746,22 +19677,22 @@ grammar Tlaneidx : laneidx ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Talign_(v_N : N) : u32 ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{v_n : n, v_m : m} {{"align="} {`%`_u64(v_m):Tu64}} => `%`_u32(v_n) + prod{v_n : n, v_m : m} {{"align="} {mk_uN_u64(v_m):Tu64}} => mk_uN_u32(v_n) -- if (v_m = (2 ^ v_n)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u32(v_N) + prod eps => mk_uN_u32(v_N) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Toffset : u64 ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{v_m : m} {{"offset="} {`%`_u64(v_m):Tu64}} => `%`_u64(v_m) + prod{v_m : m} {{"offset="} {mk_uN_u64(v_m):Tu64}} => mk_uN_u64(v_m) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(0) + prod eps => mk_uN_u64(0) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tmemarg_(v_N : N) : memarg ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{v_n : n, v_m : m} {{`%`_u32(v_n):Talign_(v_N)} {`%`_u64(v_m):Toffset}} => {ALIGN `%`_u32(v_n), OFFSET `%`_u64(v_m)} + prod{v_n : n, v_m : m} {{mk_uN_u32(v_n):Talign_(v_N)} {mk_uN_u64(v_m):Toffset}} => {ALIGN mk_uN_u32(v_n), OFFSET mk_uN_u64(v_m)} ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tplaininstr_(v_I : I) : instr @@ -18793,7 +19724,7 @@ grammar Tplaininstr_(v_I : I) : instr prod{x : idx} {{"call_ref"} {x:Ttypeidx_(v_I)}} => CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(v_I)} {(y, I'):Ttypeuse_(v_I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(mk_name_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "return" => RETURN_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -18802,37 +19733,37 @@ grammar Tplaininstr_(v_I : I) : instr prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(v_I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(v_I)} {(y, I'):Ttypeuse_(v_I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(mk_name_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(v_I)}} => THROW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "throw_ref" => THROW_REF_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.get"} {x:Tlocalidx_(v_I)}} => `LOCAL.GET`_instr(x) + prod{x : idx} {{"local.get"} {x:Tlocalidx_(v_I)}} => LOCAL_GET_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(v_I)}} => `LOCAL.SET`_instr(x) + prod{x : idx} {{"local.set"} {x:Tlocalidx_(v_I)}} => LOCAL_SET_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(v_I)}} => `LOCAL.TEE`_instr(x) + prod{x : idx} {{"local.tee"} {x:Tlocalidx_(v_I)}} => LOCAL_TEE_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(v_I)}} => `GLOBAL.GET`_instr(x) + prod{x : idx} {{"global.get"} {x:Tglobalidx_(v_I)}} => GLOBAL_GET_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(v_I)}} => `GLOBAL.SET`_instr(x) + prod{x : idx} {{"global.set"} {x:Tglobalidx_(v_I)}} => GLOBAL_SET_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(v_I)}} => `TABLE.GET`_instr(x) + prod{x : idx} {{"table.get"} {x:Ttableidx_(v_I)}} => TABLE_GET_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(v_I)}} => `TABLE.SET`_instr(x) + prod{x : idx} {{"table.set"} {x:Ttableidx_(v_I)}} => TABLE_SET_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(v_I)}} => `TABLE.SIZE`_instr(x) + prod{x : idx} {{"table.size"} {x:Ttableidx_(v_I)}} => TABLE_SIZE_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(v_I)}} => `TABLE.GROW`_instr(x) + prod{x : idx} {{"table.grow"} {x:Ttableidx_(v_I)}} => TABLE_GROW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(v_I)}} => `TABLE.FILL`_instr(x) + prod{x : idx} {{"table.fill"} {x:Ttableidx_(v_I)}} => TABLE_FILL_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(v_I)} {x_2:Ttableidx_(v_I)}} => `TABLE.COPY`_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(v_I)} {x_2:Ttableidx_(v_I)}} => TABLE_COPY_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(v_I)} {y:Telemidx_(v_I)}} => `TABLE.INIT`_instr(x, y) + prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(v_I)} {y:Telemidx_(v_I)}} => TABLE_INIT_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(v_I)}} => `ELEM.DROP`_instr(x) + prod{x : idx} {{"elem.drop"} {x:Telemidx_(v_I)}} => ELEM_DROP_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -18842,59 +19773,59 @@ grammar Tplaininstr_(v_I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), S_sx))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), S_sx))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), U_sx))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), S_sx))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), S_sx))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), U_sx))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(32), S_sx))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(32), U_sx))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(8), 8, S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(8), 8, U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(16), 4, S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(16), 4, U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(32), 2, S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(32), 2, U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(8))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(16))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(32))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(64))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(32))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(64))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(8), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(16), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(32), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(64), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -18904,101 +19835,101 @@ grammar Tplaininstr_(v_I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(16)))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(16)))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(32)))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(8), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(16), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(32), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(64), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.size"} {x:Tmemidx_(v_I)}} => `MEMORY.SIZE`_instr(x) + prod{x : idx} {{"memory.size"} {x:Tmemidx_(v_I)}} => MEMORY_SIZE_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(v_I)}} => `MEMORY.GROW`_instr(x) + prod{x : idx} {{"memory.grow"} {x:Tmemidx_(v_I)}} => MEMORY_GROW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(v_I)}} => `MEMORY.FILL`_instr(x) + prod{x : idx} {{"memory.fill"} {x:Tmemidx_(v_I)}} => MEMORY_FILL_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(v_I)} {x_2:Tmemidx_(v_I)}} => `MEMORY.COPY`_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(v_I)} {x_2:Tmemidx_(v_I)}} => MEMORY_COPY_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(v_I)} {y:Tdataidx_(v_I)}} => `MEMORY.INIT`_instr(x, y) + prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(v_I)} {y:Tdataidx_(v_I)}} => MEMORY_INIT_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(v_I)}} => `DATA.DROP`_instr(x) + prod{x : idx} {{"data.drop"} {x:Tdataidx_(v_I)}} => DATA_DROP_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(v_I)}} => `REF.NULL`_instr(ht) + prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(v_I)}} => REF_NULL_instr(ht) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(v_I)}} => `REF.FUNC`_instr(x) + prod{x : idx} {{"ref.func"} {x:Tfuncidx_(v_I)}} => REF_FUNC_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => `REF.IS_NULL`_instr + prod "ref.is_null" => REF_IS_NULL_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.as_non_null" => `REF.AS_NON_NULL`_instr + prod "ref.as_non_null" => REF_AS_NON_NULL_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.eq" => `REF.EQ`_instr + prod "ref.eq" => REF_EQ_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.test"} {rt:Treftype_(v_I)}} => `REF.TEST`_instr(rt) + prod{rt : reftype} {{"ref.test"} {rt:Treftype_(v_I)}} => REF_TEST_instr(rt) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(v_I)}} => `REF.CAST`_instr(rt) + prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(v_I)}} => REF_CAST_instr(rt) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => `REF.I31`_instr + prod "ref.i31" => REF_I31_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => `I31.GET`_instr(S_sx) + prod "i31.get_s" => I31_GET_instr(S_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => `I31.GET`_instr(U_sx) + prod "i31.get_u" => I31_GET_instr(U_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(v_I)}} => `STRUCT.NEW`_instr(x) + prod{x : idx} {{"struct.new"} {x:Ttypeidx_(v_I)}} => STRUCT_NEW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(v_I)}} => `STRUCT.NEW_DEFAULT`_instr(x) + prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(v_I)}} => STRUCT_NEW_DEFAULT_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(v_I)} {i:Tfieldidx__(v_I, x)}} => `STRUCT.GET`_instr(?(), x, i) + prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(v_I)} {i:Tfieldidx__(v_I, x)}} => STRUCT_GET_instr(?(), x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(v_I)} {i:Tfieldidx__(v_I, x)}} => `STRUCT.GET`_instr(?(S_sx), x, i) + prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(v_I)} {i:Tfieldidx__(v_I, x)}} => STRUCT_GET_instr(?(S_sx), x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(v_I)} {i:Tfieldidx__(v_I, x)}} => `STRUCT.GET`_instr(?(U_sx), x, i) + prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(v_I)} {i:Tfieldidx__(v_I, x)}} => STRUCT_GET_instr(?(U_sx), x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(v_I)} {i:Tfieldidx__(v_I, x)}} => `STRUCT.SET`_instr(x, i) + prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(v_I)} {i:Tfieldidx__(v_I, x)}} => STRUCT_SET_instr(x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(v_I)}} => `ARRAY.NEW`_instr(x) + prod{x : idx} {{"array.new"} {x:Ttypeidx_(v_I)}} => ARRAY_NEW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(v_I)}} => `ARRAY.NEW_DEFAULT`_instr(x) + prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(v_I)}} => ARRAY_NEW_DEFAULT_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, v_n : n} {{"array.new_fixed"} {x:Ttypeidx_(v_I)} {`%`_u32(v_n):Tu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(v_n)) + prod{x : idx, v_n : n} {{"array.new_fixed"} {x:Ttypeidx_(v_I)} {mk_uN_u32(v_n):Tu32}} => ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(v_I)} {y:Tdataidx_(v_I)}} => `ARRAY.NEW_DATA`_instr(x, y) + prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(v_I)} {y:Tdataidx_(v_I)}} => ARRAY_NEW_DATA_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(v_I)} {y:Telemidx_(v_I)}} => `ARRAY.NEW_ELEM`_instr(x, y) + prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(v_I)} {y:Telemidx_(v_I)}} => ARRAY_NEW_ELEM_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(v_I)}} => `ARRAY.GET`_instr(?(), x) + prod{x : idx} {{"array.get"} {x:Ttypeidx_(v_I)}} => ARRAY_GET_instr(?(), x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(v_I)}} => `ARRAY.GET`_instr(?(S_sx), x) + prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(v_I)}} => ARRAY_GET_instr(?(S_sx), x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(v_I)}} => `ARRAY.GET`_instr(?(U_sx), x) + prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(v_I)}} => ARRAY_GET_instr(?(U_sx), x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(v_I)}} => `ARRAY.SET`_instr(x) + prod{x : idx} {{"array.set"} {x:Ttypeidx_(v_I)}} => ARRAY_SET_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => `ARRAY.LEN`_instr + prod "array.len" => ARRAY_LEN_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.fill"} {x:Ttypeidx_(v_I)}} => `ARRAY.FILL`_instr(x) + prod{x : idx} {{"array.fill"} {x:Ttypeidx_(v_I)}} => ARRAY_FILL_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(v_I)} {x_2:Ttypeidx_(v_I)}} => `ARRAY.COPY`_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(v_I)} {x_2:Ttypeidx_(v_I)}} => ARRAY_COPY_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(v_I)} {y:Tdataidx_(v_I)}} => `ARRAY.INIT_DATA`_instr(x, y) + prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(v_I)} {y:Tdataidx_(v_I)}} => ARRAY_INIT_DATA_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(v_I)} {y:Telemidx_(v_I)}} => `ARRAY.INIT_ELEM`_instr(x, y) + prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(v_I)} {y:Telemidx_(v_I)}} => ARRAY_INIT_ELEM_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => `ANY.CONVERT_EXTERN`_instr + prod "any.convert_extern" => ANY_CONVERT_EXTERN_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "extern.convert_any" => `EXTERN.CONVERT_ANY`_instr + prod "extern.convert_any" => EXTERN_CONVERT_ANY_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -19082,9 +20013,9 @@ grammar Tplaininstr_(v_I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(8)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(16)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -19092,11 +20023,11 @@ grammar Tplaininstr_(v_I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(8)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(16)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(32)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -19292,205 +20223,205 @@ grammar Tplaininstr_(v_I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{c_lst : f64*} {{"v128.const"} {"f64x2"} {c_lst:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- c_lst}))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i_lst : laneidx*} {{"i8x16.shuffle"} {i_lst:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i_lst) + prod{i_lst : laneidx*} {{"i8x16.shuffle"} {i_lst:Tlaneidx^16{}}} => VSHUFFLE_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), i_lst) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + prod "i8x16.swizzle" => VSWIZZLOP_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) + prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), ?(S_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) + prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), ?(U_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) + prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), ?(S_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) + prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), ?(U_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) + prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) + prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) + prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) + prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) + prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) + prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) + prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) + prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) + prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) + prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -19500,259 +20431,259 @@ grammar Tplaininstr_(v_I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + prod "i8x16.shl" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + prod "i8x16.shr_s" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + prod "i8x16.shr_u" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + prod "i16x8.shl" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + prod "i16x8.shr_s" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + prod "i16x8.shr_u" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + prod "i32x4.shl" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + prod "i32x4.shr_s" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + prod "i32x4.shr_u" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + prod "i64x2.shl" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + prod "i64x2.shr_s" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + prod "i64x2.shr_u" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + prod "i8x16.bitmask" => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + prod "i16x8.bitmask" => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + prod "i32x4.bitmask" => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + prod "i64x2.bitmask" => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + prod "i8x16.narrow_i16x8_s" => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), S_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + prod "i8x16.narrow_i16x8_u" => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), U_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + prod "i16x8.narrow_i32x4_s" => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), S_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + prod "i16x8.narrow_i32x4_u" => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), U_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec rec { @@ -19774,16 +20705,16 @@ grammar Tinstrs_(v_I : I) : instr* ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 grammar Tblockinstr_(v_I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 - prod{bt : blocktype, in_lst : instr*, id_opt : char?, I' : I, id'_opt : char?} {{"block"} {(?(`%`_name(lift(id_opt))), I'):Tlabel_(v_I)} {bt:Tblocktype_(v_I)} {in_lst:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'_opt))):Tid?{}}} => BLOCK_instr(bt, in_lst) + prod{bt : blocktype, in_lst : instr*, id_opt : char?, I' : I, id'_opt : char?} {{"block"} {(?(mk_name_name(lift(id_opt))), I'):Tlabel_(v_I)} {bt:Tblocktype_(v_I)} {in_lst:Tinstrs_(I')} {"end"} {?(mk_name_name(lift(id'_opt))):Tid?{}}} => BLOCK_instr(bt, in_lst) -- if ((id'_opt = ?()) \/ (id'_opt = id_opt)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 - prod{bt : blocktype, in_lst : instr*, id_opt : char?, I' : I, id'_opt : char?} {{"loop"} {(?(`%`_name(lift(id_opt))), I'):Tlabel_(v_I)} {bt:Tblocktype_(v_I)} {in_lst:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'_opt))):Tid?{}}} => LOOP_instr(bt, in_lst) + prod{bt : blocktype, in_lst : instr*, id_opt : char?, I' : I, id'_opt : char?} {{"loop"} {(?(mk_name_name(lift(id_opt))), I'):Tlabel_(v_I)} {bt:Tblocktype_(v_I)} {in_lst:Tinstrs_(I')} {"end"} {?(mk_name_name(lift(id'_opt))):Tid?{}}} => LOOP_instr(bt, in_lst) -- if ((id'_opt = ?()) \/ (id'_opt = id_opt)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 - prod{bt : blocktype, in_1_lst : instr*, in_2_lst : instr*, id_opt : char?, I' : I, id_1_opt : char?, id_2_opt : char?} {{"if"} {(?(`%`_name(lift(id_opt))), I'):Tlabel_(v_I)} {bt:Tblocktype_(v_I)} {in_1_lst:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1_opt))):Tid?{}} {in_2_lst:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2_opt))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1_lst, in_2_lst) + prod{bt : blocktype, in_1_lst : instr*, in_2_lst : instr*, id_opt : char?, I' : I, id_1_opt : char?, id_2_opt : char?} {{"if"} {(?(mk_name_name(lift(id_opt))), I'):Tlabel_(v_I)} {bt:Tblocktype_(v_I)} {in_1_lst:Tinstrs_(I')} {"else"} {?(mk_name_name(lift(id_1_opt))):Tid?{}} {in_2_lst:Tinstrs_(I')} {"end"} {?(mk_name_name(lift(id_2_opt))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1_lst, in_2_lst) -- if (((id_1_opt = ?()) \/ (id_1_opt = id_opt)) /\ ((id_2_opt = ?()) \/ (id_2_opt = id_opt))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 - prod{bt : blocktype, c_lst : catch*, in_lst : instr*, id_opt : char?, I' : I, id'_opt : char?} {{"try_table"} {(?(`%`_name(lift(id_opt))), I'):Tlabel_(v_I)} {bt:Tblocktype_(v_I)} {c_lst:Tcatch_(v_I)*{}} {in_lst:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'_opt))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c_lst), in_lst) + prod{bt : blocktype, c_lst : catch*, in_lst : instr*, id_opt : char?, I' : I, id'_opt : char?} {{"try_table"} {(?(mk_name_name(lift(id_opt))), I'):Tlabel_(v_I)} {bt:Tblocktype_(v_I)} {c_lst:Tcatch_(v_I)*{}} {in_lst:Tinstrs_(I')} {"end"} {?(mk_name_name(lift(id'_opt))):Tid?{}}} => TRY_TABLE_instr(bt, mk_list_list(c_lst), in_lst) -- if ((id'_opt = ?()) \/ (id'_opt = id_opt)) } @@ -19796,38 +20727,38 @@ grammar Texpr_(v_I : I) : expr grammar Ttype_(v_I : I) : (type, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{qt : rectype, I' : I, I'' : I, v_n : n, st_lst : subtype*} (qt, I'):Trectype_(v_I) => (TYPE_type(qt), I' +++ I'') - -- if (qt = REC_rectype(`%`_list(st_lst))) + -- if (qt = REC_rectype(mk_list_list(st_lst))) -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id_opt)))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{jt : tagtype, id_opt : char?} {{"("} {"tag"} {?(mk_name_name(lift(id_opt))):Tid?{}} {jt:Ttagtype_(v_I)} {")"}} => (TAG_tag(jt), {TYPES [], TAGS [?(mk_name_name(lift(id_opt)))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tglobal_(v_I : I) : (global, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{gt : globaltype, e : expr, id_opt : char?} {{"("} {"global"} {?(`%`_name(lift(id_opt))):Tid?{}} {gt:Tglobaltype_(v_I)} {e:Texpr_(v_I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id_opt)))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{gt : globaltype, e : expr, id_opt : char?} {{"("} {"global"} {?(mk_name_name(lift(id_opt))):Tid?{}} {gt:Tglobaltype_(v_I)} {e:Texpr_(v_I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(mk_name_name(lift(id_opt)))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmem_(v_I : I) : (mem, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{mt : memtype, id_opt : char?} {{"("} {"memory"} {?(`%`_name(lift(id_opt))):Tid?{}} {mt:Tmemtype_(v_I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id_opt)))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{mt : memtype, id_opt : char?} {{"("} {"memory"} {?(mk_name_name(lift(id_opt))):Tid?{}} {mt:Tmemtype_(v_I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(mk_name_name(lift(id_opt)))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttable_(v_I : I) : (table, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{tt : tabletype, e : expr, id_opt : char?} {{"("} {"table"} {?(`%`_name(lift(id_opt))):Tid?{}} {tt:Ttabletype_(v_I)} {e:Texpr_(v_I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id_opt)))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{tt : tabletype, e : expr, id_opt : char?} {{"("} {"table"} {?(mk_name_name(lift(id_opt))):Tid?{}} {tt:Ttabletype_(v_I)} {e:Texpr_(v_I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(mk_name_name(lift(id_opt)))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tlocal_(v_I : I) : (local*, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{t : valtype, id_opt : char?} {{"("} {"local"} {?(`%`_name(lift(id_opt))):Tid?{}} {t:Tvaltype_(v_I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id_opt)))], LABELS [], FIELDS [], TYPEDEFS []}) + prod{t : valtype, id_opt : char?} {{"("} {"local"} {?(mk_name_name(lift(id_opt))):Tid?{}} {t:Tvaltype_(v_I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(mk_name_name(lift(id_opt)))], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tfunc_(v_I : I) : (func, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{x : idx, loc_lst_lst : local**, e : expr, id_opt : char?, I_1 : I, I_2_lst : I*, I' : I} {{"("} {"func"} {?(`%`_name(lift(id_opt))):Tid?{}} {(x, I_1):Ttypeuse_(v_I)} {(loc_lst, I_2):Tlocal_(v_I)*{I_2 <- I_2_lst, loc_lst <- loc_lst_lst}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc_lst_lst), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id_opt)))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{x : idx, loc_lst_lst : local**, e : expr, id_opt : char?, I_1 : I, I_2_lst : I*, I' : I} {{"("} {"func"} {?(mk_name_name(lift(id_opt))):Tid?{}} {(x, I_1):Ttypeuse_(v_I)} {(loc_lst, I_2):Tlocal_(v_I)*{I_2 <- I_2_lst, loc_lst <- loc_lst_lst}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc_lst_lst), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(mk_name_name(lift(id_opt)))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -- if (I' = v_I +++ I_1 +++ $concat_idctxt(I_2_lst)) -- Idctxt_ok: `|-%:OK`(I') @@ -19849,9 +20780,9 @@ grammar Toffset_(v_I : I) : expr ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdata_(v_I : I) : (data, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{b_lst : byte*, id_opt : char?} {{"("} {"data"} {?(`%`_name(lift(id_opt))):Tid?{}} {b_lst:Tdatastring} {")"}} => (DATA_data(b_lst, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id_opt)))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{b_lst : byte*, id_opt : char?} {{"("} {"data"} {?(mk_name_name(lift(id_opt))):Tid?{}} {b_lst:Tdatastring} {")"}} => (DATA_data(b_lst, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(mk_name_name(lift(id_opt)))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{b_lst : byte*, x : idx, e : expr, id_opt : char?} {{"("} {"data"} {?(`%`_name(lift(id_opt))):Tid?{}} {x:Tmemuse_(v_I)} {e:Toffset_(v_I)} {b_lst:Tdatastring} {")"}} => (DATA_data(b_lst, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id_opt)))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{b_lst : byte*, x : idx, e : expr, id_opt : char?} {{"("} {"data"} {?(mk_name_name(lift(id_opt))):Tid?{}} {x:Tmemuse_(v_I)} {e:Toffset_(v_I)} {b_lst:Tdatastring} {")"}} => (DATA_data(b_lst, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(mk_name_name(lift(id_opt)))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telemexpr_(v_I : I) : expr @@ -19871,11 +20802,11 @@ grammar Ttableuse_(v_I : I) : tableidx ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telem_(v_I : I) : (elem, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{rt : reftype, e_lst : expr*, id_opt : char?} {{"("} {"elem"} {?(`%`_name(lift(id_opt))):Tid?{}} {(rt, e_lst):Telemlist_(v_I)} {")"}} => (ELEM_elem(rt, e_lst, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id_opt)))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{rt : reftype, e_lst : expr*, id_opt : char?} {{"("} {"elem"} {?(mk_name_name(lift(id_opt))):Tid?{}} {(rt, e_lst):Telemlist_(v_I)} {")"}} => (ELEM_elem(rt, e_lst, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(mk_name_name(lift(id_opt)))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{rt : reftype, e_lst : expr*, x : idx, e' : expr, id_opt : char?} {{"("} {"elem"} {?(`%`_name(lift(id_opt))):Tid?{}} {x:Ttableuse_(v_I)} {e':Toffset_(v_I)} {(rt, e_lst):Telemlist_(v_I)} {")"}} => (ELEM_elem(rt, e_lst, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id_opt)))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{rt : reftype, e_lst : expr*, x : idx, e' : expr, id_opt : char?} {{"("} {"elem"} {?(mk_name_name(lift(id_opt))):Tid?{}} {x:Ttableuse_(v_I)} {e':Toffset_(v_I)} {(rt, e_lst):Telemlist_(v_I)} {")"}} => (ELEM_elem(rt, e_lst, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(mk_name_name(lift(id_opt)))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{rt : reftype, e_lst : expr*, id_opt : char?} {{"("} {"elem"} {?(`%`_name(lift(id_opt))):Tid?{}} {"declare"} {(rt, e_lst):Telemlist_(v_I)} {")"}} => (ELEM_elem(rt, e_lst, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id_opt)))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{rt : reftype, e_lst : expr*, id_opt : char?} {{"("} {"elem"} {?(mk_name_name(lift(id_opt))):Tid?{}} {"declare"} {(rt, e_lst):Telemlist_(v_I)} {")"}} => (ELEM_elem(rt, e_lst, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(mk_name_name(lift(id_opt)))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tstart_(v_I : I) : (start, idctxt) @@ -19990,7 +20921,7 @@ grammar Tdecl_(v_I : I) : (decl, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmodule : module ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, I_lst : I*, decl_lst : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(v_decl, v_I)*{v_I <- I_lst, v_decl <- decl_lst}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type_lst), `%`_list(import_lst), `%`_list(tag_lst), `%`_list(global_lst), `%`_list(mem_lst), `%`_list(table_lst), `%`_list(func_lst), `%`_list(data_lst), `%`_list(elem_lst), start_opt, `%`_list(export_lst)) + prod{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, I_lst : I*, decl_lst : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(v_decl, v_I)*{v_I <- I_lst, v_decl <- decl_lst}:Tdecl_(I')*{}} {")"}} => MODULE_module(mk_list_list(type_lst), mk_list_list(import_lst), mk_list_list(tag_lst), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list(func_lst), mk_list_list(data_lst), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst)) -- if (I' = $concat_idctxt(I_lst)) -- Idctxt_ok: `|-%:OK`(I') -- if (type_lst = $typesd(decl_lst)) @@ -20012,7 +20943,7 @@ grammar Tdecldots_(v_I : I) : (decl, idctxt)* prod{`` : (decl, idctxt)} [``]:Tdecl_(v_I)*{} => [``] ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bvar(syntax X) : () +grammar Bvar(syntax v_X) : () ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec prod 0x00 => ((), ()).1 @@ -20031,7 +20962,7 @@ grammar Bsymsplit : () prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tvar(syntax X) : () +grammar Tvar(syntax v_X) : () ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec prod 0x00 => ((), ()).1 diff --git a/spectec/test-middlend/test.spectec.exp b/spectec/test-middlend/test.spectec.exp index dfda9d09a7..5cdae156af 100644 --- a/spectec/test-middlend/test.spectec.exp +++ b/spectec/test-middlend/test.spectec.exp @@ -472,7 +472,7 @@ def $t_totalize2(nat : nat) : nat? ;; test.spectec def $t_totalize3(nat : nat) : nat? ;; test.spectec - def $t_totalize3{n : nat}(n) = (iter_val#2 + iter_val#1)?{iter_val#2 <- $t_totalize(n), iter_val#1 <- $t_totalize2((n + 10))} + def $t_totalize3{n : nat}(n) = (iter_val_2 + iter_val_1)?{iter_val_2 <- $t_totalize(n), iter_val_1 <- $t_totalize2((n + 10))} == IL Validation after pass improve-ids... == Complete. From 6d5aaabb88dcb81923d7572e7ad490bf5c30837c Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 21 May 2026 14:41:38 +0100 Subject: [PATCH 083/115] Rocq: now rendering wfness lemmas for functions. --- spectec/src/backend-rocq/print.ml | 37 +++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index 505878b520..87f41c081e 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -3,17 +3,21 @@ open Util.Source open Il.Walk module StringSet = Set.Make(String) - +module StringMap = Map.Make(String) type rocq_env = { mutable tf_set : StringSet.t; mutable il_env : Il.Env.t; - mutable proj_set : StringSet.t + mutable proj_set : StringSet.t; + mutable wf_lemma_set : StringSet.t; + mutable typ_to_wf_map : text StringMap.t } let new_env () = { tf_set = StringSet.empty; il_env = Il.Env.empty; - proj_set = StringSet.empty + proj_set = StringSet.empty; + wf_lemma_set = StringSet.empty; + typ_to_wf_map = StringMap.empty } let iter_prem_rels_list = ["List.Forall"; "List.Forall2"; "List_Forall3"] @@ -676,6 +680,13 @@ let render_single_type id at params = | {it = ExpP (_, typ); _} :: ps when List.for_all is_typ_param ps -> (render_type RHS typ, ps) | _ -> error at ("Given projection function: " ^ id ^ " has invalid parameters!") +let render_wfness_func_lemma id rule = + let RuleD (_, quants, _, _, prems) = rule.it in + let forall_quantifiers = string_of_list "forall " ",\n\t" " " (render_param RHS) quants in + let string_prems = string_of_list "" "" " ->\n\t" (render_prem) prems in + "Lemma " ^ id ^ " : " ^ forall_quantifiers ^ string_prems ^ ".\n" ^ + "Proof. Admitted" + let render_function_def prefix id at params r_typ clauses = let has_typ_fam = List.length params > 1 && List.exists is_type_family_param params in let is_proj_func = StringSet.mem id !env_ref.proj_set in @@ -737,6 +748,8 @@ let has_prems c = let start_prefix def = match def.it with + | RelD (id, _, _, _, _) when StringSet.mem id.it !env_ref.wf_lemma_set -> + "" | _ when is_inductive def -> "Inductive " | DecD (_, _, _, []) -> "Axiom " | DecD (_, _, _, clauses) when List.exists has_prems clauses -> "Axiom " @@ -744,11 +757,6 @@ let start_prefix def = | TypD (_, _, [inst]) when is_record_typ inst -> "Record " | _ -> "" -let is_axiom def = - match def.it with - | DecD (_, _, _, _clauses) -> true - | _ -> false - (* TODO - revise mutual recursion with other defs such as records and axioms *) let rec string_of_def has_endline recursive def = let end_newline = if has_endline then ".\n\n" else "" in @@ -776,6 +784,8 @@ let rec string_of_def has_endline recursive def = | RelD (id, _, _, typ, []) -> let prefix = if recursive then "" else "Axiom " in start ^ render_rel_axiom prefix (render_id id.it) typ ^ end_newline + | RelD (id, _, _, _, [rule]) when StringSet.mem id.it !env_ref.wf_lemma_set -> + start ^ render_wfness_func_lemma id.it rule ^ end_newline | RelD (id, _, _, typ, rules) -> let prefix = if recursive then "" else "Inductive " in start ^ render_relation prefix (render_id id.it) typ rules ^ end_newline @@ -946,8 +956,9 @@ let rec filter_def def = | _ -> Some def let is_tf_hint h = h.hintid.it = Middlend.Typefamilyremoval.type_family_hint_id - let is_proj_hint h = h.hintid.it = Middlend.Uncaseremoval.uncase_proj_hint_id +let is_wf_hint h = h.hintid.it = Middlend.Undep.wf_hint_id +let is_wf_func_hint h = h.hintid.it = Middlend.Undep.wf_func_id let rec register_hints env def = match def.it with @@ -955,6 +966,14 @@ let rec register_hints env def = env.tf_set <- StringSet.add id.it env.tf_set | HintD { it = DecH (id, hints); _} when List.exists is_proj_hint hints -> env.proj_set <- StringSet.add id.it env.proj_set + | HintD { it = RelH (id, hints); _} when List.exists is_wf_func_hint hints -> + env.wf_lemma_set <- StringSet.add id.it env.wf_lemma_set + | HintD { it = RelH (rel_id, hints); _} when List.exists is_wf_hint hints -> + begin match (List.find_opt is_wf_hint hints) with + | Some {hintexp = { it = El.Ast.VarE (typ_id, _); _}; _} -> + env.typ_to_wf_map <- StringMap.add typ_id.it rel_id.it env.typ_to_wf_map + | _ -> () + end | RecD defs -> List.iter (register_hints env) defs | _ -> () From 296fa933b65908fc2010acf0365a819ee1872388 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 26 May 2026 14:00:12 +0100 Subject: [PATCH 084/115] CR changes --- spectec/src/exe-spectec/main.ml | 16 +++++++- spectec/src/il/walk.ml | 2 +- spectec/src/middlend/improveids.ml | 47 ++++++++++------------- spectec/src/middlend/typefamilyremoval.ml | 3 +- spectec/src/middlend/uncaseremoval.mli | 2 +- spectec/src/middlend/undep.ml | 23 ++++++----- spectec/src/middlend/undep.mli | 6 +++ 7 files changed, 56 insertions(+), 43 deletions(-) diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index 246a5f9e1c..51ec2811a0 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -152,6 +152,16 @@ let run_pass : pass -> Il.Ast.script -> Il.Ast.script = function | LetIntroMech -> Middlend.Letintromech.transform | ElseSimp -> Middlend.Elsesimp.transform +(* Argument parsing - Specific for undep pass *) +let set_wf_state s = + Middlend.Undep.wf_state := + match s with + | "minimal" -> Middlend.Undep.Minimal + | "all" -> Middlend.Undep.All + | "none" -> Middlend.Undep.Wfnone + | _ -> + raise (Arg.Bad "wf-state must be minimal, all, or none") + (* Argument parsing *) let banner () = @@ -224,7 +234,11 @@ let argspec = Arg.align ( "--all-passes", Arg.Unit (fun () -> List.iter enable_pass all_passes)," Run all passes"; "--test-version", Arg.Int (fun i -> Backend_interpreter.Construct.version := i; Il2al.Translate.version := i), " Wasm version to assume for tests (default: 3)"; - + "--wf-state", Arg.String set_wf_state, " Denotes the placement of wfness relations for the remove-indexed-types pass + (default: minimal): + minimal: Places wfness premises for terms that do not appear in the conclusion + all: Places wfness premises whenever it encounters a term that needs it + none: Does not place any wfness premises"; "-help", Arg.Unit ignore, ""; "--help", Arg.Unit ignore, ""; ] ) diff --git a/spectec/src/il/walk.ml b/spectec/src/il/walk.ml index 4b774aaf31..aebe74a1fa 100644 --- a/spectec/src/il/walk.ml +++ b/spectec/src/il/walk.ml @@ -163,7 +163,7 @@ and transform_prem t p = and transform_param t p = { p with it = match p.it with | ExpP (id, typ) -> ExpP (t.transform_var_id id, transform_typ t typ) - | TypP id -> TypP (t.transform_var_id id) + | TypP id -> TypP (t.transform_typ_id id) | DefP (id, params, typ) -> DefP (t.transform_def_id id, List.map (transform_param t) params, transform_typ t typ) | GramP (id, params, typ) -> GramP (t.transform_gram_id id, List.map (transform_param t) params, transform_typ t typ) } diff --git a/spectec/src/middlend/improveids.ml b/spectec/src/middlend/improveids.ml index 5a155a16ad..00541b375e 100644 --- a/spectec/src/middlend/improveids.ml +++ b/spectec/src/middlend/improveids.ml @@ -20,15 +20,15 @@ let fun_prefix = "fun_" let res_prefix = "r_" type id_type = - | VAR (* Variables *) - | USERDEF (* Types, type constructors and relations *) - | FUNCDEF (* function definitions *) + | Var (* Variables *) + | Userdef (* Types and relations *) + | Funcdef (* function definitions *) + | Atoms (* Type constructors *) let empty_info typ_id: region * Xl.Atom.info = (no_region, {def = typ_id; case = ""}) (* Id transformation *) -let rec transform_id' (env : env) (id_type : id_type) (s : text) = - let t_func = transform_id' env id_type in +let transform_id' (env : env) (id_type : id_type) (s : text) = let change_id s' = String.map (function | '.' -> '_' @@ -44,24 +44,26 @@ let rec transform_id' (env : env) (id_type : id_type) (s : text) = match id_type with (* Leave naming hole as is *) | _ when s' = "_" -> s' - | VAR when Il.Env.mem_typ env.il_env (s' $ no_region) + | Var when Il.Env.mem_typ env.il_env (s' $ no_region) || Il.Env.mem_rel env.il_env (s' $ no_region) || Il.Env.mem_def env.il_env (s' $ no_region) - || StringSet.mem s' env.atom_str_set -> t_func (var_prefix ^ s') - | FUNCDEF when Il.Env.mem_typ env.il_env (s' $ no_region) + || StringSet.mem s' env.atom_str_set -> (var_prefix ^ s') + | Funcdef when Il.Env.mem_typ env.il_env (s' $ no_region) || Il.Env.mem_rel env.il_env (s' $ no_region) - || StringSet.mem s' env.atom_str_set -> t_func (fun_prefix ^ s') + || StringSet.mem s' env.atom_str_set -> (fun_prefix ^ s') + | Userdef when StringSet.mem s' env.atom_str_set -> (res_prefix ^ s') (* Checking whether an id is an int - if so, put a reserved prefix *) - | _ when Option.is_some (int_of_string_opt s') -> t_func (res_prefix ^ s') + | _ when Option.is_some (int_of_string_opt s') -> (res_prefix ^ s') | _ -> s' -let t_var_id env id = transform_id' env VAR id.it $ id.at -let t_def_id env id = transform_id' env FUNCDEF id.it $ id.at -let t_user_def_id env id = transform_id' env USERDEF id.it $ id.at +let t_var_id env id = transform_id' env Var id.it $ id.at +let t_def_id env id = transform_id' env Funcdef id.it $ id.at +let t_user_def_id env id = transform_id' env Userdef id.it $ id.at +let t_atom_id env id = transform_id' env Atoms id.it $ id.at let transform_rule_id env rule_id rel_id = match rule_id.it with | "" -> make_prefix ^ rel_id.it - | _ -> transform_id' env USERDEF rule_id.it + | _ -> transform_id' env Atoms rule_id.it let is_atomid a = match a.it with @@ -80,8 +82,8 @@ let register_atom_id env s = let transform_atom env typ_id a = match a.it with | Atom s -> - register_atom_id env (t_user_def_id env (s $ a.at)).it; - Atom (t_user_def_id env (s $ a.at)).it $$ a.at % a.note + register_atom_id env (t_atom_id env (s $ a.at)).it; + Atom (t_atom_id env (s $ a.at)).it $$ a.at % a.note | _ -> register_atom_id env (make_prefix ^ typ_id); Atom (make_prefix ^ typ_id) $$ a.at % a.note @@ -90,8 +92,8 @@ let transform_atom env typ_id a = let transform_atom' env a = match a.it with | Atom s -> - register_atom_id env (t_user_def_id env (s $ a.at)).it; - Atom (t_user_def_id env (s $ a.at)).it $$ a.at % a.note + register_atom_id env (t_atom_id env (s $ a.at)).it; + Atom (t_atom_id env (s $ a.at)).it $$ a.at % a.note | _ -> a let transform_mixop env typ_id (m : mixop) = @@ -112,14 +114,6 @@ let rec check_iteration_naming e iterexp = Eq.eq_id id id' && check_iteration_naming e i | _ -> false -and t_typ env t = - (match t.it with - | VarT (id, []) when not (Env.mem_typ env.il_env id) -> - (* Type parameter - treat it as such *) - VarT (t_var_id env id, []) - | typ -> typ - ) $ t.at - and t_exp env e = (match e.it with | CaseE (m, e1) -> @@ -202,7 +196,6 @@ let transform_hintdef env hintdef = let rec t_def env def = let tf = { base_transformer with transform_exp = t_exp env; - transform_typ = t_typ env; transform_path = t_path env; transform_var_id = t_var_id env; transform_typ_id = t_user_def_id env; diff --git a/spectec/src/middlend/typefamilyremoval.ml b/spectec/src/middlend/typefamilyremoval.ml index a518a1821c..dd6f404245 100644 --- a/spectec/src/middlend/typefamilyremoval.ml +++ b/spectec/src/middlend/typefamilyremoval.ml @@ -457,7 +457,8 @@ let rec transform_prem quant_map env prem = | IfPr e -> quant_map, IfPr (transform_exp quant_map env e) | LetPr (quants, e1, e2) -> (* NOTE: for let since we only have expressions we cannot modify the env ever. *) - let _, new_quant_map = extend_quant_set env quant_map quants in + let env', new_quant_map = extend_quant_set env quant_map quants in + assert (env = env'); new_quant_map, LetPr (List.map (transform_param env) quants, transform_exp new_quant_map env e1, transform_exp quant_map env e2) | ElsePr -> quant_map, ElsePr diff --git a/spectec/src/middlend/uncaseremoval.mli b/spectec/src/middlend/uncaseremoval.mli index f1fc6fc6f7..d7275efbc7 100644 --- a/spectec/src/middlend/uncaseremoval.mli +++ b/spectec/src/middlend/uncaseremoval.mli @@ -46,4 +46,4 @@ Names were specifically chosen here for simplicity. *) val transform : Il.Ast.script -> Il.Ast.script -val uncase_proj_hint_id : string \ No newline at end of file +val uncase_proj_hint_id : string diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index 4c390cdc02..2826ad6840 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -29,14 +29,13 @@ let wf_lemma_suffix = "_is_wf" let wf_hint_id = "wf-relation" let wf_func_id = "wf-lemma-func" -[@@@warning "-37"] type wfstate = - | ALL (* Places wf premises whenever it encounters a term/variable that needs well-formedness check*) - | MINIMAL (* Places only wf premises in terms in relations and functions that do not appear in the conclusion *) - | NONE (* Does not place any wf premises in relations/functions *) + | All (* Places wf premises whenever it encounters a term/variable that needs well-formedness check*) + | Minimal (* Places only wf premises in terms in relations and functions that do not appear in the conclusion *) + | Wfnone (* Does not place any wf premises in relations/functions *) (* State that indicates what the placement algorithm should do *) -let wf_state = MINIMAL +let wf_state : wfstate ref = ref Minimal let error at msg = error at "Undep error" msg @@ -313,13 +312,13 @@ let get_wf_terms cl exp prems = | CallE _ -> true | _ -> false in - let wf_terms = (if wf_state = MINIMAL then [] else collect_exp cl exp) @ List.concat_map (collect_prem cl) prems in + let wf_terms = (if !wf_state = Minimal then [] else collect_exp cl exp) @ List.concat_map (collect_prem cl) prems in let (call_prems, constr_prems) = List.partition (fun ((e1, _), _) -> is_calle e1) wf_terms in let unique_func = Util.Lib.List.nub (fun ((e1, _t1), iterexp1) ((e2, _t2), iterexp2) -> Il.Eq.eq_exp e1 e2 && Il.Eq.eq_list Il.Eq.eq_iterexp iterexp1 iterexp2 ) in - match wf_state with - | NONE -> ([], []) + match !wf_state with + | Wfnone -> ([], []) | _ -> (unique_func call_prems, unique_func constr_prems) let get_extra_prems env quants exp prems = @@ -336,9 +335,9 @@ let get_extra_prems env quants exp prems = let free_vars_exp = (Free.free_exp exp).varid in let free_vars = (Free.free_list Free.free_prem constr_prems).varid in let quants_filtered = Lib.List.filter_not (fun b -> - match b.it, wf_state with - | ExpP (id, _), ALL -> Free.Set.mem id.it free_vars - | ExpP (id, _), MINIMAL -> Free.Set.mem id.it free_vars || Free.Set.mem id.it free_vars_exp + match b.it, !wf_state with + | ExpP (id, _), All -> Free.Set.mem id.it free_vars + | ExpP (id, _), Minimal -> Free.Set.mem id.it free_vars || Free.Set.mem id.it free_vars_exp | _ -> true ) quants in let quant_prems = (List.filter_map get_exp_typ quants_filtered) |> List.concat_map (get_wf_pred env) in @@ -472,7 +471,7 @@ let rec t_def env def = in let is_proj_func = StringSet.mem id.it env.proj_set in let t_d = if StringSet.mem id.it env.proj_set then remove_unused_params d else d in - let wf_lemma = if wf_state = MINIMAL && return_type_needs_wfness env typ && not is_proj_func + let wf_lemma = if !wf_state = Minimal && return_type_needs_wfness env typ && not is_proj_func then generate_wf_lemma env tf id params typ else [] in diff --git a/spectec/src/middlend/undep.mli b/spectec/src/middlend/undep.mli index c956e5c94a..308362f018 100644 --- a/spectec/src/middlend/undep.mli +++ b/spectec/src/middlend/undep.mli @@ -40,6 +40,12 @@ This pass requires the typefamilyremoval pass to be ran first, as it ensures tha transformed correctly. *) +type wfstate = + | All (* Places wf premises whenever it encounters a term/variable that needs well-formedness check*) + | Minimal (* Places only wf premises in terms in relations and functions that do not appear in the conclusion *) + | Wfnone (* Does not place any wf premises in relations/functions *) + val wf_hint_id : string val wf_func_id : string +val wf_state : wfstate ref val transform : Il.Ast.script -> Il.Ast.script From 40976f5960da00a68c32e1f5e401885376fa6490 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 26 May 2026 15:25:17 +0100 Subject: [PATCH 085/115] Fix on wfness lemmas with recursion scoping + representations of numbers implemented besides reals. --- spectec/src/backend-rocq/print.ml | 59 +++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 15 deletions(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index 87f41c081e..d915118dd3 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -82,7 +82,7 @@ let reserved_ids = "Import"; "Export"; "seq"; "List"; "String"; - "Type"; "list"; "nat"; + "Type"; "list"; "nat"; "int"; "rat"; "cons"] |> StringSet.of_list let remove_iter_from_type t = @@ -119,6 +119,14 @@ let curly_parens s = "{" ^ s ^ "}" let comment_parens s = "(* " ^ s ^ " *)" let line_parens spc s = "|" ^ spc ^ s ^ spc ^ "|" +let op_parens optyp s = + match optyp with + | `NatT -> parens s ^ "%N" + | `IntT -> parens s ^ "%Z" + | `RatT -> parens s ^ "%Q" + | `RealT -> parens s ^ "%nat" (* TODO *) + | _ -> parens s + let family_type_suffix = "entry" let is_record_typ inst = @@ -233,9 +241,9 @@ let get_param_id b = let render_numtyp nt = match nt with | `NatT -> "nat" - | `IntT -> "nat" - | `RatT -> "nat" - | `RealT -> "nat" + | `IntT -> "int" + | `RatT -> "rat" + | `RealT -> "R" let transform_case_tup e = match e.it with @@ -288,9 +296,9 @@ and render_exp exp_type exp = | NumE (`Rat n) -> Q.to_string n (* TODO fix nums *) | NumE (`Real n) -> string_of_float n (* TODO fix nums *) | TextE s -> "\"" ^ String.escaped s ^ "\"" - | UnE (unop, _, e1) -> parens (render_unop unop ^ r_func e1) - | BinE (binop, _, e1, e2) -> parens (r_func e1 ^ render_binop binop ^ r_func e2) - | CmpE (cmpop, _, e1, e2) -> parens (r_func e1 ^ render_cmpop cmpop ^ r_func e2) + | UnE (unop, optyp, e1) -> op_parens optyp (render_unop unop ^ r_func e1) + | BinE (binop, optyp, e1, e2) -> op_parens optyp (r_func e1 ^ render_binop binop ^ r_func e2) + | CmpE (cmpop, optyp, e1, e2) -> op_parens optyp (r_func e1 ^ render_cmpop cmpop ^ r_func e2) | TupE [] -> "()" | TupE exps -> parens (String.concat ", " (List.map r_func exps)) | ProjE (e, i) -> @@ -746,10 +754,15 @@ let has_prems c = match c.it with | DefD (_, _, _, prems) -> prems <> [] && not (only_otherwise prems) +let is_wf_lemma d = + match d.it with + | RelD (id, _, _, _, _) when StringSet.mem id.it !env_ref.wf_lemma_set -> + true + | _ -> false + let start_prefix def = match def.it with - | RelD (id, _, _, _, _) when StringSet.mem id.it !env_ref.wf_lemma_set -> - "" + | _ when is_wf_lemma def -> "" | _ when is_inductive def -> "Inductive " | DecD (_, _, _, []) -> "Axiom " | DecD (_, _, _, clauses) when List.exists has_prems clauses -> "Axiom " @@ -784,7 +797,7 @@ let rec string_of_def has_endline recursive def = | RelD (id, _, _, typ, []) -> let prefix = if recursive then "" else "Axiom " in start ^ render_rel_axiom prefix (render_id id.it) typ ^ end_newline - | RelD (id, _, _, _, [rule]) when StringSet.mem id.it !env_ref.wf_lemma_set -> + | RelD (id, _, _, _, [rule]) when is_wf_lemma def -> start ^ render_wfness_func_lemma id.it rule ^ end_newline | RelD (id, _, _, typ, rules) -> let prefix = if recursive then "" else "Inductive " in @@ -792,6 +805,10 @@ let rec string_of_def has_endline recursive def = (* Mutual recursion - special handling for rocq *) | RecD defs -> start ^ (match defs with | [] -> "" + | _ when List.for_all is_wf_lemma defs -> + String.concat "" ( + List.map (string_of_def true true) defs + ) | [d] -> let extra_info = render_extra_info d in start_prefix d ^ @@ -814,7 +831,7 @@ let rec string_of_def has_endline recursive def = let exported_string = "(* Imported Code *)\n" ^ "From Coq Require Import String List Unicode.Utf8 Reals.\n" ^ - "From mathcomp Require Import ssreflect ssrfun ssrnat ssrbool seq eqtype rat ssrint.\n" ^ + "From mathcomp Require Import all_ssreflect all_algebra.\n" ^ "From HB Require Import structures.\n" ^ "From RecordUpdate Require Import RecordSet.\n" ^ "Declare Scope wasm_scope.\n\n" ^ @@ -900,7 +917,8 @@ let exported_string = "Global Instance Inh_nat : Inhabited nat := { default_val := O }.\n\n" ^ "Global Instance Inh_list {T: Type} : Inhabited (seq T) := { default_val := nil }.\n\n" ^ "Global Instance Inh_option {T: Type} : Inhabited (option T) := { default_val := None }.\n\n" ^ - "Global Instance Inh_Z : Inhabited Z := { default_val := Z0 }.\n\n" ^ + "Global Instance Inh_int : Inhabited int := { default_val := 0 }.\n\n" ^ + "Global Instance Inh_rat : Inhabited rat := { default_val := 0 }.\n\n" ^ "Global Instance Inh_prod {T1 T2: Type} {_: Inhabited T1} {_: Inhabited T2} : Inhabited (prod T1 T2) := { default_val := (default_val, default_val) }.\n\n" ^ "Global Instance Inh_type : Inhabited Type := { default_val := nat }.\n\n" ^ "Definition option_to_list {T: Type} (arg : option T) : seq T :=\n" ^ @@ -909,9 +927,20 @@ let exported_string = "\t\t| Some a => a :: nil\n" ^ "\tend.\n\n" ^ "Coercion option_to_list: option >-> seq.\n\n" ^ - "Coercion Z.to_nat: Z >-> nat.\n\n" ^ - "Coercion Z.of_nat: nat >-> Z.\n\n" ^ - "Coercion ratz: int >-> rat.\n\n" ^ + "Definition int_to_nat (i : int) : nat :=\n" ^ + "\tmatch i with\n" ^ + "\t\t| Posz n => n\n" ^ + "\t\t| Negz n => 0\n" ^ + "\tend.\n\n" ^ + "Definition rat_to_int (r : rat) : int :=\n" ^ + "\t((numq r) %/ (denq r))%Z.\n\n" ^ + "Definition rat_to_nat (r : rat) : nat :=\n" ^ + "\tint_to_nat (rat_to_int r).\n\n" ^ + + "Coercion int_to_nat : int >-> nat.\n\n" ^ + "Coercion ratz : int >-> rat.\n\n" ^ + "Coercion rat_to_int : rat >-> int.\n\n" ^ + "Coercion rat_to_nat : rat >-> nat.\n\n" ^ "Create HintDb eq_dec_db.\n\n" ^ "Ltac decidable_equality_step :=\n" ^ " do [ by eauto with eq_dec_db | decide equality ].\n\n" ^ From c3f36ba9b73b951742feec3e55e6296d3852159d Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Wed, 27 May 2026 10:58:29 +0100 Subject: [PATCH 086/115] Improved the documentation for improveids, and made term constructor for wfstate consistent. --- spectec/src/exe-spectec/main.ml | 6 +++--- spectec/src/middlend/improveids.mli | 27 +++++++++++++++++++++------ spectec/src/middlend/undep.ml | 18 +++++++++--------- spectec/src/middlend/undep.mli | 6 +++--- 4 files changed, 36 insertions(+), 21 deletions(-) diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index 51ec2811a0..1ee4b58a19 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -156,9 +156,9 @@ let run_pass : pass -> Il.Ast.script -> Il.Ast.script = function let set_wf_state s = Middlend.Undep.wf_state := match s with - | "minimal" -> Middlend.Undep.Minimal - | "all" -> Middlend.Undep.All - | "none" -> Middlend.Undep.Wfnone + | "minimal" -> Middlend.Undep.WfMinimal + | "all" -> Middlend.Undep.WfAll + | "none" -> Middlend.Undep.WfNone | _ -> raise (Arg.Bad "wf-state must be minimal, all, or none") diff --git a/spectec/src/middlend/improveids.mli b/spectec/src/middlend/improveids.mli index eed6fb6d57..11c3257ea4 100644 --- a/spectec/src/middlend/improveids.mli +++ b/spectec/src/middlend/improveids.mli @@ -2,15 +2,30 @@ This pass simply ensures that there is no ambiguity between any names. It does this by creating a massive set of names, separated by the - different main constructs (i.e. TypD, RelD, DecD, etc.). + different namespaces (i.e. TypD, RelD, DecD, etc.). This is done using + the existing environment generator that the IL has. - It makes sure that variables don't have the same name as anything else, - as this could cause shadowing in some cases for ITPs. If it does have - the same name, then it adds the prefix "v_" until the name is unique. + It makes sure that variables don't have the same name as any other + namespace, as this could cause shadowing in some cases for ITPs. + If it does have the same name, then it adds the prefix + "v_". - For functions, we unsure that they don't have the same name as + For functions, we ensure that they don't have the same name as user-defined types and relations. If it does, then it adds the prefix - "fun_" until the name is unique. + "fun_". + + For user-defined types and relations, we make sure that they don't have + the same name as Atoms. If it does, then it adds the prefix "r_" + + Atoms are considered a namespace as well, and it is made sure that the + other namespaces don't clash with this one. However, no disambiguation + is made for Atoms of the same name. This is due to some ITPs having + already builtin mechanisms to handle this. + + NOTE: This is not a guaranteed name clash avoidance pass, as it has a very + naive renaming strategy. This will get revisited in the future + to ensure that this works for all cases + but for now it is sufficient. *) diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index 2826ad6840..bb0f4f6208 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -30,12 +30,12 @@ let wf_hint_id = "wf-relation" let wf_func_id = "wf-lemma-func" type wfstate = - | All (* Places wf premises whenever it encounters a term/variable that needs well-formedness check*) - | Minimal (* Places only wf premises in terms in relations and functions that do not appear in the conclusion *) - | Wfnone (* Does not place any wf premises in relations/functions *) + | WfAll (* Places wf premises whenever it encounters a term/variable that needs well-formedness check*) + | WfMinimal (* Places only wf premises in terms in relations and functions that do not appear in the conclusion *) + | WfNone (* Does not place any wf premises in relations/functions *) (* State that indicates what the placement algorithm should do *) -let wf_state : wfstate ref = ref Minimal +let wf_state : wfstate ref = ref WfMinimal let error at msg = error at "Undep error" msg @@ -312,13 +312,13 @@ let get_wf_terms cl exp prems = | CallE _ -> true | _ -> false in - let wf_terms = (if !wf_state = Minimal then [] else collect_exp cl exp) @ List.concat_map (collect_prem cl) prems in + let wf_terms = (if !wf_state = WfMinimal then [] else collect_exp cl exp) @ List.concat_map (collect_prem cl) prems in let (call_prems, constr_prems) = List.partition (fun ((e1, _), _) -> is_calle e1) wf_terms in let unique_func = Util.Lib.List.nub (fun ((e1, _t1), iterexp1) ((e2, _t2), iterexp2) -> Il.Eq.eq_exp e1 e2 && Il.Eq.eq_list Il.Eq.eq_iterexp iterexp1 iterexp2 ) in match !wf_state with - | Wfnone -> ([], []) + | WfNone -> ([], []) | _ -> (unique_func call_prems, unique_func constr_prems) let get_extra_prems env quants exp prems = @@ -336,8 +336,8 @@ let get_extra_prems env quants exp prems = let free_vars = (Free.free_list Free.free_prem constr_prems).varid in let quants_filtered = Lib.List.filter_not (fun b -> match b.it, !wf_state with - | ExpP (id, _), All -> Free.Set.mem id.it free_vars - | ExpP (id, _), Minimal -> Free.Set.mem id.it free_vars || Free.Set.mem id.it free_vars_exp + | ExpP (id, _), WfAll -> Free.Set.mem id.it free_vars + | ExpP (id, _), WfMinimal -> Free.Set.mem id.it free_vars || Free.Set.mem id.it free_vars_exp | _ -> true ) quants in let quant_prems = (List.filter_map get_exp_typ quants_filtered) |> List.concat_map (get_wf_pred env) in @@ -471,7 +471,7 @@ let rec t_def env def = in let is_proj_func = StringSet.mem id.it env.proj_set in let t_d = if StringSet.mem id.it env.proj_set then remove_unused_params d else d in - let wf_lemma = if !wf_state = Minimal && return_type_needs_wfness env typ && not is_proj_func + let wf_lemma = if !wf_state = WfMinimal && return_type_needs_wfness env typ && not is_proj_func then generate_wf_lemma env tf id params typ else [] in diff --git a/spectec/src/middlend/undep.mli b/spectec/src/middlend/undep.mli index 308362f018..edc24fbdd5 100644 --- a/spectec/src/middlend/undep.mli +++ b/spectec/src/middlend/undep.mli @@ -41,9 +41,9 @@ transformed correctly. *) type wfstate = - | All (* Places wf premises whenever it encounters a term/variable that needs well-formedness check*) - | Minimal (* Places only wf premises in terms in relations and functions that do not appear in the conclusion *) - | Wfnone (* Does not place any wf premises in relations/functions *) + | WfAll (* Places wf premises whenever it encounters a term/variable that needs well-formedness check*) + | WfMinimal (* Places only wf premises in terms in relations and functions that do not appear in the conclusion *) + | WfNone (* Does not place any wf premises in relations/functions *) val wf_hint_id : string val wf_func_id : string From c2821da181c0c3042abf86d51cca2cd1c5173a54 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Wed, 27 May 2026 11:00:16 +0100 Subject: [PATCH 087/115] Fix tests --- .../specification.exp/13-improve-ids.il | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/spectec/test-middlend/specification.exp/13-improve-ids.il b/spectec/test-middlend/specification.exp/13-improve-ids.il index 70ebf027a2..b457446e82 100644 --- a/spectec/test-middlend/specification.exp/13-improve-ids.il +++ b/spectec/test-middlend/specification.exp/13-improve-ids.il @@ -8257,14 +8257,14 @@ relation wf_relaxed4: `%`(relaxed4) -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -def $fun_relaxed2(v_relaxed2 : relaxed2, syntax v_X, v_X_0 : v_X, v_X_1 : v_X) : v_X +def $fun_relaxed2(v_relaxed2 : relaxed2, syntax r_X, v_X : r_X, v_X_0 : r_X) : r_X ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec - def $fun_relaxed2{i : relaxed2, syntax v_X, X_1 : v_X, X_2 : v_X}(i, syntax v_X, X_1, X_2) = (if $ND then [X_1 X_2][$proj_relaxed2_0(i).0] else [X_1 X_2][0]) + def $fun_relaxed2{i : relaxed2, syntax r_X, X_1 : r_X, X_2 : r_X}(i, syntax r_X, X_1, X_2) = (if $ND then [X_1 X_2][$proj_relaxed2_0(i).0] else [X_1 X_2][0]) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -def $fun_relaxed4(v_relaxed4 : relaxed4, syntax v_X, v_X_0 : v_X, v_X_1 : v_X, v_X_2 : v_X, v_X_3 : v_X) : v_X +def $fun_relaxed4(v_relaxed4 : relaxed4, syntax r_X, v_X : r_X, v_X_0 : r_X, v_X_1 : r_X, v_X_2 : r_X) : r_X ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec - def $fun_relaxed4{i : relaxed4, syntax v_X, X_1 : v_X, X_2 : v_X, X_3 : v_X, X_4 : v_X}(i, syntax v_X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][$proj_relaxed4_0(i).0] else [X_1 X_2 X_3 X_4][0]) + def $fun_relaxed4{i : relaxed4, syntax r_X, X_1 : r_X, X_2 : r_X, X_3 : r_X, X_4 : r_X}(i, syntax r_X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][$proj_relaxed4_0(i).0] else [X_1 X_2 X_3 X_4][0]) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec def $R_fmadd : relaxed2 @@ -17250,42 +17250,42 @@ relation wf_callframe: `%`(callframe) -- wf_frame: `%`(v_frame) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax v_X, syntax Y, v_store : store, v_X_0 : v_X, Y_0 : Y) : (store, addr) +def $allocX(syntax r_X, syntax Y, v_store : store, v_X : r_X, Y_0 : Y) : (store, addr) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation allocX_is_wf(syntax v_X, syntax Y): `%%%%`(v_store : store, X_0 : v_X, Y_0 : Y, ret_val : (store, addr)) +relation allocX_is_wf(syntax r_X, syntax Y): `%%%%`(v_store : store, X_0 : r_X, Y_0 : Y, ret_val : (store, addr)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule allocX_is_wf0{syntax v_X, syntax Y, v_store : store, X_0 : v_X, Y_0 : Y, ret_val : (store, addr)}: + rule allocX_is_wf0{syntax r_X, syntax Y, v_store : store, X_0 : r_X, Y_0 : Y, ret_val : (store, addr)}: `%%%%`(v_store, X_0, Y_0, ret_val) -- wf_store: `%`(v_store) - -- if (ret_val = $allocX(syntax v_X, syntax Y, v_store, X_0, Y_0)) + -- if (ret_val = $allocX(syntax r_X, syntax Y, v_store, X_0, Y_0)) -- wf_store: `%`(ret_val.0) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rec { ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax v_X, syntax Y, v_store : store, var_0 : v_X*, var_1 : Y*) : (store, addr*) +def $allocXs(syntax r_X, syntax Y, v_store : store, var_0 : r_X*, var_1 : Y*) : (store, addr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax v_X, syntax Y, s : store}(syntax v_X, syntax Y, s, [], []) = (s, []) + def $allocXs{syntax r_X, syntax Y, s : store}(syntax r_X, syntax Y, s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax v_X, syntax Y, s : store, v_X : v_X, X'_lst : v_X*, Y : Y, Y'_lst : Y*}(syntax v_X, syntax Y, s, [v_X] ++ X'_lst, [Y] ++ Y'_lst) = (s_2, [a] ++ a'_lst) - -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax v_X, syntax Y, s, v_X, Y) - -- let{s_2 : store, a'_lst : addr*} (s_2, a'_lst) = $allocXs(syntax v_X, syntax Y, s_1, X'_lst, Y'_lst) - -- wf_store: `%`($allocX(syntax v_X, syntax Y, s, v_X, Y).0) - -- wf_store: `%`($allocXs(syntax v_X, syntax Y, s_1, X'_lst, Y'_lst).0) + def $allocXs{syntax r_X, syntax Y, s : store, v_X : r_X, X'_lst : r_X*, Y : Y, Y'_lst : Y*}(syntax r_X, syntax Y, s, [v_X] ++ X'_lst, [Y] ++ Y'_lst) = (s_2, [a] ++ a'_lst) + -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax r_X, syntax Y, s, v_X, Y) + -- let{s_2 : store, a'_lst : addr*} (s_2, a'_lst) = $allocXs(syntax r_X, syntax Y, s_1, X'_lst, Y'_lst) + -- wf_store: `%`($allocX(syntax r_X, syntax Y, s, v_X, Y).0) + -- wf_store: `%`($allocXs(syntax r_X, syntax Y, s_1, X'_lst, Y'_lst).0) } ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rec { ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 -relation allocXs_is_wf(syntax v_X, syntax Y): `%%%%`(v_store : store, var_0 : v_X*, var_1 : Y*, ret_val : (store, addr*)) +relation allocXs_is_wf(syntax r_X, syntax Y): `%%%%`(v_store : store, var_0 : r_X*, var_1 : Y*, ret_val : (store, addr*)) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 - rule allocXs_is_wf0{syntax v_X, syntax Y, v_store : store, var_0 : v_X*, var_1 : Y*, ret_val : (store, addr*)}: + rule allocXs_is_wf0{syntax r_X, syntax Y, v_store : store, var_0 : r_X*, var_1 : Y*, ret_val : (store, addr*)}: `%%%%`(v_store, var_0, var_1, ret_val) -- wf_store: `%`(v_store) - -- if (ret_val = $allocXs(syntax v_X, syntax Y, v_store, var_0, var_1)) + -- if (ret_val = $allocXs(syntax r_X, syntax Y, v_store, var_0, var_1)) -- wf_store: `%`(ret_val.0) } @@ -17301,9 +17301,9 @@ relation wf_symdots: `%`(symdots) -- if (i = 0) ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax v_X) : nat +def $var(syntax r_X) : nat ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax v_X}(syntax v_X) = 0 + def $var{syntax r_X}(syntax r_X) = 0 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec syntax abbreviated = () @@ -20943,7 +20943,7 @@ grammar Tdecldots_(v_I : I) : (decl, idctxt)* prod{`` : (decl, idctxt)} [``]:Tdecl_(v_I)*{} => [``] ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bvar(syntax v_X) : () +grammar Bvar(syntax r_X) : () ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec prod 0x00 => ((), ()).1 @@ -20962,7 +20962,7 @@ grammar Bsymsplit : () prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tvar(syntax v_X) : () +grammar Tvar(syntax r_X) : () ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec prod 0x00 => ((), ()).1 From 67d45be16dbf4636bc7c9623d47b94ff0908ad89 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Wed, 27 May 2026 11:38:38 +0100 Subject: [PATCH 088/115] Fix tests (again) --- spectec/test-middlend/specification.exp/00-elab.il | 10 +++++----- spectec/test-middlend/specification.exp/01-ite.il | 10 +++++----- .../specification.exp/02-let-intro-mech.il | 10 +++++----- .../specification.exp/03-typefamily-removal.il | 10 +++++----- .../specification.exp/04-remove-indexed-types.il | 12 ++++++------ .../test-middlend/specification.exp/05-totalize.il | 12 ++++++------ spectec/test-middlend/specification.exp/06-else.il | 12 ++++++------ .../specification.exp/07-else-simplification.il | 12 ++++++------ .../specification.exp/08-uncase-removal.il | 12 ++++++------ .../specification.exp/09-sideconditions.il | 12 ++++++------ .../specification.exp/10-sub-expansion.il | 12 ++++++------ spectec/test-middlend/specification.exp/11-sub.il | 12 ++++++------ .../specification.exp/12-alias-demut.il | 12 ++++++------ .../specification.exp/13-improve-ids.il | 12 ++++++------ 14 files changed, 80 insertions(+), 80 deletions(-) diff --git a/spectec/test-middlend/specification.exp/00-elab.il b/spectec/test-middlend/specification.exp/00-elab.il index da4bafa4f4..0f30271b8f 100644 --- a/spectec/test-middlend/specification.exp/00-elab.il +++ b/spectec/test-middlend/specification.exp/00-elab.il @@ -8020,12 +8020,12 @@ relation State_ok: `|-%:%`(state, context) -- Frame_ok: `%|-%:%`(s, f, C) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec -relation Config_ok: `|-%:OK`(config) +relation Config_ok: `|-%:%`(config, resulttype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - rule _{z : state, `instr*` : instr*, C : context, `t*` : valtype*}: - `|-%:OK`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- State_ok: `|-%:%`(z, C) - -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat diff --git a/spectec/test-middlend/specification.exp/01-ite.il b/spectec/test-middlend/specification.exp/01-ite.il index 4fc21fcc25..a2afe64f70 100644 --- a/spectec/test-middlend/specification.exp/01-ite.il +++ b/spectec/test-middlend/specification.exp/01-ite.il @@ -7931,12 +7931,12 @@ relation State_ok: `|-%:%`(state, context) -- Frame_ok: `%|-%:%`(s, f, C) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec -relation Config_ok: `|-%:OK`(config) +relation Config_ok: `|-%:%`(config, resulttype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - rule _{z : state, `instr*` : instr*, C : context, `t*` : valtype*}: - `|-%:OK`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- State_ok: `|-%:%`(z, C) - -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat diff --git a/spectec/test-middlend/specification.exp/02-let-intro-mech.il b/spectec/test-middlend/specification.exp/02-let-intro-mech.il index 16b9fa496b..bb1bfa24e0 100644 --- a/spectec/test-middlend/specification.exp/02-let-intro-mech.il +++ b/spectec/test-middlend/specification.exp/02-let-intro-mech.il @@ -7931,12 +7931,12 @@ relation State_ok: `|-%:%`(state, context) -- Frame_ok: `%|-%:%`(s, f, C) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec -relation Config_ok: `|-%:OK`(config) +relation Config_ok: `|-%:%`(config, resulttype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - rule _{z : state, `instr*` : instr*, C : context, `t*` : valtype*}: - `|-%:OK`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- State_ok: `|-%:%`(z, C) - -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat diff --git a/spectec/test-middlend/specification.exp/03-typefamily-removal.il b/spectec/test-middlend/specification.exp/03-typefamily-removal.il index 93df6dbd50..9b12ae79c3 100644 --- a/spectec/test-middlend/specification.exp/03-typefamily-removal.il +++ b/spectec/test-middlend/specification.exp/03-typefamily-removal.il @@ -8260,12 +8260,12 @@ relation State_ok: `|-%:%`(state, context) -- Frame_ok: `%|-%:%`(s, f, C) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec -relation Config_ok: `|-%:OK`(config) +relation Config_ok: `|-%:%`(config, resulttype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - rule _{z : state, `instr*` : instr*, C : context, `t*` : valtype*}: - `|-%:OK`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- State_ok: `|-%:%`(z, C) - -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat diff --git a/spectec/test-middlend/specification.exp/04-remove-indexed-types.il b/spectec/test-middlend/specification.exp/04-remove-indexed-types.il index 363d1235a8..7547acdebe 100644 --- a/spectec/test-middlend/specification.exp/04-remove-indexed-types.il +++ b/spectec/test-middlend/specification.exp/04-remove-indexed-types.il @@ -13558,14 +13558,14 @@ relation State_ok: `|-%:%`(state, context) -- Frame_ok: `%|-%:%`(s, f, C) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec -relation Config_ok: `|-%:OK`(config) +relation Config_ok: `|-%:%`(config, resulttype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - rule _{z : state, `instr*` : instr*, C : context, `t*` : valtype*}: - `|-%:OK`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- State_ok: `|-%:%`(z, C) - -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} + -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat diff --git a/spectec/test-middlend/specification.exp/05-totalize.il b/spectec/test-middlend/specification.exp/05-totalize.il index f5a391a8fb..fd8db06485 100644 --- a/spectec/test-middlend/specification.exp/05-totalize.il +++ b/spectec/test-middlend/specification.exp/05-totalize.il @@ -13602,14 +13602,14 @@ relation State_ok: `|-%:%`(state, context) -- Frame_ok: `%|-%:%`(s, f, C) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec -relation Config_ok: `|-%:OK`(config) +relation Config_ok: `|-%:%`(config, resulttype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - rule _{z : state, `instr*` : instr*, C : context, `t*` : valtype*}: - `|-%:OK`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- State_ok: `|-%:%`(z, C) - -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} + -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat diff --git a/spectec/test-middlend/specification.exp/06-else.il b/spectec/test-middlend/specification.exp/06-else.il index 102de28fb0..b394f2dfb5 100644 --- a/spectec/test-middlend/specification.exp/06-else.il +++ b/spectec/test-middlend/specification.exp/06-else.il @@ -14070,14 +14070,14 @@ relation State_ok: `|-%:%`(state, context) -- Frame_ok: `%|-%:%`(s, f, C) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec -relation Config_ok: `|-%:OK`(config) +relation Config_ok: `|-%:%`(config, resulttype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - rule _{z : state, `instr*` : instr*, C : context, `t*` : valtype*}: - `|-%:OK`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- State_ok: `|-%:%`(z, C) - -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} + -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat diff --git a/spectec/test-middlend/specification.exp/07-else-simplification.il b/spectec/test-middlend/specification.exp/07-else-simplification.il index 6dff73eaa9..a312c03227 100644 --- a/spectec/test-middlend/specification.exp/07-else-simplification.il +++ b/spectec/test-middlend/specification.exp/07-else-simplification.il @@ -13945,14 +13945,14 @@ relation State_ok: `|-%:%`(state, context) -- Frame_ok: `%|-%:%`(s, f, C) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec -relation Config_ok: `|-%:OK`(config) +relation Config_ok: `|-%:%`(config, resulttype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - rule _{z : state, `instr*` : instr*, C : context, `t*` : valtype*}: - `|-%:OK`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- State_ok: `|-%:%`(z, C) - -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} + -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat diff --git a/spectec/test-middlend/specification.exp/08-uncase-removal.il b/spectec/test-middlend/specification.exp/08-uncase-removal.il index 0a4cb96f46..296f882a19 100644 --- a/spectec/test-middlend/specification.exp/08-uncase-removal.il +++ b/spectec/test-middlend/specification.exp/08-uncase-removal.il @@ -14005,14 +14005,14 @@ relation State_ok: `|-%:%`(state, context) -- Frame_ok: `%|-%:%`(s, f, C) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec -relation Config_ok: `|-%:OK`(config) +relation Config_ok: `|-%:%`(config, resulttype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - rule _{z : state, `instr*` : instr*, C : context, `t*` : valtype*}: - `|-%:OK`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- State_ok: `|-%:%`(z, C) - -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} + -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat diff --git a/spectec/test-middlend/specification.exp/09-sideconditions.il b/spectec/test-middlend/specification.exp/09-sideconditions.il index fc11f01cbf..031ebd23fa 100644 --- a/spectec/test-middlend/specification.exp/09-sideconditions.il +++ b/spectec/test-middlend/specification.exp/09-sideconditions.il @@ -14437,14 +14437,14 @@ relation State_ok: `|-%:%`(state, context) -- Frame_ok: `%|-%:%`(s, f, C) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec -relation Config_ok: `|-%:OK`(config) +relation Config_ok: `|-%:%`(config, resulttype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - rule _{z : state, `instr*` : instr*, C : context, `t*` : valtype*}: - `|-%:OK`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- State_ok: `|-%:%`(z, C) - -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} + -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat diff --git a/spectec/test-middlend/specification.exp/10-sub-expansion.il b/spectec/test-middlend/specification.exp/10-sub-expansion.il index 49dde4c286..c933374b0a 100644 --- a/spectec/test-middlend/specification.exp/10-sub-expansion.il +++ b/spectec/test-middlend/specification.exp/10-sub-expansion.il @@ -16891,14 +16891,14 @@ relation State_ok: `|-%:%`(state, context) -- Frame_ok: `%|-%:%`(s, f, C) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec -relation Config_ok: `|-%:OK`(config) +relation Config_ok: `|-%:%`(config, resulttype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - rule _{z : state, `instr*` : instr*, C : context, `t*` : valtype*}: - `|-%:OK`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- State_ok: `|-%:%`(z, C) - -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} + -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat diff --git a/spectec/test-middlend/specification.exp/11-sub.il b/spectec/test-middlend/specification.exp/11-sub.il index 58def11a7c..3fc5a33fd5 100644 --- a/spectec/test-middlend/specification.exp/11-sub.il +++ b/spectec/test-middlend/specification.exp/11-sub.il @@ -17117,14 +17117,14 @@ relation State_ok: `|-%:%`(state, context) -- Frame_ok: `%|-%:%`(s, f, C) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec -relation Config_ok: `|-%:OK`(config) +relation Config_ok: `|-%:%`(config, resulttype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - rule _{z : state, `instr*` : instr*, C : context, `t*` : valtype*}: - `|-%:OK`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- State_ok: `|-%:%`(z, C) - -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} + -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat diff --git a/spectec/test-middlend/specification.exp/12-alias-demut.il b/spectec/test-middlend/specification.exp/12-alias-demut.il index 6c9d4305ae..87f742627b 100644 --- a/spectec/test-middlend/specification.exp/12-alias-demut.il +++ b/spectec/test-middlend/specification.exp/12-alias-demut.il @@ -17117,14 +17117,14 @@ relation State_ok: `|-%:%`(state, context) -- Frame_ok: `%|-%:%`(s, f, C) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec -relation Config_ok: `|-%:OK`(config) +relation Config_ok: `|-%:%`(config, resulttype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - rule _{z : state, `instr*` : instr*, C : context, `t*` : valtype*}: - `|-%:OK`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- State_ok: `|-%:%`(z, C) - -- Expr_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} + -- wf_state: `%`(`%;%`_state(s, f)) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat diff --git a/spectec/test-middlend/specification.exp/13-improve-ids.il b/spectec/test-middlend/specification.exp/13-improve-ids.il index b457446e82..043e96b63f 100644 --- a/spectec/test-middlend/specification.exp/13-improve-ids.il +++ b/spectec/test-middlend/specification.exp/13-improve-ids.il @@ -17117,14 +17117,14 @@ relation State_ok: `|-%:%`(state, context) -- Frame_ok: `%|-%:%`(s, f, C) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec -relation Config_ok: `|-%:OK`(config) +relation Config_ok: `|-%:%`(config, resulttype) ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec - rule mk_Config_ok{z : state, instr_lst : instr*, C : context, t_lst : valtype*}: - `|-%:OK`(mk_config_config(z, instr_lst)) - -- State_ok: `|-%:%`(z, C) - -- Expr_ok: `%|-%:%`(C, instr_lst, mk_list_resulttype(t_lst)) + rule mk_Config_ok{s : store, f : frame, instr_lst : instr*, t_lst : valtype*, C : context}: + `|-%:%`(mk_config_config(mk_state_state(s, f), instr_lst), mk_list_resulttype(t_lst)) + -- State_ok: `|-%:%`(mk_state_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr_lst, mk_list_resulttype(t_lst)) -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- t_lst} + -- wf_state: `%`(mk_state_state(s, f)) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax A = nat From 5f7ed5cbc626199cf881d9d44db9b3e972216bac Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Wed, 27 May 2026 12:27:58 +0100 Subject: [PATCH 089/115] Fix tests --- spectec/test-prose/TEST.md | 7183 ++++++++++++++++++++++-------------- 1 file changed, 4444 insertions(+), 2739 deletions(-) diff --git a/spectec/test-prose/TEST.md b/spectec/test-prose/TEST.md index 44156a8595..1d55e3c03e 100644 --- a/spectec/test-prose/TEST.md +++ b/spectec/test-prose/TEST.md @@ -15,6 +15,7 @@ spectec 0.5 generator == IL Validation after pass sideconditions... == Translating to AL... == Prose Generation... +../../../../specification/wasm-1.0/B-soundness.spectec:139.8-139.45: prem_to_instrs: Yet `Externaddr_ok: `%|-%:%`(s, FUNC_externaddr(fa), FUNC_externtype(ft))` @@ -887,5057 +888,6422 @@ The module :math:`(\mathsf{module}~{{\mathit{type}}^\ast}~{{\mathit{import}}^\as * The memory type sequence :math:`{{\mathit{imt}}^\ast}` is of the form :math:`{\mathrm{mems}}({{\mathit{ixt}}^\ast})`. -:math:`\mathsf{load}~t~{\mathit{ao}}` -..................................... -1. Let :math:`z` be the current state. +The context :math:`C` is :ref:`valid ` if: -#. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. -#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)` from the stack. + * The context :math:`C` is of the form :math:`\{ \mathsf{types}~{{\mathit{ft}}^\ast},\;\allowbreak \mathsf{funcs}~{{\mathit{ft}}_2^\ast},\;\allowbreak \mathsf{globals}~{{\mathit{gt}}^\ast},\;\allowbreak \mathsf{tables}~{{\mathit{tt}}^\ast},\;\allowbreak \mathsf{mems}~{{\mathit{mt}}^\ast},\;\allowbreak \mathsf{locals}~{{\mathit{lct}}^\ast},\;\allowbreak \mathsf{labels}~{{\mathit{rt}}^\ast},\;\allowbreak \mathsf{return}~{{\mathit{rt}'}^?} \}`. -#. If :math:`i + {\mathit{ao}}{.}\mathsf{offset} + {|t|} / 8 > {|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|}`, then: + * For all :math:`{\mathit{ft}}` in :math:`{{\mathit{ft}}^\ast}`: - a. Trap. + * The function type :math:`{\mathit{ft}}` is :ref:`valid `. -#. Let :math:`c` be the result for which :math:`{{\mathrm{bytes}}}_{t}(c)` :math:`=` :math:`z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {|t|} / 8]`. + * For all :math:`{\mathit{gt}}` in :math:`{{\mathit{gt}}^\ast}`: -#. Push the value :math:`(t{.}\mathsf{const}~c)` to the stack. + * The global type :math:`{\mathit{gt}}` is :ref:`valid `. + * For all :math:`{\mathit{mt}}` in :math:`{{\mathit{mt}}^\ast}`: -:math:`{{\mathsf{i}}{n}{.}\mathsf{load}}{{n}{\mathsf{\_}}{{\mathit{sx}}}}~{\mathit{ao}}` -........................................................................................ + * The memory type :math:`{\mathit{mt}}` is :ref:`valid `. + * For all :math:`{\mathit{tt}}` in :math:`{{\mathit{tt}}^\ast}`: -1. Let :math:`z` be the current state. + * The table type :math:`{\mathit{tt}}` is :ref:`valid `. -#. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. + * For all :math:`{\mathit{ft}}_2` in :math:`{{\mathit{ft}}_2^\ast}`: -#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)` from the stack. + * The function type :math:`{\mathit{ft}}_2` is :ref:`valid `. -#. If :math:`i + {\mathit{ao}}{.}\mathsf{offset} + n / 8 > {|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|}`, then: - a. Trap. -#. Let :math:`c` be the result for which :math:`{{\mathrm{bytes}}}_{{\mathsf{i}}{n}}(c)` :math:`=` :math:`z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : n / 8]`. -#. Push the value :math:`({\mathsf{i}}{n}{.}\mathsf{const}~{{{{\mathrm{extend}}}_{n, {|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{(c)})` to the stack. +The value :math:`(t{.}\mathsf{const}~c_t)` is :ref:`valid ` with the number type :math:`t`. -:math:`\mathsf{store}~t~{\mathit{ao}}` -...................................... -1. Let :math:`z` be the current state. +The result :math:`{\mathit{result}}` is :ref:`valid ` with the number type sequence :math:`{t^\ast}` if: -#. Assert: Due to validation, a value of number type :math:`t` is on the top of the stack. -#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c)` from the stack. + * Either: -#. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. + * The result :math:`{\mathit{result}}` is of the form :math:`{v^\ast}`. -#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)` from the stack. + * For all :math:`t` in :math:`{t^\ast}`, and corresponding :math:`v` in :math:`{v^\ast}`: -#. If :math:`i + {\mathit{ao}}{.}\mathsf{offset} + {|t|} / 8 > {|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|}`, then: + * The value :math:`v` is :ref:`valid ` with the number type :math:`t`. - a. Trap. + * Or: -#. Let :math:`{b^\ast}` be :math:`{{\mathrm{bytes}}}_{t}(c)`. + * The result :math:`{\mathit{result}}` is of the form :math:`\mathsf{trap}`. -#. Perform :math:`z{}[{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {|t|} / 8] = {b^\ast}]`. -:math:`{{\mathsf{i}}{n}{.}\mathsf{store}}{n}~{\mathit{ao}}` -........................................................... +The result :math:`{v^\ast}` is :ref:`valid ` with the number type sequence :math:`{t^\ast}` if: -1. Let :math:`z` be the current state. -#. Assert: Due to validation, a value of number type :math:`{\mathsf{i}}{n}` is on the top of the stack. + * For all :math:`t` in :math:`{t^\ast}`, and corresponding :math:`v` in :math:`{v^\ast}`: -#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c)` from the stack. + * The value :math:`v` is :ref:`valid ` with the number type :math:`t`. -#. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. -#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)` from the stack. -#. If :math:`i + {\mathit{ao}}{.}\mathsf{offset} + n / 8 > {|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|}`, then: - a. Trap. +The result :math:`\mathsf{trap}` is :ref:`valid ` with the number type sequence :math:`{t^\ast}`. -#. Let :math:`{b^\ast}` be :math:`{{\mathrm{bytes}}}_{{\mathsf{i}}{n}}({{\mathrm{wrap}}}_{{|{\mathsf{i}}{n}|}, n}(c))`. -#. Perform :math:`z{}[{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : n / 8] = {b^\ast}]`. -:math:`\mathsf{unreachable}` -............................ +The external value :math:`{\mathit{externaddr}}` is :ref:`valid ` with the external type :math:`{\mathit{externtype}}` if: -1. Trap. + * Either: + * The external value :math:`{\mathit{externaddr}}` is of the form :math:`(\mathsf{global}~a)`. -:math:`\mathsf{nop}` -.................... + * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{global}~{\mathit{globalinst}}{.}\mathsf{type})`. + * The global instance :math:`s{.}\mathsf{globals}{}[a]` exists. -1. Do nothing. + * The global instance :math:`s{.}\mathsf{globals}{}[a]` is of the form :math:`{\mathit{globalinst}}`. + * Or: -:math:`\mathsf{drop}` -..................... + * The external value :math:`{\mathit{externaddr}}` is of the form :math:`(\mathsf{mem}~a)`. + * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{mem}~{\mathit{meminst}}{.}\mathsf{type})`. -1. Assert: Due to validation, a value is on the top of the stack. + * The memory instance :math:`s{.}\mathsf{mems}{}[a]` exists. -#. Pop the value :math:`{\mathit{val}}` from the stack. + * The memory instance :math:`s{.}\mathsf{mems}{}[a]` is of the form :math:`{\mathit{meminst}}`. + * Or: + * The external value :math:`{\mathit{externaddr}}` is of the form :math:`(\mathsf{table}~a)`. -:math:`\mathsf{select}` -....................... + * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{table}~{\mathit{tableinst}}{.}\mathsf{type})`. + * The table instance :math:`s{.}\mathsf{tables}{}[a]` exists. -1. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. + * The table instance :math:`s{.}\mathsf{tables}{}[a]` is of the form :math:`{\mathit{tableinst}}`. + * Or: -#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)` from the stack. + * The external value :math:`{\mathit{externaddr}}` is of the form :math:`(\mathsf{func}~a)`. -#. Assert: Due to validation, a value is on the top of the stack. + * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{func}~{\mathit{funcinst}}{.}\mathsf{type})`. -#. Pop the value :math:`{\mathit{val}}_2` from the stack. + * The function instance :math:`s{.}\mathsf{funcs}{}[a]` exists. -#. Assert: Due to validation, a value is on the top of the stack. + * The function instance :math:`s{.}\mathsf{funcs}{}[a]` is of the form :math:`{\mathit{funcinst}}`. + * Or: -#. Pop the value :math:`{\mathit{val}}_1` from the stack. + * The external value :math:`{\mathit{externaddr}}` is :ref:`valid ` with the external type :math:`{\mathit{xt}'}`. -#. If :math:`c \neq 0`, then: + * The external type :math:`{\mathit{xt}'}` :ref:`matches ` the external type :math:`{\mathit{externtype}}`. - a. Push the value :math:`{\mathit{val}}_1` to the stack. -#. Else: - a. Push the value :math:`{\mathit{val}}_2` to the stack. +The external value :math:`(\mathsf{global}~a)` is :ref:`valid ` with the external type :math:`(\mathsf{global}~{\mathit{globalinst}}{.}\mathsf{type})` if: -:math:`\mathsf{if}~{t^?}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast}` -........................................................................................... + * The global instance :math:`s{.}\mathsf{globals}{}[a]` exists. -1. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. + * The global instance :math:`s{.}\mathsf{globals}{}[a]` is of the form :math:`{\mathit{globalinst}}`. -#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)` from the stack. -#. If :math:`c \neq 0`, then: - a. Execute the instruction :math:`(\mathsf{block}~{t^?}~{{\mathit{instr}}_1^\ast})`. -#. Else: +The external value :math:`(\mathsf{mem}~a)` is :ref:`valid ` with the external type :math:`(\mathsf{mem}~{\mathit{meminst}}{.}\mathsf{type})` if: - a. Execute the instruction :math:`(\mathsf{block}~{t^?}~{{\mathit{instr}}_2^\ast})`. + * The memory instance :math:`s{.}\mathsf{mems}{}[a]` exists. -:math:`\mathsf{label}` -...................... + * The memory instance :math:`s{.}\mathsf{mems}{}[a]` is of the form :math:`{\mathit{meminst}}`. -1. Pop all values :math:`{{\mathit{val}}^\ast}` from the top of the stack. -#. Assert: Due to validation, the first non-value entry of the stack is a :math:`\mathsf{label}`. -#. Pop the :math:`\mathsf{label}` from the stack. +The external value :math:`(\mathsf{table}~a)` is :ref:`valid ` with the external type :math:`(\mathsf{table}~{\mathit{tableinst}}{.}\mathsf{type})` if: -#. Push the values :math:`{{\mathit{val}}^\ast}` to the stack. + * The table instance :math:`s{.}\mathsf{tables}{}[a]` exists. -:math:`\mathsf{br}~{n'}` -........................ + * The table instance :math:`s{.}\mathsf{tables}{}[a]` is of the form :math:`{\mathit{tableinst}}`. -1. Assert: Due to validation, the first non-value entry of the stack is a :math:`\mathsf{label}`. -#. Let :math:`L` be the topmost :math:`\mathsf{label}`. -#. Let :math:`n` be the arity of :math:`L` +The external value :math:`(\mathsf{func}~a)` is :ref:`valid ` with the external type :math:`(\mathsf{func}~{\mathit{funcinst}}{.}\mathsf{type})` if: -#. If :math:`{n'} = 0`, then: - a. Assert: Due to validation, there are at least :math:`n` values on the top of the stack. + * The function instance :math:`s{.}\mathsf{funcs}{}[a]` exists. - #. Pop the values :math:`{{\mathit{val}}^{n}}` from the stack. + * The function instance :math:`s{.}\mathsf{funcs}{}[a]` is of the form :math:`{\mathit{funcinst}}`. - #. Pop all values :math:`{{\mathit{val}'}^\ast}` from the top of the stack. - #. Pop the :math:`\mathsf{label}` from the stack. - #. Push the values :math:`{{\mathit{val}}^{n}}` to the stack. - #. Jump to the continuation of :math:`L`. +The external value :math:`{\mathit{externaddr}}` is :ref:`valid ` with the external type :math:`{\mathit{xt}}` if: -#. Else: - a. Pop all values :math:`{{\mathit{val}}^\ast}` from the top of the stack. + * The external value :math:`{\mathit{externaddr}}` is :ref:`valid ` with the external type :math:`{\mathit{xt}'}`. - #. Let :math:`l` be the label index :math:`{n'} - 1`. + * The external type :math:`{\mathit{xt}'}` :ref:`matches ` the external type :math:`{\mathit{xt}}`. - #. Pop the :math:`\mathsf{label}` from the stack. - #. Push the values :math:`{{\mathit{val}}^\ast}` to the stack. - #. Execute the instruction :math:`(\mathsf{br}~l)`. +The export instance :math:`\{ \mathsf{name}~{\mathit{nm}},\;\allowbreak \mathsf{addr}~{\mathit{xa}} \}` is :ref:`valid ` if: -:math:`\mathsf{br\_if}~l` -......................... + * The external value :math:`{\mathit{xa}}` is :ref:`valid ` with the external type :math:`{\mathit{xt}}`. -1. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. -#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)` from the stack. -#. If :math:`c \neq 0`, then: - a. Execute the instruction :math:`(\mathsf{br}~l)`. +The module instance :math:`\{ \mathsf{types}~{{\mathit{functype}}^\ast},\;\allowbreak \mathsf{funcs}~{{\mathit{funcaddr}}^\ast},\;\allowbreak \mathsf{globals}~{{\mathit{globaladdr}}^\ast},\;\allowbreak \mathsf{tables}~{{\mathit{tableaddr}}^\ast},\;\allowbreak \mathsf{mems}~{{\mathit{memaddr}}^\ast},\;\allowbreak \mathsf{exports}~{{\mathit{exportinst}}^\ast} \}` is :ref:`valid ` with the context :math:`\{ \mathsf{types}~{{\mathit{functype}}^\ast},\;\allowbreak \mathsf{funcs}~{{\mathit{functype}}_{\mathsf{f}}^\ast},\;\allowbreak \mathsf{globals}~{{\mathit{globaltype}}^\ast},\;\allowbreak \mathsf{tables}~{{\mathit{tabletype}}^\ast},\;\allowbreak \mathsf{mems}~{{\mathit{memtype}}^\ast},\;\allowbreak \mathsf{return}~\epsilon \}` if: -#. Else: - a. Do nothing. + * For all :math:`{\mathit{functype}}` in :math:`{{\mathit{functype}}^\ast}`: + * The function type :math:`{\mathit{functype}}` is :ref:`valid `. -:math:`\mathsf{br\_table}~{l^\ast}~{l'}` -........................................ + * For all :math:`{\mathit{globaladdr}}` in :math:`{{\mathit{globaladdr}}^\ast}`, and corresponding :math:`{\mathit{globaltype}}` in :math:`{{\mathit{globaltype}}^\ast}`: + * The external value :math:`(\mathsf{global}~{\mathit{globaladdr}})` is :ref:`valid ` with the external type :math:`(\mathsf{global}~{\mathit{globaltype}})`. -1. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. + * For all :math:`{\mathit{funcaddr}}` in :math:`{{\mathit{funcaddr}}^\ast}`, and corresponding :math:`{\mathit{functype}}_{\mathsf{f}}` in :math:`{{\mathit{functype}}_{\mathsf{f}}^\ast}`: -#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)` from the stack. + * The external value :math:`(\mathsf{func}~{\mathit{funcaddr}})` is :ref:`valid ` with the external type :math:`(\mathsf{func}~{\mathit{functype}}_{\mathsf{f}})`. -#. If :math:`i < {|{l^\ast}|}`, then: + * For all :math:`{\mathit{memaddr}}` in :math:`{{\mathit{memaddr}}^\ast}`, and corresponding :math:`{\mathit{memtype}}` in :math:`{{\mathit{memtype}}^\ast}`: - a. Execute the instruction :math:`(\mathsf{br}~{l^\ast}{}[i])`. + * The external value :math:`(\mathsf{mem}~{\mathit{memaddr}})` is :ref:`valid ` with the external type :math:`(\mathsf{mem}~{\mathit{memtype}})`. -#. Else: + * For all :math:`{\mathit{tableaddr}}` in :math:`{{\mathit{tableaddr}}^\ast}`, and corresponding :math:`{\mathit{tabletype}}` in :math:`{{\mathit{tabletype}}^\ast}`: - a. Execute the instruction :math:`(\mathsf{br}~{l'})`. + * The external value :math:`(\mathsf{table}~{\mathit{tableaddr}})` is :ref:`valid ` with the external type :math:`(\mathsf{table}~{\mathit{tabletype}})`. + * For all :math:`{\mathit{exportinst}}` in :math:`{{\mathit{exportinst}}^\ast}`: -:math:`\mathsf{frame}` -...................... + * The export instance :math:`{\mathit{exportinst}}` is :ref:`valid `. + * :math:`{{\mathit{exportinst}}{.}\mathsf{name}^\ast}~{\mathrm{disjoint}}` is true. -1. Let :math:`f` be the topmost :math:`\mathsf{frame}`. + * The length of :math:`{(\mathsf{global}~{\mathit{globaladdr}})^\ast}~{(\mathsf{mem}~{\mathit{memaddr}})^\ast}~{(\mathsf{table}~{\mathit{tableaddr}})^\ast}~{(\mathsf{func}~{\mathit{funcaddr}})^\ast}` is greater than :math:`0`. -#. Let :math:`n` be the arity of :math:`f` + * For all :math:`{\mathit{exportinst}}` in :math:`{{\mathit{exportinst}}^\ast}`: -#. Assert: Due to validation, there are at least :math:`n` values on the top of the stack. + * :math:`{\mathit{exportinst}}{.}\mathsf{addr}` is contained in :math:`{(\mathsf{global}~{\mathit{globaladdr}})^\ast}~{(\mathsf{mem}~{\mathit{memaddr}})^\ast}~{(\mathsf{table}~{\mathit{tableaddr}})^\ast}~{(\mathsf{func}~{\mathit{funcaddr}})^\ast}`. -#. Assert: Due to validation, there are at least :math:`n` values on the top of the stack. -#. Pop the values :math:`{{\mathit{val}}^{n}}` from the stack. -#. Assert: Due to validation, the first non-value entry of the stack is a :math:`\mathsf{frame}`. -#. Pop the :math:`\mathsf{frame}` from the stack. +The frame :math:`\{ \mathsf{locals}~{{\mathit{val}}^\ast},\;\allowbreak \mathsf{module}~{\mathit{moduleinst}} \}` is :ref:`valid ` with the context :math:`C` with the field :math:`\mathsf{locals}` appended by :math:`{t^\ast}` if: -#. Push the values :math:`{{\mathit{val}}^{n}}` to the stack. + * The module instance :math:`{\mathit{moduleinst}}` is :ref:`valid ` with the context :math:`C`. -:math:`\mathsf{return}` -....................... + * For all :math:`t` in :math:`{t^\ast}`, and corresponding :math:`{\mathit{val}}` in :math:`{{\mathit{val}}^\ast}`: + * The value :math:`{\mathit{val}}` is :ref:`valid ` with the number type :math:`t`. -1. If the first non-value entry of the stack is a :math:`\mathsf{frame}`, then: - a. Let :math:`f` be the topmost :math:`\mathsf{frame}`. - #. Let :math:`n` be the arity of :math:`f` - #. Assert: Due to validation, there are at least :math:`n` values on the top of the stack. +:math:`{\mathit{instr}}` is valid with :math:`{{\mathit{valtype}}^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast}` if: - #. Pop the values :math:`{{\mathit{val}}^{n}}` from the stack. - #. Pop all values :math:`{{\mathit{val}'}^\ast}` from the top of the stack. + * Either: - #. Pop the :math:`\mathsf{frame}` from the stack. + * The administrative instruction :math:`{\mathit{instr}}` is of the form :math:`{\mathit{instr}}`. - #. Push the values :math:`{{\mathit{val}}^{n}}` to the stack. + * The instruction :math:`{\mathit{instr}}` is :ref:`valid ` with the function type :math:`{{\mathit{valtype}}^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast}`. -#. Else: + * Or: - a. Assert: Due to validation, the first non-value entry of the stack is a :math:`\mathsf{label}`. + * The administrative instruction :math:`{\mathit{instr}}` is of the form :math:`({{\mathsf{label}}_{n}}{\{}~{{\mathit{instr}'}^\ast}~\}~{{{\mathit{instr}}'}^\ast})`. - #. Pop all values :math:`{{\mathit{val}}^\ast}` from the top of the stack. + * The number type sequence :math:`{{\mathit{valtype}}^\ast}` is empty. - #. Pop the :math:`\mathsf{label}` from the stack. + * The number type sequence :math:`{{\mathit{valtype}'}^\ast}` is of the form :math:`{t^?}`. - #. Push the values :math:`{{\mathit{val}}^\ast}` to the stack. + * The length of :math:`{{t'}^?}` is equal to :math:`n`. - #. Execute the instruction :math:`\mathsf{return}`. + * :math:`{{\mathit{instr}'}^\ast}` is valid with :math:`{{t'}^?}~\rightarrow~{t^?}`. + * :math:`{{{\mathit{instr}}'}^\ast}` is valid with :math:`\epsilon~\rightarrow~{t^?}`. + * Or: -:math:`t {.} {\mathit{unop}}` -............................. + * The administrative instruction :math:`{\mathit{instr}}` is of the form :math:`({{\mathsf{frame}}_{n}}{\{}~f~\}~{{{\mathit{instr}}'}^\ast})`. + * The number type sequence :math:`{{\mathit{valtype}}^\ast}` is empty. -1. Assert: Due to validation, a value of number type :math:`t` is on the top of the stack. + * The number type sequence :math:`{{\mathit{valtype}'}^\ast}` is of the form :math:`{t^?}`. -#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c_1)` from the stack. + * The length of :math:`{t^?}` is equal to :math:`n`. -#. If :math:`{{\mathit{unop}}}{{}_{t}}{(c_1)}` is empty, then: + * The frame :math:`f` is :ref:`valid ` with the context :math:`{C'}`. - a. Trap. + * :math:`{{{\mathit{instr}}'}^\ast}` is valid with :math:`{t^?}`. + * Or: -#. Let :math:`c` be an element of :math:`{{\mathit{unop}}}{{}_{t}}{(c_1)}`. + * The administrative instruction :math:`{\mathit{instr}}` is of the form :math:`(\mathsf{call}~{\mathit{funcaddr}})`. -#. Push the value :math:`(t{.}\mathsf{const}~c)` to the stack. + * The external value :math:`(\mathsf{func}~{\mathit{funcaddr}})` is :ref:`valid ` with the external type :math:`(\mathsf{func}~{{\mathit{valtype}}^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast})`. + * Or: + * The administrative instruction :math:`{\mathit{instr}}` is of the form :math:`\mathsf{trap}`. -:math:`t {.} {\mathit{binop}}` -.............................. -1. Assert: Due to validation, a value of number type :math:`t` is on the top of the stack. -#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c_2)` from the stack. +:math:`{\mathit{instr}}` is valid with :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}` if: -#. Assert: Due to validation, a num is on the top of the stack. -#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c_1)` from the stack. + * The instruction :math:`{\mathit{instr}}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. -#. If :math:`{{\mathit{binop}}}{{}_{t}}{(c_1, c_2)}` is empty, then: - a. Trap. -#. Let :math:`c` be an element of :math:`{{\mathit{binop}}}{{}_{t}}{(c_1, c_2)}`. -#. Push the value :math:`(t{.}\mathsf{const}~c)` to the stack. +:math:`({{\mathsf{label}}_{n}}{\{}~{{\mathit{instr}}^\ast}~\}~{{\mathit{instr}}^\ast})` is valid with :math:`\epsilon~\rightarrow~{t^?}` if: -:math:`t {.} {\mathit{testop}}` -............................... + * The length of :math:`{{t'}^?}` is equal to :math:`n`. + * :math:`{{\mathit{instr}'}^\ast}` is valid with :math:`{{t'}^?}~\rightarrow~{t^?}`. -1. Assert: Due to validation, a value of number type :math:`t` is on the top of the stack. + * :math:`{{\mathit{instr}}^\ast}` is valid with :math:`\epsilon~\rightarrow~{t^?}`. -#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c_1)` from the stack. -#. Let :math:`c` be :math:`{{\mathit{testop}}}{{}_{t}}{(c_1)}`. -#. Push the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)` to the stack. +:math:`({{\mathsf{frame}}_{n}}{\{}~f~\}~{{\mathit{instr}}^\ast})` is valid with :math:`\epsilon~\rightarrow~{t^?}` if: -:math:`t {.} {\mathit{relop}}` -.............................. + * The length of :math:`{t^?}` is equal to :math:`n`. -1. Assert: Due to validation, a value of number type :math:`t` is on the top of the stack. + * The frame :math:`f` is :ref:`valid ` with the context :math:`{C'}`. -#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c_2)` from the stack. + * :math:`{{\mathit{instr}}^\ast}` is valid with :math:`{t^?}`. -#. Assert: Due to validation, a num is on the top of the stack. -#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c_1)` from the stack. -#. Let :math:`c` be :math:`{{\mathit{relop}}}{{}_{t}}{(c_1, c_2)}`. -#. Push the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)` to the stack. +:math:`(\mathsf{call}~{\mathit{funcaddr}})` is valid with :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}` if: -:math:`t_2 {.} {{\mathit{cvtop}}}{\mathsf{\_}}{t_1}` -.................................................... + * The external value :math:`(\mathsf{func}~{\mathit{funcaddr}})` is :ref:`valid ` with the external type :math:`(\mathsf{func}~{t_1^\ast}~\rightarrow~{t_2^\ast})`. -1. Assert: Due to validation, a value of number type :math:`t_1` is on the top of the stack. -#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c_1)` from the stack. -#. If :math:`{{\mathit{cvtop}}}{{}_{t_1, t_2}}{(c_1)}` is empty, then: +:math:`\mathsf{trap}` is valid with :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. - a. Trap. -#. Let :math:`c` be an element of :math:`{{\mathit{cvtop}}}{{}_{t_1, t_2}}{(c_1)}`. -#. Push the value :math:`(t_2{.}\mathsf{const}~c)` to the stack. +:math:`{{\mathit{instr}}^\ast}` is valid with :math:`{{\mathit{valtype}}^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast}` if: -:math:`\mathsf{local{.}tee}~x` -.............................. + * Either: -1. Assert: Due to validation, a value is on the top of the stack. + * The administrative instruction sequence :math:`{{\mathit{instr}}^\ast}` is empty. -#. Pop the value :math:`{\mathit{val}}` from the stack. + * The number type sequence :math:`{{\mathit{valtype}}^\ast}` is empty. -#. Push the value :math:`{\mathit{val}}` to the stack. + * The number type sequence :math:`{{\mathit{valtype}'}^\ast}` is empty. -#. Push the value :math:`{\mathit{val}}` to the stack. + * Or: -#. Execute the instruction :math:`(\mathsf{local{.}set}~x)`. + * The administrative instruction sequence :math:`{{\mathit{instr}}^\ast}` is of the form :math:`{{\mathit{instr}}}_1~{{{\mathit{instr}}}_2^\ast}`. + * :math:`{{\mathit{instr}}}_1` is valid with :math:`{{\mathit{valtype}}^\ast}~\rightarrow~{t_2^\ast}`. -:math:`\mathsf{block}~{t^?}~{{\mathit{instr}}^\ast}` -.................................................... + * :math:`{{{\mathit{instr}}}_2^\ast}` is valid with :math:`{t_2^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast}`. + * Or: + * The number type sequence :math:`{{\mathit{valtype}}^\ast}` is of the form :math:`{t^\ast}~{t_1^\ast}`. -1. Let :math:`n` be :math:`0`. + * The number type sequence :math:`{{\mathit{valtype}'}^\ast}` is of the form :math:`{t^\ast}~{t_2^\ast}`. -#. If :math:`{t^?}` is not defined, then: + * :math:`{{\mathit{instr}}^\ast}` is valid with :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. - #. Let :math:`L` be the :math:`\mathsf{label}` whose arity is :math:`n` and whose continuation is the end of the block. - a. Enter the block :math:`{{\mathit{instr}}^\ast}` with the :math:`\mathsf{label}` :math:`L`. -#. Let :math:`n` be :math:`1`. -#. If :math:`{t^?} \neq \epsilon`, then: +:math:`\epsilon` is valid with :math:`\epsilon~\rightarrow~\epsilon`. - #. Let :math:`L` be the :math:`\mathsf{label}` whose arity is :math:`n` and whose continuation is the end of the block. - a. Enter the block :math:`{{\mathit{instr}}^\ast}` with the :math:`\mathsf{label}` :math:`L`. -:math:`\mathsf{loop}~{t^?}~{{\mathit{instr}}^\ast}` -................................................... +:math:`{{\mathit{instr}}}_1~{{{\mathit{instr}}}_2^\ast}` is valid with :math:`{t_1^\ast}~\rightarrow~{t_3^\ast}` if: -#. Let :math:`L` be the :math:`\mathsf{label}` whose continuation is the start of the block. - -1. Enter the block :math:`{{\mathit{instr}}^\ast}` with the :math:`\mathsf{label}` :math:`L`. + * :math:`{{\mathit{instr}}}_1` is valid with :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + * :math:`{{{\mathit{instr}}}_2^\ast}` is valid with :math:`{t_2^\ast}~\rightarrow~{t_3^\ast}`. -:math:`\mathsf{call}~x` -....................... -1. Let :math:`z` be the current state. -#. Assert: Due to validation, :math:`x < {|z{.}\mathsf{module}{.}\mathsf{funcs}|}`. +:math:`{{\mathit{instr}}^\ast}` is valid with :math:`{t^\ast}~{t_1^\ast}~\rightarrow~{t^\ast}~{t_2^\ast}` if: -#. Execute the instruction :math:`(\mathsf{call}~z{.}\mathsf{module}{.}\mathsf{funcs}{}[x])`. + * :math:`{{\mathit{instr}}^\ast}` is valid with :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. -:math:`\mathsf{call\_indirect}~x` -................................. -1. Let :math:`z` be the current state. -#. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. +:math:`{{\mathit{instr}}^\ast}` is valid with :math:`{t^?}` if: -#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)` from the stack. -#. If :math:`i \geq {|z{.}\mathsf{tables}{}[0]{.}\mathsf{refs}|}`, then: + * :math:`{{\mathit{instr}}^\ast}` is valid with :math:`\epsilon~\rightarrow~{t^?}`. - a. Trap. -#. If :math:`z{.}\mathsf{tables}{}[0]{.}\mathsf{refs}{}[i]` is not defined, then: - a. Trap. -#. Let :math:`a` be :math:`z{.}\mathsf{tables}{}[0]{.}\mathsf{refs}{}[i]`. +The global instance :math:`\{ \mathsf{type}~({\mathit{mut}}~t),\;\allowbreak \mathsf{value}~{\mathit{val}} \}` is :ref:`valid ` with the global type :math:`({\mathit{mut}}~t)` if: -#. If :math:`a \geq {|z{.}\mathsf{funcs}|}`, then: - a. Trap. + * The global type :math:`({\mathit{mut}}~t)` is :ref:`valid `. -#. If :math:`z{.}\mathsf{types}{}[x] \neq z{.}\mathsf{funcs}{}[a]{.}\mathsf{type}`, then: + * The value :math:`{\mathit{val}}` is :ref:`valid ` with the number type :math:`t`. - a. Trap. -#. Execute the instruction :math:`(\mathsf{call}~a)`. -:math:`\mathsf{call}~a` -....................... +The memory instance :math:`\{ \mathsf{type}~{}[ n .. m ],\;\allowbreak \mathsf{bytes}~{b^\ast} \}` is :ref:`valid ` with the memory type :math:`{}[ n .. m ]` if: -1. Let :math:`z` be the current state. + * The memory type :math:`{}[ n .. m ]` is :ref:`valid `. -#. Assert: Due to validation, :math:`a < {|z{.}\mathsf{funcs}|}`. + * The length of :math:`{b^\ast}` is equal to :math:`n \cdot 64 \, {\mathrm{Ki}}`. -#. Let :math:`\{ \mathsf{type}~{t_1^{k}}~\rightarrow~{t_2^{n}},\;\allowbreak \mathsf{module}~{\mathit{mm}},\;\allowbreak \mathsf{code}~{\mathit{func}} \}` be the destructuring of :math:`z{.}\mathsf{funcs}{}[a]`. -#. Let :math:`(\mathsf{func}~x~{{\mathit{local}}_0^\ast}~{{\mathit{instr}}^\ast})` be the destructuring of :math:`{\mathit{func}}`. -#. Let :math:`{t^\ast}` be the number type sequence :math:`\epsilon`. -#. For each :math:`{\mathit{local}}_0` in :math:`{{\mathit{local}}_0^\ast}`, do: +The table instance :math:`\{ \mathsf{type}~{}[ n .. m ],\;\allowbreak \mathsf{refs}~{({{\mathit{fa}}^?})^\ast} \}` is :ref:`valid ` with the table type :math:`{}[ n .. m ]` if: - a. Let :math:`(\mathsf{local}~t)` be the destructuring of :math:`{\mathit{local}}_0`. - #. Append :math:`t` to :math:`{t^\ast}`. + * The table type :math:`{}[ n .. m ]` is :ref:`valid `. -#. Assert: Due to validation, there are at least :math:`k` values on the top of the stack. + * For all :math:`{\mathit{fa?}}` in :math:`{{\mathit{fa?}}^\ast}`: -#. Pop the values :math:`{{\mathit{val}}^{k}}` from the stack. + * The function address :math:`{\mathit{fa?}}` is absent if and only if the function type :math:`{\mathit{ft?}}` is absent. -#. Let :math:`f` be the frame :math:`\{ \mathsf{locals}~{{\mathit{val}}^{k}}~{{{\mathrm{default}}}_{t}^\ast},\;\allowbreak \mathsf{module}~{\mathit{mm}} \}`. + * :math:`{{\mathit{ft?}}^\ast}` is the concatenation of all such :math:`{\mathit{ft?}}`. -#. Let :math:`{f'}` be the :math:`\mathsf{frame}` :math:`f` whose arity is :math:`n`. + * For all :math:`{\mathit{fa?}}` in :math:`{{\mathit{fa?}}^\ast}`, and corresponding :math:`{\mathit{ft?}}` in :math:`{{\mathit{ft?}}^\ast}`: -#. Push the :math:`\mathsf{frame}` :math:`{f'}`. + * YetS: TODO: prem_to_intrs iter. -#. Let :math:`L` be the :math:`\mathsf{label}` whose arity is :math:`n` and whose continuation is the end of the block. + * The length of :math:`{({{\mathit{fa}}^?})^\ast}` is equal to :math:`n`. -#. Enter the block :math:`{{\mathit{instr}}^\ast}` with the :math:`\mathsf{label}` :math:`L`. -:math:`\mathsf{local{.}get}~x` -.............................. +The function instance :math:`\{ \mathsf{type}~{\mathit{ft}},\;\allowbreak \mathsf{module}~{\mathit{moduleinst}},\;\allowbreak \mathsf{code}~{\mathit{func}} \}` is :ref:`valid ` with the function type :math:`{\mathit{ft}}` if: -1. Let :math:`z` be the current state. -#. Push the value :math:`z{.}\mathsf{locals}{}[x]` to the stack. + * The function type :math:`{\mathit{ft}}` is :ref:`valid `. + * The module instance :math:`{\mathit{moduleinst}}` is :ref:`valid ` with the context :math:`C`. -:math:`\mathsf{global{.}get}~x` -............................... + * The function :math:`{\mathit{func}}` is :ref:`valid ` with the function type :math:`{\mathit{ft}}`. -1. Let :math:`z` be the current state. -#. Push the value :math:`z{.}\mathsf{globals}{}[x]{.}\mathsf{value}` to the stack. +The store :math:`s` is :ref:`valid ` if: -:math:`{t{.}\mathsf{load}}{{{\mathit{loadop}}^?}}~{\mathit{ao}}` -................................................................ + * For all : -1. Let :math:`z` be the current state. + * The global instance :math:`{\mathit{globalinst}}` is :ref:`valid ` with the global type :math:`{\mathit{globaltype}}`. -#. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. + * :math:`{{\mathit{globalinst}}^\ast}` is the concatenation of all such :math:`{\mathit{globalinst}}`. -#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)` from the stack. + * For all : -#. If :math:`{{\mathit{loadop}}^?}` is not defined, then: + * The memory instance :math:`{\mathit{meminst}}` is :ref:`valid ` with the memory type :math:`{\mathit{memtype}}`. - a. If :math:`i + {\mathit{ao}}{.}\mathsf{offset} + {|t|} / 8 > {|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|}`, then: + * :math:`{{\mathit{meminst}}^\ast}` is the concatenation of all such :math:`{\mathit{meminst}}`. - 1) Trap. + * For all : - #. Let :math:`c` be the result for which :math:`{{\mathrm{bytes}}}_{t}(c)` :math:`=` :math:`z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {|t|} / 8]`. + * The table instance :math:`{\mathit{tableinst}}` is :ref:`valid ` with the table type :math:`{\mathit{tabletype}}`. - #. Push the value :math:`(t{.}\mathsf{const}~c)` to the stack. + * :math:`{{\mathit{tableinst}}^\ast}` is the concatenation of all such :math:`{\mathit{tableinst}}`. -#. Else: + * For all : - a. Assert: Due to validation, :math:`t` is :math:`{\mathsf{i}}{n}`. + * The function instance :math:`{\mathit{funcinst}}` is :ref:`valid ` with the function type :math:`{\mathit{functype}}`. - #. Let :math:`{\mathit{loadop}}_0` be :math:`{{\mathit{loadop}}^?}`. + * :math:`{{\mathit{funcinst}}^\ast}` is the concatenation of all such :math:`{\mathit{funcinst}}`. - #. Let :math:`{n}{\mathsf{\_}}{{\mathit{sx}}}` be the destructuring of :math:`{\mathit{loadop}}_0`. + * The store :math:`s` is of the form :math:`\{ \mathsf{funcs}~{{\mathit{funcinst}}^\ast},\;\allowbreak \mathsf{globals}~{{\mathit{globalinst}}^\ast},\;\allowbreak \mathsf{tables}~{{\mathit{tableinst}}^\ast},\;\allowbreak \mathsf{mems}~{{\mathit{meminst}}^\ast} \}`. - #. If :math:`i + {\mathit{ao}}{.}\mathsf{offset} + n / 8 > {|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|}`, then: - 1) Trap. - #. Let :math:`c` be the result for which :math:`{{\mathrm{bytes}}}_{{\mathsf{i}}{n}}(c)` :math:`=` :math:`z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : n / 8]`. - #. Push the value :math:`(t{.}\mathsf{const}~{{{{\mathrm{extend}}}_{n, {|t|}}^{{\mathit{sx}}}}}{(c)})` to the stack. +The state :math:`(s, f)` is :ref:`valid ` with the context :math:`C` if: -:math:`\mathsf{memory{.}size}` -.............................. + * The store :math:`s` is :ref:`valid `. + * The frame :math:`f` is :ref:`valid ` with the context :math:`C`. -1. Let :math:`z` be the current state. -#. Let :math:`n \cdot 64 \cdot {\mathrm{Ki}}` be the length of :math:`z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}`. -#. Push the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)` to the stack. +The configuration :math:`(s, f)~;~{{\mathit{instr}}^\ast}` is :ref:`valid ` with the result type :math:`{t^?}` if: -:math:`\mathsf{local{.}set}~x` -.............................. + * The state :math:`(s, f)` is :ref:`valid ` with the context :math:`C`. -1. Let :math:`z` be the current state. + * :math:`{{\mathit{instr}}^\ast}` is valid with :math:`{t^?}`. -#. Assert: Due to validation, a value is on the top of the stack. -#. Pop the value :math:`{\mathit{val}}` from the stack. +:math:`\mathsf{load}~t~{\mathit{ao}}` +..................................... -#. Perform :math:`z{}[{.}\mathsf{locals}{}[x] = {\mathit{val}}]`. +1. Let :math:`z` be the current state. -:math:`\mathsf{global{.}set}~x` -............................... +#. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. +#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)` from the stack. -1. Let :math:`z` be the current state. +#. If :math:`i + {\mathit{ao}}{.}\mathsf{offset} + {|t|} / 8 > {|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|}`, then: -#. Assert: Due to validation, a value is on the top of the stack. + a. Trap. -#. Pop the value :math:`{\mathit{val}}` from the stack. +#. Let :math:`c` be the result for which :math:`{{\mathrm{bytes}}}_{t}(c)` :math:`=` :math:`z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {|t|} / 8]`. -#. Perform :math:`z{}[{.}\mathsf{globals}{}[x]{.}\mathsf{value} = {\mathit{val}}]`. +#. Push the value :math:`(t{.}\mathsf{const}~c)` to the stack. -:math:`{t{.}\mathsf{store}}{{{\mathit{sz}}^?}}~{\mathit{ao}}` -............................................................. +:math:`{{\mathsf{i}}{n}{.}\mathsf{load}}{{n}{\mathsf{\_}}{{\mathit{sx}}}}~{\mathit{ao}}` +........................................................................................ 1. Let :math:`z` be the current state. -#. Assert: Due to validation, a num is on the top of the stack. - -#. Pop the value :math:`({t'}{.}\mathsf{const}~c)` from the stack. - -#. Assert: Due to validation, a value is on the top of the stack. +#. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. #. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)` from the stack. -#. Assert: Due to validation, :math:`t = {t'}`. - -#. If :math:`{{\mathit{sz}}^?}` is not defined, then: +#. If :math:`i + {\mathit{ao}}{.}\mathsf{offset} + n / 8 > {|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|}`, then: - a. If :math:`i + {\mathit{ao}}{.}\mathsf{offset} + {|{t'}|} / 8 > {|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|}`, then: + a. Trap. - 1) Trap. +#. Let :math:`c` be the result for which :math:`{{\mathrm{bytes}}}_{{\mathsf{i}}{n}}(c)` :math:`=` :math:`z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : n / 8]`. - #. Let :math:`{b^\ast}` be :math:`{{\mathrm{bytes}}}_{{t'}}(c)`. +#. Push the value :math:`({\mathsf{i}}{n}{.}\mathsf{const}~{{{{\mathrm{extend}}}_{n, {|{\mathsf{i}}{n}|}}^{{\mathit{sx}}}}}{(c)})` to the stack. - #. Perform :math:`z{}[{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {|{t'}|} / 8] = {b^\ast}]`. -#. Else: +:math:`\mathsf{store}~t~{\mathit{ao}}` +...................................... - a. Assert: Due to validation, :math:`{t'}` is :math:`{\mathsf{i}}{n}`. - #. Let :math:`n` be :math:`{{\mathit{sz}}^?}`. +1. Let :math:`z` be the current state. - #. If :math:`i + {\mathit{ao}}{.}\mathsf{offset} + n / 8 > {|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|}`, then: +#. Assert: Due to validation, a value of number type :math:`t` is on the top of the stack. - 1) Trap. +#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c)` from the stack. - #. Let :math:`{b^\ast}` be :math:`{{\mathrm{bytes}}}_{{\mathsf{i}}{n}}({{\mathrm{wrap}}}_{{|{t'}|}, n}(c))`. +#. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. - #. Perform :math:`z{}[{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : n / 8] = {b^\ast}]`. +#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)` from the stack. +#. If :math:`i + {\mathit{ao}}{.}\mathsf{offset} + {|t|} / 8 > {|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|}`, then: -:math:`\mathsf{memory{.}grow}` -.............................. + a. Trap. +#. Let :math:`{b^\ast}` be :math:`{{\mathrm{bytes}}}_{t}(c)`. -1. Let :math:`z` be the current state. +#. Perform :math:`z{}[{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {|t|} / 8] = {b^\ast}]`. -#. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. -#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)` from the stack. +:math:`{{\mathsf{i}}{n}{.}\mathsf{store}}{n}~{\mathit{ao}}` +........................................................... -#. Either: - a. Let :math:`{\mathit{mi}}` be the memory instance :math:`{\mathrm{growmemory}}(z{.}\mathsf{mems}{}[0], n)`. +1. Let :math:`z` be the current state. - #. Push the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~{|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|} / (64 \, {\mathrm{Ki}}))` to the stack. +#. Assert: Due to validation, a value of number type :math:`{\mathsf{i}}{n}` is on the top of the stack. - #. Perform :math:`z{}[{.}\mathsf{mems}{}[0] = {\mathit{mi}}]`. +#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c)` from the stack. -#. Or: +#. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. - a. Push the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~{{{{\mathrm{signed}}}_{32}^{{-1}}}}{({-1})})` to the stack. +#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)` from the stack. +#. If :math:`i + {\mathit{ao}}{.}\mathsf{offset} + n / 8 > {|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|}`, then: -:math:`{\mathrm{Ki}}` -..................... + a. Trap. +#. Let :math:`{b^\ast}` be :math:`{{\mathrm{bytes}}}_{{\mathsf{i}}{n}}({{\mathrm{wrap}}}_{{|{\mathsf{i}}{n}|}, n}(c))`. -1. Return :math:`1024`. +#. Perform :math:`z{}[{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : n / 8] = {b^\ast}]`. -:math:`{\mathrm{min}}(i, j)` +:math:`\mathsf{unreachable}` ............................ -1. If :math:`i \leq j`, then: +1. Trap. - a. Return :math:`i`. -#. Return :math:`j`. +:math:`\mathsf{nop}` +.................... -:math:`{\mathrm{sum}}({{n''}^\ast})` -.................................... +1. Do nothing. -1. If :math:`{{n''}^\ast} = \epsilon`, then: +:math:`\mathsf{drop}` +..................... - a. Return :math:`0`. -#. Let :math:`n~{{n'}^\ast}` be :math:`{{n''}^\ast}`. +1. Assert: Due to validation, a value is on the top of the stack. -#. Return :math:`n + {\mathrm{sum}}({{n'}^\ast})`. +#. Pop the value :math:`{\mathit{val}}` from the stack. -:math:`{X^\ast}` -................ +:math:`\mathsf{select}` +....................... -1. If :math:`{X^\ast} = \epsilon`, then: +1. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. - a. Return :math:`\epsilon`. +#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)` from the stack. -#. If :math:`{|{X^\ast}|} = 1`, then: +#. Assert: Due to validation, a value is on the top of the stack. - a. Let :math:`w` be :math:`{X^\ast}`. +#. Pop the value :math:`{\mathit{val}}_2` from the stack. - #. Return :math:`w`. +#. Assert: Due to validation, a value is on the top of the stack. -#. Fail. +#. Pop the value :math:`{\mathit{val}}_1` from the stack. +#. If :math:`c \neq 0`, then: -:math:`{X^?}` -............. + a. Push the value :math:`{\mathit{val}}_1` to the stack. +#. Else: -1. If :math:`{X^?}` is not defined, then: + a. Push the value :math:`{\mathit{val}}_2` to the stack. - a. Return :math:`\epsilon`. -#. Let :math:`w` be :math:`{X^?}`. +:math:`\mathsf{if}~{t^?}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast}` +........................................................................................... -#. Return :math:`w`. +1. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. -:math:`{\mathrm{concat}}({X^\ast})` -................................... +#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)` from the stack. +#. If :math:`c \neq 0`, then: -1. If :math:`{X^\ast} = \epsilon`, then: + a. Execute the instruction :math:`(\mathsf{block}~{t^?}~{{\mathit{instr}}_1^\ast})`. - a. Return :math:`\epsilon`. +#. Else: -#. Let :math:`{w^\ast}~{{{w'}^\ast}^\ast}` be :math:`{X^\ast}`. + a. Execute the instruction :math:`(\mathsf{block}~{t^?}~{{\mathit{instr}}_2^\ast})`. -#. Return :math:`{w^\ast}~{\mathrm{concat}}({{{w'}^\ast}^\ast})`. +:math:`\mathsf{label}` +...................... -:math:`{\mathrm{signif}}(N)` -............................ +1. Pop all values :math:`{{\mathit{val}}^\ast}` from the top of the stack. -1. If :math:`N = 32`, then: +#. Assert: Due to validation, the first non-value entry of the stack is a :math:`\mathsf{label}`. - a. Return :math:`23`. +#. Pop the :math:`\mathsf{label}` from the stack. -#. If :math:`N = 64`, then: +#. Push the values :math:`{{\mathit{val}}^\ast}` to the stack. - a. Return :math:`52`. -#. Fail. +:math:`\mathsf{br}~{n'}` +........................ -:math:`{\mathrm{expon}}(N)` -........................... +1. Assert: Due to validation, the first non-value entry of the stack is a :math:`\mathsf{label}`. +#. Let :math:`L` be the topmost :math:`\mathsf{label}`. -1. If :math:`N = 32`, then: +#. Let :math:`n` be the arity of :math:`L` - a. Return :math:`8`. +#. If :math:`{n'} = 0`, then: -#. If :math:`N = 64`, then: + a. Assert: Due to validation, there are at least :math:`n` values on the top of the stack. - a. Return :math:`11`. + #. Pop the values :math:`{{\mathit{val}}^{n}}` from the stack. -#. Fail. + #. Pop all values :math:`{{\mathit{val}'}^\ast}` from the top of the stack. + #. Pop the :math:`\mathsf{label}` from the stack. -:math:`M` -......... + #. Push the values :math:`{{\mathit{val}}^{n}}` to the stack. + #. Jump to the continuation of :math:`L`. -1. Return :math:`{\mathrm{signif}}(N)`. +#. Else: + a. Pop all values :math:`{{\mathit{val}}^\ast}` from the top of the stack. -:math:`E` -......... + #. Let :math:`l` be the label index :math:`{n'} - 1`. + #. Pop the :math:`\mathsf{label}` from the stack. -1. Return :math:`{\mathrm{expon}}(N)`. + #. Push the values :math:`{{\mathit{val}}^\ast}` to the stack. + #. Execute the instruction :math:`(\mathsf{br}~l)`. -:math:`{+0}` -............ +:math:`\mathsf{br\_if}~l` +......................... -1. Return :math:`({+((0 + 0 \cdot {2^{{-M}}}) \cdot {2^{e}})})`. +1. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. -:math:`{+1}` -............ +#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)` from the stack. +#. If :math:`c \neq 0`, then: -1. Return :math:`({+((1 + 1 \cdot {2^{{-M}}}) \cdot {2^{0}})})`. + a. Execute the instruction :math:`(\mathsf{br}~l)`. +#. Else: -:math:`{{\mathrm{canon}}}_{N}` -.............................. + a. Do nothing. -1. Return :math:`{2^{{\mathrm{signif}}(N) - 1}}`. +:math:`\mathsf{br\_table}~{l^\ast}~{l'}` +........................................ -:math:`{|{\mathit{valtype}}|}` -.............................. +1. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. +#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)` from the stack. -1. If :math:`{\mathit{valtype}} = \mathsf{i{\scriptstyle 32}}`, then: +#. If :math:`i < {|{l^\ast}|}`, then: - a. Return :math:`32`. + a. Execute the instruction :math:`(\mathsf{br}~{l^\ast}{}[i])`. -#. If :math:`{\mathit{valtype}} = \mathsf{i{\scriptstyle 64}}`, then: +#. Else: - a. Return :math:`64`. + a. Execute the instruction :math:`(\mathsf{br}~{l'})`. -#. If :math:`{\mathit{valtype}} = \mathsf{f{\scriptstyle 32}}`, then: - a. Return :math:`32`. +:math:`\mathsf{frame}` +...................... -#. Assert: Due to validation, :math:`{\mathit{valtype}} = \mathsf{f{\scriptstyle 64}}`. -#. Return :math:`64`. +1. Let :math:`f` be the topmost :math:`\mathsf{frame}`. +#. Let :math:`n` be the arity of :math:`f` -:math:`{\mathrm{funcs}}({{\mathit{externtype}'}^\ast})` -....................................................... +#. Assert: Due to validation, there are at least :math:`n` values on the top of the stack. +#. Assert: Due to validation, there are at least :math:`n` values on the top of the stack. -1. If :math:`{{\mathit{externtype}'}^\ast} = \epsilon`, then: +#. Pop the values :math:`{{\mathit{val}}^{n}}` from the stack. - a. Return :math:`\epsilon`. +#. Assert: Due to validation, the first non-value entry of the stack is a :math:`\mathsf{frame}`. -#. Let :math:`{\mathit{externtype}}_0~{{\mathit{xt}}^\ast}` be :math:`{{\mathit{externtype}'}^\ast}`. +#. Pop the :math:`\mathsf{frame}` from the stack. -#. If :math:`{\mathit{externtype}}_0` is some :math:`\mathsf{func}~{\mathit{functype}}`, then: +#. Push the values :math:`{{\mathit{val}}^{n}}` to the stack. - a. Let :math:`(\mathsf{func}~{\mathit{ft}})` be the destructuring of :math:`{\mathit{externtype}}_0`. - #. Return :math:`{\mathit{ft}}~{\mathrm{funcs}}({{\mathit{xt}}^\ast})`. +:math:`\mathsf{return}` +....................... -#. Let :math:`{\mathit{externtype}}~{{\mathit{xt}}^\ast}` be :math:`{{\mathit{externtype}'}^\ast}`. -#. Return :math:`{\mathrm{funcs}}({{\mathit{xt}}^\ast})`. +1. If the first non-value entry of the stack is a :math:`\mathsf{frame}`, then: + a. Let :math:`f` be the topmost :math:`\mathsf{frame}`. -:math:`{\mathrm{globals}}({{\mathit{externtype}'}^\ast})` -......................................................... + #. Let :math:`n` be the arity of :math:`f` + #. Assert: Due to validation, there are at least :math:`n` values on the top of the stack. -1. If :math:`{{\mathit{externtype}'}^\ast} = \epsilon`, then: + #. Pop the values :math:`{{\mathit{val}}^{n}}` from the stack. - a. Return :math:`\epsilon`. + #. Pop all values :math:`{{\mathit{val}'}^\ast}` from the top of the stack. -#. Let :math:`{\mathit{externtype}}_0~{{\mathit{xt}}^\ast}` be :math:`{{\mathit{externtype}'}^\ast}`. + #. Pop the :math:`\mathsf{frame}` from the stack. -#. If :math:`{\mathit{externtype}}_0` is some :math:`\mathsf{global}~{\mathit{globaltype}}`, then: + #. Push the values :math:`{{\mathit{val}}^{n}}` to the stack. - a. Let :math:`(\mathsf{global}~{\mathit{gt}})` be the destructuring of :math:`{\mathit{externtype}}_0`. +#. Else: - #. Return :math:`{\mathit{gt}}~{\mathrm{globals}}({{\mathit{xt}}^\ast})`. + a. Assert: Due to validation, the first non-value entry of the stack is a :math:`\mathsf{label}`. -#. Let :math:`{\mathit{externtype}}~{{\mathit{xt}}^\ast}` be :math:`{{\mathit{externtype}'}^\ast}`. + #. Pop all values :math:`{{\mathit{val}}^\ast}` from the top of the stack. -#. Return :math:`{\mathrm{globals}}({{\mathit{xt}}^\ast})`. + #. Pop the :math:`\mathsf{label}` from the stack. + #. Push the values :math:`{{\mathit{val}}^\ast}` to the stack. -:math:`{\mathrm{tables}}({{\mathit{externtype}'}^\ast})` -........................................................ + #. Execute the instruction :math:`\mathsf{return}`. -1. If :math:`{{\mathit{externtype}'}^\ast} = \epsilon`, then: +:math:`t {.} {\mathit{unop}}` +............................. - a. Return :math:`\epsilon`. -#. Let :math:`{\mathit{externtype}}_0~{{\mathit{xt}}^\ast}` be :math:`{{\mathit{externtype}'}^\ast}`. +1. Assert: Due to validation, a value of number type :math:`t` is on the top of the stack. -#. If :math:`{\mathit{externtype}}_0` is some :math:`\mathsf{table}~{\mathit{tabletype}}`, then: +#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c_1)` from the stack. - a. Let :math:`(\mathsf{table}~{\mathit{tt}})` be the destructuring of :math:`{\mathit{externtype}}_0`. +#. If :math:`{{\mathit{unop}}}{{}_{t}}{(c_1)}` is empty, then: - #. Return :math:`{\mathit{tt}}~{\mathrm{tables}}({{\mathit{xt}}^\ast})`. + a. Trap. -#. Let :math:`{\mathit{externtype}}~{{\mathit{xt}}^\ast}` be :math:`{{\mathit{externtype}'}^\ast}`. +#. Let :math:`c` be an element of :math:`{{\mathit{unop}}}{{}_{t}}{(c_1)}`. -#. Return :math:`{\mathrm{tables}}({{\mathit{xt}}^\ast})`. +#. Push the value :math:`(t{.}\mathsf{const}~c)` to the stack. -:math:`{\mathrm{mems}}({{\mathit{externtype}'}^\ast})` -...................................................... +:math:`t {.} {\mathit{binop}}` +.............................. -1. If :math:`{{\mathit{externtype}'}^\ast} = \epsilon`, then: +1. Assert: Due to validation, a value of number type :math:`t` is on the top of the stack. - a. Return :math:`\epsilon`. +#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c_2)` from the stack. -#. Let :math:`{\mathit{externtype}}_0~{{\mathit{xt}}^\ast}` be :math:`{{\mathit{externtype}'}^\ast}`. +#. Assert: Due to validation, a num is on the top of the stack. -#. If :math:`{\mathit{externtype}}_0` is some :math:`\mathsf{mem}~{\mathit{memtype}}`, then: +#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c_1)` from the stack. - a. Let :math:`(\mathsf{mem}~{\mathit{mt}})` be the destructuring of :math:`{\mathit{externtype}}_0`. +#. If :math:`{{\mathit{binop}}}{{}_{t}}{(c_1, c_2)}` is empty, then: - #. Return :math:`{\mathit{mt}}~{\mathrm{mems}}({{\mathit{xt}}^\ast})`. + a. Trap. -#. Let :math:`{\mathit{externtype}}~{{\mathit{xt}}^\ast}` be :math:`{{\mathit{externtype}'}^\ast}`. +#. Let :math:`c` be an element of :math:`{{\mathit{binop}}}{{}_{t}}{(c_1, c_2)}`. -#. Return :math:`{\mathrm{mems}}({{\mathit{xt}}^\ast})`. +#. Push the value :math:`(t{.}\mathsf{const}~c)` to the stack. +:math:`t {.} {\mathit{testop}}` +............................... +1. Assert: Due to validation, a value of number type :math:`t` is on the top of the stack. +#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c_1)` from the stack. -1. Return :math:`\{ \mathsf{align}~0,\;\allowbreak \mathsf{offset}~0 \}`. +#. Let :math:`c` be :math:`{{\mathit{testop}}}{{}_{t}}{(c_1)}`. +#. Push the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)` to the stack. -:math:`\mathbb{B}(b)` -..................... +:math:`t {.} {\mathit{relop}}` +.............................. -1. If :math:`b` is false, then: - a. Return :math:`0`. +1. Assert: Due to validation, a value of number type :math:`t` is on the top of the stack. -#. Assert: Due to validation, :math:`b` is true. +#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c_2)` from the stack. -#. Return :math:`1`. +#. Assert: Due to validation, a num is on the top of the stack. +#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c_1)` from the stack. -:math:`{{\mathrm{signed}}}_{N}(i)` -.................................. +#. Let :math:`c` be :math:`{{\mathit{relop}}}{{}_{t}}{(c_1, c_2)}`. +#. Push the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c)` to the stack. -1. If :math:`i < {2^{N - 1}}`, then: - a. Return :math:`i`. +:math:`t_2 {.} {{\mathit{cvtop}}}{\mathsf{\_}}{t_1}` +.................................................... -#. Assert: Due to validation, :math:`{2^{N - 1}} \leq i`. -#. Assert: Due to validation, :math:`i < {2^{N}}`. +1. Assert: Due to validation, a value of number type :math:`t_1` is on the top of the stack. -#. Return :math:`i - {2^{N}}`. +#. Pop the value :math:`({\mathit{valtype}}_0{.}\mathsf{const}~c_1)` from the stack. +#. If :math:`{{\mathit{cvtop}}}{{}_{t_1, t_2}}{(c_1)}` is empty, then: -:math:`{{{{\mathrm{signed}}}_{N}^{{-1}}}}{(i)}` -............................................... + a. Trap. +#. Let :math:`c` be an element of :math:`{{\mathit{cvtop}}}{{}_{t_1, t_2}}{(c_1)}`. -1. If :math:`0 \leq i` and :math:`i < {2^{N - 1}}`, then: +#. Push the value :math:`(t_2{.}\mathsf{const}~c)` to the stack. - a. Return :math:`i`. -#. Assert: Due to validation, :math:`{-{2^{N - 1}}} \leq i`. +:math:`\mathsf{local{.}tee}~x` +.............................. -#. Assert: Due to validation, :math:`i < 0`. -#. Return :math:`i + {2^{N}}`. +1. Assert: Due to validation, a value is on the top of the stack. +#. Pop the value :math:`{\mathit{val}}` from the stack. -:math:`{{\mathit{unop}}}{{}_{{\mathit{valtype}}}}{({\mathit{iN}})}` -................................................................... +#. Push the value :math:`{\mathit{val}}` to the stack. +#. Push the value :math:`{\mathit{val}}` to the stack. -1. If :math:`{\mathit{valtype}}` is :math:`{\mathsf{i}}{n}`, then: +#. Execute the instruction :math:`(\mathsf{local{.}set}~x)`. - a. If :math:`{\mathit{unop}} = \mathsf{clz}`, then: - 1) Return :math:`{{\mathrm{iclz}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. +:math:`\mathsf{block}~{t^?}~{{\mathit{instr}}^\ast}` +.................................................... - #. If :math:`{\mathit{unop}} = \mathsf{ctz}`, then: - 1) Return :math:`{{\mathrm{ictz}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. +1. Let :math:`n` be :math:`0`. - #. If :math:`{\mathit{unop}} = \mathsf{popcnt}`, then: +#. If :math:`{t^?}` is not defined, then: - 1) Return :math:`{{\mathrm{ipopcnt}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. + #. Let :math:`L` be the :math:`\mathsf{label}` whose arity is :math:`n` and whose continuation is the end of the block. -#. Assert: Due to validation, :math:`{\mathit{valtype}}` is :math:`{\mathsf{f}}{n}`. + a. Enter the block :math:`{{\mathit{instr}}^\ast}` with the :math:`\mathsf{label}` :math:`L`. -#. If :math:`{\mathit{unop}} = \mathsf{abs}`, then: +#. Let :math:`n` be :math:`1`. - a. Return :math:`{{\mathrm{fabs}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. +#. If :math:`{t^?} \neq \epsilon`, then: -#. If :math:`{\mathit{unop}} = \mathsf{neg}`, then: + #. Let :math:`L` be the :math:`\mathsf{label}` whose arity is :math:`n` and whose continuation is the end of the block. - a. Return :math:`{{\mathrm{fneg}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. + a. Enter the block :math:`{{\mathit{instr}}^\ast}` with the :math:`\mathsf{label}` :math:`L`. -#. If :math:`{\mathit{unop}} = \mathsf{sqrt}`, then: - a. Return :math:`{{\mathrm{fsqrt}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. +:math:`\mathsf{loop}~{t^?}~{{\mathit{instr}}^\ast}` +................................................... -#. If :math:`{\mathit{unop}} = \mathsf{ceil}`, then: - a. Return :math:`{{\mathrm{fceil}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. +#. Let :math:`L` be the :math:`\mathsf{label}` whose continuation is the start of the block. -#. If :math:`{\mathit{unop}} = \mathsf{floor}`, then: +1. Enter the block :math:`{{\mathit{instr}}^\ast}` with the :math:`\mathsf{label}` :math:`L`. - a. Return :math:`{{\mathrm{ffloor}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. -#. If :math:`{\mathit{unop}} = \mathsf{trunc}`, then: +:math:`\mathsf{call}~x` +....................... - a. Return :math:`{{\mathrm{ftrunc}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. -#. Assert: Due to validation, :math:`{\mathit{unop}} = \mathsf{nearest}`. +1. Let :math:`z` be the current state. -#. Return :math:`{{\mathrm{fnearest}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. +#. Assert: Due to validation, :math:`x < {|z{.}\mathsf{module}{.}\mathsf{funcs}|}`. +#. Execute the instruction :math:`(\mathsf{call}~z{.}\mathsf{module}{.}\mathsf{funcs}{}[x])`. -:math:`{{\mathrm{iadd}}}_{N}(i_1, i_2)` -....................................... +:math:`\mathsf{call\_indirect}~x` +................................. -1. Return :math:`(i_1 + i_2) \mathbin{\mathrm{mod}} ({2^{N}})`. +1. Let :math:`z` be the current state. -:math:`{{{{\mathrm{idiv}}}_{N}^{{\mathit{sx}}}}}{(i_1, i_2)}` -............................................................. +#. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. +#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)` from the stack. -1. If :math:`{\mathit{sx}} = \mathsf{u}`, then: +#. If :math:`i \geq {|z{.}\mathsf{tables}{}[0]{.}\mathsf{refs}|}`, then: - a. If :math:`i_2 = 0`, then: + a. Trap. - 1) Return :math:`\epsilon`. +#. If :math:`z{.}\mathsf{tables}{}[0]{.}\mathsf{refs}{}[i]` is not defined, then: - #. Return :math:`{\mathrm{truncz}}(i_1 / i_2)`. + a. Trap. -#. Assert: Due to validation, :math:`{\mathit{sx}} = \mathsf{s}`. +#. Let :math:`a` be :math:`z{.}\mathsf{tables}{}[0]{.}\mathsf{refs}{}[i]`. -#. If :math:`i_2 = 0`, then: +#. If :math:`a \geq {|z{.}\mathsf{funcs}|}`, then: - a. Return :math:`\epsilon`. + a. Trap. -#. If :math:`{{\mathrm{signed}}}_{N}(i_1) / {{\mathrm{signed}}}_{N}(i_2) = {2^{N - 1}}`, then: +#. If :math:`z{.}\mathsf{types}{}[x] \neq z{.}\mathsf{funcs}{}[a]{.}\mathsf{type}`, then: - a. Return :math:`\epsilon`. + a. Trap. -#. Return :math:`{{{{\mathrm{signed}}}_{N}^{{-1}}}}{({\mathrm{truncz}}({{\mathrm{signed}}}_{N}(i_1) / {{\mathrm{signed}}}_{N}(i_2)))}`. +#. Execute the instruction :math:`(\mathsf{call}~a)`. -:math:`{{\mathrm{imul}}}_{N}(i_1, i_2)` -....................................... +:math:`\mathsf{call}~a` +....................... -1. Return :math:`i_1 \cdot i_2 \mathbin{\mathrm{mod}} ({2^{N}})`. +1. Let :math:`z` be the current state. +#. Assert: Due to validation, :math:`a < {|z{.}\mathsf{funcs}|}`. -:math:`{{{{\mathrm{irem}}}_{N}^{{\mathit{sx}}}}}{(i_1, i_2)}` -............................................................. +#. Let :math:`\{ \mathsf{type}~{t_1^{k}}~\rightarrow~{t_2^{n}},\;\allowbreak \mathsf{module}~{\mathit{mm}},\;\allowbreak \mathsf{code}~{\mathit{func}} \}` be the destructuring of :math:`z{.}\mathsf{funcs}{}[a]`. +#. Let :math:`(\mathsf{func}~x~{{\mathit{local}}_0^\ast}~{{\mathit{instr}}^\ast})` be the destructuring of :math:`{\mathit{func}}`. -1. If :math:`{\mathit{sx}} = \mathsf{u}`, then: +#. Let :math:`{t^\ast}` be the number type sequence :math:`\epsilon`. - a. If :math:`i_2 = 0`, then: +#. For each :math:`{\mathit{local}}_0` in :math:`{{\mathit{local}}_0^\ast}`, do: - 1) Return :math:`\epsilon`. + a. Let :math:`(\mathsf{local}~t)` be the destructuring of :math:`{\mathit{local}}_0`. - #. Return :math:`i_1 - i_2 \cdot {\mathrm{truncz}}(i_1 / i_2)`. + #. Append :math:`t` to :math:`{t^\ast}`. -#. Assert: Due to validation, :math:`{\mathit{sx}} = \mathsf{s}`. +#. Assert: Due to validation, there are at least :math:`k` values on the top of the stack. -#. If :math:`i_2 = 0`, then: +#. Pop the values :math:`{{\mathit{val}}^{k}}` from the stack. - a. Return :math:`\epsilon`. +#. Let :math:`f` be the frame :math:`\{ \mathsf{locals}~{{\mathit{val}}^{k}}~{{{\mathrm{default}}}_{t}^\ast},\;\allowbreak \mathsf{module}~{\mathit{mm}} \}`. -#. Let :math:`j_1` be :math:`{{\mathrm{signed}}}_{N}(i_1)`. +#. Let :math:`{f'}` be the :math:`\mathsf{frame}` :math:`f` whose arity is :math:`n`. -#. Let :math:`j_2` be :math:`{{\mathrm{signed}}}_{N}(i_2)`. +#. Push the :math:`\mathsf{frame}` :math:`{f'}`. -#. Return :math:`{{{{\mathrm{signed}}}_{N}^{{-1}}}}{(j_1 - j_2 \cdot {\mathrm{truncz}}(j_1 / j_2))}`. +#. Let :math:`L` be the :math:`\mathsf{label}` whose arity is :math:`n` and whose continuation is the end of the block. +#. Enter the block :math:`{{\mathit{instr}}^\ast}` with the :math:`\mathsf{label}` :math:`L`. -:math:`{{\mathrm{isub}}}_{N}(i_1, i_2)` -....................................... +:math:`\mathsf{local{.}get}~x` +.............................. -1. Return :math:`({2^{N}} + i_1 - i_2) \mathbin{\mathrm{mod}} ({2^{N}})`. +1. Let :math:`z` be the current state. -:math:`{{\mathit{binop}}}{{}_{{\mathit{valtype}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}` -....................................................................................... +#. Push the value :math:`z{.}\mathsf{locals}{}[x]` to the stack. -1. If :math:`{\mathit{valtype}}` is :math:`{\mathsf{i}}{n}`, then: +:math:`\mathsf{global{.}get}~x` +............................... - a. If :math:`{\mathit{binop}} = \mathsf{add}`, then: - 1) Return :math:`{{\mathrm{iadd}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. +1. Let :math:`z` be the current state. - #. If :math:`{\mathit{binop}} = \mathsf{sub}`, then: +#. Push the value :math:`z{.}\mathsf{globals}{}[x]{.}\mathsf{value}` to the stack. - 1) Return :math:`{{\mathrm{isub}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. - #. If :math:`{\mathit{binop}} = \mathsf{mul}`, then: +:math:`{t{.}\mathsf{load}}{{{\mathit{loadop}}^?}}~{\mathit{ao}}` +................................................................ - 1) Return :math:`{{\mathrm{imul}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. - #. If :math:`{\mathit{binop}}` is some :math:`{\mathsf{div}}{{\mathit{sx}}}`, then: +1. Let :math:`z` be the current state. - 1) Let :math:`({\mathsf{div}}{{\mathit{sx}}})` be the destructuring of :math:`{\mathit{binop}}`. +#. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. - #) Return :math:`{{{{\mathrm{idiv}}}_{{|{\mathit{valtype}}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}`. +#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)` from the stack. - #. If :math:`{\mathit{binop}}` is some :math:`{\mathsf{rem}}{{\mathit{sx}}}`, then: +#. If :math:`{{\mathit{loadop}}^?}` is not defined, then: - 1) Let :math:`({\mathsf{rem}}{{\mathit{sx}}})` be the destructuring of :math:`{\mathit{binop}}`. + a. If :math:`i + {\mathit{ao}}{.}\mathsf{offset} + {|t|} / 8 > {|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|}`, then: - #) Return :math:`{{{{\mathrm{irem}}}_{{|{\mathit{valtype}}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}`. + 1) Trap. - #. If :math:`{\mathit{binop}} = \mathsf{and}`, then: + #. Let :math:`c` be the result for which :math:`{{\mathrm{bytes}}}_{t}(c)` :math:`=` :math:`z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {|t|} / 8]`. - 1) Return :math:`{{\mathrm{iand}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. + #. Push the value :math:`(t{.}\mathsf{const}~c)` to the stack. - #. If :math:`{\mathit{binop}} = \mathsf{or}`, then: +#. Else: - 1) Return :math:`{{\mathrm{ior}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. + a. Assert: Due to validation, :math:`t` is :math:`{\mathsf{i}}{n}`. - #. If :math:`{\mathit{binop}} = \mathsf{xor}`, then: + #. Let :math:`{\mathit{loadop}}_0` be :math:`{{\mathit{loadop}}^?}`. - 1) Return :math:`{{\mathrm{ixor}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. + #. Let :math:`{n}{\mathsf{\_}}{{\mathit{sx}}}` be the destructuring of :math:`{\mathit{loadop}}_0`. - #. If :math:`{\mathit{binop}} = \mathsf{shl}`, then: + #. If :math:`i + {\mathit{ao}}{.}\mathsf{offset} + n / 8 > {|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|}`, then: - 1) Return :math:`{{\mathrm{ishl}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. + 1) Trap. - #. If :math:`{\mathit{binop}}` is some :math:`{\mathsf{shr}}{{\mathit{sx}}}`, then: + #. Let :math:`c` be the result for which :math:`{{\mathrm{bytes}}}_{{\mathsf{i}}{n}}(c)` :math:`=` :math:`z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : n / 8]`. - 1) Let :math:`({\mathsf{shr}}{{\mathit{sx}}})` be the destructuring of :math:`{\mathit{binop}}`. + #. Push the value :math:`(t{.}\mathsf{const}~{{{{\mathrm{extend}}}_{n, {|t|}}^{{\mathit{sx}}}}}{(c)})` to the stack. - #) Return :math:`{{{{\mathrm{ishr}}}_{{|{\mathit{valtype}}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}`. - #. If :math:`{\mathit{binop}} = \mathsf{rotl}`, then: +:math:`\mathsf{memory{.}size}` +.............................. - 1) Return :math:`{{\mathrm{irotl}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. - #. If :math:`{\mathit{binop}} = \mathsf{rotr}`, then: +1. Let :math:`z` be the current state. - 1) Return :math:`{{\mathrm{irotr}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. +#. Let :math:`n \cdot 64 \cdot {\mathrm{Ki}}` be the length of :math:`z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}`. -#. Assert: Due to validation, :math:`{\mathit{valtype}}` is :math:`{\mathsf{f}}{n}`. +#. Push the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)` to the stack. -#. If :math:`{\mathit{binop}} = \mathsf{add}`, then: - a. Return :math:`{{\mathrm{fadd}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. +:math:`\mathsf{local{.}set}~x` +.............................. -#. If :math:`{\mathit{binop}} = \mathsf{sub}`, then: - a. Return :math:`{{\mathrm{fsub}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. +1. Let :math:`z` be the current state. -#. If :math:`{\mathit{binop}} = \mathsf{mul}`, then: +#. Assert: Due to validation, a value is on the top of the stack. - a. Return :math:`{{\mathrm{fmul}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. +#. Pop the value :math:`{\mathit{val}}` from the stack. -#. If :math:`{\mathit{binop}} = \mathsf{div}`, then: +#. Perform :math:`z{}[{.}\mathsf{locals}{}[x] = {\mathit{val}}]`. - a. Return :math:`{{\mathrm{fdiv}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. -#. If :math:`{\mathit{binop}} = \mathsf{min}`, then: +:math:`\mathsf{global{.}set}~x` +............................... - a. Return :math:`{{\mathrm{fmin}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. -#. If :math:`{\mathit{binop}} = \mathsf{max}`, then: +1. Let :math:`z` be the current state. - a. Return :math:`{{\mathrm{fmax}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. +#. Assert: Due to validation, a value is on the top of the stack. -#. Assert: Due to validation, :math:`{\mathit{binop}} = \mathsf{copysign}`. +#. Pop the value :math:`{\mathit{val}}` from the stack. -#. Return :math:`{{\mathrm{fcopysign}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. +#. Perform :math:`z{}[{.}\mathsf{globals}{}[x]{.}\mathsf{value} = {\mathit{val}}]`. -:math:`{{\mathrm{ieqz}}}_{N}(i_1)` -.................................. +:math:`{t{.}\mathsf{store}}{{{\mathit{sz}}^?}}~{\mathit{ao}}` +............................................................. -1. Return :math:`\mathbb{B}(i_1 = 0)`. +1. Let :math:`z` be the current state. +#. Assert: Due to validation, a num is on the top of the stack. -:math:`{\mathsf{eqz}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}})}` -............................................................. +#. Pop the value :math:`({t'}{.}\mathsf{const}~c)` from the stack. +#. Assert: Due to validation, a value is on the top of the stack. -1. Return :math:`{{\mathrm{ieqz}}}_{{|{\mathsf{i}}{n}|}}({\mathit{iN}})`. +#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)` from the stack. +#. Assert: Due to validation, :math:`t = {t'}`. -:math:`{{\mathrm{ieq}}}_{N}(i_1, i_2)` -...................................... +#. If :math:`{{\mathit{sz}}^?}` is not defined, then: + a. If :math:`i + {\mathit{ao}}{.}\mathsf{offset} + {|{t'}|} / 8 > {|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|}`, then: -1. Return :math:`\mathbb{B}(i_1 = i_2)`. + 1) Trap. + #. Let :math:`{b^\ast}` be :math:`{{\mathrm{bytes}}}_{{t'}}(c)`. -:math:`{{{{\mathrm{ige}}}_{N}^{{\mathit{sx}}}}}{(i_1, i_2)}` -............................................................ + #. Perform :math:`z{}[{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : {|{t'}|} / 8] = {b^\ast}]`. +#. Else: -1. If :math:`{\mathit{sx}} = \mathsf{u}`, then: + a. Assert: Due to validation, :math:`{t'}` is :math:`{\mathsf{i}}{n}`. - a. Return :math:`\mathbb{B}(i_1 \geq i_2)`. + #. Let :math:`n` be :math:`{{\mathit{sz}}^?}`. -#. Assert: Due to validation, :math:`{\mathit{sx}} = \mathsf{s}`. + #. If :math:`i + {\mathit{ao}}{.}\mathsf{offset} + n / 8 > {|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|}`, then: -#. Return :math:`\mathbb{B}({{\mathrm{signed}}}_{N}(i_1) \geq {{\mathrm{signed}}}_{N}(i_2))`. + 1) Trap. + #. Let :math:`{b^\ast}` be :math:`{{\mathrm{bytes}}}_{{\mathsf{i}}{n}}({{\mathrm{wrap}}}_{{|{t'}|}, n}(c))`. -:math:`{{{{\mathrm{igt}}}_{N}^{{\mathit{sx}}}}}{(i_1, i_2)}` -............................................................ + #. Perform :math:`z{}[{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : n / 8] = {b^\ast}]`. -1. If :math:`{\mathit{sx}} = \mathsf{u}`, then: +:math:`\mathsf{memory{.}grow}` +.............................. - a. Return :math:`\mathbb{B}(i_1 > i_2)`. -#. Assert: Due to validation, :math:`{\mathit{sx}} = \mathsf{s}`. +1. Let :math:`z` be the current state. -#. Return :math:`\mathbb{B}({{\mathrm{signed}}}_{N}(i_1) > {{\mathrm{signed}}}_{N}(i_2))`. +#. Assert: Due to validation, a value of number type :math:`\mathsf{i{\scriptstyle 32}}` is on the top of the stack. +#. Pop the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)` from the stack. -:math:`{{{{\mathrm{ile}}}_{N}^{{\mathit{sx}}}}}{(i_1, i_2)}` -............................................................ +#. Either: + a. Let :math:`{\mathit{mi}}` be the memory instance :math:`{\mathrm{growmemory}}(z{.}\mathsf{mems}{}[0], n)`. -1. If :math:`{\mathit{sx}} = \mathsf{u}`, then: + #. Push the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~{|z{.}\mathsf{mems}{}[0]{.}\mathsf{bytes}|} / (64 \, {\mathrm{Ki}}))` to the stack. - a. Return :math:`\mathbb{B}(i_1 \leq i_2)`. + #. Perform :math:`z{}[{.}\mathsf{mems}{}[0] = {\mathit{mi}}]`. -#. Assert: Due to validation, :math:`{\mathit{sx}} = \mathsf{s}`. +#. Or: -#. Return :math:`\mathbb{B}({{\mathrm{signed}}}_{N}(i_1) \leq {{\mathrm{signed}}}_{N}(i_2))`. + a. Push the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~{{{{\mathrm{signed}}}_{32}^{{-1}}}}{({-1})})` to the stack. -:math:`{{{{\mathrm{ilt}}}_{N}^{{\mathit{sx}}}}}{(i_1, i_2)}` -............................................................ +:math:`{\mathrm{Ki}}` +..................... -1. If :math:`{\mathit{sx}} = \mathsf{u}`, then: +1. Return :math:`1024`. - a. Return :math:`\mathbb{B}(i_1 < i_2)`. -#. Assert: Due to validation, :math:`{\mathit{sx}} = \mathsf{s}`. +:math:`{\mathrm{min}}(i, j)` +............................ -#. Return :math:`\mathbb{B}({{\mathrm{signed}}}_{N}(i_1) < {{\mathrm{signed}}}_{N}(i_2))`. +1. If :math:`i \leq j`, then: -:math:`{{\mathrm{ine}}}_{N}(i_1, i_2)` -...................................... + a. Return :math:`i`. +#. Return :math:`j`. -1. Return :math:`\mathbb{B}(i_1 \neq i_2)`. +:math:`{\mathrm{sum}}({{n''}^\ast})` +.................................... -:math:`{{\mathit{relop}}}{{}_{{\mathit{valtype}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}` -....................................................................................... +1. If :math:`{{n''}^\ast} = \epsilon`, then: -1. If :math:`{\mathit{valtype}}` is :math:`{\mathsf{i}}{n}`, then: + a. Return :math:`0`. - a. If :math:`{\mathit{relop}} = \mathsf{eq}`, then: +#. Let :math:`n~{{n'}^\ast}` be :math:`{{n''}^\ast}`. - 1) Return :math:`{{\mathrm{ieq}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. +#. Return :math:`n + {\mathrm{sum}}({{n'}^\ast})`. - #. If :math:`{\mathit{relop}} = \mathsf{ne}`, then: - 1) Return :math:`{{\mathrm{ine}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. +:math:`{X^\ast}` +................ - #. If :math:`{\mathit{relop}}` is some :math:`{\mathsf{lt}}{{\mathit{sx}}}`, then: - 1) Let :math:`({\mathsf{lt}}{{\mathit{sx}}})` be the destructuring of :math:`{\mathit{relop}}`. +1. If :math:`{X^\ast} = \epsilon`, then: - #) Return :math:`{{{{\mathrm{ilt}}}_{{|{\mathit{valtype}}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}`. + a. Return :math:`\epsilon`. - #. If :math:`{\mathit{relop}}` is some :math:`{\mathsf{gt}}{{\mathit{sx}}}`, then: +#. If :math:`{|{X^\ast}|} = 1`, then: - 1) Let :math:`({\mathsf{gt}}{{\mathit{sx}}})` be the destructuring of :math:`{\mathit{relop}}`. + a. Let :math:`w` be :math:`{X^\ast}`. - #) Return :math:`{{{{\mathrm{igt}}}_{{|{\mathit{valtype}}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}`. + #. Return :math:`w`. - #. If :math:`{\mathit{relop}}` is some :math:`{\mathsf{le}}{{\mathit{sx}}}`, then: +#. Fail. - 1) Let :math:`({\mathsf{le}}{{\mathit{sx}}})` be the destructuring of :math:`{\mathit{relop}}`. - #) Return :math:`{{{{\mathrm{ile}}}_{{|{\mathit{valtype}}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}`. +:math:`{X^?}` +............. - #. If :math:`{\mathit{relop}}` is some :math:`{\mathsf{ge}}{{\mathit{sx}}}`, then: - 1) Let :math:`({\mathsf{ge}}{{\mathit{sx}}})` be the destructuring of :math:`{\mathit{relop}}`. +1. If :math:`{X^?}` is not defined, then: - #) Return :math:`{{{{\mathrm{ige}}}_{{|{\mathit{valtype}}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}`. + a. Return :math:`\epsilon`. -#. Assert: Due to validation, :math:`{\mathit{valtype}}` is :math:`{\mathsf{f}}{n}`. +#. Let :math:`w` be :math:`{X^?}`. -#. If :math:`{\mathit{relop}} = \mathsf{eq}`, then: +#. Return :math:`w`. - a. Return :math:`{{\mathrm{feq}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. -#. If :math:`{\mathit{relop}} = \mathsf{ne}`, then: +:math:`{\mathrm{concat}}({X^\ast})` +................................... - a. Return :math:`{{\mathrm{fne}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. -#. If :math:`{\mathit{relop}} = \mathsf{lt}`, then: +1. If :math:`{X^\ast} = \epsilon`, then: - a. Return :math:`{{\mathrm{flt}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. + a. Return :math:`\epsilon`. -#. If :math:`{\mathit{relop}} = \mathsf{gt}`, then: +#. Let :math:`{w^\ast}~{{{w'}^\ast}^\ast}` be :math:`{X^\ast}`. - a. Return :math:`{{\mathrm{fgt}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. +#. Return :math:`{w^\ast}~{\mathrm{concat}}({{{w'}^\ast}^\ast})`. -#. If :math:`{\mathit{relop}} = \mathsf{le}`, then: - a. Return :math:`{{\mathrm{fle}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. +:math:`{X^\ast}~{\mathrm{disjoint}}` +.................................... -#. Assert: Due to validation, :math:`{\mathit{relop}} = \mathsf{ge}`. -#. Return :math:`{{\mathrm{fge}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. +1. If :math:`{X^\ast} = \epsilon`, then: + a. Return true. -:math:`{{\mathit{cvtop}}}{{}_{{\mathit{valtype}}, {\mathit{valtype}'}}}{({\mathit{iN}})}` -......................................................................................... +#. Let :math:`w~{{w'}^\ast}` be :math:`{X^\ast}`. +#. Return :math:`w` is not contained in :math:`{{w'}^\ast}` and :math:`{{w'}^\ast}~{\mathrm{disjoint}}`. -1. If :math:`{\mathit{cvtop}}` is some :math:`\mathsf{extend}~{\mathit{sx}}`, then: - a. Let :math:`(\mathsf{extend}~{\mathit{sx}})` be the destructuring of :math:`{\mathit{cvtop}}`. +:math:`{\mathrm{signif}}(N)` +............................ - #. If :math:`{\mathit{valtype}} = \mathsf{i{\scriptstyle 32}}` and :math:`{\mathit{valtype}'} = \mathsf{i{\scriptstyle 64}}`, then: - 1) Return :math:`{{{{\mathrm{extend}}}_{32, 64}^{{\mathit{sx}}}}}{({\mathit{iN}})}`. +1. If :math:`N = 32`, then: -#. If :math:`{\mathit{valtype}} = \mathsf{i{\scriptstyle 64}}` and :math:`{\mathit{valtype}'} = \mathsf{i{\scriptstyle 32}}` and :math:`{\mathit{cvtop}} = \mathsf{wrap}`, then: + a. Return :math:`23`. - a. Return :math:`{{\mathrm{wrap}}}_{64, 32}({\mathit{iN}})`. +#. If :math:`N = 64`, then: -#. If :math:`{\mathit{valtype}}` is :math:`{\mathsf{f}}{n}` and :math:`{\mathit{valtype}'}` is :math:`{\mathsf{i}}{n}` and :math:`{\mathit{cvtop}}` is some :math:`\mathsf{trunc}~{\mathit{sx}}`, then: + a. Return :math:`52`. - a. Let :math:`(\mathsf{trunc}~{\mathit{sx}})` be the destructuring of :math:`{\mathit{cvtop}}`. +#. Fail. - #. Return :math:`{{{{\mathrm{trunc}}}_{{|{\mathit{valtype}}|}, {|{\mathit{valtype}'}|}}^{{\mathit{sx}}}}}{({\mathit{iN}})}`. -#. If :math:`{\mathit{valtype}} = \mathsf{f{\scriptstyle 32}}` and :math:`{\mathit{valtype}'} = \mathsf{f{\scriptstyle 64}}` and :math:`{\mathit{cvtop}} = \mathsf{promote}`, then: +:math:`{\mathrm{expon}}(N)` +........................... - a. Return :math:`{{\mathrm{promote}}}_{32, 64}({\mathit{iN}})`. -#. If :math:`{\mathit{valtype}} = \mathsf{f{\scriptstyle 64}}` and :math:`{\mathit{valtype}'} = \mathsf{f{\scriptstyle 32}}` and :math:`{\mathit{cvtop}} = \mathsf{demote}`, then: +1. If :math:`N = 32`, then: - a. Return :math:`{{\mathrm{demote}}}_{64, 32}({\mathit{iN}})`. + a. Return :math:`8`. -#. If :math:`{\mathit{valtype}}` is :math:`{\mathsf{i}}{n}` and :math:`{\mathit{valtype}'}` is :math:`{\mathsf{f}}{n}`, then: +#. If :math:`N = 64`, then: - a. If :math:`{\mathit{cvtop}}` is some :math:`\mathsf{convert}~{\mathit{sx}}`, then: + a. Return :math:`11`. - 1) Let :math:`(\mathsf{convert}~{\mathit{sx}})` be the destructuring of :math:`{\mathit{cvtop}}`. +#. Fail. - #) Return :math:`{{{{\mathrm{convert}}}_{{|{\mathit{valtype}}|}, {|{\mathit{valtype}'}|}}^{{\mathit{sx}}}}}{({\mathit{iN}})}`. - #. If :math:`{\mathit{cvtop}} = \mathsf{reinterpret}` and :math:`{|{\mathit{valtype}}|} = {|{\mathit{valtype}'}|}`, then: +:math:`M` +......... - 1) Return :math:`{{\mathrm{reinterpret}}}_{{\mathit{valtype}}, {\mathit{valtype}'}}({\mathit{iN}})`. -#. Assert: Due to validation, :math:`{\mathit{valtype}}` is :math:`{\mathsf{f}}{n}`. +1. Return :math:`{\mathrm{signif}}(N)`. -#. Assert: Due to validation, :math:`{\mathit{valtype}'}` is :math:`{\mathsf{i}}{n}`. -#. Assert: Due to validation, :math:`{\mathit{cvtop}} = \mathsf{reinterpret}`. +:math:`E` +......... -#. Assert: Due to validation, :math:`{|{\mathit{valtype}'}|} = {|{\mathit{valtype}}|}`. -#. Return :math:`{{\mathrm{reinterpret}}}_{{\mathit{valtype}}, {\mathit{valtype}'}}({\mathit{iN}})`. +1. Return :math:`{\mathrm{expon}}(N)`. -:math:`{{\mathrm{inez}}}_{N}(i_1)` -.................................. +:math:`{+0}` +............ -1. Return :math:`\mathbb{B}(i_1 \neq 0)`. +1. Return :math:`({+((0 + 0 \cdot {2^{{-M}}}) \cdot {2^{e}})})`. -:math:`{{\mathrm{default}}}_{{\mathit{valtype}}}` -................................................. +:math:`{+1}` +............ + + +1. Return :math:`({+((1 + 1 \cdot {2^{{-M}}}) \cdot {2^{0}})})`. + + +:math:`{{\mathrm{canon}}}_{N}` +.............................. + + +1. Return :math:`{2^{{\mathrm{signif}}(N) - 1}}`. + + +:math:`{|{\mathit{valtype}}|}` +.............................. 1. If :math:`{\mathit{valtype}} = \mathsf{i{\scriptstyle 32}}`, then: - a. Return :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~0)`. + a. Return :math:`32`. #. If :math:`{\mathit{valtype}} = \mathsf{i{\scriptstyle 64}}`, then: - a. Return :math:`(\mathsf{i{\scriptstyle 64}}{.}\mathsf{const}~0)`. + a. Return :math:`64`. #. If :math:`{\mathit{valtype}} = \mathsf{f{\scriptstyle 32}}`, then: - a. Return :math:`(\mathsf{f{\scriptstyle 32}}{.}\mathsf{const}~{+0})`. + a. Return :math:`32`. #. Assert: Due to validation, :math:`{\mathit{valtype}} = \mathsf{f{\scriptstyle 64}}`. -#. Return :math:`(\mathsf{f{\scriptstyle 64}}{.}\mathsf{const}~{+0})`. +#. Return :math:`64`. -:math:`{\mathrm{funcs}}({{\mathit{externaddr}'}^\ast})` +:math:`{\mathrm{funcs}}({{\mathit{externtype}'}^\ast})` ....................................................... -1. If :math:`{{\mathit{externaddr}'}^\ast} = \epsilon`, then: +1. If :math:`{{\mathit{externtype}'}^\ast} = \epsilon`, then: a. Return :math:`\epsilon`. -#. Let :math:`{\mathit{externaddr}}_0~{{\mathit{xv}}^\ast}` be :math:`{{\mathit{externaddr}'}^\ast}`. +#. Let :math:`{\mathit{externtype}}_0~{{\mathit{xt}}^\ast}` be :math:`{{\mathit{externtype}'}^\ast}`. -#. If :math:`{\mathit{externaddr}}_0` is some :math:`\mathsf{func}~{\mathit{funcaddr}}`, then: +#. If :math:`{\mathit{externtype}}_0` is some :math:`\mathsf{func}~{\mathit{functype}}`, then: - a. Let :math:`(\mathsf{func}~{\mathit{fa}})` be the destructuring of :math:`{\mathit{externaddr}}_0`. + a. Let :math:`(\mathsf{func}~{\mathit{ft}})` be the destructuring of :math:`{\mathit{externtype}}_0`. - #. Return :math:`{\mathit{fa}}~{\mathrm{funcs}}({{\mathit{xv}}^\ast})`. + #. Return :math:`{\mathit{ft}}~{\mathrm{funcs}}({{\mathit{xt}}^\ast})`. -#. Let :math:`{\mathit{externaddr}}~{{\mathit{xv}}^\ast}` be :math:`{{\mathit{externaddr}'}^\ast}`. +#. Let :math:`{\mathit{externtype}}~{{\mathit{xt}}^\ast}` be :math:`{{\mathit{externtype}'}^\ast}`. -#. Return :math:`{\mathrm{funcs}}({{\mathit{xv}}^\ast})`. +#. Return :math:`{\mathrm{funcs}}({{\mathit{xt}}^\ast})`. -:math:`{\mathrm{globals}}({{\mathit{externaddr}'}^\ast})` +:math:`{\mathrm{globals}}({{\mathit{externtype}'}^\ast})` ......................................................... -1. If :math:`{{\mathit{externaddr}'}^\ast} = \epsilon`, then: +1. If :math:`{{\mathit{externtype}'}^\ast} = \epsilon`, then: a. Return :math:`\epsilon`. -#. Let :math:`{\mathit{externaddr}}_0~{{\mathit{xv}}^\ast}` be :math:`{{\mathit{externaddr}'}^\ast}`. +#. Let :math:`{\mathit{externtype}}_0~{{\mathit{xt}}^\ast}` be :math:`{{\mathit{externtype}'}^\ast}`. -#. If :math:`{\mathit{externaddr}}_0` is some :math:`\mathsf{global}~{\mathit{globaladdr}}`, then: +#. If :math:`{\mathit{externtype}}_0` is some :math:`\mathsf{global}~{\mathit{globaltype}}`, then: - a. Let :math:`(\mathsf{global}~{\mathit{ga}})` be the destructuring of :math:`{\mathit{externaddr}}_0`. + a. Let :math:`(\mathsf{global}~{\mathit{gt}})` be the destructuring of :math:`{\mathit{externtype}}_0`. - #. Return :math:`{\mathit{ga}}~{\mathrm{globals}}({{\mathit{xv}}^\ast})`. + #. Return :math:`{\mathit{gt}}~{\mathrm{globals}}({{\mathit{xt}}^\ast})`. -#. Let :math:`{\mathit{externaddr}}~{{\mathit{xv}}^\ast}` be :math:`{{\mathit{externaddr}'}^\ast}`. +#. Let :math:`{\mathit{externtype}}~{{\mathit{xt}}^\ast}` be :math:`{{\mathit{externtype}'}^\ast}`. -#. Return :math:`{\mathrm{globals}}({{\mathit{xv}}^\ast})`. +#. Return :math:`{\mathrm{globals}}({{\mathit{xt}}^\ast})`. -:math:`{\mathrm{tables}}({{\mathit{externaddr}'}^\ast})` +:math:`{\mathrm{tables}}({{\mathit{externtype}'}^\ast})` ........................................................ -1. If :math:`{{\mathit{externaddr}'}^\ast} = \epsilon`, then: +1. If :math:`{{\mathit{externtype}'}^\ast} = \epsilon`, then: a. Return :math:`\epsilon`. -#. Let :math:`{\mathit{externaddr}}_0~{{\mathit{xv}}^\ast}` be :math:`{{\mathit{externaddr}'}^\ast}`. +#. Let :math:`{\mathit{externtype}}_0~{{\mathit{xt}}^\ast}` be :math:`{{\mathit{externtype}'}^\ast}`. -#. If :math:`{\mathit{externaddr}}_0` is some :math:`\mathsf{table}~{\mathit{tableaddr}}`, then: +#. If :math:`{\mathit{externtype}}_0` is some :math:`\mathsf{table}~{\mathit{tabletype}}`, then: - a. Let :math:`(\mathsf{table}~{\mathit{ta}})` be the destructuring of :math:`{\mathit{externaddr}}_0`. + a. Let :math:`(\mathsf{table}~{\mathit{tt}})` be the destructuring of :math:`{\mathit{externtype}}_0`. - #. Return :math:`{\mathit{ta}}~{\mathrm{tables}}({{\mathit{xv}}^\ast})`. + #. Return :math:`{\mathit{tt}}~{\mathrm{tables}}({{\mathit{xt}}^\ast})`. -#. Let :math:`{\mathit{externaddr}}~{{\mathit{xv}}^\ast}` be :math:`{{\mathit{externaddr}'}^\ast}`. +#. Let :math:`{\mathit{externtype}}~{{\mathit{xt}}^\ast}` be :math:`{{\mathit{externtype}'}^\ast}`. -#. Return :math:`{\mathrm{tables}}({{\mathit{xv}}^\ast})`. +#. Return :math:`{\mathrm{tables}}({{\mathit{xt}}^\ast})`. -:math:`{\mathrm{mems}}({{\mathit{externaddr}'}^\ast})` +:math:`{\mathrm{mems}}({{\mathit{externtype}'}^\ast})` ...................................................... -1. If :math:`{{\mathit{externaddr}'}^\ast} = \epsilon`, then: +1. If :math:`{{\mathit{externtype}'}^\ast} = \epsilon`, then: a. Return :math:`\epsilon`. -#. Let :math:`{\mathit{externaddr}}_0~{{\mathit{xv}}^\ast}` be :math:`{{\mathit{externaddr}'}^\ast}`. +#. Let :math:`{\mathit{externtype}}_0~{{\mathit{xt}}^\ast}` be :math:`{{\mathit{externtype}'}^\ast}`. -#. If :math:`{\mathit{externaddr}}_0` is some :math:`\mathsf{mem}~{\mathit{memaddr}}`, then: +#. If :math:`{\mathit{externtype}}_0` is some :math:`\mathsf{mem}~{\mathit{memtype}}`, then: - a. Let :math:`(\mathsf{mem}~{\mathit{ma}})` be the destructuring of :math:`{\mathit{externaddr}}_0`. + a. Let :math:`(\mathsf{mem}~{\mathit{mt}})` be the destructuring of :math:`{\mathit{externtype}}_0`. - #. Return :math:`{\mathit{ma}}~{\mathrm{mems}}({{\mathit{xv}}^\ast})`. + #. Return :math:`{\mathit{mt}}~{\mathrm{mems}}({{\mathit{xt}}^\ast})`. -#. Let :math:`{\mathit{externaddr}}~{{\mathit{xv}}^\ast}` be :math:`{{\mathit{externaddr}'}^\ast}`. +#. Let :math:`{\mathit{externtype}}~{{\mathit{xt}}^\ast}` be :math:`{{\mathit{externtype}'}^\ast}`. -#. Return :math:`{\mathrm{mems}}({{\mathit{xv}}^\ast})`. +#. Return :math:`{\mathrm{mems}}({{\mathit{xt}}^\ast})`. -:math:`(s, f){.}\mathsf{store}` -............................... -1. Return. -:math:`(s, f){.}\mathsf{frame}` -............................... +1. Return :math:`\{ \mathsf{align}~0,\;\allowbreak \mathsf{offset}~0 \}`. -1. Return :math:`f`. +:math:`\mathbb{B}(b)` +..................... -:math:`(s, f){.}\mathsf{module}{.}\mathsf{funcs}` -................................................. +1. If :math:`b` is false, then: + a. Return :math:`0`. -1. Return :math:`f{.}\mathsf{module}{.}\mathsf{funcs}`. +#. Assert: Due to validation, :math:`b` is true. +#. Return :math:`1`. -:math:`(s, f){.}\mathsf{funcs}` -............................... +:math:`{{\mathrm{signed}}}_{N}(i)` +.................................. -1. Return :math:`s{.}\mathsf{funcs}`. +1. If :math:`i < {2^{N - 1}}`, then: -:math:`(s, f){.}\mathsf{globals}` -................................. + a. Return :math:`i`. +#. Assert: Due to validation, :math:`{2^{N - 1}} \leq i`. -1. Return :math:`s{.}\mathsf{globals}`. +#. Assert: Due to validation, :math:`i < {2^{N}}`. +#. Return :math:`i - {2^{N}}`. -:math:`(s, f){.}\mathsf{tables}` -................................ +:math:`{{{{\mathrm{signed}}}_{N}^{{-1}}}}{(i)}` +............................................... -1. Return :math:`s{.}\mathsf{tables}`. +1. If :math:`0 \leq i` and :math:`i < {2^{N - 1}}`, then: -:math:`(s, f){.}\mathsf{mems}` -.............................. + a. Return :math:`i`. +#. Assert: Due to validation, :math:`{-{2^{N - 1}}} \leq i`. -1. Return :math:`s{.}\mathsf{mems}`. +#. Assert: Due to validation, :math:`i < 0`. +#. Return :math:`i + {2^{N}}`. -:math:`(s, f){.}\mathsf{module}` -................................ +:math:`{{\mathit{unop}}}{{}_{{\mathit{valtype}}}}{({\mathit{iN}})}` +................................................................... -1. Return :math:`f{.}\mathsf{module}`. +1. If :math:`{\mathit{valtype}}` is :math:`{\mathsf{i}}{n}`, then: -:math:`(s, f){.}\mathsf{types}{}[x]` -.................................... + a. If :math:`{\mathit{unop}} = \mathsf{clz}`, then: + 1) Return :math:`{{\mathrm{iclz}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. -1. Return :math:`f{.}\mathsf{module}{.}\mathsf{types}{}[x]`. + #. If :math:`{\mathit{unop}} = \mathsf{ctz}`, then: + 1) Return :math:`{{\mathrm{ictz}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. -:math:`(s, f){.}\mathsf{funcs}{}[x]` -.................................... + #. If :math:`{\mathit{unop}} = \mathsf{popcnt}`, then: + 1) Return :math:`{{\mathrm{ipopcnt}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. -1. Return :math:`s{.}\mathsf{funcs}{}[f{.}\mathsf{module}{.}\mathsf{funcs}{}[x]]`. +#. Assert: Due to validation, :math:`{\mathit{valtype}}` is :math:`{\mathsf{f}}{n}`. +#. If :math:`{\mathit{unop}} = \mathsf{abs}`, then: -:math:`(s, f){.}\mathsf{globals}{}[x]` -...................................... + a. Return :math:`{{\mathrm{fabs}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. +#. If :math:`{\mathit{unop}} = \mathsf{neg}`, then: -1. Return :math:`s{.}\mathsf{globals}{}[f{.}\mathsf{module}{.}\mathsf{globals}{}[x]]`. + a. Return :math:`{{\mathrm{fneg}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. +#. If :math:`{\mathit{unop}} = \mathsf{sqrt}`, then: -:math:`(s, f){.}\mathsf{tables}{}[x]` -..................................... + a. Return :math:`{{\mathrm{fsqrt}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. +#. If :math:`{\mathit{unop}} = \mathsf{ceil}`, then: -1. Return :math:`s{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]]`. + a. Return :math:`{{\mathrm{fceil}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. +#. If :math:`{\mathit{unop}} = \mathsf{floor}`, then: -:math:`(s, f){.}\mathsf{mems}{}[x]` -................................... + a. Return :math:`{{\mathrm{ffloor}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. +#. If :math:`{\mathit{unop}} = \mathsf{trunc}`, then: -1. Return :math:`s{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]]`. + a. Return :math:`{{\mathrm{ftrunc}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. +#. Assert: Due to validation, :math:`{\mathit{unop}} = \mathsf{nearest}`. -:math:`(s, f){.}\mathsf{locals}{}[x]` -..................................... +#. Return :math:`{{\mathrm{fnearest}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}})`. -1. Return :math:`f{.}\mathsf{locals}{}[x]`. +:math:`{{\mathrm{iadd}}}_{N}(i_1, i_2)` +....................................... -:math:`(s, f){}[{.}\mathsf{locals}{}[x] = v]` -............................................. +1. Return :math:`(i_1 + i_2) \mathbin{\mathrm{mod}} ({2^{N}})`. -1. Replace :math:`f{.}\mathsf{locals}{}[x]` with :math:`v`. +:math:`{{{{\mathrm{idiv}}}_{N}^{{\mathit{sx}}}}}{(i_1, i_2)}` +............................................................. -:math:`(s, f){}[{.}\mathsf{globals}{}[x]{.}\mathsf{value} = v]` -............................................................... +1. If :math:`{\mathit{sx}} = \mathsf{u}`, then: + a. If :math:`i_2 = 0`, then: -1. Replace :math:`s{.}\mathsf{globals}{}[f{.}\mathsf{module}{.}\mathsf{globals}{}[x]]{.}\mathsf{value}` with :math:`v`. + 1) Return :math:`\epsilon`. + #. Return :math:`{\mathrm{truncz}}(i_1 / i_2)`. -:math:`(s, f){}[{.}\mathsf{tables}{}[x]{.}\mathsf{refs}{}[i] = a]` -.................................................................. +#. Assert: Due to validation, :math:`{\mathit{sx}} = \mathsf{s}`. +#. If :math:`i_2 = 0`, then: -1. Replace :math:`s{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]]{.}\mathsf{refs}{}[i]` with :math:`a`. + a. Return :math:`\epsilon`. +#. If :math:`{{\mathrm{signed}}}_{N}(i_1) / {{\mathrm{signed}}}_{N}(i_2) = {2^{N - 1}}`, then: -:math:`(s, f){}[{.}\mathsf{tables}{}[x] = {\mathit{ti}}]` -......................................................... + a. Return :math:`\epsilon`. +#. Return :math:`{{{{\mathrm{signed}}}_{N}^{{-1}}}}{({\mathrm{truncz}}({{\mathrm{signed}}}_{N}(i_1) / {{\mathrm{signed}}}_{N}(i_2)))}`. -1. Replace :math:`s{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]]` with :math:`{\mathit{ti}}`. +:math:`{{\mathrm{imul}}}_{N}(i_1, i_2)` +....................................... -:math:`(s, f){}[{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i : j] = {b^\ast}]` -............................................................................ +1. Return :math:`i_1 \cdot i_2 \mathbin{\mathrm{mod}} ({2^{N}})`. -1. Replace :math:`s{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]]{.}\mathsf{bytes}{}[i : j]` with :math:`{b^\ast}`. +:math:`{{{{\mathrm{irem}}}_{N}^{{\mathit{sx}}}}}{(i_1, i_2)}` +............................................................. -:math:`(s, f){}[{.}\mathsf{mems}{}[x] = {\mathit{mi}}]` -....................................................... +1. If :math:`{\mathit{sx}} = \mathsf{u}`, then: -1. Replace :math:`s{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]]` with :math:`{\mathit{mi}}`. + a. If :math:`i_2 = 0`, then: + 1) Return :math:`\epsilon`. -:math:`{\mathrm{growtable}}({\mathit{ti}}, n)` -.............................................. + #. Return :math:`i_1 - i_2 \cdot {\mathrm{truncz}}(i_1 / i_2)`. +#. Assert: Due to validation, :math:`{\mathit{sx}} = \mathsf{s}`. -1. Let :math:`\{ \mathsf{type}~{}[ i .. {j^?} ],\;\allowbreak \mathsf{refs}~{a^\ast} \}` be the destructuring of :math:`{\mathit{ti}}`. +#. If :math:`i_2 = 0`, then: -#. Let :math:`{i'}` be :math:`{|{a^\ast}|} + n`. + a. Return :math:`\epsilon`. -#. If :math:`{({i'} \leq j)^?}`, then: +#. Let :math:`j_1` be :math:`{{\mathrm{signed}}}_{N}(i_1)`. - a. Let :math:`{\mathit{ti}'}` be the table instance :math:`\{ \mathsf{type}~{}[ {i'} .. {j^?} ],\;\allowbreak \mathsf{refs}~{a^\ast}~{\epsilon^{n}} \}`. +#. Let :math:`j_2` be :math:`{{\mathrm{signed}}}_{N}(i_2)`. - #. Return :math:`{\mathit{ti}'}`. +#. Return :math:`{{{{\mathrm{signed}}}_{N}^{{-1}}}}{(j_1 - j_2 \cdot {\mathrm{truncz}}(j_1 / j_2))}`. -#. Fail. +:math:`{{\mathrm{isub}}}_{N}(i_1, i_2)` +....................................... -:math:`{\mathrm{growmemory}}({\mathit{mi}}, n)` -............................................... +1. Return :math:`({2^{N}} + i_1 - i_2) \mathbin{\mathrm{mod}} ({2^{N}})`. -1. Let :math:`\{ \mathsf{type}~{}[ i .. {j^?} ],\;\allowbreak \mathsf{bytes}~{b^\ast} \}` be the destructuring of :math:`{\mathit{mi}}`. -#. Let :math:`{i'}` be :math:`{|{b^\ast}|} / (64 \, {\mathrm{Ki}}) + n`. +:math:`{{\mathit{binop}}}{{}_{{\mathit{valtype}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}` +....................................................................................... -#. If :math:`{({i'} \leq j)^?}`, then: - a. Let :math:`{\mathit{mi}'}` be the memory instance :math:`\{ \mathsf{type}~{}[ {i'} .. {j^?} ],\;\allowbreak \mathsf{bytes}~{b^\ast}~{\mathtt{0x00}^{n \cdot 64 \, {\mathrm{Ki}}}} \}`. +1. If :math:`{\mathit{valtype}}` is :math:`{\mathsf{i}}{n}`, then: - #. Return :math:`{\mathit{mi}'}`. + a. If :math:`{\mathit{binop}} = \mathsf{add}`, then: -#. Fail. + 1) Return :math:`{{\mathrm{iadd}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. + #. If :math:`{\mathit{binop}} = \mathsf{sub}`, then: -:math:`{\mathrm{funcs}}({{\mathit{externaddr}''}^\ast})` -........................................................ + 1) Return :math:`{{\mathrm{isub}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. + #. If :math:`{\mathit{binop}} = \mathsf{mul}`, then: -1. If :math:`{{\mathit{externaddr}''}^\ast} = \epsilon`, then: + 1) Return :math:`{{\mathrm{imul}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. - a. Return :math:`\epsilon`. + #. If :math:`{\mathit{binop}}` is some :math:`{\mathsf{div}}{{\mathit{sx}}}`, then: -#. Let :math:`{\mathit{externaddr}}_0~{{\mathit{externaddr}'}^\ast}` be :math:`{{\mathit{externaddr}''}^\ast}`. + 1) Let :math:`({\mathsf{div}}{{\mathit{sx}}})` be the destructuring of :math:`{\mathit{binop}}`. -#. If :math:`{\mathit{externaddr}}_0` is some :math:`\mathsf{func}~{\mathit{funcaddr}}`, then: + #) Return :math:`{{{{\mathrm{idiv}}}_{{|{\mathit{valtype}}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}`. - a. Let :math:`(\mathsf{func}~{\mathit{fa}})` be the destructuring of :math:`{\mathit{externaddr}}_0`. + #. If :math:`{\mathit{binop}}` is some :math:`{\mathsf{rem}}{{\mathit{sx}}}`, then: - #. Return :math:`{\mathit{fa}}~{\mathrm{funcs}}({{\mathit{externaddr}'}^\ast})`. + 1) Let :math:`({\mathsf{rem}}{{\mathit{sx}}})` be the destructuring of :math:`{\mathit{binop}}`. -#. Let :math:`{\mathit{externaddr}}~{{\mathit{externaddr}'}^\ast}` be :math:`{{\mathit{externaddr}''}^\ast}`. + #) Return :math:`{{{{\mathrm{irem}}}_{{|{\mathit{valtype}}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}`. -#. Return :math:`{\mathrm{funcs}}({{\mathit{externaddr}'}^\ast})`. + #. If :math:`{\mathit{binop}} = \mathsf{and}`, then: + 1) Return :math:`{{\mathrm{iand}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. -:math:`{\mathrm{globals}}({{\mathit{externaddr}''}^\ast})` -.......................................................... + #. If :math:`{\mathit{binop}} = \mathsf{or}`, then: + 1) Return :math:`{{\mathrm{ior}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. -1. If :math:`{{\mathit{externaddr}''}^\ast} = \epsilon`, then: + #. If :math:`{\mathit{binop}} = \mathsf{xor}`, then: - a. Return :math:`\epsilon`. + 1) Return :math:`{{\mathrm{ixor}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. -#. Let :math:`{\mathit{externaddr}}_0~{{\mathit{externaddr}'}^\ast}` be :math:`{{\mathit{externaddr}''}^\ast}`. + #. If :math:`{\mathit{binop}} = \mathsf{shl}`, then: -#. If :math:`{\mathit{externaddr}}_0` is some :math:`\mathsf{global}~{\mathit{globaladdr}}`, then: + 1) Return :math:`{{\mathrm{ishl}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. - a. Let :math:`(\mathsf{global}~{\mathit{ga}})` be the destructuring of :math:`{\mathit{externaddr}}_0`. + #. If :math:`{\mathit{binop}}` is some :math:`{\mathsf{shr}}{{\mathit{sx}}}`, then: - #. Return :math:`{\mathit{ga}}~{\mathrm{globals}}({{\mathit{externaddr}'}^\ast})`. + 1) Let :math:`({\mathsf{shr}}{{\mathit{sx}}})` be the destructuring of :math:`{\mathit{binop}}`. -#. Let :math:`{\mathit{externaddr}}~{{\mathit{externaddr}'}^\ast}` be :math:`{{\mathit{externaddr}''}^\ast}`. + #) Return :math:`{{{{\mathrm{ishr}}}_{{|{\mathit{valtype}}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}`. -#. Return :math:`{\mathrm{globals}}({{\mathit{externaddr}'}^\ast})`. + #. If :math:`{\mathit{binop}} = \mathsf{rotl}`, then: + 1) Return :math:`{{\mathrm{irotl}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. -:math:`{\mathrm{tables}}({{\mathit{externaddr}''}^\ast})` -......................................................... + #. If :math:`{\mathit{binop}} = \mathsf{rotr}`, then: + 1) Return :math:`{{\mathrm{irotr}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. -1. If :math:`{{\mathit{externaddr}''}^\ast} = \epsilon`, then: +#. Assert: Due to validation, :math:`{\mathit{valtype}}` is :math:`{\mathsf{f}}{n}`. - a. Return :math:`\epsilon`. +#. If :math:`{\mathit{binop}} = \mathsf{add}`, then: -#. Let :math:`{\mathit{externaddr}}_0~{{\mathit{externaddr}'}^\ast}` be :math:`{{\mathit{externaddr}''}^\ast}`. + a. Return :math:`{{\mathrm{fadd}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. -#. If :math:`{\mathit{externaddr}}_0` is some :math:`\mathsf{table}~{\mathit{tableaddr}}`, then: +#. If :math:`{\mathit{binop}} = \mathsf{sub}`, then: - a. Let :math:`(\mathsf{table}~{\mathit{ta}})` be the destructuring of :math:`{\mathit{externaddr}}_0`. + a. Return :math:`{{\mathrm{fsub}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. - #. Return :math:`{\mathit{ta}}~{\mathrm{tables}}({{\mathit{externaddr}'}^\ast})`. +#. If :math:`{\mathit{binop}} = \mathsf{mul}`, then: -#. Let :math:`{\mathit{externaddr}}~{{\mathit{externaddr}'}^\ast}` be :math:`{{\mathit{externaddr}''}^\ast}`. + a. Return :math:`{{\mathrm{fmul}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. -#. Return :math:`{\mathrm{tables}}({{\mathit{externaddr}'}^\ast})`. +#. If :math:`{\mathit{binop}} = \mathsf{div}`, then: + a. Return :math:`{{\mathrm{fdiv}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. -:math:`{\mathrm{mems}}({{\mathit{externaddr}''}^\ast})` -....................................................... +#. If :math:`{\mathit{binop}} = \mathsf{min}`, then: + a. Return :math:`{{\mathrm{fmin}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. -1. If :math:`{{\mathit{externaddr}''}^\ast} = \epsilon`, then: +#. If :math:`{\mathit{binop}} = \mathsf{max}`, then: - a. Return :math:`\epsilon`. + a. Return :math:`{{\mathrm{fmax}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. -#. Let :math:`{\mathit{externaddr}}_0~{{\mathit{externaddr}'}^\ast}` be :math:`{{\mathit{externaddr}''}^\ast}`. +#. Assert: Due to validation, :math:`{\mathit{binop}} = \mathsf{copysign}`. -#. If :math:`{\mathit{externaddr}}_0` is some :math:`\mathsf{mem}~{\mathit{memaddr}}`, then: +#. Return :math:`{{\mathrm{fcopysign}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. - a. Let :math:`(\mathsf{mem}~{\mathit{ma}})` be the destructuring of :math:`{\mathit{externaddr}}_0`. - #. Return :math:`{\mathit{ma}}~{\mathrm{mems}}({{\mathit{externaddr}'}^\ast})`. +:math:`{{\mathrm{ieqz}}}_{N}(i_1)` +.................................. -#. Let :math:`{\mathit{externaddr}}~{{\mathit{externaddr}'}^\ast}` be :math:`{{\mathit{externaddr}''}^\ast}`. -#. Return :math:`{\mathrm{mems}}({{\mathit{externaddr}'}^\ast})`. +1. Return :math:`\mathbb{B}(i_1 = 0)`. -:math:`{\mathrm{allocfunc}}(s, {\mathit{moduleinst}}, {\mathit{func}})` -....................................................................... +:math:`{\mathsf{eqz}}{{}_{{\mathsf{i}}{n}}}{({\mathit{iN}})}` +............................................................. -1. Let :math:`(\mathsf{func}~x~{{\mathit{local}}^\ast}~{\mathit{expr}})` be the destructuring of :math:`{\mathit{func}}`. +1. Return :math:`{{\mathrm{ieqz}}}_{{|{\mathsf{i}}{n}|}}({\mathit{iN}})`. -#. Let :math:`{\mathit{fi}}` be the function instance :math:`\{ \mathsf{type}~{\mathit{moduleinst}}{.}\mathsf{types}{}[x],\;\allowbreak \mathsf{module}~{\mathit{moduleinst}},\;\allowbreak \mathsf{code}~{\mathit{func}} \}`. -#. Let :math:`a` be the length of :math:`s{.}\mathsf{funcs}`. +:math:`{{\mathrm{ieq}}}_{N}(i_1, i_2)` +...................................... -#. Append :math:`{\mathit{fi}}` to :math:`s{.}\mathsf{funcs}`. -#. Return :math:`a`. +1. Return :math:`\mathbb{B}(i_1 = i_2)`. -:math:`{\mathrm{allocfuncs}}(s, {\mathit{moduleinst}}, {{\mathit{func}''}^\ast})` -................................................................................. +:math:`{{{{\mathrm{ige}}}_{N}^{{\mathit{sx}}}}}{(i_1, i_2)}` +............................................................ -1. If :math:`{{\mathit{func}''}^\ast} = \epsilon`, then: +1. If :math:`{\mathit{sx}} = \mathsf{u}`, then: - a. Return :math:`\epsilon`. + a. Return :math:`\mathbb{B}(i_1 \geq i_2)`. -#. Let :math:`{\mathit{func}}~{{\mathit{func}'}^\ast}` be :math:`{{\mathit{func}''}^\ast}`. +#. Assert: Due to validation, :math:`{\mathit{sx}} = \mathsf{s}`. -#. Let :math:`{\mathit{fa}}` be :math:`{\mathrm{allocfunc}}(s, {\mathit{moduleinst}}, {\mathit{func}})`. +#. Return :math:`\mathbb{B}({{\mathrm{signed}}}_{N}(i_1) \geq {{\mathrm{signed}}}_{N}(i_2))`. -#. Let :math:`{{\mathit{fa}'}^\ast}` be :math:`{\mathrm{allocfuncs}}(s, {\mathit{moduleinst}}, {{\mathit{func}'}^\ast})`. -#. Return :math:`{\mathit{fa}}~{{\mathit{fa}'}^\ast}`. +:math:`{{{{\mathrm{igt}}}_{N}^{{\mathit{sx}}}}}{(i_1, i_2)}` +............................................................ -:math:`{\mathrm{allocglobal}}(s, {\mathit{globaltype}}, {\mathit{val}})` -........................................................................ +1. If :math:`{\mathit{sx}} = \mathsf{u}`, then: + a. Return :math:`\mathbb{B}(i_1 > i_2)`. -1. Let :math:`{\mathit{gi}}` be the global instance :math:`\{ \mathsf{type}~{\mathit{globaltype}},\;\allowbreak \mathsf{value}~{\mathit{val}} \}`. +#. Assert: Due to validation, :math:`{\mathit{sx}} = \mathsf{s}`. -#. Let :math:`a` be the length of :math:`s{.}\mathsf{globals}`. +#. Return :math:`\mathbb{B}({{\mathrm{signed}}}_{N}(i_1) > {{\mathrm{signed}}}_{N}(i_2))`. -#. Append :math:`{\mathit{gi}}` to :math:`s{.}\mathsf{globals}`. -#. Return :math:`a`. +:math:`{{{{\mathrm{ile}}}_{N}^{{\mathit{sx}}}}}{(i_1, i_2)}` +............................................................ -:math:`{\mathrm{allocglobals}}(s, {{\mathit{globaltype}''}^\ast}, {{\mathit{val}''}^\ast})` -........................................................................................... +1. If :math:`{\mathit{sx}} = \mathsf{u}`, then: + a. Return :math:`\mathbb{B}(i_1 \leq i_2)`. -1. If :math:`{{\mathit{globaltype}''}^\ast} = \epsilon`, then: +#. Assert: Due to validation, :math:`{\mathit{sx}} = \mathsf{s}`. - a. Assert: :math:`{{\mathit{val}''}^\ast} = \epsilon`. +#. Return :math:`\mathbb{B}({{\mathrm{signed}}}_{N}(i_1) \leq {{\mathrm{signed}}}_{N}(i_2))`. - #. Return :math:`\epsilon`. -#. Else: +:math:`{{{{\mathrm{ilt}}}_{N}^{{\mathit{sx}}}}}{(i_1, i_2)}` +............................................................ - a. Let :math:`{\mathit{globaltype}}~{{\mathit{globaltype}'}^\ast}` be :math:`{{\mathit{globaltype}''}^\ast}`. - #. Assert: :math:`{|{{\mathit{val}''}^\ast}|} \geq 1`. +1. If :math:`{\mathit{sx}} = \mathsf{u}`, then: - #. Let :math:`{\mathit{val}}~{{\mathit{val}'}^\ast}` be :math:`{{\mathit{val}''}^\ast}`. + a. Return :math:`\mathbb{B}(i_1 < i_2)`. - #. Let :math:`{\mathit{ga}}` be :math:`{\mathrm{allocglobal}}(s, {\mathit{globaltype}}, {\mathit{val}})`. +#. Assert: Due to validation, :math:`{\mathit{sx}} = \mathsf{s}`. - #. Let :math:`{{\mathit{ga}'}^\ast}` be :math:`{\mathrm{allocglobals}}(s, {{\mathit{globaltype}'}^\ast}, {{\mathit{val}'}^\ast})`. +#. Return :math:`\mathbb{B}({{\mathrm{signed}}}_{N}(i_1) < {{\mathrm{signed}}}_{N}(i_2))`. - #. Return :math:`{\mathit{ga}}~{{\mathit{ga}'}^\ast}`. +:math:`{{\mathrm{ine}}}_{N}(i_1, i_2)` +...................................... -:math:`{\mathrm{alloctable}}(s, {}[ i .. {j^?} ])` -.................................................. +1. Return :math:`\mathbb{B}(i_1 \neq i_2)`. -1. Let :math:`{\mathit{ti}}` be the table instance :math:`\{ \mathsf{type}~{}[ i .. {j^?} ],\;\allowbreak \mathsf{refs}~{\epsilon^{i}} \}`. -#. Let :math:`a` be the length of :math:`s{.}\mathsf{tables}`. +:math:`{{\mathit{relop}}}{{}_{{\mathit{valtype}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}` +....................................................................................... -#. Append :math:`{\mathit{ti}}` to :math:`s{.}\mathsf{tables}`. -#. Return :math:`a`. +1. If :math:`{\mathit{valtype}}` is :math:`{\mathsf{i}}{n}`, then: + a. If :math:`{\mathit{relop}} = \mathsf{eq}`, then: -:math:`{\mathrm{alloctables}}(s, {{\mathit{tabletype}''}^\ast})` -................................................................ + 1) Return :math:`{{\mathrm{ieq}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. + #. If :math:`{\mathit{relop}} = \mathsf{ne}`, then: -1. If :math:`{{\mathit{tabletype}''}^\ast} = \epsilon`, then: + 1) Return :math:`{{\mathrm{ine}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. - a. Return :math:`\epsilon`. + #. If :math:`{\mathit{relop}}` is some :math:`{\mathsf{lt}}{{\mathit{sx}}}`, then: -#. Let :math:`{\mathit{tabletype}}~{{\mathit{tabletype}'}^\ast}` be :math:`{{\mathit{tabletype}''}^\ast}`. + 1) Let :math:`({\mathsf{lt}}{{\mathit{sx}}})` be the destructuring of :math:`{\mathit{relop}}`. -#. Let :math:`{\mathit{ta}}` be :math:`{\mathrm{alloctable}}(s, {\mathit{tabletype}})`. + #) Return :math:`{{{{\mathrm{ilt}}}_{{|{\mathit{valtype}}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}`. -#. Let :math:`{{\mathit{ta}'}^\ast}` be :math:`{\mathrm{alloctables}}(s, {{\mathit{tabletype}'}^\ast})`. + #. If :math:`{\mathit{relop}}` is some :math:`{\mathsf{gt}}{{\mathit{sx}}}`, then: -#. Return :math:`{\mathit{ta}}~{{\mathit{ta}'}^\ast}`. + 1) Let :math:`({\mathsf{gt}}{{\mathit{sx}}})` be the destructuring of :math:`{\mathit{relop}}`. + #) Return :math:`{{{{\mathrm{igt}}}_{{|{\mathit{valtype}}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}`. -:math:`{\mathrm{allocmem}}(s, {}[ i .. {j^?} ])` -................................................ + #. If :math:`{\mathit{relop}}` is some :math:`{\mathsf{le}}{{\mathit{sx}}}`, then: + 1) Let :math:`({\mathsf{le}}{{\mathit{sx}}})` be the destructuring of :math:`{\mathit{relop}}`. -1. Let :math:`{\mathit{mi}}` be the memory instance :math:`\{ \mathsf{type}~{}[ i .. {j^?} ],\;\allowbreak \mathsf{bytes}~{\mathtt{0x00}^{i \cdot 64 \, {\mathrm{Ki}}}} \}`. + #) Return :math:`{{{{\mathrm{ile}}}_{{|{\mathit{valtype}}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}`. -#. Let :math:`a` be the length of :math:`s{.}\mathsf{mems}`. + #. If :math:`{\mathit{relop}}` is some :math:`{\mathsf{ge}}{{\mathit{sx}}}`, then: -#. Append :math:`{\mathit{mi}}` to :math:`s{.}\mathsf{mems}`. + 1) Let :math:`({\mathsf{ge}}{{\mathit{sx}}})` be the destructuring of :math:`{\mathit{relop}}`. -#. Return :math:`a`. + #) Return :math:`{{{{\mathrm{ige}}}_{{|{\mathit{valtype}}|}}^{{\mathit{sx}}}}}{({\mathit{iN}}_1, {\mathit{iN}}_2)}`. +#. Assert: Due to validation, :math:`{\mathit{valtype}}` is :math:`{\mathsf{f}}{n}`. -:math:`{\mathrm{allocmems}}(s, {{\mathit{memtype}''}^\ast})` -............................................................ +#. If :math:`{\mathit{relop}} = \mathsf{eq}`, then: + a. Return :math:`{{\mathrm{feq}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. -1. If :math:`{{\mathit{memtype}''}^\ast} = \epsilon`, then: +#. If :math:`{\mathit{relop}} = \mathsf{ne}`, then: - a. Return :math:`\epsilon`. + a. Return :math:`{{\mathrm{fne}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. -#. Let :math:`{\mathit{memtype}}~{{\mathit{memtype}'}^\ast}` be :math:`{{\mathit{memtype}''}^\ast}`. +#. If :math:`{\mathit{relop}} = \mathsf{lt}`, then: -#. Let :math:`{\mathit{ma}}` be :math:`{\mathrm{allocmem}}(s, {\mathit{memtype}})`. + a. Return :math:`{{\mathrm{flt}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. -#. Let :math:`{{\mathit{ma}'}^\ast}` be :math:`{\mathrm{allocmems}}(s, {{\mathit{memtype}'}^\ast})`. +#. If :math:`{\mathit{relop}} = \mathsf{gt}`, then: -#. Return :math:`{\mathit{ma}}~{{\mathit{ma}'}^\ast}`. + a. Return :math:`{{\mathrm{fgt}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. +#. If :math:`{\mathit{relop}} = \mathsf{le}`, then: -:math:`{\mathrm{instexport}}({{\mathit{fa}}^\ast}, {{\mathit{ga}}^\ast}, {{\mathit{ta}}^\ast}, {{\mathit{ma}}^\ast}, \mathsf{export}~{\mathit{name}}~{\mathit{externidx}})` -........................................................................................................................................................................... + a. Return :math:`{{\mathrm{fle}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. +#. Assert: Due to validation, :math:`{\mathit{relop}} = \mathsf{ge}`. -1. If :math:`{\mathit{externidx}}` is some :math:`\mathsf{func}~{\mathit{funcidx}}`, then: +#. Return :math:`{{\mathrm{fge}}}_{{|{\mathit{valtype}}|}}({\mathit{iN}}_1, {\mathit{iN}}_2)`. - a. Let :math:`(\mathsf{func}~x)` be the destructuring of :math:`{\mathit{externidx}}`. - #. Return :math:`\{ \mathsf{name}~{\mathit{name}},\;\allowbreak \mathsf{addr}~(\mathsf{func}~{{\mathit{fa}}^\ast}{}[x]) \}`. +:math:`{{\mathit{cvtop}}}{{}_{{\mathit{valtype}}, {\mathit{valtype}'}}}{({\mathit{iN}})}` +......................................................................................... -#. If :math:`{\mathit{externidx}}` is some :math:`\mathsf{global}~{\mathit{globalidx}}`, then: - a. Let :math:`(\mathsf{global}~x)` be the destructuring of :math:`{\mathit{externidx}}`. +1. If :math:`{\mathit{cvtop}}` is some :math:`\mathsf{extend}~{\mathit{sx}}`, then: - #. Return :math:`\{ \mathsf{name}~{\mathit{name}},\;\allowbreak \mathsf{addr}~(\mathsf{global}~{{\mathit{ga}}^\ast}{}[x]) \}`. + a. Let :math:`(\mathsf{extend}~{\mathit{sx}})` be the destructuring of :math:`{\mathit{cvtop}}`. -#. If :math:`{\mathit{externidx}}` is some :math:`\mathsf{table}~{\mathit{tableidx}}`, then: + #. If :math:`{\mathit{valtype}} = \mathsf{i{\scriptstyle 32}}` and :math:`{\mathit{valtype}'} = \mathsf{i{\scriptstyle 64}}`, then: - a. Let :math:`(\mathsf{table}~x)` be the destructuring of :math:`{\mathit{externidx}}`. + 1) Return :math:`{{{{\mathrm{extend}}}_{32, 64}^{{\mathit{sx}}}}}{({\mathit{iN}})}`. - #. Return :math:`\{ \mathsf{name}~{\mathit{name}},\;\allowbreak \mathsf{addr}~(\mathsf{table}~{{\mathit{ta}}^\ast}{}[x]) \}`. +#. If :math:`{\mathit{valtype}} = \mathsf{i{\scriptstyle 64}}` and :math:`{\mathit{valtype}'} = \mathsf{i{\scriptstyle 32}}` and :math:`{\mathit{cvtop}} = \mathsf{wrap}`, then: -#. Assert: :math:`{\mathit{externidx}}` is some :math:`\mathsf{mem}~{\mathit{memidx}}`. + a. Return :math:`{{\mathrm{wrap}}}_{64, 32}({\mathit{iN}})`. -#. Let :math:`(\mathsf{mem}~x)` be the destructuring of :math:`{\mathit{externidx}}`. +#. If :math:`{\mathit{valtype}}` is :math:`{\mathsf{f}}{n}` and :math:`{\mathit{valtype}'}` is :math:`{\mathsf{i}}{n}` and :math:`{\mathit{cvtop}}` is some :math:`\mathsf{trunc}~{\mathit{sx}}`, then: -#. Return :math:`\{ \mathsf{name}~{\mathit{name}},\;\allowbreak \mathsf{addr}~(\mathsf{mem}~{{\mathit{ma}}^\ast}{}[x]) \}`. + a. Let :math:`(\mathsf{trunc}~{\mathit{sx}})` be the destructuring of :math:`{\mathit{cvtop}}`. + #. Return :math:`{{{{\mathrm{trunc}}}_{{|{\mathit{valtype}}|}, {|{\mathit{valtype}'}|}}^{{\mathit{sx}}}}}{({\mathit{iN}})}`. -:math:`{\mathrm{allocmodule}}(s, {\mathit{module}}, {{\mathit{externaddr}}^\ast}, {{\mathit{val}}^\ast})` -......................................................................................................... +#. If :math:`{\mathit{valtype}} = \mathsf{f{\scriptstyle 32}}` and :math:`{\mathit{valtype}'} = \mathsf{f{\scriptstyle 64}}` and :math:`{\mathit{cvtop}} = \mathsf{promote}`, then: + a. Return :math:`{{\mathrm{promote}}}_{32, 64}({\mathit{iN}})`. -1. Let :math:`(\mathsf{module}~{{\mathit{type}}_0^\ast}~{{\mathit{import}}^\ast}~{{\mathit{func}}^{n_{\mathit{func}}}}~{{\mathit{global}}_1^\ast}~{{\mathit{table}}_2^\ast}~{{\mathit{mem}}_3^\ast}~{{\mathit{elem}}^\ast}~{{\mathit{data}}^\ast}~{{\mathit{start}}^?}~{{\mathit{export}}^\ast})` be the destructuring of :math:`{\mathit{module}}`. +#. If :math:`{\mathit{valtype}} = \mathsf{f{\scriptstyle 64}}` and :math:`{\mathit{valtype}'} = \mathsf{f{\scriptstyle 32}}` and :math:`{\mathit{cvtop}} = \mathsf{demote}`, then: -#. Let :math:`{(\mathsf{memory}~{\mathit{memtype}})^{n_{\mathit{mem}}}}` be :math:`{{\mathit{mem}}_3^\ast}`. + a. Return :math:`{{\mathrm{demote}}}_{64, 32}({\mathit{iN}})`. -#. Let :math:`{(\mathsf{table}~{\mathit{tabletype}})^{n_{\mathit{table}}}}` be :math:`{{\mathit{table}}_2^\ast}`. +#. If :math:`{\mathit{valtype}}` is :math:`{\mathsf{i}}{n}` and :math:`{\mathit{valtype}'}` is :math:`{\mathsf{f}}{n}`, then: -#. Let :math:`{(\mathsf{global}~{\mathit{globaltype}}~{\mathit{expr}}_1)^{n_{\mathit{global}}}}` be :math:`{{\mathit{global}}_1^\ast}`. + a. If :math:`{\mathit{cvtop}}` is some :math:`\mathsf{convert}~{\mathit{sx}}`, then: -#. Let :math:`{{\mathit{ft}}^\ast}` be the function type sequence :math:`\epsilon`. + 1) Let :math:`(\mathsf{convert}~{\mathit{sx}})` be the destructuring of :math:`{\mathit{cvtop}}`. -#. For each :math:`{\mathit{type}}_0` in :math:`{{\mathit{type}}_0^\ast}`, do: + #) Return :math:`{{{{\mathrm{convert}}}_{{|{\mathit{valtype}}|}, {|{\mathit{valtype}'}|}}^{{\mathit{sx}}}}}{({\mathit{iN}})}`. - a. Let :math:`(\mathsf{type}~{\mathit{ft}})` be the destructuring of :math:`{\mathit{type}}_0`. + #. If :math:`{\mathit{cvtop}} = \mathsf{reinterpret}` and :math:`{|{\mathit{valtype}}|} = {|{\mathit{valtype}'}|}`, then: - #. Append :math:`{\mathit{ft}}` to :math:`{{\mathit{ft}}^\ast}`. + 1) Return :math:`{{\mathrm{reinterpret}}}_{{\mathit{valtype}}, {\mathit{valtype}'}}({\mathit{iN}})`. -#. Let :math:`{{\mathit{fa}}_{\mathit{ex}}^\ast}` be :math:`{\mathrm{funcs}}({{\mathit{externaddr}}^\ast})`. +#. Assert: Due to validation, :math:`{\mathit{valtype}}` is :math:`{\mathsf{f}}{n}`. -#. Let :math:`{{\mathit{ga}}_{\mathit{ex}}^\ast}` be :math:`{\mathrm{globals}}({{\mathit{externaddr}}^\ast})`. +#. Assert: Due to validation, :math:`{\mathit{valtype}'}` is :math:`{\mathsf{i}}{n}`. -#. Let :math:`{{\mathit{ma}}_{\mathit{ex}}^\ast}` be :math:`{\mathrm{mems}}({{\mathit{externaddr}}^\ast})`. +#. Assert: Due to validation, :math:`{\mathit{cvtop}} = \mathsf{reinterpret}`. -#. Let :math:`{{\mathit{ta}}_{\mathit{ex}}^\ast}` be :math:`{\mathrm{tables}}({{\mathit{externaddr}}^\ast})`. +#. Assert: Due to validation, :math:`{|{\mathit{valtype}'}|} = {|{\mathit{valtype}}|}`. -#. Let :math:`{{\mathit{fa}}^\ast}` be :math:`{|s{.}\mathsf{funcs}|} + i_{\mathit{func}}` for all :math:`i_{\mathit{func}}` from :math:`0` to :math:`n_{\mathit{func}} - 1`. +#. Return :math:`{{\mathrm{reinterpret}}}_{{\mathit{valtype}}, {\mathit{valtype}'}}({\mathit{iN}})`. -#. Let :math:`{{\mathit{ga}}^\ast}` be :math:`{|s{.}\mathsf{globals}|} + i_{\mathit{global}}` for all :math:`i_{\mathit{global}}` from :math:`0` to :math:`n_{\mathit{global}} - 1`. -#. Let :math:`{{\mathit{ta}}^\ast}` be :math:`{|s{.}\mathsf{tables}|} + i_{\mathit{table}}` for all :math:`i_{\mathit{table}}` from :math:`0` to :math:`n_{\mathit{table}} - 1`. +:math:`{{\mathrm{inez}}}_{N}(i_1)` +.................................. -#. Let :math:`{{\mathit{ma}}^\ast}` be :math:`{|s{.}\mathsf{mems}|} + i_{\mathit{mem}}` for all :math:`i_{\mathit{mem}}` from :math:`0` to :math:`n_{\mathit{mem}} - 1`. -#. Let :math:`{{\mathit{xi}}^\ast}` be the export instance sequence :math:`\epsilon`. +1. Return :math:`\mathbb{B}(i_1 \neq 0)`. -#. For each :math:`{\mathit{export}}` in :math:`{{\mathit{export}}^\ast}`, do: - a. Let :math:`{\mathit{xi}}` be the export instance :math:`{\mathrm{instexport}}({{\mathit{fa}}_{\mathit{ex}}^\ast}~{{\mathit{fa}}^\ast}, {{\mathit{ga}}_{\mathit{ex}}^\ast}~{{\mathit{ga}}^\ast}, {{\mathit{ta}}_{\mathit{ex}}^\ast}~{{\mathit{ta}}^\ast}, {{\mathit{ma}}_{\mathit{ex}}^\ast}~{{\mathit{ma}}^\ast}, {\mathit{export}})`. +:math:`{{\mathrm{default}}}_{{\mathit{valtype}}}` +................................................. - #. Append :math:`{\mathit{xi}}` to :math:`{{\mathit{xi}}^\ast}`. -#. Let :math:`{\mathit{moduleinst}}` be the module instance :math:`\{ \mathsf{types}~{{\mathit{ft}}^\ast},\;\allowbreak \mathsf{funcs}~{{\mathit{fa}}_{\mathit{ex}}^\ast}~{{\mathit{fa}}^\ast},\;\allowbreak \mathsf{globals}~{{\mathit{ga}}_{\mathit{ex}}^\ast}~{{\mathit{ga}}^\ast},\;\allowbreak \mathsf{tables}~{{\mathit{ta}}_{\mathit{ex}}^\ast}~{{\mathit{ta}}^\ast},\;\allowbreak \mathsf{mems}~{{\mathit{ma}}_{\mathit{ex}}^\ast}~{{\mathit{ma}}^\ast},\;\allowbreak \mathsf{exports}~{{\mathit{xi}}^\ast} \}`. +1. If :math:`{\mathit{valtype}} = \mathsf{i{\scriptstyle 32}}`, then: -#. Let :math:`{{\mathit{funcaddr}}_0^\ast}` be :math:`{\mathrm{allocfuncs}}(s, {\mathit{moduleinst}}, {{\mathit{func}}^{n_{\mathit{func}}}})`. + a. Return :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~0)`. -#. Assert: Due to validation, :math:`{{\mathit{funcaddr}}_0^\ast} = {{\mathit{fa}}^\ast}`. +#. If :math:`{\mathit{valtype}} = \mathsf{i{\scriptstyle 64}}`, then: -#. Let :math:`{{\mathit{globaladdr}}_0^\ast}` be :math:`{\mathrm{allocglobals}}(s, {{\mathit{globaltype}}^{n_{\mathit{global}}}}, {{\mathit{val}}^\ast})`. + a. Return :math:`(\mathsf{i{\scriptstyle 64}}{.}\mathsf{const}~0)`. -#. Assert: Due to validation, :math:`{{\mathit{globaladdr}}_0^\ast} = {{\mathit{ga}}^\ast}`. +#. If :math:`{\mathit{valtype}} = \mathsf{f{\scriptstyle 32}}`, then: -#. Let :math:`{{\mathit{tableaddr}}_0^\ast}` be :math:`{\mathrm{alloctables}}(s, {{\mathit{tabletype}}^{n_{\mathit{table}}}})`. + a. Return :math:`(\mathsf{f{\scriptstyle 32}}{.}\mathsf{const}~{+0})`. -#. Assert: Due to validation, :math:`{{\mathit{tableaddr}}_0^\ast} = {{\mathit{ta}}^\ast}`. +#. Assert: Due to validation, :math:`{\mathit{valtype}} = \mathsf{f{\scriptstyle 64}}`. -#. Let :math:`{{\mathit{memaddr}}_0^\ast}` be :math:`{\mathrm{allocmems}}(s, {{\mathit{memtype}}^{n_{\mathit{mem}}}})`. +#. Return :math:`(\mathsf{f{\scriptstyle 64}}{.}\mathsf{const}~{+0})`. -#. Assert: Due to validation, :math:`{{\mathit{memaddr}}_0^\ast} = {{\mathit{ma}}^\ast}`. -#. Return :math:`{\mathit{moduleinst}}`. +:math:`{\mathrm{funcs}}({{\mathit{externaddr}'}^\ast})` +....................................................... -:math:`{\mathrm{initelem}}(s, {\mathit{moduleinst}}, {{\mathit{u{\kern-0.1em\scriptstyle 32}}}^\ast}, {{\mathit{funcaddr}}^\ast})` -.................................................................................................................................. +1. If :math:`{{\mathit{externaddr}'}^\ast} = \epsilon`, then: + a. Return :math:`\epsilon`. -1. If :math:`{{\mathit{funcaddr}}^\ast} = \epsilon`, then: +#. Let :math:`{\mathit{externaddr}}_0~{{\mathit{xv}}^\ast}` be :math:`{{\mathit{externaddr}'}^\ast}`. - a. Assert: :math:`{{\mathit{u{\kern-0.1em\scriptstyle 32}}}^\ast} = \epsilon`. +#. If :math:`{\mathit{externaddr}}_0` is some :math:`\mathsf{func}~{\mathit{funcaddr}}`, then: - #. Return. + a. Let :math:`(\mathsf{func}~{\mathit{fa}})` be the destructuring of :math:`{\mathit{externaddr}}_0`. -#. Else: + #. Return :math:`{\mathit{fa}}~{\mathrm{funcs}}({{\mathit{xv}}^\ast})`. - a. Let :math:`{a^\ast}~{{{a'}^\ast}^\ast}` be :math:`{{\mathit{funcaddr}}^\ast}`. +#. Let :math:`{\mathit{externaddr}}~{{\mathit{xv}}^\ast}` be :math:`{{\mathit{externaddr}'}^\ast}`. - #. Assert: :math:`{|{{\mathit{u{\kern-0.1em\scriptstyle 32}}}^\ast}|} \geq 1`. +#. Return :math:`{\mathrm{funcs}}({{\mathit{xv}}^\ast})`. - #. Let :math:`i~{{i'}^\ast}` be :math:`{{\mathit{u{\kern-0.1em\scriptstyle 32}}}^\ast}`. - #. Replace :math:`s{.}\mathsf{tables}{}[{\mathit{moduleinst}}{.}\mathsf{tables}{}[0]]{.}\mathsf{refs}{}[i : {|{a^\ast}|}]` with :math:`{a^\ast}`. +:math:`{\mathrm{globals}}({{\mathit{externaddr}'}^\ast})` +......................................................... - #. Perform :math:`{\mathrm{initelem}}(s, {\mathit{moduleinst}}, {{i'}^\ast}, {{{a'}^\ast}^\ast})`. - #. Return. +1. If :math:`{{\mathit{externaddr}'}^\ast} = \epsilon`, then: + a. Return :math:`\epsilon`. -:math:`{\mathrm{initdata}}(s, {\mathit{moduleinst}}, {{\mathit{u{\kern-0.1em\scriptstyle 32}}}^\ast}, {{\mathit{byte}}^\ast})` -.............................................................................................................................. +#. Let :math:`{\mathit{externaddr}}_0~{{\mathit{xv}}^\ast}` be :math:`{{\mathit{externaddr}'}^\ast}`. +#. If :math:`{\mathit{externaddr}}_0` is some :math:`\mathsf{global}~{\mathit{globaladdr}}`, then: -1. If :math:`{{\mathit{byte}}^\ast} = \epsilon`, then: + a. Let :math:`(\mathsf{global}~{\mathit{ga}})` be the destructuring of :math:`{\mathit{externaddr}}_0`. - a. Assert: :math:`{{\mathit{u{\kern-0.1em\scriptstyle 32}}}^\ast} = \epsilon`. + #. Return :math:`{\mathit{ga}}~{\mathrm{globals}}({{\mathit{xv}}^\ast})`. - #. Return. +#. Let :math:`{\mathit{externaddr}}~{{\mathit{xv}}^\ast}` be :math:`{{\mathit{externaddr}'}^\ast}`. -#. Else: +#. Return :math:`{\mathrm{globals}}({{\mathit{xv}}^\ast})`. - a. Let :math:`{b^\ast}~{{{b'}^\ast}^\ast}` be :math:`{{\mathit{byte}}^\ast}`. - #. Assert: :math:`{|{{\mathit{u{\kern-0.1em\scriptstyle 32}}}^\ast}|} \geq 1`. +:math:`{\mathrm{tables}}({{\mathit{externaddr}'}^\ast})` +........................................................ - #. Let :math:`i~{{i'}^\ast}` be :math:`{{\mathit{u{\kern-0.1em\scriptstyle 32}}}^\ast}`. - #. Replace :math:`s{.}\mathsf{mems}{}[{\mathit{moduleinst}}{.}\mathsf{mems}{}[0]]{.}\mathsf{bytes}{}[i : {|{b^\ast}|}]` with :math:`{b^\ast}`. +1. If :math:`{{\mathit{externaddr}'}^\ast} = \epsilon`, then: - #. Perform :math:`{\mathrm{initdata}}(s, {\mathit{moduleinst}}, {{i'}^\ast}, {{{b'}^\ast}^\ast})`. + a. Return :math:`\epsilon`. - #. Return. +#. Let :math:`{\mathit{externaddr}}_0~{{\mathit{xv}}^\ast}` be :math:`{{\mathit{externaddr}'}^\ast}`. +#. If :math:`{\mathit{externaddr}}_0` is some :math:`\mathsf{table}~{\mathit{tableaddr}}`, then: -:math:`{\mathrm{instantiate}}(s, {\mathit{module}}, {{\mathit{externaddr}}^\ast})` -.................................................................................. + a. Let :math:`(\mathsf{table}~{\mathit{ta}})` be the destructuring of :math:`{\mathit{externaddr}}_0`. + #. Return :math:`{\mathit{ta}}~{\mathrm{tables}}({{\mathit{xv}}^\ast})`. -1. Let :math:`(\mathsf{module}~{{\mathit{type}}^\ast}~{{\mathit{import}}^\ast}~{{\mathit{func}}^\ast}~{{\mathit{global}}^\ast}~{{\mathit{table}}^\ast}~{{\mathit{mem}}^\ast}~{{\mathit{elem}}^\ast}~{{\mathit{data}}^\ast}~{{\mathit{start}}^?}~{{\mathit{export}}^\ast})` be the destructuring of :math:`{\mathit{module}}`. +#. Let :math:`{\mathit{externaddr}}~{{\mathit{xv}}^\ast}` be :math:`{{\mathit{externaddr}'}^\ast}`. -#. Let :math:`{{\mathit{functype}}^\ast}` be the function type sequence :math:`\epsilon`. +#. Return :math:`{\mathrm{tables}}({{\mathit{xv}}^\ast})`. -#. For each :math:`{\mathit{type}}` in :math:`{{\mathit{type}}^\ast}`, do: - a. Let :math:`(\mathsf{type}~{\mathit{functype}})` be the destructuring of :math:`{\mathit{type}}`. +:math:`{\mathrm{mems}}({{\mathit{externaddr}'}^\ast})` +...................................................... - #. Append :math:`{\mathit{functype}}` to :math:`{{\mathit{functype}}^\ast}`. -#. Let :math:`n_{\mathsf{f}}` be the length of :math:`{{\mathit{func}}^\ast}`. +1. If :math:`{{\mathit{externaddr}'}^\ast} = \epsilon`, then: -#. Let :math:`{{b^\ast}^\ast}` be the byte sequence sequence :math:`\epsilon`. + a. Return :math:`\epsilon`. -#. Let :math:`{{\mathit{expr}}_{\mathsf{d}}^\ast}` be the expression sequence :math:`\epsilon`. +#. Let :math:`{\mathit{externaddr}}_0~{{\mathit{xv}}^\ast}` be :math:`{{\mathit{externaddr}'}^\ast}`. -#. For each :math:`{\mathit{data}}` in :math:`{{\mathit{data}}^\ast}`, do: +#. If :math:`{\mathit{externaddr}}_0` is some :math:`\mathsf{mem}~{\mathit{memaddr}}`, then: - a. Let :math:`(\mathsf{data}~{\mathit{expr}}_{\mathsf{d}}~{b^\ast})` be the destructuring of :math:`{\mathit{data}}`. + a. Let :math:`(\mathsf{mem}~{\mathit{ma}})` be the destructuring of :math:`{\mathit{externaddr}}_0`. - #. Append :math:`{b^\ast}` to :math:`{{b^\ast}^\ast}`. + #. Return :math:`{\mathit{ma}}~{\mathrm{mems}}({{\mathit{xv}}^\ast})`. - #. Append :math:`{\mathit{expr}}_{\mathsf{d}}` to :math:`{{\mathit{expr}}_{\mathsf{d}}^\ast}`. +#. Let :math:`{\mathit{externaddr}}~{{\mathit{xv}}^\ast}` be :math:`{{\mathit{externaddr}'}^\ast}`. -#. Let :math:`{{\mathit{expr}}_{\mathsf{e}}^\ast}` be the expression sequence :math:`\epsilon`. +#. Return :math:`{\mathrm{mems}}({{\mathit{xv}}^\ast})`. -#. Let :math:`{{x^\ast}^\ast}` be the function index sequence sequence :math:`\epsilon`. -#. For each :math:`{\mathit{elem}}` in :math:`{{\mathit{elem}}^\ast}`, do: +:math:`(s, f){.}\mathsf{store}` +............................... - a. Let :math:`(\mathsf{elem}~{\mathit{expr}}_{\mathsf{e}}~{x^\ast})` be the destructuring of :math:`{\mathit{elem}}`. - #. Append :math:`{\mathit{expr}}_{\mathsf{e}}` to :math:`{{\mathit{expr}}_{\mathsf{e}}^\ast}`. +1. Return. - #. Append :math:`{x^\ast}` to :math:`{{x^\ast}^\ast}`. -#. Let :math:`{{\mathit{expr}}_{\mathsf{g}}^\ast}` be the expression sequence :math:`\epsilon`. +:math:`(s, f){.}\mathsf{frame}` +............................... -#. For each :math:`{\mathit{global}}` in :math:`{{\mathit{global}}^\ast}`, do: - a. Let :math:`(\mathsf{global}~{\mathit{globaltype}}~{\mathit{expr}}_{\mathsf{g}})` be the destructuring of :math:`{\mathit{global}}`. +1. Return :math:`f`. - #. Append :math:`{\mathit{expr}}_{\mathsf{g}}` to :math:`{{\mathit{expr}}_{\mathsf{g}}^\ast}`. -#. Let :math:`{\mathit{moduleinst}}_{\mathit{init}}` be the module instance :math:`\{ \mathsf{types}~{{\mathit{functype}}^\ast},\;\allowbreak \mathsf{funcs}~{\mathrm{funcs}}({{\mathit{externaddr}}^\ast})~{({|s{.}\mathsf{funcs}|} + i_{\mathsf{f}})^{i_{\mathsf{f}}` :math:`{\mathit{expr}}_{\mathsf{d}}` with state :math:`z`. - #. Append :math:`i_{\mathsf{d}}` to :math:`{i_{\mathsf{d}}^\ast}`. +:math:`(s, f){.}\mathsf{globals}` +................................. -#. Let :math:`{i_{\mathsf{e}}^\ast}` be :math:`\epsilon`. -#. For each :math:`{\mathit{expr}}_{\mathsf{e}}` in :math:`{{\mathit{expr}}_{\mathsf{e}}^\ast}`, do: +1. Return :math:`s{.}\mathsf{globals}`. - a. Let :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_{\mathsf{e}})` be the result of :ref:`evaluating ` :math:`{\mathit{expr}}_{\mathsf{e}}` with state :math:`z`. - #. Append :math:`i_{\mathsf{e}}` to :math:`{i_{\mathsf{e}}^\ast}`. +:math:`(s, f){.}\mathsf{tables}` +................................ -#. Let :math:`{{\mathit{val}}^\ast}` be the value sequence :math:`\epsilon`. -#. For each :math:`{\mathit{expr}}_{\mathsf{g}}` in :math:`{{\mathit{expr}}_{\mathsf{g}}^\ast}`, do: +1. Return :math:`s{.}\mathsf{tables}`. - a. Let :math:`{\mathit{val}}` be the result of :ref:`evaluating ` :math:`{\mathit{expr}}_{\mathsf{g}}` with state :math:`z`. - #. Append :math:`{\mathit{val}}` to :math:`{{\mathit{val}}^\ast}`. +:math:`(s, f){.}\mathsf{mems}` +.............................. -#. Pop the :math:`\mathsf{frame}` from the stack. -#. Let :math:`{\mathit{moduleinst}}` be :math:`{\mathrm{allocmodule}}(s, {\mathit{module}}, {{\mathit{externaddr}}^\ast}, {{\mathit{val}}^\ast})`. +1. Return :math:`s{.}\mathsf{mems}`. -#. Let :math:`f` be the frame :math:`\{ \mathsf{module}~{\mathit{moduleinst}} \}`. -#. Perform :math:`{\mathrm{initelem}}(s, {\mathit{moduleinst}}, {i_{\mathsf{e}}^\ast}, {{{\mathit{moduleinst}}{.}\mathsf{funcs}{}[x]^\ast}^\ast})`. +:math:`(s, f){.}\mathsf{module}` +................................ -#. Perform :math:`{\mathrm{initdata}}(s, {\mathit{moduleinst}}, {i_{\mathsf{d}}^\ast}, {{b^\ast}^\ast})`. -#. Let :math:`{f'}` be the :math:`\mathsf{frame}` :math:`f`. +1. Return :math:`f{.}\mathsf{module}`. -#. Push the :math:`\mathsf{frame}` :math:`{f'}`. -#. If :math:`{{\mathit{start}}^?}` is defined, then: +:math:`(s, f){.}\mathsf{types}{}[x]` +.................................... - a. Let :math:`(\mathsf{start}~{x'})` be :math:`{{\mathit{start}}^?}`. - #. Let :math:`{\mathit{instr}}_0` be the administrative instruction :math:`(\mathsf{call}~{x'})`. +1. Return :math:`f{.}\mathsf{module}{.}\mathsf{types}{}[x]`. - #. Execute the instruction :math:`{\mathit{instr}}_0`. -#. Pop the :math:`\mathsf{frame}` from the stack. +:math:`(s, f){.}\mathsf{funcs}{}[x]` +.................................... -#. Return :math:`f{.}\mathsf{module}`. +1. Return :math:`s{.}\mathsf{funcs}{}[f{.}\mathsf{module}{.}\mathsf{funcs}{}[x]]`. -:math:`{\mathrm{invoke}}(s, {\mathit{fa}}, {{\mathit{val}}^{n}})` -................................................................. +:math:`(s, f){.}\mathsf{globals}{}[x]` +...................................... -1. Let :math:`f` be the frame :math:`\{ \mathsf{module}~\{ \} \}`. -#. Let :math:`F` be the :math:`\mathsf{frame}` :math:`(s, f)`. +1. Return :math:`s{.}\mathsf{globals}{}[f{.}\mathsf{module}{.}\mathsf{globals}{}[x]]`. -#. Push the :math:`\mathsf{frame}` :math:`F`. -#. Let :math:`{t_1^{n}}~\rightarrow~{t_2^\ast}` be the destructuring of :math:`(s, f){.}\mathsf{funcs}{}[{\mathit{fa}}]{.}\mathsf{type}`. +:math:`(s, f){.}\mathsf{tables}{}[x]` +..................................... -#. Pop the :math:`\mathsf{frame}` from the stack. -#. Let :math:`k` be the length of :math:`{t_2^\ast}`. +1. Return :math:`s{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]]`. -#. Let :math:`{f'}` be the :math:`\mathsf{frame}` :math:`f` whose arity is :math:`k`. -#. Push the :math:`\mathsf{frame}` :math:`{f'}`. +:math:`(s, f){.}\mathsf{mems}{}[x]` +................................... -#. Push the values :math:`{{\mathit{val}}^{n}}` to the stack. -#. Execute the instruction :math:`(\mathsf{call}~{\mathit{fa}})`. +1. Return :math:`s{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]]`. -#. Pop the values :math:`{{\mathit{val}'}^{k}}` from the stack. -#. Pop the :math:`\mathsf{frame}` from the stack. +:math:`(s, f){.}\mathsf{locals}{}[x]` +..................................... -#. Return :math:`{{\mathit{val}'}^{k}}`. +1. Return :math:`f{.}\mathsf{locals}{}[x]`. -:math:`\mathsf{eval\_expr}~{{\mathit{instr}}^\ast}` -................................................... +:math:`(s, f){}[{.}\mathsf{locals}{}[x] = v]` +............................................. -1. Execute the sequence :math:`{{\mathit{instr}}^\ast}`. -#. Pop the value :math:`{\mathit{val}}` from the stack. +1. Replace :math:`f{.}\mathsf{locals}{}[x]` with :math:`v`. -#. Return :math:`{\mathit{val}}`. +:math:`(s, f){}[{.}\mathsf{globals}{}[x]{.}\mathsf{value} = v]` +............................................................... -== Complete. -spectec 0.5 generator -== Parsing... -== Elaboration... -== IL Validation... -== Running pass sideconditions... -== IL Validation after pass sideconditions... -== Translating to AL... -== Prose Generation... -Limits_ok -- the limits ([ n .. m? ]) is valid with k if: - - n is less than or equal to k. - - If m is defined, then: - - n is less than or equal to m. - - m is less than or equal to k. -Functype_ok -- the function type t_1* -> t_2? is always valid. +1. Replace :math:`s{.}\mathsf{globals}{}[f{.}\mathsf{module}{.}\mathsf{globals}{}[x]]{.}\mathsf{value}` with :math:`v`. -Globaltype_ok -- the global type (MUT? t) is always valid. -Tabletype_ok -- the table type limits is valid if: - - limits is valid with ((2 ^ 32) - 1). +:math:`(s, f){}[{.}\mathsf{tables}{}[x]{.}\mathsf{refs}{}[i] = a]` +.................................................................. -Memtype_ok -- the memory type limits is valid if: - - limits is valid with (2 ^ 16). -Externtype_ok -- the external type externtype is valid if: - - Either: - - externtype is (FUNC functype). - - the function type functype is valid. - - Or: - - externtype is (GLOBAL globaltype). - - the global type globaltype is valid. - - Or: - - externtype is (TABLE tabletype). - - the table type tabletype is valid. - - Or: - - externtype is (MEM memtype). - - the memory type memtype is valid. +1. Replace :math:`s{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]]{.}\mathsf{refs}{}[i]` with :math:`a`. -Externtype_ok/func -- the external type (FUNC functype) is valid if: - - the function type functype is valid. -Externtype_ok/global -- the external type (GLOBAL globaltype) is valid if: - - the global type globaltype is valid. +:math:`(s, f){}[{.}\mathsf{tables}{}[x] = {\mathit{ti}}]` +......................................................... -Externtype_ok/table -- the external type (TABLE tabletype) is valid if: - - the table type tabletype is valid. -Externtype_ok/mem -- the external type (MEM memtype) is valid if: - - the memory type memtype is valid. +1. Replace :math:`s{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]]` with :math:`{\mathit{ti}}`. -Limits_sub -- the limits ([ n_11 .. ?(n_12) ]) matches the limits ([ n_21 .. ?(n_22) ]) if: - - n_11 is greater than or equal to n_21. - - n_12 is less than or equal to n_22. -Functype_sub -- the function type ft matches only itself. +:math:`(s, f){}[{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i : j] = {b^\ast}]` +............................................................................ -Globaltype_sub -- the global type gt matches only itself. -Tabletype_sub -- the table type lim_1 matches the table type lim_2 if: - - lim_1 matches lim_2. +1. Replace :math:`s{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]]{.}\mathsf{bytes}{}[i : j]` with :math:`{b^\ast}`. -Memtype_sub -- the memory type lim_1 matches the memory type lim_2 if: - - lim_1 matches lim_2. -Externtype_sub -- the external type externtype_1 matches the external type externtype_2 if: - - Either: - - externtype_1 is (FUNC ft_1). - - externtype_2 is (FUNC ft_2). - - the function type ft_1 matches the function type ft_2. - - Or: - - externtype_1 is (GLOBAL gt_1). - - externtype_2 is (GLOBAL gt_2). - - the global type gt_1 matches the global type gt_2. - - Or: - - externtype_1 is (TABLE tt_1). - - externtype_2 is (TABLE tt_2). - - the table type tt_1 matches the table type tt_2. - - Or: - - externtype_1 is (MEM mt_1). - - externtype_2 is (MEM mt_2). - - the memory type mt_1 matches the memory type mt_2. +:math:`(s, f){}[{.}\mathsf{mems}{}[x] = {\mathit{mi}}]` +....................................................... -Externtype_sub/func -- the external type (FUNC ft_1) matches the external type (FUNC ft_2) if: - - the function type ft_1 matches the function type ft_2. -Externtype_sub/global -- the external type (GLOBAL gt_1) matches the external type (GLOBAL gt_2) if: - - the global type gt_1 matches the global type gt_2. +1. Replace :math:`s{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]]` with :math:`{\mathit{mi}}`. -Externtype_sub/table -- the external type (TABLE tt_1) matches the external type (TABLE tt_2) if: - - the table type tt_1 matches the table type tt_2. -Externtype_sub/mem -- the external type (MEM mt_1) matches the external type (MEM mt_2) if: - - the memory type mt_1 matches the memory type mt_2. +:math:`{\mathrm{growtable}}({\mathit{ti}}, n)` +.............................................. -Instr_ok/nop -- the instruction NOP is valid with the function type [] -> []. -Instr_ok/unreachable -- the instruction UNREACHABLE is valid with the function type t_1* -> t_2*. +1. Let :math:`\{ \mathsf{type}~{}[ i .. {j^?} ],\;\allowbreak \mathsf{refs}~{a^\ast} \}` be the destructuring of :math:`{\mathit{ti}}`. -Instr_ok/drop -- the instruction DROP is valid with the function type [t] -> []. +#. Let :math:`{i'}` be :math:`{|{a^\ast}|} + n`. -Instr_ok/select -- the instruction SELECT is valid with the function type [t, t, I32] -> [t]. +#. If :math:`{({i'} \leq j)^?}`, then: -Instr_ok/block -- the instruction (BLOCK t? instr*) is valid with the function type [] -> t? if: - - the context C' is the context C with .LABELS prepended by [t?]. - - Under the context C', the instruction sequence instr* is valid with [] -> t?. + a. Let :math:`{\mathit{ti}'}` be the table instance :math:`\{ \mathsf{type}~{}[ {i'} .. {j^?} ],\;\allowbreak \mathsf{refs}~{a^\ast}~{\epsilon^{n}} \}`. -Instr_ok/loop -- the instruction (LOOP t? instr*) is valid with the function type [] -> t? if: - - the context C' is the context C with .LABELS prepended by [?()]. - - Under the context C', the instruction sequence instr* is valid with the function type [] -> []. + #. Return :math:`{\mathit{ti}'}`. -Instr_ok/if -- the instruction (IF t? instr_1* ELSE instr_2*) is valid with the function type [I32] -> t? if: - - the context C' is the context C with .LABELS prepended by [t?]. - - Under the context C', the instruction sequence instr_1* is valid with the function type [] -> t?. - - Under the context C', the instruction sequence instr_2* is valid with [] -> t?. +#. Fail. -Instr_ok/br -- the instruction (BR l) is valid with the function type t_1* :: t? -> t_2* if: - - the result type C.LABELS[l] exists. - - C.LABELS[l] is t?. -Instr_ok/br_if -- the instruction (BR_IF l) is valid with the function type t? :: [I32] -> t? if: - - the result type C.LABELS[l] exists. - - C.LABELS[l] is t?. +:math:`{\mathrm{growmemory}}({\mathit{mi}}, n)` +............................................... -Instr_ok/br_table -- the instruction (BR_TABLE l* l') is valid with the function type t_1* :: t? :: [I32] -> t_2* if: - - the result type C.LABELS[l'] exists. - - the result type t? is C.LABELS[l']. - - For all l in l*: - - the result type C.LABELS[l] exists. - - t? is C.LABELS[l]. -Instr_ok/call -- the instruction (CALL x) is valid with the function type t_1* -> t_2? if: - - the function type C.FUNCS[x] exists. - - C.FUNCS[x] is t_1* -> t_2?. +1. Let :math:`\{ \mathsf{type}~{}[ i .. {j^?} ],\;\allowbreak \mathsf{bytes}~{b^\ast} \}` be the destructuring of :math:`{\mathit{mi}}`. -Instr_ok/call_indirect -- the instruction (CALL_INDIRECT x) is valid with the function type t_1* :: [I32] -> t_2? if: - - the function type C.TYPES[x] exists. - - C.TYPES[x] is t_1* -> t_2?. +#. Let :math:`{i'}` be :math:`{|{b^\ast}|} / (64 \, {\mathrm{Ki}}) + n`. -Instr_ok/return -- the instruction RETURN is valid with the function type t_1* :: t? -> t_2* if: - - the result type C.RETURN is ?(t?). +#. If :math:`{({i'} \leq j)^?}`, then: -Instr_ok/const -- the instruction (t.CONST c_t) is valid with the function type [] -> [t]. + a. Let :math:`{\mathit{mi}'}` be the memory instance :math:`\{ \mathsf{type}~{}[ {i'} .. {j^?} ],\;\allowbreak \mathsf{bytes}~{b^\ast}~{\mathtt{0x00}^{n \cdot 64 \, {\mathrm{Ki}}}} \}`. -Instr_ok/unop -- the instruction (UNOP t unop_t) is valid with the function type [t] -> [t]. + #. Return :math:`{\mathit{mi}'}`. -Instr_ok/binop -- the instruction (BINOP t binop_t) is valid with the function type [t, t] -> [t]. +#. Fail. -Instr_ok/testop -- the instruction (TESTOP t testop_t) is valid with the function type [t] -> [I32]. -Instr_ok/relop -- the instruction (RELOP t relop_t) is valid with the function type [t, t] -> [I32]. +:math:`{\mathrm{funcs}}({{\mathit{externaddr}''}^\ast})` +........................................................ -Instr_ok/cvtop -- the instruction (CVTOP nt_1 nt_2 cvtop) is valid with the function type [nt_2] -> [nt_1] if: - - Either: - - cvtop is REINTERPRET. - - $size(nt_1) is $size(nt_2). - - Or: +1. If :math:`{{\mathit{externaddr}''}^\ast} = \epsilon`, then: -Instr_ok/local.get -- the instruction (LOCAL.GET x) is valid with the function type [] -> [t] if: - - the number type C.LOCALS[x] exists. - - C.LOCALS[x] is t. + a. Return :math:`\epsilon`. -Instr_ok/local.set -- the instruction (LOCAL.SET x) is valid with the function type [t] -> [] if: - - the number type C.LOCALS[x] exists. - - C.LOCALS[x] is t. +#. Let :math:`{\mathit{externaddr}}_0~{{\mathit{externaddr}'}^\ast}` be :math:`{{\mathit{externaddr}''}^\ast}`. -Instr_ok/local.tee -- the instruction (LOCAL.TEE x) is valid with the function type [t] -> [t] if: - - the number type C.LOCALS[x] exists. - - C.LOCALS[x] is t. +#. If :math:`{\mathit{externaddr}}_0` is some :math:`\mathsf{func}~{\mathit{funcaddr}}`, then: -Instr_ok/global.get -- the instruction (GLOBAL.GET x) is valid with the function type [] -> [t] if: - - the global type C.GLOBALS[x] exists. - - C.GLOBALS[x] is (mut t). + a. Let :math:`(\mathsf{func}~{\mathit{fa}})` be the destructuring of :math:`{\mathit{externaddr}}_0`. -Instr_ok/global.set -- the instruction (GLOBAL.SET x) is valid with the function type [t] -> [] if: - - the global type C.GLOBALS[x] exists. - - C.GLOBALS[x] is (?(MUT) t). + #. Return :math:`{\mathit{fa}}~{\mathrm{funcs}}({{\mathit{externaddr}'}^\ast})`. -Instr_ok/memory.size -- the instruction MEMORY.SIZE is valid with the function type [] -> [I32]. +#. Let :math:`{\mathit{externaddr}}~{{\mathit{externaddr}'}^\ast}` be :math:`{{\mathit{externaddr}''}^\ast}`. -Instr_ok/memory.grow -- the instruction MEMORY.GROW is valid with the function type [I32] -> [I32]. +#. Return :math:`{\mathrm{funcs}}({{\mathit{externaddr}'}^\ast})`. -Instr_ok/load -- the instruction (LOAD t loadop_? memarg) is valid with the function type [I32] -> [t'] if: - - Either: - - loadop_? is ?(). - - the number type t' is t. - - (2 ^ memarg.ALIGN) is less than or equal to ($size(t) / 8). - - Or: - - the number type t is Inn. - - loadop_? is ?(M _ sx). - - t' is Inn. - - (2 ^ memarg.ALIGN) is less than or equal to (M / 8). -Instr_ok/store -- the instruction (STORE t sz? memarg) is valid with the function type [I32, t'] -> [] if: - - Either: - - the pack size sz? is ?(). - - the number type t' is t. - - (2 ^ memarg.ALIGN) is less than or equal to ($size(t) / 8). - - Or: - - the number type t is Inn. - - sz? is ?(M). - - t' is Inn. - - (2 ^ memarg.ALIGN) is less than or equal to (M / 8). +:math:`{\mathrm{globals}}({{\mathit{externaddr}''}^\ast})` +.......................................................... -Instr_ok/cvtop-reinterpret -- the instruction (CVTOP nt_1 nt_2 REINTERPRET) is valid with the function type [nt_2] -> [nt_1] if: - - $size(nt_1) is $size(nt_2). -Instr_ok/cvtop-convert -- the instruction (CVTOP nt_1 nt_2 cvtop) is valid with [nt_2] -> [nt_1]. +1. If :math:`{{\mathit{externaddr}''}^\ast} = \epsilon`, then: -Instr_ok/load-val -- the instruction (LOAD t ?() memarg) is valid with the function type [I32] -> [t] if: - - (2 ^ memarg.ALIGN) is less than or equal to ($size(t) / 8). + a. Return :math:`\epsilon`. -Instr_ok/load-pack -- the instruction (LOAD Inn ?(M _ sx) memarg) is valid with the function type [I32] -> [Inn] if: - - (2 ^ memarg.ALIGN) is less than or equal to (M / 8). +#. Let :math:`{\mathit{externaddr}}_0~{{\mathit{externaddr}'}^\ast}` be :math:`{{\mathit{externaddr}''}^\ast}`. -Instr_ok/store-val -- the instruction (STORE t ?() memarg) is valid with the function type [I32, t] -> [] if: - - (2 ^ memarg.ALIGN) is less than or equal to ($size(t) / 8). +#. If :math:`{\mathit{externaddr}}_0` is some :math:`\mathsf{global}~{\mathit{globaladdr}}`, then: -Instr_ok/store-pack -- the instruction (STORE Inn ?(M) memarg) is valid with the function type [I32, Inn] -> [] if: - - (2 ^ memarg.ALIGN) is less than or equal to (M / 8). + a. Let :math:`(\mathsf{global}~{\mathit{ga}})` be the destructuring of :math:`{\mathit{externaddr}}_0`. -Instrs_ok -- the instruction sequence instr* is valid with the function type valtype* -> valtype'* if: - - Either: - - instr* is []. - - the number type sequence valtype* is []. - - the number type sequence valtype'* is []. - - Or: - - instr* is [instr_1] :: instr_2*. - - the instruction instr_1 is valid with the function type valtype* -> t_2*. - - the instruction sequence instr_2* is valid with the function type t_2* -> valtype'*. - - Or: - - valtype* is t* :: t_1*. - - valtype'* is t* :: t_2*. - - instr* is valid with the function type t_1* -> t_2*. + #. Return :math:`{\mathit{ga}}~{\mathrm{globals}}({{\mathit{externaddr}'}^\ast})`. -Instrs_ok/empty -- the instruction sequence [] is valid with the function type [] -> []. +#. Let :math:`{\mathit{externaddr}}~{{\mathit{externaddr}'}^\ast}` be :math:`{{\mathit{externaddr}''}^\ast}`. -Instrs_ok/seq -- the instruction sequence [instr_1] :: instr_2* is valid with the function type t_1* -> t_3* if: - - the instruction instr_1 is valid with the function type t_1* -> t_2*. - - the instruction sequence instr_2* is valid with the function type t_2* -> t_3*. +#. Return :math:`{\mathrm{globals}}({{\mathit{externaddr}'}^\ast})`. -Instrs_ok/frame -- the instruction sequence instr* is valid with the function type t* :: t_1* -> t* :: t_2* if: - - instr* is valid with the function type t_1* -> t_2*. -Expr_ok -- the expression instr* is valid with the result type t? if: - - instr* is valid with the function type [] -> t?. +:math:`{\mathrm{tables}}({{\mathit{externaddr}''}^\ast})` +......................................................... -Instr_const -- the instruction instr is constant if: - - Either: - - instr is (t.CONST c). - - Or: - - instr is (GLOBAL.GET x). - - the global type C.GLOBALS[x] exists. - - C.GLOBALS[x] is (?() t). -Instr_const/const -- the instruction (t.CONST c) is constant. +1. If :math:`{{\mathit{externaddr}''}^\ast} = \epsilon`, then: -Instr_const/global.get -- the instruction (GLOBAL.GET x) is constant if: - - the global type C.GLOBALS[x] exists. - - C.GLOBALS[x] is (?() t). + a. Return :math:`\epsilon`. -Expr_const -- the expression instr* is constant if: - - For all instr in instr*: - - the instruction instr is constant. +#. Let :math:`{\mathit{externaddr}}_0~{{\mathit{externaddr}'}^\ast}` be :math:`{{\mathit{externaddr}''}^\ast}`. -Type_ok -- the type (TYPE ft) is valid with the function type ft if: - - ft is valid. +#. If :math:`{\mathit{externaddr}}_0` is some :math:`\mathsf{table}~{\mathit{tableaddr}}`, then: -Func_ok -- the function (FUNC x (LOCAL t)* expr) is valid with the function type t_1* -> t_2? if: - - the function type C.TYPES[x] exists. - - C.TYPES[x] is t_1* -> t_2?. - - Under the context C with .LOCALS appended by t_1* :: t* and .LABELS appended by [t_2?] and .RETURN appended by ?(t_2?), the expression expr is valid with the result type t_2?. + a. Let :math:`(\mathsf{table}~{\mathit{ta}})` be the destructuring of :math:`{\mathit{externaddr}}_0`. -Global_ok -- the global (GLOBAL gt expr) is valid with the global type gt if: - - gt is valid. - - gt is (mut t). - - the expression expr is valid with the number type ?(t). - - expr is constant. + #. Return :math:`{\mathit{ta}}~{\mathrm{tables}}({{\mathit{externaddr}'}^\ast})`. -Table_ok -- the table (TABLE tt) is valid with the table type tt if: - - tt is valid. +#. Let :math:`{\mathit{externaddr}}~{{\mathit{externaddr}'}^\ast}` be :math:`{{\mathit{externaddr}''}^\ast}`. -Mem_ok -- the memory (MEMORY mt) is valid with the memory type mt if: - - mt is valid. +#. Return :math:`{\mathrm{tables}}({{\mathit{externaddr}'}^\ast})`. -Elem_ok -- the table segment (ELEM expr x*) is valid if: - - the expression expr is valid with the number type ?(I32). - - expr is constant. - - For all x in x*: - - the function type C.FUNCS[x] exists. -Data_ok -- the memory segment (DATA expr b*) is valid if: - - the expression expr is valid with the number type ?(I32). - - expr is constant. +:math:`{\mathrm{mems}}({{\mathit{externaddr}''}^\ast})` +....................................................... -Start_ok -- the start function (START x) is valid if: - - the function type C.FUNCS[x] exists. - - C.FUNCS[x] is [] -> []. -Import_ok -- the import (IMPORT name_1 name_2 xt) is valid with the external type xt if: - - xt is valid. +1. If :math:`{{\mathit{externaddr}''}^\ast} = \epsilon`, then: -Externidx_ok -- the external index externidx is valid with the external type externtype if: - - Either: - - externidx is (FUNC x). - - externtype is (FUNC ft). - - the function type C.FUNCS[x] exists. - - C.FUNCS[x] is ft. - - Or: - - externidx is (GLOBAL x). - - externtype is (GLOBAL gt). - - the global type C.GLOBALS[x] exists. - - C.GLOBALS[x] is gt. - - Or: - - externidx is (TABLE x). - - externtype is (TABLE tt). - - the table type C.TABLES[x] exists. - - C.TABLES[x] is tt. - - Or: - - externidx is (MEM x). - - externtype is (MEM mt). - - the memory type C.MEMS[x] exists. - - C.MEMS[x] is mt. + a. Return :math:`\epsilon`. -Externidx_ok/func -- the external index (FUNC x) is valid with the external type (FUNC ft) if: - - the function type C.FUNCS[x] exists. - - C.FUNCS[x] is ft. +#. Let :math:`{\mathit{externaddr}}_0~{{\mathit{externaddr}'}^\ast}` be :math:`{{\mathit{externaddr}''}^\ast}`. -Externidx_ok/global -- the external index (GLOBAL x) is valid with the external type (GLOBAL gt) if: - - the global type C.GLOBALS[x] exists. - - C.GLOBALS[x] is gt. +#. If :math:`{\mathit{externaddr}}_0` is some :math:`\mathsf{mem}~{\mathit{memaddr}}`, then: -Externidx_ok/table -- the external index (TABLE x) is valid with the external type (TABLE tt) if: - - the table type C.TABLES[x] exists. - - C.TABLES[x] is tt. + a. Let :math:`(\mathsf{mem}~{\mathit{ma}})` be the destructuring of :math:`{\mathit{externaddr}}_0`. -Externidx_ok/mem -- the external index (MEM x) is valid with the external type (MEM mt) if: - - the memory type C.MEMS[x] exists. - - C.MEMS[x] is mt. + #. Return :math:`{\mathit{ma}}~{\mathrm{mems}}({{\mathit{externaddr}'}^\ast})`. -Export_ok -- the export (EXPORT name externidx) is valid with the external type xt if: - - the external index externidx is valid with xt. +#. Let :math:`{\mathit{externaddr}}~{{\mathit{externaddr}'}^\ast}` be :math:`{{\mathit{externaddr}''}^\ast}`. -Module_ok -- the module (MODULE type* import* func* global* table* mem* elem* data* start? export*) is valid if: - - For all type in type*: - - the type type is valid with the function type ft'. - - ft'* is the concatenation of all such ft'. - - For all import in import*: - - Under the context { TYPES: ft'*; RETURN: ?() }, the import import is valid with the external type ixt. - - ixt* is the concatenation of all such ixt. - - For all global in global*: - - Under the context C', the global global is valid with the global type gt. - - gt* is the concatenation of all such gt. - - For all func in func*: - - the function func is valid with the function type ft. - - ft* is the concatenation of all such ft. - - For all table in table*: - - the table table is valid with the table type tt. - - tt* is the concatenation of all such tt. - - For all mem in mem*: - - the memory mem is valid with the memory type mt. - - mt* is the concatenation of all such mt. - - For all elem in elem*: - - the table segment elem is valid. - - For all data in data*: - - the memory segment data is valid. - - If start is defined, then: - - the start function start is valid. - - For all export in export*: - - the export export is valid with the external type xt. - - |tt*| is less than or equal to 1. - - |mt*| is less than or equal to 1. - - the context C' is { TYPES: ft'*; FUNCS: ift* :: ft*; GLOBALS: igt*; RETURN: ?() }. - - the function type sequence ift* is $funcsxt(ixt*). - - the global type sequence igt* is $globalsxt(ixt*). - - the table type sequence itt* is $tablesxt(ixt*). - - the memory type sequence imt* is $memsxt(ixt*). +#. Return :math:`{\mathrm{mems}}({{\mathit{externaddr}'}^\ast})`. -Step_read/load-num-* t ?() ao -1. Let z be the current state. -2. Assert: Due to validation, a value of value type I32 is on the top of the stack. -3. Pop the value (I32.CONST i) from the stack. -4. If (((i + ao.OFFSET) + ($size(t) / 8)) > |$mem(z, 0).BYTES|), then: - a. Trap. -5. Let c be $bytes__1^-1(t, $mem(z, 0).BYTES[(i + ao.OFFSET) : ($size(t) / 8)]). -6. Push the value (t.CONST c) to the stack. -Step_read/load-pack-* Inn ?(n _ sx) ao -1. Let z be the current state. -2. Assert: Due to validation, a value of value type I32 is on the top of the stack. -3. Pop the value (I32.CONST i) from the stack. -4. If (((i + ao.OFFSET) + (n / 8)) > |$mem(z, 0).BYTES|), then: - a. Trap. -5. Let c be $ibytes__1^-1(n, $mem(z, 0).BYTES[(i + ao.OFFSET) : (n / 8)]). -6. Push the value (Inn.CONST $extend__(n, $size(Inn), sx, c)) to the stack. +:math:`{\mathrm{allocfunc}}(s, {\mathit{moduleinst}}, {\mathit{func}})` +....................................................................... -Step/store-num-* t ?() ao -1. Let z be the current state. -2. Assert: Due to validation, a value of value type t is on the top of the stack. -3. Pop the value (valtype_0.CONST c) from the stack. -4. Assert: Due to validation, a value of value type I32 is on the top of the stack. -5. Pop the value (I32.CONST i) from the stack. -6. If (((i + ao.OFFSET) + ($size(t) / 8)) > |$mem(z, 0).BYTES|), then: - a. Trap. -7. Let b* be $bytes_(t, c). -8. Perform $with_mem(z, 0, (i + ao.OFFSET), ($size(t) / 8), b*). -Step/store-pack-* Inn ?(n) ao -1. Let z be the current state. -2. Assert: Due to validation, a value of value type Inn is on the top of the stack. -3. Pop the value (valtype_0.CONST c) from the stack. -4. Assert: Due to validation, a value of value type I32 is on the top of the stack. -5. Pop the value (I32.CONST i) from the stack. -6. If (((i + ao.OFFSET) + (n / 8)) > |$mem(z, 0).BYTES|), then: - a. Trap. -7. Let b* be $ibytes_(n, $wrap__($size(Inn), n, c)). -8. Perform $with_mem(z, 0, (i + ao.OFFSET), (n / 8), b*). +1. Let :math:`(\mathsf{func}~x~{{\mathit{local}}^\ast}~{\mathit{expr}})` be the destructuring of :math:`{\mathit{func}}`. -Step_pure/unreachable +#. Let :math:`{\mathit{fi}}` be the function instance :math:`\{ \mathsf{type}~{\mathit{moduleinst}}{.}\mathsf{types}{}[x],\;\allowbreak \mathsf{module}~{\mathit{moduleinst}},\;\allowbreak \mathsf{code}~{\mathit{func}} \}`. + +#. Let :math:`a` be the length of :math:`s{.}\mathsf{funcs}`. + +#. Append :math:`{\mathit{fi}}` to :math:`s{.}\mathsf{funcs}`. + +#. Return :math:`a`. + + +:math:`{\mathrm{allocfuncs}}(s, {\mathit{moduleinst}}, {{\mathit{func}''}^\ast})` +................................................................................. + + +1. If :math:`{{\mathit{func}''}^\ast} = \epsilon`, then: + + a. Return :math:`\epsilon`. + +#. Let :math:`{\mathit{func}}~{{\mathit{func}'}^\ast}` be :math:`{{\mathit{func}''}^\ast}`. + +#. Let :math:`{\mathit{fa}}` be :math:`{\mathrm{allocfunc}}(s, {\mathit{moduleinst}}, {\mathit{func}})`. + +#. Let :math:`{{\mathit{fa}'}^\ast}` be :math:`{\mathrm{allocfuncs}}(s, {\mathit{moduleinst}}, {{\mathit{func}'}^\ast})`. + +#. Return :math:`{\mathit{fa}}~{{\mathit{fa}'}^\ast}`. + + +:math:`{\mathrm{allocglobal}}(s, {\mathit{globaltype}}, {\mathit{val}})` +........................................................................ + + +1. Let :math:`{\mathit{gi}}` be the global instance :math:`\{ \mathsf{type}~{\mathit{globaltype}},\;\allowbreak \mathsf{value}~{\mathit{val}} \}`. + +#. Let :math:`a` be the length of :math:`s{.}\mathsf{globals}`. + +#. Append :math:`{\mathit{gi}}` to :math:`s{.}\mathsf{globals}`. + +#. Return :math:`a`. + + +:math:`{\mathrm{allocglobals}}(s, {{\mathit{globaltype}''}^\ast}, {{\mathit{val}''}^\ast})` +........................................................................................... + + +1. If :math:`{{\mathit{globaltype}''}^\ast} = \epsilon`, then: + + a. Assert: :math:`{{\mathit{val}''}^\ast} = \epsilon`. + + #. Return :math:`\epsilon`. + +#. Else: + + a. Let :math:`{\mathit{globaltype}}~{{\mathit{globaltype}'}^\ast}` be :math:`{{\mathit{globaltype}''}^\ast}`. + + #. Assert: :math:`{|{{\mathit{val}''}^\ast}|} \geq 1`. + + #. Let :math:`{\mathit{val}}~{{\mathit{val}'}^\ast}` be :math:`{{\mathit{val}''}^\ast}`. + + #. Let :math:`{\mathit{ga}}` be :math:`{\mathrm{allocglobal}}(s, {\mathit{globaltype}}, {\mathit{val}})`. + + #. Let :math:`{{\mathit{ga}'}^\ast}` be :math:`{\mathrm{allocglobals}}(s, {{\mathit{globaltype}'}^\ast}, {{\mathit{val}'}^\ast})`. + + #. Return :math:`{\mathit{ga}}~{{\mathit{ga}'}^\ast}`. + + +:math:`{\mathrm{alloctable}}(s, {}[ i .. {j^?} ])` +.................................................. + + +1. Let :math:`{\mathit{ti}}` be the table instance :math:`\{ \mathsf{type}~{}[ i .. {j^?} ],\;\allowbreak \mathsf{refs}~{\epsilon^{i}} \}`. + +#. Let :math:`a` be the length of :math:`s{.}\mathsf{tables}`. + +#. Append :math:`{\mathit{ti}}` to :math:`s{.}\mathsf{tables}`. + +#. Return :math:`a`. + + +:math:`{\mathrm{alloctables}}(s, {{\mathit{tabletype}''}^\ast})` +................................................................ + + +1. If :math:`{{\mathit{tabletype}''}^\ast} = \epsilon`, then: + + a. Return :math:`\epsilon`. + +#. Let :math:`{\mathit{tabletype}}~{{\mathit{tabletype}'}^\ast}` be :math:`{{\mathit{tabletype}''}^\ast}`. + +#. Let :math:`{\mathit{ta}}` be :math:`{\mathrm{alloctable}}(s, {\mathit{tabletype}})`. + +#. Let :math:`{{\mathit{ta}'}^\ast}` be :math:`{\mathrm{alloctables}}(s, {{\mathit{tabletype}'}^\ast})`. + +#. Return :math:`{\mathit{ta}}~{{\mathit{ta}'}^\ast}`. + + +:math:`{\mathrm{allocmem}}(s, {}[ i .. {j^?} ])` +................................................ + + +1. Let :math:`{\mathit{mi}}` be the memory instance :math:`\{ \mathsf{type}~{}[ i .. {j^?} ],\;\allowbreak \mathsf{bytes}~{\mathtt{0x00}^{i \cdot 64 \, {\mathrm{Ki}}}} \}`. + +#. Let :math:`a` be the length of :math:`s{.}\mathsf{mems}`. + +#. Append :math:`{\mathit{mi}}` to :math:`s{.}\mathsf{mems}`. + +#. Return :math:`a`. + + +:math:`{\mathrm{allocmems}}(s, {{\mathit{memtype}''}^\ast})` +............................................................ + + +1. If :math:`{{\mathit{memtype}''}^\ast} = \epsilon`, then: + + a. Return :math:`\epsilon`. + +#. Let :math:`{\mathit{memtype}}~{{\mathit{memtype}'}^\ast}` be :math:`{{\mathit{memtype}''}^\ast}`. + +#. Let :math:`{\mathit{ma}}` be :math:`{\mathrm{allocmem}}(s, {\mathit{memtype}})`. + +#. Let :math:`{{\mathit{ma}'}^\ast}` be :math:`{\mathrm{allocmems}}(s, {{\mathit{memtype}'}^\ast})`. + +#. Return :math:`{\mathit{ma}}~{{\mathit{ma}'}^\ast}`. + + +:math:`{\mathrm{instexport}}({{\mathit{fa}}^\ast}, {{\mathit{ga}}^\ast}, {{\mathit{ta}}^\ast}, {{\mathit{ma}}^\ast}, \mathsf{export}~{\mathit{name}}~{\mathit{externidx}})` +........................................................................................................................................................................... + + +1. If :math:`{\mathit{externidx}}` is some :math:`\mathsf{func}~{\mathit{funcidx}}`, then: + + a. Let :math:`(\mathsf{func}~x)` be the destructuring of :math:`{\mathit{externidx}}`. + + #. Return :math:`\{ \mathsf{name}~{\mathit{name}},\;\allowbreak \mathsf{addr}~(\mathsf{func}~{{\mathit{fa}}^\ast}{}[x]) \}`. + +#. If :math:`{\mathit{externidx}}` is some :math:`\mathsf{global}~{\mathit{globalidx}}`, then: + + a. Let :math:`(\mathsf{global}~x)` be the destructuring of :math:`{\mathit{externidx}}`. + + #. Return :math:`\{ \mathsf{name}~{\mathit{name}},\;\allowbreak \mathsf{addr}~(\mathsf{global}~{{\mathit{ga}}^\ast}{}[x]) \}`. + +#. If :math:`{\mathit{externidx}}` is some :math:`\mathsf{table}~{\mathit{tableidx}}`, then: + + a. Let :math:`(\mathsf{table}~x)` be the destructuring of :math:`{\mathit{externidx}}`. + + #. Return :math:`\{ \mathsf{name}~{\mathit{name}},\;\allowbreak \mathsf{addr}~(\mathsf{table}~{{\mathit{ta}}^\ast}{}[x]) \}`. + +#. Assert: :math:`{\mathit{externidx}}` is some :math:`\mathsf{mem}~{\mathit{memidx}}`. + +#. Let :math:`(\mathsf{mem}~x)` be the destructuring of :math:`{\mathit{externidx}}`. + +#. Return :math:`\{ \mathsf{name}~{\mathit{name}},\;\allowbreak \mathsf{addr}~(\mathsf{mem}~{{\mathit{ma}}^\ast}{}[x]) \}`. + + +:math:`{\mathrm{allocmodule}}(s, {\mathit{module}}, {{\mathit{externaddr}}^\ast}, {{\mathit{val}}^\ast})` +......................................................................................................... + + +1. Let :math:`(\mathsf{module}~{{\mathit{type}}_0^\ast}~{{\mathit{import}}^\ast}~{{\mathit{func}}^{n_{\mathit{func}}}}~{{\mathit{global}}_1^\ast}~{{\mathit{table}}_2^\ast}~{{\mathit{mem}}_3^\ast}~{{\mathit{elem}}^\ast}~{{\mathit{data}}^\ast}~{{\mathit{start}}^?}~{{\mathit{export}}^\ast})` be the destructuring of :math:`{\mathit{module}}`. + +#. Let :math:`{(\mathsf{memory}~{\mathit{memtype}})^{n_{\mathit{mem}}}}` be :math:`{{\mathit{mem}}_3^\ast}`. + +#. Let :math:`{(\mathsf{table}~{\mathit{tabletype}})^{n_{\mathit{table}}}}` be :math:`{{\mathit{table}}_2^\ast}`. + +#. Let :math:`{(\mathsf{global}~{\mathit{globaltype}}~{\mathit{expr}}_1)^{n_{\mathit{global}}}}` be :math:`{{\mathit{global}}_1^\ast}`. + +#. Let :math:`{{\mathit{ft}}^\ast}` be the function type sequence :math:`\epsilon`. + +#. For each :math:`{\mathit{type}}_0` in :math:`{{\mathit{type}}_0^\ast}`, do: + + a. Let :math:`(\mathsf{type}~{\mathit{ft}})` be the destructuring of :math:`{\mathit{type}}_0`. + + #. Append :math:`{\mathit{ft}}` to :math:`{{\mathit{ft}}^\ast}`. + +#. Let :math:`{{\mathit{fa}}_{\mathit{ex}}^\ast}` be :math:`{\mathrm{funcs}}({{\mathit{externaddr}}^\ast})`. + +#. Let :math:`{{\mathit{ga}}_{\mathit{ex}}^\ast}` be :math:`{\mathrm{globals}}({{\mathit{externaddr}}^\ast})`. + +#. Let :math:`{{\mathit{ma}}_{\mathit{ex}}^\ast}` be :math:`{\mathrm{mems}}({{\mathit{externaddr}}^\ast})`. + +#. Let :math:`{{\mathit{ta}}_{\mathit{ex}}^\ast}` be :math:`{\mathrm{tables}}({{\mathit{externaddr}}^\ast})`. + +#. Let :math:`{{\mathit{fa}}^\ast}` be :math:`{|s{.}\mathsf{funcs}|} + i_{\mathit{func}}` for all :math:`i_{\mathit{func}}` from :math:`0` to :math:`n_{\mathit{func}} - 1`. + +#. Let :math:`{{\mathit{ga}}^\ast}` be :math:`{|s{.}\mathsf{globals}|} + i_{\mathit{global}}` for all :math:`i_{\mathit{global}}` from :math:`0` to :math:`n_{\mathit{global}} - 1`. + +#. Let :math:`{{\mathit{ta}}^\ast}` be :math:`{|s{.}\mathsf{tables}|} + i_{\mathit{table}}` for all :math:`i_{\mathit{table}}` from :math:`0` to :math:`n_{\mathit{table}} - 1`. + +#. Let :math:`{{\mathit{ma}}^\ast}` be :math:`{|s{.}\mathsf{mems}|} + i_{\mathit{mem}}` for all :math:`i_{\mathit{mem}}` from :math:`0` to :math:`n_{\mathit{mem}} - 1`. + +#. Let :math:`{{\mathit{xi}}^\ast}` be the export instance sequence :math:`\epsilon`. + +#. For each :math:`{\mathit{export}}` in :math:`{{\mathit{export}}^\ast}`, do: + + a. Let :math:`{\mathit{xi}}` be the export instance :math:`{\mathrm{instexport}}({{\mathit{fa}}_{\mathit{ex}}^\ast}~{{\mathit{fa}}^\ast}, {{\mathit{ga}}_{\mathit{ex}}^\ast}~{{\mathit{ga}}^\ast}, {{\mathit{ta}}_{\mathit{ex}}^\ast}~{{\mathit{ta}}^\ast}, {{\mathit{ma}}_{\mathit{ex}}^\ast}~{{\mathit{ma}}^\ast}, {\mathit{export}})`. + + #. Append :math:`{\mathit{xi}}` to :math:`{{\mathit{xi}}^\ast}`. + +#. Let :math:`{\mathit{moduleinst}}` be the module instance :math:`\{ \mathsf{types}~{{\mathit{ft}}^\ast},\;\allowbreak \mathsf{funcs}~{{\mathit{fa}}_{\mathit{ex}}^\ast}~{{\mathit{fa}}^\ast},\;\allowbreak \mathsf{globals}~{{\mathit{ga}}_{\mathit{ex}}^\ast}~{{\mathit{ga}}^\ast},\;\allowbreak \mathsf{tables}~{{\mathit{ta}}_{\mathit{ex}}^\ast}~{{\mathit{ta}}^\ast},\;\allowbreak \mathsf{mems}~{{\mathit{ma}}_{\mathit{ex}}^\ast}~{{\mathit{ma}}^\ast},\;\allowbreak \mathsf{exports}~{{\mathit{xi}}^\ast} \}`. + +#. Let :math:`{{\mathit{funcaddr}}_0^\ast}` be :math:`{\mathrm{allocfuncs}}(s, {\mathit{moduleinst}}, {{\mathit{func}}^{n_{\mathit{func}}}})`. + +#. Assert: Due to validation, :math:`{{\mathit{funcaddr}}_0^\ast} = {{\mathit{fa}}^\ast}`. + +#. Let :math:`{{\mathit{globaladdr}}_0^\ast}` be :math:`{\mathrm{allocglobals}}(s, {{\mathit{globaltype}}^{n_{\mathit{global}}}}, {{\mathit{val}}^\ast})`. + +#. Assert: Due to validation, :math:`{{\mathit{globaladdr}}_0^\ast} = {{\mathit{ga}}^\ast}`. + +#. Let :math:`{{\mathit{tableaddr}}_0^\ast}` be :math:`{\mathrm{alloctables}}(s, {{\mathit{tabletype}}^{n_{\mathit{table}}}})`. + +#. Assert: Due to validation, :math:`{{\mathit{tableaddr}}_0^\ast} = {{\mathit{ta}}^\ast}`. + +#. Let :math:`{{\mathit{memaddr}}_0^\ast}` be :math:`{\mathrm{allocmems}}(s, {{\mathit{memtype}}^{n_{\mathit{mem}}}})`. + +#. Assert: Due to validation, :math:`{{\mathit{memaddr}}_0^\ast} = {{\mathit{ma}}^\ast}`. + +#. Return :math:`{\mathit{moduleinst}}`. + + +:math:`{\mathrm{initelem}}(s, {\mathit{moduleinst}}, {{\mathit{u{\kern-0.1em\scriptstyle 32}}}^\ast}, {{\mathit{funcaddr}}^\ast})` +.................................................................................................................................. + + +1. If :math:`{{\mathit{funcaddr}}^\ast} = \epsilon`, then: + + a. Assert: :math:`{{\mathit{u{\kern-0.1em\scriptstyle 32}}}^\ast} = \epsilon`. + + #. Return. + +#. Else: + + a. Let :math:`{a^\ast}~{{{a'}^\ast}^\ast}` be :math:`{{\mathit{funcaddr}}^\ast}`. + + #. Assert: :math:`{|{{\mathit{u{\kern-0.1em\scriptstyle 32}}}^\ast}|} \geq 1`. + + #. Let :math:`i~{{i'}^\ast}` be :math:`{{\mathit{u{\kern-0.1em\scriptstyle 32}}}^\ast}`. + + #. Replace :math:`s{.}\mathsf{tables}{}[{\mathit{moduleinst}}{.}\mathsf{tables}{}[0]]{.}\mathsf{refs}{}[i : {|{a^\ast}|}]` with :math:`{a^\ast}`. + + #. Perform :math:`{\mathrm{initelem}}(s, {\mathit{moduleinst}}, {{i'}^\ast}, {{{a'}^\ast}^\ast})`. + + #. Return. + + +:math:`{\mathrm{initdata}}(s, {\mathit{moduleinst}}, {{\mathit{u{\kern-0.1em\scriptstyle 32}}}^\ast}, {{\mathit{byte}}^\ast})` +.............................................................................................................................. + + +1. If :math:`{{\mathit{byte}}^\ast} = \epsilon`, then: + + a. Assert: :math:`{{\mathit{u{\kern-0.1em\scriptstyle 32}}}^\ast} = \epsilon`. + + #. Return. + +#. Else: + + a. Let :math:`{b^\ast}~{{{b'}^\ast}^\ast}` be :math:`{{\mathit{byte}}^\ast}`. + + #. Assert: :math:`{|{{\mathit{u{\kern-0.1em\scriptstyle 32}}}^\ast}|} \geq 1`. + + #. Let :math:`i~{{i'}^\ast}` be :math:`{{\mathit{u{\kern-0.1em\scriptstyle 32}}}^\ast}`. + + #. Replace :math:`s{.}\mathsf{mems}{}[{\mathit{moduleinst}}{.}\mathsf{mems}{}[0]]{.}\mathsf{bytes}{}[i : {|{b^\ast}|}]` with :math:`{b^\ast}`. + + #. Perform :math:`{\mathrm{initdata}}(s, {\mathit{moduleinst}}, {{i'}^\ast}, {{{b'}^\ast}^\ast})`. + + #. Return. + + +:math:`{\mathrm{instantiate}}(s, {\mathit{module}}, {{\mathit{externaddr}}^\ast})` +.................................................................................. + + +1. Let :math:`(\mathsf{module}~{{\mathit{type}}^\ast}~{{\mathit{import}}^\ast}~{{\mathit{func}}^\ast}~{{\mathit{global}}^\ast}~{{\mathit{table}}^\ast}~{{\mathit{mem}}^\ast}~{{\mathit{elem}}^\ast}~{{\mathit{data}}^\ast}~{{\mathit{start}}^?}~{{\mathit{export}}^\ast})` be the destructuring of :math:`{\mathit{module}}`. + +#. Let :math:`{{\mathit{functype}}^\ast}` be the function type sequence :math:`\epsilon`. + +#. For each :math:`{\mathit{type}}` in :math:`{{\mathit{type}}^\ast}`, do: + + a. Let :math:`(\mathsf{type}~{\mathit{functype}})` be the destructuring of :math:`{\mathit{type}}`. + + #. Append :math:`{\mathit{functype}}` to :math:`{{\mathit{functype}}^\ast}`. + +#. Let :math:`n_{\mathsf{f}}` be the length of :math:`{{\mathit{func}}^\ast}`. + +#. Let :math:`{{b^\ast}^\ast}` be the byte sequence sequence :math:`\epsilon`. + +#. Let :math:`{{\mathit{expr}}_{\mathsf{d}}^\ast}` be the expression sequence :math:`\epsilon`. + +#. For each :math:`{\mathit{data}}` in :math:`{{\mathit{data}}^\ast}`, do: + + a. Let :math:`(\mathsf{data}~{\mathit{expr}}_{\mathsf{d}}~{b^\ast})` be the destructuring of :math:`{\mathit{data}}`. + + #. Append :math:`{b^\ast}` to :math:`{{b^\ast}^\ast}`. + + #. Append :math:`{\mathit{expr}}_{\mathsf{d}}` to :math:`{{\mathit{expr}}_{\mathsf{d}}^\ast}`. + +#. Let :math:`{{\mathit{expr}}_{\mathsf{e}}^\ast}` be the expression sequence :math:`\epsilon`. + +#. Let :math:`{{x^\ast}^\ast}` be the function index sequence sequence :math:`\epsilon`. + +#. For each :math:`{\mathit{elem}}` in :math:`{{\mathit{elem}}^\ast}`, do: + + a. Let :math:`(\mathsf{elem}~{\mathit{expr}}_{\mathsf{e}}~{x^\ast})` be the destructuring of :math:`{\mathit{elem}}`. + + #. Append :math:`{\mathit{expr}}_{\mathsf{e}}` to :math:`{{\mathit{expr}}_{\mathsf{e}}^\ast}`. + + #. Append :math:`{x^\ast}` to :math:`{{x^\ast}^\ast}`. + +#. Let :math:`{{\mathit{expr}}_{\mathsf{g}}^\ast}` be the expression sequence :math:`\epsilon`. + +#. For each :math:`{\mathit{global}}` in :math:`{{\mathit{global}}^\ast}`, do: + + a. Let :math:`(\mathsf{global}~{\mathit{globaltype}}~{\mathit{expr}}_{\mathsf{g}})` be the destructuring of :math:`{\mathit{global}}`. + + #. Append :math:`{\mathit{expr}}_{\mathsf{g}}` to :math:`{{\mathit{expr}}_{\mathsf{g}}^\ast}`. + +#. Let :math:`{\mathit{moduleinst}}_{\mathit{init}}` be the module instance :math:`\{ \mathsf{types}~{{\mathit{functype}}^\ast},\;\allowbreak \mathsf{funcs}~{\mathrm{funcs}}({{\mathit{externaddr}}^\ast})~{({|s{.}\mathsf{funcs}|} + i_{\mathsf{f}})^{i_{\mathsf{f}}` :math:`{\mathit{expr}}_{\mathsf{d}}` with state :math:`z`. + + #. Append :math:`i_{\mathsf{d}}` to :math:`{i_{\mathsf{d}}^\ast}`. + +#. Let :math:`{i_{\mathsf{e}}^\ast}` be :math:`\epsilon`. + +#. For each :math:`{\mathit{expr}}_{\mathsf{e}}` in :math:`{{\mathit{expr}}_{\mathsf{e}}^\ast}`, do: + + a. Let :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_{\mathsf{e}})` be the result of :ref:`evaluating ` :math:`{\mathit{expr}}_{\mathsf{e}}` with state :math:`z`. + + #. Append :math:`i_{\mathsf{e}}` to :math:`{i_{\mathsf{e}}^\ast}`. + +#. Let :math:`{{\mathit{val}}^\ast}` be the value sequence :math:`\epsilon`. + +#. For each :math:`{\mathit{expr}}_{\mathsf{g}}` in :math:`{{\mathit{expr}}_{\mathsf{g}}^\ast}`, do: + + a. Let :math:`{\mathit{val}}` be the result of :ref:`evaluating ` :math:`{\mathit{expr}}_{\mathsf{g}}` with state :math:`z`. + + #. Append :math:`{\mathit{val}}` to :math:`{{\mathit{val}}^\ast}`. + +#. Pop the :math:`\mathsf{frame}` from the stack. + +#. Let :math:`{\mathit{moduleinst}}` be :math:`{\mathrm{allocmodule}}(s, {\mathit{module}}, {{\mathit{externaddr}}^\ast}, {{\mathit{val}}^\ast})`. + +#. Let :math:`f` be the frame :math:`\{ \mathsf{module}~{\mathit{moduleinst}} \}`. + +#. Perform :math:`{\mathrm{initelem}}(s, {\mathit{moduleinst}}, {i_{\mathsf{e}}^\ast}, {{{\mathit{moduleinst}}{.}\mathsf{funcs}{}[x]^\ast}^\ast})`. + +#. Perform :math:`{\mathrm{initdata}}(s, {\mathit{moduleinst}}, {i_{\mathsf{d}}^\ast}, {{b^\ast}^\ast})`. + +#. Let :math:`{f'}` be the :math:`\mathsf{frame}` :math:`f`. + +#. Push the :math:`\mathsf{frame}` :math:`{f'}`. + +#. If :math:`{{\mathit{start}}^?}` is defined, then: + + a. Let :math:`(\mathsf{start}~{x'})` be :math:`{{\mathit{start}}^?}`. + + #. Let :math:`{\mathit{instr}}_0` be the administrative instruction :math:`(\mathsf{call}~{x'})`. + + #. Execute the instruction :math:`{\mathit{instr}}_0`. + +#. Pop the :math:`\mathsf{frame}` from the stack. + +#. Return :math:`f{.}\mathsf{module}`. + + +:math:`{\mathrm{invoke}}(s, {\mathit{fa}}, {{\mathit{val}}^{n}})` +................................................................. + + +1. Let :math:`f` be the frame :math:`\{ \mathsf{module}~\{ \} \}`. + +#. Let :math:`F` be the :math:`\mathsf{frame}` :math:`(s, f)`. + +#. Push the :math:`\mathsf{frame}` :math:`F`. + +#. Let :math:`{t_1^{n}}~\rightarrow~{t_2^\ast}` be the destructuring of :math:`(s, f){.}\mathsf{funcs}{}[{\mathit{fa}}]{.}\mathsf{type}`. + +#. Pop the :math:`\mathsf{frame}` from the stack. + +#. Let :math:`k` be the length of :math:`{t_2^\ast}`. + +#. Let :math:`{f'}` be the :math:`\mathsf{frame}` :math:`f` whose arity is :math:`k`. + +#. Push the :math:`\mathsf{frame}` :math:`{f'}`. + +#. Push the values :math:`{{\mathit{val}}^{n}}` to the stack. + +#. Execute the instruction :math:`(\mathsf{call}~{\mathit{fa}})`. + +#. Pop the values :math:`{{\mathit{val}'}^{k}}` from the stack. + +#. Pop the :math:`\mathsf{frame}` from the stack. + +#. Return :math:`{{\mathit{val}'}^{k}}`. + + +:math:`\mathsf{eval\_expr}~{{\mathit{instr}}^\ast}` +................................................... + + +1. Execute the sequence :math:`{{\mathit{instr}}^\ast}`. + +#. Pop the value :math:`{\mathit{val}}` from the stack. + +#. Return :math:`{\mathit{val}}`. + + +== Complete. +spectec 0.5 generator +== Parsing... +== Elaboration... +== IL Validation... +== Running pass sideconditions... +== IL Validation after pass sideconditions... +== Translating to AL... +== Prose Generation... +../../../../specification/wasm-1.0/B-soundness.spectec:139.8-139.45: prem_to_instrs: Yet `Externaddr_ok: `%|-%:%`(s, FUNC_externaddr(fa), FUNC_externtype(ft))` +Limits_ok +- the limits ([ n .. m? ]) is valid with k if: + - n is less than or equal to k. + - If m is defined, then: + - n is less than or equal to m. + - m is less than or equal to k. + +Functype_ok +- the function type t_1* -> t_2? is always valid. + +Globaltype_ok +- the global type (MUT? t) is always valid. + +Tabletype_ok +- the table type limits is valid if: + - limits is valid with ((2 ^ 32) - 1). + +Memtype_ok +- the memory type limits is valid if: + - limits is valid with (2 ^ 16). + +Externtype_ok +- the external type externtype is valid if: + - Either: + - externtype is (FUNC functype). + - the function type functype is valid. + - Or: + - externtype is (GLOBAL globaltype). + - the global type globaltype is valid. + - Or: + - externtype is (TABLE tabletype). + - the table type tabletype is valid. + - Or: + - externtype is (MEM memtype). + - the memory type memtype is valid. + +Externtype_ok/func +- the external type (FUNC functype) is valid if: + - the function type functype is valid. + +Externtype_ok/global +- the external type (GLOBAL globaltype) is valid if: + - the global type globaltype is valid. + +Externtype_ok/table +- the external type (TABLE tabletype) is valid if: + - the table type tabletype is valid. + +Externtype_ok/mem +- the external type (MEM memtype) is valid if: + - the memory type memtype is valid. + +Limits_sub +- the limits ([ n_11 .. ?(n_12) ]) matches the limits ([ n_21 .. ?(n_22) ]) if: + - n_11 is greater than or equal to n_21. + - n_12 is less than or equal to n_22. + +Functype_sub +- the function type ft matches only itself. + +Globaltype_sub +- the global type gt matches only itself. + +Tabletype_sub +- the table type lim_1 matches the table type lim_2 if: + - lim_1 matches lim_2. + +Memtype_sub +- the memory type lim_1 matches the memory type lim_2 if: + - lim_1 matches lim_2. + +Externtype_sub +- the external type externtype_1 matches the external type externtype_2 if: + - Either: + - externtype_1 is (FUNC ft_1). + - externtype_2 is (FUNC ft_2). + - the function type ft_1 matches the function type ft_2. + - Or: + - externtype_1 is (GLOBAL gt_1). + - externtype_2 is (GLOBAL gt_2). + - the global type gt_1 matches the global type gt_2. + - Or: + - externtype_1 is (TABLE tt_1). + - externtype_2 is (TABLE tt_2). + - the table type tt_1 matches the table type tt_2. + - Or: + - externtype_1 is (MEM mt_1). + - externtype_2 is (MEM mt_2). + - the memory type mt_1 matches the memory type mt_2. + +Externtype_sub/func +- the external type (FUNC ft_1) matches the external type (FUNC ft_2) if: + - the function type ft_1 matches the function type ft_2. + +Externtype_sub/global +- the external type (GLOBAL gt_1) matches the external type (GLOBAL gt_2) if: + - the global type gt_1 matches the global type gt_2. + +Externtype_sub/table +- the external type (TABLE tt_1) matches the external type (TABLE tt_2) if: + - the table type tt_1 matches the table type tt_2. + +Externtype_sub/mem +- the external type (MEM mt_1) matches the external type (MEM mt_2) if: + - the memory type mt_1 matches the memory type mt_2. + +Instr_ok/nop +- the instruction NOP is valid with the function type [] -> []. + +Instr_ok/unreachable +- the instruction UNREACHABLE is valid with the function type t_1* -> t_2*. + +Instr_ok/drop +- the instruction DROP is valid with the function type [t] -> []. + +Instr_ok/select +- the instruction SELECT is valid with the function type [t, t, I32] -> [t]. + +Instr_ok/block +- the instruction (BLOCK t? instr*) is valid with the function type [] -> t? if: + - the context C' is the context C with .LABELS prepended by [t?]. + - Under the context C', the instruction sequence instr* is valid with [] -> t?. + +Instr_ok/loop +- the instruction (LOOP t? instr*) is valid with the function type [] -> t? if: + - the context C' is the context C with .LABELS prepended by [?()]. + - Under the context C', the instruction sequence instr* is valid with the function type [] -> []. + +Instr_ok/if +- the instruction (IF t? instr_1* ELSE instr_2*) is valid with the function type [I32] -> t? if: + - the context C' is the context C with .LABELS prepended by [t?]. + - Under the context C', the instruction sequence instr_1* is valid with the function type [] -> t?. + - Under the context C', the instruction sequence instr_2* is valid with [] -> t?. + +Instr_ok/br +- the instruction (BR l) is valid with the function type t_1* :: t? -> t_2* if: + - the result type C.LABELS[l] exists. + - C.LABELS[l] is t?. + +Instr_ok/br_if +- the instruction (BR_IF l) is valid with the function type t? :: [I32] -> t? if: + - the result type C.LABELS[l] exists. + - C.LABELS[l] is t?. + +Instr_ok/br_table +- the instruction (BR_TABLE l* l') is valid with the function type t_1* :: t? :: [I32] -> t_2* if: + - the result type C.LABELS[l'] exists. + - the result type t? is C.LABELS[l']. + - For all l in l*: + - the result type C.LABELS[l] exists. + - t? is C.LABELS[l]. + +Instr_ok/call +- the instruction (CALL x) is valid with the function type t_1* -> t_2? if: + - the function type C.FUNCS[x] exists. + - C.FUNCS[x] is t_1* -> t_2?. + +Instr_ok/call_indirect +- the instruction (CALL_INDIRECT x) is valid with the function type t_1* :: [I32] -> t_2? if: + - the function type C.TYPES[x] exists. + - C.TYPES[x] is t_1* -> t_2?. + +Instr_ok/return +- the instruction RETURN is valid with the function type t_1* :: t? -> t_2* if: + - the result type C.RETURN is ?(t?). + +Instr_ok/const +- the instruction (t.CONST c_t) is valid with the function type [] -> [t]. + +Instr_ok/unop +- the instruction (UNOP t unop_t) is valid with the function type [t] -> [t]. + +Instr_ok/binop +- the instruction (BINOP t binop_t) is valid with the function type [t, t] -> [t]. + +Instr_ok/testop +- the instruction (TESTOP t testop_t) is valid with the function type [t] -> [I32]. + +Instr_ok/relop +- the instruction (RELOP t relop_t) is valid with the function type [t, t] -> [I32]. + +Instr_ok/cvtop +- the instruction (CVTOP nt_1 nt_2 cvtop) is valid with the function type [nt_2] -> [nt_1] if: + - Either: + - cvtop is REINTERPRET. + - $size(nt_1) is $size(nt_2). + - Or: + + +Instr_ok/local.get +- the instruction (LOCAL.GET x) is valid with the function type [] -> [t] if: + - the number type C.LOCALS[x] exists. + - C.LOCALS[x] is t. + +Instr_ok/local.set +- the instruction (LOCAL.SET x) is valid with the function type [t] -> [] if: + - the number type C.LOCALS[x] exists. + - C.LOCALS[x] is t. + +Instr_ok/local.tee +- the instruction (LOCAL.TEE x) is valid with the function type [t] -> [t] if: + - the number type C.LOCALS[x] exists. + - C.LOCALS[x] is t. + +Instr_ok/global.get +- the instruction (GLOBAL.GET x) is valid with the function type [] -> [t] if: + - the global type C.GLOBALS[x] exists. + - C.GLOBALS[x] is (mut t). + +Instr_ok/global.set +- the instruction (GLOBAL.SET x) is valid with the function type [t] -> [] if: + - the global type C.GLOBALS[x] exists. + - C.GLOBALS[x] is (?(MUT) t). + +Instr_ok/memory.size +- the instruction MEMORY.SIZE is valid with the function type [] -> [I32]. + +Instr_ok/memory.grow +- the instruction MEMORY.GROW is valid with the function type [I32] -> [I32]. + +Instr_ok/load +- the instruction (LOAD t loadop_? memarg) is valid with the function type [I32] -> [t'] if: + - Either: + - loadop_? is ?(). + - the number type t' is t. + - (2 ^ memarg.ALIGN) is less than or equal to ($size(t) / 8). + - Or: + - the number type t is Inn. + - loadop_? is ?(M _ sx). + - t' is Inn. + - (2 ^ memarg.ALIGN) is less than or equal to (M / 8). + +Instr_ok/store +- the instruction (STORE t sz? memarg) is valid with the function type [I32, t'] -> [] if: + - Either: + - the pack size sz? is ?(). + - the number type t' is t. + - (2 ^ memarg.ALIGN) is less than or equal to ($size(t) / 8). + - Or: + - the number type t is Inn. + - sz? is ?(M). + - t' is Inn. + - (2 ^ memarg.ALIGN) is less than or equal to (M / 8). + +Instr_ok/cvtop-reinterpret +- the instruction (CVTOP nt_1 nt_2 REINTERPRET) is valid with the function type [nt_2] -> [nt_1] if: + - $size(nt_1) is $size(nt_2). + +Instr_ok/cvtop-convert +- the instruction (CVTOP nt_1 nt_2 cvtop) is valid with [nt_2] -> [nt_1]. + +Instr_ok/load-val +- the instruction (LOAD t ?() memarg) is valid with the function type [I32] -> [t] if: + - (2 ^ memarg.ALIGN) is less than or equal to ($size(t) / 8). + +Instr_ok/load-pack +- the instruction (LOAD Inn ?(M _ sx) memarg) is valid with the function type [I32] -> [Inn] if: + - (2 ^ memarg.ALIGN) is less than or equal to (M / 8). + +Instr_ok/store-val +- the instruction (STORE t ?() memarg) is valid with the function type [I32, t] -> [] if: + - (2 ^ memarg.ALIGN) is less than or equal to ($size(t) / 8). + +Instr_ok/store-pack +- the instruction (STORE Inn ?(M) memarg) is valid with the function type [I32, Inn] -> [] if: + - (2 ^ memarg.ALIGN) is less than or equal to (M / 8). + +Instrs_ok +- the instruction sequence instr* is valid with the function type valtype* -> valtype'* if: + - Either: + - instr* is []. + - the number type sequence valtype* is []. + - the number type sequence valtype'* is []. + - Or: + - instr* is [instr_1] :: instr_2*. + - the instruction instr_1 is valid with the function type valtype* -> t_2*. + - the instruction sequence instr_2* is valid with the function type t_2* -> valtype'*. + - Or: + - valtype* is t* :: t_1*. + - valtype'* is t* :: t_2*. + - instr* is valid with the function type t_1* -> t_2*. + +Instrs_ok/empty +- the instruction sequence [] is valid with the function type [] -> []. + +Instrs_ok/seq +- the instruction sequence [instr_1] :: instr_2* is valid with the function type t_1* -> t_3* if: + - the instruction instr_1 is valid with the function type t_1* -> t_2*. + - the instruction sequence instr_2* is valid with the function type t_2* -> t_3*. + +Instrs_ok/frame +- the instruction sequence instr* is valid with the function type t* :: t_1* -> t* :: t_2* if: + - instr* is valid with the function type t_1* -> t_2*. + +Expr_ok +- the expression instr* is valid with the result type t? if: + - instr* is valid with the function type [] -> t?. + +Instr_const +- the instruction instr is constant if: + - Either: + - instr is (t.CONST c). + - Or: + - instr is (GLOBAL.GET x). + - the global type C.GLOBALS[x] exists. + - C.GLOBALS[x] is (?() t). + +Instr_const/const +- the instruction (t.CONST c) is constant. + +Instr_const/global.get +- the instruction (GLOBAL.GET x) is constant if: + - the global type C.GLOBALS[x] exists. + - C.GLOBALS[x] is (?() t). + +Expr_const +- the expression instr* is constant if: + - For all instr in instr*: + - the instruction instr is constant. + +Type_ok +- the type (TYPE ft) is valid with the function type ft if: + - ft is valid. + +Func_ok +- the function (FUNC x (LOCAL t)* expr) is valid with the function type t_1* -> t_2? if: + - the function type C.TYPES[x] exists. + - C.TYPES[x] is t_1* -> t_2?. + - Under the context C with .LOCALS appended by t_1* :: t* and .LABELS appended by [t_2?] and .RETURN appended by ?(t_2?), the expression expr is valid with the result type t_2?. + +Global_ok +- the global (GLOBAL gt expr) is valid with the global type gt if: + - gt is valid. + - gt is (mut t). + - the expression expr is valid with the number type ?(t). + - expr is constant. + +Table_ok +- the table (TABLE tt) is valid with the table type tt if: + - tt is valid. + +Mem_ok +- the memory (MEMORY mt) is valid with the memory type mt if: + - mt is valid. + +Elem_ok +- the table segment (ELEM expr x*) is valid if: + - the expression expr is valid with the number type ?(I32). + - expr is constant. + - For all x in x*: + - the function type C.FUNCS[x] exists. + +Data_ok +- the memory segment (DATA expr b*) is valid if: + - the expression expr is valid with the number type ?(I32). + - expr is constant. + +Start_ok +- the start function (START x) is valid if: + - the function type C.FUNCS[x] exists. + - C.FUNCS[x] is [] -> []. + +Import_ok +- the import (IMPORT name_1 name_2 xt) is valid with the external type xt if: + - xt is valid. + +Externidx_ok +- the external index externidx is valid with the external type externtype if: + - Either: + - externidx is (FUNC x). + - externtype is (FUNC ft). + - the function type C.FUNCS[x] exists. + - C.FUNCS[x] is ft. + - Or: + - externidx is (GLOBAL x). + - externtype is (GLOBAL gt). + - the global type C.GLOBALS[x] exists. + - C.GLOBALS[x] is gt. + - Or: + - externidx is (TABLE x). + - externtype is (TABLE tt). + - the table type C.TABLES[x] exists. + - C.TABLES[x] is tt. + - Or: + - externidx is (MEM x). + - externtype is (MEM mt). + - the memory type C.MEMS[x] exists. + - C.MEMS[x] is mt. + +Externidx_ok/func +- the external index (FUNC x) is valid with the external type (FUNC ft) if: + - the function type C.FUNCS[x] exists. + - C.FUNCS[x] is ft. + +Externidx_ok/global +- the external index (GLOBAL x) is valid with the external type (GLOBAL gt) if: + - the global type C.GLOBALS[x] exists. + - C.GLOBALS[x] is gt. + +Externidx_ok/table +- the external index (TABLE x) is valid with the external type (TABLE tt) if: + - the table type C.TABLES[x] exists. + - C.TABLES[x] is tt. + +Externidx_ok/mem +- the external index (MEM x) is valid with the external type (MEM mt) if: + - the memory type C.MEMS[x] exists. + - C.MEMS[x] is mt. + +Export_ok +- the export (EXPORT name externidx) is valid with the external type xt if: + - the external index externidx is valid with xt. + +Module_ok +- the module (MODULE type* import* func* global* table* mem* elem* data* start? export*) is valid if: + - For all type in type*: + - the type type is valid with the function type ft'. + - ft'* is the concatenation of all such ft'. + - For all import in import*: + - Under the context { TYPES: ft'*; RETURN: ?() }, the import import is valid with the external type ixt. + - ixt* is the concatenation of all such ixt. + - For all global in global*: + - Under the context C', the global global is valid with the global type gt. + - gt* is the concatenation of all such gt. + - For all func in func*: + - the function func is valid with the function type ft. + - ft* is the concatenation of all such ft. + - For all table in table*: + - the table table is valid with the table type tt. + - tt* is the concatenation of all such tt. + - For all mem in mem*: + - the memory mem is valid with the memory type mt. + - mt* is the concatenation of all such mt. + - For all elem in elem*: + - the table segment elem is valid. + - For all data in data*: + - the memory segment data is valid. + - If start is defined, then: + - the start function start is valid. + - For all export in export*: + - the export export is valid with the external type xt. + - |tt*| is less than or equal to 1. + - |mt*| is less than or equal to 1. + - the context C' is { TYPES: ft'*; FUNCS: ift* :: ft*; GLOBALS: igt*; RETURN: ?() }. + - the function type sequence ift* is $funcsxt(ixt*). + - the global type sequence igt* is $globalsxt(ixt*). + - the table type sequence itt* is $tablesxt(ixt*). + - the memory type sequence imt* is $memsxt(ixt*). + +Context_ok +- the context C is valid if: + - C is { TYPES: ft*; FUNCS: ft_2*; GLOBALS: gt*; TABLES: tt*; MEMS: mt*; LOCALS: lct*; LABELS: ?(rt)*; RETURN: ?(rt'?) }. + - For all ft in ft*: + - the function type ft is valid. + - For all gt in gt*: + - the global type gt is valid. + - For all mt in mt*: + - the memory type mt is valid. + - For all tt in tt*: + - the table type tt is valid. + - For all ft_2 in ft_2*: + - the function type ft_2 is valid. + +Val_ok +- the value (t.CONST c_t) is valid with the number type t. + +Result_ok +- the result result is valid with the number type sequence t* if: + - Either: + - result is (_VALS v*). + - For all t in t*, and corresponding v in v*: + - the value v is valid with the number type t. + - Or: + - result is TRAP. + +Result_ok/result +- the result (_VALS v*) is valid with the number type sequence t* if: + - For all t in t*, and corresponding v in v*: + - the value v is valid with the number type t. + +Result_ok/trap +- the result TRAP is valid with t*. + +Externaddr_ok +- the external value externaddr is valid with the external type externtype if: + - Either: + - externaddr is (GLOBAL a). + - externtype is (GLOBAL globalinst.TYPE). + - the global instance s.GLOBALS[a] exists. + - s.GLOBALS[a] is globalinst. + - Or: + - externaddr is (MEM a). + - externtype is (MEM meminst.TYPE). + - the memory instance s.MEMS[a] exists. + - s.MEMS[a] is meminst. + - Or: + - externaddr is (TABLE a). + - externtype is (TABLE tableinst.TYPE). + - the table instance s.TABLES[a] exists. + - s.TABLES[a] is tableinst. + - Or: + - externaddr is (FUNC a). + - externtype is (FUNC funcinst.TYPE). + - the function instance s.FUNCS[a] exists. + - s.FUNCS[a] is funcinst. + - Or: + - externaddr is valid with the external type xt'. + - xt' matches externtype. + +Externaddr_ok/global +- the external value (GLOBAL a) is valid with the external type (GLOBAL globalinst.TYPE) if: + - the global instance s.GLOBALS[a] exists. + - s.GLOBALS[a] is globalinst. + +Externaddr_ok/mem +- the external value (MEM a) is valid with the external type (MEM meminst.TYPE) if: + - the memory instance s.MEMS[a] exists. + - s.MEMS[a] is meminst. + +Externaddr_ok/table +- the external value (TABLE a) is valid with the external type (TABLE tableinst.TYPE) if: + - the table instance s.TABLES[a] exists. + - s.TABLES[a] is tableinst. + +Externaddr_ok/func +- the external value (FUNC a) is valid with the external type (FUNC funcinst.TYPE) if: + - the function instance s.FUNCS[a] exists. + - s.FUNCS[a] is funcinst. + +Externaddr_ok/sub +- the external value externaddr is valid with the external type xt if: + - externaddr is valid with the external type xt'. + - xt' matches xt. + +Exportinst_ok +- the export instance { NAME: nm; ADDR: xa } is valid if: + - the external value xa is valid with the external type xt. + +Moduleinst_ok +- the module instance { TYPES: functype*; FUNCS: funcaddr*; GLOBALS: globaladdr*; TABLES: tableaddr*; MEMS: memaddr*; EXPORTS: exportinst* } is valid with the context { TYPES: functype*; FUNCS: functype_F*; GLOBALS: globaltype*; TABLES: tabletype*; MEMS: memtype*; RETURN: ?() } if: + - For all functype in functype*: + - the function type functype is valid. + - For all globaladdr in globaladdr*, and corresponding globaltype in globaltype*: + - the external value (GLOBAL globaladdr) is valid with the external type (GLOBAL globaltype). + - For all funcaddr in funcaddr*, and corresponding functype_F in functype_F*: + - the external value (FUNC funcaddr) is valid with the external type (FUNC functype_F). + - For all memaddr in memaddr*, and corresponding memtype in memtype*: + - the external value (MEM memaddr) is valid with the external type (MEM memtype). + - For all tableaddr in tableaddr*, and corresponding tabletype in tabletype*: + - the external value (TABLE tableaddr) is valid with the external type (TABLE tabletype). + - For all exportinst in exportinst*: + - the export instance exportinst is valid. + - $disjoint_(`name, exportinst.NAME*) is true. + - |(GLOBAL globaladdr)* :: (MEM memaddr)* :: (TABLE tableaddr)* :: (FUNC funcaddr)*| is greater than 0. + - For all exportinst in exportinst*: + - exportinst.ADDR is contained in (GLOBAL globaladdr)* :: (MEM memaddr)* :: (TABLE tableaddr)* :: (FUNC funcaddr)*. + +Frame_ok +- the frame { LOCALS: val*; MODULE: moduleinst } is valid with the context C with .LOCALS appended by t* if: + - the module instance moduleinst is valid with the context C. + - For all t in t*, and corresponding val in val*: + - the value val is valid with the number type t. + +Instr_ok2 +- admininstr is valid with valtype* -> valtype'* if: + - Either: + - the administrative instruction admininstr is instr. + - the instruction instr is valid with the function type valtype* -> valtype'*. + - Or: + - admininstr is (LABEL_ n { instr'* } admininstr'*). + - the number type sequence valtype* is []. + - the number type sequence valtype'* is t?. + - |t'?| is n. + - instr'* is valid with t'? -> t?. + - admininstr'* is valid with [] -> t?. + - Or: + - admininstr is (FRAME_ n { f } admininstr'*). + - valtype* is []. + - valtype'* is t?. + - |t?| is n. + - the frame f is valid with the context C'. + - admininstr'* is valid with t?. + - Or: + - admininstr is (CALL_ADDR funcaddr). + - the external value (FUNC funcaddr) is valid with the external type (FUNC valtype* -> valtype'*). + - Or: + - admininstr is TRAP. + +Instr_ok2/plain +- instr is valid with t_1* -> t_2* if: + - the instruction instr is valid with the function type t_1* -> t_2*. + +Instr_ok2/label +- (LABEL_ n { instr* } admininstr*) is valid with [] -> t? if: + - |t'?| is n. + - instr'* is valid with t'? -> t?. + - admininstr* is valid with [] -> t?. + +Instr_ok2/frame +- (FRAME_ n { f } admininstr*) is valid with [] -> t? if: + - |t?| is n. + - the frame f is valid with the context C'. + - admininstr* is valid with t?. + +Instr_ok2/call_addr +- (CALL_ADDR funcaddr) is valid with t_1* -> t_2* if: + - the external value (FUNC funcaddr) is valid with the external type (FUNC t_1* -> t_2*). + +Instr_ok2/trap +- TRAP is valid with t_1* -> t_2*. + +Instrs_ok2 +- admininstr* is valid with valtype* -> valtype'* if: + - Either: + - the administrative instruction sequence admininstr* is []. + - the number type sequence valtype* is []. + - the number type sequence valtype'* is []. + - Or: + - admininstr* is [admininstr_1] :: admininstr_2*. + - admininstr_1 is valid with valtype* -> t_2*. + - admininstr_2* is valid with t_2* -> valtype'*. + - Or: + - valtype* is t* :: t_1*. + - valtype'* is t* :: t_2*. + - admininstr* is valid with t_1* -> t_2*. + +Instrs_ok2/empty +- [] is valid with [] -> []. + +Instrs_ok2/seq +- [admininstr_1] :: admininstr_2* is valid with t_1* -> t_3* if: + - admininstr_1 is valid with t_1* -> t_2*. + - admininstr_2* is valid with t_2* -> t_3*. + +Instrs_ok2/frame +- admininstr* is valid with t* :: t_1* -> t* :: t_2* if: + - admininstr* is valid with t_1* -> t_2*. + +Expr_ok2 +- admininstr* is valid with t? if: + - admininstr* is valid with [] -> t?. + +Globalinst_ok +- the global instance { TYPE: (mut t); VALUE: val } is valid with the global type (mut t) if: + - (mut t) is valid. + - the value val is valid with the number type t. + +Meminst_ok +- the memory instance { TYPE: ([ n .. ?(m) ]); BYTES: b* } is valid with the memory type ([ n .. ?(m) ]) if: + - ([ n .. ?(m) ]) is valid. + - |b*| is (n * (64 * $Ki())). + +Tableinst_ok +- the table instance { TYPE: ([ n .. ?(m) ]); REFS: fa?* } is valid with the table type ([ n .. ?(m) ]) if: + - ([ n .. ?(m) ]) is valid. + - For all fa? in fa?*: + - the function address fa? is ?() if and only if the function type ft? is ?(). + - ft?* is the concatenation of all such ft?. + - For all fa? in fa?*, and corresponding ft? in ft?*: + - - Yet: TODO: prem_to_intrs iter. + - |fa?*| is n. + +Funcinst_ok +- the function instance { TYPE: ft; MODULE: moduleinst; CODE: func } is valid with the function type ft if: + - ft is valid. + - the module instance moduleinst is valid with the context C. + - the function func is valid with ft. + +Store_ok +- the store s is valid if: + - For all : + - the global instance globalinst is valid with the global type globaltype. + - globalinst* is the concatenation of all such globalinst. + - For all : + - the memory instance meminst is valid with the memory type memtype. + - meminst* is the concatenation of all such meminst. + - For all : + - the table instance tableinst is valid with the table type tabletype. + - tableinst* is the concatenation of all such tableinst. + - For all : + - the function instance funcinst is valid with the function type functype. + - funcinst* is the concatenation of all such funcinst. + - s is { FUNCS: funcinst*; GLOBALS: globalinst*; TABLES: tableinst*; MEMS: meminst* }. + +State_ok +- the state (s, f) is valid with the context C if: + - the store s is valid. + - the frame f is valid with C. + +Config_ok +- the configuration (s, f) ; instr* is valid with the result type t? if: + - the state (s, f) is valid with the context C. + - admininstr* is valid with t?. + +Step_read/load-num-* t ?() ao +1. Let z be the current state. +2. Assert: Due to validation, a value of value type I32 is on the top of the stack. +3. Pop the value (I32.CONST i) from the stack. +4. If (((i + ao.OFFSET) + ($size(t) / 8)) > |$mem(z, 0).BYTES|), then: + a. Trap. +5. Let c be $bytes__1^-1(t, $mem(z, 0).BYTES[(i + ao.OFFSET) : ($size(t) / 8)]). +6. Push the value (t.CONST c) to the stack. + +Step_read/load-pack-* Inn ?(n _ sx) ao +1. Let z be the current state. +2. Assert: Due to validation, a value of value type I32 is on the top of the stack. +3. Pop the value (I32.CONST i) from the stack. +4. If (((i + ao.OFFSET) + (n / 8)) > |$mem(z, 0).BYTES|), then: + a. Trap. +5. Let c be $ibytes__1^-1(n, $mem(z, 0).BYTES[(i + ao.OFFSET) : (n / 8)]). +6. Push the value (Inn.CONST $extend__(n, $size(Inn), sx, c)) to the stack. + +Step/store-num-* t ?() ao +1. Let z be the current state. +2. Assert: Due to validation, a value of value type t is on the top of the stack. +3. Pop the value (valtype_0.CONST c) from the stack. +4. Assert: Due to validation, a value of value type I32 is on the top of the stack. +5. Pop the value (I32.CONST i) from the stack. +6. If (((i + ao.OFFSET) + ($size(t) / 8)) > |$mem(z, 0).BYTES|), then: + a. Trap. +7. Let b* be $bytes_(t, c). +8. Perform $with_mem(z, 0, (i + ao.OFFSET), ($size(t) / 8), b*). + +Step/store-pack-* Inn ?(n) ao +1. Let z be the current state. +2. Assert: Due to validation, a value of value type Inn is on the top of the stack. +3. Pop the value (valtype_0.CONST c) from the stack. +4. Assert: Due to validation, a value of value type I32 is on the top of the stack. +5. Pop the value (I32.CONST i) from the stack. +6. If (((i + ao.OFFSET) + (n / 8)) > |$mem(z, 0).BYTES|), then: + a. Trap. +7. Let b* be $ibytes_(n, $wrap__($size(Inn), n, c)). +8. Perform $with_mem(z, 0, (i + ao.OFFSET), (n / 8), b*). + +Step_pure/unreachable 1. Trap. -Step_pure/nop -1. Do nothing. +Step_pure/nop +1. Do nothing. + +Step_pure/drop +1. Assert: Due to validation, a value is on the top of the stack. +2. Pop the value val from the stack. + +Step_pure/select +1. Assert: Due to validation, a value of value type I32 is on the top of the stack. +2. Pop the value (I32.CONST c) from the stack. +3. Assert: Due to validation, a value is on the top of the stack. +4. Pop the value val_2 from the stack. +5. Assert: Due to validation, a value is on the top of the stack. +6. Pop the value val_1 from the stack. +7. If (c =/= 0), then: + a. Push the value val_1 to the stack. +8. Else: + a. Push the value val_2 to the stack. + +Step_pure/if t? instr_1* instr_2* +1. Assert: Due to validation, a value of value type I32 is on the top of the stack. +2. Pop the value (I32.CONST c) from the stack. +3. If (c =/= 0), then: + a. Execute the instruction (BLOCK t? instr_1*). +4. Else: + a. Execute the instruction (BLOCK t? instr_2*). + +Step_pure/label +1. Pop all values val* from the top of the stack. +2. Assert: Due to validation, the first non-value entry of the stack is a LABEL_. +3. Pop the label (LABEL_ _ { _ }) from the stack. +4. Push the values val* to the stack. + +Step_pure/br n' +1. Assert: Due to validation, the first non-value entry of the stack is a LABEL_. +2. Let (LABEL_ n { instr'* }) be the topmost LABEL_. +3. If (n' = 0), then: + a. Assert: Due to validation, there are at least n values on the top of the stack. + b. Pop the values val^n from the stack. + c. Pop all values val'* from the top of the stack. + d. Pop the label (LABEL_ _ { _ }) from the stack. + e. Push the values val^n to the stack. + f. Execute the sequence instr'*. +4. Else: + a. Pop all values val* from the top of the stack. + b. Let l be (n' - 1). + c. Pop the label (LABEL_ _ { _ }) from the stack. + d. Push the values val* to the stack. + e. Execute the instruction (BR l). + +Step_pure/br_if l +1. Assert: Due to validation, a value of value type I32 is on the top of the stack. +2. Pop the value (I32.CONST c) from the stack. +3. If (c =/= 0), then: + a. Execute the instruction (BR l). +4. Else: + a. Do nothing. + +Step_pure/br_table l* l' +1. Assert: Due to validation, a value of value type I32 is on the top of the stack. +2. Pop the value (I32.CONST i) from the stack. +3. If (i < |l*|), then: + a. Execute the instruction (BR l*[i]). +4. Else: + a. Execute the instruction (BR l'). + +Step_pure/frame +1. Let (FRAME_ n { f }) be the topmost FRAME_. +2. Assert: Due to validation, there are at least n values on the top of the stack. +3. Assert: Due to validation, there are at least n values on the top of the stack. +4. Pop the values val^n from the stack. +5. Assert: Due to validation, the first non-value entry of the stack is a FRAME_. +6. Pop the frame (FRAME_ _ { _ }) from the stack. +7. Push the values val^n to the stack. + +Step_pure/return +1. If the first non-value entry of the stack is a FRAME_, then: + a. Let (FRAME_ n { f }) be the topmost FRAME_. + b. Assert: Due to validation, there are at least n values on the top of the stack. + c. Pop the values val^n from the stack. + d. Pop all values val'* from the top of the stack. + e. Pop the frame (FRAME_ _ { _ }) from the stack. + f. Push the values val^n to the stack. +2. Else: + a. Assert: Due to validation, the first non-value entry of the stack is a LABEL_. + b. Pop all values val* from the top of the stack. + c. Pop the label (LABEL_ _ { _ }) from the stack. + d. Push the values val* to the stack. + e. Execute the instruction RETURN. + +Step_pure/unop t unop +1. Assert: Due to validation, a value of value type t is on the top of the stack. +2. Pop the value (valtype_0.CONST c_1) from the stack. +3. If (|$unop_(t, unop, c_1)| <= 0), then: + a. Trap. +4. Let c be an element of $unop_(t, unop, c_1). +5. Push the value (t.CONST c) to the stack. + +Step_pure/binop t binop +1. Assert: Due to validation, a value of value type t is on the top of the stack. +2. Pop the value (valtype_0.CONST c_2) from the stack. +3. Assert: Due to validation, a value of value type num is on the top of the stack. +4. Pop the value (valtype_0.CONST c_1) from the stack. +5. If (|$binop_(t, binop, c_1, c_2)| <= 0), then: + a. Trap. +6. Let c be an element of $binop_(t, binop, c_1, c_2). +7. Push the value (t.CONST c) to the stack. + +Step_pure/testop t testop +1. Assert: Due to validation, a value of value type t is on the top of the stack. +2. Pop the value (valtype_0.CONST c_1) from the stack. +3. Let c be $testop_(t, testop, c_1). +4. Push the value (I32.CONST c) to the stack. + +Step_pure/relop t relop +1. Assert: Due to validation, a value of value type t is on the top of the stack. +2. Pop the value (valtype_0.CONST c_2) from the stack. +3. Assert: Due to validation, a value of value type num is on the top of the stack. +4. Pop the value (valtype_0.CONST c_1) from the stack. +5. Let c be $relop_(t, relop, c_1, c_2). +6. Push the value (I32.CONST c) to the stack. + +Step_pure/cvtop t_2 t_1 cvtop +1. Assert: Due to validation, a value of value type t_1 is on the top of the stack. +2. Pop the value (valtype_0.CONST c_1) from the stack. +3. If (|$cvtop__(t_1, t_2, cvtop, c_1)| <= 0), then: + a. Trap. +4. Let c be an element of $cvtop__(t_1, t_2, cvtop, c_1). +5. Push the value (t_2.CONST c) to the stack. + +Step_pure/local.tee x +1. Assert: Due to validation, a value is on the top of the stack. +2. Pop the value val from the stack. +3. Push the value val to the stack. +4. Push the value val to the stack. +5. Execute the instruction (LOCAL.SET x). + +Step_read/block t? instr* +1. Let n be 0. +2. If t? is not defined, then: + a. Enter instr* with label (LABEL_ n { [] }). +3. Let n be 1. +4. If (t? =/= ?()), then: + a. Enter instr* with label (LABEL_ n { [] }). + +Step_read/loop t? instr* +1. Enter instr* with label (LABEL_ 0 { [(LOOP t? instr*)] }). + +Step_read/call x +1. Let z be the current state. +2. Assert: Due to validation, (x < |$funcaddr(z)|). +3. Execute the instruction (CALL_ADDR $funcaddr(z)[x]). + +Step_read/call_indirect x +1. Let z be the current state. +2. Assert: Due to validation, a value of value type I32 is on the top of the stack. +3. Pop the value (I32.CONST i) from the stack. +4. If (i >= |$table(z, 0).REFS|), then: + a. Trap. +5. If $table(z, 0).REFS[i] is not defined, then: + a. Trap. +6. Let ?(a) be $table(z, 0).REFS[i]. +7. If (a >= |$funcinst(z)|), then: + a. Trap. +8. If ($type(z, x) =/= $funcinst(z)[a].TYPE), then: + a. Trap. +9. Execute the instruction (CALL_ADDR a). + +Step_read/call_addr a +1. Let z be the current state. +2. Assert: Due to validation, (a < |$funcinst(z)|). +3. Let { TYPE: t_1^k -> t_2^n; MODULE: mm; CODE: func } be $funcinst(z)[a]. +4. Let (FUNC x local_0* instr*) be func. +5. Let t* be []. +6. For each local_0 in local_0*, do: + a. Let (LOCAL t) be local_0. + b. Append t to the t*. +7. Assert: Due to validation, there are at least k values on the top of the stack. +8. Pop the values val^k from the stack. +9. Let f be { LOCALS: val^k :: $default_(t)*; MODULE: mm }. +10. Push the frame (FRAME_ n { f }) to the stack. +11. Enter instr* with label (LABEL_ n { [] }). + +Step_read/local.get x +1. Let z be the current state. +2. Push the value $local(z, x) to the stack. + +Step_read/global.get x +1. Let z be the current state. +2. Push the value $global(z, x).VALUE to the stack. + +Step_read/load t loadop_? ao +1. Let z be the current state. +2. Assert: Due to validation, a value of value type I32 is on the top of the stack. +3. Pop the value (I32.CONST i) from the stack. +4. If loadop_? is not defined, then: + a. If (((i + ao.OFFSET) + ($size(t) / 8)) > |$mem(z, 0).BYTES|), then: + 1) Trap. + b. Let c be $bytes__1^-1(t, $mem(z, 0).BYTES[(i + ao.OFFSET) : ($size(t) / 8)]). + c. Push the value (t.CONST c) to the stack. +5. Else: + a. Assert: Due to validation, t is Inn. + b. Let ?(loadop_0) be loadop_?. + c. Let n _ sx be loadop_0. + d. If (((i + ao.OFFSET) + (n / 8)) > |$mem(z, 0).BYTES|), then: + 1) Trap. + e. Let c be $ibytes__1^-1(n, $mem(z, 0).BYTES[(i + ao.OFFSET) : (n / 8)]). + f. Push the value (t.CONST $extend__(n, $size(t), sx, c)) to the stack. + +Step_read/memory.size +1. Let z be the current state. +2. Let ((n * 64) * $Ki()) be |$mem(z, 0).BYTES|. +3. Push the value (I32.CONST n) to the stack. + +Step/local.set x +1. Let z be the current state. +2. Assert: Due to validation, a value is on the top of the stack. +3. Pop the value val from the stack. +4. Perform $with_local(z, x, val). + +Step/global.set x +1. Let z be the current state. +2. Assert: Due to validation, a value is on the top of the stack. +3. Pop the value val from the stack. +4. Perform $with_global(z, x, val). + +Step/store t sz? ao +1. Let z be the current state. +2. Assert: Due to validation, a value of value type num is on the top of the stack. +3. Pop the value (t'.CONST c) from the stack. +4. Assert: Due to validation, a value is on the top of the stack. +5. Pop the value (I32.CONST i) from the stack. +6. Assert: Due to validation, (t = t'). +7. If sz? is not defined, then: + a. If (((i + ao.OFFSET) + ($size(t') / 8)) > |$mem(z, 0).BYTES|), then: + 1) Trap. + b. Let b* be $bytes_(t', c). + c. Perform $with_mem(z, 0, (i + ao.OFFSET), ($size(t') / 8), b*). +8. Else: + a. Assert: Due to validation, t' is Inn. + b. Let ?(n) be sz?. + c. If (((i + ao.OFFSET) + (n / 8)) > |$mem(z, 0).BYTES|), then: + 1) Trap. + d. Let b* be $ibytes_(n, $wrap__($size(t'), n, c)). + e. Perform $with_mem(z, 0, (i + ao.OFFSET), (n / 8), b*). + +Step/memory.grow +1. Let z be the current state. +2. Assert: Due to validation, a value of value type I32 is on the top of the stack. +3. Pop the value (I32.CONST n) from the stack. +4. Either: + a. Let mi be $growmemory($mem(z, 0), n). + b. Push the value (I32.CONST (|$mem(z, 0).BYTES| / (64 * $Ki()))) to the stack. + c. Perform $with_meminst(z, 0, mi). +5. Or: + a. Push the value (I32.CONST $inv_signed_(32, (- 1))) to the stack. + +Ki +1. Return 1024. + +min i j +1. If (i <= j), then: + a. Return i. +2. Return j. + +sum n''* +1. If (n''* = []), then: + a. Return 0. +2. Let [n] :: n'* be n''*. +3. Return (n + $sum(n'*)). + +opt_ `X X* +1. If (X* = []), then: + a. Return ?(). +2. If (|X*| = 1), then: + a. Let [w] be X*. + b. Return ?(w). +3. Fail. + +list_ `X X? +1. If X? is not defined, then: + a. Return []. +2. Let ?(w) be X?. +3. Return [w]. + +concat_ `X X* +1. If (X* = []), then: + a. Return []. +2. Let [w*] :: w'** be X*. +3. Return w* :: $concat_(`X, w'**). + +disjoint_ `X X* +1. If (X* = []), then: + a. Return true. +2. Let [w] :: w'* be X*. +3. Return (w is not contained in w'* /\ $disjoint_(`X, w'*)). + +signif N +1. If (N = 32), then: + a. Return 23. +2. If (N = 64), then: + a. Return 52. +3. Fail. + +expon N +1. If (N = 32), then: + a. Return 8. +2. If (N = 64), then: + a. Return 11. +3. Fail. + +M N +1. Return $signif(N). + +E N +1. Return $expon(N). + +fzero N +1. Return (POS (SUBNORM 0)). + +fone N +1. Return (POS (NORM 1 0)). + +canon_ N +1. Return (2 ^ ($signif(N) - 1)). + +size valtype +1. If (valtype = I32), then: + a. Return 32. +2. If (valtype = I64), then: + a. Return 64. +3. If (valtype = F32), then: + a. Return 32. +4. Assert: Due to validation, (valtype = F64). +5. Return 64. + +funcsxt externtype'* +1. If (externtype'* = []), then: + a. Return []. +2. Let [externtype_0] :: xt* be externtype'*. +3. If externtype_0 is some FUNC, then: + a. Let (FUNC ft) be externtype_0. + b. Return [ft] :: $funcsxt(xt*). +4. Let [externtype] :: xt* be externtype'*. +5. Return $funcsxt(xt*). + +globalsxt externtype'* +1. If (externtype'* = []), then: + a. Return []. +2. Let [externtype_0] :: xt* be externtype'*. +3. If externtype_0 is some GLOBAL, then: + a. Let (GLOBAL gt) be externtype_0. + b. Return [gt] :: $globalsxt(xt*). +4. Let [externtype] :: xt* be externtype'*. +5. Return $globalsxt(xt*). + +tablesxt externtype'* +1. If (externtype'* = []), then: + a. Return []. +2. Let [externtype_0] :: xt* be externtype'*. +3. If externtype_0 is some TABLE, then: + a. Let (TABLE tt) be externtype_0. + b. Return [tt] :: $tablesxt(xt*). +4. Let [externtype] :: xt* be externtype'*. +5. Return $tablesxt(xt*). + +memsxt externtype'* +1. If (externtype'* = []), then: + a. Return []. +2. Let [externtype_0] :: xt* be externtype'*. +3. If externtype_0 is some MEM, then: + a. Let (MEM mt) be externtype_0. + b. Return [mt] :: $memsxt(xt*). +4. Let [externtype] :: xt* be externtype'*. +5. Return $memsxt(xt*). + +memarg0 +1. Return { ALIGN: 0; OFFSET: 0 }. + +bool b +1. If (b = false), then: + a. Return 0. +2. Assert: Due to validation, (b = true). +3. Return 1. + +signed_ N i +1. If (i < (2 ^ (N - 1))), then: + a. Return i. +2. Assert: Due to validation, ((2 ^ (N - 1)) <= i). +3. Assert: Due to validation, (i < (2 ^ N)). +4. Return (i - (2 ^ N)). + +inv_signed_ N i +1. If ((0 <= i) /\ (i < (2 ^ (N - 1)))), then: + a. Return i. +2. Assert: Due to validation, ((- (2 ^ (N - 1))) <= i). +3. Assert: Due to validation, (i < 0). +4. Return (i + (2 ^ N)). + +unop_ valtype unop_ iN +1. If valtype is Inn, then: + a. If (unop_ = CLZ), then: + 1) Return [$iclz_($size(valtype), iN)]. + b. If (unop_ = CTZ), then: + 1) Return [$ictz_($size(valtype), iN)]. + c. If (unop_ = POPCNT), then: + 1) Return [$ipopcnt_($size(valtype), iN)]. +2. Assert: Due to validation, valtype is Fnn. +3. If (unop_ = ABS), then: + a. Return $fabs_($size(valtype), iN). +4. If (unop_ = NEG), then: + a. Return $fneg_($size(valtype), iN). +5. If (unop_ = SQRT), then: + a. Return $fsqrt_($size(valtype), iN). +6. If (unop_ = CEIL), then: + a. Return $fceil_($size(valtype), iN). +7. If (unop_ = FLOOR), then: + a. Return $ffloor_($size(valtype), iN). +8. If (unop_ = TRUNC), then: + a. Return $ftrunc_($size(valtype), iN). +9. Assert: Due to validation, (unop_ = NEAREST). +10. Return $fnearest_($size(valtype), iN). + +iadd_ N i_1 i_2 +1. Return ((i_1 + i_2) \ (2 ^ N)). + +idiv_ N sx i_1 i_2 +1. If (sx = U), then: + a. If (i_2 = 0), then: + 1) Return ?(). + b. Return ?($truncz((i_1 / i_2))). +2. Assert: Due to validation, (sx = S). +3. If (i_2 = 0), then: + a. Return ?(). +4. If (($signed_(N, i_1) / $signed_(N, i_2)) = (2 ^ (N - 1))), then: + a. Return ?(). +5. Return ?($inv_signed_(N, $truncz(($signed_(N, i_1) / $signed_(N, i_2))))). + +imul_ N i_1 i_2 +1. Return ((i_1 * i_2) \ (2 ^ N)). + +irem_ N sx i_1 i_2 +1. If (sx = U), then: + a. If (i_2 = 0), then: + 1) Return ?(). + b. Return ?((i_1 - (i_2 * $truncz((i_1 / i_2))))). +2. Assert: Due to validation, (sx = S). +3. If (i_2 = 0), then: + a. Return ?(). +4. Let j_1 be $signed_(N, i_1). +5. Let j_2 be $signed_(N, i_2). +6. Return ?($inv_signed_(N, (j_1 - (j_2 * $truncz((j_1 / j_2)))))). + +isub_ N i_1 i_2 +1. Return ((((2 ^ N) + i_1) - i_2) \ (2 ^ N)). + +binop_ valtype binop_ iN_1 iN_2 +1. If valtype is Inn, then: + a. If (binop_ = ADD), then: + 1) Return [$iadd_($size(valtype), iN_1, iN_2)]. + b. If (binop_ = SUB), then: + 1) Return [$isub_($size(valtype), iN_1, iN_2)]. + c. If (binop_ = MUL), then: + 1) Return [$imul_($size(valtype), iN_1, iN_2)]. + d. If binop_ is some DIV, then: + 1) Let (DIV sx) be binop_. + 2) Return $list_(`val_((Inn : Inn <: valtype)), $idiv_($size(valtype), sx, iN_1, iN_2)). + e. If binop_ is some REM, then: + 1) Let (REM sx) be binop_. + 2) Return $list_(`val_((Inn : Inn <: valtype)), $irem_($size(valtype), sx, iN_1, iN_2)). + f. If (binop_ = AND), then: + 1) Return [$iand_($size(valtype), iN_1, iN_2)]. + g. If (binop_ = OR), then: + 1) Return [$ior_($size(valtype), iN_1, iN_2)]. + h. If (binop_ = XOR), then: + 1) Return [$ixor_($size(valtype), iN_1, iN_2)]. + i. If (binop_ = SHL), then: + 1) Return [$ishl_($size(valtype), iN_1, iN_2)]. + j. If binop_ is some SHR, then: + 1) Let (SHR sx) be binop_. + 2) Return [$ishr_($size(valtype), sx, iN_1, iN_2)]. + k. If (binop_ = ROTL), then: + 1) Return [$irotl_($size(valtype), iN_1, iN_2)]. + l. If (binop_ = ROTR), then: + 1) Return [$irotr_($size(valtype), iN_1, iN_2)]. +2. Assert: Due to validation, valtype is Fnn. +3. If (binop_ = ADD), then: + a. Return $fadd_($size(valtype), iN_1, iN_2). +4. If (binop_ = SUB), then: + a. Return $fsub_($size(valtype), iN_1, iN_2). +5. If (binop_ = MUL), then: + a. Return $fmul_($size(valtype), iN_1, iN_2). +6. If (binop_ = DIV), then: + a. Return $fdiv_($size(valtype), iN_1, iN_2). +7. If (binop_ = MIN), then: + a. Return $fmin_($size(valtype), iN_1, iN_2). +8. If (binop_ = MAX), then: + a. Return $fmax_($size(valtype), iN_1, iN_2). +9. Assert: Due to validation, (binop_ = COPYSIGN). +10. Return $fcopysign_($size(valtype), iN_1, iN_2). + +ieqz_ N i_1 +1. Return $bool((i_1 = 0)). + +testop_ Inn EQZ iN +1. Return $ieqz_($size(Inn), iN). + +ieq_ N i_1 i_2 +1. Return $bool((i_1 = i_2)). + +ige_ N sx i_1 i_2 +1. If (sx = U), then: + a. Return $bool((i_1 >= i_2)). +2. Assert: Due to validation, (sx = S). +3. Return $bool(($signed_(N, i_1) >= $signed_(N, i_2))). + +igt_ N sx i_1 i_2 +1. If (sx = U), then: + a. Return $bool((i_1 > i_2)). +2. Assert: Due to validation, (sx = S). +3. Return $bool(($signed_(N, i_1) > $signed_(N, i_2))). + +ile_ N sx i_1 i_2 +1. If (sx = U), then: + a. Return $bool((i_1 <= i_2)). +2. Assert: Due to validation, (sx = S). +3. Return $bool(($signed_(N, i_1) <= $signed_(N, i_2))). + +ilt_ N sx i_1 i_2 +1. If (sx = U), then: + a. Return $bool((i_1 < i_2)). +2. Assert: Due to validation, (sx = S). +3. Return $bool(($signed_(N, i_1) < $signed_(N, i_2))). + +ine_ N i_1 i_2 +1. Return $bool((i_1 =/= i_2)). + +relop_ valtype relop_ iN_1 iN_2 +1. If valtype is Inn, then: + a. If (relop_ = EQ), then: + 1) Return $ieq_($size(valtype), iN_1, iN_2). + b. If (relop_ = NE), then: + 1) Return $ine_($size(valtype), iN_1, iN_2). + c. If relop_ is some LT, then: + 1) Let (LT sx) be relop_. + 2) Return $ilt_($size(valtype), sx, iN_1, iN_2). + d. If relop_ is some GT, then: + 1) Let (GT sx) be relop_. + 2) Return $igt_($size(valtype), sx, iN_1, iN_2). + e. If relop_ is some LE, then: + 1) Let (LE sx) be relop_. + 2) Return $ile_($size(valtype), sx, iN_1, iN_2). + f. If relop_ is some GE, then: + 1) Let (GE sx) be relop_. + 2) Return $ige_($size(valtype), sx, iN_1, iN_2). +2. Assert: Due to validation, valtype is Fnn. +3. If (relop_ = EQ), then: + a. Return $feq_($size(valtype), iN_1, iN_2). +4. If (relop_ = NE), then: + a. Return $fne_($size(valtype), iN_1, iN_2). +5. If (relop_ = LT), then: + a. Return $flt_($size(valtype), iN_1, iN_2). +6. If (relop_ = GT), then: + a. Return $fgt_($size(valtype), iN_1, iN_2). +7. If (relop_ = LE), then: + a. Return $fle_($size(valtype), iN_1, iN_2). +8. Assert: Due to validation, (relop_ = GE). +9. Return $fge_($size(valtype), iN_1, iN_2). + +cvtop__ valtype valtype' cvtop iN +1. If cvtop is some EXTEND, then: + a. Let (EXTEND sx) be cvtop. + b. If ((valtype = I32) /\ (valtype' = I64)), then: + 1) Return [$extend__(32, 64, sx, iN)]. +2. If ((valtype = I64) /\ ((valtype' = I32) /\ (cvtop = WRAP))), then: + a. Return [$wrap__(64, 32, iN)]. +3. If (valtype is Fnn /\ (valtype' is Inn /\ cvtop is some TRUNC)), then: + a. Let (TRUNC sx) be cvtop. + b. Return $list_(`val_((Inn : Inn <: valtype)), $trunc__($size(valtype), $size(valtype'), sx, iN)). +4. If ((valtype = F32) /\ ((valtype' = F64) /\ (cvtop = PROMOTE))), then: + a. Return $promote__(32, 64, iN). +5. If ((valtype = F64) /\ ((valtype' = F32) /\ (cvtop = DEMOTE))), then: + a. Return $demote__(64, 32, iN). +6. If (valtype is Inn /\ valtype' is Fnn), then: + a. If cvtop is some CONVERT, then: + 1) Let (CONVERT sx) be cvtop. + 2) Return [$convert__($size(valtype), $size(valtype'), sx, iN)]. + b. If ((cvtop = REINTERPRET) /\ ($size(valtype) = $size(valtype'))), then: + 1) Return [$reinterpret__(valtype, valtype', iN)]. +7. Assert: Due to validation, valtype is Fnn. +8. Assert: Due to validation, valtype' is Inn. +9. Assert: Due to validation, (cvtop = REINTERPRET). +10. Assert: Due to validation, ($size(valtype') = $size(valtype)). +11. Return [$reinterpret__(valtype, valtype', iN)]. + +inez_ N i_1 +1. Return $bool((i_1 =/= 0)). + +default_ valtype +1. If (valtype = I32), then: + a. Return (I32.CONST 0). +2. If (valtype = I64), then: + a. Return (I64.CONST 0). +3. If (valtype = F32), then: + a. Return (F32.CONST $fzero(32)). +4. Assert: Due to validation, (valtype = F64). +5. Return (F64.CONST $fzero(64)). + +funcsxa externaddr'* +1. If (externaddr'* = []), then: + a. Return []. +2. Let [externaddr_0] :: xv* be externaddr'*. +3. If externaddr_0 is some FUNC, then: + a. Let (FUNC fa) be externaddr_0. + b. Return [fa] :: $funcsxa(xv*). +4. Let [externaddr] :: xv* be externaddr'*. +5. Return $funcsxa(xv*). + +globalsxa externaddr'* +1. If (externaddr'* = []), then: + a. Return []. +2. Let [externaddr_0] :: xv* be externaddr'*. +3. If externaddr_0 is some GLOBAL, then: + a. Let (GLOBAL ga) be externaddr_0. + b. Return [ga] :: $globalsxa(xv*). +4. Let [externaddr] :: xv* be externaddr'*. +5. Return $globalsxa(xv*). + +tablesxa externaddr'* +1. If (externaddr'* = []), then: + a. Return []. +2. Let [externaddr_0] :: xv* be externaddr'*. +3. If externaddr_0 is some TABLE, then: + a. Let (TABLE ta) be externaddr_0. + b. Return [ta] :: $tablesxa(xv*). +4. Let [externaddr] :: xv* be externaddr'*. +5. Return $tablesxa(xv*). + +memsxa externaddr'* +1. If (externaddr'* = []), then: + a. Return []. +2. Let [externaddr_0] :: xv* be externaddr'*. +3. If externaddr_0 is some MEM, then: + a. Let (MEM ma) be externaddr_0. + b. Return [ma] :: $memsxa(xv*). +4. Let [externaddr] :: xv* be externaddr'*. +5. Return $memsxa(xv*). + +store (s, f) +1. Return. + +frame (s, f) +1. Return f. + +funcaddr (s, f) +1. Return f.MODULE.FUNCS. + +funcinst (s, f) +1. Return s.FUNCS. + +globalinst (s, f) +1. Return s.GLOBALS. + +tableinst (s, f) +1. Return s.TABLES. + +meminst (s, f) +1. Return s.MEMS. + +moduleinst (s, f) +1. Return f.MODULE. + +type (s, f) x +1. Return f.MODULE.TYPES[x]. + +func (s, f) x +1. Return s.FUNCS[f.MODULE.FUNCS[x]]. + +global (s, f) x +1. Return s.GLOBALS[f.MODULE.GLOBALS[x]]. + +table (s, f) x +1. Return s.TABLES[f.MODULE.TABLES[x]]. + +mem (s, f) x +1. Return s.MEMS[f.MODULE.MEMS[x]]. + +local (s, f) x +1. Return f.LOCALS[x]. + +with_local (s, f) x v +1. Replace f.LOCALS[x] with v. + +with_global (s, f) x v +1. Replace s.GLOBALS[f.MODULE.GLOBALS[x]].VALUE with v. + +with_table (s, f) x i a +1. Replace s.TABLES[f.MODULE.TABLES[x]].REFS[i] with ?(a). + +with_tableinst (s, f) x ti +1. Replace s.TABLES[f.MODULE.TABLES[x]] with ti. + +with_mem (s, f) x i j b* +1. Replace s.MEMS[f.MODULE.MEMS[x]].BYTES[i : j] with b*. + +with_meminst (s, f) x mi +1. Replace s.MEMS[f.MODULE.MEMS[x]] with mi. + +growtable ti n +1. Let { TYPE: ([ i .. j? ]); REFS: ?(a)* } be ti. +2. Let i' be (|a*| + n). +3. If (i' <= j)?, then: + a. Let ti' be { TYPE: ([ i' .. j? ]); REFS: ?(a)* :: ?()^n }. + b. Return ti'. +4. Fail. + +growmemory mi n +1. Let { TYPE: ([ i .. j? ]); BYTES: b* } be mi. +2. Let i' be ((|b*| / (64 * $Ki())) + n). +3. If (i' <= j)?, then: + a. Let mi' be { TYPE: ([ i' .. j? ]); BYTES: b* :: 0^(n * (64 * $Ki())) }. + b. Return mi'. +4. Fail. + +funcs externaddr''* +1. If (externaddr''* = []), then: + a. Return []. +2. Let [externaddr_0] :: externaddr'* be externaddr''*. +3. If externaddr_0 is some FUNC, then: + a. Let (FUNC fa) be externaddr_0. + b. Return [fa] :: $funcs(externaddr'*). +4. Let [externaddr] :: externaddr'* be externaddr''*. +5. Return $funcs(externaddr'*). + +globals externaddr''* +1. If (externaddr''* = []), then: + a. Return []. +2. Let [externaddr_0] :: externaddr'* be externaddr''*. +3. If externaddr_0 is some GLOBAL, then: + a. Let (GLOBAL ga) be externaddr_0. + b. Return [ga] :: $globals(externaddr'*). +4. Let [externaddr] :: externaddr'* be externaddr''*. +5. Return $globals(externaddr'*). + +tables externaddr''* +1. If (externaddr''* = []), then: + a. Return []. +2. Let [externaddr_0] :: externaddr'* be externaddr''*. +3. If externaddr_0 is some TABLE, then: + a. Let (TABLE ta) be externaddr_0. + b. Return [ta] :: $tables(externaddr'*). +4. Let [externaddr] :: externaddr'* be externaddr''*. +5. Return $tables(externaddr'*). + +mems externaddr''* +1. If (externaddr''* = []), then: + a. Return []. +2. Let [externaddr_0] :: externaddr'* be externaddr''*. +3. If externaddr_0 is some MEM, then: + a. Let (MEM ma) be externaddr_0. + b. Return [ma] :: $mems(externaddr'*). +4. Let [externaddr] :: externaddr'* be externaddr''*. +5. Return $mems(externaddr'*). + +allocfunc s moduleinst func +1. Let (FUNC x local* expr) be func. +2. Let fi be { TYPE: moduleinst.TYPES[x]; MODULE: moduleinst; CODE: func }. +3. Let a be |s.FUNCS|. +4. Append fi to the s.FUNCS. +5. Return a. + +allocfuncs s moduleinst func''* +1. If (func''* = []), then: + a. Return []. +2. Let [func] :: func'* be func''*. +3. Let fa be $allocfunc(s, moduleinst, func). +4. Let fa'* be $allocfuncs(s, moduleinst, func'*). +5. Return [fa] :: fa'*. + +allocglobal s globaltype val +1. Let gi be { TYPE: globaltype; VALUE: val }. +2. Let a be |s.GLOBALS|. +3. Append gi to the s.GLOBALS. +4. Return a. + +allocglobals s globaltype''* val''* +1. If (globaltype''* = []), then: + a. Assert: Due to validation, (val''* = []). + b. Return []. +2. Else: + a. Let [globaltype] :: globaltype'* be globaltype''*. + b. Assert: Due to validation, (|val''*| >= 1). + c. Let [val] :: val'* be val''*. + d. Let ga be $allocglobal(s, globaltype, val). + e. Let ga'* be $allocglobals(s, globaltype'*, val'*). + f. Return [ga] :: ga'*. + +alloctable s ([ i .. j? ]) +1. Let ti be { TYPE: ([ i .. j? ]); REFS: ?()^i }. +2. Let a be |s.TABLES|. +3. Append ti to the s.TABLES. +4. Return a. + +alloctables s tabletype''* +1. If (tabletype''* = []), then: + a. Return []. +2. Let [tabletype] :: tabletype'* be tabletype''*. +3. Let ta be $alloctable(s, tabletype). +4. Let ta'* be $alloctables(s, tabletype'*). +5. Return [ta] :: ta'*. + +allocmem s ([ i .. j? ]) +1. Let mi be { TYPE: ([ i .. j? ]); BYTES: 0^(i * (64 * $Ki())) }. +2. Let a be |s.MEMS|. +3. Append mi to the s.MEMS. +4. Return a. + +allocmems s memtype''* +1. If (memtype''* = []), then: + a. Return []. +2. Let [memtype] :: memtype'* be memtype''*. +3. Let ma be $allocmem(s, memtype). +4. Let ma'* be $allocmems(s, memtype'*). +5. Return [ma] :: ma'*. + +instexport fa* ga* ta* ma* (EXPORT name externidx) +1. If externidx is some FUNC, then: + a. Let (FUNC x) be externidx. + b. Return { NAME: name; ADDR: (FUNC fa*[x]) }. +2. If externidx is some GLOBAL, then: + a. Let (GLOBAL x) be externidx. + b. Return { NAME: name; ADDR: (GLOBAL ga*[x]) }. +3. If externidx is some TABLE, then: + a. Let (TABLE x) be externidx. + b. Return { NAME: name; ADDR: (TABLE ta*[x]) }. +4. Assert: Due to validation, externidx is some MEM. +5. Let (MEM x) be externidx. +6. Return { NAME: name; ADDR: (MEM ma*[x]) }. + +allocmodule s module externaddr* val* +1. Let (MODULE type_0* import* func^n_func global_1* table_2* mem_3* elem* data* start? export*) be module. +2. Let (MEMORY memtype)^n_mem be mem_3*. +3. Let (TABLE tabletype)^n_table be table_2*. +4. Let (GLOBAL globaltype expr_1)^n_global be global_1*. +5. Let ft* be []. +6. For each type_0 in type_0*, do: + a. Let (TYPE ft) be type_0. + b. Append ft to the ft*. +7. Let fa_ex* be $funcs(externaddr*). +8. Let ga_ex* be $globals(externaddr*). +9. Let ma_ex* be $mems(externaddr*). +10. Let ta_ex* be $tables(externaddr*). +11. Let fa* be (|s.FUNCS| + i_func)^(i_func= 1). + c. Let [i] :: i'* be u32*. + d. Replace s.TABLES[moduleinst.TABLES[0]].REFS[i : |a*|] with ?(a)*. + e. Perform $initelem(s, moduleinst, i'*, a'**). + f. Return. + +initdata s moduleinst u32* byte* +1. If (byte* = []), then: + a. Assert: Due to validation, (u32* = []). + b. Return. +2. Else: + a. Let [b*] :: b'** be byte*. + b. Assert: Due to validation, (|u32*| >= 1). + c. Let [i] :: i'* be u32*. + d. Replace s.MEMS[moduleinst.MEMS[0]].BYTES[i : |b*|] with b*. + e. Perform $initdata(s, moduleinst, i'*, b'**). + f. Return. + +instantiate s module externaddr* +1. Let (MODULE type* import* func* global* table* mem* elem* data* start? export*) be module. +2. Let functype* be []. +3. For each type in type*, do: + a. Let (TYPE functype) be type. + b. Append functype to the functype*. +4. Let n_F be |func*|. +5. Let b** be []. +6. Let expr_D* be []. +7. For each data in data*, do: + a. Let (DATA expr_D b*) be data. + b. Append b* to the b**. + c. Append expr_D to the expr_D*. +8. Let expr_E* be []. +9. Let x** be []. +10. For each elem in elem*, do: + a. Let (ELEM expr_E x*) be elem. + b. Append expr_E to the expr_E*. + c. Append x* to the x**. +11. Let expr_G* be []. +12. For each global in global*, do: + a. Let (GLOBAL globaltype expr_G) be global. + b. Append expr_G to the expr_G*. +13. Let moduleinst_init be { TYPES: functype*; FUNCS: $funcs(externaddr*) :: (|s.FUNCS| + i_F)^(i_F t_2* be $funcinst((s, f))[fa].TYPE. +4. Pop the frame (FRAME_ 0 { _f }) from the stack. +5. Let k be |t_2*|. +6. Push the frame (FRAME_ k { f }) to the stack. +7. Push the values val^n to the stack. +8. Execute the instruction (CALL_ADDR fa). +9. Pop the values val'^k from the stack. +10. Pop the frame (FRAME_ k { f }) from the stack. +11. Return val'^k. + +Eval_expr instr* +1. Execute the sequence instr*. +2. Pop the value val from the stack. +3. Return [val]. + +== Complete. +Generating prose for Wasm 2.0... +spectec 0.5 generator +== Parsing... +== Elaboration... +== IL Validation... +== Running pass sideconditions... +== IL Validation after pass sideconditions... +== Translating to AL... +== Prose Generation... + + + +The limits :math:`{}[ n .. {m^?} ]` is :ref:`valid ` with :math:`k` if: + + + * :math:`n` is less than or equal to :math:`k`. + + * If :math:`m` is defined, then: + + * :math:`n` is less than or equal to :math:`m`. + + * :math:`m` is less than or equal to :math:`k`. + + + + +The function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}` is always :ref:`valid `. + + + + +The global type :math:`({\mathsf{mut}^?}~t)` is always :ref:`valid `. + + + + +The table type :math:`({\mathit{limits}}~{\mathit{reftype}})` is :ref:`valid ` if: + + + * The limits :math:`{\mathit{limits}}` is :ref:`valid ` with :math:`{2^{32}} - 1`. + + + + +The memory type :math:`{\mathit{limits}}~\mathsf{page}` is :ref:`valid ` if: + + + * The limits :math:`{\mathit{limits}}` is :ref:`valid ` with :math:`{2^{16}}`. + + + + +The external type :math:`{\mathit{externtype}}` is :ref:`valid ` if: + + + * Either: + + * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{func}~{\mathit{functype}})`. + + * The function type :math:`{\mathit{functype}}` is :ref:`valid `. + + * Or: + + * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{global}~{\mathit{globaltype}})`. + + * The global type :math:`{\mathit{globaltype}}` is :ref:`valid `. + * Or: + + * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{table}~{\mathit{tabletype}})`. + + * The table type :math:`{\mathit{tabletype}}` is :ref:`valid `. + * Or: + + * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{mem}~{\mathit{memtype}})`. + + * The memory type :math:`{\mathit{memtype}}` is :ref:`valid `. + + + + +The external type :math:`(\mathsf{func}~{\mathit{functype}})` is :ref:`valid ` if: + + + * The function type :math:`{\mathit{functype}}` is :ref:`valid `. + + + + +The external type :math:`(\mathsf{global}~{\mathit{globaltype}})` is :ref:`valid ` if: + + + * The global type :math:`{\mathit{globaltype}}` is :ref:`valid `. + + + + +The external type :math:`(\mathsf{table}~{\mathit{tabletype}})` is :ref:`valid ` if: + + + * The table type :math:`{\mathit{tabletype}}` is :ref:`valid `. + + + + +The external type :math:`(\mathsf{mem}~{\mathit{memtype}})` is :ref:`valid ` if: + + + * The memory type :math:`{\mathit{memtype}}` is :ref:`valid `. + + + + +The value type :math:`t_2` :ref:`matches ` the value type :math:`t_1` if: + + + * Either: + + * The value type :math:`t_2` is of the form :math:`t_1`. + + * Or: + + * The value type :math:`t_2` is of the form :math:`\mathsf{bot}`. + + + + +The value type :math:`t` :ref:`matches ` only itself. + + + + +The value type :math:`\mathsf{bot}` :ref:`matches ` the value type :math:`t`. + + + + +The result type :math:`{t_1^\ast}` :ref:`matches ` the result type :math:`{t_2^\ast}` if: + + + * For all :math:`t_1` in :math:`{t_1^\ast}`, and corresponding :math:`t_2` in :math:`{t_2^\ast}`: + + * The value type :math:`t_1` :ref:`matches ` the value type :math:`t_2`. + + + + +The limits :math:`{}[ n_{11} .. n_{12} ]` :ref:`matches ` the limits :math:`{}[ n_{21} .. n_{22} ]` if: + + + * :math:`n_{11}` is greater than or equal to :math:`n_{21}`. + + * :math:`n_{12}` is less than or equal to :math:`n_{22}`. + + + + +The function type :math:`{\mathit{ft}}` :ref:`matches ` only itself. + + + + +The global type :math:`{\mathit{gt}}` :ref:`matches ` only itself. + + + + +The table type :math:`({\mathit{lim}}_1~{\mathit{rt}})` :ref:`matches ` the table type :math:`({\mathit{lim}}_2~{\mathit{rt}})` if: + + + * The limits :math:`{\mathit{lim}}_1` :ref:`matches ` the limits :math:`{\mathit{lim}}_2`. + + + + +The memory type :math:`{\mathit{lim}}_1~\mathsf{page}` :ref:`matches ` the memory type :math:`{\mathit{lim}}_2~\mathsf{page}` if: + + + * The limits :math:`{\mathit{lim}}_1` :ref:`matches ` the limits :math:`{\mathit{lim}}_2`. + + + + +The external type :math:`{\mathit{externtype}}_1` :ref:`matches ` the external type :math:`{\mathit{externtype}}_2` if: + + + * Either: + + * The external type :math:`{\mathit{externtype}}_1` is of the form :math:`(\mathsf{func}~{\mathit{ft}}_1)`. + + * The external type :math:`{\mathit{externtype}}_2` is of the form :math:`(\mathsf{func}~{\mathit{ft}}_2)`. + + * The function type :math:`{\mathit{ft}}_1` :ref:`matches ` the function type :math:`{\mathit{ft}}_2`. + + * Or: + + * The external type :math:`{\mathit{externtype}}_1` is of the form :math:`(\mathsf{global}~{\mathit{gt}}_1)`. + + * The external type :math:`{\mathit{externtype}}_2` is of the form :math:`(\mathsf{global}~{\mathit{gt}}_2)`. + + * The global type :math:`{\mathit{gt}}_1` :ref:`matches ` the global type :math:`{\mathit{gt}}_2`. + * Or: + + * The external type :math:`{\mathit{externtype}}_1` is of the form :math:`(\mathsf{table}~{\mathit{tt}}_1)`. + + * The external type :math:`{\mathit{externtype}}_2` is of the form :math:`(\mathsf{table}~{\mathit{tt}}_2)`. + + * The table type :math:`{\mathit{tt}}_1` :ref:`matches ` the table type :math:`{\mathit{tt}}_2`. + * Or: + + * The external type :math:`{\mathit{externtype}}_1` is of the form :math:`(\mathsf{mem}~{\mathit{mt}}_1)`. + + * The external type :math:`{\mathit{externtype}}_2` is of the form :math:`(\mathsf{mem}~{\mathit{mt}}_2)`. + + * The memory type :math:`{\mathit{mt}}_1` :ref:`matches ` the memory type :math:`{\mathit{mt}}_2`. + + + + +The external type :math:`(\mathsf{func}~{\mathit{ft}}_1)` :ref:`matches ` the external type :math:`(\mathsf{func}~{\mathit{ft}}_2)` if: + + + * The function type :math:`{\mathit{ft}}_1` :ref:`matches ` the function type :math:`{\mathit{ft}}_2`. + + + + +The external type :math:`(\mathsf{global}~{\mathit{gt}}_1)` :ref:`matches ` the external type :math:`(\mathsf{global}~{\mathit{gt}}_2)` if: + + + * The global type :math:`{\mathit{gt}}_1` :ref:`matches ` the global type :math:`{\mathit{gt}}_2`. + + + + +The external type :math:`(\mathsf{table}~{\mathit{tt}}_1)` :ref:`matches ` the external type :math:`(\mathsf{table}~{\mathit{tt}}_2)` if: + + + * The table type :math:`{\mathit{tt}}_1` :ref:`matches ` the table type :math:`{\mathit{tt}}_2`. + + + + +The external type :math:`(\mathsf{mem}~{\mathit{mt}}_1)` :ref:`matches ` the external type :math:`(\mathsf{mem}~{\mathit{mt}}_2)` if: + + + * The memory type :math:`{\mathit{mt}}_1` :ref:`matches ` the memory type :math:`{\mathit{mt}}_2`. + + + + +The block type :math:`{\mathit{blocktype}}` is :ref:`valid ` with the function type :math:`{{\mathit{valtype}}^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast}` if: + + + * Either: + + * The block type :math:`{\mathit{blocktype}}` is of the form :math:`{{\mathit{valtype}''}^?}`. + + * The value type sequence :math:`{{\mathit{valtype}}^\ast}` is empty. + + * The value type sequence :math:`{{\mathit{valtype}'}^\ast}` is of the form :math:`{{\mathit{valtype}''}^?}`. + + * Or: + + * The block type :math:`{\mathit{blocktype}}` is of the form :math:`{\mathit{typeidx}}`. + + * The function type :math:`C{.}\mathsf{types}{}[{\mathit{typeidx}}]` exists. + + * The function type :math:`C{.}\mathsf{types}{}[{\mathit{typeidx}}]` is of the form :math:`{{\mathit{valtype}}^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast}`. + + + + +The block type :math:`{{\mathit{valtype}}^?}` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~{{\mathit{valtype}}^?}`. + + + + +The block type :math:`{\mathit{typeidx}}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}` if: + + + * The function type :math:`C{.}\mathsf{types}{}[{\mathit{typeidx}}]` exists. + + * The function type :math:`C{.}\mathsf{types}{}[{\mathit{typeidx}}]` is of the form :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + + + + +The instruction :math:`\mathsf{nop}` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\epsilon`. + + + + +The instruction :math:`\mathsf{unreachable}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + + + + +The instruction :math:`\mathsf{drop}` is :ref:`valid ` with the function type :math:`t~\rightarrow~\epsilon`. + + + + +The instruction :math:`(\mathsf{select}~{{\mathit{valtype}}^?})` is :ref:`valid ` with the function type :math:`t~t~\mathsf{i{\scriptstyle 32}}~\rightarrow~t` if: + + + * Either: + + * The value type sequence :math:`{{\mathit{valtype}}^?}` is of the form :math:`t`. + + * Or: + + * The value type sequence :math:`{{\mathit{valtype}}^?}` is absent. + + * The value type :math:`t` :ref:`matches ` the value type :math:`{t'}`. + + * The value type :math:`{t'}` is of the form :math:`{\mathit{numtype}}` or :math:`{t'}` is of the form :math:`{\mathit{vectype}}`. + + + + +The instruction :math:`(\mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}^\ast})` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}` if: + + + * The block type :math:`{\mathit{bt}}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + + * Let :math:`{C'}` be the same context as :math:`C`, but with the result type sequence :math:`{t_2^\ast}` prepended to the field :math:`\mathsf{labels}`. + + * Under the context :math:`{C'}`, the instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + + + + +The instruction :math:`(\mathsf{loop}~{\mathit{bt}}~{{\mathit{instr}}^\ast})` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}` if: + + + * The block type :math:`{\mathit{bt}}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + + * Let :math:`{C'}` be the same context as :math:`C`, but with the result type sequence :math:`{t_1^\ast}` prepended to the field :math:`\mathsf{labels}`. + + * Under the context :math:`{C'}`, the instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + + + + +The instruction :math:`(\mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast})` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\mathsf{i{\scriptstyle 32}}~\rightarrow~{t_2^\ast}` if: + + + * The block type :math:`{\mathit{bt}}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + + * Let :math:`{C'}` be the same context as :math:`C`, but with the result type sequence :math:`{t_2^\ast}` prepended to the field :math:`\mathsf{labels}`. + + * Under the context :math:`{C'}`, the instruction sequence :math:`{{\mathit{instr}}_1^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + + * Under the context :math:`{C'}`, the instruction sequence :math:`{{\mathit{instr}}_2^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + + + + +The instruction :math:`(\mathsf{br}~l)` is :ref:`valid ` with the function type :math:`{t_1^\ast}~{t^\ast}~\rightarrow~{t_2^\ast}` if: + + + * The result type :math:`C{.}\mathsf{labels}{}[l]` exists. + + * The result type :math:`C{.}\mathsf{labels}{}[l]` is of the form :math:`{t^\ast}`. -Step_pure/drop -1. Assert: Due to validation, a value is on the top of the stack. -2. Pop the value val from the stack. -Step_pure/select -1. Assert: Due to validation, a value of value type I32 is on the top of the stack. -2. Pop the value (I32.CONST c) from the stack. -3. Assert: Due to validation, a value is on the top of the stack. -4. Pop the value val_2 from the stack. -5. Assert: Due to validation, a value is on the top of the stack. -6. Pop the value val_1 from the stack. -7. If (c =/= 0), then: - a. Push the value val_1 to the stack. -8. Else: - a. Push the value val_2 to the stack. -Step_pure/if t? instr_1* instr_2* -1. Assert: Due to validation, a value of value type I32 is on the top of the stack. -2. Pop the value (I32.CONST c) from the stack. -3. If (c =/= 0), then: - a. Execute the instruction (BLOCK t? instr_1*). -4. Else: - a. Execute the instruction (BLOCK t? instr_2*). -Step_pure/label -1. Pop all values val* from the top of the stack. -2. Assert: Due to validation, the first non-value entry of the stack is a LABEL_. -3. Pop the label (LABEL_ _ { _ }) from the stack. -4. Push the values val* to the stack. +The instruction :math:`(\mathsf{br\_if}~l)` is :ref:`valid ` with the function type :math:`{t^\ast}~\mathsf{i{\scriptstyle 32}}~\rightarrow~{t^\ast}` if: -Step_pure/br n' -1. Assert: Due to validation, the first non-value entry of the stack is a LABEL_. -2. Let (LABEL_ n { instr'* }) be the topmost LABEL_. -3. If (n' = 0), then: - a. Assert: Due to validation, there are at least n values on the top of the stack. - b. Pop the values val^n from the stack. - c. Pop all values val'* from the top of the stack. - d. Pop the label (LABEL_ _ { _ }) from the stack. - e. Push the values val^n to the stack. - f. Execute the sequence instr'*. -4. Else: - a. Pop all values val* from the top of the stack. - b. Let l be (n' - 1). - c. Pop the label (LABEL_ _ { _ }) from the stack. - d. Push the values val* to the stack. - e. Execute the instruction (BR l). -Step_pure/br_if l -1. Assert: Due to validation, a value of value type I32 is on the top of the stack. -2. Pop the value (I32.CONST c) from the stack. -3. If (c =/= 0), then: - a. Execute the instruction (BR l). -4. Else: - a. Do nothing. + * The result type :math:`C{.}\mathsf{labels}{}[l]` exists. -Step_pure/br_table l* l' -1. Assert: Due to validation, a value of value type I32 is on the top of the stack. -2. Pop the value (I32.CONST i) from the stack. -3. If (i < |l*|), then: - a. Execute the instruction (BR l*[i]). -4. Else: - a. Execute the instruction (BR l'). + * The result type :math:`C{.}\mathsf{labels}{}[l]` is of the form :math:`{t^\ast}`. -Step_pure/frame -1. Let (FRAME_ n { f }) be the topmost FRAME_. -2. Assert: Due to validation, there are at least n values on the top of the stack. -3. Assert: Due to validation, there are at least n values on the top of the stack. -4. Pop the values val^n from the stack. -5. Assert: Due to validation, the first non-value entry of the stack is a FRAME_. -6. Pop the frame (FRAME_ _ { _ }) from the stack. -7. Push the values val^n to the stack. -Step_pure/return -1. If the first non-value entry of the stack is a FRAME_, then: - a. Let (FRAME_ n { f }) be the topmost FRAME_. - b. Assert: Due to validation, there are at least n values on the top of the stack. - c. Pop the values val^n from the stack. - d. Pop all values val'* from the top of the stack. - e. Pop the frame (FRAME_ _ { _ }) from the stack. - f. Push the values val^n to the stack. -2. Else: - a. Assert: Due to validation, the first non-value entry of the stack is a LABEL_. - b. Pop all values val* from the top of the stack. - c. Pop the label (LABEL_ _ { _ }) from the stack. - d. Push the values val* to the stack. - e. Execute the instruction RETURN. -Step_pure/unop t unop -1. Assert: Due to validation, a value of value type t is on the top of the stack. -2. Pop the value (valtype_0.CONST c_1) from the stack. -3. If (|$unop_(t, unop, c_1)| <= 0), then: - a. Trap. -4. Let c be an element of $unop_(t, unop, c_1). -5. Push the value (t.CONST c) to the stack. -Step_pure/binop t binop -1. Assert: Due to validation, a value of value type t is on the top of the stack. -2. Pop the value (valtype_0.CONST c_2) from the stack. -3. Assert: Due to validation, a value of value type num is on the top of the stack. -4. Pop the value (valtype_0.CONST c_1) from the stack. -5. If (|$binop_(t, binop, c_1, c_2)| <= 0), then: - a. Trap. -6. Let c be an element of $binop_(t, binop, c_1, c_2). -7. Push the value (t.CONST c) to the stack. +The instruction :math:`(\mathsf{br\_table}~{l^\ast}~{l'})` is :ref:`valid ` with the function type :math:`{t_1^\ast}~{t^\ast}~\mathsf{i{\scriptstyle 32}}~\rightarrow~{t_2^\ast}` if: -Step_pure/testop t testop -1. Assert: Due to validation, a value of value type t is on the top of the stack. -2. Pop the value (valtype_0.CONST c_1) from the stack. -3. Let c be $testop_(t, testop, c_1). -4. Push the value (I32.CONST c) to the stack. -Step_pure/relop t relop -1. Assert: Due to validation, a value of value type t is on the top of the stack. -2. Pop the value (valtype_0.CONST c_2) from the stack. -3. Assert: Due to validation, a value of value type num is on the top of the stack. -4. Pop the value (valtype_0.CONST c_1) from the stack. -5. Let c be $relop_(t, relop, c_1, c_2). -6. Push the value (I32.CONST c) to the stack. + * For all :math:`l` in :math:`{l^\ast}`: -Step_pure/cvtop t_2 t_1 cvtop -1. Assert: Due to validation, a value of value type t_1 is on the top of the stack. -2. Pop the value (valtype_0.CONST c_1) from the stack. -3. If (|$cvtop__(t_1, t_2, cvtop, c_1)| <= 0), then: - a. Trap. -4. Let c be an element of $cvtop__(t_1, t_2, cvtop, c_1). -5. Push the value (t_2.CONST c) to the stack. + * The result type :math:`C{.}\mathsf{labels}{}[l]` exists. -Step_pure/local.tee x -1. Assert: Due to validation, a value is on the top of the stack. -2. Pop the value val from the stack. -3. Push the value val to the stack. -4. Push the value val to the stack. -5. Execute the instruction (LOCAL.SET x). + * The result type :math:`{t^\ast}` :ref:`matches ` the result type :math:`C{.}\mathsf{labels}{}[l]`. -Step_read/block t? instr* -1. Let n be 0. -2. If t? is not defined, then: - a. Enter instr* with label (LABEL_ n { [] }). -3. Let n be 1. -4. If (t? =/= ?()), then: - a. Enter instr* with label (LABEL_ n { [] }). + * The result type :math:`C{.}\mathsf{labels}{}[{l'}]` exists. -Step_read/loop t? instr* -1. Enter instr* with label (LABEL_ 0 { [(LOOP t? instr*)] }). + * The result type :math:`{t^\ast}` :ref:`matches ` the result type :math:`C{.}\mathsf{labels}{}[{l'}]`. -Step_read/call x -1. Let z be the current state. -2. Assert: Due to validation, (x < |$funcaddr(z)|). -3. Execute the instruction (CALL_ADDR $funcaddr(z)[x]). -Step_read/call_indirect x -1. Let z be the current state. -2. Assert: Due to validation, a value of value type I32 is on the top of the stack. -3. Pop the value (I32.CONST i) from the stack. -4. If (i >= |$table(z, 0).REFS|), then: - a. Trap. -5. If $table(z, 0).REFS[i] is not defined, then: - a. Trap. -6. Let ?(a) be $table(z, 0).REFS[i]. -7. If (a >= |$funcinst(z)|), then: - a. Trap. -8. If ($type(z, x) =/= $funcinst(z)[a].TYPE), then: - a. Trap. -9. Execute the instruction (CALL_ADDR a). -Step_read/call_addr a -1. Let z be the current state. -2. Assert: Due to validation, (a < |$funcinst(z)|). -3. Let { TYPE: t_1^k -> t_2^n; MODULE: mm; CODE: func } be $funcinst(z)[a]. -4. Let (FUNC x local_0* instr*) be func. -5. Let t* be []. -6. For each local_0 in local_0*, do: - a. Let (LOCAL t) be local_0. - b. Append t to the t*. -7. Assert: Due to validation, there are at least k values on the top of the stack. -8. Pop the values val^k from the stack. -9. Let f be { LOCALS: val^k :: $default_(t)*; MODULE: mm }. -10. Push the frame (FRAME_ n { f }) to the stack. -11. Enter instr* with label (LABEL_ n { [] }). -Step_read/local.get x -1. Let z be the current state. -2. Push the value $local(z, x) to the stack. +The instruction :math:`(\mathsf{call}~x)` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}` if: -Step_read/global.get x -1. Let z be the current state. -2. Push the value $global(z, x).VALUE to the stack. -Step_read/load t loadop_? ao -1. Let z be the current state. -2. Assert: Due to validation, a value of value type I32 is on the top of the stack. -3. Pop the value (I32.CONST i) from the stack. -4. If loadop_? is not defined, then: - a. If (((i + ao.OFFSET) + ($size(t) / 8)) > |$mem(z, 0).BYTES|), then: - 1) Trap. - b. Let c be $bytes__1^-1(t, $mem(z, 0).BYTES[(i + ao.OFFSET) : ($size(t) / 8)]). - c. Push the value (t.CONST c) to the stack. -5. Else: - a. Assert: Due to validation, t is Inn. - b. Let ?(loadop_0) be loadop_?. - c. Let n _ sx be loadop_0. - d. If (((i + ao.OFFSET) + (n / 8)) > |$mem(z, 0).BYTES|), then: - 1) Trap. - e. Let c be $ibytes__1^-1(n, $mem(z, 0).BYTES[(i + ao.OFFSET) : (n / 8)]). - f. Push the value (t.CONST $extend__(n, $size(t), sx, c)) to the stack. + * The function type :math:`C{.}\mathsf{funcs}{}[x]` exists. + + * The function type :math:`C{.}\mathsf{funcs}{}[x]` is of the form :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + + + + +The instruction :math:`(\mathsf{call\_indirect}~x~y)` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\mathsf{i{\scriptstyle 32}}~\rightarrow~{t_2^\ast}` if: + + + * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. + + * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`({\mathit{lim}}~\mathsf{funcref})`. + + * The function type :math:`C{.}\mathsf{types}{}[y]` exists. + + * The function type :math:`C{.}\mathsf{types}{}[y]` is of the form :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + + + + +The instruction :math:`\mathsf{return}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~{t^\ast}~\rightarrow~{t_2^\ast}` if: + + + * The result type :math:`C{.}\mathsf{return}` is of the form :math:`{t^\ast}`. + + + + +The instruction :math:`({\mathit{nt}}{.}\mathsf{const}~c_{\mathit{nt}})` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~{\mathit{nt}}`. + + + + +The instruction :math:`({\mathit{nt}} {.} {\mathit{unop}}_{\mathit{nt}})` is :ref:`valid ` with the function type :math:`{\mathit{nt}}~\rightarrow~{\mathit{nt}}`. + + + + +The instruction :math:`({\mathit{nt}} {.} {\mathit{binop}}_{\mathit{nt}})` is :ref:`valid ` with the function type :math:`{\mathit{nt}}~{\mathit{nt}}~\rightarrow~{\mathit{nt}}`. + + + + +The instruction :math:`({\mathit{nt}} {.} {\mathit{testop}}_{\mathit{nt}})` is :ref:`valid ` with the function type :math:`{\mathit{nt}}~\rightarrow~\mathsf{i{\scriptstyle 32}}`. -Step_read/memory.size -1. Let z be the current state. -2. Let ((n * 64) * $Ki()) be |$mem(z, 0).BYTES|. -3. Push the value (I32.CONST n) to the stack. -Step/local.set x -1. Let z be the current state. -2. Assert: Due to validation, a value is on the top of the stack. -3. Pop the value val from the stack. -4. Perform $with_local(z, x, val). -Step/global.set x -1. Let z be the current state. -2. Assert: Due to validation, a value is on the top of the stack. -3. Pop the value val from the stack. -4. Perform $with_global(z, x, val). -Step/store t sz? ao -1. Let z be the current state. -2. Assert: Due to validation, a value of value type num is on the top of the stack. -3. Pop the value (t'.CONST c) from the stack. -4. Assert: Due to validation, a value is on the top of the stack. -5. Pop the value (I32.CONST i) from the stack. -6. Assert: Due to validation, (t = t'). -7. If sz? is not defined, then: - a. If (((i + ao.OFFSET) + ($size(t') / 8)) > |$mem(z, 0).BYTES|), then: - 1) Trap. - b. Let b* be $bytes_(t', c). - c. Perform $with_mem(z, 0, (i + ao.OFFSET), ($size(t') / 8), b*). -8. Else: - a. Assert: Due to validation, t' is Inn. - b. Let ?(n) be sz?. - c. If (((i + ao.OFFSET) + (n / 8)) > |$mem(z, 0).BYTES|), then: - 1) Trap. - d. Let b* be $ibytes_(n, $wrap__($size(t'), n, c)). - e. Perform $with_mem(z, 0, (i + ao.OFFSET), (n / 8), b*). +The instruction :math:`({\mathit{nt}} {.} {\mathit{relop}}_{\mathit{nt}})` is :ref:`valid ` with the function type :math:`{\mathit{nt}}~{\mathit{nt}}~\rightarrow~\mathsf{i{\scriptstyle 32}}`. -Step/memory.grow -1. Let z be the current state. -2. Assert: Due to validation, a value of value type I32 is on the top of the stack. -3. Pop the value (I32.CONST n) from the stack. -4. Either: - a. Let mi be $growmemory($mem(z, 0), n). - b. Push the value (I32.CONST (|$mem(z, 0).BYTES| / (64 * $Ki()))) to the stack. - c. Perform $with_meminst(z, 0, mi). -5. Or: - a. Push the value (I32.CONST $inv_signed_(32, (- 1))) to the stack. -Ki -1. Return 1024. -min i j -1. If (i <= j), then: - a. Return i. -2. Return j. -sum n''* -1. If (n''* = []), then: - a. Return 0. -2. Let [n] :: n'* be n''*. -3. Return (n + $sum(n'*)). +The instruction :math:`({\mathit{nt}}_1 {.} {{\mathit{cvtop}}}{\mathsf{\_}}{{\mathit{nt}}_2})` is :ref:`valid ` with the function type :math:`{\mathit{nt}}_2~\rightarrow~{\mathit{nt}}_1` if: -opt_ `X X* -1. If (X* = []), then: - a. Return ?(). -2. If (|X*| = 1), then: - a. Let [w] be X*. - b. Return ?(w). -3. Fail. -list_ `X X? -1. If X? is not defined, then: - a. Return []. -2. Let ?(w) be X?. -3. Return [w]. + * Either: -concat_ `X X* -1. If (X* = []), then: - a. Return []. -2. Let [w*] :: w'** be X*. -3. Return w* :: $concat_(`X, w'**). + * :math:`{\mathit{cvtop}}` is of the form :math:`\mathsf{reinterpret}`. -signif N -1. If (N = 32), then: - a. Return 23. -2. If (N = 64), then: - a. Return 52. -3. Fail. + * :math:`{|{\mathit{nt}}_1|}` is of the form :math:`{|{\mathit{nt}}_2|}`. -expon N -1. If (N = 32), then: - a. Return 8. -2. If (N = 64), then: - a. Return 11. -3. Fail. + * Or: -M N -1. Return $signif(N). -E N -1. Return $expon(N). -fzero N -1. Return (POS (SUBNORM 0)). -fone N -1. Return (POS (NORM 1 0)). +The instruction :math:`(\mathsf{ref{.}null}~{\mathit{rt}})` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~{\mathit{rt}}`. -canon_ N -1. Return (2 ^ ($signif(N) - 1)). -size valtype -1. If (valtype = I32), then: - a. Return 32. -2. If (valtype = I64), then: - a. Return 64. -3. If (valtype = F32), then: - a. Return 32. -4. Assert: Due to validation, (valtype = F64). -5. Return 64. -funcsxt externtype'* -1. If (externtype'* = []), then: - a. Return []. -2. Let [externtype_0] :: xt* be externtype'*. -3. If externtype_0 is some FUNC, then: - a. Let (FUNC ft) be externtype_0. - b. Return [ft] :: $funcsxt(xt*). -4. Let [externtype] :: xt* be externtype'*. -5. Return $funcsxt(xt*). -globalsxt externtype'* -1. If (externtype'* = []), then: - a. Return []. -2. Let [externtype_0] :: xt* be externtype'*. -3. If externtype_0 is some GLOBAL, then: - a. Let (GLOBAL gt) be externtype_0. - b. Return [gt] :: $globalsxt(xt*). -4. Let [externtype] :: xt* be externtype'*. -5. Return $globalsxt(xt*). +The instruction :math:`(\mathsf{ref{.}func}~x)` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\mathsf{funcref}` if: -tablesxt externtype'* -1. If (externtype'* = []), then: - a. Return []. -2. Let [externtype_0] :: xt* be externtype'*. -3. If externtype_0 is some TABLE, then: - a. Let (TABLE tt) be externtype_0. - b. Return [tt] :: $tablesxt(xt*). -4. Let [externtype] :: xt* be externtype'*. -5. Return $tablesxt(xt*). -memsxt externtype'* -1. If (externtype'* = []), then: - a. Return []. -2. Let [externtype_0] :: xt* be externtype'*. -3. If externtype_0 is some MEM, then: - a. Let (MEM mt) be externtype_0. - b. Return [mt] :: $memsxt(xt*). -4. Let [externtype] :: xt* be externtype'*. -5. Return $memsxt(xt*). + * The function type :math:`C{.}\mathsf{funcs}{}[x]` exists. -memarg0 -1. Return { ALIGN: 0; OFFSET: 0 }. -bool b -1. If (b = false), then: - a. Return 0. -2. Assert: Due to validation, (b = true). -3. Return 1. -signed_ N i -1. If (i < (2 ^ (N - 1))), then: - a. Return i. -2. Assert: Due to validation, ((2 ^ (N - 1)) <= i). -3. Assert: Due to validation, (i < (2 ^ N)). -4. Return (i - (2 ^ N)). -inv_signed_ N i -1. If ((0 <= i) /\ (i < (2 ^ (N - 1)))), then: - a. Return i. -2. Assert: Due to validation, ((- (2 ^ (N - 1))) <= i). -3. Assert: Due to validation, (i < 0). -4. Return (i + (2 ^ N)). +The instruction :math:`\mathsf{ref{.}is\_null}` is :ref:`valid ` with the function type :math:`{\mathit{rt}}~\rightarrow~\mathsf{i{\scriptstyle 32}}`. -unop_ valtype unop_ iN -1. If valtype is Inn, then: - a. If (unop_ = CLZ), then: - 1) Return [$iclz_($size(valtype), iN)]. - b. If (unop_ = CTZ), then: - 1) Return [$ictz_($size(valtype), iN)]. - c. If (unop_ = POPCNT), then: - 1) Return [$ipopcnt_($size(valtype), iN)]. -2. Assert: Due to validation, valtype is Fnn. -3. If (unop_ = ABS), then: - a. Return $fabs_($size(valtype), iN). -4. If (unop_ = NEG), then: - a. Return $fneg_($size(valtype), iN). -5. If (unop_ = SQRT), then: - a. Return $fsqrt_($size(valtype), iN). -6. If (unop_ = CEIL), then: - a. Return $fceil_($size(valtype), iN). -7. If (unop_ = FLOOR), then: - a. Return $ffloor_($size(valtype), iN). -8. If (unop_ = TRUNC), then: - a. Return $ftrunc_($size(valtype), iN). -9. Assert: Due to validation, (unop_ = NEAREST). -10. Return $fnearest_($size(valtype), iN). -iadd_ N i_1 i_2 -1. Return ((i_1 + i_2) \ (2 ^ N)). -idiv_ N sx i_1 i_2 -1. If (sx = U), then: - a. If (i_2 = 0), then: - 1) Return ?(). - b. Return ?($truncz((i_1 / i_2))). -2. Assert: Due to validation, (sx = S). -3. If (i_2 = 0), then: - a. Return ?(). -4. If (($signed_(N, i_1) / $signed_(N, i_2)) = (2 ^ (N - 1))), then: - a. Return ?(). -5. Return ?($inv_signed_(N, $truncz(($signed_(N, i_1) / $signed_(N, i_2))))). -imul_ N i_1 i_2 -1. Return ((i_1 * i_2) \ (2 ^ N)). +The instruction :math:`(\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c)` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\mathsf{v{\scriptstyle 128}}`. -irem_ N sx i_1 i_2 -1. If (sx = U), then: - a. If (i_2 = 0), then: - 1) Return ?(). - b. Return ?((i_1 - (i_2 * $truncz((i_1 / i_2))))). -2. Assert: Due to validation, (sx = S). -3. If (i_2 = 0), then: - a. Return ?(). -4. Let j_1 be $signed_(N, i_1). -5. Let j_2 be $signed_(N, i_2). -6. Return ?($inv_signed_(N, (j_1 - (j_2 * $truncz((j_1 / j_2)))))). -isub_ N i_1 i_2 -1. Return ((((2 ^ N) + i_1) - i_2) \ (2 ^ N)). -binop_ valtype binop_ iN_1 iN_2 -1. If valtype is Inn, then: - a. If (binop_ = ADD), then: - 1) Return [$iadd_($size(valtype), iN_1, iN_2)]. - b. If (binop_ = SUB), then: - 1) Return [$isub_($size(valtype), iN_1, iN_2)]. - c. If (binop_ = MUL), then: - 1) Return [$imul_($size(valtype), iN_1, iN_2)]. - d. If binop_ is some DIV, then: - 1) Let (DIV sx) be binop_. - 2) Return $list_(`val_((Inn : Inn <: valtype)), $idiv_($size(valtype), sx, iN_1, iN_2)). - e. If binop_ is some REM, then: - 1) Let (REM sx) be binop_. - 2) Return $list_(`val_((Inn : Inn <: valtype)), $irem_($size(valtype), sx, iN_1, iN_2)). - f. If (binop_ = AND), then: - 1) Return [$iand_($size(valtype), iN_1, iN_2)]. - g. If (binop_ = OR), then: - 1) Return [$ior_($size(valtype), iN_1, iN_2)]. - h. If (binop_ = XOR), then: - 1) Return [$ixor_($size(valtype), iN_1, iN_2)]. - i. If (binop_ = SHL), then: - 1) Return [$ishl_($size(valtype), iN_1, iN_2)]. - j. If binop_ is some SHR, then: - 1) Let (SHR sx) be binop_. - 2) Return [$ishr_($size(valtype), sx, iN_1, iN_2)]. - k. If (binop_ = ROTL), then: - 1) Return [$irotl_($size(valtype), iN_1, iN_2)]. - l. If (binop_ = ROTR), then: - 1) Return [$irotr_($size(valtype), iN_1, iN_2)]. -2. Assert: Due to validation, valtype is Fnn. -3. If (binop_ = ADD), then: - a. Return $fadd_($size(valtype), iN_1, iN_2). -4. If (binop_ = SUB), then: - a. Return $fsub_($size(valtype), iN_1, iN_2). -5. If (binop_ = MUL), then: - a. Return $fmul_($size(valtype), iN_1, iN_2). -6. If (binop_ = DIV), then: - a. Return $fdiv_($size(valtype), iN_1, iN_2). -7. If (binop_ = MIN), then: - a. Return $fmin_($size(valtype), iN_1, iN_2). -8. If (binop_ = MAX), then: - a. Return $fmax_($size(valtype), iN_1, iN_2). -9. Assert: Due to validation, (binop_ = COPYSIGN). -10. Return $fcopysign_($size(valtype), iN_1, iN_2). -ieqz_ N i_1 -1. Return $bool((i_1 = 0)). +The instruction :math:`(\mathsf{v{\scriptstyle 128}} {.} {\mathit{vvunop}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. -testop_ Inn EQZ iN -1. Return $ieqz_($size(Inn), iN). -ieq_ N i_1 i_2 -1. Return $bool((i_1 = i_2)). -ige_ N sx i_1 i_2 -1. If (sx = U), then: - a. Return $bool((i_1 >= i_2)). -2. Assert: Due to validation, (sx = S). -3. Return $bool(($signed_(N, i_1) >= $signed_(N, i_2))). -igt_ N sx i_1 i_2 -1. If (sx = U), then: - a. Return $bool((i_1 > i_2)). -2. Assert: Due to validation, (sx = S). -3. Return $bool(($signed_(N, i_1) > $signed_(N, i_2))). +The instruction :math:`(\mathsf{v{\scriptstyle 128}} {.} {\mathit{vvbinop}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. -ile_ N sx i_1 i_2 -1. If (sx = U), then: - a. Return $bool((i_1 <= i_2)). -2. Assert: Due to validation, (sx = S). -3. Return $bool(($signed_(N, i_1) <= $signed_(N, i_2))). -ilt_ N sx i_1 i_2 -1. If (sx = U), then: - a. Return $bool((i_1 < i_2)). -2. Assert: Due to validation, (sx = S). -3. Return $bool(($signed_(N, i_1) < $signed_(N, i_2))). -ine_ N i_1 i_2 -1. Return $bool((i_1 =/= i_2)). -relop_ valtype relop_ iN_1 iN_2 -1. If valtype is Inn, then: - a. If (relop_ = EQ), then: - 1) Return $ieq_($size(valtype), iN_1, iN_2). - b. If (relop_ = NE), then: - 1) Return $ine_($size(valtype), iN_1, iN_2). - c. If relop_ is some LT, then: - 1) Let (LT sx) be relop_. - 2) Return $ilt_($size(valtype), sx, iN_1, iN_2). - d. If relop_ is some GT, then: - 1) Let (GT sx) be relop_. - 2) Return $igt_($size(valtype), sx, iN_1, iN_2). - e. If relop_ is some LE, then: - 1) Let (LE sx) be relop_. - 2) Return $ile_($size(valtype), sx, iN_1, iN_2). - f. If relop_ is some GE, then: - 1) Let (GE sx) be relop_. - 2) Return $ige_($size(valtype), sx, iN_1, iN_2). -2. Assert: Due to validation, valtype is Fnn. -3. If (relop_ = EQ), then: - a. Return $feq_($size(valtype), iN_1, iN_2). -4. If (relop_ = NE), then: - a. Return $fne_($size(valtype), iN_1, iN_2). -5. If (relop_ = LT), then: - a. Return $flt_($size(valtype), iN_1, iN_2). -6. If (relop_ = GT), then: - a. Return $fgt_($size(valtype), iN_1, iN_2). -7. If (relop_ = LE), then: - a. Return $fle_($size(valtype), iN_1, iN_2). -8. Assert: Due to validation, (relop_ = GE). -9. Return $fge_($size(valtype), iN_1, iN_2). +The instruction :math:`(\mathsf{v{\scriptstyle 128}} {.} {\mathit{vvternop}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. -cvtop__ valtype valtype' cvtop iN -1. If cvtop is some EXTEND, then: - a. Let (EXTEND sx) be cvtop. - b. If ((valtype = I32) /\ (valtype' = I64)), then: - 1) Return [$extend__(32, 64, sx, iN)]. -2. If ((valtype = I64) /\ ((valtype' = I32) /\ (cvtop = WRAP))), then: - a. Return [$wrap__(64, 32, iN)]. -3. If (valtype is Fnn /\ (valtype' is Inn /\ cvtop is some TRUNC)), then: - a. Let (TRUNC sx) be cvtop. - b. Return $list_(`val_((Inn : Inn <: valtype)), $trunc__($size(valtype), $size(valtype'), sx, iN)). -4. If ((valtype = F32) /\ ((valtype' = F64) /\ (cvtop = PROMOTE))), then: - a. Return $promote__(32, 64, iN). -5. If ((valtype = F64) /\ ((valtype' = F32) /\ (cvtop = DEMOTE))), then: - a. Return $demote__(64, 32, iN). -6. If (valtype is Inn /\ valtype' is Fnn), then: - a. If cvtop is some CONVERT, then: - 1) Let (CONVERT sx) be cvtop. - 2) Return [$convert__($size(valtype), $size(valtype'), sx, iN)]. - b. If ((cvtop = REINTERPRET) /\ ($size(valtype) = $size(valtype'))), then: - 1) Return [$reinterpret__(valtype, valtype', iN)]. -7. Assert: Due to validation, valtype is Fnn. -8. Assert: Due to validation, valtype' is Inn. -9. Assert: Due to validation, (cvtop = REINTERPRET). -10. Assert: Due to validation, ($size(valtype') = $size(valtype)). -11. Return [$reinterpret__(valtype, valtype', iN)]. -inez_ N i_1 -1. Return $bool((i_1 =/= 0)). -default_ valtype -1. If (valtype = I32), then: - a. Return (I32.CONST 0). -2. If (valtype = I64), then: - a. Return (I64.CONST 0). -3. If (valtype = F32), then: - a. Return (F32.CONST $fzero(32)). -4. Assert: Due to validation, (valtype = F64). -5. Return (F64.CONST $fzero(64)). -funcsxa externaddr'* -1. If (externaddr'* = []), then: - a. Return []. -2. Let [externaddr_0] :: xv* be externaddr'*. -3. If externaddr_0 is some FUNC, then: - a. Let (FUNC fa) be externaddr_0. - b. Return [fa] :: $funcsxa(xv*). -4. Let [externaddr] :: xv* be externaddr'*. -5. Return $funcsxa(xv*). +The instruction :math:`(\mathsf{v{\scriptstyle 128}} {.} {\mathit{vvtestop}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{i{\scriptstyle 32}}`. -globalsxa externaddr'* -1. If (externaddr'* = []), then: - a. Return []. -2. Let [externaddr_0] :: xv* be externaddr'*. -3. If externaddr_0 is some GLOBAL, then: - a. Let (GLOBAL ga) be externaddr_0. - b. Return [ga] :: $globalsxa(xv*). -4. Let [externaddr] :: xv* be externaddr'*. -5. Return $globalsxa(xv*). -tablesxa externaddr'* -1. If (externaddr'* = []), then: - a. Return []. -2. Let [externaddr_0] :: xv* be externaddr'*. -3. If externaddr_0 is some TABLE, then: - a. Let (TABLE ta) be externaddr_0. - b. Return [ta] :: $tablesxa(xv*). -4. Let [externaddr] :: xv* be externaddr'*. -5. Return $tablesxa(xv*). -memsxa externaddr'* -1. If (externaddr'* = []), then: - a. Return []. -2. Let [externaddr_0] :: xv* be externaddr'*. -3. If externaddr_0 is some MEM, then: - a. Let (MEM ma) be externaddr_0. - b. Return [ma] :: $memsxa(xv*). -4. Let [externaddr] :: xv* be externaddr'*. -5. Return $memsxa(xv*). -store (s, f) -1. Return. +The instruction :math:`({\mathit{sh}} {.} {\mathit{vunop}}_{\mathit{sh}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. -frame (s, f) -1. Return f. -funcaddr (s, f) -1. Return f.MODULE.FUNCS. -funcinst (s, f) -1. Return s.FUNCS. -globalinst (s, f) -1. Return s.GLOBALS. +The instruction :math:`({\mathit{sh}} {.} {\mathit{vbinop}}_{\mathit{sh}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. -tableinst (s, f) -1. Return s.TABLES. -meminst (s, f) -1. Return s.MEMS. -moduleinst (s, f) -1. Return f.MODULE. -type (s, f) x -1. Return f.MODULE.TYPES[x]. +The instruction :math:`({\mathit{sh}} {.} {\mathit{vtestop}}_{\mathit{sh}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{i{\scriptstyle 32}}`. -func (s, f) x -1. Return s.FUNCS[f.MODULE.FUNCS[x]]. -global (s, f) x -1. Return s.GLOBALS[f.MODULE.GLOBALS[x]]. -table (s, f) x -1. Return s.TABLES[f.MODULE.TABLES[x]]. -mem (s, f) x -1. Return s.MEMS[f.MODULE.MEMS[x]]. +The instruction :math:`({\mathit{sh}} {.} {\mathit{vrelop}}_{\mathit{sh}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. -local (s, f) x -1. Return f.LOCALS[x]. -with_local (s, f) x v -1. Replace f.LOCALS[x] with v. -with_global (s, f) x v -1. Replace s.GLOBALS[f.MODULE.GLOBALS[x]].VALUE with v. -with_table (s, f) x i a -1. Replace s.TABLES[f.MODULE.TABLES[x]].REFS[i] with ?(a). +The instruction :math:`({\mathit{sh}} {.} {\mathit{vshiftop}}_{\mathit{sh}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{i{\scriptstyle 32}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. -with_tableinst (s, f) x ti -1. Replace s.TABLES[f.MODULE.TABLES[x]] with ti. -with_mem (s, f) x i j b* -1. Replace s.MEMS[f.MODULE.MEMS[x]].BYTES[i : j] with b*. -with_meminst (s, f) x mi -1. Replace s.MEMS[f.MODULE.MEMS[x]] with mi. -growtable ti n -1. Let { TYPE: ([ i .. j? ]); REFS: ?(a)* } be ti. -2. Let i' be (|a*| + n). -3. If (i' <= j)?, then: - a. Let ti' be { TYPE: ([ i' .. j? ]); REFS: ?(a)* :: ?()^n }. - b. Return ti'. -4. Fail. +The instruction :math:`({\mathit{sh}}{.}\mathsf{bitmask})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{i{\scriptstyle 32}}`. -growmemory mi n -1. Let { TYPE: ([ i .. j? ]); BYTES: b* } be mi. -2. Let i' be ((|b*| / (64 * $Ki())) + n). -3. If (i' <= j)?, then: - a. Let mi' be { TYPE: ([ i' .. j? ]); BYTES: b* :: 0^(n * (64 * $Ki())) }. - b. Return mi'. -4. Fail. -funcs externaddr''* -1. If (externaddr''* = []), then: - a. Return []. -2. Let [externaddr_0] :: externaddr'* be externaddr''*. -3. If externaddr_0 is some FUNC, then: - a. Let (FUNC fa) be externaddr_0. - b. Return [fa] :: $funcs(externaddr'*). -4. Let [externaddr] :: externaddr'* be externaddr''*. -5. Return $funcs(externaddr'*). -globals externaddr''* -1. If (externaddr''* = []), then: - a. Return []. -2. Let [externaddr_0] :: externaddr'* be externaddr''*. -3. If externaddr_0 is some GLOBAL, then: - a. Let (GLOBAL ga) be externaddr_0. - b. Return [ga] :: $globals(externaddr'*). -4. Let [externaddr] :: externaddr'* be externaddr''*. -5. Return $globals(externaddr'*). -tables externaddr''* -1. If (externaddr''* = []), then: - a. Return []. -2. Let [externaddr_0] :: externaddr'* be externaddr''*. -3. If externaddr_0 is some TABLE, then: - a. Let (TABLE ta) be externaddr_0. - b. Return [ta] :: $tables(externaddr'*). -4. Let [externaddr] :: externaddr'* be externaddr''*. -5. Return $tables(externaddr'*). +The instruction :math:`({\mathit{sh}}{.}\mathsf{swizzle})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. -mems externaddr''* -1. If (externaddr''* = []), then: - a. Return []. -2. Let [externaddr_0] :: externaddr'* be externaddr''*. -3. If externaddr_0 is some MEM, then: - a. Let (MEM ma) be externaddr_0. - b. Return [ma] :: $mems(externaddr'*). -4. Let [externaddr] :: externaddr'* be externaddr''*. -5. Return $mems(externaddr'*). -allocfunc s moduleinst func -1. Let (FUNC x local* expr) be func. -2. Let fi be { TYPE: moduleinst.TYPES[x]; MODULE: moduleinst; CODE: func }. -3. Let a be |s.FUNCS|. -4. Append fi to the s.FUNCS. -5. Return a. -allocfuncs s moduleinst func''* -1. If (func''* = []), then: - a. Return []. -2. Let [func] :: func'* be func''*. -3. Let fa be $allocfunc(s, moduleinst, func). -4. Let fa'* be $allocfuncs(s, moduleinst, func'*). -5. Return [fa] :: fa'*. -allocglobal s globaltype val -1. Let gi be { TYPE: globaltype; VALUE: val }. -2. Let a be |s.GLOBALS|. -3. Append gi to the s.GLOBALS. -4. Return a. +The instruction :math:`({\mathit{sh}}{.}\mathsf{shuffle}~{i^\ast})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}` if: -allocglobals s globaltype''* val''* -1. If (globaltype''* = []), then: - a. Assert: Due to validation, (val''* = []). - b. Return []. -2. Else: - a. Let [globaltype] :: globaltype'* be globaltype''*. - b. Assert: Due to validation, (|val''*| >= 1). - c. Let [val] :: val'* be val''*. - d. Let ga be $allocglobal(s, globaltype, val). - e. Let ga'* be $allocglobals(s, globaltype'*, val'*). - f. Return [ga] :: ga'*. -alloctable s ([ i .. j? ]) -1. Let ti be { TYPE: ([ i .. j? ]); REFS: ?()^i }. -2. Let a be |s.TABLES|. -3. Append ti to the s.TABLES. -4. Return a. + * For all :math:`i` in :math:`{i^\ast}`: + + * The lane index :math:`i` is less than :math:`2 \cdot {\mathrm{dim}}({\mathit{sh}})`. -alloctables s tabletype''* -1. If (tabletype''* = []), then: - a. Return []. -2. Let [tabletype] :: tabletype'* be tabletype''*. -3. Let ta be $alloctable(s, tabletype). -4. Let ta'* be $alloctables(s, tabletype'*). -5. Return [ta] :: ta'*. -allocmem s ([ i .. j? ]) -1. Let mi be { TYPE: ([ i .. j? ]); BYTES: 0^(i * (64 * $Ki())) }. -2. Let a be |s.MEMS|. -3. Append mi to the s.MEMS. -4. Return a. -allocmems s memtype''* -1. If (memtype''* = []), then: - a. Return []. -2. Let [memtype] :: memtype'* be memtype''*. -3. Let ma be $allocmem(s, memtype). -4. Let ma'* be $allocmems(s, memtype'*). -5. Return [ma] :: ma'*. -instexport fa* ga* ta* ma* (EXPORT name externidx) -1. If externidx is some FUNC, then: - a. Let (FUNC x) be externidx. - b. Return { NAME: name; ADDR: (FUNC fa*[x]) }. -2. If externidx is some GLOBAL, then: - a. Let (GLOBAL x) be externidx. - b. Return { NAME: name; ADDR: (GLOBAL ga*[x]) }. -3. If externidx is some TABLE, then: - a. Let (TABLE x) be externidx. - b. Return { NAME: name; ADDR: (TABLE ta*[x]) }. -4. Assert: Due to validation, externidx is some MEM. -5. Let (MEM x) be externidx. -6. Return { NAME: name; ADDR: (MEM ma*[x]) }. +The instruction :math:`({\mathit{sh}}{.}\mathsf{splat})` is :ref:`valid ` with the function type :math:`{\mathit{numtype}}~\rightarrow~\mathsf{v{\scriptstyle 128}}` if: -allocmodule s module externaddr* val* -1. Let (MODULE type_0* import* func^n_func global_1* table_2* mem_3* elem* data* start? export*) be module. -2. Let (MEMORY memtype)^n_mem be mem_3*. -3. Let (TABLE tabletype)^n_table be table_2*. -4. Let (GLOBAL globaltype expr_1)^n_global be global_1*. -5. Let ft* be []. -6. For each type_0 in type_0*, do: - a. Let (TYPE ft) be type_0. - b. Append ft to the ft*. -7. Let fa_ex* be $funcs(externaddr*). -8. Let ga_ex* be $globals(externaddr*). -9. Let ma_ex* be $mems(externaddr*). -10. Let ta_ex* be $tables(externaddr*). -11. Let fa* be (|s.FUNCS| + i_func)^(i_func= 1). - c. Let [i] :: i'* be u32*. - d. Replace s.TABLES[moduleinst.TABLES[0]].REFS[i : |a*|] with ?(a)*. - e. Perform $initelem(s, moduleinst, i'*, a'**). - f. Return. + * The number type :math:`{\mathit{numtype}}` is :math:`{\mathrm{unpack}}({\mathit{sh}})`. -initdata s moduleinst u32* byte* -1. If (byte* = []), then: - a. Assert: Due to validation, (u32* = []). - b. Return. -2. Else: - a. Let [b*] :: b'** be byte*. - b. Assert: Due to validation, (|u32*| >= 1). - c. Let [i] :: i'* be u32*. - d. Replace s.MEMS[moduleinst.MEMS[0]].BYTES[i : |b*|] with b*. - e. Perform $initdata(s, moduleinst, i'*, b'**). - f. Return. -instantiate s module externaddr* -1. Let (MODULE type* import* func* global* table* mem* elem* data* start? export*) be module. -2. Let functype* be []. -3. For each type in type*, do: - a. Let (TYPE functype) be type. - b. Append functype to the functype*. -4. Let n_F be |func*|. -5. Let b** be []. -6. Let expr_D* be []. -7. For each data in data*, do: - a. Let (DATA expr_D b*) be data. - b. Append b* to the b**. - c. Append expr_D to the expr_D*. -8. Let expr_E* be []. -9. Let x** be []. -10. For each elem in elem*, do: - a. Let (ELEM expr_E x*) be elem. - b. Append expr_E to the expr_E*. - c. Append x* to the x**. -11. Let expr_G* be []. -12. For each global in global*, do: - a. Let (GLOBAL globaltype expr_G) be global. - b. Append expr_G to the expr_G*. -13. Let moduleinst_init be { TYPES: functype*; FUNCS: $funcs(externaddr*) :: (|s.FUNCS| + i_F)^(i_F t_2* be $funcinst((s, f))[fa].TYPE. -4. Pop the frame (FRAME_ 0 { _f }) from the stack. -5. Let k be |t_2*|. -6. Push the frame (FRAME_ k { f }) to the stack. -7. Push the values val^n to the stack. -8. Execute the instruction (CALL_ADDR fa). -9. Pop the values val'^k from the stack. -10. Pop the frame (FRAME_ k { f }) from the stack. -11. Return val'^k. -Eval_expr instr* -1. Execute the sequence instr*. -2. Pop the value val from the stack. -3. Return [val]. +The instruction :math:`({{\mathit{sh}}{.}\mathsf{extract\_lane}}{{{\mathit{sx}}^?}}~i)` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\rightarrow~{\mathit{numtype}}` if: -== Complete. -Generating prose for Wasm 2.0... -spectec 0.5 generator -== Parsing... -== Elaboration... -== IL Validation... -== Running pass sideconditions... -== IL Validation after pass sideconditions... -== Translating to AL... -== Prose Generation... + * The lane index :math:`i` is less than :math:`{\mathrm{dim}}({\mathit{sh}})`. + * The number type :math:`{\mathit{numtype}}` is :math:`{\mathrm{unpack}}({\mathit{sh}})`. -The limits :math:`{}[ n .. {m^?} ]` is :ref:`valid ` with :math:`k` if: - * :math:`n` is less than or equal to :math:`k`. - * If :math:`m` is defined, then: +The instruction :math:`({\mathit{sh}}{.}\mathsf{replace\_lane}~i)` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~{\mathit{numtype}}~\rightarrow~\mathsf{v{\scriptstyle 128}}` if: - * :math:`n` is less than or equal to :math:`m`. - * :math:`m` is less than or equal to :math:`k`. + * The lane index :math:`i` is less than :math:`{\mathrm{dim}}({\mathit{sh}})`. + * The number type :math:`{\mathit{numtype}}` is :math:`{\mathrm{unpack}}({\mathit{sh}})`. -The function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}` is always :ref:`valid `. +The instruction :math:`(\mathsf{vextunop}~{\mathit{sh}}_1~{\mathit{sh}}_2~{\mathit{vextunop}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. -The global type :math:`({\mathsf{mut}^?}~t)` is always :ref:`valid `. +The instruction :math:`(\mathsf{vextbinop}~{\mathit{sh}}_1~{\mathit{sh}}_2~{\mathit{vextbinop}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. -The table type :math:`({\mathit{limits}}~{\mathit{reftype}})` is :ref:`valid ` if: +The instruction :math:`({{\mathit{sh}}_1{.}\mathsf{narrow}}{\mathsf{\_}}{{\mathit{sh}}_2}{\mathsf{\_}}{{\mathit{sx}}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. - * The limits :math:`{\mathit{limits}}` is :ref:`valid ` with :math:`{2^{32}} - 1`. +The instruction :math:`({\mathit{sh}}_1 {.} {{\mathit{vcvtop}}}{\mathsf{\_}}{{\mathit{sh}}_2})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. -The memory type :math:`{\mathit{limits}}~\mathsf{page}` is :ref:`valid ` if: - * The limits :math:`{\mathit{limits}}` is :ref:`valid ` with :math:`{2^{16}}`. +The instruction :math:`(\mathsf{local{.}get}~x)` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~t` if: + * The value type :math:`C{.}\mathsf{locals}{}[x]` exists. -The external type :math:`{\mathit{externtype}}` is :ref:`valid ` if: + * The value type :math:`C{.}\mathsf{locals}{}[x]` is of the form :math:`t`. - * Either: - * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{func}~{\mathit{functype}})`. - * The function type :math:`{\mathit{functype}}` is :ref:`valid `. +The instruction :math:`(\mathsf{local{.}set}~x)` is :ref:`valid ` with the function type :math:`t~\rightarrow~\epsilon` if: - * Or: - * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{global}~{\mathit{globaltype}})`. + * The value type :math:`C{.}\mathsf{locals}{}[x]` exists. - * The global type :math:`{\mathit{globaltype}}` is :ref:`valid `. - * Or: + * The value type :math:`C{.}\mathsf{locals}{}[x]` is of the form :math:`t`. - * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{table}~{\mathit{tabletype}})`. - * The table type :math:`{\mathit{tabletype}}` is :ref:`valid `. - * Or: - * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{mem}~{\mathit{memtype}})`. - * The memory type :math:`{\mathit{memtype}}` is :ref:`valid `. +The instruction :math:`(\mathsf{local{.}tee}~x)` is :ref:`valid ` with the function type :math:`t~\rightarrow~t` if: + * The value type :math:`C{.}\mathsf{locals}{}[x]` exists. + * The value type :math:`C{.}\mathsf{locals}{}[x]` is of the form :math:`t`. -The external type :math:`(\mathsf{func}~{\mathit{functype}})` is :ref:`valid ` if: - * The function type :math:`{\mathit{functype}}` is :ref:`valid `. +The instruction :math:`(\mathsf{global{.}get}~x)` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~t` if: + * The global type :math:`C{.}\mathsf{globals}{}[x]` exists. -The external type :math:`(\mathsf{global}~{\mathit{globaltype}})` is :ref:`valid ` if: + * The global type :math:`C{.}\mathsf{globals}{}[x]` is of the form :math:`({\mathit{mut}}~t)`. - * The global type :math:`{\mathit{globaltype}}` is :ref:`valid `. +The instruction :math:`(\mathsf{global{.}set}~x)` is :ref:`valid ` with the function type :math:`t~\rightarrow~\epsilon` if: -The external type :math:`(\mathsf{table}~{\mathit{tabletype}})` is :ref:`valid ` if: + * The global type :math:`C{.}\mathsf{globals}{}[x]` exists. + * The global type :math:`C{.}\mathsf{globals}{}[x]` is of the form :math:`(\mathsf{mut}~t)`. - * The table type :math:`{\mathit{tabletype}}` is :ref:`valid `. +The instruction :math:`(\mathsf{table{.}get}~x)` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~{\mathit{rt}}` if: -The external type :math:`(\mathsf{mem}~{\mathit{memtype}})` is :ref:`valid ` if: + * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. - * The memory type :math:`{\mathit{memtype}}` is :ref:`valid `. + * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`({\mathit{lim}}~{\mathit{rt}})`. -The value type :math:`t_2` :ref:`matches ` the value type :math:`t_1` if: +The instruction :math:`(\mathsf{table{.}set}~x)` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~{\mathit{rt}}~\rightarrow~\epsilon` if: - * Either: + * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. + + * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`({\mathit{lim}}~{\mathit{rt}})`. - * The value type :math:`t_2` is of the form :math:`t_1`. - * Or: - * The value type :math:`t_2` is of the form :math:`\mathsf{bot}`. +The instruction :math:`(\mathsf{table{.}size}~x)` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\mathsf{i{\scriptstyle 32}}` if: + * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. -The value type :math:`t` :ref:`matches ` only itself. + * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`({\mathit{lim}}~{\mathit{rt}})`. -The value type :math:`\mathsf{bot}` :ref:`matches ` the value type :math:`t`. +The instruction :math:`(\mathsf{table{.}grow}~x)` is :ref:`valid ` with the function type :math:`{\mathit{rt}}~\mathsf{i{\scriptstyle 32}}~\rightarrow~\mathsf{i{\scriptstyle 32}}` if: + * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. + + * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`({\mathit{lim}}~{\mathit{rt}})`. -The result type :math:`{t_1^\ast}` :ref:`matches ` the result type :math:`{t_2^\ast}` if: - * For all :math:`t_1` in :math:`{t_1^\ast}`, and corresponding :math:`t_2` in :math:`{t_2^\ast}`: +The instruction :math:`(\mathsf{table{.}fill}~x)` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~{\mathit{rt}}~\mathsf{i{\scriptstyle 32}}~\rightarrow~\epsilon` if: - * The value type :math:`t_1` :ref:`matches ` the value type :math:`t_2`. + * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. + * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`({\mathit{lim}}~{\mathit{rt}})`. -The limits :math:`{}[ n_{11} .. n_{12} ]` :ref:`matches ` the limits :math:`{}[ n_{21} .. n_{22} ]` if: - * :math:`n_{11}` is greater than or equal to :math:`n_{21}`. +The instruction :math:`(\mathsf{table{.}copy}~x_1~x_2)` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\rightarrow~\epsilon` if: - * :math:`n_{12}` is less than or equal to :math:`n_{22}`. + * The table type :math:`C{.}\mathsf{tables}{}[x_1]` exists. + * The table type :math:`C{.}\mathsf{tables}{}[x_1]` is of the form :math:`({\mathit{lim}}_1~{\mathit{rt}})`. + * The table type :math:`C{.}\mathsf{tables}{}[x_2]` exists. -The function type :math:`{\mathit{ft}}` :ref:`matches ` only itself. + * The table type :math:`C{.}\mathsf{tables}{}[x_2]` is of the form :math:`({\mathit{lim}}_2~{\mathit{rt}})`. -The global type :math:`{\mathit{gt}}` :ref:`matches ` only itself. +The instruction :math:`(\mathsf{table{.}init}~x_1~x_2)` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\rightarrow~\epsilon` if: + * The table type :math:`C{.}\mathsf{tables}{}[x_1]` exists. + * The table type :math:`C{.}\mathsf{tables}{}[x_1]` is of the form :math:`({\mathit{lim}}~{\mathit{rt}})`. -The table type :math:`({\mathit{lim}}_1~{\mathit{rt}})` :ref:`matches ` the table type :math:`({\mathit{lim}}_2~{\mathit{rt}})` if: + * The element type :math:`C{.}\mathsf{elems}{}[x_2]` exists. + * The reference type :math:`C{.}\mathsf{elems}{}[x_2]` is of the form :math:`{\mathit{rt}}`. - * The limits :math:`{\mathit{lim}}_1` :ref:`matches ` the limits :math:`{\mathit{lim}}_2`. +The instruction :math:`(\mathsf{elem{.}drop}~x)` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\epsilon` if: -The memory type :math:`{\mathit{lim}}_1~\mathsf{page}` :ref:`matches ` the memory type :math:`{\mathit{lim}}_2~\mathsf{page}` if: + * The element type :math:`C{.}\mathsf{elems}{}[x]` exists. - * The limits :math:`{\mathit{lim}}_1` :ref:`matches ` the limits :math:`{\mathit{lim}}_2`. +The instruction :math:`\mathsf{memory{.}size}` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\mathsf{i{\scriptstyle 32}}`. -The external type :math:`{\mathit{externtype}}_1` :ref:`matches ` the external type :math:`{\mathit{externtype}}_2` if: - * Either: - * The external type :math:`{\mathit{externtype}}_1` is of the form :math:`(\mathsf{func}~{\mathit{ft}}_1)`. +The instruction :math:`\mathsf{memory{.}grow}` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~\mathsf{i{\scriptstyle 32}}`. - * The external type :math:`{\mathit{externtype}}_2` is of the form :math:`(\mathsf{func}~{\mathit{ft}}_2)`. - * The function type :math:`{\mathit{ft}}_1` :ref:`matches ` the function type :math:`{\mathit{ft}}_2`. - * Or: - * The external type :math:`{\mathit{externtype}}_1` is of the form :math:`(\mathsf{global}~{\mathit{gt}}_1)`. +The instruction :math:`\mathsf{memory{.}fill}` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\rightarrow~\epsilon`. - * The external type :math:`{\mathit{externtype}}_2` is of the form :math:`(\mathsf{global}~{\mathit{gt}}_2)`. - * The global type :math:`{\mathit{gt}}_1` :ref:`matches ` the global type :math:`{\mathit{gt}}_2`. - * Or: - * The external type :math:`{\mathit{externtype}}_1` is of the form :math:`(\mathsf{table}~{\mathit{tt}}_1)`. - * The external type :math:`{\mathit{externtype}}_2` is of the form :math:`(\mathsf{table}~{\mathit{tt}}_2)`. +The instruction :math:`\mathsf{memory{.}copy}` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\rightarrow~\epsilon`. - * The table type :math:`{\mathit{tt}}_1` :ref:`matches ` the table type :math:`{\mathit{tt}}_2`. - * Or: - * The external type :math:`{\mathit{externtype}}_1` is of the form :math:`(\mathsf{mem}~{\mathit{mt}}_1)`. - * The external type :math:`{\mathit{externtype}}_2` is of the form :math:`(\mathsf{mem}~{\mathit{mt}}_2)`. - * The memory type :math:`{\mathit{mt}}_1` :ref:`matches ` the memory type :math:`{\mathit{mt}}_2`. +The instruction :math:`(\mathsf{memory{.}init}~x)` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\rightarrow~\epsilon` if: + * The data type :math:`C{.}\mathsf{datas}{}[x]` exists. + * The data type :math:`C{.}\mathsf{datas}{}[x]` is of the form :math:`\mathsf{ok}`. -The external type :math:`(\mathsf{func}~{\mathit{ft}}_1)` :ref:`matches ` the external type :math:`(\mathsf{func}~{\mathit{ft}}_2)` if: - * The function type :math:`{\mathit{ft}}_1` :ref:`matches ` the function type :math:`{\mathit{ft}}_2`. +The instruction :math:`(\mathsf{data{.}drop}~x)` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\epsilon` if: + * The data type :math:`C{.}\mathsf{datas}{}[x]` exists. -The external type :math:`(\mathsf{global}~{\mathit{gt}}_1)` :ref:`matches ` the external type :math:`(\mathsf{global}~{\mathit{gt}}_2)` if: + * The data type :math:`C{.}\mathsf{datas}{}[x]` is of the form :math:`\mathsf{ok}`. - * The global type :math:`{\mathit{gt}}_1` :ref:`matches ` the global type :math:`{\mathit{gt}}_2`. +The instruction :math:`({{\mathit{nt}}{.}\mathsf{load}}{{{\mathit{loadop}}^?}}~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~{\mathit{valtype}}` if: -The external type :math:`(\mathsf{table}~{\mathit{tt}}_1)` :ref:`matches ` the external type :math:`(\mathsf{table}~{\mathit{tt}}_2)` if: + * Either: + * :math:`{{\mathit{loadop}}^?}` is absent. - * The table type :math:`{\mathit{tt}}_1` :ref:`matches ` the table type :math:`{\mathit{tt}}_2`. + * The value type :math:`{\mathit{valtype}}` is of the form :math:`{\mathit{nt}}`. + * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`{|{\mathit{nt}}|} / 8`. + * Or: + * The number type :math:`{\mathit{nt}}` is of the form :math:`{\mathsf{i}}{n}`. -The external type :math:`(\mathsf{mem}~{\mathit{mt}}_1)` :ref:`matches ` the external type :math:`(\mathsf{mem}~{\mathit{mt}}_2)` if: + * :math:`{{\mathit{loadop}}^?}` is of the form :math:`{M}{\mathsf{\_}}{{\mathit{sx}}}`. + * The value type :math:`{\mathit{valtype}}` is of the form :math:`{\mathsf{i}}{n}`. - * The memory type :math:`{\mathit{mt}}_1` :ref:`matches ` the memory type :math:`{\mathit{mt}}_2`. + * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`M / 8`. -The block type :math:`{\mathit{blocktype}}` is :ref:`valid ` with the function type :math:`{{\mathit{valtype}}^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast}` if: +The instruction :math:`({{\mathit{nt}}{.}\mathsf{store}}{{{\mathit{sz}}^?}}~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~{\mathit{valtype}}~\rightarrow~\epsilon` if: * Either: - * The block type :math:`{\mathit{blocktype}}` is of the form :math:`{{\mathit{valtype}''}^?}`. + * The pack size :math:`{{\mathit{sz}}^?}` is absent. - * The value type sequence :math:`{{\mathit{valtype}}^\ast}` is empty. + * The value type :math:`{\mathit{valtype}}` is of the form :math:`{\mathit{nt}}`. - * The value type sequence :math:`{{\mathit{valtype}'}^\ast}` is of the form :math:`{{\mathit{valtype}''}^?}`. + * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`{|{\mathit{nt}}|} / 8`. * Or: - * The block type :math:`{\mathit{blocktype}}` is of the form :math:`{\mathit{typeidx}}`. - - * The function type :math:`C{.}\mathsf{types}{}[{\mathit{typeidx}}]` exists. - - * The function type :math:`C{.}\mathsf{types}{}[{\mathit{typeidx}}]` is of the form :math:`{{\mathit{valtype}}^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast}`. + * The number type :math:`{\mathit{nt}}` is of the form :math:`{\mathsf{i}}{n}`. + * The pack size :math:`{{\mathit{sz}}^?}` is of the form :math:`M`. + * The value type :math:`{\mathit{valtype}}` is of the form :math:`{\mathsf{i}}{n}`. + * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`M / 8`. -The block type :math:`{{\mathit{valtype}}^?}` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~{{\mathit{valtype}}^?}`. +The instruction :math:`(\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}~{\mathit{vloadop}}~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~\mathsf{v{\scriptstyle 128}}` if: -The block type :math:`{\mathit{typeidx}}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}` if: + * Either: - * The function type :math:`C{.}\mathsf{types}{}[{\mathit{typeidx}}]` exists. + * :math:`{\mathit{vloadop}}` is of the form :math:`({M}{\mathsf{x}}{N}{\mathsf{\_}}{{\mathit{sx}}})`. - * The function type :math:`C{.}\mathsf{types}{}[{\mathit{typeidx}}]` is of the form :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`M / 8 \cdot N`. + * Or: + * :math:`{\mathit{vloadop}}` is of the form :math:`({n}{\mathsf{\_}}{\mathsf{splat}})`. + * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`n / 8`. + * Or: -The instruction :math:`\mathsf{nop}` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\epsilon`. + * :math:`{\mathit{vloadop}}` is of the form :math:`({n}{\mathsf{\_}}{\mathsf{zero}})`. + * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`n / 8`. -The instruction :math:`\mathsf{unreachable}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. +The instruction :math:`(\mathsf{vload\_lane}~\mathsf{v{\scriptstyle 128}}~n~{\mathit{memarg}}~{\mathit{laneidx}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}` if: + * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`n / 8`. -The instruction :math:`\mathsf{drop}` is :ref:`valid ` with the function type :math:`t~\rightarrow~\epsilon`. + * :math:`{\mathit{laneidx}}` is less than :math:`128 / n`. -The instruction :math:`(\mathsf{select}~{{\mathit{valtype}}^?})` is :ref:`valid ` with the function type :math:`t~t~\mathsf{i{\scriptstyle 32}}~\rightarrow~t` if: +The instruction :math:`(\mathsf{vstore}~\mathsf{v{\scriptstyle 128}}~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\epsilon` if: - * Either: + * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`{|\mathsf{v{\scriptstyle 128}}|} / 8`. - * The value type sequence :math:`{{\mathit{valtype}}^?}` is of the form :math:`t`. - * Or: - * The value type sequence :math:`{{\mathit{valtype}}^?}` is absent. - * The value type :math:`t` :ref:`matches ` the value type :math:`{t'}`. +The instruction :math:`(\mathsf{vstore\_lane}~\mathsf{v{\scriptstyle 128}}~n~{\mathit{memarg}}~{\mathit{laneidx}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\epsilon` if: - * The value type :math:`{t'}` is of the form :math:`{\mathit{numtype}}` or :math:`{t'}` is of the form :math:`{\mathit{vectype}}`. + * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`n / 8`. + * :math:`{\mathit{laneidx}}` is less than :math:`128 / n`. -The instruction :math:`(\mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}^\ast})` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}` if: - * The block type :math:`{\mathit{bt}}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. +The instruction :math:`(\mathsf{select}~t)` is :ref:`valid ` with the function type :math:`t~t~\mathsf{i{\scriptstyle 32}}~\rightarrow~t`. - * Let :math:`{C'}` be the same context as :math:`C`, but with the result type sequence :math:`{t_2^\ast}` prepended to the field :math:`\mathsf{labels}`. - * Under the context :math:`{C'}`, the instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. +The instruction :math:`(\mathsf{select})` is :ref:`valid ` with the function type :math:`t~t~\mathsf{i{\scriptstyle 32}}~\rightarrow~t` if: -The instruction :math:`(\mathsf{loop}~{\mathit{bt}}~{{\mathit{instr}}^\ast})` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}` if: + * The value type :math:`t` :ref:`matches ` the value type :math:`{t'}`. + * The value type :math:`{t'}` is of the form :math:`{\mathit{numtype}}` or :math:`{t'}` is of the form :math:`{\mathit{vectype}}`. - * The block type :math:`{\mathit{bt}}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. - * Let :math:`{C'}` be the same context as :math:`C`, but with the result type sequence :math:`{t_1^\ast}` prepended to the field :math:`\mathsf{labels}`. - * Under the context :math:`{C'}`, the instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. +The instruction :math:`({\mathit{nt}}_1 {.} {\mathsf{reinterpret}}{\mathsf{\_}}{{\mathit{nt}}_2})` is :ref:`valid ` with the function type :math:`{\mathit{nt}}_2~\rightarrow~{\mathit{nt}}_1` if: + * :math:`{|{\mathit{nt}}_1|}` is of the form :math:`{|{\mathit{nt}}_2|}`. -The instruction :math:`(\mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast})` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\mathsf{i{\scriptstyle 32}}~\rightarrow~{t_2^\ast}` if: - * The block type :math:`{\mathit{bt}}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. - * Let :math:`{C'}` be the same context as :math:`C`, but with the result type sequence :math:`{t_2^\ast}` prepended to the field :math:`\mathsf{labels}`. +The instruction :math:`({\mathit{nt}}_1 {.} {{\mathit{cvtop}}}{\mathsf{\_}}{{\mathit{nt}}_2})` is :ref:`valid ` with the function type :math:`{\mathit{nt}}_2~\rightarrow~{\mathit{nt}}_1`. - * Under the context :math:`{C'}`, the instruction sequence :math:`{{\mathit{instr}}_1^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. - * Under the context :math:`{C'}`, the instruction sequence :math:`{{\mathit{instr}}_2^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. +The instruction :math:`(\mathsf{load}~{\mathit{nt}}~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~{\mathit{nt}}` if: -The instruction :math:`(\mathsf{br}~l)` is :ref:`valid ` with the function type :math:`{t_1^\ast}~{t^\ast}~\rightarrow~{t_2^\ast}` if: + * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`{|{\mathit{nt}}|} / 8`. - * The result type :math:`C{.}\mathsf{labels}{}[l]` exists. - * The result type :math:`C{.}\mathsf{labels}{}[l]` is of the form :math:`{t^\ast}`. +The instruction :math:`({{\mathsf{i}}{n}{.}\mathsf{load}}{{M}{\mathsf{\_}}{{\mathit{sx}}}}~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~{\mathsf{i}}{n}` if: + * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`M / 8`. -The instruction :math:`(\mathsf{br\_if}~l)` is :ref:`valid ` with the function type :math:`{t^\ast}~\mathsf{i{\scriptstyle 32}}~\rightarrow~{t^\ast}` if: - * The result type :math:`C{.}\mathsf{labels}{}[l]` exists. - * The result type :math:`C{.}\mathsf{labels}{}[l]` is of the form :math:`{t^\ast}`. +The instruction :math:`(\mathsf{store}~{\mathit{nt}}~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~{\mathit{nt}}~\rightarrow~\epsilon` if: + * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`{|{\mathit{nt}}|} / 8`. -The instruction :math:`(\mathsf{br\_table}~{l^\ast}~{l'})` is :ref:`valid ` with the function type :math:`{t_1^\ast}~{t^\ast}~\mathsf{i{\scriptstyle 32}}~\rightarrow~{t_2^\ast}` if: - * For all :math:`l` in :math:`{l^\ast}`: +The instruction :math:`({{\mathsf{i}}{n}{.}\mathsf{store}}{M}~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~{\mathsf{i}}{n}~\rightarrow~\epsilon` if: - * The result type :math:`C{.}\mathsf{labels}{}[l]` exists. - * The result type :math:`{t^\ast}` :ref:`matches ` the result type :math:`C{.}\mathsf{labels}{}[l]`. + * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`M / 8`. - * The result type :math:`C{.}\mathsf{labels}{}[{l'}]` exists. - * The result type :math:`{t^\ast}` :ref:`matches ` the result type :math:`C{.}\mathsf{labels}{}[{l'}]`. +The instruction :math:`(\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}~({M}{\mathsf{x}}{N}{\mathsf{\_}}{{\mathit{sx}}})~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~\mathsf{v{\scriptstyle 128}}` if: -The instruction :math:`(\mathsf{call}~x)` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}` if: + * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`M / 8 \cdot N`. - * The function type :math:`C{.}\mathsf{funcs}{}[x]` exists. - * The function type :math:`C{.}\mathsf{funcs}{}[x]` is of the form :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. +The instruction :math:`(\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}~({n}{\mathsf{\_}}{\mathsf{splat}})~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~\mathsf{v{\scriptstyle 128}}` if: + * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`n / 8`. -The instruction :math:`(\mathsf{call\_indirect}~x~y)` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\mathsf{i{\scriptstyle 32}}~\rightarrow~{t_2^\ast}` if: - * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. - * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`({\mathit{lim}}~\mathsf{funcref})`. +The instruction :math:`(\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}~({n}{\mathsf{\_}}{\mathsf{zero}})~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~\mathsf{v{\scriptstyle 128}}` if: - * The function type :math:`C{.}\mathsf{types}{}[y]` exists. - * The function type :math:`C{.}\mathsf{types}{}[y]` is of the form :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`n / 8`. -The instruction :math:`\mathsf{return}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~{t^\ast}~\rightarrow~{t_2^\ast}` if: +The instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{{\mathit{valtype}}^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast}` if: - * The result type :math:`C{.}\mathsf{return}` is of the form :math:`{t^\ast}`. + * Either: + * The instruction sequence :math:`{{\mathit{instr}}^\ast}` is empty. + * The value type sequence :math:`{{\mathit{valtype}}^\ast}` is empty. + * The value type sequence :math:`{{\mathit{valtype}'}^\ast}` is empty. -The instruction :math:`({\mathit{nt}}{.}\mathsf{const}~c_{\mathit{nt}})` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~{\mathit{nt}}`. + * Or: + * The instruction sequence :math:`{{\mathit{instr}}^\ast}` is of the form :math:`{\mathit{instr}}_1~{{\mathit{instr}}_2^\ast}`. + * The instruction :math:`{\mathit{instr}}_1` is :ref:`valid ` with the function type :math:`{{\mathit{valtype}}^\ast}~\rightarrow~{t_2^\ast}`. + * The instruction sequence :math:`{{\mathit{instr}}_2^\ast}` is :ref:`valid ` with the function type :math:`{t_2^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast}`. + * Or: -The instruction :math:`({\mathit{nt}} {.} {\mathit{unop}}_{\mathit{nt}})` is :ref:`valid ` with the function type :math:`{\mathit{nt}}~\rightarrow~{\mathit{nt}}`. + * The instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + * The result type :math:`{{\mathit{valtype}}^\ast}` :ref:`matches ` the result type :math:`{t_1^\ast}`. + * The result type :math:`{t_2^\ast}` :ref:`matches ` the result type :math:`{{\mathit{valtype}'}^\ast}`. + * Or: + * The value type sequence :math:`{{\mathit{valtype}}^\ast}` is of the form :math:`{t^\ast}~{t_1^\ast}`. -The instruction :math:`({\mathit{nt}} {.} {\mathit{binop}}_{\mathit{nt}})` is :ref:`valid ` with the function type :math:`{\mathit{nt}}~{\mathit{nt}}~\rightarrow~{\mathit{nt}}`. + * The value type sequence :math:`{{\mathit{valtype}'}^\ast}` is of the form :math:`{t^\ast}~{t_2^\ast}`. + * The instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. -The instruction :math:`({\mathit{nt}} {.} {\mathit{testop}}_{\mathit{nt}})` is :ref:`valid ` with the function type :math:`{\mathit{nt}}~\rightarrow~\mathsf{i{\scriptstyle 32}}`. +The instruction sequence :math:`\epsilon` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\epsilon`. -The instruction :math:`({\mathit{nt}} {.} {\mathit{relop}}_{\mathit{nt}})` is :ref:`valid ` with the function type :math:`{\mathit{nt}}~{\mathit{nt}}~\rightarrow~\mathsf{i{\scriptstyle 32}}`. +The instruction sequence :math:`{\mathit{instr}}_1~{{\mathit{instr}}_2^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_3^\ast}` if: + * The instruction :math:`{\mathit{instr}}_1` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. -The instruction :math:`({\mathit{nt}}_1 {.} {{\mathit{cvtop}}}{\mathsf{\_}}{{\mathit{nt}}_2})` is :ref:`valid ` with the function type :math:`{\mathit{nt}}_2~\rightarrow~{\mathit{nt}}_1` if: + * The instruction sequence :math:`{{\mathit{instr}}_2^\ast}` is :ref:`valid ` with the function type :math:`{t_2^\ast}~\rightarrow~{t_3^\ast}`. - * Either: - * :math:`{\mathit{cvtop}}` is of the form :math:`\mathsf{reinterpret}`. - * :math:`{|{\mathit{nt}}_1|}` is of the form :math:`{|{\mathit{nt}}_2|}`. +The instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{{t'}_1^\ast}~\rightarrow~{{t'}_2^\ast}` if: - * Or: + * The instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + * The result type :math:`{{t'}_1^\ast}` :ref:`matches ` the result type :math:`{t_1^\ast}`. + * The result type :math:`{t_2^\ast}` :ref:`matches ` the result type :math:`{{t'}_2^\ast}`. -The instruction :math:`(\mathsf{ref{.}null}~{\mathit{rt}})` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~{\mathit{rt}}`. +The instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{t^\ast}~{t_1^\ast}~\rightarrow~{t^\ast}~{t_2^\ast}` if: -The instruction :math:`(\mathsf{ref{.}func}~x)` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\mathsf{funcref}` if: + * The instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. - * The function type :math:`C{.}\mathsf{funcs}{}[x]` exists. +The expression :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the result type :math:`{t^\ast}` if: -The instruction :math:`\mathsf{ref{.}is\_null}` is :ref:`valid ` with the function type :math:`{\mathit{rt}}~\rightarrow~\mathsf{i{\scriptstyle 32}}`. + * The instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~{t^\ast}`. -The instruction :math:`(\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c)` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\mathsf{v{\scriptstyle 128}}`. +:math:`{\mathit{instr}}` is constant if: + * Either: -The instruction :math:`(\mathsf{v{\scriptstyle 128}} {.} {\mathit{vvunop}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. + * The instruction :math:`{\mathit{instr}}` is of the form :math:`({\mathit{nt}}{.}\mathsf{const}~c)`. + * Or: + * The instruction :math:`{\mathit{instr}}` is of the form :math:`({\mathit{vt}}{.}\mathsf{const}~{\mathit{vc}})`. + * Or: + * The instruction :math:`{\mathit{instr}}` is of the form :math:`(\mathsf{ref{.}null}~{\mathit{rt}})`. + * Or: -The instruction :math:`(\mathsf{v{\scriptstyle 128}} {.} {\mathit{vvbinop}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. + * The instruction :math:`{\mathit{instr}}` is of the form :math:`(\mathsf{ref{.}func}~x)`. + * Or: + * The instruction :math:`{\mathit{instr}}` is of the form :math:`(\mathsf{global{.}get}~x)`. + * The global type :math:`C{.}\mathsf{globals}{}[x]` exists. + * The global type :math:`C{.}\mathsf{globals}{}[x]` is of the form :math:`(\epsilon~t)`. -The instruction :math:`(\mathsf{v{\scriptstyle 128}} {.} {\mathit{vvternop}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. +:math:`({\mathit{nt}}{.}\mathsf{const}~c)` is constant. -The instruction :math:`(\mathsf{v{\scriptstyle 128}} {.} {\mathit{vvtestop}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{i{\scriptstyle 32}}`. +:math:`({\mathit{vt}}{.}\mathsf{const}~{\mathit{vc}})` is constant. -The instruction :math:`({\mathit{sh}} {.} {\mathit{vunop}}_{\mathit{sh}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. +:math:`(\mathsf{ref{.}null}~{\mathit{rt}})` is constant. -The instruction :math:`({\mathit{sh}} {.} {\mathit{vbinop}}_{\mathit{sh}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. +:math:`(\mathsf{ref{.}func}~x)` is constant. -The instruction :math:`({\mathit{sh}} {.} {\mathit{vtestop}}_{\mathit{sh}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{i{\scriptstyle 32}}`. +:math:`(\mathsf{global{.}get}~x)` is constant if: -The instruction :math:`({\mathit{sh}} {.} {\mathit{vrelop}}_{\mathit{sh}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. + * The global type :math:`C{.}\mathsf{globals}{}[x]` exists. + * The global type :math:`C{.}\mathsf{globals}{}[x]` is of the form :math:`(\epsilon~t)`. -The instruction :math:`({\mathit{sh}} {.} {\mathit{vshiftop}}_{\mathit{sh}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{i{\scriptstyle 32}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. +:math:`{{\mathit{instr}}^\ast}` is constant if: -The instruction :math:`({\mathit{sh}}{.}\mathsf{bitmask})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{i{\scriptstyle 32}}`. + * For all :math:`{\mathit{instr}}` in :math:`{{\mathit{instr}}^\ast}`: + * :math:`{\mathit{instr}}` is constant. -The instruction :math:`({\mathit{sh}}{.}\mathsf{swizzle})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. +The type :math:`(\mathsf{type}~{\mathit{ft}})` is :ref:`valid ` with the function type :math:`{\mathit{ft}}` if: + * The function type :math:`{\mathit{ft}}` is :ref:`valid `. -The instruction :math:`({\mathit{sh}}{.}\mathsf{shuffle}~{i^\ast})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}` if: - * For all :math:`i` in :math:`{i^\ast}`: - * The lane index :math:`i` is less than :math:`2 \cdot {\mathrm{dim}}({\mathit{sh}})`. +The function :math:`(\mathsf{func}~x~{(\mathsf{local}~t)^\ast}~{\mathit{expr}})` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}` if: + * The function type :math:`C{.}\mathsf{types}{}[x]` exists. + * The function type :math:`C{.}\mathsf{types}{}[x]` is of the form :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. -The instruction :math:`({\mathit{sh}}{.}\mathsf{splat})` is :ref:`valid ` with the function type :math:`{\mathit{numtype}}~\rightarrow~\mathsf{v{\scriptstyle 128}}` if: + * For all :math:`t` in :math:`{t^\ast}`: + * The value type :math:`t` is not of the form :math:`\mathsf{bot}`. - * The number type :math:`{\mathit{numtype}}` is :math:`{\mathrm{unpack}}({\mathit{sh}})`. + * Under the context :math:`C` with the field :math:`\mathsf{locals}` appended by :math:`{t_1^\ast}~{t^\ast}` and the field :math:`\mathsf{labels}` appended by :math:`{t_2^\ast}` and the field :math:`\mathsf{return}` appended by :math:`{t_2^\ast}`, the expression :math:`{\mathit{expr}}` is :ref:`valid ` with the result type :math:`{t_2^\ast}`. -The instruction :math:`({{\mathit{sh}}{.}\mathsf{extract\_lane}}{{{\mathit{sx}}^?}}~i)` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\rightarrow~{\mathit{numtype}}` if: +The global :math:`(\mathsf{global}~{\mathit{gt}}~{\mathit{expr}})` is :ref:`valid ` with the global type :math:`{\mathit{gt}}` if: - * The lane index :math:`i` is less than :math:`{\mathrm{dim}}({\mathit{sh}})`. + * The global type :math:`{\mathit{gt}}` is :ref:`valid `. - * The number type :math:`{\mathit{numtype}}` is :math:`{\mathrm{unpack}}({\mathit{sh}})`. + * The global type :math:`{\mathit{gt}}` is of the form :math:`({\mathit{mut}}~t)`. + * The expression :math:`{\mathit{expr}}` is :ref:`valid ` with the value type :math:`t`. + * :math:`{\mathit{expr}}` is constant. -The instruction :math:`({\mathit{sh}}{.}\mathsf{replace\_lane}~i)` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~{\mathit{numtype}}~\rightarrow~\mathsf{v{\scriptstyle 128}}` if: - * The lane index :math:`i` is less than :math:`{\mathrm{dim}}({\mathit{sh}})`. +The table :math:`(\mathsf{table}~{\mathit{tt}})` is :ref:`valid ` with the table type :math:`{\mathit{tt}}` if: - * The number type :math:`{\mathit{numtype}}` is :math:`{\mathrm{unpack}}({\mathit{sh}})`. + * The table type :math:`{\mathit{tt}}` is :ref:`valid `. -The instruction :math:`(\mathsf{vextunop}~{\mathit{sh}}_1~{\mathit{sh}}_2~{\mathit{vextunop}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. +The memory :math:`(\mathsf{memory}~{\mathit{mt}})` is :ref:`valid ` with the memory type :math:`{\mathit{mt}}` if: + * The memory type :math:`{\mathit{mt}}` is :ref:`valid `. -The instruction :math:`(\mathsf{vextbinop}~{\mathit{sh}}_1~{\mathit{sh}}_2~{\mathit{vextbinop}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. +:math:`{\mathit{elemmode}}` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}` if: -The instruction :math:`({{\mathit{sh}}_1{.}\mathsf{narrow}}{\mathsf{\_}}{{\mathit{sh}}_2}{\mathsf{\_}}{{\mathit{sx}}})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. + * Either: + * :math:`{\mathit{elemmode}}` is of the form :math:`(\mathsf{active}~x~{\mathit{expr}})`. + * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. -The instruction :math:`({\mathit{sh}}_1 {.} {{\mathit{vcvtop}}}{\mathsf{\_}}{{\mathit{sh}}_2})` is :ref:`valid ` with the function type :math:`\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}`. + * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`({\mathit{lim}}~{\mathit{rt}})`. + * The expression :math:`{\mathit{expr}}` is :ref:`valid ` with the value type :math:`\mathsf{i{\scriptstyle 32}}`. + * :math:`{\mathit{expr}}` is constant. + * Or: -The instruction :math:`(\mathsf{local{.}get}~x)` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~t` if: + * :math:`{\mathit{elemmode}}` is of the form :math:`\mathsf{passive}`. + * Or: + * :math:`{\mathit{elemmode}}` is of the form :math:`\mathsf{declare}`. - * The value type :math:`C{.}\mathsf{locals}{}[x]` exists. - * The value type :math:`C{.}\mathsf{locals}{}[x]` is of the form :math:`t`. +:math:`(\mathsf{active}~x~{\mathit{expr}})` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}` if: -The instruction :math:`(\mathsf{local{.}set}~x)` is :ref:`valid ` with the function type :math:`t~\rightarrow~\epsilon` if: + * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. + * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`({\mathit{lim}}~{\mathit{rt}})`. - * The value type :math:`C{.}\mathsf{locals}{}[x]` exists. + * The expression :math:`{\mathit{expr}}` is :ref:`valid ` with the value type :math:`\mathsf{i{\scriptstyle 32}}`. - * The value type :math:`C{.}\mathsf{locals}{}[x]` is of the form :math:`t`. + * :math:`{\mathit{expr}}` is constant. -The instruction :math:`(\mathsf{local{.}tee}~x)` is :ref:`valid ` with the function type :math:`t~\rightarrow~t` if: +:math:`\mathsf{passive}` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}`. - * The value type :math:`C{.}\mathsf{locals}{}[x]` exists. - * The value type :math:`C{.}\mathsf{locals}{}[x]` is of the form :math:`t`. +:math:`\mathsf{declare}` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}`. -The instruction :math:`(\mathsf{global{.}get}~x)` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~t` if: +The table segment :math:`(\mathsf{elem}~{\mathit{rt}}~{{\mathit{expr}}^\ast}~{\mathit{elemmode}})` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}` if: - * The global type :math:`C{.}\mathsf{globals}{}[x]` exists. - * The global type :math:`C{.}\mathsf{globals}{}[x]` is of the form :math:`({\mathit{mut}}~t)`. + * For all :math:`{\mathit{expr}}` in :math:`{{\mathit{expr}}^\ast}`: + * The expression :math:`{\mathit{expr}}` is :ref:`valid ` with the value type :math:`{\mathit{rt}}`. + * :math:`{\mathit{expr}}` is constant. + * :math:`{\mathit{elemmode}}` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}`. -The instruction :math:`(\mathsf{global{.}set}~x)` is :ref:`valid ` with the function type :math:`t~\rightarrow~\epsilon` if: - * The global type :math:`C{.}\mathsf{globals}{}[x]` exists. - * The global type :math:`C{.}\mathsf{globals}{}[x]` is of the form :math:`(\mathsf{mut}~t)`. +:math:`{\mathit{datamode}}` is :ref:`valid ` if: + * Either: + * :math:`{\mathit{datamode}}` is of the form :math:`(\mathsf{active}~0~{\mathit{expr}})`. -The instruction :math:`(\mathsf{table{.}get}~x)` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~{\mathit{rt}}` if: + * The expression :math:`{\mathit{expr}}` is :ref:`valid ` with the value type :math:`\mathsf{i{\scriptstyle 32}}`. + * :math:`{\mathit{expr}}` is constant. - * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. + * Or: - * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`({\mathit{lim}}~{\mathit{rt}})`. + * :math:`{\mathit{datamode}}` is of the form :math:`\mathsf{passive}`. -The instruction :math:`(\mathsf{table{.}set}~x)` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~{\mathit{rt}}~\rightarrow~\epsilon` if: +:math:`(\mathsf{active}~0~{\mathit{expr}})` is :ref:`valid ` if: - * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. + * The expression :math:`{\mathit{expr}}` is :ref:`valid ` with the value type :math:`\mathsf{i{\scriptstyle 32}}`. - * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`({\mathit{lim}}~{\mathit{rt}})`. + * :math:`{\mathit{expr}}` is constant. -The instruction :math:`(\mathsf{table{.}size}~x)` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\mathsf{i{\scriptstyle 32}}` if: +:math:`\mathsf{passive}` is always :ref:`valid `. - * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. - * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`({\mathit{lim}}~{\mathit{rt}})`. +The memory segment :math:`(\mathsf{data}~{b^\ast}~{\mathit{datamode}})` is :ref:`valid ` if: + * :math:`{\mathit{datamode}}` is :ref:`valid `. -The instruction :math:`(\mathsf{table{.}grow}~x)` is :ref:`valid ` with the function type :math:`{\mathit{rt}}~\mathsf{i{\scriptstyle 32}}~\rightarrow~\mathsf{i{\scriptstyle 32}}` if: - * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. - * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`({\mathit{lim}}~{\mathit{rt}})`. +The start function :math:`(\mathsf{start}~x)` is :ref:`valid ` if: + * The function type :math:`C{.}\mathsf{funcs}{}[x]` exists. + * The function type :math:`C{.}\mathsf{funcs}{}[x]` is of the form :math:`\epsilon~\rightarrow~\epsilon`. -The instruction :math:`(\mathsf{table{.}fill}~x)` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~{\mathit{rt}}~\mathsf{i{\scriptstyle 32}}~\rightarrow~\epsilon` if: - * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. - * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`({\mathit{lim}}~{\mathit{rt}})`. +The import :math:`(\mathsf{import}~{\mathit{name}}_1~{\mathit{name}}_2~{\mathit{xt}})` is :ref:`valid ` with the external type :math:`{\mathit{xt}}` if: + * The external type :math:`{\mathit{xt}}` is :ref:`valid `. -The instruction :math:`(\mathsf{table{.}copy}~x_1~x_2)` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\rightarrow~\epsilon` if: - * The table type :math:`C{.}\mathsf{tables}{}[x_1]` exists. +The external index :math:`{\mathit{externidx}}` is :ref:`valid ` with the external type :math:`{\mathit{externtype}}` if: - * The table type :math:`C{.}\mathsf{tables}{}[x_1]` is of the form :math:`({\mathit{lim}}_1~{\mathit{rt}})`. - * The table type :math:`C{.}\mathsf{tables}{}[x_2]` exists. + * Either: - * The table type :math:`C{.}\mathsf{tables}{}[x_2]` is of the form :math:`({\mathit{lim}}_2~{\mathit{rt}})`. + * The external index :math:`{\mathit{externidx}}` is of the form :math:`(\mathsf{func}~x)`. + * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{func}~{\mathit{ft}})`. + * The function type :math:`C{.}\mathsf{funcs}{}[x]` exists. + * The function type :math:`C{.}\mathsf{funcs}{}[x]` is of the form :math:`{\mathit{ft}}`. -The instruction :math:`(\mathsf{table{.}init}~x_1~x_2)` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\rightarrow~\epsilon` if: + * Or: + * The external index :math:`{\mathit{externidx}}` is of the form :math:`(\mathsf{global}~x)`. - * The table type :math:`C{.}\mathsf{tables}{}[x_1]` exists. + * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{global}~{\mathit{gt}})`. - * The table type :math:`C{.}\mathsf{tables}{}[x_1]` is of the form :math:`({\mathit{lim}}~{\mathit{rt}})`. + * The global type :math:`C{.}\mathsf{globals}{}[x]` exists. - * The element type :math:`C{.}\mathsf{elems}{}[x_2]` exists. + * The global type :math:`C{.}\mathsf{globals}{}[x]` is of the form :math:`{\mathit{gt}}`. + * Or: - * The reference type :math:`C{.}\mathsf{elems}{}[x_2]` is of the form :math:`{\mathit{rt}}`. + * The external index :math:`{\mathit{externidx}}` is of the form :math:`(\mathsf{table}~x)`. + * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{table}~{\mathit{tt}})`. + * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. + * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`{\mathit{tt}}`. + * Or: -The instruction :math:`(\mathsf{elem{.}drop}~x)` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\epsilon` if: + * The external index :math:`{\mathit{externidx}}` is of the form :math:`(\mathsf{mem}~x)`. + * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{mem}~{\mathit{mt}})`. - * The element type :math:`C{.}\mathsf{elems}{}[x]` exists. + * The memory type :math:`C{.}\mathsf{mems}{}[x]` exists. + * The memory type :math:`C{.}\mathsf{mems}{}[x]` is of the form :math:`{\mathit{mt}}`. -The instruction :math:`\mathsf{memory{.}size}` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\mathsf{i{\scriptstyle 32}}`. +The external index :math:`(\mathsf{func}~x)` is :ref:`valid ` with the external type :math:`(\mathsf{func}~{\mathit{ft}})` if: + * The function type :math:`C{.}\mathsf{funcs}{}[x]` exists. -The instruction :math:`\mathsf{memory{.}grow}` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~\mathsf{i{\scriptstyle 32}}`. + * The function type :math:`C{.}\mathsf{funcs}{}[x]` is of the form :math:`{\mathit{ft}}`. -The instruction :math:`\mathsf{memory{.}fill}` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\rightarrow~\epsilon`. +The external index :math:`(\mathsf{global}~x)` is :ref:`valid ` with the external type :math:`(\mathsf{global}~{\mathit{gt}})` if: + * The global type :math:`C{.}\mathsf{globals}{}[x]` exists. + * The global type :math:`C{.}\mathsf{globals}{}[x]` is of the form :math:`{\mathit{gt}}`. -The instruction :math:`\mathsf{memory{.}copy}` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\rightarrow~\epsilon`. +The external index :math:`(\mathsf{table}~x)` is :ref:`valid ` with the external type :math:`(\mathsf{table}~{\mathit{tt}})` if: -The instruction :math:`(\mathsf{memory{.}init}~x)` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\rightarrow~\epsilon` if: + * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. - * The data type :math:`C{.}\mathsf{datas}{}[x]` exists. + * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`{\mathit{tt}}`. - * The data type :math:`C{.}\mathsf{datas}{}[x]` is of the form :math:`\mathsf{ok}`. +The external index :math:`(\mathsf{mem}~x)` is :ref:`valid ` with the external type :math:`(\mathsf{mem}~{\mathit{mt}})` if: -The instruction :math:`(\mathsf{data{.}drop}~x)` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\epsilon` if: + * The memory type :math:`C{.}\mathsf{mems}{}[x]` exists. - * The data type :math:`C{.}\mathsf{datas}{}[x]` exists. + * The memory type :math:`C{.}\mathsf{mems}{}[x]` is of the form :math:`{\mathit{mt}}`. - * The data type :math:`C{.}\mathsf{datas}{}[x]` is of the form :math:`\mathsf{ok}`. +The export :math:`(\mathsf{export}~{\mathit{name}}~{\mathit{externidx}})` is :ref:`valid ` with the external type :math:`{\mathit{xt}}` if: -The instruction :math:`({{\mathit{nt}}{.}\mathsf{load}}{{{\mathit{loadop}}^?}}~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~{\mathit{valtype}}` if: + * The external index :math:`{\mathit{externidx}}` is :ref:`valid ` with the external type :math:`{\mathit{xt}}`. - * Either: - * :math:`{{\mathit{loadop}}^?}` is absent. - * The value type :math:`{\mathit{valtype}}` is of the form :math:`{\mathit{nt}}`. - * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`{|{\mathit{nt}}|} / 8`. +The module :math:`(\mathsf{module}~{{\mathit{type}}^\ast}~{{\mathit{import}}^\ast}~{{\mathit{func}}^\ast}~{{\mathit{global}}^\ast}~{{\mathit{table}}^\ast}~{{\mathit{mem}}^\ast}~{{\mathit{elem}}^\ast}~{{\mathit{data}}^{n}}~{{\mathit{start}}^?}~{{\mathit{export}}^\ast})` is :ref:`valid ` if: - * Or: - * The number type :math:`{\mathit{nt}}` is of the form :math:`{\mathsf{i}}{n}`. + * For all :math:`{\mathit{type}}` in :math:`{{\mathit{type}}^\ast}`: - * :math:`{{\mathit{loadop}}^?}` is of the form :math:`{M}{\mathsf{\_}}{{\mathit{sx}}}`. + * The type :math:`{\mathit{type}}` is :ref:`valid ` with the function type :math:`{\mathit{ft}'}`. - * The value type :math:`{\mathit{valtype}}` is of the form :math:`{\mathsf{i}}{n}`. + * :math:`{{\mathit{ft}'}^\ast}` is the concatenation of all such :math:`{\mathit{ft}'}`. - * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`M / 8`. + * For all :math:`{\mathit{import}}` in :math:`{{\mathit{import}}^\ast}`: + * Under the context :math:`\{ \mathsf{types}~{{\mathit{ft}'}^\ast},\;\allowbreak \mathsf{return}~\epsilon \}`, the import :math:`{\mathit{import}}` is :ref:`valid ` with the external type :math:`{\mathit{ixt}}`. + * :math:`{{\mathit{ixt}}^\ast}` is the concatenation of all such :math:`{\mathit{ixt}}`. + * For all :math:`{\mathit{global}}` in :math:`{{\mathit{global}}^\ast}`: -The instruction :math:`({{\mathit{nt}}{.}\mathsf{store}}{{{\mathit{sz}}^?}}~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~{\mathit{valtype}}~\rightarrow~\epsilon` if: + * Under the context :math:`{C'}`, the global :math:`{\mathit{global}}` is :ref:`valid ` with the global type :math:`{\mathit{gt}}`. + * :math:`{{\mathit{gt}}^\ast}` is the concatenation of all such :math:`{\mathit{gt}}`. - * Either: + * For all :math:`{\mathit{table}}` in :math:`{{\mathit{table}}^\ast}`: - * The pack size :math:`{{\mathit{sz}}^?}` is absent. + * Under the context :math:`{C'}`, the table :math:`{\mathit{table}}` is :ref:`valid ` with the table type :math:`{\mathit{tt}}`. - * The value type :math:`{\mathit{valtype}}` is of the form :math:`{\mathit{nt}}`. + * :math:`{{\mathit{tt}}^\ast}` is the concatenation of all such :math:`{\mathit{tt}}`. - * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`{|{\mathit{nt}}|} / 8`. + * For all :math:`{\mathit{mem}}` in :math:`{{\mathit{mem}}^\ast}`: - * Or: + * Under the context :math:`{C'}`, the memory :math:`{\mathit{mem}}` is :ref:`valid ` with the memory type :math:`{\mathit{mt}}`. - * The number type :math:`{\mathit{nt}}` is of the form :math:`{\mathsf{i}}{n}`. + * :math:`{{\mathit{mt}}^\ast}` is the concatenation of all such :math:`{\mathit{mt}}`. - * The pack size :math:`{{\mathit{sz}}^?}` is of the form :math:`M`. + * For all :math:`{\mathit{elem}}` in :math:`{{\mathit{elem}}^\ast}`: - * The value type :math:`{\mathit{valtype}}` is of the form :math:`{\mathsf{i}}{n}`. + * Under the context :math:`{C'}`, the table segment :math:`{\mathit{elem}}` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}`. - * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`M / 8`. + * :math:`{{\mathit{rt}}^\ast}` is the concatenation of all such :math:`{\mathit{rt}}`. + * For all :math:`{\mathit{data}}` in :math:`{{\mathit{data}}^\ast}`: + * Under the context :math:`{C'}`, the memory segment :math:`{\mathit{data}}` is :ref:`valid `. + * For all :math:`{\mathit{func}}` in :math:`{{\mathit{func}}^\ast}`: -The instruction :math:`(\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}~{\mathit{vloadop}}~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~\mathsf{v{\scriptstyle 128}}` if: + * The function :math:`{\mathit{func}}` is :ref:`valid ` with the function type :math:`{\mathit{ft}}`. + * :math:`{{\mathit{ft}}^\ast}` is the concatenation of all such :math:`{\mathit{ft}}`. - * Either: + * If :math:`{\mathit{start}}` is defined, then: - * :math:`{\mathit{vloadop}}` is of the form :math:`({M}{\mathsf{x}}{N}{\mathsf{\_}}{{\mathit{sx}}})`. + * The start function :math:`{\mathit{start}}` is :ref:`valid `. - * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`M / 8 \cdot N`. + * For all :math:`{\mathit{export}}` in :math:`{{\mathit{export}}^\ast}`: - * Or: + * The export :math:`{\mathit{export}}` is :ref:`valid ` with the external type :math:`{\mathit{xt}}`. - * :math:`{\mathit{vloadop}}` is of the form :math:`({n}{\mathsf{\_}}{\mathsf{splat}})`. + * The length of :math:`{{\mathit{mt}}^\ast}` is less than or equal to :math:`1`. - * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`n / 8`. - * Or: + * The context :math:`{C'}` is of the form :math:`\{ \mathsf{types}~{{\mathit{ft}'}^\ast},\;\allowbreak \mathsf{funcs}~{{\mathit{ift}}^\ast}~{{\mathit{ft}}^\ast},\;\allowbreak \mathsf{globals}~{{\mathit{igt}}^\ast},\;\allowbreak \mathsf{tables}~{{\mathit{itt}}^\ast}~{{\mathit{tt}}^\ast},\;\allowbreak \mathsf{mems}~{{\mathit{imt}}^\ast}~{{\mathit{mt}}^\ast},\;\allowbreak \mathsf{return}~\epsilon \}`. - * :math:`{\mathit{vloadop}}` is of the form :math:`({n}{\mathsf{\_}}{\mathsf{zero}})`. + * The function type sequence :math:`{{\mathit{ift}}^\ast}` is of the form :math:`{\mathrm{funcs}}({{\mathit{ixt}}^\ast})`. - * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`n / 8`. + * The global type sequence :math:`{{\mathit{igt}}^\ast}` is of the form :math:`{\mathrm{globals}}({{\mathit{ixt}}^\ast})`. + * The table type sequence :math:`{{\mathit{itt}}^\ast}` is of the form :math:`{\mathrm{tables}}({{\mathit{ixt}}^\ast})`. + * The memory type sequence :math:`{{\mathit{imt}}^\ast}` is of the form :math:`{\mathrm{mems}}({{\mathit{ixt}}^\ast})`. -The instruction :math:`(\mathsf{vload\_lane}~\mathsf{v{\scriptstyle 128}}~n~{\mathit{memarg}}~{\mathit{laneidx}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\mathsf{v{\scriptstyle 128}}` if: - * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`n / 8`. +The context :math:`C` is :ref:`valid ` if: - * :math:`{\mathit{laneidx}}` is less than :math:`128 / n`. + * The context :math:`C` is of the form :math:`\{ \mathsf{types}~{{\mathit{ft}}^\ast},\;\allowbreak \mathsf{funcs}~{{\mathit{ft}}_2^\ast},\;\allowbreak \mathsf{globals}~{{\mathit{gt}}^\ast},\;\allowbreak \mathsf{tables}~{{\mathit{tt}}^\ast},\;\allowbreak \mathsf{mems}~{{\mathit{mt}}^\ast},\;\allowbreak \mathsf{elems}~{{\mathit{et}}^\ast},\;\allowbreak \mathsf{datas}~{{\mathit{ok}}^\ast},\;\allowbreak \mathsf{locals}~{{\mathit{lct}}^\ast},\;\allowbreak \mathsf{labels}~{{\mathit{rt}}^\ast},\;\allowbreak \mathsf{return}~{{\mathit{rt}'}^?} \}`. + * For all :math:`{\mathit{ft}}` in :math:`{{\mathit{ft}}^\ast}`: + * The function type :math:`{\mathit{ft}}` is :ref:`valid `. -The instruction :math:`(\mathsf{vstore}~\mathsf{v{\scriptstyle 128}}~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\epsilon` if: + * For all :math:`{\mathit{gt}}` in :math:`{{\mathit{gt}}^\ast}`: + * The global type :math:`{\mathit{gt}}` is :ref:`valid `. - * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`{|\mathsf{v{\scriptstyle 128}}|} / 8`. + * For all :math:`{\mathit{mt}}` in :math:`{{\mathit{mt}}^\ast}`: + * The memory type :math:`{\mathit{mt}}` is :ref:`valid `. + * For all :math:`{\mathit{tt}}` in :math:`{{\mathit{tt}}^\ast}`: + * The table type :math:`{\mathit{tt}}` is :ref:`valid `. -The instruction :math:`(\mathsf{vstore\_lane}~\mathsf{v{\scriptstyle 128}}~n~{\mathit{memarg}}~{\mathit{laneidx}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\mathsf{v{\scriptstyle 128}}~\rightarrow~\epsilon` if: + * For all :math:`{\mathit{ft}}_2` in :math:`{{\mathit{ft}}_2^\ast}`: + * The function type :math:`{\mathit{ft}}_2` is :ref:`valid `. - * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`n / 8`. - * :math:`{\mathit{laneidx}}` is less than :math:`128 / n`. +The external value :math:`{\mathit{externaddr}}` is :ref:`valid ` with the external type :math:`{\mathit{externtype}}` if: -The instruction :math:`(\mathsf{select}~t)` is :ref:`valid ` with the function type :math:`t~t~\mathsf{i{\scriptstyle 32}}~\rightarrow~t`. + * Either: + * The external value :math:`{\mathit{externaddr}}` is of the form :math:`(\mathsf{global}~a)`. + * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{global}~{\mathit{globalinst}}{.}\mathsf{type})`. + * The global instance :math:`s{.}\mathsf{globals}{}[a]` exists. -The instruction :math:`(\mathsf{select})` is :ref:`valid ` with the function type :math:`t~t~\mathsf{i{\scriptstyle 32}}~\rightarrow~t` if: + * The global instance :math:`s{.}\mathsf{globals}{}[a]` is of the form :math:`{\mathit{globalinst}}`. + * Or: - * The value type :math:`t` :ref:`matches ` the value type :math:`{t'}`. + * The external value :math:`{\mathit{externaddr}}` is of the form :math:`(\mathsf{mem}~a)`. - * The value type :math:`{t'}` is of the form :math:`{\mathit{numtype}}` or :math:`{t'}` is of the form :math:`{\mathit{vectype}}`. + * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{mem}~{\mathit{meminst}}{.}\mathsf{type})`. + * The memory instance :math:`s{.}\mathsf{mems}{}[a]` exists. + * The memory instance :math:`s{.}\mathsf{mems}{}[a]` is of the form :math:`{\mathit{meminst}}`. + * Or: + * The external value :math:`{\mathit{externaddr}}` is of the form :math:`(\mathsf{table}~a)`. -The instruction :math:`({\mathit{nt}}_1 {.} {\mathsf{reinterpret}}{\mathsf{\_}}{{\mathit{nt}}_2})` is :ref:`valid ` with the function type :math:`{\mathit{nt}}_2~\rightarrow~{\mathit{nt}}_1` if: + * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{table}~{\mathit{tableinst}}{.}\mathsf{type})`. + * The table instance :math:`s{.}\mathsf{tables}{}[a]` exists. - * :math:`{|{\mathit{nt}}_1|}` is of the form :math:`{|{\mathit{nt}}_2|}`. + * The table instance :math:`s{.}\mathsf{tables}{}[a]` is of the form :math:`{\mathit{tableinst}}`. + * Or: + * The external value :math:`{\mathit{externaddr}}` is of the form :math:`(\mathsf{func}~a)`. + * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{func}~{\mathit{funcinst}}{.}\mathsf{type})`. + * The function instance :math:`s{.}\mathsf{funcs}{}[a]` exists. -The instruction :math:`({\mathit{nt}}_1 {.} {{\mathit{cvtop}}}{\mathsf{\_}}{{\mathit{nt}}_2})` is :ref:`valid ` with the function type :math:`{\mathit{nt}}_2~\rightarrow~{\mathit{nt}}_1`. + * The function instance :math:`s{.}\mathsf{funcs}{}[a]` is of the form :math:`{\mathit{funcinst}}`. + * Or: + * The external value :math:`{\mathit{externaddr}}` is :ref:`valid ` with the external type :math:`{\mathit{xt}'}`. + * The external type :math:`{\mathit{xt}'}` :ref:`matches ` the external type :math:`{\mathit{externtype}}`. -The instruction :math:`(\mathsf{load}~{\mathit{nt}}~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~{\mathit{nt}}` if: - * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`{|{\mathit{nt}}|} / 8`. +The external value :math:`(\mathsf{global}~a)` is :ref:`valid ` with the external type :math:`(\mathsf{global}~{\mathit{globalinst}}{.}\mathsf{type})` if: + * The global instance :math:`s{.}\mathsf{globals}{}[a]` exists. + * The global instance :math:`s{.}\mathsf{globals}{}[a]` is of the form :math:`{\mathit{globalinst}}`. -The instruction :math:`({{\mathsf{i}}{n}{.}\mathsf{load}}{{M}{\mathsf{\_}}{{\mathit{sx}}}}~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~{\mathsf{i}}{n}` if: - * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`M / 8`. +The external value :math:`(\mathsf{mem}~a)` is :ref:`valid ` with the external type :math:`(\mathsf{mem}~{\mathit{meminst}}{.}\mathsf{type})` if: + * The memory instance :math:`s{.}\mathsf{mems}{}[a]` exists. -The instruction :math:`(\mathsf{store}~{\mathit{nt}}~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~{\mathit{nt}}~\rightarrow~\epsilon` if: + * The memory instance :math:`s{.}\mathsf{mems}{}[a]` is of the form :math:`{\mathit{meminst}}`. - * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`{|{\mathit{nt}}|} / 8`. +The external value :math:`(\mathsf{table}~a)` is :ref:`valid ` with the external type :math:`(\mathsf{table}~{\mathit{tableinst}}{.}\mathsf{type})` if: -The instruction :math:`({{\mathsf{i}}{n}{.}\mathsf{store}}{M}~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~{\mathsf{i}}{n}~\rightarrow~\epsilon` if: + * The table instance :math:`s{.}\mathsf{tables}{}[a]` exists. + * The table instance :math:`s{.}\mathsf{tables}{}[a]` is of the form :math:`{\mathit{tableinst}}`. - * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`M / 8`. +The external value :math:`(\mathsf{func}~a)` is :ref:`valid ` with the external type :math:`(\mathsf{func}~{\mathit{funcinst}}{.}\mathsf{type})` if: -The instruction :math:`(\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}~({M}{\mathsf{x}}{N}{\mathsf{\_}}{{\mathit{sx}}})~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~\mathsf{v{\scriptstyle 128}}` if: + * The function instance :math:`s{.}\mathsf{funcs}{}[a]` exists. - * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`M / 8 \cdot N`. + * The function instance :math:`s{.}\mathsf{funcs}{}[a]` is of the form :math:`{\mathit{funcinst}}`. -The instruction :math:`(\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}~({n}{\mathsf{\_}}{\mathsf{splat}})~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~\mathsf{v{\scriptstyle 128}}` if: +The external value :math:`{\mathit{externaddr}}` is :ref:`valid ` with the external type :math:`{\mathit{xt}}` if: - * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`n / 8`. + * The external value :math:`{\mathit{externaddr}}` is :ref:`valid ` with the external type :math:`{\mathit{xt}'}`. + * The external type :math:`{\mathit{xt}'}` :ref:`matches ` the external type :math:`{\mathit{xt}}`. -The instruction :math:`(\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}~({n}{\mathsf{\_}}{\mathsf{zero}})~{\mathit{memarg}})` is :ref:`valid ` with the function type :math:`\mathsf{i{\scriptstyle 32}}~\rightarrow~\mathsf{v{\scriptstyle 128}}` if: +The reference :math:`{\mathit{ref}}` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}` if: - * :math:`{2^{{\mathit{memarg}}{.}\mathsf{align}}}` is less than or equal to :math:`n / 8`. + * Either: + * The reference :math:`{\mathit{ref}}` is of the form :math:`(\mathsf{ref{.}null}~{\mathit{rt}'})`. + * Or: -The instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{{\mathit{valtype}}^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast}` if: + * The reference :math:`{\mathit{ref}}` is of the form :math:`(\mathsf{ref{.}func\_addr}~a)`. + * The reference type :math:`{\mathit{rt}}` is of the form :math:`\mathsf{funcref}`. - * Either: + * The external value :math:`(\mathsf{func}~a)` is :ref:`valid ` with the external type :math:`(\mathsf{func}~{\mathit{ext}})`. + * Or: - * The instruction sequence :math:`{{\mathit{instr}}^\ast}` is empty. + * The reference :math:`{\mathit{ref}}` is of the form :math:`(\mathsf{ref{.}host\_addr}~a)`. - * The value type sequence :math:`{{\mathit{valtype}}^\ast}` is empty. + * The reference type :math:`{\mathit{rt}}` is of the form :math:`\mathsf{externref}`. - * The value type sequence :math:`{{\mathit{valtype}'}^\ast}` is empty. - * Or: - * The instruction sequence :math:`{{\mathit{instr}}^\ast}` is of the form :math:`{\mathit{instr}}_1~{{\mathit{instr}}_2^\ast}`. - * The instruction :math:`{\mathit{instr}}_1` is :ref:`valid ` with the function type :math:`{{\mathit{valtype}}^\ast}~\rightarrow~{t_2^\ast}`. +The reference :math:`(\mathsf{ref{.}null}~{\mathit{rt}})` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}`. - * The instruction sequence :math:`{{\mathit{instr}}_2^\ast}` is :ref:`valid ` with the function type :math:`{t_2^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast}`. - * Or: - * The instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. - * The result type :math:`{{\mathit{valtype}}^\ast}` :ref:`matches ` the result type :math:`{t_1^\ast}`. - * The result type :math:`{t_2^\ast}` :ref:`matches ` the result type :math:`{{\mathit{valtype}'}^\ast}`. - * Or: +The reference :math:`(\mathsf{ref{.}func\_addr}~a)` is :ref:`valid ` with the reference type :math:`\mathsf{funcref}` if: - * The value type sequence :math:`{{\mathit{valtype}}^\ast}` is of the form :math:`{t^\ast}~{t_1^\ast}`. - * The value type sequence :math:`{{\mathit{valtype}'}^\ast}` is of the form :math:`{t^\ast}~{t_2^\ast}`. + * The external value :math:`(\mathsf{func}~a)` is :ref:`valid ` with the external type :math:`(\mathsf{func}~{\mathit{ext}})`. - * The instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. +The reference :math:`(\mathsf{ref{.}host\_addr}~a)` is :ref:`valid ` with the reference type :math:`\mathsf{externref}`. -The instruction sequence :math:`\epsilon` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\epsilon`. +The value :math:`{\mathit{val}}` is :ref:`valid ` with the value type :math:`{\mathit{valtype}}` if: -The instruction sequence :math:`{\mathit{instr}}_1~{{\mathit{instr}}_2^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_3^\ast}` if: + * Either: - * The instruction :math:`{\mathit{instr}}_1` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + * The value :math:`{\mathit{val}}` is of the form :math:`({\mathit{nt}}{.}\mathsf{const}~c_t)`. - * The instruction sequence :math:`{{\mathit{instr}}_2^\ast}` is :ref:`valid ` with the function type :math:`{t_2^\ast}~\rightarrow~{t_3^\ast}`. + * The value type :math:`{\mathit{valtype}}` is of the form :math:`{\mathit{nt}}`. + * Or: + * The value :math:`{\mathit{val}}` is of the form :math:`({\mathit{vt}}{.}\mathsf{const}~c_t)`. + * The value type :math:`{\mathit{valtype}}` is of the form :math:`{\mathit{vt}}`. + * Or: -The instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{{t'}_1^\ast}~\rightarrow~{{t'}_2^\ast}` if: + * The value :math:`{\mathit{val}}` is of the form :math:`r`. + * The value type :math:`{\mathit{valtype}}` is of the form :math:`{\mathit{rt}}`. - * The instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + * The reference :math:`r` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}`. - * The result type :math:`{{t'}_1^\ast}` :ref:`matches ` the result type :math:`{t_1^\ast}`. - * The result type :math:`{t_2^\ast}` :ref:`matches ` the result type :math:`{{t'}_2^\ast}`. +The value :math:`({\mathit{nt}}{.}\mathsf{const}~c_t)` is :ref:`valid ` with the value type :math:`{\mathit{nt}}`. -The instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{t^\ast}~{t_1^\ast}~\rightarrow~{t^\ast}~{t_2^\ast}` if: - * The instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. +The value :math:`({\mathit{vt}}{.}\mathsf{const}~c_t)` is :ref:`valid ` with the value type :math:`{\mathit{vt}}`. -The expression :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the result type :math:`{t^\ast}` if: +The value :math:`r` is :ref:`valid ` with the value type :math:`{\mathit{rt}}` if: - * The instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~{t^\ast}`. + * The reference :math:`r` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}`. -:math:`{\mathit{instr}}` is constant if: +The result :math:`{\mathit{result}}` is :ref:`valid ` with the value type sequence :math:`{t^\ast}` if: * Either: - * The instruction :math:`{\mathit{instr}}` is of the form :math:`({\mathit{nt}}{.}\mathsf{const}~c)`. - - * Or: + * The result :math:`{\mathit{result}}` is of the form :math:`{v^\ast}`. - * The instruction :math:`{\mathit{instr}}` is of the form :math:`({\mathit{vt}}{.}\mathsf{const}~{\mathit{vc}})`. - * Or: + * For all :math:`t` in :math:`{t^\ast}`, and corresponding :math:`v` in :math:`{v^\ast}`: - * The instruction :math:`{\mathit{instr}}` is of the form :math:`(\mathsf{ref{.}null}~{\mathit{rt}})`. - * Or: + * The value :math:`v` is :ref:`valid ` with the value type :math:`t`. - * The instruction :math:`{\mathit{instr}}` is of the form :math:`(\mathsf{ref{.}func}~x)`. * Or: - * The instruction :math:`{\mathit{instr}}` is of the form :math:`(\mathsf{global{.}get}~x)`. + * The result :math:`{\mathit{result}}` is of the form :math:`\mathsf{trap}`. - * The global type :math:`C{.}\mathsf{globals}{}[x]` exists. - * The global type :math:`C{.}\mathsf{globals}{}[x]` is of the form :math:`(\epsilon~t)`. +The result :math:`{v^\ast}` is :ref:`valid ` with the value type sequence :math:`{t^\ast}` if: -:math:`({\mathit{nt}}{.}\mathsf{const}~c)` is constant. + * For all :math:`t` in :math:`{t^\ast}`, and corresponding :math:`v` in :math:`{v^\ast}`: + * The value :math:`v` is :ref:`valid ` with the value type :math:`t`. -:math:`({\mathit{vt}}{.}\mathsf{const}~{\mathit{vc}})` is constant. +The result :math:`\mathsf{trap}` is :ref:`valid ` with the value type sequence :math:`{t^\ast}`. -:math:`(\mathsf{ref{.}null}~{\mathit{rt}})` is constant. +The data instance :math:`\{ \mathsf{bytes}~{b^\ast} \}` is :ref:`valid ` with the data type :math:`\mathsf{ok}`. -:math:`(\mathsf{ref{.}func}~x)` is constant. +The element instance :math:`\{ \mathsf{type}~{\mathit{rt}},\;\allowbreak \mathsf{refs}~{{\mathit{ref}}^\ast} \}` is :ref:`valid ` with the element type :math:`{\mathit{rt}}` if: + * For all :math:`{\mathit{ref}}` in :math:`{{\mathit{ref}}^\ast}`: -:math:`(\mathsf{global{.}get}~x)` is constant if: + * The reference :math:`{\mathit{ref}}` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}`. - * The global type :math:`C{.}\mathsf{globals}{}[x]` exists. - * The global type :math:`C{.}\mathsf{globals}{}[x]` is of the form :math:`(\epsilon~t)`. +The export instance :math:`\{ \mathsf{name}~{\mathit{nm}},\;\allowbreak \mathsf{addr}~{\mathit{xa}} \}` is :ref:`valid ` if: + * The external value :math:`{\mathit{xa}}` is :ref:`valid ` with the external type :math:`{\mathit{xt}}`. -:math:`{{\mathit{instr}}^\ast}` is constant if: - * For all :math:`{\mathit{instr}}` in :math:`{{\mathit{instr}}^\ast}`: - * :math:`{\mathit{instr}}` is constant. +The module instance :math:`\{ \mathsf{types}~{{\mathit{functype}}^\ast},\;\allowbreak \mathsf{funcs}~{{\mathit{funcaddr}}^\ast},\;\allowbreak \mathsf{globals}~{{\mathit{globaladdr}}^\ast},\;\allowbreak \mathsf{tables}~{{\mathit{tableaddr}}^\ast},\;\allowbreak \mathsf{mems}~{{\mathit{memaddr}}^\ast},\;\allowbreak \mathsf{elems}~{{\mathit{elemaddr}}^\ast},\;\allowbreak \mathsf{datas}~{{\mathit{dataaddr}}^\ast},\;\allowbreak \mathsf{exports}~{{\mathit{exportinst}}^\ast} \}` is :ref:`valid ` with the context :math:`\{ \mathsf{types}~{{\mathit{functype}}^\ast},\;\allowbreak \mathsf{funcs}~{{\mathit{functype}}_{\mathsf{f}}^\ast},\;\allowbreak \mathsf{globals}~{{\mathit{globaltype}}^\ast},\;\allowbreak \mathsf{tables}~{{\mathit{tabletype}}^\ast},\;\allowbreak \mathsf{mems}~{{\mathit{memtype}}^\ast},\;\allowbreak \mathsf{elems}~{{\mathit{elemtype}}^\ast},\;\allowbreak \mathsf{datas}~{{\mathit{datatype}}^\ast},\;\allowbreak \mathsf{return}~\epsilon \}` if: + * For all :math:`{\mathit{functype}}` in :math:`{{\mathit{functype}}^\ast}`: + * The function type :math:`{\mathit{functype}}` is :ref:`valid `. -The type :math:`(\mathsf{type}~{\mathit{ft}})` is :ref:`valid ` with the function type :math:`{\mathit{ft}}` if: + * For all :math:`{\mathit{globaladdr}}` in :math:`{{\mathit{globaladdr}}^\ast}`, and corresponding :math:`{\mathit{globaltype}}` in :math:`{{\mathit{globaltype}}^\ast}`: + * The external value :math:`(\mathsf{global}~{\mathit{globaladdr}})` is :ref:`valid ` with the external type :math:`(\mathsf{global}~{\mathit{globaltype}})`. - * The function type :math:`{\mathit{ft}}` is :ref:`valid `. + * For all :math:`{\mathit{funcaddr}}` in :math:`{{\mathit{funcaddr}}^\ast}`, and corresponding :math:`{\mathit{functype}}_{\mathsf{f}}` in :math:`{{\mathit{functype}}_{\mathsf{f}}^\ast}`: + * The external value :math:`(\mathsf{func}~{\mathit{funcaddr}})` is :ref:`valid ` with the external type :math:`(\mathsf{func}~{\mathit{functype}}_{\mathsf{f}})`. + * For all :math:`{\mathit{memaddr}}` in :math:`{{\mathit{memaddr}}^\ast}`, and corresponding :math:`{\mathit{memtype}}` in :math:`{{\mathit{memtype}}^\ast}`: + * The external value :math:`(\mathsf{mem}~{\mathit{memaddr}})` is :ref:`valid ` with the external type :math:`(\mathsf{mem}~{\mathit{memtype}})`. -The function :math:`(\mathsf{func}~x~{(\mathsf{local}~t)^\ast}~{\mathit{expr}})` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}` if: + * For all :math:`{\mathit{tableaddr}}` in :math:`{{\mathit{tableaddr}}^\ast}`, and corresponding :math:`{\mathit{tabletype}}` in :math:`{{\mathit{tabletype}}^\ast}`: + * The external value :math:`(\mathsf{table}~{\mathit{tableaddr}})` is :ref:`valid ` with the external type :math:`(\mathsf{table}~{\mathit{tabletype}})`. - * The function type :math:`C{.}\mathsf{types}{}[x]` exists. + * For all :math:`{\mathit{exportinst}}` in :math:`{{\mathit{exportinst}}^\ast}`: - * The function type :math:`C{.}\mathsf{types}{}[x]` is of the form :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. + * The export instance :math:`{\mathit{exportinst}}` is :ref:`valid `. - * For all :math:`t` in :math:`{t^\ast}`: + * For all :math:`{\mathit{dataaddr}}` in :math:`{{\mathit{dataaddr}}^\ast}`: - * The value type :math:`t` is not of the form :math:`\mathsf{bot}`. + * The data instance :math:`s{.}\mathsf{datas}{}[{\mathit{dataaddr}}]` exists. - * Under the context :math:`C` with the field :math:`\mathsf{locals}` appended by :math:`{t_1^\ast}~{t^\ast}` and the field :math:`\mathsf{labels}` appended by :math:`{t_2^\ast}` and the field :math:`\mathsf{return}` appended by :math:`{t_2^\ast}`, the expression :math:`{\mathit{expr}}` is :ref:`valid ` with the result type :math:`{t_2^\ast}`. + * For all :math:`{\mathit{dataaddr}}` in :math:`{{\mathit{dataaddr}}^\ast}`, and corresponding :math:`{\mathit{datatype}}` in :math:`{{\mathit{datatype}}^\ast}`: + * The data instance :math:`s{.}\mathsf{datas}{}[{\mathit{dataaddr}}]` is :ref:`valid ` with the data type :math:`{\mathit{datatype}}`. + * For all :math:`{\mathit{elemaddr}}` in :math:`{{\mathit{elemaddr}}^\ast}`: + * The element instance :math:`s{.}\mathsf{elems}{}[{\mathit{elemaddr}}]` exists. -The global :math:`(\mathsf{global}~{\mathit{gt}}~{\mathit{expr}})` is :ref:`valid ` with the global type :math:`{\mathit{gt}}` if: + * For all :math:`{\mathit{elemaddr}}` in :math:`{{\mathit{elemaddr}}^\ast}`, and corresponding :math:`{\mathit{elemtype}}` in :math:`{{\mathit{elemtype}}^\ast}`: + * The element instance :math:`s{.}\mathsf{elems}{}[{\mathit{elemaddr}}]` is :ref:`valid ` with the element type :math:`{\mathit{elemtype}}`. - * The global type :math:`{\mathit{gt}}` is :ref:`valid `. + * :math:`{{\mathit{exportinst}}{.}\mathsf{name}^\ast}~{\mathrm{disjoint}}` is true. - * The global type :math:`{\mathit{gt}}` is of the form :math:`({\mathit{mut}}~t)`. + * The length of :math:`{(\mathsf{global}~{\mathit{globaladdr}})^\ast}~{(\mathsf{mem}~{\mathit{memaddr}})^\ast}~{(\mathsf{table}~{\mathit{tableaddr}})^\ast}~{(\mathsf{func}~{\mathit{funcaddr}})^\ast}` is greater than :math:`0`. - * The expression :math:`{\mathit{expr}}` is :ref:`valid ` with the value type :math:`t`. + * For all :math:`{\mathit{exportinst}}` in :math:`{{\mathit{exportinst}}^\ast}`: - * :math:`{\mathit{expr}}` is constant. + * :math:`{\mathit{exportinst}}{.}\mathsf{addr}` is contained in :math:`{(\mathsf{global}~{\mathit{globaladdr}})^\ast}~{(\mathsf{mem}~{\mathit{memaddr}})^\ast}~{(\mathsf{table}~{\mathit{tableaddr}})^\ast}~{(\mathsf{func}~{\mathit{funcaddr}})^\ast}`. -The table :math:`(\mathsf{table}~{\mathit{tt}})` is :ref:`valid ` with the table type :math:`{\mathit{tt}}` if: +The frame :math:`\{ \mathsf{locals}~{{\mathit{val}}^\ast},\;\allowbreak \mathsf{module}~{\mathit{moduleinst}} \}` is :ref:`valid ` with the context :math:`C` with the field :math:`\mathsf{locals}` appended by :math:`{t^\ast}` if: - * The table type :math:`{\mathit{tt}}` is :ref:`valid `. + * The module instance :math:`{\mathit{moduleinst}}` is :ref:`valid ` with the context :math:`C`. + * For all :math:`t` in :math:`{t^\ast}`, and corresponding :math:`{\mathit{val}}` in :math:`{{\mathit{val}}^\ast}`: + * The value :math:`{\mathit{val}}` is :ref:`valid ` with the value type :math:`t`. -The memory :math:`(\mathsf{memory}~{\mathit{mt}})` is :ref:`valid ` with the memory type :math:`{\mathit{mt}}` if: - * The memory type :math:`{\mathit{mt}}` is :ref:`valid `. +:math:`{\mathit{instr}}` is valid with :math:`{{\mathit{valtype}}^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast}` if: + * Either: + * The administrative instruction :math:`{\mathit{instr}}` is of the form :math:`{\mathit{instr}}`. -:math:`{\mathit{elemmode}}` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}` if: + * The instruction :math:`{\mathit{instr}}` is :ref:`valid ` with the function type :math:`{{\mathit{valtype}}^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast}`. + * Or: - * Either: + * The administrative instruction :math:`{\mathit{instr}}` is of the form :math:`({{\mathsf{label}}_{n}}{\{}~{{\mathit{instr}'}^\ast}~\}~{{{\mathit{instr}}'}^\ast})`. - * :math:`{\mathit{elemmode}}` is of the form :math:`(\mathsf{active}~x~{\mathit{expr}})`. + * The value type sequence :math:`{{\mathit{valtype}}^\ast}` is empty. - * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. + * :math:`{{\mathit{instr}'}^\ast}` is valid with :math:`{{t'}^{n}}~\rightarrow~{{\mathit{valtype}'}^\ast}`. - * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`({\mathit{lim}}~{\mathit{rt}})`. + * :math:`{{{\mathit{instr}}'}^\ast}` is valid with :math:`\epsilon~\rightarrow~{{\mathit{valtype}'}^\ast}`. + * Or: - * The expression :math:`{\mathit{expr}}` is :ref:`valid ` with the value type :math:`\mathsf{i{\scriptstyle 32}}`. + * The administrative instruction :math:`{\mathit{instr}}` is of the form :math:`({{\mathsf{frame}}_{n}}{\{}~f~\}~{{{\mathit{instr}}'}^\ast})`. - * :math:`{\mathit{expr}}` is constant. + * The value type sequence :math:`{{\mathit{valtype}}^\ast}` is empty. - * Or: + * The frame :math:`f` is :ref:`valid ` with the context :math:`{C'}`. - * :math:`{\mathit{elemmode}}` is of the form :math:`\mathsf{passive}`. + * :math:`{{{\mathit{instr}}'}^\ast}` is valid with :math:`{{\mathit{valtype}'}^{n}}`. * Or: - * :math:`{\mathit{elemmode}}` is of the form :math:`\mathsf{declare}`. + * The administrative instruction :math:`{\mathit{instr}}` is of the form :math:`(\mathsf{call}~{\mathit{funcaddr}})`. + * The external value :math:`(\mathsf{func}~{\mathit{funcaddr}})` is :ref:`valid ` with the external type :math:`(\mathsf{func}~{{\mathit{valtype}}^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast})`. + * Or: + * The administrative instruction :math:`{\mathit{instr}}` is of the form :math:`{\mathit{ref}}`. + * The value type sequence :math:`{{\mathit{valtype}}^\ast}` is empty. -:math:`(\mathsf{active}~x~{\mathit{expr}})` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}` if: + * The value type sequence :math:`{{\mathit{valtype}'}^\ast}` is of the form :math:`{\mathit{rt}}`. + * The reference :math:`{\mathit{ref}}` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}`. + * Or: - * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. + * The administrative instruction :math:`{\mathit{instr}}` is of the form :math:`\mathsf{trap}`. - * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`({\mathit{lim}}~{\mathit{rt}})`. - * The expression :math:`{\mathit{expr}}` is :ref:`valid ` with the value type :math:`\mathsf{i{\scriptstyle 32}}`. - * :math:`{\mathit{expr}}` is constant. +:math:`{\mathit{instr}}` is valid with :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}` if: + * The instruction :math:`{\mathit{instr}}` is :ref:`valid ` with the function type :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. -:math:`\mathsf{passive}` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}`. +:math:`({{\mathsf{label}}_{n}}{\{}~{{\mathit{instr}}^\ast}~\}~{{\mathit{instr}}^\ast})` is valid with :math:`\epsilon~\rightarrow~{t^\ast}` if: -:math:`\mathsf{declare}` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}`. + * :math:`{{\mathit{instr}'}^\ast}` is valid with :math:`{{t'}^{n}}~\rightarrow~{t^\ast}`. + * :math:`{{\mathit{instr}}^\ast}` is valid with :math:`\epsilon~\rightarrow~{t^\ast}`. -The table segment :math:`(\mathsf{elem}~{\mathit{rt}}~{{\mathit{expr}}^\ast}~{\mathit{elemmode}})` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}` if: - * For all :math:`{\mathit{expr}}` in :math:`{{\mathit{expr}}^\ast}`: +:math:`({{\mathsf{frame}}_{n}}{\{}~f~\}~{{\mathit{instr}}^\ast})` is valid with :math:`\epsilon~\rightarrow~{t^{n}}` if: - * The expression :math:`{\mathit{expr}}` is :ref:`valid ` with the value type :math:`{\mathit{rt}}`. - * :math:`{\mathit{expr}}` is constant. + * The frame :math:`f` is :ref:`valid ` with the context :math:`{C'}`. - * :math:`{\mathit{elemmode}}` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}`. + * :math:`{{\mathit{instr}}^\ast}` is valid with :math:`{t^{n}}`. -:math:`{\mathit{datamode}}` is :ref:`valid ` if: +:math:`(\mathsf{call}~{\mathit{funcaddr}})` is valid with :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}` if: - * Either: + * The external value :math:`(\mathsf{func}~{\mathit{funcaddr}})` is :ref:`valid ` with the external type :math:`(\mathsf{func}~{t_1^\ast}~\rightarrow~{t_2^\ast})`. - * :math:`{\mathit{datamode}}` is of the form :math:`(\mathsf{active}~0~{\mathit{expr}})`. - * The expression :math:`{\mathit{expr}}` is :ref:`valid ` with the value type :math:`\mathsf{i{\scriptstyle 32}}`. - * :math:`{\mathit{expr}}` is constant. - * Or: +:math:`{\mathit{ref}}` is valid with :math:`\epsilon~\rightarrow~{\mathit{rt}}` if: - * :math:`{\mathit{datamode}}` is of the form :math:`\mathsf{passive}`. + * The reference :math:`{\mathit{ref}}` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}`. -:math:`(\mathsf{active}~0~{\mathit{expr}})` is :ref:`valid ` if: +:math:`\mathsf{trap}` is valid with :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. - * The expression :math:`{\mathit{expr}}` is :ref:`valid ` with the value type :math:`\mathsf{i{\scriptstyle 32}}`. - * :math:`{\mathit{expr}}` is constant. +:math:`{{\mathit{instr}}^\ast}` is valid with :math:`{{\mathit{valtype}}^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast}` if: -:math:`\mathsf{passive}` is always :ref:`valid `. + * Either: + * The administrative instruction sequence :math:`{{\mathit{instr}}^\ast}` is empty. + * The value type sequence :math:`{{\mathit{valtype}}^\ast}` is empty. + * The value type sequence :math:`{{\mathit{valtype}'}^\ast}` is empty. -The memory segment :math:`(\mathsf{data}~{b^\ast}~{\mathit{datamode}})` is :ref:`valid ` if: + * Or: + * The administrative instruction sequence :math:`{{\mathit{instr}}^\ast}` is of the form :math:`{{\mathit{instr}}}_1~{{{\mathit{instr}}}_2^\ast}`. - * :math:`{\mathit{datamode}}` is :ref:`valid `. + * :math:`{{\mathit{instr}}}_1` is valid with :math:`{{\mathit{valtype}}^\ast}~\rightarrow~{t_2^\ast}`. + * :math:`{{{\mathit{instr}}}_2^\ast}` is valid with :math:`{t_2^\ast}~\rightarrow~{{\mathit{valtype}'}^\ast}`. + * Or: + * The administrative instruction sequence :math:`{{\mathit{instr}}^\ast}` is of the form :math:`{{\mathit{instr}}^\ast}`. + * :math:`{{{\mathit{instr}}'}^\ast}` is valid with :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. -The start function :math:`(\mathsf{start}~x)` is :ref:`valid ` if: + * The result type :math:`{{\mathit{valtype}}^\ast}` :ref:`matches ` the result type :math:`{t_1^\ast}`. + * The result type :math:`{t_2^\ast}` :ref:`matches ` the result type :math:`{{\mathit{valtype}'}^\ast}`. + * Or: - * The function type :math:`C{.}\mathsf{funcs}{}[x]` exists. + * The value type sequence :math:`{{\mathit{valtype}}^\ast}` is of the form :math:`{t^\ast}~{t_1^\ast}`. - * The function type :math:`C{.}\mathsf{funcs}{}[x]` is of the form :math:`\epsilon~\rightarrow~\epsilon`. + * The value type sequence :math:`{{\mathit{valtype}'}^\ast}` is of the form :math:`{t^\ast}~{t_2^\ast}`. + * :math:`{{\mathit{instr}}^\ast}` is valid with :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. -The import :math:`(\mathsf{import}~{\mathit{name}}_1~{\mathit{name}}_2~{\mathit{xt}})` is :ref:`valid ` with the external type :math:`{\mathit{xt}}` if: +:math:`\epsilon` is valid with :math:`\epsilon~\rightarrow~\epsilon`. - * The external type :math:`{\mathit{xt}}` is :ref:`valid `. +:math:`{{\mathit{instr}}}_1~{{{\mathit{instr}}}_2^\ast}` is valid with :math:`{t_1^\ast}~\rightarrow~{t_3^\ast}` if: -The external index :math:`{\mathit{externidx}}` is :ref:`valid ` with the external type :math:`{\mathit{externtype}}` if: + * :math:`{{\mathit{instr}}}_1` is valid with :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. - * Either: + * :math:`{{{\mathit{instr}}}_2^\ast}` is valid with :math:`{t_2^\ast}~\rightarrow~{t_3^\ast}`. - * The external index :math:`{\mathit{externidx}}` is of the form :math:`(\mathsf{func}~x)`. - * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{func}~{\mathit{ft}})`. - * The function type :math:`C{.}\mathsf{funcs}{}[x]` exists. - * The function type :math:`C{.}\mathsf{funcs}{}[x]` is of the form :math:`{\mathit{ft}}`. +:math:`{{\mathit{instr}}^\ast}` is valid with :math:`{{t'}_1^\ast}~\rightarrow~{{t'}_2^\ast}` if: - * Or: - * The external index :math:`{\mathit{externidx}}` is of the form :math:`(\mathsf{global}~x)`. + * :math:`{{\mathit{instr}}^\ast}` is valid with :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. - * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{global}~{\mathit{gt}})`. + * The result type :math:`{{t'}_1^\ast}` :ref:`matches ` the result type :math:`{t_1^\ast}`. - * The global type :math:`C{.}\mathsf{globals}{}[x]` exists. + * The result type :math:`{t_2^\ast}` :ref:`matches ` the result type :math:`{{t'}_2^\ast}`. - * The global type :math:`C{.}\mathsf{globals}{}[x]` is of the form :math:`{\mathit{gt}}`. - * Or: - * The external index :math:`{\mathit{externidx}}` is of the form :math:`(\mathsf{table}~x)`. - * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{table}~{\mathit{tt}})`. - * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. +:math:`{{\mathit{instr}}^\ast}` is valid with :math:`{t^\ast}~{t_1^\ast}~\rightarrow~{t^\ast}~{t_2^\ast}` if: - * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`{\mathit{tt}}`. - * Or: - * The external index :math:`{\mathit{externidx}}` is of the form :math:`(\mathsf{mem}~x)`. + * :math:`{{\mathit{instr}}^\ast}` is valid with :math:`{t_1^\ast}~\rightarrow~{t_2^\ast}`. - * The external type :math:`{\mathit{externtype}}` is of the form :math:`(\mathsf{mem}~{\mathit{mt}})`. - * The memory type :math:`C{.}\mathsf{mems}{}[x]` exists. - * The memory type :math:`C{.}\mathsf{mems}{}[x]` is of the form :math:`{\mathit{mt}}`. +:math:`{{\mathit{instr}}^\ast}` is valid with :math:`{t^\ast}` if: + * :math:`{{\mathit{instr}}^\ast}` is valid with :math:`\epsilon~\rightarrow~{t^\ast}`. -The external index :math:`(\mathsf{func}~x)` is :ref:`valid ` with the external type :math:`(\mathsf{func}~{\mathit{ft}})` if: - * The function type :math:`C{.}\mathsf{funcs}{}[x]` exists. - * The function type :math:`C{.}\mathsf{funcs}{}[x]` is of the form :math:`{\mathit{ft}}`. +The global instance :math:`\{ \mathsf{type}~({\mathit{mut}}~t),\;\allowbreak \mathsf{value}~{\mathit{val}} \}` is :ref:`valid ` with the global type :math:`({\mathit{mut}}~t)` if: + * The global type :math:`({\mathit{mut}}~t)` is :ref:`valid `. + * The value :math:`{\mathit{val}}` is :ref:`valid ` with the value type :math:`t`. -The external index :math:`(\mathsf{global}~x)` is :ref:`valid ` with the external type :math:`(\mathsf{global}~{\mathit{gt}})` if: - * The global type :math:`C{.}\mathsf{globals}{}[x]` exists. - * The global type :math:`C{.}\mathsf{globals}{}[x]` is of the form :math:`{\mathit{gt}}`. +The memory instance :math:`\{ \mathsf{type}~{}[ n .. m ]~\mathsf{page},\;\allowbreak \mathsf{bytes}~{b^\ast} \}` is :ref:`valid ` with the memory type :math:`{}[ n .. m ]~\mathsf{page}` if: + * The memory type :math:`{}[ n .. m ]~\mathsf{page}` is :ref:`valid `. + * The length of :math:`{b^\ast}` is equal to :math:`n \cdot 64 \, {\mathrm{Ki}}`. -The external index :math:`(\mathsf{table}~x)` is :ref:`valid ` with the external type :math:`(\mathsf{table}~{\mathit{tt}})` if: - * The table type :math:`C{.}\mathsf{tables}{}[x]` exists. - * The table type :math:`C{.}\mathsf{tables}{}[x]` is of the form :math:`{\mathit{tt}}`. +The table instance :math:`\{ \mathsf{type}~({}[ n .. m ]~{\mathit{rt}}),\;\allowbreak \mathsf{refs}~{{\mathit{ref}}^\ast} \}` is :ref:`valid ` with the table type :math:`({}[ n .. m ]~{\mathit{rt}})` if: + * The table type :math:`({}[ n .. m ]~{\mathit{rt}})` is :ref:`valid `. + * For all :math:`{\mathit{ref}}` in :math:`{{\mathit{ref}}^\ast}`: -The external index :math:`(\mathsf{mem}~x)` is :ref:`valid ` with the external type :math:`(\mathsf{mem}~{\mathit{mt}})` if: + * The reference :math:`{\mathit{ref}}` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}`. + * The length of :math:`{{\mathit{ref}}^\ast}` is equal to :math:`n`. - * The memory type :math:`C{.}\mathsf{mems}{}[x]` exists. - * The memory type :math:`C{.}\mathsf{mems}{}[x]` is of the form :math:`{\mathit{mt}}`. +The function instance :math:`\{ \mathsf{type}~{\mathit{ft}},\;\allowbreak \mathsf{module}~{\mathit{moduleinst}},\;\allowbreak \mathsf{code}~{\mathit{func}} \}` is :ref:`valid ` with the function type :math:`{\mathit{ft}}` if: -The export :math:`(\mathsf{export}~{\mathit{name}}~{\mathit{externidx}})` is :ref:`valid ` with the external type :math:`{\mathit{xt}}` if: + * The function type :math:`{\mathit{ft}}` is :ref:`valid `. + * The module instance :math:`{\mathit{moduleinst}}` is :ref:`valid ` with the context :math:`C`. - * The external index :math:`{\mathit{externidx}}` is :ref:`valid ` with the external type :math:`{\mathit{xt}}`. + * The function :math:`{\mathit{func}}` is :ref:`valid ` with the function type :math:`{\mathit{ft}}`. -The module :math:`(\mathsf{module}~{{\mathit{type}}^\ast}~{{\mathit{import}}^\ast}~{{\mathit{func}}^\ast}~{{\mathit{global}}^\ast}~{{\mathit{table}}^\ast}~{{\mathit{mem}}^\ast}~{{\mathit{elem}}^\ast}~{{\mathit{data}}^{n}}~{{\mathit{start}}^?}~{{\mathit{export}}^\ast})` is :ref:`valid ` if: +The store :math:`s` is :ref:`valid ` if: - * For all :math:`{\mathit{type}}` in :math:`{{\mathit{type}}^\ast}`: + * For all : - * The type :math:`{\mathit{type}}` is :ref:`valid ` with the function type :math:`{\mathit{ft}'}`. + * The global instance :math:`{\mathit{globalinst}}` is :ref:`valid ` with the global type :math:`{\mathit{globaltype}}`. - * :math:`{{\mathit{ft}'}^\ast}` is the concatenation of all such :math:`{\mathit{ft}'}`. + * :math:`{{\mathit{globalinst}}^\ast}` is the concatenation of all such :math:`{\mathit{globalinst}}`. - * For all :math:`{\mathit{import}}` in :math:`{{\mathit{import}}^\ast}`: + * For all : - * Under the context :math:`\{ \mathsf{types}~{{\mathit{ft}'}^\ast},\;\allowbreak \mathsf{return}~\epsilon \}`, the import :math:`{\mathit{import}}` is :ref:`valid ` with the external type :math:`{\mathit{ixt}}`. + * The memory instance :math:`{\mathit{meminst}}` is :ref:`valid ` with the memory type :math:`{\mathit{memtype}}`. - * :math:`{{\mathit{ixt}}^\ast}` is the concatenation of all such :math:`{\mathit{ixt}}`. + * :math:`{{\mathit{meminst}}^\ast}` is the concatenation of all such :math:`{\mathit{meminst}}`. - * For all :math:`{\mathit{global}}` in :math:`{{\mathit{global}}^\ast}`: + * For all : - * Under the context :math:`{C'}`, the global :math:`{\mathit{global}}` is :ref:`valid ` with the global type :math:`{\mathit{gt}}`. + * The table instance :math:`{\mathit{tableinst}}` is :ref:`valid ` with the table type :math:`{\mathit{tabletype}}`. - * :math:`{{\mathit{gt}}^\ast}` is the concatenation of all such :math:`{\mathit{gt}}`. + * :math:`{{\mathit{tableinst}}^\ast}` is the concatenation of all such :math:`{\mathit{tableinst}}`. - * For all :math:`{\mathit{table}}` in :math:`{{\mathit{table}}^\ast}`: + * For all : - * Under the context :math:`{C'}`, the table :math:`{\mathit{table}}` is :ref:`valid ` with the table type :math:`{\mathit{tt}}`. + * The function instance :math:`{\mathit{funcinst}}` is :ref:`valid ` with the function type :math:`{\mathit{functype}}`. - * :math:`{{\mathit{tt}}^\ast}` is the concatenation of all such :math:`{\mathit{tt}}`. + * :math:`{{\mathit{funcinst}}^\ast}` is the concatenation of all such :math:`{\mathit{funcinst}}`. - * For all :math:`{\mathit{mem}}` in :math:`{{\mathit{mem}}^\ast}`: + * For all : - * Under the context :math:`{C'}`, the memory :math:`{\mathit{mem}}` is :ref:`valid ` with the memory type :math:`{\mathit{mt}}`. + * The data instance :math:`{\mathit{datainst}}` is :ref:`valid ` with the data type :math:`{\mathit{datatype}}`. - * :math:`{{\mathit{mt}}^\ast}` is the concatenation of all such :math:`{\mathit{mt}}`. + * :math:`{{\mathit{datainst}}^\ast}` is the concatenation of all such :math:`{\mathit{datainst}}`. - * For all :math:`{\mathit{elem}}` in :math:`{{\mathit{elem}}^\ast}`: + * For all : - * Under the context :math:`{C'}`, the table segment :math:`{\mathit{elem}}` is :ref:`valid ` with the reference type :math:`{\mathit{rt}}`. + * The element instance :math:`{\mathit{eleminst}}` is :ref:`valid ` with the element type :math:`{\mathit{elemtype}}`. - * :math:`{{\mathit{rt}}^\ast}` is the concatenation of all such :math:`{\mathit{rt}}`. + * :math:`{{\mathit{eleminst}}^\ast}` is the concatenation of all such :math:`{\mathit{eleminst}}`. - * For all :math:`{\mathit{data}}` in :math:`{{\mathit{data}}^\ast}`: + * The store :math:`s` is of the form :math:`\{ \mathsf{funcs}~{{\mathit{funcinst}}^\ast},\;\allowbreak \mathsf{globals}~{{\mathit{globalinst}}^\ast},\;\allowbreak \mathsf{tables}~{{\mathit{tableinst}}^\ast},\;\allowbreak \mathsf{mems}~{{\mathit{meminst}}^\ast},\;\allowbreak \mathsf{elems}~{{\mathit{eleminst}}^\ast},\;\allowbreak \mathsf{datas}~{{\mathit{datainst}}^\ast} \}`. - * Under the context :math:`{C'}`, the memory segment :math:`{\mathit{data}}` is :ref:`valid `. - * For all :math:`{\mathit{func}}` in :math:`{{\mathit{func}}^\ast}`: - * The function :math:`{\mathit{func}}` is :ref:`valid ` with the function type :math:`{\mathit{ft}}`. - * :math:`{{\mathit{ft}}^\ast}` is the concatenation of all such :math:`{\mathit{ft}}`. +The state :math:`(s, f)` is :ref:`valid ` with the context :math:`C` if: - * If :math:`{\mathit{start}}` is defined, then: - * The start function :math:`{\mathit{start}}` is :ref:`valid `. + * The store :math:`s` is :ref:`valid `. - * For all :math:`{\mathit{export}}` in :math:`{{\mathit{export}}^\ast}`: + * The frame :math:`f` is :ref:`valid ` with the context :math:`C`. - * The export :math:`{\mathit{export}}` is :ref:`valid ` with the external type :math:`{\mathit{xt}}`. - * The length of :math:`{{\mathit{mt}}^\ast}` is less than or equal to :math:`1`. - * The context :math:`{C'}` is of the form :math:`\{ \mathsf{types}~{{\mathit{ft}'}^\ast},\;\allowbreak \mathsf{funcs}~{{\mathit{ift}}^\ast}~{{\mathit{ft}}^\ast},\;\allowbreak \mathsf{globals}~{{\mathit{igt}}^\ast},\;\allowbreak \mathsf{tables}~{{\mathit{itt}}^\ast}~{{\mathit{tt}}^\ast},\;\allowbreak \mathsf{mems}~{{\mathit{imt}}^\ast}~{{\mathit{mt}}^\ast},\;\allowbreak \mathsf{return}~\epsilon \}`. - * The function type sequence :math:`{{\mathit{ift}}^\ast}` is of the form :math:`{\mathrm{funcs}}({{\mathit{ixt}}^\ast})`. +The configuration :math:`(s, f)~;~{{\mathit{instr}}^\ast}` is :ref:`valid ` with the result type :math:`{t^\ast}` if: - * The global type sequence :math:`{{\mathit{igt}}^\ast}` is of the form :math:`{\mathrm{globals}}({{\mathit{ixt}}^\ast})`. - * The table type sequence :math:`{{\mathit{itt}}^\ast}` is of the form :math:`{\mathrm{tables}}({{\mathit{ixt}}^\ast})`. + * The state :math:`(s, f)` is :ref:`valid ` with the context :math:`C`. - * The memory type sequence :math:`{{\mathit{imt}}^\ast}` is of the form :math:`{\mathrm{mems}}({{\mathit{ixt}}^\ast})`. + * :math:`{{\mathit{instr}}^\ast}` is valid with :math:`{t^\ast}`. :math:`\mathsf{table{.}copy}~x~y` @@ -7873,6 +9239,19 @@ The module :math:`(\mathsf{module}~{{\mathit{type}}^\ast}~{{\mathit{import}}^\as #. Return :math:`{{\mathrm{setproduct{\kern-0.1em\scriptstyle 1}}}}_{X}({w_1^\ast}, {\Large\times}~{{w^\ast}^\ast})`. +:math:`{X^\ast}~{\mathrm{disjoint}}` +.................................... + + +1. If :math:`{X^\ast} = \epsilon`, then: + + a. Return true. + +#. Let :math:`w~{{w'}^\ast}` be :math:`{X^\ast}`. + +#. Return :math:`w` is not contained in :math:`{{w'}^\ast}` and :math:`{{w'}^\ast}~{\mathrm{disjoint}}`. + + :math:`{\mathrm{signif}}(N)` ............................ @@ -11480,6 +12859,326 @@ Module_ok - the table type sequence itt* is $tablesxt(ixt*). - the memory type sequence imt* is $memsxt(ixt*). +Context_ok +- the context C is valid if: + - C is { TYPES: ft*; FUNCS: ft_2*; GLOBALS: gt*; TABLES: tt*; MEMS: mt*; ELEMS: et*; DATAS: ok*; LOCALS: lct*; LABELS: [rt*]; RETURN: ?(rt'?) }. + - For all ft in ft*: + - the function type ft is valid. + - For all gt in gt*: + - the global type gt is valid. + - For all mt in mt*: + - the memory type mt is valid. + - For all tt in tt*: + - the table type tt is valid. + - For all ft_2 in ft_2*: + - the function type ft_2 is valid. + +Externaddr_ok +- the external value externaddr is valid with the external type externtype if: + - Either: + - externaddr is (GLOBAL a). + - externtype is (GLOBAL globalinst.TYPE). + - the global instance s.GLOBALS[a] exists. + - s.GLOBALS[a] is globalinst. + - Or: + - externaddr is (MEM a). + - externtype is (MEM meminst.TYPE). + - the memory instance s.MEMS[a] exists. + - s.MEMS[a] is meminst. + - Or: + - externaddr is (TABLE a). + - externtype is (TABLE tableinst.TYPE). + - the table instance s.TABLES[a] exists. + - s.TABLES[a] is tableinst. + - Or: + - externaddr is (FUNC a). + - externtype is (FUNC funcinst.TYPE). + - the function instance s.FUNCS[a] exists. + - s.FUNCS[a] is funcinst. + - Or: + - externaddr is valid with the external type xt'. + - xt' matches externtype. + +Externaddr_ok/global +- the external value (GLOBAL a) is valid with the external type (GLOBAL globalinst.TYPE) if: + - the global instance s.GLOBALS[a] exists. + - s.GLOBALS[a] is globalinst. + +Externaddr_ok/mem +- the external value (MEM a) is valid with the external type (MEM meminst.TYPE) if: + - the memory instance s.MEMS[a] exists. + - s.MEMS[a] is meminst. + +Externaddr_ok/table +- the external value (TABLE a) is valid with the external type (TABLE tableinst.TYPE) if: + - the table instance s.TABLES[a] exists. + - s.TABLES[a] is tableinst. + +Externaddr_ok/func +- the external value (FUNC a) is valid with the external type (FUNC funcinst.TYPE) if: + - the function instance s.FUNCS[a] exists. + - s.FUNCS[a] is funcinst. + +Externaddr_ok/sub +- the external value externaddr is valid with the external type xt if: + - externaddr is valid with the external type xt'. + - xt' matches xt. + +Ref_ok +- the reference ref is valid with the reference type rt if: + - Either: + - ref is (REF.NULL rt'). + - Or: + - ref is (REF.FUNC_ADDR a). + - rt is FUNCREF. + - the external value (FUNC a) is valid with the external type (FUNC ext). + - Or: + - ref is (REF.HOST_ADDR a). + - rt is EXTERNREF. + +Ref_ok/null +- the reference (REF.NULL rt) is valid with rt. + +Ref_ok/func +- the reference (REF.FUNC_ADDR a) is valid with the reference type FUNCREF if: + - the external value (FUNC a) is valid with the external type (FUNC ext). + +Ref_ok/extern +- the reference (REF.HOST_ADDR a) is valid with the reference type EXTERNREF. + +Val_ok +- the value val is valid with the value type valtype if: + - Either: + - val is (nt.CONST c_t). + - valtype is nt. + - Or: + - val is (vt.CONST c_t). + - valtype is vt. + - Or: + - val is r. + - valtype is rt. + - the reference r is valid with the reference type rt. + +Val_ok/numtype +- the value (nt.CONST c_t) is valid with the value type nt. + +Val_ok/vectype +- the value (vt.CONST c_t) is valid with the value type vt. + +Val_ok/reftype +- the value r is valid with the value type rt if: + - r is valid with rt. + +Result_ok +- the result result is valid with the value type sequence t* if: + - Either: + - result is (_VALS v*). + - For all t in t*, and corresponding v in v*: + - the value v is valid with the value type t. + - Or: + - result is TRAP. + +Result_ok/result +- the result (_VALS v*) is valid with the value type sequence t* if: + - For all t in t*, and corresponding v in v*: + - the value v is valid with the value type t. + +Result_ok/trap +- the result TRAP is valid with t*. + +Datainst_ok +- the data instance { BYTES: b* } is valid with the data type OK. + +Eleminst_ok +- the element instance { TYPE: rt; REFS: ref* } is valid with the element type rt if: + - For all ref in ref*: + - the reference ref is valid with rt. + +Exportinst_ok +- the export instance { NAME: nm; ADDR: xa } is valid if: + - the external value xa is valid with the external type xt. + +Moduleinst_ok +- the module instance { TYPES: functype*; FUNCS: funcaddr*; GLOBALS: globaladdr*; TABLES: tableaddr*; MEMS: memaddr*; ELEMS: elemaddr*; DATAS: dataaddr*; EXPORTS: exportinst* } is valid with the context { TYPES: functype*; FUNCS: functype_F*; GLOBALS: globaltype*; TABLES: tabletype*; MEMS: memtype*; ELEMS: elemtype*; DATAS: datatype*; RETURN: ?() } if: + - For all functype in functype*: + - the function type functype is valid. + - For all globaladdr in globaladdr*, and corresponding globaltype in globaltype*: + - the external value (GLOBAL globaladdr) is valid with the external type (GLOBAL globaltype). + - For all funcaddr in funcaddr*, and corresponding functype_F in functype_F*: + - the external value (FUNC funcaddr) is valid with the external type (FUNC functype_F). + - For all memaddr in memaddr*, and corresponding memtype in memtype*: + - the external value (MEM memaddr) is valid with the external type (MEM memtype). + - For all tableaddr in tableaddr*, and corresponding tabletype in tabletype*: + - the external value (TABLE tableaddr) is valid with the external type (TABLE tabletype). + - For all exportinst in exportinst*: + - the export instance exportinst is valid. + - For all dataaddr in dataaddr*: + - the data instance s.DATAS[dataaddr] exists. + - For all dataaddr in dataaddr*, and corresponding datatype in datatype*: + - s.DATAS[dataaddr] is valid with the data type datatype. + - For all elemaddr in elemaddr*: + - the element instance s.ELEMS[elemaddr] exists. + - For all elemaddr in elemaddr*, and corresponding elemtype in elemtype*: + - s.ELEMS[elemaddr] is valid with the element type elemtype. + - $disjoint_(`name, exportinst.NAME*) is true. + - |(GLOBAL globaladdr)* :: (MEM memaddr)* :: (TABLE tableaddr)* :: (FUNC funcaddr)*| is greater than 0. + - For all exportinst in exportinst*: + - exportinst.ADDR is contained in (GLOBAL globaladdr)* :: (MEM memaddr)* :: (TABLE tableaddr)* :: (FUNC funcaddr)*. + +Frame_ok +- the frame { LOCALS: val*; MODULE: moduleinst } is valid with the context C with .LOCALS appended by t* if: + - the module instance moduleinst is valid with the context C. + - For all t in t*, and corresponding val in val*: + - the value val is valid with the value type t. + +Instr_ok2 +- admininstr is valid with valtype* -> valtype'* if: + - Either: + - the administrative instruction admininstr is instr. + - the instruction instr is valid with the function type valtype* -> valtype'*. + - Or: + - admininstr is (LABEL_ n { instr'* } admininstr'*). + - the value type sequence valtype* is []. + - instr'* is valid with t'^n -> valtype'*. + - admininstr'* is valid with [] -> valtype'*. + - Or: + - admininstr is (FRAME_ n { f } admininstr'*). + - valtype* is []. + - the frame f is valid with the context C'. + - admininstr'* is valid with valtype'^n. + - Or: + - admininstr is (CALL_ADDR funcaddr). + - the external value (FUNC funcaddr) is valid with the external type (FUNC valtype* -> valtype'*). + - Or: + - admininstr is ref. + - valtype* is []. + - the value type sequence valtype'* is [rt]. + - the reference ref is valid with the reference type rt. + - Or: + - admininstr is TRAP. + +Instr_ok2/plain +- instr is valid with t_1* -> t_2* if: + - the instruction instr is valid with the function type t_1* -> t_2*. + +Instr_ok2/label +- (LABEL_ n { instr* } admininstr*) is valid with [] -> t* if: + - instr'* is valid with t'^n -> t*. + - admininstr* is valid with [] -> t*. + +Instr_ok2/frame +- (FRAME_ n { f } admininstr*) is valid with [] -> t^n if: + - the frame f is valid with the context C'. + - admininstr* is valid with t^n. + +Instr_ok2/call_addr +- (CALL_ADDR funcaddr) is valid with t_1* -> t_2* if: + - the external value (FUNC funcaddr) is valid with the external type (FUNC t_1* -> t_2*). + +Instr_ok2/ref +- ref is valid with [] -> [rt] if: + - the reference ref is valid with the reference type rt. + +Instr_ok2/trap +- TRAP is valid with t_1* -> t_2*. + +Instrs_ok2 +- admininstr* is valid with valtype* -> valtype'* if: + - Either: + - the administrative instruction sequence admininstr* is []. + - the value type sequence valtype* is []. + - the value type sequence valtype'* is []. + - Or: + - admininstr* is [admininstr_1] :: admininstr_2*. + - admininstr_1 is valid with valtype* -> t_2*. + - admininstr_2* is valid with t_2* -> valtype'*. + - Or: + - admininstr* is instr*. + - admininstr'* is valid with t_1* -> t_2*. + - valtype* matches the result type t_1*. + - the result type t_2* matches valtype'*. + - Or: + - valtype* is t* :: t_1*. + - valtype'* is t* :: t_2*. + - admininstr* is valid with t_1* -> t_2*. + +Instrs_ok2/empty +- [] is valid with [] -> []. + +Instrs_ok2/seq +- [admininstr_1] :: admininstr_2* is valid with t_1* -> t_3* if: + - admininstr_1 is valid with t_1* -> t_2*. + - admininstr_2* is valid with t_2* -> t_3*. + +Instrs_ok2/sub +- instr* is valid with t'_1* -> t'_2* if: + - admininstr* is valid with t_1* -> t_2*. + - the result type t'_1* matches the result type t_1*. + - the result type t_2* matches the result type t'_2*. + +Instrs_ok2/frame +- admininstr* is valid with t* :: t_1* -> t* :: t_2* if: + - admininstr* is valid with t_1* -> t_2*. + +Expr_ok2 +- admininstr* is valid with t* if: + - admininstr* is valid with [] -> t*. + +Globalinst_ok +- the global instance { TYPE: (mut t); VALUE: val } is valid with the global type (mut t) if: + - (mut t) is valid. + - the value val is valid with the value type t. + +Meminst_ok +- the memory instance { TYPE: ([ n .. ?(m) ]) PAGE; BYTES: b* } is valid with the memory type ([ n .. ?(m) ]) PAGE if: + - ([ n .. ?(m) ]) PAGE is valid. + - |b*| is (n * (64 * $Ki())). + +Tableinst_ok +- the table instance { TYPE: (([ n .. ?(m) ]) rt); REFS: ref* } is valid with the table type (([ n .. ?(m) ]) rt) if: + - (([ n .. ?(m) ]) rt) is valid. + - For all ref in ref*: + - the reference ref is valid with the reference type rt. + - |ref*| is n. + +Funcinst_ok +- the function instance { TYPE: ft; MODULE: moduleinst; CODE: func } is valid with the function type ft if: + - ft is valid. + - the module instance moduleinst is valid with the context C. + - the function func is valid with ft. + +Store_ok +- the store s is valid if: + - For all : + - the global instance globalinst is valid with the global type globaltype. + - globalinst* is the concatenation of all such globalinst. + - For all : + - the memory instance meminst is valid with the memory type memtype. + - meminst* is the concatenation of all such meminst. + - For all : + - the table instance tableinst is valid with the table type tabletype. + - tableinst* is the concatenation of all such tableinst. + - For all : + - the function instance funcinst is valid with the function type functype. + - funcinst* is the concatenation of all such funcinst. + - For all : + - the data instance datainst is valid with the data type datatype. + - datainst* is the concatenation of all such datainst. + - For all : + - the element instance eleminst is valid with the element type elemtype. + - eleminst* is the concatenation of all such eleminst. + - s is { FUNCS: funcinst*; GLOBALS: globalinst*; TABLES: tableinst*; MEMS: meminst*; ELEMS: eleminst*; DATAS: datainst* }. + +State_ok +- the state (s, f) is valid with the context C if: + - the store s is valid. + - the frame f is valid with C. + +Config_ok +- the configuration (s, f) ; instr* is valid with the result type t* if: + - the state (s, f) is valid with the context C. + - admininstr* is valid with t*. + Step_read/table.copy-trap-* x y 1. Let z be the current state. 2. Assert: Due to validation, a value of value type I32 is on the top of the stack. @@ -12396,6 +14095,12 @@ setproduct_ `X X* 2. Let [w_1*] :: w** be X*. 3. Return $setproduct1_(`X, w_1*, $setproduct_(`X, w**)). +disjoint_ `X X* +1. If (X* = []), then: + a. Return true. +2. Let [w] :: w'* be X*. +3. Return (w is not contained in w'* /\ $disjoint_(`X, w'*)). + signif N 1. If (N = 32), then: a. Return 23. @@ -18453,12 +20158,12 @@ The state :math:`(s, f)` is :ref:`valid ` with the context :math:`C` -The configuration :math:`z~;~{{\mathit{instr}}^\ast}` is :ref:`valid ` if: +The configuration :math:`(s, f)~;~{{\mathit{instr}}^\ast}` is :ref:`valid ` with the result type :math:`{t^\ast}` if: - * The state :math:`z` is :ref:`valid ` with the context :math:`C`. + * The state :math:`(s, f)` is :ref:`valid ` with the context :math:`C`. - * The expression :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the result type :math:`{t^\ast}`. + * :math:`{{\mathit{instr}}^\ast}` is valid with :math:`{t^\ast}`. @@ -30170,9 +31875,9 @@ State_ok - the frame f is valid with C. Config_ok -- the configuration z ; instr* is valid if: - - the state z is valid with the context C. - - the expression instr* is valid with the result type t*. +- the configuration (s, f) ; instr* is valid with the result type t* if: + - the state (s, f) is valid with the context C. + - instr* is valid with t*. NotationTypingInstrScheme - the instruction sequence [instr] is valid with the instruction type valtype* -> valtype'* if: From 513761197cbf576ad2dea1d8d6dc4d34d67733ac Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Sun, 31 May 2026 14:27:08 +0100 Subject: [PATCH 090/115] Implement general mode hint. --- specification/wasm-2.0/8-reduction.spectec | 6 +-- spectec/src/il/dune | 2 +- spectec/src/il/hints.ml | 50 ++++++++++++++++++++++ 3 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 spectec/src/il/hints.ml diff --git a/specification/wasm-2.0/8-reduction.spectec b/specification/wasm-2.0/8-reduction.spectec index 8ded912097..b928044089 100644 --- a/specification/wasm-2.0/8-reduction.spectec +++ b/specification/wasm-2.0/8-reduction.spectec @@ -2,9 +2,9 @@ ;; Configurations ;; -relation Step: config ~> config hint(show "E") hint(tabular) -relation Step_pure: admininstr* ~> admininstr* hint(show "E") hint(tabular) -relation Step_read: config ~> admininstr* hint(show "E") hint(tabular) +relation Step: config ~> config hint(show "E") hint(tabular) hint(mode %1 -> %2) hint(wfopt) +relation Step_pure: admininstr* ~> admininstr* hint(show "E") hint(tabular) hint(mode %1 -> %2) hint(wfopt) +relation Step_read: config ~> admininstr* hint(show "E") hint(tabular) hint(mode %1 -> %2) hint(wfopt) relation Steps: config ~>* config hint(show "E") hint(tabular) rule Step/pure: diff --git a/spectec/src/il/dune b/spectec/src/il/dune index 2cb4bc8a45..e2631a27cd 100644 --- a/spectec/src/il/dune +++ b/spectec/src/il/dune @@ -1,5 +1,5 @@ (library (name il) (libraries util zarith xl el) - (modules ast eq free fresh subst iter walk env eval print debug valid) + (modules ast eq free fresh subst iter walk env eval print debug valid hints) ) diff --git a/spectec/src/il/hints.ml b/spectec/src/il/hints.ml new file mode 100644 index 0000000000..ba19628ce3 --- /dev/null +++ b/spectec/src/il/hints.ml @@ -0,0 +1,50 @@ +open Ast +open Util.Source + +(* Types for mode hint *) +type mode = In | Out +type side = L | R +module IntMap = Map.Make(Int) +module StringMap = Map.Make(String) + +type t = { + mutable modes : mode IntMap.t StringMap.t +} + +let empty = { + modes = StringMap.empty +} + +let find_opt = StringMap.find_opt + +let parse_mode err : El.Ast.exp -> mode IntMap.t = + let rec go side (exp: El.Ast.exp) mm = match exp.it with + | HoleE (`Num i) -> if side = L then IntMap.add i In mm else IntMap.add i Out mm + | VarE (b, []) when b.it = "bool" -> mm + | ParenE e -> go side e mm + | TupE es | SeqE es -> List.fold_left (fun acc e -> go side e acc) mm es + | _ -> mm + in + fun exp -> match exp.it with + | InfixE (lhs, atom, rhs) when atom.it = Xl.Atom.Arrow -> + let lm = go L lhs IntMap.empty in + let rm = go R rhs lm in + rm + | _ -> err exp.at ("Ill-formed mode hint: " ^ El.Print.string_of_exp exp) + +let build_il_hints err (il : script) : t = + let hints = List.filter_map (fun d -> match d.it with + | HintD hintdef -> Some hintdef + | _ -> None + ) il in + List.fold_left (fun hintenv hdef -> + match hdef.it with + | RelH (rid, hints) -> + List.fold_left (fun hintenv' hint -> + match hint.hintid.it with + | "mode" -> + { modes = StringMap.add rid.it (parse_mode err hint.hintexp) hintenv'.modes } + | _ -> hintenv' + ) hintenv hints + | _ -> hintenv + ) empty hints \ No newline at end of file From e3185b99779896cfde995942834f2ea49dc93611 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Sun, 31 May 2026 14:27:59 +0100 Subject: [PATCH 091/115] Implement wfopt hint that enables minimal optimization for relations. (Utilizing mode hint) --- spectec/src/middlend/undep.ml | 123 ++++++++++++++++++++++++---------- 1 file changed, 87 insertions(+), 36 deletions(-) diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index bb0f4f6208..865e9a366d 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -9,16 +9,22 @@ module StringSet = Set.Make(String) type env = { mutable wf_set : StringSet.t; + mutable il_env : Il.Env.t; + + (* Hint sets *) mutable proj_set : StringSet.t; mutable tf_set : StringSet.t; - mutable il_env : Il.Env.t; + mutable wfopt_set : StringSet.t; + mutable il_hintenv : Hints.t } let empty () = { wf_set = StringSet.empty; + il_env = Il.Env.empty; proj_set = StringSet.empty; tf_set = StringSet.empty; - il_env = Il.Env.empty; + wfopt_set = StringSet.empty; + il_hintenv = Hints.empty } let wf_pred_prefix = "wf_" @@ -28,12 +34,18 @@ let wf_lemma_suffix = "_is_wf" let wf_hint_id = "wf-relation" let wf_func_id = "wf-lemma-func" +let wf_rel_id = "wf-lemma-rel" +let wf_opt_id = "wfopt" type wfstate = | WfAll (* Places wf premises whenever it encounters a term/variable that needs well-formedness check*) | WfMinimal (* Places only wf premises in terms in relations and functions that do not appear in the conclusion *) | WfNone (* Does not place any wf premises in relations/functions *) +type wfdef = + | Rel of id + | Func + (* State that indicates what the placement algorithm should do *) let wf_state : wfstate ref = ref WfMinimal @@ -85,6 +97,13 @@ let check_iter free_set iter = | ListN (_, Some id) -> Free.Set.mem id.it free_set | _ -> false +let has_wf_opt env rid = StringSet.mem rid.it env.wfopt_set + +let can_optimize wfdef env = + match wfdef with + | Func -> true (* Functions can always be optimized because mode is always known *) + | Rel id -> has_wf_opt env id (* Relations need wf opt hint *) + let filter_iter_quants exp iter_quants = let free_vars = (Free.free_exp exp).varid in (List.fold_left (fun (free_set, acc) (iter, id_exp_pairs) -> @@ -229,7 +248,7 @@ let get_exp_typ q = let generate_well_formed_rel_hint id at: hint = { hintid = wf_hint_id $ at; hintexp = El.Ast.VarE (id, []) $ at} let generate_well_formed_func_hint at: hint = { hintid = wf_func_id $ at; hintexp = El.Ast.SeqE [] $ at} - +let generate_well_formed_rel_lemma_hint at: hint = { hintid = wf_rel_id $ at; hintexp = El.Ast.SeqE [] $ at} let create_well_formed_predicate env id inst = let tf = { base_transformer with transform_exp = t_exp env; transform_typ = t_typ} in @@ -307,12 +326,12 @@ let create_well_formed_predicate env id inst = [relation; hint] | _ -> [] -let get_wf_terms cl exp prems = +let get_wf_terms wfdef env cl exp prems = let is_calle e = match e.it with | CallE _ -> true | _ -> false in - let wf_terms = (if !wf_state = WfMinimal then [] else collect_exp cl exp) @ List.concat_map (collect_prem cl) prems in + let wf_terms = (if !wf_state = WfMinimal && can_optimize wfdef env then [] else collect_exp cl exp) @ List.concat_map (collect_prem cl) prems in let (call_prems, constr_prems) = List.partition (fun ((e1, _), _) -> is_calle e1) wf_terms in let unique_func = Util.Lib.List.nub (fun ((e1, _t1), iterexp1) ((e2, _t2), iterexp2) -> Il.Eq.eq_exp e1 e2 && Il.Eq.eq_list Il.Eq.eq_iterexp iterexp1 iterexp2 @@ -321,9 +340,9 @@ let get_wf_terms cl exp prems = | WfNone -> ([], []) | _ -> (unique_func call_prems, unique_func constr_prems) -let get_extra_prems env quants exp prems = +let get_extra_prems wfdef env quants exp prems = let cl = create_collector env [] in - let unique_call_terms, unique_constr_terms = get_wf_terms cl exp prems in + let unique_call_terms, unique_constr_terms = get_wf_terms wfdef env cl exp prems in let wf_creation_func = List.concat_map (fun (pair, iterexps) -> List.map (fun prem' -> List.fold_left (fun acc iterexp -> IterPr (acc, iterexp) $ acc.at @@ -336,18 +355,20 @@ let get_extra_prems env quants exp prems = let free_vars = (Free.free_list Free.free_prem constr_prems).varid in let quants_filtered = Lib.List.filter_not (fun b -> match b.it, !wf_state with + | ExpP (id, _), WfMinimal when can_optimize wfdef env -> + Free.Set.mem id.it free_vars || Free.Set.mem id.it free_vars_exp + | ExpP (id, _), WfMinimal | ExpP (id, _), WfAll -> Free.Set.mem id.it free_vars - | ExpP (id, _), WfMinimal -> Free.Set.mem id.it free_vars || Free.Set.mem id.it free_vars_exp | _ -> true ) quants in let quant_prems = (List.filter_map get_exp_typ quants_filtered) |> List.concat_map (get_wf_pred env) in quant_prems @ call_prems @ constr_prems -let t_rule env rule = +let t_rule rid env rule = let tf = { base_transformer with transform_exp = t_exp env; transform_typ = t_typ} in (match rule.it with | RuleD (id, quants, m, exp, prems) -> - let extra_prems = get_extra_prems env quants exp prems in + let extra_prems = get_extra_prems (Rel rid) env quants exp prems in RuleD (id, List.map (transform_param tf) quants, m, @@ -363,7 +384,7 @@ let t_clause env clause = let free_args = Free.free_list Free.free_arg args in (* Only focus on generating wf preds for variables not in the arguments *) let filtered_quants = Lib.List.filter_not (is_part_of_quant free_args) quants in - let extra_prems = get_extra_prems env filtered_quants exp prems in + let extra_prems = get_extra_prems Func env filtered_quants exp prems in DefD (List.map (transform_param tf) quants, List.map (transform_arg tf) args, transform_exp tf exp, @@ -403,7 +424,7 @@ let rec return_type_needs_wfness env (rt : typ) : bool = | _ -> false (* HACK: Lemma is actually represented as a relation *) -let generate_wf_lemma env tf id params rtyp = +let generate_wf_lemma_func env tf id params rtyp = let lemma_name = id.it ^ wf_lemma_suffix in let params' = Utils.improve_ids_params params in let wf_prems = List.concat_map (fun p -> match p.it with @@ -435,7 +456,7 @@ let generate_wf_lemma env tf id params rtyp = let tupe = TupE (not_fixed @ [ret_exp]) $$ id.at % tupt in let new_mixop = Xl.Mixop.(Seq (List.init (List.length not_fixed + 1) (fun _ -> Arg ()))) in let rule = RuleD ( - lemma_name ^ "0" $ id.at, + lemma_name ^ "_0" $ id.at, new_quants, new_mixop, tupe, @@ -449,6 +470,42 @@ let generate_wf_lemma env tf id params rtyp = [transform_rule tf rule]) $ id.at in [hint; relation] +let generate_wf_lemma_rel env mop tf id params typ modemap = + let typs = match typ.it with + | TupT typs' -> List.mapi (fun i (tid, t) -> + let new_id = "var_" ^ Int.to_string i in + if tid.it = "_" then (new_id $ tid.at, t) else (tid, t)) typs' + | _ -> ["var_0" $ no_region, typ] + in + let lemma_name = id.it ^ wf_lemma_suffix in + assert (List.length typs = Hints.IntMap.cardinal modemap); + let elements = Hints.IntMap.bindings modemap in + let quants, typs' = Utils.improve_ids_quants [] true id.at typs in + let exps = List.map (fun (id', t) -> VarE id' $$ id'.at % t) typs' in + let ins, outs = + List.map2 (fun (id', t) (_, mode) -> + ((VarE id' $$ id'.at % t, t), mode) + ) typs' elements |> + List.partition_map (fun (t, mode) -> match mode with + | Hints.In -> Left t + | Hints.Out -> Right t + ) in + let tupt = TupT (typs') $ id.at in + let tupe = TupE exps $$ id.at % tupt in + let wf_inputs = List.concat_map (get_wf_pred env) ins in + let rel_pr = RulePr (id, List.map make_arg params, mop, tupe) $ id.at in + let wf_outputs = List.concat_map (get_wf_pred env) outs in + let new_mixop = Xl.Mixop.(Seq (List.init (List.length quants) (fun _ -> Arg ()))) in + if outs = [] || wf_outputs = [] then [] else (* No need to generate lemma for bool outputs *) + let rule = RuleD (lemma_name ^ "_0" $ id.at, params @ quants, new_mixop, tupe, wf_inputs @ [rel_pr] @ wf_outputs) $ id.at in + let hint = HintD (RelH (lemma_name $ id.at, [generate_well_formed_rel_lemma_hint id.at]) $ id.at) $ id.at in + let relation = + RelD (lemma_name $ id.at, + params, + new_mixop, + tupt, + [rule]) $ id.at in + [hint; transform_def tf relation] let rec t_def env def = let tf = { base_transformer with transform_exp = t_exp env; transform_typ = t_typ } in @@ -461,7 +518,12 @@ let rec t_def env def = | TypD (_, _, _) -> error def.at "Multiples instances encountered, please run type family removal pass first." | RelD (id, params, m, typ, rules) -> - (RelD (id, List.map (transform_param tf) params |> List.filter is_type_param, m, transform_typ tf typ, List.map (t_rule env) rules) $ def.at, []) + let wf_lemma = + match (Hints.find_opt id.it env.il_hintenv.modes) with + | Some modemap -> generate_wf_lemma_rel env m tf id params typ modemap + | _ -> [] + in + (RelD (id, List.map (transform_param tf) params |> List.filter is_type_param, m, transform_typ tf typ, List.map (t_rule id env) rules) $ def.at, wf_lemma) | DecD (id, params, typ, clauses) -> let d = DecD (id, List.map (transform_param tf) params, @@ -472,7 +534,7 @@ let rec t_def env def = let is_proj_func = StringSet.mem id.it env.proj_set in let t_d = if StringSet.mem id.it env.proj_set then remove_unused_params d else d in let wf_lemma = if !wf_state = WfMinimal && return_type_needs_wfness env typ && not is_proj_func - then generate_wf_lemma env tf id params typ + then generate_wf_lemma_func env tf id params typ else [] in (t_d, wf_lemma) @@ -488,34 +550,23 @@ let rec t_def env def = | HintD hintdef -> (HintD hintdef $ def.at, []) let has_proj_hint (hint : hint) = hint.hintid.it = Typefamilyremoval.projection_hint_id let has_tf_hint (hint : hint) = hint.hintid.it = Typefamilyremoval.type_family_hint_id +let has_wfopt_hint (hint : hint) = hint.hintid.it = wf_opt_id -let create_proj_map_def set (d : def) = - match d.it with - | HintD {it = DecH (id, hints); _} -> - (match (List.find_opt has_proj_hint hints) with - | Some _ -> set := StringSet.add id.it !set - | _ -> () - ) - | _ -> () - -let create_tf_set_def set (d : def) = +let create_hints env (d : def) = match d.it with - | HintD {it = TypH (id, hints); _} -> - (match (List.find_opt has_tf_hint hints) with - | Some _ -> set := StringSet.add id.it !set - | _ -> () - ) + | HintD {it = DecH (id, hints); _} when List.exists has_proj_hint hints -> + env.proj_set <- StringSet.add id.it env.proj_set + | HintD {it = TypH (id, hints); _} when List.exists has_tf_hint hints -> + env.tf_set <- StringSet.add id.it env.tf_set + | HintD {it = RelH (id, hints); _} when List.exists has_wfopt_hint hints -> + env.wfopt_set <- StringSet.add id.it env.wfopt_set | _ -> () let transform (il : script): script = let env = empty () in env.il_env <- Il.Env.env_of_script il; - let proj_set = ref StringSet.empty in - let tf_set = ref StringSet.empty in - List.iter (create_proj_map_def proj_set) il; - List.iter (create_tf_set_def tf_set) il; - env.proj_set <- !proj_set; - env.tf_set <- !tf_set; + List.iter (create_hints env) il; + env.il_hintenv <- Hints.build_il_hints error il; List.concat_map (fun d -> let (t_d, wf_relations) = t_def env d in t_d :: wf_relations From d0d98dd784355c9e1d53392efbf88b6d94424849 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Sun, 31 May 2026 15:27:35 +0100 Subject: [PATCH 092/115] Allow functions with only let to stay as functions, and added a hint to force rec functions to stay as functions. --- .../wasm-3.0/1.2-syntax.types.spectec | 2 +- spectec/src/middlend/deftorel.ml | 35 ++++++++++++++++--- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/specification/wasm-3.0/1.2-syntax.types.spectec b/specification/wasm-3.0/1.2-syntax.types.spectec index b30faaf4c0..a7855e18d0 100644 --- a/specification/wasm-3.0/1.2-syntax.types.spectec +++ b/specification/wasm-3.0/1.2-syntax.types.spectec @@ -398,7 +398,7 @@ def $subst_comptype((FUNC t_1* -> t_2*), tv*, tu*) = FUNC $subst_valtype(t_1, tv def $subst_subtype((SUB final? tu'* ct), tv*, tu*) = SUB final? $subst_typeuse(tu', tv*, tu*)* $subst_comptype(ct, tv*, tu*) -def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) hint(partial) +def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) hint(partial) hint(recfunc) def $minus_recs(eps, eps) = (eps, eps) def $minus_recs((REC n) tv*, tu_1 tu*) = $minus_recs(tv*, tu*) def $minus_recs((_IDX x) tv*, tu_1 tu*) = ((_IDX x) tv'*, tu_1 tu'*) diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index 77f9662b64..2ed3a7fb81 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -16,17 +16,23 @@ end) type env = { mutable il_env : Il.Env.t; mutable rel_set : StringSet.t; - mutable def_arg_set : StringSet.t + mutable def_arg_set : StringSet.t; + mutable rec_funcs : StringSet.t } let empty_env = { il_env = Il.Env.empty; rel_set = StringSet.empty; - def_arg_set = StringSet.empty + def_arg_set = StringSet.empty; + rec_funcs = StringSet.empty } let fun_prefix = "fun_" +let force_func_hint_id = "recfunc" + +let has_rec_hint hint = hint.hintid.it = force_func_hint_id + let apply_iter_to_var id iter = match iter with | Opt -> id ^ Il.Print.string_of_iter Opt @@ -458,9 +464,15 @@ let collect_list_length_vars () : StringSet.t ref * (module Iter.Arg) = in Arg.acc, (module Arg) let must_be_relation env id params clauses = - let only_otherwise prems = + let is_let p = + match p.it with + | LetPr _ -> true + | _ -> false + in + let only_otherwise_or_let prems = match prems with | [{it = ElsePr; _}] -> true + | prems when List.for_all is_let prems -> true | _ -> false in let listn_set, (module Arg : Iter.Arg) = collect_list_length_vars () in @@ -477,9 +489,10 @@ let must_be_relation env id params clauses = Acc.args args; (* Premises might not be decidable *) (* NOTE: if its only otherwise premise, then fall-through semantics should be - able to handle it. + able to handle it. Also with let, if there are only let premises then this is + allowed. *) - (prems <> [] && not (only_otherwise prems)) || + (prems <> [] && not (only_otherwise_or_let prems)) || (* Functions that have function calls transformed to relations must also be relations *) collect_exp rel_def_checker exp || List.exists (collect_prem rel_def_checker) prems || @@ -621,6 +634,10 @@ let rec transform_def (env : env) def = cvt_def_to_rel env id params typ clauses | DecD (id, params, typ, clauses) -> [{ def with it = DecD (id, params, typ, List.map (transform_clause env) clauses) }] + | RecD [{it = DecD (id, params, typ, clauses); at; _}] when + StringSet.mem id.it env.rec_funcs && not (must_be_relation env id params clauses) -> + let def' = DecD (id, params, typ, List.map (transform_clause env) clauses) $ at in + [{ def with it = RecD [def'] }] | RecD defs when List.for_all has_exp_params defs -> let ids_ref = ref StringSet.empty in List.iter (fun d -> match d.it with @@ -651,11 +668,19 @@ let collect_def_args (): StringSet.t ref * (module Iter.Arg) = end in Arg.acc, (module Arg) +let create_rec_func_set env (d : def) = + match d.it with + | HintD {it = DecH (id, hints); _} when List.exists has_rec_hint hints -> + env.rec_funcs <- StringSet.add id.it env.rec_funcs + | _ -> () + + let transform (il : script): script = let env = empty_env in env.il_env <- Il.Env.env_of_script il; let acc, (module Arg : Iter.Arg) = collect_def_args () in let module Acc = Iter.Make(Arg) in List.iter Acc.def il; + List.iter (create_rec_func_set env) il; env.def_arg_set <- !acc; List.concat_map (transform_def env) il \ No newline at end of file From c3f75509160a48812b78aeb6ce294ceaf93d093f Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Sun, 31 May 2026 15:54:27 +0100 Subject: [PATCH 093/115] Undep: allow fcalls wfness to be optimized out if in minimal placement state --- spectec/src/middlend/undep.ml | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index 865e9a366d..acf1bd14bb 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -129,26 +129,27 @@ let filter_iter_quants exp iter_quants = ) (free_vars, []) iter_quants) |> snd |> List.rev -let rec create_collector env iterexps = +let rec create_collector wfdef env iterexps = let base_collector_iters: ((exp * typ) * iterexp list) list collector = base_collector [] (@) in - { base_collector_iters with collect_exp = collect_userdef_exp env iterexps; collect_prem = collect_userdef_prem env iterexps } + { base_collector_iters with collect_exp = collect_userdef_exp wfdef env iterexps; collect_prem = collect_userdef_prem wfdef env iterexps } -and collect_userdef_exp env iterexps e = +and collect_userdef_exp wfdef env iterexps e = match e.it with - | CallE (id, _) when not (StringSet.mem id.it env.proj_set) -> ([((e, e.note), filter_iter_quants e iterexps)], true) + | CallE (id, _) when not (StringSet.mem id.it env.proj_set) && not (can_optimize wfdef env) -> + ([((e, e.note), filter_iter_quants e iterexps)], true) | CaseE _ | StrE _ -> ([((e, e.note), filter_iter_quants e iterexps)], false) | IterE (e1, ((_, id_exp_pairs) as iterexp)) -> - let c1 = create_collector env iterexps in - let c2 = create_collector env (iterexp :: iterexps) in + let c1 = create_collector wfdef env iterexps in + let c2 = create_collector wfdef env (iterexp :: iterexps) in (collect_exp c2 e1 @ List.concat_map (fun (_, exp) -> collect_exp c1 exp) id_exp_pairs, false) | _ -> ([], true) -and collect_userdef_prem env iterexps p = +and collect_userdef_prem wfdef env iterexps p = match p.it with | IterPr (p', ((_, id_exp_pairs) as iterexp)) -> - let c1 = create_collector env iterexps in - let c2 = create_collector env (iterexp :: iterexps) in + let c1 = create_collector wfdef env iterexps in + let c2 = create_collector wfdef env (iterexp :: iterexps) in (collect_prem c2 p' @ List.concat_map (fun (_, exp) -> collect_exp c1 exp) id_exp_pairs, false) | _ -> ([], true) @@ -341,7 +342,7 @@ let get_wf_terms wfdef env cl exp prems = | _ -> (unique_func call_prems, unique_func constr_prems) let get_extra_prems wfdef env quants exp prems = - let cl = create_collector env [] in + let cl = create_collector wfdef env [] in let unique_call_terms, unique_constr_terms = get_wf_terms wfdef env cl exp prems in let wf_creation_func = List.concat_map (fun (pair, iterexps) -> List.map (fun prem' -> List.fold_left (fun acc iterexp -> From 0291a5821abe588525955b22f3ac777c11bd7b20 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Sun, 31 May 2026 15:56:25 +0100 Subject: [PATCH 094/115] fix tests --- .../specification.exp/09-sub-expansion.il | 21870 +++++++++++++ .../specification.exp/10-pattern-simp.il | 22557 ++++++++++++++ .../test-middlend/specification.exp/11-sub.il | 22783 ++++++++++++++ .../12-definition-to-relation.il | 25207 +++++++++++++++ .../specification.exp/13-sideconditions.il | 25827 ++++++++++++++++ .../specification.exp/14-alias-demut.il | 25827 ++++++++++++++++ .../specification.exp/15-improve-ids.il | 25827 ++++++++++++++++ 7 files changed, 169898 insertions(+) create mode 100644 spectec/test-middlend/specification.exp/09-sub-expansion.il create mode 100644 spectec/test-middlend/specification.exp/10-pattern-simp.il create mode 100644 spectec/test-middlend/specification.exp/11-sub.il create mode 100644 spectec/test-middlend/specification.exp/12-definition-to-relation.il create mode 100644 spectec/test-middlend/specification.exp/13-sideconditions.il create mode 100644 spectec/test-middlend/specification.exp/14-alias-demut.il create mode 100644 spectec/test-middlend/specification.exp/15-improve-ids.il diff --git a/spectec/test-middlend/specification.exp/09-sub-expansion.il b/spectec/test-middlend/specification.exp/09-sub-expansion.il new file mode 100644 index 0000000000..a7728d1015 --- /dev/null +++ b/spectec/test-middlend/specification.exp/09-sub-expansion.il @@ -0,0 +1,21870 @@ + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax N = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax M = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax K = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax n = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax m = nat + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +def $min(nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $min{i : nat, j : nat}(i, j) = (if (i <= j) then i else j) + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 +def $sum(nat*) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 + def $sum([]) = 0 + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 + def $sum{n : nat, `n'*` : n*}([n] ++ n'#1*{n'#1 <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) +} + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 +def $prod(nat*) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 + def $prod([]) = 1 + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 + def $prod{n : nat, `n'*` : n*}([n] ++ n'#2*{n'#2 <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $opt_(syntax X, X*) : X?? + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X}(syntax X, []) = ?(?()) + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 +def $concat_(syntax X, X**) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 + def $concat_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 + def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w#1*{w#1 <- `w*`}] ++ w'#1*{w'#1 <- `w'*#1`}*{`w'*#1` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 +def $concatn_(syntax X, X**, nat : nat) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 + def $concatn_{syntax X, n : nat}(syntax X, [], n) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 + def $concatn_{syntax X, n : nat, `w*` : X*, `w'**` : X**}(syntax X, [w#2^n{w#2 <- `w*`}] ++ w'#2^n{w'#2 <- `w'*#2`}*{`w'*#2` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $concatopt_(syntax X, X?*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w#3?{w#3 <- `w?`}] ++ w'#3?{w'#3 <- `w'?#1`}*{`w'?#1` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concat_(syntax X, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concatn_(syntax X, nat : nat, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 +def $disjoint_(syntax X, X*) : bool + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 + def $disjoint_{syntax X}(syntax X, []) = true + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 + def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'#4*{w'#4 <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 +def $setminus1_(syntax X, X : X, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 + def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 + def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'#5*{w'#5 <- `w'*`}) = (if (w = w_1) then [] else $setminus1_(syntax X, w, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 +def $setminus_(syntax X, X*, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 + def $setminus_{syntax X, `w*` : X*}(syntax X, [], w#4*{w#4 <- `w*`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 + def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'#6*{w'#6 <- `w'*`}, w#5*{w#5 <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 +def $setproduct2_(syntax X, X : X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 + def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 + def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'#7*{w'#7 <- `w'*`}] ++ w#6*{w#6 <- `w*#1`}*{`w*#1` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 +def $setproduct1_(syntax X, X*, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 + def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w#7*{w#7 <- `w*#2`}*{`w*#2` <- `w**`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 + def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'#8*{w'#8 <- `w'*`}, w#8*{w#8 <- `w*#3`}*{`w*#3` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 +def $setproduct_(syntax X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 + def $setproduct_{syntax X}(syntax X, []) = [[]] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 + def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1#1*{w_1#1 <- `w_1*`}] ++ w#9*{w#9 <- `w*#4`}*{`w*#4` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) +} + +;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec +def $ND : bool + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax bit = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_bit: `%`(bit) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule bit_case_0{i : nat}: + `%`(`%`_bit(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax byte = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_byte_0(x : byte) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_byte_0{v_num_0 : nat}(`%`_byte(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_byte: `%`(byte) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule byte_case_0{i : nat}: + `%`(`%`_byte(i)) + -- if ((i >= 0) /\ (i <= 255)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax uN = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_uN_0(x : uN) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_uN_0{v_num_0 : nat}(`%`_uN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_uN: `%%`(N, uN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule uN_case_0{N : N, i : nat}: + `%%`(N, `%`_uN(i)) + -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax sN = + | `%`(i : int) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_sN_0(x : sN) : (int) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_sN_0{v_num_0 : int}(`%`_sN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_sN: `%%`(N, sN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule sN_case_0{N : N, i : int}: + `%%`(N, `%`_sN(i)) + -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax iN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u8 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u16 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u31 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u32 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u64 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax s33 = sN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i32 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i64 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i128 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $signif(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(32) = ?(23) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $expon(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(32) = ?(8) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $M(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $M{N : nat}(N) = !($signif(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $E(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $E{N : nat}(N) = !($expon(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax exp = int + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fNmag = + | NORM(m : m, exp : exp) + | SUBNORM(m : m) + | INF + | NAN(m : m) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fNmag: `%%`(N, fNmag) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_0{N : N, m : m, exp : exp}: + `%%`(N, NORM_fNmag(m, exp)) + -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_1{N : N, exp : exp, m : m}: + `%%`(N, SUBNORM_fNmag(m)) + -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_2{N : N}: + `%%`(N, INF_fNmag) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_3{N : N, m : m}: + `%%`(N, NAN_fNmag(m)) + -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fN = + | POS(fNmag) + | NEG(fNmag) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fN: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_0{N : N, var_0 : fNmag}: + `%%`(N, POS_fN(var_0)) + -- wf_fNmag: `%%`(N, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_1{N : N, var_0 : fNmag}: + `%%`(N, NEG_fN(var_0)) + -- wf_fNmag: `%%`(N, var_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f32 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f64 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fzero(N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fzero_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fzero_is_wf_0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fzero(N)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fnat(N : N, nat : nat) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fnat_is_wf: `%%%`(N : N, nat : nat, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fnat_is_wf_0{N : N, nat : nat, ret_val : fN}: + `%%%`(N, nat, ret_val) + -- if (ret_val = $fnat(N, nat)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fone(N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fone_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fone_is_wf_0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fone(N)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $canon_(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax vN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax v128 = vN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax list{syntax X}(syntax X) = + | `%`(`X*` : X*) + -- if (|X*{X <- `X*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_list_0(syntax X, x : list(syntax X)) : (X*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_list_0{syntax X, v_X_list_0 : X*}(syntax X, `%`_list(v_X_list_0)) = (v_X_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax char = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_char_0(x : char) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_char_0{v_num_0 : nat}(`%`_char(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_char: `%`(char) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule char_case_0{i : nat}: + `%`(`%`_char(i)) + -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +def $cont(byte : byte) : nat + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + def $cont{b : byte}(b) = ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) + -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 +def $utf8(char*) : byte* + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 + def $utf8{`ch*` : char*}(ch#1*{ch#1 <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 + def $utf8{ch : char}([ch]) = [b] + -- if ($proj_char_0(ch).0 < 128) + -- let{b : byte} b = `%`_byte($proj_char_0(ch).0) + -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 + def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) + -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 + def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) + -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 + def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) + -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation utf8_is_wf: `%%`(var_0 : char*, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule utf8_is_wf_0{var_0 : char*, ret_val : byte*}: + `%%`(var_0, ret_val) + -- (wf_char: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $utf8(var_0)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax name = + | `%`(`char*` : char*) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_name_0(x : name) : (char*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_name_0{v_char_list_0 : char*}(`%`_name(v_char_list_0)) = (v_char_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_name: `%`(name) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule name_case_0{`char*` : char*}: + `%`(`%`_name(`char*`)) + -- (wf_char: `%`(char))*{char <- `char*`} + -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax idx = u32 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax laneidx = u8 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax typeidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax funcidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax globalidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tableidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax memidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tagidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax elemidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax dataidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax labelidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax localidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fieldidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax externidx = + | FUNC(funcidx : funcidx) + | GLOBAL(globalidx : globalidx) + | TABLE(tableidx : tableidx) + | MEM(memidx : memidx) + | TAG(tagidx : tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_externidx: `%`(externidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_0{funcidx : funcidx}: + `%`(FUNC_externidx(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_1{globalidx : globalidx}: + `%`(GLOBAL_externidx(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_2{tableidx : tableidx}: + `%`(TABLE_externidx(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_3{memidx : memidx}: + `%`(MEM_externidx(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_4{tagidx : tagidx}: + `%`(TAG_externidx(tagidx)) + -- wf_uN: `%%`(32, tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 +def $funcsxx(externidx*) : typeidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 + def $funcsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 + def $funcsxx{x : uN, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx#1*{xx#1 <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 + def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#2*{xx#2 <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 +def $globalsxx(externidx*) : globalidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 + def $globalsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 + def $globalsxx{x : uN, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx#3*{xx#3 <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 + def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#4*{xx#4 <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 +def $tablesxx(externidx*) : tableidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 + def $tablesxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 + def $tablesxx{x : uN, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx#5*{xx#5 <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 + def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#6*{xx#6 <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 +def $memsxx(externidx*) : memidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 + def $memsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 + def $memsxx{x : uN, `xx*` : externidx*}([MEM_externidx(x)] ++ xx#7*{xx#7 <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 + def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#8*{xx#8 <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 +def $tagsxx(externidx*) : tagidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 + def $tagsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 + def $tagsxx{x : uN, `xx*` : externidx*}([TAG_externidx(x)] ++ xx#9*{xx#9 <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 + def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#10*{xx#10 <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax free = +{ + TYPES typeidx*, + FUNCS funcidx*, + GLOBALS globalidx*, + TABLES tableidx*, + MEMS memidx*, + ELEMS elemidx*, + DATAS dataidx*, + LOCALS localidx*, + LABELS labelidx*, + TAGS tagidx* +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_free: `%`(free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_case_{var_0 : typeidx*, var_1 : funcidx*, var_2 : globalidx*, var_3 : tableidx*, var_4 : memidx*, var_5 : elemidx*, var_6 : dataidx*, var_7 : localidx*, var_8 : labelidx*, var_9 : tagidx*}: + `%`({TYPES var_0, FUNCS var_1, GLOBALS var_2, TABLES var_3, MEMS var_4, ELEMS var_5, DATAS var_6, LOCALS var_7, LABELS var_8, TAGS var_9}) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_uN: `%%`(32, var_1))*{var_1 <- var_1} + -- (wf_uN: `%%`(32, var_2))*{var_2 <- var_2} + -- (wf_uN: `%%`(32, var_3))*{var_3 <- var_3} + -- (wf_uN: `%%`(32, var_4))*{var_4 <- var_4} + -- (wf_uN: `%%`(32, var_5))*{var_5 <- var_5} + -- (wf_uN: `%%`(32, var_6))*{var_6 <- var_6} + -- (wf_uN: `%%`(32, var_7))*{var_7 <- var_7} + -- (wf_uN: `%%`(32, var_8))*{var_8 <- var_8} + -- (wf_uN: `%%`(32, var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_opt(free?) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt{free : free}(?(free)) = free + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_opt_is_wf: `%%`(var_0 : free?, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_opt_is_wf_0{var_0 : free?, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))?{var_0 <- var_0} + -- if (ret_val = $free_opt(var_0)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.1-173.29 +def $free_list(free*) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 + def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 + def $free_list{free : free, `free'*` : free*}([free] ++ free'#1*{free'#1 <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation free_list_is_wf: `%%`(var_0 : free*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule free_list_is_wf_0{var_0 : free*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_list(var_0)) + -- wf_free: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_typeidx(typeidx : typeidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_typeidx_is_wf: `%%`(typeidx : typeidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_typeidx_is_wf_0{typeidx : typeidx, ret_val : free}: + `%%`(typeidx, ret_val) + -- wf_uN: `%%`(32, typeidx) + -- if (ret_val = $free_typeidx(typeidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_funcidx(funcidx : funcidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_funcidx_is_wf: `%%`(funcidx : funcidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_funcidx_is_wf_0{funcidx : funcidx, ret_val : free}: + `%%`(funcidx, ret_val) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $free_funcidx(funcidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_globalidx(globalidx : globalidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_globalidx_is_wf: `%%`(globalidx : globalidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_globalidx_is_wf_0{globalidx : globalidx, ret_val : free}: + `%%`(globalidx, ret_val) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $free_globalidx(globalidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tableidx(tableidx : tableidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tableidx_is_wf: `%%`(tableidx : tableidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tableidx_is_wf_0{tableidx : tableidx, ret_val : free}: + `%%`(tableidx, ret_val) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $free_tableidx(tableidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_memidx(memidx : memidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_memidx_is_wf: `%%`(memidx : memidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_memidx_is_wf_0{memidx : memidx, ret_val : free}: + `%%`(memidx, ret_val) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $free_memidx(memidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_elemidx(elemidx : elemidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_elemidx_is_wf: `%%`(elemidx : elemidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_elemidx_is_wf_0{elemidx : elemidx, ret_val : free}: + `%%`(elemidx, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- if (ret_val = $free_elemidx(elemidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_dataidx(dataidx : dataidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_dataidx_is_wf: `%%`(dataidx : dataidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_dataidx_is_wf_0{dataidx : dataidx, ret_val : free}: + `%%`(dataidx, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $free_dataidx(dataidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_localidx(localidx : localidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_localidx_is_wf: `%%`(localidx : localidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_localidx_is_wf_0{localidx : localidx, ret_val : free}: + `%%`(localidx, ret_val) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $free_localidx(localidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_labelidx(labelidx : labelidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_labelidx_is_wf: `%%`(labelidx : labelidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_labelidx_is_wf_0{labelidx : labelidx, ret_val : free}: + `%%`(labelidx, ret_val) + -- wf_uN: `%%`(32, labelidx) + -- if (ret_val = $free_labelidx(labelidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tagidx(tagidx : tagidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tagidx{tagidx : uN}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tagidx_is_wf: `%%`(tagidx : tagidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tagidx_is_wf_0{tagidx : tagidx, ret_val : free}: + `%%`(tagidx, ret_val) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $free_tagidx(tagidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_externidx(externidx : externidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{funcidx : uN}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{globalidx : uN}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_externidx_is_wf: `%%`(externidx : externidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_externidx_is_wf_0{externidx : externidx, ret_val : free}: + `%%`(externidx, ret_val) + -- wf_externidx: `%`(externidx) + -- if (ret_val = $free_externidx(externidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax null = + | NULL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax addrtype = + | I32 + | I64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax numtype = + | I32 + | I64 + | F32 + | F64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax vectype = + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax consttype = + | I32 + | I64 + | F32 + | F64 + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax absheaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax mut = + | MUT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax final = + | FINAL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 +syntax typeuse = + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 +syntax heaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 +syntax valtype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(`null?` : null?, heaptype : heaptype) + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 +syntax storagetype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(`null?` : null?, heaptype : heaptype) + | BOT + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 +syntax resulttype = list(syntax valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 +syntax fieldtype = + | `%%`(`mut?` : mut?, storagetype : storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 +syntax comptype = + | STRUCT(list(syntax fieldtype)) + | ARRAY(fieldtype : fieldtype) + | `FUNC%->%`(resulttype : resulttype, resulttype : resulttype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 +syntax subtype = + | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 +syntax rectype = + | REC(list(syntax subtype)) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 +relation wf_typeuse: `%`(typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_0{typeidx : typeidx}: + `%`(_IDX_typeuse(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_1{rectype : rectype, n : n}: + `%`(_DEF_typeuse(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_2{n : n}: + `%`(REC_typeuse(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 +relation wf_heaptype: `%`(heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_0: + `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_1: + `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_2: + `%`(I31_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_3: + `%`(STRUCT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_4: + `%`(ARRAY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_5: + `%`(NONE_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_6: + `%`(FUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_7: + `%`(NOFUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_8: + `%`(EXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_9: + `%`(NOEXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_10: + `%`(EXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_11: + `%`(NOEXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_12: + `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_13{typeidx : typeidx}: + `%`(_IDX_heaptype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_14{rectype : rectype, n : n}: + `%`(_DEF_heaptype(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_15{n : n}: + `%`(REC_heaptype(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 +relation wf_valtype: `%`(valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_0: + `%`(I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_1: + `%`(I64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_2: + `%`(F32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_3: + `%`(F64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_4: + `%`(V128_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_valtype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_6: + `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 +relation wf_storagetype: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_0: + `%`(I32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_4: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_storagetype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_6: + `%`(BOT_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_7: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_8: + `%`(I16_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 +relation wf_fieldtype: `%`(fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 + rule fieldtype_case_0{`mut?` : mut?, storagetype : storagetype}: + `%`(`%%`_fieldtype(`mut?`, storagetype)) + -- wf_storagetype: `%`(storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 +relation wf_comptype: `%`(comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_0{var_0 : list(syntax fieldtype)}: + `%`(STRUCT_comptype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_1{fieldtype : fieldtype}: + `%`(ARRAY_comptype(fieldtype)) + -- wf_fieldtype: `%`(fieldtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_2{resulttype : resulttype, resulttype_0 : resulttype}: + `%`(`FUNC%->%`_comptype(resulttype, resulttype_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 +relation wf_subtype: `%`(subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 + rule subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}: + `%`(SUB_subtype(`final?`, `typeuse*`, comptype)) + -- (wf_typeuse: `%`(typeuse))*{typeuse <- `typeuse*`} + -- wf_comptype: `%`(comptype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax deftype = + | _DEF(rectype : rectype, n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax typevar = + | _IDX(typeidx : typeidx) + | REC(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_typevar: `%`(typevar) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_0{typeidx : typeidx}: + `%`(_IDX_typevar(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_1{n : n}: + `%`(REC_typevar(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax reftype = + | REF(`null?` : null?, heaptype : heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_reftype: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule reftype_case_0{`null?` : null?, heaptype : heaptype}: + `%`(REF_reftype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Inn = addrtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Fnn = + | F32 + | F64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Vnn = vectype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Cnn = + | I32 + | I64 + | F32 + | F64 + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ANYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ANYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ANYREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ANYREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EQREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EQREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EQREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EQREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $I31REF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation I31REF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule I31REF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $I31REF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $STRUCTREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation STRUCTREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule STRUCTREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $STRUCTREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ARRAYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ARRAYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ARRAYREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ARRAYREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation FUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule FUNCREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $FUNCREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXTERNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXTERNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLFUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLFUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLFUNCREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLFUNCREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXTERNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXTERNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax packtype = + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax lanetype = + | I32 + | I64 + | F32 + | F64 + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Pnn = packtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Jnn = + | I32 + | I64 + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Lnn = lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax limits = + | `[%..%]`(u64 : u64, `u64?` : u64?) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_limits: `%`(limits) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule limits_case_0{u64 : u64, `u64?` : u64?}: + `%`(`[%..%]`_limits(u64, `u64?`)) + -- wf_uN: `%%`(64, u64) + -- (wf_uN: `%%`(64, u64))?{u64 <- `u64?`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tagtype = typeuse + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax globaltype = + | `%%`(`mut?` : mut?, valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_globaltype: `%`(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule globaltype_case_0{`mut?` : mut?, valtype : valtype}: + `%`(`%%`_globaltype(`mut?`, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax memtype = + | `%%PAGE`(addrtype : addrtype, limits : limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_memtype: `%`(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule memtype_case_0{addrtype : addrtype, limits : limits}: + `%`(`%%PAGE`_memtype(addrtype, limits)) + -- wf_limits: `%`(limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tabletype = + | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_tabletype: `%`(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype}: + `%`(`%%%`_tabletype(addrtype, limits, reftype)) + -- wf_limits: `%`(limits) + -- wf_reftype: `%`(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax datatype = + | OK + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax elemtype = reftype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax externtype = + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype) + | MEM(memtype : memtype) + | TABLE(tabletype : tabletype) + | FUNC(typeuse : typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_externtype: `%`(externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_0{tagtype : tagtype}: + `%`(TAG_externtype(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_1{globaltype : globaltype}: + `%`(GLOBAL_externtype(globaltype)) + -- wf_globaltype: `%`(globaltype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_2{memtype : memtype}: + `%`(MEM_externtype(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_3{tabletype : tabletype}: + `%`(TABLE_externtype(tabletype)) + -- wf_tabletype: `%`(tabletype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_4{typeuse : typeuse}: + `%`(FUNC_externtype(typeuse)) + -- wf_typeuse: `%`(typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax moduletype = + | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_moduletype: `%`(moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule moduletype_case_0{`externtype*` : externtype*, `externtype*_0` : externtype*}: + `%`(`%->%`_moduletype(`externtype*`, `externtype*_0`)) + -- (wf_externtype: `%`(externtype))*{externtype <- `externtype*`} + -- (wf_externtype: `%`(`externtype*_0`))*{`externtype*_0` <- `externtype*_0`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $IN(N : N) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FN(N : N) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $JN(N : N) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $size(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I64_numtype) = 64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F64_numtype) = 64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsize(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsize(V128_vectype) = 128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psize(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I8_packtype) = 8 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I16_packtype) = 16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsize(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I32_lanetype) = $size(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I64_lanetype) = $size(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F32_lanetype) = $size(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F64_lanetype) = $size(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I8_lanetype) = $psize(I8_packtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I16_lanetype) = $psize(I16_packtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $zsize(storagetype : storagetype) : nat? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I32_storagetype) = ?($size(I32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I64_storagetype) = ?($size(I64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F32_storagetype) = ?($size(F32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F64_storagetype) = ?($size(F64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I8_storagetype) = ?($psize(I8_packtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I16_storagetype) = ?($psize(I16_packtype)) + def $zsize{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $isize(Inn : Inn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $isize{Inn : addrtype}(Inn) = $size((Inn : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsize(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsize{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $fsize(Fnn : Fnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $fsize{Fnn : Fnn}(Fnn) = $size((Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_isize(nat : nat) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(64) = ?(I64_Inn) + def $inv_isize{x0 : nat}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsize(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize{n : nat}(n) = (iter_val#1 : addrtype <: Jnn)?{iter_val#1 <- $inv_isize(n)} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_fsize(nat : nat) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(64) = ?(F64_Fnn) + def $inv_fsize{x0 : nat}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn1(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn1{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn2(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn2{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsizenn(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsizenn{vt : vectype}(vt) = $vsize(vt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psizenn(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psizenn{pt : packtype}(pt) = $psize(pt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn1(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn2(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsizenn(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsizenn{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsizenn(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn{n : nat}(n) = $inv_jsize(n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lunpack(lanetype : lanetype) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I32_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I64_lanetype) = I64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F32_lanetype) = F32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F64_lanetype) = F64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I8_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I16_lanetype) = I32_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $unpack(storagetype : storagetype) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(BOT_storagetype) = BOT_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack{`null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype)) = REF_valtype(`null?`, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(V128_storagetype) = V128_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(F64_storagetype) = F64_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(F32_storagetype) = F32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I64_storagetype) = I64_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I32_storagetype) = I32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I8_storagetype) = I32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I16_storagetype) = I32_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation unpack_is_wf: `%%`(storagetype : storagetype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule unpack_is_wf_0{storagetype : storagetype, ret_val : valtype}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $unpack(storagetype)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $nunpack(storagetype : storagetype) : numtype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I32_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I64_storagetype) = ?(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F32_storagetype) = ?(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F64_storagetype) = ?(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I8_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I16_storagetype) = ?(I32_numtype) + def $nunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vunpack(storagetype : storagetype) : vectype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vunpack(V128_storagetype) = ?(V128_vectype) + def $vunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $cunpack(storagetype : storagetype) : consttype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?(I64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?(F32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?(F64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(V128_storagetype) = ?(V128_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?(($lunpack(I32_lanetype) : numtype <: consttype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?(($lunpack(I64_lanetype) : numtype <: consttype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?(($lunpack(F32_lanetype) : numtype <: consttype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?(($lunpack(F64_lanetype) : numtype <: consttype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?(($lunpack(I8_lanetype) : numtype <: consttype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?(($lunpack(I16_lanetype) : numtype <: consttype)) + def $cunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size((at_1 : addrtype <: numtype)) <= $size((at_2 : addrtype <: numtype))) then at_1 else at_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $diffrt(reftype : reftype, reftype : reftype) : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#1?{null_1#1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#2?{null_1#2 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation diffrt_is_wf: `%%%`(reftype : reftype, reftype_0 : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule diffrt_is_wf_0{reftype : reftype, reftype_0 : reftype, ret_val : reftype}: + `%%%`(reftype, reftype_0, ret_val) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + -- if (ret_val = $diffrt(reftype, reftype_0)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $as_deftype(typeuse : typeuse) : deftype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = ?(_DEF_deftype(rectype, n)) + def $as_deftype{x0 : typeuse}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +def $tagsxt(externtype*) : tagtype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + def $tagsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt#1*{xt#1 <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#2*{xt#2 <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +def $globalsxt(externtype*) : globaltype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + def $globalsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt#3*{xt#3 <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#4*{xt#4 <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation globalsxt_is_wf: `%%`(var_0 : externtype*, ret_val : globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule globalsxt_is_wf_0{var_0 : externtype*, ret_val : globaltype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsxt(var_0)) + -- (wf_globaltype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +def $memsxt(externtype*) : memtype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + def $memsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt#5*{xt#5 <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#6*{xt#6 <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation memsxt_is_wf: `%%`(var_0 : externtype*, ret_val : memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule memsxt_is_wf_0{var_0 : externtype*, ret_val : memtype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsxt(var_0)) + -- (wf_memtype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +def $tablesxt(externtype*) : tabletype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + def $tablesxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt#7*{xt#7 <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#8*{xt#8 <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation tablesxt_is_wf: `%%`(var_0 : externtype*, ret_val : tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule tablesxt_is_wf_0{var_0 : externtype*, ret_val : tabletype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesxt(var_0)) + -- (wf_tabletype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +def $funcsxt(externtype*) : deftype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + def $funcsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + def $funcsxt{rectype : rectype, n : n, `xt*` : externtype*}([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt#9*{xt#9 <- `xt*`}) = [_DEF_deftype(rectype, n)] ++ $funcsxt(xt#10*{xt#10 <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 + def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#11*{xt#11 <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.126 +def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 + def $subst_typevar{tv : typevar}(tv, [], []) = ?((tv : typevar <: typeuse)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 + def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'#1*{tv'#1 <- `tv'*`}, [tu_1] ++ tu'#1*{tu'#1 <- `tu'*`}) = (if (tv = tv_1) then tu_1 else iter_val#2)?{iter_val#2 <- $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})} + def $subst_typevar{x0 : typevar, x1 : typevar*, x2 : typeuse*}(x0, x1, x2) = ?() + -- otherwise +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation subst_typevar_is_wf: `%%%%`(typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule subst_typevar_is_wf_0{typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typevar, var_0, var_1, ret_val) + -- wf_typevar: `%`(typevar) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($subst_typevar(typevar, var_0, var_1))) + -- wf_typeuse: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.87 +def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 + def $minus_recs([], []) = ?(([], [])) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 + def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 + def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}) = ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#2*{tv'#2 <- `tv'*`}, tu'#2*{tu'#2 <- `tu'*`}) = !($minus_recs(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`})) + -- (wf_typevar: `%`(iter#1))*{iter#1 <- !($minus_recs(tv#4*{tv#4 <- `tv*`}, tu#4*{tu#4 <- `tu*`})).0} + -- (wf_typeuse: `%`(iter#2))*{iter#2 <- !($minus_recs(tv#5*{tv#5 <- `tv*`}, tu#5*{tu#5 <- `tu*`})).1} + def $minus_recs{x0 : typevar*, x1 : typeuse*}(x0, x1) = ?() + -- otherwise +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation minus_recs_is_wf: `%%%`(var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule minus_recs_is_wf_0{var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)}: + `%%%`(var_0, var_1, ret_val) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($minus_recs(var_0, var_1))) + -- (wf_typevar: `%`(iter))*{iter <- ret_val.0} + -- (wf_typeuse: `%`(iter))*{iter <- ret_val.1} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv#6*{tv#6 <- `tv*`}, tu#6*{tu#6 <- `tu*`}) = pt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv#7*{tv#7 <- `tv*`}, tu#7*{tu#7 <- `tu*`}) = nt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv#8*{tv#8 <- `tv*`}, tu#8*{tu#8 <- `tu*`}) = vt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 +def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + def $subst_typeuse{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_typeuse(n), tv#9*{tv#9 <- `tv*`}, tu#9*{tu#9 <- `tu*`}) = !($subst_typevar(REC_typevar(n), tv#10*{tv#10 <- `tv*`}, tu#10*{tu#10 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + def $subst_typeuse{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_typeuse(typeidx), tv#11*{tv#11 <- `tv*`}, tu#11*{tu#11 <- `tu*`}) = !($subst_typevar(_IDX_typevar(typeidx), tv#12*{tv#12 <- `tv*`}, tu#12*{tu#12 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 + def $subst_typeuse{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_typeuse(rectype, n), tv#13*{tv#13 <- `tv*`}, tu#13*{tu#13 <- `tu*`}) = ($subst_deftype(_DEF_deftype(rectype, n), tv#14*{tv#14 <- `tv*`}, tu#14*{tu#14 <- `tu*`}) : deftype <: typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 +def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + def $subst_heaptype{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_heaptype(n), tv#15*{tv#15 <- `tv*`}, tu#15*{tu#15 <- `tu*`}) = (!($subst_typevar(REC_typevar(n), tv#16*{tv#16 <- `tv*`}, tu#16*{tu#16 <- `tu*`})) : typeuse <: heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + def $subst_heaptype{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_heaptype(typeidx), tv#17*{tv#17 <- `tv*`}, tu#17*{tu#17 <- `tu*`}) = (!($subst_typevar(_IDX_typevar(typeidx), tv#18*{tv#18 <- `tv*`}, tu#18*{tu#18 <- `tu*`})) : typeuse <: heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 + def $subst_heaptype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_heaptype(rectype, n), tv#19*{tv#19 <- `tv*`}, tu#19*{tu#19 <- `tu*`}) = ($subst_deftype(_DEF_deftype(rectype, n), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`}) : deftype <: heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 + def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}) = ht + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 +def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 + def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#22*{tv#22 <- `tv*`}, tu#22*{tu#22 <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 +def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I32_valtype, tv#23*{tv#23 <- `tv*`}, tu#23*{tu#23 <- `tu*`}) = ($subst_numtype(I32_numtype, tv#24*{tv#24 <- `tv*`}, tu#24*{tu#24 <- `tu*`}) : numtype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I64_valtype, tv#25*{tv#25 <- `tv*`}, tu#25*{tu#25 <- `tu*`}) = ($subst_numtype(I64_numtype, tv#26*{tv#26 <- `tv*`}, tu#26*{tu#26 <- `tu*`}) : numtype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F32_valtype, tv#27*{tv#27 <- `tv*`}, tu#27*{tu#27 <- `tu*`}) = ($subst_numtype(F32_numtype, tv#28*{tv#28 <- `tv*`}, tu#28*{tu#28 <- `tu*`}) : numtype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F64_valtype, tv#29*{tv#29 <- `tv*`}, tu#29*{tu#29 <- `tu*`}) = ($subst_numtype(F64_numtype, tv#30*{tv#30 <- `tv*`}, tu#30*{tu#30 <- `tu*`}) : numtype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(V128_valtype, tv#31*{tv#31 <- `tv*`}, tu#31*{tu#31 <- `tu*`}) = ($subst_vectype(V128_vectype, tv#32*{tv#32 <- `tv*`}, tu#32*{tu#32 <- `tu*`}) : vectype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 + def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(`null?`, heaptype), tv#33*{tv#33 <- `tv*`}, tu#33*{tu#33 <- `tu*`}) = ($subst_reftype(REF_reftype(`null?`, heaptype), tv#34*{tv#34 <- `tv*`}, tu#34*{tu#34 <- `tu*`}) : reftype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv#35*{tv#35 <- `tv*`}, tu#35*{tu#35 <- `tu*`}) = BOT_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_storagetype, tv#36*{tv#36 <- `tv*`}, tu#36*{tu#36 <- `tu*`}) = ($subst_valtype(BOT_valtype, tv#37*{tv#37 <- `tv*`}, tu#37*{tu#37 <- `tu*`}) : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_storagetype(`null?`, heaptype), tv#38*{tv#38 <- `tv*`}, tu#38*{tu#38 <- `tu*`}) = ($subst_valtype(REF_valtype(`null?`, heaptype), tv#39*{tv#39 <- `tv*`}, tu#39*{tu#39 <- `tu*`}) : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(V128_storagetype, tv#40*{tv#40 <- `tv*`}, tu#40*{tu#40 <- `tu*`}) = ($subst_valtype(V128_valtype, tv#41*{tv#41 <- `tv*`}, tu#41*{tu#41 <- `tu*`}) : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F64_storagetype, tv#42*{tv#42 <- `tv*`}, tu#42*{tu#42 <- `tu*`}) = ($subst_valtype(F64_valtype, tv#43*{tv#43 <- `tv*`}, tu#43*{tu#43 <- `tu*`}) : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F32_storagetype, tv#44*{tv#44 <- `tv*`}, tu#44*{tu#44 <- `tu*`}) = ($subst_valtype(F32_valtype, tv#45*{tv#45 <- `tv*`}, tu#45*{tu#45 <- `tu*`}) : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I64_storagetype, tv#46*{tv#46 <- `tv*`}, tu#46*{tu#46 <- `tu*`}) = ($subst_valtype(I64_valtype, tv#47*{tv#47 <- `tv*`}, tu#47*{tu#47 <- `tu*`}) : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I32_storagetype, tv#48*{tv#48 <- `tv*`}, tu#48*{tu#48 <- `tu*`}) = ($subst_valtype(I32_valtype, tv#49*{tv#49 <- `tv*`}, tu#49*{tu#49 <- `tu*`}) : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I8_storagetype, tv#50*{tv#50 <- `tv*`}, tu#50*{tu#50 <- `tu*`}) = ($subst_packtype(I8_packtype, tv#51*{tv#51 <- `tv*`}, tu#51*{tu#51 <- `tu*`}) : packtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I16_storagetype, tv#52*{tv#52 <- `tv*`}, tu#52*{tu#52 <- `tu*`}) = ($subst_packtype(I16_packtype, tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`}) : packtype <: storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 + def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 +def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 + def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft#1*{ft#1 <- `ft*`})), tv#55*{tv#55 <- `tv*`}, tu#55*{tu#55 <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 + def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 + def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 + def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#3*{tu'#3 <- `tu'*`}, ct), tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 +def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 + def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*}(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#3*{tv'#3 <- `tv'*`}, tu'#4*{tu'#4 <- `tu'*`}) = !($minus_recs(tv#60*{tv#60 <- `tv*`}, tu#60*{tu#60 <- `tu*`})) + -- (wf_typevar: `%`(iter#3))*{iter#3 <- !($minus_recs(tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`})).0} + -- (wf_typeuse: `%`(iter#4))*{iter#4 <- !($minus_recs(tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`})).1} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 +def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 + def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation subst_typeuse_is_wf: `%%%%`(typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule subst_typeuse_is_wf_0{typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typeuse, var_0, var_1, ret_val) + -- wf_typeuse: `%`(typeuse) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_typeuse(typeuse, var_0, var_1)) + -- wf_typeuse: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation subst_heaptype_is_wf: `%%%%`(heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule subst_heaptype_is_wf_0{heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype}: + `%%%%`(heaptype, var_0, var_1, ret_val) + -- wf_heaptype: `%`(heaptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_heaptype(heaptype, var_0, var_1)) + -- wf_heaptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation subst_reftype_is_wf: `%%%%`(reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule subst_reftype_is_wf_0{reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype}: + `%%%%`(reftype, var_0, var_1, ret_val) + -- wf_reftype: `%`(reftype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_reftype(reftype, var_0, var_1)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation subst_valtype_is_wf: `%%%%`(valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule subst_valtype_is_wf_0{valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype}: + `%%%%`(valtype, var_0, var_1, ret_val) + -- wf_valtype: `%`(valtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_valtype(valtype, var_0, var_1)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation subst_storagetype_is_wf: `%%%%`(storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule subst_storagetype_is_wf_0{storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype}: + `%%%%`(storagetype, var_0, var_1, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_storagetype(storagetype, var_0, var_1)) + -- wf_storagetype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation subst_fieldtype_is_wf: `%%%%`(fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule subst_fieldtype_is_wf_0{fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype}: + `%%%%`(fieldtype, var_0, var_1, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_fieldtype(fieldtype, var_0, var_1)) + -- wf_fieldtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation subst_comptype_is_wf: `%%%%`(comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule subst_comptype_is_wf_0{comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype}: + `%%%%`(comptype, var_0, var_1, ret_val) + -- wf_comptype: `%`(comptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_comptype(comptype, var_0, var_1)) + -- wf_comptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation subst_subtype_is_wf: `%%%%`(subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule subst_subtype_is_wf_0{subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype}: + `%%%%`(subtype, var_0, var_1, ret_val) + -- wf_subtype: `%`(subtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_subtype(subtype, var_0, var_1)) + -- wf_subtype: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}) = at + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut#2?{mut#2 <- `mut?`}, t), tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_globaltype_is_wf: `%%%%`(globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_globaltype_is_wf_0{globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype}: + `%%%%`(globaltype, var_0, var_1, ret_val) + -- wf_globaltype: `%`(globaltype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_globaltype(globaltype, var_0, var_1)) + -- wf_globaltype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv#67*{tv#67 <- `tv*`}, tu#67*{tu#67 <- `tu*`}) = `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_memtype_is_wf: `%%%%`(memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_memtype_is_wf_0{memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype}: + `%%%%`(memtype, var_0, var_1, ret_val) + -- wf_memtype: `%`(memtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_memtype(memtype, var_0, var_1)) + -- wf_memtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv#68*{tv#68 <- `tv*`}, tu#68*{tu#68 <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_tabletype_is_wf: `%%%%`(tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_tabletype_is_wf_0{tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype}: + `%%%%`(tabletype, var_0, var_1, ret_val) + -- wf_tabletype: `%`(tabletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_tabletype(tabletype, var_0, var_1)) + -- wf_tabletype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv#69*{tv#69 <- `tv*`}, tu#69*{tu#69 <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv#72*{tv#72 <- `tv*`}, tu#72*{tu#72 <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_externtype_is_wf: `%%%%`(externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_externtype_is_wf_0{externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype}: + `%%%%`(externtype, var_0, var_1, ret_val) + -- wf_externtype: `%`(externtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_externtype(externtype, var_0, var_1)) + -- wf_externtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_moduletype_is_wf: `%%%%`(moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_moduletype_is_wf_0{moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype}: + `%%%%`(moduletype, var_0, var_1, ret_val) + -- wf_moduletype: `%`(moduletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_moduletype(moduletype, var_0, var_1)) + -- wf_moduletype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_all_valtype(valtype : valtype, typeuse*) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_all_valtype{t : valtype, n : nat, `tu*` : typeuse*, i : nat}(t, tu#75^n{tu#75 <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.34 +def $free_subtype(subtype : subtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:550.1-551.66 + def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final#2?{final#2 <- `final?`}, typeuse#1*{typeuse#1 <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.1-492.34 +def $free_rectype(rectype : rectype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-553.70 + def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype#5*{subtype#5 <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.1-520.34 +def $free_deftype(deftype : deftype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:521.1-521.59 + def $free_deftype{rectype : rectype, n : nat}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:481.6-481.20 +relation free_heaptype_is_wf: `%%`(heaptype : heaptype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:481.6-481.20 + rule free_heaptype_is_wf_0{heaptype : heaptype, ret_val : free}: + `%%`(heaptype, ret_val) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = $free_heaptype(heaptype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:482.6-482.19 +relation free_reftype_is_wf: `%%`(reftype : reftype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:482.6-482.19 + rule free_reftype_is_wf_0{reftype : reftype, ret_val : free}: + `%%`(reftype, ret_val) + -- wf_reftype: `%`(reftype) + -- if (ret_val = $free_reftype(reftype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.6-484.19 +relation free_typeuse_is_wf: `%%`(typeuse : typeuse, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.6-484.19 + rule free_typeuse_is_wf_0{typeuse : typeuse, ret_val : free}: + `%%`(typeuse, ret_val) + -- wf_typeuse: `%`(typeuse) + -- if (ret_val = $free_typeuse(typeuse)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:485.6-485.19 +relation free_valtype_is_wf: `%%`(valtype : valtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:485.6-485.19 + rule free_valtype_is_wf_0{valtype : valtype, ret_val : free}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $free_valtype(valtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 +relation free_resulttype_is_wf: `%%`(resulttype : resulttype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 + rule free_resulttype_is_wf_0{resulttype : resulttype, ret_val : free}: + `%%`(resulttype, ret_val) + -- if (ret_val = $free_resulttype(resulttype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 +relation free_storagetype_is_wf: `%%`(storagetype : storagetype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule free_storagetype_is_wf_0{storagetype : storagetype, ret_val : free}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $free_storagetype(storagetype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 +relation free_fieldtype_is_wf: `%%`(fieldtype : fieldtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 + rule free_fieldtype_is_wf_0{fieldtype : fieldtype, ret_val : free}: + `%%`(fieldtype, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- if (ret_val = $free_fieldtype(fieldtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 +relation free_comptype_is_wf: `%%`(comptype : comptype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 + rule free_comptype_is_wf_0{comptype : comptype, ret_val : free}: + `%%`(comptype, ret_val) + -- wf_comptype: `%`(comptype) + -- if (ret_val = $free_comptype(comptype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 +relation free_subtype_is_wf: `%%`(subtype : subtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 + rule free_subtype_is_wf_0{subtype : subtype, ret_val : free}: + `%%`(subtype, ret_val) + -- wf_subtype: `%`(subtype) + -- if (ret_val = $free_subtype(subtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 +relation free_rectype_is_wf: `%%`(rectype : rectype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 + rule free_rectype_is_wf_0{rectype : rectype, ret_val : free}: + `%%`(rectype, ret_val) + -- if (ret_val = $free_rectype(rectype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 +relation free_deftype_is_wf: `%%`(deftype : deftype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 + rule free_deftype_is_wf_0{deftype : deftype, ret_val : free}: + `%%`(deftype, ret_val) + -- if (ret_val = $free_deftype(deftype)) + -- wf_free: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_tagtype(tagtype : tagtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_tagtype{rectype : rectype, n : n}(_DEF_tagtype(rectype, n)) = $free_deftype(_DEF_deftype(rectype, n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_tagtype_is_wf: `%%`(tagtype : tagtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_tagtype_is_wf_0{tagtype : tagtype, ret_val : free}: + `%%`(tagtype, ret_val) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = $free_tagtype(tagtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_globaltype(globaltype : globaltype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_globaltype{`mut?` : mut?, valtype : valtype}(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, valtype)) = $free_valtype(valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_globaltype_is_wf: `%%`(globaltype : globaltype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_globaltype_is_wf_0{globaltype : globaltype, ret_val : free}: + `%%`(globaltype, ret_val) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = $free_globaltype(globaltype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_memtype(memtype : memtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_memtype_is_wf: `%%`(memtype : memtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_memtype_is_wf_0{memtype : memtype, ret_val : free}: + `%%`(memtype, ret_val) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $free_memtype(memtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_tabletype(tabletype : tabletype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_tabletype_is_wf: `%%`(tabletype : tabletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_tabletype_is_wf_0{tabletype : tabletype, ret_val : free}: + `%%`(tabletype, ret_val) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = $free_tabletype(tabletype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_datatype(datatype : datatype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_datatype_is_wf: `%%`(datatype : datatype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_datatype_is_wf_0{datatype : datatype, ret_val : free}: + `%%`(datatype, ret_val) + -- if (ret_val = $free_datatype(datatype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_elemtype(elemtype : elemtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_elemtype_is_wf: `%%`(elemtype : elemtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_elemtype_is_wf_0{elemtype : elemtype, ret_val : free}: + `%%`(elemtype, ret_val) + -- wf_reftype: `%`(elemtype) + -- if (ret_val = $free_elemtype(elemtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_externtype(externtype : externtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{tagtype : typeuse}(TAG_externtype(tagtype)) = $free_tagtype(tagtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{globaltype : globaltype}(GLOBAL_externtype(globaltype)) = $free_globaltype(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{memtype : memtype}(MEM_externtype(memtype)) = $free_memtype(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_externtype_is_wf: `%%`(externtype : externtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_externtype_is_wf_0{externtype : externtype, ret_val : free}: + `%%`(externtype, ret_val) + -- wf_externtype: `%`(externtype) + -- if (ret_val = $free_externtype(externtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_moduletype(moduletype : moduletype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_moduletype{`externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype(externtype_1#1*{externtype_1#1 <- `externtype_1*`}, externtype_2#1*{externtype_2#1 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_moduletype_is_wf: `%%`(moduletype : moduletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_moduletype_is_wf_0{moduletype : moduletype, ret_val : free}: + `%%`(moduletype, ret_val) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $free_moduletype(moduletype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax num_ = + | mk_num__0(Inn : Inn, var_x : iN) + | mk_num__1(Fnn : Fnn, var_x : fN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_num_: `%%`(numtype, num_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_0{numtype : numtype, Inn : Inn, var_x : iN}: + `%%`(numtype, mk_num__0_num_(Inn, var_x)) + -- wf_uN: `%%`($size((Inn : addrtype <: numtype)), var_x) + -- if (numtype = (Inn : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_1{numtype : numtype, Fnn : Fnn, var_x : fN}: + `%%`(numtype, mk_num__1_num_(Fnn, var_x)) + -- wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), var_x) + -- if (numtype = (Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__0(var_x : num_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{Inn : Inn, var_x : iN}(mk_num__0_num_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__1(var_x : num_) : fN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{Fnn : Fnn, var_x : fN}(mk_num__1_num_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax pack_ = iN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lane_ = + | mk_lane__0(numtype : numtype, var_x : num_) + | mk_lane__1(packtype : packtype, var_x : pack_) + | mk_lane__2(Jnn : Jnn, var_x : iN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lane_: `%%`(lanetype, lane_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_0{lanetype : lanetype, numtype : numtype, var_x : num_}: + `%%`(lanetype, mk_lane__0_lane_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (lanetype = (numtype : numtype <: lanetype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_1{lanetype : lanetype, packtype : packtype, var_x : pack_}: + `%%`(lanetype, mk_lane__1_lane_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (lanetype = (packtype : packtype <: lanetype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_2{lanetype : lanetype, Jnn : Jnn, var_x : iN}: + `%%`(lanetype, mk_lane__2_lane_(Jnn, var_x)) + -- wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), var_x) + -- if (lanetype = (Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__0(var_x : lane_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{numtype : numtype, var_x : num_}(mk_lane__0_lane_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__1(var_x : lane_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{packtype : packtype, var_x : pack_}(mk_lane__1_lane_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__2(var_x : lane_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{Jnn : Jnn, var_x : iN}(mk_lane__2_lane_(Jnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vec_ = vN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lit_ = + | mk_lit__0(numtype : numtype, var_x : num_) + | mk_lit__1(vectype : vectype, var_x : vec_) + | mk_lit__2(packtype : packtype, var_x : pack_) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lit_: `%%`(storagetype, lit_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_0{storagetype : storagetype, numtype : numtype, var_x : num_}: + `%%`(storagetype, mk_lit__0_lit_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (storagetype = (numtype : numtype <: storagetype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_1{storagetype : storagetype, vectype : vectype, var_x : vec_}: + `%%`(storagetype, mk_lit__1_lit_(vectype, var_x)) + -- wf_uN: `%%`($vsize(vectype), var_x) + -- if (storagetype = (vectype : vectype <: storagetype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_2{storagetype : storagetype, packtype : packtype, var_x : pack_}: + `%%`(storagetype, mk_lit__2_lit_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (storagetype = (packtype : packtype <: storagetype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__0(var_x : lit_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{numtype : numtype, var_x : num_}(mk_lit__0_lit_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__1(var_x : lit_) : vec_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{vectype : vectype, var_x : vec_}(mk_lit__1_lit_(vectype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__2(var_x : lit_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{packtype : packtype, var_x : pack_}(mk_lit__2_lit_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sz = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_sz_0(x : sz) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_sz_0{v_num_0 : nat}(`%`_sz(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_sz: `%`(sz) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule sz_case_0{i : nat}: + `%`(`%`_sz(i)) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sx = + | U + | S + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Inn = + | CLZ + | CTZ + | POPCNT + | EXTEND(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_Inn: `%%`(Inn, unop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_0{Inn : Inn}: + `%%`(Inn, CLZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_1{Inn : Inn}: + `%%`(Inn, CTZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_2{Inn : Inn}: + `%%`(Inn, POPCNT_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_3{Inn : Inn, sz : sz}: + `%%`(Inn, EXTEND_unop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn((Inn : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Fnn = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_ = + | mk_unop__0(Inn : Inn, var_x : unop_Inn) + | mk_unop__1(Fnn : Fnn, var_x : unop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_: `%%`(numtype, unop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_0{numtype : numtype, Inn : Inn, var_x : unop_Inn}: + `%%`(numtype, mk_unop__0_unop_(Inn, var_x)) + -- wf_unop_Inn: `%%`(Inn, var_x) + -- if (numtype = (Inn : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_1{numtype : numtype, Fnn : Fnn, var_x : unop_Fnn}: + `%%`(numtype, mk_unop__1_unop_(Fnn, var_x)) + -- if (numtype = (Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__0(var_x : unop_) : unop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{Inn : Inn, var_x : unop_Inn}(mk_unop__0_unop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__1(var_x : unop_) : unop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{Fnn : Fnn, var_x : unop_Fnn}(mk_unop__1_unop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Inn = + | ADD + | SUB + | MUL + | DIV(sx : sx) + | REM(sx : sx) + | AND + | OR + | XOR + | SHL + | SHR(sx : sx) + | ROTL + | ROTR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Fnn = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | COPYSIGN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_ = + | mk_binop__0(Inn : Inn, var_x : binop_Inn) + | mk_binop__1(Fnn : Fnn, var_x : binop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_binop_: `%%`(numtype, binop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_0{numtype : numtype, Inn : Inn, var_x : binop_Inn}: + `%%`(numtype, mk_binop__0_binop_(Inn, var_x)) + -- if (numtype = (Inn : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_1{numtype : numtype, Fnn : Fnn, var_x : binop_Fnn}: + `%%`(numtype, mk_binop__1_binop_(Fnn, var_x)) + -- if (numtype = (Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__0(var_x : binop_) : binop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{Inn : Inn, var_x : binop_Inn}(mk_binop__0_binop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__1(var_x : binop_) : binop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{Fnn : Fnn, var_x : binop_Fnn}(mk_binop__1_binop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_Inn = + | EQZ + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_ = + | mk_testop__0(Inn : Inn, var_x : testop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_testop_: `%%`(numtype, testop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule testop__case_0{numtype : numtype, Inn : Inn, var_x : testop_Inn}: + `%%`(numtype, mk_testop__0_testop_(Inn, var_x)) + -- if (numtype = (Inn : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_testop__0(var_x : testop_) : testop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_testop__0{Inn : Inn, var_x : testop_Inn}(mk_testop__0_testop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Inn = + | EQ + | NE + | LT(sx : sx) + | GT(sx : sx) + | LE(sx : sx) + | GE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Fnn = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_ = + | mk_relop__0(Inn : Inn, var_x : relop_Inn) + | mk_relop__1(Fnn : Fnn, var_x : relop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_relop_: `%%`(numtype, relop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_0{numtype : numtype, Inn : Inn, var_x : relop_Inn}: + `%%`(numtype, mk_relop__0_relop_(Inn, var_x)) + -- if (numtype = (Inn : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_1{numtype : numtype, Fnn : Fnn, var_x : relop_Fnn}: + `%%`(numtype, mk_relop__1_relop_(Fnn, var_x)) + -- if (numtype = (Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__0(var_x : relop_) : relop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{Inn : Inn, var_x : relop_Inn}(mk_relop__0_relop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__1(var_x : relop_) : relop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{Fnn : Fnn, var_x : relop_Fnn}(mk_relop__1_relop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Inn_2 = + | EXTEND(sx : sx) + | WRAP + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Inn_2: `%%%`(Inn, Inn, cvtop__Inn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_0{Inn_1 : Inn, Inn_2 : Inn, sx : sx}: + `%%%`(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)) + -- if ($sizenn1((Inn_1 : addrtype <: numtype)) < $sizenn2((Inn_2 : addrtype <: numtype))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_1{Inn_1 : Inn, Inn_2 : Inn}: + `%%%`(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2) + -- if ($sizenn1((Inn_1 : addrtype <: numtype)) > $sizenn2((Inn_2 : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Fnn_2 = + | CONVERT(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn, Fnn, cvtop__Inn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_0{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx}: + `%%%`(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_1{Inn_1 : Inn, Fnn_2 : Fnn}: + `%%%`(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2) + -- if ($sizenn1((Inn_1 : addrtype <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Inn_2 = + | TRUNC(sx : sx) + | TRUNC_SAT(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn, Inn, cvtop__Fnn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_0{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_1{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_2{Fnn_1 : Fnn, Inn_2 : Inn}: + `%%%`(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2) + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Fnn_2 = + | PROMOTE + | DEMOTE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn, Fnn, cvtop__Fnn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_0{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) < $sizenn2((Fnn_2 : Fnn <: numtype))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_1{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__ = + | mk_cvtop___0(Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2) + | mk_cvtop___1(Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2) + | mk_cvtop___2(Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2) + | mk_cvtop___3(Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__: `%%%`(numtype, numtype, cvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_0{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) + -- wf_cvtop__Inn_1_Inn_2: `%%%`(Inn_1, Inn_2, var_x) + -- if (numtype_1 = (Inn_1 : addrtype <: numtype)) + -- if (numtype_2 = (Inn_2 : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_1{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) + -- wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn_1, Fnn_2, var_x) + -- if (numtype_1 = (Inn_1 : addrtype <: numtype)) + -- if (numtype_2 = (Fnn_2 : Fnn <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_2{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) + -- wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn_1, Inn_2, var_x) + -- if (numtype_1 = (Fnn_1 : Fnn <: numtype)) + -- if (numtype_2 = (Inn_2 : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_3{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) + -- wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn_1, Fnn_2, var_x) + -- if (numtype_1 = (Fnn_1 : Fnn <: numtype)) + -- if (numtype_2 = (Fnn_2 : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___0(var_x : cvtop__) : cvtop__Inn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___1(var_x : cvtop__) : cvtop__Inn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___2(var_x : cvtop__) : cvtop__Fnn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___3(var_x : cvtop__) : cvtop__Fnn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax dim = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_dim_0(x : dim) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_dim_0{v_num_0 : nat}(`%`_dim(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_dim: `%`(dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_case_0{i : nat}: + `%`(`%`_dim(i)) + -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax shape = + | `%X%`(lanetype : lanetype, dim : dim) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_shape: `%`(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule shape_case_0{lanetype : lanetype, dim : dim}: + `%`(`%X%`_shape(lanetype, dim)) + -- wf_dim: `%`(dim) + -- if (($lsize(lanetype) * $proj_dim_0(dim).0) = 128) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $dim(shape : shape) : dim + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation dim_is_wf: `%%`(shape : shape, ret_val : dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_is_wf_0{shape : shape, ret_val : dim}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $dim(shape)) + -- wf_dim: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $lanetype(shape : shape) : lanetype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $lanetype{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $unpackshape(shape : shape) : numtype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $unpackshape{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax ishape = + | `%`(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_ishape_0(x : ishape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_ishape_0{v_shape_0 : shape}(`%`_ishape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_ishape: `%`(ishape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule ishape_case_0{Jnn : Jnn, shape : shape}: + `%`(`%`_ishape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax bshape = + | `%`(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_bshape_0(x : bshape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_bshape_0{v_shape_0 : shape}(`%`_bshape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_bshape: `%`(bshape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule bshape_case_0{shape : shape}: + `%`(`%`_bshape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = I8_lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax zero = + | ZERO + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax half = + | LOW + | HIGH + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvunop = + | NOT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvbinop = + | AND + | ANDNOT + | OR + | XOR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvternop = + | BITSELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvtestop = + | ANY_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Jnn_M = + | ABS + | NEG + | POPCNT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_Jnn_M: `%%%`(Jnn, M, vunop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ABS_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NEG_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_2{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, POPCNT_vunop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Fnn_M = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_ = + | mk_vunop__0(Jnn : Jnn, M : M, var_x : vunop_Jnn_M) + | mk_vunop__1(Fnn : Fnn, M : M, var_x : vunop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_: `%%`(shape, vunop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vunop_Jnn_M}: + `%%`(shape, mk_vunop__0_vunop_(Jnn, M, var_x)) + -- wf_vunop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vunop_Fnn_M}: + `%%`(shape, mk_vunop__1_vunop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__0(var_x : vunop_) : vunop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{Jnn : Jnn, M : M, var_x : vunop_Jnn_M}(mk_vunop__0_vunop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__1(var_x : vunop_) : vunop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{Fnn : Fnn, M : M, var_x : vunop_Fnn_M}(mk_vunop__1_vunop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Jnn_M = + | ADD + | SUB + | ADD_SAT(sx : sx) + | SUB_SAT(sx : sx) + | MUL + | AVGRU + | Q15MULR_SATS + | RELAXED_Q15MULRS + | MIN(sx : sx) + | MAX(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_Jnn_M: `%%%`(Jnn, M, vbinop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ADD_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, SUB_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_4{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, MUL_vbinop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_5{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, AVGRU_vbinop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_6{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, Q15MULR_SATS_vbinop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_7{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_8{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MIN_vbinop_Jnn_M(sx)) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_9{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MAX_vbinop_Jnn_M(sx)) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Fnn_M = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | PMIN + | PMAX + | RELAXED_MIN + | RELAXED_MAX + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_ = + | mk_vbinop__0(Jnn : Jnn, M : M, var_x : vbinop_Jnn_M) + | mk_vbinop__1(Fnn : Fnn, M : M, var_x : vbinop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_: `%%`(shape, vbinop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}: + `%%`(shape, mk_vbinop__0_vbinop_(Jnn, M, var_x)) + -- wf_vbinop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}: + `%%`(shape, mk_vbinop__1_vbinop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__0(var_x : vbinop_) : vbinop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}(mk_vbinop__0_vbinop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__1(var_x : vbinop_) : vbinop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}(mk_vbinop__1_vbinop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Jnn_M = + | RELAXED_LANESELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Fnn_M = + | RELAXED_MADD + | RELAXED_NMADD + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_ = + | mk_vternop__0(Jnn : Jnn, M : M, var_x : vternop_Jnn_M) + | mk_vternop__1(Fnn : Fnn, M : M, var_x : vternop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vternop_: `%%`(shape, vternop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vternop_Jnn_M}: + `%%`(shape, mk_vternop__0_vternop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vternop_Fnn_M}: + `%%`(shape, mk_vternop__1_vternop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__0(var_x : vternop_) : vternop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{Jnn : Jnn, M : M, var_x : vternop_Jnn_M}(mk_vternop__0_vternop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__1(var_x : vternop_) : vternop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{Fnn : Fnn, M : M, var_x : vternop_Fnn_M}(mk_vternop__1_vternop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_Jnn_M = + | ALL_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_ = + | mk_vtestop__0(Jnn : Jnn, M : M, var_x : vtestop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vtestop_: `%%`(shape, vtestop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vtestop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}: + `%%`(shape, mk_vtestop__0_vtestop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vtestop__0(var_x : vtestop_) : vtestop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vtestop__0{Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}(mk_vtestop__0_vtestop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Jnn_M = + | EQ + | NE + | LT(sx : sx) + | GT(sx : sx) + | LE(sx : sx) + | GE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_Jnn_M: `%%%`(Jnn, M, vrelop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, EQ_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NE_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LT_vrelop_Jnn_M(sx)) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GT_vrelop_Jnn_M(sx)) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_4{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LE_vrelop_Jnn_M(sx)) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_5{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GE_vrelop_Jnn_M(sx)) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Fnn_M = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_ = + | mk_vrelop__0(Jnn : Jnn, M : M, var_x : vrelop_Jnn_M) + | mk_vrelop__1(Fnn : Fnn, M : M, var_x : vrelop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_: `%%`(shape, vrelop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}: + `%%`(shape, mk_vrelop__0_vrelop_(Jnn, M, var_x)) + -- wf_vrelop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}: + `%%`(shape, mk_vrelop__1_vrelop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__0(var_x : vrelop_) : vrelop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}(mk_vrelop__0_vrelop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__1(var_x : vrelop_) : vrelop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}(mk_vrelop__1_vrelop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_Jnn_M = + | SHL + | SHR(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_ = + | mk_vshiftop__0(Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vshiftop_: `%%`(ishape, vshiftop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vshiftop__case_0{ishape : ishape, Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}: + `%%`(ishape, mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) + -- if (ishape = `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vshiftop__0(var_x : vshiftop_) : vshiftop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vshiftop__0{Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}(mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_M = + | SWIZZLE + | RELAXED_SWIZZLE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_ = + | mk_vswizzlop__0(M : M, var_x : vswizzlop_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vswizzlop_: `%%`(bshape, vswizzlop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vswizzlop__case_0{bshape : bshape, M : M, var_x : vswizzlop_M}: + `%%`(bshape, mk_vswizzlop__0_vswizzlop_(M, var_x)) + -- if (bshape = `%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vswizzlop__0(var_x : vswizzlop_) : vswizzlop_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vswizzlop__0{M : M, var_x : vswizzlop_M}(mk_vswizzlop__0_vswizzlop_(M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTADD_PAIRWISE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextunop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)) + -- if ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__ = + | mk_vextunop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__: `%%%`(ishape, ishape, vextunop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextunop___0(var_x : vextunop__) : vextunop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTMUL(half : half, sx : sx) + | DOTS + | RELAXED_DOTS + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextbinop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_1{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_2{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__ = + | mk_vextbinop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__: `%%%`(ishape, ishape, vextbinop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextbinop___0(var_x : vextbinop__) : vextbinop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__Jnn_1_M_1_Jnn_2_M_2 = + | RELAXED_DOT_ADDS + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextternop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__ = + | mk_vextternop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__: `%%%`(ishape, ishape, vextternop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextternop___0(var_x : vextternop__) : vextternop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTEND(half : half, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vcvtop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Fnn_2_M_2 = + | CONVERT(`half?` : half?, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn, M, Fnn, M, vcvtop__Jnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Fnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}: + `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(`half?`, sx)) + -- if (((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Jnn_2_M_2 = + | TRUNC_SAT(sx : sx, `zero?` : zero?) + | RELAXED_TRUNC(sx : sx, `zero?` : zero?) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn, M, Jnn, M, vcvtop__Fnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, `zero?`)) + -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, `zero?`)) + -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Fnn_2_M_2 = + | DEMOTE(zero : zero) + | PROMOTELOW + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn, M, Fnn, M, vcvtop__Fnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)) + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2) + -- if ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__ = + | mk_vcvtop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___1(Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2) + | mk_vcvtop___2(Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___3(Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__: `%%%`(shape, shape, vcvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_0{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_1{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_2{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_3{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___0(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___1(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___2(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___3(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax memarg = +{ + ALIGN u32, + OFFSET u64 +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_memarg: `%`(memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg_case_{var_0 : u32, var_1 : u64}: + `%`({ALIGN var_0, OFFSET var_1}) + -- wf_uN: `%%`(32, var_0) + -- wf_uN: `%%`(64, var_1) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_Inn = + | `%_%`(sz : sz, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_Inn: `%%`(Inn, loadop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop_Inn_case_0{Inn : Inn, sz : sz, sx : sx}: + `%%`(Inn, `%_%`_loadop_Inn(sz, sx)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn((Inn : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_ = + | mk_loadop__0(Inn : Inn, var_x : loadop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_: `%%`(numtype, loadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop__case_0{numtype : numtype, Inn : Inn, var_x : loadop_Inn}: + `%%`(numtype, mk_loadop__0_loadop_(Inn, var_x)) + -- wf_loadop_Inn: `%%`(Inn, var_x) + -- if (numtype = (Inn : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_loadop__0(var_x : loadop_) : loadop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_loadop__0{Inn : Inn, var_x : loadop_Inn}(mk_loadop__0_loadop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_Inn = + | `%`(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_Inn: `%%`(Inn, storeop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop_Inn_case_0{Inn : Inn, sz : sz}: + `%%`(Inn, `%`_storeop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn((Inn : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_ = + | mk_storeop__0(Inn : Inn, var_x : storeop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_: `%%`(numtype, storeop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop__case_0{numtype : numtype, Inn : Inn, var_x : storeop_Inn}: + `%%`(numtype, mk_storeop__0_storeop_(Inn, var_x)) + -- wf_storeop_Inn: `%%`(Inn, var_x) + -- if (numtype = (Inn : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_storeop__0(var_x : storeop_) : storeop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_storeop__0{Inn : Inn, var_x : storeop_Inn}(mk_storeop__0_storeop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vloadop_ = + | `SHAPE%X%_%`(sz : sz, M : M, sx : sx) + | SPLAT(sz : sz) + | ZERO(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vloadop_: `%%`(vectype, vloadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_0{vectype : vectype, sz : sz, M : M, sx : sx}: + `%%`(vectype, `SHAPE%X%_%`_vloadop_(sz, M, sx)) + -- wf_sz: `%`(sz) + -- if ((($proj_sz_0(sz).0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_1{vectype : vectype, sz : sz}: + `%%`(vectype, SPLAT_vloadop_(sz)) + -- wf_sz: `%`(sz) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_2{vectype : vectype, sz : sz}: + `%%`(vectype, ZERO_vloadop_(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 >= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax blocktype = + | _RESULT(`valtype?` : valtype?) + | _IDX(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_blocktype: `%`(blocktype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_0{`valtype?` : valtype?}: + `%`(_RESULT_blocktype(`valtype?`)) + -- (wf_valtype: `%`(valtype))?{valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_1{typeidx : typeidx}: + `%`(_IDX_blocktype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax addr = nat + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayaddr = addr + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax catch = + | CATCH(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL(labelidx : labelidx) + | CATCH_ALL_REF(labelidx : labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_catch: `%`(catch) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_0{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_1{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_REF_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_2{labelidx : labelidx}: + `%`(CATCH_ALL_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_3{labelidx : labelidx}: + `%`(CATCH_ALL_REF_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exnaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax dataaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax elemaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globaladdr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax memaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tagaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax externaddr = + | TAG(tagaddr : tagaddr) + | GLOBAL(globaladdr : globaladdr) + | MEM(memaddr : memaddr) + | TABLE(tableaddr : tableaddr) + | FUNC(funcaddr : funcaddr) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exportinst = +{ + NAME name, + ADDR externaddr +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exportinst: `%`(exportinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exportinst_case_{var_0 : name, var_1 : externaddr}: + `%`({NAME var_0, ADDR var_1}) + -- wf_name: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax moduleinst = +{ + TYPES deftype*, + TAGS tagaddr*, + GLOBALS globaladdr*, + MEMS memaddr*, + TABLES tableaddr*, + FUNCS funcaddr*, + DATAS dataaddr*, + ELEMS elemaddr*, + EXPORTS exportinst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_moduleinst: `%`(moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_case_{var_0 : deftype*, var_1 : tagaddr*, var_2 : globaladdr*, var_3 : memaddr*, var_4 : tableaddr*, var_5 : funcaddr*, var_6 : dataaddr*, var_7 : elemaddr*, var_8 : exportinst*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, EXPORTS var_8}) + -- (wf_exportinst: `%`(var_8))*{var_8 <- var_8} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-43.19 +syntax ref = + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 +relation wf_ref: `%`(ref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_0{u31 : u31}: + `%`(`REF.I31_NUM`_ref(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_1: + `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_2{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_ref(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_3{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_ref(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_4{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_ref(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_5{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_ref(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_6{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_ref(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_7{ref : ref}: + `%`(`REF.EXTERN`_ref(ref)) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax val = + | CONST(numtype : numtype, num_) + | VCONST(vectype : vectype, vec_) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_val: `%`(val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_val(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_1{vectype : vectype, var_0 : vec_}: + `%`(VCONST_val(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_2{u31 : u31}: + `%`(`REF.I31_NUM`_val(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_3: + `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_4{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_5{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_6{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_7{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_val(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_8{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_9{ref : ref}: + `%`(`REF.EXTERN`_val(ref)) + -- wf_ref: `%`(ref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax frame = +{ + LOCALS val?*, + MODULE moduleinst +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_frame: `%`(frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_case_{var_0 : val?*, var_1 : moduleinst}: + `%`({LOCALS var_0, MODULE var_1}) + -- (wf_val: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- wf_moduleinst: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.1-139.9 +syntax instr = + | NOP + | UNREACHABLE + | DROP + | SELECT(`valtype*?` : valtype*?) + | BLOCK(blocktype : blocktype, `instr*` : instr*) + | LOOP(blocktype : blocktype, `instr*` : instr*) + | `IF%%ELSE%`(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) + | BR(labelidx : labelidx) + | BR_IF(labelidx : labelidx) + | BR_TABLE(`labelidx*` : labelidx*, labelidx : labelidx) + | BR_ON_NULL(labelidx : labelidx) + | BR_ON_NON_NULL(labelidx : labelidx) + | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | CALL(funcidx : funcidx) + | CALL_REF(typeuse : typeuse) + | CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | RETURN + | RETURN_CALL(funcidx : funcidx) + | RETURN_CALL_REF(typeuse : typeuse) + | RETURN_CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | THROW(tagidx : tagidx) + | THROW_REF + | TRY_TABLE(blocktype : blocktype, list(syntax catch), `instr*` : instr*) + | `LOCAL.GET`(localidx : localidx) + | `LOCAL.SET`(localidx : localidx) + | `LOCAL.TEE`(localidx : localidx) + | `GLOBAL.GET`(globalidx : globalidx) + | `GLOBAL.SET`(globalidx : globalidx) + | `TABLE.GET`(tableidx : tableidx) + | `TABLE.SET`(tableidx : tableidx) + | `TABLE.SIZE`(tableidx : tableidx) + | `TABLE.GROW`(tableidx : tableidx) + | `TABLE.FILL`(tableidx : tableidx) + | `TABLE.COPY`(tableidx : tableidx, tableidx : tableidx) + | `TABLE.INIT`(tableidx : tableidx, elemidx : elemidx) + | `ELEM.DROP`(elemidx : elemidx) + | LOAD(numtype : numtype, loadop_?, memidx : memidx, memarg : memarg) + | STORE(numtype : numtype, storeop_?, memidx : memidx, memarg : memarg) + | VLOAD(vectype : vectype, vloadop_?, memidx : memidx, memarg : memarg) + | VLOAD_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | `MEMORY.SIZE`(memidx : memidx) + | `MEMORY.GROW`(memidx : memidx) + | `MEMORY.FILL`(memidx : memidx) + | `MEMORY.COPY`(memidx : memidx, memidx : memidx) + | `MEMORY.INIT`(memidx : memidx, dataidx : dataidx) + | `DATA.DROP`(dataidx : dataidx) + | `REF.NULL`(heaptype : heaptype) + | `REF.IS_NULL` + | `REF.AS_NON_NULL` + | `REF.EQ` + | `REF.TEST`(reftype : reftype) + | `REF.CAST`(reftype : reftype) + | `REF.FUNC`(funcidx : funcidx) + | `REF.I31` + | `I31.GET`(sx : sx) + | `STRUCT.NEW`(typeidx : typeidx) + | `STRUCT.NEW_DEFAULT`(typeidx : typeidx) + | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx) + | `STRUCT.SET`(typeidx : typeidx, fieldidx : fieldidx) + | `ARRAY.NEW`(typeidx : typeidx) + | `ARRAY.NEW_DEFAULT`(typeidx : typeidx) + | `ARRAY.NEW_FIXED`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.NEW_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `ARRAY.GET`(`sx?` : sx?, typeidx : typeidx) + | `ARRAY.SET`(typeidx : typeidx) + | `ARRAY.LEN` + | `ARRAY.FILL`(typeidx : typeidx) + | `ARRAY.COPY`(typeidx : typeidx, typeidx : typeidx) + | `ARRAY.INIT_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.INIT_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `EXTERN.CONVERT_ANY` + | `ANY.CONVERT_EXTERN` + | CONST(numtype : numtype, num_) + | UNOP(numtype : numtype, unop_) + | BINOP(numtype : numtype, binop_) + | TESTOP(numtype : numtype, testop_) + | RELOP(numtype : numtype, relop_) + | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__) + | VCONST(vectype : vectype, vec_) + | VVUNOP(vectype : vectype, vvunop : vvunop) + | VVBINOP(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP(vectype : vectype, vvternop : vvternop) + | VVTESTOP(vectype : vectype, vvtestop : vvtestop) + | VUNOP(shape : shape, vunop_) + | VBINOP(shape : shape, vbinop_) + | VTERNOP(shape : shape, vternop_) + | VTESTOP(shape : shape, vtestop_) + | VRELOP(shape : shape, vrelop_) + | VSHIFTOP(ishape : ishape, vshiftop_) + | VBITMASK(ishape : ishape) + | VSWIZZLOP(bshape : bshape, vswizzlop_) + | VSHUFFLE(bshape : bshape, `laneidx*` : laneidx*) + | VEXTUNOP(ishape_1 : ishape, ishape_2 : ishape, vextunop__) + | VEXTBINOP(ishape_1 : ishape, ishape_2 : ishape, vextbinop__) + | VEXTTERNOP(ishape_1 : ishape, ishape_2 : ishape, vextternop__) + | VNARROW(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + | VCVTOP(shape_1 : shape, shape_2 : shape, vcvtop__) + | VSPLAT(shape : shape) + | VEXTRACT_LANE(shape : shape, `sx?` : sx?, laneidx : laneidx) + | VREPLACE_LANE(shape : shape, laneidx : laneidx) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) + | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) + | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) + | TRAP +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 +relation wf_instr: `%`(instr) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_0: + `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_1: + `%`(UNREACHABLE_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_2: + `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_3{`valtype*?` : valtype*?}: + `%`(SELECT_instr(`valtype*?`)) + -- (wf_valtype: `%`(valtype))*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_4{blocktype : blocktype, `instr*` : instr*}: + `%`(BLOCK_instr(blocktype, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_5{blocktype : blocktype, `instr*` : instr*}: + `%`(LOOP_instr(blocktype, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_6{blocktype : blocktype, `instr*` : instr*, `instr*_0` : instr*}: + `%`(`IF%%ELSE%`_instr(blocktype, `instr*`, `instr*_0`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(`instr*_0`))*{`instr*_0` <- `instr*_0`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_7{labelidx : labelidx}: + `%`(BR_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_8{labelidx : labelidx}: + `%`(BR_IF_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_9{`labelidx*` : labelidx*, labelidx : labelidx}: + `%`(BR_TABLE_instr(`labelidx*`, labelidx)) + -- (wf_uN: `%%`(32, labelidx))*{labelidx <- `labelidx*`} + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_10{labelidx : labelidx}: + `%`(BR_ON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_11{labelidx : labelidx}: + `%`(BR_ON_NON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_12{labelidx : labelidx, reftype : reftype, reftype_0 : reftype}: + `%`(BR_ON_CAST_instr(labelidx, reftype, reftype_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_13{labelidx : labelidx, reftype : reftype, reftype_0 : reftype}: + `%`(BR_ON_CAST_FAIL_instr(labelidx, reftype, reftype_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_14{funcidx : funcidx}: + `%`(CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_15{typeuse : typeuse}: + `%`(CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_16{tableidx : tableidx, typeuse : typeuse}: + `%`(CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_17: + `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_18{funcidx : funcidx}: + `%`(RETURN_CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_19{typeuse : typeuse}: + `%`(RETURN_CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_20{tableidx : tableidx, typeuse : typeuse}: + `%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_21{tagidx : tagidx}: + `%`(THROW_instr(tagidx)) + -- wf_uN: `%%`(32, tagidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_22: + `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_23{blocktype : blocktype, var_0 : list(syntax catch), `instr*` : instr*}: + `%`(TRY_TABLE_instr(blocktype, var_0, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_24{localidx : localidx}: + `%`(`LOCAL.GET`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_25{localidx : localidx}: + `%`(`LOCAL.SET`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_26{localidx : localidx}: + `%`(`LOCAL.TEE`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_27{globalidx : globalidx}: + `%`(`GLOBAL.GET`_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_28{globalidx : globalidx}: + `%`(`GLOBAL.SET`_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_29{tableidx : tableidx}: + `%`(`TABLE.GET`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_30{tableidx : tableidx}: + `%`(`TABLE.SET`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_31{tableidx : tableidx}: + `%`(`TABLE.SIZE`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_32{tableidx : tableidx}: + `%`(`TABLE.GROW`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_33{tableidx : tableidx}: + `%`(`TABLE.FILL`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_34{tableidx : tableidx, tableidx_0 : tableidx}: + `%`(`TABLE.COPY`_instr(tableidx, tableidx_0)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, tableidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_35{tableidx : tableidx, elemidx : elemidx}: + `%`(`TABLE.INIT`_instr(tableidx, elemidx)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_36{elemidx : elemidx}: + `%`(`ELEM.DROP`_instr(elemidx)) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_37{numtype : numtype, var_0 : loadop_?, memidx : memidx, memarg : memarg}: + `%`(LOAD_instr(numtype, var_0, memidx, memarg)) + -- (wf_loadop_: `%%`(numtype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_38{numtype : numtype, var_0 : storeop_?, memidx : memidx, memarg : memarg}: + `%`(STORE_instr(numtype, var_0, memidx, memarg)) + -- (wf_storeop_: `%%`(numtype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_39{vectype : vectype, var_0 : vloadop_?, memidx : memidx, memarg : memarg}: + `%`(VLOAD_instr(vectype, var_0, memidx, memarg)) + -- (wf_vloadop_: `%%`(vectype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_40{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_41{vectype : vectype, memidx : memidx, memarg : memarg}: + `%`(VSTORE_instr(vectype, memidx, memarg)) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_42{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_43{memidx : memidx}: + `%`(`MEMORY.SIZE`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_44{memidx : memidx}: + `%`(`MEMORY.GROW`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_45{memidx : memidx}: + `%`(`MEMORY.FILL`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_46{memidx : memidx, memidx_0 : memidx}: + `%`(`MEMORY.COPY`_instr(memidx, memidx_0)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, memidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_47{memidx : memidx, dataidx : dataidx}: + `%`(`MEMORY.INIT`_instr(memidx, dataidx)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_48{dataidx : dataidx}: + `%`(`DATA.DROP`_instr(dataidx)) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_49{heaptype : heaptype}: + `%`(`REF.NULL`_instr(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_50: + `%`(`REF.IS_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_51: + `%`(`REF.AS_NON_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_52: + `%`(`REF.EQ`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_53{reftype : reftype}: + `%`(`REF.TEST`_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_54{reftype : reftype}: + `%`(`REF.CAST`_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_55{funcidx : funcidx}: + `%`(`REF.FUNC`_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_56: + `%`(`REF.I31`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_57{sx : sx}: + `%`(`I31.GET`_instr(sx)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_58{typeidx : typeidx}: + `%`(`STRUCT.NEW`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_59{typeidx : typeidx}: + `%`(`STRUCT.NEW_DEFAULT`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_60{`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx}: + `%`(`STRUCT.GET`_instr(`sx?`, typeidx, fieldidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, fieldidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_61{typeidx : typeidx, fieldidx : fieldidx}: + `%`(`STRUCT.SET`_instr(typeidx, fieldidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, fieldidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_62{typeidx : typeidx}: + `%`(`ARRAY.NEW`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_63{typeidx : typeidx}: + `%`(`ARRAY.NEW_DEFAULT`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_64{typeidx : typeidx, u32 : u32}: + `%`(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_65{typeidx : typeidx, dataidx : dataidx}: + `%`(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_66{typeidx : typeidx, elemidx : elemidx}: + `%`(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_67{`sx?` : sx?, typeidx : typeidx}: + `%`(`ARRAY.GET`_instr(`sx?`, typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_68{typeidx : typeidx}: + `%`(`ARRAY.SET`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_69: + `%`(`ARRAY.LEN`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_70{typeidx : typeidx}: + `%`(`ARRAY.FILL`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_71{typeidx : typeidx, typeidx_0 : typeidx}: + `%`(`ARRAY.COPY`_instr(typeidx, typeidx_0)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, typeidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_72{typeidx : typeidx, dataidx : dataidx}: + `%`(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_73{typeidx : typeidx, elemidx : elemidx}: + `%`(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_74: + `%`(`EXTERN.CONVERT_ANY`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_75: + `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_76{numtype : numtype, var_0 : num_}: + `%`(CONST_instr(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_77{numtype : numtype, var_0 : unop_}: + `%`(UNOP_instr(numtype, var_0)) + -- wf_unop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_78{numtype : numtype, var_0 : binop_}: + `%`(BINOP_instr(numtype, var_0)) + -- wf_binop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_79{numtype : numtype, var_0 : testop_}: + `%`(TESTOP_instr(numtype, var_0)) + -- wf_testop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_80{numtype : numtype, var_0 : relop_}: + `%`(RELOP_instr(numtype, var_0)) + -- wf_relop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_81{numtype_1 : numtype, numtype_2 : numtype, var_0 : cvtop__}: + `%`(CVTOP_instr(numtype_1, numtype_2, var_0)) + -- wf_cvtop__: `%%%`(numtype_2, numtype_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_82{vectype : vectype, var_0 : vec_}: + `%`(VCONST_instr(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_83{vectype : vectype, vvunop : vvunop}: + `%`(VVUNOP_instr(vectype, vvunop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_84{vectype : vectype, vvbinop : vvbinop}: + `%`(VVBINOP_instr(vectype, vvbinop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_85{vectype : vectype, vvternop : vvternop}: + `%`(VVTERNOP_instr(vectype, vvternop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_86{vectype : vectype, vvtestop : vvtestop}: + `%`(VVTESTOP_instr(vectype, vvtestop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_87{shape : shape, var_0 : vunop_}: + `%`(VUNOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vunop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_88{shape : shape, var_0 : vbinop_}: + `%`(VBINOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vbinop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_89{shape : shape, var_0 : vternop_}: + `%`(VTERNOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vternop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_90{shape : shape, var_0 : vtestop_}: + `%`(VTESTOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vtestop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_91{shape : shape, var_0 : vrelop_}: + `%`(VRELOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vrelop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_92{ishape : ishape, var_0 : vshiftop_}: + `%`(VSHIFTOP_instr(ishape, var_0)) + -- wf_ishape: `%`(ishape) + -- wf_vshiftop_: `%%`(ishape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_93{ishape : ishape}: + `%`(VBITMASK_instr(ishape)) + -- wf_ishape: `%`(ishape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_94{bshape : bshape, var_0 : vswizzlop_}: + `%`(VSWIZZLOP_instr(bshape, var_0)) + -- wf_bshape: `%`(bshape) + -- wf_vswizzlop_: `%%`(bshape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*}: + `%`(VSHUFFLE_instr(bshape, `laneidx*`)) + -- wf_bshape: `%`(bshape) + -- (wf_uN: `%%`(8, laneidx))*{laneidx <- `laneidx*`} + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim($proj_bshape_0(bshape).0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextunop__}: + `%`(VEXTUNOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextunop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_97{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextbinop__}: + `%`(VEXTBINOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextbinop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_98{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextternop__}: + `%`(VEXTTERNOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextternop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_99{ishape_1 : ishape, ishape_2 : ishape, sx : sx}: + `%`(VNARROW_instr(ishape_1, ishape_2, sx)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- if (($lsize($lanetype($proj_ishape_0(ishape_2).0)) = (2 * $lsize($lanetype($proj_ishape_0(ishape_1).0)))) /\ ((2 * $lsize($lanetype($proj_ishape_0(ishape_1).0))) <= 32)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_100{shape_1 : shape, shape_2 : shape, var_0 : vcvtop__}: + `%`(VCVTOP_instr(shape_1, shape_2, var_0)) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_2, shape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_101{shape : shape}: + `%`(VSPLAT_instr(shape)) + -- wf_shape: `%`(shape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_102{shape : shape, `sx?` : sx?, laneidx : laneidx}: + `%`(VEXTRACT_LANE_instr(shape, `sx?`, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_103{shape : shape, laneidx : laneidx}: + `%`(VREPLACE_LANE_instr(shape, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_104{u31 : u31}: + `%`(`REF.I31_NUM`_instr(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_105: + `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_106{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_instr(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_107{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_instr(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_108{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_instr(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_109{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_instr(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_110{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_instr(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_111{ref : ref}: + `%`(`REF.EXTERN`_instr(ref)) + -- wf_ref: `%`(ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_112{n : n, `instr*` : instr*, `instr*_0` : instr*}: + `%`(`LABEL_%{%}%`_instr(n, `instr*`, `instr*_0`)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(`instr*_0`))*{`instr*_0` <- `instr*_0`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_113{n : n, frame : frame, `instr*` : instr*}: + `%`(`FRAME_%{%}%`_instr(n, frame, `instr*`)) + -- wf_frame: `%`(frame) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_114{n : n, `catch*` : catch*, `instr*` : instr*}: + `%`(`HANDLER_%{%}%`_instr(n, `catch*`, `instr*`)) + -- (wf_catch: `%`(catch))*{catch <- `catch*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_115: + `%`(TRAP_instr) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax expr = instr* + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $memarg0 : memarg + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation memarg0_is_wf: `%`(ret_val : memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg0_is_wf_0{ret_val : memarg}: + `%`(ret_val) + -- if (ret_val = $memarg0) + -- wf_memarg: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $const(consttype : consttype, lit_ : lit_) : instr + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(I32_consttype, mk_lit__0_lit_(I32_numtype, c)) = CONST_instr(I32_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(I64_consttype, mk_lit__0_lit_(I64_numtype, c)) = CONST_instr(I64_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(F32_consttype, mk_lit__0_lit_(F32_numtype, c)) = CONST_instr(F32_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(F64_consttype, mk_lit__0_lit_(F64_numtype, c)) = CONST_instr(F64_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : uN}(V128_consttype, mk_lit__1_lit_(V128_vectype, c)) = VCONST_instr(V128_vectype, c) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation const_is_wf: `%%%`(consttype : consttype, lit_ : lit_, ret_val : instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule const_is_wf_0{consttype : consttype, lit_ : lit_, ret_val : instr}: + `%%%`(consttype, lit_, ret_val) + -- wf_lit_: `%%`((consttype : consttype <: storagetype), lit_) + -- if (ret_val = $const(consttype, lit_)) + -- wf_instr: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_shape(shape : shape) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_shape_is_wf: `%%`(shape : shape, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_shape_is_wf_0{shape : shape, ret_val : free}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $free_shape(shape)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_blocktype(blocktype : blocktype) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype#504?{valtype#504 <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_blocktype{typeidx : uN}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_blocktype_is_wf: `%%`(blocktype : blocktype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_blocktype_is_wf_0{blocktype : blocktype, ret_val : free}: + `%%`(blocktype, ret_val) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $free_blocktype(blocktype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_catch(catch : catch) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : uN, labelidx : uN}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : uN, labelidx : uN}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : uN}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : uN}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_catch_is_wf: `%%`(catch : catch, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_catch_is_wf_0{catch : catch, ret_val : free}: + `%%`(catch, ret_val) + -- wf_catch: `%`(catch) + -- if (ret_val = $free_catch(catch)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.1-584.44 +def $shift_labelidxs(labelidx*) : labelidx* + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.32 + def $shift_labelidxs([]) = [] + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.66 + def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'#1*{labelidx'#1 <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.91 + def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'#2*{labelidx'#2 <- `labelidx'*`}) = [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.1-420.30 +def $free_instr(instr : instr) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-435.26 + def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.34 + def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.27 + def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.86 + def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype#505*{valtype#505 <- `valtype*#1`}?{`valtype*#1` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.92 + def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr#1*{instr#1 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.91 + def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr#2*{instr#2 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-443.79 + def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1#1*{instr_1#1 <- `instr_1*`}, instr_2#1*{instr_2#1 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:445.1-445.56 + def $free_instr{labelidx : uN}(BR_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.59 + def $free_instr{labelidx : uN}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-448.69 + def $free_instr{`labelidx*` : labelidx*, labelidx' : uN}(BR_TABLE_instr(labelidx#1*{labelidx#1 <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.64 + def $free_instr{labelidx : uN}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.68 + def $free_instr{labelidx : uN}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-452.83 + def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-454.83 + def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-456.55 + def $free_instr{funcidx : uN}(CALL_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.59 + def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-459.53 + def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.29 + def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 + def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.66 + def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-464.53 + def $free_instr{tableidx : uN, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:466.1-466.53 + def $free_instr{tagidx : uN}(THROW_instr(tagidx)) = $free_tagidx(tagidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.32 + def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-469.99 + def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch#1*{catch#1 <- `catch*`}), instr#3*{instr#3 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.63 + def $free_instr{numtype : numtype, numlit : num_}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.60 + def $free_instr{numtype : numtype, unop : unop_}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.62 + def $free_instr{numtype : numtype, binop : binop_}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.64 + def $free_instr{numtype : numtype, testop : testop_}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.62 + def $free_instr{numtype : numtype, relop : relop_}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-477.55 + def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.64 + def $free_instr{vectype : vectype, veclit : uN}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 + def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-481.66 + def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:482.1-482.68 + def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.68 + def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.56 + def $free_instr{shape : shape, vunop : vunop_}(VUNOP_instr(shape, vunop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.58 + def $free_instr{shape : shape, vbinop : vbinop_}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.60 + def $free_instr{shape : shape, vternop : vternop_}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-487.60 + def $free_instr{shape : shape, vtestop : vtestop_}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:488.1-488.58 + def $free_instr{shape : shape, vrelop : vrelop_}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.64 + def $free_instr{ishape : ishape, vshiftop : vshiftop_}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape($proj_ishape_0(ishape).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.55 + def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape($proj_ishape_0(ishape).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.66 + def $free_instr{bshape : bshape, vswizzlop : vswizzlop_}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape($proj_bshape_0(bshape).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.64 + def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx#1*{laneidx#1 <- `laneidx*`})) = $free_shape($proj_bshape_0(bshape).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-494.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-496.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-498.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-500.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-502.47 + def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:503.1-503.51 + def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.70 + def $free_instr{shape : shape, `sx?` : sx?, laneidx : uN}(VEXTRACT_LANE_instr(shape, sx#45969?{sx#45969 <- `sx?`}, laneidx)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:505.1-505.66 + def $free_instr{shape : shape, laneidx : uN}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.62 + def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.34 + def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.38 + def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.29 + def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 + def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 + def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.59 + def $free_instr{funcidx : uN}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.30 + def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.33 + def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.61 + def $free_instr{typeidx : uN}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.69 + def $free_instr{typeidx : uN}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.69 + def $free_instr{`sx?` : sx?, typeidx : uN, u32 : uN}(`STRUCT.GET`_instr(sx#45970?{sx#45970 <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.65 + def $free_instr{typeidx : uN, u32 : uN}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.60 + def $free_instr{typeidx : uN}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.68 + def $free_instr{typeidx : uN}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.70 + def $free_instr{typeidx : uN, u32 : uN}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 + def $free_instr{typeidx : uN, dataidx : uN}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:528.1-529.51 + def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.64 + def $free_instr{`sx?` : sx?, typeidx : uN}(`ARRAY.GET`_instr(sx#45971?{sx#45971 <- `sx?`}, typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.60 + def $free_instr{typeidx : uN}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.32 + def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.61 + def $free_instr{typeidx : uN}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.55 + def $free_instr{typeidx_1 : uN, typeidx_2 : uN}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-537.51 + def $free_instr{typeidx : uN, dataidx : uN}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:538.1-539.51 + def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.41 + def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 + def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 + def $free_instr{localidx : uN}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 + def $free_instr{localidx : uN}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.63 + def $free_instr{localidx : uN}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.67 + def $free_instr{globalidx : uN}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.67 + def $free_instr{globalidx : uN}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:551.1-551.63 + def $free_instr{tableidx : uN}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.63 + def $free_instr{tableidx : uN}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.64 + def $free_instr{tableidx : uN}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-554.64 + def $free_instr{tableidx : uN}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.64 + def $free_instr{tableidx : uN}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.59 + def $free_instr{tableidx_1 : uN, tableidx_2 : uN}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.53 + def $free_instr{tableidx : uN, elemidx : uN}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-560.60 + def $free_instr{elemidx : uN}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-563.49 + def $free_instr{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg}(LOAD_instr(numtype, loadop#1?{loadop#1 <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-565.49 + def $free_instr{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg}(STORE_instr(numtype, storeop#1?{storeop#1 <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-567.49 + def $free_instr{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg}(VLOAD_instr(vectype, vloadop#1?{vloadop#1 <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:568.1-569.49 + def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:570.1-571.49 + def $free_instr{vectype : vectype, memidx : uN, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-573.49 + def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.59 + def $free_instr{memidx : uN}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.59 + def $free_instr{memidx : uN}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:576.1-576.59 + def $free_instr{memidx : uN}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.51 + def $free_instr{memidx_1 : uN, memidx_2 : uN}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-580.49 + def $free_instr{memidx : uN, dataidx : uN}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:581.1-581.60 + def $free_instr{dataidx : uN}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.1-421.31 +def $free_block(instr*) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:589.1-590.47 + def $free_block{`instr*` : instr*}(instr#4*{instr#4 <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + -- let{free : free} free = $free_list($free_instr(instr#5)*{instr#5 <- `instr*`}) + -- wf_free: `%`($free_list($free_instr(instr#6)*{instr#6 <- `instr*`})) + -- (wf_free: `%`($free_instr(instr#7)))*{instr#7 <- `instr*`} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation free_instr_is_wf: `%%`(instr : instr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule free_instr_is_wf_0{instr : instr, ret_val : free}: + `%%`(instr, ret_val) + -- wf_instr: `%`(instr) + -- if (ret_val = $free_instr(instr)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation free_block_is_wf: `%%`(var_0 : instr*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule free_block_is_wf_0{var_0 : instr*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_block(var_0)) + -- wf_free: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_expr(expr : expr) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_expr{`instr*` : instr*}(instr#8*{instr#8 <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_expr_is_wf: `%%`(expr : expr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_expr_is_wf_0{expr : expr, ret_val : free}: + `%%`(expr, ret_val) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- if (ret_val = $free_expr(expr)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elemmode = + | ACTIVE(tableidx : tableidx, expr : expr) + | PASSIVE + | DECLARE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elemmode: `%`(elemmode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_0{tableidx : tableidx, expr : expr}: + `%`(ACTIVE_elemmode(tableidx, expr)) + -- wf_uN: `%%`(32, tableidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_1: + `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_2: + `%`(DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax datamode = + | ACTIVE(memidx : memidx, expr : expr) + | PASSIVE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_datamode: `%`(datamode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_0{memidx : memidx, expr : expr}: + `%`(ACTIVE_datamode(memidx, expr)) + -- wf_uN: `%%`(32, memidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_1: + `%`(PASSIVE_datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax type = + | TYPE(rectype : rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax tag = + | TAG(tagtype : tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_tag: `%`(tag) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule tag_case_0{tagtype : tagtype}: + `%`(TAG_tag(tagtype)) + -- wf_typeuse: `%`(tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax global = + | GLOBAL(globaltype : globaltype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_global: `%`(global) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule global_case_0{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax mem = + | MEMORY(memtype : memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_mem: `%`(mem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule mem_case_0{memtype : memtype}: + `%`(MEMORY_mem(memtype)) + -- wf_memtype: `%`(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax table = + | TABLE(tabletype : tabletype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_table: `%`(table) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule table_case_0{tabletype : tabletype, expr : expr}: + `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax data = + | DATA(`byte*` : byte*, datamode : datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_data: `%`(data) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule data_case_0{`byte*` : byte*, datamode : datamode}: + `%`(DATA_data(`byte*`, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax local = + | LOCAL(valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_local: `%`(local) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule local_case_0{valtype : valtype}: + `%`(LOCAL_local(valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax func = + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_func: `%`(func) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule func_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_func(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elem = + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elem: `%`(elem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_elem(reftype, `expr*`, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax start = + | START(funcidx : funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_start: `%`(start) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule start_case_0{funcidx : funcidx}: + `%`(START_start(funcidx)) + -- wf_uN: `%%`(32, funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax import = + | IMPORT(name : name, name : name, externtype : externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_import: `%`(import) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule import_case_0{name : name, name_0 : name, externtype : externtype}: + `%`(IMPORT_import(name, name_0, externtype)) + -- wf_name: `%`(name) + -- wf_name: `%`(name_0) + -- wf_externtype: `%`(externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax export = + | EXPORT(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_export: `%`(export) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule export_case_0{name : name, externidx : externidx}: + `%`(EXPORT_export(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax module = + | MODULE(list(syntax type), list(syntax import), list(syntax tag), list(syntax global), list(syntax mem), list(syntax table), list(syntax func), list(syntax data), list(syntax elem), `start?` : start?, list(syntax export)) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_module: `%`(module) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule module_case_0{var_0 : list(syntax type), var_1 : list(syntax import), var_2 : list(syntax tag), var_3 : list(syntax global), var_4 : list(syntax mem), var_5 : list(syntax table), var_6 : list(syntax func), var_7 : list(syntax data), var_8 : list(syntax elem), `start?` : start?, var_9 : list(syntax export)}: + `%`(MODULE_module(var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, `start?`, var_9)) + -- (wf_start: `%`(start))?{start <- `start?`} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_type(type : type) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_type_is_wf: `%%`(type : type, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_type_is_wf_0{type : type, ret_val : free}: + `%%`(type, ret_val) + -- if (ret_val = $free_type(type)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_tag(tag : tag) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_tag_is_wf: `%%`(tag : tag, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_tag_is_wf_0{tag : tag, ret_val : free}: + `%%`(tag, ret_val) + -- wf_tag: `%`(tag) + -- if (ret_val = $free_tag(tag)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_global(global : global) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_global_is_wf: `%%`(global : global, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_global_is_wf_0{global : global, ret_val : free}: + `%%`(global, ret_val) + -- wf_global: `%`(global) + -- if (ret_val = $free_global(global)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_mem(mem : mem) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_mem_is_wf: `%%`(mem : mem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_mem_is_wf_0{mem : mem, ret_val : free}: + `%%`(mem, ret_val) + -- wf_mem: `%`(mem) + -- if (ret_val = $free_mem(mem)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_table(table : table) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_table_is_wf: `%%`(table : table, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_table_is_wf_0{table : table, ret_val : free}: + `%%`(table, ret_val) + -- wf_table: `%`(table) + -- if (ret_val = $free_table(table)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_local(local : local) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_local_is_wf: `%%`(local : local, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_local_is_wf_0{local : local, ret_val : free}: + `%%`(local, ret_val) + -- wf_local: `%`(local) + -- if (ret_val = $free_local(local)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_func(func : func) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local#1*{local#1 <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_func_is_wf: `%%`(func : func, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_func_is_wf_0{func : func, ret_val : free}: + `%%`(func, ret_val) + -- wf_func: `%`(func) + -- if (ret_val = $free_func(func)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_datamode(datamode : datamode) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_datamode_is_wf: `%%`(datamode : datamode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_datamode_is_wf_0{datamode : datamode, ret_val : free}: + `%%`(datamode, ret_val) + -- wf_datamode: `%`(datamode) + -- if (ret_val = $free_datamode(datamode)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_data(data : data) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte#1*{byte#1 <- `byte*`}, datamode)) = $free_datamode(datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_data_is_wf: `%%`(data : data, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_data_is_wf_0{data : data, ret_val : free}: + `%%`(data, ret_val) + -- wf_data: `%`(data) + -- if (ret_val = $free_data(data)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_elemmode(elemmode : elemmode) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elemmode_is_wf: `%%`(elemmode : elemmode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elemmode_is_wf_0{elemmode : elemmode, ret_val : free}: + `%%`(elemmode, ret_val) + -- wf_elemmode: `%`(elemmode) + -- if (ret_val = $free_elemmode(elemmode)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_elem(elem : elem) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr#358*{expr#358 <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elem_is_wf: `%%`(elem : elem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elem_is_wf_0{elem : elem, ret_val : free}: + `%%`(elem, ret_val) + -- wf_elem: `%`(elem) + -- if (ret_val = $free_elem(elem)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_start(start : start) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_start_is_wf: `%%`(start : start, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_start_is_wf_0{start : start, ret_val : free}: + `%%`(start, ret_val) + -- wf_start: `%`(start) + -- if (ret_val = $free_start(start)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_import(import : import) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_import_is_wf: `%%`(import : import, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_import_is_wf_0{import : import, ret_val : free}: + `%%`(import, ret_val) + -- wf_import: `%`(import) + -- if (ret_val = $free_import(import)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_export(export : export) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_export_is_wf: `%%`(export : export, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_export_is_wf_0{export : export, ret_val : free}: + `%%`(export, ret_val) + -- wf_export: `%`(export) + -- if (ret_val = $free_export(export)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_module(module : module) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_list(type#1*{type#1 <- `type*`}), `%`_list(import#1*{import#1 <- `import*`}), `%`_list(tag#1*{tag#1 <- `tag*`}), `%`_list(global#1*{global#1 <- `global*`}), `%`_list(mem#1*{mem#1 <- `mem*`}), `%`_list(table#1*{table#1 <- `table*`}), `%`_list(func#1*{func#1 <- `func*`}), `%`_list(data#1*{data#1 <- `data*`}), `%`_list(elem#1*{elem#1 <- `elem*`}), start#1?{start#1 <- `start?`}, `%`_list(export#1*{export#1 <- `export*`}))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_module_is_wf: `%%`(module : module, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_module_is_wf_0{module : module, ret_val : free}: + `%%`(module, ret_val) + -- wf_module: `%`(module) + -- if (ret_val = $free_module(module)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $funcidx_module(module : module) : funcidx* + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $funcidx_module{module : module}(module) = $free_module(module).FUNCS_free + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $dataidx_funcs(func*) : dataidx* + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $dataidx_funcs{`func*` : func*}(func#2*{func#2 <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).DATAS_free + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax init = + | SET + | UNSET + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax localtype = + | `%%`(init : init, valtype : valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_localtype: `%`(localtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule localtype_case_0{init : init, valtype : valtype}: + `%`(`%%`_localtype(init, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax instrtype = + | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : resulttype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_instrtype: `%`(instrtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule instrtype_case_0{resulttype : resulttype, `localidx*` : localidx*, resulttype_0 : resulttype}: + `%`(`%->_%%`_instrtype(resulttype, `localidx*`, resulttype_0)) + -- (wf_uN: `%%`(32, localidx))*{localidx <- `localidx*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax context = +{ + TYPES deftype*, + TAGS tagtype*, + GLOBALS globaltype*, + MEMS memtype*, + TABLES tabletype*, + FUNCS deftype*, + DATAS datatype*, + ELEMS elemtype*, + LOCALS localtype*, + LABELS resulttype*, + RETURN resulttype?, + REFS funcidx*, + RECS subtype* +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_context: `%`(context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule context_case_{var_0 : deftype*, var_1 : tagtype*, var_2 : globaltype*, var_3 : memtype*, var_4 : tabletype*, var_5 : deftype*, var_6 : datatype*, var_7 : elemtype*, var_8 : localtype*, var_9 : resulttype*, var_10 : resulttype?, var_11 : funcidx*, var_12 : subtype*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, RETURN var_10, REFS var_11, RECS var_12}) + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- (wf_globaltype: `%`(var_2))*{var_2 <- var_2} + -- (wf_memtype: `%`(var_3))*{var_3 <- var_3} + -- (wf_tabletype: `%`(var_4))*{var_4 <- var_4} + -- (wf_reftype: `%`(var_7))*{var_7 <- var_7} + -- (wf_localtype: `%`(var_8))*{var_8 <- var_8} + -- (wf_uN: `%%`(32, var_11))*{var_11 <- var_11} + -- (wf_subtype: `%`(var_12))*{var_12 <- var_12} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.158 +def $with_locals(context : context, localidx*, localtype*) : context? + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.34 + def $with_locals{C : context}(C, [], []) = ?(C) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:52.1-52.90 + def $with_locals{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x#1*{x#1 <- `x*`}, [lct_1] ++ lct#1*{lct#1 <- `lct*`}) = $with_locals(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) + def $with_locals{x0 : context, x1 : localidx*, x2 : localtype*}(x0, x1, x2) = ?() + -- otherwise +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation with_locals_is_wf: `%%%%`(context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule with_locals_is_wf_0{context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context}: + `%%%%`(context, var_0, var_1, ret_val) + -- wf_context: `%`(context) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_localtype: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($with_locals(context, var_0, var_1))) + -- wf_context: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 +def $clos_deftypes(deftype*) : deftype* + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 + def $clos_deftypes([]) = [] + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:72.1-72.101 + def $clos_deftypes{`dt*` : deftype*, dt_n : deftype}(dt#2*{dt#2 <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] + -- let{`dt'*` : deftype*} dt'#1*{dt'#1 <- `dt'*`} = $clos_deftypes(dt#3*{dt#3 <- `dt*`}) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_valtype(context : context, valtype : valtype) : valtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_valtype{C : context, t : valtype}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- let{`dt*` : deftype*} dt#4*{dt#4 <- `dt*`} = $clos_deftypes(C.TYPES_context) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_valtype_is_wf: `%%%`(context : context, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_valtype_is_wf_0{context : context, valtype : valtype, ret_val : valtype}: + `%%%`(context, valtype, ret_val) + -- wf_context: `%`(context) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $clos_valtype(context, valtype)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_deftype(context : context, deftype : deftype) : deftype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_deftype{C : context, dt : deftype}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) + -- let{`dt'*` : deftype*} dt'#2*{dt'#2 <- `dt'*`} = $clos_deftypes(C.TYPES_context) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_tagtype(context : context, tagtype : tagtype) : tagtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_tagtype{C : context, jt : typeuse}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- let{`dt*` : deftype*} dt#5*{dt#5 <- `dt*`} = $clos_deftypes(C.TYPES_context) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_externtype(context : context, externtype : externtype) : externtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_externtype{C : context, xt : externtype}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- let{`dt*` : deftype*} dt#6*{dt#6 <- `dt*`} = $clos_deftypes(C.TYPES_context) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_externtype_is_wf: `%%%`(context : context, externtype : externtype, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_externtype_is_wf_0{context : context, externtype : externtype, ret_val : externtype}: + `%%%`(context, externtype, ret_val) + -- wf_context: `%`(context) + -- wf_externtype: `%`(externtype) + -- if (ret_val = $clos_externtype(context, externtype)) + -- wf_externtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_moduletype(context : context, moduletype : moduletype) : moduletype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_moduletype{C : context, mmt : moduletype}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- let{`dt*` : deftype*} dt#7*{dt#7 <- `dt*`} = $clos_deftypes(C.TYPES_context) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_moduletype_is_wf: `%%%`(context : context, moduletype : moduletype, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_moduletype_is_wf_0{context : context, moduletype : moduletype, ret_val : moduletype}: + `%%%`(context, moduletype, ret_val) + -- wf_context: `%`(context) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $clos_moduletype(context, moduletype)) + -- wf_moduletype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Numtype_ok: `%|-%:OK`(context, numtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, numtype : numtype}: + `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Vectype_ok: `%|-%:OK`(context, vectype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, vectype : vectype}: + `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypenat = + | OK(nat) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Packtype_ok: `%|-%:OK`(context, packtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, packtype : packtype}: + `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, packtype : packtype}: + `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, numtype : numtype}: + `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand: `%~~%`(deftype, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: + `%~~%`(deftype, comptype) + -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- wf_subtype: `%`($unrolldt(deftype)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, vectype : vectype}: + `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $before(typeuse : typeuse, nat : nat) : bool + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{j : nat, i : nat}(REC_typeuse(j), i) = (j < i) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{typeuse : typeuse, i : nat}(typeuse, i) = true + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $unrollht_(context : context, heaptype : heaptype) : subtype + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht_{rectype : rectype, n : n, C : context}(C, _DEF_heaptype(rectype, n)) = $unrolldt(_DEF_deftype(rectype, n)) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht_{C : context, typeidx : uN}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[$proj_uN_0(typeidx).0]) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht_{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation unrollht__is_wf: `%%%`(context : context, heaptype : heaptype, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule unrollht__is_wf_0{context : context, heaptype : heaptype, ret_val : subtype}: + `%%%`(context, heaptype, ret_val) + -- wf_context: `%`(context) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = $unrollht_(context, heaptype)) + -- wf_subtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 +relation Heaptype_ok: `%|-%:OK`(context, heaptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 + rule abs{C : context, absheaptype : absheaptype}: + `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 + rule typeuse{C : context, typeuse : typeuse}: + `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 +relation Reftype_ok: `%|-%:OK`(context, reftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:30.1-32.37 + rule _{C : context, heaptype : heaptype}: + `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- Heaptype_ok: `%|-%:OK`(C, heaptype) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 +relation Valtype_ok: `%|-%:OK`(context, valtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:34.1-36.35 + rule num{C : context, numtype : numtype}: + `%|-%:OK`(C, (numtype : numtype <: valtype)) + -- Numtype_ok: `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 + rule vec{C : context, vectype : vectype}: + `%|-%:OK`(C, (vectype : vectype <: valtype)) + -- Vectype_ok: `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 + rule ref{C : context, reftype : reftype}: + `%|-%:OK`(C, (reftype : reftype <: valtype)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 +relation Typeuse_ok: `%|-%:OK`(context, typeuse) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:106.1-108.30 + rule typeidx{C : context, typeidx : typeidx, dt : deftype}: + `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 + rule rec{C : context, i : n, st : subtype}: + `%|-%:OK`(C, REC_typeuse(i)) + -- if (C.RECS_context[i] = st) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 + rule deftype{C : context, deftype : deftype}: + `%|-%:OK`(C, (deftype : deftype <: typeuse)) + -- Deftype_ok: `%|-%:OK`(C, deftype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 +relation Resulttype_ok: `%|-%:OK`(context, resulttype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:60.1-62.32 + rule _{C : context, `t*` : valtype*}: + `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 +relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:130.1-132.43 + rule _{C : context, storagetype : storagetype}: + `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- Storagetype_ok: `%|-%:OK`(C, storagetype) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 +relation Storagetype_ok: `%|-%:OK`(context, storagetype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:122.1-124.35 + rule val{C : context, valtype : valtype}: + `%|-%:OK`(C, (valtype : valtype <: storagetype)) + -- Valtype_ok: `%|-%:OK`(C, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 + rule pack{C : context, packtype : packtype}: + `%|-%:OK`(C, (packtype : packtype <: storagetype)) + -- Packtype_ok: `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 +relation Comptype_ok: `%|-%:OK`(context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:135.1-137.42 + rule struct{C : context, `fieldtype*` : fieldtype*}: + `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 + rule array{C : context, fieldtype : fieldtype}: + `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 + rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 +relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:167.1-176.49 + rule _{C : context, `typeuse*` : typeuse*, comptype : comptype, i : nat, `comptype'*` : comptype*, `typeuse'**` : typeuse**}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype), OK_oktypenat(i)) + -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) + -- (Typeuse_ok: `%|-%:OK`(C, typeuse))*{typeuse <- `typeuse*`} + -- (if $before(typeuse, i))*{typeuse <- `typeuse*`} + -- (if ($unrollht_(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- wf_context: `%`(C) + -- (wf_subtype: `%`($unrollht_(C, (typeuse : typeuse <: heaptype))))*{typeuse <- `typeuse*`} + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 +relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 + rule empty{C : context, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypenat(i)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypenat(i)) + -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) + -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypenat((i + 1))) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 +relation Deftype_ok: `%|-%:OK`(context, deftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:197.1-201.14 + rule _{C : context, rectype : rectype, i : n, n : n, `subtype*` : subtype*}: + `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) + -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) + -- if (i < n) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}}) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 +relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:181.1-183.41 + rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: + `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 + rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: + `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 + rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: + `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 +relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) + -- wf_context: `%`(C) + -- wf_subtype: `%`($unrolldt(deftype_1)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 +relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 + rule refl{C : context, heaptype : heaptype}: + `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 + rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: + `%|-%<:%`(C, heaptype_1, heaptype_2) + -- Heaptype_ok: `%|-%:OK`(C, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 + rule `eq-any`{C : context}: + `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 + rule `i31-eq`{C : context}: + `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 + rule `struct-eq`{C : context}: + `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 + rule `array-eq`{C : context}: + `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 + rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) + -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 + rule array{C : context, deftype : deftype, fieldtype : fieldtype}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) + -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 + rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) + -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 + rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 + rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: + `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype), heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 + rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: + `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 + rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 + rule `rec-array`{C : context, i : n, `final?` : final?, fieldtype : fieldtype}: + `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 + rule `rec-func`{C : context, i : n, `final?` : final?, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 + rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: + `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 + rule none{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NONE_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:86.1-89.25 + rule nofunc{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:91.1-94.25 + rule noexn{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:96.1-99.25 + rule noextern{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 + rule bot{C : context, heaptype : heaptype}: + `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 +relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:105.1-107.37 + rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 + rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 +relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:114.1-116.46 + rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: + `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) + -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 + rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: + `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) + -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 + rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: + `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 + rule bot{C : context, valtype : valtype}: + `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 +relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-137.37 + rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 +relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:162.1-164.46 + rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 + rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: + `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) + -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 +relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:171.1-173.40 + rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 + rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Localtype_ok: `%|-%:OK`(context, localtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, init : init, t : valtype}: + `%|-%:OK`(C, `%%`_localtype(init, t)) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Instrtype_ok: `%|-%:OK`(context, instrtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand_use: `%~~_%%`(typeuse, context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule deftype{deftype : deftype, C : context, comptype : comptype}: + `%~~_%%`((deftype : deftype <: typeuse), C, comptype) + -- Expand: `%~~%`(deftype, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: + `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidx = + | OK(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation wf_oktypeidx: `%`(oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule oktypeidx_case_0{typeidx : typeidx}: + `%`(OK_oktypeidx(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `comptype'*` : comptype*, `yy**` : typeuse**}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- if (|x*{x <- `x*`}| <= 1) + -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} + -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- wf_context: `%`(C) + -- (wf_subtype: `%`($unrolldt(C.TYPES_context[$proj_uN_0(x).0])))*{x <- `x*`} + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.126 +relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 + rule empty{C : context, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Limits_ok: `%|-%:%`(context, limits, nat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, n : n, `m?` : m?, k : nat}: + `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- if (n <= k) + -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tagtype_ok: `%|-%:OK`(context, tagtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, typeuse) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Globaltype_ok: `%|-%:OK`(context, globaltype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, t : valtype}: + `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Memtype_ok: `%|-%:OK`(context, memtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits}: + `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tabletype_ok: `%|-%:OK`(context, tabletype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: + `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Externtype_ok: `%|-%:OK`(context, externtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule tag{C : context, tagtype : tagtype}: + `%|-%:OK`(C, TAG_externtype(tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule global{C : context, globaltype : globaltype}: + `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mem{C : context, memtype : memtype}: + `%|-%:OK`(C, MEM_externtype(memtype)) + -- Memtype_ok: `%|-%:OK`(C, memtype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule table{C : context, tabletype : tabletype}: + `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: + `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- (wf_uN: `%%`(32, iter))*{iter <- $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Limits_sub: `%|-%<:%`(context, limits, limits) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + -- if (n_1 >= n_2) + -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule eps{C : context, n_1 : n, n_2 : n}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) + -- if (n_1 >= n_2) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: + `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: + `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: + `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: + `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: + `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: + `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) + -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule valtype{C : context, `valtype?` : valtype?}: + `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Catch_ok: `%|-%:OK`(context, catch) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_catch(x, l)) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all_ref{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +def $default_(valtype : valtype) : val?? + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(I32_valtype) = ?(?(CONST_val((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, `%`_uN(0))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(I64_valtype) = ?(?(CONST_val((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, `%`_uN(0))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(F32_valtype) = ?(?(CONST_val((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $fzero($size((F32_Fnn : Fnn <: numtype))))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(F64_valtype) = ?(?(CONST_val((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $fzero($size((F64_Fnn : Fnn <: numtype))))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(V128_valtype) = ?(?(VCONST_val(V128_vectype, `%`_vec_(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) + def $default_{x0 : valtype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation default__is_wf: `%%`(valtype : valtype, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule default__is_wf_0{valtype : valtype, ret_val : val?}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if (ret_val = !($default_(valtype))) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Defaultable: `|-%DEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%DEFAULTABLE`(t) + -- if (!($default_(t)) =/= ?()) + -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{n : n, m : m, at : addrtype, N : N}: + `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) + -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- if (m < (2 ^ $size((at : addrtype <: numtype)))) + -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +def $is_packtype(storagetype : storagetype) : bool + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + def $is_packtype{zt : storagetype}(zt) = (zt =/= ($unpack(zt) : valtype <: storagetype)) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 +relation Instr_ok: `%|-%:%`(context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 + rule nop{C : context}: + `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 + rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 + rule drop{C : context, t : valtype}: + `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 + rule `select-expl`{C : context, t : valtype}: + `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 + rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Valtype_sub: `%|-%<:%`(C, t, t') + -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 + rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 + rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 + rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 + rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 + rule br_if{C : context, l : labelidx, `t*` : valtype*}: + `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 + rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 + rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 + rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`($diffrt(rt_1, rt_2)) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 + rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 + rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 + rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: + `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 + rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 + rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 + rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 + rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 + rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 + rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 + rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 + rule `ref.null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.NULL`_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 + rule `ref.func`{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + -- if (x <- C.REFS_context) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.FUNC`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 + rule `ref.i31`{C : context}: + `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.I31`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 + rule `ref.is_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 + rule `ref.as_non_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 + rule `ref.eq`{C : context}: + `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 + rule `ref.test`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.TEST`_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 + rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.CAST`_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 + rule `i31.get`{C : context, sx : sx}: + `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 + rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 + rule `struct.new_default`{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} + -- wf_context: `%`(C) + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} + -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 + rule `struct.get`{C : context, `sx?` : sx?, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: + `%|-%:%`(C, `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 + rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*}: + `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 + rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 + rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype}: + `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 + rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 + rule `array.new_elem`{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: + `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) + -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 + rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 + rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 + rule `array.set`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 + rule `array.len`{C : context}: + `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.LEN`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 + rule `array.fill`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 + rule `array.copy`{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 + rule `array.init_elem`{C : context, x : idx, y : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[$proj_uN_0(y).0] : reftype <: storagetype), zt) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 + rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 + rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + -- wf_context: `%`(C) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 + rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 + rule `local.get`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 + rule `local.set`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 + rule `local.tee`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 + rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: + `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 + rule `global.set`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 + rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 + rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 + rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 + rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: + `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.GROW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 + rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 + rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) + -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 + rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) + -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 + rule `elem.drop`{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: + `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) + -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + rule `data.drop`{C : context, x : idx}: + `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) + -- wf_context: `%`(C) + -- wf_instr: `%`(`DATA.DROP`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 + rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 + rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 + rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 + rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 + rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 + rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 + rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 + rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 + rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 + rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 + rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 + rule unop{C : context, nt : numtype, unop_nt : unop_}: + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 + rule binop{C : context, nt : numtype, binop_nt : binop_}: + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 + rule testop{C : context, nt : numtype, testop_nt : testop_}: + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 + rule relop{C : context, nt : numtype, relop_nt : relop_}: + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 + rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 + rule vconst{C : context, c : vec_}: + `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 + rule vvunop{C : context, vvunop : vvunop}: + `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 + rule vvbinop{C : context, vvbinop : vvbinop}: + `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 + rule vvternop{C : context, vvternop : vvternop}: + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 + rule vvtestop{C : context, vvtestop : vvtestop}: + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 + rule vunop{C : context, sh : shape, vunop : vunop_}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 + rule vternop{C : context, sh : shape, vternop : vternop_}: + `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 + rule vbitmask{C : context, sh : ishape}: + `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 + rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 + rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: + `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} + -- wf_context: `%`(C) + -- wf_dim: `%`($dim($proj_bshape_0(sh).0)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 + rule vsplat{C : context, sh : shape}: + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 + rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- wf_context: `%`(C) + -- wf_dim: `%`($dim(sh)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 + rule vreplace_lane{C : context, sh : shape, i : laneidx}: + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- wf_context: `%`(C) + -- wf_dim: `%`($dim(sh)) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 + rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 + rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 + rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 + rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 + rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 +relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 + rule empty{C : context}: + `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 + rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: + `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 + rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 + rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) +} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok: `%|-%:%`(context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*, `t*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%NONDEFAULTABLE`(t) + -- if (!($default_(t)) = ?()) + -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Instr_const: `%|-%CONST`(context, instr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule vconst{C : context, vt : vectype, c_vt : vec_}: + `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.null`{C : context, ht : heaptype}: + `%|-%CONST`(C, `REF.NULL`_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.NULL`_instr(ht)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.i31`{C : context}: + `%|-%CONST`(C, `REF.I31`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.I31`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.func`{C : context, x : idx}: + `%|-%CONST`(C, `REF.FUNC`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.FUNC`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `struct.new`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `struct.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new_fixed`{C : context, x : idx, n : n}: + `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `any.convert_extern`{C : context}: + `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `extern.convert_any`{C : context}: + `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `global.get`{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule binop{C : context, Inn : Inn, binop : binop_}: + `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) + -- if (Inn <- [I32_Inn I64_Inn]) + -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_const: `%|-%CONST`(context, expr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*}: + `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, expr : expr, t : valtype}: + `%|-%:%CONST`(C, expr, t) + -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) + -- Expr_const: `%|-%CONST`(C, expr) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Type_ok: `%|-%:%`(context, type, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: + `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- if ($proj_uN_0(x).0 = |C.TYPES_context|) + -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) + -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Tag_ok: `%|-%:%`(context, tag, tagtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tagtype : tagtype}: + `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + -- wf_context: `%`(C) + -- wf_typeuse: `%`($clos_tagtype(C, tagtype)) + -- wf_tag: `%`(TAG_tag(tagtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Global_ok: `%|-%:%`(context, global, globaltype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: + `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Mem_ok: `%|-%:%`(context, mem, memtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, memtype : memtype}: + `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- Memtype_ok: `%|-%:OK`(C, memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Table_ok: `%|-%:%`(context, table, tabletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- if (tabletype = `%%%`_tabletype(at, lim, rt)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Local_ok: `%|-%:%`(context, local, localtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule set{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- Defaultable: `|-%DEFAULTABLE`(t) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule unset{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- Nondefaultable: `|-%NONDEFAULTABLE`(t) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Func_ok: `%|-%:%`(context, func, deftype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Datamode_ok: `%|-%:%`(context, datamode, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context}: + `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: + `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Data_ok: `%|-%:%`(context, data, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, `b*` : byte*, datamode : datamode}: + `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context, rt : reftype}: + `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule declare{C : context, rt : reftype}: + `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: + `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elem_ok: `%|-%:%`(context, elem, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: + `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- Reftype_ok: `%|-%:OK`(C, elemtype) + -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} + -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Start_ok: `%|-%:OK`(context, start) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx}: + `%|-%:OK`(C, START_start(x)) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Import_ok: `%|-%:%`(context, import, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + -- Externtype_ok: `%|-%:OK`(C, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`($clos_externtype(C, xt)) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Externidx_ok: `%|-%:%`(context, externidx, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule tag{C : context, x : idx, jt : tagtype}: + `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule global{C : context, x : idx, gt : globaltype}: + `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mem{C : context, x : idx, mt : memtype}: + `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule table{C : context, x : idx, tt : tabletype}: + `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Export_ok: `%|-%:%%`(context, export, name, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name : name, externidx : externidx, xt : externtype}: + `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- Externidx_ok: `%|-%:%`(C, externidx, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 +relation Globals_ok: `%|-%:%`(context, global*, globaltype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 + rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: + `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- Global_ok: `%|-%:%`(C, global_1, gt_1) + -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 +relation Types_ok: `%|-%:%`(context, type*, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 + rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: + `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) + -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +syntax nonfuncs = + | `%%%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation wf_nonfuncs: `%`(nonfuncs) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}: + `%`(`%%%%%%`_nonfuncs(`global*`, `mem*`, `table*`, `elem*`, `start?`, `export*`)) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_mem: `%`(mem))*{mem <- `mem*`} + -- (wf_table: `%`(table))*{table <- `table*`} + -- (wf_elem: `%`(elem))*{elem <- `elem*`} + -- (wf_start: `%`(start))?{start <- `start?`} + -- (wf_export: `%`(export))*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}(`%%%%%%`_nonfuncs(global#2*{global#2 <- `global*`}, mem#2*{mem#2 <- `mem*`}, table#2*{table#2 <- `table*`}, elem#2*{elem#2 <- `elem*`}, start#2?{start#2 <- `start?`}, export#2*{export#2 <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Module_ok: `|-%:%`(module, moduletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: + `|-%:%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) + -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} + -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} + -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} + -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} + -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} + -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} + -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} + -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} + -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) + -- if (C = C' +++ {TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) + -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}))) + -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) + -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_moduletype: `%`($clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- (wf_uN: `%%`(32, iter))*{iter <- $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}))} + -- (wf_typeuse: `%`(iter))*{iter <- $tagsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_globaltype: `%`(iter))*{iter <- $globalsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_memtype: `%`(iter))*{iter <- $memsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_tabletype: `%`(iter))*{iter <- $tablesxt(xt_I*{xt_I <- `xt_I*`})} + -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) + -- wf_nonfuncs: `%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed2 = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed2_0(x : relaxed2) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed2_0{v_num_0 : nat}(`%`_relaxed2(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed2: `%`(relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed2_case_0{i : nat}: + `%`(`%`_relaxed2(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed4 = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed4_0(x : relaxed4) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed4_0{v_num_0 : nat}(`%`_relaxed4(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed4: `%`(relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed4_case_0{i : nat}: + `%`(`%`_relaxed4(i)) + -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = (if $ND then [X_1 X_2][$proj_relaxed2_0(i).0] else [X_1 X_2][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][$proj_relaxed4_0(i).0] else [X_1 X_2 X_3 X_4][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmadd : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmadd_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmadd_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_fmadd) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmin : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmin_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmin_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmin) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmax : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmax_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmax_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmax) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_idot : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_idot_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_idot_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_idot) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_iq15mulr : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_iq15mulr_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_iq15mulr_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_iq15mulr) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_u : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_u_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_u_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_trunc_u) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_s : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_s_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_s_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_trunc_s) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_swizzle : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_swizzle_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_swizzle_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_swizzle) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_laneselect : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_laneselect_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_laneselect_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_laneselect) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $s33_to_u32(s33 : s33) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibits_(N : N, iN : iN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibits__is_wf: `%%%`(N : N, iN : iN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibits__is_wf_0{N : N, iN : iN, ret_val : bit*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibits_(N, iN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbits_(N : N, fN : fN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbits__is_wf: `%%%`(N : N, fN : fN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbits__is_wf_0{N : N, fN : fN, ret_val : bit*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbits_(N, fN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibytes_(N : N, iN : iN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibytes__is_wf: `%%%`(N : N, iN : iN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibytes__is_wf_0{N : N, iN : iN, ret_val : byte*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibytes_(N, iN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbytes_(N : N, fN : fN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbytes__is_wf: `%%%`(N : N, fN : fN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbytes__is_wf_0{N : N, fN : fN, ret_val : byte*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbytes_(N, fN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $nbytes_(numtype : numtype, num_ : num_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation nbytes__is_wf: `%%%`(numtype : numtype, num_ : num_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule nbytes__is_wf_0{numtype : numtype, num_ : num_, ret_val : byte*}: + `%%%`(numtype, num_, ret_val) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $nbytes_(numtype, num_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $vbytes_(vectype : vectype, vec_ : vec_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation vbytes__is_wf: `%%%`(vectype : vectype, vec_ : vec_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule vbytes__is_wf_0{vectype : vectype, vec_ : vec_, ret_val : byte*}: + `%%%`(vectype, vec_, ret_val) + -- wf_uN: `%%`($vsize(vectype), vec_) + -- if (ret_val = $vbytes_(vectype, vec_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zbytes__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zbytes__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : byte*}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $zbytes_(storagetype, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cbytes__is_wf: `%%%`(Cnn : Cnn, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cbytes__is_wf_0{Cnn : Cnn, lit_ : lit_, ret_val : byte*}: + `%%%`(Cnn, lit_, ret_val) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), lit_) + -- if (ret_val = $cbytes_(Cnn, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibits_(N : N, bit*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbits_(N : N, bit*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbits__is_wf: `%%%`(N : N, var_0 : bit*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbits__is_wf_0{N : N, var_0 : bit*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_bit: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbits_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibytes_(N : N, byte*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbytes_(N : N, byte*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbytes__is_wf: `%%%`(N : N, var_0 : byte*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbytes__is_wf_0{N : N, var_0 : byte*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbytes_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_nbytes_(numtype : numtype, byte*) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_nbytes__is_wf: `%%%`(numtype : numtype, var_0 : byte*, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_nbytes__is_wf_0{numtype : numtype, var_0 : byte*, ret_val : num_}: + `%%%`(numtype, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_nbytes_(numtype, var_0)) + -- wf_num_: `%%`(numtype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_vbytes_(vectype : vectype, byte*) : vec_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_zbytes__is_wf: `%%%`(storagetype : storagetype, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_zbytes__is_wf_0{storagetype : storagetype, var_0 : byte*, ret_val : lit_}: + `%%%`(storagetype, var_0, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_zbytes_(storagetype, var_0)) + -- wf_lit_: `%%`(storagetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_cbytes__is_wf: `%%%`(Cnn : Cnn, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_cbytes__is_wf_0{Cnn : Cnn, var_0 : byte*, ret_val : lit_}: + `%%%`(Cnn, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_cbytes_(Cnn, var_0)) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $signed_(N : N, nat : nat) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $signed_{N : nat, i : nat}(N, i) = (i : nat <:> int) + -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $signed_{N : nat, i : nat}(N, i) = ((i : nat <:> int) - ((2 ^ N) : nat <:> int)) + -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_signed_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inv_signed_{N : nat, i : int}(N, i) = (i : int <:> nat) + -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inv_signed_{N : nat, i : int}(N, i) = ((i + ((2 ^ N) : nat <:> int)) : int <:> nat) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sx(storagetype : storagetype) : sx?? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(F32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(F64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(V128_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I8_storagetype) = ?(?(S_sx)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I16_storagetype) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zero(lanetype : lanetype) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(F32_lanetype) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $fzero($size((F32_Fnn : Fnn <: numtype))))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(F64_lanetype) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $fzero($size((F64_Fnn : Fnn <: numtype))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zero_is_wf: `%%`(lanetype : lanetype, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zero_is_wf_0{lanetype : lanetype, ret_val : lane_}: + `%%`(lanetype, ret_val) + -- if (ret_val = $zero(lanetype)) + -- wf_lane_: `%%`(lanetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $bool(bool : bool) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(false) = 0 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(true) = 1 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $truncz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ceilz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_u_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_u_{N : nat, i : int}(N, i) = (if (i < (0 : nat <:> int)) then 0 else (if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) then ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) else (i : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_s_(N : N, int : int) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_s_{N : nat, i : int}(N, i) = (if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) then - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) else (if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) then (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) else i)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ineg_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iabs_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iabs_{N : nat, i_1 : uN}(N, i_1) = (if ($signed_(N, $proj_uN_0(i_1).0) >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iclz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ictz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ipopcnt_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imul_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?() + -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)) then i_1 else i_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)) then i_1 else i_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_q15mulr_(N : N, sx : sx, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iavgr_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inot_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irev_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iand_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iandnot_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ior_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ixor_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishl_(N : N, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishr_(N : N, sx : sx, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotl_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotr_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibitselect_(N : N, iN : iN, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieqz_(N : N, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inez_(N : N, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieq_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ine_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fabs_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fabs__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fabs__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fabs_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fneg_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fneg__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fneg__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fneg_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsqrt_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsqrt__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsqrt__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fsqrt_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fceil_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fceil__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fceil__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fceil_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ffloor_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ffloor__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ffloor__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ffloor_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ftrunc_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ftrunc__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ftrunc__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ftrunc_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fnearest_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fnearest__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fnearest__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fnearest_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fadd_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fadd__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fadd__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fadd_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsub_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsub__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsub__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fsub_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmul_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmul__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmul__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmul_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fdiv_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fdiv__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fdiv__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fdiv_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmin__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmax__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmin__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmax__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_min__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_min__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_min_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_max__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_max__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_max_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fcopysign_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fcopysign__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fcopysign__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fcopysign_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $feq_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fne_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $flt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fgt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fle_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fge_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_madd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_madd__is_wf_0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_madd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_nmadd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_nmadd__is_wf_0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_nmadd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $wrap__(M : M, N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $extend__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc_sat__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $demote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation demote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule demote___is_wf_0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $demote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $promote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation promote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule promote___is_wf_0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $promote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $convert__(M : M, N : N, sx : sx, iN : iN) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation convert___is_wf: `%%%%%`(M : M, N : N, sx : sx, iN : iN, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule convert___is_wf_0{M : M, N : N, sx : sx, iN : iN, ret_val : fN}: + `%%%%%`(M, N, sx, iN, ret_val) + -- wf_uN: `%%`(M, iN) + -- if (ret_val = $convert__(M, N, sx, iN)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation reinterpret___is_wf: `%%%%`(numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule reinterpret___is_wf_0{numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_}: + `%%%%`(numtype_1, numtype_2, num_, ret_val) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $reinterpret__(numtype_1, numtype_2, num_)) + -- wf_num_: `%%`(numtype_2, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack((I8_packtype : packtype <: lanetype))), $psize(I8_packtype), c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack((I16_packtype : packtype <: lanetype))), $psize(I16_packtype), c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lpacknum__is_wf: `%%%`(lanetype : lanetype, num_ : num_, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lpacknum__is_wf_0{lanetype : lanetype, num_ : num_, ret_val : lane_}: + `%%%`(lanetype, num_, ret_val) + -- wf_num_: `%%`($lunpack(lanetype), num_) + -- if (ret_val = $lpacknum_(lanetype, num_)) + -- wf_lane_: `%%`(lanetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(I32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(I64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(F32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(F64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(V128_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack((I8_packtype : packtype <: lanetype))), $psize(I8_packtype), c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack((I16_packtype : packtype <: lanetype))), $psize(I16_packtype), c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cpacknum__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`((!($cunpack(storagetype)) : consttype <: storagetype), lit_) + -- if (ret_val = $cpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`(storagetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(I32_lanetype, mk_lane__0_lane_(I32_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(I64_lanetype, mk_lane__0_lane_(I64_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(F32_lanetype, mk_lane__0_lane_(F32_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack((I8_packtype : packtype <: lanetype))), U_sx, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack((I16_packtype : packtype <: lanetype))), U_sx, c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lunpacknum__is_wf: `%%%`(lanetype : lanetype, lane_ : lane_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lunpacknum__is_wf_0{lanetype : lanetype, lane_ : lane_, ret_val : num_}: + `%%%`(lanetype, lane_, ret_val) + -- wf_lane_: `%%`(lanetype, lane_) + -- if (ret_val = $lunpacknum_(lanetype, lane_)) + -- wf_num_: `%%`($lunpack(lanetype), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(I32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(I64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(F32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(F64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(V128_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack((I8_packtype : packtype <: lanetype))), U_sx, c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack((I16_packtype : packtype <: lanetype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cunpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cunpacknum__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $cunpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`((!($cunpack(storagetype)) : consttype <: storagetype), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn((I32_Inn : addrtype <: numtype)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn((I64_Inn : addrtype <: numtype)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn((I32_Inn : addrtype <: numtype)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn((I64_Inn : addrtype <: numtype)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn((I32_Inn : addrtype <: numtype)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn((I64_Inn : addrtype <: numtype)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn((I32_Inn : addrtype <: numtype)), M, S_sx, i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn((I64_Inn : addrtype <: numtype)), M, S_sx, i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#1)*{iter_0#1 <- $fabs_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#3)*{iter_0#3 <- $fneg_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fneg_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#5)*{iter_0#5 <- $fsqrt_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#6)*{iter_0#6 <- $fsqrt_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#7)*{iter_0#7 <- $fceil_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fceil_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#9)*{iter_0#9 <- $ffloor_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#10)*{iter_0#10 <- $ffloor_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#11)*{iter_0#11 <- $ftrunc_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $ftrunc_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#13)*{iter_0#13 <- $fnearest_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#14)*{iter_0#14 <- $fnearest_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation unop__is_wf: `%%%%`(numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule unop__is_wf_0{numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*}: + `%%%%`(numtype, unop_, num_, ret_val) + -- wf_unop_: `%%`(numtype, unop_) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $unop_(numtype, unop_, num_)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#15)*{iter_0#15 <- lift($idiv_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#16)*{iter_0#16 <- lift($idiv_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#17)*{iter_0#17 <- lift($irem_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#18)*{iter_0#18 <- lift($irem_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn((I32_Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn((I64_Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#19)*{iter_0#19 <- $fadd_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $fadd_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#21)*{iter_0#21 <- $fsub_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#22)*{iter_0#22 <- $fsub_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#23)*{iter_0#23 <- $fmul_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $fmul_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#25)*{iter_0#25 <- $fdiv_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#26)*{iter_0#26 <- $fdiv_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#27)*{iter_0#27 <- $fmin_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fmin_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#29)*{iter_0#29 <- $fmax_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#30)*{iter_0#30 <- $fmax_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#31)*{iter_0#31 <- $fcopysign_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#32)*{iter_0#32 <- $fcopysign_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation binop__is_wf: `%%%%%`(numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule binop__is_wf_0{numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*}: + `%%%%%`(numtype, binop_, num_, num__0, ret_val) + -- wf_binop_: `%%`(numtype, binop_) + -- wf_num_: `%%`(numtype, num_) + -- wf_num_: `%%`(numtype, num__0) + -- if (ret_val = $binop_(numtype, binop_, num_, num__0)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $testop_{i : uN}(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i)) = $ieqz_($sizenn((I32_Inn : addrtype <: numtype)), i) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $testop_{i : uN}(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i)) = $ieqz_($sizenn((I64_Inn : addrtype <: numtype)), i) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ieq_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ieq_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ine_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ine_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ilt_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ilt_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $igt_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $igt_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ile_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ile_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ige_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ige_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $feq_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $feq_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fne_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fne_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $flt_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $flt_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fgt_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fgt_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fle_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fle_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fge_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fge_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#33)*{iter_0#33 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#35)*{iter_0#35 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#37)*{iter_0#37 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#38)*{iter_0#38 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#39)*{iter_0#39 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#40)*{iter_0#40 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#41)*{iter_0#41 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#43)*{iter_0#43 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#45)*{iter_0#45 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#47)*{iter_0#47 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__((I32_Inn : addrtype <: numtype), (F32_Fnn : Fnn <: numtype), mk_num__0_num_(I32_Inn, i_1))] + -- if ($size((I32_Inn : addrtype <: numtype)) = $size((F32_Fnn : Fnn <: numtype))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__((I64_Inn : addrtype <: numtype), (F32_Fnn : Fnn <: numtype), mk_num__0_num_(I64_Inn, i_1))] + -- if ($size((I64_Inn : addrtype <: numtype)) = $size((F32_Fnn : Fnn <: numtype))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__((I32_Inn : addrtype <: numtype), (F64_Fnn : Fnn <: numtype), mk_num__0_num_(I32_Inn, i_1))] + -- if ($size((I32_Inn : addrtype <: numtype)) = $size((F64_Fnn : Fnn <: numtype))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__((I64_Inn : addrtype <: numtype), (F64_Fnn : Fnn <: numtype), mk_num__0_num_(I64_Inn, i_1))] + -- if ($size((I64_Inn : addrtype <: numtype)) = $size((F64_Fnn : Fnn <: numtype))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__((F32_Fnn : Fnn <: numtype), (I32_Inn : addrtype <: numtype), mk_num__1_num_(F32_Fnn, f_1))] + -- if ($size((F32_Fnn : Fnn <: numtype)) = $size((I32_Inn : addrtype <: numtype))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__((F64_Fnn : Fnn <: numtype), (I32_Inn : addrtype <: numtype), mk_num__1_num_(F64_Fnn, f_1))] + -- if ($size((F64_Fnn : Fnn <: numtype)) = $size((I32_Inn : addrtype <: numtype))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__((F32_Fnn : Fnn <: numtype), (I64_Inn : addrtype <: numtype), mk_num__1_num_(F32_Fnn, f_1))] + -- if ($size((F32_Fnn : Fnn <: numtype)) = $size((I64_Inn : addrtype <: numtype))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__((F64_Fnn : Fnn <: numtype), (I64_Inn : addrtype <: numtype), mk_num__1_num_(F64_Fnn, f_1))] + -- if ($size((F64_Fnn : Fnn <: numtype)) = $size((I64_Inn : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cvtop___is_wf: `%%%%%`(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cvtop___is_wf_0{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*}: + `%%%%%`(numtype_1, numtype_2, cvtop__, num_, ret_val) + -- wf_cvtop__: `%%%`(numtype_1, numtype_2, cvtop__) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $cvtop__(numtype_1, numtype_2, cvtop__, num_)) + -- (wf_num_: `%%`(numtype_2, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lanes_(shape : shape, vec_ : vec_) : lane_* + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lanes__is_wf: `%%%`(shape : shape, vec_ : vec_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lanes__is_wf_0{shape : shape, vec_ : vec_, ret_val : lane_*}: + `%%%`(shape, vec_, ret_val) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(128, vec_) + -- if (ret_val = $lanes_(shape, vec_)) + -- (wf_lane_: `%%`($lanetype(shape), ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $inv_lanes_(shape : shape, lane_*) : vec_ + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : zero? + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3037?{half#3037 <- `half?`}, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3038?{half#3038 <- `half?`}, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3039?{half#3039 <- `half?`}, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3040?{half#3040 <- `half?`}, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3041?{half#3041 <- `half?`}, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3042?{half#3042 <- `half?`}, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3043?{half#3043 <- `half?`}, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3044?{half#3044 <- `half?`}, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3441?{zero#3441 <- `zero?`}))) = zero#3442?{zero#3442 <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3443?{zero#3443 <- `zero?`}))) = zero#3444?{zero#3444 <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3445?{zero#3445 <- `zero?`}))) = zero#3446?{zero#3446 <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3447?{zero#3447 <- `zero?`}))) = zero#3448?{zero#3448 <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3449?{zero#3449 <- `zero?`}))) = zero#3450?{zero#3450 <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3451?{zero#3451 <- `zero?`}))) = zero#3452?{zero#3452 <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3453?{zero#3453 <- `zero?`}))) = zero#3454?{zero#3454 <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3455?{zero#3455 <- `zero?`}))) = zero#3456?{zero#3456 <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3457?{zero#3457 <- `zero?`}))) = zero#3458?{zero#3458 <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3459?{zero#3459 <- `zero?`}))) = zero#3460?{zero#3460 <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3461?{zero#3461 <- `zero?`}))) = zero#3462?{zero#3462 <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3463?{zero#3463 <- `zero?`}))) = zero#3464?{zero#3464 <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3465?{zero#3465 <- `zero?`}))) = zero#3466?{zero#3466 <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3467?{zero#3467 <- `zero?`}))) = zero#3468?{zero#3468 <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3469?{zero#3469 <- `zero?`}))) = zero#3470?{zero#3470 <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3471?{zero#3471 <- `zero?`}))) = zero#3472?{zero#3472 <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : half? + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3045?{half#3045 <- `half?`}, sx))) = half#3046?{half#3046 <- `half?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3047?{half#3047 <- `half?`}, sx))) = half#3048?{half#3048 <- `half?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3049?{half#3049 <- `half?`}, sx))) = half#3050?{half#3050 <- `half?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3051?{half#3051 <- `half?`}, sx))) = half#3052?{half#3052 <- `half?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3053?{half#3053 <- `half?`}, sx))) = half#3054?{half#3054 <- `half?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3055?{half#3055 <- `half?`}, sx))) = half#3056?{half#3056 <- `half?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3057?{half#3057 <- `half?`}, sx))) = half#3058?{half#3058 <- `half?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3059?{half#3059 <- `half?`}, sx))) = half#3060?{half#3060 <- `half?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3473?{zero#3473 <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3474?{zero#3474 <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3475?{zero#3475 <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3476?{zero#3476 <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3477?{zero#3477 <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3478?{zero#3478 <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3479?{zero#3479 <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3480?{zero#3480 <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3481?{zero#3481 <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3482?{zero#3482 <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3483?{zero#3483 <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3484?{zero#3484 <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3485?{zero#3485 <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3486?{zero#3486 <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3487?{zero#3487 <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3488?{zero#3488 <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $half(half : half, nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(LOW_half, i, j) = i + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(HIGH_half, i, j) = j + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $iswizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#1*{c#1 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#2*{c#2 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#4)*{c#4 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#1*{c_1#1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#3*{c#3 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#2)))*{c_1#2 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#5))*{iter#5 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#3)))))*{c_1#3 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#6)*{c#6 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#4*{c_1#4 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#5*{c#5 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#5)))*{c_1#5 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#6))*{iter#6 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#6)))))*{c_1#6 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#8)*{c#8 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#7*{c_1#7 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#7*{c#7 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#8)))*{c_1#8 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#7))*{iter#7 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#9)))))*{c_1#9 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#10)*{c#10 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#10*{c_1#10 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#9*{c#9 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#11)))*{c_1#11 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#8))*{iter#8 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#12)))))*{c_1#12 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c#12*{c#12 <- `c*#2`})*{`c*#2` <- `c**`} + -- let{`c_1*` : lane_*} c_1#13*{c_1#13 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#11*{c#11 <- `c*#1`}*{`c*#1` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#49))*{iter_0#49 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#14)))))}*{c_1#14 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#9))*{iter#9 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), iter#11))*{iter#11 <- iter#10}*{iter#10 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#50))*{iter_0#50 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#15)))))}*{c_1#15 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn((F32_Fnn : Fnn <: numtype)), iter#12))*{iter#12 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#16)))))}*{c_1#16 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#51))))*{iter_0#51 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#17)))))}*{c_1#17 <- `c_1*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c#14*{c#14 <- `c*#4`})*{`c*#4` <- `c**`} + -- let{`c_1*` : lane_*} c_1#18*{c_1#18 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#13*{c#13 <- `c*#3`}*{`c*#3` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#52))*{iter_0#52 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#19)))))}*{c_1#19 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#13))*{iter#13 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), iter#15))*{iter#15 <- iter#14}*{iter#14 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#53))*{iter_0#53 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#20)))))}*{c_1#20 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn((F64_Fnn : Fnn <: numtype)), iter#16))*{iter#16 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#21)))))}*{c_1#21 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#54))))*{iter_0#54 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#22)))))}*{c_1#22 <- `c_1*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#16)*{c#16 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#23*{c_1#23 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#1*{c_2#1 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#15*{c#15 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#24)), !($proj_lane__2(c_2#2)))*{c_1#24 <- `c_1*`, c_2#2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#17))*{iter#17 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#18))*{iter#18 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#25)), !($proj_lane__2(c_2#3)))))*{c_1#25 <- `c_1*`, c_2#3 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#18)*{c#18 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#26*{c_1#26 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#4*{c_2#4 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#17*{c#17 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#27)), !($proj_lane__2(c_2#5)))*{c_1#27 <- `c_1*`, c_2#5 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#19))*{iter#19 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#20))*{iter#20 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#28)), !($proj_lane__2(c_2#6)))))*{c_1#28 <- `c_1*`, c_2#6 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#20)*{c#20 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#29*{c_1#29 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#7*{c_2#7 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#19*{c#19 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#30)), !($proj_lane__2(c_2#8)))*{c_1#30 <- `c_1*`, c_2#8 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#21))*{iter#21 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#22))*{iter#22 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#31)), !($proj_lane__2(c_2#9)))))*{c_1#31 <- `c_1*`, c_2#9 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#22)*{c#22 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#32*{c_1#32 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#10*{c_2#10 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#21*{c#21 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#33)), !($proj_lane__2(c_2#11)))*{c_1#33 <- `c_1*`, c_2#11 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#23))*{iter#23 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#24))*{iter#24 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#34)), !($proj_lane__2(c_2#12)))))*{c_1#34 <- `c_1*`, c_2#12 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#24)*{c#24 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#35*{c_1#35 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#13*{c_2#13 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#23*{c#23 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#36)), !($proj_lane__2(c_2#14)))*{c_1#36 <- `c_1*`, c_2#14 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#25))*{iter#25 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#26))*{iter#26 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#37)), !($proj_lane__2(c_2#15)))))*{c_1#37 <- `c_1*`, c_2#15 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#26)*{c#26 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#38*{c_1#38 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#16*{c_2#16 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#25*{c#25 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#39)), !($proj_lane__2(c_2#17)))*{c_1#39 <- `c_1*`, c_2#17 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#27))*{iter#27 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#28))*{iter#28 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#40)), !($proj_lane__2(c_2#18)))))*{c_1#40 <- `c_1*`, c_2#18 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#28)*{c#28 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#41*{c_1#41 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#19*{c_2#19 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#27*{c#27 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#42)), !($proj_lane__2(c_2#20)))*{c_1#42 <- `c_1*`, c_2#20 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#29))*{iter#29 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#30))*{iter#30 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#43)), !($proj_lane__2(c_2#21)))))*{c_1#43 <- `c_1*`, c_2#21 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#30)*{c#30 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#44*{c_1#44 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#22*{c_2#22 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#29*{c#29 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#45)), !($proj_lane__2(c_2#23)))*{c_1#45 <- `c_1*`, c_2#23 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#31))*{iter#31 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#32))*{iter#32 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#46)), !($proj_lane__2(c_2#24)))))*{c_1#46 <- `c_1*`, c_2#24 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c#32*{c#32 <- `c*#6`})*{`c*#6` <- `c**`} + -- let{`c_1*` : lane_*} c_1#47*{c_1#47 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#25*{c_2#25 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#31*{c#31 <- `c*#5`}*{`c*#5` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#55)*{iter_0#55 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#48)), !($proj_lane__2(c_2#26)))}*{c_1#48 <- `c_1*`, c_2#26 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#33))*{iter#33 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#34))*{iter#34 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), iter#36))*{iter#36 <- iter#35}*{iter#35 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#56)*{iter_0#56 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#49)), !($proj_lane__2(c_2#27)))}*{c_1#49 <- `c_1*`, c_2#27 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#37))*{iter#37 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#50)), !($proj_lane__2(c_2#28)))}*{c_1#50 <- `c_1*`, c_2#28 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I32_Jnn, iter_0#57)))*{iter_0#57 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#51)), !($proj_lane__2(c_2#29)))}*{c_1#51 <- `c_1*`, c_2#29 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c#34*{c#34 <- `c*#8`})*{`c*#8` <- `c**`} + -- let{`c_1*` : lane_*} c_1#52*{c_1#52 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#30*{c_2#30 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#33*{c#33 <- `c*#7`}*{`c*#7` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#58)*{iter_0#58 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#53)), !($proj_lane__2(c_2#31)))}*{c_1#53 <- `c_1*`, c_2#31 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#38))*{iter#38 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#39))*{iter#39 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), iter#41))*{iter#41 <- iter#40}*{iter#40 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#59)*{iter_0#59 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#54)), !($proj_lane__2(c_2#32)))}*{c_1#54 <- `c_1*`, c_2#32 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#42))*{iter#42 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#55)), !($proj_lane__2(c_2#33)))}*{c_1#55 <- `c_1*`, c_2#33 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I64_Jnn, iter_0#60)))*{iter_0#60 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#56)), !($proj_lane__2(c_2#34)))}*{c_1#56 <- `c_1*`, c_2#34 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c#36*{c#36 <- `c*#10`})*{`c*#10` <- `c**`} + -- let{`c_1*` : lane_*} c_1#57*{c_1#57 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#35*{c_2#35 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#35*{c#35 <- `c*#9`}*{`c*#9` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#61)*{iter_0#61 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#58)), !($proj_lane__2(c_2#36)))}*{c_1#58 <- `c_1*`, c_2#36 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#43))*{iter#43 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#44))*{iter#44 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), iter#46))*{iter#46 <- iter#45}*{iter#45 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#62)*{iter_0#62 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#59)), !($proj_lane__2(c_2#37)))}*{c_1#59 <- `c_1*`, c_2#37 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#47))*{iter#47 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#60)), !($proj_lane__2(c_2#38)))}*{c_1#60 <- `c_1*`, c_2#38 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I8_Jnn, iter_0#63)))*{iter_0#63 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#61)), !($proj_lane__2(c_2#39)))}*{c_1#61 <- `c_1*`, c_2#39 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c#38*{c#38 <- `c*#12`})*{`c*#12` <- `c**`} + -- let{`c_1*` : lane_*} c_1#62*{c_1#62 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#40*{c_2#40 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#37*{c#37 <- `c*#11`}*{`c*#11` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#64)*{iter_0#64 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#63)), !($proj_lane__2(c_2#41)))}*{c_1#63 <- `c_1*`, c_2#41 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#48))*{iter#48 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#49))*{iter#49 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), iter#51))*{iter#51 <- iter#50}*{iter#50 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#65)*{iter_0#65 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#64)), !($proj_lane__2(c_2#42)))}*{c_1#64 <- `c_1*`, c_2#42 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#52))*{iter#52 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#65)), !($proj_lane__2(c_2#43)))}*{c_1#65 <- `c_1*`, c_2#43 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I16_Jnn, iter_0#66)))*{iter_0#66 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#66)), !($proj_lane__2(c_2#44)))}*{c_1#66 <- `c_1*`, c_2#44 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c#40*{c#40 <- `c*#14`})*{`c*#14` <- `c**`} + -- let{`c_1*` : lane_*} c_1#67*{c_1#67 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#45*{c_2#45 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#39*{c#39 <- `c*#13`}*{`c*#13` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#67))*{iter_0#67 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#68)))), !($proj_num__1(!($proj_lane__0(c_2#46)))))}*{c_1#68 <- `c_1*`, c_2#46 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#53))*{iter#53 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#54))*{iter#54 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), iter#56))*{iter#56 <- iter#55}*{iter#55 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#68))*{iter_0#68 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#69)))), !($proj_num__1(!($proj_lane__0(c_2#47)))))}*{c_1#69 <- `c_1*`, c_2#47 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn((F32_Fnn : Fnn <: numtype)), iter#57))*{iter#57 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#70)))), !($proj_num__1(!($proj_lane__0(c_2#48)))))}*{c_1#70 <- `c_1*`, c_2#48 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#69))))*{iter_0#69 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#71)))), !($proj_num__1(!($proj_lane__0(c_2#49)))))}*{c_1#71 <- `c_1*`, c_2#49 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c#42*{c#42 <- `c*#16`})*{`c*#16` <- `c**`} + -- let{`c_1*` : lane_*} c_1#72*{c_1#72 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#50*{c_2#50 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#41*{c#41 <- `c*#15`}*{`c*#15` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#70))*{iter_0#70 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#73)))), !($proj_num__1(!($proj_lane__0(c_2#51)))))}*{c_1#73 <- `c_1*`, c_2#51 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#58))*{iter#58 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#59))*{iter#59 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), iter#61))*{iter#61 <- iter#60}*{iter#60 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#71))*{iter_0#71 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#74)))), !($proj_num__1(!($proj_lane__0(c_2#52)))))}*{c_1#74 <- `c_1*`, c_2#52 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn((F64_Fnn : Fnn <: numtype)), iter#62))*{iter#62 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#75)))), !($proj_num__1(!($proj_lane__0(c_2#53)))))}*{c_1#75 <- `c_1*`, c_2#53 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#72))))*{iter_0#72 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#76)))), !($proj_num__1(!($proj_lane__0(c_2#54)))))}*{c_1#76 <- `c_1*`, c_2#54 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c#44*{c#44 <- `c*#18`})*{`c*#18` <- `c**`} + -- let{`c_1*` : lane_*} c_1#77*{c_1#77 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#55*{c_2#55 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#1*{c_3#1 <- `c_3*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#43*{c#43 <- `c*#17`}*{`c*#17` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#73)*{iter_0#73 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#78)), !($proj_lane__2(c_2#56)), !($proj_lane__2(c_3#2)))}*{c_1#78 <- `c_1*`, c_2#56 <- `c_2*`, c_3#2 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#63))*{iter#63 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#64))*{iter#64 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#65))*{iter#65 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), iter#67))*{iter#67 <- iter#66}*{iter#66 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#74)*{iter_0#74 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#79)), !($proj_lane__2(c_2#57)), !($proj_lane__2(c_3#3)))}*{c_1#79 <- `c_1*`, c_2#57 <- `c_2*`, c_3#3 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#68))*{iter#68 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#80)), !($proj_lane__2(c_2#58)), !($proj_lane__2(c_3#4)))}*{c_1#80 <- `c_1*`, c_2#58 <- `c_2*`, c_3#4 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I32_Jnn, iter_0#75)))*{iter_0#75 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#81)), !($proj_lane__2(c_2#59)), !($proj_lane__2(c_3#5)))}*{c_1#81 <- `c_1*`, c_2#59 <- `c_2*`, c_3#5 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c#46*{c#46 <- `c*#20`})*{`c*#20` <- `c**`} + -- let{`c_1*` : lane_*} c_1#82*{c_1#82 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#60*{c_2#60 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#6*{c_3#6 <- `c_3*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#45*{c#45 <- `c*#19`}*{`c*#19` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#76)*{iter_0#76 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#83)), !($proj_lane__2(c_2#61)), !($proj_lane__2(c_3#7)))}*{c_1#83 <- `c_1*`, c_2#61 <- `c_2*`, c_3#7 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#69))*{iter#69 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#70))*{iter#70 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#71))*{iter#71 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), iter#73))*{iter#73 <- iter#72}*{iter#72 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#77)*{iter_0#77 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#84)), !($proj_lane__2(c_2#62)), !($proj_lane__2(c_3#8)))}*{c_1#84 <- `c_1*`, c_2#62 <- `c_2*`, c_3#8 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#74))*{iter#74 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#85)), !($proj_lane__2(c_2#63)), !($proj_lane__2(c_3#9)))}*{c_1#85 <- `c_1*`, c_2#63 <- `c_2*`, c_3#9 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I64_Jnn, iter_0#78)))*{iter_0#78 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#86)), !($proj_lane__2(c_2#64)), !($proj_lane__2(c_3#10)))}*{c_1#86 <- `c_1*`, c_2#64 <- `c_2*`, c_3#10 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c#48*{c#48 <- `c*#22`})*{`c*#22` <- `c**`} + -- let{`c_1*` : lane_*} c_1#87*{c_1#87 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#65*{c_2#65 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#11*{c_3#11 <- `c_3*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#47*{c#47 <- `c*#21`}*{`c*#21` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#79)*{iter_0#79 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#88)), !($proj_lane__2(c_2#66)), !($proj_lane__2(c_3#12)))}*{c_1#88 <- `c_1*`, c_2#66 <- `c_2*`, c_3#12 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#75))*{iter#75 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#76))*{iter#76 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#77))*{iter#77 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), iter#79))*{iter#79 <- iter#78}*{iter#78 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#80)*{iter_0#80 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#89)), !($proj_lane__2(c_2#67)), !($proj_lane__2(c_3#13)))}*{c_1#89 <- `c_1*`, c_2#67 <- `c_2*`, c_3#13 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#80))*{iter#80 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#90)), !($proj_lane__2(c_2#68)), !($proj_lane__2(c_3#14)))}*{c_1#90 <- `c_1*`, c_2#68 <- `c_2*`, c_3#14 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I8_Jnn, iter_0#81)))*{iter_0#81 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#91)), !($proj_lane__2(c_2#69)), !($proj_lane__2(c_3#15)))}*{c_1#91 <- `c_1*`, c_2#69 <- `c_2*`, c_3#15 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c#50*{c#50 <- `c*#24`})*{`c*#24` <- `c**`} + -- let{`c_1*` : lane_*} c_1#92*{c_1#92 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#70*{c_2#70 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#16*{c_3#16 <- `c_3*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#49*{c#49 <- `c*#23`}*{`c*#23` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#82)*{iter_0#82 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#93)), !($proj_lane__2(c_2#71)), !($proj_lane__2(c_3#17)))}*{c_1#93 <- `c_1*`, c_2#71 <- `c_2*`, c_3#17 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#81))*{iter#81 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#82))*{iter#82 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#83))*{iter#83 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), iter#85))*{iter#85 <- iter#84}*{iter#84 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#83)*{iter_0#83 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#94)), !($proj_lane__2(c_2#72)), !($proj_lane__2(c_3#18)))}*{c_1#94 <- `c_1*`, c_2#72 <- `c_2*`, c_3#18 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#86))*{iter#86 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#95)), !($proj_lane__2(c_2#73)), !($proj_lane__2(c_3#19)))}*{c_1#95 <- `c_1*`, c_2#73 <- `c_2*`, c_3#19 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I16_Jnn, iter_0#84)))*{iter_0#84 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#96)), !($proj_lane__2(c_2#74)), !($proj_lane__2(c_3#20)))}*{c_1#96 <- `c_1*`, c_2#74 <- `c_2*`, c_3#20 <- `c_3*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c#52*{c#52 <- `c*#26`})*{`c*#26` <- `c**`} + -- let{`c_1*` : lane_*} c_1#97*{c_1#97 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#75*{c_2#75 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#21*{c_3#21 <- `c_3*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#51*{c#51 <- `c*#25`}*{`c*#25` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#85))*{iter_0#85 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#98)))), !($proj_num__1(!($proj_lane__0(c_2#76)))), !($proj_num__1(!($proj_lane__0(c_3#22)))))}*{c_1#98 <- `c_1*`, c_2#76 <- `c_2*`, c_3#22 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#87))*{iter#87 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#88))*{iter#88 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#89))*{iter#89 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), iter#91))*{iter#91 <- iter#90}*{iter#90 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#86))*{iter_0#86 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#99)))), !($proj_num__1(!($proj_lane__0(c_2#77)))), !($proj_num__1(!($proj_lane__0(c_3#23)))))}*{c_1#99 <- `c_1*`, c_2#77 <- `c_2*`, c_3#23 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn((F32_Fnn : Fnn <: numtype)), iter#92))*{iter#92 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#100)))), !($proj_num__1(!($proj_lane__0(c_2#78)))), !($proj_num__1(!($proj_lane__0(c_3#24)))))}*{c_1#100 <- `c_1*`, c_2#78 <- `c_2*`, c_3#24 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#87))))*{iter_0#87 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#101)))), !($proj_num__1(!($proj_lane__0(c_2#79)))), !($proj_num__1(!($proj_lane__0(c_3#25)))))}*{c_1#101 <- `c_1*`, c_2#79 <- `c_2*`, c_3#25 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c#54*{c#54 <- `c*#28`})*{`c*#28` <- `c**`} + -- let{`c_1*` : lane_*} c_1#102*{c_1#102 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#80*{c_2#80 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#26*{c_3#26 <- `c_3*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#53*{c#53 <- `c*#27`}*{`c*#27` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#88))*{iter_0#88 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#103)))), !($proj_num__1(!($proj_lane__0(c_2#81)))), !($proj_num__1(!($proj_lane__0(c_3#27)))))}*{c_1#103 <- `c_1*`, c_2#81 <- `c_2*`, c_3#27 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#93))*{iter#93 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#94))*{iter#94 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#95))*{iter#95 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), iter#97))*{iter#97 <- iter#96}*{iter#96 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#89))*{iter_0#89 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#104)))), !($proj_num__1(!($proj_lane__0(c_2#82)))), !($proj_num__1(!($proj_lane__0(c_3#28)))))}*{c_1#104 <- `c_1*`, c_2#82 <- `c_2*`, c_3#28 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn((F64_Fnn : Fnn <: numtype)), iter#98))*{iter#98 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#105)))), !($proj_num__1(!($proj_lane__0(c_2#83)))), !($proj_num__1(!($proj_lane__0(c_3#29)))))}*{c_1#105 <- `c_1*`, c_2#83 <- `c_2*`, c_3#29 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#90))))*{iter_0#90 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#106)))), !($proj_num__1(!($proj_lane__0(c_2#84)))), !($proj_num__1(!($proj_lane__0(c_3#30)))))}*{c_1#106 <- `c_1*`, c_2#84 <- `c_2*`, c_3#30 <- `c_3*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#56)*{c#56 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#107*{c_1#107 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#85*{c_2#85 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#55*{c#55 <- `c*`} = $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#108)), !($proj_lane__2(c_2#86)))).0))*{c_1#108 <- `c_1*`, c_2#86 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#99))*{iter#99 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#100))*{iter#100 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#109)), !($proj_lane__2(c_2#87)))).0))))*{c_1#109 <- `c_1*`, c_2#87 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#110)), !($proj_lane__2(c_2#88)))).0)))*{c_1#110 <- `c_1*`, c_2#88 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#58)*{c#58 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#111*{c_1#111 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#89*{c_2#89 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#57*{c#57 <- `c*`} = $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#112)), !($proj_lane__2(c_2#90)))).0))*{c_1#112 <- `c_1*`, c_2#90 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#101))*{iter#101 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#102))*{iter#102 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#113)), !($proj_lane__2(c_2#91)))).0))))*{c_1#113 <- `c_1*`, c_2#91 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#114)), !($proj_lane__2(c_2#92)))).0)))*{c_1#114 <- `c_1*`, c_2#92 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#60)*{c#60 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#115*{c_1#115 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#93*{c_2#93 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#59*{c#59 <- `c*`} = $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#116)), !($proj_lane__2(c_2#94)))).0))*{c_1#116 <- `c_1*`, c_2#94 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#103))*{iter#103 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#104))*{iter#104 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#117)), !($proj_lane__2(c_2#95)))).0))))*{c_1#117 <- `c_1*`, c_2#95 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#118)), !($proj_lane__2(c_2#96)))).0)))*{c_1#118 <- `c_1*`, c_2#96 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#62)*{c#62 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#119*{c_1#119 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#97*{c_2#97 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#61*{c#61 <- `c*`} = $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#120)), !($proj_lane__2(c_2#98)))).0))*{c_1#120 <- `c_1*`, c_2#98 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#105))*{iter#105 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#106))*{iter#106 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#121)), !($proj_lane__2(c_2#99)))).0))))*{c_1#121 <- `c_1*`, c_2#99 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#122)), !($proj_lane__2(c_2#100)))).0)))*{c_1#122 <- `c_1*`, c_2#100 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#64)*{c#64 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#123*{c_1#123 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#101*{c_2#101 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#63*{c#63 <- `c*`} = $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#124)), !($proj_lane__2(c_2#102)))).0))*{c_1#124 <- `c_1*`, c_2#102 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#107))*{iter#107 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#108))*{iter#108 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#125)), !($proj_lane__2(c_2#103)))).0))))*{c_1#125 <- `c_1*`, c_2#103 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#126)), !($proj_lane__2(c_2#104)))).0)))*{c_1#126 <- `c_1*`, c_2#104 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#66)*{c#66 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#127*{c_1#127 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#105*{c_2#105 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#65*{c#65 <- `c*`} = $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#128)), !($proj_lane__2(c_2#106)))).0))*{c_1#128 <- `c_1*`, c_2#106 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#109))*{iter#109 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#110))*{iter#110 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#129)), !($proj_lane__2(c_2#107)))).0))))*{c_1#129 <- `c_1*`, c_2#107 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#130)), !($proj_lane__2(c_2#108)))).0)))*{c_1#130 <- `c_1*`, c_2#108 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#68)*{c#68 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#131*{c_1#131 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#109*{c_2#109 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#67*{c#67 <- `c*`} = $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#132)), !($proj_lane__2(c_2#110)))).0))*{c_1#132 <- `c_1*`, c_2#110 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#111))*{iter#111 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#112))*{iter#112 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#133)), !($proj_lane__2(c_2#111)))).0))))*{c_1#133 <- `c_1*`, c_2#111 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#134)), !($proj_lane__2(c_2#112)))).0)))*{c_1#134 <- `c_1*`, c_2#112 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#70)*{c#70 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#135*{c_1#135 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#113*{c_2#113 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#69*{c#69 <- `c*`} = $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#136)), !($proj_lane__2(c_2#114)))).0))*{c_1#136 <- `c_1*`, c_2#114 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#113))*{iter#113 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#114))*{iter#114 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#137)), !($proj_lane__2(c_2#115)))).0))))*{c_1#137 <- `c_1*`, c_2#115 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#138)), !($proj_lane__2(c_2#116)))).0)))*{c_1#138 <- `c_1*`, c_2#116 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#72).0)))*{c#72 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#139*{c_1#139 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#117*{c_2#117 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#71*{c#71 <- `c*`} = $extend__(1, $sizenn((F32_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#140)))), !($proj_num__1(!($proj_lane__0(c_2#118)))))).0))*{c_1#140 <- `c_1*`, c_2#118 <- `c_2*`} + -- if ($isize(Inn) = $fsize(F32_Fnn)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#115))*{iter#115 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#116))*{iter#116 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size((F32_Fnn : Fnn <: numtype)), $extend__(1, $sizenn((F32_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#141)))), !($proj_num__1(!($proj_lane__0(c_2#119)))))).0))))*{c_1#141 <- `c_1*`, c_2#119 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#142)))), !($proj_num__1(!($proj_lane__0(c_2#120)))))).0)))*{c_1#142 <- `c_1*`, c_2#120 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#74).0)))*{c#74 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#143*{c_1#143 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#121*{c_2#121 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#73*{c#73 <- `c*`} = $extend__(1, $sizenn((F64_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#144)))), !($proj_num__1(!($proj_lane__0(c_2#122)))))).0))*{c_1#144 <- `c_1*`, c_2#122 <- `c_2*`} + -- if ($isize(Inn) = $fsize(F64_Fnn)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#117))*{iter#117 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#118))*{iter#118 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size((F64_Fnn : Fnn <: numtype)), $extend__(1, $sizenn((F64_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#145)))), !($proj_num__1(!($proj_lane__0(c_2#123)))))).0))))*{c_1#145 <- `c_1*`, c_2#123 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#146)))), !($proj_num__1(!($proj_lane__0(c_2#124)))))).0)))*{c_1#146 <- `c_1*`, c_2#124 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#76)*{c#76 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#147*{c_1#147 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#75*{c#75 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#148)), i)*{c_1#148 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#119))*{iter#119 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#149)), i)))*{c_1#149 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#78)*{c#78 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#150*{c_1#150 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#77*{c#77 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#151)), i)*{c_1#151 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#120))*{iter#120 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#152)), i)))*{c_1#152 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#80)*{c#80 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#153*{c_1#153 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#79*{c#79 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#154)), i)*{c_1#154 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#121))*{iter#121 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#155)), i)))*{c_1#155 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#82)*{c#82 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#156*{c_1#156 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#81*{c#81 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#157)), i)*{c_1#157 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#122))*{iter#122 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#158)), i)))*{c_1#158 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#84)*{c#84 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#159*{c_1#159 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#83*{c#83 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#160)), i)*{c_1#160 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#123))*{iter#123 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#161)), i)))*{c_1#161 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#86)*{c#86 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#162*{c_1#162 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#85*{c#85 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#163)), i)*{c_1#163 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#124))*{iter#124 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#164)), i)))*{c_1#164 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#88)*{c#88 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#165*{c_1#165 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#87*{c#87 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#166)), i)*{c_1#166 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#125))*{iter#125 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#167)), i)))*{c_1#167 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#90)*{c#90 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#168*{c_1#168 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#89*{c#89 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#169)), i)*{c_1#169 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#126))*{iter#126 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#170)), i)))*{c_1#170 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- let{`c_1*` : lane_*} c_1#171*{c_1#171 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#172)), `%`_iN(0))).0)*{c_1#172 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#127))*{iter#127 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#128))*{iter#128 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#173)), `%`_iN(0))).0)))*{c_1#173 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- let{`c_1*` : lane_*} c_1#174*{c_1#174 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#175)), `%`_iN(0))).0)*{c_1#175 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#129))*{iter#129 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#130))*{iter#130 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#176)), `%`_iN(0))).0)))*{c_1#176 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- let{`c_1*` : lane_*} c_1#177*{c_1#177 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#178)), `%`_iN(0))).0)*{c_1#178 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#131))*{iter#131 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#132))*{iter#132 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#179)), `%`_iN(0))).0)))*{c_1#179 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- let{`c_1*` : lane_*} c_1#180*{c_1#180 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#181)), `%`_iN(0))).0)*{c_1#181 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#133))*{iter#133 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#134))*{iter#134 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#182)), `%`_iN(0))).0)))*{c_1#182 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#92)*{c#92 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#183*{c_1#183 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#125*{c_2#125 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#91*{c#91 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#184))*{c_1#184 <- `c_1*`}, !($proj_lane__2(c_2#126)))*{c_2#126 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#135))*{iter#135 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#136))*{iter#136 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#185))*{c_1#185 <- `c_1*`}, !($proj_lane__2(c_2#127)))))*{c_2#127 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#94)*{c#94 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#186*{c_1#186 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#128*{c_2#128 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#93*{c#93 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#187))*{c_1#187 <- `c_1*`}, !($proj_lane__2(c_2#129)))*{c_2#129 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#137))*{iter#137 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#138))*{iter#138 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#188))*{c_1#188 <- `c_1*`}, !($proj_lane__2(c_2#130)))))*{c_2#130 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#96)*{c#96 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#189*{c_1#189 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#131*{c_2#131 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#95*{c#95 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#190))*{c_1#190 <- `c_1*`}, !($proj_lane__2(c_2#132)))*{c_2#132 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#139))*{iter#139 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#140))*{iter#140 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#191))*{c_1#191 <- `c_1*`}, !($proj_lane__2(c_2#133)))))*{c_2#133 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#98)*{c#98 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#192*{c_1#192 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#134*{c_2#134 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#97*{c#97 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#193))*{c_1#193 <- `c_1*`}, !($proj_lane__2(c_2#135)))*{c_2#135 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#141))*{iter#141 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#142))*{iter#142 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#194))*{c_1#194 <- `c_1*`}, !($proj_lane__2(c_2#136)))))*{c_2#136 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), i#139234*{i#139234 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c#100*{c#100 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#195*{c_1#195 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#137*{c_2#137 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#99*{c#99 <- `c*`} = c_1#196*{c_1#196 <- `c_1*`} ++ c_2#138*{c_2#138 <- `c_2*`}[$proj_uN_0(i#139237).0]*{i#139237 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#143))*{iter#143 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#144))*{iter#144 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i#139245*{i#139245 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c#102*{c#102 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#197*{c_1#197 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#139*{c_2#139 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#101*{c#101 <- `c*`} = c_1#198*{c_1#198 <- `c_1*`} ++ c_2#140*{c_2#140 <- `c_2*`}[$proj_uN_0(i#139248).0]*{i#139248 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#145))*{iter#145 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#146))*{iter#146 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i#139256*{i#139256 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c#104*{c#104 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#199*{c_1#199 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#141*{c_2#141 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#103*{c#103 <- `c*`} = c_1#200*{c_1#200 <- `c_1*`} ++ c_2#142*{c_2#142 <- `c_2*`}[$proj_uN_0(i#139259).0]*{i#139259 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#147))*{iter#147 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#148))*{iter#148 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i#139267*{i#139267 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c#106*{c#106 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#201*{c_1#201 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#143*{c_2#143 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#105*{c#105 <- `c*`} = c_1#202*{c_1#202 <- `c_1*`} ++ c_2#144*{c_2#144 <- `c_2*`}[$proj_uN_0(i#139270).0]*{i#139270 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#149))*{iter#149 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#150))*{iter#150 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvunop_{Vnn : vectype, v : uN}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3061?{half#3061 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) + -- wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3062?{half#3062 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) + -- wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3063?{half#3063 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) + -- wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3064?{half#3064 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) + -- wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3065?{half#3065 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) + -- wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3066?{half#3066 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) + -- wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3067?{half#3067 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) + -- wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3068?{half#3068 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) + -- wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3489?{zero#3489 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#108))?{c#108 <- `c?`}) + -- let{`c?` : iN?} c#107?{c#107 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#151))?{iter#151 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3490?{zero#3490 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#110))?{c#110 <- `c?`}) + -- let{`c?` : iN?} c#109?{c#109 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#152))?{iter#152 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3491?{zero#3491 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#112))?{c#112 <- `c?`}) + -- let{`c?` : iN?} c#111?{c#111 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#153))?{iter#153 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3492?{zero#3492 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#114))?{c#114 <- `c?`}) + -- let{`c?` : iN?} c#113?{c#113 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#154))?{iter#154 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3493?{zero#3493 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#116))?{c#116 <- `c?`}) + -- let{`c?` : iN?} c#115?{c#115 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#155))?{iter#155 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3494?{zero#3494 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#118))?{c#118 <- `c?`}) + -- let{`c?` : iN?} c#117?{c#117 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#156))?{iter#156 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3495?{zero#3495 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#120))?{c#120 <- `c?`}) + -- let{`c?` : iN?} c#119?{c#119 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#157))?{iter#157 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3496?{zero#3496 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#122))?{c#122 <- `c?`}) + -- let{`c?` : iN?} c#121?{c#121 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#158))?{iter#158 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3497?{zero#3497 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#124))?{c#124 <- `c?`}) + -- let{`c?` : iN?} c#123?{c#123 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#159))?{iter#159 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3498?{zero#3498 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#126))?{c#126 <- `c?`}) + -- let{`c?` : iN?} c#125?{c#125 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#160))?{iter#160 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3499?{zero#3499 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#128))?{c#128 <- `c?`}) + -- let{`c?` : iN?} c#127?{c#127 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#161))?{iter#161 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3500?{zero#3500 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#130))?{c#130 <- `c?`}) + -- let{`c?` : iN?} c#129?{c#129 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#162))?{iter#162 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3501?{zero#3501 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#132))?{c#132 <- `c?`}) + -- let{`c?` : iN?} c#131?{c#131 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#163))?{iter#163 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3502?{zero#3502 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#134))?{c#134 <- `c?`}) + -- let{`c?` : iN?} c#133?{c#133 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#164))?{iter#164 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3503?{zero#3503 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#136))?{c#136 <- `c?`}) + -- let{`c?` : iN?} c#135?{c#135 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#165))?{iter#165 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3504?{zero#3504 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#138))?{c#138 <- `c?`}) + -- let{`c?` : iN?} c#137?{c#137 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#166))?{iter#166 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3505?{zero#3505 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#140))?{c#140 <- `c?`}) + -- let{`c?` : iN?} c#139?{c#139 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#167))?{iter#167 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3506?{zero#3506 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#142))?{c#142 <- `c?`}) + -- let{`c?` : iN?} c#141?{c#141 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#168))?{iter#168 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3507?{zero#3507 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#144))?{c#144 <- `c?`}) + -- let{`c?` : iN?} c#143?{c#143 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#169))?{iter#169 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3508?{zero#3508 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#146))?{c#146 <- `c?`}) + -- let{`c?` : iN?} c#145?{c#145 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#170))?{iter#170 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3509?{zero#3509 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#148))?{c#148 <- `c?`}) + -- let{`c?` : iN?} c#147?{c#147 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#171))?{iter#171 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3510?{zero#3510 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#150))?{c#150 <- `c?`}) + -- let{`c?` : iN?} c#149?{c#149 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#172))?{iter#172 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3511?{zero#3511 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#152))?{c#152 <- `c?`}) + -- let{`c?` : iN?} c#151?{c#151 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#173))?{iter#173 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3512?{zero#3512 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#154))?{c#154 <- `c?`}) + -- let{`c?` : iN?} c#153?{c#153 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#174))?{iter#174 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3513?{zero#3513 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#156))?{c#156 <- `c?`}) + -- let{`c?` : iN?} c#155?{c#155 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#175))?{iter#175 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3514?{zero#3514 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#158))?{c#158 <- `c?`}) + -- let{`c?` : iN?} c#157?{c#157 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#176))?{iter#176 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3515?{zero#3515 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#160))?{c#160 <- `c?`}) + -- let{`c?` : iN?} c#159?{c#159 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#177))?{iter#177 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3516?{zero#3516 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#162))?{c#162 <- `c?`}) + -- let{`c?` : iN?} c#161?{c#161 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#178))?{iter#178 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3517?{zero#3517 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#164))?{c#164 <- `c?`}) + -- let{`c?` : iN?} c#163?{c#163 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#179))?{iter#179 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3518?{zero#3518 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#166))?{c#166 <- `c?`}) + -- let{`c?` : iN?} c#165?{c#165 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#180))?{iter#180 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3519?{zero#3519 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#168))?{c#168 <- `c?`}) + -- let{`c?` : iN?} c#167?{c#167 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#181))?{iter#181 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3520?{zero#3520 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#170))?{c#170 <- `c?`}) + -- let{`c?` : iN?} c#169?{c#169 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#182))?{iter#182 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#172))*{c#172 <- `c*`} + -- let{`c*` : fN*} c#171*{c#171 <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#183))*{iter#183 <- $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#174))*{c#174 <- `c*`} + -- let{`c*` : fN*} c#173*{c#173 <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#184))*{iter#184 <- $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#176))*{c#176 <- `c*`} + -- let{`c*` : fN*} c#175*{c#175 <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#185))*{iter#185 <- $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#178))*{c#178 <- `c*`} + -- let{`c*` : fN*} c#177*{c#177 <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#186))*{iter#186 <- $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#180))*{c#180 <- `c*`} + -- let{`c*` : fN*} c#179*{c#179 <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#187))*{iter#187 <- $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#182))*{c#182 <- `c*`} + -- let{`c*` : fN*} c#181*{c#181 <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#188))*{iter#188 <- $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#184))*{c#184 <- `c*`} + -- let{`c*` : fN*} c#183*{c#183 <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#189))*{iter#189 <- $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#186))*{c#186 <- `c*`} + -- let{`c*` : fN*} c#185*{c#185 <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#190))*{iter#190 <- $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#188))*{c#188 <- `c*`} + -- let{`c*` : fN*} c#187*{c#187 <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#191))*{iter#191 <- $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#190))*{c#190 <- `c*`} + -- let{`c*` : fN*} c#189*{c#189 <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#192))*{iter#192 <- $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#192))*{c#192 <- `c*`} + -- let{`c*` : fN*} c#191*{c#191 <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#193))*{iter#193 <- $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#194))*{c#194 <- `c*`} + -- let{`c*` : fN*} c#193*{c#193 <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#194))*{iter#194 <- $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#196))*{c#196 <- `c*`} + -- let{`c*` : fN*} c#195*{c#195 <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#195))*{iter#195 <- $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#198))*{c#198 <- `c*`} + -- let{`c*` : fN*} c#197*{c#197 <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#196))*{iter#196 <- $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#200))*{c#200 <- `c*`} + -- let{`c*` : fN*} c#199*{c#199 <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#197))*{iter#197 <- $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#202))*{c#202 <- `c*`} + -- let{`c*` : fN*} c#201*{c#201 <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#198))*{iter#198 <- $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lcvtop___is_wf: `%%%%%`(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lcvtop___is_wf_0{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*}: + `%%%%%`(shape_1, shape_2, vcvtop__, lane_, ret_val) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_1, shape_2, vcvtop__) + -- wf_lane_: `%%`($lanetype(shape_1), lane_) + -- if (ret_val = $lcvtop__(shape_1, shape_2, vcvtop__, lane_)) + -- (wf_lane_: `%%`($lanetype(shape_2), ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v + -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) + -- let{`c_1*` : lane_*} c_1#203*{c_1#203 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#203*{c#203 <- `c*#29`}*{`c*#29` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#204)*{c_1#204 <- `c_1*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#204*{c#204 <- `c*#30`})*{`c*#30` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), iter#199))*{iter#199 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#201))*{iter#201 <- iter#200}*{iter#200 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#205)*{c_1#205 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#202))*{iter#202 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#206)}*{c_1#206 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#205*{c#205 <- `c*#31`})))*{`c*#31` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) + -- let{`c_1*` : lane_*} c_1#207*{c_1#207 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] + -- let{`c**` : lane_**} c#206*{c#206 <- `c*#32`}*{`c*#32` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#208)*{c_1#208 <- `c_1*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#207*{c#207 <- `c*#33`})*{`c*#33` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#203))*{iter#203 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#205))*{iter#205 <- iter#204}*{iter#204 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#209)*{c_1#209 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#206))*{iter#206 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#210)}*{c_1#210 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#208*{c#208 <- `c*#34`})))*{`c*#34` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) + -- let{`c_1*` : lane_*} c_1#211*{c_1#211 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) + -- let{`c**` : lane_**} c#209*{c#209 <- `c*#35`}*{`c*#35` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#212)*{c_1#212 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#210*{c#210 <- `c*#36`})*{`c*#36` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#207))*{iter#207 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#209))*{iter#209 <- iter#208}*{iter#208 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#213)*{c_1#213 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})} + -- (wf_lane_: `%%`(Lnn_2, iter#210))*{iter#210 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#214)}*{c_1#214 <- `c_1*`} + -- wf_lane_: `%%`(Lnn_2, $zero(Lnn_2)) + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#211*{c#211 <- `c*#37`})))*{`c*#37` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#139761*{i#139761 <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#215*{c_1#215 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#145*{c_2#145 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#1*{c'_1#1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#216)))*{c_1#216 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#1*{c'_2#1 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#146)))*{c_2#146 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#2)*{c'_1#2 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#2)*{c'_2#2 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#211))*{iter#211 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#212))*{iter#212 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#217)))))*{c_1#217 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#147)))))*{c_2#147 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#3)*{c'_1#3 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#3)*{c'_2#3 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#4)))*{c'_1#4 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#4)))*{c'_2#4 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#218*{c_1#218 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#148*{c_2#148 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#5*{c'_1#5 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#219)))*{c_1#219 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#5*{c'_2#5 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#149)))*{c_2#149 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#6)*{c'_1#6 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#6)*{c'_2#6 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#213))*{iter#213 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#214))*{iter#214 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#220)))))*{c_1#220 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#150)))))*{c_2#150 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#7)*{c'_1#7 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#7)*{c'_2#7 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#8)))*{c'_1#8 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#8)))*{c'_2#8 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#221*{c_1#221 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#151*{c_2#151 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#9*{c'_1#9 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#222)))*{c_1#222 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#9*{c'_2#9 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#152)))*{c_2#152 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#10)*{c'_1#10 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#10)*{c'_2#10 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#215))*{iter#215 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#216))*{iter#216 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#223)))))*{c_1#223 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#153)))))*{c_2#153 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#11)*{c'_1#11 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#11)*{c'_2#11 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#12)))*{c'_1#12 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#12)))*{c'_2#12 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#224*{c_1#224 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#154*{c_2#154 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#13*{c'_1#13 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#225)))*{c_1#225 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#13*{c'_2#13 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#155)))*{c_2#155 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#14)*{c'_1#14 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#14)*{c'_2#14 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#217))*{iter#217 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#218))*{iter#218 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#226)))))*{c_1#226 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#156)))))*{c_2#156 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#15)*{c'_1#15 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#15)*{c'_2#15 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#16)))*{c'_1#16 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#16)))*{c'_2#16 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#227*{c_1#227 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#157*{c_2#157 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#17*{c'_1#17 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#228)))*{c_1#228 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#17*{c'_2#17 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#158)))*{c_2#158 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#18)*{c'_1#18 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#18)*{c'_2#18 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#219))*{iter#219 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#220))*{iter#220 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#229)))))*{c_1#229 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#159)))))*{c_2#159 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#19)*{c'_1#19 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#19)*{c'_2#19 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#20)))*{c'_1#20 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#20)))*{c'_2#20 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#230*{c_1#230 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#160*{c_2#160 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#21*{c'_1#21 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#231)))*{c_1#231 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#21*{c'_2#21 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#161)))*{c_2#161 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#22)*{c'_1#22 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#22)*{c'_2#22 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#221))*{iter#221 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#222))*{iter#222 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#232)))))*{c_1#232 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#162)))))*{c_2#162 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#23)*{c'_1#23 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#23)*{c'_2#23 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#24)))*{c'_1#24 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#24)))*{c'_2#24 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#233*{c_1#233 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#163*{c_2#163 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#25*{c'_1#25 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#234)))*{c_1#234 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#25*{c'_2#25 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#164)))*{c_2#164 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#26)*{c'_1#26 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#26)*{c'_2#26 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#223))*{iter#223 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#224))*{iter#224 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#235)))))*{c_1#235 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#165)))))*{c_2#165 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#27)*{c'_1#27 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#27)*{c'_2#27 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#28)))*{c'_1#28 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#28)))*{c'_2#28 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#236*{c_1#236 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#166*{c_2#166 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#29*{c'_1#29 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#237)))*{c_1#237 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#29*{c'_2#29 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#167)))*{c_2#167 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#30)*{c'_1#30 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#30)*{c'_2#30 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#225))*{iter#225 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#226))*{iter#226 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#238)))))*{c_1#238 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#168)))))*{c_2#168 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#31)*{c'_1#31 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#31)*{c'_2#31 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#32)))*{c'_1#32 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#32)))*{c'_2#32 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#239*{c_1#239 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#169*{c_2#169 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#33*{c'_1#33 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#240)))*{c_1#240 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#33*{c'_2#33 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#170)))*{c_2#170 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#34)*{c'_1#34 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#34)*{c'_2#34 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#227))*{iter#227 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#228))*{iter#228 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#241)))))*{c_1#241 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#171)))))*{c_2#171 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#35)*{c'_1#35 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#35)*{c'_2#35 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#36)))*{c'_1#36 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#36)))*{c'_2#36 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#242*{c_1#242 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#172*{c_2#172 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#37*{c'_1#37 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#243)))*{c_1#243 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#37*{c'_2#37 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#173)))*{c_2#173 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#38)*{c'_1#38 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#38)*{c'_2#38 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#229))*{iter#229 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#230))*{iter#230 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#244)))))*{c_1#244 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#174)))))*{c_2#174 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#39)*{c'_1#39 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#39)*{c'_2#39 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#40)))*{c'_1#40 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#40)))*{c'_2#40 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#245*{c_1#245 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#175*{c_2#175 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#41*{c'_1#41 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#246)))*{c_1#246 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#41*{c'_2#41 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#176)))*{c_2#176 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#42)*{c'_1#42 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#42)*{c'_2#42 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#231))*{iter#231 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#232))*{iter#232 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#247)))))*{c_1#247 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#177)))))*{c_2#177 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#43)*{c'_1#43 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#43)*{c'_2#43 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#44)))*{c'_1#44 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#44)))*{c'_2#44 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#248*{c_1#248 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#178*{c_2#178 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#45*{c'_1#45 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#249)))*{c_1#249 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#45*{c'_2#45 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#179)))*{c_2#179 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#46)*{c'_1#46 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#46)*{c'_2#46 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#233))*{iter#233 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#234))*{iter#234 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#250)))))*{c_1#250 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#180)))))*{c_2#180 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#47)*{c'_1#47 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#47)*{c'_2#47 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#48)))*{c'_1#48 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#48)))*{c'_2#48 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#251*{c_1#251 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#181*{c_2#181 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#49*{c'_1#49 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#252)))*{c_1#252 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#49*{c'_2#49 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#182)))*{c_2#182 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#50)*{c'_1#50 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#50)*{c'_2#50 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#235))*{iter#235 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#236))*{iter#236 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#253)))))*{c_1#253 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#183)))))*{c_2#183 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#51)*{c'_1#51 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#51)*{c'_2#51 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#52)))*{c'_1#52 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#52)))*{c'_2#52 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#254*{c_1#254 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#184*{c_2#184 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#53*{c'_1#53 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#255)))*{c_1#255 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#53*{c'_2#53 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#185)))*{c_2#185 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#54)*{c'_1#54 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#54)*{c'_2#54 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#237))*{iter#237 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#238))*{iter#238 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#256)))))*{c_1#256 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#186)))))*{c_2#186 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#55)*{c'_1#55 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#55)*{c'_2#55 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#56)))*{c'_1#56 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#56)))*{c'_2#56 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#257*{c_1#257 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#187*{c_2#187 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#57*{c'_1#57 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#258)))*{c_1#258 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#57*{c'_2#57 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#188)))*{c_2#188 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#58)*{c'_1#58 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#58)*{c'_2#58 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#239))*{iter#239 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#240))*{iter#240 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#259)))))*{c_1#259 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#189)))))*{c_2#189 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#59)*{c'_1#59 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#59)*{c'_2#59 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#60)))*{c'_1#60 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#60)))*{c'_2#60 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#260*{c_1#260 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#190*{c_2#190 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#61*{c'_1#61 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#261)))*{c_1#261 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#61*{c'_2#61 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#191)))*{c_2#191 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#62)*{c'_1#62 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#62)*{c'_2#62 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#241))*{iter#241 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#242))*{iter#242 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#262)))))*{c_1#262 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#192)))))*{c_2#192 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#63)*{c'_1#63 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#63)*{c'_2#63 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#64)))*{c'_1#64 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#64)))*{c'_2#64 <- `c'_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivadd_pairwise_(N : N, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i#139986*{i#139986 <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax N, [j_1#1 j_2#1]*{j_1#1 <- `j_1*`, j_2#1 <- `j_2*`}) = $proj_uN_0(i#139987).0*{i#139987 <- `i*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#213)*{c#213 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#263*{c_1#263 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#65*{c'_1#65 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#264)))*{c_1#264 <- `c_1*`} + -- let{`c*` : iN*} c#212*{c#212 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#66*{c'_1#66 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#243))*{iter#243 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#265)))))*{c_1#265 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#244))*{iter#244 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#67*{c'_1#67 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#215)*{c#215 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#266*{c_1#266 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#68*{c'_1#68 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#267)))*{c_1#267 <- `c_1*`} + -- let{`c*` : iN*} c#214*{c#214 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#69*{c'_1#69 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#245))*{iter#245 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#268)))))*{c_1#268 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#246))*{iter#246 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#70*{c'_1#70 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#217)*{c#217 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#269*{c_1#269 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#71*{c'_1#71 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#270)))*{c_1#270 <- `c_1*`} + -- let{`c*` : iN*} c#216*{c#216 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#72*{c'_1#72 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#247))*{iter#247 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#271)))))*{c_1#271 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#248))*{iter#248 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#73*{c'_1#73 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#219)*{c#219 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#272*{c_1#272 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#74*{c'_1#74 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#273)))*{c_1#273 <- `c_1*`} + -- let{`c*` : iN*} c#218*{c#218 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#75*{c'_1#75 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#249))*{iter#249 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#274)))))*{c_1#274 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#250))*{iter#250 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#76*{c'_1#76 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#221)*{c#221 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#275*{c_1#275 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#77*{c'_1#77 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#276)))*{c_1#276 <- `c_1*`} + -- let{`c*` : iN*} c#220*{c#220 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#78*{c'_1#78 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#251))*{iter#251 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#277)))))*{c_1#277 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#252))*{iter#252 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#79*{c'_1#79 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#223)*{c#223 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#278*{c_1#278 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#80*{c'_1#80 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#279)))*{c_1#279 <- `c_1*`} + -- let{`c*` : iN*} c#222*{c#222 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#81*{c'_1#81 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#253))*{iter#253 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#280)))))*{c_1#280 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#254))*{iter#254 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#82*{c'_1#82 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#225)*{c#225 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#281*{c_1#281 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#83*{c'_1#83 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#282)))*{c_1#282 <- `c_1*`} + -- let{`c*` : iN*} c#224*{c#224 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#84*{c'_1#84 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#255))*{iter#255 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#283)))))*{c_1#283 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#256))*{iter#256 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#85*{c'_1#85 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#227)*{c#227 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#284*{c_1#284 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#86*{c'_1#86 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#285)))*{c_1#285 <- `c_1*`} + -- let{`c*` : iN*} c#226*{c#226 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#87*{c'_1#87 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#257))*{iter#257 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#286)))))*{c_1#286 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#258))*{iter#258 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#88*{c'_1#88 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#229)*{c#229 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#287*{c_1#287 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#89*{c'_1#89 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#288)))*{c_1#288 <- `c_1*`} + -- let{`c*` : iN*} c#228*{c#228 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#90*{c'_1#90 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#259))*{iter#259 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#289)))))*{c_1#289 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#260))*{iter#260 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#91*{c'_1#91 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#231)*{c#231 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#290*{c_1#290 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#92*{c'_1#92 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#291)))*{c_1#291 <- `c_1*`} + -- let{`c*` : iN*} c#230*{c#230 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#93*{c'_1#93 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#261))*{iter#261 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#292)))))*{c_1#292 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#262))*{iter#262 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#94*{c'_1#94 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#233)*{c#233 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#293*{c_1#293 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#95*{c'_1#95 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#294)))*{c_1#294 <- `c_1*`} + -- let{`c*` : iN*} c#232*{c#232 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#96*{c'_1#96 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#263))*{iter#263 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#295)))))*{c_1#295 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#264))*{iter#264 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#97*{c'_1#97 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#235)*{c#235 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#296*{c_1#296 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#98*{c'_1#98 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#297)))*{c_1#297 <- `c_1*`} + -- let{`c*` : iN*} c#234*{c#234 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#99*{c'_1#99 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#265))*{iter#265 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#298)))))*{c_1#298 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#266))*{iter#266 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#100*{c'_1#100 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#237)*{c#237 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#299*{c_1#299 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#101*{c'_1#101 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#300)))*{c_1#300 <- `c_1*`} + -- let{`c*` : iN*} c#236*{c#236 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#102*{c'_1#102 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#267))*{iter#267 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#301)))))*{c_1#301 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#268))*{iter#268 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#103*{c'_1#103 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#239)*{c#239 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#302*{c_1#302 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#104*{c'_1#104 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#303)))*{c_1#303 <- `c_1*`} + -- let{`c*` : iN*} c#238*{c#238 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#105*{c'_1#105 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#269))*{iter#269 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#304)))))*{c_1#304 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#270))*{iter#270 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#106*{c'_1#106 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#241)*{c#241 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#305*{c_1#305 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#107*{c'_1#107 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#306)))*{c_1#306 <- `c_1*`} + -- let{`c*` : iN*} c#240*{c#240 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#108*{c'_1#108 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#271))*{iter#271 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#307)))))*{c_1#307 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#272))*{iter#272 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#109*{c'_1#109 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#243)*{c#243 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#308*{c_1#308 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#110*{c'_1#110 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#309)))*{c_1#309 <- `c_1*`} + -- let{`c*` : iN*} c#242*{c#242 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#111*{c'_1#111 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#273))*{iter#273 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#310)))))*{c_1#310 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#274))*{iter#274 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#112*{c'_1#112 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#1*{i_1#1 <- `i_1*`}, i_2#1*{i_2#1 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#2 j_2#2]*{j_1#2 <- `j_1*`, j_2#2 <- `j_2*`}) = $imul_(N, i_1#2, i_2#2)*{i_1#2 <- `i_1*`, i_2#2 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#275))*{iter#275 <- $concat_(syntax iN, [j_1#3 j_2#3]*{j_1#3 <- `j_1*`, j_2#3 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#3, i_2#3)))*{i_1#3 <- `i_1*`, i_2#3 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_sat_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#4*{i_1#4 <- `i_1*`}, i_2#4*{i_2#4 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#4 j_2#4]*{j_1#4 <- `j_1*`, j_2#4 <- `j_2*`}) = $imul_(N, i_1#5, i_2#5)*{i_1#5 <- `i_1*`, i_2#5 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#276))*{iter#276 <- $concat_(syntax iN, [j_1#5 j_2#5]*{j_1#5 <- `j_1*`, j_2#5 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#6, i_2#6)))*{i_1#6 <- `i_1*`, i_2#6 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#245)*{c#245 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#311*{c_1#311 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#193*{c_2#193 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#113*{c'_1#113 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#312)))*{c_1#312 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#65*{c'_2#65 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#194)))*{c_2#194 <- `c_2*`} + -- let{`c*` : iN*} c#244*{c#244 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#114*{c'_1#114 <- `c'_1*`}, c'_2#66*{c'_2#66 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#277))*{iter#277 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#278))*{iter#278 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#313)))))*{c_1#313 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#195)))))*{c_2#195 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#279))*{iter#279 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#115*{c'_1#115 <- `c'_1*`}, c'_2#67*{c'_2#67 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#247)*{c#247 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#314*{c_1#314 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#196*{c_2#196 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#116*{c'_1#116 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#315)))*{c_1#315 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#68*{c'_2#68 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#197)))*{c_2#197 <- `c_2*`} + -- let{`c*` : iN*} c#246*{c#246 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#117*{c'_1#117 <- `c'_1*`}, c'_2#69*{c'_2#69 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#280))*{iter#280 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#281))*{iter#281 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#316)))))*{c_1#316 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#198)))))*{c_2#198 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#282))*{iter#282 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#118*{c'_1#118 <- `c'_1*`}, c'_2#70*{c'_2#70 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#249)*{c#249 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#317*{c_1#317 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#199*{c_2#199 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#119*{c'_1#119 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#318)))*{c_1#318 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#71*{c'_2#71 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#200)))*{c_2#200 <- `c_2*`} + -- let{`c*` : iN*} c#248*{c#248 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#120*{c'_1#120 <- `c'_1*`}, c'_2#72*{c'_2#72 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#283))*{iter#283 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#284))*{iter#284 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#319)))))*{c_1#319 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#201)))))*{c_2#201 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#285))*{iter#285 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#121*{c'_1#121 <- `c'_1*`}, c'_2#73*{c'_2#73 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#251)*{c#251 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#320*{c_1#320 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#202*{c_2#202 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#122*{c'_1#122 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#321)))*{c_1#321 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#74*{c'_2#74 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#203)))*{c_2#203 <- `c_2*`} + -- let{`c*` : iN*} c#250*{c#250 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#123*{c'_1#123 <- `c'_1*`}, c'_2#75*{c'_2#75 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#286))*{iter#286 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#287))*{iter#287 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#322)))))*{c_1#322 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#204)))))*{c_2#204 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#288))*{iter#288 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#124*{c'_1#124 <- `c'_1*`}, c'_2#76*{c'_2#76 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#253)*{c#253 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#323*{c_1#323 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#205*{c_2#205 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#125*{c'_1#125 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#324)))*{c_1#324 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#77*{c'_2#77 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#206)))*{c_2#206 <- `c_2*`} + -- let{`c*` : iN*} c#252*{c#252 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#126*{c'_1#126 <- `c'_1*`}, c'_2#78*{c'_2#78 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#289))*{iter#289 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#290))*{iter#290 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#325)))))*{c_1#325 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#207)))))*{c_2#207 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#291))*{iter#291 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#127*{c'_1#127 <- `c'_1*`}, c'_2#79*{c'_2#79 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#255)*{c#255 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#326*{c_1#326 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#208*{c_2#208 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#128*{c'_1#128 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#327)))*{c_1#327 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#80*{c'_2#80 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#209)))*{c_2#209 <- `c_2*`} + -- let{`c*` : iN*} c#254*{c#254 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#129*{c'_1#129 <- `c'_1*`}, c'_2#81*{c'_2#81 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#292))*{iter#292 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#293))*{iter#293 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#328)))))*{c_1#328 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#210)))))*{c_2#210 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#294))*{iter#294 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#130*{c'_1#130 <- `c'_1*`}, c'_2#82*{c'_2#82 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#257)*{c#257 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#329*{c_1#329 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#211*{c_2#211 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#131*{c'_1#131 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#330)))*{c_1#330 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#83*{c'_2#83 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#212)))*{c_2#212 <- `c_2*`} + -- let{`c*` : iN*} c#256*{c#256 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#132*{c'_1#132 <- `c'_1*`}, c'_2#84*{c'_2#84 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#295))*{iter#295 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#296))*{iter#296 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#331)))))*{c_1#331 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#213)))))*{c_2#213 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#297))*{iter#297 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#133*{c'_1#133 <- `c'_1*`}, c'_2#85*{c'_2#85 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#259)*{c#259 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#332*{c_1#332 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#214*{c_2#214 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#134*{c'_1#134 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#333)))*{c_1#333 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#86*{c'_2#86 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#215)))*{c_2#215 <- `c_2*`} + -- let{`c*` : iN*} c#258*{c#258 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#135*{c'_1#135 <- `c'_1*`}, c'_2#87*{c'_2#87 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#298))*{iter#298 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#299))*{iter#299 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#334)))))*{c_1#334 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#216)))))*{c_2#216 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#300))*{iter#300 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#136*{c'_1#136 <- `c'_1*`}, c'_2#88*{c'_2#88 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#261)*{c#261 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#335*{c_1#335 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#217*{c_2#217 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#137*{c'_1#137 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#336)))*{c_1#336 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#89*{c'_2#89 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#218)))*{c_2#218 <- `c_2*`} + -- let{`c*` : iN*} c#260*{c#260 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#138*{c'_1#138 <- `c'_1*`}, c'_2#90*{c'_2#90 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#301))*{iter#301 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#302))*{iter#302 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#337)))))*{c_1#337 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#219)))))*{c_2#219 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#303))*{iter#303 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#139*{c'_1#139 <- `c'_1*`}, c'_2#91*{c'_2#91 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#263)*{c#263 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#338*{c_1#338 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#220*{c_2#220 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#140*{c'_1#140 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#339)))*{c_1#339 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#92*{c'_2#92 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#221)))*{c_2#221 <- `c_2*`} + -- let{`c*` : iN*} c#262*{c#262 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#141*{c'_1#141 <- `c'_1*`}, c'_2#93*{c'_2#93 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#304))*{iter#304 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#305))*{iter#305 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#340)))))*{c_1#340 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#222)))))*{c_2#222 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#306))*{iter#306 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#142*{c'_1#142 <- `c'_1*`}, c'_2#94*{c'_2#94 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#265)*{c#265 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#341*{c_1#341 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#223*{c_2#223 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#143*{c'_1#143 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#342)))*{c_1#342 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#95*{c'_2#95 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#224)))*{c_2#224 <- `c_2*`} + -- let{`c*` : iN*} c#264*{c#264 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#144*{c'_1#144 <- `c'_1*`}, c'_2#96*{c'_2#96 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#307))*{iter#307 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#308))*{iter#308 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#343)))))*{c_1#343 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#225)))))*{c_2#225 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#309))*{iter#309 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#145*{c'_1#145 <- `c'_1*`}, c'_2#97*{c'_2#97 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#267)*{c#267 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#344*{c_1#344 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#226*{c_2#226 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#146*{c'_1#146 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#345)))*{c_1#345 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#98*{c'_2#98 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#227)))*{c_2#227 <- `c_2*`} + -- let{`c*` : iN*} c#266*{c#266 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#147*{c'_1#147 <- `c'_1*`}, c'_2#99*{c'_2#99 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#310))*{iter#310 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#311))*{iter#311 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#346)))))*{c_1#346 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#228)))))*{c_2#228 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#312))*{iter#312 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#148*{c'_1#148 <- `c'_1*`}, c'_2#100*{c'_2#100 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#269)*{c#269 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#347*{c_1#347 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#229*{c_2#229 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#149*{c'_1#149 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#348)))*{c_1#348 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#101*{c'_2#101 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#230)))*{c_2#230 <- `c_2*`} + -- let{`c*` : iN*} c#268*{c#268 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#150*{c'_1#150 <- `c'_1*`}, c'_2#102*{c'_2#102 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#313))*{iter#313 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#314))*{iter#314 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#349)))))*{c_1#349 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#231)))))*{c_2#231 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#315))*{iter#315 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#151*{c'_1#151 <- `c'_1*`}, c'_2#103*{c'_2#103 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#271)*{c#271 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#350*{c_1#350 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#232*{c_2#232 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#152*{c'_1#152 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#351)))*{c_1#351 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#104*{c'_2#104 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#233)))*{c_2#233 <- `c_2*`} + -- let{`c*` : iN*} c#270*{c#270 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#153*{c'_1#153 <- `c'_1*`}, c'_2#105*{c'_2#105 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#316))*{iter#316 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#317))*{iter#317 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#352)))))*{c_1#352 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#234)))))*{c_2#234 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#318))*{iter#318 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#154*{c'_1#154 <- `c'_1*`}, c'_2#106*{c'_2#106 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#273)*{c#273 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#353*{c_1#353 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#235*{c_2#235 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#155*{c'_1#155 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#354)))*{c_1#354 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#107*{c'_2#107 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#236)))*{c_2#236 <- `c_2*`} + -- let{`c*` : iN*} c#272*{c#272 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#156*{c'_1#156 <- `c'_1*`}, c'_2#108*{c'_2#108 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#319))*{iter#319 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#320))*{iter#320 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#355)))))*{c_1#355 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#237)))))*{c_2#237 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#321))*{iter#321 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#157*{c'_1#157 <- `c'_1*`}, c'_2#109*{c'_2#109 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#275)*{c#275 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#356*{c_1#356 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#238*{c_2#238 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#158*{c'_1#158 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#357)))*{c_1#357 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#110*{c'_2#110 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#239)))*{c_2#239 <- `c_2*`} + -- let{`c*` : iN*} c#274*{c#274 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#159*{c'_1#159 <- `c'_1*`}, c'_2#111*{c'_2#111 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#322))*{iter#322 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#323))*{iter#323 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#358)))))*{c_1#358 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#240)))))*{c_2#240 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#324))*{iter#324 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#160*{c'_1#160 <- `c'_1*`}, c'_2#112*{c'_2#112 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivmul_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1#7*{i_1#7 <- `i_1*`}, i_2#7*{i_2#7 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#325))*{iter#325 <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#326))*{iter#326 <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#327))*{iter#327 <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#328))*{iter#328 <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#329))*{iter#329 <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#330))*{iter#330 <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#331))*{iter#331 <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#332))*{iter#332 <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#333))*{iter#333 <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#334))*{iter#334 <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#335))*{iter#335 <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#336))*{iter#336 <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#337))*{iter#337 <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#338))*{iter#338 <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#339))*{iter#339 <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#340))*{iter#340 <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax num = + | CONST(numtype : numtype, num_) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_num: `%`(num) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule num_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_num(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax vec = + | VCONST(vectype : vectype, vec_) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_vec: `%`(vec) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule vec_case_0{vectype : vectype, var_0 : vec_}: + `%`(VCONST_vec(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax result = + | _VALS(`val*` : val*) + | `(REF.EXN_ADDR%)THROW_REF`(exnaddr : exnaddr) + | TRAP + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_result: `%`(result) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_0{`val*` : val*}: + `%`(_VALS_result(`val*`)) + -- (wf_val: `%`(val))*{val <- `val*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_1{exnaddr : exnaddr}: + `%`(`(REF.EXN_ADDR%)THROW_REF`_result(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_2: + `%`(TRAP_result) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostfunc = + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funccode = + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funccode: `%`(funccode) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_funccode(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_1: + `%`(`...`_funccode) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax taginst = +{ + TYPE tagtype +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_taginst: `%`(taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_case_{var_0 : tagtype}: + `%`({TYPE var_0}) + -- wf_typeuse: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globalinst = +{ + TYPE globaltype, + VALUE val +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_globalinst: `%`(globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_case_{var_0 : globaltype, var_1 : val}: + `%`({TYPE var_0, VALUE var_1}) + -- wf_globaltype: `%`(var_0) + -- wf_val: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax meminst = +{ + TYPE memtype, + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_meminst: `%`(meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_case_{var_0 : memtype, var_1 : byte*}: + `%`({TYPE var_0, BYTES var_1}) + -- wf_memtype: `%`(var_0) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableinst = +{ + TYPE tabletype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_tableinst: `%`(tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_case_{var_0 : tabletype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_tabletype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcinst = +{ + TYPE deftype, + MODULE moduleinst, + CODE funccode +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funcinst: `%`(funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_case_{var_0 : deftype, var_1 : moduleinst, var_2 : funccode}: + `%`({TYPE var_0, MODULE var_1, CODE var_2}) + -- wf_moduleinst: `%`(var_1) + -- wf_funccode: `%`(var_2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax datainst = +{ + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_datainst: `%`(datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_case_{var_0 : byte*}: + `%`({BYTES var_0}) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax eleminst = +{ + TYPE elemtype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_eleminst: `%`(eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_case_{var_0 : elemtype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_reftype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax packval = + | PACK(packtype : packtype, iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_packval: `%`(packval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packval_case_0{packtype : packtype, var_0 : iN}: + `%`(PACK_packval(packtype, var_0)) + -- wf_uN: `%%`($psize(packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax fieldval = + | CONST(numtype : numtype, num_) + | VCONST(vectype : vectype, vec_) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + | PACK(packtype : packtype, iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_fieldval: `%`(fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_fieldval(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_1{vectype : vectype, var_0 : vec_}: + `%`(VCONST_fieldval(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_2{u31 : u31}: + `%`(`REF.I31_NUM`_fieldval(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_3: + `%`(`REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_4{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_5{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_6{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_7{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_8{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_9{ref : ref}: + `%`(`REF.EXTERN`_fieldval(ref)) + -- wf_ref: `%`(ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_10{packtype : packtype, var_0 : iN}: + `%`(PACK_fieldval(packtype, var_0)) + -- wf_uN: `%%`($psize(packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_structinst: `%`(structinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_arrayinst: `%`(arrayinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exninst = +{ + TAG tagaddr, + FIELDS val* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exninst: `%`(exninst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_case_{var_0 : tagaddr, var_1 : val*}: + `%`({TAG var_0, FIELDS var_1}) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax store = +{ + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_store: `%`(store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: + `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) + -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} + -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} + -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} + -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} + -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} + -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} + -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} + -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} + -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} + -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax state = + | `%;%`(store : store, frame : frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_state: `%`(state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule state_case_0{store : store, frame : frame}: + `%`(`%;%`_state(store, frame)) + -- wf_store: `%`(store) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax config = + | `%;%`(state : state, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_config: `%`(config) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule config_case_0{state : state, `instr*` : instr*}: + `%`(`%;%`_config(state, `instr*`)) + -- wf_state: `%`(state) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $Ki : nat + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $Ki = 1024 + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $packfield_(storagetype : storagetype, val : val) : fieldval? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(BOT_storagetype, val) = ?((val : val <: fieldval)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{`null?` : null?, heaptype : heaptype, val : val}(REF_storagetype(`null?`, heaptype), val) = ?((val : val <: fieldval)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(V128_storagetype, val) = ?((val : val <: fieldval)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(F64_storagetype, val) = ?((val : val <: fieldval)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(F32_storagetype, val) = ?((val : val <: fieldval)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(I64_storagetype, val) = ?((val : val <: fieldval)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(I32_storagetype, val) = ?((val : val <: fieldval)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation packfield__is_wf: `%%%`(storagetype : storagetype, val : val, ret_val : fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packfield__is_wf_0{storagetype : storagetype, val : val, ret_val : fieldval}: + `%%%`(storagetype, val, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_val: `%`(val) + -- if (ret_val = !($packfield_(storagetype, val))) + -- wf_fieldval: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(BOT_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(V128_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(F64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(F32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(I64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(I32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(BOT_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(V128_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(F64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(F32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(I64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(I32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(BOT_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(V128_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(F64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(F32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(I64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(I32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(BOT_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(V128_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(F64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(F32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(I64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(I32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(BOT_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(V128_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(F64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(F32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(I64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(I32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(BOT_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(V128_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(F64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(F32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(I64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(I32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(BOT_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{`null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(V128_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(F64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(F32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(I64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(I32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(BOT_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(V128_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(F64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(F32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(I64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(I32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(BOT_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(V128_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(F64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(F32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(I64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(I32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(BOT_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(V128_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(F64_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(F32_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(I64_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation unpackfield__is_wf: `%%%%`(storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule unpackfield__is_wf_0{storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val}: + `%%%%`(storagetype, var_0, fieldval, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = !($unpackfield_(storagetype, var_0, fieldval))) + -- wf_val: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.1-190.86 +def $tagsxa(externaddr*) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.23 + def $tagsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.42 + def $tagsxa{a : nat, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa#1*{xa#1 <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:198.1-198.57 + def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#2*{xa#2 <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.1-191.89 +def $globalsxa(externaddr*) : globaladdr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.26 + def $globalsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.51 + def $globalsxa{a : nat, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa#3*{xa#3 <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:202.1-202.63 + def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#4*{xa#4 <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.1-192.86 +def $memsxa(externaddr*) : memaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.23 + def $memsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.42 + def $memsxa{a : nat, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa#5*{xa#5 <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:206.1-206.57 + def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#6*{xa#6 <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.88 +def $tablesxa(externaddr*) : tableaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.25 + def $tablesxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.48 + def $tablesxa{a : nat, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa#7*{xa#7 <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:210.1-210.61 + def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#8*{xa#8 <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.87 +def $funcsxa(externaddr*) : funcaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.24 + def $funcsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.45 + def $funcsxa{a : nat, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa#9*{xa#9 <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:214.1-214.59 + def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#10*{xa#10 <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $store(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $store{s : store, f : frame}(`%;%`_state(s, f)) = s + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation store_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_is_wf_0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $store(state)) + -- wf_store: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $frame(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation frame_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_is_wf_0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $frame(state)) + -- wf_frame: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tagaddr(state : state) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $moduleinst(state : state) : moduleinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation moduleinst_is_wf: `%%`(state : state, ret_val : moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_is_wf_0{state : state, ret_val : moduleinst}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $moduleinst(state)) + -- wf_moduleinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $taginst(state : state) : taginst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation taginst_is_wf: `%%`(state : state, ret_val : taginst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_is_wf_0{state : state, ret_val : taginst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $taginst(state)) + -- (wf_taginst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $globalinst(state : state) : globalinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation globalinst_is_wf: `%%`(state : state, ret_val : globalinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_is_wf_0{state : state, ret_val : globalinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $globalinst(state)) + -- (wf_globalinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $meminst(state : state) : meminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation meminst_is_wf: `%%`(state : state, ret_val : meminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_is_wf_0{state : state, ret_val : meminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $meminst(state)) + -- (wf_meminst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tableinst(state : state) : tableinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tableinst_is_wf: `%%`(state : state, ret_val : tableinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_is_wf_0{state : state, ret_val : tableinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $tableinst(state)) + -- (wf_tableinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $funcinst(state : state) : funcinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation funcinst_is_wf: `%%`(state : state, ret_val : funcinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_is_wf_0{state : state, ret_val : funcinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $funcinst(state)) + -- (wf_funcinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $datainst(state : state) : datainst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation datainst_is_wf: `%%`(state : state, ret_val : datainst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_is_wf_0{state : state, ret_val : datainst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $datainst(state)) + -- (wf_datainst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $eleminst(state : state) : eleminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation eleminst_is_wf: `%%`(state : state, ret_val : eleminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_is_wf_0{state : state, ret_val : eleminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $eleminst(state)) + -- (wf_eleminst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $structinst(state : state) : structinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation structinst_is_wf: `%%`(state : state, ret_val : structinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_is_wf_0{state : state, ret_val : structinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $structinst(state)) + -- (wf_structinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $arrayinst(state : state) : arrayinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation arrayinst_is_wf: `%%`(state : state, ret_val : arrayinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_is_wf_0{state : state, ret_val : arrayinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $arrayinst(state)) + -- (wf_arrayinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $exninst(state : state) : exninst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation exninst_is_wf: `%%`(state : state, ret_val : exninst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_is_wf_0{state : state, ret_val : exninst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $exninst(state)) + -- (wf_exninst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fof(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fof{z : state}(z) = $frame(z) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fof_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fof_is_wf_0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $fof(state)) + -- wf_frame: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $type(state : state, typeidx : typeidx) : deftype + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $type{z : state, x : uN}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $sof(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $sof{z : state}(z) = $store(z) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation sof_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule sof_is_wf_0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $sof(state)) + -- wf_store: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tag(state : state, tagidx : tagidx) : taginst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tag_is_wf: `%%%`(state : state, tagidx : tagidx, ret_val : taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tag_is_wf_0{state : state, tagidx : tagidx, ret_val : taginst}: + `%%%`(state, tagidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $tag(state, tagidx)) + -- wf_taginst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $global(state : state, globalidx : globalidx) : globalinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation global_is_wf: `%%%`(state : state, globalidx : globalidx, ret_val : globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule global_is_wf_0{state : state, globalidx : globalidx, ret_val : globalinst}: + `%%%`(state, globalidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $global(state, globalidx)) + -- wf_globalinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $mem(state : state, memidx : memidx) : meminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation mem_is_wf: `%%%`(state : state, memidx : memidx, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule mem_is_wf_0{state : state, memidx : memidx, ret_val : meminst}: + `%%%`(state, memidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $mem(state, memidx)) + -- wf_meminst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $table(state : state, tableidx : tableidx) : tableinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation table_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule table_is_wf_0{state : state, tableidx : tableidx, ret_val : tableinst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $table(state, tableidx)) + -- wf_tableinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $func(state : state, funcidx : funcidx) : funcinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation func_is_wf: `%%%`(state : state, funcidx : funcidx, ret_val : funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule func_is_wf_0{state : state, funcidx : funcidx, ret_val : funcinst}: + `%%%`(state, funcidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $func(state, funcidx)) + -- wf_funcinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $data(state : state, dataidx : dataidx) : datainst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation data_is_wf: `%%%`(state : state, dataidx : dataidx, ret_val : datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule data_is_wf_0{state : state, dataidx : dataidx, ret_val : datainst}: + `%%%`(state, dataidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $data(state, dataidx)) + -- wf_datainst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $elem(state : state, tableidx : tableidx) : eleminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation elem_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule elem_is_wf_0{state : state, tableidx : tableidx, ret_val : eleminst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $elem(state, tableidx)) + -- wf_eleminst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $local(state : state, localidx : localidx) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation local_is_wf: `%%%`(state : state, localidx : localidx, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule local_is_wf_0{state : state, localidx : localidx, ret_val : val?}: + `%%%`(state, localidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $local(state, localidx)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_local(state : state, localidx : localidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_local_is_wf: `%%%%`(state : state, localidx : localidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_local_is_wf_0{state : state, localidx : localidx, val : val, ret_val : state}: + `%%%%`(state, localidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_local(state, localidx, val)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_global(state : state, globalidx : globalidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_global_is_wf: `%%%%`(state : state, globalidx : globalidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_global_is_wf_0{state : state, globalidx : globalidx, val : val, ret_val : state}: + `%%%%`(state, globalidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_global(state, globalidx, val)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_table_is_wf: `%%%%%`(state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_table_is_wf_0{state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state}: + `%%%%%`(state, tableidx, nat, ref, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_ref: `%`(ref) + -- if (ret_val = $with_table(state, tableidx, nat, ref)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_tableinst_is_wf: `%%%%`(state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_tableinst_is_wf_0{state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state}: + `%%%%`(state, tableidx, tableinst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_tableinst: `%`(tableinst) + -- if (ret_val = $with_tableinst(state, tableidx, tableinst)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_mem{z : state, x : uN, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b#1*{b#1 <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_mem_is_wf: `%%%%%%`(state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_mem_is_wf_0{state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state}: + `%%%%%%`(state, memidx, nat, nat_0, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_mem(state, memidx, nat, nat_0, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_meminst_is_wf: `%%%%`(state : state, memidx : memidx, meminst : meminst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_meminst_is_wf_0{state : state, memidx : memidx, meminst : meminst, ret_val : state}: + `%%%%`(state, memidx, meminst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- wf_meminst: `%`(meminst) + -- if (ret_val = $with_meminst(state, memidx, meminst)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_elem(state : state, elemidx : elemidx, ref*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_elem{z : state, x : uN, `r*` : ref*}(z, x, r#1*{r#1 <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_elem_is_wf: `%%%%`(state : state, elemidx : elemidx, var_0 : ref*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_elem_is_wf_0{state : state, elemidx : elemidx, var_0 : ref*, ret_val : state}: + `%%%%`(state, elemidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, elemidx) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_elem(state, elemidx, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_data(state : state, dataidx : dataidx, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b#2*{b#2 <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_data_is_wf: `%%%%`(state : state, dataidx : dataidx, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_data_is_wf_0{state : state, dataidx : dataidx, var_0 : byte*, ret_val : state}: + `%%%%`(state, dataidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_data(state, dataidx, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_struct_is_wf: `%%%%%`(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_struct_is_wf_0{state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, structaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_struct(state, structaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_array_is_wf: `%%%%%`(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_array_is_wf_0{state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, arrayaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_array(state, arrayaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_structinst(state : state, structinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_structinst{z : state, `si*` : structinst*}(z, si#1*{si#1 <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_structinst_is_wf: `%%%`(state : state, var_0 : structinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_structinst_is_wf_0{state : state, var_0 : structinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_structinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_structinst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_arrayinst(state : state, arrayinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai#1*{ai#1 <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_arrayinst_is_wf: `%%%`(state : state, var_0 : arrayinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_arrayinst_is_wf_0{state : state, var_0 : arrayinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_arrayinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_arrayinst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_exninst(state : state, exninst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_exninst{z : state, `exn*` : exninst*}(z, exn#1*{exn#1 <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_exninst_is_wf: `%%%`(state : state, var_0 : exninst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_exninst_is_wf_0{state : state, var_0 : exninst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_exninst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_exninst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, i' : uN}(tableinst, n, r) = ?(tableinst') + -- let{at : addrtype, i : u64, `j?` : u64?, rt : reftype, `r'*` : ref*} {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#1?{j#1 <- `j?`}), rt), REFS r'#1*{r'#1 <- `r'*`}} = tableinst + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#2?{j#2 <- `j?`}), rt), REFS r'#2*{r'#2 <- `r'*`} ++ r^n{}}) + -- if ($proj_uN_0(i').0 = (|r'#3*{r'#3 <- `r'*`}| + n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#3).0))?{j#3 <- `j?`} + -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#4?{j#4 <- `j?`}), rt), REFS r'#4*{r'#4 <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#5?{j#5 <- `j?`}), rt), REFS r'#5*{r'#5 <- `r'*`} ++ r^n{}}) + def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growtable_is_wf: `%%%%`(tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growtable_is_wf_0{tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst}: + `%%%%`(tableinst, nat, ref, ret_val) + -- wf_tableinst: `%`(tableinst) + -- wf_ref: `%`(ref) + -- if (ret_val = !($growtable(tableinst, nat, ref))) + -- wf_tableinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $growmem(meminst : meminst, nat : nat) : meminst? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $growmem{meminst : meminst, n : nat, meminst' : meminst, i' : uN}(meminst, n) = ?(meminst') + -- let{at : addrtype, i : u64, `j?` : u64?, `b*` : byte*} {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#3*{b#3 <- `b*`}} = meminst + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#4*{b#4 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#5*{b#5 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#8).0))?{j#8 <- `j?`} + -- if ($proj_uN_0(i').0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#9?{j#9 <- `j?`})), BYTES b#6*{b#6 <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#10?{j#10 <- `j?`})), BYTES b#7*{b#7 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growmem_is_wf: `%%%`(meminst : meminst, nat : nat, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growmem_is_wf_0{meminst : meminst, nat : nat, ret_val : meminst}: + `%%%`(meminst, nat, ret_val) + -- wf_meminst: `%`(meminst) + -- if (ret_val = !($growmem(meminst, nat))) + -- wf_meminst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Num_ok: `%|-%:%`(store, num, numtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, nt : numtype, c : num_}: + `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Vec_ok: `%|-%:%`(store, vec, vectype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, vt : vectype, c : vec_}: + `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +relation Ref_ok: `%|-%:%`(store, ref, reftype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.36 + rule null{s : store}: + `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.31 + rule i31{s : store, i : u31}: + `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.I31_NUM`_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 + rule struct{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- if (s.STRUCTS_store[a].TYPE_structinst = dt) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 + rule array{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 + rule func{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- if (s.FUNCS_store[a].TYPE_funcinst = dt) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 + rule exn{s : store, a : addr, exn : exninst}: + `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) + -- if (s.EXNS_store[a] = exn) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.33 + rule host{s : store, a : addr}: + `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.HOST_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 + rule extern{s : store, ref : ref}: + `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) + -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.EXTERN`_ref(ref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-69.34 + rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: + `%|-%:%`(s, ref, rt) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Val_ok: `%|-%:%`(store, val, valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule num{s : store, num : num, nt : numtype}: + `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) + -- Num_ok: `%|-%:%`(s, num, nt) + -- wf_store: `%`(s) + -- wf_num: `%`(num) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule vec{s : store, vec : vec, vt : vectype}: + `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) + -- Vec_ok: `%|-%:%`(s, vec, vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule ref{s : store, ref : ref, rt : reftype}: + `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Packval_ok: `%|-%:%`(store, packval, packtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, pt : packtype, c : iN}: + `%|-%:%`(s, PACK_packval(pt, c), pt) + -- wf_store: `%`(s) + -- wf_packval: `%`(PACK_packval(pt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule val{s : store, val : val, t : valtype}: + `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_val: `%`(val) + -- wf_valtype: `%`(t) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule packval{s : store, packval : packval, pt : packtype}: + `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) + -- Packval_ok: `%|-%:%`(s, packval, pt) + -- wf_store: `%`(s) + -- wf_packval: `%`(packval) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-104.84 +relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:106.1-108.28 + rule tag{s : store, a : addr, taginst : taginst}: + `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- if (s.TAGS_store[a] = taginst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:110.1-112.34 + rule global{s : store, a : addr, globalinst : globalinst}: + `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- if (s.GLOBALS_store[a] = globalinst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:114.1-116.28 + rule mem{s : store, a : addr, meminst : meminst}: + `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- if (s.MEMS_store[a] = meminst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:118.1-120.32 + rule table{s : store, a : addr, tableinst : tableinst}: + `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- if (s.TABLES_store[a] = tableinst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:122.1-124.30 + rule func{s : store, a : addr, funcinst : funcinst}: + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + -- if (s.FUNCS_store[a] = funcinst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:126.1-130.37 + rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: + `%|-%:%`(s, externaddr, xt) + -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') + -- Externtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt) + -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_valtype_is_wf: `%%%`(moduleinst : moduleinst, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_valtype_is_wf_0{moduleinst : moduleinst, valtype : valtype, ret_val : valtype}: + `%%%`(moduleinst, valtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $inst_valtype(moduleinst, valtype)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_reftype_is_wf: `%%%`(moduleinst : moduleinst, reftype : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_reftype_is_wf_0{moduleinst : moduleinst, reftype : reftype, ret_val : reftype}: + `%%%`(moduleinst, reftype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_reftype: `%`(reftype) + -- if (ret_val = $inst_reftype(moduleinst, reftype)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_globaltype_is_wf: `%%%`(moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_globaltype_is_wf_0{moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype}: + `%%%`(moduleinst, globaltype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = $inst_globaltype(moduleinst, globaltype)) + -- wf_globaltype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_memtype_is_wf: `%%%`(moduleinst : moduleinst, memtype : memtype, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_memtype_is_wf_0{moduleinst : moduleinst, memtype : memtype, ret_val : memtype}: + `%%%`(moduleinst, memtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $inst_memtype(moduleinst, memtype)) + -- wf_memtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_tabletype_is_wf: `%%%`(moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_tabletype_is_wf_0{moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype}: + `%%%`(moduleinst, tabletype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = $inst_tabletype(moduleinst, tabletype)) + -- wf_tabletype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_pure_before_ref.eq-true`: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref}: + `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_pure: `%~>%`(instr*, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule unreachable: + `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule nop: + `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule drop{val : val}: + `%~>%`([(val : val <: instr) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- if ($proj_uN_0(l).0 = 0) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- if ($proj_uN_0(l).0 > 0) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-true`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-false`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-null`{val : val, l : labelidx}: + `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- if (val = `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-addr`{val : val, l : labelidx}: + `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) + -- if (val =/= `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-null`{val : val, l : labelidx}: + `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) + -- if (val = `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-addr`{val : val, l : labelidx}: + `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) + -- if (val =/= `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call_indirect{x : idx, yy : typeuse}: + `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call_indirect{x : idx, yy : typeuse}: + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `frame-vals`{n : n, f : frame, `val*` : val*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: + `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-label`{n : n, `instr'*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-handler`{n : n, `catch*` : catch*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-frame`{n : n, f : frame}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `local.tee`{val : val, x : idx}: + `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) + -- wf_instr: `%`(`LOCAL.SET`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.i31`{i : num_}: + `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`REF.I31`_instr) + -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-true`{ref : ref}: + `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-false`{ref : ref}: + `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-null`{ref : ref}: + `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-addr`{ref : ref}: + `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) + -- if (ref_1 = ref_2) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-null`{sx : sx}: + `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-num`{i : u31, sx : sx}: + `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(`REF.I31_NUM`_instr(i)) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new`{val : val, n : n, x : idx}: + `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-null`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-addr`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-null`: + `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-addr`{ref : ref}: + `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) + -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- if (c <- $unop_(nt, unop, c_1)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- if ($unop_(nt, unop, c_1) = []) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- if (c <- $binop_(nt, binop, c_1, c_2)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- if ($binop_(nt, binop, c_1, c_2) = []) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) + -- wf_uN: `%%`(32, $testop_(nt, testop, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) + -- wf_uN: `%%`(32, $relop_(nt, relop, c_1, c_2)) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvunop_(V128_vectype, vvunop, c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvtestop{c_1 : vec_, c : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) + -- wf_uN: `%%`(32, $inez_($vsize(V128_vectype), c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vunop_(sh, vunop, c_1)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- if ($vunop_(sh, vunop, c_1) = []) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) + -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), i))*{i <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} + -- (wf_uN: `%%`(32, $inez_($jsizenn(Jnn), !($proj_lane__2(i)))))*{i <- `i*`} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) + -- wf_uN: `%%`(128, $vrelop_(sh, vrelop, c_1, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) + -- wf_uN: `%%`(128, $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) + -- wf_uN: `%%`(32, $vbitmaskop_(sh, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) + -- wf_uN: `%%`(128, $vswizzlop_(sh, swizzlop, c_1, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) + -- wf_uN: `%%`(128, $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: + `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- wf_uN: `%%`(32, $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)} + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) + -- wf_uN: `%%`(128, $vextunop__(sh_1, sh_2, vextunop, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) + -- wf_uN: `%%`(128, $vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) + -- wf_uN: `%%`(128, $vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) + -- wf_uN: `%%`(128, $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) + -- wf_uN: `%%`(128, $vcvtop__(sh_1, sh_2, vcvtop, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +def $blocktype_(state : state, blocktype : blocktype) : instrtype + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1#2*{t_1#2 <- `t_1*`}), `%`_resulttype(t_2#2*{t_2#2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#3*{t_1#3 <- `t_1*`}), `%`_resulttype(t_2#3*{t_2#3 <- `t_2*`}))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t#1?{t#1 <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation blocktype__is_wf: `%%%`(state : state, blocktype : blocktype, ret_val : instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule blocktype__is_wf_0{state : state, blocktype : blocktype, ret_val : instrtype}: + `%%%`(state, blocktype, ret_val) + -- wf_state: `%`(state) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $blocktype_(state, blocktype)) + -- wf_instrtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_throw_ref-handler-next`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.test-false`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-num`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read: `%~>%`(config, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`($blocktype_(z, bt)) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`($blocktype_(z, bt)) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + -- wf_moduleinst: `%`($moduleinst(z)) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-null`{z : state, yy : typeuse}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- if ($funcinst(z)[a] = fi) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + -- wf_moduleinst: `%`($moduleinst(z)) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) + -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) + -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`($blocktype_(z, bt)) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `local.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) + -- if ($local(z, x) = ?(val)) + -- wf_val: `%`(val) + -- (wf_val: `%`(iter))?{iter <- $local(z, x)} + -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `global.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) + -- if ($global(z, x).VALUE_globalinst = val) + -- wf_val: `%`(val) + -- wf_globalinst: `%`($global(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0] : ref <: instr)]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: + `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- if (|$table(z, x).REFS_tableinst| = n) + -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0] : ref <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) + -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, Jnn : Jnn}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[(($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (c = $extend__(N, 128, U_sx, j)) + -- wf_uN: `%%`(N, j) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $extend__(N, 128, U_sx, j)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, k)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.size`{z : state, x : idx, at : addrtype, n : n, lim : limits}: + `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) + -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL`_instr(ht)])) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.func`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) + -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [(ref : ref <: instr)]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) + -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))}*{zt <- `zt*`} + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} + -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])) : val <: instr)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_val: `%`(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]))) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (!($default_($unpack(zt))) = ?(val)) + -- wf_val: `%`(val) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))} + -- wf_valtype: `%`($unpack(zt)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- (wf_instr: `%`($const(!($cunpack(zt)), $cunpacknum_(zt, c))))^n{c <- `c*`} + -- (wf_lit_: `%%`((!($cunpack(zt)) : consttype <: storagetype), $cunpacknum_(zt, c)))^n{c <- `c*`} + -- (wf_byte: `%`(iter))*{iter <- $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))} + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)}^n{c <- `c*`} + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])) : val <: instr)]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_val: `%`(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]))) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-array`{z : state, a : addr}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-null`{z : state, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) + -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null1`{z : state, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), []) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) + -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), []) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) + -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) + -- wf_ref: `%`(ref) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), []) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) + -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- wf_lit_: `%%`(zt, c) + -- wf_instr: `%`($const(!($cunpack(zt)), $cunpacknum_(zt, c))) + -- wf_lit_: `%%`((!($cunpack(zt)) : consttype <: storagetype), $cunpacknum_(zt, c)) + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)} + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +relation Step: `%~>%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.36 + rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:45.1-47.45 + rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 + rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if (a = |$exninst(z)|) + -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + -- wf_taginst: `%`($tag(z, x)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:305.1-306.56 + rule `local.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:318.1-319.58 + rule `global.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:332.1-334.33 + rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.32 + rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:347.1-350.46 + rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- if (ti = !($growtable($table(z, x), n, ref))) + -- wf_tableinst: `%`(!($growtable($table(z, x), n, ref))) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:352.1-353.87 + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:413.1-414.51 + rule `elem.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:497.1-500.60 + rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:502.1-506.29 + rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $nbytes_(nt, c)) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:508.1-511.52 + rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:513.1-517.52 + rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))} + -- wf_uN: `%%`(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c)))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:519.1-522.63 + rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:524.1-527.31 + rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:530.1-533.50 + rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:535.1-540.49 + rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:549.1-552.37 + rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (mi = !($growmem($mem(z, x), n))) + -- wf_meminst: `%`(!($growmem($mem(z, x), n))) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:554.1-555.84 + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:615.1-616.51 + rule `data.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:692.1-696.65 + rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (a = |$structinst(z)|) + -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:713.1-714.55 + rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:716.1-719.46 + rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:732.1-737.65 + rule `array.new_fixed`{z : state, n : n, `val*` : val*, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:777.1-778.66 + rule `array.set-null`{z : state, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:780.1-782.39 + rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:784.1-787.44 + rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +relation Steps: `%~>*%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + rule refl{z : state, `instr*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: + `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 +def $alloctypes(type*) : deftype* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 + def $alloctypes([]) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 + def $alloctypes{`type'*` : type*, type : type, `deftype*` : deftype*, x : uN}(type'#1*{type'#1 <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- let{`deftype'*` : deftype*} deftype'#1*{deftype'#1 <- `deftype'*`} = $alloctypes(type'#2*{type'#2 <- `type'*`}) + -- let{rectype : rectype} TYPE_type(rectype) = type + -- if (deftype#1*{deftype#1 <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype'#2 : deftype <: typeuse)*{deftype'#2 <- `deftype'*`})) + -- if ($proj_uN_0(x).0 = |deftype'#3*{deftype'#3 <- `deftype'*`}|) + -- wf_uN: `%%`(32, x) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- if (taginst = {TYPE tagtype}) + -- wf_taginst: `%`({TYPE tagtype}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctag_is_wf: `%%%`(store : store, tagtype : tagtype, ret_val : (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctag_is_wf_0{store : store, tagtype : tagtype, ret_val : (store, tagaddr)}: + `%%%`(store, tagtype, ret_val) + -- wf_store: `%`(store) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = $alloctag(store, tagtype)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 +def $alloctags(store : store, tagtype*) : (store, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 + def $alloctags{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 + def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*}(s, [tagtype] ++ tagtype'#1*{tagtype'#1 <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) + -- let{ja : tagaddr, s_1 : store} (s_1, ja) = $alloctag(s, tagtype) + -- let{s_2 : store, `ja'*` : tagaddr*} (s_2, ja'#1*{ja'#1 <- `ja'*`}) = $alloctags(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}) + -- wf_store: `%`($alloctag(s, tagtype).0) + -- wf_store: `%`($alloctags(s_1, tagtype'#3*{tagtype'#3 <- `tagtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation alloctags_is_wf: `%%%`(store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule alloctags_is_wf_0{store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_typeuse: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $alloctags(store, var_0)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- if (globalinst = {TYPE globaltype, VALUE val}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocglobal_is_wf: `%%%%`(store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocglobal_is_wf_0{store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)}: + `%%%%`(store, globaltype, val, ret_val) + -- wf_store: `%`(store) + -- wf_globaltype: `%`(globaltype) + -- wf_val: `%`(val) + -- if (ret_val = $allocglobal(store, globaltype, val)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 +def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 + def $allocglobals{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 + def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*}(s, [globaltype] ++ globaltype'#1*{globaltype'#1 <- `globaltype'*`}, [val] ++ val'#1*{val'#1 <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) + -- let{ga : globaladdr, s_1 : store} (s_1, ga) = $allocglobal(s, globaltype, val) + -- let{s_2 : store, `ga'*` : globaladdr*} (s_2, ga'#1*{ga'#1 <- `ga'*`}) = $allocglobals(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}) + -- wf_store: `%`($allocglobal(s, globaltype, val).0) + -- wf_store: `%`($allocglobals(s_1, globaltype'#3*{globaltype'#3 <- `globaltype'*`}, val'#3*{val'#3 <- `val'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation allocglobals_is_wf: `%%%%`(store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule allocglobals_is_wf_0{store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $allocglobals(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocmem(store : store, memtype : memtype) : (store, memaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#11?{j#11 <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#12?{j#12 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#13?{j#13 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmem_is_wf: `%%%`(store : store, memtype : memtype, ret_val : (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmem_is_wf_0{store : store, memtype : memtype, ret_val : (store, memaddr)}: + `%%%`(store, memtype, ret_val) + -- wf_store: `%`(store) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $allocmem(store, memtype)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 +def $allocmems(store : store, memtype*) : (store, memaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 + def $allocmems{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 + def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*}(s, [memtype] ++ memtype'#1*{memtype'#1 <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) + -- let{ma : memaddr, s_1 : store} (s_1, ma) = $allocmem(s, memtype) + -- let{s_2 : store, `ma'*` : memaddr*} (s_2, ma'#1*{ma'#1 <- `ma'*`}) = $allocmems(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}) + -- wf_store: `%`($allocmem(s, memtype).0) + -- wf_store: `%`($allocmems(s_1, memtype'#3*{memtype'#3 <- `memtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation allocmems_is_wf: `%%%`(store : store, var_0 : memtype*, ret_val : (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule allocmems_is_wf_0{store : store, var_0 : memtype*, ret_val : (store, memaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_memtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocmems(store, var_0)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j#14?{j#14 <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#15?{j#15 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#16?{j#16 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctable_is_wf: `%%%%`(store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctable_is_wf_0{store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)}: + `%%%%`(store, tabletype, ref, ret_val) + -- wf_store: `%`(store) + -- wf_tabletype: `%`(tabletype) + -- wf_ref: `%`(ref) + -- if (ret_val = $alloctable(store, tabletype, ref)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 +def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 + def $alloctables{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 + def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*}(s, [tabletype] ++ tabletype'#1*{tabletype'#1 <- `tabletype'*`}, [ref] ++ ref'#1*{ref'#1 <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) + -- let{ta : tableaddr, s_1 : store} (s_1, ta) = $alloctable(s, tabletype, ref) + -- let{s_2 : store, `ta'*` : tableaddr*} (s_2, ta'#1*{ta'#1 <- `ta'*`}) = $alloctables(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}) + -- wf_store: `%`($alloctable(s, tabletype, ref).0) + -- wf_store: `%`($alloctables(s_1, tabletype'#3*{tabletype'#3 <- `tabletype'*`}, ref'#3*{ref'#3 <- `ref'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation alloctables_is_wf: `%%%%`(store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule alloctables_is_wf_0{store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_tabletype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $alloctables(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocfunc_is_wf: `%%%%%`(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocfunc_is_wf_0{store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)}: + `%%%%%`(store, deftype, funccode, moduleinst, ret_val) + -- wf_store: `%`(store) + -- wf_funccode: `%`(funccode) + -- wf_moduleinst: `%`(moduleinst) + -- if (ret_val = $allocfunc(store, deftype, funccode, moduleinst)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 +def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 + def $allocfuncs{s : store}(s, [], [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 + def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*}(s, [dt] ++ dt'#3*{dt'#3 <- `dt'*`}, [funccode] ++ funccode'#1*{funccode'#1 <- `funccode'*`}, [moduleinst] ++ moduleinst'#1*{moduleinst'#1 <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) + -- let{fa : funcaddr, s_1 : store} (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) + -- let{s_2 : store, `fa'*` : funcaddr*} (s_2, fa'#1*{fa'#1 <- `fa'*`}) = $allocfuncs(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}) + -- wf_store: `%`($allocfunc(s, dt, funccode, moduleinst).0) + -- wf_store: `%`($allocfuncs(s_1, dt'#5*{dt'#5 <- `dt'*`}, funccode'#3*{funccode'#3 <- `funccode'*`}, moduleinst'#3*{moduleinst'#3 <- `moduleinst'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation allocfuncs_is_wf: `%%%%%`(store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule allocfuncs_is_wf_0{store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)}: + `%%%%%`(store, var_0, var_1, var_2, ret_val) + -- wf_store: `%`(store) + -- (wf_funccode: `%`(var_1))*{var_1 <- var_1} + -- (wf_moduleinst: `%`(var_2))*{var_2 <- var_2} + -- if (ret_val = $allocfuncs(store, var_0, var_1, var_2)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte#2*{byte#2 <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- if (datainst = {BYTES byte#3*{byte#3 <- `byte*`}}) + -- wf_datainst: `%`({BYTES byte#4*{byte#4 <- `byte*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocdata_is_wf: `%%%%`(store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocdata_is_wf_0{store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)}: + `%%%%`(store, datatype, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocdata(store, datatype, var_0)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 +def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 + def $allocdatas{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 + def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**}(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#8*{b#8 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- let{da : dataaddr, s_1 : store} (s_1, da) = $allocdata(s, ok, b#9*{b#9 <- `b*`}) + -- let{s_2 : store, `da'*` : dataaddr*} (s_2, da'#1*{da'#1 <- `da'*`}) = $allocdatas(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}) + -- wf_store: `%`($allocdata(s, ok, b#10*{b#10 <- `b*`}).0) + -- wf_store: `%`($allocdatas(s_1, ok'#3*{ok'#3 <- `ok'*`}, b'#3*{b'#3 <- `b'*#3`}*{`b'*#3` <- `b'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation allocdatas_is_wf: `%%%%`(store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule allocdatas_is_wf_0{store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocdatas(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref#1*{ref#1 <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- if (eleminst = {TYPE elemtype, REFS ref#2*{ref#2 <- `ref*`}}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref#3*{ref#3 <- `ref*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocelem_is_wf: `%%%%`(store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocelem_is_wf_0{store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)}: + `%%%%`(store, elemtype, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_reftype: `%`(elemtype) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocelem(store, elemtype, var_0)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 +def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 + def $allocelems{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 + def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**}(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#4*{ref'#4 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + -- let{ea : elemaddr, s_1 : store} (s_1, ea) = $allocelem(s, rt, ref#5*{ref#5 <- `ref*`}) + -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'#1*{ea'#1 <- `ea'*`}) = $allocelems(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#5*{ref'#5 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}) + -- wf_store: `%`($allocelem(s, rt, ref#6*{ref#6 <- `ref*`}).0) + -- wf_store: `%`($allocelems(s_1, rt'#3*{rt'#3 <- `rt'*`}, ref'#6*{ref'#6 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation allocelems_is_wf: `%%%%`(store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule allocelems_is_wf_0{store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_reftype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocelems(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexport(moduleinst : moduleinst, export : export) : exportinst + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexport_is_wf: `%%%`(moduleinst : moduleinst, export : export, ret_val : exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexport_is_wf_0{moduleinst : moduleinst, export : export, ret_val : exportinst}: + `%%%`(moduleinst, export, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_export: `%`(export) + -- if (ret_val = $allocexport(moduleinst, export)) + -- wf_exportinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexports(moduleinst : moduleinst, export*) : exportinst* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export#3*{export#3 <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexports_is_wf: `%%%`(moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexports_is_wf_0{moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*}: + `%%%`(moduleinst, var_0, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- (wf_export: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocexports(moduleinst, var_0)) + -- (wf_exportinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `xi*` : exportinst*}(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}) = (s_7, moduleinst) + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#2*{type#2 <- `type*`}), `%`_list(import#2*{import#2 <- `import*`}), `%`_list(tag#2*{tag#2 <- `tag*`}), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list(func#3*{func#3 <- `func*`}), `%`_list(data#2*{data#2 <- `data*`}), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#4*{export#4 <- `export*`})) = module + -- if (tag#3*{tag#3 <- `tag*`} = TAG_tag(tagtype#78)*{tagtype#78 <- `tagtype*`}) + -- if (global#4*{global#4 <- `global*`} = GLOBAL_global(globaltype#122, expr_G#1)*{expr_G#1 <- `expr_G*`, globaltype#122 <- `globaltype*`}) + -- if (mem#4*{mem#4 <- `mem*`} = MEMORY_mem(memtype#122)*{memtype#122 <- `memtype*`}) + -- if (table#4*{table#4 <- `table*`} = TABLE_table(tabletype#156, expr_T#1)*{expr_T#1 <- `expr_T*`, tabletype#156 <- `tabletype*`}) + -- if (func#4*{func#4 <- `func*`} = FUNC_func(x#2, local#2*{local#2 <- `local*#82`}, expr_F#1)*{expr_F#1 <- `expr_F*`, `local*#82` <- `local**`, x#2 <- `x*`}) + -- if (data#3*{data#3 <- `data*`} = DATA_data(byte#5*{byte#5 <- `byte*#110`}, datamode#110)*{`byte*#110` <- `byte**`, datamode#110 <- `datamode*`}) + -- if (elem#4*{elem#4 <- `elem*`} = ELEM_elem(elemtype#1, expr_E#1*{expr_E#1 <- `expr_E*#1`}, elemmode#230)*{elemmode#230 <- `elemmode*`, elemtype#1 <- `elemtype*`, `expr_E*#1` <- `expr_E**`}) + -- let{`aa_I*` : tagaddr*} aa_I#1*{aa_I#1 <- `aa_I*`} = $tagsxa(externaddr#2*{externaddr#2 <- `externaddr*`}) + -- let{`ga_I*` : globaladdr*} ga_I#1*{ga_I#1 <- `ga_I*`} = $globalsxa(externaddr#3*{externaddr#3 <- `externaddr*`}) + -- let{`ma_I*` : memaddr*} ma_I#1*{ma_I#1 <- `ma_I*`} = $memsxa(externaddr#4*{externaddr#4 <- `externaddr*`}) + -- let{`ta_I*` : tableaddr*} ta_I#1*{ta_I#1 <- `ta_I*`} = $tablesxa(externaddr#5*{externaddr#5 <- `externaddr*`}) + -- let{`fa_I*` : funcaddr*} fa_I#1*{fa_I#1 <- `fa_I*`} = $funcsxa(externaddr#6*{externaddr#6 <- `externaddr*`}) + -- let{`dt*` : deftype*} dt#8*{dt#8 <- `dt*`} = $alloctypes(type#3*{type#3 <- `type*`}) + -- let{`fa*` : nat*} fa#1*{fa#1 <- `fa*`} = (|s.FUNCS_store| + i_F#1)^(i_F#1<|func#5*{func#5 <- `func*`}|){} + -- let{s_1 : store, `aa*` : tagaddr*} (s_1, aa#1*{aa#1 <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype#80, (dt#9 : deftype <: typeuse)*{dt#9 <- `dt*`})*{tagtype#80 <- `tagtype*`}) + -- let{s_2 : store, `ga*` : globaladdr*} (s_2, ga#1*{ga#1 <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype#124, (dt#10 : deftype <: typeuse)*{dt#10 <- `dt*`})*{globaltype#124 <- `globaltype*`}, val_G#2*{val_G#2 <- `val_G*`}) + -- let{s_3 : store, `ma*` : memaddr*} (s_3, ma#1*{ma#1 <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype#124, (dt#11 : deftype <: typeuse)*{dt#11 <- `dt*`})*{memtype#124 <- `memtype*`}) + -- let{s_4 : store, `ta*` : tableaddr*} (s_4, ta#1*{ta#1 <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype#158, (dt#12 : deftype <: typeuse)*{dt#12 <- `dt*`})*{tabletype#158 <- `tabletype*`}, ref_T#2*{ref_T#2 <- `ref_T*`}) + -- let{s_5 : store, `da*` : dataaddr*} (s_5, da#1*{da#1 <- `da*`}) = $allocdatas(s_4, OK_datatype^|data#4*{data#4 <- `data*`}|{}, byte#6*{byte#6 <- `byte*#112`}*{`byte*#112` <- `byte**`}) + -- let{s_6 : store, `ea*` : elemaddr*} (s_6, ea#1*{ea#1 <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype#2, (dt#13 : deftype <: typeuse)*{dt#13 <- `dt*`})*{elemtype#2 <- `elemtype*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}) + -- if ((s_7, fa#2*{fa#2 <- `fa*`}) = $allocfuncs(s_6, dt#14*{dt#14 <- `dt*`}[$proj_uN_0(x#3).0]*{x#3 <- `x*`}, FUNC_funccode(x#4, local#3*{local#3 <- `local*#84`}, expr_F#2)*{expr_F#2 <- `expr_F*`, `local*#84` <- `local**`, x#4 <- `x*`}, moduleinst^|func#6*{func#6 <- `func*`}|{})) + -- if (xi#1*{xi#1 <- `xi*`} = $allocexports({TYPES [], TAGS aa_I#2*{aa_I#2 <- `aa_I*`} ++ aa#2*{aa#2 <- `aa*`}, GLOBALS ga_I#2*{ga_I#2 <- `ga_I*`} ++ ga#2*{ga#2 <- `ga*`}, MEMS ma_I#2*{ma_I#2 <- `ma_I*`} ++ ma#2*{ma#2 <- `ma*`}, TABLES ta_I#2*{ta_I#2 <- `ta_I*`} ++ ta#2*{ta#2 <- `ta*`}, FUNCS fa_I#2*{fa_I#2 <- `fa_I*`} ++ fa#3*{fa#3 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#5*{export#5 <- `export*`})) + -- if (moduleinst = {TYPES dt#15*{dt#15 <- `dt*`}, TAGS aa_I#3*{aa_I#3 <- `aa_I*`} ++ aa#3*{aa#3 <- `aa*`}, GLOBALS ga_I#3*{ga_I#3 <- `ga_I*`} ++ ga#3*{ga#3 <- `ga*`}, MEMS ma_I#3*{ma_I#3 <- `ma_I*`} ++ ma#3*{ma#3 <- `ma*`}, TABLES ta_I#3*{ta_I#3 <- `ta_I*`} ++ ta#3*{ta#3 <- `ta*`}, FUNCS fa_I#3*{fa_I#3 <- `fa_I*`} ++ fa#4*{fa#4 <- `fa*`}, DATAS da#2*{da#2 <- `da*`}, ELEMS ea#2*{ea#2 <- `ea*`}, EXPORTS xi#2*{xi#2 <- `xi*`}}) + -- wf_store: `%`($alloctags(s, $subst_all_tagtype(tagtype#81, (dt#16 : deftype <: typeuse)*{dt#16 <- `dt*`})*{tagtype#81 <- `tagtype*`}).0) + -- (wf_typeuse: `%`($subst_all_tagtype(tagtype#82, (dt#17 : deftype <: typeuse)*{dt#17 <- `dt*`})))*{tagtype#82 <- `tagtype*`} + -- wf_store: `%`($allocglobals(s_1, $subst_all_globaltype(globaltype#125, (dt#18 : deftype <: typeuse)*{dt#18 <- `dt*`})*{globaltype#125 <- `globaltype*`}, val_G#3*{val_G#3 <- `val_G*`}).0) + -- (wf_globaltype: `%`($subst_all_globaltype(globaltype#126, (dt#19 : deftype <: typeuse)*{dt#19 <- `dt*`})))*{globaltype#126 <- `globaltype*`} + -- wf_store: `%`($allocmems(s_2, $subst_all_memtype(memtype#125, (dt#20 : deftype <: typeuse)*{dt#20 <- `dt*`})*{memtype#125 <- `memtype*`}).0) + -- (wf_memtype: `%`($subst_all_memtype(memtype#126, (dt#21 : deftype <: typeuse)*{dt#21 <- `dt*`})))*{memtype#126 <- `memtype*`} + -- wf_store: `%`($alloctables(s_3, $subst_all_tabletype(tabletype#159, (dt#22 : deftype <: typeuse)*{dt#22 <- `dt*`})*{tabletype#159 <- `tabletype*`}, ref_T#3*{ref_T#3 <- `ref_T*`}).0) + -- (wf_tabletype: `%`($subst_all_tabletype(tabletype#160, (dt#23 : deftype <: typeuse)*{dt#23 <- `dt*`})))*{tabletype#160 <- `tabletype*`} + -- wf_store: `%`($allocdatas(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#113`}*{`byte*#113` <- `byte**`}).0) + -- wf_store: `%`($allocelems(s_5, $subst_all_reftype(elemtype#3, (dt#24 : deftype <: typeuse)*{dt#24 <- `dt*`})*{elemtype#3 <- `elemtype*`}, ref_E#3*{ref_E#3 <- `ref_E*#3`}*{`ref_E*#3` <- `ref_E**`}).0) + -- (wf_reftype: `%`($subst_all_reftype(elemtype#4, (dt#25 : deftype <: typeuse)*{dt#25 <- `dt*`})))*{elemtype#4 <- `elemtype*`} + -- wf_store: `%`($allocfuncs(s_6, dt#26*{dt#26 <- `dt*`}[$proj_uN_0(x#5).0]*{x#5 <- `x*`}, FUNC_funccode(x#6, local#4*{local#4 <- `local*#85`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#85` <- `local**`, x#6 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}).0) + -- (wf_exportinst: `%`(iter#341))*{iter#341 <- $allocexports({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#6*{export#6 <- `export*`})} + -- wf_module: `%`(MODULE_module(`%`_list(type#4*{type#4 <- `type*`}), `%`_list(import#3*{import#3 <- `import*`}), `%`_list(tag#4*{tag#4 <- `tag*`}), `%`_list(global#5*{global#5 <- `global*`}), `%`_list(mem#5*{mem#5 <- `mem*`}), `%`_list(table#5*{table#5 <- `table*`}), `%`_list(func#8*{func#8 <- `func*`}), `%`_list(data#6*{data#6 <- `data*`}), `%`_list(elem#5*{elem#5 <- `elem*`}), start#4?{start#4 <- `start?`}, `%`_list(export#7*{export#7 <- `export*`}))) + -- (wf_tag: `%`(TAG_tag(tagtype#83)))*{tagtype#83 <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype#127, expr_G#2)))*{expr_G#2 <- `expr_G*`, globaltype#127 <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype#127)))*{memtype#127 <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype#161, expr_T#2)))*{expr_T#2 <- `expr_T*`, tabletype#161 <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x#7, local#5*{local#5 <- `local*#86`}, expr_F#4)))*{expr_F#4 <- `expr_F*`, `local*#86` <- `local**`, x#7 <- `x*`} + -- (wf_data: `%`(DATA_data(byte#8*{byte#8 <- `byte*#114`}, datamode#112)))*{`byte*#114` <- `byte**`, datamode#112 <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype#5, expr_E#2*{expr_E#2 <- `expr_E*#2`}, elemmode#232)))*{elemmode#232 <- `elemmode*`, elemtype#5 <- `elemtype*`, `expr_E*#2` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt#27*{dt#27 <- `dt*`}, TAGS aa_I#6*{aa_I#6 <- `aa_I*`} ++ aa#6*{aa#6 <- `aa*`}, GLOBALS ga_I#6*{ga_I#6 <- `ga_I*`} ++ ga#6*{ga#6 <- `ga*`}, MEMS ma_I#6*{ma_I#6 <- `ma_I*`} ++ ma#6*{ma#6 <- `ma*`}, TABLES ta_I#6*{ta_I#6 <- `ta_I*`} ++ ta#6*{ta#6 <- `ta*`}, FUNCS fa_I#6*{fa_I#6 <- `fa_I*`} ++ fa#7*{fa#7 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmodule_is_wf: `%%%%%%%`(store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmodule_is_wf_0{store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)}: + `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- (wf_ref: `%`(var_2))*{var_2 <- var_2} + -- (wf_ref: `%`(var_3))*{var_3 <- var_3}*{var_3 <- var_3} + -- if (ret_val = $allocmodule(store, module, var_0, var_1, var_2, var_3)) + -- wf_store: `%`(ret_val.0) + -- wf_moduleinst: `%`(ret_val.1) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $rundata_(dataidx : dataidx, data : data) : instr* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : uN, n : nat, `b*` : byte*}(x, DATA_data(b#11^n{b#11 <- `b*`}, PASSIVE_datamode)) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}(x, DATA_data(b#12^n{b#12 <- `b*`}, ACTIVE_datamode(y, instr#9*{instr#9 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation rundata__is_wf: `%%%`(dataidx : dataidx, data : data, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule rundata__is_wf_0{dataidx : dataidx, data : data, ret_val : instr*}: + `%%%`(dataidx, data, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- wf_data: `%`(data) + -- if (ret_val = $rundata_(dataidx, data)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $runelem_(elemidx : elemidx, elem : elem) : instr* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e#1^n{e#1 <- `e*`}, PASSIVE_elemmode)) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e#2^n{e#2 <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e#3^n{e#3 <- `e*`}, ACTIVE_elemmode(y, instr#10*{instr#10 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation runelem__is_wf: `%%%`(elemidx : elemidx, elem : elem, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule runelem__is_wf_0{elemidx : elemidx, elem : elem, ret_val : instr*}: + `%%%`(elemidx, elem, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- wf_elem: `%`(elem) + -- if (ret_val = $runelem_(elemidx, elem)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.92 +def $evalexprs(state : state, expr*) : (state, ref*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.34 + def $evalexprs{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-165.46 + def $evalexprs{z : state, expr : instr*, `expr'*` : expr*, ref : ref, z' : state}(z, [expr] ++ expr'#1*{expr'#1 <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) + -- let{z'' : state, `ref'*` : ref*} (z'', ref'#7*{ref'#7 <- `ref'*`}) = $evalexprs(z', expr'#2*{expr'#2 <- `expr'*`}) + -- wf_state: `%`(z') + -- wf_state: `%`($evalexprs(z', expr'#3*{expr'#3 <- `expr'*`}).0) + -- (wf_ref: `%`(iter#342))*{iter#342 <- $evalexprs(z', expr'#4*{expr'#4 <- `expr'*`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation evalexprs_is_wf: `%%%`(state : state, var_0 : expr*, ret_val : (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule evalexprs_is_wf_0{state : state, var_0 : expr*, ret_val : (state, ref*)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprs(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- ret_val.1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.1-167.96 +def $evalexprss(state : state, expr**) : (state, ref**) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:168.1-168.35 + def $evalexprss{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.1-172.49 + def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**}(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#5*{expr'#5 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- let{`ref*` : ref*, z' : state} (z', ref#7*{ref#7 <- `ref*`}) = $evalexprs(z, expr#366*{expr#366 <- `expr*`}) + -- let{z'' : state, `ref'**` : ref**} (z'', ref'#8*{ref'#8 <- `ref'*#4`}*{`ref'*#4` <- `ref'**`}) = $evalexprss(z', expr'#6*{expr'#6 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}) + -- wf_state: `%`($evalexprs(z, expr#367*{expr#367 <- `expr*`}).0) + -- (wf_ref: `%`(iter#343))*{iter#343 <- $evalexprs(z, expr#368*{expr#368 <- `expr*`}).1} + -- wf_state: `%`($evalexprss(z', expr'#7*{expr'#7 <- `expr'*#3`}*{`expr'*#3` <- `expr'**`}).0) + -- (wf_ref: `%`(iter#345))*{iter#345 <- iter#344}*{iter#344 <- $evalexprss(z', expr'#8*{expr'#8 <- `expr'*#4`}*{`expr'*#4` <- `expr'**`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation evalexprss_is_wf: `%%%`(state : state, var_0 : expr**, ret_val : (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule evalexprss_is_wf_0{state : state, var_0 : expr**, ret_val : (state, ref**)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprss(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- ret_val.1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.1-174.111 +def $evalglobals(state : state, globaltype*, expr*) : (state, val*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:175.1-175.41 + def $evalglobals{z : state}(z, [], []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, val : val, z' : state}(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#9*{expr'#9 <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) + -- let{s : store, f : frame} `%;%`_state(s, f) = z' + -- let{s' : store, a : addr} (s', a) = $allocglobal(s, gt, val) + -- let{z'' : state, `val'*` : val*} (z'', val'#4*{val'#4 <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#10*{expr'#10 <- `expr'*`}) + -- wf_state: `%`(z') + -- wf_store: `%`($allocglobal(s, gt, val).0) + -- wf_state: `%`($evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#3*{gt'#3 <- `gt'*`}, expr'#11*{expr'#11 <- `expr'*`}).0) + -- (wf_val: `%`(iter#346))*{iter#346 <- $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#4*{gt'#4 <- `gt'*`}, expr'#12*{expr'#12 <- `expr'*`}).1} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation evalglobals_is_wf: `%%%%`(state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule evalglobals_is_wf_0{state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)}: + `%%%%`(state, var_0, var_1, ret_val) + -- wf_state: `%`(state) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_instr: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $evalglobals(state, var_0, var_1)) + -- wf_state: `%`(ret_val.0) + -- (wf_val: `%`(iter))*{iter <- ret_val.1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $instantiate(store : store, module : module, externaddr*) : config + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $instantiate{s : store, module : module, `externaddr*` : externaddr*, `xt_I*` : externtype*, `xt_E*` : externtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, i_D : nat, i_E : nat}(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I#1*{xt_I#1 <- `xt_I*`}, xt_E#1*{xt_E#1 <- `xt_E*`})) + -- (Externaddr_ok: `%|-%:%`(s, externaddr#8, xt_I#2))*{externaddr#8 <- `externaddr*`, xt_I#2 <- `xt_I*`} + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#5*{type#5 <- `type*`}), `%`_list(import#4*{import#4 <- `import*`}), `%`_list(tag#5*{tag#5 <- `tag*`}), `%`_list(global#6*{global#6 <- `global*`}), `%`_list(mem#6*{mem#6 <- `mem*`}), `%`_list(table#6*{table#6 <- `table*`}), `%`_list(func#9*{func#9 <- `func*`}), `%`_list(data#7*{data#7 <- `data*`}), `%`_list(elem#6*{elem#6 <- `elem*`}), start#5?{start#5 <- `start?`}, `%`_list(export#8*{export#8 <- `export*`})) = module + -- if (global#7*{global#7 <- `global*`} = GLOBAL_global(globaltype#129, expr_G#3)*{expr_G#3 <- `expr_G*`, globaltype#129 <- `globaltype*`}) + -- if (table#7*{table#7 <- `table*`} = TABLE_table(tabletype#163, expr_T#3)*{expr_T#3 <- `expr_T*`, tabletype#163 <- `tabletype*`}) + -- if (data#8*{data#8 <- `data*`} = DATA_data(byte#9*{byte#9 <- `byte*#118`}, datamode#116)*{`byte*#118` <- `byte**`, datamode#116 <- `datamode*`}) + -- if (elem#7*{elem#7 <- `elem*`} = ELEM_elem(reftype#516, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#516 <- `reftype*`}) + -- if (start#6?{start#6 <- `start?`} = START_start(x#8)?{x#8 <- `x?`}) + -- if (moduleinst_0 = {TYPES $alloctypes(type#6*{type#6 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#9*{externaddr#9 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#10*{externaddr#10 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#10*{func#10 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- let{z' : state, `val_G*` : val*} (z', val_G#4*{val_G#4 <- `val_G*`}) = $evalglobals(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#4*{expr_G#4 <- `expr_G*`}) + -- let{z'' : state, `ref_T*` : ref*} (z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = $evalexprs(z', expr_T#4*{expr_T#4 <- `expr_T*`}) + -- let{z''' : state, `ref_E**` : ref**} (z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = $evalexprss(z'', expr_E#4*{expr_E#4 <- `expr_E*#4`}*{`expr_E*#4` <- `expr_E**`}) + -- let{s''' : store, f : frame} `%;%`_state(s''', f) = z''' + -- let{s'''' : store, moduleinst : moduleinst} (s'''', moduleinst) = $allocmodule(s''', module, externaddr#11*{externaddr#11 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}) + -- let{`instr_D*` : instr*} instr_D#1*{instr_D#1 <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#1), data#10*{data#10 <- `data*`}[i_D#1])^(i_D#1<|data#9*{data#9 <- `data*`}|){}) + -- let{`instr_E*` : instr*} instr_E#1*{instr_E#1 <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#1), elem#9*{elem#9 <- `elem*`}[i_E#1])^(i_E#1<|elem#8*{elem#8 <- `elem*`}|){}) + -- let{`instr_S?` : instr?} instr_S#1?{instr_S#1 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`} + -- wf_state: `%`(z) + -- wf_state: `%`($evalglobals(z, globaltype#132*{globaltype#132 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}).0) + -- (wf_val: `%`(iter#347))*{iter#347 <- $evalglobals(z, globaltype#133*{globaltype#133 <- `globaltype*`}, expr_G#6*{expr_G#6 <- `expr_G*`}).1} + -- wf_state: `%`($evalexprs(z', expr_T#5*{expr_T#5 <- `expr_T*`}).0) + -- (wf_ref: `%`(iter#348))*{iter#348 <- $evalexprs(z', expr_T#6*{expr_T#6 <- `expr_T*`}).1} + -- wf_state: `%`($evalexprss(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}).0) + -- (wf_ref: `%`(iter#350))*{iter#350 <- iter#349}*{iter#349 <- $evalexprss(z'', expr_E#6*{expr_E#6 <- `expr_E*#6`}*{`expr_E*#6` <- `expr_E**`}).1} + -- wf_store: `%`($allocmodule(s''', module, externaddr#12*{externaddr#12 <- `externaddr*`}, val_G#6*{val_G#6 <- `val_G*`}, ref_T#6*{ref_T#6 <- `ref_T*`}, ref_E#6*{ref_E#6 <- `ref_E*#6`}*{`ref_E*#6` <- `ref_E**`}).0) + -- wf_moduleinst: `%`($allocmodule(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#7*{val_G#7 <- `val_G*`}, ref_T#7*{ref_T#7 <- `ref_T*`}, ref_E#7*{ref_E#7 <- `ref_E*#7`}*{`ref_E*#7` <- `ref_E**`}).1) + -- (wf_instr: `%`(iter#351))*{iter#351 <- $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#2), data#12*{data#12 <- `data*`}[i_D#2])^(i_D#2<|data#11*{data#11 <- `data*`}|){})} + -- (wf_instr: `%`(iter#352))*{iter#352 <- $rundata_(`%`_dataidx(i_D#3), data#14*{data#14 <- `data*`}[i_D#3])}^(i_D#3<|data#13*{data#13 <- `data*`}|){} + -- (wf_instr: `%`(iter#353))*{iter#353 <- $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#2), elem#11*{elem#11 <- `elem*`}[i_E#2])^(i_E#2<|elem#10*{elem#10 <- `elem*`}|){})} + -- (wf_instr: `%`(iter#354))*{iter#354 <- $runelem_(`%`_elemidx(i_E#3), elem#13*{elem#13 <- `elem*`}[i_E#3])}^(i_E#3<|elem#12*{elem#12 <- `elem*`}|){} + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I#3*{xt_I#3 <- `xt_I*`}, xt_E#2*{xt_E#2 <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(`%`_list(type#7*{type#7 <- `type*`}), `%`_list(import#5*{import#5 <- `import*`}), `%`_list(tag#6*{tag#6 <- `tag*`}), `%`_list(global#8*{global#8 <- `global*`}), `%`_list(mem#7*{mem#7 <- `mem*`}), `%`_list(table#8*{table#8 <- `table*`}), `%`_list(func#11*{func#11 <- `func*`}), `%`_list(data#15*{data#15 <- `data*`}), `%`_list(elem#14*{elem#14 <- `elem*`}), start#7?{start#7 <- `start?`}, `%`_list(export#9*{export#9 <- `export*`}))) + -- (wf_global: `%`(GLOBAL_global(globaltype#134, expr_G#7)))*{expr_G#7 <- `expr_G*`, globaltype#134 <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype#165, expr_T#7)))*{expr_T#7 <- `expr_T*`, tabletype#165 <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte#10*{byte#10 <- `byte*#120`}, datamode#118)))*{`byte*#120` <- `byte**`, datamode#118 <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype#518, expr_E#7*{expr_E#7 <- `expr_E*#7`}, elemmode#239)))*{elemmode#239 <- `elemmode*`, `expr_E*#7` <- `expr_E**`, reftype#518 <- `reftype*`} + -- (wf_start: `%`(START_start(x#10)))?{x#10 <- `x?`} + -- wf_moduleinst: `%`({TYPES $alloctypes(type#8*{type#8 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#14*{externaddr#14 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#15*{externaddr#15 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#12*{func#12 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- wf_state: `%`(`%;%`_state(s''', f)) + -- (wf_uN: `%%`(32, `%`_uN(i_D#4)))^(i_D#4<|data#16*{data#16 <- `data*`}|){} + -- (wf_uN: `%%`(32, `%`_uN(i_E#4)))^(i_E#4<|elem#15*{elem#15 <- `elem*`}|){} + -- (wf_instr: `%`(CALL_instr(x#11)))?{x#11 <- `x?`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation instantiate_is_wf: `%%%%`(store : store, module : module, var_0 : externaddr*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule instantiate_is_wf_0{store : store, module : module, var_0 : externaddr*, ret_val : config}: + `%%%%`(store, module, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- if (ret_val = $instantiate(store, module, var_0)) + -- wf_config: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $invoke(store : store, funcaddr : funcaddr, val*) : config + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val#1*{val#1 <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1#4*{t_1#4 <- `t_1*`}), `%`_resulttype(t_2#4*{t_2#4 <- `t_2*`}))) + -- (Val_ok: `%|-%:%`(s, val#2, t_1#5))*{t_1#5 <- `t_1*`, val#2 <- `val*`} + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#6*{t_1#6 <- `t_1*`}), `%`_resulttype(t_2#5*{t_2#5 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation invoke_is_wf: `%%%%`(store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule invoke_is_wf_0{store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config}: + `%%%%`(store, funcaddr, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_val: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $invoke(store, funcaddr, var_0)) + -- wf_config: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax castop = (null?, null?) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax memidxop = (memidx, memarg) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax startopt = start* + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax code = (local*, expr) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax nopt = u32* + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +def $ieee_(N : N, rat : rat) : fNmag + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation ieee__is_wf: `%%%`(N : N, rat : rat, ret_val : fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule ieee__is_wf_0{N : N, rat : rat, ret_val : fNmag}: + `%%%`(N, rat, ret_val) + -- if (ret_val = $ieee_(N, rat)) + -- wf_fNmag: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax idctxt = +{ + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation wf_idctxt: `%`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) + -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} + -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} + -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} + -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} + -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} + -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} + -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} + -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} + -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} + -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax I = idctxt + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 +def $concat_idctxt(idctxt*) : idctxt + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 + def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 + def $concat_idctxt{I : idctxt, `I'*` : I*}([I] ++ I'#1*{I'#1 <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation concat_idctxt_is_wf: `%%`(var_0 : idctxt*, ret_val : idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule concat_idctxt_is_wf_0{var_0 : idctxt*, ret_val : idctxt}: + `%%`(var_0, ret_val) + -- (wf_idctxt: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $concat_idctxt(var_0)) + -- wf_idctxt: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation Idctxt_ok: `|-%:OK`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule _{I : I, `field**` : char**}: + `|-%:OK`(I) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) + -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} + -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) + -- wf_idctxt: `%`(I) + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TYPES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TAGS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.GLOBALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.MEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TABLES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.FUNCS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.DATAS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.ELEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LOCALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LABELS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])}*{`field*` <- `field**`} + -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $dots : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +syntax decl = + | TYPE(rectype : rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype : memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx : funcidx) + | EXPORT(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +relation wf_decl: `%`(decl) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_0{rectype : rectype}: + `%`(TYPE_decl(rectype)) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_1{name : name, name_0 : name, externtype : externtype}: + `%`(IMPORT_decl(name, name_0, externtype)) + -- wf_name: `%`(name) + -- wf_name: `%`(name_0) + -- wf_externtype: `%`(externtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_2{tagtype : tagtype}: + `%`(TAG_decl(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_3{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_decl(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_4{memtype : memtype}: + `%`(MEMORY_decl(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_5{tabletype : tabletype, expr : expr}: + `%`(TABLE_decl(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_6{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_decl(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_7{`byte*` : byte*, datamode : datamode}: + `%`(DATA_decl(`byte*`, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_8{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_decl(reftype, `expr*`, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_9{funcidx : funcidx}: + `%`(START_decl(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_10{name : name, externidx : externidx}: + `%`(EXPORT_decl(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 +def $typesd(decl*) : type* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 + def $typesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:271.1-271.48 + def $typesd{rectype : rectype, `decl'*` : decl*}([TYPE_decl(rectype)] ++ decl'#1*{decl'#1 <- `decl'*`}) = [TYPE_type(rectype)] ++ $typesd(decl'#2*{decl'#2 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:272.1-272.57 + def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#3*{decl'#3 <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 +def $importsd(decl*) : import* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 + def $importsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:275.1-275.56 + def $importsd{name : name, name_0 : name, externtype : externtype, `decl'*` : decl*}([IMPORT_decl(name, name_0, externtype)] ++ decl'#4*{decl'#4 <- `decl'*`}) = [IMPORT_import(name, name_0, externtype)] ++ $importsd(decl'#5*{decl'#5 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:276.1-276.61 + def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#6*{decl'#6 <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation importsd_is_wf: `%%`(var_0 : decl*, ret_val : import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule importsd_is_wf_0{var_0 : decl*, ret_val : import*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $importsd(var_0)) + -- (wf_import: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 +def $tagsd(decl*) : tag* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 + def $tagsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:279.1-279.44 + def $tagsd{tagtype : tagtype, `decl'*` : decl*}([TAG_decl(tagtype)] ++ decl'#7*{decl'#7 <- `decl'*`}) = [TAG_tag(tagtype)] ++ $tagsd(decl'#8*{decl'#8 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:280.1-280.55 + def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#9*{decl'#9 <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation tagsd_is_wf: `%%`(var_0 : decl*, ret_val : tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule tagsd_is_wf_0{var_0 : decl*, ret_val : tag*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tagsd(var_0)) + -- (wf_tag: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 +def $globalsd(decl*) : global* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 + def $globalsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:283.1-283.56 + def $globalsd{globaltype : globaltype, expr : expr, `decl'*` : decl*}([GLOBAL_decl(globaltype, expr)] ++ decl'#10*{decl'#10 <- `decl'*`}) = [GLOBAL_global(globaltype, expr)] ++ $globalsd(decl'#11*{decl'#11 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:284.1-284.61 + def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#12*{decl'#12 <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation globalsd_is_wf: `%%`(var_0 : decl*, ret_val : global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule globalsd_is_wf_0{var_0 : decl*, ret_val : global*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsd(var_0)) + -- (wf_global: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 +def $memsd(decl*) : mem* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 + def $memsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:287.1-287.44 + def $memsd{memtype : memtype, `decl'*` : decl*}([MEMORY_decl(memtype)] ++ decl'#13*{decl'#13 <- `decl'*`}) = [MEMORY_mem(memtype)] ++ $memsd(decl'#14*{decl'#14 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:288.1-288.55 + def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#15*{decl'#15 <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation memsd_is_wf: `%%`(var_0 : decl*, ret_val : mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule memsd_is_wf_0{var_0 : decl*, ret_val : mem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsd(var_0)) + -- (wf_mem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 +def $tablesd(decl*) : table* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 + def $tablesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:291.1-291.52 + def $tablesd{tabletype : tabletype, expr : expr, `decl'*` : decl*}([TABLE_decl(tabletype, expr)] ++ decl'#16*{decl'#16 <- `decl'*`}) = [TABLE_table(tabletype, expr)] ++ $tablesd(decl'#17*{decl'#17 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:292.1-292.59 + def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#18*{decl'#18 <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation tablesd_is_wf: `%%`(var_0 : decl*, ret_val : table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule tablesd_is_wf_0{var_0 : decl*, ret_val : table*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesd(var_0)) + -- (wf_table: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 +def $funcsd(decl*) : func* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 + def $funcsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:295.1-295.48 + def $funcsd{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*}([FUNC_decl(typeidx, `local*`, expr)] ++ decl'#19*{decl'#19 <- `decl'*`}) = [FUNC_func(typeidx, `local*`, expr)] ++ $funcsd(decl'#20*{decl'#20 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:296.1-296.57 + def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#21*{decl'#21 <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation funcsd_is_wf: `%%`(var_0 : decl*, ret_val : func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule funcsd_is_wf_0{var_0 : decl*, ret_val : func*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $funcsd(var_0)) + -- (wf_func: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 +def $datasd(decl*) : data* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 + def $datasd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:299.1-299.48 + def $datasd{`byte*` : byte*, datamode : datamode, `decl'*` : decl*}([DATA_decl(`byte*`, datamode)] ++ decl'#22*{decl'#22 <- `decl'*`}) = [DATA_data(`byte*`, datamode)] ++ $datasd(decl'#23*{decl'#23 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:300.1-300.57 + def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#24*{decl'#24 <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation datasd_is_wf: `%%`(var_0 : decl*, ret_val : data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule datasd_is_wf_0{var_0 : decl*, ret_val : data*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $datasd(var_0)) + -- (wf_data: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 +def $elemsd(decl*) : elem* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 + def $elemsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:303.1-303.48 + def $elemsd{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*}([ELEM_decl(reftype, `expr*`, elemmode)] ++ decl'#25*{decl'#25 <- `decl'*`}) = [ELEM_elem(reftype, `expr*`, elemmode)] ++ $elemsd(decl'#26*{decl'#26 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:304.1-304.57 + def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#27*{decl'#27 <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation elemsd_is_wf: `%%`(var_0 : decl*, ret_val : elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule elemsd_is_wf_0{var_0 : decl*, ret_val : elem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $elemsd(var_0)) + -- (wf_elem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 +def $startsd(decl*) : start* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 + def $startsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:307.1-307.52 + def $startsd{funcidx : funcidx, `decl'*` : decl*}([START_decl(funcidx)] ++ decl'#28*{decl'#28 <- `decl'*`}) = [START_start(funcidx)] ++ $startsd(decl'#29*{decl'#29 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:308.1-308.59 + def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#30*{decl'#30 <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation startsd_is_wf: `%%`(var_0 : decl*, ret_val : start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule startsd_is_wf_0{var_0 : decl*, ret_val : start*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $startsd(var_0)) + -- (wf_start: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 +def $exportsd(decl*) : export* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 + def $exportsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:311.1-311.56 + def $exportsd{name : name, externidx : externidx, `decl'*` : decl*}([EXPORT_decl(name, externidx)] ++ decl'#31*{decl'#31 <- `decl'*`}) = [EXPORT_export(name, externidx)] ++ $exportsd(decl'#32*{decl'#32 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:312.1-312.61 + def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#33*{decl'#33 <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation exportsd_is_wf: `%%`(var_0 : decl*, ret_val : export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule exportsd_is_wf_0{var_0 : decl*, ret_val : export*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $exportsd(var_0)) + -- (wf_export: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $ordered(decl*) : bool + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + def $ordered{`decl*` : decl*}(decl#1*{decl#1 <- `decl*`}) = true + -- if ($importsd(decl#2*{decl#2 <- `decl*`}) = []) + -- (wf_import: `%`(iter#355))*{iter#355 <- $importsd(decl#3*{decl#3 <- `decl*`})} + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + def $ordered{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*}(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}) = (((((($importsd(decl_1#7*{decl_1#7 <- `decl_1*`}) = []) /\ ($tagsd(decl_1#6*{decl_1#6 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1#5*{decl_1#5 <- `decl_1*`}) = [])) /\ ($memsd(decl_1#4*{decl_1#4 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1#3*{decl_1#3 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1#2*{decl_1#2 <- `decl_1*`}) = [])) + +;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec +relation Context_ok: `|-%:OK`(context) + ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec + rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `|-%:OK`(C) + -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (Deftype_ok: `%|-%:OK`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{dt_F <- `dt_F*`, t_1 <- `t_1*`, t_2 <- `t_2*`} + -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- `et*`} + -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- `lct*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt : reftype <: valtype)])))*{rt <- `rt*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)])))?{rt' <- `rt'?`} + -- (if ($proj_uN_0(x).0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} + -- wf_context: `%`(C) + -- wf_context: `%`(C_0) + -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (wf_context: `%`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Localval_ok: `%|-%:%`(store, val?, localtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule set{s : store, val : val, t : valtype}: + `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_val: `%`(val) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule unset{s : store}: + `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, BOT_valtype)) + -- wf_store: `%`(s) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, BOT_valtype)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Datainst_ok: `%|-%:%`(store, datainst, datatype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `b*` : byte*}: + `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) + -- wf_store: `%`(s) + -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + -- wf_store: `%`(s) + -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exportinst_ok: `%|-%:OK`(store, exportinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, nm : name, xa : externaddr, xt : externtype}: + `%|-%:OK`(s, {NAME nm, ADDR xa}) + -- Externaddr_ok: `%|-%:%`(s, xa, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_exportinst: `%`({NAME nm, ADDR xa}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `deftype*` : deftype*, `tagaddr*` : tagaddr*, `globaladdr*` : globaladdr*, `memaddr*` : memaddr*, `tableaddr*` : tableaddr*, `funcaddr*` : funcaddr*, `dataaddr*` : dataaddr*, `elemaddr*` : elemaddr*, `exportinst*` : exportinst*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `memtype*` : memtype*, `tabletype*` : tabletype*, `deftype_F*` : deftype*, `datatype*` : datatype*, `elemtype*` : elemtype*, `subtype*` : subtype*}: + `%|-%:%`(s, {TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}, {TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) + -- (Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, deftype))*{deftype <- `deftype*`} + -- (Externaddr_ok: `%|-%:%`(s, TAG_externaddr(tagaddr), TAG_externtype(tagtype)))*{tagaddr <- `tagaddr*`, tagtype <- `tagtype*`} + -- (Externaddr_ok: `%|-%:%`(s, GLOBAL_externaddr(globaladdr), GLOBAL_externtype(globaltype)))*{globaladdr <- `globaladdr*`, globaltype <- `globaltype*`} + -- (Externaddr_ok: `%|-%:%`(s, FUNC_externaddr(funcaddr), FUNC_externtype((deftype_F : deftype <: typeuse))))*{deftype_F <- `deftype_F*`, funcaddr <- `funcaddr*`} + -- (Externaddr_ok: `%|-%:%`(s, MEM_externaddr(memaddr), MEM_externtype(memtype)))*{memaddr <- `memaddr*`, memtype <- `memtype*`} + -- (Externaddr_ok: `%|-%:%`(s, TABLE_externaddr(tableaddr), TABLE_externtype(tabletype)))*{tableaddr <- `tableaddr*`, tabletype <- `tabletype*`} + -- (Datainst_ok: `%|-%:%`(s, s.DATAS_store[dataaddr], datatype))*{dataaddr <- `dataaddr*`, datatype <- `datatype*`} + -- (Eleminst_ok: `%|-%:%`(s, s.ELEMS_store[elemaddr], elemtype))*{elemaddr <- `elemaddr*`, elemtype <- `elemtype*`} + -- (Exportinst_ok: `%|-%:OK`(s, exportinst))*{exportinst <- `exportinst*`} + -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) + -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} + -- wf_store: `%`(s) + -- wf_moduleinst: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}) + -- wf_context: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (wf_externtype: `%`(TAG_externtype(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_externtype: `%`(GLOBAL_externtype(globaltype)))*{globaltype <- `globaltype*`} + -- (wf_externtype: `%`(FUNC_externtype((deftype_F : deftype <: typeuse))))*{deftype_F <- `deftype_F*`} + -- (wf_externtype: `%`(MEM_externtype(memtype)))*{memtype <- `memtype*`} + -- (wf_externtype: `%`(TABLE_externtype(tabletype)))*{tabletype <- `tabletype*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Frame_ok: `%|-%:%`(store, frame, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `val?*` : val?*, moduleinst : moduleinst, C : context, `lct*` : localtype*}: + `%|-%:%`(s, {LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}, C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) + -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) + -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:3.1-4.36 +relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:10.1-12.46 + rule plain{s : store, C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 + rule ref{s : store, C : context, ref : ref, rt : reftype}: + `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_ref: `%`(ref) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 + rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: + `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:23.1-26.37 + rule frame{s : store, C : context, n : n, f : frame, `instr*` : instr*, `t*` : valtype*, C' : context}: + `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) + -- Frame_ok: `%|-%:%`(s, f, C') + -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`})) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 + rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 + rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRAP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 +relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 + rule empty{s : store, C : context}: + `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 + rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: + `%;%|-%:%`(s, C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:47.1-51.33 + rule sub{s : store, C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it') + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 + rule frame{s : store, C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 +relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:60.1-62.44 + rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, jt : tagtype}: + `%|-%:%`(s, {TYPE jt}, jt) + -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) + -- wf_store: `%`(s) + -- wf_taginst: `%`({TYPE jt}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `mut?` : mut?, t : valtype, val : val}: + `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Meminst_ok: `%|-%:%`(store, meminst, memtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, m : m, `b*` : byte*}: + `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) + -- wf_store: `%`(s) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, m : m, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- if (|ref*{ref <- `ref*`}| = n) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + -- wf_store: `%`(s) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) + -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, moduleinst : moduleinst, func : func, C : context, dt' : deftype}: + `%|-%:%`(s, {TYPE dt, MODULE moduleinst, CODE (func : func <: funccode)}, dt) + -- Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt) + -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) + -- Func_ok: `%|-%:%`(C, func, dt') + -- Deftype_sub: `%|-%<:%`(C, dt', dt) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE (func : func <: funccode)}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Structinst_ok: `%|-%:OK`(store, structinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, `fv*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} + -- wf_store: `%`(s) + -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, `fv*` : fieldval*, `mut?` : mut?, zt : storagetype}: + `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} + -- wf_store: `%`(s) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exninst_ok: `%|-%:OK`(store, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, ta : tagaddr, `val*` : val*, dt : deftype, `t*` : valtype*}: + `%|-%:OK`(s, {TAG ta, FIELDS val*{val <- `val*`}}) + -- if ((dt : deftype <: typeuse) = s.TAGS_store[ta].TYPE_taginst) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} + -- wf_store: `%`(s) + -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:208.1-209.50 +relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:222.1-225.35 + rule trans{fv_1 : fieldval, s : store, fv_2 : fieldval, fv' : fieldval}: + `%>>_%%`(fv_1, s, fv_2) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv') + -- ImmutReachable: `%>>_%%`(fv', s, fv_2) + -- wf_fieldval: `%`(fv_1) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(fv_2) + -- wf_fieldval: `%`(fv') + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 + rule `ref.struct`{a : addr, s : store, i : nat, `ft*` : fieldtype*, zt : storagetype}: + `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) + -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:232.1-234.42 + rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: + `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) + -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 + rule `ref.exn`{a : addr, s : store, i : nat}: + `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, (s.EXNS_store[a].FIELDS_exninst[i] : val <: fieldval)) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 + rule `ref.extern`{ref : ref, s : store}: + `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(ref)) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +def $NotImmutReachable(fieldval : fieldval, store : store, fieldval : fieldval) : bool + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = false + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = true + -- otherwise + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `~%>>_%%`(fv_1, s, fv_2) + -- if $NotImmutReachable(fv_1, s, fv_2) + -- wf_fieldval: `%`(fv_1) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Store_ok: `|-%:OK`(store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `taginst*` : taginst*, `tagtype*` : tagtype*, `globalinst*` : globalinst*, `globaltype*` : globaltype*, `meminst*` : meminst*, `memtype*` : memtype*, `tableinst*` : tableinst*, `tabletype*` : tabletype*, `deftype*` : deftype*, `funcinst*` : funcinst*, `datainst*` : datainst*, `datatype*` : datatype*, `eleminst*` : eleminst*, `elemtype*` : elemtype*, `structinst*` : structinst*, `arrayinst*` : arrayinst*, `exninst*` : exninst*}: + `|-%:OK`(s) + -- (Taginst_ok: `%|-%:%`(s, taginst, tagtype))*{taginst <- `taginst*`, tagtype <- `tagtype*`} + -- (Globalinst_ok: `%|-%:%`(s, globalinst, globaltype))*{globalinst <- `globalinst*`, globaltype <- `globaltype*`} + -- (Meminst_ok: `%|-%:%`(s, meminst, memtype))*{meminst <- `meminst*`, memtype <- `memtype*`} + -- (Tableinst_ok: `%|-%:%`(s, tableinst, tabletype))*{tableinst <- `tableinst*`, tabletype <- `tabletype*`} + -- (Funcinst_ok: `%|-%:%`(s, funcinst, deftype))*{deftype <- `deftype*`, funcinst <- `funcinst*`} + -- (Datainst_ok: `%|-%:%`(s, datainst, datatype))*{datainst <- `datainst*`, datatype <- `datatype*`} + -- (Eleminst_ok: `%|-%:%`(s, eleminst, elemtype))*{eleminst <- `eleminst*`, elemtype <- `elemtype*`} + -- (Structinst_ok: `%|-%:OK`(s, structinst))*{structinst <- `structinst*`} + -- (Arrayinst_ok: `%|-%:OK`(s, arrayinst))*{arrayinst <- `arrayinst*`} + -- (Exninst_ok: `%|-%:OK`(s, exninst))*{exninst <- `exninst*`} + -- (NotImmutReachable: `~%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, `REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + -- wf_store: `%`(s) + -- (wf_typeuse: `%`(tagtype))*{tagtype <- `tagtype*`} + -- (wf_globaltype: `%`(globaltype))*{globaltype <- `globaltype*`} + -- (wf_memtype: `%`(memtype))*{memtype <- `memtype*`} + -- (wf_tabletype: `%`(tabletype))*{tabletype <- `tabletype*`} + -- (wf_reftype: `%`(elemtype))*{elemtype <- `elemtype*`} + -- (wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- wf_store: `%`({TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_taginst: `%<=%`(taginst, taginst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{jt : tagtype}: + `%<=%`({TYPE jt}, {TYPE jt}) + -- wf_taginst: `%`({TYPE jt}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_globalinst: `%<=%`(globalinst, globalinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: + `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_meminst: `%<=%`(meminst, meminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, m : m, `b*` : byte*, n' : n, `b'*` : byte*}: + `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) + -- if (n <= n') + -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_tableinst: `%<=%`(tableinst, tableinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, m : m, rt : reftype, `ref*` : ref*, n' : n, `ref'*` : ref*}: + `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) + -- if (n <= n') + -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_funcinst: `%<=%`(funcinst, funcinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, mm : moduleinst, fc : funccode}: + `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) + -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_datainst: `%<=%`(datainst, datainst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`b*` : byte*, `b'*` : byte*}: + `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) + -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) + -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) + -- wf_datainst: `%`({BYTES b'*{b' <- `b'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_eleminst: `%<=%`(eleminst, eleminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: + `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) + -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) + -- wf_eleminst: `%`({TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_structinst: `%<=%`(structinst, structinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} + -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?` : mut?, zt : storagetype}: + `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_exninst: `%<=%`(exninst, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{ta : tagaddr, `val*` : val*}: + `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) + -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_store: `%<=%`(store, store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, s' : store}: + `%<=%`(s, s') + -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} + -- (Extend_globalinst: `%<=%`(s.GLOBALS_store[a], s'.GLOBALS_store[a]))^(a<|s.GLOBALS_store|){} + -- (Extend_meminst: `%<=%`(s.MEMS_store[a], s'.MEMS_store[a]))^(a<|s.MEMS_store|){} + -- (Extend_tableinst: `%<=%`(s.TABLES_store[a], s'.TABLES_store[a]))^(a<|s.TABLES_store|){} + -- (Extend_funcinst: `%<=%`(s.FUNCS_store[a], s'.FUNCS_store[a]))^(a<|s.FUNCS_store|){} + -- (Extend_datainst: `%<=%`(s.DATAS_store[a], s'.DATAS_store[a]))^(a<|s.DATAS_store|){} + -- (Extend_eleminst: `%<=%`(s.ELEMS_store[a], s'.ELEMS_store[a]))^(a<|s.ELEMS_store|){} + -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} + -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} + -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} + -- wf_store: `%`(s) + -- wf_store: `%`(s') + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation State_ok: `|-%:%`(state, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, C : context}: + `|-%:%`(`%;%`_state(s, f), C) + -- Store_ok: `|-%:OK`(s) + -- Frame_ok: `%|-%:%`(s, f, C) + -- wf_context: `%`(C) + -- wf_state: `%`(`%;%`_state(s, f)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Config_ok: `|-%:%`(config, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- (wf_valtype: `%`(t))*{t <- `t*`} + -- wf_context: `%`(C) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`})) + -- wf_state: `%`(`%;%`_state(s, f)) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax A = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax B = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax sym = + | _FIRST(A_1 : A) + | _DOTS + | _LAST(A_n : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax symsplit = + | _FIRST(A_1 : A) + | _LAST(A_2 : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax recorddots = () + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax record = +{ + FIELD_1 A, + FIELD_2 A, + `...` recorddots +} + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax pth = + | PTHSYNTAX + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +syntax T = nat + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremise: `%`(nat) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremisedots: `...` + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingScheme: `%`(nat) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec + rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: + `%`(conclusion) + -- NotationTypingPremise: `%`(premise_1) + -- NotationTypingPremise: `%`(premise_2) + -- NotationTypingPremisedots: `...` + -- NotationTypingPremise: `%`(premise_n) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 +relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 + rule `i32.add`{C : context}: + `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 + rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: + `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 + rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation NotationReduct: `~>%`(instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 3{q_1 : num_, q_5 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 4{q_6 : num_}: + `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $instrdots : instr* + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation instrdots_is_wf: `%`(ret_val : instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule instrdots_is_wf_0{ret_val : instr*}: + `%`(ret_val) + -- if (ret_val = $instrdots) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax label = + | `LABEL_%{%}`(n : n, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_label: `%`(label) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule label_case_0{n : n, `instr*` : instr*}: + `%`(`LABEL_%{%}`_label(n, `instr*`)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax callframe = + | `FRAME_%{%}`(n : n, frame : frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_callframe: `%`(callframe) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule callframe_case_0{n : n, frame : frame}: + `%`(`FRAME_%{%}`_callframe(n, frame)) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation allocX_is_wf(syntax X, syntax Y): `%%%%`(store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule allocX_is_wf_0{syntax X, syntax Y, store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)}: + `%%%%`(store, X_0, Y_0, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocX(syntax X, syntax Y, store, X_0, Y_0)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 +def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 + def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 + def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*}(syntax X, syntax Y, s, [X] ++ X'#1*{X'#1 <- `X'*`}, [Y] ++ Y'#1*{Y'#1 <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) + -- let{s_2 : store, `a'*` : addr*} (s_2, a'#1*{a'#1 <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'#2*{X'#2 <- `X'*`}, Y'#2*{Y'#2 <- `Y'*`}) + -- wf_store: `%`($allocX(syntax X, syntax Y, s, X, Y).0) + -- wf_store: `%`($allocXs(syntax X, syntax Y, s_1, X'#3*{X'#3 <- `X'*`}, Y'#3*{Y'#3 <- `Y'*`}).0) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 +relation allocXs_is_wf(syntax X, syntax Y): `%%%%`(store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 + rule allocXs_is_wf_0{syntax X, syntax Y, store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocXs(syntax X, syntax Y, store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +syntax symdots = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +relation wf_symdots: `%`(symdots) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + rule symdots_case_0{i : nat}: + `%`(`%`_symdots(i)) + -- if (i = 0) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +def $var(syntax X) : nat + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + def $var{syntax X}(syntax X) = 0 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax abbreviated = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax expanded = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax syntax = () + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bbyte : byte + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 +grammar BuN(N : N) : uN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 + prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) + -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 + prod{m : m, n : n} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 +grammar BsN(N : N) : sN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 + prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) + -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 + prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) + -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 + prod{i : sN, n : n} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * ($proj_sN_0(i).0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BiN(N : N) : iN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{i : sN} i:BsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BfN(N : N) : fN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu32 : u32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu64 : u64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bs33 : s33 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : sN} ``:BsN(33) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi32 : i32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi64 : i64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf32 : f32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : fN} ``:BfN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf64 : f64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : fN} ``:BfN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blist(syntax el, grammar BX : el) : el* + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bname : name + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{name : name, `b*` : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name + -- if ($utf8($proj_name_0(name).0) = b*{b <- `b*`}) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btypeidx : typeidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btagidx : tagidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bglobalidx : globalidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bmemidx : memidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btableidx : tableidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfuncidx : funcidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bdataidx : dataidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Belemidx : elemidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blocalidx : localidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfieldidx : fieldidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blabelidx : labelidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{l : labelidx} l:Bu32 => l + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bexternidx : externidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bnumtype : numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7C => F64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7D => F32_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7E => I64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7F => I32_numtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvectype : vectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7B => V128_vectype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Babsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x69 => EXN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6A => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6B => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6C => I31_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6D => EQ_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6E => ANY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6F => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x70 => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x71 => NONE_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x72 => NOEXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x73 => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x74 => NOEXN_heaptype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => ht + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) + -- if ($proj_sN_0(x33).0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Breftype : reftype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvaltype : valtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bresulttype : resulttype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmut : mut? + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x00 => ?() + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x01 => ?(MUT_mut) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bpacktype : packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x77 => I16_packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x78 => I8_packtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bstoragetype : storagetype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bfieldtype : fieldtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bcomptype : comptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bsubtype : subtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Brectype : rectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Blimits : (addrtype, limits) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btagtype : tagtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bglobaltype : globaltype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmemtype : memtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btabletype : tabletype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bexterntype : externtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcastop : castop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x00 => (?(), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x01 => (?(NULL_null), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x02 => (?(), ?(NULL_null)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x03 => (?(NULL_null), ?(NULL_null)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bblocktype : blocktype + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x40 => _RESULT_blocktype(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx(($proj_sN_0(i).0 : int <:> nat))) + -- if ($proj_sN_0(i).0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcatch : catch + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bmemarg : memidxop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) + -- if (n < (2 ^ 6)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, n : n, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) + -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Blaneidx : laneidx + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} `%`_byte($proj_uN_0(l).0):Bbyte => `%`_laneidx($proj_uN_0(l).0) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 +grammar Binstr : instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 + prod 0x00 => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 + prod 0x01 => NOP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 + prod 0x1A => DROP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 + prod 0x1B => SELECT_instr(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 + prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 + prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 + prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 + prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 + prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 + prod 0x0A => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 + prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 + prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 + prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 + prod 0x0F => RETURN_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 + prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 + prod{x : idx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 + prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 + prod{x : idx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 + prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 + prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 + prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 + prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 + prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 + prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 + prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 + prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 + prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 + prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 + prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 + prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 + prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 + prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 + prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 + prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 + prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 + prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 + prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 + prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 + prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 + prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 + prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 + prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 + prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 + prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 + prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 + prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 + prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 + prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 + prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 + prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 + prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 + prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 + prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 + prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 + prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 + prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 + prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 + prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 + prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 + prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 + prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 + prod 0xD1 => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 + prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 + prod 0xD3 => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 + prod 0xD4 => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 + prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 + prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 + prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 + prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 + prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 + prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 + prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 + prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 + prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 + prod {{0xFB} {`%`_u32(15):Bu32}} => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 + prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 + prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 + prod {{0xFB} {`%`_u32(26):Bu32}} => `ANY.CONVERT_EXTERN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 + prod {{0xFB} {`%`_u32(27):Bu32}} => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 + prod {{0xFB} {`%`_u32(28):Bu32}} => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 + prod {{0xFB} {`%`_u32(29):Bu32}} => `I31.GET`_instr(S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 + prod {{0xFB} {`%`_u32(30):Bu32}} => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 + prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 + prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 + prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 + prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 + prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 + prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 + prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 + prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 + prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 + prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 + prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 + prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 + prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 + prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 + prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 + prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 + prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 + prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 + prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 + prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 + prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 + prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 + prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 + prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 + prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 + prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 + prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 + prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 + prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 + prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 + prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 + prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 + prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 + prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 + prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 + prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 + prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 + prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 + prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 + prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 + prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 + prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 + prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 + prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 + prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 + prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 + prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 + prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 + prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 + prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 + prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 + prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 + prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 + prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 + prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 + prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 + prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 + prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 + prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 + prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 + prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 + prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 + prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 + prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 + prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 + prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 + prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 + prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 + prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 + prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 + prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 + prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 + prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 + prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 + prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 + prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 + prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 + prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 + prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 + prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 + prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 + prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 + prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 + prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 + prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 + prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 + prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 + prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 + prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 + prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 + prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 + prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 + prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 + prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 + prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 + prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 + prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 + prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 + prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 + prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 + prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 + prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 + prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 + prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 + prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 + prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 + prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 + prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 + prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 + prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 + prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 + prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 + prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 + prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 + prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 + prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 + prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 + prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 + prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 + prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 + prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 + prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 + prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 + prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 + prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 + prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 + prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 + prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 + prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 + prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 + prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 + prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 + prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 + prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 + prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 + prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 + prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 + prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 + prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 + prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 + prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 + prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx($proj_uN_0(l).0)^16{l <- `l*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 + prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 + prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 + prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 + prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 + prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 + prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 + prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 + prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 + prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 + prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 + prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 + prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 + prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 + prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 + prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 + prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 + prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 + prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 + prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 + prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 + prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 + prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 + prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 + prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 + prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 + prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 + prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 + prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 + prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 + prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 + prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 + prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 + prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 + prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 + prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 + prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 + prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 + prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 + prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 + prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 + prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 + prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 + prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 + prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 + prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 + prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 + prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 + prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 + prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 + prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 + prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 + prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 + prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 + prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 + prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 + prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 + prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 + prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 + prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 + prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 + prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 + prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 + prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 + prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 + prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 + prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 + prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 + prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 + prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 + prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 + prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 + prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 + prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 + prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 + prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 + prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 + prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 + prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 + prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 + prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 + prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 + prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 + prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 + prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 + prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 + prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 + prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 + prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 + prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 + prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 + prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 + prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 + prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 + prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 + prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 + prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 + prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 + prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 + prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 + prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 + prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 + prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 + prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 + prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 + prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 + prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 + prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 + prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 + prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 + prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 + prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 + prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 + prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 + prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 + prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 + prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 + prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 + prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 + prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 + prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 + prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 + prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 + prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 + prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 + prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 + prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 + prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 + prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 + prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 + prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 + prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 + prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 + prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 + prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 + prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 + prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 + prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 + prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 + prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 + prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 + prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 + prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 + prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 + prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 + prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 + prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 + prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 + prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 + prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 + prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 + prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 + prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 + prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 + prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 + prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 + prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 + prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 + prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 + prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 + prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 + prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 + prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 + prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 + prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 + prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 + prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 + prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 + prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 + prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 + prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 + prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 + prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 + prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 + prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 + prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 + prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 + prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 + prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 + prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 + prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 + prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 + prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 + prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 + prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 + prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 + prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 + prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 + prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 + prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 + prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 + prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 + prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 + prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 + prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 + prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 + prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 + prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 + prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 + prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 + prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 + prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 + prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 + prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 + prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 + prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 + prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 + prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 + prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 + prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 + prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 + prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 + prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 + prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 + prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 + prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 + prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 + prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 + prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 + prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) +} + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bexpr : expr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`en*` : en*, len : nat} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} + -- if (len = 0) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod eps => [] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustom : ()* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{Bname} {Bbyte*{}}} => [] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustomsec : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btype : type + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{qt : rectype} qt:Brectype => TYPE_type(qt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btypesec : type* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimport : import + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimportsec : import* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfuncsec : typeidx* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btable : table + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [`REF.NULL`_instr(ht)]) + -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btablesec : table* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmem : mem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmemsec : mem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobal : global + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobalsec : global* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexport : export + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexportsec : export* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstart : start* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{x : idx} x:Bfuncidx => [START_start(x)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstartsec : start? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => !($opt_(syntax start, startopt)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemkind : reftype + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod 0x00 => REF_reftype(?(), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belem : elem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`y*` : idx*, e_o : expr} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], DECLARE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`e*` : expr*, e_O : expr} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e_O : expr} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemsec : elem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Blocals : local* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{t : valtype, n : n} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfunc : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) + -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcode : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{code : code, len : nat} {{`%`_u32(len):Bu32} {code:Bfunc}} => code + -- if (len = 0) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcodesec : code* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdata : data + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*, e : expr} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*, x : idx, e : expr} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatasec : data* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacnt : u32* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacntsec : u32? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => !($opt_(syntax u32, nopt)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btag : tag + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btagsec : tag* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmagic : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bversion : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmodule : module + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} + -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) + -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tchar : char + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tsource : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tchar*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TuNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TsNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TfNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x21 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x23 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x24 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x25 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x26 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x27 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2A => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2B => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2D => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3A => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3D => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x40 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x60 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7E => `%`_char(``) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x30 => 0 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x31 => 1 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x32 => 2 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x33 => 3 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x34 => 4 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x35 => 5 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x36 => 6 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x37 => 7 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x38 => 8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x39 => 9 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x41 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x42 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x43 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x44 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x45 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x46 => 15 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x61 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x62 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x63 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x64 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x65 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x66 => 15 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 +grammar Thexnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 + prod{h : nat} h:Thexdigit => h + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 + prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char} c:Tchar => c + -- if (((($proj_char_0(c).0 >= 32) /\ ($proj_char_0(c).0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\t" => `%`_char(9) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\n" => `%`_char(10) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\r" => `%`_char(13) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\"" => `%`_char(34) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\'" => `%`_char(39) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\\" => `%`_char(92) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) + -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringelem : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char} c:Tstringchar => $utf8([c]) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstring : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) + -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tname : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*, `b*` : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) + -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tid : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) + -- if (|c*{c <- `c*`}| > 0) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tkeyword : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Treserved : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Ttoken : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tkeyword => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TuNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TsNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TfNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : byte} [``]:Tstring => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tid => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x28 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x29 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Treserved => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tannotid : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tidchar+{} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tname => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 +grammar Tblockcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 + prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 +grammar Tblockchar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 + prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 + prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 + prod{`` : ()} ``:Tblockcomment => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Teof : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : text} ``:"" => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinechar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if (($proj_char_0(c).0 =/= 10) /\ ($proj_char_0(c).0 =/= 13)) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tnewline : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0A => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0D => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinecomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tlinecomment => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tblockcomment => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tformat : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tnewline => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x09 => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 +grammar Tspace : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 + prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 +grammar Tannot : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 + prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tsign : int + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod eps => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "+" => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "-" => - (1 : nat <:> int) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 +grammar Tnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 + prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TuN(N : N) : uN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} n:Tnum => `%`_uN(n) + -- if (n < (2 ^ N)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) + -- if (n < (2 ^ N)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TsN(N : N) : sN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TiN(N : N) : iN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{i : sN} i:TsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 +grammar Tfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 + prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 + prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 +grammar Thexfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 + prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 + prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfNmag(N : N) : fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Tfloat => $ieee_(N, q) + -- if ($ieee_(N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Thexfloat => $ieee_(N, q) + -- if ($ieee_(N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "inf" => INF_fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "nan" => NAN_fNmag($canon_(N)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + -- if ((1 <= n) /\ (n < (2 ^ !($signif(N))))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfN(N : N) : fN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti16 : u16 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(16) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf32 : f32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf64 : f64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlist(syntax el, grammar TX : el) : el* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} + -- if (|el*{el <- `el*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidx_(ids : name?*) : idx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} x:Tu32 => x + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx, id : name} id:Tid => x + -- if (ids[$proj_uN_0(x).0] = ?(id)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttypeidx_(I : I) : typeidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttagidx_(I : I) : tagidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tglobalidx_(I : I) : globalidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmemidx_(I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttableidx_(I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfuncidx_(I : I) : funcidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdataidx_(I : I) : dataidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Telemidx_(I : I) : elemidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlocalidx_(I : I) : localidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlabelidx_(I : I) : labelidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfieldidx__(I : I, x : idx) : fieldidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.FIELDS_I[$proj_uN_0(x).0]) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Texternidx_(I : I) : externidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnumtype : numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f32" => F32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f64" => F64_numtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvectype : vectype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "v128" => V128_vectype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tabsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "any" => ANY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "eq" => EQ_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i31" => I31_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "struct" => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "array" => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "none" => NONE_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "func" => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "nofunc" => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "exn" => EXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noexn" => NOEXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "extern" => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noextern" => NOEXTERN_heaptype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Theaptype_(I : I) : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ht : heaptype} ht:Tabsheaptype => ht + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnull : null + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "null" => NULL_null + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Treftype_(I : I) : reftype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvaltype_(I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tpacktype : packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i8" => I8_packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i16" => I16_packtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tstoragetype_(I : I) : storagetype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfieldtype_(I : I) : fieldtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfield_(I : I) : (fieldtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft : fieldtype, `id?` : char?} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tparam_(I : I) : (valtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype, `id?` : char?} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tresult_(I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tcomptype_(I : I) : (comptype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfinal : final + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "final" => FINAL_final + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tsubtype_(I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypedef_(I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{st : subtype, I' : I, `id?` : char?} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Trectype_(I : I) : (rectype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Taddrtype : addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_addrtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tlimits : limits + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypeuse_(I : I) : (typeidx, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') + -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') + -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) + -- Idctxt_ok: `|-%:OK`(I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttagtype_(I : I) : tagtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tglobaltype_(I : I) : globaltype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tmemtype_(I : I) : memtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttabletype_(I : I) : tabletype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Texterntype_(I : I) : (externtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{gt : globaltype, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{tt : tabletype, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, `id?` : char?, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlabel_(I : I) : (name?, I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) + -- if ~ (?(id) <- I.LABELS_I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[$proj_uN_0(x).0] = ?()]) + -- if (?(id) = I.LABELS_I[$proj_uN_0(x).0]) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tblocktype_(I : I) : blocktype + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tcatch_(I : I) : catch + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tfoldedinstr_(I : I) : instr* + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlaneidx : laneidx + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : u8} i:Tu8 => i + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Talign_(N : N) : u32 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{n : n, m : m} {{"align="} {`%`_u64(m):Tu64}} => `%`_u32(n) + -- if (m = (2 ^ n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u32(N) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Toffset : u64 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{m : m} {{"offset="} {`%`_u64(m):Tu64}} => `%`_u64(m) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u64(0) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tmemarg_(N : N) : memarg + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{n : n, m : m} {{`%`_u32(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tplaininstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "unreachable" => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "nop" => NOP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "drop" => DROP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "return" => RETURN_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "throw_ref" => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.is_null" => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.as_non_null" => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.eq" => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.i31" => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_s" => `I31.GET`_instr(S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_u" => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "array.len" => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "any.convert_extern" => `ANY.CONVERT_EXTERN`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "extern.convert_any" => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_dot_i8x16_i7x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_dot_i8x16_i7x16_add_s" => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2)) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 +grammar Tinstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 + prod{in : instr} in:Tplaininstr_(I) => in + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 + prod{in : instr} in:Tblockinstr_(I) => in + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 +grammar Tinstrs_(I : I) : instr* + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 + prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 + prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 +grammar Tblockinstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) +} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Texpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttype_(I : I) : (type, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') + -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) + -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tglobal_(I : I) : (global, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmem_(I : I) : (mem, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttable_(I : I) : (table, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tlocal_(I : I) : (local*, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{t : valtype, `id?` : char?} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tfunc_(I : I) : (func, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) + -- Idctxt_ok: `|-%:OK`(I') + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatastring : byte* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmemuse_(I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Toffset_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdata_(I : I) : (data, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemexpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemlist_(I : I) : (reftype, expr*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttableuse_(I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telem_(I : I) : (elem, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tstart_(I : I) : (start, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timport_(I : I) : (import, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texport_(I : I) : (export, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttagdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobaldots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmemdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttabledots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfuncdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttag_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobal_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmem_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfunc_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatamem_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemtable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecl_(I : I) : (decl, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmodule : module + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + -- if (I' = $concat_idctxt(I*{I <- `I*`})) + -- Idctxt_ok: `|-%:OK`(I') + -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) + -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) + -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) + -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) + -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) + -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) + -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) + -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) + -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) + -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) + -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) + -- if $ordered(decl*{decl <- `decl*`}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecldots_(I : I) : (decl, idctxt)* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bvar(syntax X) : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod 0x00 => ((), ()).1 + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsym : A + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod Bvar(syntax B) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsymsplit : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tvar(syntax X) : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod 0x00 => ((), ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsym : A + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod Tvar(syntax T) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsymsplit : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tabbrev : () + diff --git a/spectec/test-middlend/specification.exp/10-pattern-simp.il b/spectec/test-middlend/specification.exp/10-pattern-simp.il new file mode 100644 index 0000000000..74efb6d6c7 --- /dev/null +++ b/spectec/test-middlend/specification.exp/10-pattern-simp.il @@ -0,0 +1,22557 @@ + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax N = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax M = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax K = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax n = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax m = nat + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +def $min(nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $min{i : nat, j : nat}(i, j) = (if (i <= j) then i else j) + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 +def $sum(nat*) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 + def $sum([]) = 0 + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 + def $sum{n : nat, `n'*` : n*}([n] ++ n'#1*{n'#1 <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) +} + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 +def $prod(nat*) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 + def $prod([]) = 1 + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 + def $prod{n : nat, `n'*` : n*}([n] ++ n'#2*{n'#2 <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $opt_(syntax X, X*) : X?? + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X}(syntax X, []) = ?(?()) + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 +def $concat_(syntax X, X**) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 + def $concat_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 + def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w#1*{w#1 <- `w*`}] ++ w'#1*{w'#1 <- `w'*#1`}*{`w'*#1` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 +def $concatn_(syntax X, X**, nat : nat) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 + def $concatn_{syntax X, n : nat}(syntax X, [], n) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 + def $concatn_{syntax X, n : nat, `w*` : X*, `w'**` : X**}(syntax X, [w#2*{w#2 <- `w*`}] ++ w'#2*{w'#2 <- `w'*#2`}*{`w'*#2` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) + -- if (n = |`w*`|) + -- (if (n = |`w'*#2`|))*{`w'*#2` <- `w'**`} +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $concatopt_(syntax X, X?*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w#3?{w#3 <- `w?`}] ++ w'#3?{w'#3 <- `w'?#1`}*{`w'?#1` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concat_(syntax X, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concatn_(syntax X, nat : nat, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 +def $disjoint_(syntax X, X*) : bool + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 + def $disjoint_{syntax X}(syntax X, []) = true + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 + def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'#4*{w'#4 <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 +def $setminus1_(syntax X, X : X, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 + def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 + def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'#5*{w'#5 <- `w'*`}) = (if (w = w_1) then [] else $setminus1_(syntax X, w, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 +def $setminus_(syntax X, X*, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 + def $setminus_{syntax X, `w*` : X*}(syntax X, [], w#4*{w#4 <- `w*`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 + def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'#6*{w'#6 <- `w'*`}, w#5*{w#5 <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 +def $setproduct2_(syntax X, X : X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 + def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 + def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'#7*{w'#7 <- `w'*`}] ++ w#6*{w#6 <- `w*#1`}*{`w*#1` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 +def $setproduct1_(syntax X, X*, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 + def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w#7*{w#7 <- `w*#2`}*{`w*#2` <- `w**`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 + def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'#8*{w'#8 <- `w'*`}, w#8*{w#8 <- `w*#3`}*{`w*#3` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 +def $setproduct_(syntax X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 + def $setproduct_{syntax X}(syntax X, []) = [[]] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 + def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1#1*{w_1#1 <- `w_1*`}] ++ w#9*{w#9 <- `w*#4`}*{`w*#4` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) +} + +;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec +def $ND : bool + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax bit = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_bit: `%`(bit) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule bit_case_0{i : nat}: + `%`(`%`_bit(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax byte = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_byte_0(x : byte) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_byte_0{v_num_0 : nat}(`%`_byte(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_byte: `%`(byte) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule byte_case_0{i : nat}: + `%`(`%`_byte(i)) + -- if ((i >= 0) /\ (i <= 255)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax uN = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_uN_0(x : uN) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_uN_0{v_num_0 : nat}(`%`_uN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_uN: `%%`(N, uN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule uN_case_0{N : N, i : nat}: + `%%`(N, `%`_uN(i)) + -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax sN = + | `%`(i : int) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_sN_0(x : sN) : (int) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_sN_0{v_num_0 : int}(`%`_sN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_sN: `%%`(N, sN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule sN_case_0{N : N, i : int}: + `%%`(N, `%`_sN(i)) + -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax iN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u8 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u16 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u31 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u32 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u64 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax s33 = sN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i32 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i64 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i128 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $signif(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(32) = ?(23) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $expon(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(32) = ?(8) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $M(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $M{N : nat}(N) = !($signif(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $E(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $E{N : nat}(N) = !($expon(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax exp = int + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fNmag = + | NORM(m : m, exp : exp) + | SUBNORM(m : m) + | INF + | NAN(m : m) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fNmag: `%%`(N, fNmag) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_0{N : N, m : m, exp : exp}: + `%%`(N, NORM_fNmag(m, exp)) + -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_1{N : N, exp : exp, m : m}: + `%%`(N, SUBNORM_fNmag(m)) + -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_2{N : N}: + `%%`(N, INF_fNmag) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_3{N : N, m : m}: + `%%`(N, NAN_fNmag(m)) + -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fN = + | POS(fNmag) + | NEG(fNmag) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fN: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_0{N : N, var_0 : fNmag}: + `%%`(N, POS_fN(var_0)) + -- wf_fNmag: `%%`(N, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_1{N : N, var_0 : fNmag}: + `%%`(N, NEG_fN(var_0)) + -- wf_fNmag: `%%`(N, var_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f32 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f64 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fzero(N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fzero_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fzero_is_wf_0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fzero(N)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fnat(N : N, nat : nat) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fnat_is_wf: `%%%`(N : N, nat : nat, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fnat_is_wf_0{N : N, nat : nat, ret_val : fN}: + `%%%`(N, nat, ret_val) + -- if (ret_val = $fnat(N, nat)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fone(N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fone_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fone_is_wf_0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fone(N)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $canon_(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax vN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax v128 = vN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax list{syntax X}(syntax X) = + | `%`(`X*` : X*) + -- if (|X*{X <- `X*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_list_0(syntax X, x : list(syntax X)) : (X*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_list_0{syntax X, v_X_list_0 : X*}(syntax X, `%`_list(v_X_list_0)) = (v_X_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax char = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_char_0(x : char) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_char_0{v_num_0 : nat}(`%`_char(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_char: `%`(char) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule char_case_0{i : nat}: + `%`(`%`_char(i)) + -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +def $cont(byte : byte) : nat + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + def $cont{b : byte}(b) = ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) + -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 +def $utf8(char*) : byte* + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 + def $utf8{`ch*` : char*}(ch#1*{ch#1 <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 + def $utf8{ch : char}([ch]) = [b] + -- if ($proj_char_0(ch).0 < 128) + -- let{b : byte} b = `%`_byte($proj_char_0(ch).0) + -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 + def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) + -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 + def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) + -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 + def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) + -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation utf8_is_wf: `%%`(var_0 : char*, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule utf8_is_wf_0{var_0 : char*, ret_val : byte*}: + `%%`(var_0, ret_val) + -- (wf_char: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $utf8(var_0)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax name = + | `%`(`char*` : char*) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_name_0(x : name) : (char*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_name_0{v_char_list_0 : char*}(`%`_name(v_char_list_0)) = (v_char_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_name: `%`(name) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule name_case_0{`char*` : char*}: + `%`(`%`_name(`char*`)) + -- (wf_char: `%`(char))*{char <- `char*`} + -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax idx = u32 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax laneidx = u8 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax typeidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax funcidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax globalidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tableidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax memidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tagidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax elemidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax dataidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax labelidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax localidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fieldidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax externidx = + | FUNC(funcidx : funcidx) + | GLOBAL(globalidx : globalidx) + | TABLE(tableidx : tableidx) + | MEM(memidx : memidx) + | TAG(tagidx : tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_externidx: `%`(externidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_0{funcidx : funcidx}: + `%`(FUNC_externidx(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_1{globalidx : globalidx}: + `%`(GLOBAL_externidx(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_2{tableidx : tableidx}: + `%`(TABLE_externidx(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_3{memidx : memidx}: + `%`(MEM_externidx(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_4{tagidx : tagidx}: + `%`(TAG_externidx(tagidx)) + -- wf_uN: `%%`(32, tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 +def $funcsxx(externidx*) : typeidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 + def $funcsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 + def $funcsxx{x : uN, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx#1*{xx#1 <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 + def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#2*{xx#2 <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 +def $globalsxx(externidx*) : globalidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 + def $globalsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 + def $globalsxx{x : uN, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx#3*{xx#3 <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 + def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#4*{xx#4 <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 +def $tablesxx(externidx*) : tableidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 + def $tablesxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 + def $tablesxx{x : uN, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx#5*{xx#5 <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 + def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#6*{xx#6 <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 +def $memsxx(externidx*) : memidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 + def $memsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 + def $memsxx{x : uN, `xx*` : externidx*}([MEM_externidx(x)] ++ xx#7*{xx#7 <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 + def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#8*{xx#8 <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 +def $tagsxx(externidx*) : tagidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 + def $tagsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 + def $tagsxx{x : uN, `xx*` : externidx*}([TAG_externidx(x)] ++ xx#9*{xx#9 <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 + def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#10*{xx#10 <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax free = +{ + TYPES typeidx*, + FUNCS funcidx*, + GLOBALS globalidx*, + TABLES tableidx*, + MEMS memidx*, + ELEMS elemidx*, + DATAS dataidx*, + LOCALS localidx*, + LABELS labelidx*, + TAGS tagidx* +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_free: `%`(free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_case_{var_0 : typeidx*, var_1 : funcidx*, var_2 : globalidx*, var_3 : tableidx*, var_4 : memidx*, var_5 : elemidx*, var_6 : dataidx*, var_7 : localidx*, var_8 : labelidx*, var_9 : tagidx*}: + `%`({TYPES var_0, FUNCS var_1, GLOBALS var_2, TABLES var_3, MEMS var_4, ELEMS var_5, DATAS var_6, LOCALS var_7, LABELS var_8, TAGS var_9}) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_uN: `%%`(32, var_1))*{var_1 <- var_1} + -- (wf_uN: `%%`(32, var_2))*{var_2 <- var_2} + -- (wf_uN: `%%`(32, var_3))*{var_3 <- var_3} + -- (wf_uN: `%%`(32, var_4))*{var_4 <- var_4} + -- (wf_uN: `%%`(32, var_5))*{var_5 <- var_5} + -- (wf_uN: `%%`(32, var_6))*{var_6 <- var_6} + -- (wf_uN: `%%`(32, var_7))*{var_7 <- var_7} + -- (wf_uN: `%%`(32, var_8))*{var_8 <- var_8} + -- (wf_uN: `%%`(32, var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_opt(free?) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt{free : free}(?(free)) = free + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_opt_is_wf: `%%`(var_0 : free?, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_opt_is_wf_0{var_0 : free?, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))?{var_0 <- var_0} + -- if (ret_val = $free_opt(var_0)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.1-173.29 +def $free_list(free*) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 + def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 + def $free_list{free : free, `free'*` : free*}([free] ++ free'#1*{free'#1 <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation free_list_is_wf: `%%`(var_0 : free*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule free_list_is_wf_0{var_0 : free*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_list(var_0)) + -- wf_free: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_typeidx(typeidx : typeidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_typeidx_is_wf: `%%`(typeidx : typeidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_typeidx_is_wf_0{typeidx : typeidx, ret_val : free}: + `%%`(typeidx, ret_val) + -- wf_uN: `%%`(32, typeidx) + -- if (ret_val = $free_typeidx(typeidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_funcidx(funcidx : funcidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_funcidx_is_wf: `%%`(funcidx : funcidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_funcidx_is_wf_0{funcidx : funcidx, ret_val : free}: + `%%`(funcidx, ret_val) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $free_funcidx(funcidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_globalidx(globalidx : globalidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_globalidx_is_wf: `%%`(globalidx : globalidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_globalidx_is_wf_0{globalidx : globalidx, ret_val : free}: + `%%`(globalidx, ret_val) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $free_globalidx(globalidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tableidx(tableidx : tableidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tableidx_is_wf: `%%`(tableidx : tableidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tableidx_is_wf_0{tableidx : tableidx, ret_val : free}: + `%%`(tableidx, ret_val) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $free_tableidx(tableidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_memidx(memidx : memidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_memidx_is_wf: `%%`(memidx : memidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_memidx_is_wf_0{memidx : memidx, ret_val : free}: + `%%`(memidx, ret_val) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $free_memidx(memidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_elemidx(elemidx : elemidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_elemidx_is_wf: `%%`(elemidx : elemidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_elemidx_is_wf_0{elemidx : elemidx, ret_val : free}: + `%%`(elemidx, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- if (ret_val = $free_elemidx(elemidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_dataidx(dataidx : dataidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_dataidx_is_wf: `%%`(dataidx : dataidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_dataidx_is_wf_0{dataidx : dataidx, ret_val : free}: + `%%`(dataidx, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $free_dataidx(dataidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_localidx(localidx : localidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_localidx_is_wf: `%%`(localidx : localidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_localidx_is_wf_0{localidx : localidx, ret_val : free}: + `%%`(localidx, ret_val) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $free_localidx(localidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_labelidx(labelidx : labelidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_labelidx_is_wf: `%%`(labelidx : labelidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_labelidx_is_wf_0{labelidx : labelidx, ret_val : free}: + `%%`(labelidx, ret_val) + -- wf_uN: `%%`(32, labelidx) + -- if (ret_val = $free_labelidx(labelidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tagidx(tagidx : tagidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tagidx{tagidx : uN}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tagidx_is_wf: `%%`(tagidx : tagidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tagidx_is_wf_0{tagidx : tagidx, ret_val : free}: + `%%`(tagidx, ret_val) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $free_tagidx(tagidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_externidx(externidx : externidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{funcidx : uN}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{globalidx : uN}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_externidx_is_wf: `%%`(externidx : externidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_externidx_is_wf_0{externidx : externidx, ret_val : free}: + `%%`(externidx, ret_val) + -- wf_externidx: `%`(externidx) + -- if (ret_val = $free_externidx(externidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax null = + | NULL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax addrtype = + | I32 + | I64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax numtype = + | I32 + | I64 + | F32 + | F64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax vectype = + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax consttype = + | I32 + | I64 + | F32 + | F64 + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax absheaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax mut = + | MUT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax final = + | FINAL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 +syntax typeuse = + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 +syntax heaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 +syntax valtype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(`null?` : null?, heaptype : heaptype) + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 +syntax storagetype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(`null?` : null?, heaptype : heaptype) + | BOT + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 +syntax resulttype = list(syntax valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 +syntax fieldtype = + | `%%`(`mut?` : mut?, storagetype : storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 +syntax comptype = + | STRUCT(list(syntax fieldtype)) + | ARRAY(fieldtype : fieldtype) + | `FUNC%->%`(resulttype : resulttype, resulttype : resulttype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 +syntax subtype = + | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 +syntax rectype = + | REC(list(syntax subtype)) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 +relation wf_typeuse: `%`(typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_0{typeidx : typeidx}: + `%`(_IDX_typeuse(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_1{rectype : rectype, n : n}: + `%`(_DEF_typeuse(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_2{n : n}: + `%`(REC_typeuse(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 +relation wf_heaptype: `%`(heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_0: + `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_1: + `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_2: + `%`(I31_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_3: + `%`(STRUCT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_4: + `%`(ARRAY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_5: + `%`(NONE_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_6: + `%`(FUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_7: + `%`(NOFUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_8: + `%`(EXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_9: + `%`(NOEXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_10: + `%`(EXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_11: + `%`(NOEXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_12: + `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_13{typeidx : typeidx}: + `%`(_IDX_heaptype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_14{rectype : rectype, n : n}: + `%`(_DEF_heaptype(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_15{n : n}: + `%`(REC_heaptype(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 +relation wf_valtype: `%`(valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_0: + `%`(I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_1: + `%`(I64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_2: + `%`(F32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_3: + `%`(F64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_4: + `%`(V128_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_valtype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_6: + `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 +relation wf_storagetype: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_0: + `%`(I32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_4: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_storagetype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_6: + `%`(BOT_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_7: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_8: + `%`(I16_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 +relation wf_fieldtype: `%`(fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 + rule fieldtype_case_0{`mut?` : mut?, storagetype : storagetype}: + `%`(`%%`_fieldtype(`mut?`, storagetype)) + -- wf_storagetype: `%`(storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 +relation wf_comptype: `%`(comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_0{var_0 : list(syntax fieldtype)}: + `%`(STRUCT_comptype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_1{fieldtype : fieldtype}: + `%`(ARRAY_comptype(fieldtype)) + -- wf_fieldtype: `%`(fieldtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_2{resulttype : resulttype, resulttype_0 : resulttype}: + `%`(`FUNC%->%`_comptype(resulttype, resulttype_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 +relation wf_subtype: `%`(subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 + rule subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}: + `%`(SUB_subtype(`final?`, `typeuse*`, comptype)) + -- (wf_typeuse: `%`(typeuse))*{typeuse <- `typeuse*`} + -- wf_comptype: `%`(comptype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax deftype = + | _DEF(rectype : rectype, n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax typevar = + | _IDX(typeidx : typeidx) + | REC(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_typevar: `%`(typevar) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_0{typeidx : typeidx}: + `%`(_IDX_typevar(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_1{n : n}: + `%`(REC_typevar(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax reftype = + | REF(`null?` : null?, heaptype : heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_reftype: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule reftype_case_0{`null?` : null?, heaptype : heaptype}: + `%`(REF_reftype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Inn = addrtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Fnn = + | F32 + | F64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Vnn = vectype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Cnn = + | I32 + | I64 + | F32 + | F64 + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ANYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ANYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ANYREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ANYREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EQREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EQREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EQREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EQREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $I31REF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation I31REF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule I31REF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $I31REF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $STRUCTREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation STRUCTREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule STRUCTREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $STRUCTREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ARRAYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ARRAYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ARRAYREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ARRAYREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation FUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule FUNCREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $FUNCREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXTERNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXTERNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLFUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLFUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLFUNCREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLFUNCREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXTERNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXTERNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax packtype = + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax lanetype = + | I32 + | I64 + | F32 + | F64 + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Pnn = packtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Jnn = + | I32 + | I64 + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Lnn = lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax limits = + | `[%..%]`(u64 : u64, `u64?` : u64?) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_limits: `%`(limits) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule limits_case_0{u64 : u64, `u64?` : u64?}: + `%`(`[%..%]`_limits(u64, `u64?`)) + -- wf_uN: `%%`(64, u64) + -- (wf_uN: `%%`(64, u64))?{u64 <- `u64?`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tagtype = typeuse + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax globaltype = + | `%%`(`mut?` : mut?, valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_globaltype: `%`(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule globaltype_case_0{`mut?` : mut?, valtype : valtype}: + `%`(`%%`_globaltype(`mut?`, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax memtype = + | `%%PAGE`(addrtype : addrtype, limits : limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_memtype: `%`(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule memtype_case_0{addrtype : addrtype, limits : limits}: + `%`(`%%PAGE`_memtype(addrtype, limits)) + -- wf_limits: `%`(limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tabletype = + | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_tabletype: `%`(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype}: + `%`(`%%%`_tabletype(addrtype, limits, reftype)) + -- wf_limits: `%`(limits) + -- wf_reftype: `%`(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax datatype = + | OK + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax elemtype = reftype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax externtype = + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype) + | MEM(memtype : memtype) + | TABLE(tabletype : tabletype) + | FUNC(typeuse : typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_externtype: `%`(externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_0{tagtype : tagtype}: + `%`(TAG_externtype(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_1{globaltype : globaltype}: + `%`(GLOBAL_externtype(globaltype)) + -- wf_globaltype: `%`(globaltype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_2{memtype : memtype}: + `%`(MEM_externtype(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_3{tabletype : tabletype}: + `%`(TABLE_externtype(tabletype)) + -- wf_tabletype: `%`(tabletype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_4{typeuse : typeuse}: + `%`(FUNC_externtype(typeuse)) + -- wf_typeuse: `%`(typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax moduletype = + | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_moduletype: `%`(moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule moduletype_case_0{`externtype*` : externtype*, `externtype*_0` : externtype*}: + `%`(`%->%`_moduletype(`externtype*`, `externtype*_0`)) + -- (wf_externtype: `%`(externtype))*{externtype <- `externtype*`} + -- (wf_externtype: `%`(`externtype*_0`))*{`externtype*_0` <- `externtype*_0`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $IN(N : N) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FN(N : N) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $JN(N : N) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $size(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I64_numtype) = 64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F64_numtype) = 64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsize(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsize(V128_vectype) = 128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psize(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I8_packtype) = 8 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I16_packtype) = 16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsize(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I32_lanetype) = $size(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I64_lanetype) = $size(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F32_lanetype) = $size(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F64_lanetype) = $size(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I8_lanetype) = $psize(I8_packtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I16_lanetype) = $psize(I16_packtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $zsize(storagetype : storagetype) : nat? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I32_storagetype) = ?($size(I32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I64_storagetype) = ?($size(I64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F32_storagetype) = ?($size(F32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F64_storagetype) = ?($size(F64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I8_storagetype) = ?($psize(I8_packtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I16_storagetype) = ?($psize(I16_packtype)) + def $zsize{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $isize(Inn : Inn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $isize{Inn : addrtype}(Inn) = $size((Inn : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsize(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsize{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $fsize(Fnn : Fnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $fsize{Fnn : Fnn}(Fnn) = $size((Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_isize(nat : nat) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(64) = ?(I64_Inn) + def $inv_isize{x0 : nat}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsize(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize{n : nat}(n) = (iter_val#1 : addrtype <: Jnn)?{iter_val#1 <- $inv_isize(n)} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_fsize(nat : nat) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(64) = ?(F64_Fnn) + def $inv_fsize{x0 : nat}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn1(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn1{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn2(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn2{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsizenn(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsizenn{vt : vectype}(vt) = $vsize(vt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psizenn(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psizenn{pt : packtype}(pt) = $psize(pt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn1(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn2(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsizenn(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsizenn{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsizenn(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn{n : nat}(n) = $inv_jsize(n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lunpack(lanetype : lanetype) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I32_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I64_lanetype) = I64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F32_lanetype) = F32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F64_lanetype) = F64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I8_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I16_lanetype) = I32_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $unpack(storagetype : storagetype) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(BOT_storagetype) = BOT_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack{`null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype)) = REF_valtype(`null?`, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(V128_storagetype) = V128_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(F64_storagetype) = F64_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(F32_storagetype) = F32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I64_storagetype) = I64_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I32_storagetype) = I32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I8_storagetype) = I32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I16_storagetype) = I32_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation unpack_is_wf: `%%`(storagetype : storagetype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule unpack_is_wf_0{storagetype : storagetype, ret_val : valtype}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $unpack(storagetype)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $nunpack(storagetype : storagetype) : numtype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I32_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I64_storagetype) = ?(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F32_storagetype) = ?(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F64_storagetype) = ?(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I8_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I16_storagetype) = ?(I32_numtype) + def $nunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vunpack(storagetype : storagetype) : vectype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vunpack(V128_storagetype) = ?(V128_vectype) + def $vunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $cunpack(storagetype : storagetype) : consttype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?(I64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?(F32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?(F64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(V128_storagetype) = ?(V128_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?(($lunpack(I32_lanetype) : numtype <: consttype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?(($lunpack(I64_lanetype) : numtype <: consttype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?(($lunpack(F32_lanetype) : numtype <: consttype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?(($lunpack(F64_lanetype) : numtype <: consttype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?(($lunpack(I8_lanetype) : numtype <: consttype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?(($lunpack(I16_lanetype) : numtype <: consttype)) + def $cunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size((at_1 : addrtype <: numtype)) <= $size((at_2 : addrtype <: numtype))) then at_1 else at_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $diffrt(reftype : reftype, reftype : reftype) : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#1?{null_1#1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#2?{null_1#2 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation diffrt_is_wf: `%%%`(reftype : reftype, reftype_0 : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule diffrt_is_wf_0{reftype : reftype, reftype_0 : reftype, ret_val : reftype}: + `%%%`(reftype, reftype_0, ret_val) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + -- if (ret_val = $diffrt(reftype, reftype_0)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $as_deftype(typeuse : typeuse) : deftype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = ?(_DEF_deftype(rectype, n)) + def $as_deftype{x0 : typeuse}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +def $tagsxt(externtype*) : tagtype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + def $tagsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt#1*{xt#1 <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#2*{xt#2 <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +def $globalsxt(externtype*) : globaltype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + def $globalsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt#3*{xt#3 <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#4*{xt#4 <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation globalsxt_is_wf: `%%`(var_0 : externtype*, ret_val : globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule globalsxt_is_wf_0{var_0 : externtype*, ret_val : globaltype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsxt(var_0)) + -- (wf_globaltype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +def $memsxt(externtype*) : memtype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + def $memsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt#5*{xt#5 <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#6*{xt#6 <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation memsxt_is_wf: `%%`(var_0 : externtype*, ret_val : memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule memsxt_is_wf_0{var_0 : externtype*, ret_val : memtype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsxt(var_0)) + -- (wf_memtype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +def $tablesxt(externtype*) : tabletype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + def $tablesxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt#7*{xt#7 <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#8*{xt#8 <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation tablesxt_is_wf: `%%`(var_0 : externtype*, ret_val : tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule tablesxt_is_wf_0{var_0 : externtype*, ret_val : tabletype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesxt(var_0)) + -- (wf_tabletype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +def $funcsxt(externtype*) : deftype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + def $funcsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + def $funcsxt{rectype : rectype, n : n, `xt*` : externtype*}([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt#9*{xt#9 <- `xt*`}) = [_DEF_deftype(rectype, n)] ++ $funcsxt(xt#10*{xt#10 <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 + def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#11*{xt#11 <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.126 +def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 + def $subst_typevar{tv : typevar}(tv, [], []) = ?((tv : typevar <: typeuse)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 + def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'#1*{tv'#1 <- `tv'*`}, [tu_1] ++ tu'#1*{tu'#1 <- `tu'*`}) = (if (tv = tv_1) then tu_1 else iter_val#2)?{iter_val#2 <- $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})} + def $subst_typevar{x0 : typevar, x1 : typevar*, x2 : typeuse*}(x0, x1, x2) = ?() + -- otherwise +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation subst_typevar_is_wf: `%%%%`(typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule subst_typevar_is_wf_0{typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typevar, var_0, var_1, ret_val) + -- wf_typevar: `%`(typevar) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($subst_typevar(typevar, var_0, var_1))) + -- wf_typeuse: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.87 +def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 + def $minus_recs([], []) = ?(([], [])) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 + def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 + def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}) = ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#2*{tv'#2 <- `tv'*`}, tu'#2*{tu'#2 <- `tu'*`}) = !($minus_recs(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`})) + -- (wf_typevar: `%`(iter#1))*{iter#1 <- !($minus_recs(tv#4*{tv#4 <- `tv*`}, tu#4*{tu#4 <- `tu*`})).0} + -- (wf_typeuse: `%`(iter#2))*{iter#2 <- !($minus_recs(tv#5*{tv#5 <- `tv*`}, tu#5*{tu#5 <- `tu*`})).1} + def $minus_recs{x0 : typevar*, x1 : typeuse*}(x0, x1) = ?() + -- otherwise +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation minus_recs_is_wf: `%%%`(var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule minus_recs_is_wf_0{var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)}: + `%%%`(var_0, var_1, ret_val) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($minus_recs(var_0, var_1))) + -- (wf_typevar: `%`(iter))*{iter <- ret_val.0} + -- (wf_typeuse: `%`(iter))*{iter <- ret_val.1} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv#6*{tv#6 <- `tv*`}, tu#6*{tu#6 <- `tu*`}) = pt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv#7*{tv#7 <- `tv*`}, tu#7*{tu#7 <- `tu*`}) = nt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv#8*{tv#8 <- `tv*`}, tu#8*{tu#8 <- `tu*`}) = vt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 +def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + def $subst_typeuse{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_typeuse(n), tv#9*{tv#9 <- `tv*`}, tu#9*{tu#9 <- `tu*`}) = !($subst_typevar(REC_typevar(n), tv#10*{tv#10 <- `tv*`}, tu#10*{tu#10 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + def $subst_typeuse{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_typeuse(typeidx), tv#11*{tv#11 <- `tv*`}, tu#11*{tu#11 <- `tu*`}) = !($subst_typevar(_IDX_typevar(typeidx), tv#12*{tv#12 <- `tv*`}, tu#12*{tu#12 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 + def $subst_typeuse{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_typeuse(rectype, n), tv#13*{tv#13 <- `tv*`}, tu#13*{tu#13 <- `tu*`}) = ($subst_deftype(_DEF_deftype(rectype, n), tv#14*{tv#14 <- `tv*`}, tu#14*{tu#14 <- `tu*`}) : deftype <: typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 +def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + def $subst_heaptype{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_heaptype(n), tv#15*{tv#15 <- `tv*`}, tu#15*{tu#15 <- `tu*`}) = (!($subst_typevar(REC_typevar(n), tv#16*{tv#16 <- `tv*`}, tu#16*{tu#16 <- `tu*`})) : typeuse <: heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + def $subst_heaptype{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_heaptype(typeidx), tv#17*{tv#17 <- `tv*`}, tu#17*{tu#17 <- `tu*`}) = (!($subst_typevar(_IDX_typevar(typeidx), tv#18*{tv#18 <- `tv*`}, tu#18*{tu#18 <- `tu*`})) : typeuse <: heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 + def $subst_heaptype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_heaptype(rectype, n), tv#19*{tv#19 <- `tv*`}, tu#19*{tu#19 <- `tu*`}) = ($subst_deftype(_DEF_deftype(rectype, n), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`}) : deftype <: heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 + def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}) = ht + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 +def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 + def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#22*{tv#22 <- `tv*`}, tu#22*{tu#22 <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 +def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I32_valtype, tv#23*{tv#23 <- `tv*`}, tu#23*{tu#23 <- `tu*`}) = ($subst_numtype(I32_numtype, tv#24*{tv#24 <- `tv*`}, tu#24*{tu#24 <- `tu*`}) : numtype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I64_valtype, tv#25*{tv#25 <- `tv*`}, tu#25*{tu#25 <- `tu*`}) = ($subst_numtype(I64_numtype, tv#26*{tv#26 <- `tv*`}, tu#26*{tu#26 <- `tu*`}) : numtype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F32_valtype, tv#27*{tv#27 <- `tv*`}, tu#27*{tu#27 <- `tu*`}) = ($subst_numtype(F32_numtype, tv#28*{tv#28 <- `tv*`}, tu#28*{tu#28 <- `tu*`}) : numtype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F64_valtype, tv#29*{tv#29 <- `tv*`}, tu#29*{tu#29 <- `tu*`}) = ($subst_numtype(F64_numtype, tv#30*{tv#30 <- `tv*`}, tu#30*{tu#30 <- `tu*`}) : numtype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(V128_valtype, tv#31*{tv#31 <- `tv*`}, tu#31*{tu#31 <- `tu*`}) = ($subst_vectype(V128_vectype, tv#32*{tv#32 <- `tv*`}, tu#32*{tu#32 <- `tu*`}) : vectype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 + def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(`null?`, heaptype), tv#33*{tv#33 <- `tv*`}, tu#33*{tu#33 <- `tu*`}) = ($subst_reftype(REF_reftype(`null?`, heaptype), tv#34*{tv#34 <- `tv*`}, tu#34*{tu#34 <- `tu*`}) : reftype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv#35*{tv#35 <- `tv*`}, tu#35*{tu#35 <- `tu*`}) = BOT_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_storagetype, tv#36*{tv#36 <- `tv*`}, tu#36*{tu#36 <- `tu*`}) = ($subst_valtype(BOT_valtype, tv#37*{tv#37 <- `tv*`}, tu#37*{tu#37 <- `tu*`}) : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_storagetype(`null?`, heaptype), tv#38*{tv#38 <- `tv*`}, tu#38*{tu#38 <- `tu*`}) = ($subst_valtype(REF_valtype(`null?`, heaptype), tv#39*{tv#39 <- `tv*`}, tu#39*{tu#39 <- `tu*`}) : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(V128_storagetype, tv#40*{tv#40 <- `tv*`}, tu#40*{tu#40 <- `tu*`}) = ($subst_valtype(V128_valtype, tv#41*{tv#41 <- `tv*`}, tu#41*{tu#41 <- `tu*`}) : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F64_storagetype, tv#42*{tv#42 <- `tv*`}, tu#42*{tu#42 <- `tu*`}) = ($subst_valtype(F64_valtype, tv#43*{tv#43 <- `tv*`}, tu#43*{tu#43 <- `tu*`}) : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F32_storagetype, tv#44*{tv#44 <- `tv*`}, tu#44*{tu#44 <- `tu*`}) = ($subst_valtype(F32_valtype, tv#45*{tv#45 <- `tv*`}, tu#45*{tu#45 <- `tu*`}) : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I64_storagetype, tv#46*{tv#46 <- `tv*`}, tu#46*{tu#46 <- `tu*`}) = ($subst_valtype(I64_valtype, tv#47*{tv#47 <- `tv*`}, tu#47*{tu#47 <- `tu*`}) : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I32_storagetype, tv#48*{tv#48 <- `tv*`}, tu#48*{tu#48 <- `tu*`}) = ($subst_valtype(I32_valtype, tv#49*{tv#49 <- `tv*`}, tu#49*{tu#49 <- `tu*`}) : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I8_storagetype, tv#50*{tv#50 <- `tv*`}, tu#50*{tu#50 <- `tu*`}) = ($subst_packtype(I8_packtype, tv#51*{tv#51 <- `tv*`}, tu#51*{tu#51 <- `tu*`}) : packtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I16_storagetype, tv#52*{tv#52 <- `tv*`}, tu#52*{tu#52 <- `tu*`}) = ($subst_packtype(I16_packtype, tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`}) : packtype <: storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 + def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 +def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 + def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft#1*{ft#1 <- `ft*`})), tv#55*{tv#55 <- `tv*`}, tu#55*{tu#55 <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 + def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 + def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 + def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#3*{tu'#3 <- `tu'*`}, ct), tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 +def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 + def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*}(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#3*{tv'#3 <- `tv'*`}, tu'#4*{tu'#4 <- `tu'*`}) = !($minus_recs(tv#60*{tv#60 <- `tv*`}, tu#60*{tu#60 <- `tu*`})) + -- (wf_typevar: `%`(iter#3))*{iter#3 <- !($minus_recs(tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`})).0} + -- (wf_typeuse: `%`(iter#4))*{iter#4 <- !($minus_recs(tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`})).1} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 +def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 + def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation subst_typeuse_is_wf: `%%%%`(typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule subst_typeuse_is_wf_0{typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typeuse, var_0, var_1, ret_val) + -- wf_typeuse: `%`(typeuse) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_typeuse(typeuse, var_0, var_1)) + -- wf_typeuse: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation subst_heaptype_is_wf: `%%%%`(heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule subst_heaptype_is_wf_0{heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype}: + `%%%%`(heaptype, var_0, var_1, ret_val) + -- wf_heaptype: `%`(heaptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_heaptype(heaptype, var_0, var_1)) + -- wf_heaptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation subst_reftype_is_wf: `%%%%`(reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule subst_reftype_is_wf_0{reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype}: + `%%%%`(reftype, var_0, var_1, ret_val) + -- wf_reftype: `%`(reftype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_reftype(reftype, var_0, var_1)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation subst_valtype_is_wf: `%%%%`(valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule subst_valtype_is_wf_0{valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype}: + `%%%%`(valtype, var_0, var_1, ret_val) + -- wf_valtype: `%`(valtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_valtype(valtype, var_0, var_1)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation subst_storagetype_is_wf: `%%%%`(storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule subst_storagetype_is_wf_0{storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype}: + `%%%%`(storagetype, var_0, var_1, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_storagetype(storagetype, var_0, var_1)) + -- wf_storagetype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation subst_fieldtype_is_wf: `%%%%`(fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule subst_fieldtype_is_wf_0{fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype}: + `%%%%`(fieldtype, var_0, var_1, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_fieldtype(fieldtype, var_0, var_1)) + -- wf_fieldtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation subst_comptype_is_wf: `%%%%`(comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule subst_comptype_is_wf_0{comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype}: + `%%%%`(comptype, var_0, var_1, ret_val) + -- wf_comptype: `%`(comptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_comptype(comptype, var_0, var_1)) + -- wf_comptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation subst_subtype_is_wf: `%%%%`(subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule subst_subtype_is_wf_0{subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype}: + `%%%%`(subtype, var_0, var_1, ret_val) + -- wf_subtype: `%`(subtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_subtype(subtype, var_0, var_1)) + -- wf_subtype: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}) = at + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut#2?{mut#2 <- `mut?`}, t), tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_globaltype_is_wf: `%%%%`(globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_globaltype_is_wf_0{globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype}: + `%%%%`(globaltype, var_0, var_1, ret_val) + -- wf_globaltype: `%`(globaltype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_globaltype(globaltype, var_0, var_1)) + -- wf_globaltype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv#67*{tv#67 <- `tv*`}, tu#67*{tu#67 <- `tu*`}) = `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_memtype_is_wf: `%%%%`(memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_memtype_is_wf_0{memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype}: + `%%%%`(memtype, var_0, var_1, ret_val) + -- wf_memtype: `%`(memtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_memtype(memtype, var_0, var_1)) + -- wf_memtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv#68*{tv#68 <- `tv*`}, tu#68*{tu#68 <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_tabletype_is_wf: `%%%%`(tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_tabletype_is_wf_0{tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype}: + `%%%%`(tabletype, var_0, var_1, ret_val) + -- wf_tabletype: `%`(tabletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_tabletype(tabletype, var_0, var_1)) + -- wf_tabletype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv#69*{tv#69 <- `tv*`}, tu#69*{tu#69 <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv#72*{tv#72 <- `tv*`}, tu#72*{tu#72 <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_externtype_is_wf: `%%%%`(externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_externtype_is_wf_0{externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype}: + `%%%%`(externtype, var_0, var_1, ret_val) + -- wf_externtype: `%`(externtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_externtype(externtype, var_0, var_1)) + -- wf_externtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_moduletype_is_wf: `%%%%`(moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_moduletype_is_wf_0{moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype}: + `%%%%`(moduletype, var_0, var_1, ret_val) + -- wf_moduletype: `%`(moduletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_moduletype(moduletype, var_0, var_1)) + -- wf_moduletype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_all_valtype(valtype : valtype, typeuse*) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_all_valtype{t : valtype, n : nat, `tu*` : typeuse*, i : nat}(t, tu#75*{tu#75 <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.34 +def $free_subtype(subtype : subtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:550.1-551.66 + def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final#2?{final#2 <- `final?`}, typeuse#1*{typeuse#1 <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.1-492.34 +def $free_rectype(rectype : rectype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-553.70 + def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype#5*{subtype#5 <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.1-520.34 +def $free_deftype(deftype : deftype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:521.1-521.59 + def $free_deftype{rectype : rectype, n : nat}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:481.6-481.20 +relation free_heaptype_is_wf: `%%`(heaptype : heaptype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:481.6-481.20 + rule free_heaptype_is_wf_0{heaptype : heaptype, ret_val : free}: + `%%`(heaptype, ret_val) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = $free_heaptype(heaptype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:482.6-482.19 +relation free_reftype_is_wf: `%%`(reftype : reftype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:482.6-482.19 + rule free_reftype_is_wf_0{reftype : reftype, ret_val : free}: + `%%`(reftype, ret_val) + -- wf_reftype: `%`(reftype) + -- if (ret_val = $free_reftype(reftype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.6-484.19 +relation free_typeuse_is_wf: `%%`(typeuse : typeuse, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.6-484.19 + rule free_typeuse_is_wf_0{typeuse : typeuse, ret_val : free}: + `%%`(typeuse, ret_val) + -- wf_typeuse: `%`(typeuse) + -- if (ret_val = $free_typeuse(typeuse)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:485.6-485.19 +relation free_valtype_is_wf: `%%`(valtype : valtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:485.6-485.19 + rule free_valtype_is_wf_0{valtype : valtype, ret_val : free}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $free_valtype(valtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 +relation free_resulttype_is_wf: `%%`(resulttype : resulttype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 + rule free_resulttype_is_wf_0{resulttype : resulttype, ret_val : free}: + `%%`(resulttype, ret_val) + -- if (ret_val = $free_resulttype(resulttype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 +relation free_storagetype_is_wf: `%%`(storagetype : storagetype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule free_storagetype_is_wf_0{storagetype : storagetype, ret_val : free}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $free_storagetype(storagetype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 +relation free_fieldtype_is_wf: `%%`(fieldtype : fieldtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 + rule free_fieldtype_is_wf_0{fieldtype : fieldtype, ret_val : free}: + `%%`(fieldtype, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- if (ret_val = $free_fieldtype(fieldtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 +relation free_comptype_is_wf: `%%`(comptype : comptype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 + rule free_comptype_is_wf_0{comptype : comptype, ret_val : free}: + `%%`(comptype, ret_val) + -- wf_comptype: `%`(comptype) + -- if (ret_val = $free_comptype(comptype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 +relation free_subtype_is_wf: `%%`(subtype : subtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 + rule free_subtype_is_wf_0{subtype : subtype, ret_val : free}: + `%%`(subtype, ret_val) + -- wf_subtype: `%`(subtype) + -- if (ret_val = $free_subtype(subtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 +relation free_rectype_is_wf: `%%`(rectype : rectype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 + rule free_rectype_is_wf_0{rectype : rectype, ret_val : free}: + `%%`(rectype, ret_val) + -- if (ret_val = $free_rectype(rectype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 +relation free_deftype_is_wf: `%%`(deftype : deftype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 + rule free_deftype_is_wf_0{deftype : deftype, ret_val : free}: + `%%`(deftype, ret_val) + -- if (ret_val = $free_deftype(deftype)) + -- wf_free: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_tagtype(tagtype : tagtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_tagtype{rectype : rectype, n : n}(_DEF_tagtype(rectype, n)) = $free_deftype(_DEF_deftype(rectype, n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_tagtype_is_wf: `%%`(tagtype : tagtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_tagtype_is_wf_0{tagtype : tagtype, ret_val : free}: + `%%`(tagtype, ret_val) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = $free_tagtype(tagtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_globaltype(globaltype : globaltype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_globaltype{`mut?` : mut?, valtype : valtype}(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, valtype)) = $free_valtype(valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_globaltype_is_wf: `%%`(globaltype : globaltype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_globaltype_is_wf_0{globaltype : globaltype, ret_val : free}: + `%%`(globaltype, ret_val) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = $free_globaltype(globaltype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_memtype(memtype : memtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_memtype_is_wf: `%%`(memtype : memtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_memtype_is_wf_0{memtype : memtype, ret_val : free}: + `%%`(memtype, ret_val) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $free_memtype(memtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_tabletype(tabletype : tabletype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_tabletype_is_wf: `%%`(tabletype : tabletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_tabletype_is_wf_0{tabletype : tabletype, ret_val : free}: + `%%`(tabletype, ret_val) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = $free_tabletype(tabletype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_datatype(datatype : datatype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_datatype_is_wf: `%%`(datatype : datatype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_datatype_is_wf_0{datatype : datatype, ret_val : free}: + `%%`(datatype, ret_val) + -- if (ret_val = $free_datatype(datatype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_elemtype(elemtype : elemtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_elemtype_is_wf: `%%`(elemtype : elemtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_elemtype_is_wf_0{elemtype : elemtype, ret_val : free}: + `%%`(elemtype, ret_val) + -- wf_reftype: `%`(elemtype) + -- if (ret_val = $free_elemtype(elemtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_externtype(externtype : externtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{tagtype : typeuse}(TAG_externtype(tagtype)) = $free_tagtype(tagtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{globaltype : globaltype}(GLOBAL_externtype(globaltype)) = $free_globaltype(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{memtype : memtype}(MEM_externtype(memtype)) = $free_memtype(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_externtype_is_wf: `%%`(externtype : externtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_externtype_is_wf_0{externtype : externtype, ret_val : free}: + `%%`(externtype, ret_val) + -- wf_externtype: `%`(externtype) + -- if (ret_val = $free_externtype(externtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_moduletype(moduletype : moduletype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_moduletype{`externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype(externtype_1#1*{externtype_1#1 <- `externtype_1*`}, externtype_2#1*{externtype_2#1 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_moduletype_is_wf: `%%`(moduletype : moduletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_moduletype_is_wf_0{moduletype : moduletype, ret_val : free}: + `%%`(moduletype, ret_val) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $free_moduletype(moduletype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax num_ = + | mk_num__0(Inn : Inn, var_x : iN) + | mk_num__1(Fnn : Fnn, var_x : fN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_num_: `%%`(numtype, num_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_0{numtype : numtype, Inn : Inn, var_x : iN}: + `%%`(numtype, mk_num__0_num_(Inn, var_x)) + -- wf_uN: `%%`($size((Inn : addrtype <: numtype)), var_x) + -- if (numtype = (Inn : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_1{numtype : numtype, Fnn : Fnn, var_x : fN}: + `%%`(numtype, mk_num__1_num_(Fnn, var_x)) + -- wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), var_x) + -- if (numtype = (Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__0(var_x : num_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{Inn : Inn, var_x : iN}(mk_num__0_num_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__1(var_x : num_) : fN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{Fnn : Fnn, var_x : fN}(mk_num__1_num_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax pack_ = iN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lane_ = + | mk_lane__0(numtype : numtype, var_x : num_) + | mk_lane__1(packtype : packtype, var_x : pack_) + | mk_lane__2(Jnn : Jnn, var_x : iN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lane_: `%%`(lanetype, lane_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_0{lanetype : lanetype, numtype : numtype, var_x : num_}: + `%%`(lanetype, mk_lane__0_lane_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (lanetype = (numtype : numtype <: lanetype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_1{lanetype : lanetype, packtype : packtype, var_x : pack_}: + `%%`(lanetype, mk_lane__1_lane_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (lanetype = (packtype : packtype <: lanetype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_2{lanetype : lanetype, Jnn : Jnn, var_x : iN}: + `%%`(lanetype, mk_lane__2_lane_(Jnn, var_x)) + -- wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), var_x) + -- if (lanetype = (Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__0(var_x : lane_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{numtype : numtype, var_x : num_}(mk_lane__0_lane_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__1(var_x : lane_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{packtype : packtype, var_x : pack_}(mk_lane__1_lane_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__2(var_x : lane_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{Jnn : Jnn, var_x : iN}(mk_lane__2_lane_(Jnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vec_ = vN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lit_ = + | mk_lit__0(numtype : numtype, var_x : num_) + | mk_lit__1(vectype : vectype, var_x : vec_) + | mk_lit__2(packtype : packtype, var_x : pack_) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lit_: `%%`(storagetype, lit_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_0{storagetype : storagetype, numtype : numtype, var_x : num_}: + `%%`(storagetype, mk_lit__0_lit_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (storagetype = (numtype : numtype <: storagetype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_1{storagetype : storagetype, vectype : vectype, var_x : vec_}: + `%%`(storagetype, mk_lit__1_lit_(vectype, var_x)) + -- wf_uN: `%%`($vsize(vectype), var_x) + -- if (storagetype = (vectype : vectype <: storagetype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_2{storagetype : storagetype, packtype : packtype, var_x : pack_}: + `%%`(storagetype, mk_lit__2_lit_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (storagetype = (packtype : packtype <: storagetype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__0(var_x : lit_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{numtype : numtype, var_x : num_}(mk_lit__0_lit_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__1(var_x : lit_) : vec_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{vectype : vectype, var_x : vec_}(mk_lit__1_lit_(vectype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__2(var_x : lit_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{packtype : packtype, var_x : pack_}(mk_lit__2_lit_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sz = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_sz_0(x : sz) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_sz_0{v_num_0 : nat}(`%`_sz(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_sz: `%`(sz) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule sz_case_0{i : nat}: + `%`(`%`_sz(i)) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sx = + | U + | S + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Inn = + | CLZ + | CTZ + | POPCNT + | EXTEND(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_Inn: `%%`(Inn, unop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_0{Inn : Inn}: + `%%`(Inn, CLZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_1{Inn : Inn}: + `%%`(Inn, CTZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_2{Inn : Inn}: + `%%`(Inn, POPCNT_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_3{Inn : Inn, sz : sz}: + `%%`(Inn, EXTEND_unop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn((Inn : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Fnn = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_ = + | mk_unop__0(Inn : Inn, var_x : unop_Inn) + | mk_unop__1(Fnn : Fnn, var_x : unop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_: `%%`(numtype, unop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_0{numtype : numtype, Inn : Inn, var_x : unop_Inn}: + `%%`(numtype, mk_unop__0_unop_(Inn, var_x)) + -- wf_unop_Inn: `%%`(Inn, var_x) + -- if (numtype = (Inn : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_1{numtype : numtype, Fnn : Fnn, var_x : unop_Fnn}: + `%%`(numtype, mk_unop__1_unop_(Fnn, var_x)) + -- if (numtype = (Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__0(var_x : unop_) : unop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{Inn : Inn, var_x : unop_Inn}(mk_unop__0_unop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__1(var_x : unop_) : unop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{Fnn : Fnn, var_x : unop_Fnn}(mk_unop__1_unop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Inn = + | ADD + | SUB + | MUL + | DIV(sx : sx) + | REM(sx : sx) + | AND + | OR + | XOR + | SHL + | SHR(sx : sx) + | ROTL + | ROTR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Fnn = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | COPYSIGN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_ = + | mk_binop__0(Inn : Inn, var_x : binop_Inn) + | mk_binop__1(Fnn : Fnn, var_x : binop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_binop_: `%%`(numtype, binop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_0{numtype : numtype, Inn : Inn, var_x : binop_Inn}: + `%%`(numtype, mk_binop__0_binop_(Inn, var_x)) + -- if (numtype = (Inn : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_1{numtype : numtype, Fnn : Fnn, var_x : binop_Fnn}: + `%%`(numtype, mk_binop__1_binop_(Fnn, var_x)) + -- if (numtype = (Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__0(var_x : binop_) : binop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{Inn : Inn, var_x : binop_Inn}(mk_binop__0_binop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__1(var_x : binop_) : binop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{Fnn : Fnn, var_x : binop_Fnn}(mk_binop__1_binop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_Inn = + | EQZ + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_ = + | mk_testop__0(Inn : Inn, var_x : testop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_testop_: `%%`(numtype, testop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule testop__case_0{numtype : numtype, Inn : Inn, var_x : testop_Inn}: + `%%`(numtype, mk_testop__0_testop_(Inn, var_x)) + -- if (numtype = (Inn : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_testop__0(var_x : testop_) : testop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_testop__0{Inn : Inn, var_x : testop_Inn}(mk_testop__0_testop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Inn = + | EQ + | NE + | LT(sx : sx) + | GT(sx : sx) + | LE(sx : sx) + | GE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Fnn = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_ = + | mk_relop__0(Inn : Inn, var_x : relop_Inn) + | mk_relop__1(Fnn : Fnn, var_x : relop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_relop_: `%%`(numtype, relop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_0{numtype : numtype, Inn : Inn, var_x : relop_Inn}: + `%%`(numtype, mk_relop__0_relop_(Inn, var_x)) + -- if (numtype = (Inn : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_1{numtype : numtype, Fnn : Fnn, var_x : relop_Fnn}: + `%%`(numtype, mk_relop__1_relop_(Fnn, var_x)) + -- if (numtype = (Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__0(var_x : relop_) : relop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{Inn : Inn, var_x : relop_Inn}(mk_relop__0_relop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__1(var_x : relop_) : relop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{Fnn : Fnn, var_x : relop_Fnn}(mk_relop__1_relop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Inn_2 = + | EXTEND(sx : sx) + | WRAP + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Inn_2: `%%%`(Inn, Inn, cvtop__Inn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_0{Inn_1 : Inn, Inn_2 : Inn, sx : sx}: + `%%%`(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)) + -- if ($sizenn1((Inn_1 : addrtype <: numtype)) < $sizenn2((Inn_2 : addrtype <: numtype))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_1{Inn_1 : Inn, Inn_2 : Inn}: + `%%%`(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2) + -- if ($sizenn1((Inn_1 : addrtype <: numtype)) > $sizenn2((Inn_2 : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Fnn_2 = + | CONVERT(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn, Fnn, cvtop__Inn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_0{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx}: + `%%%`(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_1{Inn_1 : Inn, Fnn_2 : Fnn}: + `%%%`(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2) + -- if ($sizenn1((Inn_1 : addrtype <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Inn_2 = + | TRUNC(sx : sx) + | TRUNC_SAT(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn, Inn, cvtop__Fnn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_0{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_1{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_2{Fnn_1 : Fnn, Inn_2 : Inn}: + `%%%`(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2) + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Fnn_2 = + | PROMOTE + | DEMOTE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn, Fnn, cvtop__Fnn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_0{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) < $sizenn2((Fnn_2 : Fnn <: numtype))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_1{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__ = + | mk_cvtop___0(Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2) + | mk_cvtop___1(Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2) + | mk_cvtop___2(Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2) + | mk_cvtop___3(Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__: `%%%`(numtype, numtype, cvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_0{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) + -- wf_cvtop__Inn_1_Inn_2: `%%%`(Inn_1, Inn_2, var_x) + -- if (numtype_1 = (Inn_1 : addrtype <: numtype)) + -- if (numtype_2 = (Inn_2 : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_1{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) + -- wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn_1, Fnn_2, var_x) + -- if (numtype_1 = (Inn_1 : addrtype <: numtype)) + -- if (numtype_2 = (Fnn_2 : Fnn <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_2{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) + -- wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn_1, Inn_2, var_x) + -- if (numtype_1 = (Fnn_1 : Fnn <: numtype)) + -- if (numtype_2 = (Inn_2 : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_3{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) + -- wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn_1, Fnn_2, var_x) + -- if (numtype_1 = (Fnn_1 : Fnn <: numtype)) + -- if (numtype_2 = (Fnn_2 : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___0(var_x : cvtop__) : cvtop__Inn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___1(var_x : cvtop__) : cvtop__Inn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___2(var_x : cvtop__) : cvtop__Fnn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___3(var_x : cvtop__) : cvtop__Fnn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax dim = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_dim_0(x : dim) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_dim_0{v_num_0 : nat}(`%`_dim(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_dim: `%`(dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_case_0{i : nat}: + `%`(`%`_dim(i)) + -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax shape = + | `%X%`(lanetype : lanetype, dim : dim) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_shape: `%`(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule shape_case_0{lanetype : lanetype, dim : dim}: + `%`(`%X%`_shape(lanetype, dim)) + -- wf_dim: `%`(dim) + -- if (($lsize(lanetype) * $proj_dim_0(dim).0) = 128) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $dim(shape : shape) : dim + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation dim_is_wf: `%%`(shape : shape, ret_val : dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_is_wf_0{shape : shape, ret_val : dim}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $dim(shape)) + -- wf_dim: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $lanetype(shape : shape) : lanetype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $lanetype{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $unpackshape(shape : shape) : numtype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $unpackshape{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax ishape = + | `%`(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_ishape_0(x : ishape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_ishape_0{v_shape_0 : shape}(`%`_ishape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_ishape: `%`(ishape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule ishape_case_0{Jnn : Jnn, shape : shape}: + `%`(`%`_ishape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax bshape = + | `%`(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_bshape_0(x : bshape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_bshape_0{v_shape_0 : shape}(`%`_bshape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_bshape: `%`(bshape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule bshape_case_0{shape : shape}: + `%`(`%`_bshape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = I8_lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax zero = + | ZERO + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax half = + | LOW + | HIGH + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvunop = + | NOT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvbinop = + | AND + | ANDNOT + | OR + | XOR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvternop = + | BITSELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvtestop = + | ANY_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Jnn_M = + | ABS + | NEG + | POPCNT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_Jnn_M: `%%%`(Jnn, M, vunop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ABS_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NEG_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_2{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, POPCNT_vunop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Fnn_M = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_ = + | mk_vunop__0(Jnn : Jnn, M : M, var_x : vunop_Jnn_M) + | mk_vunop__1(Fnn : Fnn, M : M, var_x : vunop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_: `%%`(shape, vunop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vunop_Jnn_M}: + `%%`(shape, mk_vunop__0_vunop_(Jnn, M, var_x)) + -- wf_vunop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vunop_Fnn_M}: + `%%`(shape, mk_vunop__1_vunop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__0(var_x : vunop_) : vunop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{Jnn : Jnn, M : M, var_x : vunop_Jnn_M}(mk_vunop__0_vunop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__1(var_x : vunop_) : vunop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{Fnn : Fnn, M : M, var_x : vunop_Fnn_M}(mk_vunop__1_vunop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Jnn_M = + | ADD + | SUB + | ADD_SAT(sx : sx) + | SUB_SAT(sx : sx) + | MUL + | AVGRU + | Q15MULR_SATS + | RELAXED_Q15MULRS + | MIN(sx : sx) + | MAX(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_Jnn_M: `%%%`(Jnn, M, vbinop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ADD_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, SUB_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_4{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, MUL_vbinop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_5{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, AVGRU_vbinop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_6{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, Q15MULR_SATS_vbinop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_7{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_8{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MIN_vbinop_Jnn_M(sx)) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_9{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MAX_vbinop_Jnn_M(sx)) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Fnn_M = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | PMIN + | PMAX + | RELAXED_MIN + | RELAXED_MAX + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_ = + | mk_vbinop__0(Jnn : Jnn, M : M, var_x : vbinop_Jnn_M) + | mk_vbinop__1(Fnn : Fnn, M : M, var_x : vbinop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_: `%%`(shape, vbinop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}: + `%%`(shape, mk_vbinop__0_vbinop_(Jnn, M, var_x)) + -- wf_vbinop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}: + `%%`(shape, mk_vbinop__1_vbinop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__0(var_x : vbinop_) : vbinop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}(mk_vbinop__0_vbinop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__1(var_x : vbinop_) : vbinop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}(mk_vbinop__1_vbinop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Jnn_M = + | RELAXED_LANESELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Fnn_M = + | RELAXED_MADD + | RELAXED_NMADD + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_ = + | mk_vternop__0(Jnn : Jnn, M : M, var_x : vternop_Jnn_M) + | mk_vternop__1(Fnn : Fnn, M : M, var_x : vternop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vternop_: `%%`(shape, vternop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vternop_Jnn_M}: + `%%`(shape, mk_vternop__0_vternop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vternop_Fnn_M}: + `%%`(shape, mk_vternop__1_vternop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__0(var_x : vternop_) : vternop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{Jnn : Jnn, M : M, var_x : vternop_Jnn_M}(mk_vternop__0_vternop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__1(var_x : vternop_) : vternop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{Fnn : Fnn, M : M, var_x : vternop_Fnn_M}(mk_vternop__1_vternop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_Jnn_M = + | ALL_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_ = + | mk_vtestop__0(Jnn : Jnn, M : M, var_x : vtestop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vtestop_: `%%`(shape, vtestop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vtestop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}: + `%%`(shape, mk_vtestop__0_vtestop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vtestop__0(var_x : vtestop_) : vtestop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vtestop__0{Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}(mk_vtestop__0_vtestop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Jnn_M = + | EQ + | NE + | LT(sx : sx) + | GT(sx : sx) + | LE(sx : sx) + | GE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_Jnn_M: `%%%`(Jnn, M, vrelop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, EQ_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NE_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LT_vrelop_Jnn_M(sx)) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GT_vrelop_Jnn_M(sx)) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_4{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LE_vrelop_Jnn_M(sx)) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_5{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GE_vrelop_Jnn_M(sx)) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Fnn_M = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_ = + | mk_vrelop__0(Jnn : Jnn, M : M, var_x : vrelop_Jnn_M) + | mk_vrelop__1(Fnn : Fnn, M : M, var_x : vrelop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_: `%%`(shape, vrelop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}: + `%%`(shape, mk_vrelop__0_vrelop_(Jnn, M, var_x)) + -- wf_vrelop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}: + `%%`(shape, mk_vrelop__1_vrelop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__0(var_x : vrelop_) : vrelop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}(mk_vrelop__0_vrelop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__1(var_x : vrelop_) : vrelop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}(mk_vrelop__1_vrelop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_Jnn_M = + | SHL + | SHR(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_ = + | mk_vshiftop__0(Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vshiftop_: `%%`(ishape, vshiftop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vshiftop__case_0{ishape : ishape, Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}: + `%%`(ishape, mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) + -- if (ishape = `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vshiftop__0(var_x : vshiftop_) : vshiftop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vshiftop__0{Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}(mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_M = + | SWIZZLE + | RELAXED_SWIZZLE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_ = + | mk_vswizzlop__0(M : M, var_x : vswizzlop_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vswizzlop_: `%%`(bshape, vswizzlop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vswizzlop__case_0{bshape : bshape, M : M, var_x : vswizzlop_M}: + `%%`(bshape, mk_vswizzlop__0_vswizzlop_(M, var_x)) + -- if (bshape = `%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vswizzlop__0(var_x : vswizzlop_) : vswizzlop_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vswizzlop__0{M : M, var_x : vswizzlop_M}(mk_vswizzlop__0_vswizzlop_(M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTADD_PAIRWISE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextunop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)) + -- if ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__ = + | mk_vextunop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__: `%%%`(ishape, ishape, vextunop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextunop___0(var_x : vextunop__) : vextunop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTMUL(half : half, sx : sx) + | DOTS + | RELAXED_DOTS + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextbinop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_1{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_2{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__ = + | mk_vextbinop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__: `%%%`(ishape, ishape, vextbinop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextbinop___0(var_x : vextbinop__) : vextbinop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__Jnn_1_M_1_Jnn_2_M_2 = + | RELAXED_DOT_ADDS + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextternop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__ = + | mk_vextternop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__: `%%%`(ishape, ishape, vextternop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextternop___0(var_x : vextternop__) : vextternop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTEND(half : half, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vcvtop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Fnn_2_M_2 = + | CONVERT(`half?` : half?, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn, M, Fnn, M, vcvtop__Jnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Fnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}: + `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(`half?`, sx)) + -- if (((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Jnn_2_M_2 = + | TRUNC_SAT(sx : sx, `zero?` : zero?) + | RELAXED_TRUNC(sx : sx, `zero?` : zero?) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn, M, Jnn, M, vcvtop__Fnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, `zero?`)) + -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, `zero?`)) + -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Fnn_2_M_2 = + | DEMOTE(zero : zero) + | PROMOTELOW + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn, M, Fnn, M, vcvtop__Fnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)) + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2) + -- if ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__ = + | mk_vcvtop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___1(Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2) + | mk_vcvtop___2(Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___3(Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__: `%%%`(shape, shape, vcvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_0{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_1{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_2{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_3{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___0(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___1(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___2(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___3(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax memarg = +{ + ALIGN u32, + OFFSET u64 +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_memarg: `%`(memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg_case_{var_0 : u32, var_1 : u64}: + `%`({ALIGN var_0, OFFSET var_1}) + -- wf_uN: `%%`(32, var_0) + -- wf_uN: `%%`(64, var_1) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_Inn = + | `%_%`(sz : sz, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_Inn: `%%`(Inn, loadop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop_Inn_case_0{Inn : Inn, sz : sz, sx : sx}: + `%%`(Inn, `%_%`_loadop_Inn(sz, sx)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn((Inn : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_ = + | mk_loadop__0(Inn : Inn, var_x : loadop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_: `%%`(numtype, loadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop__case_0{numtype : numtype, Inn : Inn, var_x : loadop_Inn}: + `%%`(numtype, mk_loadop__0_loadop_(Inn, var_x)) + -- wf_loadop_Inn: `%%`(Inn, var_x) + -- if (numtype = (Inn : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_loadop__0(var_x : loadop_) : loadop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_loadop__0{Inn : Inn, var_x : loadop_Inn}(mk_loadop__0_loadop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_Inn = + | `%`(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_Inn: `%%`(Inn, storeop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop_Inn_case_0{Inn : Inn, sz : sz}: + `%%`(Inn, `%`_storeop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn((Inn : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_ = + | mk_storeop__0(Inn : Inn, var_x : storeop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_: `%%`(numtype, storeop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop__case_0{numtype : numtype, Inn : Inn, var_x : storeop_Inn}: + `%%`(numtype, mk_storeop__0_storeop_(Inn, var_x)) + -- wf_storeop_Inn: `%%`(Inn, var_x) + -- if (numtype = (Inn : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_storeop__0(var_x : storeop_) : storeop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_storeop__0{Inn : Inn, var_x : storeop_Inn}(mk_storeop__0_storeop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vloadop_ = + | `SHAPE%X%_%`(sz : sz, M : M, sx : sx) + | SPLAT(sz : sz) + | ZERO(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vloadop_: `%%`(vectype, vloadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_0{vectype : vectype, sz : sz, M : M, sx : sx}: + `%%`(vectype, `SHAPE%X%_%`_vloadop_(sz, M, sx)) + -- wf_sz: `%`(sz) + -- if ((($proj_sz_0(sz).0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_1{vectype : vectype, sz : sz}: + `%%`(vectype, SPLAT_vloadop_(sz)) + -- wf_sz: `%`(sz) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_2{vectype : vectype, sz : sz}: + `%%`(vectype, ZERO_vloadop_(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 >= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax blocktype = + | _RESULT(`valtype?` : valtype?) + | _IDX(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_blocktype: `%`(blocktype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_0{`valtype?` : valtype?}: + `%`(_RESULT_blocktype(`valtype?`)) + -- (wf_valtype: `%`(valtype))?{valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_1{typeidx : typeidx}: + `%`(_IDX_blocktype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax addr = nat + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayaddr = addr + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax catch = + | CATCH(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL(labelidx : labelidx) + | CATCH_ALL_REF(labelidx : labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_catch: `%`(catch) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_0{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_1{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_REF_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_2{labelidx : labelidx}: + `%`(CATCH_ALL_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_3{labelidx : labelidx}: + `%`(CATCH_ALL_REF_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exnaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax dataaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax elemaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globaladdr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax memaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tagaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax externaddr = + | TAG(tagaddr : tagaddr) + | GLOBAL(globaladdr : globaladdr) + | MEM(memaddr : memaddr) + | TABLE(tableaddr : tableaddr) + | FUNC(funcaddr : funcaddr) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exportinst = +{ + NAME name, + ADDR externaddr +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exportinst: `%`(exportinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exportinst_case_{var_0 : name, var_1 : externaddr}: + `%`({NAME var_0, ADDR var_1}) + -- wf_name: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax moduleinst = +{ + TYPES deftype*, + TAGS tagaddr*, + GLOBALS globaladdr*, + MEMS memaddr*, + TABLES tableaddr*, + FUNCS funcaddr*, + DATAS dataaddr*, + ELEMS elemaddr*, + EXPORTS exportinst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_moduleinst: `%`(moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_case_{var_0 : deftype*, var_1 : tagaddr*, var_2 : globaladdr*, var_3 : memaddr*, var_4 : tableaddr*, var_5 : funcaddr*, var_6 : dataaddr*, var_7 : elemaddr*, var_8 : exportinst*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, EXPORTS var_8}) + -- (wf_exportinst: `%`(var_8))*{var_8 <- var_8} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-43.19 +syntax ref = + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 +relation wf_ref: `%`(ref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_0{u31 : u31}: + `%`(`REF.I31_NUM`_ref(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_1: + `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_2{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_ref(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_3{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_ref(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_4{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_ref(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_5{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_ref(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_6{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_ref(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_7{ref : ref}: + `%`(`REF.EXTERN`_ref(ref)) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax val = + | CONST(numtype : numtype, num_) + | VCONST(vectype : vectype, vec_) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_val: `%`(val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_val(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_1{vectype : vectype, var_0 : vec_}: + `%`(VCONST_val(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_2{u31 : u31}: + `%`(`REF.I31_NUM`_val(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_3: + `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_4{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_5{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_6{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_7{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_val(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_8{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_9{ref : ref}: + `%`(`REF.EXTERN`_val(ref)) + -- wf_ref: `%`(ref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax frame = +{ + LOCALS val?*, + MODULE moduleinst +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_frame: `%`(frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_case_{var_0 : val?*, var_1 : moduleinst}: + `%`({LOCALS var_0, MODULE var_1}) + -- (wf_val: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- wf_moduleinst: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.1-139.9 +syntax instr = + | NOP + | UNREACHABLE + | DROP + | SELECT(`valtype*?` : valtype*?) + | BLOCK(blocktype : blocktype, `instr*` : instr*) + | LOOP(blocktype : blocktype, `instr*` : instr*) + | `IF%%ELSE%`(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) + | BR(labelidx : labelidx) + | BR_IF(labelidx : labelidx) + | BR_TABLE(`labelidx*` : labelidx*, labelidx : labelidx) + | BR_ON_NULL(labelidx : labelidx) + | BR_ON_NON_NULL(labelidx : labelidx) + | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | CALL(funcidx : funcidx) + | CALL_REF(typeuse : typeuse) + | CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | RETURN + | RETURN_CALL(funcidx : funcidx) + | RETURN_CALL_REF(typeuse : typeuse) + | RETURN_CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | THROW(tagidx : tagidx) + | THROW_REF + | TRY_TABLE(blocktype : blocktype, list(syntax catch), `instr*` : instr*) + | `LOCAL.GET`(localidx : localidx) + | `LOCAL.SET`(localidx : localidx) + | `LOCAL.TEE`(localidx : localidx) + | `GLOBAL.GET`(globalidx : globalidx) + | `GLOBAL.SET`(globalidx : globalidx) + | `TABLE.GET`(tableidx : tableidx) + | `TABLE.SET`(tableidx : tableidx) + | `TABLE.SIZE`(tableidx : tableidx) + | `TABLE.GROW`(tableidx : tableidx) + | `TABLE.FILL`(tableidx : tableidx) + | `TABLE.COPY`(tableidx : tableidx, tableidx : tableidx) + | `TABLE.INIT`(tableidx : tableidx, elemidx : elemidx) + | `ELEM.DROP`(elemidx : elemidx) + | LOAD(numtype : numtype, loadop_?, memidx : memidx, memarg : memarg) + | STORE(numtype : numtype, storeop_?, memidx : memidx, memarg : memarg) + | VLOAD(vectype : vectype, vloadop_?, memidx : memidx, memarg : memarg) + | VLOAD_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | `MEMORY.SIZE`(memidx : memidx) + | `MEMORY.GROW`(memidx : memidx) + | `MEMORY.FILL`(memidx : memidx) + | `MEMORY.COPY`(memidx : memidx, memidx : memidx) + | `MEMORY.INIT`(memidx : memidx, dataidx : dataidx) + | `DATA.DROP`(dataidx : dataidx) + | `REF.NULL`(heaptype : heaptype) + | `REF.IS_NULL` + | `REF.AS_NON_NULL` + | `REF.EQ` + | `REF.TEST`(reftype : reftype) + | `REF.CAST`(reftype : reftype) + | `REF.FUNC`(funcidx : funcidx) + | `REF.I31` + | `I31.GET`(sx : sx) + | `STRUCT.NEW`(typeidx : typeidx) + | `STRUCT.NEW_DEFAULT`(typeidx : typeidx) + | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx) + | `STRUCT.SET`(typeidx : typeidx, fieldidx : fieldidx) + | `ARRAY.NEW`(typeidx : typeidx) + | `ARRAY.NEW_DEFAULT`(typeidx : typeidx) + | `ARRAY.NEW_FIXED`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.NEW_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `ARRAY.GET`(`sx?` : sx?, typeidx : typeidx) + | `ARRAY.SET`(typeidx : typeidx) + | `ARRAY.LEN` + | `ARRAY.FILL`(typeidx : typeidx) + | `ARRAY.COPY`(typeidx : typeidx, typeidx : typeidx) + | `ARRAY.INIT_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.INIT_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `EXTERN.CONVERT_ANY` + | `ANY.CONVERT_EXTERN` + | CONST(numtype : numtype, num_) + | UNOP(numtype : numtype, unop_) + | BINOP(numtype : numtype, binop_) + | TESTOP(numtype : numtype, testop_) + | RELOP(numtype : numtype, relop_) + | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__) + | VCONST(vectype : vectype, vec_) + | VVUNOP(vectype : vectype, vvunop : vvunop) + | VVBINOP(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP(vectype : vectype, vvternop : vvternop) + | VVTESTOP(vectype : vectype, vvtestop : vvtestop) + | VUNOP(shape : shape, vunop_) + | VBINOP(shape : shape, vbinop_) + | VTERNOP(shape : shape, vternop_) + | VTESTOP(shape : shape, vtestop_) + | VRELOP(shape : shape, vrelop_) + | VSHIFTOP(ishape : ishape, vshiftop_) + | VBITMASK(ishape : ishape) + | VSWIZZLOP(bshape : bshape, vswizzlop_) + | VSHUFFLE(bshape : bshape, `laneidx*` : laneidx*) + | VEXTUNOP(ishape_1 : ishape, ishape_2 : ishape, vextunop__) + | VEXTBINOP(ishape_1 : ishape, ishape_2 : ishape, vextbinop__) + | VEXTTERNOP(ishape_1 : ishape, ishape_2 : ishape, vextternop__) + | VNARROW(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + | VCVTOP(shape_1 : shape, shape_2 : shape, vcvtop__) + | VSPLAT(shape : shape) + | VEXTRACT_LANE(shape : shape, `sx?` : sx?, laneidx : laneidx) + | VREPLACE_LANE(shape : shape, laneidx : laneidx) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) + | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) + | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) + | TRAP +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 +relation wf_instr: `%`(instr) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_0: + `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_1: + `%`(UNREACHABLE_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_2: + `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_3{`valtype*?` : valtype*?}: + `%`(SELECT_instr(`valtype*?`)) + -- (wf_valtype: `%`(valtype))*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_4{blocktype : blocktype, `instr*` : instr*}: + `%`(BLOCK_instr(blocktype, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_5{blocktype : blocktype, `instr*` : instr*}: + `%`(LOOP_instr(blocktype, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_6{blocktype : blocktype, `instr*` : instr*, `instr*_0` : instr*}: + `%`(`IF%%ELSE%`_instr(blocktype, `instr*`, `instr*_0`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(`instr*_0`))*{`instr*_0` <- `instr*_0`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_7{labelidx : labelidx}: + `%`(BR_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_8{labelidx : labelidx}: + `%`(BR_IF_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_9{`labelidx*` : labelidx*, labelidx : labelidx}: + `%`(BR_TABLE_instr(`labelidx*`, labelidx)) + -- (wf_uN: `%%`(32, labelidx))*{labelidx <- `labelidx*`} + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_10{labelidx : labelidx}: + `%`(BR_ON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_11{labelidx : labelidx}: + `%`(BR_ON_NON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_12{labelidx : labelidx, reftype : reftype, reftype_0 : reftype}: + `%`(BR_ON_CAST_instr(labelidx, reftype, reftype_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_13{labelidx : labelidx, reftype : reftype, reftype_0 : reftype}: + `%`(BR_ON_CAST_FAIL_instr(labelidx, reftype, reftype_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_14{funcidx : funcidx}: + `%`(CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_15{typeuse : typeuse}: + `%`(CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_16{tableidx : tableidx, typeuse : typeuse}: + `%`(CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_17: + `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_18{funcidx : funcidx}: + `%`(RETURN_CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_19{typeuse : typeuse}: + `%`(RETURN_CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_20{tableidx : tableidx, typeuse : typeuse}: + `%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_21{tagidx : tagidx}: + `%`(THROW_instr(tagidx)) + -- wf_uN: `%%`(32, tagidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_22: + `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_23{blocktype : blocktype, var_0 : list(syntax catch), `instr*` : instr*}: + `%`(TRY_TABLE_instr(blocktype, var_0, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_24{localidx : localidx}: + `%`(`LOCAL.GET`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_25{localidx : localidx}: + `%`(`LOCAL.SET`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_26{localidx : localidx}: + `%`(`LOCAL.TEE`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_27{globalidx : globalidx}: + `%`(`GLOBAL.GET`_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_28{globalidx : globalidx}: + `%`(`GLOBAL.SET`_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_29{tableidx : tableidx}: + `%`(`TABLE.GET`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_30{tableidx : tableidx}: + `%`(`TABLE.SET`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_31{tableidx : tableidx}: + `%`(`TABLE.SIZE`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_32{tableidx : tableidx}: + `%`(`TABLE.GROW`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_33{tableidx : tableidx}: + `%`(`TABLE.FILL`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_34{tableidx : tableidx, tableidx_0 : tableidx}: + `%`(`TABLE.COPY`_instr(tableidx, tableidx_0)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, tableidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_35{tableidx : tableidx, elemidx : elemidx}: + `%`(`TABLE.INIT`_instr(tableidx, elemidx)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_36{elemidx : elemidx}: + `%`(`ELEM.DROP`_instr(elemidx)) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_37{numtype : numtype, var_0 : loadop_?, memidx : memidx, memarg : memarg}: + `%`(LOAD_instr(numtype, var_0, memidx, memarg)) + -- (wf_loadop_: `%%`(numtype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_38{numtype : numtype, var_0 : storeop_?, memidx : memidx, memarg : memarg}: + `%`(STORE_instr(numtype, var_0, memidx, memarg)) + -- (wf_storeop_: `%%`(numtype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_39{vectype : vectype, var_0 : vloadop_?, memidx : memidx, memarg : memarg}: + `%`(VLOAD_instr(vectype, var_0, memidx, memarg)) + -- (wf_vloadop_: `%%`(vectype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_40{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_41{vectype : vectype, memidx : memidx, memarg : memarg}: + `%`(VSTORE_instr(vectype, memidx, memarg)) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_42{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_43{memidx : memidx}: + `%`(`MEMORY.SIZE`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_44{memidx : memidx}: + `%`(`MEMORY.GROW`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_45{memidx : memidx}: + `%`(`MEMORY.FILL`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_46{memidx : memidx, memidx_0 : memidx}: + `%`(`MEMORY.COPY`_instr(memidx, memidx_0)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, memidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_47{memidx : memidx, dataidx : dataidx}: + `%`(`MEMORY.INIT`_instr(memidx, dataidx)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_48{dataidx : dataidx}: + `%`(`DATA.DROP`_instr(dataidx)) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_49{heaptype : heaptype}: + `%`(`REF.NULL`_instr(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_50: + `%`(`REF.IS_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_51: + `%`(`REF.AS_NON_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_52: + `%`(`REF.EQ`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_53{reftype : reftype}: + `%`(`REF.TEST`_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_54{reftype : reftype}: + `%`(`REF.CAST`_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_55{funcidx : funcidx}: + `%`(`REF.FUNC`_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_56: + `%`(`REF.I31`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_57{sx : sx}: + `%`(`I31.GET`_instr(sx)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_58{typeidx : typeidx}: + `%`(`STRUCT.NEW`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_59{typeidx : typeidx}: + `%`(`STRUCT.NEW_DEFAULT`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_60{`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx}: + `%`(`STRUCT.GET`_instr(`sx?`, typeidx, fieldidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, fieldidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_61{typeidx : typeidx, fieldidx : fieldidx}: + `%`(`STRUCT.SET`_instr(typeidx, fieldidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, fieldidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_62{typeidx : typeidx}: + `%`(`ARRAY.NEW`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_63{typeidx : typeidx}: + `%`(`ARRAY.NEW_DEFAULT`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_64{typeidx : typeidx, u32 : u32}: + `%`(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_65{typeidx : typeidx, dataidx : dataidx}: + `%`(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_66{typeidx : typeidx, elemidx : elemidx}: + `%`(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_67{`sx?` : sx?, typeidx : typeidx}: + `%`(`ARRAY.GET`_instr(`sx?`, typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_68{typeidx : typeidx}: + `%`(`ARRAY.SET`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_69: + `%`(`ARRAY.LEN`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_70{typeidx : typeidx}: + `%`(`ARRAY.FILL`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_71{typeidx : typeidx, typeidx_0 : typeidx}: + `%`(`ARRAY.COPY`_instr(typeidx, typeidx_0)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, typeidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_72{typeidx : typeidx, dataidx : dataidx}: + `%`(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_73{typeidx : typeidx, elemidx : elemidx}: + `%`(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_74: + `%`(`EXTERN.CONVERT_ANY`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_75: + `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_76{numtype : numtype, var_0 : num_}: + `%`(CONST_instr(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_77{numtype : numtype, var_0 : unop_}: + `%`(UNOP_instr(numtype, var_0)) + -- wf_unop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_78{numtype : numtype, var_0 : binop_}: + `%`(BINOP_instr(numtype, var_0)) + -- wf_binop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_79{numtype : numtype, var_0 : testop_}: + `%`(TESTOP_instr(numtype, var_0)) + -- wf_testop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_80{numtype : numtype, var_0 : relop_}: + `%`(RELOP_instr(numtype, var_0)) + -- wf_relop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_81{numtype_1 : numtype, numtype_2 : numtype, var_0 : cvtop__}: + `%`(CVTOP_instr(numtype_1, numtype_2, var_0)) + -- wf_cvtop__: `%%%`(numtype_2, numtype_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_82{vectype : vectype, var_0 : vec_}: + `%`(VCONST_instr(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_83{vectype : vectype, vvunop : vvunop}: + `%`(VVUNOP_instr(vectype, vvunop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_84{vectype : vectype, vvbinop : vvbinop}: + `%`(VVBINOP_instr(vectype, vvbinop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_85{vectype : vectype, vvternop : vvternop}: + `%`(VVTERNOP_instr(vectype, vvternop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_86{vectype : vectype, vvtestop : vvtestop}: + `%`(VVTESTOP_instr(vectype, vvtestop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_87{shape : shape, var_0 : vunop_}: + `%`(VUNOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vunop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_88{shape : shape, var_0 : vbinop_}: + `%`(VBINOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vbinop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_89{shape : shape, var_0 : vternop_}: + `%`(VTERNOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vternop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_90{shape : shape, var_0 : vtestop_}: + `%`(VTESTOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vtestop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_91{shape : shape, var_0 : vrelop_}: + `%`(VRELOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vrelop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_92{ishape : ishape, var_0 : vshiftop_}: + `%`(VSHIFTOP_instr(ishape, var_0)) + -- wf_ishape: `%`(ishape) + -- wf_vshiftop_: `%%`(ishape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_93{ishape : ishape}: + `%`(VBITMASK_instr(ishape)) + -- wf_ishape: `%`(ishape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_94{bshape : bshape, var_0 : vswizzlop_}: + `%`(VSWIZZLOP_instr(bshape, var_0)) + -- wf_bshape: `%`(bshape) + -- wf_vswizzlop_: `%%`(bshape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*}: + `%`(VSHUFFLE_instr(bshape, `laneidx*`)) + -- wf_bshape: `%`(bshape) + -- (wf_uN: `%%`(8, laneidx))*{laneidx <- `laneidx*`} + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim($proj_bshape_0(bshape).0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextunop__}: + `%`(VEXTUNOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextunop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_97{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextbinop__}: + `%`(VEXTBINOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextbinop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_98{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextternop__}: + `%`(VEXTTERNOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextternop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_99{ishape_1 : ishape, ishape_2 : ishape, sx : sx}: + `%`(VNARROW_instr(ishape_1, ishape_2, sx)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- if (($lsize($lanetype($proj_ishape_0(ishape_2).0)) = (2 * $lsize($lanetype($proj_ishape_0(ishape_1).0)))) /\ ((2 * $lsize($lanetype($proj_ishape_0(ishape_1).0))) <= 32)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_100{shape_1 : shape, shape_2 : shape, var_0 : vcvtop__}: + `%`(VCVTOP_instr(shape_1, shape_2, var_0)) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_2, shape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_101{shape : shape}: + `%`(VSPLAT_instr(shape)) + -- wf_shape: `%`(shape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_102{shape : shape, `sx?` : sx?, laneidx : laneidx}: + `%`(VEXTRACT_LANE_instr(shape, `sx?`, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_103{shape : shape, laneidx : laneidx}: + `%`(VREPLACE_LANE_instr(shape, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_104{u31 : u31}: + `%`(`REF.I31_NUM`_instr(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_105: + `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_106{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_instr(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_107{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_instr(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_108{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_instr(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_109{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_instr(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_110{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_instr(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_111{ref : ref}: + `%`(`REF.EXTERN`_instr(ref)) + -- wf_ref: `%`(ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_112{n : n, `instr*` : instr*, `instr*_0` : instr*}: + `%`(`LABEL_%{%}%`_instr(n, `instr*`, `instr*_0`)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(`instr*_0`))*{`instr*_0` <- `instr*_0`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_113{n : n, frame : frame, `instr*` : instr*}: + `%`(`FRAME_%{%}%`_instr(n, frame, `instr*`)) + -- wf_frame: `%`(frame) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_114{n : n, `catch*` : catch*, `instr*` : instr*}: + `%`(`HANDLER_%{%}%`_instr(n, `catch*`, `instr*`)) + -- (wf_catch: `%`(catch))*{catch <- `catch*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_115: + `%`(TRAP_instr) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax expr = instr* + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $memarg0 : memarg + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation memarg0_is_wf: `%`(ret_val : memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg0_is_wf_0{ret_val : memarg}: + `%`(ret_val) + -- if (ret_val = $memarg0) + -- wf_memarg: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $const(consttype : consttype, lit_ : lit_) : instr + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(I32_consttype, mk_lit__0_lit_(I32_numtype, c)) = CONST_instr(I32_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(I64_consttype, mk_lit__0_lit_(I64_numtype, c)) = CONST_instr(I64_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(F32_consttype, mk_lit__0_lit_(F32_numtype, c)) = CONST_instr(F32_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(F64_consttype, mk_lit__0_lit_(F64_numtype, c)) = CONST_instr(F64_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : uN}(V128_consttype, mk_lit__1_lit_(V128_vectype, c)) = VCONST_instr(V128_vectype, c) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation const_is_wf: `%%%`(consttype : consttype, lit_ : lit_, ret_val : instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule const_is_wf_0{consttype : consttype, lit_ : lit_, ret_val : instr}: + `%%%`(consttype, lit_, ret_val) + -- wf_lit_: `%%`((consttype : consttype <: storagetype), lit_) + -- if (ret_val = $const(consttype, lit_)) + -- wf_instr: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_shape(shape : shape) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_shape_is_wf: `%%`(shape : shape, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_shape_is_wf_0{shape : shape, ret_val : free}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $free_shape(shape)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_blocktype(blocktype : blocktype) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype#504?{valtype#504 <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_blocktype{typeidx : uN}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_blocktype_is_wf: `%%`(blocktype : blocktype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_blocktype_is_wf_0{blocktype : blocktype, ret_val : free}: + `%%`(blocktype, ret_val) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $free_blocktype(blocktype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_catch(catch : catch) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : uN, labelidx : uN}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : uN, labelidx : uN}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : uN}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : uN}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_catch_is_wf: `%%`(catch : catch, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_catch_is_wf_0{catch : catch, ret_val : free}: + `%%`(catch, ret_val) + -- wf_catch: `%`(catch) + -- if (ret_val = $free_catch(catch)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.1-584.44 +def $shift_labelidxs(labelidx*) : labelidx* + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.32 + def $shift_labelidxs([]) = [] + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.66 + def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'#1*{labelidx'#1 <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.91 + def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'#2*{labelidx'#2 <- `labelidx'*`}) = [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.1-420.30 +def $free_instr(instr : instr) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-435.26 + def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.34 + def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.27 + def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.86 + def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype#505*{valtype#505 <- `valtype*#1`}?{`valtype*#1` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.92 + def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr#1*{instr#1 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.91 + def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr#2*{instr#2 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-443.79 + def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1#1*{instr_1#1 <- `instr_1*`}, instr_2#1*{instr_2#1 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:445.1-445.56 + def $free_instr{labelidx : uN}(BR_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.59 + def $free_instr{labelidx : uN}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-448.69 + def $free_instr{`labelidx*` : labelidx*, labelidx' : uN}(BR_TABLE_instr(labelidx#1*{labelidx#1 <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.64 + def $free_instr{labelidx : uN}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.68 + def $free_instr{labelidx : uN}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-452.83 + def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-454.83 + def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-456.55 + def $free_instr{funcidx : uN}(CALL_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.59 + def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-459.53 + def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.29 + def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 + def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.66 + def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-464.53 + def $free_instr{tableidx : uN, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:466.1-466.53 + def $free_instr{tagidx : uN}(THROW_instr(tagidx)) = $free_tagidx(tagidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.32 + def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-469.99 + def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch#1*{catch#1 <- `catch*`}), instr#3*{instr#3 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.63 + def $free_instr{numtype : numtype, numlit : num_}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.60 + def $free_instr{numtype : numtype, unop : unop_}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.62 + def $free_instr{numtype : numtype, binop : binop_}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.64 + def $free_instr{numtype : numtype, testop : testop_}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.62 + def $free_instr{numtype : numtype, relop : relop_}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-477.55 + def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.64 + def $free_instr{vectype : vectype, veclit : uN}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 + def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-481.66 + def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:482.1-482.68 + def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.68 + def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.56 + def $free_instr{shape : shape, vunop : vunop_}(VUNOP_instr(shape, vunop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.58 + def $free_instr{shape : shape, vbinop : vbinop_}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.60 + def $free_instr{shape : shape, vternop : vternop_}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-487.60 + def $free_instr{shape : shape, vtestop : vtestop_}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:488.1-488.58 + def $free_instr{shape : shape, vrelop : vrelop_}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.64 + def $free_instr{ishape : ishape, vshiftop : vshiftop_}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape($proj_ishape_0(ishape).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.55 + def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape($proj_ishape_0(ishape).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.66 + def $free_instr{bshape : bshape, vswizzlop : vswizzlop_}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape($proj_bshape_0(bshape).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.64 + def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx#1*{laneidx#1 <- `laneidx*`})) = $free_shape($proj_bshape_0(bshape).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-494.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-496.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-498.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-500.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-502.47 + def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:503.1-503.51 + def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.70 + def $free_instr{shape : shape, `sx?` : sx?, laneidx : uN}(VEXTRACT_LANE_instr(shape, sx#45969?{sx#45969 <- `sx?`}, laneidx)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:505.1-505.66 + def $free_instr{shape : shape, laneidx : uN}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.62 + def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.34 + def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.38 + def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.29 + def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 + def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 + def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.59 + def $free_instr{funcidx : uN}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.30 + def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.33 + def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.61 + def $free_instr{typeidx : uN}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.69 + def $free_instr{typeidx : uN}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.69 + def $free_instr{`sx?` : sx?, typeidx : uN, u32 : uN}(`STRUCT.GET`_instr(sx#45970?{sx#45970 <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.65 + def $free_instr{typeidx : uN, u32 : uN}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.60 + def $free_instr{typeidx : uN}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.68 + def $free_instr{typeidx : uN}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.70 + def $free_instr{typeidx : uN, u32 : uN}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 + def $free_instr{typeidx : uN, dataidx : uN}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:528.1-529.51 + def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.64 + def $free_instr{`sx?` : sx?, typeidx : uN}(`ARRAY.GET`_instr(sx#45971?{sx#45971 <- `sx?`}, typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.60 + def $free_instr{typeidx : uN}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.32 + def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.61 + def $free_instr{typeidx : uN}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.55 + def $free_instr{typeidx_1 : uN, typeidx_2 : uN}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-537.51 + def $free_instr{typeidx : uN, dataidx : uN}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:538.1-539.51 + def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.41 + def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 + def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 + def $free_instr{localidx : uN}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 + def $free_instr{localidx : uN}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.63 + def $free_instr{localidx : uN}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.67 + def $free_instr{globalidx : uN}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.67 + def $free_instr{globalidx : uN}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:551.1-551.63 + def $free_instr{tableidx : uN}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.63 + def $free_instr{tableidx : uN}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.64 + def $free_instr{tableidx : uN}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-554.64 + def $free_instr{tableidx : uN}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.64 + def $free_instr{tableidx : uN}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.59 + def $free_instr{tableidx_1 : uN, tableidx_2 : uN}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.53 + def $free_instr{tableidx : uN, elemidx : uN}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-560.60 + def $free_instr{elemidx : uN}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-563.49 + def $free_instr{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg}(LOAD_instr(numtype, loadop#1?{loadop#1 <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-565.49 + def $free_instr{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg}(STORE_instr(numtype, storeop#1?{storeop#1 <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-567.49 + def $free_instr{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg}(VLOAD_instr(vectype, vloadop#1?{vloadop#1 <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:568.1-569.49 + def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:570.1-571.49 + def $free_instr{vectype : vectype, memidx : uN, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-573.49 + def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.59 + def $free_instr{memidx : uN}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.59 + def $free_instr{memidx : uN}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:576.1-576.59 + def $free_instr{memidx : uN}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.51 + def $free_instr{memidx_1 : uN, memidx_2 : uN}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-580.49 + def $free_instr{memidx : uN, dataidx : uN}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:581.1-581.60 + def $free_instr{dataidx : uN}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.1-421.31 +def $free_block(instr*) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:589.1-590.47 + def $free_block{`instr*` : instr*}(instr#4*{instr#4 <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + -- let{free : free} free = $free_list($free_instr(instr#5)*{instr#5 <- `instr*`}) + -- wf_free: `%`($free_list($free_instr(instr#6)*{instr#6 <- `instr*`})) + -- (wf_free: `%`($free_instr(instr#7)))*{instr#7 <- `instr*`} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation free_instr_is_wf: `%%`(instr : instr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule free_instr_is_wf_0{instr : instr, ret_val : free}: + `%%`(instr, ret_val) + -- wf_instr: `%`(instr) + -- if (ret_val = $free_instr(instr)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation free_block_is_wf: `%%`(var_0 : instr*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule free_block_is_wf_0{var_0 : instr*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_block(var_0)) + -- wf_free: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_expr(expr : expr) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_expr{`instr*` : instr*}(instr#8*{instr#8 <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_expr_is_wf: `%%`(expr : expr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_expr_is_wf_0{expr : expr, ret_val : free}: + `%%`(expr, ret_val) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- if (ret_val = $free_expr(expr)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elemmode = + | ACTIVE(tableidx : tableidx, expr : expr) + | PASSIVE + | DECLARE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elemmode: `%`(elemmode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_0{tableidx : tableidx, expr : expr}: + `%`(ACTIVE_elemmode(tableidx, expr)) + -- wf_uN: `%%`(32, tableidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_1: + `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_2: + `%`(DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax datamode = + | ACTIVE(memidx : memidx, expr : expr) + | PASSIVE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_datamode: `%`(datamode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_0{memidx : memidx, expr : expr}: + `%`(ACTIVE_datamode(memidx, expr)) + -- wf_uN: `%%`(32, memidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_1: + `%`(PASSIVE_datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax type = + | TYPE(rectype : rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax tag = + | TAG(tagtype : tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_tag: `%`(tag) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule tag_case_0{tagtype : tagtype}: + `%`(TAG_tag(tagtype)) + -- wf_typeuse: `%`(tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax global = + | GLOBAL(globaltype : globaltype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_global: `%`(global) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule global_case_0{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax mem = + | MEMORY(memtype : memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_mem: `%`(mem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule mem_case_0{memtype : memtype}: + `%`(MEMORY_mem(memtype)) + -- wf_memtype: `%`(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax table = + | TABLE(tabletype : tabletype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_table: `%`(table) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule table_case_0{tabletype : tabletype, expr : expr}: + `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax data = + | DATA(`byte*` : byte*, datamode : datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_data: `%`(data) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule data_case_0{`byte*` : byte*, datamode : datamode}: + `%`(DATA_data(`byte*`, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax local = + | LOCAL(valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_local: `%`(local) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule local_case_0{valtype : valtype}: + `%`(LOCAL_local(valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax func = + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_func: `%`(func) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule func_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_func(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elem = + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elem: `%`(elem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_elem(reftype, `expr*`, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax start = + | START(funcidx : funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_start: `%`(start) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule start_case_0{funcidx : funcidx}: + `%`(START_start(funcidx)) + -- wf_uN: `%%`(32, funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax import = + | IMPORT(name : name, name : name, externtype : externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_import: `%`(import) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule import_case_0{name : name, name_0 : name, externtype : externtype}: + `%`(IMPORT_import(name, name_0, externtype)) + -- wf_name: `%`(name) + -- wf_name: `%`(name_0) + -- wf_externtype: `%`(externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax export = + | EXPORT(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_export: `%`(export) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule export_case_0{name : name, externidx : externidx}: + `%`(EXPORT_export(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax module = + | MODULE(list(syntax type), list(syntax import), list(syntax tag), list(syntax global), list(syntax mem), list(syntax table), list(syntax func), list(syntax data), list(syntax elem), `start?` : start?, list(syntax export)) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_module: `%`(module) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule module_case_0{var_0 : list(syntax type), var_1 : list(syntax import), var_2 : list(syntax tag), var_3 : list(syntax global), var_4 : list(syntax mem), var_5 : list(syntax table), var_6 : list(syntax func), var_7 : list(syntax data), var_8 : list(syntax elem), `start?` : start?, var_9 : list(syntax export)}: + `%`(MODULE_module(var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, `start?`, var_9)) + -- (wf_start: `%`(start))?{start <- `start?`} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_type(type : type) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_type_is_wf: `%%`(type : type, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_type_is_wf_0{type : type, ret_val : free}: + `%%`(type, ret_val) + -- if (ret_val = $free_type(type)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_tag(tag : tag) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_tag_is_wf: `%%`(tag : tag, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_tag_is_wf_0{tag : tag, ret_val : free}: + `%%`(tag, ret_val) + -- wf_tag: `%`(tag) + -- if (ret_val = $free_tag(tag)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_global(global : global) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_global_is_wf: `%%`(global : global, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_global_is_wf_0{global : global, ret_val : free}: + `%%`(global, ret_val) + -- wf_global: `%`(global) + -- if (ret_val = $free_global(global)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_mem(mem : mem) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_mem_is_wf: `%%`(mem : mem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_mem_is_wf_0{mem : mem, ret_val : free}: + `%%`(mem, ret_val) + -- wf_mem: `%`(mem) + -- if (ret_val = $free_mem(mem)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_table(table : table) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_table_is_wf: `%%`(table : table, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_table_is_wf_0{table : table, ret_val : free}: + `%%`(table, ret_val) + -- wf_table: `%`(table) + -- if (ret_val = $free_table(table)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_local(local : local) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_local_is_wf: `%%`(local : local, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_local_is_wf_0{local : local, ret_val : free}: + `%%`(local, ret_val) + -- wf_local: `%`(local) + -- if (ret_val = $free_local(local)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_func(func : func) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local#1*{local#1 <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_func_is_wf: `%%`(func : func, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_func_is_wf_0{func : func, ret_val : free}: + `%%`(func, ret_val) + -- wf_func: `%`(func) + -- if (ret_val = $free_func(func)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_datamode(datamode : datamode) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_datamode_is_wf: `%%`(datamode : datamode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_datamode_is_wf_0{datamode : datamode, ret_val : free}: + `%%`(datamode, ret_val) + -- wf_datamode: `%`(datamode) + -- if (ret_val = $free_datamode(datamode)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_data(data : data) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte#1*{byte#1 <- `byte*`}, datamode)) = $free_datamode(datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_data_is_wf: `%%`(data : data, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_data_is_wf_0{data : data, ret_val : free}: + `%%`(data, ret_val) + -- wf_data: `%`(data) + -- if (ret_val = $free_data(data)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_elemmode(elemmode : elemmode) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elemmode_is_wf: `%%`(elemmode : elemmode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elemmode_is_wf_0{elemmode : elemmode, ret_val : free}: + `%%`(elemmode, ret_val) + -- wf_elemmode: `%`(elemmode) + -- if (ret_val = $free_elemmode(elemmode)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_elem(elem : elem) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr#358*{expr#358 <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elem_is_wf: `%%`(elem : elem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elem_is_wf_0{elem : elem, ret_val : free}: + `%%`(elem, ret_val) + -- wf_elem: `%`(elem) + -- if (ret_val = $free_elem(elem)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_start(start : start) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_start_is_wf: `%%`(start : start, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_start_is_wf_0{start : start, ret_val : free}: + `%%`(start, ret_val) + -- wf_start: `%`(start) + -- if (ret_val = $free_start(start)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_import(import : import) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_import_is_wf: `%%`(import : import, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_import_is_wf_0{import : import, ret_val : free}: + `%%`(import, ret_val) + -- wf_import: `%`(import) + -- if (ret_val = $free_import(import)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_export(export : export) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_export_is_wf: `%%`(export : export, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_export_is_wf_0{export : export, ret_val : free}: + `%%`(export, ret_val) + -- wf_export: `%`(export) + -- if (ret_val = $free_export(export)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_module(module : module) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_list(type#1*{type#1 <- `type*`}), `%`_list(import#1*{import#1 <- `import*`}), `%`_list(tag#1*{tag#1 <- `tag*`}), `%`_list(global#1*{global#1 <- `global*`}), `%`_list(mem#1*{mem#1 <- `mem*`}), `%`_list(table#1*{table#1 <- `table*`}), `%`_list(func#1*{func#1 <- `func*`}), `%`_list(data#1*{data#1 <- `data*`}), `%`_list(elem#1*{elem#1 <- `elem*`}), start#1?{start#1 <- `start?`}, `%`_list(export#1*{export#1 <- `export*`}))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_module_is_wf: `%%`(module : module, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_module_is_wf_0{module : module, ret_val : free}: + `%%`(module, ret_val) + -- wf_module: `%`(module) + -- if (ret_val = $free_module(module)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $funcidx_module(module : module) : funcidx* + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $funcidx_module{module : module}(module) = $free_module(module).FUNCS_free + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $dataidx_funcs(func*) : dataidx* + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $dataidx_funcs{`func*` : func*}(func#2*{func#2 <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).DATAS_free + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax init = + | SET + | UNSET + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax localtype = + | `%%`(init : init, valtype : valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_localtype: `%`(localtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule localtype_case_0{init : init, valtype : valtype}: + `%`(`%%`_localtype(init, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax instrtype = + | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : resulttype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_instrtype: `%`(instrtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule instrtype_case_0{resulttype : resulttype, `localidx*` : localidx*, resulttype_0 : resulttype}: + `%`(`%->_%%`_instrtype(resulttype, `localidx*`, resulttype_0)) + -- (wf_uN: `%%`(32, localidx))*{localidx <- `localidx*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax context = +{ + TYPES deftype*, + TAGS tagtype*, + GLOBALS globaltype*, + MEMS memtype*, + TABLES tabletype*, + FUNCS deftype*, + DATAS datatype*, + ELEMS elemtype*, + LOCALS localtype*, + LABELS resulttype*, + RETURN resulttype?, + REFS funcidx*, + RECS subtype* +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_context: `%`(context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule context_case_{var_0 : deftype*, var_1 : tagtype*, var_2 : globaltype*, var_3 : memtype*, var_4 : tabletype*, var_5 : deftype*, var_6 : datatype*, var_7 : elemtype*, var_8 : localtype*, var_9 : resulttype*, var_10 : resulttype?, var_11 : funcidx*, var_12 : subtype*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, RETURN var_10, REFS var_11, RECS var_12}) + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- (wf_globaltype: `%`(var_2))*{var_2 <- var_2} + -- (wf_memtype: `%`(var_3))*{var_3 <- var_3} + -- (wf_tabletype: `%`(var_4))*{var_4 <- var_4} + -- (wf_reftype: `%`(var_7))*{var_7 <- var_7} + -- (wf_localtype: `%`(var_8))*{var_8 <- var_8} + -- (wf_uN: `%%`(32, var_11))*{var_11 <- var_11} + -- (wf_subtype: `%`(var_12))*{var_12 <- var_12} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.158 +def $with_locals(context : context, localidx*, localtype*) : context? + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.34 + def $with_locals{C : context}(C, [], []) = ?(C) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:52.1-52.90 + def $with_locals{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x#1*{x#1 <- `x*`}, [lct_1] ++ lct#1*{lct#1 <- `lct*`}) = $with_locals(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) + def $with_locals{x0 : context, x1 : localidx*, x2 : localtype*}(x0, x1, x2) = ?() + -- otherwise +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation with_locals_is_wf: `%%%%`(context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule with_locals_is_wf_0{context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context}: + `%%%%`(context, var_0, var_1, ret_val) + -- wf_context: `%`(context) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_localtype: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($with_locals(context, var_0, var_1))) + -- wf_context: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 +def $clos_deftypes(deftype*) : deftype* + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 + def $clos_deftypes([]) = [] + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:72.1-72.101 + def $clos_deftypes{`dt*` : deftype*, dt_n : deftype}(dt#2*{dt#2 <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] + -- let{`dt'*` : deftype*} dt'#1*{dt'#1 <- `dt'*`} = $clos_deftypes(dt#3*{dt#3 <- `dt*`}) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_valtype(context : context, valtype : valtype) : valtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_valtype{C : context, t : valtype}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- let{`dt*` : deftype*} dt#4*{dt#4 <- `dt*`} = $clos_deftypes(C.TYPES_context) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_valtype_is_wf: `%%%`(context : context, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_valtype_is_wf_0{context : context, valtype : valtype, ret_val : valtype}: + `%%%`(context, valtype, ret_val) + -- wf_context: `%`(context) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $clos_valtype(context, valtype)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_deftype(context : context, deftype : deftype) : deftype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_deftype{C : context, dt : deftype}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) + -- let{`dt'*` : deftype*} dt'#2*{dt'#2 <- `dt'*`} = $clos_deftypes(C.TYPES_context) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_tagtype(context : context, tagtype : tagtype) : tagtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_tagtype{C : context, jt : typeuse}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- let{`dt*` : deftype*} dt#5*{dt#5 <- `dt*`} = $clos_deftypes(C.TYPES_context) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_externtype(context : context, externtype : externtype) : externtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_externtype{C : context, xt : externtype}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- let{`dt*` : deftype*} dt#6*{dt#6 <- `dt*`} = $clos_deftypes(C.TYPES_context) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_externtype_is_wf: `%%%`(context : context, externtype : externtype, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_externtype_is_wf_0{context : context, externtype : externtype, ret_val : externtype}: + `%%%`(context, externtype, ret_val) + -- wf_context: `%`(context) + -- wf_externtype: `%`(externtype) + -- if (ret_val = $clos_externtype(context, externtype)) + -- wf_externtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_moduletype(context : context, moduletype : moduletype) : moduletype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_moduletype{C : context, mmt : moduletype}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- let{`dt*` : deftype*} dt#7*{dt#7 <- `dt*`} = $clos_deftypes(C.TYPES_context) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_moduletype_is_wf: `%%%`(context : context, moduletype : moduletype, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_moduletype_is_wf_0{context : context, moduletype : moduletype, ret_val : moduletype}: + `%%%`(context, moduletype, ret_val) + -- wf_context: `%`(context) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $clos_moduletype(context, moduletype)) + -- wf_moduletype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Numtype_ok: `%|-%:OK`(context, numtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, numtype : numtype}: + `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Vectype_ok: `%|-%:OK`(context, vectype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, vectype : vectype}: + `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypenat = + | OK(nat) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Packtype_ok: `%|-%:OK`(context, packtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, packtype : packtype}: + `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, packtype : packtype}: + `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, numtype : numtype}: + `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand: `%~~%`(deftype, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: + `%~~%`(deftype, comptype) + -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- wf_subtype: `%`($unrolldt(deftype)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, vectype : vectype}: + `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $before(typeuse : typeuse, nat : nat) : bool + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{j : nat, i : nat}(REC_typeuse(j), i) = (j < i) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{typeuse : typeuse, i : nat}(typeuse, i) = true + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $unrollht_(context : context, heaptype : heaptype) : subtype + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht_{rectype : rectype, n : n, C : context}(C, _DEF_heaptype(rectype, n)) = $unrolldt(_DEF_deftype(rectype, n)) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht_{C : context, typeidx : uN}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[$proj_uN_0(typeidx).0]) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht_{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation unrollht__is_wf: `%%%`(context : context, heaptype : heaptype, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule unrollht__is_wf_0{context : context, heaptype : heaptype, ret_val : subtype}: + `%%%`(context, heaptype, ret_val) + -- wf_context: `%`(context) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = $unrollht_(context, heaptype)) + -- wf_subtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 +relation Heaptype_ok: `%|-%:OK`(context, heaptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 + rule abs{C : context, absheaptype : absheaptype}: + `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 + rule typeuse{C : context, typeuse : typeuse}: + `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 +relation Reftype_ok: `%|-%:OK`(context, reftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:30.1-32.37 + rule _{C : context, heaptype : heaptype}: + `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- Heaptype_ok: `%|-%:OK`(C, heaptype) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 +relation Valtype_ok: `%|-%:OK`(context, valtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:34.1-36.35 + rule num{C : context, numtype : numtype}: + `%|-%:OK`(C, (numtype : numtype <: valtype)) + -- Numtype_ok: `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 + rule vec{C : context, vectype : vectype}: + `%|-%:OK`(C, (vectype : vectype <: valtype)) + -- Vectype_ok: `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 + rule ref{C : context, reftype : reftype}: + `%|-%:OK`(C, (reftype : reftype <: valtype)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 +relation Typeuse_ok: `%|-%:OK`(context, typeuse) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:106.1-108.30 + rule typeidx{C : context, typeidx : typeidx, dt : deftype}: + `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 + rule rec{C : context, i : n, st : subtype}: + `%|-%:OK`(C, REC_typeuse(i)) + -- if (C.RECS_context[i] = st) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 + rule deftype{C : context, deftype : deftype}: + `%|-%:OK`(C, (deftype : deftype <: typeuse)) + -- Deftype_ok: `%|-%:OK`(C, deftype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 +relation Resulttype_ok: `%|-%:OK`(context, resulttype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:60.1-62.32 + rule _{C : context, `t*` : valtype*}: + `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 +relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:130.1-132.43 + rule _{C : context, storagetype : storagetype}: + `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- Storagetype_ok: `%|-%:OK`(C, storagetype) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 +relation Storagetype_ok: `%|-%:OK`(context, storagetype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:122.1-124.35 + rule val{C : context, valtype : valtype}: + `%|-%:OK`(C, (valtype : valtype <: storagetype)) + -- Valtype_ok: `%|-%:OK`(C, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 + rule pack{C : context, packtype : packtype}: + `%|-%:OK`(C, (packtype : packtype <: storagetype)) + -- Packtype_ok: `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 +relation Comptype_ok: `%|-%:OK`(context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:135.1-137.42 + rule struct{C : context, `fieldtype*` : fieldtype*}: + `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 + rule array{C : context, fieldtype : fieldtype}: + `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 + rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 +relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:167.1-176.49 + rule _{C : context, `typeuse*` : typeuse*, comptype : comptype, i : nat, `comptype'*` : comptype*, `typeuse'**` : typeuse**}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype), OK_oktypenat(i)) + -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) + -- (Typeuse_ok: `%|-%:OK`(C, typeuse))*{typeuse <- `typeuse*`} + -- (if $before(typeuse, i))*{typeuse <- `typeuse*`} + -- (if ($unrollht_(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- wf_context: `%`(C) + -- (wf_subtype: `%`($unrollht_(C, (typeuse : typeuse <: heaptype))))*{typeuse <- `typeuse*`} + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 +relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 + rule empty{C : context, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypenat(i)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypenat(i)) + -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) + -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypenat((i + 1))) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 +relation Deftype_ok: `%|-%:OK`(context, deftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:197.1-201.14 + rule _{C : context, rectype : rectype, i : n, n : n, `subtype*` : subtype*}: + `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) + -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) + -- if (i < n) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}}) + -- if (n = |`subtype*`|) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 +relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:181.1-183.41 + rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: + `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 + rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: + `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 + rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: + `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 +relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) + -- wf_context: `%`(C) + -- wf_subtype: `%`($unrolldt(deftype_1)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 +relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 + rule refl{C : context, heaptype : heaptype}: + `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 + rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: + `%|-%<:%`(C, heaptype_1, heaptype_2) + -- Heaptype_ok: `%|-%:OK`(C, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 + rule `eq-any`{C : context}: + `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 + rule `i31-eq`{C : context}: + `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 + rule `struct-eq`{C : context}: + `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 + rule `array-eq`{C : context}: + `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 + rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) + -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 + rule array{C : context, deftype : deftype, fieldtype : fieldtype}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) + -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 + rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) + -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 + rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 + rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: + `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype), heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 + rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: + `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 + rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 + rule `rec-array`{C : context, i : n, `final?` : final?, fieldtype : fieldtype}: + `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 + rule `rec-func`{C : context, i : n, `final?` : final?, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 + rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: + `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 + rule none{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NONE_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:86.1-89.25 + rule nofunc{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:91.1-94.25 + rule noexn{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:96.1-99.25 + rule noextern{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 + rule bot{C : context, heaptype : heaptype}: + `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 +relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:105.1-107.37 + rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 + rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 +relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:114.1-116.46 + rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: + `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) + -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 + rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: + `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) + -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 + rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: + `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 + rule bot{C : context, valtype : valtype}: + `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 +relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-137.37 + rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 +relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:162.1-164.46 + rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 + rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: + `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) + -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 +relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:171.1-173.40 + rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 + rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Localtype_ok: `%|-%:OK`(context, localtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, init : init, t : valtype}: + `%|-%:OK`(C, `%%`_localtype(init, t)) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Instrtype_ok: `%|-%:OK`(context, instrtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand_use: `%~~_%%`(typeuse, context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule deftype{deftype : deftype, C : context, comptype : comptype}: + `%~~_%%`((deftype : deftype <: typeuse), C, comptype) + -- Expand: `%~~%`(deftype, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: + `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidx = + | OK(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation wf_oktypeidx: `%`(oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule oktypeidx_case_0{typeidx : typeidx}: + `%`(OK_oktypeidx(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `comptype'*` : comptype*, `yy**` : typeuse**}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- if (|x*{x <- `x*`}| <= 1) + -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} + -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- wf_context: `%`(C) + -- (wf_subtype: `%`($unrolldt(C.TYPES_context[$proj_uN_0(x).0])))*{x <- `x*`} + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.126 +relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 + rule empty{C : context, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Limits_ok: `%|-%:%`(context, limits, nat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, n : n, `m?` : m?, k : nat}: + `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- if (n <= k) + -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tagtype_ok: `%|-%:OK`(context, tagtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, typeuse) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Globaltype_ok: `%|-%:OK`(context, globaltype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, t : valtype}: + `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Memtype_ok: `%|-%:OK`(context, memtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits}: + `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tabletype_ok: `%|-%:OK`(context, tabletype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: + `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Externtype_ok: `%|-%:OK`(context, externtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule tag{C : context, tagtype : tagtype}: + `%|-%:OK`(C, TAG_externtype(tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule global{C : context, globaltype : globaltype}: + `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mem{C : context, memtype : memtype}: + `%|-%:OK`(C, MEM_externtype(memtype)) + -- Memtype_ok: `%|-%:OK`(C, memtype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule table{C : context, tabletype : tabletype}: + `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: + `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- (wf_uN: `%%`(32, iter))*{iter <- $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Limits_sub: `%|-%<:%`(context, limits, limits) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + -- if (n_1 >= n_2) + -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule eps{C : context, n_1 : n, n_2 : n}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) + -- if (n_1 >= n_2) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: + `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: + `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: + `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: + `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: + `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: + `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) + -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule valtype{C : context, `valtype?` : valtype?}: + `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Catch_ok: `%|-%:OK`(context, catch) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_catch(x, l)) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all_ref{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +def $default_(valtype : valtype) : val?? + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(I32_valtype) = ?(?(CONST_val((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, `%`_uN(0))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(I64_valtype) = ?(?(CONST_val((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, `%`_uN(0))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(F32_valtype) = ?(?(CONST_val((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $fzero($size((F32_Fnn : Fnn <: numtype))))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(F64_valtype) = ?(?(CONST_val((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $fzero($size((F64_Fnn : Fnn <: numtype))))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(V128_valtype) = ?(?(VCONST_val(V128_vectype, `%`_vec_(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) + def $default_{x0 : valtype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation default__is_wf: `%%`(valtype : valtype, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule default__is_wf_0{valtype : valtype, ret_val : val?}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if (ret_val = !($default_(valtype))) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Defaultable: `|-%DEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%DEFAULTABLE`(t) + -- if (!($default_(t)) =/= ?()) + -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{n : n, m : m, at : addrtype, N : N}: + `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) + -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- if (m < (2 ^ $size((at : addrtype <: numtype)))) + -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +def $is_packtype(storagetype : storagetype) : bool + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + def $is_packtype{zt : storagetype}(zt) = (zt =/= ($unpack(zt) : valtype <: storagetype)) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 +relation Instr_ok: `%|-%:%`(context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 + rule nop{C : context}: + `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 + rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 + rule drop{C : context, t : valtype}: + `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 + rule `select-expl`{C : context, t : valtype}: + `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 + rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Valtype_sub: `%|-%<:%`(C, t, t') + -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 + rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 + rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 + rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 + rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 + rule br_if{C : context, l : labelidx, `t*` : valtype*}: + `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 + rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 + rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 + rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`($diffrt(rt_1, rt_2)) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 + rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 + rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 + rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: + `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 + rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 + rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 + rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 + rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 + rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 + rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 + rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 + rule `ref.null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.NULL`_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 + rule `ref.func`{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + -- if (x <- C.REFS_context) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.FUNC`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 + rule `ref.i31`{C : context}: + `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.I31`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 + rule `ref.is_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 + rule `ref.as_non_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 + rule `ref.eq`{C : context}: + `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 + rule `ref.test`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.TEST`_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 + rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.CAST`_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 + rule `i31.get`{C : context, sx : sx}: + `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 + rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 + rule `struct.new_default`{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} + -- wf_context: `%`(C) + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} + -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 + rule `struct.get`{C : context, `sx?` : sx?, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: + `%|-%:%`(C, `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 + rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*}: + `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 + rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 + rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype}: + `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 + rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 + rule `array.new_elem`{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: + `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) + -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 + rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 + rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 + rule `array.set`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 + rule `array.len`{C : context}: + `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.LEN`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 + rule `array.fill`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 + rule `array.copy`{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 + rule `array.init_elem`{C : context, x : idx, y : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[$proj_uN_0(y).0] : reftype <: storagetype), zt) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 + rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 + rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + -- wf_context: `%`(C) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 + rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 + rule `local.get`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 + rule `local.set`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 + rule `local.tee`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 + rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: + `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 + rule `global.set`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 + rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 + rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 + rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 + rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: + `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.GROW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 + rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 + rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) + -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 + rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) + -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 + rule `elem.drop`{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: + `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) + -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + rule `data.drop`{C : context, x : idx}: + `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) + -- wf_context: `%`(C) + -- wf_instr: `%`(`DATA.DROP`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 + rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 + rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 + rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 + rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 + rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 + rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 + rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 + rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 + rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 + rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 + rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 + rule unop{C : context, nt : numtype, unop_nt : unop_}: + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 + rule binop{C : context, nt : numtype, binop_nt : binop_}: + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 + rule testop{C : context, nt : numtype, testop_nt : testop_}: + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 + rule relop{C : context, nt : numtype, relop_nt : relop_}: + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 + rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 + rule vconst{C : context, c : vec_}: + `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 + rule vvunop{C : context, vvunop : vvunop}: + `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 + rule vvbinop{C : context, vvbinop : vvbinop}: + `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 + rule vvternop{C : context, vvternop : vvternop}: + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 + rule vvtestop{C : context, vvtestop : vvtestop}: + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 + rule vunop{C : context, sh : shape, vunop : vunop_}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 + rule vternop{C : context, sh : shape, vternop : vternop_}: + `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 + rule vbitmask{C : context, sh : ishape}: + `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 + rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 + rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: + `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} + -- wf_context: `%`(C) + -- wf_dim: `%`($dim($proj_bshape_0(sh).0)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 + rule vsplat{C : context, sh : shape}: + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 + rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- wf_context: `%`(C) + -- wf_dim: `%`($dim(sh)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 + rule vreplace_lane{C : context, sh : shape, i : laneidx}: + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- wf_context: `%`(C) + -- wf_dim: `%`($dim(sh)) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 + rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 + rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 + rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 + rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 + rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 +relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 + rule empty{C : context}: + `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 + rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: + `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 + rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 + rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) +} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok: `%|-%:%`(context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*, `t*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%NONDEFAULTABLE`(t) + -- if (!($default_(t)) = ?()) + -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Instr_const: `%|-%CONST`(context, instr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule vconst{C : context, vt : vectype, c_vt : vec_}: + `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.null`{C : context, ht : heaptype}: + `%|-%CONST`(C, `REF.NULL`_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.NULL`_instr(ht)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.i31`{C : context}: + `%|-%CONST`(C, `REF.I31`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.I31`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.func`{C : context, x : idx}: + `%|-%CONST`(C, `REF.FUNC`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.FUNC`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `struct.new`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `struct.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new_fixed`{C : context, x : idx, n : n}: + `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `any.convert_extern`{C : context}: + `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `extern.convert_any`{C : context}: + `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `global.get`{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule binop{C : context, Inn : Inn, binop : binop_}: + `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) + -- if (Inn <- [I32_Inn I64_Inn]) + -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_const: `%|-%CONST`(context, expr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*}: + `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, expr : expr, t : valtype}: + `%|-%:%CONST`(C, expr, t) + -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) + -- Expr_const: `%|-%CONST`(C, expr) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Type_ok: `%|-%:%`(context, type, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: + `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- if ($proj_uN_0(x).0 = |C.TYPES_context|) + -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) + -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Tag_ok: `%|-%:%`(context, tag, tagtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tagtype : tagtype}: + `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + -- wf_context: `%`(C) + -- wf_typeuse: `%`($clos_tagtype(C, tagtype)) + -- wf_tag: `%`(TAG_tag(tagtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Global_ok: `%|-%:%`(context, global, globaltype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: + `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Mem_ok: `%|-%:%`(context, mem, memtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, memtype : memtype}: + `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- Memtype_ok: `%|-%:OK`(C, memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Table_ok: `%|-%:%`(context, table, tabletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- if (tabletype = `%%%`_tabletype(at, lim, rt)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Local_ok: `%|-%:%`(context, local, localtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule set{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- Defaultable: `|-%DEFAULTABLE`(t) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule unset{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- Nondefaultable: `|-%NONDEFAULTABLE`(t) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Func_ok: `%|-%:%`(context, func, deftype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Datamode_ok: `%|-%:%`(context, datamode, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context}: + `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: + `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Data_ok: `%|-%:%`(context, data, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, `b*` : byte*, datamode : datamode}: + `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context, rt : reftype}: + `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule declare{C : context, rt : reftype}: + `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: + `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elem_ok: `%|-%:%`(context, elem, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: + `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- Reftype_ok: `%|-%:OK`(C, elemtype) + -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} + -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Start_ok: `%|-%:OK`(context, start) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx}: + `%|-%:OK`(C, START_start(x)) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Import_ok: `%|-%:%`(context, import, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + -- Externtype_ok: `%|-%:OK`(C, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`($clos_externtype(C, xt)) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Externidx_ok: `%|-%:%`(context, externidx, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule tag{C : context, x : idx, jt : tagtype}: + `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule global{C : context, x : idx, gt : globaltype}: + `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mem{C : context, x : idx, mt : memtype}: + `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule table{C : context, x : idx, tt : tabletype}: + `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Export_ok: `%|-%:%%`(context, export, name, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name : name, externidx : externidx, xt : externtype}: + `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- Externidx_ok: `%|-%:%`(C, externidx, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 +relation Globals_ok: `%|-%:%`(context, global*, globaltype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 + rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: + `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- Global_ok: `%|-%:%`(C, global_1, gt_1) + -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 +relation Types_ok: `%|-%:%`(context, type*, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 + rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: + `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) + -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +syntax nonfuncs = + | `%%%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation wf_nonfuncs: `%`(nonfuncs) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}: + `%`(`%%%%%%`_nonfuncs(`global*`, `mem*`, `table*`, `elem*`, `start?`, `export*`)) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_mem: `%`(mem))*{mem <- `mem*`} + -- (wf_table: `%`(table))*{table <- `table*`} + -- (wf_elem: `%`(elem))*{elem <- `elem*`} + -- (wf_start: `%`(start))?{start <- `start?`} + -- (wf_export: `%`(export))*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}(`%%%%%%`_nonfuncs(global#2*{global#2 <- `global*`}, mem#2*{mem#2 <- `mem*`}, table#2*{table#2 <- `table*`}, elem#2*{elem#2 <- `elem*`}, start#2?{start#2 <- `start?`}, export#2*{export#2 <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Module_ok: `|-%:%`(module, moduletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: + `|-%:%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) + -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} + -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} + -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} + -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} + -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} + -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} + -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} + -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} + -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) + -- if (C = C' +++ {TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) + -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}))) + -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) + -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_moduletype: `%`($clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- (wf_uN: `%%`(32, iter))*{iter <- $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}))} + -- (wf_typeuse: `%`(iter))*{iter <- $tagsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_globaltype: `%`(iter))*{iter <- $globalsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_memtype: `%`(iter))*{iter <- $memsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_tabletype: `%`(iter))*{iter <- $tablesxt(xt_I*{xt_I <- `xt_I*`})} + -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) + -- wf_nonfuncs: `%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed2 = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed2_0(x : relaxed2) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed2_0{v_num_0 : nat}(`%`_relaxed2(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed2: `%`(relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed2_case_0{i : nat}: + `%`(`%`_relaxed2(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed4 = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed4_0(x : relaxed4) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed4_0{v_num_0 : nat}(`%`_relaxed4(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed4: `%`(relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed4_case_0{i : nat}: + `%`(`%`_relaxed4(i)) + -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = (if $ND then [X_1 X_2][$proj_relaxed2_0(i).0] else [X_1 X_2][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][$proj_relaxed4_0(i).0] else [X_1 X_2 X_3 X_4][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmadd : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmadd_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmadd_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_fmadd) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmin : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmin_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmin_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmin) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmax : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmax_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmax_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmax) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_idot : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_idot_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_idot_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_idot) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_iq15mulr : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_iq15mulr_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_iq15mulr_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_iq15mulr) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_u : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_u_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_u_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_trunc_u) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_s : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_s_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_s_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_trunc_s) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_swizzle : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_swizzle_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_swizzle_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_swizzle) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_laneselect : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_laneselect_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_laneselect_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_laneselect) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $s33_to_u32(s33 : s33) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibits_(N : N, iN : iN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibits__is_wf: `%%%`(N : N, iN : iN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibits__is_wf_0{N : N, iN : iN, ret_val : bit*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibits_(N, iN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbits_(N : N, fN : fN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbits__is_wf: `%%%`(N : N, fN : fN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbits__is_wf_0{N : N, fN : fN, ret_val : bit*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbits_(N, fN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibytes_(N : N, iN : iN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibytes__is_wf: `%%%`(N : N, iN : iN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibytes__is_wf_0{N : N, iN : iN, ret_val : byte*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibytes_(N, iN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbytes_(N : N, fN : fN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbytes__is_wf: `%%%`(N : N, fN : fN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbytes__is_wf_0{N : N, fN : fN, ret_val : byte*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbytes_(N, fN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $nbytes_(numtype : numtype, num_ : num_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation nbytes__is_wf: `%%%`(numtype : numtype, num_ : num_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule nbytes__is_wf_0{numtype : numtype, num_ : num_, ret_val : byte*}: + `%%%`(numtype, num_, ret_val) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $nbytes_(numtype, num_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $vbytes_(vectype : vectype, vec_ : vec_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation vbytes__is_wf: `%%%`(vectype : vectype, vec_ : vec_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule vbytes__is_wf_0{vectype : vectype, vec_ : vec_, ret_val : byte*}: + `%%%`(vectype, vec_, ret_val) + -- wf_uN: `%%`($vsize(vectype), vec_) + -- if (ret_val = $vbytes_(vectype, vec_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zbytes__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zbytes__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : byte*}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $zbytes_(storagetype, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cbytes__is_wf: `%%%`(Cnn : Cnn, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cbytes__is_wf_0{Cnn : Cnn, lit_ : lit_, ret_val : byte*}: + `%%%`(Cnn, lit_, ret_val) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), lit_) + -- if (ret_val = $cbytes_(Cnn, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibits_(N : N, bit*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbits_(N : N, bit*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbits__is_wf: `%%%`(N : N, var_0 : bit*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbits__is_wf_0{N : N, var_0 : bit*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_bit: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbits_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibytes_(N : N, byte*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbytes_(N : N, byte*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbytes__is_wf: `%%%`(N : N, var_0 : byte*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbytes__is_wf_0{N : N, var_0 : byte*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbytes_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_nbytes_(numtype : numtype, byte*) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_nbytes__is_wf: `%%%`(numtype : numtype, var_0 : byte*, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_nbytes__is_wf_0{numtype : numtype, var_0 : byte*, ret_val : num_}: + `%%%`(numtype, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_nbytes_(numtype, var_0)) + -- wf_num_: `%%`(numtype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_vbytes_(vectype : vectype, byte*) : vec_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_zbytes__is_wf: `%%%`(storagetype : storagetype, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_zbytes__is_wf_0{storagetype : storagetype, var_0 : byte*, ret_val : lit_}: + `%%%`(storagetype, var_0, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_zbytes_(storagetype, var_0)) + -- wf_lit_: `%%`(storagetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_cbytes__is_wf: `%%%`(Cnn : Cnn, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_cbytes__is_wf_0{Cnn : Cnn, var_0 : byte*, ret_val : lit_}: + `%%%`(Cnn, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_cbytes_(Cnn, var_0)) + -- wf_lit_: `%%`((Cnn : Cnn <: storagetype), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $signed_(N : N, nat : nat) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $signed_{N : nat, i : nat}(N, i) = (i : nat <:> int) + -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $signed_{N : nat, i : nat}(N, i) = ((i : nat <:> int) - ((2 ^ N) : nat <:> int)) + -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_signed_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inv_signed_{N : nat, i : int}(N, i) = (i : int <:> nat) + -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inv_signed_{N : nat, i : int}(N, i) = ((i + ((2 ^ N) : nat <:> int)) : int <:> nat) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sx(storagetype : storagetype) : sx?? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(F32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(F64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(V128_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I8_storagetype) = ?(?(S_sx)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I16_storagetype) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zero(lanetype : lanetype) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(F32_lanetype) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, $fzero($size((F32_Fnn : Fnn <: numtype))))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(F64_lanetype) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, $fzero($size((F64_Fnn : Fnn <: numtype))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zero_is_wf: `%%`(lanetype : lanetype, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zero_is_wf_0{lanetype : lanetype, ret_val : lane_}: + `%%`(lanetype, ret_val) + -- if (ret_val = $zero(lanetype)) + -- wf_lane_: `%%`(lanetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $bool(bool : bool) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(false) = 0 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(true) = 1 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $truncz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ceilz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_u_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_u_{N : nat, i : int}(N, i) = (if (i < (0 : nat <:> int)) then 0 else (if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) then ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) else (i : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_s_(N : N, int : int) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_s_{N : nat, i : int}(N, i) = (if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) then - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) else (if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) then (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) else i)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ineg_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iabs_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iabs_{N : nat, i_1 : uN}(N, i_1) = (if ($signed_(N, $proj_uN_0(i_1).0) >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iclz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ictz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ipopcnt_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imul_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?() + -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)) then i_1 else i_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)) then i_1 else i_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_q15mulr_(N : N, sx : sx, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iavgr_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inot_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irev_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iand_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iandnot_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ior_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ixor_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishl_(N : N, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishr_(N : N, sx : sx, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotl_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotr_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibitselect_(N : N, iN : iN, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieqz_(N : N, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inez_(N : N, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieq_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ine_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fabs_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fabs__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fabs__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fabs_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fneg_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fneg__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fneg__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fneg_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsqrt_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsqrt__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsqrt__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fsqrt_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fceil_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fceil__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fceil__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fceil_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ffloor_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ffloor__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ffloor__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ffloor_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ftrunc_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ftrunc__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ftrunc__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ftrunc_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fnearest_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fnearest__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fnearest__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fnearest_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fadd_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fadd__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fadd__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fadd_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsub_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsub__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsub__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fsub_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmul_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmul__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmul__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmul_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fdiv_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fdiv__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fdiv__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fdiv_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmin__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmax__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmin__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmax__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_min__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_min__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_min_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_max__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_max__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_max_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fcopysign_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fcopysign__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fcopysign__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fcopysign_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $feq_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fne_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $flt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fgt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fle_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fge_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_madd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_madd__is_wf_0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_madd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_nmadd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_nmadd__is_wf_0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_nmadd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $wrap__(M : M, N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $extend__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc_sat__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $demote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation demote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule demote___is_wf_0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $demote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $promote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation promote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule promote___is_wf_0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $promote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $convert__(M : M, N : N, sx : sx, iN : iN) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation convert___is_wf: `%%%%%`(M : M, N : N, sx : sx, iN : iN, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule convert___is_wf_0{M : M, N : N, sx : sx, iN : iN, ret_val : fN}: + `%%%%%`(M, N, sx, iN, ret_val) + -- wf_uN: `%%`(M, iN) + -- if (ret_val = $convert__(M, N, sx, iN)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation reinterpret___is_wf: `%%%%`(numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule reinterpret___is_wf_0{numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_}: + `%%%%`(numtype_1, numtype_2, num_, ret_val) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $reinterpret__(numtype_1, numtype_2, num_)) + -- wf_num_: `%%`(numtype_2, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack((I8_packtype : packtype <: lanetype))), $psize(I8_packtype), c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack((I16_packtype : packtype <: lanetype))), $psize(I16_packtype), c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lpacknum__is_wf: `%%%`(lanetype : lanetype, num_ : num_, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lpacknum__is_wf_0{lanetype : lanetype, num_ : num_, ret_val : lane_}: + `%%%`(lanetype, num_, ret_val) + -- wf_num_: `%%`($lunpack(lanetype), num_) + -- if (ret_val = $lpacknum_(lanetype, num_)) + -- wf_lane_: `%%`(lanetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(I32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(I64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(F32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(F64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(V128_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack((I8_packtype : packtype <: lanetype))), $psize(I8_packtype), c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack((I16_packtype : packtype <: lanetype))), $psize(I16_packtype), c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cpacknum__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`((!($cunpack(storagetype)) : consttype <: storagetype), lit_) + -- if (ret_val = $cpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`(storagetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(I32_lanetype, mk_lane__0_lane_(I32_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(I64_lanetype, mk_lane__0_lane_(I64_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(F32_lanetype, mk_lane__0_lane_(F32_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack((I8_packtype : packtype <: lanetype))), U_sx, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack((I16_packtype : packtype <: lanetype))), U_sx, c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lunpacknum__is_wf: `%%%`(lanetype : lanetype, lane_ : lane_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lunpacknum__is_wf_0{lanetype : lanetype, lane_ : lane_, ret_val : num_}: + `%%%`(lanetype, lane_, ret_val) + -- wf_lane_: `%%`(lanetype, lane_) + -- if (ret_val = $lunpacknum_(lanetype, lane_)) + -- wf_num_: `%%`($lunpack(lanetype), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(I32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(I64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(F32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(F64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(V128_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack((I8_packtype : packtype <: lanetype))), U_sx, c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack((I16_packtype : packtype <: lanetype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cunpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cunpacknum__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $cunpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`((!($cunpack(storagetype)) : consttype <: storagetype), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn((I32_Inn : addrtype <: numtype)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn((I64_Inn : addrtype <: numtype)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn((I32_Inn : addrtype <: numtype)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn((I64_Inn : addrtype <: numtype)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn((I32_Inn : addrtype <: numtype)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn((I64_Inn : addrtype <: numtype)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn((I32_Inn : addrtype <: numtype)), M, S_sx, i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn((I64_Inn : addrtype <: numtype)), M, S_sx, i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#1)*{iter_0#1 <- $fabs_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#3)*{iter_0#3 <- $fneg_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fneg_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#5)*{iter_0#5 <- $fsqrt_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#6)*{iter_0#6 <- $fsqrt_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#7)*{iter_0#7 <- $fceil_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fceil_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#9)*{iter_0#9 <- $ffloor_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#10)*{iter_0#10 <- $ffloor_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#11)*{iter_0#11 <- $ftrunc_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $ftrunc_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#13)*{iter_0#13 <- $fnearest_($sizenn((F32_Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#14)*{iter_0#14 <- $fnearest_($sizenn((F64_Fnn : Fnn <: numtype)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation unop__is_wf: `%%%%`(numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule unop__is_wf_0{numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*}: + `%%%%`(numtype, unop_, num_, ret_val) + -- wf_unop_: `%%`(numtype, unop_) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $unop_(numtype, unop_, num_)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#15)*{iter_0#15 <- lift($idiv_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#16)*{iter_0#16 <- lift($idiv_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#17)*{iter_0#17 <- lift($irem_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#18)*{iter_0#18 <- lift($irem_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn((I32_Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn((I64_Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#19)*{iter_0#19 <- $fadd_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $fadd_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#21)*{iter_0#21 <- $fsub_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#22)*{iter_0#22 <- $fsub_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#23)*{iter_0#23 <- $fmul_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $fmul_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#25)*{iter_0#25 <- $fdiv_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#26)*{iter_0#26 <- $fdiv_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#27)*{iter_0#27 <- $fmin_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fmin_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#29)*{iter_0#29 <- $fmax_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#30)*{iter_0#30 <- $fmax_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#31)*{iter_0#31 <- $fcopysign_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#32)*{iter_0#32 <- $fcopysign_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation binop__is_wf: `%%%%%`(numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule binop__is_wf_0{numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*}: + `%%%%%`(numtype, binop_, num_, num__0, ret_val) + -- wf_binop_: `%%`(numtype, binop_) + -- wf_num_: `%%`(numtype, num_) + -- wf_num_: `%%`(numtype, num__0) + -- if (ret_val = $binop_(numtype, binop_, num_, num__0)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $testop_{i : uN}(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i)) = $ieqz_($sizenn((I32_Inn : addrtype <: numtype)), i) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $testop_{i : uN}(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i)) = $ieqz_($sizenn((I64_Inn : addrtype <: numtype)), i) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ieq_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ieq_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ine_($sizenn((I32_Inn : addrtype <: numtype)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ine_($sizenn((I64_Inn : addrtype <: numtype)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ilt_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ilt_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $igt_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $igt_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ile_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ile_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ige_($sizenn((I32_Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ige_($sizenn((I64_Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $feq_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $feq_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fne_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fne_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $flt_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $flt_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fgt_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fgt_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fle_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fle_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fge_($sizenn((F32_Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fge_($sizenn((F64_Fnn : Fnn <: numtype)), f_1, f_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#33)*{iter_0#33 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#35)*{iter_0#35 <- lift($trunc__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift($trunc__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#37)*{iter_0#37 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#38)*{iter_0#38 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I32_Inn : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#39)*{iter_0#39 <- lift($trunc_sat__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#40)*{iter_0#40 <- lift($trunc_sat__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((I64_Inn : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1((I32_Inn : addrtype <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1((I64_Inn : addrtype <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#41)*{iter_0#41 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#43)*{iter_0#43 <- $promote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $promote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#45)*{iter_0#45 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F32_Fnn : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#47)*{iter_0#47 <- $demote__($sizenn1((F32_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $demote__($sizenn1((F64_Fnn : Fnn <: numtype)), $sizenn2((F64_Fnn : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__((I32_Inn : addrtype <: numtype), (F32_Fnn : Fnn <: numtype), mk_num__0_num_(I32_Inn, i_1))] + -- if ($size((I32_Inn : addrtype <: numtype)) = $size((F32_Fnn : Fnn <: numtype))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__((I64_Inn : addrtype <: numtype), (F32_Fnn : Fnn <: numtype), mk_num__0_num_(I64_Inn, i_1))] + -- if ($size((I64_Inn : addrtype <: numtype)) = $size((F32_Fnn : Fnn <: numtype))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__((I32_Inn : addrtype <: numtype), (F64_Fnn : Fnn <: numtype), mk_num__0_num_(I32_Inn, i_1))] + -- if ($size((I32_Inn : addrtype <: numtype)) = $size((F64_Fnn : Fnn <: numtype))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__((I64_Inn : addrtype <: numtype), (F64_Fnn : Fnn <: numtype), mk_num__0_num_(I64_Inn, i_1))] + -- if ($size((I64_Inn : addrtype <: numtype)) = $size((F64_Fnn : Fnn <: numtype))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__((F32_Fnn : Fnn <: numtype), (I32_Inn : addrtype <: numtype), mk_num__1_num_(F32_Fnn, f_1))] + -- if ($size((F32_Fnn : Fnn <: numtype)) = $size((I32_Inn : addrtype <: numtype))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__((F64_Fnn : Fnn <: numtype), (I32_Inn : addrtype <: numtype), mk_num__1_num_(F64_Fnn, f_1))] + -- if ($size((F64_Fnn : Fnn <: numtype)) = $size((I32_Inn : addrtype <: numtype))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__((F32_Fnn : Fnn <: numtype), (I64_Inn : addrtype <: numtype), mk_num__1_num_(F32_Fnn, f_1))] + -- if ($size((F32_Fnn : Fnn <: numtype)) = $size((I64_Inn : addrtype <: numtype))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__((F64_Fnn : Fnn <: numtype), (I64_Inn : addrtype <: numtype), mk_num__1_num_(F64_Fnn, f_1))] + -- if ($size((F64_Fnn : Fnn <: numtype)) = $size((I64_Inn : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cvtop___is_wf: `%%%%%`(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cvtop___is_wf_0{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*}: + `%%%%%`(numtype_1, numtype_2, cvtop__, num_, ret_val) + -- wf_cvtop__: `%%%`(numtype_1, numtype_2, cvtop__) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $cvtop__(numtype_1, numtype_2, cvtop__, num_)) + -- (wf_num_: `%%`(numtype_2, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lanes_(shape : shape, vec_ : vec_) : lane_* + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lanes__is_wf: `%%%`(shape : shape, vec_ : vec_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lanes__is_wf_0{shape : shape, vec_ : vec_, ret_val : lane_*}: + `%%%`(shape, vec_, ret_val) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(128, vec_) + -- if (ret_val = $lanes_(shape, vec_)) + -- (wf_lane_: `%%`($lanetype(shape), ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $inv_lanes_(shape : shape, lane_*) : vec_ + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : zero? + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3037?{half#3037 <- `half?`}, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3038?{half#3038 <- `half?`}, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3039?{half#3039 <- `half?`}, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3040?{half#3040 <- `half?`}, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3041?{half#3041 <- `half?`}, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3042?{half#3042 <- `half?`}, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3043?{half#3043 <- `half?`}, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3044?{half#3044 <- `half?`}, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3441?{zero#3441 <- `zero?`}))) = zero#3442?{zero#3442 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3443?{zero#3443 <- `zero?`}))) = zero#3444?{zero#3444 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3445?{zero#3445 <- `zero?`}))) = zero#3446?{zero#3446 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3447?{zero#3447 <- `zero?`}))) = zero#3448?{zero#3448 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3449?{zero#3449 <- `zero?`}))) = zero#3450?{zero#3450 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3451?{zero#3451 <- `zero?`}))) = zero#3452?{zero#3452 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3453?{zero#3453 <- `zero?`}))) = zero#3454?{zero#3454 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3455?{zero#3455 <- `zero?`}))) = zero#3456?{zero#3456 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3457?{zero#3457 <- `zero?`}))) = zero#3458?{zero#3458 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3459?{zero#3459 <- `zero?`}))) = zero#3460?{zero#3460 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3461?{zero#3461 <- `zero?`}))) = zero#3462?{zero#3462 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3463?{zero#3463 <- `zero?`}))) = zero#3464?{zero#3464 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3465?{zero#3465 <- `zero?`}))) = zero#3466?{zero#3466 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3467?{zero#3467 <- `zero?`}))) = zero#3468?{zero#3468 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3469?{zero#3469 <- `zero?`}))) = zero#3470?{zero#3470 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3471?{zero#3471 <- `zero?`}))) = zero#3472?{zero#3472 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : half? + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3045?{half#3045 <- `half?`}, sx))) = half#3046?{half#3046 <- `half?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3047?{half#3047 <- `half?`}, sx))) = half#3048?{half#3048 <- `half?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3049?{half#3049 <- `half?`}, sx))) = half#3050?{half#3050 <- `half?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3051?{half#3051 <- `half?`}, sx))) = half#3052?{half#3052 <- `half?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3053?{half#3053 <- `half?`}, sx))) = half#3054?{half#3054 <- `half?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3055?{half#3055 <- `half?`}, sx))) = half#3056?{half#3056 <- `half?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3057?{half#3057 <- `half?`}, sx))) = half#3058?{half#3058 <- `half?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3059?{half#3059 <- `half?`}, sx))) = half#3060?{half#3060 <- `half?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3473?{zero#3473 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3474?{zero#3474 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3475?{zero#3475 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3476?{zero#3476 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3477?{zero#3477 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3478?{zero#3478 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3479?{zero#3479 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3480?{zero#3480 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3481?{zero#3481 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3482?{zero#3482 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3483?{zero#3483 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3484?{zero#3484 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3485?{zero#3485 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3486?{zero#3486 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3487?{zero#3487 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3488?{zero#3488 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $half(half : half, nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(LOW_half, i, j) = i + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(HIGH_half, i, j) = j + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $iswizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#1*{c#1 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#2*{c#2 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#4)*{c#4 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#1*{c_1#1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#3*{c#3 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#2)))*{c_1#2 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#5))*{iter#5 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#3)))))*{c_1#3 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#6)*{c#6 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#4*{c_1#4 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#5*{c#5 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#5)))*{c_1#5 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#6))*{iter#6 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#6)))))*{c_1#6 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#8)*{c#8 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#7*{c_1#7 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#7*{c#7 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#8)))*{c_1#8 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#7))*{iter#7 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#9)))))*{c_1#9 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#10)*{c#10 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#10*{c_1#10 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#9*{c#9 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#11)))*{c_1#11 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#8))*{iter#8 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#12)))))*{c_1#12 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c#12*{c#12 <- `c*#2`})*{`c*#2` <- `c**`} + -- let{`c_1*` : lane_*} c_1#13*{c_1#13 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#11*{c#11 <- `c*#1`}*{`c*#1` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#49))*{iter_0#49 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#14)))))}*{c_1#14 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#9))*{iter#9 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), iter#11))*{iter#11 <- iter#10}*{iter#10 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#50))*{iter_0#50 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#15)))))}*{c_1#15 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn((F32_Fnn : Fnn <: numtype)), iter#12))*{iter#12 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#16)))))}*{c_1#16 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#51))))*{iter_0#51 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#17)))))}*{c_1#17 <- `c_1*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c#14*{c#14 <- `c*#4`})*{`c*#4` <- `c**`} + -- let{`c_1*` : lane_*} c_1#18*{c_1#18 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#13*{c#13 <- `c*#3`}*{`c*#3` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#52))*{iter_0#52 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#19)))))}*{c_1#19 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#13))*{iter#13 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), iter#15))*{iter#15 <- iter#14}*{iter#14 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#53))*{iter_0#53 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#20)))))}*{c_1#20 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn((F64_Fnn : Fnn <: numtype)), iter#16))*{iter#16 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#21)))))}*{c_1#21 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#54))))*{iter_0#54 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#22)))))}*{c_1#22 <- `c_1*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#16)*{c#16 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#23*{c_1#23 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#1*{c_2#1 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#15*{c#15 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#24)), !($proj_lane__2(c_2#2)))*{c_1#24 <- `c_1*`, c_2#2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#17))*{iter#17 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#18))*{iter#18 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#25)), !($proj_lane__2(c_2#3)))))*{c_1#25 <- `c_1*`, c_2#3 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#18)*{c#18 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#26*{c_1#26 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#4*{c_2#4 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#17*{c#17 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#27)), !($proj_lane__2(c_2#5)))*{c_1#27 <- `c_1*`, c_2#5 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#19))*{iter#19 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#20))*{iter#20 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#28)), !($proj_lane__2(c_2#6)))))*{c_1#28 <- `c_1*`, c_2#6 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#20)*{c#20 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#29*{c_1#29 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#7*{c_2#7 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#19*{c#19 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#30)), !($proj_lane__2(c_2#8)))*{c_1#30 <- `c_1*`, c_2#8 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#21))*{iter#21 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#22))*{iter#22 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#31)), !($proj_lane__2(c_2#9)))))*{c_1#31 <- `c_1*`, c_2#9 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#22)*{c#22 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#32*{c_1#32 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#10*{c_2#10 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#21*{c#21 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#33)), !($proj_lane__2(c_2#11)))*{c_1#33 <- `c_1*`, c_2#11 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#23))*{iter#23 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#24))*{iter#24 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#34)), !($proj_lane__2(c_2#12)))))*{c_1#34 <- `c_1*`, c_2#12 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#24)*{c#24 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#35*{c_1#35 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#13*{c_2#13 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#23*{c#23 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#36)), !($proj_lane__2(c_2#14)))*{c_1#36 <- `c_1*`, c_2#14 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#25))*{iter#25 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#26))*{iter#26 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#37)), !($proj_lane__2(c_2#15)))))*{c_1#37 <- `c_1*`, c_2#15 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#26)*{c#26 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#38*{c_1#38 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#16*{c_2#16 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#25*{c#25 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#39)), !($proj_lane__2(c_2#17)))*{c_1#39 <- `c_1*`, c_2#17 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#27))*{iter#27 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#28))*{iter#28 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#40)), !($proj_lane__2(c_2#18)))))*{c_1#40 <- `c_1*`, c_2#18 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#28)*{c#28 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#41*{c_1#41 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#19*{c_2#19 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#27*{c#27 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#42)), !($proj_lane__2(c_2#20)))*{c_1#42 <- `c_1*`, c_2#20 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#29))*{iter#29 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#30))*{iter#30 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#43)), !($proj_lane__2(c_2#21)))))*{c_1#43 <- `c_1*`, c_2#21 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#30)*{c#30 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#44*{c_1#44 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#22*{c_2#22 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#29*{c#29 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#45)), !($proj_lane__2(c_2#23)))*{c_1#45 <- `c_1*`, c_2#23 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#31))*{iter#31 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#32))*{iter#32 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#46)), !($proj_lane__2(c_2#24)))))*{c_1#46 <- `c_1*`, c_2#24 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c#32*{c#32 <- `c*#6`})*{`c*#6` <- `c**`} + -- let{`c_1*` : lane_*} c_1#47*{c_1#47 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#25*{c_2#25 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#31*{c#31 <- `c*#5`}*{`c*#5` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#55)*{iter_0#55 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#48)), !($proj_lane__2(c_2#26)))}*{c_1#48 <- `c_1*`, c_2#26 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#33))*{iter#33 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#34))*{iter#34 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), iter#36))*{iter#36 <- iter#35}*{iter#35 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#56)*{iter_0#56 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#49)), !($proj_lane__2(c_2#27)))}*{c_1#49 <- `c_1*`, c_2#27 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#37))*{iter#37 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#50)), !($proj_lane__2(c_2#28)))}*{c_1#50 <- `c_1*`, c_2#28 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I32_Jnn, iter_0#57)))*{iter_0#57 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#51)), !($proj_lane__2(c_2#29)))}*{c_1#51 <- `c_1*`, c_2#29 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c#34*{c#34 <- `c*#8`})*{`c*#8` <- `c**`} + -- let{`c_1*` : lane_*} c_1#52*{c_1#52 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#30*{c_2#30 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#33*{c#33 <- `c*#7`}*{`c*#7` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#58)*{iter_0#58 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#53)), !($proj_lane__2(c_2#31)))}*{c_1#53 <- `c_1*`, c_2#31 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#38))*{iter#38 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#39))*{iter#39 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), iter#41))*{iter#41 <- iter#40}*{iter#40 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#59)*{iter_0#59 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#54)), !($proj_lane__2(c_2#32)))}*{c_1#54 <- `c_1*`, c_2#32 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#42))*{iter#42 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#55)), !($proj_lane__2(c_2#33)))}*{c_1#55 <- `c_1*`, c_2#33 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I64_Jnn, iter_0#60)))*{iter_0#60 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#56)), !($proj_lane__2(c_2#34)))}*{c_1#56 <- `c_1*`, c_2#34 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c#36*{c#36 <- `c*#10`})*{`c*#10` <- `c**`} + -- let{`c_1*` : lane_*} c_1#57*{c_1#57 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#35*{c_2#35 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#35*{c#35 <- `c*#9`}*{`c*#9` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#61)*{iter_0#61 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#58)), !($proj_lane__2(c_2#36)))}*{c_1#58 <- `c_1*`, c_2#36 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#43))*{iter#43 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#44))*{iter#44 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), iter#46))*{iter#46 <- iter#45}*{iter#45 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#62)*{iter_0#62 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#59)), !($proj_lane__2(c_2#37)))}*{c_1#59 <- `c_1*`, c_2#37 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#47))*{iter#47 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#60)), !($proj_lane__2(c_2#38)))}*{c_1#60 <- `c_1*`, c_2#38 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I8_Jnn, iter_0#63)))*{iter_0#63 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#61)), !($proj_lane__2(c_2#39)))}*{c_1#61 <- `c_1*`, c_2#39 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c#38*{c#38 <- `c*#12`})*{`c*#12` <- `c**`} + -- let{`c_1*` : lane_*} c_1#62*{c_1#62 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#40*{c_2#40 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#37*{c#37 <- `c*#11`}*{`c*#11` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#64)*{iter_0#64 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#63)), !($proj_lane__2(c_2#41)))}*{c_1#63 <- `c_1*`, c_2#41 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#48))*{iter#48 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#49))*{iter#49 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), iter#51))*{iter#51 <- iter#50}*{iter#50 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#65)*{iter_0#65 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#64)), !($proj_lane__2(c_2#42)))}*{c_1#64 <- `c_1*`, c_2#42 <- `c_2*`})} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#52))*{iter#52 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#65)), !($proj_lane__2(c_2#43)))}*{c_1#65 <- `c_1*`, c_2#43 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I16_Jnn, iter_0#66)))*{iter_0#66 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#66)), !($proj_lane__2(c_2#44)))}*{c_1#66 <- `c_1*`, c_2#44 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c#40*{c#40 <- `c*#14`})*{`c*#14` <- `c**`} + -- let{`c_1*` : lane_*} c_1#67*{c_1#67 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#45*{c_2#45 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#39*{c#39 <- `c*#13`}*{`c*#13` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#67))*{iter_0#67 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#68)))), !($proj_num__1(!($proj_lane__0(c_2#46)))))}*{c_1#68 <- `c_1*`, c_2#46 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#53))*{iter#53 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#54))*{iter#54 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), iter#56))*{iter#56 <- iter#55}*{iter#55 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#68))*{iter_0#68 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#69)))), !($proj_num__1(!($proj_lane__0(c_2#47)))))}*{c_1#69 <- `c_1*`, c_2#47 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn((F32_Fnn : Fnn <: numtype)), iter#57))*{iter#57 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#70)))), !($proj_num__1(!($proj_lane__0(c_2#48)))))}*{c_1#70 <- `c_1*`, c_2#48 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#69))))*{iter_0#69 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#71)))), !($proj_num__1(!($proj_lane__0(c_2#49)))))}*{c_1#71 <- `c_1*`, c_2#49 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c#42*{c#42 <- `c*#16`})*{`c*#16` <- `c**`} + -- let{`c_1*` : lane_*} c_1#72*{c_1#72 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#50*{c_2#50 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#41*{c#41 <- `c*#15`}*{`c*#15` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#70))*{iter_0#70 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#73)))), !($proj_num__1(!($proj_lane__0(c_2#51)))))}*{c_1#73 <- `c_1*`, c_2#51 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#58))*{iter#58 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#59))*{iter#59 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), iter#61))*{iter#61 <- iter#60}*{iter#60 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#71))*{iter_0#71 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#74)))), !($proj_num__1(!($proj_lane__0(c_2#52)))))}*{c_1#74 <- `c_1*`, c_2#52 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn((F64_Fnn : Fnn <: numtype)), iter#62))*{iter#62 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#75)))), !($proj_num__1(!($proj_lane__0(c_2#53)))))}*{c_1#75 <- `c_1*`, c_2#53 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#72))))*{iter_0#72 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#76)))), !($proj_num__1(!($proj_lane__0(c_2#54)))))}*{c_1#76 <- `c_1*`, c_2#54 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c#44*{c#44 <- `c*#18`})*{`c*#18` <- `c**`} + -- let{`c_1*` : lane_*} c_1#77*{c_1#77 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#55*{c_2#55 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#1*{c_3#1 <- `c_3*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#43*{c#43 <- `c*#17`}*{`c*#17` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#73)*{iter_0#73 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#78)), !($proj_lane__2(c_2#56)), !($proj_lane__2(c_3#2)))}*{c_1#78 <- `c_1*`, c_2#56 <- `c_2*`, c_3#2 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#63))*{iter#63 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#64))*{iter#64 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#65))*{iter#65 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), iter#67))*{iter#67 <- iter#66}*{iter#66 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#74)*{iter_0#74 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#79)), !($proj_lane__2(c_2#57)), !($proj_lane__2(c_3#3)))}*{c_1#79 <- `c_1*`, c_2#57 <- `c_2*`, c_3#3 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#68))*{iter#68 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#80)), !($proj_lane__2(c_2#58)), !($proj_lane__2(c_3#4)))}*{c_1#80 <- `c_1*`, c_2#58 <- `c_2*`, c_3#4 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I32_Jnn, iter_0#75)))*{iter_0#75 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#81)), !($proj_lane__2(c_2#59)), !($proj_lane__2(c_3#5)))}*{c_1#81 <- `c_1*`, c_2#59 <- `c_2*`, c_3#5 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c#46*{c#46 <- `c*#20`})*{`c*#20` <- `c**`} + -- let{`c_1*` : lane_*} c_1#82*{c_1#82 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#60*{c_2#60 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#6*{c_3#6 <- `c_3*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#45*{c#45 <- `c*#19`}*{`c*#19` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#76)*{iter_0#76 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#83)), !($proj_lane__2(c_2#61)), !($proj_lane__2(c_3#7)))}*{c_1#83 <- `c_1*`, c_2#61 <- `c_2*`, c_3#7 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#69))*{iter#69 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#70))*{iter#70 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#71))*{iter#71 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), iter#73))*{iter#73 <- iter#72}*{iter#72 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#77)*{iter_0#77 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#84)), !($proj_lane__2(c_2#62)), !($proj_lane__2(c_3#8)))}*{c_1#84 <- `c_1*`, c_2#62 <- `c_2*`, c_3#8 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#74))*{iter#74 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#85)), !($proj_lane__2(c_2#63)), !($proj_lane__2(c_3#9)))}*{c_1#85 <- `c_1*`, c_2#63 <- `c_2*`, c_3#9 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I64_Jnn, iter_0#78)))*{iter_0#78 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#86)), !($proj_lane__2(c_2#64)), !($proj_lane__2(c_3#10)))}*{c_1#86 <- `c_1*`, c_2#64 <- `c_2*`, c_3#10 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c#48*{c#48 <- `c*#22`})*{`c*#22` <- `c**`} + -- let{`c_1*` : lane_*} c_1#87*{c_1#87 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#65*{c_2#65 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#11*{c_3#11 <- `c_3*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#47*{c#47 <- `c*#21`}*{`c*#21` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#79)*{iter_0#79 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#88)), !($proj_lane__2(c_2#66)), !($proj_lane__2(c_3#12)))}*{c_1#88 <- `c_1*`, c_2#66 <- `c_2*`, c_3#12 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#75))*{iter#75 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#76))*{iter#76 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#77))*{iter#77 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), iter#79))*{iter#79 <- iter#78}*{iter#78 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#80)*{iter_0#80 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#89)), !($proj_lane__2(c_2#67)), !($proj_lane__2(c_3#13)))}*{c_1#89 <- `c_1*`, c_2#67 <- `c_2*`, c_3#13 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#80))*{iter#80 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#90)), !($proj_lane__2(c_2#68)), !($proj_lane__2(c_3#14)))}*{c_1#90 <- `c_1*`, c_2#68 <- `c_2*`, c_3#14 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I8_Jnn, iter_0#81)))*{iter_0#81 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#91)), !($proj_lane__2(c_2#69)), !($proj_lane__2(c_3#15)))}*{c_1#91 <- `c_1*`, c_2#69 <- `c_2*`, c_3#15 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c#50*{c#50 <- `c*#24`})*{`c*#24` <- `c**`} + -- let{`c_1*` : lane_*} c_1#92*{c_1#92 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#70*{c_2#70 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#16*{c_3#16 <- `c_3*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#49*{c#49 <- `c*#23`}*{`c*#23` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#82)*{iter_0#82 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#93)), !($proj_lane__2(c_2#71)), !($proj_lane__2(c_3#17)))}*{c_1#93 <- `c_1*`, c_2#71 <- `c_2*`, c_3#17 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#81))*{iter#81 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#82))*{iter#82 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#83))*{iter#83 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), iter#85))*{iter#85 <- iter#84}*{iter#84 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#83)*{iter_0#83 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#94)), !($proj_lane__2(c_2#72)), !($proj_lane__2(c_3#18)))}*{c_1#94 <- `c_1*`, c_2#72 <- `c_2*`, c_3#18 <- `c_3*`})} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#86))*{iter#86 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#95)), !($proj_lane__2(c_2#73)), !($proj_lane__2(c_3#19)))}*{c_1#95 <- `c_1*`, c_2#73 <- `c_2*`, c_3#19 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I16_Jnn, iter_0#84)))*{iter_0#84 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#96)), !($proj_lane__2(c_2#74)), !($proj_lane__2(c_3#20)))}*{c_1#96 <- `c_1*`, c_2#74 <- `c_2*`, c_3#20 <- `c_3*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), c#52*{c#52 <- `c*#26`})*{`c*#26` <- `c**`} + -- let{`c_1*` : lane_*} c_1#97*{c_1#97 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#75*{c_2#75 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#21*{c_3#21 <- `c_3*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#51*{c#51 <- `c*#25`}*{`c*#25` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#85))*{iter_0#85 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#98)))), !($proj_num__1(!($proj_lane__0(c_2#76)))), !($proj_num__1(!($proj_lane__0(c_3#22)))))}*{c_1#98 <- `c_1*`, c_2#76 <- `c_2*`, c_3#22 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#87))*{iter#87 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#88))*{iter#88 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#89))*{iter#89 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), iter#91))*{iter#91 <- iter#90}*{iter#90 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#86))*{iter_0#86 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#99)))), !($proj_num__1(!($proj_lane__0(c_2#77)))), !($proj_num__1(!($proj_lane__0(c_3#23)))))}*{c_1#99 <- `c_1*`, c_2#77 <- `c_2*`, c_3#23 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn((F32_Fnn : Fnn <: numtype)), iter#92))*{iter#92 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#100)))), !($proj_num__1(!($proj_lane__0(c_2#78)))), !($proj_num__1(!($proj_lane__0(c_3#24)))))}*{c_1#100 <- `c_1*`, c_2#78 <- `c_2*`, c_3#24 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0#87))))*{iter_0#87 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#101)))), !($proj_num__1(!($proj_lane__0(c_2#79)))), !($proj_num__1(!($proj_lane__0(c_3#25)))))}*{c_1#101 <- `c_1*`, c_2#79 <- `c_2*`, c_3#25 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c#54*{c#54 <- `c*#28`})*{`c*#28` <- `c**`} + -- let{`c_1*` : lane_*} c_1#102*{c_1#102 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#80*{c_2#80 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#26*{c_3#26 <- `c_3*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#53*{c#53 <- `c*#27`}*{`c*#27` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#88))*{iter_0#88 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#103)))), !($proj_num__1(!($proj_lane__0(c_2#81)))), !($proj_num__1(!($proj_lane__0(c_3#27)))))}*{c_1#103 <- `c_1*`, c_2#81 <- `c_2*`, c_3#27 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#93))*{iter#93 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#94))*{iter#94 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#95))*{iter#95 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), iter#97))*{iter#97 <- iter#96}*{iter#96 <- $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#89))*{iter_0#89 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#104)))), !($proj_num__1(!($proj_lane__0(c_2#82)))), !($proj_num__1(!($proj_lane__0(c_3#28)))))}*{c_1#104 <- `c_1*`, c_2#82 <- `c_2*`, c_3#28 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn((F64_Fnn : Fnn <: numtype)), iter#98))*{iter#98 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#105)))), !($proj_num__1(!($proj_lane__0(c_2#83)))), !($proj_num__1(!($proj_lane__0(c_3#29)))))}*{c_1#105 <- `c_1*`, c_2#83 <- `c_2*`, c_3#29 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0#90))))*{iter_0#90 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#106)))), !($proj_num__1(!($proj_lane__0(c_2#84)))), !($proj_num__1(!($proj_lane__0(c_3#30)))))}*{c_1#106 <- `c_1*`, c_2#84 <- `c_2*`, c_3#30 <- `c_3*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#56)*{c#56 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#107*{c_1#107 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#85*{c_2#85 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#55*{c#55 <- `c*`} = $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#108)), !($proj_lane__2(c_2#86)))).0))*{c_1#108 <- `c_1*`, c_2#86 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#99))*{iter#99 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#100))*{iter#100 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#109)), !($proj_lane__2(c_2#87)))).0))))*{c_1#109 <- `c_1*`, c_2#87 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#110)), !($proj_lane__2(c_2#88)))).0)))*{c_1#110 <- `c_1*`, c_2#88 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#58)*{c#58 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#111*{c_1#111 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#89*{c_2#89 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#57*{c#57 <- `c*`} = $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#112)), !($proj_lane__2(c_2#90)))).0))*{c_1#112 <- `c_1*`, c_2#90 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#101))*{iter#101 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#102))*{iter#102 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#113)), !($proj_lane__2(c_2#91)))).0))))*{c_1#113 <- `c_1*`, c_2#91 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#114)), !($proj_lane__2(c_2#92)))).0)))*{c_1#114 <- `c_1*`, c_2#92 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#60)*{c#60 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#115*{c_1#115 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#93*{c_2#93 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#59*{c#59 <- `c*`} = $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#116)), !($proj_lane__2(c_2#94)))).0))*{c_1#116 <- `c_1*`, c_2#94 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#103))*{iter#103 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#104))*{iter#104 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#117)), !($proj_lane__2(c_2#95)))).0))))*{c_1#117 <- `c_1*`, c_2#95 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#118)), !($proj_lane__2(c_2#96)))).0)))*{c_1#118 <- `c_1*`, c_2#96 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#62)*{c#62 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#119*{c_1#119 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#97*{c_2#97 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#61*{c#61 <- `c*`} = $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#120)), !($proj_lane__2(c_2#98)))).0))*{c_1#120 <- `c_1*`, c_2#98 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#105))*{iter#105 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#106))*{iter#106 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#121)), !($proj_lane__2(c_2#99)))).0))))*{c_1#121 <- `c_1*`, c_2#99 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#122)), !($proj_lane__2(c_2#100)))).0)))*{c_1#122 <- `c_1*`, c_2#100 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#64)*{c#64 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#123*{c_1#123 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#101*{c_2#101 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#63*{c#63 <- `c*`} = $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#124)), !($proj_lane__2(c_2#102)))).0))*{c_1#124 <- `c_1*`, c_2#102 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#107))*{iter#107 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#108))*{iter#108 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#125)), !($proj_lane__2(c_2#103)))).0))))*{c_1#125 <- `c_1*`, c_2#103 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#126)), !($proj_lane__2(c_2#104)))).0)))*{c_1#126 <- `c_1*`, c_2#104 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#66)*{c#66 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#127*{c_1#127 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#105*{c_2#105 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#65*{c#65 <- `c*`} = $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#128)), !($proj_lane__2(c_2#106)))).0))*{c_1#128 <- `c_1*`, c_2#106 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#109))*{iter#109 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#110))*{iter#110 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#129)), !($proj_lane__2(c_2#107)))).0))))*{c_1#129 <- `c_1*`, c_2#107 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#130)), !($proj_lane__2(c_2#108)))).0)))*{c_1#130 <- `c_1*`, c_2#108 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#68)*{c#68 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#131*{c_1#131 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#109*{c_2#109 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#67*{c#67 <- `c*`} = $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#132)), !($proj_lane__2(c_2#110)))).0))*{c_1#132 <- `c_1*`, c_2#110 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#111))*{iter#111 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#112))*{iter#112 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#133)), !($proj_lane__2(c_2#111)))).0))))*{c_1#133 <- `c_1*`, c_2#111 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#134)), !($proj_lane__2(c_2#112)))).0)))*{c_1#134 <- `c_1*`, c_2#112 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#70)*{c#70 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#135*{c_1#135 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#113*{c_2#113 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#69*{c#69 <- `c*`} = $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#136)), !($proj_lane__2(c_2#114)))).0))*{c_1#136 <- `c_1*`, c_2#114 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#113))*{iter#113 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#114))*{iter#114 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#137)), !($proj_lane__2(c_2#115)))).0))))*{c_1#137 <- `c_1*`, c_2#115 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#138)), !($proj_lane__2(c_2#116)))).0)))*{c_1#138 <- `c_1*`, c_2#116 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#72).0)))*{c#72 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#139*{c_1#139 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#117*{c_2#117 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#71*{c#71 <- `c*`} = $extend__(1, $sizenn((F32_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#140)))), !($proj_num__1(!($proj_lane__0(c_2#118)))))).0))*{c_1#140 <- `c_1*`, c_2#118 <- `c_2*`} + -- if ($isize(Inn) = $fsize(F32_Fnn)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#115))*{iter#115 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#116))*{iter#116 <- $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size((F32_Fnn : Fnn <: numtype)), $extend__(1, $sizenn((F32_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#141)))), !($proj_num__1(!($proj_lane__0(c_2#119)))))).0))))*{c_1#141 <- `c_1*`, c_2#119 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#142)))), !($proj_num__1(!($proj_lane__0(c_2#120)))))).0)))*{c_1#142 <- `c_1*`, c_2#120 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#74).0)))*{c#74 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#143*{c_1#143 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#121*{c_2#121 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#73*{c#73 <- `c*`} = $extend__(1, $sizenn((F64_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#144)))), !($proj_num__1(!($proj_lane__0(c_2#122)))))).0))*{c_1#144 <- `c_1*`, c_2#122 <- `c_2*`} + -- if ($isize(Inn) = $fsize(F64_Fnn)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#117))*{iter#117 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))), iter#118))*{iter#118 <- $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size((F64_Fnn : Fnn <: numtype)), $extend__(1, $sizenn((F64_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#145)))), !($proj_num__1(!($proj_lane__0(c_2#123)))))).0))))*{c_1#145 <- `c_1*`, c_2#123 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1#146)))), !($proj_num__1(!($proj_lane__0(c_2#124)))))).0)))*{c_1#146 <- `c_1*`, c_2#124 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#76)*{c#76 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#147*{c_1#147 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#75*{c#75 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#148)), i)*{c_1#148 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#119))*{iter#119 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#149)), i)))*{c_1#149 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#78)*{c#78 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#150*{c_1#150 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#77*{c#77 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#151)), i)*{c_1#151 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#120))*{iter#120 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#152)), i)))*{c_1#152 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#80)*{c#80 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#153*{c_1#153 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#79*{c#79 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#154)), i)*{c_1#154 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#121))*{iter#121 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#155)), i)))*{c_1#155 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#82)*{c#82 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#156*{c_1#156 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#81*{c#81 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#157)), i)*{c_1#157 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#122))*{iter#122 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#158)), i)))*{c_1#158 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#84)*{c#84 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#159*{c_1#159 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#83*{c#83 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#160)), i)*{c_1#160 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#123))*{iter#123 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#161)), i)))*{c_1#161 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#86)*{c#86 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#162*{c_1#162 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#85*{c#85 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#163)), i)*{c_1#163 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#124))*{iter#124 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#164)), i)))*{c_1#164 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#88)*{c#88 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#165*{c_1#165 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#87*{c#87 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#166)), i)*{c_1#166 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#125))*{iter#125 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#167)), i)))*{c_1#167 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#90)*{c#90 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#168*{c_1#168 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#89*{c#89 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#169)), i)*{c_1#169 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#126))*{iter#126 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#170)), i)))*{c_1#170 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- let{`c_1*` : lane_*} c_1#171*{c_1#171 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#172)), `%`_iN(0))).0)*{c_1#172 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#127))*{iter#127 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#128))*{iter#128 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#173)), `%`_iN(0))).0)))*{c_1#173 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- let{`c_1*` : lane_*} c_1#174*{c_1#174 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#175)), `%`_iN(0))).0)*{c_1#175 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#129))*{iter#129 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#130))*{iter#130 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#176)), `%`_iN(0))).0)))*{c_1#176 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- let{`c_1*` : lane_*} c_1#177*{c_1#177 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#178)), `%`_iN(0))).0)*{c_1#178 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#131))*{iter#131 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#132))*{iter#132 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#179)), `%`_iN(0))).0)))*{c_1#179 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- let{`c_1*` : lane_*} c_1#180*{c_1#180 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#181)), `%`_iN(0))).0)*{c_1#181 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#133))*{iter#133 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#134))*{iter#134 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1#182)), `%`_iN(0))).0)))*{c_1#182 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#92)*{c#92 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#183*{c_1#183 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#125*{c_2#125 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#91*{c#91 <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#184))*{c_1#184 <- `c_1*`}, !($proj_lane__2(c_2#126)))*{c_2#126 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#135))*{iter#135 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#136))*{iter#136 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#185))*{c_1#185 <- `c_1*`}, !($proj_lane__2(c_2#127)))))*{c_2#127 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#94)*{c#94 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#186*{c_1#186 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#128*{c_2#128 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#93*{c#93 <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#187))*{c_1#187 <- `c_1*`}, !($proj_lane__2(c_2#129)))*{c_2#129 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#137))*{iter#137 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#138))*{iter#138 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#188))*{c_1#188 <- `c_1*`}, !($proj_lane__2(c_2#130)))))*{c_2#130 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#96)*{c#96 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#189*{c_1#189 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#131*{c_2#131 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#95*{c#95 <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#190))*{c_1#190 <- `c_1*`}, !($proj_lane__2(c_2#132)))*{c_2#132 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#139))*{iter#139 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#140))*{iter#140 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#191))*{c_1#191 <- `c_1*`}, !($proj_lane__2(c_2#133)))))*{c_2#133 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#98)*{c#98 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#192*{c_1#192 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#134*{c_2#134 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#97*{c#97 <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#193))*{c_1#193 <- `c_1*`}, !($proj_lane__2(c_2#135)))*{c_2#135 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#141))*{iter#141 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#142))*{iter#142 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1#194))*{c_1#194 <- `c_1*`}, !($proj_lane__2(c_2#136)))))*{c_2#136 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), i#139234*{i#139234 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), c#100*{c#100 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#195*{c_1#195 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#137*{c_2#137 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#99*{c#99 <- `c*`} = c_1#196*{c_1#196 <- `c_1*`} ++ c_2#138*{c_2#138 <- `c_2*`}[$proj_uN_0(i#139237).0]*{i#139237 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#143))*{iter#143 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#144))*{iter#144 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i#139245*{i#139245 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c#102*{c#102 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#197*{c_1#197 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#139*{c_2#139 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#101*{c#101 <- `c*`} = c_1#198*{c_1#198 <- `c_1*`} ++ c_2#140*{c_2#140 <- `c_2*`}[$proj_uN_0(i#139248).0]*{i#139248 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#145))*{iter#145 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#146))*{iter#146 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i#139256*{i#139256 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c#104*{c#104 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#199*{c_1#199 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#141*{c_2#141 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#103*{c#103 <- `c*`} = c_1#200*{c_1#200 <- `c_1*`} ++ c_2#142*{c_2#142 <- `c_2*`}[$proj_uN_0(i#139259).0]*{i#139259 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#147))*{iter#147 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#148))*{iter#148 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i#139267*{i#139267 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c#106*{c#106 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#201*{c_1#201 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#143*{c_2#143 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#105*{c#105 <- `c*`} = c_1#202*{c_1#202 <- `c_1*`} ++ c_2#144*{c_2#144 <- `c_2*`}[$proj_uN_0(i#139270).0]*{i#139270 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#149))*{iter#149 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), iter#150))*{iter#150 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvunop_{Vnn : vectype, v : uN}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M_0, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M_0, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M_0, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M_0, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M_0, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M_0, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M_0, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M_0, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M_0, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M_0, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M_0, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M_0, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M_0, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M_0, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M_0, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M_0, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) + -- wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3061?{half#3061 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) + -- wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3062?{half#3062 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) + -- wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3063?{half#3063 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) + -- wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3064?{half#3064 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) + -- wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3065?{half#3065 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) + -- wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3066?{half#3066 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) + -- wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3067?{half#3067 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) + -- wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3068?{half#3068 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) + -- wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3489?{zero#3489 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#108))?{c#108 <- `c?`}) + -- let{`c?` : iN?} c#107?{c#107 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#151))?{iter#151 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3490?{zero#3490 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#110))?{c#110 <- `c?`}) + -- let{`c?` : iN?} c#109?{c#109 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#152))?{iter#152 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3491?{zero#3491 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#112))?{c#112 <- `c?`}) + -- let{`c?` : iN?} c#111?{c#111 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#153))?{iter#153 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3492?{zero#3492 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#114))?{c#114 <- `c?`}) + -- let{`c?` : iN?} c#113?{c#113 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#154))?{iter#154 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3493?{zero#3493 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#116))?{c#116 <- `c?`}) + -- let{`c?` : iN?} c#115?{c#115 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#155))?{iter#155 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3494?{zero#3494 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#118))?{c#118 <- `c?`}) + -- let{`c?` : iN?} c#117?{c#117 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#156))?{iter#156 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3495?{zero#3495 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#120))?{c#120 <- `c?`}) + -- let{`c?` : iN?} c#119?{c#119 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#157))?{iter#157 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3496?{zero#3496 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#122))?{c#122 <- `c?`}) + -- let{`c?` : iN?} c#121?{c#121 <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#158))?{iter#158 <- $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3497?{zero#3497 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#124))?{c#124 <- `c?`}) + -- let{`c?` : iN?} c#123?{c#123 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#159))?{iter#159 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3498?{zero#3498 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#126))?{c#126 <- `c?`}) + -- let{`c?` : iN?} c#125?{c#125 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#160))?{iter#160 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3499?{zero#3499 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#128))?{c#128 <- `c?`}) + -- let{`c?` : iN?} c#127?{c#127 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#161))?{iter#161 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3500?{zero#3500 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#130))?{c#130 <- `c?`}) + -- let{`c?` : iN?} c#129?{c#129 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#162))?{iter#162 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3501?{zero#3501 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#132))?{c#132 <- `c?`}) + -- let{`c?` : iN?} c#131?{c#131 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#163))?{iter#163 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3502?{zero#3502 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#134))?{c#134 <- `c?`}) + -- let{`c?` : iN?} c#133?{c#133 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#164))?{iter#164 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3503?{zero#3503 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#136))?{c#136 <- `c?`}) + -- let{`c?` : iN?} c#135?{c#135 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#165))?{iter#165 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3504?{zero#3504 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#138))?{c#138 <- `c?`}) + -- let{`c?` : iN?} c#137?{c#137 <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#166))?{iter#166 <- $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3505?{zero#3505 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#140))?{c#140 <- `c?`}) + -- let{`c?` : iN?} c#139?{c#139 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#167))?{iter#167 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3506?{zero#3506 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#142))?{c#142 <- `c?`}) + -- let{`c?` : iN?} c#141?{c#141 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#168))?{iter#168 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3507?{zero#3507 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#144))?{c#144 <- `c?`}) + -- let{`c?` : iN?} c#143?{c#143 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#169))?{iter#169 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3508?{zero#3508 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#146))?{c#146 <- `c?`}) + -- let{`c?` : iN?} c#145?{c#145 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#170))?{iter#170 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3509?{zero#3509 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#148))?{c#148 <- `c?`}) + -- let{`c?` : iN?} c#147?{c#147 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#171))?{iter#171 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3510?{zero#3510 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#150))?{c#150 <- `c?`}) + -- let{`c?` : iN?} c#149?{c#149 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#172))?{iter#172 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3511?{zero#3511 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#152))?{c#152 <- `c?`}) + -- let{`c?` : iN?} c#151?{c#151 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#173))?{iter#173 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3512?{zero#3512 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#154))?{c#154 <- `c?`}) + -- let{`c?` : iN?} c#153?{c#153 <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#174))?{iter#174 <- $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3513?{zero#3513 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#156))?{c#156 <- `c?`}) + -- let{`c?` : iN?} c#155?{c#155 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#175))?{iter#175 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3514?{zero#3514 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#158))?{c#158 <- `c?`}) + -- let{`c?` : iN?} c#157?{c#157 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#176))?{iter#176 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3515?{zero#3515 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#160))?{c#160 <- `c?`}) + -- let{`c?` : iN?} c#159?{c#159 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#177))?{iter#177 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3516?{zero#3516 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c#162))?{c#162 <- `c?`}) + -- let{`c?` : iN?} c#161?{c#161 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I32_Inn : addrtype <: numtype)), iter#178))?{iter#178 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3517?{zero#3517 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#164))?{c#164 <- `c?`}) + -- let{`c?` : iN?} c#163?{c#163 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#179))?{iter#179 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3518?{zero#3518 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#166))?{c#166 <- `c?`}) + -- let{`c?` : iN?} c#165?{c#165 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#180))?{iter#180 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3519?{zero#3519 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#168))?{c#168 <- `c?`}) + -- let{`c?` : iN?} c#167?{c#167 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#181))?{iter#181 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3520?{zero#3520 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c#170))?{c#170 <- `c?`}) + -- let{`c?` : iN?} c#169?{c#169 <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) + -- (wf_uN: `%%`($size((I64_Inn : addrtype <: numtype)), iter#182))?{iter#182 <- $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#172))*{c#172 <- `c*`} + -- let{`c*` : fN*} c#171*{c#171 <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#183))*{iter#183 <- $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#174))*{c#174 <- `c*`} + -- let{`c*` : fN*} c#173*{c#173 <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#184))*{iter#184 <- $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#176))*{c#176 <- `c*`} + -- let{`c*` : fN*} c#175*{c#175 <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#185))*{iter#185 <- $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#178))*{c#178 <- `c*`} + -- let{`c*` : fN*} c#177*{c#177 <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#186))*{iter#186 <- $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#180))*{c#180 <- `c*`} + -- let{`c*` : fN*} c#179*{c#179 <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#187))*{iter#187 <- $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#182))*{c#182 <- `c*`} + -- let{`c*` : fN*} c#181*{c#181 <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#188))*{iter#188 <- $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#184))*{c#184 <- `c*`} + -- let{`c*` : fN*} c#183*{c#183 <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#189))*{iter#189 <- $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#186))*{c#186 <- `c*`} + -- let{`c*` : fN*} c#185*{c#185 <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#190))*{iter#190 <- $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#188))*{c#188 <- `c*`} + -- let{`c*` : fN*} c#187*{c#187 <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#191))*{iter#191 <- $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#190))*{c#190 <- `c*`} + -- let{`c*` : fN*} c#189*{c#189 <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#192))*{iter#192 <- $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#192))*{c#192 <- `c*`} + -- let{`c*` : fN*} c#191*{c#191 <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#193))*{iter#193 <- $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#194))*{c#194 <- `c*`} + -- let{`c*` : fN*} c#193*{c#193 <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#194))*{iter#194 <- $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#196))*{c#196 <- `c*`} + -- let{`c*` : fN*} c#195*{c#195 <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#195))*{iter#195 <- $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c#198))*{c#198 <- `c*`} + -- let{`c*` : fN*} c#197*{c#197 <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F32_Fnn : Fnn <: lanetype)), iter#196))*{iter#196 <- $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#200))*{c#200 <- `c*`} + -- let{`c*` : fN*} c#199*{c#199 <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#197))*{iter#197 <- $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c#202))*{c#202 <- `c*`} + -- let{`c*` : fN*} c#201*{c#201 <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) + -- (wf_fN: `%%`($lsizenn2((F64_Fnn : Fnn <: lanetype)), iter#198))*{iter#198 <- $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lcvtop___is_wf: `%%%%%`(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lcvtop___is_wf_0{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*}: + `%%%%%`(shape_1, shape_2, vcvtop__, lane_, ret_val) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_1, shape_2, vcvtop__) + -- wf_lane_: `%%`($lanetype(shape_1), lane_) + -- if (ret_val = $lcvtop__(shape_1, shape_2, vcvtop__, lane_)) + -- (wf_lane_: `%%`($lanetype(shape_2), ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, M_0 : nat}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M_0)), vcvtop, v_1) = v + -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) + -- let{`c_1*` : lane_*} c_1#203*{c_1#203 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#203*{c#203 <- `c*#29`}*{`c*#29` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#204)*{c_1#204 <- `c_1*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#204*{c#204 <- `c*#30`})*{`c*#30` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), iter#199))*{iter#199 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#201))*{iter#201 <- iter#200}*{iter#200 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#205)*{c_1#205 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#202))*{iter#202 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#206)}*{c_1#206 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#205*{c#205 <- `c*#31`})))*{`c*#31` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) + -- let{`c_1*` : lane_*} c_1#207*{c_1#207 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] + -- let{`c**` : lane_**} c#206*{c#206 <- `c*#32`}*{`c*#32` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#208)*{c_1#208 <- `c_1*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#207*{c#207 <- `c*#33`})*{`c*#33` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#203))*{iter#203 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#205))*{iter#205 <- iter#204}*{iter#204 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#209)*{c_1#209 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#206))*{iter#206 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#210)}*{c_1#210 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#208*{c#208 <- `c*#34`})))*{`c*#34` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) + -- let{`c_1*` : lane_*} c_1#211*{c_1#211 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) + -- let{`c**` : lane_**} c#209*{c#209 <- `c*#35`}*{`c*#35` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#212)*{c_1#212 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#210*{c#210 <- `c*#36`})*{`c*#36` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#207))*{iter#207 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#209))*{iter#209 <- iter#208}*{iter#208 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#213)*{c_1#213 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})} + -- (wf_lane_: `%%`(Lnn_2, iter#210))*{iter#210 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#214)}*{c_1#214 <- `c_1*`} + -- wf_lane_: `%%`(Lnn_2, $zero(Lnn_2)) + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#211*{c#211 <- `c*#37`})))*{`c*#37` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, v : uN, i : uN, M_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, v : uN, i : uN, M_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, v : uN, i : uN, M_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, v : uN, i : uN, M_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M_0, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M_0, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#139761*{i#139761 <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#215*{c_1#215 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#145*{c_2#145 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#1*{c'_1#1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#216)))*{c_1#216 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#1*{c'_2#1 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#146)))*{c_2#146 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#2)*{c'_1#2 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#2)*{c'_2#2 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#211))*{iter#211 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#212))*{iter#212 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#217)))))*{c_1#217 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#147)))))*{c_2#147 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#3)*{c'_1#3 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#3)*{c'_2#3 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#4)))*{c'_1#4 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#4)))*{c'_2#4 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#218*{c_1#218 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#148*{c_2#148 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#5*{c'_1#5 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#219)))*{c_1#219 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#5*{c'_2#5 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#149)))*{c_2#149 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#6)*{c'_1#6 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#6)*{c'_2#6 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#213))*{iter#213 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#214))*{iter#214 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#220)))))*{c_1#220 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#150)))))*{c_2#150 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#7)*{c'_1#7 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#7)*{c'_2#7 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#8)))*{c'_1#8 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#8)))*{c'_2#8 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#221*{c_1#221 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#151*{c_2#151 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#9*{c'_1#9 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#222)))*{c_1#222 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#9*{c'_2#9 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#152)))*{c_2#152 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#10)*{c'_1#10 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#10)*{c'_2#10 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#215))*{iter#215 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#216))*{iter#216 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#223)))))*{c_1#223 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#153)))))*{c_2#153 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#11)*{c'_1#11 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#11)*{c'_2#11 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#12)))*{c'_1#12 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#12)))*{c'_2#12 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#224*{c_1#224 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#154*{c_2#154 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#13*{c'_1#13 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#225)))*{c_1#225 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#13*{c'_2#13 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#155)))*{c_2#155 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#14)*{c'_1#14 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#14)*{c'_2#14 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#217))*{iter#217 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#218))*{iter#218 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#226)))))*{c_1#226 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#156)))))*{c_2#156 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#15)*{c'_1#15 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#15)*{c'_2#15 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#16)))*{c'_1#16 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#16)))*{c'_2#16 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#227*{c_1#227 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#157*{c_2#157 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#17*{c'_1#17 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#228)))*{c_1#228 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#17*{c'_2#17 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#158)))*{c_2#158 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#18)*{c'_1#18 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#18)*{c'_2#18 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#219))*{iter#219 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#220))*{iter#220 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#229)))))*{c_1#229 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#159)))))*{c_2#159 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#19)*{c'_1#19 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#19)*{c'_2#19 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#20)))*{c'_1#20 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#20)))*{c'_2#20 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#230*{c_1#230 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#160*{c_2#160 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#21*{c'_1#21 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#231)))*{c_1#231 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#21*{c'_2#21 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#161)))*{c_2#161 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#22)*{c'_1#22 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#22)*{c'_2#22 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#221))*{iter#221 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#222))*{iter#222 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#232)))))*{c_1#232 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#162)))))*{c_2#162 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#23)*{c'_1#23 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#23)*{c'_2#23 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#24)))*{c'_1#24 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#24)))*{c'_2#24 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#233*{c_1#233 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#163*{c_2#163 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#25*{c'_1#25 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#234)))*{c_1#234 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#25*{c'_2#25 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#164)))*{c_2#164 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#26)*{c'_1#26 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#26)*{c'_2#26 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#223))*{iter#223 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#224))*{iter#224 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#235)))))*{c_1#235 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#165)))))*{c_2#165 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#27)*{c'_1#27 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#27)*{c'_2#27 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#28)))*{c'_1#28 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#28)))*{c'_2#28 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#236*{c_1#236 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#166*{c_2#166 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#29*{c'_1#29 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#237)))*{c_1#237 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#29*{c'_2#29 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#167)))*{c_2#167 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#30)*{c'_1#30 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#30)*{c'_2#30 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#225))*{iter#225 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#226))*{iter#226 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#238)))))*{c_1#238 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#168)))))*{c_2#168 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#31)*{c'_1#31 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#31)*{c'_2#31 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#32)))*{c'_1#32 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#32)))*{c'_2#32 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#239*{c_1#239 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#169*{c_2#169 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#33*{c'_1#33 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#240)))*{c_1#240 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#33*{c'_2#33 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#170)))*{c_2#170 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#34)*{c'_1#34 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#34)*{c'_2#34 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#227))*{iter#227 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#228))*{iter#228 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#241)))))*{c_1#241 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#171)))))*{c_2#171 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#35)*{c'_1#35 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#35)*{c'_2#35 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#36)))*{c'_1#36 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#36)))*{c'_2#36 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#242*{c_1#242 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#172*{c_2#172 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#37*{c'_1#37 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#243)))*{c_1#243 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#37*{c'_2#37 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#173)))*{c_2#173 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#38)*{c'_1#38 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#38)*{c'_2#38 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#229))*{iter#229 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#230))*{iter#230 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#244)))))*{c_1#244 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#174)))))*{c_2#174 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#39)*{c'_1#39 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#39)*{c'_2#39 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#40)))*{c'_1#40 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#40)))*{c'_2#40 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#245*{c_1#245 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#175*{c_2#175 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#41*{c'_1#41 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#246)))*{c_1#246 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#41*{c'_2#41 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#176)))*{c_2#176 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#42)*{c'_1#42 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#42)*{c'_2#42 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#231))*{iter#231 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#232))*{iter#232 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#247)))))*{c_1#247 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#177)))))*{c_2#177 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#43)*{c'_1#43 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#43)*{c'_2#43 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#44)))*{c'_1#44 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#44)))*{c'_2#44 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#248*{c_1#248 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#178*{c_2#178 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#45*{c'_1#45 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#249)))*{c_1#249 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#45*{c'_2#45 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#179)))*{c_2#179 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#46)*{c'_1#46 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#46)*{c'_2#46 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#233))*{iter#233 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#234))*{iter#234 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#250)))))*{c_1#250 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#180)))))*{c_2#180 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#47)*{c'_1#47 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#47)*{c'_2#47 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#48)))*{c'_1#48 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#48)))*{c'_2#48 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#251*{c_1#251 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#181*{c_2#181 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#49*{c'_1#49 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#252)))*{c_1#252 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#49*{c'_2#49 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#182)))*{c_2#182 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#50)*{c'_1#50 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#50)*{c'_2#50 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#235))*{iter#235 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#236))*{iter#236 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#253)))))*{c_1#253 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#183)))))*{c_2#183 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#51)*{c'_1#51 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#51)*{c'_2#51 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#52)))*{c'_1#52 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#52)))*{c'_2#52 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#254*{c_1#254 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#184*{c_2#184 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#53*{c'_1#53 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#255)))*{c_1#255 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#53*{c'_2#53 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#185)))*{c_2#185 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#54)*{c'_1#54 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#54)*{c'_2#54 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#237))*{iter#237 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#238))*{iter#238 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#256)))))*{c_1#256 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#186)))))*{c_2#186 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#55)*{c'_1#55 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#55)*{c'_2#55 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#56)))*{c'_1#56 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#56)))*{c'_2#56 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#257*{c_1#257 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#187*{c_2#187 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#57*{c'_1#57 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#258)))*{c_1#258 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#57*{c'_2#57 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#188)))*{c_2#188 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#58)*{c'_1#58 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#58)*{c'_2#58 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#239))*{iter#239 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#240))*{iter#240 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#259)))))*{c_1#259 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#189)))))*{c_2#189 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#59)*{c'_1#59 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#59)*{c'_2#59 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#60)))*{c'_1#60 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#60)))*{c'_2#60 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#260*{c_1#260 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#190*{c_2#190 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#61*{c'_1#61 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#261)))*{c_1#261 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#61*{c'_2#61 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#191)))*{c_2#191 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#62)*{c'_1#62 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#62)*{c'_2#62 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#241))*{iter#241 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#242))*{iter#242 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#262)))))*{c_1#262 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2#192)))))*{c_2#192 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#63)*{c'_1#63 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#63)*{c'_2#63 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#64)))*{c'_1#64 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#64)))*{c'_2#64 <- `c'_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivadd_pairwise_(N : N, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i#139986*{i#139986 <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax N, [j_1#1 j_2#1]*{j_1#1 <- `j_1*`, j_2#1 <- `j_2*`}) = $proj_uN_0(i#139987).0*{i#139987 <- `i*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#213)*{c#213 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#263*{c_1#263 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#65*{c'_1#65 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#264)))*{c_1#264 <- `c_1*`} + -- let{`c*` : iN*} c#212*{c#212 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#66*{c'_1#66 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#243))*{iter#243 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#265)))))*{c_1#265 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#244))*{iter#244 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#67*{c'_1#67 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#215)*{c#215 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#266*{c_1#266 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#68*{c'_1#68 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#267)))*{c_1#267 <- `c_1*`} + -- let{`c*` : iN*} c#214*{c#214 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#69*{c'_1#69 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#245))*{iter#245 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#268)))))*{c_1#268 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#246))*{iter#246 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#70*{c'_1#70 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#217)*{c#217 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#269*{c_1#269 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#71*{c'_1#71 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#270)))*{c_1#270 <- `c_1*`} + -- let{`c*` : iN*} c#216*{c#216 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#72*{c'_1#72 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#247))*{iter#247 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#271)))))*{c_1#271 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#248))*{iter#248 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#73*{c'_1#73 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#219)*{c#219 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#272*{c_1#272 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#74*{c'_1#74 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#273)))*{c_1#273 <- `c_1*`} + -- let{`c*` : iN*} c#218*{c#218 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#75*{c'_1#75 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#249))*{iter#249 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#274)))))*{c_1#274 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#250))*{iter#250 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#76*{c'_1#76 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#221)*{c#221 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#275*{c_1#275 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#77*{c'_1#77 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#276)))*{c_1#276 <- `c_1*`} + -- let{`c*` : iN*} c#220*{c#220 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#78*{c'_1#78 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#251))*{iter#251 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#277)))))*{c_1#277 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#252))*{iter#252 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#79*{c'_1#79 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#223)*{c#223 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#278*{c_1#278 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#80*{c'_1#80 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#279)))*{c_1#279 <- `c_1*`} + -- let{`c*` : iN*} c#222*{c#222 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#81*{c'_1#81 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#253))*{iter#253 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#280)))))*{c_1#280 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#254))*{iter#254 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#82*{c'_1#82 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#225)*{c#225 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#281*{c_1#281 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#83*{c'_1#83 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#282)))*{c_1#282 <- `c_1*`} + -- let{`c*` : iN*} c#224*{c#224 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#84*{c'_1#84 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#255))*{iter#255 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#283)))))*{c_1#283 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#256))*{iter#256 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#85*{c'_1#85 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#227)*{c#227 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#284*{c_1#284 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#86*{c'_1#86 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#285)))*{c_1#285 <- `c_1*`} + -- let{`c*` : iN*} c#226*{c#226 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#87*{c'_1#87 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#257))*{iter#257 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#286)))))*{c_1#286 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#258))*{iter#258 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#88*{c'_1#88 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#229)*{c#229 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#287*{c_1#287 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#89*{c'_1#89 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#288)))*{c_1#288 <- `c_1*`} + -- let{`c*` : iN*} c#228*{c#228 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#90*{c'_1#90 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#259))*{iter#259 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#289)))))*{c_1#289 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#260))*{iter#260 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#91*{c'_1#91 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#231)*{c#231 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#290*{c_1#290 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#92*{c'_1#92 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#291)))*{c_1#291 <- `c_1*`} + -- let{`c*` : iN*} c#230*{c#230 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#93*{c'_1#93 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#261))*{iter#261 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#292)))))*{c_1#292 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#262))*{iter#262 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#94*{c'_1#94 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#233)*{c#233 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#293*{c_1#293 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#95*{c'_1#95 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#294)))*{c_1#294 <- `c_1*`} + -- let{`c*` : iN*} c#232*{c#232 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#96*{c'_1#96 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#263))*{iter#263 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#295)))))*{c_1#295 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#264))*{iter#264 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#97*{c'_1#97 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#235)*{c#235 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#296*{c_1#296 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#98*{c'_1#98 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#297)))*{c_1#297 <- `c_1*`} + -- let{`c*` : iN*} c#234*{c#234 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#99*{c'_1#99 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#265))*{iter#265 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#298)))))*{c_1#298 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#266))*{iter#266 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#100*{c'_1#100 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#237)*{c#237 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#299*{c_1#299 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#101*{c'_1#101 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#300)))*{c_1#300 <- `c_1*`} + -- let{`c*` : iN*} c#236*{c#236 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#102*{c'_1#102 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#267))*{iter#267 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#301)))))*{c_1#301 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#268))*{iter#268 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#103*{c'_1#103 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#239)*{c#239 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#302*{c_1#302 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#104*{c'_1#104 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#303)))*{c_1#303 <- `c_1*`} + -- let{`c*` : iN*} c#238*{c#238 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#105*{c'_1#105 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#269))*{iter#269 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#304)))))*{c_1#304 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#270))*{iter#270 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#106*{c'_1#106 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#241)*{c#241 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#305*{c_1#305 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#107*{c'_1#107 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#306)))*{c_1#306 <- `c_1*`} + -- let{`c*` : iN*} c#240*{c#240 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#108*{c'_1#108 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#271))*{iter#271 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#307)))))*{c_1#307 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#272))*{iter#272 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#109*{c'_1#109 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#243)*{c#243 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#308*{c_1#308 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#110*{c'_1#110 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#309)))*{c_1#309 <- `c_1*`} + -- let{`c*` : iN*} c#242*{c#242 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#111*{c'_1#111 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#273))*{iter#273 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1#310)))))*{c_1#310 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#274))*{iter#274 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#112*{c'_1#112 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#1*{i_1#1 <- `i_1*`}, i_2#1*{i_2#1 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#2 j_2#2]*{j_1#2 <- `j_1*`, j_2#2 <- `j_2*`}) = $imul_(N, i_1#2, i_2#2)*{i_1#2 <- `i_1*`, i_2#2 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#275))*{iter#275 <- $concat_(syntax iN, [j_1#3 j_2#3]*{j_1#3 <- `j_1*`, j_2#3 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#3, i_2#3)))*{i_1#3 <- `i_1*`, i_2#3 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_sat_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#4*{i_1#4 <- `i_1*`}, i_2#4*{i_2#4 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#4 j_2#4]*{j_1#4 <- `j_1*`, j_2#4 <- `j_2*`}) = $imul_(N, i_1#5, i_2#5)*{i_1#5 <- `i_1*`, i_2#5 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#276))*{iter#276 <- $concat_(syntax iN, [j_1#5 j_2#5]*{j_1#5 <- `j_1*`, j_2#5 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#6, i_2#6)))*{i_1#6 <- `i_1*`, i_2#6 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#245)*{c#245 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#311*{c_1#311 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#193*{c_2#193 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#113*{c'_1#113 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#312)))*{c_1#312 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#65*{c'_2#65 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#194)))*{c_2#194 <- `c_2*`} + -- let{`c*` : iN*} c#244*{c#244 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#114*{c'_1#114 <- `c'_1*`}, c'_2#66*{c'_2#66 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#277))*{iter#277 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#278))*{iter#278 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#313)))))*{c_1#313 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#195)))))*{c_2#195 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#279))*{iter#279 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#115*{c'_1#115 <- `c'_1*`}, c'_2#67*{c'_2#67 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#247)*{c#247 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#314*{c_1#314 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#196*{c_2#196 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#116*{c'_1#116 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#315)))*{c_1#315 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#68*{c'_2#68 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#197)))*{c_2#197 <- `c_2*`} + -- let{`c*` : iN*} c#246*{c#246 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#117*{c'_1#117 <- `c'_1*`}, c'_2#69*{c'_2#69 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#280))*{iter#280 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#281))*{iter#281 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#316)))))*{c_1#316 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#198)))))*{c_2#198 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#282))*{iter#282 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#118*{c'_1#118 <- `c'_1*`}, c'_2#70*{c'_2#70 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#249)*{c#249 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#317*{c_1#317 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#199*{c_2#199 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#119*{c'_1#119 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#318)))*{c_1#318 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#71*{c'_2#71 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#200)))*{c_2#200 <- `c_2*`} + -- let{`c*` : iN*} c#248*{c#248 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#120*{c'_1#120 <- `c'_1*`}, c'_2#72*{c'_2#72 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#283))*{iter#283 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#284))*{iter#284 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#319)))))*{c_1#319 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#201)))))*{c_2#201 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#285))*{iter#285 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#121*{c'_1#121 <- `c'_1*`}, c'_2#73*{c'_2#73 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#251)*{c#251 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#320*{c_1#320 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#202*{c_2#202 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#122*{c'_1#122 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#321)))*{c_1#321 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#74*{c'_2#74 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#203)))*{c_2#203 <- `c_2*`} + -- let{`c*` : iN*} c#250*{c#250 <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#123*{c'_1#123 <- `c'_1*`}, c'_2#75*{c'_2#75 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#286))*{iter#286 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#287))*{iter#287 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#322)))))*{c_1#322 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#204)))))*{c_2#204 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I32_Jnn : Jnn <: lanetype)), iter#288))*{iter#288 <- $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1#124*{c'_1#124 <- `c'_1*`}, c'_2#76*{c'_2#76 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#253)*{c#253 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#323*{c_1#323 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#205*{c_2#205 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#125*{c'_1#125 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#324)))*{c_1#324 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#77*{c'_2#77 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#206)))*{c_2#206 <- `c_2*`} + -- let{`c*` : iN*} c#252*{c#252 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#126*{c'_1#126 <- `c'_1*`}, c'_2#78*{c'_2#78 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#289))*{iter#289 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#290))*{iter#290 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#325)))))*{c_1#325 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#207)))))*{c_2#207 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#291))*{iter#291 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#127*{c'_1#127 <- `c'_1*`}, c'_2#79*{c'_2#79 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#255)*{c#255 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#326*{c_1#326 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#208*{c_2#208 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#128*{c'_1#128 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#327)))*{c_1#327 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#80*{c'_2#80 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#209)))*{c_2#209 <- `c_2*`} + -- let{`c*` : iN*} c#254*{c#254 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#129*{c'_1#129 <- `c'_1*`}, c'_2#81*{c'_2#81 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#292))*{iter#292 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#293))*{iter#293 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#328)))))*{c_1#328 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#210)))))*{c_2#210 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#294))*{iter#294 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#130*{c'_1#130 <- `c'_1*`}, c'_2#82*{c'_2#82 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#257)*{c#257 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#329*{c_1#329 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#211*{c_2#211 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#131*{c'_1#131 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#330)))*{c_1#330 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#83*{c'_2#83 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#212)))*{c_2#212 <- `c_2*`} + -- let{`c*` : iN*} c#256*{c#256 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#132*{c'_1#132 <- `c'_1*`}, c'_2#84*{c'_2#84 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#295))*{iter#295 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#296))*{iter#296 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#331)))))*{c_1#331 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#213)))))*{c_2#213 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#297))*{iter#297 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#133*{c'_1#133 <- `c'_1*`}, c'_2#85*{c'_2#85 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#259)*{c#259 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#332*{c_1#332 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#214*{c_2#214 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#134*{c'_1#134 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#333)))*{c_1#333 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#86*{c'_2#86 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#215)))*{c_2#215 <- `c_2*`} + -- let{`c*` : iN*} c#258*{c#258 <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#135*{c'_1#135 <- `c'_1*`}, c'_2#87*{c'_2#87 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#298))*{iter#298 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#299))*{iter#299 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#334)))))*{c_1#334 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#216)))))*{c_2#216 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I64_Jnn : Jnn <: lanetype)), iter#300))*{iter#300 <- $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1#136*{c'_1#136 <- `c'_1*`}, c'_2#88*{c'_2#88 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#261)*{c#261 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#335*{c_1#335 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#217*{c_2#217 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#137*{c'_1#137 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#336)))*{c_1#336 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#89*{c'_2#89 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#218)))*{c_2#218 <- `c_2*`} + -- let{`c*` : iN*} c#260*{c#260 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#138*{c'_1#138 <- `c'_1*`}, c'_2#90*{c'_2#90 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#301))*{iter#301 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#302))*{iter#302 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#337)))))*{c_1#337 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#219)))))*{c_2#219 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#303))*{iter#303 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#139*{c'_1#139 <- `c'_1*`}, c'_2#91*{c'_2#91 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#263)*{c#263 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#338*{c_1#338 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#220*{c_2#220 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#140*{c'_1#140 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#339)))*{c_1#339 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#92*{c'_2#92 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#221)))*{c_2#221 <- `c_2*`} + -- let{`c*` : iN*} c#262*{c#262 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#141*{c'_1#141 <- `c'_1*`}, c'_2#93*{c'_2#93 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#304))*{iter#304 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#305))*{iter#305 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#340)))))*{c_1#340 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#222)))))*{c_2#222 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#306))*{iter#306 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#142*{c'_1#142 <- `c'_1*`}, c'_2#94*{c'_2#94 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#265)*{c#265 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#341*{c_1#341 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#223*{c_2#223 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#143*{c'_1#143 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#342)))*{c_1#342 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#95*{c'_2#95 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#224)))*{c_2#224 <- `c_2*`} + -- let{`c*` : iN*} c#264*{c#264 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#144*{c'_1#144 <- `c'_1*`}, c'_2#96*{c'_2#96 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#307))*{iter#307 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#308))*{iter#308 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#343)))))*{c_1#343 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#225)))))*{c_2#225 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#309))*{iter#309 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#145*{c'_1#145 <- `c'_1*`}, c'_2#97*{c'_2#97 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#267)*{c#267 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#344*{c_1#344 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#226*{c_2#226 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#146*{c'_1#146 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#345)))*{c_1#345 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#98*{c'_2#98 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#227)))*{c_2#227 <- `c_2*`} + -- let{`c*` : iN*} c#266*{c#266 <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#147*{c'_1#147 <- `c'_1*`}, c'_2#99*{c'_2#99 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#310))*{iter#310 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#311))*{iter#311 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#346)))))*{c_1#346 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#228)))))*{c_2#228 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I8_Jnn : Jnn <: lanetype)), iter#312))*{iter#312 <- $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1#148*{c'_1#148 <- `c'_1*`}, c'_2#100*{c'_2#100 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#269)*{c#269 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#347*{c_1#347 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#229*{c_2#229 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#149*{c'_1#149 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#348)))*{c_1#348 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#101*{c'_2#101 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#230)))*{c_2#230 <- `c_2*`} + -- let{`c*` : iN*} c#268*{c#268 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#150*{c'_1#150 <- `c'_1*`}, c'_2#102*{c'_2#102 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#313))*{iter#313 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#314))*{iter#314 <- $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#349)))))*{c_1#349 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#231)))))*{c_2#231 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#315))*{iter#315 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#151*{c'_1#151 <- `c'_1*`}, c'_2#103*{c'_2#103 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#271)*{c#271 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#350*{c_1#350 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#232*{c_2#232 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#152*{c'_1#152 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#351)))*{c_1#351 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#104*{c'_2#104 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#233)))*{c_2#233 <- `c_2*`} + -- let{`c*` : iN*} c#270*{c#270 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#153*{c'_1#153 <- `c'_1*`}, c'_2#105*{c'_2#105 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#316))*{iter#316 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#317))*{iter#317 <- $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#352)))))*{c_1#352 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#234)))))*{c_2#234 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#318))*{iter#318 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#154*{c'_1#154 <- `c'_1*`}, c'_2#106*{c'_2#106 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#273)*{c#273 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#353*{c_1#353 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#235*{c_2#235 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#155*{c'_1#155 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#354)))*{c_1#354 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#107*{c'_2#107 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#236)))*{c_2#236 <- `c_2*`} + -- let{`c*` : iN*} c#272*{c#272 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#156*{c'_1#156 <- `c'_1*`}, c'_2#108*{c'_2#108 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#319))*{iter#319 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#320))*{iter#320 <- $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#355)))))*{c_1#355 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#237)))))*{c_2#237 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#321))*{iter#321 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#157*{c'_1#157 <- `c'_1*`}, c'_2#109*{c'_2#109 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#275)*{c#275 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#356*{c_1#356 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#238*{c_2#238 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#158*{c'_1#158 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#357)))*{c_1#357 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#110*{c'_2#110 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#239)))*{c_2#239 <- `c_2*`} + -- let{`c*` : iN*} c#274*{c#274 <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#159*{c'_1#159 <- `c'_1*`}, c'_2#111*{c'_2#111 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#322))*{iter#322 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), iter#323))*{iter#323 <- $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1#358)))))*{c_1#358 <- `c_1*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2#240)))))*{c_2#240 <- `c_2*`} + -- (wf_uN: `%%`($lsize((I16_Jnn : Jnn <: lanetype)), iter#324))*{iter#324 <- $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1#160*{c'_1#160 <- `c'_1*`}, c'_2#112*{c'_2#112 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivmul_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1#7*{i_1#7 <- `i_1*`}, i_2#7*{i_2#7 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#325))*{iter#325 <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#326))*{iter#326 <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#327))*{iter#327 <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#328))*{iter#328 <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#329))*{iter#329 <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#330))*{iter#330 <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#331))*{iter#331 <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#332))*{iter#332 <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#333))*{iter#333 <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#334))*{iter#334 <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#335))*{iter#335 <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#336))*{iter#336 <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#337))*{iter#337 <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#338))*{iter#338 <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#339))*{iter#339 <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#340))*{iter#340 <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax num = + | CONST(numtype : numtype, num_) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_num: `%`(num) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule num_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_num(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax vec = + | VCONST(vectype : vectype, vec_) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_vec: `%`(vec) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule vec_case_0{vectype : vectype, var_0 : vec_}: + `%`(VCONST_vec(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax result = + | _VALS(`val*` : val*) + | `(REF.EXN_ADDR%)THROW_REF`(exnaddr : exnaddr) + | TRAP + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_result: `%`(result) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_0{`val*` : val*}: + `%`(_VALS_result(`val*`)) + -- (wf_val: `%`(val))*{val <- `val*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_1{exnaddr : exnaddr}: + `%`(`(REF.EXN_ADDR%)THROW_REF`_result(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_2: + `%`(TRAP_result) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostfunc = + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funccode = + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funccode: `%`(funccode) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_funccode(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_1: + `%`(`...`_funccode) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax taginst = +{ + TYPE tagtype +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_taginst: `%`(taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_case_{var_0 : tagtype}: + `%`({TYPE var_0}) + -- wf_typeuse: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globalinst = +{ + TYPE globaltype, + VALUE val +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_globalinst: `%`(globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_case_{var_0 : globaltype, var_1 : val}: + `%`({TYPE var_0, VALUE var_1}) + -- wf_globaltype: `%`(var_0) + -- wf_val: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax meminst = +{ + TYPE memtype, + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_meminst: `%`(meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_case_{var_0 : memtype, var_1 : byte*}: + `%`({TYPE var_0, BYTES var_1}) + -- wf_memtype: `%`(var_0) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableinst = +{ + TYPE tabletype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_tableinst: `%`(tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_case_{var_0 : tabletype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_tabletype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcinst = +{ + TYPE deftype, + MODULE moduleinst, + CODE funccode +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funcinst: `%`(funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_case_{var_0 : deftype, var_1 : moduleinst, var_2 : funccode}: + `%`({TYPE var_0, MODULE var_1, CODE var_2}) + -- wf_moduleinst: `%`(var_1) + -- wf_funccode: `%`(var_2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax datainst = +{ + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_datainst: `%`(datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_case_{var_0 : byte*}: + `%`({BYTES var_0}) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax eleminst = +{ + TYPE elemtype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_eleminst: `%`(eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_case_{var_0 : elemtype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_reftype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax packval = + | PACK(packtype : packtype, iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_packval: `%`(packval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packval_case_0{packtype : packtype, var_0 : iN}: + `%`(PACK_packval(packtype, var_0)) + -- wf_uN: `%%`($psize(packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax fieldval = + | CONST(numtype : numtype, num_) + | VCONST(vectype : vectype, vec_) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + | PACK(packtype : packtype, iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_fieldval: `%`(fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_fieldval(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_1{vectype : vectype, var_0 : vec_}: + `%`(VCONST_fieldval(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_2{u31 : u31}: + `%`(`REF.I31_NUM`_fieldval(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_3: + `%`(`REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_4{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_5{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_6{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_7{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_8{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_9{ref : ref}: + `%`(`REF.EXTERN`_fieldval(ref)) + -- wf_ref: `%`(ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_10{packtype : packtype, var_0 : iN}: + `%`(PACK_fieldval(packtype, var_0)) + -- wf_uN: `%%`($psize(packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_structinst: `%`(structinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_arrayinst: `%`(arrayinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exninst = +{ + TAG tagaddr, + FIELDS val* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exninst: `%`(exninst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_case_{var_0 : tagaddr, var_1 : val*}: + `%`({TAG var_0, FIELDS var_1}) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax store = +{ + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_store: `%`(store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: + `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) + -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} + -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} + -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} + -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} + -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} + -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} + -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} + -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} + -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} + -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax state = + | `%;%`(store : store, frame : frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_state: `%`(state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule state_case_0{store : store, frame : frame}: + `%`(`%;%`_state(store, frame)) + -- wf_store: `%`(store) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax config = + | `%;%`(state : state, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_config: `%`(config) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule config_case_0{state : state, `instr*` : instr*}: + `%`(`%;%`_config(state, `instr*`)) + -- wf_state: `%`(state) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $Ki : nat + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $Ki = 1024 + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $packfield_(storagetype : storagetype, val : val) : fieldval? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(BOT_storagetype, val) = ?((val : val <: fieldval)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{`null?` : null?, heaptype : heaptype, val : val}(REF_storagetype(`null?`, heaptype), val) = ?((val : val <: fieldval)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(V128_storagetype, val) = ?((val : val <: fieldval)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(F64_storagetype, val) = ?((val : val <: fieldval)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(F32_storagetype, val) = ?((val : val <: fieldval)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(I64_storagetype, val) = ?((val : val <: fieldval)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(I32_storagetype, val) = ?((val : val <: fieldval)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation packfield__is_wf: `%%%`(storagetype : storagetype, val : val, ret_val : fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packfield__is_wf_0{storagetype : storagetype, val : val, ret_val : fieldval}: + `%%%`(storagetype, val, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_val: `%`(val) + -- if (ret_val = !($packfield_(storagetype, val))) + -- wf_fieldval: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(BOT_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(V128_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(F64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(F32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(I64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(I32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(BOT_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(V128_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(F64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(F32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(I64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(I32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(BOT_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(V128_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(F64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(F32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(I64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(I32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(BOT_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(V128_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(F64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(F32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(I64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(I32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(BOT_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(V128_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(F64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(F32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(I64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(I32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(BOT_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(V128_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(F64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(F32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(I64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(I32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(BOT_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{`null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(V128_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(F64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(F32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(I64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(I32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(BOT_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(V128_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(F64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(F32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(I64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(I32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(BOT_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(V128_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(F64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(F32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(I64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(I32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(BOT_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(V128_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(F64_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(F32_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(I64_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation unpackfield__is_wf: `%%%%`(storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule unpackfield__is_wf_0{storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val}: + `%%%%`(storagetype, var_0, fieldval, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = !($unpackfield_(storagetype, var_0, fieldval))) + -- wf_val: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.1-190.86 +def $tagsxa(externaddr*) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.23 + def $tagsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.42 + def $tagsxa{a : nat, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa#1*{xa#1 <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:198.1-198.57 + def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#2*{xa#2 <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.1-191.89 +def $globalsxa(externaddr*) : globaladdr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.26 + def $globalsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.51 + def $globalsxa{a : nat, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa#3*{xa#3 <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:202.1-202.63 + def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#4*{xa#4 <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.1-192.86 +def $memsxa(externaddr*) : memaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.23 + def $memsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.42 + def $memsxa{a : nat, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa#5*{xa#5 <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:206.1-206.57 + def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#6*{xa#6 <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.88 +def $tablesxa(externaddr*) : tableaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.25 + def $tablesxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.48 + def $tablesxa{a : nat, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa#7*{xa#7 <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:210.1-210.61 + def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#8*{xa#8 <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.87 +def $funcsxa(externaddr*) : funcaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.24 + def $funcsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.45 + def $funcsxa{a : nat, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa#9*{xa#9 <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:214.1-214.59 + def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#10*{xa#10 <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $store(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $store{s : store, f : frame}(`%;%`_state(s, f)) = s + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation store_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_is_wf_0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $store(state)) + -- wf_store: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $frame(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation frame_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_is_wf_0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $frame(state)) + -- wf_frame: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tagaddr(state : state) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $moduleinst(state : state) : moduleinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation moduleinst_is_wf: `%%`(state : state, ret_val : moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_is_wf_0{state : state, ret_val : moduleinst}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $moduleinst(state)) + -- wf_moduleinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $taginst(state : state) : taginst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation taginst_is_wf: `%%`(state : state, ret_val : taginst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_is_wf_0{state : state, ret_val : taginst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $taginst(state)) + -- (wf_taginst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $globalinst(state : state) : globalinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation globalinst_is_wf: `%%`(state : state, ret_val : globalinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_is_wf_0{state : state, ret_val : globalinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $globalinst(state)) + -- (wf_globalinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $meminst(state : state) : meminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation meminst_is_wf: `%%`(state : state, ret_val : meminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_is_wf_0{state : state, ret_val : meminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $meminst(state)) + -- (wf_meminst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tableinst(state : state) : tableinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tableinst_is_wf: `%%`(state : state, ret_val : tableinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_is_wf_0{state : state, ret_val : tableinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $tableinst(state)) + -- (wf_tableinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $funcinst(state : state) : funcinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation funcinst_is_wf: `%%`(state : state, ret_val : funcinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_is_wf_0{state : state, ret_val : funcinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $funcinst(state)) + -- (wf_funcinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $datainst(state : state) : datainst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation datainst_is_wf: `%%`(state : state, ret_val : datainst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_is_wf_0{state : state, ret_val : datainst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $datainst(state)) + -- (wf_datainst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $eleminst(state : state) : eleminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation eleminst_is_wf: `%%`(state : state, ret_val : eleminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_is_wf_0{state : state, ret_val : eleminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $eleminst(state)) + -- (wf_eleminst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $structinst(state : state) : structinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation structinst_is_wf: `%%`(state : state, ret_val : structinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_is_wf_0{state : state, ret_val : structinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $structinst(state)) + -- (wf_structinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $arrayinst(state : state) : arrayinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation arrayinst_is_wf: `%%`(state : state, ret_val : arrayinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_is_wf_0{state : state, ret_val : arrayinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $arrayinst(state)) + -- (wf_arrayinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $exninst(state : state) : exninst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation exninst_is_wf: `%%`(state : state, ret_val : exninst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_is_wf_0{state : state, ret_val : exninst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $exninst(state)) + -- (wf_exninst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fof(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fof{z : state}(z) = $frame(z) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fof_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fof_is_wf_0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $fof(state)) + -- wf_frame: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $type(state : state, typeidx : typeidx) : deftype + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $type{z : state, x : uN}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $sof(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $sof{z : state}(z) = $store(z) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation sof_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule sof_is_wf_0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $sof(state)) + -- wf_store: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tag(state : state, tagidx : tagidx) : taginst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tag_is_wf: `%%%`(state : state, tagidx : tagidx, ret_val : taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tag_is_wf_0{state : state, tagidx : tagidx, ret_val : taginst}: + `%%%`(state, tagidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $tag(state, tagidx)) + -- wf_taginst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $global(state : state, globalidx : globalidx) : globalinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation global_is_wf: `%%%`(state : state, globalidx : globalidx, ret_val : globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule global_is_wf_0{state : state, globalidx : globalidx, ret_val : globalinst}: + `%%%`(state, globalidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $global(state, globalidx)) + -- wf_globalinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $mem(state : state, memidx : memidx) : meminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation mem_is_wf: `%%%`(state : state, memidx : memidx, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule mem_is_wf_0{state : state, memidx : memidx, ret_val : meminst}: + `%%%`(state, memidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $mem(state, memidx)) + -- wf_meminst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $table(state : state, tableidx : tableidx) : tableinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation table_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule table_is_wf_0{state : state, tableidx : tableidx, ret_val : tableinst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $table(state, tableidx)) + -- wf_tableinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $func(state : state, funcidx : funcidx) : funcinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation func_is_wf: `%%%`(state : state, funcidx : funcidx, ret_val : funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule func_is_wf_0{state : state, funcidx : funcidx, ret_val : funcinst}: + `%%%`(state, funcidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $func(state, funcidx)) + -- wf_funcinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $data(state : state, dataidx : dataidx) : datainst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation data_is_wf: `%%%`(state : state, dataidx : dataidx, ret_val : datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule data_is_wf_0{state : state, dataidx : dataidx, ret_val : datainst}: + `%%%`(state, dataidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $data(state, dataidx)) + -- wf_datainst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $elem(state : state, tableidx : tableidx) : eleminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation elem_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule elem_is_wf_0{state : state, tableidx : tableidx, ret_val : eleminst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $elem(state, tableidx)) + -- wf_eleminst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $local(state : state, localidx : localidx) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation local_is_wf: `%%%`(state : state, localidx : localidx, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule local_is_wf_0{state : state, localidx : localidx, ret_val : val?}: + `%%%`(state, localidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $local(state, localidx)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_local(state : state, localidx : localidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_local_is_wf: `%%%%`(state : state, localidx : localidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_local_is_wf_0{state : state, localidx : localidx, val : val, ret_val : state}: + `%%%%`(state, localidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_local(state, localidx, val)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_global(state : state, globalidx : globalidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_global_is_wf: `%%%%`(state : state, globalidx : globalidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_global_is_wf_0{state : state, globalidx : globalidx, val : val, ret_val : state}: + `%%%%`(state, globalidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_global(state, globalidx, val)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_table_is_wf: `%%%%%`(state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_table_is_wf_0{state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state}: + `%%%%%`(state, tableidx, nat, ref, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_ref: `%`(ref) + -- if (ret_val = $with_table(state, tableidx, nat, ref)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_tableinst_is_wf: `%%%%`(state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_tableinst_is_wf_0{state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state}: + `%%%%`(state, tableidx, tableinst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_tableinst: `%`(tableinst) + -- if (ret_val = $with_tableinst(state, tableidx, tableinst)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_mem{z : state, x : uN, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b#1*{b#1 <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_mem_is_wf: `%%%%%%`(state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_mem_is_wf_0{state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state}: + `%%%%%%`(state, memidx, nat, nat_0, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_mem(state, memidx, nat, nat_0, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_meminst_is_wf: `%%%%`(state : state, memidx : memidx, meminst : meminst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_meminst_is_wf_0{state : state, memidx : memidx, meminst : meminst, ret_val : state}: + `%%%%`(state, memidx, meminst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- wf_meminst: `%`(meminst) + -- if (ret_val = $with_meminst(state, memidx, meminst)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_elem(state : state, elemidx : elemidx, ref*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_elem{z : state, x : uN, `r*` : ref*}(z, x, r#1*{r#1 <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_elem_is_wf: `%%%%`(state : state, elemidx : elemidx, var_0 : ref*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_elem_is_wf_0{state : state, elemidx : elemidx, var_0 : ref*, ret_val : state}: + `%%%%`(state, elemidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, elemidx) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_elem(state, elemidx, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_data(state : state, dataidx : dataidx, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b#2*{b#2 <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_data_is_wf: `%%%%`(state : state, dataidx : dataidx, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_data_is_wf_0{state : state, dataidx : dataidx, var_0 : byte*, ret_val : state}: + `%%%%`(state, dataidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_data(state, dataidx, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_struct_is_wf: `%%%%%`(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_struct_is_wf_0{state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, structaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_struct(state, structaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_array_is_wf: `%%%%%`(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_array_is_wf_0{state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, arrayaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_array(state, arrayaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_structinst(state : state, structinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_structinst{z : state, `si*` : structinst*}(z, si#1*{si#1 <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_structinst_is_wf: `%%%`(state : state, var_0 : structinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_structinst_is_wf_0{state : state, var_0 : structinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_structinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_structinst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_arrayinst(state : state, arrayinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai#1*{ai#1 <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_arrayinst_is_wf: `%%%`(state : state, var_0 : arrayinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_arrayinst_is_wf_0{state : state, var_0 : arrayinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_arrayinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_arrayinst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_exninst(state : state, exninst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_exninst{z : state, `exn*` : exninst*}(z, exn#1*{exn#1 <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_exninst_is_wf: `%%%`(state : state, var_0 : exninst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_exninst_is_wf_0{state : state, var_0 : exninst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_exninst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_exninst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, i' : uN}(tableinst, n, r) = ?(tableinst') + -- let{at : addrtype, i : u64, `j?` : u64?, rt : reftype, `r'*` : ref*} {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#1?{j#1 <- `j?`}), rt), REFS r'#1*{r'#1 <- `r'*`}} = tableinst + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#2?{j#2 <- `j?`}), rt), REFS r'#2*{r'#2 <- `r'*`} ++ r^n{}}) + -- if ($proj_uN_0(i').0 = (|r'#3*{r'#3 <- `r'*`}| + n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#3).0))?{j#3 <- `j?`} + -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#4?{j#4 <- `j?`}), rt), REFS r'#4*{r'#4 <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#5?{j#5 <- `j?`}), rt), REFS r'#5*{r'#5 <- `r'*`} ++ r^n{}}) + def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growtable_is_wf: `%%%%`(tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growtable_is_wf_0{tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst}: + `%%%%`(tableinst, nat, ref, ret_val) + -- wf_tableinst: `%`(tableinst) + -- wf_ref: `%`(ref) + -- if (ret_val = !($growtable(tableinst, nat, ref))) + -- wf_tableinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $growmem(meminst : meminst, nat : nat) : meminst? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $growmem{meminst : meminst, n : nat, meminst' : meminst, i' : uN}(meminst, n) = ?(meminst') + -- let{at : addrtype, i : u64, `j?` : u64?, `b*` : byte*} {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#3*{b#3 <- `b*`}} = meminst + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#4*{b#4 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#5*{b#5 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#8).0))?{j#8 <- `j?`} + -- if ($proj_uN_0(i').0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#9?{j#9 <- `j?`})), BYTES b#6*{b#6 <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#10?{j#10 <- `j?`})), BYTES b#7*{b#7 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growmem_is_wf: `%%%`(meminst : meminst, nat : nat, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growmem_is_wf_0{meminst : meminst, nat : nat, ret_val : meminst}: + `%%%`(meminst, nat, ret_val) + -- wf_meminst: `%`(meminst) + -- if (ret_val = !($growmem(meminst, nat))) + -- wf_meminst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Num_ok: `%|-%:%`(store, num, numtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, nt : numtype, c : num_}: + `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Vec_ok: `%|-%:%`(store, vec, vectype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, vt : vectype, c : vec_}: + `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +relation Ref_ok: `%|-%:%`(store, ref, reftype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.36 + rule null{s : store}: + `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.31 + rule i31{s : store, i : u31}: + `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.I31_NUM`_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 + rule struct{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- if (s.STRUCTS_store[a].TYPE_structinst = dt) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 + rule array{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 + rule func{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- if (s.FUNCS_store[a].TYPE_funcinst = dt) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 + rule exn{s : store, a : addr, exn : exninst}: + `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) + -- if (s.EXNS_store[a] = exn) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.33 + rule host{s : store, a : addr}: + `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.HOST_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 + rule extern{s : store, ref : ref}: + `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) + -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.EXTERN`_ref(ref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-69.34 + rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: + `%|-%:%`(s, ref, rt) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Val_ok: `%|-%:%`(store, val, valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule num{s : store, num : num, nt : numtype}: + `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) + -- Num_ok: `%|-%:%`(s, num, nt) + -- wf_store: `%`(s) + -- wf_num: `%`(num) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule vec{s : store, vec : vec, vt : vectype}: + `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) + -- Vec_ok: `%|-%:%`(s, vec, vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule ref{s : store, ref : ref, rt : reftype}: + `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Packval_ok: `%|-%:%`(store, packval, packtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, pt : packtype, c : iN}: + `%|-%:%`(s, PACK_packval(pt, c), pt) + -- wf_store: `%`(s) + -- wf_packval: `%`(PACK_packval(pt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule val{s : store, val : val, t : valtype}: + `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_val: `%`(val) + -- wf_valtype: `%`(t) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule packval{s : store, packval : packval, pt : packtype}: + `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) + -- Packval_ok: `%|-%:%`(s, packval, pt) + -- wf_store: `%`(s) + -- wf_packval: `%`(packval) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-104.84 +relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:106.1-108.28 + rule tag{s : store, a : addr, taginst : taginst}: + `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- if (s.TAGS_store[a] = taginst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:110.1-112.34 + rule global{s : store, a : addr, globalinst : globalinst}: + `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- if (s.GLOBALS_store[a] = globalinst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:114.1-116.28 + rule mem{s : store, a : addr, meminst : meminst}: + `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- if (s.MEMS_store[a] = meminst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:118.1-120.32 + rule table{s : store, a : addr, tableinst : tableinst}: + `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- if (s.TABLES_store[a] = tableinst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:122.1-124.30 + rule func{s : store, a : addr, funcinst : funcinst}: + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + -- if (s.FUNCS_store[a] = funcinst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:126.1-130.37 + rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: + `%|-%:%`(s, externaddr, xt) + -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') + -- Externtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt) + -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_valtype_is_wf: `%%%`(moduleinst : moduleinst, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_valtype_is_wf_0{moduleinst : moduleinst, valtype : valtype, ret_val : valtype}: + `%%%`(moduleinst, valtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $inst_valtype(moduleinst, valtype)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_reftype_is_wf: `%%%`(moduleinst : moduleinst, reftype : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_reftype_is_wf_0{moduleinst : moduleinst, reftype : reftype, ret_val : reftype}: + `%%%`(moduleinst, reftype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_reftype: `%`(reftype) + -- if (ret_val = $inst_reftype(moduleinst, reftype)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_globaltype_is_wf: `%%%`(moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_globaltype_is_wf_0{moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype}: + `%%%`(moduleinst, globaltype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = $inst_globaltype(moduleinst, globaltype)) + -- wf_globaltype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_memtype_is_wf: `%%%`(moduleinst : moduleinst, memtype : memtype, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_memtype_is_wf_0{moduleinst : moduleinst, memtype : memtype, ret_val : memtype}: + `%%%`(moduleinst, memtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $inst_memtype(moduleinst, memtype)) + -- wf_memtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_tabletype_is_wf: `%%%`(moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_tabletype_is_wf_0{moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype}: + `%%%`(moduleinst, tabletype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = $inst_tabletype(moduleinst, tabletype)) + -- wf_tabletype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_pure_before_ref.eq-true`: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref}: + `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_pure: `%~>%`(instr*, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule unreachable: + `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule nop: + `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule drop{val : val}: + `%~>%`([(val : val <: instr) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- if ($proj_uN_0(l).0 = 0) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- if ($proj_uN_0(l).0 > 0) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-true`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-false`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-null`{val : val, l : labelidx}: + `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- if (val = `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-addr`{val : val, l : labelidx}: + `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) + -- if (val =/= `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-null`{val : val, l : labelidx}: + `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) + -- if (val = `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-addr`{val : val, l : labelidx}: + `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) + -- if (val =/= `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call_indirect{x : idx, yy : typeuse}: + `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call_indirect{x : idx, yy : typeuse}: + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `frame-vals`{n : n, f : frame, `val*` : val*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: + `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-label`{n : n, `instr'*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-handler`{n : n, `catch*` : catch*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-frame`{n : n, f : frame}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `local.tee`{val : val, x : idx}: + `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) + -- wf_instr: `%`(`LOCAL.SET`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.i31`{i : num_}: + `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`REF.I31`_instr) + -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-true`{ref : ref}: + `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-false`{ref : ref}: + `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-null`{ref : ref}: + `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-addr`{ref : ref}: + `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) + -- if (ref_1 = ref_2) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-null`{sx : sx}: + `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-num`{i : u31, sx : sx}: + `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(`REF.I31_NUM`_instr(i)) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new`{val : val, n : n, x : idx}: + `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-null`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-addr`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-null`: + `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-addr`{ref : ref}: + `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) + -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- if (c <- $unop_(nt, unop, c_1)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- if ($unop_(nt, unop, c_1) = []) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- if (c <- $binop_(nt, binop, c_1, c_2)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- if ($binop_(nt, binop, c_1, c_2) = []) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) + -- wf_uN: `%%`(32, $testop_(nt, testop, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) + -- wf_uN: `%%`(32, $relop_(nt, relop, c_1, c_2)) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvunop_(V128_vectype, vvunop, c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvtestop{c_1 : vec_, c : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) + -- wf_uN: `%%`(32, $inez_($vsize(V128_vectype), c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vunop_(sh, vunop, c_1)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- if ($vunop_(sh, vunop, c_1) = []) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) + -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), i))*{i <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} + -- (wf_uN: `%%`(32, $inez_($jsizenn(Jnn), !($proj_lane__2(i)))))*{i <- `i*`} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) + -- wf_uN: `%%`(128, $vrelop_(sh, vrelop, c_1, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) + -- wf_uN: `%%`(128, $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) + -- wf_uN: `%%`(32, $vbitmaskop_(sh, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) + -- wf_uN: `%%`(128, $vswizzlop_(sh, swizzlop, c_1, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) + -- wf_uN: `%%`(128, $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: + `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- wf_uN: `%%`(32, $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)} + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) + -- wf_uN: `%%`(128, $vextunop__(sh_1, sh_2, vextunop, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) + -- wf_uN: `%%`(128, $vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) + -- wf_uN: `%%`(128, $vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) + -- wf_uN: `%%`(128, $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) + -- wf_uN: `%%`(128, $vcvtop__(sh_1, sh_2, vcvtop, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +def $blocktype_(state : state, blocktype : blocktype) : instrtype + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1#2*{t_1#2 <- `t_1*`}), `%`_resulttype(t_2#2*{t_2#2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#3*{t_1#3 <- `t_1*`}), `%`_resulttype(t_2#3*{t_2#3 <- `t_2*`}))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t#1?{t#1 <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation blocktype__is_wf: `%%%`(state : state, blocktype : blocktype, ret_val : instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule blocktype__is_wf_0{state : state, blocktype : blocktype, ret_val : instrtype}: + `%%%`(state, blocktype, ret_val) + -- wf_state: `%`(state) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $blocktype_(state, blocktype)) + -- wf_instrtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_throw_ref-handler-next`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.test-false`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-num`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read: `%~>%`(config, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`($blocktype_(z, bt)) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (m = |`val*`|) + -- if (m = |`t_1*`|) + -- if (n = |`t_2*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`($blocktype_(z, bt)) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (m = |`val*`|) + -- if (m = |`t_1*`|) + -- if (n = |`t_2*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + -- wf_moduleinst: `%`($moduleinst(z)) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-null`{z : state, yy : typeuse}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- if ($funcinst(z)[a] = fi) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- if (n = |`val*`|) + -- if (n = |`t_1*`|) + -- if (m = |`t_2*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + -- wf_moduleinst: `%`($moduleinst(z)) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) + -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (n = |`val*`|) + -- if (n = |`t_1*`|) + -- if (m = |`t_2*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) + -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`($blocktype_(z, bt)) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (m = |`val*`|) + -- if (m = |`t_1*`|) + -- if (n = |`t_2*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `local.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) + -- if ($local(z, x) = ?(val)) + -- wf_val: `%`(val) + -- (wf_val: `%`(iter))?{iter <- $local(z, x)} + -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `global.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) + -- if ($global(z, x).VALUE_globalinst = val) + -- wf_val: `%`(val) + -- wf_globalinst: `%`($global(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0] : ref <: instr)]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: + `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- if (|$table(z, x).REFS_tableinst| = n) + -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0] : ref <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) + -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, Jnn : Jnn}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[(($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (c = $extend__(N, 128, U_sx, j)) + -- wf_uN: `%%`(N, j) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $extend__(N, 128, U_sx, j)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, k)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.size`{z : state, x : idx, at : addrtype, n : n, lim : limits}: + `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) + -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL`_instr(ht)])) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.func`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) + -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [(ref : ref <: instr)]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) + -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))}*{zt <- `zt*`} + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} + -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])) : val <: instr)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_val: `%`(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]))) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (!($default_($unpack(zt))) = ?(val)) + -- wf_val: `%`(val) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))} + -- wf_valtype: `%`($unpack(zt)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- if (n = |`ref*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- (wf_instr: `%`($const(!($cunpack(zt)), $cunpacknum_(zt, c))))^n{c <- `c*`} + -- (wf_lit_: `%%`((!($cunpack(zt)) : consttype <: storagetype), $cunpacknum_(zt, c)))^n{c <- `c*`} + -- (wf_byte: `%`(iter))*{iter <- $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))} + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)}^n{c <- `c*`} + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (n = |`c*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])) : val <: instr)]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_val: `%`(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]))) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-array`{z : state, a : addr}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-null`{z : state, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) + -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null1`{z : state, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), []) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) + -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), []) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) + -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) + -- wf_ref: `%`(ref) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), []) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) + -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- wf_lit_: `%%`(zt, c) + -- wf_instr: `%`($const(!($cunpack(zt)), $cunpacknum_(zt, c))) + -- wf_lit_: `%%`((!($cunpack(zt)) : consttype <: storagetype), $cunpacknum_(zt, c)) + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)} + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +relation Step: `%~>%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.36 + rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:45.1-47.45 + rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 + rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if (a = |$exninst(z)|) + -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + -- wf_taginst: `%`($tag(z, x)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + -- if (n = |`val*`|) + -- if (n = |`t*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:305.1-306.56 + rule `local.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:318.1-319.58 + rule `global.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:332.1-334.33 + rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.32 + rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:347.1-350.46 + rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- if (ti = !($growtable($table(z, x), n, ref))) + -- wf_tableinst: `%`(!($growtable($table(z, x), n, ref))) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:352.1-353.87 + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:413.1-414.51 + rule `elem.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:497.1-500.60 + rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:502.1-506.29 + rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $nbytes_(nt, c)) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:508.1-511.52 + rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:513.1-517.52 + rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))} + -- wf_uN: `%%`(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c)))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:519.1-522.63 + rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:524.1-527.31 + rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:530.1-533.50 + rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:535.1-540.49 + rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:549.1-552.37 + rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (mi = !($growmem($mem(z, x), n))) + -- wf_meminst: `%`(!($growmem($mem(z, x), n))) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:554.1-555.84 + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:615.1-616.51 + rule `data.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:692.1-696.65 + rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (a = |$structinst(z)|) + -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + -- if (n = |`val*`|) + -- if (n = |`mut?*`|) + -- if (n = |`zt*`|) + -- if (n = |`val*`|) + -- if (n = |`zt*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:713.1-714.55 + rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:716.1-719.46 + rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:732.1-737.65 + rule `array.new_fixed`{z : state, n : n, `val*` : val*, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:777.1-778.66 + rule `array.set-null`{z : state, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:780.1-782.39 + rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:784.1-787.44 + rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +relation Steps: `%~>*%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + rule refl{z : state, `instr*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: + `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 +def $alloctypes(type*) : deftype* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 + def $alloctypes([]) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 + def $alloctypes{`type'*` : type*, type : type, `deftype*` : deftype*, x : uN}(type'#1*{type'#1 <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- let{`deftype'*` : deftype*} deftype'#1*{deftype'#1 <- `deftype'*`} = $alloctypes(type'#2*{type'#2 <- `type'*`}) + -- let{rectype : rectype} TYPE_type(rectype) = type + -- if (deftype#1*{deftype#1 <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype'#2 : deftype <: typeuse)*{deftype'#2 <- `deftype'*`})) + -- if ($proj_uN_0(x).0 = |deftype'#3*{deftype'#3 <- `deftype'*`}|) + -- wf_uN: `%%`(32, x) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- if (taginst = {TYPE tagtype}) + -- wf_taginst: `%`({TYPE tagtype}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctag_is_wf: `%%%`(store : store, tagtype : tagtype, ret_val : (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctag_is_wf_0{store : store, tagtype : tagtype, ret_val : (store, tagaddr)}: + `%%%`(store, tagtype, ret_val) + -- wf_store: `%`(store) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = $alloctag(store, tagtype)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 +def $alloctags(store : store, tagtype*) : (store, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 + def $alloctags{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 + def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*}(s, [tagtype] ++ tagtype'#1*{tagtype'#1 <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) + -- let{ja : tagaddr, s_1 : store} (s_1, ja) = $alloctag(s, tagtype) + -- let{s_2 : store, `ja'*` : tagaddr*} (s_2, ja'#1*{ja'#1 <- `ja'*`}) = $alloctags(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}) + -- wf_store: `%`($alloctag(s, tagtype).0) + -- wf_store: `%`($alloctags(s_1, tagtype'#3*{tagtype'#3 <- `tagtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation alloctags_is_wf: `%%%`(store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule alloctags_is_wf_0{store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_typeuse: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $alloctags(store, var_0)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- if (globalinst = {TYPE globaltype, VALUE val}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocglobal_is_wf: `%%%%`(store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocglobal_is_wf_0{store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)}: + `%%%%`(store, globaltype, val, ret_val) + -- wf_store: `%`(store) + -- wf_globaltype: `%`(globaltype) + -- wf_val: `%`(val) + -- if (ret_val = $allocglobal(store, globaltype, val)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 +def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 + def $allocglobals{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 + def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*}(s, [globaltype] ++ globaltype'#1*{globaltype'#1 <- `globaltype'*`}, [val] ++ val'#1*{val'#1 <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) + -- let{ga : globaladdr, s_1 : store} (s_1, ga) = $allocglobal(s, globaltype, val) + -- let{s_2 : store, `ga'*` : globaladdr*} (s_2, ga'#1*{ga'#1 <- `ga'*`}) = $allocglobals(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}) + -- wf_store: `%`($allocglobal(s, globaltype, val).0) + -- wf_store: `%`($allocglobals(s_1, globaltype'#3*{globaltype'#3 <- `globaltype'*`}, val'#3*{val'#3 <- `val'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation allocglobals_is_wf: `%%%%`(store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule allocglobals_is_wf_0{store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $allocglobals(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocmem(store : store, memtype : memtype) : (store, memaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#11?{j#11 <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#12?{j#12 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#13?{j#13 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmem_is_wf: `%%%`(store : store, memtype : memtype, ret_val : (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmem_is_wf_0{store : store, memtype : memtype, ret_val : (store, memaddr)}: + `%%%`(store, memtype, ret_val) + -- wf_store: `%`(store) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $allocmem(store, memtype)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 +def $allocmems(store : store, memtype*) : (store, memaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 + def $allocmems{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 + def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*}(s, [memtype] ++ memtype'#1*{memtype'#1 <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) + -- let{ma : memaddr, s_1 : store} (s_1, ma) = $allocmem(s, memtype) + -- let{s_2 : store, `ma'*` : memaddr*} (s_2, ma'#1*{ma'#1 <- `ma'*`}) = $allocmems(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}) + -- wf_store: `%`($allocmem(s, memtype).0) + -- wf_store: `%`($allocmems(s_1, memtype'#3*{memtype'#3 <- `memtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation allocmems_is_wf: `%%%`(store : store, var_0 : memtype*, ret_val : (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule allocmems_is_wf_0{store : store, var_0 : memtype*, ret_val : (store, memaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_memtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocmems(store, var_0)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j#14?{j#14 <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#15?{j#15 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#16?{j#16 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctable_is_wf: `%%%%`(store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctable_is_wf_0{store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)}: + `%%%%`(store, tabletype, ref, ret_val) + -- wf_store: `%`(store) + -- wf_tabletype: `%`(tabletype) + -- wf_ref: `%`(ref) + -- if (ret_val = $alloctable(store, tabletype, ref)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 +def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 + def $alloctables{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 + def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*}(s, [tabletype] ++ tabletype'#1*{tabletype'#1 <- `tabletype'*`}, [ref] ++ ref'#1*{ref'#1 <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) + -- let{ta : tableaddr, s_1 : store} (s_1, ta) = $alloctable(s, tabletype, ref) + -- let{s_2 : store, `ta'*` : tableaddr*} (s_2, ta'#1*{ta'#1 <- `ta'*`}) = $alloctables(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}) + -- wf_store: `%`($alloctable(s, tabletype, ref).0) + -- wf_store: `%`($alloctables(s_1, tabletype'#3*{tabletype'#3 <- `tabletype'*`}, ref'#3*{ref'#3 <- `ref'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation alloctables_is_wf: `%%%%`(store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule alloctables_is_wf_0{store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_tabletype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $alloctables(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocfunc_is_wf: `%%%%%`(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocfunc_is_wf_0{store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)}: + `%%%%%`(store, deftype, funccode, moduleinst, ret_val) + -- wf_store: `%`(store) + -- wf_funccode: `%`(funccode) + -- wf_moduleinst: `%`(moduleinst) + -- if (ret_val = $allocfunc(store, deftype, funccode, moduleinst)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 +def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 + def $allocfuncs{s : store}(s, [], [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 + def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*}(s, [dt] ++ dt'#3*{dt'#3 <- `dt'*`}, [funccode] ++ funccode'#1*{funccode'#1 <- `funccode'*`}, [moduleinst] ++ moduleinst'#1*{moduleinst'#1 <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) + -- let{fa : funcaddr, s_1 : store} (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) + -- let{s_2 : store, `fa'*` : funcaddr*} (s_2, fa'#1*{fa'#1 <- `fa'*`}) = $allocfuncs(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}) + -- wf_store: `%`($allocfunc(s, dt, funccode, moduleinst).0) + -- wf_store: `%`($allocfuncs(s_1, dt'#5*{dt'#5 <- `dt'*`}, funccode'#3*{funccode'#3 <- `funccode'*`}, moduleinst'#3*{moduleinst'#3 <- `moduleinst'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation allocfuncs_is_wf: `%%%%%`(store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule allocfuncs_is_wf_0{store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)}: + `%%%%%`(store, var_0, var_1, var_2, ret_val) + -- wf_store: `%`(store) + -- (wf_funccode: `%`(var_1))*{var_1 <- var_1} + -- (wf_moduleinst: `%`(var_2))*{var_2 <- var_2} + -- if (ret_val = $allocfuncs(store, var_0, var_1, var_2)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte#2*{byte#2 <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- if (datainst = {BYTES byte#3*{byte#3 <- `byte*`}}) + -- wf_datainst: `%`({BYTES byte#4*{byte#4 <- `byte*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocdata_is_wf: `%%%%`(store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocdata_is_wf_0{store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)}: + `%%%%`(store, datatype, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocdata(store, datatype, var_0)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 +def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 + def $allocdatas{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 + def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**}(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#8*{b#8 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- let{da : dataaddr, s_1 : store} (s_1, da) = $allocdata(s, ok, b#9*{b#9 <- `b*`}) + -- let{s_2 : store, `da'*` : dataaddr*} (s_2, da'#1*{da'#1 <- `da'*`}) = $allocdatas(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}) + -- wf_store: `%`($allocdata(s, ok, b#10*{b#10 <- `b*`}).0) + -- wf_store: `%`($allocdatas(s_1, ok'#3*{ok'#3 <- `ok'*`}, b'#3*{b'#3 <- `b'*#3`}*{`b'*#3` <- `b'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation allocdatas_is_wf: `%%%%`(store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule allocdatas_is_wf_0{store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocdatas(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref#1*{ref#1 <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- if (eleminst = {TYPE elemtype, REFS ref#2*{ref#2 <- `ref*`}}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref#3*{ref#3 <- `ref*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocelem_is_wf: `%%%%`(store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocelem_is_wf_0{store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)}: + `%%%%`(store, elemtype, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_reftype: `%`(elemtype) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocelem(store, elemtype, var_0)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 +def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 + def $allocelems{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 + def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**}(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#4*{ref'#4 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + -- let{ea : elemaddr, s_1 : store} (s_1, ea) = $allocelem(s, rt, ref#5*{ref#5 <- `ref*`}) + -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'#1*{ea'#1 <- `ea'*`}) = $allocelems(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#5*{ref'#5 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}) + -- wf_store: `%`($allocelem(s, rt, ref#6*{ref#6 <- `ref*`}).0) + -- wf_store: `%`($allocelems(s_1, rt'#3*{rt'#3 <- `rt'*`}, ref'#6*{ref'#6 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation allocelems_is_wf: `%%%%`(store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule allocelems_is_wf_0{store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_reftype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocelems(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexport(moduleinst : moduleinst, export : export) : exportinst + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexport_is_wf: `%%%`(moduleinst : moduleinst, export : export, ret_val : exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexport_is_wf_0{moduleinst : moduleinst, export : export, ret_val : exportinst}: + `%%%`(moduleinst, export, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_export: `%`(export) + -- if (ret_val = $allocexport(moduleinst, export)) + -- wf_exportinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexports(moduleinst : moduleinst, export*) : exportinst* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export#3*{export#3 <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexports_is_wf: `%%%`(moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexports_is_wf_0{moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*}: + `%%%`(moduleinst, var_0, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- (wf_export: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocexports(moduleinst, var_0)) + -- (wf_exportinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `xi*` : exportinst*}(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}) = (s_7, moduleinst) + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#2*{type#2 <- `type*`}), `%`_list(import#2*{import#2 <- `import*`}), `%`_list(tag#2*{tag#2 <- `tag*`}), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list(func#3*{func#3 <- `func*`}), `%`_list(data#2*{data#2 <- `data*`}), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#4*{export#4 <- `export*`})) = module + -- if (tag#3*{tag#3 <- `tag*`} = TAG_tag(tagtype#78)*{tagtype#78 <- `tagtype*`}) + -- if (global#4*{global#4 <- `global*`} = GLOBAL_global(globaltype#122, expr_G#1)*{expr_G#1 <- `expr_G*`, globaltype#122 <- `globaltype*`}) + -- if (mem#4*{mem#4 <- `mem*`} = MEMORY_mem(memtype#122)*{memtype#122 <- `memtype*`}) + -- if (table#4*{table#4 <- `table*`} = TABLE_table(tabletype#156, expr_T#1)*{expr_T#1 <- `expr_T*`, tabletype#156 <- `tabletype*`}) + -- if (func#4*{func#4 <- `func*`} = FUNC_func(x#2, local#2*{local#2 <- `local*#82`}, expr_F#1)*{expr_F#1 <- `expr_F*`, `local*#82` <- `local**`, x#2 <- `x*`}) + -- if (data#3*{data#3 <- `data*`} = DATA_data(byte#5*{byte#5 <- `byte*#110`}, datamode#110)*{`byte*#110` <- `byte**`, datamode#110 <- `datamode*`}) + -- if (elem#4*{elem#4 <- `elem*`} = ELEM_elem(elemtype#1, expr_E#1*{expr_E#1 <- `expr_E*#1`}, elemmode#230)*{elemmode#230 <- `elemmode*`, elemtype#1 <- `elemtype*`, `expr_E*#1` <- `expr_E**`}) + -- let{`aa_I*` : tagaddr*} aa_I#1*{aa_I#1 <- `aa_I*`} = $tagsxa(externaddr#2*{externaddr#2 <- `externaddr*`}) + -- let{`ga_I*` : globaladdr*} ga_I#1*{ga_I#1 <- `ga_I*`} = $globalsxa(externaddr#3*{externaddr#3 <- `externaddr*`}) + -- let{`ma_I*` : memaddr*} ma_I#1*{ma_I#1 <- `ma_I*`} = $memsxa(externaddr#4*{externaddr#4 <- `externaddr*`}) + -- let{`ta_I*` : tableaddr*} ta_I#1*{ta_I#1 <- `ta_I*`} = $tablesxa(externaddr#5*{externaddr#5 <- `externaddr*`}) + -- let{`fa_I*` : funcaddr*} fa_I#1*{fa_I#1 <- `fa_I*`} = $funcsxa(externaddr#6*{externaddr#6 <- `externaddr*`}) + -- let{`dt*` : deftype*} dt#8*{dt#8 <- `dt*`} = $alloctypes(type#3*{type#3 <- `type*`}) + -- let{`fa*` : nat*} fa#1*{fa#1 <- `fa*`} = (|s.FUNCS_store| + i_F#1)^(i_F#1<|func#5*{func#5 <- `func*`}|){} + -- let{s_1 : store, `aa*` : tagaddr*} (s_1, aa#1*{aa#1 <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype#80, (dt#9 : deftype <: typeuse)*{dt#9 <- `dt*`})*{tagtype#80 <- `tagtype*`}) + -- let{s_2 : store, `ga*` : globaladdr*} (s_2, ga#1*{ga#1 <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype#124, (dt#10 : deftype <: typeuse)*{dt#10 <- `dt*`})*{globaltype#124 <- `globaltype*`}, val_G#2*{val_G#2 <- `val_G*`}) + -- let{s_3 : store, `ma*` : memaddr*} (s_3, ma#1*{ma#1 <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype#124, (dt#11 : deftype <: typeuse)*{dt#11 <- `dt*`})*{memtype#124 <- `memtype*`}) + -- let{s_4 : store, `ta*` : tableaddr*} (s_4, ta#1*{ta#1 <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype#158, (dt#12 : deftype <: typeuse)*{dt#12 <- `dt*`})*{tabletype#158 <- `tabletype*`}, ref_T#2*{ref_T#2 <- `ref_T*`}) + -- let{s_5 : store, `da*` : dataaddr*} (s_5, da#1*{da#1 <- `da*`}) = $allocdatas(s_4, OK_datatype^|data#4*{data#4 <- `data*`}|{}, byte#6*{byte#6 <- `byte*#112`}*{`byte*#112` <- `byte**`}) + -- let{s_6 : store, `ea*` : elemaddr*} (s_6, ea#1*{ea#1 <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype#2, (dt#13 : deftype <: typeuse)*{dt#13 <- `dt*`})*{elemtype#2 <- `elemtype*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}) + -- if ((s_7, fa#2*{fa#2 <- `fa*`}) = $allocfuncs(s_6, dt#14*{dt#14 <- `dt*`}[$proj_uN_0(x#3).0]*{x#3 <- `x*`}, FUNC_funccode(x#4, local#3*{local#3 <- `local*#84`}, expr_F#2)*{expr_F#2 <- `expr_F*`, `local*#84` <- `local**`, x#4 <- `x*`}, moduleinst^|func#6*{func#6 <- `func*`}|{})) + -- if (xi#1*{xi#1 <- `xi*`} = $allocexports({TYPES [], TAGS aa_I#2*{aa_I#2 <- `aa_I*`} ++ aa#2*{aa#2 <- `aa*`}, GLOBALS ga_I#2*{ga_I#2 <- `ga_I*`} ++ ga#2*{ga#2 <- `ga*`}, MEMS ma_I#2*{ma_I#2 <- `ma_I*`} ++ ma#2*{ma#2 <- `ma*`}, TABLES ta_I#2*{ta_I#2 <- `ta_I*`} ++ ta#2*{ta#2 <- `ta*`}, FUNCS fa_I#2*{fa_I#2 <- `fa_I*`} ++ fa#3*{fa#3 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#5*{export#5 <- `export*`})) + -- if (moduleinst = {TYPES dt#15*{dt#15 <- `dt*`}, TAGS aa_I#3*{aa_I#3 <- `aa_I*`} ++ aa#3*{aa#3 <- `aa*`}, GLOBALS ga_I#3*{ga_I#3 <- `ga_I*`} ++ ga#3*{ga#3 <- `ga*`}, MEMS ma_I#3*{ma_I#3 <- `ma_I*`} ++ ma#3*{ma#3 <- `ma*`}, TABLES ta_I#3*{ta_I#3 <- `ta_I*`} ++ ta#3*{ta#3 <- `ta*`}, FUNCS fa_I#3*{fa_I#3 <- `fa_I*`} ++ fa#4*{fa#4 <- `fa*`}, DATAS da#2*{da#2 <- `da*`}, ELEMS ea#2*{ea#2 <- `ea*`}, EXPORTS xi#2*{xi#2 <- `xi*`}}) + -- wf_store: `%`($alloctags(s, $subst_all_tagtype(tagtype#81, (dt#16 : deftype <: typeuse)*{dt#16 <- `dt*`})*{tagtype#81 <- `tagtype*`}).0) + -- (wf_typeuse: `%`($subst_all_tagtype(tagtype#82, (dt#17 : deftype <: typeuse)*{dt#17 <- `dt*`})))*{tagtype#82 <- `tagtype*`} + -- wf_store: `%`($allocglobals(s_1, $subst_all_globaltype(globaltype#125, (dt#18 : deftype <: typeuse)*{dt#18 <- `dt*`})*{globaltype#125 <- `globaltype*`}, val_G#3*{val_G#3 <- `val_G*`}).0) + -- (wf_globaltype: `%`($subst_all_globaltype(globaltype#126, (dt#19 : deftype <: typeuse)*{dt#19 <- `dt*`})))*{globaltype#126 <- `globaltype*`} + -- wf_store: `%`($allocmems(s_2, $subst_all_memtype(memtype#125, (dt#20 : deftype <: typeuse)*{dt#20 <- `dt*`})*{memtype#125 <- `memtype*`}).0) + -- (wf_memtype: `%`($subst_all_memtype(memtype#126, (dt#21 : deftype <: typeuse)*{dt#21 <- `dt*`})))*{memtype#126 <- `memtype*`} + -- wf_store: `%`($alloctables(s_3, $subst_all_tabletype(tabletype#159, (dt#22 : deftype <: typeuse)*{dt#22 <- `dt*`})*{tabletype#159 <- `tabletype*`}, ref_T#3*{ref_T#3 <- `ref_T*`}).0) + -- (wf_tabletype: `%`($subst_all_tabletype(tabletype#160, (dt#23 : deftype <: typeuse)*{dt#23 <- `dt*`})))*{tabletype#160 <- `tabletype*`} + -- wf_store: `%`($allocdatas(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#113`}*{`byte*#113` <- `byte**`}).0) + -- wf_store: `%`($allocelems(s_5, $subst_all_reftype(elemtype#3, (dt#24 : deftype <: typeuse)*{dt#24 <- `dt*`})*{elemtype#3 <- `elemtype*`}, ref_E#3*{ref_E#3 <- `ref_E*#3`}*{`ref_E*#3` <- `ref_E**`}).0) + -- (wf_reftype: `%`($subst_all_reftype(elemtype#4, (dt#25 : deftype <: typeuse)*{dt#25 <- `dt*`})))*{elemtype#4 <- `elemtype*`} + -- wf_store: `%`($allocfuncs(s_6, dt#26*{dt#26 <- `dt*`}[$proj_uN_0(x#5).0]*{x#5 <- `x*`}, FUNC_funccode(x#6, local#4*{local#4 <- `local*#85`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#85` <- `local**`, x#6 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}).0) + -- (wf_exportinst: `%`(iter#341))*{iter#341 <- $allocexports({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#6*{export#6 <- `export*`})} + -- wf_module: `%`(MODULE_module(`%`_list(type#4*{type#4 <- `type*`}), `%`_list(import#3*{import#3 <- `import*`}), `%`_list(tag#4*{tag#4 <- `tag*`}), `%`_list(global#5*{global#5 <- `global*`}), `%`_list(mem#5*{mem#5 <- `mem*`}), `%`_list(table#5*{table#5 <- `table*`}), `%`_list(func#8*{func#8 <- `func*`}), `%`_list(data#6*{data#6 <- `data*`}), `%`_list(elem#5*{elem#5 <- `elem*`}), start#4?{start#4 <- `start?`}, `%`_list(export#7*{export#7 <- `export*`}))) + -- (wf_tag: `%`(TAG_tag(tagtype#83)))*{tagtype#83 <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype#127, expr_G#2)))*{expr_G#2 <- `expr_G*`, globaltype#127 <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype#127)))*{memtype#127 <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype#161, expr_T#2)))*{expr_T#2 <- `expr_T*`, tabletype#161 <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x#7, local#5*{local#5 <- `local*#86`}, expr_F#4)))*{expr_F#4 <- `expr_F*`, `local*#86` <- `local**`, x#7 <- `x*`} + -- (wf_data: `%`(DATA_data(byte#8*{byte#8 <- `byte*#114`}, datamode#112)))*{`byte*#114` <- `byte**`, datamode#112 <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype#5, expr_E#2*{expr_E#2 <- `expr_E*#2`}, elemmode#232)))*{elemmode#232 <- `elemmode*`, elemtype#5 <- `elemtype*`, `expr_E*#2` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt#27*{dt#27 <- `dt*`}, TAGS aa_I#6*{aa_I#6 <- `aa_I*`} ++ aa#6*{aa#6 <- `aa*`}, GLOBALS ga_I#6*{ga_I#6 <- `ga_I*`} ++ ga#6*{ga#6 <- `ga*`}, MEMS ma_I#6*{ma_I#6 <- `ma_I*`} ++ ma#6*{ma#6 <- `ma*`}, TABLES ta_I#6*{ta_I#6 <- `ta_I*`} ++ ta#6*{ta#6 <- `ta*`}, FUNCS fa_I#6*{fa_I#6 <- `fa_I*`} ++ fa#7*{fa#7 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmodule_is_wf: `%%%%%%%`(store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmodule_is_wf_0{store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)}: + `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- (wf_ref: `%`(var_2))*{var_2 <- var_2} + -- (wf_ref: `%`(var_3))*{var_3 <- var_3}*{var_3 <- var_3} + -- if (ret_val = $allocmodule(store, module, var_0, var_1, var_2, var_3)) + -- wf_store: `%`(ret_val.0) + -- wf_moduleinst: `%`(ret_val.1) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $rundata_(dataidx : dataidx, data : data) : instr* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : uN, n : nat, `b*` : byte*}(x, DATA_data(b#11*{b#11 <- `b*`}, PASSIVE_datamode)) = [] + -- if (n = |`b*`|) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}(x, DATA_data(b#12*{b#12 <- `b*`}, ACTIVE_datamode(y, instr#9*{instr#9 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] + -- if (n = |`b*`|) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation rundata__is_wf: `%%%`(dataidx : dataidx, data : data, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule rundata__is_wf_0{dataidx : dataidx, data : data, ret_val : instr*}: + `%%%`(dataidx, data, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- wf_data: `%`(data) + -- if (ret_val = $rundata_(dataidx, data)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $runelem_(elemidx : elemidx, elem : elem) : instr* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e#1*{e#1 <- `e*`}, PASSIVE_elemmode)) = [] + -- if (n = |`e*`|) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e#2*{e#2 <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] + -- if (n = |`e*`|) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e#3*{e#3 <- `e*`}, ACTIVE_elemmode(y, instr#10*{instr#10 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] + -- if (n = |`e*`|) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation runelem__is_wf: `%%%`(elemidx : elemidx, elem : elem, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule runelem__is_wf_0{elemidx : elemidx, elem : elem, ret_val : instr*}: + `%%%`(elemidx, elem, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- wf_elem: `%`(elem) + -- if (ret_val = $runelem_(elemidx, elem)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.92 +def $evalexprs(state : state, expr*) : (state, ref*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.34 + def $evalexprs{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-165.46 + def $evalexprs{z : state, expr : instr*, `expr'*` : expr*, ref : ref, z' : state}(z, [expr] ++ expr'#1*{expr'#1 <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) + -- let{z'' : state, `ref'*` : ref*} (z'', ref'#7*{ref'#7 <- `ref'*`}) = $evalexprs(z', expr'#2*{expr'#2 <- `expr'*`}) + -- wf_state: `%`(z') + -- wf_state: `%`($evalexprs(z', expr'#3*{expr'#3 <- `expr'*`}).0) + -- (wf_ref: `%`(iter#342))*{iter#342 <- $evalexprs(z', expr'#4*{expr'#4 <- `expr'*`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation evalexprs_is_wf: `%%%`(state : state, var_0 : expr*, ret_val : (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule evalexprs_is_wf_0{state : state, var_0 : expr*, ret_val : (state, ref*)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprs(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- ret_val.1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.1-167.96 +def $evalexprss(state : state, expr**) : (state, ref**) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:168.1-168.35 + def $evalexprss{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.1-172.49 + def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**}(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#5*{expr'#5 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- let{`ref*` : ref*, z' : state} (z', ref#7*{ref#7 <- `ref*`}) = $evalexprs(z, expr#366*{expr#366 <- `expr*`}) + -- let{z'' : state, `ref'**` : ref**} (z'', ref'#8*{ref'#8 <- `ref'*#4`}*{`ref'*#4` <- `ref'**`}) = $evalexprss(z', expr'#6*{expr'#6 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}) + -- wf_state: `%`($evalexprs(z, expr#367*{expr#367 <- `expr*`}).0) + -- (wf_ref: `%`(iter#343))*{iter#343 <- $evalexprs(z, expr#368*{expr#368 <- `expr*`}).1} + -- wf_state: `%`($evalexprss(z', expr'#7*{expr'#7 <- `expr'*#3`}*{`expr'*#3` <- `expr'**`}).0) + -- (wf_ref: `%`(iter#345))*{iter#345 <- iter#344}*{iter#344 <- $evalexprss(z', expr'#8*{expr'#8 <- `expr'*#4`}*{`expr'*#4` <- `expr'**`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation evalexprss_is_wf: `%%%`(state : state, var_0 : expr**, ret_val : (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule evalexprss_is_wf_0{state : state, var_0 : expr**, ret_val : (state, ref**)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprss(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- ret_val.1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.1-174.111 +def $evalglobals(state : state, globaltype*, expr*) : (state, val*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:175.1-175.41 + def $evalglobals{z : state}(z, [], []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, val : val, z' : state}(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#9*{expr'#9 <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) + -- let{s : store, f : frame} `%;%`_state(s, f) = z' + -- let{s' : store, a : addr} (s', a) = $allocglobal(s, gt, val) + -- let{z'' : state, `val'*` : val*} (z'', val'#4*{val'#4 <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#10*{expr'#10 <- `expr'*`}) + -- wf_state: `%`(z') + -- wf_store: `%`($allocglobal(s, gt, val).0) + -- wf_state: `%`($evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#3*{gt'#3 <- `gt'*`}, expr'#11*{expr'#11 <- `expr'*`}).0) + -- (wf_val: `%`(iter#346))*{iter#346 <- $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#4*{gt'#4 <- `gt'*`}, expr'#12*{expr'#12 <- `expr'*`}).1} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation evalglobals_is_wf: `%%%%`(state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule evalglobals_is_wf_0{state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)}: + `%%%%`(state, var_0, var_1, ret_val) + -- wf_state: `%`(state) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_instr: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $evalglobals(state, var_0, var_1)) + -- wf_state: `%`(ret_val.0) + -- (wf_val: `%`(iter))*{iter <- ret_val.1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $instantiate(store : store, module : module, externaddr*) : config + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $instantiate{s : store, module : module, `externaddr*` : externaddr*, `xt_I*` : externtype*, `xt_E*` : externtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, i_D : nat, i_E : nat}(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I#1*{xt_I#1 <- `xt_I*`}, xt_E#1*{xt_E#1 <- `xt_E*`})) + -- (Externaddr_ok: `%|-%:%`(s, externaddr#8, xt_I#2))*{externaddr#8 <- `externaddr*`, xt_I#2 <- `xt_I*`} + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#5*{type#5 <- `type*`}), `%`_list(import#4*{import#4 <- `import*`}), `%`_list(tag#5*{tag#5 <- `tag*`}), `%`_list(global#6*{global#6 <- `global*`}), `%`_list(mem#6*{mem#6 <- `mem*`}), `%`_list(table#6*{table#6 <- `table*`}), `%`_list(func#9*{func#9 <- `func*`}), `%`_list(data#7*{data#7 <- `data*`}), `%`_list(elem#6*{elem#6 <- `elem*`}), start#5?{start#5 <- `start?`}, `%`_list(export#8*{export#8 <- `export*`})) = module + -- if (global#7*{global#7 <- `global*`} = GLOBAL_global(globaltype#129, expr_G#3)*{expr_G#3 <- `expr_G*`, globaltype#129 <- `globaltype*`}) + -- if (table#7*{table#7 <- `table*`} = TABLE_table(tabletype#163, expr_T#3)*{expr_T#3 <- `expr_T*`, tabletype#163 <- `tabletype*`}) + -- if (data#8*{data#8 <- `data*`} = DATA_data(byte#9*{byte#9 <- `byte*#118`}, datamode#116)*{`byte*#118` <- `byte**`, datamode#116 <- `datamode*`}) + -- if (elem#7*{elem#7 <- `elem*`} = ELEM_elem(reftype#516, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#516 <- `reftype*`}) + -- if (start#6?{start#6 <- `start?`} = START_start(x#8)?{x#8 <- `x?`}) + -- if (moduleinst_0 = {TYPES $alloctypes(type#6*{type#6 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#9*{externaddr#9 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#10*{externaddr#10 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#10*{func#10 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- let{z' : state, `val_G*` : val*} (z', val_G#4*{val_G#4 <- `val_G*`}) = $evalglobals(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#4*{expr_G#4 <- `expr_G*`}) + -- let{z'' : state, `ref_T*` : ref*} (z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = $evalexprs(z', expr_T#4*{expr_T#4 <- `expr_T*`}) + -- let{z''' : state, `ref_E**` : ref**} (z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = $evalexprss(z'', expr_E#4*{expr_E#4 <- `expr_E*#4`}*{`expr_E*#4` <- `expr_E**`}) + -- let{s''' : store, f : frame} `%;%`_state(s''', f) = z''' + -- let{s'''' : store, moduleinst : moduleinst} (s'''', moduleinst) = $allocmodule(s''', module, externaddr#11*{externaddr#11 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}) + -- let{`instr_D*` : instr*} instr_D#1*{instr_D#1 <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#1), data#10*{data#10 <- `data*`}[i_D#1])^(i_D#1<|data#9*{data#9 <- `data*`}|){}) + -- let{`instr_E*` : instr*} instr_E#1*{instr_E#1 <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#1), elem#9*{elem#9 <- `elem*`}[i_E#1])^(i_E#1<|elem#8*{elem#8 <- `elem*`}|){}) + -- let{`instr_S?` : instr?} instr_S#1?{instr_S#1 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`} + -- wf_state: `%`(z) + -- wf_state: `%`($evalglobals(z, globaltype#132*{globaltype#132 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}).0) + -- (wf_val: `%`(iter#347))*{iter#347 <- $evalglobals(z, globaltype#133*{globaltype#133 <- `globaltype*`}, expr_G#6*{expr_G#6 <- `expr_G*`}).1} + -- wf_state: `%`($evalexprs(z', expr_T#5*{expr_T#5 <- `expr_T*`}).0) + -- (wf_ref: `%`(iter#348))*{iter#348 <- $evalexprs(z', expr_T#6*{expr_T#6 <- `expr_T*`}).1} + -- wf_state: `%`($evalexprss(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}).0) + -- (wf_ref: `%`(iter#350))*{iter#350 <- iter#349}*{iter#349 <- $evalexprss(z'', expr_E#6*{expr_E#6 <- `expr_E*#6`}*{`expr_E*#6` <- `expr_E**`}).1} + -- wf_store: `%`($allocmodule(s''', module, externaddr#12*{externaddr#12 <- `externaddr*`}, val_G#6*{val_G#6 <- `val_G*`}, ref_T#6*{ref_T#6 <- `ref_T*`}, ref_E#6*{ref_E#6 <- `ref_E*#6`}*{`ref_E*#6` <- `ref_E**`}).0) + -- wf_moduleinst: `%`($allocmodule(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#7*{val_G#7 <- `val_G*`}, ref_T#7*{ref_T#7 <- `ref_T*`}, ref_E#7*{ref_E#7 <- `ref_E*#7`}*{`ref_E*#7` <- `ref_E**`}).1) + -- (wf_instr: `%`(iter#351))*{iter#351 <- $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#2), data#12*{data#12 <- `data*`}[i_D#2])^(i_D#2<|data#11*{data#11 <- `data*`}|){})} + -- (wf_instr: `%`(iter#352))*{iter#352 <- $rundata_(`%`_dataidx(i_D#3), data#14*{data#14 <- `data*`}[i_D#3])}^(i_D#3<|data#13*{data#13 <- `data*`}|){} + -- (wf_instr: `%`(iter#353))*{iter#353 <- $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#2), elem#11*{elem#11 <- `elem*`}[i_E#2])^(i_E#2<|elem#10*{elem#10 <- `elem*`}|){})} + -- (wf_instr: `%`(iter#354))*{iter#354 <- $runelem_(`%`_elemidx(i_E#3), elem#13*{elem#13 <- `elem*`}[i_E#3])}^(i_E#3<|elem#12*{elem#12 <- `elem*`}|){} + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I#3*{xt_I#3 <- `xt_I*`}, xt_E#2*{xt_E#2 <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(`%`_list(type#7*{type#7 <- `type*`}), `%`_list(import#5*{import#5 <- `import*`}), `%`_list(tag#6*{tag#6 <- `tag*`}), `%`_list(global#8*{global#8 <- `global*`}), `%`_list(mem#7*{mem#7 <- `mem*`}), `%`_list(table#8*{table#8 <- `table*`}), `%`_list(func#11*{func#11 <- `func*`}), `%`_list(data#15*{data#15 <- `data*`}), `%`_list(elem#14*{elem#14 <- `elem*`}), start#7?{start#7 <- `start?`}, `%`_list(export#9*{export#9 <- `export*`}))) + -- (wf_global: `%`(GLOBAL_global(globaltype#134, expr_G#7)))*{expr_G#7 <- `expr_G*`, globaltype#134 <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype#165, expr_T#7)))*{expr_T#7 <- `expr_T*`, tabletype#165 <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte#10*{byte#10 <- `byte*#120`}, datamode#118)))*{`byte*#120` <- `byte**`, datamode#118 <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype#518, expr_E#7*{expr_E#7 <- `expr_E*#7`}, elemmode#239)))*{elemmode#239 <- `elemmode*`, `expr_E*#7` <- `expr_E**`, reftype#518 <- `reftype*`} + -- (wf_start: `%`(START_start(x#10)))?{x#10 <- `x?`} + -- wf_moduleinst: `%`({TYPES $alloctypes(type#8*{type#8 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#14*{externaddr#14 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#15*{externaddr#15 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#12*{func#12 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- wf_state: `%`(`%;%`_state(s''', f)) + -- (wf_uN: `%%`(32, `%`_uN(i_D#4)))^(i_D#4<|data#16*{data#16 <- `data*`}|){} + -- (wf_uN: `%%`(32, `%`_uN(i_E#4)))^(i_E#4<|elem#15*{elem#15 <- `elem*`}|){} + -- (wf_instr: `%`(CALL_instr(x#11)))?{x#11 <- `x?`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation instantiate_is_wf: `%%%%`(store : store, module : module, var_0 : externaddr*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule instantiate_is_wf_0{store : store, module : module, var_0 : externaddr*, ret_val : config}: + `%%%%`(store, module, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- if (ret_val = $instantiate(store, module, var_0)) + -- wf_config: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $invoke(store : store, funcaddr : funcaddr, val*) : config + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val#1*{val#1 <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1#4*{t_1#4 <- `t_1*`}), `%`_resulttype(t_2#4*{t_2#4 <- `t_2*`}))) + -- (Val_ok: `%|-%:%`(s, val#2, t_1#5))*{t_1#5 <- `t_1*`, val#2 <- `val*`} + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#6*{t_1#6 <- `t_1*`}), `%`_resulttype(t_2#5*{t_2#5 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation invoke_is_wf: `%%%%`(store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule invoke_is_wf_0{store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config}: + `%%%%`(store, funcaddr, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_val: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $invoke(store, funcaddr, var_0)) + -- wf_config: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax castop = (null?, null?) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax memidxop = (memidx, memarg) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax startopt = start* + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax code = (local*, expr) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax nopt = u32* + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +def $ieee_(N : N, rat : rat) : fNmag + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation ieee__is_wf: `%%%`(N : N, rat : rat, ret_val : fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule ieee__is_wf_0{N : N, rat : rat, ret_val : fNmag}: + `%%%`(N, rat, ret_val) + -- if (ret_val = $ieee_(N, rat)) + -- wf_fNmag: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax idctxt = +{ + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation wf_idctxt: `%`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) + -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} + -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} + -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} + -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} + -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} + -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} + -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} + -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} + -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} + -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax I = idctxt + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 +def $concat_idctxt(idctxt*) : idctxt + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 + def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 + def $concat_idctxt{I : idctxt, `I'*` : I*}([I] ++ I'#1*{I'#1 <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation concat_idctxt_is_wf: `%%`(var_0 : idctxt*, ret_val : idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule concat_idctxt_is_wf_0{var_0 : idctxt*, ret_val : idctxt}: + `%%`(var_0, ret_val) + -- (wf_idctxt: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $concat_idctxt(var_0)) + -- wf_idctxt: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation Idctxt_ok: `|-%:OK`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule _{I : I, `field**` : char**}: + `|-%:OK`(I) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) + -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} + -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) + -- wf_idctxt: `%`(I) + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TYPES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TAGS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.GLOBALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.MEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TABLES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.FUNCS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.DATAS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.ELEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LOCALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LABELS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])}*{`field*` <- `field**`} + -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $dots : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +syntax decl = + | TYPE(rectype : rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype : memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx : funcidx) + | EXPORT(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +relation wf_decl: `%`(decl) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_0{rectype : rectype}: + `%`(TYPE_decl(rectype)) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_1{name : name, name_0 : name, externtype : externtype}: + `%`(IMPORT_decl(name, name_0, externtype)) + -- wf_name: `%`(name) + -- wf_name: `%`(name_0) + -- wf_externtype: `%`(externtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_2{tagtype : tagtype}: + `%`(TAG_decl(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_3{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_decl(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_4{memtype : memtype}: + `%`(MEMORY_decl(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_5{tabletype : tabletype, expr : expr}: + `%`(TABLE_decl(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_6{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_decl(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_7{`byte*` : byte*, datamode : datamode}: + `%`(DATA_decl(`byte*`, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_8{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_decl(reftype, `expr*`, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_9{funcidx : funcidx}: + `%`(START_decl(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_10{name : name, externidx : externidx}: + `%`(EXPORT_decl(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 +def $typesd(decl*) : type* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 + def $typesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:271.1-271.48 + def $typesd{rectype : rectype, `decl'*` : decl*}([TYPE_decl(rectype)] ++ decl'#1*{decl'#1 <- `decl'*`}) = [TYPE_type(rectype)] ++ $typesd(decl'#2*{decl'#2 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:272.1-272.57 + def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#3*{decl'#3 <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 +def $importsd(decl*) : import* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 + def $importsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:275.1-275.56 + def $importsd{name : name, name_0 : name, externtype : externtype, `decl'*` : decl*}([IMPORT_decl(name, name_0, externtype)] ++ decl'#4*{decl'#4 <- `decl'*`}) = [IMPORT_import(name, name_0, externtype)] ++ $importsd(decl'#5*{decl'#5 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:276.1-276.61 + def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#6*{decl'#6 <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation importsd_is_wf: `%%`(var_0 : decl*, ret_val : import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule importsd_is_wf_0{var_0 : decl*, ret_val : import*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $importsd(var_0)) + -- (wf_import: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 +def $tagsd(decl*) : tag* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 + def $tagsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:279.1-279.44 + def $tagsd{tagtype : tagtype, `decl'*` : decl*}([TAG_decl(tagtype)] ++ decl'#7*{decl'#7 <- `decl'*`}) = [TAG_tag(tagtype)] ++ $tagsd(decl'#8*{decl'#8 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:280.1-280.55 + def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#9*{decl'#9 <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation tagsd_is_wf: `%%`(var_0 : decl*, ret_val : tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule tagsd_is_wf_0{var_0 : decl*, ret_val : tag*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tagsd(var_0)) + -- (wf_tag: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 +def $globalsd(decl*) : global* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 + def $globalsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:283.1-283.56 + def $globalsd{globaltype : globaltype, expr : expr, `decl'*` : decl*}([GLOBAL_decl(globaltype, expr)] ++ decl'#10*{decl'#10 <- `decl'*`}) = [GLOBAL_global(globaltype, expr)] ++ $globalsd(decl'#11*{decl'#11 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:284.1-284.61 + def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#12*{decl'#12 <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation globalsd_is_wf: `%%`(var_0 : decl*, ret_val : global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule globalsd_is_wf_0{var_0 : decl*, ret_val : global*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsd(var_0)) + -- (wf_global: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 +def $memsd(decl*) : mem* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 + def $memsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:287.1-287.44 + def $memsd{memtype : memtype, `decl'*` : decl*}([MEMORY_decl(memtype)] ++ decl'#13*{decl'#13 <- `decl'*`}) = [MEMORY_mem(memtype)] ++ $memsd(decl'#14*{decl'#14 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:288.1-288.55 + def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#15*{decl'#15 <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation memsd_is_wf: `%%`(var_0 : decl*, ret_val : mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule memsd_is_wf_0{var_0 : decl*, ret_val : mem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsd(var_0)) + -- (wf_mem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 +def $tablesd(decl*) : table* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 + def $tablesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:291.1-291.52 + def $tablesd{tabletype : tabletype, expr : expr, `decl'*` : decl*}([TABLE_decl(tabletype, expr)] ++ decl'#16*{decl'#16 <- `decl'*`}) = [TABLE_table(tabletype, expr)] ++ $tablesd(decl'#17*{decl'#17 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:292.1-292.59 + def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#18*{decl'#18 <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation tablesd_is_wf: `%%`(var_0 : decl*, ret_val : table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule tablesd_is_wf_0{var_0 : decl*, ret_val : table*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesd(var_0)) + -- (wf_table: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 +def $funcsd(decl*) : func* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 + def $funcsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:295.1-295.48 + def $funcsd{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*}([FUNC_decl(typeidx, `local*`, expr)] ++ decl'#19*{decl'#19 <- `decl'*`}) = [FUNC_func(typeidx, `local*`, expr)] ++ $funcsd(decl'#20*{decl'#20 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:296.1-296.57 + def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#21*{decl'#21 <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation funcsd_is_wf: `%%`(var_0 : decl*, ret_val : func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule funcsd_is_wf_0{var_0 : decl*, ret_val : func*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $funcsd(var_0)) + -- (wf_func: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 +def $datasd(decl*) : data* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 + def $datasd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:299.1-299.48 + def $datasd{`byte*` : byte*, datamode : datamode, `decl'*` : decl*}([DATA_decl(`byte*`, datamode)] ++ decl'#22*{decl'#22 <- `decl'*`}) = [DATA_data(`byte*`, datamode)] ++ $datasd(decl'#23*{decl'#23 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:300.1-300.57 + def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#24*{decl'#24 <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation datasd_is_wf: `%%`(var_0 : decl*, ret_val : data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule datasd_is_wf_0{var_0 : decl*, ret_val : data*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $datasd(var_0)) + -- (wf_data: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 +def $elemsd(decl*) : elem* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 + def $elemsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:303.1-303.48 + def $elemsd{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*}([ELEM_decl(reftype, `expr*`, elemmode)] ++ decl'#25*{decl'#25 <- `decl'*`}) = [ELEM_elem(reftype, `expr*`, elemmode)] ++ $elemsd(decl'#26*{decl'#26 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:304.1-304.57 + def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#27*{decl'#27 <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation elemsd_is_wf: `%%`(var_0 : decl*, ret_val : elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule elemsd_is_wf_0{var_0 : decl*, ret_val : elem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $elemsd(var_0)) + -- (wf_elem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 +def $startsd(decl*) : start* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 + def $startsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:307.1-307.52 + def $startsd{funcidx : funcidx, `decl'*` : decl*}([START_decl(funcidx)] ++ decl'#28*{decl'#28 <- `decl'*`}) = [START_start(funcidx)] ++ $startsd(decl'#29*{decl'#29 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:308.1-308.59 + def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#30*{decl'#30 <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation startsd_is_wf: `%%`(var_0 : decl*, ret_val : start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule startsd_is_wf_0{var_0 : decl*, ret_val : start*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $startsd(var_0)) + -- (wf_start: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 +def $exportsd(decl*) : export* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 + def $exportsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:311.1-311.56 + def $exportsd{name : name, externidx : externidx, `decl'*` : decl*}([EXPORT_decl(name, externidx)] ++ decl'#31*{decl'#31 <- `decl'*`}) = [EXPORT_export(name, externidx)] ++ $exportsd(decl'#32*{decl'#32 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:312.1-312.61 + def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#33*{decl'#33 <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation exportsd_is_wf: `%%`(var_0 : decl*, ret_val : export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule exportsd_is_wf_0{var_0 : decl*, ret_val : export*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $exportsd(var_0)) + -- (wf_export: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $ordered(decl*) : bool + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + def $ordered{`decl*` : decl*}(decl#1*{decl#1 <- `decl*`}) = true + -- if ($importsd(decl#2*{decl#2 <- `decl*`}) = []) + -- (wf_import: `%`(iter#355))*{iter#355 <- $importsd(decl#3*{decl#3 <- `decl*`})} + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + def $ordered{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*}(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}) = (((((($importsd(decl_1#7*{decl_1#7 <- `decl_1*`}) = []) /\ ($tagsd(decl_1#6*{decl_1#6 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1#5*{decl_1#5 <- `decl_1*`}) = [])) /\ ($memsd(decl_1#4*{decl_1#4 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1#3*{decl_1#3 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1#2*{decl_1#2 <- `decl_1*`}) = [])) + +;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec +relation Context_ok: `|-%:OK`(context) + ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec + rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `|-%:OK`(C) + -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (Deftype_ok: `%|-%:OK`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{dt_F <- `dt_F*`, t_1 <- `t_1*`, t_2 <- `t_2*`} + -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- `et*`} + -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- `lct*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt : reftype <: valtype)])))*{rt <- `rt*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)])))?{rt' <- `rt'?`} + -- (if ($proj_uN_0(x).0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} + -- wf_context: `%`(C) + -- wf_context: `%`(C_0) + -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (wf_context: `%`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + -- if (n = |`dt*`|) + -- if (m = |`st*`|) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Localval_ok: `%|-%:%`(store, val?, localtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule set{s : store, val : val, t : valtype}: + `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_val: `%`(val) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule unset{s : store}: + `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, BOT_valtype)) + -- wf_store: `%`(s) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, BOT_valtype)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Datainst_ok: `%|-%:%`(store, datainst, datatype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `b*` : byte*}: + `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) + -- wf_store: `%`(s) + -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + -- wf_store: `%`(s) + -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exportinst_ok: `%|-%:OK`(store, exportinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, nm : name, xa : externaddr, xt : externtype}: + `%|-%:OK`(s, {NAME nm, ADDR xa}) + -- Externaddr_ok: `%|-%:%`(s, xa, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_exportinst: `%`({NAME nm, ADDR xa}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `deftype*` : deftype*, `tagaddr*` : tagaddr*, `globaladdr*` : globaladdr*, `memaddr*` : memaddr*, `tableaddr*` : tableaddr*, `funcaddr*` : funcaddr*, `dataaddr*` : dataaddr*, `elemaddr*` : elemaddr*, `exportinst*` : exportinst*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `memtype*` : memtype*, `tabletype*` : tabletype*, `deftype_F*` : deftype*, `datatype*` : datatype*, `elemtype*` : elemtype*, `subtype*` : subtype*}: + `%|-%:%`(s, {TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}, {TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) + -- (Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, deftype))*{deftype <- `deftype*`} + -- (Externaddr_ok: `%|-%:%`(s, TAG_externaddr(tagaddr), TAG_externtype(tagtype)))*{tagaddr <- `tagaddr*`, tagtype <- `tagtype*`} + -- (Externaddr_ok: `%|-%:%`(s, GLOBAL_externaddr(globaladdr), GLOBAL_externtype(globaltype)))*{globaladdr <- `globaladdr*`, globaltype <- `globaltype*`} + -- (Externaddr_ok: `%|-%:%`(s, FUNC_externaddr(funcaddr), FUNC_externtype((deftype_F : deftype <: typeuse))))*{deftype_F <- `deftype_F*`, funcaddr <- `funcaddr*`} + -- (Externaddr_ok: `%|-%:%`(s, MEM_externaddr(memaddr), MEM_externtype(memtype)))*{memaddr <- `memaddr*`, memtype <- `memtype*`} + -- (Externaddr_ok: `%|-%:%`(s, TABLE_externaddr(tableaddr), TABLE_externtype(tabletype)))*{tableaddr <- `tableaddr*`, tabletype <- `tabletype*`} + -- (Datainst_ok: `%|-%:%`(s, s.DATAS_store[dataaddr], datatype))*{dataaddr <- `dataaddr*`, datatype <- `datatype*`} + -- (Eleminst_ok: `%|-%:%`(s, s.ELEMS_store[elemaddr], elemtype))*{elemaddr <- `elemaddr*`, elemtype <- `elemtype*`} + -- (Exportinst_ok: `%|-%:OK`(s, exportinst))*{exportinst <- `exportinst*`} + -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) + -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} + -- wf_store: `%`(s) + -- wf_moduleinst: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}) + -- wf_context: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (wf_externtype: `%`(TAG_externtype(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_externtype: `%`(GLOBAL_externtype(globaltype)))*{globaltype <- `globaltype*`} + -- (wf_externtype: `%`(FUNC_externtype((deftype_F : deftype <: typeuse))))*{deftype_F <- `deftype_F*`} + -- (wf_externtype: `%`(MEM_externtype(memtype)))*{memtype <- `memtype*`} + -- (wf_externtype: `%`(TABLE_externtype(tabletype)))*{tabletype <- `tabletype*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Frame_ok: `%|-%:%`(store, frame, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `val?*` : val?*, moduleinst : moduleinst, C : context, `lct*` : localtype*}: + `%|-%:%`(s, {LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}, C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) + -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) + -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:3.1-4.36 +relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:10.1-12.46 + rule plain{s : store, C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 + rule ref{s : store, C : context, ref : ref, rt : reftype}: + `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_ref: `%`(ref) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 + rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: + `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) + -- if (n = |`t'*`|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:23.1-26.37 + rule frame{s : store, C : context, n : n, f : frame, `instr*` : instr*, `t*` : valtype*, C' : context}: + `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) + -- Frame_ok: `%|-%:%`(s, f, C') + -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`})) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) + -- if (n = |`t*`|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 + rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 + rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRAP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 +relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 + rule empty{s : store, C : context}: + `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 + rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: + `%;%|-%:%`(s, C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:47.1-51.33 + rule sub{s : store, C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it') + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 + rule frame{s : store, C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 +relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:60.1-62.44 + rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, jt : tagtype}: + `%|-%:%`(s, {TYPE jt}, jt) + -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) + -- wf_store: `%`(s) + -- wf_taginst: `%`({TYPE jt}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `mut?` : mut?, t : valtype, val : val}: + `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Meminst_ok: `%|-%:%`(store, meminst, memtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, m : m, `b*` : byte*}: + `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) + -- wf_store: `%`(s) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, m : m, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- if (|ref*{ref <- `ref*`}| = n) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + -- wf_store: `%`(s) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) + -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, moduleinst : moduleinst, func : func, C : context, dt' : deftype}: + `%|-%:%`(s, {TYPE dt, MODULE moduleinst, CODE (func : func <: funccode)}, dt) + -- Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt) + -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) + -- Func_ok: `%|-%:%`(C, func, dt') + -- Deftype_sub: `%|-%<:%`(C, dt', dt) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE (func : func <: funccode)}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Structinst_ok: `%|-%:OK`(store, structinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, `fv*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} + -- wf_store: `%`(s) + -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, `fv*` : fieldval*, `mut?` : mut?, zt : storagetype}: + `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} + -- wf_store: `%`(s) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exninst_ok: `%|-%:OK`(store, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, ta : tagaddr, `val*` : val*, dt : deftype, `t*` : valtype*}: + `%|-%:OK`(s, {TAG ta, FIELDS val*{val <- `val*`}}) + -- if ((dt : deftype <: typeuse) = s.TAGS_store[ta].TYPE_taginst) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} + -- wf_store: `%`(s) + -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:208.1-209.50 +relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:222.1-225.35 + rule trans{fv_1 : fieldval, s : store, fv_2 : fieldval, fv' : fieldval}: + `%>>_%%`(fv_1, s, fv_2) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv') + -- ImmutReachable: `%>>_%%`(fv', s, fv_2) + -- wf_fieldval: `%`(fv_1) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(fv_2) + -- wf_fieldval: `%`(fv') + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 + rule `ref.struct`{a : addr, s : store, i : nat, `ft*` : fieldtype*, zt : storagetype}: + `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) + -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:232.1-234.42 + rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: + `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) + -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 + rule `ref.exn`{a : addr, s : store, i : nat}: + `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, (s.EXNS_store[a].FIELDS_exninst[i] : val <: fieldval)) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 + rule `ref.extern`{ref : ref, s : store}: + `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(ref)) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +def $NotImmutReachable(fieldval : fieldval, store : store, fieldval : fieldval) : bool + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = false + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = true + -- otherwise + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `~%>>_%%`(fv_1, s, fv_2) + -- if $NotImmutReachable(fv_1, s, fv_2) + -- wf_fieldval: `%`(fv_1) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Store_ok: `|-%:OK`(store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `taginst*` : taginst*, `tagtype*` : tagtype*, `globalinst*` : globalinst*, `globaltype*` : globaltype*, `meminst*` : meminst*, `memtype*` : memtype*, `tableinst*` : tableinst*, `tabletype*` : tabletype*, `deftype*` : deftype*, `funcinst*` : funcinst*, `datainst*` : datainst*, `datatype*` : datatype*, `eleminst*` : eleminst*, `elemtype*` : elemtype*, `structinst*` : structinst*, `arrayinst*` : arrayinst*, `exninst*` : exninst*}: + `|-%:OK`(s) + -- (Taginst_ok: `%|-%:%`(s, taginst, tagtype))*{taginst <- `taginst*`, tagtype <- `tagtype*`} + -- (Globalinst_ok: `%|-%:%`(s, globalinst, globaltype))*{globalinst <- `globalinst*`, globaltype <- `globaltype*`} + -- (Meminst_ok: `%|-%:%`(s, meminst, memtype))*{meminst <- `meminst*`, memtype <- `memtype*`} + -- (Tableinst_ok: `%|-%:%`(s, tableinst, tabletype))*{tableinst <- `tableinst*`, tabletype <- `tabletype*`} + -- (Funcinst_ok: `%|-%:%`(s, funcinst, deftype))*{deftype <- `deftype*`, funcinst <- `funcinst*`} + -- (Datainst_ok: `%|-%:%`(s, datainst, datatype))*{datainst <- `datainst*`, datatype <- `datatype*`} + -- (Eleminst_ok: `%|-%:%`(s, eleminst, elemtype))*{eleminst <- `eleminst*`, elemtype <- `elemtype*`} + -- (Structinst_ok: `%|-%:OK`(s, structinst))*{structinst <- `structinst*`} + -- (Arrayinst_ok: `%|-%:OK`(s, arrayinst))*{arrayinst <- `arrayinst*`} + -- (Exninst_ok: `%|-%:OK`(s, exninst))*{exninst <- `exninst*`} + -- (NotImmutReachable: `~%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, `REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + -- wf_store: `%`(s) + -- (wf_typeuse: `%`(tagtype))*{tagtype <- `tagtype*`} + -- (wf_globaltype: `%`(globaltype))*{globaltype <- `globaltype*`} + -- (wf_memtype: `%`(memtype))*{memtype <- `memtype*`} + -- (wf_tabletype: `%`(tabletype))*{tabletype <- `tabletype*`} + -- (wf_reftype: `%`(elemtype))*{elemtype <- `elemtype*`} + -- (wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- wf_store: `%`({TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_taginst: `%<=%`(taginst, taginst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{jt : tagtype}: + `%<=%`({TYPE jt}, {TYPE jt}) + -- wf_taginst: `%`({TYPE jt}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_globalinst: `%<=%`(globalinst, globalinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: + `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_meminst: `%<=%`(meminst, meminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, m : m, `b*` : byte*, n' : n, `b'*` : byte*}: + `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) + -- if (n <= n') + -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_tableinst: `%<=%`(tableinst, tableinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, m : m, rt : reftype, `ref*` : ref*, n' : n, `ref'*` : ref*}: + `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) + -- if (n <= n') + -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_funcinst: `%<=%`(funcinst, funcinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, mm : moduleinst, fc : funccode}: + `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) + -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_datainst: `%<=%`(datainst, datainst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`b*` : byte*, `b'*` : byte*}: + `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) + -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) + -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) + -- wf_datainst: `%`({BYTES b'*{b' <- `b'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_eleminst: `%<=%`(eleminst, eleminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: + `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) + -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) + -- wf_eleminst: `%`({TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_structinst: `%<=%`(structinst, structinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} + -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?` : mut?, zt : storagetype}: + `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_exninst: `%<=%`(exninst, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{ta : tagaddr, `val*` : val*}: + `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) + -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_store: `%<=%`(store, store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, s' : store}: + `%<=%`(s, s') + -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} + -- (Extend_globalinst: `%<=%`(s.GLOBALS_store[a], s'.GLOBALS_store[a]))^(a<|s.GLOBALS_store|){} + -- (Extend_meminst: `%<=%`(s.MEMS_store[a], s'.MEMS_store[a]))^(a<|s.MEMS_store|){} + -- (Extend_tableinst: `%<=%`(s.TABLES_store[a], s'.TABLES_store[a]))^(a<|s.TABLES_store|){} + -- (Extend_funcinst: `%<=%`(s.FUNCS_store[a], s'.FUNCS_store[a]))^(a<|s.FUNCS_store|){} + -- (Extend_datainst: `%<=%`(s.DATAS_store[a], s'.DATAS_store[a]))^(a<|s.DATAS_store|){} + -- (Extend_eleminst: `%<=%`(s.ELEMS_store[a], s'.ELEMS_store[a]))^(a<|s.ELEMS_store|){} + -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} + -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} + -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} + -- wf_store: `%`(s) + -- wf_store: `%`(s') + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation State_ok: `|-%:%`(state, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, C : context}: + `|-%:%`(`%;%`_state(s, f), C) + -- Store_ok: `|-%:OK`(s) + -- Frame_ok: `%|-%:%`(s, f, C) + -- wf_context: `%`(C) + -- wf_state: `%`(`%;%`_state(s, f)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Config_ok: `|-%:%`(config, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- (wf_valtype: `%`(t))*{t <- `t*`} + -- wf_context: `%`(C) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`})) + -- wf_state: `%`(`%;%`_state(s, f)) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax A = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax B = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax sym = + | _FIRST(A_1 : A) + | _DOTS + | _LAST(A_n : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax symsplit = + | _FIRST(A_1 : A) + | _LAST(A_2 : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax recorddots = () + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax record = +{ + FIELD_1 A, + FIELD_2 A, + `...` recorddots +} + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax pth = + | PTHSYNTAX + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +syntax T = nat + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremise: `%`(nat) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremisedots: `...` + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingScheme: `%`(nat) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec + rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: + `%`(conclusion) + -- NotationTypingPremise: `%`(premise_1) + -- NotationTypingPremise: `%`(premise_2) + -- NotationTypingPremisedots: `...` + -- NotationTypingPremise: `%`(premise_n) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 +relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 + rule `i32.add`{C : context}: + `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 + rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: + `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 + rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation NotationReduct: `~>%`(instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 3{q_1 : num_, q_5 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 4{q_6 : num_}: + `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $instrdots : instr* + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation instrdots_is_wf: `%`(ret_val : instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule instrdots_is_wf_0{ret_val : instr*}: + `%`(ret_val) + -- if (ret_val = $instrdots) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax label = + | `LABEL_%{%}`(n : n, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_label: `%`(label) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule label_case_0{n : n, `instr*` : instr*}: + `%`(`LABEL_%{%}`_label(n, `instr*`)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax callframe = + | `FRAME_%{%}`(n : n, frame : frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_callframe: `%`(callframe) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule callframe_case_0{n : n, frame : frame}: + `%`(`FRAME_%{%}`_callframe(n, frame)) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation allocX_is_wf(syntax X, syntax Y): `%%%%`(store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule allocX_is_wf_0{syntax X, syntax Y, store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)}: + `%%%%`(store, X_0, Y_0, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocX(syntax X, syntax Y, store, X_0, Y_0)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 +def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 + def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 + def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*}(syntax X, syntax Y, s, [X] ++ X'#1*{X'#1 <- `X'*`}, [Y] ++ Y'#1*{Y'#1 <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) + -- let{s_2 : store, `a'*` : addr*} (s_2, a'#1*{a'#1 <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'#2*{X'#2 <- `X'*`}, Y'#2*{Y'#2 <- `Y'*`}) + -- wf_store: `%`($allocX(syntax X, syntax Y, s, X, Y).0) + -- wf_store: `%`($allocXs(syntax X, syntax Y, s_1, X'#3*{X'#3 <- `X'*`}, Y'#3*{Y'#3 <- `Y'*`}).0) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 +relation allocXs_is_wf(syntax X, syntax Y): `%%%%`(store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 + rule allocXs_is_wf_0{syntax X, syntax Y, store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocXs(syntax X, syntax Y, store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +syntax symdots = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +relation wf_symdots: `%`(symdots) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + rule symdots_case_0{i : nat}: + `%`(`%`_symdots(i)) + -- if (i = 0) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +def $var(syntax X) : nat + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + def $var{syntax X}(syntax X) = 0 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax abbreviated = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax expanded = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax syntax = () + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bbyte : byte + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 +grammar BuN(N : N) : uN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 + prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) + -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 + prod{m : m, n : n} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 +grammar BsN(N : N) : sN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 + prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) + -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 + prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) + -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 + prod{i : sN, n : n} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * ($proj_sN_0(i).0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BiN(N : N) : iN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{i : sN} i:BsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BfN(N : N) : fN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu32 : u32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu64 : u64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bs33 : s33 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : sN} ``:BsN(33) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi32 : i32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi64 : i64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf32 : f32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : fN} ``:BfN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf64 : f64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : fN} ``:BfN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blist(syntax el, grammar BX : el) : el* + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bname : name + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{name : name, `b*` : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name + -- if ($utf8($proj_name_0(name).0) = b*{b <- `b*`}) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btypeidx : typeidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btagidx : tagidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bglobalidx : globalidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bmemidx : memidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btableidx : tableidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfuncidx : funcidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bdataidx : dataidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Belemidx : elemidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blocalidx : localidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfieldidx : fieldidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blabelidx : labelidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{l : labelidx} l:Bu32 => l + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bexternidx : externidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bnumtype : numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7C => F64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7D => F32_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7E => I64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7F => I32_numtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvectype : vectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7B => V128_vectype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Babsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x69 => EXN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6A => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6B => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6C => I31_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6D => EQ_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6E => ANY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6F => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x70 => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x71 => NONE_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x72 => NOEXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x73 => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x74 => NOEXN_heaptype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => ht + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) + -- if ($proj_sN_0(x33).0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Breftype : reftype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvaltype : valtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bresulttype : resulttype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmut : mut? + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x00 => ?() + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x01 => ?(MUT_mut) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bpacktype : packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x77 => I16_packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x78 => I8_packtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bstoragetype : storagetype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bfieldtype : fieldtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bcomptype : comptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bsubtype : subtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Brectype : rectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Blimits : (addrtype, limits) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btagtype : tagtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bglobaltype : globaltype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmemtype : memtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btabletype : tabletype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bexterntype : externtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcastop : castop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x00 => (?(), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x01 => (?(NULL_null), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x02 => (?(), ?(NULL_null)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x03 => (?(NULL_null), ?(NULL_null)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bblocktype : blocktype + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x40 => _RESULT_blocktype(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx(($proj_sN_0(i).0 : int <:> nat))) + -- if ($proj_sN_0(i).0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcatch : catch + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bmemarg : memidxop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) + -- if (n < (2 ^ 6)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, n : n, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) + -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Blaneidx : laneidx + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} `%`_byte($proj_uN_0(l).0):Bbyte => `%`_laneidx($proj_uN_0(l).0) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 +grammar Binstr : instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 + prod 0x00 => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 + prod 0x01 => NOP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 + prod 0x1A => DROP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 + prod 0x1B => SELECT_instr(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 + prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 + prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 + prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 + prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 + prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 + prod 0x0A => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 + prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 + prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 + prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 + prod 0x0F => RETURN_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 + prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 + prod{x : idx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 + prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 + prod{x : idx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 + prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 + prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 + prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 + prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 + prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 + prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 + prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 + prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 + prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 + prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 + prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 + prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 + prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 + prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 + prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 + prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 + prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 + prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 + prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 + prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 + prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 + prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 + prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 + prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 + prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 + prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 + prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 + prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 + prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 + prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 + prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 + prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 + prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 + prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 + prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 + prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 + prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 + prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 + prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 + prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 + prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 + prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 + prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 + prod 0xD1 => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 + prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 + prod 0xD3 => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 + prod 0xD4 => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 + prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 + prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 + prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 + prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 + prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 + prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 + prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 + prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 + prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 + prod {{0xFB} {`%`_u32(15):Bu32}} => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 + prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 + prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 + prod {{0xFB} {`%`_u32(26):Bu32}} => `ANY.CONVERT_EXTERN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 + prod {{0xFB} {`%`_u32(27):Bu32}} => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 + prod {{0xFB} {`%`_u32(28):Bu32}} => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 + prod {{0xFB} {`%`_u32(29):Bu32}} => `I31.GET`_instr(S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 + prod {{0xFB} {`%`_u32(30):Bu32}} => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 + prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 + prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 + prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 + prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 + prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 + prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 + prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 + prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 + prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 + prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 + prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 + prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 + prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 + prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 + prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 + prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 + prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 + prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 + prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 + prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 + prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 + prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 + prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 + prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 + prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 + prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 + prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 + prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 + prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 + prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 + prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 + prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 + prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 + prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 + prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 + prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 + prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 + prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 + prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 + prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 + prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 + prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 + prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 + prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 + prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 + prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 + prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 + prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 + prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 + prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 + prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 + prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 + prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 + prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 + prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 + prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 + prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 + prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 + prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 + prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 + prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 + prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 + prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 + prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 + prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 + prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 + prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 + prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 + prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 + prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 + prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 + prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 + prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 + prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 + prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 + prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 + prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 + prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 + prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 + prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 + prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 + prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 + prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 + prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 + prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 + prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 + prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 + prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 + prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 + prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 + prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 + prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 + prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 + prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 + prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 + prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 + prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 + prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 + prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 + prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 + prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 + prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 + prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 + prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 + prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 + prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 + prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 + prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 + prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 + prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 + prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 + prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 + prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 + prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 + prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 + prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 + prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 + prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 + prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 + prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 + prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 + prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 + prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 + prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 + prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 + prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 + prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 + prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 + prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 + prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 + prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 + prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 + prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 + prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 + prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 + prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 + prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 + prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 + prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 + prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 + prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 + prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx($proj_uN_0(l).0)^16{l <- `l*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 + prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 + prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 + prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 + prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 + prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 + prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 + prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 + prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 + prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 + prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 + prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 + prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 + prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 + prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 + prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 + prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 + prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 + prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 + prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 + prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 + prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 + prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 + prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 + prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 + prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 + prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 + prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 + prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 + prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 + prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 + prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 + prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 + prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 + prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 + prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 + prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 + prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 + prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 + prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 + prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 + prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 + prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 + prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 + prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 + prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 + prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 + prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 + prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 + prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 + prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 + prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 + prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 + prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 + prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 + prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 + prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 + prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 + prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 + prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 + prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 + prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 + prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 + prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 + prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 + prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 + prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 + prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 + prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 + prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 + prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 + prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 + prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 + prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 + prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 + prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 + prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 + prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 + prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 + prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 + prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 + prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 + prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 + prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 + prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 + prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 + prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 + prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 + prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 + prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 + prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 + prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 + prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 + prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 + prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 + prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 + prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 + prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 + prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 + prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 + prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 + prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 + prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 + prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 + prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 + prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 + prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 + prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 + prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 + prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 + prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 + prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 + prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 + prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 + prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 + prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 + prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 + prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 + prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 + prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 + prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 + prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 + prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 + prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 + prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 + prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 + prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 + prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 + prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 + prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 + prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 + prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 + prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 + prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 + prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 + prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 + prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 + prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 + prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 + prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 + prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 + prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 + prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 + prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 + prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 + prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 + prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 + prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 + prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 + prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 + prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 + prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 + prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 + prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 + prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 + prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 + prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 + prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 + prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 + prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 + prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 + prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 + prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 + prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 + prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 + prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 + prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 + prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 + prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 + prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 + prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 + prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 + prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 + prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 + prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 + prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 + prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 + prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 + prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 + prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 + prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 + prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 + prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 + prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 + prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 + prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 + prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 + prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 + prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 + prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 + prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 + prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 + prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 + prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 + prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 + prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 + prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 + prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 + prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 + prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 + prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 + prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 + prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 + prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 + prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 + prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 + prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 + prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 + prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 + prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 + prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 + prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 + prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 + prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 + prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 + prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 + prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 + prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 + prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 + prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) +} + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bexpr : expr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`en*` : en*, len : nat} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} + -- if (len = 0) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod eps => [] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustom : ()* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{Bname} {Bbyte*{}}} => [] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustomsec : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btype : type + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{qt : rectype} qt:Brectype => TYPE_type(qt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btypesec : type* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimport : import + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimportsec : import* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfuncsec : typeidx* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btable : table + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [`REF.NULL`_instr(ht)]) + -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btablesec : table* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmem : mem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmemsec : mem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobal : global + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobalsec : global* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexport : export + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexportsec : export* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstart : start* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{x : idx} x:Bfuncidx => [START_start(x)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstartsec : start? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => !($opt_(syntax start, startopt)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemkind : reftype + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod 0x00 => REF_reftype(?(), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belem : elem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`y*` : idx*, e_o : expr} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], DECLARE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`e*` : expr*, e_O : expr} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e_O : expr} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemsec : elem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Blocals : local* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{t : valtype, n : n} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfunc : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) + -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcode : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{code : code, len : nat} {{`%`_u32(len):Bu32} {code:Bfunc}} => code + -- if (len = 0) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcodesec : code* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdata : data + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*, e : expr} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*, x : idx, e : expr} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatasec : data* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacnt : u32* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacntsec : u32? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => !($opt_(syntax u32, nopt)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btag : tag + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btagsec : tag* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmagic : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bversion : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmodule : module + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} + -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) + -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tchar : char + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tsource : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tchar*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TuNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TsNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TfNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x21 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x23 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x24 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x25 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x26 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x27 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2A => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2B => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2D => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3A => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3D => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x40 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x60 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7E => `%`_char(``) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x30 => 0 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x31 => 1 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x32 => 2 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x33 => 3 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x34 => 4 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x35 => 5 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x36 => 6 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x37 => 7 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x38 => 8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x39 => 9 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x41 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x42 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x43 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x44 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x45 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x46 => 15 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x61 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x62 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x63 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x64 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x65 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x66 => 15 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 +grammar Thexnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 + prod{h : nat} h:Thexdigit => h + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 + prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char} c:Tchar => c + -- if (((($proj_char_0(c).0 >= 32) /\ ($proj_char_0(c).0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\t" => `%`_char(9) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\n" => `%`_char(10) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\r" => `%`_char(13) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\"" => `%`_char(34) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\'" => `%`_char(39) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\\" => `%`_char(92) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) + -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringelem : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char} c:Tstringchar => $utf8([c]) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstring : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) + -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tname : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*, `b*` : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) + -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tid : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) + -- if (|c*{c <- `c*`}| > 0) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tkeyword : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Treserved : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Ttoken : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tkeyword => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TuNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TsNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TfNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : byte} [``]:Tstring => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tid => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x28 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x29 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Treserved => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tannotid : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tidchar+{} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tname => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 +grammar Tblockcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 + prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 +grammar Tblockchar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 + prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 + prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 + prod{`` : ()} ``:Tblockcomment => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Teof : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : text} ``:"" => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinechar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if (($proj_char_0(c).0 =/= 10) /\ ($proj_char_0(c).0 =/= 13)) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tnewline : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0A => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0D => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinecomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tlinecomment => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tblockcomment => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tformat : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tnewline => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x09 => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 +grammar Tspace : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 + prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 +grammar Tannot : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 + prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tsign : int + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod eps => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "+" => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "-" => - (1 : nat <:> int) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 +grammar Tnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 + prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TuN(N : N) : uN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} n:Tnum => `%`_uN(n) + -- if (n < (2 ^ N)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) + -- if (n < (2 ^ N)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TsN(N : N) : sN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TiN(N : N) : iN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{i : sN} i:TsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 +grammar Tfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 + prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 + prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 +grammar Thexfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 + prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 + prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfNmag(N : N) : fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Tfloat => $ieee_(N, q) + -- if ($ieee_(N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Thexfloat => $ieee_(N, q) + -- if ($ieee_(N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "inf" => INF_fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "nan" => NAN_fNmag($canon_(N)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + -- if ((1 <= n) /\ (n < (2 ^ !($signif(N))))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfN(N : N) : fN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti16 : u16 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(16) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf32 : f32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf64 : f64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlist(syntax el, grammar TX : el) : el* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} + -- if (|el*{el <- `el*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidx_(ids : name?*) : idx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} x:Tu32 => x + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx, id : name} id:Tid => x + -- if (ids[$proj_uN_0(x).0] = ?(id)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttypeidx_(I : I) : typeidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttagidx_(I : I) : tagidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tglobalidx_(I : I) : globalidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmemidx_(I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttableidx_(I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfuncidx_(I : I) : funcidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdataidx_(I : I) : dataidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Telemidx_(I : I) : elemidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlocalidx_(I : I) : localidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlabelidx_(I : I) : labelidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfieldidx__(I : I, x : idx) : fieldidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.FIELDS_I[$proj_uN_0(x).0]) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Texternidx_(I : I) : externidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnumtype : numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f32" => F32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f64" => F64_numtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvectype : vectype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "v128" => V128_vectype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tabsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "any" => ANY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "eq" => EQ_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i31" => I31_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "struct" => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "array" => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "none" => NONE_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "func" => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "nofunc" => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "exn" => EXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noexn" => NOEXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "extern" => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noextern" => NOEXTERN_heaptype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Theaptype_(I : I) : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ht : heaptype} ht:Tabsheaptype => ht + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnull : null + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "null" => NULL_null + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Treftype_(I : I) : reftype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvaltype_(I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tpacktype : packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i8" => I8_packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i16" => I16_packtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tstoragetype_(I : I) : storagetype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfieldtype_(I : I) : fieldtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfield_(I : I) : (fieldtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft : fieldtype, `id?` : char?} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tparam_(I : I) : (valtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype, `id?` : char?} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tresult_(I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tcomptype_(I : I) : (comptype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfinal : final + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "final" => FINAL_final + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tsubtype_(I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypedef_(I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{st : subtype, I' : I, `id?` : char?} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Trectype_(I : I) : (rectype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Taddrtype : addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_addrtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tlimits : limits + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypeuse_(I : I) : (typeidx, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') + -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') + -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) + -- Idctxt_ok: `|-%:OK`(I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttagtype_(I : I) : tagtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tglobaltype_(I : I) : globaltype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tmemtype_(I : I) : memtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttabletype_(I : I) : tabletype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Texterntype_(I : I) : (externtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{gt : globaltype, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{tt : tabletype, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, `id?` : char?, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlabel_(I : I) : (name?, I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) + -- if ~ (?(id) <- I.LABELS_I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[$proj_uN_0(x).0] = ?()]) + -- if (?(id) = I.LABELS_I[$proj_uN_0(x).0]) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tblocktype_(I : I) : blocktype + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tcatch_(I : I) : catch + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tfoldedinstr_(I : I) : instr* + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlaneidx : laneidx + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : u8} i:Tu8 => i + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Talign_(N : N) : u32 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{n : n, m : m} {{"align="} {`%`_u64(m):Tu64}} => `%`_u32(n) + -- if (m = (2 ^ n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u32(N) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Toffset : u64 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{m : m} {{"offset="} {`%`_u64(m):Tu64}} => `%`_u64(m) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u64(0) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tmemarg_(N : N) : memarg + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{n : n, m : m} {{`%`_u32(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tplaininstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "unreachable" => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "nop" => NOP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "drop" => DROP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "return" => RETURN_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "throw_ref" => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.is_null" => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.as_non_null" => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.eq" => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.i31" => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_s" => `I31.GET`_instr(S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_u" => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "array.len" => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "any.convert_extern" => `ANY.CONVERT_EXTERN`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "extern.convert_any" => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_dot_i8x16_i7x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_dot_i8x16_i7x16_add_s" => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2)) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 +grammar Tinstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 + prod{in : instr} in:Tplaininstr_(I) => in + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 + prod{in : instr} in:Tblockinstr_(I) => in + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 +grammar Tinstrs_(I : I) : instr* + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 + prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 + prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 +grammar Tblockinstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) +} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Texpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttype_(I : I) : (type, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') + -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) + -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tglobal_(I : I) : (global, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmem_(I : I) : (mem, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttable_(I : I) : (table, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tlocal_(I : I) : (local*, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{t : valtype, `id?` : char?} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tfunc_(I : I) : (func, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) + -- Idctxt_ok: `|-%:OK`(I') + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatastring : byte* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmemuse_(I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Toffset_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdata_(I : I) : (data, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemexpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemlist_(I : I) : (reftype, expr*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttableuse_(I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telem_(I : I) : (elem, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tstart_(I : I) : (start, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timport_(I : I) : (import, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texport_(I : I) : (export, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttagdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobaldots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmemdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttabledots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfuncdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttag_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobal_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmem_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfunc_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatamem_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemtable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecl_(I : I) : (decl, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmodule : module + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + -- if (I' = $concat_idctxt(I*{I <- `I*`})) + -- Idctxt_ok: `|-%:OK`(I') + -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) + -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) + -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) + -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) + -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) + -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) + -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) + -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) + -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) + -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) + -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) + -- if $ordered(decl*{decl <- `decl*`}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecldots_(I : I) : (decl, idctxt)* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bvar(syntax X) : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod 0x00 => ((), ()).1 + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsym : A + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod Bvar(syntax B) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsymsplit : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tvar(syntax X) : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod 0x00 => ((), ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsym : A + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod Tvar(syntax T) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsymsplit : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tabbrev : () + diff --git a/spectec/test-middlend/specification.exp/11-sub.il b/spectec/test-middlend/specification.exp/11-sub.il new file mode 100644 index 0000000000..f0132ae654 --- /dev/null +++ b/spectec/test-middlend/specification.exp/11-sub.il @@ -0,0 +1,22783 @@ + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax N = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax M = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax K = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax n = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax m = nat + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +def $min(nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $min{i : nat, j : nat}(i, j) = (if (i <= j) then i else j) + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 +def $sum(nat*) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 + def $sum([]) = 0 + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 + def $sum{n : nat, `n'*` : n*}([n] ++ n'#1*{n'#1 <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) +} + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 +def $prod(nat*) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 + def $prod([]) = 1 + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 + def $prod{n : nat, `n'*` : n*}([n] ++ n'#2*{n'#2 <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $opt_(syntax X, X*) : X?? + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X}(syntax X, []) = ?(?()) + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 +def $concat_(syntax X, X**) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 + def $concat_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 + def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w#1*{w#1 <- `w*`}] ++ w'#1*{w'#1 <- `w'*#1`}*{`w'*#1` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 +def $concatn_(syntax X, X**, nat : nat) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 + def $concatn_{syntax X, n : nat}(syntax X, [], n) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 + def $concatn_{syntax X, n : nat, `w*` : X*, `w'**` : X**}(syntax X, [w#2*{w#2 <- `w*`}] ++ w'#2*{w'#2 <- `w'*#2`}*{`w'*#2` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) + -- if (n = |`w*`|) + -- (if (n = |`w'*#2`|))*{`w'*#2` <- `w'**`} +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $concatopt_(syntax X, X?*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w#3?{w#3 <- `w?`}] ++ w'#3?{w'#3 <- `w'?#1`}*{`w'?#1` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concat_(syntax X, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concatn_(syntax X, nat : nat, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 +def $disjoint_(syntax X, X*) : bool + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 + def $disjoint_{syntax X}(syntax X, []) = true + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 + def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'#4*{w'#4 <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 +def $setminus1_(syntax X, X : X, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 + def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 + def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'#5*{w'#5 <- `w'*`}) = (if (w = w_1) then [] else $setminus1_(syntax X, w, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 +def $setminus_(syntax X, X*, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 + def $setminus_{syntax X, `w*` : X*}(syntax X, [], w#4*{w#4 <- `w*`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 + def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'#6*{w'#6 <- `w'*`}, w#5*{w#5 <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 +def $setproduct2_(syntax X, X : X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 + def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 + def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'#7*{w'#7 <- `w'*`}] ++ w#6*{w#6 <- `w*#1`}*{`w*#1` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 +def $setproduct1_(syntax X, X*, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 + def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w#7*{w#7 <- `w*#2`}*{`w*#2` <- `w**`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 + def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'#8*{w'#8 <- `w'*`}, w#8*{w#8 <- `w*#3`}*{`w*#3` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 +def $setproduct_(syntax X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 + def $setproduct_{syntax X}(syntax X, []) = [[]] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 + def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1#1*{w_1#1 <- `w_1*`}] ++ w#9*{w#9 <- `w*#4`}*{`w*#4` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) +} + +;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec +def $ND : bool + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax bit = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_bit: `%`(bit) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule bit_case_0{i : nat}: + `%`(`%`_bit(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax byte = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_byte_0(x : byte) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_byte_0{v_num_0 : nat}(`%`_byte(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_byte: `%`(byte) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule byte_case_0{i : nat}: + `%`(`%`_byte(i)) + -- if ((i >= 0) /\ (i <= 255)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax uN = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_uN_0(x : uN) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_uN_0{v_num_0 : nat}(`%`_uN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_uN: `%%`(N, uN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule uN_case_0{N : N, i : nat}: + `%%`(N, `%`_uN(i)) + -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax sN = + | `%`(i : int) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_sN_0(x : sN) : (int) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_sN_0{v_num_0 : int}(`%`_sN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_sN: `%%`(N, sN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule sN_case_0{N : N, i : int}: + `%%`(N, `%`_sN(i)) + -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax iN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u8 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u16 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u31 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u32 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u64 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax s33 = sN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i32 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i64 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i128 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $signif(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(32) = ?(23) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $expon(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(32) = ?(8) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $M(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $M{N : nat}(N) = !($signif(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $E(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $E{N : nat}(N) = !($expon(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax exp = int + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fNmag = + | NORM(m : m, exp : exp) + | SUBNORM(m : m) + | INF + | NAN(m : m) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fNmag: `%%`(N, fNmag) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_0{N : N, m : m, exp : exp}: + `%%`(N, NORM_fNmag(m, exp)) + -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_1{N : N, exp : exp, m : m}: + `%%`(N, SUBNORM_fNmag(m)) + -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_2{N : N}: + `%%`(N, INF_fNmag) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_3{N : N, m : m}: + `%%`(N, NAN_fNmag(m)) + -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fN = + | POS(fNmag) + | NEG(fNmag) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fN: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_0{N : N, var_0 : fNmag}: + `%%`(N, POS_fN(var_0)) + -- wf_fNmag: `%%`(N, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_1{N : N, var_0 : fNmag}: + `%%`(N, NEG_fN(var_0)) + -- wf_fNmag: `%%`(N, var_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f32 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f64 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fzero(N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fzero_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fzero_is_wf_0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fzero(N)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fnat(N : N, nat : nat) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fnat_is_wf: `%%%`(N : N, nat : nat, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fnat_is_wf_0{N : N, nat : nat, ret_val : fN}: + `%%%`(N, nat, ret_val) + -- if (ret_val = $fnat(N, nat)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fone(N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fone_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fone_is_wf_0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fone(N)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $canon_(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax vN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax v128 = vN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax list{syntax X}(syntax X) = + | `%`(`X*` : X*) + -- if (|X*{X <- `X*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_list_0(syntax X, x : list(syntax X)) : (X*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_list_0{syntax X, v_X_list_0 : X*}(syntax X, `%`_list(v_X_list_0)) = (v_X_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax char = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_char_0(x : char) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_char_0{v_num_0 : nat}(`%`_char(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_char: `%`(char) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule char_case_0{i : nat}: + `%`(`%`_char(i)) + -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +def $cont(byte : byte) : nat + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + def $cont{b : byte}(b) = ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) + -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 +def $utf8(char*) : byte* + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 + def $utf8{`ch*` : char*}(ch#1*{ch#1 <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 + def $utf8{ch : char}([ch]) = [b] + -- if ($proj_char_0(ch).0 < 128) + -- let{b : byte} b = `%`_byte($proj_char_0(ch).0) + -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 + def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] + -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) + -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 + def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] + -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) + -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 + def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] + -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) + -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation utf8_is_wf: `%%`(var_0 : char*, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule utf8_is_wf_0{var_0 : char*, ret_val : byte*}: + `%%`(var_0, ret_val) + -- (wf_char: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $utf8(var_0)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax name = + | `%`(`char*` : char*) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_name_0(x : name) : (char*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_name_0{v_char_list_0 : char*}(`%`_name(v_char_list_0)) = (v_char_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_name: `%`(name) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule name_case_0{`char*` : char*}: + `%`(`%`_name(`char*`)) + -- (wf_char: `%`(char))*{char <- `char*`} + -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax idx = u32 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax laneidx = u8 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax typeidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax funcidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax globalidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tableidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax memidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tagidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax elemidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax dataidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax labelidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax localidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fieldidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax externidx = + | FUNC(funcidx : funcidx) + | GLOBAL(globalidx : globalidx) + | TABLE(tableidx : tableidx) + | MEM(memidx : memidx) + | TAG(tagidx : tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_externidx: `%`(externidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_0{funcidx : funcidx}: + `%`(FUNC_externidx(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_1{globalidx : globalidx}: + `%`(GLOBAL_externidx(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_2{tableidx : tableidx}: + `%`(TABLE_externidx(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_3{memidx : memidx}: + `%`(MEM_externidx(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_4{tagidx : tagidx}: + `%`(TAG_externidx(tagidx)) + -- wf_uN: `%%`(32, tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 +def $funcsxx(externidx*) : typeidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 + def $funcsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 + def $funcsxx{x : uN, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx#1*{xx#1 <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 + def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#2*{xx#2 <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 +def $globalsxx(externidx*) : globalidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 + def $globalsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 + def $globalsxx{x : uN, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx#3*{xx#3 <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 + def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#4*{xx#4 <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 +def $tablesxx(externidx*) : tableidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 + def $tablesxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 + def $tablesxx{x : uN, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx#5*{xx#5 <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 + def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#6*{xx#6 <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 +def $memsxx(externidx*) : memidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 + def $memsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 + def $memsxx{x : uN, `xx*` : externidx*}([MEM_externidx(x)] ++ xx#7*{xx#7 <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 + def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#8*{xx#8 <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 +def $tagsxx(externidx*) : tagidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 + def $tagsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 + def $tagsxx{x : uN, `xx*` : externidx*}([TAG_externidx(x)] ++ xx#9*{xx#9 <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 + def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx#10*{xx#10 <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax free = +{ + TYPES typeidx*, + FUNCS funcidx*, + GLOBALS globalidx*, + TABLES tableidx*, + MEMS memidx*, + ELEMS elemidx*, + DATAS dataidx*, + LOCALS localidx*, + LABELS labelidx*, + TAGS tagidx* +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_free: `%`(free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_case_{var_0 : typeidx*, var_1 : funcidx*, var_2 : globalidx*, var_3 : tableidx*, var_4 : memidx*, var_5 : elemidx*, var_6 : dataidx*, var_7 : localidx*, var_8 : labelidx*, var_9 : tagidx*}: + `%`({TYPES var_0, FUNCS var_1, GLOBALS var_2, TABLES var_3, MEMS var_4, ELEMS var_5, DATAS var_6, LOCALS var_7, LABELS var_8, TAGS var_9}) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_uN: `%%`(32, var_1))*{var_1 <- var_1} + -- (wf_uN: `%%`(32, var_2))*{var_2 <- var_2} + -- (wf_uN: `%%`(32, var_3))*{var_3 <- var_3} + -- (wf_uN: `%%`(32, var_4))*{var_4 <- var_4} + -- (wf_uN: `%%`(32, var_5))*{var_5 <- var_5} + -- (wf_uN: `%%`(32, var_6))*{var_6 <- var_6} + -- (wf_uN: `%%`(32, var_7))*{var_7 <- var_7} + -- (wf_uN: `%%`(32, var_8))*{var_8 <- var_8} + -- (wf_uN: `%%`(32, var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_opt(free?) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt{free : free}(?(free)) = free + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_opt_is_wf: `%%`(var_0 : free?, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_opt_is_wf_0{var_0 : free?, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))?{var_0 <- var_0} + -- if (ret_val = $free_opt(var_0)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.1-173.29 +def $free_list(free*) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 + def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 + def $free_list{free : free, `free'*` : free*}([free] ++ free'#1*{free'#1 <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation free_list_is_wf: `%%`(var_0 : free*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule free_list_is_wf_0{var_0 : free*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_list(var_0)) + -- wf_free: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_typeidx(typeidx : typeidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_typeidx_is_wf: `%%`(typeidx : typeidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_typeidx_is_wf_0{typeidx : typeidx, ret_val : free}: + `%%`(typeidx, ret_val) + -- wf_uN: `%%`(32, typeidx) + -- if (ret_val = $free_typeidx(typeidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_funcidx(funcidx : funcidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_funcidx_is_wf: `%%`(funcidx : funcidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_funcidx_is_wf_0{funcidx : funcidx, ret_val : free}: + `%%`(funcidx, ret_val) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $free_funcidx(funcidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_globalidx(globalidx : globalidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_globalidx_is_wf: `%%`(globalidx : globalidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_globalidx_is_wf_0{globalidx : globalidx, ret_val : free}: + `%%`(globalidx, ret_val) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $free_globalidx(globalidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tableidx(tableidx : tableidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tableidx_is_wf: `%%`(tableidx : tableidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tableidx_is_wf_0{tableidx : tableidx, ret_val : free}: + `%%`(tableidx, ret_val) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $free_tableidx(tableidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_memidx(memidx : memidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_memidx_is_wf: `%%`(memidx : memidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_memidx_is_wf_0{memidx : memidx, ret_val : free}: + `%%`(memidx, ret_val) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $free_memidx(memidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_elemidx(elemidx : elemidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_elemidx_is_wf: `%%`(elemidx : elemidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_elemidx_is_wf_0{elemidx : elemidx, ret_val : free}: + `%%`(elemidx, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- if (ret_val = $free_elemidx(elemidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_dataidx(dataidx : dataidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_dataidx_is_wf: `%%`(dataidx : dataidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_dataidx_is_wf_0{dataidx : dataidx, ret_val : free}: + `%%`(dataidx, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $free_dataidx(dataidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_localidx(localidx : localidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_localidx_is_wf: `%%`(localidx : localidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_localidx_is_wf_0{localidx : localidx, ret_val : free}: + `%%`(localidx, ret_val) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $free_localidx(localidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_labelidx(labelidx : labelidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_labelidx_is_wf: `%%`(labelidx : labelidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_labelidx_is_wf_0{labelidx : labelidx, ret_val : free}: + `%%`(labelidx, ret_val) + -- wf_uN: `%%`(32, labelidx) + -- if (ret_val = $free_labelidx(labelidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tagidx(tagidx : tagidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tagidx{tagidx : uN}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tagidx_is_wf: `%%`(tagidx : tagidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tagidx_is_wf_0{tagidx : tagidx, ret_val : free}: + `%%`(tagidx, ret_val) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $free_tagidx(tagidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_externidx(externidx : externidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{funcidx : uN}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{globalidx : uN}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_externidx_is_wf: `%%`(externidx : externidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_externidx_is_wf_0{externidx : externidx, ret_val : free}: + `%%`(externidx, ret_val) + -- wf_externidx: `%`(externidx) + -- if (ret_val = $free_externidx(externidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax null = + | NULL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax addrtype = + | I32 + | I64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax numtype = + | I32 + | I64 + | F32 + | F64 + +def $numtype_addrtype(addrtype) : numtype + def $numtype_addrtype(I32_addrtype) = I32_numtype + def $numtype_addrtype(I64_addrtype) = I64_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax vectype = + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax consttype = + | I32 + | I64 + | F32 + | F64 + | V128 + +def $consttype_numtype(numtype) : consttype + def $consttype_numtype(I32_numtype) = I32_consttype + def $consttype_numtype(I64_numtype) = I64_consttype + def $consttype_numtype(F32_numtype) = F32_consttype + def $consttype_numtype(F64_numtype) = F64_consttype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax absheaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax mut = + | MUT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax final = + | FINAL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 +syntax typeuse = + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 +syntax heaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 +syntax valtype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(`null?` : null?, heaptype : heaptype) + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 +syntax storagetype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(`null?` : null?, heaptype : heaptype) + | BOT + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 +syntax resulttype = list(syntax valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 +syntax fieldtype = + | `%%`(`mut?` : mut?, storagetype : storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 +syntax comptype = + | STRUCT(list(syntax fieldtype)) + | ARRAY(fieldtype : fieldtype) + | `FUNC%->%`(resulttype : resulttype, resulttype : resulttype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 +syntax subtype = + | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 +syntax rectype = + | REC(list(syntax subtype)) +} + +def $heaptype_absheaptype(absheaptype) : heaptype + def $heaptype_absheaptype(ANY_absheaptype) = ANY_heaptype + def $heaptype_absheaptype(EQ_absheaptype) = EQ_heaptype + def $heaptype_absheaptype(I31_absheaptype) = I31_heaptype + def $heaptype_absheaptype(STRUCT_absheaptype) = STRUCT_heaptype + def $heaptype_absheaptype(ARRAY_absheaptype) = ARRAY_heaptype + def $heaptype_absheaptype(NONE_absheaptype) = NONE_heaptype + def $heaptype_absheaptype(FUNC_absheaptype) = FUNC_heaptype + def $heaptype_absheaptype(NOFUNC_absheaptype) = NOFUNC_heaptype + def $heaptype_absheaptype(EXN_absheaptype) = EXN_heaptype + def $heaptype_absheaptype(NOEXN_absheaptype) = NOEXN_heaptype + def $heaptype_absheaptype(EXTERN_absheaptype) = EXTERN_heaptype + def $heaptype_absheaptype(NOEXTERN_absheaptype) = NOEXTERN_heaptype + def $heaptype_absheaptype(BOT_absheaptype) = BOT_heaptype + +def $valtype_addrtype(addrtype) : valtype + def $valtype_addrtype(I32_addrtype) = I32_valtype + def $valtype_addrtype(I64_addrtype) = I64_valtype + +def $storagetype_consttype(consttype) : storagetype + def $storagetype_consttype(I32_consttype) = I32_storagetype + def $storagetype_consttype(I64_consttype) = I64_storagetype + def $storagetype_consttype(F32_consttype) = F32_storagetype + def $storagetype_consttype(F64_consttype) = F64_storagetype + def $storagetype_consttype(V128_consttype) = V128_storagetype + +def $storagetype_numtype(numtype) : storagetype + def $storagetype_numtype(I32_numtype) = I32_storagetype + def $storagetype_numtype(I64_numtype) = I64_storagetype + def $storagetype_numtype(F32_numtype) = F32_storagetype + def $storagetype_numtype(F64_numtype) = F64_storagetype + +def $valtype_numtype(numtype) : valtype + def $valtype_numtype(I32_numtype) = I32_valtype + def $valtype_numtype(I64_numtype) = I64_valtype + def $valtype_numtype(F32_numtype) = F32_valtype + def $valtype_numtype(F64_numtype) = F64_valtype + +def $heaptype_typeuse(typeuse) : heaptype + def $heaptype_typeuse{x0 : typeidx}(_IDX_typeuse(x0)) = _IDX_heaptype(x0) + def $heaptype_typeuse{x0 : rectype, x1 : n}(_DEF_typeuse(x0, x1)) = _DEF_heaptype(x0, x1) + def $heaptype_typeuse{x0 : n}(REC_typeuse(x0)) = REC_heaptype(x0) + +def $storagetype_valtype(valtype) : storagetype + def $storagetype_valtype(I32_valtype) = I32_storagetype + def $storagetype_valtype(I64_valtype) = I64_storagetype + def $storagetype_valtype(F32_valtype) = F32_storagetype + def $storagetype_valtype(F64_valtype) = F64_storagetype + def $storagetype_valtype(V128_valtype) = V128_storagetype + def $storagetype_valtype{x0 : null?, x1 : heaptype}(REF_valtype(x0, x1)) = REF_storagetype(x0, x1) + def $storagetype_valtype(BOT_valtype) = BOT_storagetype + +def $storagetype_vectype(vectype) : storagetype + def $storagetype_vectype(V128_vectype) = V128_storagetype + +def $valtype_vectype(vectype) : valtype + def $valtype_vectype(V128_vectype) = V128_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 +relation wf_typeuse: `%`(typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_0{typeidx : typeidx}: + `%`(_IDX_typeuse(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_1{rectype : rectype, n : n}: + `%`(_DEF_typeuse(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_2{n : n}: + `%`(REC_typeuse(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 +relation wf_heaptype: `%`(heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_0: + `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_1: + `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_2: + `%`(I31_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_3: + `%`(STRUCT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_4: + `%`(ARRAY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_5: + `%`(NONE_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_6: + `%`(FUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_7: + `%`(NOFUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_8: + `%`(EXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_9: + `%`(NOEXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_10: + `%`(EXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_11: + `%`(NOEXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_12: + `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_13{typeidx : typeidx}: + `%`(_IDX_heaptype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_14{rectype : rectype, n : n}: + `%`(_DEF_heaptype(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_15{n : n}: + `%`(REC_heaptype(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 +relation wf_valtype: `%`(valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_0: + `%`(I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_1: + `%`(I64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_2: + `%`(F32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_3: + `%`(F64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_4: + `%`(V128_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_valtype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_6: + `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 +relation wf_storagetype: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_0: + `%`(I32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_4: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_storagetype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_6: + `%`(BOT_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_7: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_8: + `%`(I16_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 +relation wf_fieldtype: `%`(fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 + rule fieldtype_case_0{`mut?` : mut?, storagetype : storagetype}: + `%`(`%%`_fieldtype(`mut?`, storagetype)) + -- wf_storagetype: `%`(storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 +relation wf_comptype: `%`(comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_0{var_0 : list(syntax fieldtype)}: + `%`(STRUCT_comptype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_1{fieldtype : fieldtype}: + `%`(ARRAY_comptype(fieldtype)) + -- wf_fieldtype: `%`(fieldtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_2{resulttype : resulttype, resulttype_0 : resulttype}: + `%`(`FUNC%->%`_comptype(resulttype, resulttype_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 +relation wf_subtype: `%`(subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 + rule subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}: + `%`(SUB_subtype(`final?`, `typeuse*`, comptype)) + -- (wf_typeuse: `%`(typeuse))*{typeuse <- `typeuse*`} + -- wf_comptype: `%`(comptype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax deftype = + | _DEF(rectype : rectype, n : n) + +def $heaptype_deftype(deftype) : heaptype + def $heaptype_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_heaptype(x0, x1) + +def $typeuse_deftype(deftype) : typeuse + def $typeuse_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_typeuse(x0, x1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax typevar = + | _IDX(typeidx : typeidx) + | REC(n : n) + +def $typeuse_typevar(typevar) : typeuse + def $typeuse_typevar{x0 : typeidx}(_IDX_typevar(x0)) = _IDX_typeuse(x0) + def $typeuse_typevar{x0 : n}(REC_typevar(x0)) = REC_typeuse(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_typevar: `%`(typevar) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_0{typeidx : typeidx}: + `%`(_IDX_typevar(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_1{n : n}: + `%`(REC_typevar(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax reftype = + | REF(`null?` : null?, heaptype : heaptype) + +def $storagetype_reftype(reftype) : storagetype + def $storagetype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_storagetype(x0, x1) + +def $valtype_reftype(reftype) : valtype + def $valtype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_valtype(x0, x1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_reftype: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule reftype_case_0{`null?` : null?, heaptype : heaptype}: + `%`(REF_reftype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Inn = addrtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Fnn = + | F32 + | F64 + +def $numtype_Fnn(Fnn) : numtype + def $numtype_Fnn(F32_Fnn) = F32_numtype + def $numtype_Fnn(F64_Fnn) = F64_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Vnn = vectype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Cnn = + | I32 + | I64 + | F32 + | F64 + | V128 + +def $storagetype_Cnn(Cnn) : storagetype + def $storagetype_Cnn(I32_Cnn) = I32_storagetype + def $storagetype_Cnn(I64_Cnn) = I64_storagetype + def $storagetype_Cnn(F32_Cnn) = F32_storagetype + def $storagetype_Cnn(F64_Cnn) = F64_storagetype + def $storagetype_Cnn(V128_Cnn) = V128_storagetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ANYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ANYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ANYREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ANYREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EQREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EQREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EQREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EQREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $I31REF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation I31REF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule I31REF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $I31REF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $STRUCTREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation STRUCTREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule STRUCTREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $STRUCTREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ARRAYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ARRAYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ARRAYREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ARRAYREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation FUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule FUNCREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $FUNCREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXTERNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXTERNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLFUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLFUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLFUNCREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLFUNCREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXTERNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXTERNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax packtype = + | I8 + | I16 + +def $storagetype_packtype(packtype) : storagetype + def $storagetype_packtype(I8_packtype) = I8_storagetype + def $storagetype_packtype(I16_packtype) = I16_storagetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax lanetype = + | I32 + | I64 + | F32 + | F64 + | I8 + | I16 + +def $lanetype_Fnn(Fnn) : lanetype + def $lanetype_Fnn(F32_Fnn) = F32_lanetype + def $lanetype_Fnn(F64_Fnn) = F64_lanetype + +def $lanetype_addrtype(addrtype) : lanetype + def $lanetype_addrtype(I32_addrtype) = I32_lanetype + def $lanetype_addrtype(I64_addrtype) = I64_lanetype + +def $lanetype_numtype(numtype) : lanetype + def $lanetype_numtype(I32_numtype) = I32_lanetype + def $lanetype_numtype(I64_numtype) = I64_lanetype + def $lanetype_numtype(F32_numtype) = F32_lanetype + def $lanetype_numtype(F64_numtype) = F64_lanetype + +def $lanetype_packtype(packtype) : lanetype + def $lanetype_packtype(I8_packtype) = I8_lanetype + def $lanetype_packtype(I16_packtype) = I16_lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Pnn = packtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Jnn = + | I32 + | I64 + | I8 + | I16 + +def $lanetype_Jnn(Jnn) : lanetype + def $lanetype_Jnn(I32_Jnn) = I32_lanetype + def $lanetype_Jnn(I64_Jnn) = I64_lanetype + def $lanetype_Jnn(I8_Jnn) = I8_lanetype + def $lanetype_Jnn(I16_Jnn) = I16_lanetype + +def $Jnn_addrtype(addrtype) : Jnn + def $Jnn_addrtype(I32_addrtype) = I32_Jnn + def $Jnn_addrtype(I64_addrtype) = I64_Jnn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Lnn = lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax limits = + | `[%..%]`(u64 : u64, `u64?` : u64?) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_limits: `%`(limits) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule limits_case_0{u64 : u64, `u64?` : u64?}: + `%`(`[%..%]`_limits(u64, `u64?`)) + -- wf_uN: `%%`(64, u64) + -- (wf_uN: `%%`(64, u64))?{u64 <- `u64?`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tagtype = typeuse + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax globaltype = + | `%%`(`mut?` : mut?, valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_globaltype: `%`(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule globaltype_case_0{`mut?` : mut?, valtype : valtype}: + `%`(`%%`_globaltype(`mut?`, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax memtype = + | `%%PAGE`(addrtype : addrtype, limits : limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_memtype: `%`(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule memtype_case_0{addrtype : addrtype, limits : limits}: + `%`(`%%PAGE`_memtype(addrtype, limits)) + -- wf_limits: `%`(limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tabletype = + | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_tabletype: `%`(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype}: + `%`(`%%%`_tabletype(addrtype, limits, reftype)) + -- wf_limits: `%`(limits) + -- wf_reftype: `%`(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax datatype = + | OK + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax elemtype = reftype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax externtype = + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype) + | MEM(memtype : memtype) + | TABLE(tabletype : tabletype) + | FUNC(typeuse : typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_externtype: `%`(externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_0{tagtype : tagtype}: + `%`(TAG_externtype(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_1{globaltype : globaltype}: + `%`(GLOBAL_externtype(globaltype)) + -- wf_globaltype: `%`(globaltype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_2{memtype : memtype}: + `%`(MEM_externtype(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_3{tabletype : tabletype}: + `%`(TABLE_externtype(tabletype)) + -- wf_tabletype: `%`(tabletype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_4{typeuse : typeuse}: + `%`(FUNC_externtype(typeuse)) + -- wf_typeuse: `%`(typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax moduletype = + | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_moduletype: `%`(moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule moduletype_case_0{`externtype*` : externtype*, `externtype*_0` : externtype*}: + `%`(`%->%`_moduletype(`externtype*`, `externtype*_0`)) + -- (wf_externtype: `%`(externtype))*{externtype <- `externtype*`} + -- (wf_externtype: `%`(`externtype*_0`))*{`externtype*_0` <- `externtype*_0`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $IN(N : N) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FN(N : N) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $JN(N : N) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $size(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I64_numtype) = 64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F64_numtype) = 64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsize(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsize(V128_vectype) = 128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psize(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I8_packtype) = 8 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I16_packtype) = 16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsize(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I32_lanetype) = $size(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I64_lanetype) = $size(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F32_lanetype) = $size(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F64_lanetype) = $size(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I8_lanetype) = $psize(I8_packtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I16_lanetype) = $psize(I16_packtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $zsize(storagetype : storagetype) : nat? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I32_storagetype) = ?($size(I32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I64_storagetype) = ?($size(I64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F32_storagetype) = ?($size(F32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F64_storagetype) = ?($size(F64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I8_storagetype) = ?($psize(I8_packtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I16_storagetype) = ?($psize(I16_packtype)) + def $zsize{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $isize(Inn : Inn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $isize{Inn : addrtype}(Inn) = $size($numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsize(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsize{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $fsize(Fnn : Fnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $fsize{Fnn : Fnn}(Fnn) = $size($numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_isize(nat : nat) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(64) = ?(I64_Inn) + def $inv_isize{x0 : nat}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsize(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize{n : nat}(n) = $Jnn_addrtype(iter_val#1)?{iter_val#1 <- $inv_isize(n)} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_fsize(nat : nat) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(64) = ?(F64_Fnn) + def $inv_fsize{x0 : nat}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn1(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn1{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn2(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn2{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsizenn(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsizenn{vt : vectype}(vt) = $vsize(vt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psizenn(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psizenn{pt : packtype}(pt) = $psize(pt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn1(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn2(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsizenn(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsizenn{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsizenn(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn{n : nat}(n) = $inv_jsize(n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lunpack(lanetype : lanetype) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I32_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I64_lanetype) = I64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F32_lanetype) = F32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F64_lanetype) = F64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I8_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I16_lanetype) = I32_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $unpack(storagetype : storagetype) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(BOT_storagetype) = BOT_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack{`null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype)) = REF_valtype(`null?`, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(V128_storagetype) = V128_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(F64_storagetype) = F64_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(F32_storagetype) = F32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I64_storagetype) = I64_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I32_storagetype) = I32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I8_storagetype) = I32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I16_storagetype) = I32_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation unpack_is_wf: `%%`(storagetype : storagetype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule unpack_is_wf_0{storagetype : storagetype, ret_val : valtype}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $unpack(storagetype)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $nunpack(storagetype : storagetype) : numtype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I32_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I64_storagetype) = ?(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F32_storagetype) = ?(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F64_storagetype) = ?(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I8_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I16_storagetype) = ?(I32_numtype) + def $nunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vunpack(storagetype : storagetype) : vectype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vunpack(V128_storagetype) = ?(V128_vectype) + def $vunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $cunpack(storagetype : storagetype) : consttype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?(I64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?(F32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?(F64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(V128_storagetype) = ?(V128_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?($consttype_numtype($lunpack(I32_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?($consttype_numtype($lunpack(I64_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?($consttype_numtype($lunpack(F32_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?($consttype_numtype($lunpack(F64_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?($consttype_numtype($lunpack(I8_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?($consttype_numtype($lunpack(I16_lanetype))) + def $cunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size($numtype_addrtype(at_1)) <= $size($numtype_addrtype(at_2))) then at_1 else at_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $diffrt(reftype : reftype, reftype : reftype) : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#1?{null_1#1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#2?{null_1#2 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation diffrt_is_wf: `%%%`(reftype : reftype, reftype_0 : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule diffrt_is_wf_0{reftype : reftype, reftype_0 : reftype, ret_val : reftype}: + `%%%`(reftype, reftype_0, ret_val) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + -- if (ret_val = $diffrt(reftype, reftype_0)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $as_deftype(typeuse : typeuse) : deftype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = ?(_DEF_deftype(rectype, n)) + def $as_deftype{x0 : typeuse}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +def $tagsxt(externtype*) : tagtype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + def $tagsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt#1*{xt#1 <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#2*{xt#2 <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +def $globalsxt(externtype*) : globaltype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + def $globalsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt#3*{xt#3 <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#4*{xt#4 <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation globalsxt_is_wf: `%%`(var_0 : externtype*, ret_val : globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule globalsxt_is_wf_0{var_0 : externtype*, ret_val : globaltype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsxt(var_0)) + -- (wf_globaltype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +def $memsxt(externtype*) : memtype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + def $memsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt#5*{xt#5 <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#6*{xt#6 <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation memsxt_is_wf: `%%`(var_0 : externtype*, ret_val : memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule memsxt_is_wf_0{var_0 : externtype*, ret_val : memtype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsxt(var_0)) + -- (wf_memtype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +def $tablesxt(externtype*) : tabletype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + def $tablesxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt#7*{xt#7 <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#8*{xt#8 <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation tablesxt_is_wf: `%%`(var_0 : externtype*, ret_val : tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule tablesxt_is_wf_0{var_0 : externtype*, ret_val : tabletype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesxt(var_0)) + -- (wf_tabletype: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +def $funcsxt(externtype*) : deftype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + def $funcsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + def $funcsxt{rectype : rectype, n : n, `xt*` : externtype*}([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt#9*{xt#9 <- `xt*`}) = [_DEF_deftype(rectype, n)] ++ $funcsxt(xt#10*{xt#10 <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 + def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt#11*{xt#11 <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.126 +def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 + def $subst_typevar{tv : typevar}(tv, [], []) = ?($typeuse_typevar(tv)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 + def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'#1*{tv'#1 <- `tv'*`}, [tu_1] ++ tu'#1*{tu'#1 <- `tu'*`}) = (if (tv = tv_1) then tu_1 else iter_val#2)?{iter_val#2 <- $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})} + def $subst_typevar{x0 : typevar, x1 : typevar*, x2 : typeuse*}(x0, x1, x2) = ?() + -- otherwise +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation subst_typevar_is_wf: `%%%%`(typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule subst_typevar_is_wf_0{typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typevar, var_0, var_1, ret_val) + -- wf_typevar: `%`(typevar) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($subst_typevar(typevar, var_0, var_1))) + -- wf_typeuse: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.87 +def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*)? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 + def $minus_recs([], []) = ?(([], [])) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 + def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 + def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}) = ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#2*{tv'#2 <- `tv'*`}, tu'#2*{tu'#2 <- `tu'*`}) = !($minus_recs(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`})) + -- (wf_typevar: `%`(iter#1))*{iter#1 <- !($minus_recs(tv#4*{tv#4 <- `tv*`}, tu#4*{tu#4 <- `tu*`})).0} + -- (wf_typeuse: `%`(iter#2))*{iter#2 <- !($minus_recs(tv#5*{tv#5 <- `tv*`}, tu#5*{tu#5 <- `tu*`})).1} + def $minus_recs{x0 : typevar*, x1 : typeuse*}(x0, x1) = ?() + -- otherwise +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation minus_recs_is_wf: `%%%`(var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule minus_recs_is_wf_0{var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)}: + `%%%`(var_0, var_1, ret_val) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($minus_recs(var_0, var_1))) + -- (wf_typevar: `%`(iter))*{iter <- ret_val.0} + -- (wf_typeuse: `%`(iter))*{iter <- ret_val.1} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv#6*{tv#6 <- `tv*`}, tu#6*{tu#6 <- `tu*`}) = pt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv#7*{tv#7 <- `tv*`}, tu#7*{tu#7 <- `tu*`}) = nt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv#8*{tv#8 <- `tv*`}, tu#8*{tu#8 <- `tu*`}) = vt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 +def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + def $subst_typeuse{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_typeuse(n), tv#9*{tv#9 <- `tv*`}, tu#9*{tu#9 <- `tu*`}) = !($subst_typevar(REC_typevar(n), tv#10*{tv#10 <- `tv*`}, tu#10*{tu#10 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + def $subst_typeuse{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_typeuse(typeidx), tv#11*{tv#11 <- `tv*`}, tu#11*{tu#11 <- `tu*`}) = !($subst_typevar(_IDX_typevar(typeidx), tv#12*{tv#12 <- `tv*`}, tu#12*{tu#12 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 + def $subst_typeuse{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_typeuse(rectype, n), tv#13*{tv#13 <- `tv*`}, tu#13*{tu#13 <- `tu*`}) = $typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv#14*{tv#14 <- `tv*`}, tu#14*{tu#14 <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 +def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + def $subst_heaptype{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_heaptype(n), tv#15*{tv#15 <- `tv*`}, tu#15*{tu#15 <- `tu*`}) = $heaptype_typeuse(!($subst_typevar(REC_typevar(n), tv#16*{tv#16 <- `tv*`}, tu#16*{tu#16 <- `tu*`}))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + def $subst_heaptype{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_heaptype(typeidx), tv#17*{tv#17 <- `tv*`}, tu#17*{tu#17 <- `tu*`}) = $heaptype_typeuse(!($subst_typevar(_IDX_typevar(typeidx), tv#18*{tv#18 <- `tv*`}, tu#18*{tu#18 <- `tu*`}))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 + def $subst_heaptype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_heaptype(rectype, n), tv#19*{tv#19 <- `tv*`}, tu#19*{tu#19 <- `tu*`}) = $heaptype_deftype($subst_deftype(_DEF_deftype(rectype, n), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 + def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}) = ht + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 +def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 + def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#22*{tv#22 <- `tv*`}, tu#22*{tu#22 <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 +def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I32_valtype, tv#23*{tv#23 <- `tv*`}, tu#23*{tu#23 <- `tu*`}) = $valtype_numtype($subst_numtype(I32_numtype, tv#24*{tv#24 <- `tv*`}, tu#24*{tu#24 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I64_valtype, tv#25*{tv#25 <- `tv*`}, tu#25*{tu#25 <- `tu*`}) = $valtype_numtype($subst_numtype(I64_numtype, tv#26*{tv#26 <- `tv*`}, tu#26*{tu#26 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F32_valtype, tv#27*{tv#27 <- `tv*`}, tu#27*{tu#27 <- `tu*`}) = $valtype_numtype($subst_numtype(F32_numtype, tv#28*{tv#28 <- `tv*`}, tu#28*{tu#28 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F64_valtype, tv#29*{tv#29 <- `tv*`}, tu#29*{tu#29 <- `tu*`}) = $valtype_numtype($subst_numtype(F64_numtype, tv#30*{tv#30 <- `tv*`}, tu#30*{tu#30 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(V128_valtype, tv#31*{tv#31 <- `tv*`}, tu#31*{tu#31 <- `tu*`}) = $valtype_vectype($subst_vectype(V128_vectype, tv#32*{tv#32 <- `tv*`}, tu#32*{tu#32 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 + def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(`null?`, heaptype), tv#33*{tv#33 <- `tv*`}, tu#33*{tu#33 <- `tu*`}) = $valtype_reftype($subst_reftype(REF_reftype(`null?`, heaptype), tv#34*{tv#34 <- `tv*`}, tu#34*{tu#34 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv#35*{tv#35 <- `tv*`}, tu#35*{tu#35 <- `tu*`}) = BOT_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_storagetype, tv#36*{tv#36 <- `tv*`}, tu#36*{tu#36 <- `tu*`}) = $storagetype_valtype($subst_valtype(BOT_valtype, tv#37*{tv#37 <- `tv*`}, tu#37*{tu#37 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_storagetype(`null?`, heaptype), tv#38*{tv#38 <- `tv*`}, tu#38*{tu#38 <- `tu*`}) = $storagetype_valtype($subst_valtype(REF_valtype(`null?`, heaptype), tv#39*{tv#39 <- `tv*`}, tu#39*{tu#39 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(V128_storagetype, tv#40*{tv#40 <- `tv*`}, tu#40*{tu#40 <- `tu*`}) = $storagetype_valtype($subst_valtype(V128_valtype, tv#41*{tv#41 <- `tv*`}, tu#41*{tu#41 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F64_storagetype, tv#42*{tv#42 <- `tv*`}, tu#42*{tu#42 <- `tu*`}) = $storagetype_valtype($subst_valtype(F64_valtype, tv#43*{tv#43 <- `tv*`}, tu#43*{tu#43 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F32_storagetype, tv#44*{tv#44 <- `tv*`}, tu#44*{tu#44 <- `tu*`}) = $storagetype_valtype($subst_valtype(F32_valtype, tv#45*{tv#45 <- `tv*`}, tu#45*{tu#45 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I64_storagetype, tv#46*{tv#46 <- `tv*`}, tu#46*{tu#46 <- `tu*`}) = $storagetype_valtype($subst_valtype(I64_valtype, tv#47*{tv#47 <- `tv*`}, tu#47*{tu#47 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I32_storagetype, tv#48*{tv#48 <- `tv*`}, tu#48*{tu#48 <- `tu*`}) = $storagetype_valtype($subst_valtype(I32_valtype, tv#49*{tv#49 <- `tv*`}, tu#49*{tu#49 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I8_storagetype, tv#50*{tv#50 <- `tv*`}, tu#50*{tu#50 <- `tu*`}) = $storagetype_packtype($subst_packtype(I8_packtype, tv#51*{tv#51 <- `tv*`}, tu#51*{tu#51 <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I16_storagetype, tv#52*{tv#52 <- `tv*`}, tu#52*{tu#52 <- `tu*`}) = $storagetype_packtype($subst_packtype(I16_packtype, tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 + def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 +def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 + def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft#1*{ft#1 <- `ft*`})), tv#55*{tv#55 <- `tv*`}, tu#55*{tu#55 <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 + def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 + def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 + def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#3*{tu'#3 <- `tu'*`}, ct), tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 +def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 + def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*}(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#3*{tv'#3 <- `tv'*`}, tu'#4*{tu'#4 <- `tu'*`}) = !($minus_recs(tv#60*{tv#60 <- `tv*`}, tu#60*{tu#60 <- `tu*`})) + -- (wf_typevar: `%`(iter#3))*{iter#3 <- !($minus_recs(tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`})).0} + -- (wf_typeuse: `%`(iter#4))*{iter#4 <- !($minus_recs(tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`})).1} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 +def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 + def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation subst_typeuse_is_wf: `%%%%`(typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule subst_typeuse_is_wf_0{typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse}: + `%%%%`(typeuse, var_0, var_1, ret_val) + -- wf_typeuse: `%`(typeuse) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_typeuse(typeuse, var_0, var_1)) + -- wf_typeuse: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation subst_heaptype_is_wf: `%%%%`(heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule subst_heaptype_is_wf_0{heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype}: + `%%%%`(heaptype, var_0, var_1, ret_val) + -- wf_heaptype: `%`(heaptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_heaptype(heaptype, var_0, var_1)) + -- wf_heaptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation subst_reftype_is_wf: `%%%%`(reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule subst_reftype_is_wf_0{reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype}: + `%%%%`(reftype, var_0, var_1, ret_val) + -- wf_reftype: `%`(reftype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_reftype(reftype, var_0, var_1)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation subst_valtype_is_wf: `%%%%`(valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule subst_valtype_is_wf_0{valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype}: + `%%%%`(valtype, var_0, var_1, ret_val) + -- wf_valtype: `%`(valtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_valtype(valtype, var_0, var_1)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation subst_storagetype_is_wf: `%%%%`(storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule subst_storagetype_is_wf_0{storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype}: + `%%%%`(storagetype, var_0, var_1, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_storagetype(storagetype, var_0, var_1)) + -- wf_storagetype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation subst_fieldtype_is_wf: `%%%%`(fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule subst_fieldtype_is_wf_0{fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype}: + `%%%%`(fieldtype, var_0, var_1, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_fieldtype(fieldtype, var_0, var_1)) + -- wf_fieldtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation subst_comptype_is_wf: `%%%%`(comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule subst_comptype_is_wf_0{comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype}: + `%%%%`(comptype, var_0, var_1, ret_val) + -- wf_comptype: `%`(comptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_comptype(comptype, var_0, var_1)) + -- wf_comptype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation subst_subtype_is_wf: `%%%%`(subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule subst_subtype_is_wf_0{subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype}: + `%%%%`(subtype, var_0, var_1, ret_val) + -- wf_subtype: `%`(subtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_subtype(subtype, var_0, var_1)) + -- wf_subtype: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}) = at + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut#2?{mut#2 <- `mut?`}, t), tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_globaltype_is_wf: `%%%%`(globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_globaltype_is_wf_0{globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype}: + `%%%%`(globaltype, var_0, var_1, ret_val) + -- wf_globaltype: `%`(globaltype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_globaltype(globaltype, var_0, var_1)) + -- wf_globaltype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv#67*{tv#67 <- `tv*`}, tu#67*{tu#67 <- `tu*`}) = `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_memtype_is_wf: `%%%%`(memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_memtype_is_wf_0{memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype}: + `%%%%`(memtype, var_0, var_1, ret_val) + -- wf_memtype: `%`(memtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_memtype(memtype, var_0, var_1)) + -- wf_memtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv#68*{tv#68 <- `tv*`}, tu#68*{tu#68 <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_tabletype_is_wf: `%%%%`(tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_tabletype_is_wf_0{tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype}: + `%%%%`(tabletype, var_0, var_1, ret_val) + -- wf_tabletype: `%`(tabletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_tabletype(tabletype, var_0, var_1)) + -- wf_tabletype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv#69*{tv#69 <- `tv*`}, tu#69*{tu#69 <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv#72*{tv#72 <- `tv*`}, tu#72*{tu#72 <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_externtype_is_wf: `%%%%`(externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_externtype_is_wf_0{externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype}: + `%%%%`(externtype, var_0, var_1, ret_val) + -- wf_externtype: `%`(externtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_externtype(externtype, var_0, var_1)) + -- wf_externtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_moduletype_is_wf: `%%%%`(moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_moduletype_is_wf_0{moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype}: + `%%%%`(moduletype, var_0, var_1, ret_val) + -- wf_moduletype: `%`(moduletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_moduletype(moduletype, var_0, var_1)) + -- wf_moduletype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_all_valtype(valtype : valtype, typeuse*) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_all_valtype{t : valtype, n : nat, `tu*` : typeuse*, i : nat}(t, tu#75*{tu#75 <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.34 +def $free_subtype(subtype : subtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:550.1-551.66 + def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final#2?{final#2 <- `final?`}, typeuse#1*{typeuse#1 <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.1-492.34 +def $free_rectype(rectype : rectype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-553.70 + def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype#5*{subtype#5 <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.1-520.34 +def $free_deftype(deftype : deftype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:521.1-521.59 + def $free_deftype{rectype : rectype, n : nat}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:481.6-481.20 +relation free_heaptype_is_wf: `%%`(heaptype : heaptype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:481.6-481.20 + rule free_heaptype_is_wf_0{heaptype : heaptype, ret_val : free}: + `%%`(heaptype, ret_val) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = $free_heaptype(heaptype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:482.6-482.19 +relation free_reftype_is_wf: `%%`(reftype : reftype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:482.6-482.19 + rule free_reftype_is_wf_0{reftype : reftype, ret_val : free}: + `%%`(reftype, ret_val) + -- wf_reftype: `%`(reftype) + -- if (ret_val = $free_reftype(reftype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.6-484.19 +relation free_typeuse_is_wf: `%%`(typeuse : typeuse, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.6-484.19 + rule free_typeuse_is_wf_0{typeuse : typeuse, ret_val : free}: + `%%`(typeuse, ret_val) + -- wf_typeuse: `%`(typeuse) + -- if (ret_val = $free_typeuse(typeuse)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:485.6-485.19 +relation free_valtype_is_wf: `%%`(valtype : valtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:485.6-485.19 + rule free_valtype_is_wf_0{valtype : valtype, ret_val : free}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $free_valtype(valtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 +relation free_resulttype_is_wf: `%%`(resulttype : resulttype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 + rule free_resulttype_is_wf_0{resulttype : resulttype, ret_val : free}: + `%%`(resulttype, ret_val) + -- if (ret_val = $free_resulttype(resulttype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 +relation free_storagetype_is_wf: `%%`(storagetype : storagetype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule free_storagetype_is_wf_0{storagetype : storagetype, ret_val : free}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $free_storagetype(storagetype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 +relation free_fieldtype_is_wf: `%%`(fieldtype : fieldtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 + rule free_fieldtype_is_wf_0{fieldtype : fieldtype, ret_val : free}: + `%%`(fieldtype, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- if (ret_val = $free_fieldtype(fieldtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 +relation free_comptype_is_wf: `%%`(comptype : comptype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 + rule free_comptype_is_wf_0{comptype : comptype, ret_val : free}: + `%%`(comptype, ret_val) + -- wf_comptype: `%`(comptype) + -- if (ret_val = $free_comptype(comptype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 +relation free_subtype_is_wf: `%%`(subtype : subtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 + rule free_subtype_is_wf_0{subtype : subtype, ret_val : free}: + `%%`(subtype, ret_val) + -- wf_subtype: `%`(subtype) + -- if (ret_val = $free_subtype(subtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 +relation free_rectype_is_wf: `%%`(rectype : rectype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 + rule free_rectype_is_wf_0{rectype : rectype, ret_val : free}: + `%%`(rectype, ret_val) + -- if (ret_val = $free_rectype(rectype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 +relation free_deftype_is_wf: `%%`(deftype : deftype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 + rule free_deftype_is_wf_0{deftype : deftype, ret_val : free}: + `%%`(deftype, ret_val) + -- if (ret_val = $free_deftype(deftype)) + -- wf_free: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_tagtype(tagtype : tagtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_tagtype{rectype : rectype, n : n}(_DEF_tagtype(rectype, n)) = $free_deftype(_DEF_deftype(rectype, n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_tagtype_is_wf: `%%`(tagtype : tagtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_tagtype_is_wf_0{tagtype : tagtype, ret_val : free}: + `%%`(tagtype, ret_val) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = $free_tagtype(tagtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_globaltype(globaltype : globaltype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_globaltype{`mut?` : mut?, valtype : valtype}(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, valtype)) = $free_valtype(valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_globaltype_is_wf: `%%`(globaltype : globaltype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_globaltype_is_wf_0{globaltype : globaltype, ret_val : free}: + `%%`(globaltype, ret_val) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = $free_globaltype(globaltype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_memtype(memtype : memtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_memtype_is_wf: `%%`(memtype : memtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_memtype_is_wf_0{memtype : memtype, ret_val : free}: + `%%`(memtype, ret_val) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $free_memtype(memtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_tabletype(tabletype : tabletype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_tabletype_is_wf: `%%`(tabletype : tabletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_tabletype_is_wf_0{tabletype : tabletype, ret_val : free}: + `%%`(tabletype, ret_val) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = $free_tabletype(tabletype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_datatype(datatype : datatype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_datatype_is_wf: `%%`(datatype : datatype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_datatype_is_wf_0{datatype : datatype, ret_val : free}: + `%%`(datatype, ret_val) + -- if (ret_val = $free_datatype(datatype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_elemtype(elemtype : elemtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_elemtype_is_wf: `%%`(elemtype : elemtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_elemtype_is_wf_0{elemtype : elemtype, ret_val : free}: + `%%`(elemtype, ret_val) + -- wf_reftype: `%`(elemtype) + -- if (ret_val = $free_elemtype(elemtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_externtype(externtype : externtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{tagtype : typeuse}(TAG_externtype(tagtype)) = $free_tagtype(tagtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{globaltype : globaltype}(GLOBAL_externtype(globaltype)) = $free_globaltype(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{memtype : memtype}(MEM_externtype(memtype)) = $free_memtype(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_externtype_is_wf: `%%`(externtype : externtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_externtype_is_wf_0{externtype : externtype, ret_val : free}: + `%%`(externtype, ret_val) + -- wf_externtype: `%`(externtype) + -- if (ret_val = $free_externtype(externtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_moduletype(moduletype : moduletype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_moduletype{`externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype(externtype_1#1*{externtype_1#1 <- `externtype_1*`}, externtype_2#1*{externtype_2#1 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_moduletype_is_wf: `%%`(moduletype : moduletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_moduletype_is_wf_0{moduletype : moduletype, ret_val : free}: + `%%`(moduletype, ret_val) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $free_moduletype(moduletype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax num_ = + | mk_num__0(Inn : Inn, var_x : iN) + | mk_num__1(Fnn : Fnn, var_x : fN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_num_: `%%`(numtype, num_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_0{numtype : numtype, Inn : Inn, var_x : iN}: + `%%`(numtype, mk_num__0_num_(Inn, var_x)) + -- wf_uN: `%%`($size($numtype_addrtype(Inn)), var_x) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_1{numtype : numtype, Fnn : Fnn, var_x : fN}: + `%%`(numtype, mk_num__1_num_(Fnn, var_x)) + -- wf_fN: `%%`($sizenn($numtype_Fnn(Fnn)), var_x) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__0(var_x : num_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{Inn : Inn, var_x : iN}(mk_num__0_num_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__1(var_x : num_) : fN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{Fnn : Fnn, var_x : fN}(mk_num__1_num_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax pack_ = iN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lane_ = + | mk_lane__0(numtype : numtype, var_x : num_) + | mk_lane__1(packtype : packtype, var_x : pack_) + | mk_lane__2(Jnn : Jnn, var_x : iN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lane_: `%%`(lanetype, lane_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_0{lanetype : lanetype, numtype : numtype, var_x : num_}: + `%%`(lanetype, mk_lane__0_lane_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (lanetype = $lanetype_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_1{lanetype : lanetype, packtype : packtype, var_x : pack_}: + `%%`(lanetype, mk_lane__1_lane_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (lanetype = $lanetype_packtype(packtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_2{lanetype : lanetype, Jnn : Jnn, var_x : iN}: + `%%`(lanetype, mk_lane__2_lane_(Jnn, var_x)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(Jnn)), var_x) + -- if (lanetype = $lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__0(var_x : lane_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{numtype : numtype, var_x : num_}(mk_lane__0_lane_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__1(var_x : lane_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{packtype : packtype, var_x : pack_}(mk_lane__1_lane_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__2(var_x : lane_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{Jnn : Jnn, var_x : iN}(mk_lane__2_lane_(Jnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vec_ = vN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lit_ = + | mk_lit__0(numtype : numtype, var_x : num_) + | mk_lit__1(vectype : vectype, var_x : vec_) + | mk_lit__2(packtype : packtype, var_x : pack_) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lit_: `%%`(storagetype, lit_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_0{storagetype : storagetype, numtype : numtype, var_x : num_}: + `%%`(storagetype, mk_lit__0_lit_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (storagetype = $storagetype_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_1{storagetype : storagetype, vectype : vectype, var_x : vec_}: + `%%`(storagetype, mk_lit__1_lit_(vectype, var_x)) + -- wf_uN: `%%`($vsize(vectype), var_x) + -- if (storagetype = $storagetype_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_2{storagetype : storagetype, packtype : packtype, var_x : pack_}: + `%%`(storagetype, mk_lit__2_lit_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (storagetype = $storagetype_packtype(packtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__0(var_x : lit_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{numtype : numtype, var_x : num_}(mk_lit__0_lit_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__1(var_x : lit_) : vec_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{vectype : vectype, var_x : vec_}(mk_lit__1_lit_(vectype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__2(var_x : lit_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{packtype : packtype, var_x : pack_}(mk_lit__2_lit_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sz = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_sz_0(x : sz) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_sz_0{v_num_0 : nat}(`%`_sz(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_sz: `%`(sz) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule sz_case_0{i : nat}: + `%`(`%`_sz(i)) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sx = + | U + | S + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Inn = + | CLZ + | CTZ + | POPCNT + | EXTEND(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_Inn: `%%`(Inn, unop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_0{Inn : Inn}: + `%%`(Inn, CLZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_1{Inn : Inn}: + `%%`(Inn, CTZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_2{Inn : Inn}: + `%%`(Inn, POPCNT_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_3{Inn : Inn, sz : sz}: + `%%`(Inn, EXTEND_unop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Fnn = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_ = + | mk_unop__0(Inn : Inn, var_x : unop_Inn) + | mk_unop__1(Fnn : Fnn, var_x : unop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_: `%%`(numtype, unop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_0{numtype : numtype, Inn : Inn, var_x : unop_Inn}: + `%%`(numtype, mk_unop__0_unop_(Inn, var_x)) + -- wf_unop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_1{numtype : numtype, Fnn : Fnn, var_x : unop_Fnn}: + `%%`(numtype, mk_unop__1_unop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__0(var_x : unop_) : unop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{Inn : Inn, var_x : unop_Inn}(mk_unop__0_unop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__1(var_x : unop_) : unop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{Fnn : Fnn, var_x : unop_Fnn}(mk_unop__1_unop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Inn = + | ADD + | SUB + | MUL + | DIV(sx : sx) + | REM(sx : sx) + | AND + | OR + | XOR + | SHL + | SHR(sx : sx) + | ROTL + | ROTR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Fnn = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | COPYSIGN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_ = + | mk_binop__0(Inn : Inn, var_x : binop_Inn) + | mk_binop__1(Fnn : Fnn, var_x : binop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_binop_: `%%`(numtype, binop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_0{numtype : numtype, Inn : Inn, var_x : binop_Inn}: + `%%`(numtype, mk_binop__0_binop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_1{numtype : numtype, Fnn : Fnn, var_x : binop_Fnn}: + `%%`(numtype, mk_binop__1_binop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__0(var_x : binop_) : binop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{Inn : Inn, var_x : binop_Inn}(mk_binop__0_binop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__1(var_x : binop_) : binop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{Fnn : Fnn, var_x : binop_Fnn}(mk_binop__1_binop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_Inn = + | EQZ + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_ = + | mk_testop__0(Inn : Inn, var_x : testop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_testop_: `%%`(numtype, testop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule testop__case_0{numtype : numtype, Inn : Inn, var_x : testop_Inn}: + `%%`(numtype, mk_testop__0_testop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_testop__0(var_x : testop_) : testop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_testop__0{Inn : Inn, var_x : testop_Inn}(mk_testop__0_testop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Inn = + | EQ + | NE + | LT(sx : sx) + | GT(sx : sx) + | LE(sx : sx) + | GE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Fnn = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_ = + | mk_relop__0(Inn : Inn, var_x : relop_Inn) + | mk_relop__1(Fnn : Fnn, var_x : relop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_relop_: `%%`(numtype, relop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_0{numtype : numtype, Inn : Inn, var_x : relop_Inn}: + `%%`(numtype, mk_relop__0_relop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_1{numtype : numtype, Fnn : Fnn, var_x : relop_Fnn}: + `%%`(numtype, mk_relop__1_relop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__0(var_x : relop_) : relop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{Inn : Inn, var_x : relop_Inn}(mk_relop__0_relop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__1(var_x : relop_) : relop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{Fnn : Fnn, var_x : relop_Fnn}(mk_relop__1_relop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Inn_2 = + | EXTEND(sx : sx) + | WRAP + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Inn_2: `%%%`(Inn, Inn, cvtop__Inn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_0{Inn_1 : Inn, Inn_2 : Inn, sx : sx}: + `%%%`(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)) + -- if ($sizenn1($numtype_addrtype(Inn_1)) < $sizenn2($numtype_addrtype(Inn_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_1{Inn_1 : Inn, Inn_2 : Inn}: + `%%%`(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2) + -- if ($sizenn1($numtype_addrtype(Inn_1)) > $sizenn2($numtype_addrtype(Inn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Fnn_2 = + | CONVERT(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn, Fnn, cvtop__Inn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_0{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx}: + `%%%`(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_1{Inn_1 : Inn, Fnn_2 : Fnn}: + `%%%`(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2) + -- if ($sizenn1($numtype_addrtype(Inn_1)) = $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Inn_2 = + | TRUNC(sx : sx) + | TRUNC_SAT(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn, Inn, cvtop__Fnn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_0{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_1{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_2{Fnn_1 : Fnn, Inn_2 : Inn}: + `%%%`(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = $sizenn2($numtype_addrtype(Inn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Fnn_2 = + | PROMOTE + | DEMOTE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn, Fnn, cvtop__Fnn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_0{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) < $sizenn2($numtype_Fnn(Fnn_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_1{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) > $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__ = + | mk_cvtop___0(Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2) + | mk_cvtop___1(Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2) + | mk_cvtop___2(Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2) + | mk_cvtop___3(Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__: `%%%`(numtype, numtype, cvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_0{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) + -- wf_cvtop__Inn_1_Inn_2: `%%%`(Inn_1, Inn_2, var_x) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_1{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) + -- wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn_1, Fnn_2, var_x) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_2{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) + -- wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn_1, Inn_2, var_x) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_3{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) + -- wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn_1, Fnn_2, var_x) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___0(var_x : cvtop__) : cvtop__Inn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___1(var_x : cvtop__) : cvtop__Inn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___2(var_x : cvtop__) : cvtop__Fnn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___3(var_x : cvtop__) : cvtop__Fnn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax dim = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_dim_0(x : dim) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_dim_0{v_num_0 : nat}(`%`_dim(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_dim: `%`(dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_case_0{i : nat}: + `%`(`%`_dim(i)) + -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax shape = + | `%X%`(lanetype : lanetype, dim : dim) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_shape: `%`(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule shape_case_0{lanetype : lanetype, dim : dim}: + `%`(`%X%`_shape(lanetype, dim)) + -- wf_dim: `%`(dim) + -- if (($lsize(lanetype) * $proj_dim_0(dim).0) = 128) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $dim(shape : shape) : dim + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation dim_is_wf: `%%`(shape : shape, ret_val : dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_is_wf_0{shape : shape, ret_val : dim}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $dim(shape)) + -- wf_dim: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $lanetype(shape : shape) : lanetype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $lanetype{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $unpackshape(shape : shape) : numtype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $unpackshape{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax ishape = + | `%`(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_ishape_0(x : ishape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_ishape_0{v_shape_0 : shape}(`%`_ishape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_ishape: `%`(ishape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule ishape_case_0{Jnn : Jnn, shape : shape}: + `%`(`%`_ishape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = $lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax bshape = + | `%`(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_bshape_0(x : bshape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_bshape_0{v_shape_0 : shape}(`%`_bshape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_bshape: `%`(bshape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule bshape_case_0{shape : shape}: + `%`(`%`_bshape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = I8_lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax zero = + | ZERO + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax half = + | LOW + | HIGH + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvunop = + | NOT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvbinop = + | AND + | ANDNOT + | OR + | XOR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvternop = + | BITSELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvtestop = + | ANY_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Jnn_M = + | ABS + | NEG + | POPCNT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_Jnn_M: `%%%`(Jnn, M, vunop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ABS_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NEG_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_2{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, POPCNT_vunop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 8) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Fnn_M = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_ = + | mk_vunop__0(Jnn : Jnn, M : M, var_x : vunop_Jnn_M) + | mk_vunop__1(Fnn : Fnn, M : M, var_x : vunop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_: `%%`(shape, vunop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vunop_Jnn_M}: + `%%`(shape, mk_vunop__0_vunop_(Jnn, M, var_x)) + -- wf_vunop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vunop_Fnn_M}: + `%%`(shape, mk_vunop__1_vunop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__0(var_x : vunop_) : vunop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{Jnn : Jnn, M : M, var_x : vunop_Jnn_M}(mk_vunop__0_vunop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__1(var_x : vunop_) : vunop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{Fnn : Fnn, M : M, var_x : vunop_Fnn_M}(mk_vunop__1_vunop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Jnn_M = + | ADD + | SUB + | ADD_SAT(sx : sx) + | SUB_SAT(sx : sx) + | MUL + | AVGRU + | Q15MULR_SATS + | RELAXED_Q15MULRS + | MIN(sx : sx) + | MAX(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_Jnn_M: `%%%`(Jnn, M, vbinop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ADD_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, SUB_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_4{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, MUL_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) >= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_5{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, AVGRU_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_6{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, Q15MULR_SATS_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_7{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_8{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MIN_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_9{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MAX_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Fnn_M = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | PMIN + | PMAX + | RELAXED_MIN + | RELAXED_MAX + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_ = + | mk_vbinop__0(Jnn : Jnn, M : M, var_x : vbinop_Jnn_M) + | mk_vbinop__1(Fnn : Fnn, M : M, var_x : vbinop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_: `%%`(shape, vbinop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}: + `%%`(shape, mk_vbinop__0_vbinop_(Jnn, M, var_x)) + -- wf_vbinop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}: + `%%`(shape, mk_vbinop__1_vbinop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__0(var_x : vbinop_) : vbinop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}(mk_vbinop__0_vbinop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__1(var_x : vbinop_) : vbinop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}(mk_vbinop__1_vbinop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Jnn_M = + | RELAXED_LANESELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Fnn_M = + | RELAXED_MADD + | RELAXED_NMADD + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_ = + | mk_vternop__0(Jnn : Jnn, M : M, var_x : vternop_Jnn_M) + | mk_vternop__1(Fnn : Fnn, M : M, var_x : vternop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vternop_: `%%`(shape, vternop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vternop_Jnn_M}: + `%%`(shape, mk_vternop__0_vternop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vternop_Fnn_M}: + `%%`(shape, mk_vternop__1_vternop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__0(var_x : vternop_) : vternop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{Jnn : Jnn, M : M, var_x : vternop_Jnn_M}(mk_vternop__0_vternop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__1(var_x : vternop_) : vternop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{Fnn : Fnn, M : M, var_x : vternop_Fnn_M}(mk_vternop__1_vternop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_Jnn_M = + | ALL_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_ = + | mk_vtestop__0(Jnn : Jnn, M : M, var_x : vtestop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vtestop_: `%%`(shape, vtestop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vtestop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}: + `%%`(shape, mk_vtestop__0_vtestop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vtestop__0(var_x : vtestop_) : vtestop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vtestop__0{Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}(mk_vtestop__0_vtestop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Jnn_M = + | EQ + | NE + | LT(sx : sx) + | GT(sx : sx) + | LE(sx : sx) + | GE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_Jnn_M: `%%%`(Jnn, M, vrelop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, EQ_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NE_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LT_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GT_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_4{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LE_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_5{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GE_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Fnn_M = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_ = + | mk_vrelop__0(Jnn : Jnn, M : M, var_x : vrelop_Jnn_M) + | mk_vrelop__1(Fnn : Fnn, M : M, var_x : vrelop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_: `%%`(shape, vrelop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}: + `%%`(shape, mk_vrelop__0_vrelop_(Jnn, M, var_x)) + -- wf_vrelop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}: + `%%`(shape, mk_vrelop__1_vrelop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__0(var_x : vrelop_) : vrelop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}(mk_vrelop__0_vrelop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__1(var_x : vrelop_) : vrelop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}(mk_vrelop__1_vrelop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_Jnn_M = + | SHL + | SHR(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_ = + | mk_vshiftop__0(Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vshiftop_: `%%`(ishape, vshiftop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vshiftop__case_0{ishape : ishape, Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}: + `%%`(ishape, mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) + -- if (ishape = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vshiftop__0(var_x : vshiftop_) : vshiftop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vshiftop__0{Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}(mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_M = + | SWIZZLE + | RELAXED_SWIZZLE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_ = + | mk_vswizzlop__0(M : M, var_x : vswizzlop_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vswizzlop_: `%%`(bshape, vswizzlop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vswizzlop__case_0{bshape : bshape, M : M, var_x : vswizzlop_M}: + `%%`(bshape, mk_vswizzlop__0_vswizzlop_(M, var_x)) + -- if (bshape = `%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vswizzlop__0(var_x : vswizzlop_) : vswizzlop_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vswizzlop__0{M : M, var_x : vswizzlop_M}(mk_vswizzlop__0_vswizzlop_(M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTADD_PAIRWISE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextunop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)) + -- if ((16 <= (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) <= 32))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__ = + | mk_vextunop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__: `%%%`(ishape, ishape, vextunop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextunop___0(var_x : vextunop__) : vextunop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTMUL(half : half, sx : sx) + | DOTS + | RELAXED_DOTS + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextbinop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) >= 16)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_1{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_2{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__ = + | mk_vextbinop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__: `%%%`(ishape, ishape, vextbinop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextbinop___0(var_x : vextbinop__) : vextbinop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__Jnn_1_M_1_Jnn_2_M_2 = + | RELAXED_DOT_ADDS + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextternop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((4 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__ = + | mk_vextternop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__: `%%%`(ishape, ishape, vextternop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextternop___0(var_x : vextternop__) : vextternop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTEND(half : half, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vcvtop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if ($lsizenn2($lanetype_Jnn(Jnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Fnn_2_M_2 = + | CONVERT(`half?` : half?, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn, M, Fnn, M, vcvtop__Jnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Fnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}: + `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(`half?`, sx)) + -- if (((($sizenn2($numtype_Fnn(Fnn_2)) = $lsizenn1($lanetype_Jnn(Jnn_1))) /\ ($lsizenn1($lanetype_Jnn(Jnn_1)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2($numtype_Fnn(Fnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Jnn_2_M_2 = + | TRUNC_SAT(sx : sx, `zero?` : zero?) + | RELAXED_TRUNC(sx : sx, `zero?` : zero?) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn, M, Jnn, M, vcvtop__Fnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, `zero?`)) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, `zero?`)) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Fnn_2_M_2 = + | DEMOTE(zero : zero) + | PROMOTELOW + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn, M, Fnn, M, vcvtop__Fnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $sizenn2($numtype_Fnn(Fnn_2)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2) + -- if ((2 * $sizenn1($numtype_Fnn(Fnn_1))) = $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__ = + | mk_vcvtop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___1(Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2) + | mk_vcvtop___2(Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___3(Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__: `%%%`(shape, shape, vcvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_0{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_1{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_2{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_3{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___0(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___1(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___2(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___3(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax memarg = +{ + ALIGN u32, + OFFSET u64 +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_memarg: `%`(memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg_case_{var_0 : u32, var_1 : u64}: + `%`({ALIGN var_0, OFFSET var_1}) + -- wf_uN: `%%`(32, var_0) + -- wf_uN: `%%`(64, var_1) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_Inn = + | `%_%`(sz : sz, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_Inn: `%%`(Inn, loadop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop_Inn_case_0{Inn : Inn, sz : sz, sx : sx}: + `%%`(Inn, `%_%`_loadop_Inn(sz, sx)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_ = + | mk_loadop__0(Inn : Inn, var_x : loadop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_: `%%`(numtype, loadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop__case_0{numtype : numtype, Inn : Inn, var_x : loadop_Inn}: + `%%`(numtype, mk_loadop__0_loadop_(Inn, var_x)) + -- wf_loadop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_loadop__0(var_x : loadop_) : loadop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_loadop__0{Inn : Inn, var_x : loadop_Inn}(mk_loadop__0_loadop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_Inn = + | `%`(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_Inn: `%%`(Inn, storeop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop_Inn_case_0{Inn : Inn, sz : sz}: + `%%`(Inn, `%`_storeop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_ = + | mk_storeop__0(Inn : Inn, var_x : storeop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_: `%%`(numtype, storeop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop__case_0{numtype : numtype, Inn : Inn, var_x : storeop_Inn}: + `%%`(numtype, mk_storeop__0_storeop_(Inn, var_x)) + -- wf_storeop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_storeop__0(var_x : storeop_) : storeop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_storeop__0{Inn : Inn, var_x : storeop_Inn}(mk_storeop__0_storeop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vloadop_ = + | `SHAPE%X%_%`(sz : sz, M : M, sx : sx) + | SPLAT(sz : sz) + | ZERO(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vloadop_: `%%`(vectype, vloadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_0{vectype : vectype, sz : sz, M : M, sx : sx}: + `%%`(vectype, `SHAPE%X%_%`_vloadop_(sz, M, sx)) + -- wf_sz: `%`(sz) + -- if ((($proj_sz_0(sz).0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_1{vectype : vectype, sz : sz}: + `%%`(vectype, SPLAT_vloadop_(sz)) + -- wf_sz: `%`(sz) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_2{vectype : vectype, sz : sz}: + `%%`(vectype, ZERO_vloadop_(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 >= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax blocktype = + | _RESULT(`valtype?` : valtype?) + | _IDX(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_blocktype: `%`(blocktype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_0{`valtype?` : valtype?}: + `%`(_RESULT_blocktype(`valtype?`)) + -- (wf_valtype: `%`(valtype))?{valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_1{typeidx : typeidx}: + `%`(_IDX_blocktype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax addr = nat + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayaddr = addr + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax catch = + | CATCH(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL(labelidx : labelidx) + | CATCH_ALL_REF(labelidx : labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_catch: `%`(catch) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_0{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_1{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_REF_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_2{labelidx : labelidx}: + `%`(CATCH_ALL_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_3{labelidx : labelidx}: + `%`(CATCH_ALL_REF_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exnaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax dataaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax elemaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globaladdr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax memaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tagaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax externaddr = + | TAG(tagaddr : tagaddr) + | GLOBAL(globaladdr : globaladdr) + | MEM(memaddr : memaddr) + | TABLE(tableaddr : tableaddr) + | FUNC(funcaddr : funcaddr) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exportinst = +{ + NAME name, + ADDR externaddr +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exportinst: `%`(exportinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exportinst_case_{var_0 : name, var_1 : externaddr}: + `%`({NAME var_0, ADDR var_1}) + -- wf_name: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax moduleinst = +{ + TYPES deftype*, + TAGS tagaddr*, + GLOBALS globaladdr*, + MEMS memaddr*, + TABLES tableaddr*, + FUNCS funcaddr*, + DATAS dataaddr*, + ELEMS elemaddr*, + EXPORTS exportinst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_moduleinst: `%`(moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_case_{var_0 : deftype*, var_1 : tagaddr*, var_2 : globaladdr*, var_3 : memaddr*, var_4 : tableaddr*, var_5 : funcaddr*, var_6 : dataaddr*, var_7 : elemaddr*, var_8 : exportinst*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, EXPORTS var_8}) + -- (wf_exportinst: `%`(var_8))*{var_8 <- var_8} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-43.19 +syntax ref = + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 +relation wf_ref: `%`(ref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_0{u31 : u31}: + `%`(`REF.I31_NUM`_ref(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_1: + `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_2{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_ref(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_3{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_ref(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_4{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_ref(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_5{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_ref(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_6{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_ref(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_7{ref : ref}: + `%`(`REF.EXTERN`_ref(ref)) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax val = + | CONST(numtype : numtype, num_) + | VCONST(vectype : vectype, vec_) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + +def $val_ref(ref) : val + def $val_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_val(x0) + def $val_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_val + def $val_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_val(x0) + def $val_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_val(x0) + def $val_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_val(x0) + def $val_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_val(x0) + def $val_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_val(x0) + def $val_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_val(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_val: `%`(val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_val(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_1{vectype : vectype, var_0 : vec_}: + `%`(VCONST_val(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_2{u31 : u31}: + `%`(`REF.I31_NUM`_val(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_3: + `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_4{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_5{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_6{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_7{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_val(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_8{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_9{ref : ref}: + `%`(`REF.EXTERN`_val(ref)) + -- wf_ref: `%`(ref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax frame = +{ + LOCALS val?*, + MODULE moduleinst +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_frame: `%`(frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_case_{var_0 : val?*, var_1 : moduleinst}: + `%`({LOCALS var_0, MODULE var_1}) + -- (wf_val: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- wf_moduleinst: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.1-139.9 +syntax instr = + | NOP + | UNREACHABLE + | DROP + | SELECT(`valtype*?` : valtype*?) + | BLOCK(blocktype : blocktype, `instr*` : instr*) + | LOOP(blocktype : blocktype, `instr*` : instr*) + | `IF%%ELSE%`(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) + | BR(labelidx : labelidx) + | BR_IF(labelidx : labelidx) + | BR_TABLE(`labelidx*` : labelidx*, labelidx : labelidx) + | BR_ON_NULL(labelidx : labelidx) + | BR_ON_NON_NULL(labelidx : labelidx) + | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | CALL(funcidx : funcidx) + | CALL_REF(typeuse : typeuse) + | CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | RETURN + | RETURN_CALL(funcidx : funcidx) + | RETURN_CALL_REF(typeuse : typeuse) + | RETURN_CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | THROW(tagidx : tagidx) + | THROW_REF + | TRY_TABLE(blocktype : blocktype, list(syntax catch), `instr*` : instr*) + | `LOCAL.GET`(localidx : localidx) + | `LOCAL.SET`(localidx : localidx) + | `LOCAL.TEE`(localidx : localidx) + | `GLOBAL.GET`(globalidx : globalidx) + | `GLOBAL.SET`(globalidx : globalidx) + | `TABLE.GET`(tableidx : tableidx) + | `TABLE.SET`(tableidx : tableidx) + | `TABLE.SIZE`(tableidx : tableidx) + | `TABLE.GROW`(tableidx : tableidx) + | `TABLE.FILL`(tableidx : tableidx) + | `TABLE.COPY`(tableidx : tableidx, tableidx : tableidx) + | `TABLE.INIT`(tableidx : tableidx, elemidx : elemidx) + | `ELEM.DROP`(elemidx : elemidx) + | LOAD(numtype : numtype, loadop_?, memidx : memidx, memarg : memarg) + | STORE(numtype : numtype, storeop_?, memidx : memidx, memarg : memarg) + | VLOAD(vectype : vectype, vloadop_?, memidx : memidx, memarg : memarg) + | VLOAD_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | `MEMORY.SIZE`(memidx : memidx) + | `MEMORY.GROW`(memidx : memidx) + | `MEMORY.FILL`(memidx : memidx) + | `MEMORY.COPY`(memidx : memidx, memidx : memidx) + | `MEMORY.INIT`(memidx : memidx, dataidx : dataidx) + | `DATA.DROP`(dataidx : dataidx) + | `REF.NULL`(heaptype : heaptype) + | `REF.IS_NULL` + | `REF.AS_NON_NULL` + | `REF.EQ` + | `REF.TEST`(reftype : reftype) + | `REF.CAST`(reftype : reftype) + | `REF.FUNC`(funcidx : funcidx) + | `REF.I31` + | `I31.GET`(sx : sx) + | `STRUCT.NEW`(typeidx : typeidx) + | `STRUCT.NEW_DEFAULT`(typeidx : typeidx) + | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx) + | `STRUCT.SET`(typeidx : typeidx, fieldidx : fieldidx) + | `ARRAY.NEW`(typeidx : typeidx) + | `ARRAY.NEW_DEFAULT`(typeidx : typeidx) + | `ARRAY.NEW_FIXED`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.NEW_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `ARRAY.GET`(`sx?` : sx?, typeidx : typeidx) + | `ARRAY.SET`(typeidx : typeidx) + | `ARRAY.LEN` + | `ARRAY.FILL`(typeidx : typeidx) + | `ARRAY.COPY`(typeidx : typeidx, typeidx : typeidx) + | `ARRAY.INIT_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.INIT_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `EXTERN.CONVERT_ANY` + | `ANY.CONVERT_EXTERN` + | CONST(numtype : numtype, num_) + | UNOP(numtype : numtype, unop_) + | BINOP(numtype : numtype, binop_) + | TESTOP(numtype : numtype, testop_) + | RELOP(numtype : numtype, relop_) + | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__) + | VCONST(vectype : vectype, vec_) + | VVUNOP(vectype : vectype, vvunop : vvunop) + | VVBINOP(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP(vectype : vectype, vvternop : vvternop) + | VVTESTOP(vectype : vectype, vvtestop : vvtestop) + | VUNOP(shape : shape, vunop_) + | VBINOP(shape : shape, vbinop_) + | VTERNOP(shape : shape, vternop_) + | VTESTOP(shape : shape, vtestop_) + | VRELOP(shape : shape, vrelop_) + | VSHIFTOP(ishape : ishape, vshiftop_) + | VBITMASK(ishape : ishape) + | VSWIZZLOP(bshape : bshape, vswizzlop_) + | VSHUFFLE(bshape : bshape, `laneidx*` : laneidx*) + | VEXTUNOP(ishape_1 : ishape, ishape_2 : ishape, vextunop__) + | VEXTBINOP(ishape_1 : ishape, ishape_2 : ishape, vextbinop__) + | VEXTTERNOP(ishape_1 : ishape, ishape_2 : ishape, vextternop__) + | VNARROW(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + | VCVTOP(shape_1 : shape, shape_2 : shape, vcvtop__) + | VSPLAT(shape : shape) + | VEXTRACT_LANE(shape : shape, `sx?` : sx?, laneidx : laneidx) + | VREPLACE_LANE(shape : shape, laneidx : laneidx) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) + | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) + | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) + | TRAP +} + +def $instr_ref(ref) : instr + def $instr_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_instr(x0) + def $instr_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_instr + def $instr_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_instr(x0) + def $instr_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_instr(x0) + def $instr_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_instr(x0) + def $instr_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_instr(x0) + def $instr_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_instr(x0) + def $instr_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_instr(x0) + +def $instr_val(val) : instr + def $instr_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_instr(x0, x1) + def $instr_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_instr(x0, x1) + def $instr_val{x0 : u31}(`REF.I31_NUM`_val(x0)) = `REF.I31_NUM`_instr(x0) + def $instr_val(`REF.NULL_ADDR`_val) = `REF.NULL_ADDR`_instr + def $instr_val{x0 : structaddr}(`REF.STRUCT_ADDR`_val(x0)) = `REF.STRUCT_ADDR`_instr(x0) + def $instr_val{x0 : arrayaddr}(`REF.ARRAY_ADDR`_val(x0)) = `REF.ARRAY_ADDR`_instr(x0) + def $instr_val{x0 : funcaddr}(`REF.FUNC_ADDR`_val(x0)) = `REF.FUNC_ADDR`_instr(x0) + def $instr_val{x0 : exnaddr}(`REF.EXN_ADDR`_val(x0)) = `REF.EXN_ADDR`_instr(x0) + def $instr_val{x0 : hostaddr}(`REF.HOST_ADDR`_val(x0)) = `REF.HOST_ADDR`_instr(x0) + def $instr_val{x0 : ref}(`REF.EXTERN`_val(x0)) = `REF.EXTERN`_instr(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 +relation wf_instr: `%`(instr) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_0: + `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_1: + `%`(UNREACHABLE_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_2: + `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_3{`valtype*?` : valtype*?}: + `%`(SELECT_instr(`valtype*?`)) + -- (wf_valtype: `%`(valtype))*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_4{blocktype : blocktype, `instr*` : instr*}: + `%`(BLOCK_instr(blocktype, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_5{blocktype : blocktype, `instr*` : instr*}: + `%`(LOOP_instr(blocktype, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_6{blocktype : blocktype, `instr*` : instr*, `instr*_0` : instr*}: + `%`(`IF%%ELSE%`_instr(blocktype, `instr*`, `instr*_0`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(`instr*_0`))*{`instr*_0` <- `instr*_0`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_7{labelidx : labelidx}: + `%`(BR_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_8{labelidx : labelidx}: + `%`(BR_IF_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_9{`labelidx*` : labelidx*, labelidx : labelidx}: + `%`(BR_TABLE_instr(`labelidx*`, labelidx)) + -- (wf_uN: `%%`(32, labelidx))*{labelidx <- `labelidx*`} + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_10{labelidx : labelidx}: + `%`(BR_ON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_11{labelidx : labelidx}: + `%`(BR_ON_NON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_12{labelidx : labelidx, reftype : reftype, reftype_0 : reftype}: + `%`(BR_ON_CAST_instr(labelidx, reftype, reftype_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_13{labelidx : labelidx, reftype : reftype, reftype_0 : reftype}: + `%`(BR_ON_CAST_FAIL_instr(labelidx, reftype, reftype_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_14{funcidx : funcidx}: + `%`(CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_15{typeuse : typeuse}: + `%`(CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_16{tableidx : tableidx, typeuse : typeuse}: + `%`(CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_17: + `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_18{funcidx : funcidx}: + `%`(RETURN_CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_19{typeuse : typeuse}: + `%`(RETURN_CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_20{tableidx : tableidx, typeuse : typeuse}: + `%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_21{tagidx : tagidx}: + `%`(THROW_instr(tagidx)) + -- wf_uN: `%%`(32, tagidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_22: + `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_23{blocktype : blocktype, var_0 : list(syntax catch), `instr*` : instr*}: + `%`(TRY_TABLE_instr(blocktype, var_0, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_24{localidx : localidx}: + `%`(`LOCAL.GET`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_25{localidx : localidx}: + `%`(`LOCAL.SET`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_26{localidx : localidx}: + `%`(`LOCAL.TEE`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_27{globalidx : globalidx}: + `%`(`GLOBAL.GET`_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_28{globalidx : globalidx}: + `%`(`GLOBAL.SET`_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_29{tableidx : tableidx}: + `%`(`TABLE.GET`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_30{tableidx : tableidx}: + `%`(`TABLE.SET`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_31{tableidx : tableidx}: + `%`(`TABLE.SIZE`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_32{tableidx : tableidx}: + `%`(`TABLE.GROW`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_33{tableidx : tableidx}: + `%`(`TABLE.FILL`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_34{tableidx : tableidx, tableidx_0 : tableidx}: + `%`(`TABLE.COPY`_instr(tableidx, tableidx_0)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, tableidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_35{tableidx : tableidx, elemidx : elemidx}: + `%`(`TABLE.INIT`_instr(tableidx, elemidx)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_36{elemidx : elemidx}: + `%`(`ELEM.DROP`_instr(elemidx)) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_37{numtype : numtype, var_0 : loadop_?, memidx : memidx, memarg : memarg}: + `%`(LOAD_instr(numtype, var_0, memidx, memarg)) + -- (wf_loadop_: `%%`(numtype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_38{numtype : numtype, var_0 : storeop_?, memidx : memidx, memarg : memarg}: + `%`(STORE_instr(numtype, var_0, memidx, memarg)) + -- (wf_storeop_: `%%`(numtype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_39{vectype : vectype, var_0 : vloadop_?, memidx : memidx, memarg : memarg}: + `%`(VLOAD_instr(vectype, var_0, memidx, memarg)) + -- (wf_vloadop_: `%%`(vectype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_40{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_41{vectype : vectype, memidx : memidx, memarg : memarg}: + `%`(VSTORE_instr(vectype, memidx, memarg)) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_42{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_43{memidx : memidx}: + `%`(`MEMORY.SIZE`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_44{memidx : memidx}: + `%`(`MEMORY.GROW`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_45{memidx : memidx}: + `%`(`MEMORY.FILL`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_46{memidx : memidx, memidx_0 : memidx}: + `%`(`MEMORY.COPY`_instr(memidx, memidx_0)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, memidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_47{memidx : memidx, dataidx : dataidx}: + `%`(`MEMORY.INIT`_instr(memidx, dataidx)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_48{dataidx : dataidx}: + `%`(`DATA.DROP`_instr(dataidx)) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_49{heaptype : heaptype}: + `%`(`REF.NULL`_instr(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_50: + `%`(`REF.IS_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_51: + `%`(`REF.AS_NON_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_52: + `%`(`REF.EQ`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_53{reftype : reftype}: + `%`(`REF.TEST`_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_54{reftype : reftype}: + `%`(`REF.CAST`_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_55{funcidx : funcidx}: + `%`(`REF.FUNC`_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_56: + `%`(`REF.I31`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_57{sx : sx}: + `%`(`I31.GET`_instr(sx)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_58{typeidx : typeidx}: + `%`(`STRUCT.NEW`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_59{typeidx : typeidx}: + `%`(`STRUCT.NEW_DEFAULT`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_60{`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx}: + `%`(`STRUCT.GET`_instr(`sx?`, typeidx, fieldidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, fieldidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_61{typeidx : typeidx, fieldidx : fieldidx}: + `%`(`STRUCT.SET`_instr(typeidx, fieldidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, fieldidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_62{typeidx : typeidx}: + `%`(`ARRAY.NEW`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_63{typeidx : typeidx}: + `%`(`ARRAY.NEW_DEFAULT`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_64{typeidx : typeidx, u32 : u32}: + `%`(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_65{typeidx : typeidx, dataidx : dataidx}: + `%`(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_66{typeidx : typeidx, elemidx : elemidx}: + `%`(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_67{`sx?` : sx?, typeidx : typeidx}: + `%`(`ARRAY.GET`_instr(`sx?`, typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_68{typeidx : typeidx}: + `%`(`ARRAY.SET`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_69: + `%`(`ARRAY.LEN`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_70{typeidx : typeidx}: + `%`(`ARRAY.FILL`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_71{typeidx : typeidx, typeidx_0 : typeidx}: + `%`(`ARRAY.COPY`_instr(typeidx, typeidx_0)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, typeidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_72{typeidx : typeidx, dataidx : dataidx}: + `%`(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_73{typeidx : typeidx, elemidx : elemidx}: + `%`(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_74: + `%`(`EXTERN.CONVERT_ANY`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_75: + `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_76{numtype : numtype, var_0 : num_}: + `%`(CONST_instr(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_77{numtype : numtype, var_0 : unop_}: + `%`(UNOP_instr(numtype, var_0)) + -- wf_unop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_78{numtype : numtype, var_0 : binop_}: + `%`(BINOP_instr(numtype, var_0)) + -- wf_binop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_79{numtype : numtype, var_0 : testop_}: + `%`(TESTOP_instr(numtype, var_0)) + -- wf_testop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_80{numtype : numtype, var_0 : relop_}: + `%`(RELOP_instr(numtype, var_0)) + -- wf_relop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_81{numtype_1 : numtype, numtype_2 : numtype, var_0 : cvtop__}: + `%`(CVTOP_instr(numtype_1, numtype_2, var_0)) + -- wf_cvtop__: `%%%`(numtype_2, numtype_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_82{vectype : vectype, var_0 : vec_}: + `%`(VCONST_instr(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_83{vectype : vectype, vvunop : vvunop}: + `%`(VVUNOP_instr(vectype, vvunop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_84{vectype : vectype, vvbinop : vvbinop}: + `%`(VVBINOP_instr(vectype, vvbinop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_85{vectype : vectype, vvternop : vvternop}: + `%`(VVTERNOP_instr(vectype, vvternop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_86{vectype : vectype, vvtestop : vvtestop}: + `%`(VVTESTOP_instr(vectype, vvtestop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_87{shape : shape, var_0 : vunop_}: + `%`(VUNOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vunop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_88{shape : shape, var_0 : vbinop_}: + `%`(VBINOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vbinop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_89{shape : shape, var_0 : vternop_}: + `%`(VTERNOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vternop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_90{shape : shape, var_0 : vtestop_}: + `%`(VTESTOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vtestop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_91{shape : shape, var_0 : vrelop_}: + `%`(VRELOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vrelop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_92{ishape : ishape, var_0 : vshiftop_}: + `%`(VSHIFTOP_instr(ishape, var_0)) + -- wf_ishape: `%`(ishape) + -- wf_vshiftop_: `%%`(ishape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_93{ishape : ishape}: + `%`(VBITMASK_instr(ishape)) + -- wf_ishape: `%`(ishape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_94{bshape : bshape, var_0 : vswizzlop_}: + `%`(VSWIZZLOP_instr(bshape, var_0)) + -- wf_bshape: `%`(bshape) + -- wf_vswizzlop_: `%%`(bshape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*}: + `%`(VSHUFFLE_instr(bshape, `laneidx*`)) + -- wf_bshape: `%`(bshape) + -- (wf_uN: `%%`(8, laneidx))*{laneidx <- `laneidx*`} + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim($proj_bshape_0(bshape).0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextunop__}: + `%`(VEXTUNOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextunop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_97{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextbinop__}: + `%`(VEXTBINOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextbinop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_98{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextternop__}: + `%`(VEXTTERNOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextternop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_99{ishape_1 : ishape, ishape_2 : ishape, sx : sx}: + `%`(VNARROW_instr(ishape_1, ishape_2, sx)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- if (($lsize($lanetype($proj_ishape_0(ishape_2).0)) = (2 * $lsize($lanetype($proj_ishape_0(ishape_1).0)))) /\ ((2 * $lsize($lanetype($proj_ishape_0(ishape_1).0))) <= 32)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_100{shape_1 : shape, shape_2 : shape, var_0 : vcvtop__}: + `%`(VCVTOP_instr(shape_1, shape_2, var_0)) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_2, shape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_101{shape : shape}: + `%`(VSPLAT_instr(shape)) + -- wf_shape: `%`(shape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_102{shape : shape, `sx?` : sx?, laneidx : laneidx}: + `%`(VEXTRACT_LANE_instr(shape, `sx?`, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_103{shape : shape, laneidx : laneidx}: + `%`(VREPLACE_LANE_instr(shape, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_104{u31 : u31}: + `%`(`REF.I31_NUM`_instr(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_105: + `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_106{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_instr(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_107{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_instr(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_108{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_instr(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_109{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_instr(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_110{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_instr(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_111{ref : ref}: + `%`(`REF.EXTERN`_instr(ref)) + -- wf_ref: `%`(ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_112{n : n, `instr*` : instr*, `instr*_0` : instr*}: + `%`(`LABEL_%{%}%`_instr(n, `instr*`, `instr*_0`)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(`instr*_0`))*{`instr*_0` <- `instr*_0`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_113{n : n, frame : frame, `instr*` : instr*}: + `%`(`FRAME_%{%}%`_instr(n, frame, `instr*`)) + -- wf_frame: `%`(frame) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_114{n : n, `catch*` : catch*, `instr*` : instr*}: + `%`(`HANDLER_%{%}%`_instr(n, `catch*`, `instr*`)) + -- (wf_catch: `%`(catch))*{catch <- `catch*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_115: + `%`(TRAP_instr) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax expr = instr* + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $memarg0 : memarg + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation memarg0_is_wf: `%`(ret_val : memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg0_is_wf_0{ret_val : memarg}: + `%`(ret_val) + -- if (ret_val = $memarg0) + -- wf_memarg: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $const(consttype : consttype, lit_ : lit_) : instr + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(I32_consttype, mk_lit__0_lit_(I32_numtype, c)) = CONST_instr(I32_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(I64_consttype, mk_lit__0_lit_(I64_numtype, c)) = CONST_instr(I64_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(F32_consttype, mk_lit__0_lit_(F32_numtype, c)) = CONST_instr(F32_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(F64_consttype, mk_lit__0_lit_(F64_numtype, c)) = CONST_instr(F64_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : uN}(V128_consttype, mk_lit__1_lit_(V128_vectype, c)) = VCONST_instr(V128_vectype, c) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation const_is_wf: `%%%`(consttype : consttype, lit_ : lit_, ret_val : instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule const_is_wf_0{consttype : consttype, lit_ : lit_, ret_val : instr}: + `%%%`(consttype, lit_, ret_val) + -- wf_lit_: `%%`($storagetype_consttype(consttype), lit_) + -- if (ret_val = $const(consttype, lit_)) + -- wf_instr: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_shape(shape : shape) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_shape_is_wf: `%%`(shape : shape, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_shape_is_wf_0{shape : shape, ret_val : free}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $free_shape(shape)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_blocktype(blocktype : blocktype) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype#504?{valtype#504 <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_blocktype{typeidx : uN}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_blocktype_is_wf: `%%`(blocktype : blocktype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_blocktype_is_wf_0{blocktype : blocktype, ret_val : free}: + `%%`(blocktype, ret_val) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $free_blocktype(blocktype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_catch(catch : catch) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : uN, labelidx : uN}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : uN, labelidx : uN}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : uN}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : uN}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_catch_is_wf: `%%`(catch : catch, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_catch_is_wf_0{catch : catch, ret_val : free}: + `%%`(catch, ret_val) + -- wf_catch: `%`(catch) + -- if (ret_val = $free_catch(catch)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.1-584.44 +def $shift_labelidxs(labelidx*) : labelidx* + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.32 + def $shift_labelidxs([]) = [] + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.66 + def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'#1*{labelidx'#1 <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.91 + def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'#2*{labelidx'#2 <- `labelidx'*`}) = [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.1-420.30 +def $free_instr(instr : instr) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-435.26 + def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.34 + def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.27 + def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.86 + def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype#505*{valtype#505 <- `valtype*#1`}?{`valtype*#1` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.92 + def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr#1*{instr#1 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.91 + def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr#2*{instr#2 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-443.79 + def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1#1*{instr_1#1 <- `instr_1*`}, instr_2#1*{instr_2#1 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:445.1-445.56 + def $free_instr{labelidx : uN}(BR_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.59 + def $free_instr{labelidx : uN}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-448.69 + def $free_instr{`labelidx*` : labelidx*, labelidx' : uN}(BR_TABLE_instr(labelidx#1*{labelidx#1 <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.64 + def $free_instr{labelidx : uN}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.68 + def $free_instr{labelidx : uN}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-452.83 + def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-454.83 + def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-456.55 + def $free_instr{funcidx : uN}(CALL_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.59 + def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-459.53 + def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.29 + def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 + def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.66 + def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-464.53 + def $free_instr{tableidx : uN, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:466.1-466.53 + def $free_instr{tagidx : uN}(THROW_instr(tagidx)) = $free_tagidx(tagidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.32 + def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-469.99 + def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch#1*{catch#1 <- `catch*`}), instr#3*{instr#3 <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.63 + def $free_instr{numtype : numtype, numlit : num_}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.60 + def $free_instr{numtype : numtype, unop : unop_}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.62 + def $free_instr{numtype : numtype, binop : binop_}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.64 + def $free_instr{numtype : numtype, testop : testop_}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.62 + def $free_instr{numtype : numtype, relop : relop_}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-477.55 + def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.64 + def $free_instr{vectype : vectype, veclit : uN}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 + def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-481.66 + def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:482.1-482.68 + def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.68 + def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.56 + def $free_instr{shape : shape, vunop : vunop_}(VUNOP_instr(shape, vunop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.58 + def $free_instr{shape : shape, vbinop : vbinop_}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.60 + def $free_instr{shape : shape, vternop : vternop_}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-487.60 + def $free_instr{shape : shape, vtestop : vtestop_}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:488.1-488.58 + def $free_instr{shape : shape, vrelop : vrelop_}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.64 + def $free_instr{ishape : ishape, vshiftop : vshiftop_}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape($proj_ishape_0(ishape).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.55 + def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape($proj_ishape_0(ishape).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.66 + def $free_instr{bshape : bshape, vswizzlop : vswizzlop_}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape($proj_bshape_0(bshape).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.64 + def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx#1*{laneidx#1 <- `laneidx*`})) = $free_shape($proj_bshape_0(bshape).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-494.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-496.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-498.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-500.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-502.47 + def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:503.1-503.51 + def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.70 + def $free_instr{shape : shape, `sx?` : sx?, laneidx : uN}(VEXTRACT_LANE_instr(shape, sx#45969?{sx#45969 <- `sx?`}, laneidx)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:505.1-505.66 + def $free_instr{shape : shape, laneidx : uN}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.62 + def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.34 + def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.38 + def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.29 + def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 + def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 + def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.59 + def $free_instr{funcidx : uN}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.30 + def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.33 + def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.61 + def $free_instr{typeidx : uN}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.69 + def $free_instr{typeidx : uN}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.69 + def $free_instr{`sx?` : sx?, typeidx : uN, u32 : uN}(`STRUCT.GET`_instr(sx#45970?{sx#45970 <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.65 + def $free_instr{typeidx : uN, u32 : uN}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.60 + def $free_instr{typeidx : uN}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.68 + def $free_instr{typeidx : uN}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.70 + def $free_instr{typeidx : uN, u32 : uN}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 + def $free_instr{typeidx : uN, dataidx : uN}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:528.1-529.51 + def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.64 + def $free_instr{`sx?` : sx?, typeidx : uN}(`ARRAY.GET`_instr(sx#45971?{sx#45971 <- `sx?`}, typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.60 + def $free_instr{typeidx : uN}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.32 + def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.61 + def $free_instr{typeidx : uN}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.55 + def $free_instr{typeidx_1 : uN, typeidx_2 : uN}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-537.51 + def $free_instr{typeidx : uN, dataidx : uN}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:538.1-539.51 + def $free_instr{typeidx : uN, elemidx : uN}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.41 + def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 + def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 + def $free_instr{localidx : uN}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 + def $free_instr{localidx : uN}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.63 + def $free_instr{localidx : uN}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.67 + def $free_instr{globalidx : uN}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.67 + def $free_instr{globalidx : uN}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:551.1-551.63 + def $free_instr{tableidx : uN}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.63 + def $free_instr{tableidx : uN}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.64 + def $free_instr{tableidx : uN}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-554.64 + def $free_instr{tableidx : uN}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.64 + def $free_instr{tableidx : uN}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.59 + def $free_instr{tableidx_1 : uN, tableidx_2 : uN}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.53 + def $free_instr{tableidx : uN, elemidx : uN}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-560.60 + def $free_instr{elemidx : uN}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-563.49 + def $free_instr{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg}(LOAD_instr(numtype, loadop#1?{loadop#1 <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-565.49 + def $free_instr{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg}(STORE_instr(numtype, storeop#1?{storeop#1 <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-567.49 + def $free_instr{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg}(VLOAD_instr(vectype, vloadop#1?{vloadop#1 <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:568.1-569.49 + def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:570.1-571.49 + def $free_instr{vectype : vectype, memidx : uN, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-573.49 + def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.59 + def $free_instr{memidx : uN}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.59 + def $free_instr{memidx : uN}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:576.1-576.59 + def $free_instr{memidx : uN}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.51 + def $free_instr{memidx_1 : uN, memidx_2 : uN}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-580.49 + def $free_instr{memidx : uN, dataidx : uN}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:581.1-581.60 + def $free_instr{dataidx : uN}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.1-421.31 +def $free_block(instr*) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:589.1-590.47 + def $free_block{`instr*` : instr*}(instr#4*{instr#4 <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + -- let{free : free} free = $free_list($free_instr(instr#5)*{instr#5 <- `instr*`}) + -- wf_free: `%`($free_list($free_instr(instr#6)*{instr#6 <- `instr*`})) + -- (wf_free: `%`($free_instr(instr#7)))*{instr#7 <- `instr*`} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation free_instr_is_wf: `%%`(instr : instr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule free_instr_is_wf_0{instr : instr, ret_val : free}: + `%%`(instr, ret_val) + -- wf_instr: `%`(instr) + -- if (ret_val = $free_instr(instr)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation free_block_is_wf: `%%`(var_0 : instr*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule free_block_is_wf_0{var_0 : instr*, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $free_block(var_0)) + -- wf_free: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_expr(expr : expr) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_expr{`instr*` : instr*}(instr#8*{instr#8 <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_expr_is_wf: `%%`(expr : expr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_expr_is_wf_0{expr : expr, ret_val : free}: + `%%`(expr, ret_val) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- if (ret_val = $free_expr(expr)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elemmode = + | ACTIVE(tableidx : tableidx, expr : expr) + | PASSIVE + | DECLARE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elemmode: `%`(elemmode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_0{tableidx : tableidx, expr : expr}: + `%`(ACTIVE_elemmode(tableidx, expr)) + -- wf_uN: `%%`(32, tableidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_1: + `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_2: + `%`(DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax datamode = + | ACTIVE(memidx : memidx, expr : expr) + | PASSIVE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_datamode: `%`(datamode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_0{memidx : memidx, expr : expr}: + `%`(ACTIVE_datamode(memidx, expr)) + -- wf_uN: `%%`(32, memidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_1: + `%`(PASSIVE_datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax type = + | TYPE(rectype : rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax tag = + | TAG(tagtype : tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_tag: `%`(tag) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule tag_case_0{tagtype : tagtype}: + `%`(TAG_tag(tagtype)) + -- wf_typeuse: `%`(tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax global = + | GLOBAL(globaltype : globaltype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_global: `%`(global) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule global_case_0{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax mem = + | MEMORY(memtype : memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_mem: `%`(mem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule mem_case_0{memtype : memtype}: + `%`(MEMORY_mem(memtype)) + -- wf_memtype: `%`(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax table = + | TABLE(tabletype : tabletype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_table: `%`(table) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule table_case_0{tabletype : tabletype, expr : expr}: + `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax data = + | DATA(`byte*` : byte*, datamode : datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_data: `%`(data) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule data_case_0{`byte*` : byte*, datamode : datamode}: + `%`(DATA_data(`byte*`, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax local = + | LOCAL(valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_local: `%`(local) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule local_case_0{valtype : valtype}: + `%`(LOCAL_local(valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax func = + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_func: `%`(func) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule func_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_func(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elem = + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elem: `%`(elem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_elem(reftype, `expr*`, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax start = + | START(funcidx : funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_start: `%`(start) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule start_case_0{funcidx : funcidx}: + `%`(START_start(funcidx)) + -- wf_uN: `%%`(32, funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax import = + | IMPORT(name : name, name : name, externtype : externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_import: `%`(import) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule import_case_0{name : name, name_0 : name, externtype : externtype}: + `%`(IMPORT_import(name, name_0, externtype)) + -- wf_name: `%`(name) + -- wf_name: `%`(name_0) + -- wf_externtype: `%`(externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax export = + | EXPORT(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_export: `%`(export) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule export_case_0{name : name, externidx : externidx}: + `%`(EXPORT_export(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax module = + | MODULE(list(syntax type), list(syntax import), list(syntax tag), list(syntax global), list(syntax mem), list(syntax table), list(syntax func), list(syntax data), list(syntax elem), `start?` : start?, list(syntax export)) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_module: `%`(module) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule module_case_0{var_0 : list(syntax type), var_1 : list(syntax import), var_2 : list(syntax tag), var_3 : list(syntax global), var_4 : list(syntax mem), var_5 : list(syntax table), var_6 : list(syntax func), var_7 : list(syntax data), var_8 : list(syntax elem), `start?` : start?, var_9 : list(syntax export)}: + `%`(MODULE_module(var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, `start?`, var_9)) + -- (wf_start: `%`(start))?{start <- `start?`} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_type(type : type) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_type_is_wf: `%%`(type : type, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_type_is_wf_0{type : type, ret_val : free}: + `%%`(type, ret_val) + -- if (ret_val = $free_type(type)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_tag(tag : tag) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_tag_is_wf: `%%`(tag : tag, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_tag_is_wf_0{tag : tag, ret_val : free}: + `%%`(tag, ret_val) + -- wf_tag: `%`(tag) + -- if (ret_val = $free_tag(tag)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_global(global : global) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_global_is_wf: `%%`(global : global, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_global_is_wf_0{global : global, ret_val : free}: + `%%`(global, ret_val) + -- wf_global: `%`(global) + -- if (ret_val = $free_global(global)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_mem(mem : mem) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_mem_is_wf: `%%`(mem : mem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_mem_is_wf_0{mem : mem, ret_val : free}: + `%%`(mem, ret_val) + -- wf_mem: `%`(mem) + -- if (ret_val = $free_mem(mem)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_table(table : table) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_table_is_wf: `%%`(table : table, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_table_is_wf_0{table : table, ret_val : free}: + `%%`(table, ret_val) + -- wf_table: `%`(table) + -- if (ret_val = $free_table(table)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_local(local : local) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_local_is_wf: `%%`(local : local, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_local_is_wf_0{local : local, ret_val : free}: + `%%`(local, ret_val) + -- wf_local: `%`(local) + -- if (ret_val = $free_local(local)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_func(func : func) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local#1*{local#1 <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_func_is_wf: `%%`(func : func, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_func_is_wf_0{func : func, ret_val : free}: + `%%`(func, ret_val) + -- wf_func: `%`(func) + -- if (ret_val = $free_func(func)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_datamode(datamode : datamode) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_datamode_is_wf: `%%`(datamode : datamode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_datamode_is_wf_0{datamode : datamode, ret_val : free}: + `%%`(datamode, ret_val) + -- wf_datamode: `%`(datamode) + -- if (ret_val = $free_datamode(datamode)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_data(data : data) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte#1*{byte#1 <- `byte*`}, datamode)) = $free_datamode(datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_data_is_wf: `%%`(data : data, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_data_is_wf_0{data : data, ret_val : free}: + `%%`(data, ret_val) + -- wf_data: `%`(data) + -- if (ret_val = $free_data(data)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_elemmode(elemmode : elemmode) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elemmode_is_wf: `%%`(elemmode : elemmode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elemmode_is_wf_0{elemmode : elemmode, ret_val : free}: + `%%`(elemmode, ret_val) + -- wf_elemmode: `%`(elemmode) + -- if (ret_val = $free_elemmode(elemmode)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_elem(elem : elem) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr#358*{expr#358 <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elem_is_wf: `%%`(elem : elem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elem_is_wf_0{elem : elem, ret_val : free}: + `%%`(elem, ret_val) + -- wf_elem: `%`(elem) + -- if (ret_val = $free_elem(elem)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_start(start : start) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_start_is_wf: `%%`(start : start, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_start_is_wf_0{start : start, ret_val : free}: + `%%`(start, ret_val) + -- wf_start: `%`(start) + -- if (ret_val = $free_start(start)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_import(import : import) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_import_is_wf: `%%`(import : import, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_import_is_wf_0{import : import, ret_val : free}: + `%%`(import, ret_val) + -- wf_import: `%`(import) + -- if (ret_val = $free_import(import)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_export(export : export) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_export_is_wf: `%%`(export : export, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_export_is_wf_0{export : export, ret_val : free}: + `%%`(export, ret_val) + -- wf_export: `%`(export) + -- if (ret_val = $free_export(export)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_module(module : module) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_list(type#1*{type#1 <- `type*`}), `%`_list(import#1*{import#1 <- `import*`}), `%`_list(tag#1*{tag#1 <- `tag*`}), `%`_list(global#1*{global#1 <- `global*`}), `%`_list(mem#1*{mem#1 <- `mem*`}), `%`_list(table#1*{table#1 <- `table*`}), `%`_list(func#1*{func#1 <- `func*`}), `%`_list(data#1*{data#1 <- `data*`}), `%`_list(elem#1*{elem#1 <- `elem*`}), start#1?{start#1 <- `start?`}, `%`_list(export#1*{export#1 <- `export*`}))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_module_is_wf: `%%`(module : module, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_module_is_wf_0{module : module, ret_val : free}: + `%%`(module, ret_val) + -- wf_module: `%`(module) + -- if (ret_val = $free_module(module)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $funcidx_module(module : module) : funcidx* + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $funcidx_module{module : module}(module) = $free_module(module).FUNCS_free + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $dataidx_funcs(func*) : dataidx* + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $dataidx_funcs{`func*` : func*}(func#2*{func#2 <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).DATAS_free + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax init = + | SET + | UNSET + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax localtype = + | `%%`(init : init, valtype : valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_localtype: `%`(localtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule localtype_case_0{init : init, valtype : valtype}: + `%`(`%%`_localtype(init, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax instrtype = + | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : resulttype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_instrtype: `%`(instrtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule instrtype_case_0{resulttype : resulttype, `localidx*` : localidx*, resulttype_0 : resulttype}: + `%`(`%->_%%`_instrtype(resulttype, `localidx*`, resulttype_0)) + -- (wf_uN: `%%`(32, localidx))*{localidx <- `localidx*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax context = +{ + TYPES deftype*, + TAGS tagtype*, + GLOBALS globaltype*, + MEMS memtype*, + TABLES tabletype*, + FUNCS deftype*, + DATAS datatype*, + ELEMS elemtype*, + LOCALS localtype*, + LABELS resulttype*, + RETURN resulttype?, + REFS funcidx*, + RECS subtype* +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_context: `%`(context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule context_case_{var_0 : deftype*, var_1 : tagtype*, var_2 : globaltype*, var_3 : memtype*, var_4 : tabletype*, var_5 : deftype*, var_6 : datatype*, var_7 : elemtype*, var_8 : localtype*, var_9 : resulttype*, var_10 : resulttype?, var_11 : funcidx*, var_12 : subtype*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, RETURN var_10, REFS var_11, RECS var_12}) + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- (wf_globaltype: `%`(var_2))*{var_2 <- var_2} + -- (wf_memtype: `%`(var_3))*{var_3 <- var_3} + -- (wf_tabletype: `%`(var_4))*{var_4 <- var_4} + -- (wf_reftype: `%`(var_7))*{var_7 <- var_7} + -- (wf_localtype: `%`(var_8))*{var_8 <- var_8} + -- (wf_uN: `%%`(32, var_11))*{var_11 <- var_11} + -- (wf_subtype: `%`(var_12))*{var_12 <- var_12} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.158 +def $with_locals(context : context, localidx*, localtype*) : context? + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.34 + def $with_locals{C : context}(C, [], []) = ?(C) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:52.1-52.90 + def $with_locals{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x#1*{x#1 <- `x*`}, [lct_1] ++ lct#1*{lct#1 <- `lct*`}) = $with_locals(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) + def $with_locals{x0 : context, x1 : localidx*, x2 : localtype*}(x0, x1, x2) = ?() + -- otherwise +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation with_locals_is_wf: `%%%%`(context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule with_locals_is_wf_0{context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context}: + `%%%%`(context, var_0, var_1, ret_val) + -- wf_context: `%`(context) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_localtype: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !($with_locals(context, var_0, var_1))) + -- wf_context: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 +def $clos_deftypes(deftype*) : deftype* + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 + def $clos_deftypes([]) = [] + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:72.1-72.101 + def $clos_deftypes{`dt*` : deftype*, dt_n : deftype}(dt#2*{dt#2 <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, $typeuse_deftype(dt')*{dt' <- `dt'*`})] + -- let{`dt'*` : deftype*} dt'#1*{dt'#1 <- `dt'*`} = $clos_deftypes(dt#3*{dt#3 <- `dt*`}) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_valtype(context : context, valtype : valtype) : valtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_valtype{C : context, t : valtype}(C, t) = $subst_all_valtype(t, $typeuse_deftype(dt)*{dt <- `dt*`}) + -- let{`dt*` : deftype*} dt#4*{dt#4 <- `dt*`} = $clos_deftypes(C.TYPES_context) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_valtype_is_wf: `%%%`(context : context, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_valtype_is_wf_0{context : context, valtype : valtype, ret_val : valtype}: + `%%%`(context, valtype, ret_val) + -- wf_context: `%`(context) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $clos_valtype(context, valtype)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_deftype(context : context, deftype : deftype) : deftype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_deftype{C : context, dt : deftype}(C, dt) = $subst_all_deftype(dt, $typeuse_deftype(dt')*{dt' <- `dt'*`}) + -- let{`dt'*` : deftype*} dt'#2*{dt'#2 <- `dt'*`} = $clos_deftypes(C.TYPES_context) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_tagtype(context : context, tagtype : tagtype) : tagtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_tagtype{C : context, jt : typeuse}(C, jt) = $subst_all_tagtype(jt, $typeuse_deftype(dt)*{dt <- `dt*`}) + -- let{`dt*` : deftype*} dt#5*{dt#5 <- `dt*`} = $clos_deftypes(C.TYPES_context) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_externtype(context : context, externtype : externtype) : externtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_externtype{C : context, xt : externtype}(C, xt) = $subst_all_externtype(xt, $typeuse_deftype(dt)*{dt <- `dt*`}) + -- let{`dt*` : deftype*} dt#6*{dt#6 <- `dt*`} = $clos_deftypes(C.TYPES_context) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_externtype_is_wf: `%%%`(context : context, externtype : externtype, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_externtype_is_wf_0{context : context, externtype : externtype, ret_val : externtype}: + `%%%`(context, externtype, ret_val) + -- wf_context: `%`(context) + -- wf_externtype: `%`(externtype) + -- if (ret_val = $clos_externtype(context, externtype)) + -- wf_externtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_moduletype(context : context, moduletype : moduletype) : moduletype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_moduletype{C : context, mmt : moduletype}(C, mmt) = $subst_all_moduletype(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}) + -- let{`dt*` : deftype*} dt#7*{dt#7 <- `dt*`} = $clos_deftypes(C.TYPES_context) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_moduletype_is_wf: `%%%`(context : context, moduletype : moduletype, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_moduletype_is_wf_0{context : context, moduletype : moduletype, ret_val : moduletype}: + `%%%`(context, moduletype, ret_val) + -- wf_context: `%`(context) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = $clos_moduletype(context, moduletype)) + -- wf_moduletype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Numtype_ok: `%|-%:OK`(context, numtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, numtype : numtype}: + `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Vectype_ok: `%|-%:OK`(context, vectype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, vectype : vectype}: + `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypenat = + | OK(nat) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Packtype_ok: `%|-%:OK`(context, packtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, packtype : packtype}: + `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, packtype : packtype}: + `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, numtype : numtype}: + `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand: `%~~%`(deftype, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: + `%~~%`(deftype, comptype) + -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- wf_subtype: `%`($unrolldt(deftype)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, vectype : vectype}: + `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $before(typeuse : typeuse, nat : nat) : bool + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{j : nat, i : nat}(REC_typeuse(j), i) = (j < i) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{typeuse : typeuse, i : nat}(typeuse, i) = true + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $unrollht_(context : context, heaptype : heaptype) : subtype + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht_{rectype : rectype, n : n, C : context}(C, _DEF_heaptype(rectype, n)) = $unrolldt(_DEF_deftype(rectype, n)) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht_{C : context, typeidx : uN}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[$proj_uN_0(typeidx).0]) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht_{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation unrollht__is_wf: `%%%`(context : context, heaptype : heaptype, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule unrollht__is_wf_0{context : context, heaptype : heaptype, ret_val : subtype}: + `%%%`(context, heaptype, ret_val) + -- wf_context: `%`(context) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = $unrollht_(context, heaptype)) + -- wf_subtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 +relation Heaptype_ok: `%|-%:OK`(context, heaptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 + rule abs{C : context, absheaptype : absheaptype}: + `%|-%:OK`(C, $heaptype_absheaptype(absheaptype)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 + rule typeuse{C : context, typeuse : typeuse}: + `%|-%:OK`(C, $heaptype_typeuse(typeuse)) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 +relation Reftype_ok: `%|-%:OK`(context, reftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:30.1-32.37 + rule _{C : context, heaptype : heaptype}: + `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- Heaptype_ok: `%|-%:OK`(C, heaptype) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 +relation Valtype_ok: `%|-%:OK`(context, valtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:34.1-36.35 + rule num{C : context, numtype : numtype}: + `%|-%:OK`(C, $valtype_numtype(numtype)) + -- Numtype_ok: `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 + rule vec{C : context, vectype : vectype}: + `%|-%:OK`(C, $valtype_vectype(vectype)) + -- Vectype_ok: `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 + rule ref{C : context, reftype : reftype}: + `%|-%:OK`(C, $valtype_reftype(reftype)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 +relation Typeuse_ok: `%|-%:OK`(context, typeuse) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:106.1-108.30 + rule typeidx{C : context, typeidx : typeidx, dt : deftype}: + `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 + rule rec{C : context, i : n, st : subtype}: + `%|-%:OK`(C, REC_typeuse(i)) + -- if (C.RECS_context[i] = st) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 + rule deftype{C : context, deftype : deftype}: + `%|-%:OK`(C, $typeuse_deftype(deftype)) + -- Deftype_ok: `%|-%:OK`(C, deftype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 +relation Resulttype_ok: `%|-%:OK`(context, resulttype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:60.1-62.32 + rule _{C : context, `t*` : valtype*}: + `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 +relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:130.1-132.43 + rule _{C : context, storagetype : storagetype}: + `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- Storagetype_ok: `%|-%:OK`(C, storagetype) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 +relation Storagetype_ok: `%|-%:OK`(context, storagetype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:122.1-124.35 + rule val{C : context, valtype : valtype}: + `%|-%:OK`(C, $storagetype_valtype(valtype)) + -- Valtype_ok: `%|-%:OK`(C, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 + rule pack{C : context, packtype : packtype}: + `%|-%:OK`(C, $storagetype_packtype(packtype)) + -- Packtype_ok: `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 +relation Comptype_ok: `%|-%:OK`(context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:135.1-137.42 + rule struct{C : context, `fieldtype*` : fieldtype*}: + `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 + rule array{C : context, fieldtype : fieldtype}: + `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 + rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 +relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:167.1-176.49 + rule _{C : context, `typeuse*` : typeuse*, comptype : comptype, i : nat, `comptype'*` : comptype*, `typeuse'**` : typeuse**}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype), OK_oktypenat(i)) + -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) + -- (Typeuse_ok: `%|-%:OK`(C, typeuse))*{typeuse <- `typeuse*`} + -- (if $before(typeuse, i))*{typeuse <- `typeuse*`} + -- (if ($unrollht_(C, $heaptype_typeuse(typeuse)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- wf_context: `%`(C) + -- (wf_subtype: `%`($unrollht_(C, $heaptype_typeuse(typeuse))))*{typeuse <- `typeuse*`} + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 +relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 + rule empty{C : context, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypenat(i)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypenat(i)) + -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) + -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypenat((i + 1))) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 +relation Deftype_ok: `%|-%:OK`(context, deftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:197.1-201.14 + rule _{C : context, rectype : rectype, i : n, n : n, `subtype*` : subtype*}: + `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) + -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) + -- if (i < n) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}}) + -- if (n = |`subtype*`|) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 +relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:181.1-183.41 + rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: + `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 + rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: + `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 + rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: + `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 +relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) + -- wf_context: `%`(C) + -- wf_subtype: `%`($unrolldt(deftype_1)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 +relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 + rule refl{C : context, heaptype : heaptype}: + `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 + rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: + `%|-%<:%`(C, heaptype_1, heaptype_2) + -- Heaptype_ok: `%|-%:OK`(C, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 + rule `eq-any`{C : context}: + `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 + rule `i31-eq`{C : context}: + `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 + rule `struct-eq`{C : context}: + `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 + rule `array-eq`{C : context}: + `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 + rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, $heaptype_deftype(deftype), STRUCT_heaptype) + -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 + rule array{C : context, deftype : deftype, fieldtype : fieldtype}: + `%|-%<:%`(C, $heaptype_deftype(deftype), ARRAY_heaptype) + -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 + rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, $heaptype_deftype(deftype), FUNC_heaptype) + -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 + rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 + rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: + `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 + rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: + `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 + rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 + rule `rec-array`{C : context, i : n, `final?` : final?, fieldtype : fieldtype}: + `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 + rule `rec-func`{C : context, i : n, `final?` : final?, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 + rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: + `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[j])) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 + rule none{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NONE_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:86.1-89.25 + rule nofunc{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:91.1-94.25 + rule noexn{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:96.1-99.25 + rule noextern{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 + rule bot{C : context, heaptype : heaptype}: + `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 +relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:105.1-107.37 + rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 + rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 +relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:114.1-116.46 + rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: + `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) + -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 + rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: + `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) + -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 + rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: + `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 + rule bot{C : context, valtype : valtype}: + `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 +relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-137.37 + rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 +relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:162.1-164.46 + rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 + rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: + `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) + -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 +relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:171.1-173.40 + rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 + rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Localtype_ok: `%|-%:OK`(context, localtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, init : init, t : valtype}: + `%|-%:OK`(C, `%%`_localtype(init, t)) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Instrtype_ok: `%|-%:OK`(context, instrtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand_use: `%~~_%%`(typeuse, context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule deftype{deftype : deftype, C : context, comptype : comptype}: + `%~~_%%`($typeuse_deftype(deftype), C, comptype) + -- Expand: `%~~%`(deftype, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: + `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidx = + | OK(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation wf_oktypeidx: `%`(oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule oktypeidx_case_0{typeidx : typeidx}: + `%`(OK_oktypeidx(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `comptype'*` : comptype*, `yy**` : typeuse**}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- if (|x*{x <- `x*`}| <= 1) + -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} + -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `yy*` <- `yy**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- wf_context: `%`(C) + -- (wf_subtype: `%`($unrolldt(C.TYPES_context[$proj_uN_0(x).0])))*{x <- `x*`} + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.126 +relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 + rule empty{C : context, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Limits_ok: `%|-%:%`(context, limits, nat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, n : n, `m?` : m?, k : nat}: + `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- if (n <= k) + -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tagtype_ok: `%|-%:OK`(context, tagtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, typeuse) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Globaltype_ok: `%|-%:OK`(context, globaltype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, t : valtype}: + `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Memtype_ok: `%|-%:OK`(context, memtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits}: + `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size($numtype_addrtype(addrtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tabletype_ok: `%|-%:OK`(context, tabletype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: + `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size($numtype_addrtype(addrtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Externtype_ok: `%|-%:OK`(context, externtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule tag{C : context, tagtype : tagtype}: + `%|-%:OK`(C, TAG_externtype(tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule global{C : context, globaltype : globaltype}: + `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mem{C : context, memtype : memtype}: + `%|-%:OK`(C, MEM_externtype(memtype)) + -- Memtype_ok: `%|-%:OK`(C, memtype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule table{C : context, tabletype : tabletype}: + `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: + `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- (wf_uN: `%%`(32, iter))*{iter <- $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Limits_sub: `%|-%<:%`(context, limits, limits) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + -- if (n_1 >= n_2) + -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule eps{C : context, n_1 : n, n_2 : n}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) + -- if (n_1 >= n_2) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: + `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: + `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: + `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: + `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: + `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: + `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule valtype{C : context, `valtype?` : valtype?}: + `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Catch_ok: `%|-%:OK`(context, catch) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_catch(x, l)) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all_ref{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +def $default_(valtype : valtype) : val?? + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(I32_valtype) = ?(?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(I64_valtype) = ?(?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(F32_valtype) = ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(F64_valtype) = ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(V128_valtype) = ?(?(VCONST_val(V128_vectype, `%`_vec_(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) + def $default_{x0 : valtype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation default__is_wf: `%%`(valtype : valtype, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule default__is_wf_0{valtype : valtype, ret_val : val?}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if (ret_val = !($default_(valtype))) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Defaultable: `|-%DEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%DEFAULTABLE`(t) + -- if (!($default_(t)) =/= ?()) + -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{n : n, m : m, at : addrtype, N : N}: + `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) + -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- if (m < (2 ^ $size($numtype_addrtype(at)))) + -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +def $is_packtype(storagetype : storagetype) : bool + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + def $is_packtype{zt : storagetype}(zt) = (zt =/= $storagetype_valtype($unpack(zt))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 +relation Instr_ok: `%|-%:%`(context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 + rule nop{C : context}: + `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 + rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 + rule drop{C : context, t : valtype}: + `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 + rule `select-expl`{C : context, t : valtype}: + `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 + rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Valtype_sub: `%|-%<:%`(C, t, t') + -- if ((t' = $valtype_numtype(numtype)) \/ (t' = $valtype_vectype(vectype))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 + rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 + rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 + rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 + rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 + rule br_if{C : context, l : labelidx, `t*` : valtype*}: + `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 + rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 + rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 + rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`($diffrt(rt_1, rt_2)) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 + rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 + rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 + rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: + `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 + rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 + rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 + rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 + rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 + rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 + rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 + rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 + rule `ref.null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.NULL`_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 + rule `ref.func`{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + -- if (x <- C.REFS_context) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.FUNC`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 + rule `ref.i31`{C : context}: + `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.I31`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 + rule `ref.is_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 + rule `ref.as_non_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 + rule `ref.eq`{C : context}: + `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 + rule `ref.test`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.TEST`_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 + rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.CAST`_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 + rule `i31.get`{C : context, sx : sx}: + `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 + rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 + rule `struct.new_default`{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} + -- wf_context: `%`(C) + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} + -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 + rule `struct.get`{C : context, `sx?` : sx?, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: + `%|-%:%`(C, `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 + rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*}: + `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 + rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 + rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype}: + `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 + rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 + rule `array.new_elem`{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: + `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) + -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 + rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 + rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 + rule `array.set`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 + rule `array.len`{C : context}: + `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.LEN`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 + rule `array.fill`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 + rule `array.copy`{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 + rule `array.init_elem`{C : context, x : idx, y : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 + rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 + rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + -- wf_context: `%`(C) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 + rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 + rule `local.get`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 + rule `local.set`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 + rule `local.tee`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 + rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: + `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 + rule `global.set`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 + rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 + rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 + rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 + rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: + `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.GROW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 + rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 + rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) + -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 + rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) + -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 + rule `elem.drop`{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: + `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) + -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + rule `data.drop`{C : context, x : idx}: + `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) + -- wf_context: `%`(C) + -- wf_instr: `%`(`DATA.DROP`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 + rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 + rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 + rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 + rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 + rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 + rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 + rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 + rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 + rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 + rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 + rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 + rule unop{C : context, nt : numtype, unop_nt : unop_}: + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 + rule binop{C : context, nt : numtype, binop_nt : binop_}: + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 + rule testop{C : context, nt : numtype, testop_nt : testop_}: + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 + rule relop{C : context, nt : numtype, relop_nt : relop_}: + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 + rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 + rule vconst{C : context, c : vec_}: + `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 + rule vvunop{C : context, vvunop : vvunop}: + `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 + rule vvbinop{C : context, vvbinop : vvbinop}: + `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 + rule vvternop{C : context, vvternop : vvternop}: + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 + rule vvtestop{C : context, vvtestop : vvtestop}: + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 + rule vunop{C : context, sh : shape, vunop : vunop_}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 + rule vternop{C : context, sh : shape, vternop : vternop_}: + `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 + rule vbitmask{C : context, sh : ishape}: + `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 + rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 + rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: + `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} + -- wf_context: `%`(C) + -- wf_dim: `%`($dim($proj_bshape_0(sh).0)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 + rule vsplat{C : context, sh : shape}: + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 + rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- wf_context: `%`(C) + -- wf_dim: `%`($dim(sh)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 + rule vreplace_lane{C : context, sh : shape, i : laneidx}: + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- wf_context: `%`(C) + -- wf_dim: `%`($dim(sh)) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 + rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 + rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 + rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 + rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 + rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 +relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 + rule empty{C : context}: + `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 + rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: + `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- Instrs_ok: `%|-%:%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 + rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 + rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) +} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok: `%|-%:%`(context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*, `t*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%NONDEFAULTABLE`(t) + -- if (!($default_(t)) = ?()) + -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Instr_const: `%|-%CONST`(context, instr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule vconst{C : context, vt : vectype, c_vt : vec_}: + `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.null`{C : context, ht : heaptype}: + `%|-%CONST`(C, `REF.NULL`_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.NULL`_instr(ht)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.i31`{C : context}: + `%|-%CONST`(C, `REF.I31`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.I31`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.func`{C : context, x : idx}: + `%|-%CONST`(C, `REF.FUNC`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.FUNC`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `struct.new`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `struct.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new_fixed`{C : context, x : idx, n : n}: + `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `any.convert_extern`{C : context}: + `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `extern.convert_any`{C : context}: + `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `global.get`{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule binop{C : context, Inn : Inn, binop : binop_}: + `%|-%CONST`(C, BINOP_instr($numtype_addrtype(Inn), binop)) + -- if (Inn <- [I32_Inn I64_Inn]) + -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr($numtype_addrtype(Inn), binop)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, MUL_binop_Inn)) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_const: `%|-%CONST`(context, expr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*}: + `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, expr : expr, t : valtype}: + `%|-%:%CONST`(C, expr, t) + -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) + -- Expr_const: `%|-%CONST`(C, expr) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Type_ok: `%|-%:%`(context, type, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: + `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- if ($proj_uN_0(x).0 = |C.TYPES_context|) + -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) + -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Tag_ok: `%|-%:%`(context, tag, tagtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tagtype : tagtype}: + `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + -- wf_context: `%`(C) + -- wf_typeuse: `%`($clos_tagtype(C, tagtype)) + -- wf_tag: `%`(TAG_tag(tagtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Global_ok: `%|-%:%`(context, global, globaltype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: + `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Mem_ok: `%|-%:%`(context, mem, memtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, memtype : memtype}: + `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- Memtype_ok: `%|-%:OK`(C, memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Table_ok: `%|-%:%`(context, table, tabletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- if (tabletype = `%%%`_tabletype(at, lim, rt)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(rt)) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Local_ok: `%|-%:%`(context, local, localtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule set{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- Defaultable: `|-%DEFAULTABLE`(t) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule unset{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- Nondefaultable: `|-%NONDEFAULTABLE`(t) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Func_ok: `%|-%:%`(context, func, deftype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Datamode_ok: `%|-%:%`(context, datamode, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context}: + `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: + `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Data_ok: `%|-%:%`(context, data, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, `b*` : byte*, datamode : datamode}: + `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context, rt : reftype}: + `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule declare{C : context, rt : reftype}: + `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: + `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elem_ok: `%|-%:%`(context, elem, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: + `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- Reftype_ok: `%|-%:OK`(C, elemtype) + -- (Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(elemtype)))*{expr <- `expr*`} + -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Start_ok: `%|-%:OK`(context, start) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx}: + `%|-%:OK`(C, START_start(x)) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Import_ok: `%|-%:%`(context, import, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + -- Externtype_ok: `%|-%:OK`(C, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`($clos_externtype(C, xt)) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Externidx_ok: `%|-%:%`(context, externidx, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule tag{C : context, x : idx, jt : tagtype}: + `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule global{C : context, x : idx, gt : globaltype}: + `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mem{C : context, x : idx, mt : memtype}: + `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule table{C : context, x : idx, tt : tabletype}: + `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Export_ok: `%|-%:%%`(context, export, name, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name : name, externidx : externidx, xt : externtype}: + `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- Externidx_ok: `%|-%:%`(C, externidx, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 +relation Globals_ok: `%|-%:%`(context, global*, globaltype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 + rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: + `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- Global_ok: `%|-%:%`(C, global_1, gt_1) + -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 +relation Types_ok: `%|-%:%`(context, type*, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 + rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: + `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) + -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +syntax nonfuncs = + | `%%%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation wf_nonfuncs: `%`(nonfuncs) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}: + `%`(`%%%%%%`_nonfuncs(`global*`, `mem*`, `table*`, `elem*`, `start?`, `export*`)) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_mem: `%`(mem))*{mem <- `mem*`} + -- (wf_table: `%`(table))*{table <- `table*`} + -- (wf_elem: `%`(elem))*{elem <- `elem*`} + -- (wf_start: `%`(start))?{start <- `start?`} + -- (wf_export: `%`(export))*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}(`%%%%%%`_nonfuncs(global#2*{global#2 <- `global*`}, mem#2*{mem#2 <- `mem*`}, table#2*{table#2 <- `table*`}, elem#2*{elem#2 <- `elem*`}, start#2?{start#2 <- `start?`}, export#2*{export#2 <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Module_ok: `|-%:%`(module, moduletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: + `|-%:%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) + -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} + -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} + -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} + -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} + -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} + -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} + -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} + -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} + -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) + -- if (C = C' +++ {TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) + -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}))) + -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) + -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_moduletype: `%`($clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- (wf_uN: `%%`(32, iter))*{iter <- $funcidx_nonfuncs(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}))} + -- (wf_typeuse: `%`(iter))*{iter <- $tagsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_globaltype: `%`(iter))*{iter <- $globalsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_memtype: `%`(iter))*{iter <- $memsxt(xt_I*{xt_I <- `xt_I*`})} + -- (wf_tabletype: `%`(iter))*{iter <- $tablesxt(xt_I*{xt_I <- `xt_I*`})} + -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) + -- wf_nonfuncs: `%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed2 = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed2_0(x : relaxed2) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed2_0{v_num_0 : nat}(`%`_relaxed2(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed2: `%`(relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed2_case_0{i : nat}: + `%`(`%`_relaxed2(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed4 = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed4_0(x : relaxed4) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed4_0{v_num_0 : nat}(`%`_relaxed4(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed4: `%`(relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed4_case_0{i : nat}: + `%`(`%`_relaxed4(i)) + -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = (if $ND then [X_1 X_2][$proj_relaxed2_0(i).0] else [X_1 X_2][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][$proj_relaxed4_0(i).0] else [X_1 X_2 X_3 X_4][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmadd : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmadd_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmadd_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_fmadd) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmin : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmin_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmin_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmin) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmax : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmax_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmax_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmax) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_idot : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_idot_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_idot_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_idot) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_iq15mulr : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_iq15mulr_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_iq15mulr_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_iq15mulr) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_u : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_u_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_u_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_trunc_u) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_s : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_s_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_s_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_trunc_s) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_swizzle : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_swizzle_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_swizzle_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_swizzle) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_laneselect : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_laneselect_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_laneselect_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_laneselect) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $s33_to_u32(s33 : s33) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibits_(N : N, iN : iN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibits__is_wf: `%%%`(N : N, iN : iN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibits__is_wf_0{N : N, iN : iN, ret_val : bit*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibits_(N, iN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbits_(N : N, fN : fN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbits__is_wf: `%%%`(N : N, fN : fN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbits__is_wf_0{N : N, fN : fN, ret_val : bit*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbits_(N, fN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibytes_(N : N, iN : iN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibytes__is_wf: `%%%`(N : N, iN : iN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibytes__is_wf_0{N : N, iN : iN, ret_val : byte*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibytes_(N, iN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbytes_(N : N, fN : fN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbytes__is_wf: `%%%`(N : N, fN : fN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbytes__is_wf_0{N : N, fN : fN, ret_val : byte*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbytes_(N, fN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $nbytes_(numtype : numtype, num_ : num_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation nbytes__is_wf: `%%%`(numtype : numtype, num_ : num_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule nbytes__is_wf_0{numtype : numtype, num_ : num_, ret_val : byte*}: + `%%%`(numtype, num_, ret_val) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $nbytes_(numtype, num_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $vbytes_(vectype : vectype, vec_ : vec_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation vbytes__is_wf: `%%%`(vectype : vectype, vec_ : vec_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule vbytes__is_wf_0{vectype : vectype, vec_ : vec_, ret_val : byte*}: + `%%%`(vectype, vec_, ret_val) + -- wf_uN: `%%`($vsize(vectype), vec_) + -- if (ret_val = $vbytes_(vectype, vec_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zbytes__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zbytes__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : byte*}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $zbytes_(storagetype, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cbytes__is_wf: `%%%`(Cnn : Cnn, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cbytes__is_wf_0{Cnn : Cnn, lit_ : lit_, ret_val : byte*}: + `%%%`(Cnn, lit_, ret_val) + -- wf_lit_: `%%`($storagetype_Cnn(Cnn), lit_) + -- if (ret_val = $cbytes_(Cnn, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibits_(N : N, bit*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbits_(N : N, bit*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbits__is_wf: `%%%`(N : N, var_0 : bit*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbits__is_wf_0{N : N, var_0 : bit*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_bit: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbits_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibytes_(N : N, byte*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbytes_(N : N, byte*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbytes__is_wf: `%%%`(N : N, var_0 : byte*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbytes__is_wf_0{N : N, var_0 : byte*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbytes_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_nbytes_(numtype : numtype, byte*) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_nbytes__is_wf: `%%%`(numtype : numtype, var_0 : byte*, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_nbytes__is_wf_0{numtype : numtype, var_0 : byte*, ret_val : num_}: + `%%%`(numtype, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_nbytes_(numtype, var_0)) + -- wf_num_: `%%`(numtype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_vbytes_(vectype : vectype, byte*) : vec_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_zbytes__is_wf: `%%%`(storagetype : storagetype, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_zbytes__is_wf_0{storagetype : storagetype, var_0 : byte*, ret_val : lit_}: + `%%%`(storagetype, var_0, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_zbytes_(storagetype, var_0)) + -- wf_lit_: `%%`(storagetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_cbytes__is_wf: `%%%`(Cnn : Cnn, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_cbytes__is_wf_0{Cnn : Cnn, var_0 : byte*, ret_val : lit_}: + `%%%`(Cnn, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_cbytes_(Cnn, var_0)) + -- wf_lit_: `%%`($storagetype_Cnn(Cnn), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $signed_(N : N, nat : nat) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $signed_{N : nat, i : nat}(N, i) = (i : nat <:> int) + -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $signed_{N : nat, i : nat}(N, i) = ((i : nat <:> int) - ((2 ^ N) : nat <:> int)) + -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_signed_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inv_signed_{N : nat, i : int}(N, i) = (i : int <:> nat) + -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inv_signed_{N : nat, i : int}(N, i) = ((i + ((2 ^ N) : nat <:> int)) : int <:> nat) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sx(storagetype : storagetype) : sx?? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(F32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(F64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(V128_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I8_storagetype) = ?(?(S_sx)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I16_storagetype) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zero(lanetype : lanetype) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zero_is_wf: `%%`(lanetype : lanetype, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zero_is_wf_0{lanetype : lanetype, ret_val : lane_}: + `%%`(lanetype, ret_val) + -- if (ret_val = $zero(lanetype)) + -- wf_lane_: `%%`(lanetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $bool(bool : bool) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(false) = 0 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(true) = 1 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $truncz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ceilz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_u_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_u_{N : nat, i : int}(N, i) = (if (i < (0 : nat <:> int)) then 0 else (if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) then ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) else (i : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_s_(N : N, int : int) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_s_{N : nat, i : int}(N, i) = (if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) then - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) else (if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) then (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) else i)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ineg_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iabs_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iabs_{N : nat, i_1 : uN}(N, i_1) = (if ($signed_(N, $proj_uN_0(i_1).0) >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iclz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ictz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ipopcnt_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imul_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?() + -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)) then i_1 else i_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)) then i_1 else i_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_q15mulr_(N : N, sx : sx, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iavgr_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inot_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irev_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iand_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iandnot_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ior_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ixor_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishl_(N : N, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishr_(N : N, sx : sx, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotl_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotr_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibitselect_(N : N, iN : iN, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieqz_(N : N, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inez_(N : N, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieq_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ine_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fabs_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fabs__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fabs__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fabs_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fneg_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fneg__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fneg__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fneg_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsqrt_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsqrt__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsqrt__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fsqrt_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fceil_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fceil__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fceil__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fceil_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ffloor_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ffloor__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ffloor__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ffloor_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ftrunc_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ftrunc__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ftrunc__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ftrunc_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fnearest_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fnearest__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fnearest__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fnearest_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fadd_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fadd__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fadd__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fadd_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsub_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsub__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsub__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fsub_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmul_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmul__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmul__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmul_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fdiv_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fdiv__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fdiv__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fdiv_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmin__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmax__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmin__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmax__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_min__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_min__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_min_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_max__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_max__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_max_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fcopysign_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fcopysign__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fcopysign__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fcopysign_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $feq_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fne_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $flt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fgt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fle_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fge_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_madd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_madd__is_wf_0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_madd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_nmadd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_nmadd__is_wf_0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_nmadd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $wrap__(M : M, N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $extend__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc_sat__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $demote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation demote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule demote___is_wf_0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $demote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $promote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation promote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule promote___is_wf_0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $promote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $convert__(M : M, N : N, sx : sx, iN : iN) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation convert___is_wf: `%%%%%`(M : M, N : N, sx : sx, iN : iN, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule convert___is_wf_0{M : M, N : N, sx : sx, iN : iN, ret_val : fN}: + `%%%%%`(M, N, sx, iN, ret_val) + -- wf_uN: `%%`(M, iN) + -- if (ret_val = $convert__(M, N, sx, iN)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation reinterpret___is_wf: `%%%%`(numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule reinterpret___is_wf_0{numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_}: + `%%%%`(numtype_1, numtype_2, num_, ret_val) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $reinterpret__(numtype_1, numtype_2, num_)) + -- wf_num_: `%%`(numtype_2, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lpacknum__is_wf: `%%%`(lanetype : lanetype, num_ : num_, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lpacknum__is_wf_0{lanetype : lanetype, num_ : num_, ret_val : lane_}: + `%%%`(lanetype, num_, ret_val) + -- wf_num_: `%%`($lunpack(lanetype), num_) + -- if (ret_val = $lpacknum_(lanetype, num_)) + -- wf_lane_: `%%`(lanetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(I32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(I64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(F32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(F64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(V128_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cpacknum__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(storagetype))), lit_) + -- if (ret_val = $cpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`(storagetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(I32_lanetype, mk_lane__0_lane_(I32_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(I64_lanetype, mk_lane__0_lane_(I64_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(F32_lanetype, mk_lane__0_lane_(F32_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lunpacknum__is_wf: `%%%`(lanetype : lanetype, lane_ : lane_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lunpacknum__is_wf_0{lanetype : lanetype, lane_ : lane_, ret_val : num_}: + `%%%`(lanetype, lane_, ret_val) + -- wf_lane_: `%%`(lanetype, lane_) + -- if (ret_val = $lunpacknum_(lanetype, lane_)) + -- wf_num_: `%%`($lunpack(lanetype), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(I32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(I64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(F32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(F64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(V128_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cunpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cunpacknum__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $cunpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(storagetype))), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#1)*{iter_0#1 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#3)*{iter_0#3 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#5)*{iter_0#5 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#6)*{iter_0#6 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#7)*{iter_0#7 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#9)*{iter_0#9 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#10)*{iter_0#10 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#11)*{iter_0#11 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0#13)*{iter_0#13 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0#14)*{iter_0#14 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation unop__is_wf: `%%%%`(numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule unop__is_wf_0{numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*}: + `%%%%`(numtype, unop_, num_, ret_val) + -- wf_unop_: `%%`(numtype, unop_) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $unop_(numtype, unop_, num_)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#15)*{iter_0#15 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#16)*{iter_0#16 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0#17)*{iter_0#17 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0#18)*{iter_0#18 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#19)*{iter_0#19 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#21)*{iter_0#21 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#22)*{iter_0#22 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#23)*{iter_0#23 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#25)*{iter_0#25 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#26)*{iter_0#26 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#27)*{iter_0#27 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#29)*{iter_0#29 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#30)*{iter_0#30 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0#31)*{iter_0#31 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0#32)*{iter_0#32 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation binop__is_wf: `%%%%%`(numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule binop__is_wf_0{numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*}: + `%%%%%`(numtype, binop_, num_, num__0, ret_val) + -- wf_binop_: `%%`(numtype, binop_) + -- wf_num_: `%%`(numtype, num_) + -- wf_num_: `%%`(numtype, num__0) + -- if (ret_val = $binop_(numtype, binop_, num_, num__0)) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $testop_{i : uN}(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I32_Inn)), i) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $testop_{i : uN}(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I64_Inn)), i) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#33)*{iter_0#33 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#35)*{iter_0#35 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#37)*{iter_0#37 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0#38)*{iter_0#38 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#39)*{iter_0#39 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0#40)*{iter_0#40 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#41)*{iter_0#41 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#43)*{iter_0#43 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#45)*{iter_0#45 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#47)*{iter_0#47 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))] + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))] + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))] + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))] + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))] + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))] + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))] + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))] + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cvtop___is_wf: `%%%%%`(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cvtop___is_wf_0{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*}: + `%%%%%`(numtype_1, numtype_2, cvtop__, num_, ret_val) + -- wf_cvtop__: `%%%`(numtype_1, numtype_2, cvtop__) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $cvtop__(numtype_1, numtype_2, cvtop__, num_)) + -- (wf_num_: `%%`(numtype_2, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lanes_(shape : shape, vec_ : vec_) : lane_* + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lanes__is_wf: `%%%`(shape : shape, vec_ : vec_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lanes__is_wf_0{shape : shape, vec_ : vec_, ret_val : lane_*}: + `%%%`(shape, vec_, ret_val) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(128, vec_) + -- if (ret_val = $lanes_(shape, vec_)) + -- (wf_lane_: `%%`($lanetype(shape), ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $inv_lanes_(shape : shape, lane_*) : vec_ + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : zero? + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3037?{half#3037 <- `half?`}, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3038?{half#3038 <- `half?`}, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3039?{half#3039 <- `half?`}, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3040?{half#3040 <- `half?`}, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3041?{half#3041 <- `half?`}, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3042?{half#3042 <- `half?`}, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3043?{half#3043 <- `half?`}, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3044?{half#3044 <- `half?`}, sx))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3441?{zero#3441 <- `zero?`}))) = zero#3442?{zero#3442 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3443?{zero#3443 <- `zero?`}))) = zero#3444?{zero#3444 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3445?{zero#3445 <- `zero?`}))) = zero#3446?{zero#3446 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3447?{zero#3447 <- `zero?`}))) = zero#3448?{zero#3448 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3449?{zero#3449 <- `zero?`}))) = zero#3450?{zero#3450 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3451?{zero#3451 <- `zero?`}))) = zero#3452?{zero#3452 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3453?{zero#3453 <- `zero?`}))) = zero#3454?{zero#3454 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3455?{zero#3455 <- `zero?`}))) = zero#3456?{zero#3456 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3457?{zero#3457 <- `zero?`}))) = zero#3458?{zero#3458 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3459?{zero#3459 <- `zero?`}))) = zero#3460?{zero#3460 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3461?{zero#3461 <- `zero?`}))) = zero#3462?{zero#3462 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3463?{zero#3463 <- `zero?`}))) = zero#3464?{zero#3464 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3465?{zero#3465 <- `zero?`}))) = zero#3466?{zero#3466 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3467?{zero#3467 <- `zero?`}))) = zero#3468?{zero#3468 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3469?{zero#3469 <- `zero?`}))) = zero#3470?{zero#3470 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3471?{zero#3471 <- `zero?`}))) = zero#3472?{zero#3472 <- `zero?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : half? + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3045?{half#3045 <- `half?`}, sx))) = half#3046?{half#3046 <- `half?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3047?{half#3047 <- `half?`}, sx))) = half#3048?{half#3048 <- `half?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3049?{half#3049 <- `half?`}, sx))) = half#3050?{half#3050 <- `half?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3051?{half#3051 <- `half?`}, sx))) = half#3052?{half#3052 <- `half?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3053?{half#3053 <- `half?`}, sx))) = half#3054?{half#3054 <- `half?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3055?{half#3055 <- `half?`}, sx))) = half#3056?{half#3056 <- `half?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3057?{half#3057 <- `half?`}, sx))) = half#3058?{half#3058 <- `half?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3059?{half#3059 <- `half?`}, sx))) = half#3060?{half#3060 <- `half?`} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3473?{zero#3473 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3474?{zero#3474 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3475?{zero#3475 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3476?{zero#3476 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3477?{zero#3477 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3478?{zero#3478 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3479?{zero#3479 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3480?{zero#3480 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3481?{zero#3481 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3482?{zero#3482 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3483?{zero#3483 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3484?{zero#3484 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3485?{zero#3485 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3486?{zero#3486 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3487?{zero#3487 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3488?{zero#3488 <- `zero?`}))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $half(half : half, nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(LOW_half, i, j) = i + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(HIGH_half, i, j) = j + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $iswizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#1*{c#1 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#2*{c#2 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#4)*{c#4 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#1*{c_1#1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#3*{c#3 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#2)))*{c_1#2 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#5))*{iter#5 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#3)))))*{c_1#3 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#6)*{c#6 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#4*{c_1#4 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#5*{c#5 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#5)))*{c_1#5 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#6))*{iter#6 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#6)))))*{c_1#6 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#8)*{c#8 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#7*{c_1#7 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#7*{c#7 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#8)))*{c_1#8 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#7))*{iter#7 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#9)))))*{c_1#9 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#10)*{c#10 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#10*{c_1#10 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#9*{c#9 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#11)))*{c_1#11 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#8))*{iter#8 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#12)))))*{c_1#12 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#12*{c#12 <- `c*#2`})*{`c*#2` <- `c**`} + -- let{`c_1*` : lane_*} c_1#13*{c_1#13 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#11*{c#11 <- `c*#1`}*{`c*#1` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#49))*{iter_0#49 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#14)))))}*{c_1#14 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#9))*{iter#9 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#11))*{iter#11 <- iter#10}*{iter#10 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#50))*{iter_0#50 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#15)))))}*{c_1#15 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#12))*{iter#12 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#16)))))}*{c_1#16 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#51))))*{iter_0#51 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#17)))))}*{c_1#17 <- `c_1*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#14*{c#14 <- `c*#4`})*{`c*#4` <- `c**`} + -- let{`c_1*` : lane_*} c_1#18*{c_1#18 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#13*{c#13 <- `c*#3`}*{`c*#3` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#52))*{iter_0#52 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#19)))))}*{c_1#19 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#13))*{iter#13 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#15))*{iter#15 <- iter#14}*{iter#14 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#53))*{iter_0#53 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#20)))))}*{c_1#20 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#16))*{iter#16 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#21)))))}*{c_1#21 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#54))))*{iter_0#54 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#22)))))}*{c_1#22 <- `c_1*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#16)*{c#16 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#23*{c_1#23 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#1*{c_2#1 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#15*{c#15 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#24)), !($proj_lane__2(c_2#2)))*{c_1#24 <- `c_1*`, c_2#2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#17))*{iter#17 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#18))*{iter#18 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#25)), !($proj_lane__2(c_2#3)))))*{c_1#25 <- `c_1*`, c_2#3 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#18)*{c#18 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#26*{c_1#26 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#4*{c_2#4 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#17*{c#17 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#27)), !($proj_lane__2(c_2#5)))*{c_1#27 <- `c_1*`, c_2#5 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#19))*{iter#19 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#20))*{iter#20 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#28)), !($proj_lane__2(c_2#6)))))*{c_1#28 <- `c_1*`, c_2#6 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#20)*{c#20 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#29*{c_1#29 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#7*{c_2#7 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#19*{c#19 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#30)), !($proj_lane__2(c_2#8)))*{c_1#30 <- `c_1*`, c_2#8 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#21))*{iter#21 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#22))*{iter#22 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#31)), !($proj_lane__2(c_2#9)))))*{c_1#31 <- `c_1*`, c_2#9 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#22)*{c#22 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#32*{c_1#32 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#10*{c_2#10 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#21*{c#21 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#33)), !($proj_lane__2(c_2#11)))*{c_1#33 <- `c_1*`, c_2#11 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#23))*{iter#23 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#24))*{iter#24 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#34)), !($proj_lane__2(c_2#12)))))*{c_1#34 <- `c_1*`, c_2#12 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#24)*{c#24 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#35*{c_1#35 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#13*{c_2#13 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#23*{c#23 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#36)), !($proj_lane__2(c_2#14)))*{c_1#36 <- `c_1*`, c_2#14 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#25))*{iter#25 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#26))*{iter#26 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#37)), !($proj_lane__2(c_2#15)))))*{c_1#37 <- `c_1*`, c_2#15 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#26)*{c#26 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#38*{c_1#38 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#16*{c_2#16 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#25*{c#25 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#39)), !($proj_lane__2(c_2#17)))*{c_1#39 <- `c_1*`, c_2#17 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#27))*{iter#27 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#28))*{iter#28 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#40)), !($proj_lane__2(c_2#18)))))*{c_1#40 <- `c_1*`, c_2#18 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#28)*{c#28 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#41*{c_1#41 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#19*{c_2#19 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#27*{c#27 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#42)), !($proj_lane__2(c_2#20)))*{c_1#42 <- `c_1*`, c_2#20 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#29))*{iter#29 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#30))*{iter#30 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#43)), !($proj_lane__2(c_2#21)))))*{c_1#43 <- `c_1*`, c_2#21 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#30)*{c#30 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#44*{c_1#44 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#22*{c_2#22 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#29*{c#29 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#45)), !($proj_lane__2(c_2#23)))*{c_1#45 <- `c_1*`, c_2#23 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#31))*{iter#31 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#32))*{iter#32 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#46)), !($proj_lane__2(c_2#24)))))*{c_1#46 <- `c_1*`, c_2#24 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#32*{c#32 <- `c*#6`})*{`c*#6` <- `c**`} + -- let{`c_1*` : lane_*} c_1#47*{c_1#47 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#25*{c_2#25 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#31*{c#31 <- `c*#5`}*{`c*#5` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#55)*{iter_0#55 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#48)), !($proj_lane__2(c_2#26)))}*{c_1#48 <- `c_1*`, c_2#26 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#33))*{iter#33 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#34))*{iter#34 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), iter#36))*{iter#36 <- iter#35}*{iter#35 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#56)*{iter_0#56 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#49)), !($proj_lane__2(c_2#27)))}*{c_1#49 <- `c_1*`, c_2#27 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#37))*{iter#37 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#50)), !($proj_lane__2(c_2#28)))}*{c_1#50 <- `c_1*`, c_2#28 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#57)))*{iter_0#57 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#51)), !($proj_lane__2(c_2#29)))}*{c_1#51 <- `c_1*`, c_2#29 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#34*{c#34 <- `c*#8`})*{`c*#8` <- `c**`} + -- let{`c_1*` : lane_*} c_1#52*{c_1#52 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#30*{c_2#30 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#33*{c#33 <- `c*#7`}*{`c*#7` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#58)*{iter_0#58 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#53)), !($proj_lane__2(c_2#31)))}*{c_1#53 <- `c_1*`, c_2#31 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#38))*{iter#38 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#39))*{iter#39 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), iter#41))*{iter#41 <- iter#40}*{iter#40 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#59)*{iter_0#59 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#54)), !($proj_lane__2(c_2#32)))}*{c_1#54 <- `c_1*`, c_2#32 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#42))*{iter#42 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#55)), !($proj_lane__2(c_2#33)))}*{c_1#55 <- `c_1*`, c_2#33 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#60)))*{iter_0#60 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#56)), !($proj_lane__2(c_2#34)))}*{c_1#56 <- `c_1*`, c_2#34 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#36*{c#36 <- `c*#10`})*{`c*#10` <- `c**`} + -- let{`c_1*` : lane_*} c_1#57*{c_1#57 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#35*{c_2#35 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#35*{c#35 <- `c*#9`}*{`c*#9` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#61)*{iter_0#61 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#58)), !($proj_lane__2(c_2#36)))}*{c_1#58 <- `c_1*`, c_2#36 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#43))*{iter#43 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#44))*{iter#44 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), iter#46))*{iter#46 <- iter#45}*{iter#45 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#62)*{iter_0#62 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#59)), !($proj_lane__2(c_2#37)))}*{c_1#59 <- `c_1*`, c_2#37 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#47))*{iter#47 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#60)), !($proj_lane__2(c_2#38)))}*{c_1#60 <- `c_1*`, c_2#38 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#63)))*{iter_0#63 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#61)), !($proj_lane__2(c_2#39)))}*{c_1#61 <- `c_1*`, c_2#39 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#38*{c#38 <- `c*#12`})*{`c*#12` <- `c**`} + -- let{`c_1*` : lane_*} c_1#62*{c_1#62 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#40*{c_2#40 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#37*{c#37 <- `c*#11`}*{`c*#11` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#64)*{iter_0#64 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#63)), !($proj_lane__2(c_2#41)))}*{c_1#63 <- `c_1*`, c_2#41 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#48))*{iter#48 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#49))*{iter#49 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), iter#51))*{iter#51 <- iter#50}*{iter#50 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#65)*{iter_0#65 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#64)), !($proj_lane__2(c_2#42)))}*{c_1#64 <- `c_1*`, c_2#42 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#52))*{iter#52 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#65)), !($proj_lane__2(c_2#43)))}*{c_1#65 <- `c_1*`, c_2#43 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#66)))*{iter_0#66 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#66)), !($proj_lane__2(c_2#44)))}*{c_1#66 <- `c_1*`, c_2#44 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#40*{c#40 <- `c*#14`})*{`c*#14` <- `c**`} + -- let{`c_1*` : lane_*} c_1#67*{c_1#67 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#45*{c_2#45 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#39*{c#39 <- `c*#13`}*{`c*#13` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#67))*{iter_0#67 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#68)))), !($proj_num__1(!($proj_lane__0(c_2#46)))))}*{c_1#68 <- `c_1*`, c_2#46 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#53))*{iter#53 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#54))*{iter#54 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#56))*{iter#56 <- iter#55}*{iter#55 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#68))*{iter_0#68 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#69)))), !($proj_num__1(!($proj_lane__0(c_2#47)))))}*{c_1#69 <- `c_1*`, c_2#47 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#57))*{iter#57 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#70)))), !($proj_num__1(!($proj_lane__0(c_2#48)))))}*{c_1#70 <- `c_1*`, c_2#48 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#69))))*{iter_0#69 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#71)))), !($proj_num__1(!($proj_lane__0(c_2#49)))))}*{c_1#71 <- `c_1*`, c_2#49 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#42*{c#42 <- `c*#16`})*{`c*#16` <- `c**`} + -- let{`c_1*` : lane_*} c_1#72*{c_1#72 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#50*{c_2#50 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#41*{c#41 <- `c*#15`}*{`c*#15` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#70))*{iter_0#70 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#73)))), !($proj_num__1(!($proj_lane__0(c_2#51)))))}*{c_1#73 <- `c_1*`, c_2#51 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#58))*{iter#58 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#59))*{iter#59 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#61))*{iter#61 <- iter#60}*{iter#60 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#71))*{iter_0#71 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#74)))), !($proj_num__1(!($proj_lane__0(c_2#52)))))}*{c_1#74 <- `c_1*`, c_2#52 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#62))*{iter#62 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#75)))), !($proj_num__1(!($proj_lane__0(c_2#53)))))}*{c_1#75 <- `c_1*`, c_2#53 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#72))))*{iter_0#72 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#76)))), !($proj_num__1(!($proj_lane__0(c_2#54)))))}*{c_1#76 <- `c_1*`, c_2#54 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#44*{c#44 <- `c*#18`})*{`c*#18` <- `c**`} + -- let{`c_1*` : lane_*} c_1#77*{c_1#77 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#55*{c_2#55 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#1*{c_3#1 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#43*{c#43 <- `c*#17`}*{`c*#17` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#73)*{iter_0#73 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#78)), !($proj_lane__2(c_2#56)), !($proj_lane__2(c_3#2)))}*{c_1#78 <- `c_1*`, c_2#56 <- `c_2*`, c_3#2 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#63))*{iter#63 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#64))*{iter#64 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#65))*{iter#65 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), iter#67))*{iter#67 <- iter#66}*{iter#66 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#74)*{iter_0#74 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#79)), !($proj_lane__2(c_2#57)), !($proj_lane__2(c_3#3)))}*{c_1#79 <- `c_1*`, c_2#57 <- `c_2*`, c_3#3 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#68))*{iter#68 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#80)), !($proj_lane__2(c_2#58)), !($proj_lane__2(c_3#4)))}*{c_1#80 <- `c_1*`, c_2#58 <- `c_2*`, c_3#4 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#75)))*{iter_0#75 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#81)), !($proj_lane__2(c_2#59)), !($proj_lane__2(c_3#5)))}*{c_1#81 <- `c_1*`, c_2#59 <- `c_2*`, c_3#5 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#46*{c#46 <- `c*#20`})*{`c*#20` <- `c**`} + -- let{`c_1*` : lane_*} c_1#82*{c_1#82 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#60*{c_2#60 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#6*{c_3#6 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#45*{c#45 <- `c*#19`}*{`c*#19` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#76)*{iter_0#76 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#83)), !($proj_lane__2(c_2#61)), !($proj_lane__2(c_3#7)))}*{c_1#83 <- `c_1*`, c_2#61 <- `c_2*`, c_3#7 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#69))*{iter#69 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#70))*{iter#70 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#71))*{iter#71 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), iter#73))*{iter#73 <- iter#72}*{iter#72 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#77)*{iter_0#77 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#84)), !($proj_lane__2(c_2#62)), !($proj_lane__2(c_3#8)))}*{c_1#84 <- `c_1*`, c_2#62 <- `c_2*`, c_3#8 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#74))*{iter#74 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#85)), !($proj_lane__2(c_2#63)), !($proj_lane__2(c_3#9)))}*{c_1#85 <- `c_1*`, c_2#63 <- `c_2*`, c_3#9 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#78)))*{iter_0#78 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#86)), !($proj_lane__2(c_2#64)), !($proj_lane__2(c_3#10)))}*{c_1#86 <- `c_1*`, c_2#64 <- `c_2*`, c_3#10 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#48*{c#48 <- `c*#22`})*{`c*#22` <- `c**`} + -- let{`c_1*` : lane_*} c_1#87*{c_1#87 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#65*{c_2#65 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#11*{c_3#11 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#47*{c#47 <- `c*#21`}*{`c*#21` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#79)*{iter_0#79 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#88)), !($proj_lane__2(c_2#66)), !($proj_lane__2(c_3#12)))}*{c_1#88 <- `c_1*`, c_2#66 <- `c_2*`, c_3#12 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#75))*{iter#75 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#76))*{iter#76 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#77))*{iter#77 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), iter#79))*{iter#79 <- iter#78}*{iter#78 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#80)*{iter_0#80 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#89)), !($proj_lane__2(c_2#67)), !($proj_lane__2(c_3#13)))}*{c_1#89 <- `c_1*`, c_2#67 <- `c_2*`, c_3#13 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#80))*{iter#80 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#90)), !($proj_lane__2(c_2#68)), !($proj_lane__2(c_3#14)))}*{c_1#90 <- `c_1*`, c_2#68 <- `c_2*`, c_3#14 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#81)))*{iter_0#81 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#91)), !($proj_lane__2(c_2#69)), !($proj_lane__2(c_3#15)))}*{c_1#91 <- `c_1*`, c_2#69 <- `c_2*`, c_3#15 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#50*{c#50 <- `c*#24`})*{`c*#24` <- `c**`} + -- let{`c_1*` : lane_*} c_1#92*{c_1#92 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#70*{c_2#70 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#16*{c_3#16 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#49*{c#49 <- `c*#23`}*{`c*#23` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#82)*{iter_0#82 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#93)), !($proj_lane__2(c_2#71)), !($proj_lane__2(c_3#17)))}*{c_1#93 <- `c_1*`, c_2#71 <- `c_2*`, c_3#17 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#81))*{iter#81 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#82))*{iter#82 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#83))*{iter#83 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), iter#85))*{iter#85 <- iter#84}*{iter#84 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#83)*{iter_0#83 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#94)), !($proj_lane__2(c_2#72)), !($proj_lane__2(c_3#18)))}*{c_1#94 <- `c_1*`, c_2#72 <- `c_2*`, c_3#18 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#86))*{iter#86 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#95)), !($proj_lane__2(c_2#73)), !($proj_lane__2(c_3#19)))}*{c_1#95 <- `c_1*`, c_2#73 <- `c_2*`, c_3#19 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#84)))*{iter_0#84 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#96)), !($proj_lane__2(c_2#74)), !($proj_lane__2(c_3#20)))}*{c_1#96 <- `c_1*`, c_2#74 <- `c_2*`, c_3#20 <- `c_3*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#52*{c#52 <- `c*#26`})*{`c*#26` <- `c**`} + -- let{`c_1*` : lane_*} c_1#97*{c_1#97 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#75*{c_2#75 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#21*{c_3#21 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#51*{c#51 <- `c*#25`}*{`c*#25` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#85))*{iter_0#85 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#98)))), !($proj_num__1(!($proj_lane__0(c_2#76)))), !($proj_num__1(!($proj_lane__0(c_3#22)))))}*{c_1#98 <- `c_1*`, c_2#76 <- `c_2*`, c_3#22 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#87))*{iter#87 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#88))*{iter#88 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#89))*{iter#89 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#91))*{iter#91 <- iter#90}*{iter#90 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#86))*{iter_0#86 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#99)))), !($proj_num__1(!($proj_lane__0(c_2#77)))), !($proj_num__1(!($proj_lane__0(c_3#23)))))}*{c_1#99 <- `c_1*`, c_2#77 <- `c_2*`, c_3#23 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#92))*{iter#92 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#100)))), !($proj_num__1(!($proj_lane__0(c_2#78)))), !($proj_num__1(!($proj_lane__0(c_3#24)))))}*{c_1#100 <- `c_1*`, c_2#78 <- `c_2*`, c_3#24 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#87))))*{iter_0#87 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#101)))), !($proj_num__1(!($proj_lane__0(c_2#79)))), !($proj_num__1(!($proj_lane__0(c_3#25)))))}*{c_1#101 <- `c_1*`, c_2#79 <- `c_2*`, c_3#25 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#54*{c#54 <- `c*#28`})*{`c*#28` <- `c**`} + -- let{`c_1*` : lane_*} c_1#102*{c_1#102 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#80*{c_2#80 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#26*{c_3#26 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#53*{c#53 <- `c*#27`}*{`c*#27` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#88))*{iter_0#88 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#103)))), !($proj_num__1(!($proj_lane__0(c_2#81)))), !($proj_num__1(!($proj_lane__0(c_3#27)))))}*{c_1#103 <- `c_1*`, c_2#81 <- `c_2*`, c_3#27 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#93))*{iter#93 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#94))*{iter#94 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#95))*{iter#95 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#97))*{iter#97 <- iter#96}*{iter#96 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#89))*{iter_0#89 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#104)))), !($proj_num__1(!($proj_lane__0(c_2#82)))), !($proj_num__1(!($proj_lane__0(c_3#28)))))}*{c_1#104 <- `c_1*`, c_2#82 <- `c_2*`, c_3#28 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#98))*{iter#98 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#105)))), !($proj_num__1(!($proj_lane__0(c_2#83)))), !($proj_num__1(!($proj_lane__0(c_3#29)))))}*{c_1#105 <- `c_1*`, c_2#83 <- `c_2*`, c_3#29 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#90))))*{iter_0#90 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#106)))), !($proj_num__1(!($proj_lane__0(c_2#84)))), !($proj_num__1(!($proj_lane__0(c_3#30)))))}*{c_1#106 <- `c_1*`, c_2#84 <- `c_2*`, c_3#30 <- `c_3*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#56)*{c#56 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#107*{c_1#107 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#85*{c_2#85 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#55*{c#55 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#108)), !($proj_lane__2(c_2#86)))).0))*{c_1#108 <- `c_1*`, c_2#86 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#99))*{iter#99 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#100))*{iter#100 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#109)), !($proj_lane__2(c_2#87)))).0))))*{c_1#109 <- `c_1*`, c_2#87 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#110)), !($proj_lane__2(c_2#88)))).0)))*{c_1#110 <- `c_1*`, c_2#88 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#58)*{c#58 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#111*{c_1#111 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#89*{c_2#89 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#57*{c#57 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#112)), !($proj_lane__2(c_2#90)))).0))*{c_1#112 <- `c_1*`, c_2#90 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#101))*{iter#101 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#102))*{iter#102 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#113)), !($proj_lane__2(c_2#91)))).0))))*{c_1#113 <- `c_1*`, c_2#91 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#114)), !($proj_lane__2(c_2#92)))).0)))*{c_1#114 <- `c_1*`, c_2#92 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#60)*{c#60 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#115*{c_1#115 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#93*{c_2#93 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#59*{c#59 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#116)), !($proj_lane__2(c_2#94)))).0))*{c_1#116 <- `c_1*`, c_2#94 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#103))*{iter#103 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#104))*{iter#104 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#117)), !($proj_lane__2(c_2#95)))).0))))*{c_1#117 <- `c_1*`, c_2#95 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#118)), !($proj_lane__2(c_2#96)))).0)))*{c_1#118 <- `c_1*`, c_2#96 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#62)*{c#62 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#119*{c_1#119 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#97*{c_2#97 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#61*{c#61 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#120)), !($proj_lane__2(c_2#98)))).0))*{c_1#120 <- `c_1*`, c_2#98 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#105))*{iter#105 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#106))*{iter#106 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#121)), !($proj_lane__2(c_2#99)))).0))))*{c_1#121 <- `c_1*`, c_2#99 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#122)), !($proj_lane__2(c_2#100)))).0)))*{c_1#122 <- `c_1*`, c_2#100 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#64)*{c#64 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#123*{c_1#123 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#101*{c_2#101 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#63*{c#63 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#124)), !($proj_lane__2(c_2#102)))).0))*{c_1#124 <- `c_1*`, c_2#102 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#107))*{iter#107 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#108))*{iter#108 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#125)), !($proj_lane__2(c_2#103)))).0))))*{c_1#125 <- `c_1*`, c_2#103 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#126)), !($proj_lane__2(c_2#104)))).0)))*{c_1#126 <- `c_1*`, c_2#104 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#66)*{c#66 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#127*{c_1#127 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#105*{c_2#105 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#65*{c#65 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#128)), !($proj_lane__2(c_2#106)))).0))*{c_1#128 <- `c_1*`, c_2#106 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#109))*{iter#109 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#110))*{iter#110 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#129)), !($proj_lane__2(c_2#107)))).0))))*{c_1#129 <- `c_1*`, c_2#107 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#130)), !($proj_lane__2(c_2#108)))).0)))*{c_1#130 <- `c_1*`, c_2#108 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#68)*{c#68 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#131*{c_1#131 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#109*{c_2#109 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#67*{c#67 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#132)), !($proj_lane__2(c_2#110)))).0))*{c_1#132 <- `c_1*`, c_2#110 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#111))*{iter#111 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#112))*{iter#112 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#133)), !($proj_lane__2(c_2#111)))).0))))*{c_1#133 <- `c_1*`, c_2#111 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#134)), !($proj_lane__2(c_2#112)))).0)))*{c_1#134 <- `c_1*`, c_2#112 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#70)*{c#70 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#135*{c_1#135 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#113*{c_2#113 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#69*{c#69 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#136)), !($proj_lane__2(c_2#114)))).0))*{c_1#136 <- `c_1*`, c_2#114 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#113))*{iter#113 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#114))*{iter#114 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#137)), !($proj_lane__2(c_2#115)))).0))))*{c_1#137 <- `c_1*`, c_2#115 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#138)), !($proj_lane__2(c_2#116)))).0)))*{c_1#138 <- `c_1*`, c_2#116 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#72).0)))*{c#72 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#139*{c_1#139 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#117*{c_2#117 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#71*{c#71 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#140)))), !($proj_num__1(!($proj_lane__0(c_2#118)))))).0))*{c_1#140 <- `c_1*`, c_2#118 <- `c_2*`} + -- if ($isize(Inn) = $fsize(F32_Fnn)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#115))*{iter#115 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#116))*{iter#116 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size($numtype_Fnn(F32_Fnn)), $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#141)))), !($proj_num__1(!($proj_lane__0(c_2#119)))))).0))))*{c_1#141 <- `c_1*`, c_2#119 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#142)))), !($proj_num__1(!($proj_lane__0(c_2#120)))))).0)))*{c_1#142 <- `c_1*`, c_2#120 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#74).0)))*{c#74 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#143*{c_1#143 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#121*{c_2#121 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#73*{c#73 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#144)))), !($proj_num__1(!($proj_lane__0(c_2#122)))))).0))*{c_1#144 <- `c_1*`, c_2#122 <- `c_2*`} + -- if ($isize(Inn) = $fsize(F64_Fnn)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#117))*{iter#117 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#118))*{iter#118 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size($numtype_Fnn(F64_Fnn)), $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#145)))), !($proj_num__1(!($proj_lane__0(c_2#123)))))).0))))*{c_1#145 <- `c_1*`, c_2#123 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#146)))), !($proj_num__1(!($proj_lane__0(c_2#124)))))).0)))*{c_1#146 <- `c_1*`, c_2#124 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#76)*{c#76 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#147*{c_1#147 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#75*{c#75 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#148)), i)*{c_1#148 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#119))*{iter#119 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#149)), i)))*{c_1#149 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#78)*{c#78 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#150*{c_1#150 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#77*{c#77 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#151)), i)*{c_1#151 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#120))*{iter#120 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#152)), i)))*{c_1#152 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#80)*{c#80 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#153*{c_1#153 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#79*{c#79 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#154)), i)*{c_1#154 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#121))*{iter#121 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#155)), i)))*{c_1#155 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#82)*{c#82 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#156*{c_1#156 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#81*{c#81 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#157)), i)*{c_1#157 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#122))*{iter#122 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#158)), i)))*{c_1#158 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#84)*{c#84 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#159*{c_1#159 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#83*{c#83 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#160)), i)*{c_1#160 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#123))*{iter#123 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#161)), i)))*{c_1#161 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#86)*{c#86 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#162*{c_1#162 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#85*{c#85 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#163)), i)*{c_1#163 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#124))*{iter#124 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#164)), i)))*{c_1#164 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#88)*{c#88 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#165*{c_1#165 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#87*{c#87 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#166)), i)*{c_1#166 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#125))*{iter#125 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#167)), i)))*{c_1#167 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#90)*{c#90 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#168*{c_1#168 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#89*{c#89 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#169)), i)*{c_1#169 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#126))*{iter#126 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#170)), i)))*{c_1#170 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- let{`c_1*` : lane_*} c_1#171*{c_1#171 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#172)), `%`_iN(0))).0)*{c_1#172 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#127))*{iter#127 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#128))*{iter#128 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#173)), `%`_iN(0))).0)))*{c_1#173 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- let{`c_1*` : lane_*} c_1#174*{c_1#174 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#175)), `%`_iN(0))).0)*{c_1#175 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#129))*{iter#129 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#130))*{iter#130 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#176)), `%`_iN(0))).0)))*{c_1#176 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- let{`c_1*` : lane_*} c_1#177*{c_1#177 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#178)), `%`_iN(0))).0)*{c_1#178 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#131))*{iter#131 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#132))*{iter#132 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#179)), `%`_iN(0))).0)))*{c_1#179 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{M : nat, v_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + -- let{`c_1*` : lane_*} c_1#180*{c_1#180 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#181)), `%`_iN(0))).0)*{c_1#181 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#133))*{iter#133 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#134))*{iter#134 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#182)), `%`_iN(0))).0)))*{c_1#182 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#92)*{c#92 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#183*{c_1#183 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#125*{c_2#125 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#91*{c#91 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#184))*{c_1#184 <- `c_1*`}, !($proj_lane__2(c_2#126)))*{c_2#126 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#135))*{iter#135 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#136))*{iter#136 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#185))*{c_1#185 <- `c_1*`}, !($proj_lane__2(c_2#127)))))*{c_2#127 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#94)*{c#94 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#186*{c_1#186 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#128*{c_2#128 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#93*{c#93 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#187))*{c_1#187 <- `c_1*`}, !($proj_lane__2(c_2#129)))*{c_2#129 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#137))*{iter#137 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#138))*{iter#138 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#188))*{c_1#188 <- `c_1*`}, !($proj_lane__2(c_2#130)))))*{c_2#130 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#96)*{c#96 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#189*{c_1#189 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#131*{c_2#131 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#95*{c#95 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#190))*{c_1#190 <- `c_1*`}, !($proj_lane__2(c_2#132)))*{c_2#132 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#139))*{iter#139 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#140))*{iter#140 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#191))*{c_1#191 <- `c_1*`}, !($proj_lane__2(c_2#133)))))*{c_2#133 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#98)*{c#98 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#192*{c_1#192 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#134*{c_2#134 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#97*{c#97 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#193))*{c_1#193 <- `c_1*`}, !($proj_lane__2(c_2#135)))*{c_2#135 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#141))*{iter#141 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#142))*{iter#142 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#194))*{c_1#194 <- `c_1*`}, !($proj_lane__2(c_2#136)))))*{c_2#136 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), i#139234*{i#139234 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#100*{c#100 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#195*{c_1#195 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#137*{c_2#137 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#99*{c#99 <- `c*`} = c_1#196*{c_1#196 <- `c_1*`} ++ c_2#138*{c_2#138 <- `c_2*`}[$proj_uN_0(i#139237).0]*{i#139237 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#143))*{iter#143 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#144))*{iter#144 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i#139245*{i#139245 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#102*{c#102 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#197*{c_1#197 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#139*{c_2#139 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#101*{c#101 <- `c*`} = c_1#198*{c_1#198 <- `c_1*`} ++ c_2#140*{c_2#140 <- `c_2*`}[$proj_uN_0(i#139248).0]*{i#139248 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#145))*{iter#145 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#146))*{iter#146 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i#139256*{i#139256 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#104*{c#104 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#199*{c_1#199 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#141*{c_2#141 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#103*{c#103 <- `c*`} = c_1#200*{c_1#200 <- `c_1*`} ++ c_2#142*{c_2#142 <- `c_2*`}[$proj_uN_0(i#139259).0]*{i#139259 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#147))*{iter#147 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#148))*{iter#148 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i#139267*{i#139267 <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#106*{c#106 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#201*{c_1#201 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#143*{c_2#143 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#105*{c#105 <- `c*`} = c_1#202*{c_1#202 <- `c_1*`} ++ c_2#144*{c_2#144 <- `c_2*`}[$proj_uN_0(i#139270).0]*{i#139270 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#149))*{iter#149 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#150))*{iter#150 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvunop_{Vnn : vectype, v : uN}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M_0, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M_0, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M_0, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M_0, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M_0, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M_0, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M_0, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M_0, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M_0, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M_0, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M_0, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{M : nat, v : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M_0, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M_0, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M_0, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M_0, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M_0, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3061?{half#3061 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3062?{half#3062 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3063?{half#3063 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3064?{half#3064 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3065?{half#3065 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3066?{half#3066 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3067?{half#3067 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3068?{half#3068 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3489?{zero#3489 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#108))?{c#108 <- `c?`}) + -- let{`c?` : iN?} c#107?{c#107 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#151))?{iter#151 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3490?{zero#3490 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#110))?{c#110 <- `c?`}) + -- let{`c?` : iN?} c#109?{c#109 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#152))?{iter#152 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3491?{zero#3491 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#112))?{c#112 <- `c?`}) + -- let{`c?` : iN?} c#111?{c#111 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#153))?{iter#153 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3492?{zero#3492 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#114))?{c#114 <- `c?`}) + -- let{`c?` : iN?} c#113?{c#113 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#154))?{iter#154 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3493?{zero#3493 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#116))?{c#116 <- `c?`}) + -- let{`c?` : iN?} c#115?{c#115 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#155))?{iter#155 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3494?{zero#3494 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#118))?{c#118 <- `c?`}) + -- let{`c?` : iN?} c#117?{c#117 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#156))?{iter#156 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3495?{zero#3495 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#120))?{c#120 <- `c?`}) + -- let{`c?` : iN?} c#119?{c#119 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#157))?{iter#157 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3496?{zero#3496 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#122))?{c#122 <- `c?`}) + -- let{`c?` : iN?} c#121?{c#121 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#158))?{iter#158 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3497?{zero#3497 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#124))?{c#124 <- `c?`}) + -- let{`c?` : iN?} c#123?{c#123 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#159))?{iter#159 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3498?{zero#3498 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#126))?{c#126 <- `c?`}) + -- let{`c?` : iN?} c#125?{c#125 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#160))?{iter#160 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3499?{zero#3499 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#128))?{c#128 <- `c?`}) + -- let{`c?` : iN?} c#127?{c#127 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#161))?{iter#161 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3500?{zero#3500 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#130))?{c#130 <- `c?`}) + -- let{`c?` : iN?} c#129?{c#129 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#162))?{iter#162 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3501?{zero#3501 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#132))?{c#132 <- `c?`}) + -- let{`c?` : iN?} c#131?{c#131 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#163))?{iter#163 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3502?{zero#3502 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#134))?{c#134 <- `c?`}) + -- let{`c?` : iN?} c#133?{c#133 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#164))?{iter#164 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3503?{zero#3503 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#136))?{c#136 <- `c?`}) + -- let{`c?` : iN?} c#135?{c#135 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#165))?{iter#165 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3504?{zero#3504 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#138))?{c#138 <- `c?`}) + -- let{`c?` : iN?} c#137?{c#137 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#166))?{iter#166 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3505?{zero#3505 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#140))?{c#140 <- `c?`}) + -- let{`c?` : iN?} c#139?{c#139 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#167))?{iter#167 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3506?{zero#3506 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#142))?{c#142 <- `c?`}) + -- let{`c?` : iN?} c#141?{c#141 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#168))?{iter#168 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3507?{zero#3507 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#144))?{c#144 <- `c?`}) + -- let{`c?` : iN?} c#143?{c#143 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#169))?{iter#169 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3508?{zero#3508 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#146))?{c#146 <- `c?`}) + -- let{`c?` : iN?} c#145?{c#145 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#170))?{iter#170 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3509?{zero#3509 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#148))?{c#148 <- `c?`}) + -- let{`c?` : iN?} c#147?{c#147 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#171))?{iter#171 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3510?{zero#3510 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#150))?{c#150 <- `c?`}) + -- let{`c?` : iN?} c#149?{c#149 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#172))?{iter#172 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3511?{zero#3511 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#152))?{c#152 <- `c?`}) + -- let{`c?` : iN?} c#151?{c#151 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#173))?{iter#173 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3512?{zero#3512 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#154))?{c#154 <- `c?`}) + -- let{`c?` : iN?} c#153?{c#153 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#174))?{iter#174 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3513?{zero#3513 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#156))?{c#156 <- `c?`}) + -- let{`c?` : iN?} c#155?{c#155 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#175))?{iter#175 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3514?{zero#3514 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#158))?{c#158 <- `c?`}) + -- let{`c?` : iN?} c#157?{c#157 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#176))?{iter#176 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3515?{zero#3515 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#160))?{c#160 <- `c?`}) + -- let{`c?` : iN?} c#159?{c#159 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#177))?{iter#177 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3516?{zero#3516 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#162))?{c#162 <- `c?`}) + -- let{`c?` : iN?} c#161?{c#161 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#178))?{iter#178 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3517?{zero#3517 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#164))?{c#164 <- `c?`}) + -- let{`c?` : iN?} c#163?{c#163 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#179))?{iter#179 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3518?{zero#3518 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#166))?{c#166 <- `c?`}) + -- let{`c?` : iN?} c#165?{c#165 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#180))?{iter#180 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3519?{zero#3519 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#168))?{c#168 <- `c?`}) + -- let{`c?` : iN?} c#167?{c#167 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#181))?{iter#181 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3520?{zero#3520 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#170))?{c#170 <- `c?`}) + -- let{`c?` : iN?} c#169?{c#169 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#182))?{iter#182 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#172))*{c#172 <- `c*`} + -- let{`c*` : fN*} c#171*{c#171 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#183))*{iter#183 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#174))*{c#174 <- `c*`} + -- let{`c*` : fN*} c#173*{c#173 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#184))*{iter#184 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#176))*{c#176 <- `c*`} + -- let{`c*` : fN*} c#175*{c#175 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#185))*{iter#185 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#178))*{c#178 <- `c*`} + -- let{`c*` : fN*} c#177*{c#177 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#186))*{iter#186 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#180))*{c#180 <- `c*`} + -- let{`c*` : fN*} c#179*{c#179 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#187))*{iter#187 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#182))*{c#182 <- `c*`} + -- let{`c*` : fN*} c#181*{c#181 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#188))*{iter#188 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#184))*{c#184 <- `c*`} + -- let{`c*` : fN*} c#183*{c#183 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#189))*{iter#189 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#186))*{c#186 <- `c*`} + -- let{`c*` : fN*} c#185*{c#185 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#190))*{iter#190 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#188))*{c#188 <- `c*`} + -- let{`c*` : fN*} c#187*{c#187 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#191))*{iter#191 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#190))*{c#190 <- `c*`} + -- let{`c*` : fN*} c#189*{c#189 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#192))*{iter#192 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#192))*{c#192 <- `c*`} + -- let{`c*` : fN*} c#191*{c#191 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#193))*{iter#193 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#194))*{c#194 <- `c*`} + -- let{`c*` : fN*} c#193*{c#193 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#194))*{iter#194 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#196))*{c#196 <- `c*`} + -- let{`c*` : fN*} c#195*{c#195 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#195))*{iter#195 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#198))*{c#198 <- `c*`} + -- let{`c*` : fN*} c#197*{c#197 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#196))*{iter#196 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#200))*{c#200 <- `c*`} + -- let{`c*` : fN*} c#199*{c#199 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#197))*{iter#197 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#202))*{c#202 <- `c*`} + -- let{`c*` : fN*} c#201*{c#201 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#198))*{iter#198 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lcvtop___is_wf: `%%%%%`(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lcvtop___is_wf_0{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*}: + `%%%%%`(shape_1, shape_2, vcvtop__, lane_, ret_val) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_1, shape_2, vcvtop__) + -- wf_lane_: `%%`($lanetype(shape_1), lane_) + -- if (ret_val = $lcvtop__(shape_1, shape_2, vcvtop__, lane_)) + -- (wf_lane_: `%%`($lanetype(shape_2), ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, M_0 : nat}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M_0)), vcvtop, v_1) = v + -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) + -- let{`c_1*` : lane_*} c_1#203*{c_1#203 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#203*{c#203 <- `c*#29`}*{`c*#29` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#204)*{c_1#204 <- `c_1*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#204*{c#204 <- `c*#30`})*{`c*#30` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), iter#199))*{iter#199 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#201))*{iter#201 <- iter#200}*{iter#200 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#205)*{c_1#205 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#202))*{iter#202 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#206)}*{c_1#206 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#205*{c#205 <- `c*#31`})))*{`c*#31` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) + -- let{`c_1*` : lane_*} c_1#207*{c_1#207 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] + -- let{`c**` : lane_**} c#206*{c#206 <- `c*#32`}*{`c*#32` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#208)*{c_1#208 <- `c_1*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#207*{c#207 <- `c*#33`})*{`c*#33` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#203))*{iter#203 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#205))*{iter#205 <- iter#204}*{iter#204 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#209)*{c_1#209 <- `c_1*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#206))*{iter#206 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#210)}*{c_1#210 <- `c_1*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#208*{c#208 <- `c*#34`})))*{`c*#34` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) + -- let{`c_1*` : lane_*} c_1#211*{c_1#211 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) + -- let{`c**` : lane_**} c#209*{c#209 <- `c*#35`}*{`c*#35` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#212)*{c_1#212 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#210*{c#210 <- `c*#36`})*{`c*#36` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#207))*{iter#207 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#209))*{iter#209 <- iter#208}*{iter#208 <- $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#213)*{c_1#213 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})} + -- (wf_lane_: `%%`(Lnn_2, iter#210))*{iter#210 <- $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#214)}*{c_1#214 <- `c_1*`} + -- wf_lane_: `%%`(Lnn_2, $zero(Lnn_2)) + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#211*{c#211 <- `c*#37`})))*{`c*#37` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, v : uN, i : uN, M_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, v : uN, i : uN, M_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, v : uN, i : uN, M_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, v : uN, i : uN, M_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M_0, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + -- if (M = M_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M_0, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#139761*{i#139761 <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#215*{c_1#215 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#145*{c_2#145 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#1*{c'_1#1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#216)))*{c_1#216 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#1*{c'_2#1 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#146)))*{c_2#146 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#2)*{c'_1#2 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#2)*{c'_2#2 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#211))*{iter#211 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#212))*{iter#212 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#217)))))*{c_1#217 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#147)))))*{c_2#147 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#3)*{c'_1#3 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#3)*{c'_2#3 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#4)))*{c'_1#4 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#4)))*{c'_2#4 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#218*{c_1#218 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#148*{c_2#148 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#5*{c'_1#5 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#219)))*{c_1#219 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#5*{c'_2#5 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#149)))*{c_2#149 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#6)*{c'_1#6 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#6)*{c'_2#6 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#213))*{iter#213 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#214))*{iter#214 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#220)))))*{c_1#220 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#150)))))*{c_2#150 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#7)*{c'_1#7 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#7)*{c'_2#7 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#8)))*{c'_1#8 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#8)))*{c'_2#8 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#221*{c_1#221 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#151*{c_2#151 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#9*{c'_1#9 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#222)))*{c_1#222 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#9*{c'_2#9 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#152)))*{c_2#152 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#10)*{c'_1#10 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#10)*{c'_2#10 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#215))*{iter#215 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#216))*{iter#216 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#223)))))*{c_1#223 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#153)))))*{c_2#153 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#11)*{c'_1#11 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#11)*{c'_2#11 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#12)))*{c'_1#12 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#12)))*{c'_2#12 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#224*{c_1#224 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#154*{c_2#154 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#13*{c'_1#13 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#225)))*{c_1#225 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#13*{c'_2#13 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#155)))*{c_2#155 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#14)*{c'_1#14 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#14)*{c'_2#14 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#217))*{iter#217 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#218))*{iter#218 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#226)))))*{c_1#226 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#156)))))*{c_2#156 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#15)*{c'_1#15 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#15)*{c'_2#15 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#16)))*{c'_1#16 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#16)))*{c'_2#16 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#227*{c_1#227 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#157*{c_2#157 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#17*{c'_1#17 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#228)))*{c_1#228 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#17*{c'_2#17 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#158)))*{c_2#158 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#18)*{c'_1#18 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#18)*{c'_2#18 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#219))*{iter#219 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#220))*{iter#220 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#229)))))*{c_1#229 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#159)))))*{c_2#159 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#19)*{c'_1#19 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#19)*{c'_2#19 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#20)))*{c'_1#20 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#20)))*{c'_2#20 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#230*{c_1#230 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#160*{c_2#160 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#21*{c'_1#21 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#231)))*{c_1#231 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#21*{c'_2#21 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#161)))*{c_2#161 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#22)*{c'_1#22 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#22)*{c'_2#22 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#221))*{iter#221 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#222))*{iter#222 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#232)))))*{c_1#232 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#162)))))*{c_2#162 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#23)*{c'_1#23 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#23)*{c'_2#23 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#24)))*{c'_1#24 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#24)))*{c'_2#24 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#233*{c_1#233 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#163*{c_2#163 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#25*{c'_1#25 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#234)))*{c_1#234 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#25*{c'_2#25 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#164)))*{c_2#164 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#26)*{c'_1#26 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#26)*{c'_2#26 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#223))*{iter#223 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#224))*{iter#224 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#235)))))*{c_1#235 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#165)))))*{c_2#165 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#27)*{c'_1#27 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#27)*{c'_2#27 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#28)))*{c'_1#28 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#28)))*{c'_2#28 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#236*{c_1#236 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#166*{c_2#166 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#29*{c'_1#29 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#237)))*{c_1#237 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#29*{c'_2#29 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#167)))*{c_2#167 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#30)*{c'_1#30 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#30)*{c'_2#30 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#225))*{iter#225 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#226))*{iter#226 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#238)))))*{c_1#238 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#168)))))*{c_2#168 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#31)*{c'_1#31 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#31)*{c'_2#31 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#32)))*{c'_1#32 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#32)))*{c'_2#32 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#239*{c_1#239 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#169*{c_2#169 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#33*{c'_1#33 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#240)))*{c_1#240 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#33*{c'_2#33 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#170)))*{c_2#170 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#34)*{c'_1#34 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#34)*{c'_2#34 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#227))*{iter#227 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#228))*{iter#228 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#241)))))*{c_1#241 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#171)))))*{c_2#171 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#35)*{c'_1#35 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#35)*{c'_2#35 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#36)))*{c'_1#36 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#36)))*{c'_2#36 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#242*{c_1#242 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#172*{c_2#172 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#37*{c'_1#37 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#243)))*{c_1#243 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#37*{c'_2#37 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#173)))*{c_2#173 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#38)*{c'_1#38 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#38)*{c'_2#38 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#229))*{iter#229 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#230))*{iter#230 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#244)))))*{c_1#244 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#174)))))*{c_2#174 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#39)*{c'_1#39 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#39)*{c'_2#39 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#40)))*{c'_1#40 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#40)))*{c'_2#40 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#245*{c_1#245 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#175*{c_2#175 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#41*{c'_1#41 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#246)))*{c_1#246 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#41*{c'_2#41 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#176)))*{c_2#176 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#42)*{c'_1#42 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#42)*{c'_2#42 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#231))*{iter#231 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#232))*{iter#232 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#247)))))*{c_1#247 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#177)))))*{c_2#177 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#43)*{c'_1#43 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#43)*{c'_2#43 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#44)))*{c'_1#44 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#44)))*{c'_2#44 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#248*{c_1#248 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#178*{c_2#178 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#45*{c'_1#45 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#249)))*{c_1#249 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#45*{c'_2#45 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#179)))*{c_2#179 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#46)*{c'_1#46 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#46)*{c'_2#46 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#233))*{iter#233 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#234))*{iter#234 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#250)))))*{c_1#250 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#180)))))*{c_2#180 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#47)*{c'_1#47 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#47)*{c'_2#47 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#48)))*{c'_1#48 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#48)))*{c'_2#48 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#251*{c_1#251 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#181*{c_2#181 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#49*{c'_1#49 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#252)))*{c_1#252 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#49*{c'_2#49 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#182)))*{c_2#182 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#50)*{c'_1#50 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#50)*{c'_2#50 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#235))*{iter#235 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#236))*{iter#236 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#253)))))*{c_1#253 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#183)))))*{c_2#183 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#51)*{c'_1#51 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#51)*{c'_2#51 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#52)))*{c'_1#52 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#52)))*{c'_2#52 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#254*{c_1#254 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#184*{c_2#184 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#53*{c'_1#53 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#255)))*{c_1#255 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#53*{c'_2#53 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#185)))*{c_2#185 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#54)*{c'_1#54 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#54)*{c'_2#54 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#237))*{iter#237 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#238))*{iter#238 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#256)))))*{c_1#256 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#186)))))*{c_2#186 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#55)*{c'_1#55 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#55)*{c'_2#55 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#56)))*{c'_1#56 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#56)))*{c'_2#56 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#257*{c_1#257 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#187*{c_2#187 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#57*{c'_1#57 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#258)))*{c_1#258 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#57*{c'_2#57 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#188)))*{c_2#188 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#58)*{c'_1#58 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#58)*{c'_2#58 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#239))*{iter#239 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#240))*{iter#240 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#259)))))*{c_1#259 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#189)))))*{c_2#189 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#59)*{c'_1#59 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#59)*{c'_2#59 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#60)))*{c'_1#60 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#60)))*{c'_2#60 <- `c'_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + -- let{`c_1*` : lane_*} c_1#260*{c_1#260 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#190*{c_2#190 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#61*{c'_1#61 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#261)))*{c_1#261 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#61*{c'_2#61 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#191)))*{c_2#191 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#62)*{c'_1#62 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#62)*{c'_2#62 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#241))*{iter#241 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#242))*{iter#242 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#262)))))*{c_1#262 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#192)))))*{c_2#192 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#63)*{c'_1#63 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#63)*{c'_2#63 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#64)))*{c'_1#64 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#64)))*{c'_2#64 <- `c'_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivadd_pairwise_(N : N, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i#139986*{i#139986 <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax N, [j_1#1 j_2#1]*{j_1#1 <- `j_1*`, j_2#1 <- `j_2*`}) = $proj_uN_0(i#139987).0*{i#139987 <- `i*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#213)*{c#213 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#263*{c_1#263 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#65*{c'_1#65 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#264)))*{c_1#264 <- `c_1*`} + -- let{`c*` : iN*} c#212*{c#212 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#66*{c'_1#66 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#243))*{iter#243 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#265)))))*{c_1#265 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#244))*{iter#244 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#67*{c'_1#67 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#215)*{c#215 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#266*{c_1#266 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#68*{c'_1#68 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#267)))*{c_1#267 <- `c_1*`} + -- let{`c*` : iN*} c#214*{c#214 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#69*{c'_1#69 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#245))*{iter#245 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#268)))))*{c_1#268 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#246))*{iter#246 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#70*{c'_1#70 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#217)*{c#217 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#269*{c_1#269 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#71*{c'_1#71 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#270)))*{c_1#270 <- `c_1*`} + -- let{`c*` : iN*} c#216*{c#216 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#72*{c'_1#72 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#247))*{iter#247 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#271)))))*{c_1#271 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#248))*{iter#248 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#73*{c'_1#73 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#219)*{c#219 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#272*{c_1#272 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#74*{c'_1#74 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#273)))*{c_1#273 <- `c_1*`} + -- let{`c*` : iN*} c#218*{c#218 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#75*{c'_1#75 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#249))*{iter#249 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#274)))))*{c_1#274 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#250))*{iter#250 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#76*{c'_1#76 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#221)*{c#221 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#275*{c_1#275 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#77*{c'_1#77 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#276)))*{c_1#276 <- `c_1*`} + -- let{`c*` : iN*} c#220*{c#220 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#78*{c'_1#78 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#251))*{iter#251 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#277)))))*{c_1#277 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#252))*{iter#252 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#79*{c'_1#79 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#223)*{c#223 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#278*{c_1#278 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#80*{c'_1#80 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#279)))*{c_1#279 <- `c_1*`} + -- let{`c*` : iN*} c#222*{c#222 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#81*{c'_1#81 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#253))*{iter#253 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#280)))))*{c_1#280 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#254))*{iter#254 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#82*{c'_1#82 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#225)*{c#225 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#281*{c_1#281 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#83*{c'_1#83 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#282)))*{c_1#282 <- `c_1*`} + -- let{`c*` : iN*} c#224*{c#224 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#84*{c'_1#84 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#255))*{iter#255 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#283)))))*{c_1#283 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#256))*{iter#256 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#85*{c'_1#85 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#227)*{c#227 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#284*{c_1#284 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#86*{c'_1#86 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#285)))*{c_1#285 <- `c_1*`} + -- let{`c*` : iN*} c#226*{c#226 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#87*{c'_1#87 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#257))*{iter#257 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#286)))))*{c_1#286 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#258))*{iter#258 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#88*{c'_1#88 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#229)*{c#229 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#287*{c_1#287 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#89*{c'_1#89 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#288)))*{c_1#288 <- `c_1*`} + -- let{`c*` : iN*} c#228*{c#228 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#90*{c'_1#90 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#259))*{iter#259 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#289)))))*{c_1#289 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#260))*{iter#260 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#91*{c'_1#91 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#231)*{c#231 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#290*{c_1#290 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#92*{c'_1#92 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#291)))*{c_1#291 <- `c_1*`} + -- let{`c*` : iN*} c#230*{c#230 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#93*{c'_1#93 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#261))*{iter#261 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#292)))))*{c_1#292 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#262))*{iter#262 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#94*{c'_1#94 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#233)*{c#233 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#293*{c_1#293 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#95*{c'_1#95 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#294)))*{c_1#294 <- `c_1*`} + -- let{`c*` : iN*} c#232*{c#232 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#96*{c'_1#96 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#263))*{iter#263 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#295)))))*{c_1#295 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#264))*{iter#264 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#97*{c'_1#97 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#235)*{c#235 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#296*{c_1#296 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#98*{c'_1#98 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#297)))*{c_1#297 <- `c_1*`} + -- let{`c*` : iN*} c#234*{c#234 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#99*{c'_1#99 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#265))*{iter#265 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#298)))))*{c_1#298 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#266))*{iter#266 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#100*{c'_1#100 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#237)*{c#237 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#299*{c_1#299 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#101*{c'_1#101 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#300)))*{c_1#300 <- `c_1*`} + -- let{`c*` : iN*} c#236*{c#236 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#102*{c'_1#102 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#267))*{iter#267 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#301)))))*{c_1#301 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#268))*{iter#268 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#103*{c'_1#103 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#239)*{c#239 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#302*{c_1#302 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#104*{c'_1#104 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#303)))*{c_1#303 <- `c_1*`} + -- let{`c*` : iN*} c#238*{c#238 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#105*{c'_1#105 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#269))*{iter#269 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#304)))))*{c_1#304 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#270))*{iter#270 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#106*{c'_1#106 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#241)*{c#241 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#305*{c_1#305 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#107*{c'_1#107 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#306)))*{c_1#306 <- `c_1*`} + -- let{`c*` : iN*} c#240*{c#240 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#108*{c'_1#108 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#271))*{iter#271 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#307)))))*{c_1#307 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#272))*{iter#272 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#109*{c'_1#109 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#243)*{c#243 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#308*{c_1#308 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#110*{c'_1#110 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#309)))*{c_1#309 <- `c_1*`} + -- let{`c*` : iN*} c#242*{c#242 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#111*{c'_1#111 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#273))*{iter#273 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#310)))))*{c_1#310 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#274))*{iter#274 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#112*{c'_1#112 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#1*{i_1#1 <- `i_1*`}, i_2#1*{i_2#1 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#2 j_2#2]*{j_1#2 <- `j_1*`, j_2#2 <- `j_2*`}) = $imul_(N, i_1#2, i_2#2)*{i_1#2 <- `i_1*`, i_2#2 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#275))*{iter#275 <- $concat_(syntax iN, [j_1#3 j_2#3]*{j_1#3 <- `j_1*`, j_2#3 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#3, i_2#3)))*{i_1#3 <- `i_1*`, i_2#3 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_sat_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#4*{i_1#4 <- `i_1*`}, i_2#4*{i_2#4 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#4 j_2#4]*{j_1#4 <- `j_1*`, j_2#4 <- `j_2*`}) = $imul_(N, i_1#5, i_2#5)*{i_1#5 <- `i_1*`, i_2#5 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#276))*{iter#276 <- $concat_(syntax iN, [j_1#5 j_2#5]*{j_1#5 <- `j_1*`, j_2#5 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#6, i_2#6)))*{i_1#6 <- `i_1*`, i_2#6 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#245)*{c#245 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#311*{c_1#311 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#193*{c_2#193 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#113*{c'_1#113 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#312)))*{c_1#312 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#65*{c'_2#65 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#194)))*{c_2#194 <- `c_2*`} + -- let{`c*` : iN*} c#244*{c#244 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#114*{c'_1#114 <- `c'_1*`}, c'_2#66*{c'_2#66 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#277))*{iter#277 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#278))*{iter#278 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#313)))))*{c_1#313 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#195)))))*{c_2#195 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#279))*{iter#279 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#115*{c'_1#115 <- `c'_1*`}, c'_2#67*{c'_2#67 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#247)*{c#247 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#314*{c_1#314 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#196*{c_2#196 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#116*{c'_1#116 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#315)))*{c_1#315 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#68*{c'_2#68 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#197)))*{c_2#197 <- `c_2*`} + -- let{`c*` : iN*} c#246*{c#246 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#117*{c'_1#117 <- `c'_1*`}, c'_2#69*{c'_2#69 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#280))*{iter#280 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#281))*{iter#281 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#316)))))*{c_1#316 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#198)))))*{c_2#198 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#282))*{iter#282 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#118*{c'_1#118 <- `c'_1*`}, c'_2#70*{c'_2#70 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#249)*{c#249 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#317*{c_1#317 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#199*{c_2#199 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#119*{c'_1#119 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#318)))*{c_1#318 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#71*{c'_2#71 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#200)))*{c_2#200 <- `c_2*`} + -- let{`c*` : iN*} c#248*{c#248 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#120*{c'_1#120 <- `c'_1*`}, c'_2#72*{c'_2#72 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#283))*{iter#283 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#284))*{iter#284 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#319)))))*{c_1#319 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#201)))))*{c_2#201 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#285))*{iter#285 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#121*{c'_1#121 <- `c'_1*`}, c'_2#73*{c'_2#73 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#251)*{c#251 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#320*{c_1#320 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#202*{c_2#202 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#122*{c'_1#122 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#321)))*{c_1#321 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#74*{c'_2#74 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#203)))*{c_2#203 <- `c_2*`} + -- let{`c*` : iN*} c#250*{c#250 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#123*{c'_1#123 <- `c'_1*`}, c'_2#75*{c'_2#75 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#286))*{iter#286 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#287))*{iter#287 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#322)))))*{c_1#322 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#204)))))*{c_2#204 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#288))*{iter#288 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#124*{c'_1#124 <- `c'_1*`}, c'_2#76*{c'_2#76 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#253)*{c#253 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#323*{c_1#323 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#205*{c_2#205 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#125*{c'_1#125 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#324)))*{c_1#324 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#77*{c'_2#77 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#206)))*{c_2#206 <- `c_2*`} + -- let{`c*` : iN*} c#252*{c#252 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#126*{c'_1#126 <- `c'_1*`}, c'_2#78*{c'_2#78 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#289))*{iter#289 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#290))*{iter#290 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#325)))))*{c_1#325 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#207)))))*{c_2#207 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#291))*{iter#291 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#127*{c'_1#127 <- `c'_1*`}, c'_2#79*{c'_2#79 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#255)*{c#255 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#326*{c_1#326 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#208*{c_2#208 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#128*{c'_1#128 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#327)))*{c_1#327 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#80*{c'_2#80 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#209)))*{c_2#209 <- `c_2*`} + -- let{`c*` : iN*} c#254*{c#254 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#129*{c'_1#129 <- `c'_1*`}, c'_2#81*{c'_2#81 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#292))*{iter#292 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#293))*{iter#293 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#328)))))*{c_1#328 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#210)))))*{c_2#210 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#294))*{iter#294 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#130*{c'_1#130 <- `c'_1*`}, c'_2#82*{c'_2#82 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#257)*{c#257 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#329*{c_1#329 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#211*{c_2#211 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#131*{c'_1#131 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#330)))*{c_1#330 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#83*{c'_2#83 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#212)))*{c_2#212 <- `c_2*`} + -- let{`c*` : iN*} c#256*{c#256 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#132*{c'_1#132 <- `c'_1*`}, c'_2#84*{c'_2#84 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#295))*{iter#295 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#296))*{iter#296 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#331)))))*{c_1#331 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#213)))))*{c_2#213 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#297))*{iter#297 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#133*{c'_1#133 <- `c'_1*`}, c'_2#85*{c'_2#85 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#259)*{c#259 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#332*{c_1#332 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#214*{c_2#214 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#134*{c'_1#134 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#333)))*{c_1#333 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#86*{c'_2#86 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#215)))*{c_2#215 <- `c_2*`} + -- let{`c*` : iN*} c#258*{c#258 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#135*{c'_1#135 <- `c'_1*`}, c'_2#87*{c'_2#87 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#298))*{iter#298 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#299))*{iter#299 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#334)))))*{c_1#334 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#216)))))*{c_2#216 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#300))*{iter#300 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#136*{c'_1#136 <- `c'_1*`}, c'_2#88*{c'_2#88 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#261)*{c#261 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#335*{c_1#335 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#217*{c_2#217 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#137*{c'_1#137 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#336)))*{c_1#336 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#89*{c'_2#89 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#218)))*{c_2#218 <- `c_2*`} + -- let{`c*` : iN*} c#260*{c#260 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#138*{c'_1#138 <- `c'_1*`}, c'_2#90*{c'_2#90 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#301))*{iter#301 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#302))*{iter#302 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#337)))))*{c_1#337 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#219)))))*{c_2#219 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#303))*{iter#303 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#139*{c'_1#139 <- `c'_1*`}, c'_2#91*{c'_2#91 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#263)*{c#263 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#338*{c_1#338 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#220*{c_2#220 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#140*{c'_1#140 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#339)))*{c_1#339 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#92*{c'_2#92 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#221)))*{c_2#221 <- `c_2*`} + -- let{`c*` : iN*} c#262*{c#262 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#141*{c'_1#141 <- `c'_1*`}, c'_2#93*{c'_2#93 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#304))*{iter#304 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#305))*{iter#305 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#340)))))*{c_1#340 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#222)))))*{c_2#222 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#306))*{iter#306 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#142*{c'_1#142 <- `c'_1*`}, c'_2#94*{c'_2#94 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#265)*{c#265 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#341*{c_1#341 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#223*{c_2#223 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#143*{c'_1#143 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#342)))*{c_1#342 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#95*{c'_2#95 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#224)))*{c_2#224 <- `c_2*`} + -- let{`c*` : iN*} c#264*{c#264 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#144*{c'_1#144 <- `c'_1*`}, c'_2#96*{c'_2#96 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#307))*{iter#307 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#308))*{iter#308 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#343)))))*{c_1#343 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#225)))))*{c_2#225 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#309))*{iter#309 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#145*{c'_1#145 <- `c'_1*`}, c'_2#97*{c'_2#97 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#267)*{c#267 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#344*{c_1#344 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#226*{c_2#226 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#146*{c'_1#146 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#345)))*{c_1#345 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#98*{c'_2#98 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#227)))*{c_2#227 <- `c_2*`} + -- let{`c*` : iN*} c#266*{c#266 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#147*{c'_1#147 <- `c'_1*`}, c'_2#99*{c'_2#99 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#310))*{iter#310 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#311))*{iter#311 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#346)))))*{c_1#346 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#228)))))*{c_2#228 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#312))*{iter#312 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#148*{c'_1#148 <- `c'_1*`}, c'_2#100*{c'_2#100 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#269)*{c#269 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#347*{c_1#347 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#229*{c_2#229 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#149*{c'_1#149 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#348)))*{c_1#348 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#101*{c'_2#101 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#230)))*{c_2#230 <- `c_2*`} + -- let{`c*` : iN*} c#268*{c#268 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#150*{c'_1#150 <- `c'_1*`}, c'_2#102*{c'_2#102 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#313))*{iter#313 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#314))*{iter#314 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#349)))))*{c_1#349 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#231)))))*{c_2#231 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#315))*{iter#315 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#151*{c'_1#151 <- `c'_1*`}, c'_2#103*{c'_2#103 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#271)*{c#271 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#350*{c_1#350 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#232*{c_2#232 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#152*{c'_1#152 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#351)))*{c_1#351 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#104*{c'_2#104 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#233)))*{c_2#233 <- `c_2*`} + -- let{`c*` : iN*} c#270*{c#270 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#153*{c'_1#153 <- `c'_1*`}, c'_2#105*{c'_2#105 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#316))*{iter#316 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#317))*{iter#317 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#352)))))*{c_1#352 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#234)))))*{c_2#234 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#318))*{iter#318 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#154*{c'_1#154 <- `c'_1*`}, c'_2#106*{c'_2#106 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#273)*{c#273 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#353*{c_1#353 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#235*{c_2#235 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#155*{c'_1#155 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#354)))*{c_1#354 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#107*{c'_2#107 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#236)))*{c_2#236 <- `c_2*`} + -- let{`c*` : iN*} c#272*{c#272 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#156*{c'_1#156 <- `c'_1*`}, c'_2#108*{c'_2#108 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#319))*{iter#319 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#320))*{iter#320 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#355)))))*{c_1#355 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#237)))))*{c_2#237 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#321))*{iter#321 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#157*{c'_1#157 <- `c'_1*`}, c'_2#109*{c'_2#109 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#275)*{c#275 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#356*{c_1#356 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#238*{c_2#238 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#158*{c'_1#158 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#357)))*{c_1#357 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#110*{c'_2#110 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#239)))*{c_2#239 <- `c_2*`} + -- let{`c*` : iN*} c#274*{c#274 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#159*{c'_1#159 <- `c'_1*`}, c'_2#111*{c'_2#111 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#322))*{iter#322 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#323))*{iter#323 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#358)))))*{c_1#358 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#240)))))*{c_2#240 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#324))*{iter#324 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#160*{c'_1#160 <- `c'_1*`}, c'_2#112*{c'_2#112 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivmul_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1#7*{i_1#7 <- `i_1*`}, i_2#7*{i_2#7 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#325))*{iter#325 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#326))*{iter#326 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#327))*{iter#327 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#328))*{iter#328 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#329))*{iter#329 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#330))*{iter#330 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#331))*{iter#331 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#332))*{iter#332 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#333))*{iter#333 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#334))*{iter#334 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#335))*{iter#335 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#336))*{iter#336 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#337))*{iter#337 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#338))*{iter#338 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#339))*{iter#339 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) + -- let{c'' : vec_} c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') + -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- wf_uN: `%%`(128, $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) + -- wf_uN: `%%`(128, $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- (wf_uN: `%%`(128, iter#340))*{iter#340 <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax num = + | CONST(numtype : numtype, num_) + +def $val_num(num) : val + def $val_num{x0 : numtype, x1 : num_}(CONST_num(x0, x1)) = CONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_num: `%`(num) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule num_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_num(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax vec = + | VCONST(vectype : vectype, vec_) + +def $val_vec(vec) : val + def $val_vec{x0 : vectype, x1 : vec_}(VCONST_vec(x0, x1)) = VCONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_vec: `%`(vec) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule vec_case_0{vectype : vectype, var_0 : vec_}: + `%`(VCONST_vec(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax result = + | _VALS(`val*` : val*) + | `(REF.EXN_ADDR%)THROW_REF`(exnaddr : exnaddr) + | TRAP + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_result: `%`(result) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_0{`val*` : val*}: + `%`(_VALS_result(`val*`)) + -- (wf_val: `%`(val))*{val <- `val*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_1{exnaddr : exnaddr}: + `%`(`(REF.EXN_ADDR%)THROW_REF`_result(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_2: + `%`(TRAP_result) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostfunc = + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funccode = + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | `...` + +def $funccode_func(func) : funccode + def $funccode_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_funccode(x0, x1, x2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funccode: `%`(funccode) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_funccode(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_1: + `%`(`...`_funccode) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax taginst = +{ + TYPE tagtype +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_taginst: `%`(taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_case_{var_0 : tagtype}: + `%`({TYPE var_0}) + -- wf_typeuse: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globalinst = +{ + TYPE globaltype, + VALUE val +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_globalinst: `%`(globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_case_{var_0 : globaltype, var_1 : val}: + `%`({TYPE var_0, VALUE var_1}) + -- wf_globaltype: `%`(var_0) + -- wf_val: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax meminst = +{ + TYPE memtype, + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_meminst: `%`(meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_case_{var_0 : memtype, var_1 : byte*}: + `%`({TYPE var_0, BYTES var_1}) + -- wf_memtype: `%`(var_0) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableinst = +{ + TYPE tabletype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_tableinst: `%`(tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_case_{var_0 : tabletype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_tabletype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcinst = +{ + TYPE deftype, + MODULE moduleinst, + CODE funccode +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funcinst: `%`(funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_case_{var_0 : deftype, var_1 : moduleinst, var_2 : funccode}: + `%`({TYPE var_0, MODULE var_1, CODE var_2}) + -- wf_moduleinst: `%`(var_1) + -- wf_funccode: `%`(var_2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax datainst = +{ + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_datainst: `%`(datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_case_{var_0 : byte*}: + `%`({BYTES var_0}) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax eleminst = +{ + TYPE elemtype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_eleminst: `%`(eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_case_{var_0 : elemtype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_reftype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax packval = + | PACK(packtype : packtype, iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_packval: `%`(packval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packval_case_0{packtype : packtype, var_0 : iN}: + `%`(PACK_packval(packtype, var_0)) + -- wf_uN: `%%`($psize(packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax fieldval = + | CONST(numtype : numtype, num_) + | VCONST(vectype : vectype, vec_) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + | PACK(packtype : packtype, iN) + +def $fieldval_packval(packval) : fieldval + def $fieldval_packval{x0 : packtype, x1 : iN}(PACK_packval(x0, x1)) = PACK_fieldval(x0, x1) + +def $fieldval_ref(ref) : fieldval + def $fieldval_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_fieldval(x0) + def $fieldval_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_fieldval + def $fieldval_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_fieldval(x0) + +def $fieldval_val(val) : fieldval + def $fieldval_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_fieldval(x0, x1) + def $fieldval_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_fieldval(x0, x1) + def $fieldval_val{x0 : u31}(`REF.I31_NUM`_val(x0)) = `REF.I31_NUM`_fieldval(x0) + def $fieldval_val(`REF.NULL_ADDR`_val) = `REF.NULL_ADDR`_fieldval + def $fieldval_val{x0 : structaddr}(`REF.STRUCT_ADDR`_val(x0)) = `REF.STRUCT_ADDR`_fieldval(x0) + def $fieldval_val{x0 : arrayaddr}(`REF.ARRAY_ADDR`_val(x0)) = `REF.ARRAY_ADDR`_fieldval(x0) + def $fieldval_val{x0 : funcaddr}(`REF.FUNC_ADDR`_val(x0)) = `REF.FUNC_ADDR`_fieldval(x0) + def $fieldval_val{x0 : exnaddr}(`REF.EXN_ADDR`_val(x0)) = `REF.EXN_ADDR`_fieldval(x0) + def $fieldval_val{x0 : hostaddr}(`REF.HOST_ADDR`_val(x0)) = `REF.HOST_ADDR`_fieldval(x0) + def $fieldval_val{x0 : ref}(`REF.EXTERN`_val(x0)) = `REF.EXTERN`_fieldval(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_fieldval: `%`(fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_fieldval(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_1{vectype : vectype, var_0 : vec_}: + `%`(VCONST_fieldval(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_2{u31 : u31}: + `%`(`REF.I31_NUM`_fieldval(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_3: + `%`(`REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_4{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_5{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_6{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_7{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_8{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_9{ref : ref}: + `%`(`REF.EXTERN`_fieldval(ref)) + -- wf_ref: `%`(ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_10{packtype : packtype, var_0 : iN}: + `%`(PACK_fieldval(packtype, var_0)) + -- wf_uN: `%%`($psize(packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_structinst: `%`(structinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_arrayinst: `%`(arrayinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exninst = +{ + TAG tagaddr, + FIELDS val* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exninst: `%`(exninst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_case_{var_0 : tagaddr, var_1 : val*}: + `%`({TAG var_0, FIELDS var_1}) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax store = +{ + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_store: `%`(store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: + `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) + -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} + -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} + -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} + -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} + -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} + -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} + -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} + -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} + -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} + -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax state = + | `%;%`(store : store, frame : frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_state: `%`(state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule state_case_0{store : store, frame : frame}: + `%`(`%;%`_state(store, frame)) + -- wf_store: `%`(store) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax config = + | `%;%`(state : state, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_config: `%`(config) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule config_case_0{state : state, `instr*` : instr*}: + `%`(`%;%`_config(state, `instr*`)) + -- wf_state: `%`(state) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $Ki : nat + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $Ki = 1024 + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $packfield_(storagetype : storagetype, val : val) : fieldval? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(BOT_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{`null?` : null?, heaptype : heaptype, val : val}(REF_storagetype(`null?`, heaptype), val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(V128_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(F64_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(F32_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(I64_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(I32_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation packfield__is_wf: `%%%`(storagetype : storagetype, val : val, ret_val : fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packfield__is_wf_0{storagetype : storagetype, val : val, ret_val : fieldval}: + `%%%`(storagetype, val, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_val: `%`(val) + -- if (ret_val = !($packfield_(storagetype, val))) + -- wf_fieldval: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(BOT_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(V128_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(F64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(F32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(I64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(I32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(BOT_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(V128_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(F64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(F32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(I64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(I32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(BOT_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(V128_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(F64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(F32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(I64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(I32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(BOT_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(V128_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(F64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(F32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(I64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(I32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(BOT_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(V128_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(F64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(F32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(I64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(I32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(BOT_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(V128_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(F64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(F32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(I64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(I32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(BOT_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{`null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(V128_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(F64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(F32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(I64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(I32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(BOT_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(V128_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(F64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(F32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(I64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(I32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(BOT_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(V128_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(F64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(F32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(I64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(I32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(BOT_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(V128_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(F64_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(F32_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(I64_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation unpackfield__is_wf: `%%%%`(storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule unpackfield__is_wf_0{storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val}: + `%%%%`(storagetype, var_0, fieldval, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = !($unpackfield_(storagetype, var_0, fieldval))) + -- wf_val: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.1-190.86 +def $tagsxa(externaddr*) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.23 + def $tagsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.42 + def $tagsxa{a : nat, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa#1*{xa#1 <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:198.1-198.57 + def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#2*{xa#2 <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.1-191.89 +def $globalsxa(externaddr*) : globaladdr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.26 + def $globalsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.51 + def $globalsxa{a : nat, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa#3*{xa#3 <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:202.1-202.63 + def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#4*{xa#4 <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.1-192.86 +def $memsxa(externaddr*) : memaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.23 + def $memsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.42 + def $memsxa{a : nat, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa#5*{xa#5 <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:206.1-206.57 + def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#6*{xa#6 <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.88 +def $tablesxa(externaddr*) : tableaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.25 + def $tablesxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.48 + def $tablesxa{a : nat, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa#7*{xa#7 <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:210.1-210.61 + def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#8*{xa#8 <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.87 +def $funcsxa(externaddr*) : funcaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.24 + def $funcsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.45 + def $funcsxa{a : nat, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa#9*{xa#9 <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:214.1-214.59 + def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa#10*{xa#10 <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $store(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $store{s : store, f : frame}(`%;%`_state(s, f)) = s + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation store_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_is_wf_0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $store(state)) + -- wf_store: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $frame(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation frame_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_is_wf_0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $frame(state)) + -- wf_frame: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tagaddr(state : state) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $moduleinst(state : state) : moduleinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation moduleinst_is_wf: `%%`(state : state, ret_val : moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_is_wf_0{state : state, ret_val : moduleinst}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $moduleinst(state)) + -- wf_moduleinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $taginst(state : state) : taginst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation taginst_is_wf: `%%`(state : state, ret_val : taginst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_is_wf_0{state : state, ret_val : taginst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $taginst(state)) + -- (wf_taginst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $globalinst(state : state) : globalinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation globalinst_is_wf: `%%`(state : state, ret_val : globalinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_is_wf_0{state : state, ret_val : globalinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $globalinst(state)) + -- (wf_globalinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $meminst(state : state) : meminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation meminst_is_wf: `%%`(state : state, ret_val : meminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_is_wf_0{state : state, ret_val : meminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $meminst(state)) + -- (wf_meminst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tableinst(state : state) : tableinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tableinst_is_wf: `%%`(state : state, ret_val : tableinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_is_wf_0{state : state, ret_val : tableinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $tableinst(state)) + -- (wf_tableinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $funcinst(state : state) : funcinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation funcinst_is_wf: `%%`(state : state, ret_val : funcinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_is_wf_0{state : state, ret_val : funcinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $funcinst(state)) + -- (wf_funcinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $datainst(state : state) : datainst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation datainst_is_wf: `%%`(state : state, ret_val : datainst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_is_wf_0{state : state, ret_val : datainst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $datainst(state)) + -- (wf_datainst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $eleminst(state : state) : eleminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation eleminst_is_wf: `%%`(state : state, ret_val : eleminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_is_wf_0{state : state, ret_val : eleminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $eleminst(state)) + -- (wf_eleminst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $structinst(state : state) : structinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation structinst_is_wf: `%%`(state : state, ret_val : structinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_is_wf_0{state : state, ret_val : structinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $structinst(state)) + -- (wf_structinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $arrayinst(state : state) : arrayinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation arrayinst_is_wf: `%%`(state : state, ret_val : arrayinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_is_wf_0{state : state, ret_val : arrayinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $arrayinst(state)) + -- (wf_arrayinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $exninst(state : state) : exninst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation exninst_is_wf: `%%`(state : state, ret_val : exninst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_is_wf_0{state : state, ret_val : exninst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $exninst(state)) + -- (wf_exninst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fof(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fof{z : state}(z) = $frame(z) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fof_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fof_is_wf_0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $fof(state)) + -- wf_frame: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $type(state : state, typeidx : typeidx) : deftype + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $type{z : state, x : uN}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $sof(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $sof{z : state}(z) = $store(z) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation sof_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule sof_is_wf_0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $sof(state)) + -- wf_store: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tag(state : state, tagidx : tagidx) : taginst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tag_is_wf: `%%%`(state : state, tagidx : tagidx, ret_val : taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tag_is_wf_0{state : state, tagidx : tagidx, ret_val : taginst}: + `%%%`(state, tagidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $tag(state, tagidx)) + -- wf_taginst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $global(state : state, globalidx : globalidx) : globalinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation global_is_wf: `%%%`(state : state, globalidx : globalidx, ret_val : globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule global_is_wf_0{state : state, globalidx : globalidx, ret_val : globalinst}: + `%%%`(state, globalidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $global(state, globalidx)) + -- wf_globalinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $mem(state : state, memidx : memidx) : meminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation mem_is_wf: `%%%`(state : state, memidx : memidx, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule mem_is_wf_0{state : state, memidx : memidx, ret_val : meminst}: + `%%%`(state, memidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $mem(state, memidx)) + -- wf_meminst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $table(state : state, tableidx : tableidx) : tableinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation table_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule table_is_wf_0{state : state, tableidx : tableidx, ret_val : tableinst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $table(state, tableidx)) + -- wf_tableinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $func(state : state, funcidx : funcidx) : funcinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation func_is_wf: `%%%`(state : state, funcidx : funcidx, ret_val : funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule func_is_wf_0{state : state, funcidx : funcidx, ret_val : funcinst}: + `%%%`(state, funcidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $func(state, funcidx)) + -- wf_funcinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $data(state : state, dataidx : dataidx) : datainst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation data_is_wf: `%%%`(state : state, dataidx : dataidx, ret_val : datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule data_is_wf_0{state : state, dataidx : dataidx, ret_val : datainst}: + `%%%`(state, dataidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $data(state, dataidx)) + -- wf_datainst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $elem(state : state, tableidx : tableidx) : eleminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation elem_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule elem_is_wf_0{state : state, tableidx : tableidx, ret_val : eleminst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $elem(state, tableidx)) + -- wf_eleminst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $local(state : state, localidx : localidx) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation local_is_wf: `%%%`(state : state, localidx : localidx, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule local_is_wf_0{state : state, localidx : localidx, ret_val : val?}: + `%%%`(state, localidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $local(state, localidx)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_local(state : state, localidx : localidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_local_is_wf: `%%%%`(state : state, localidx : localidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_local_is_wf_0{state : state, localidx : localidx, val : val, ret_val : state}: + `%%%%`(state, localidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_local(state, localidx, val)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_global(state : state, globalidx : globalidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_global_is_wf: `%%%%`(state : state, globalidx : globalidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_global_is_wf_0{state : state, globalidx : globalidx, val : val, ret_val : state}: + `%%%%`(state, globalidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_global(state, globalidx, val)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_table_is_wf: `%%%%%`(state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_table_is_wf_0{state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state}: + `%%%%%`(state, tableidx, nat, ref, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_ref: `%`(ref) + -- if (ret_val = $with_table(state, tableidx, nat, ref)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_tableinst_is_wf: `%%%%`(state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_tableinst_is_wf_0{state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state}: + `%%%%`(state, tableidx, tableinst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_tableinst: `%`(tableinst) + -- if (ret_val = $with_tableinst(state, tableidx, tableinst)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_mem{z : state, x : uN, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b#1*{b#1 <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_mem_is_wf: `%%%%%%`(state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_mem_is_wf_0{state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state}: + `%%%%%%`(state, memidx, nat, nat_0, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_mem(state, memidx, nat, nat_0, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_meminst_is_wf: `%%%%`(state : state, memidx : memidx, meminst : meminst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_meminst_is_wf_0{state : state, memidx : memidx, meminst : meminst, ret_val : state}: + `%%%%`(state, memidx, meminst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- wf_meminst: `%`(meminst) + -- if (ret_val = $with_meminst(state, memidx, meminst)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_elem(state : state, elemidx : elemidx, ref*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_elem{z : state, x : uN, `r*` : ref*}(z, x, r#1*{r#1 <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_elem_is_wf: `%%%%`(state : state, elemidx : elemidx, var_0 : ref*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_elem_is_wf_0{state : state, elemidx : elemidx, var_0 : ref*, ret_val : state}: + `%%%%`(state, elemidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, elemidx) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_elem(state, elemidx, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_data(state : state, dataidx : dataidx, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b#2*{b#2 <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_data_is_wf: `%%%%`(state : state, dataidx : dataidx, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_data_is_wf_0{state : state, dataidx : dataidx, var_0 : byte*, ret_val : state}: + `%%%%`(state, dataidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_data(state, dataidx, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_struct_is_wf: `%%%%%`(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_struct_is_wf_0{state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, structaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_struct(state, structaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_array_is_wf: `%%%%%`(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_array_is_wf_0{state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, arrayaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_array(state, arrayaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_structinst(state : state, structinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_structinst{z : state, `si*` : structinst*}(z, si#1*{si#1 <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_structinst_is_wf: `%%%`(state : state, var_0 : structinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_structinst_is_wf_0{state : state, var_0 : structinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_structinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_structinst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_arrayinst(state : state, arrayinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai#1*{ai#1 <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_arrayinst_is_wf: `%%%`(state : state, var_0 : arrayinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_arrayinst_is_wf_0{state : state, var_0 : arrayinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_arrayinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_arrayinst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_exninst(state : state, exninst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_exninst{z : state, `exn*` : exninst*}(z, exn#1*{exn#1 <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_exninst_is_wf: `%%%`(state : state, var_0 : exninst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_exninst_is_wf_0{state : state, var_0 : exninst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_exninst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_exninst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, i' : uN}(tableinst, n, r) = ?(tableinst') + -- let{at : addrtype, i : u64, `j?` : u64?, rt : reftype, `r'*` : ref*} {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#1?{j#1 <- `j?`}), rt), REFS r'#1*{r'#1 <- `r'*`}} = tableinst + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#2?{j#2 <- `j?`}), rt), REFS r'#2*{r'#2 <- `r'*`} ++ r^n{}}) + -- if ($proj_uN_0(i').0 = (|r'#3*{r'#3 <- `r'*`}| + n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#3).0))?{j#3 <- `j?`} + -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#4?{j#4 <- `j?`}), rt), REFS r'#4*{r'#4 <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#5?{j#5 <- `j?`}), rt), REFS r'#5*{r'#5 <- `r'*`} ++ r^n{}}) + def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growtable_is_wf: `%%%%`(tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growtable_is_wf_0{tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst}: + `%%%%`(tableinst, nat, ref, ret_val) + -- wf_tableinst: `%`(tableinst) + -- wf_ref: `%`(ref) + -- if (ret_val = !($growtable(tableinst, nat, ref))) + -- wf_tableinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $growmem(meminst : meminst, nat : nat) : meminst? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $growmem{meminst : meminst, n : nat, meminst' : meminst, i' : uN}(meminst, n) = ?(meminst') + -- let{at : addrtype, i : u64, `j?` : u64?, `b*` : byte*} {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#3*{b#3 <- `b*`}} = meminst + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#4*{b#4 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#5*{b#5 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#8).0))?{j#8 <- `j?`} + -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#9?{j#9 <- `j?`})), BYTES b#6*{b#6 <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#10?{j#10 <- `j?`})), BYTES b#7*{b#7 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growmem_is_wf: `%%%`(meminst : meminst, nat : nat, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growmem_is_wf_0{meminst : meminst, nat : nat, ret_val : meminst}: + `%%%`(meminst, nat, ret_val) + -- wf_meminst: `%`(meminst) + -- if (ret_val = !($growmem(meminst, nat))) + -- wf_meminst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Num_ok: `%|-%:%`(store, num, numtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, nt : numtype, c : num_}: + `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Vec_ok: `%|-%:%`(store, vec, vectype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, vt : vectype, c : vec_}: + `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +relation Ref_ok: `%|-%:%`(store, ref, reftype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.36 + rule null{s : store}: + `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.31 + rule i31{s : store, i : u31}: + `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.I31_NUM`_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 + rule struct{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.STRUCTS_store[a].TYPE_structinst = dt) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 + rule array{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 + rule func{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.FUNCS_store[a].TYPE_funcinst = dt) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 + rule exn{s : store, a : addr, exn : exninst}: + `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) + -- if (s.EXNS_store[a] = exn) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.33 + rule host{s : store, a : addr}: + `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.HOST_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 + rule extern{s : store, ref : ref}: + `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) + -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.EXTERN`_ref(ref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-69.34 + rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: + `%|-%:%`(s, ref, rt) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Val_ok: `%|-%:%`(store, val, valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule num{s : store, num : num, nt : numtype}: + `%|-%:%`(s, $val_num(num), $valtype_numtype(nt)) + -- Num_ok: `%|-%:%`(s, num, nt) + -- wf_store: `%`(s) + -- wf_num: `%`(num) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule vec{s : store, vec : vec, vt : vectype}: + `%|-%:%`(s, $val_vec(vec), $valtype_vectype(vt)) + -- Vec_ok: `%|-%:%`(s, vec, vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule ref{s : store, ref : ref, rt : reftype}: + `%|-%:%`(s, $val_ref(ref), $valtype_reftype(rt)) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Packval_ok: `%|-%:%`(store, packval, packtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, pt : packtype, c : iN}: + `%|-%:%`(s, PACK_packval(pt, c), pt) + -- wf_store: `%`(s) + -- wf_packval: `%`(PACK_packval(pt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule val{s : store, val : val, t : valtype}: + `%|-%:%`(s, $fieldval_val(val), $storagetype_valtype(t)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_val: `%`(val) + -- wf_valtype: `%`(t) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule packval{s : store, packval : packval, pt : packtype}: + `%|-%:%`(s, $fieldval_packval(packval), $storagetype_packtype(pt)) + -- Packval_ok: `%|-%:%`(s, packval, pt) + -- wf_store: `%`(s) + -- wf_packval: `%`(packval) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-104.84 +relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:106.1-108.28 + rule tag{s : store, a : addr, taginst : taginst}: + `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- if (s.TAGS_store[a] = taginst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:110.1-112.34 + rule global{s : store, a : addr, globalinst : globalinst}: + `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- if (s.GLOBALS_store[a] = globalinst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:114.1-116.28 + rule mem{s : store, a : addr, meminst : meminst}: + `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- if (s.MEMS_store[a] = meminst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:118.1-120.32 + rule table{s : store, a : addr, tableinst : tableinst}: + `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- if (s.TABLES_store[a] = tableinst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:122.1-124.30 + rule func{s : store, a : addr, funcinst : funcinst}: + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) + -- if (s.FUNCS_store[a] = funcinst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:126.1-130.37 + rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: + `%|-%:%`(s, externaddr, xt) + -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') + -- Externtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt) + -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (iter_val#3 : deftype <: typeuse)*{iter_val#3 <- moduleinst.TYPES_moduleinst}) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_valtype_is_wf: `%%%`(moduleinst : moduleinst, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_valtype_is_wf_0{moduleinst : moduleinst, valtype : valtype, ret_val : valtype}: + `%%%`(moduleinst, valtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_valtype: `%`(valtype) + -- if (ret_val = $inst_valtype(moduleinst, valtype)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (iter_val#4 : deftype <: typeuse)*{iter_val#4 <- moduleinst.TYPES_moduleinst}) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_reftype_is_wf: `%%%`(moduleinst : moduleinst, reftype : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_reftype_is_wf_0{moduleinst : moduleinst, reftype : reftype, ret_val : reftype}: + `%%%`(moduleinst, reftype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_reftype: `%`(reftype) + -- if (ret_val = $inst_reftype(moduleinst, reftype)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (iter_val#5 : deftype <: typeuse)*{iter_val#5 <- moduleinst.TYPES_moduleinst}) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_globaltype_is_wf: `%%%`(moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_globaltype_is_wf_0{moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype}: + `%%%`(moduleinst, globaltype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = $inst_globaltype(moduleinst, globaltype)) + -- wf_globaltype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (iter_val#6 : deftype <: typeuse)*{iter_val#6 <- moduleinst.TYPES_moduleinst}) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_memtype_is_wf: `%%%`(moduleinst : moduleinst, memtype : memtype, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_memtype_is_wf_0{moduleinst : moduleinst, memtype : memtype, ret_val : memtype}: + `%%%`(moduleinst, memtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $inst_memtype(moduleinst, memtype)) + -- wf_memtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (iter_val#7 : deftype <: typeuse)*{iter_val#7 <- moduleinst.TYPES_moduleinst}) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_tabletype_is_wf: `%%%`(moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_tabletype_is_wf_0{moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype}: + `%%%`(moduleinst, tabletype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = $inst_tabletype(moduleinst, tabletype)) + -- wf_tabletype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_pure_before_ref.eq-true`: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref}: + `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_pure: `%~>%`(instr*, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule unreachable: + `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule nop: + `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule drop{val : val}: + `%~>%`([$instr_val(val) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_1)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_2)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- if ($proj_uN_0(l).0 = 0) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- if ($proj_uN_0(l).0 > 0) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-true`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-false`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-null`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- if (val = `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-addr`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [$instr_val(val)]) + -- if (val =/= `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-null`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], []) + -- if (val = `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-addr`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], [$instr_val(val) BR_instr(l)]) + -- if (val =/= `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call_indirect{x : idx, yy : typeuse}: + `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call_indirect{x : idx, yy : typeuse}: + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `frame-vals`{n : n, f : frame, `val*` : val*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: + `%~>%`($instr_val(val)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-label`{n : n, `instr'*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-handler`{n : n, `catch*` : catch*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-frame`{n : n, f : frame}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `local.tee`{val : val, x : idx}: + `%~>%`([$instr_val(val) `LOCAL.TEE`_instr(x)], [$instr_val(val) $instr_val(val) `LOCAL.SET`_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) + -- wf_instr: `%`(`LOCAL.SET`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.i31`{i : num_}: + `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`REF.I31`_instr) + -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-true`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-false`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-null`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr], [TRAP_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-addr`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr], [$instr_ref(ref)]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) + -- if (ref_1 = ref_2) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-null`{sx : sx}: + `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-num`{i : u31, sx : sx}: + `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(`REF.I31_NUM`_instr(i)) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new`{val : val, n : n, x : idx}: + `%~>%`([$instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], $instr_val(val)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-null`{ref : ref}: + `%~>%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-addr`{ref : ref}: + `%~>%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-null`: + `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-addr`{ref : ref}: + `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [$instr_ref(ref)]) + -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- if (c <- $unop_(nt, unop, c_1)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- if ($unop_(nt, unop, c_1) = []) + -- (wf_num_: `%%`(nt, iter))*{iter <- $unop_(nt, unop, c_1)} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- if (c <- $binop_(nt, binop, c_1, c_2)) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- if ($binop_(nt, binop, c_1, c_2) = []) + -- (wf_num_: `%%`(nt, iter))*{iter <- $binop_(nt, binop, c_1, c_2)} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) + -- wf_uN: `%%`(32, $testop_(nt, testop, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) + -- wf_uN: `%%`(32, $relop_(nt, relop, c_1, c_2)) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- $cvtop__(nt_1, nt_2, cvtop, c_1)} + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvunop_(V128_vectype, vvunop, c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvtestop{c_1 : vec_, c : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) + -- wf_uN: `%%`(32, $inez_($vsize(V128_vectype), c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vunop_(sh, vunop, c_1)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- if ($vunop_(sh, vunop, c_1) = []) + -- (wf_uN: `%%`(128, iter))*{iter <- $vunop_(sh, vunop, c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) + -- (wf_uN: `%%`(128, iter))*{iter <- $vbinop_(sh, vbinop, c_1, c_2)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) + -- (wf_uN: `%%`(128, iter))*{iter <- $vternop_(sh, vternop, c_1, c_2, c_3)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) + -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), i))*{i <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)} + -- (wf_uN: `%%`(32, $inez_($jsizenn(Jnn), !($proj_lane__2(i)))))*{i <- `i*`} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) + -- wf_uN: `%%`(128, $vrelop_(sh, vrelop, c_1, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) + -- wf_uN: `%%`(128, $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) + -- wf_uN: `%%`(32, $vbitmaskop_(sh, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) + -- wf_uN: `%%`(128, $vswizzlop_(sh, swizzlop, c_1, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) + -- wf_uN: `%%`(128, $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: + `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- wf_uN: `%%`(32, $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)} + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) + -- wf_uN: `%%`(128, $vextunop__(sh_1, sh_2, vextunop, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) + -- wf_uN: `%%`(128, $vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) + -- wf_uN: `%%`(128, $vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) + -- wf_uN: `%%`(128, $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) + -- wf_uN: `%%`(128, $vcvtop__(sh_1, sh_2, vcvtop, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +def $blocktype_(state : state, blocktype : blocktype) : instrtype + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1#2*{t_1#2 <- `t_1*`}), `%`_resulttype(t_2#2*{t_2#2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#3*{t_1#3 <- `t_1*`}), `%`_resulttype(t_2#3*{t_2#3 <- `t_2*`}))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t#1?{t#1 <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation blocktype__is_wf: `%%%`(state : state, blocktype : blocktype, ret_val : instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule blocktype__is_wf_0{state : state, blocktype : blocktype, ret_val : instrtype}: + `%%%`(state, blocktype, ret_val) + -- wf_state: `%`(state) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = $blocktype_(state, blocktype)) + -- wf_instrtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_throw_ref-handler-next`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.test-false`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-num`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read: `%~>%`(config, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`($blocktype_(z, bt)) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (m = |`val*`|) + -- if (m = |`t_1*`|) + -- if (n = |`t_2*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`($blocktype_(z, bt)) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (m = |`val*`|) + -- if (m = |`t_1*`|) + -- if (n = |`t_2*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt_2)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + -- wf_moduleinst: `%`($moduleinst(z)) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-null`{z : state, yy : typeuse}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- if ($funcinst(z)[a] = fi) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- if (n = |`val*`|) + -- if (n = |`t_1*`|) + -- if (m = |`t_2*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + -- wf_moduleinst: `%`($moduleinst(z)) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) + -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (n = |`val*`|) + -- if (n = |`t_1*`|) + -- if (m = |`t_2*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) + -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`($blocktype_(z, bt)) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (m = |`val*`|) + -- if (m = |`t_1*`|) + -- if (n = |`t_2*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `local.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [$instr_val(val)]) + -- if ($local(z, x) = ?(val)) + -- wf_val: `%`(val) + -- (wf_val: `%`(iter))?{iter <- $local(z, x)} + -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `global.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [$instr_val(val)]) + -- if ($global(z, x).VALUE_globalinst = val) + -- wf_val: `%`(val) + -- wf_globalinst: `%`($global(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: + `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- if (|$table(z, x).REFS_tableinst| = n) + -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) $instr_ref($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) + -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, Jnn : Jnn}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[(($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (c = $extend__(N, 128, U_sx, j)) + -- wf_uN: `%%`(N, j) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $extend__(N, 128, U_sx, j)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, k)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.size`{z : state, x : idx, at : addrtype, n : n, lim : limits}: + `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) + -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL`_instr(ht)])) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.func`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) + -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)]), [$instr_ref(ref)]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) + -- wf_reftype: `%`($inst_reftype(f.MODULE_frame, rt)) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)]), [TRAP_instr]) + -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), $instr_val(val)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))}*{zt <- `zt*`} + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} + -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])))]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_val: `%`(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]))) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)]), $instr_val(val)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (!($default_($unpack(zt))) = ?(val)) + -- wf_val: `%`(val) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))} + -- wf_valtype: `%`($unpack(zt)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), $instr_ref(ref)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- if (n = |`ref*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- (wf_instr: `%`($const(!($cunpack(zt)), $cunpacknum_(zt, c))))^n{c <- `c*`} + -- (wf_lit_: `%%`($storagetype_consttype(!($cunpack(zt))), $cunpacknum_(zt, c)))^n{c <- `c*`} + -- (wf_byte: `%`(iter))*{iter <- $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))} + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)}^n{c <- `c*`} + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (n = |`c*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [$instr_val(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_val: `%`(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]))) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-array`{z : state, a : addr}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-null`{z : state, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) + -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null1`{z : state, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), []) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) + -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), []) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) + -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) + -- wf_ref: `%`(ref) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), []) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) + -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- wf_lit_: `%%`(zt, c) + -- wf_instr: `%`($const(!($cunpack(zt)), $cunpacknum_(zt, c))) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(zt))), $cunpacknum_(zt, c)) + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)} + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +relation Step: `%~>%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.36 + rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:45.1-47.45 + rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 + rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if (a = |$exninst(z)|) + -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + -- wf_taginst: `%`($tag(z, x)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + -- if (n = |`val*`|) + -- if (n = |`t*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:305.1-306.56 + rule `local.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:318.1-319.58 + rule `global.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:332.1-334.33 + rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.32 + rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:347.1-350.46 + rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- if (ti = !($growtable($table(z, x), n, ref))) + -- wf_tableinst: `%`(!($growtable($table(z, x), n, ref))) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:352.1-353.87 + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:413.1-414.51 + rule `elem.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:497.1-500.60 + rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:502.1-506.29 + rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $nbytes_(nt, c)) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:508.1-511.52 + rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:513.1-517.52 + rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))} + -- wf_uN: `%%`(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c)))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:519.1-522.63 + rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:524.1-527.31 + rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:530.1-533.50 + rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:535.1-540.49 + rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:549.1-552.37 + rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (mi = !($growmem($mem(z, x), n))) + -- wf_meminst: `%`(!($growmem($mem(z, x), n))) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:554.1-555.84 + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:615.1-616.51 + rule `data.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:692.1-696.65 + rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (a = |$structinst(z)|) + -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + -- if (n = |`val*`|) + -- if (n = |`mut?*`|) + -- if (n = |`zt*`|) + -- if (n = |`val*`|) + -- if (n = |`zt*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:713.1-714.55 + rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(val) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(val) `STRUCT.SET`_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:716.1-719.46 + rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:732.1-737.65 + rule `array.new_fixed`{z : state, n : n, `val*` : val*, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:777.1-778.66 + rule `array.set-null`{z : state, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:780.1-782.39 + rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:784.1-787.44 + rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +relation Steps: `%~>*%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + rule refl{z : state, `instr*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: + `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`})) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 +def $alloctypes(type*) : deftype* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 + def $alloctypes([]) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 + def $alloctypes{`type'*` : type*, type : type, `deftype*` : deftype*, x : uN}(type'#1*{type'#1 <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- let{`deftype'*` : deftype*} deftype'#1*{deftype'#1 <- `deftype'*`} = $alloctypes(type'#2*{type'#2 <- `type'*`}) + -- let{rectype : rectype} TYPE_type(rectype) = type + -- if (deftype#1*{deftype#1 <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), $typeuse_deftype(deftype'#2)*{deftype'#2 <- `deftype'*`})) + -- if ($proj_uN_0(x).0 = |deftype'#3*{deftype'#3 <- `deftype'*`}|) + -- wf_uN: `%%`(32, x) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- if (taginst = {TYPE tagtype}) + -- wf_taginst: `%`({TYPE tagtype}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctag_is_wf: `%%%`(store : store, tagtype : tagtype, ret_val : (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctag_is_wf_0{store : store, tagtype : tagtype, ret_val : (store, tagaddr)}: + `%%%`(store, tagtype, ret_val) + -- wf_store: `%`(store) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = $alloctag(store, tagtype)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 +def $alloctags(store : store, tagtype*) : (store, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 + def $alloctags{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 + def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*}(s, [tagtype] ++ tagtype'#1*{tagtype'#1 <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) + -- let{ja : tagaddr, s_1 : store} (s_1, ja) = $alloctag(s, tagtype) + -- let{s_2 : store, `ja'*` : tagaddr*} (s_2, ja'#1*{ja'#1 <- `ja'*`}) = $alloctags(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}) + -- wf_store: `%`($alloctag(s, tagtype).0) + -- wf_store: `%`($alloctags(s_1, tagtype'#3*{tagtype'#3 <- `tagtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation alloctags_is_wf: `%%%`(store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule alloctags_is_wf_0{store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_typeuse: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $alloctags(store, var_0)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- if (globalinst = {TYPE globaltype, VALUE val}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocglobal_is_wf: `%%%%`(store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocglobal_is_wf_0{store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)}: + `%%%%`(store, globaltype, val, ret_val) + -- wf_store: `%`(store) + -- wf_globaltype: `%`(globaltype) + -- wf_val: `%`(val) + -- if (ret_val = $allocglobal(store, globaltype, val)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 +def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 + def $allocglobals{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 + def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*}(s, [globaltype] ++ globaltype'#1*{globaltype'#1 <- `globaltype'*`}, [val] ++ val'#1*{val'#1 <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) + -- let{ga : globaladdr, s_1 : store} (s_1, ga) = $allocglobal(s, globaltype, val) + -- let{s_2 : store, `ga'*` : globaladdr*} (s_2, ga'#1*{ga'#1 <- `ga'*`}) = $allocglobals(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}) + -- wf_store: `%`($allocglobal(s, globaltype, val).0) + -- wf_store: `%`($allocglobals(s_1, globaltype'#3*{globaltype'#3 <- `globaltype'*`}, val'#3*{val'#3 <- `val'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation allocglobals_is_wf: `%%%%`(store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule allocglobals_is_wf_0{store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $allocglobals(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocmem(store : store, memtype : memtype) : (store, memaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#11?{j#11 <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#12?{j#12 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#13?{j#13 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmem_is_wf: `%%%`(store : store, memtype : memtype, ret_val : (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmem_is_wf_0{store : store, memtype : memtype, ret_val : (store, memaddr)}: + `%%%`(store, memtype, ret_val) + -- wf_store: `%`(store) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $allocmem(store, memtype)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 +def $allocmems(store : store, memtype*) : (store, memaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 + def $allocmems{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 + def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*}(s, [memtype] ++ memtype'#1*{memtype'#1 <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) + -- let{ma : memaddr, s_1 : store} (s_1, ma) = $allocmem(s, memtype) + -- let{s_2 : store, `ma'*` : memaddr*} (s_2, ma'#1*{ma'#1 <- `ma'*`}) = $allocmems(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}) + -- wf_store: `%`($allocmem(s, memtype).0) + -- wf_store: `%`($allocmems(s_1, memtype'#3*{memtype'#3 <- `memtype'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation allocmems_is_wf: `%%%`(store : store, var_0 : memtype*, ret_val : (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule allocmems_is_wf_0{store : store, var_0 : memtype*, ret_val : (store, memaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_memtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocmems(store, var_0)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j#14?{j#14 <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#15?{j#15 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#16?{j#16 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctable_is_wf: `%%%%`(store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctable_is_wf_0{store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)}: + `%%%%`(store, tabletype, ref, ret_val) + -- wf_store: `%`(store) + -- wf_tabletype: `%`(tabletype) + -- wf_ref: `%`(ref) + -- if (ret_val = $alloctable(store, tabletype, ref)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 +def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 + def $alloctables{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 + def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*}(s, [tabletype] ++ tabletype'#1*{tabletype'#1 <- `tabletype'*`}, [ref] ++ ref'#1*{ref'#1 <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) + -- let{ta : tableaddr, s_1 : store} (s_1, ta) = $alloctable(s, tabletype, ref) + -- let{s_2 : store, `ta'*` : tableaddr*} (s_2, ta'#1*{ta'#1 <- `ta'*`}) = $alloctables(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}) + -- wf_store: `%`($alloctable(s, tabletype, ref).0) + -- wf_store: `%`($alloctables(s_1, tabletype'#3*{tabletype'#3 <- `tabletype'*`}, ref'#3*{ref'#3 <- `ref'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation alloctables_is_wf: `%%%%`(store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule alloctables_is_wf_0{store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_tabletype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $alloctables(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocfunc_is_wf: `%%%%%`(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocfunc_is_wf_0{store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)}: + `%%%%%`(store, deftype, funccode, moduleinst, ret_val) + -- wf_store: `%`(store) + -- wf_funccode: `%`(funccode) + -- wf_moduleinst: `%`(moduleinst) + -- if (ret_val = $allocfunc(store, deftype, funccode, moduleinst)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 +def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 + def $allocfuncs{s : store}(s, [], [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 + def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*}(s, [dt] ++ dt'#3*{dt'#3 <- `dt'*`}, [funccode] ++ funccode'#1*{funccode'#1 <- `funccode'*`}, [moduleinst] ++ moduleinst'#1*{moduleinst'#1 <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) + -- let{fa : funcaddr, s_1 : store} (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) + -- let{s_2 : store, `fa'*` : funcaddr*} (s_2, fa'#1*{fa'#1 <- `fa'*`}) = $allocfuncs(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}) + -- wf_store: `%`($allocfunc(s, dt, funccode, moduleinst).0) + -- wf_store: `%`($allocfuncs(s_1, dt'#5*{dt'#5 <- `dt'*`}, funccode'#3*{funccode'#3 <- `funccode'*`}, moduleinst'#3*{moduleinst'#3 <- `moduleinst'*`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation allocfuncs_is_wf: `%%%%%`(store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule allocfuncs_is_wf_0{store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)}: + `%%%%%`(store, var_0, var_1, var_2, ret_val) + -- wf_store: `%`(store) + -- (wf_funccode: `%`(var_1))*{var_1 <- var_1} + -- (wf_moduleinst: `%`(var_2))*{var_2 <- var_2} + -- if (ret_val = $allocfuncs(store, var_0, var_1, var_2)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte#2*{byte#2 <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- if (datainst = {BYTES byte#3*{byte#3 <- `byte*`}}) + -- wf_datainst: `%`({BYTES byte#4*{byte#4 <- `byte*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocdata_is_wf: `%%%%`(store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocdata_is_wf_0{store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)}: + `%%%%`(store, datatype, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocdata(store, datatype, var_0)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 +def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 + def $allocdatas{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 + def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**}(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#8*{b#8 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- let{da : dataaddr, s_1 : store} (s_1, da) = $allocdata(s, ok, b#9*{b#9 <- `b*`}) + -- let{s_2 : store, `da'*` : dataaddr*} (s_2, da'#1*{da'#1 <- `da'*`}) = $allocdatas(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}) + -- wf_store: `%`($allocdata(s, ok, b#10*{b#10 <- `b*`}).0) + -- wf_store: `%`($allocdatas(s_1, ok'#3*{ok'#3 <- `ok'*`}, b'#3*{b'#3 <- `b'*#3`}*{`b'*#3` <- `b'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation allocdatas_is_wf: `%%%%`(store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule allocdatas_is_wf_0{store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocdatas(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref#1*{ref#1 <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- if (eleminst = {TYPE elemtype, REFS ref#2*{ref#2 <- `ref*`}}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref#3*{ref#3 <- `ref*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocelem_is_wf: `%%%%`(store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocelem_is_wf_0{store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)}: + `%%%%`(store, elemtype, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_reftype: `%`(elemtype) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocelem(store, elemtype, var_0)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 +def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 + def $allocelems{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 + def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**}(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#4*{ref'#4 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + -- let{ea : elemaddr, s_1 : store} (s_1, ea) = $allocelem(s, rt, ref#5*{ref#5 <- `ref*`}) + -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'#1*{ea'#1 <- `ea'*`}) = $allocelems(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#5*{ref'#5 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}) + -- wf_store: `%`($allocelem(s, rt, ref#6*{ref#6 <- `ref*`}).0) + -- wf_store: `%`($allocelems(s_1, rt'#3*{rt'#3 <- `rt'*`}, ref'#6*{ref'#6 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`}).0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation allocelems_is_wf: `%%%%`(store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule allocelems_is_wf_0{store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_reftype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $allocelems(store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexport(moduleinst : moduleinst, export : export) : exportinst + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexport_is_wf: `%%%`(moduleinst : moduleinst, export : export, ret_val : exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexport_is_wf_0{moduleinst : moduleinst, export : export, ret_val : exportinst}: + `%%%`(moduleinst, export, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_export: `%`(export) + -- if (ret_val = $allocexport(moduleinst, export)) + -- wf_exportinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexports(moduleinst : moduleinst, export*) : exportinst* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export#3*{export#3 <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexports_is_wf: `%%%`(moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexports_is_wf_0{moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*}: + `%%%`(moduleinst, var_0, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- (wf_export: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocexports(moduleinst, var_0)) + -- (wf_exportinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `xi*` : exportinst*}(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}) = (s_7, moduleinst) + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#2*{type#2 <- `type*`}), `%`_list(import#2*{import#2 <- `import*`}), `%`_list(tag#2*{tag#2 <- `tag*`}), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list(func#3*{func#3 <- `func*`}), `%`_list(data#2*{data#2 <- `data*`}), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#4*{export#4 <- `export*`})) = module + -- if (tag#3*{tag#3 <- `tag*`} = TAG_tag(tagtype#78)*{tagtype#78 <- `tagtype*`}) + -- if (global#4*{global#4 <- `global*`} = GLOBAL_global(globaltype#122, expr_G#1)*{expr_G#1 <- `expr_G*`, globaltype#122 <- `globaltype*`}) + -- if (mem#4*{mem#4 <- `mem*`} = MEMORY_mem(memtype#122)*{memtype#122 <- `memtype*`}) + -- if (table#4*{table#4 <- `table*`} = TABLE_table(tabletype#156, expr_T#1)*{expr_T#1 <- `expr_T*`, tabletype#156 <- `tabletype*`}) + -- if (func#4*{func#4 <- `func*`} = FUNC_func(x#2, local#2*{local#2 <- `local*#82`}, expr_F#1)*{expr_F#1 <- `expr_F*`, `local*#82` <- `local**`, x#2 <- `x*`}) + -- if (data#3*{data#3 <- `data*`} = DATA_data(byte#5*{byte#5 <- `byte*#110`}, datamode#110)*{`byte*#110` <- `byte**`, datamode#110 <- `datamode*`}) + -- if (elem#4*{elem#4 <- `elem*`} = ELEM_elem(elemtype#1, expr_E#1*{expr_E#1 <- `expr_E*#1`}, elemmode#230)*{elemmode#230 <- `elemmode*`, elemtype#1 <- `elemtype*`, `expr_E*#1` <- `expr_E**`}) + -- let{`aa_I*` : tagaddr*} aa_I#1*{aa_I#1 <- `aa_I*`} = $tagsxa(externaddr#2*{externaddr#2 <- `externaddr*`}) + -- let{`ga_I*` : globaladdr*} ga_I#1*{ga_I#1 <- `ga_I*`} = $globalsxa(externaddr#3*{externaddr#3 <- `externaddr*`}) + -- let{`ma_I*` : memaddr*} ma_I#1*{ma_I#1 <- `ma_I*`} = $memsxa(externaddr#4*{externaddr#4 <- `externaddr*`}) + -- let{`ta_I*` : tableaddr*} ta_I#1*{ta_I#1 <- `ta_I*`} = $tablesxa(externaddr#5*{externaddr#5 <- `externaddr*`}) + -- let{`fa_I*` : funcaddr*} fa_I#1*{fa_I#1 <- `fa_I*`} = $funcsxa(externaddr#6*{externaddr#6 <- `externaddr*`}) + -- let{`dt*` : deftype*} dt#8*{dt#8 <- `dt*`} = $alloctypes(type#3*{type#3 <- `type*`}) + -- let{`fa*` : nat*} fa#1*{fa#1 <- `fa*`} = (|s.FUNCS_store| + i_F#1)^(i_F#1<|func#5*{func#5 <- `func*`}|){} + -- let{s_1 : store, `aa*` : tagaddr*} (s_1, aa#1*{aa#1 <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype#80, $typeuse_deftype(dt#9)*{dt#9 <- `dt*`})*{tagtype#80 <- `tagtype*`}) + -- let{s_2 : store, `ga*` : globaladdr*} (s_2, ga#1*{ga#1 <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype#124, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`})*{globaltype#124 <- `globaltype*`}, val_G#2*{val_G#2 <- `val_G*`}) + -- let{s_3 : store, `ma*` : memaddr*} (s_3, ma#1*{ma#1 <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype#124, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`})*{memtype#124 <- `memtype*`}) + -- let{s_4 : store, `ta*` : tableaddr*} (s_4, ta#1*{ta#1 <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype#158, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`})*{tabletype#158 <- `tabletype*`}, ref_T#2*{ref_T#2 <- `ref_T*`}) + -- let{s_5 : store, `da*` : dataaddr*} (s_5, da#1*{da#1 <- `da*`}) = $allocdatas(s_4, OK_datatype^|data#4*{data#4 <- `data*`}|{}, byte#6*{byte#6 <- `byte*#112`}*{`byte*#112` <- `byte**`}) + -- let{s_6 : store, `ea*` : elemaddr*} (s_6, ea#1*{ea#1 <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype#2, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`})*{elemtype#2 <- `elemtype*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}) + -- if ((s_7, fa#2*{fa#2 <- `fa*`}) = $allocfuncs(s_6, dt#14*{dt#14 <- `dt*`}[$proj_uN_0(x#3).0]*{x#3 <- `x*`}, FUNC_funccode(x#4, local#3*{local#3 <- `local*#84`}, expr_F#2)*{expr_F#2 <- `expr_F*`, `local*#84` <- `local**`, x#4 <- `x*`}, moduleinst^|func#6*{func#6 <- `func*`}|{})) + -- if (xi#1*{xi#1 <- `xi*`} = $allocexports({TYPES [], TAGS aa_I#2*{aa_I#2 <- `aa_I*`} ++ aa#2*{aa#2 <- `aa*`}, GLOBALS ga_I#2*{ga_I#2 <- `ga_I*`} ++ ga#2*{ga#2 <- `ga*`}, MEMS ma_I#2*{ma_I#2 <- `ma_I*`} ++ ma#2*{ma#2 <- `ma*`}, TABLES ta_I#2*{ta_I#2 <- `ta_I*`} ++ ta#2*{ta#2 <- `ta*`}, FUNCS fa_I#2*{fa_I#2 <- `fa_I*`} ++ fa#3*{fa#3 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#5*{export#5 <- `export*`})) + -- if (moduleinst = {TYPES dt#15*{dt#15 <- `dt*`}, TAGS aa_I#3*{aa_I#3 <- `aa_I*`} ++ aa#3*{aa#3 <- `aa*`}, GLOBALS ga_I#3*{ga_I#3 <- `ga_I*`} ++ ga#3*{ga#3 <- `ga*`}, MEMS ma_I#3*{ma_I#3 <- `ma_I*`} ++ ma#3*{ma#3 <- `ma*`}, TABLES ta_I#3*{ta_I#3 <- `ta_I*`} ++ ta#3*{ta#3 <- `ta*`}, FUNCS fa_I#3*{fa_I#3 <- `fa_I*`} ++ fa#4*{fa#4 <- `fa*`}, DATAS da#2*{da#2 <- `da*`}, ELEMS ea#2*{ea#2 <- `ea*`}, EXPORTS xi#2*{xi#2 <- `xi*`}}) + -- wf_store: `%`($alloctags(s, $subst_all_tagtype(tagtype#81, $typeuse_deftype(dt#16)*{dt#16 <- `dt*`})*{tagtype#81 <- `tagtype*`}).0) + -- (wf_typeuse: `%`($subst_all_tagtype(tagtype#82, $typeuse_deftype(dt#17)*{dt#17 <- `dt*`})))*{tagtype#82 <- `tagtype*`} + -- wf_store: `%`($allocglobals(s_1, $subst_all_globaltype(globaltype#125, $typeuse_deftype(dt#18)*{dt#18 <- `dt*`})*{globaltype#125 <- `globaltype*`}, val_G#3*{val_G#3 <- `val_G*`}).0) + -- (wf_globaltype: `%`($subst_all_globaltype(globaltype#126, $typeuse_deftype(dt#19)*{dt#19 <- `dt*`})))*{globaltype#126 <- `globaltype*`} + -- wf_store: `%`($allocmems(s_2, $subst_all_memtype(memtype#125, $typeuse_deftype(dt#20)*{dt#20 <- `dt*`})*{memtype#125 <- `memtype*`}).0) + -- (wf_memtype: `%`($subst_all_memtype(memtype#126, $typeuse_deftype(dt#21)*{dt#21 <- `dt*`})))*{memtype#126 <- `memtype*`} + -- wf_store: `%`($alloctables(s_3, $subst_all_tabletype(tabletype#159, $typeuse_deftype(dt#22)*{dt#22 <- `dt*`})*{tabletype#159 <- `tabletype*`}, ref_T#3*{ref_T#3 <- `ref_T*`}).0) + -- (wf_tabletype: `%`($subst_all_tabletype(tabletype#160, $typeuse_deftype(dt#23)*{dt#23 <- `dt*`})))*{tabletype#160 <- `tabletype*`} + -- wf_store: `%`($allocdatas(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#113`}*{`byte*#113` <- `byte**`}).0) + -- wf_store: `%`($allocelems(s_5, $subst_all_reftype(elemtype#3, $typeuse_deftype(dt#24)*{dt#24 <- `dt*`})*{elemtype#3 <- `elemtype*`}, ref_E#3*{ref_E#3 <- `ref_E*#3`}*{`ref_E*#3` <- `ref_E**`}).0) + -- (wf_reftype: `%`($subst_all_reftype(elemtype#4, $typeuse_deftype(dt#25)*{dt#25 <- `dt*`})))*{elemtype#4 <- `elemtype*`} + -- wf_store: `%`($allocfuncs(s_6, dt#26*{dt#26 <- `dt*`}[$proj_uN_0(x#5).0]*{x#5 <- `x*`}, FUNC_funccode(x#6, local#4*{local#4 <- `local*#85`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#85` <- `local**`, x#6 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}).0) + -- (wf_exportinst: `%`(iter#341))*{iter#341 <- $allocexports({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#6*{export#6 <- `export*`})} + -- wf_module: `%`(MODULE_module(`%`_list(type#4*{type#4 <- `type*`}), `%`_list(import#3*{import#3 <- `import*`}), `%`_list(tag#4*{tag#4 <- `tag*`}), `%`_list(global#5*{global#5 <- `global*`}), `%`_list(mem#5*{mem#5 <- `mem*`}), `%`_list(table#5*{table#5 <- `table*`}), `%`_list(func#8*{func#8 <- `func*`}), `%`_list(data#6*{data#6 <- `data*`}), `%`_list(elem#5*{elem#5 <- `elem*`}), start#4?{start#4 <- `start?`}, `%`_list(export#7*{export#7 <- `export*`}))) + -- (wf_tag: `%`(TAG_tag(tagtype#83)))*{tagtype#83 <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype#127, expr_G#2)))*{expr_G#2 <- `expr_G*`, globaltype#127 <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype#127)))*{memtype#127 <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype#161, expr_T#2)))*{expr_T#2 <- `expr_T*`, tabletype#161 <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x#7, local#5*{local#5 <- `local*#86`}, expr_F#4)))*{expr_F#4 <- `expr_F*`, `local*#86` <- `local**`, x#7 <- `x*`} + -- (wf_data: `%`(DATA_data(byte#8*{byte#8 <- `byte*#114`}, datamode#112)))*{`byte*#114` <- `byte**`, datamode#112 <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype#5, expr_E#2*{expr_E#2 <- `expr_E*#2`}, elemmode#232)))*{elemmode#232 <- `elemmode*`, elemtype#5 <- `elemtype*`, `expr_E*#2` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt#27*{dt#27 <- `dt*`}, TAGS aa_I#6*{aa_I#6 <- `aa_I*`} ++ aa#6*{aa#6 <- `aa*`}, GLOBALS ga_I#6*{ga_I#6 <- `ga_I*`} ++ ga#6*{ga#6 <- `ga*`}, MEMS ma_I#6*{ma_I#6 <- `ma_I*`} ++ ma#6*{ma#6 <- `ma*`}, TABLES ta_I#6*{ta_I#6 <- `ta_I*`} ++ ta#6*{ta#6 <- `ta*`}, FUNCS fa_I#6*{fa_I#6 <- `fa_I*`} ++ fa#7*{fa#7 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmodule_is_wf: `%%%%%%%`(store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmodule_is_wf_0{store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)}: + `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- (wf_ref: `%`(var_2))*{var_2 <- var_2} + -- (wf_ref: `%`(var_3))*{var_3 <- var_3}*{var_3 <- var_3} + -- if (ret_val = $allocmodule(store, module, var_0, var_1, var_2, var_3)) + -- wf_store: `%`(ret_val.0) + -- wf_moduleinst: `%`(ret_val.1) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $rundata_(dataidx : dataidx, data : data) : instr* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : uN, n : nat, `b*` : byte*}(x, DATA_data(b#11*{b#11 <- `b*`}, PASSIVE_datamode)) = [] + -- if (n = |`b*`|) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}(x, DATA_data(b#12*{b#12 <- `b*`}, ACTIVE_datamode(y, instr#9*{instr#9 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] + -- if (n = |`b*`|) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation rundata__is_wf: `%%%`(dataidx : dataidx, data : data, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule rundata__is_wf_0{dataidx : dataidx, data : data, ret_val : instr*}: + `%%%`(dataidx, data, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- wf_data: `%`(data) + -- if (ret_val = $rundata_(dataidx, data)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $runelem_(elemidx : elemidx, elem : elem) : instr* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e#1*{e#1 <- `e*`}, PASSIVE_elemmode)) = [] + -- if (n = |`e*`|) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*}(x, ELEM_elem(rt, e#2*{e#2 <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] + -- if (n = |`e*`|) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e#3*{e#3 <- `e*`}, ACTIVE_elemmode(y, instr#10*{instr#10 <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] + -- if (n = |`e*`|) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation runelem__is_wf: `%%%`(elemidx : elemidx, elem : elem, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule runelem__is_wf_0{elemidx : elemidx, elem : elem, ret_val : instr*}: + `%%%`(elemidx, elem, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- wf_elem: `%`(elem) + -- if (ret_val = $runelem_(elemidx, elem)) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.92 +def $evalexprs(state : state, expr*) : (state, ref*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.34 + def $evalexprs{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-165.46 + def $evalexprs{z : state, expr : instr*, `expr'*` : expr*, ref : ref, z' : state}(z, [expr] ++ expr'#1*{expr'#1 <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [$val_ref(ref)]) + -- let{z'' : state, `ref'*` : ref*} (z'', ref'#7*{ref'#7 <- `ref'*`}) = $evalexprs(z', expr'#2*{expr'#2 <- `expr'*`}) + -- wf_state: `%`(z') + -- wf_state: `%`($evalexprs(z', expr'#3*{expr'#3 <- `expr'*`}).0) + -- (wf_ref: `%`(iter#342))*{iter#342 <- $evalexprs(z', expr'#4*{expr'#4 <- `expr'*`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation evalexprs_is_wf: `%%%`(state : state, var_0 : expr*, ret_val : (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule evalexprs_is_wf_0{state : state, var_0 : expr*, ret_val : (state, ref*)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprs(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- ret_val.1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.1-167.96 +def $evalexprss(state : state, expr**) : (state, ref**) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:168.1-168.35 + def $evalexprss{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.1-172.49 + def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**}(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#5*{expr'#5 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- let{`ref*` : ref*, z' : state} (z', ref#7*{ref#7 <- `ref*`}) = $evalexprs(z, expr#366*{expr#366 <- `expr*`}) + -- let{z'' : state, `ref'**` : ref**} (z'', ref'#8*{ref'#8 <- `ref'*#4`}*{`ref'*#4` <- `ref'**`}) = $evalexprss(z', expr'#6*{expr'#6 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}) + -- wf_state: `%`($evalexprs(z, expr#367*{expr#367 <- `expr*`}).0) + -- (wf_ref: `%`(iter#343))*{iter#343 <- $evalexprs(z, expr#368*{expr#368 <- `expr*`}).1} + -- wf_state: `%`($evalexprss(z', expr'#7*{expr'#7 <- `expr'*#3`}*{`expr'*#3` <- `expr'**`}).0) + -- (wf_ref: `%`(iter#345))*{iter#345 <- iter#344}*{iter#344 <- $evalexprss(z', expr'#8*{expr'#8 <- `expr'*#4`}*{`expr'*#4` <- `expr'**`}).1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation evalexprss_is_wf: `%%%`(state : state, var_0 : expr**, ret_val : (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule evalexprss_is_wf_0{state : state, var_0 : expr**, ret_val : (state, ref**)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = $evalexprss(state, var_0)) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- ret_val.1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.1-174.111 +def $evalglobals(state : state, globaltype*, expr*) : (state, val*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:175.1-175.41 + def $evalglobals{z : state}(z, [], []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, val : val, z' : state}(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#9*{expr'#9 <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) + -- let{s : store, f : frame} `%;%`_state(s, f) = z' + -- let{s' : store, a : addr} (s', a) = $allocglobal(s, gt, val) + -- let{z'' : state, `val'*` : val*} (z'', val'#4*{val'#4 <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#10*{expr'#10 <- `expr'*`}) + -- wf_state: `%`(z') + -- wf_store: `%`($allocglobal(s, gt, val).0) + -- wf_state: `%`($evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#3*{gt'#3 <- `gt'*`}, expr'#11*{expr'#11 <- `expr'*`}).0) + -- (wf_val: `%`(iter#346))*{iter#346 <- $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#4*{gt'#4 <- `gt'*`}, expr'#12*{expr'#12 <- `expr'*`}).1} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation evalglobals_is_wf: `%%%%`(state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule evalglobals_is_wf_0{state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)}: + `%%%%`(state, var_0, var_1, ret_val) + -- wf_state: `%`(state) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_instr: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = $evalglobals(state, var_0, var_1)) + -- wf_state: `%`(ret_val.0) + -- (wf_val: `%`(iter))*{iter <- ret_val.1} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $instantiate(store : store, module : module, externaddr*) : config + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $instantiate{s : store, module : module, `externaddr*` : externaddr*, `xt_I*` : externtype*, `xt_E*` : externtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, i_D : nat, i_E : nat}(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I#1*{xt_I#1 <- `xt_I*`}, xt_E#1*{xt_E#1 <- `xt_E*`})) + -- (Externaddr_ok: `%|-%:%`(s, externaddr#8, xt_I#2))*{externaddr#8 <- `externaddr*`, xt_I#2 <- `xt_I*`} + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#5*{type#5 <- `type*`}), `%`_list(import#4*{import#4 <- `import*`}), `%`_list(tag#5*{tag#5 <- `tag*`}), `%`_list(global#6*{global#6 <- `global*`}), `%`_list(mem#6*{mem#6 <- `mem*`}), `%`_list(table#6*{table#6 <- `table*`}), `%`_list(func#9*{func#9 <- `func*`}), `%`_list(data#7*{data#7 <- `data*`}), `%`_list(elem#6*{elem#6 <- `elem*`}), start#5?{start#5 <- `start?`}, `%`_list(export#8*{export#8 <- `export*`})) = module + -- if (global#7*{global#7 <- `global*`} = GLOBAL_global(globaltype#129, expr_G#3)*{expr_G#3 <- `expr_G*`, globaltype#129 <- `globaltype*`}) + -- if (table#7*{table#7 <- `table*`} = TABLE_table(tabletype#163, expr_T#3)*{expr_T#3 <- `expr_T*`, tabletype#163 <- `tabletype*`}) + -- if (data#8*{data#8 <- `data*`} = DATA_data(byte#9*{byte#9 <- `byte*#118`}, datamode#116)*{`byte*#118` <- `byte**`, datamode#116 <- `datamode*`}) + -- if (elem#7*{elem#7 <- `elem*`} = ELEM_elem(reftype#516, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#516 <- `reftype*`}) + -- if (start#6?{start#6 <- `start?`} = START_start(x#8)?{x#8 <- `x?`}) + -- if (moduleinst_0 = {TYPES $alloctypes(type#6*{type#6 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#9*{externaddr#9 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#10*{externaddr#10 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#10*{func#10 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- let{z' : state, `val_G*` : val*} (z', val_G#4*{val_G#4 <- `val_G*`}) = $evalglobals(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#4*{expr_G#4 <- `expr_G*`}) + -- let{z'' : state, `ref_T*` : ref*} (z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = $evalexprs(z', expr_T#4*{expr_T#4 <- `expr_T*`}) + -- let{z''' : state, `ref_E**` : ref**} (z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = $evalexprss(z'', expr_E#4*{expr_E#4 <- `expr_E*#4`}*{`expr_E*#4` <- `expr_E**`}) + -- let{s''' : store, f : frame} `%;%`_state(s''', f) = z''' + -- let{s'''' : store, moduleinst : moduleinst} (s'''', moduleinst) = $allocmodule(s''', module, externaddr#11*{externaddr#11 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}) + -- let{`instr_D*` : instr*} instr_D#1*{instr_D#1 <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#1), data#10*{data#10 <- `data*`}[i_D#1])^(i_D#1<|data#9*{data#9 <- `data*`}|){}) + -- let{`instr_E*` : instr*} instr_E#1*{instr_E#1 <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#1), elem#9*{elem#9 <- `elem*`}[i_E#1])^(i_E#1<|elem#8*{elem#8 <- `elem*`}|){}) + -- let{`instr_S?` : instr?} instr_S#1?{instr_S#1 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`} + -- wf_state: `%`(z) + -- wf_state: `%`($evalglobals(z, globaltype#132*{globaltype#132 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}).0) + -- (wf_val: `%`(iter#347))*{iter#347 <- $evalglobals(z, globaltype#133*{globaltype#133 <- `globaltype*`}, expr_G#6*{expr_G#6 <- `expr_G*`}).1} + -- wf_state: `%`($evalexprs(z', expr_T#5*{expr_T#5 <- `expr_T*`}).0) + -- (wf_ref: `%`(iter#348))*{iter#348 <- $evalexprs(z', expr_T#6*{expr_T#6 <- `expr_T*`}).1} + -- wf_state: `%`($evalexprss(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}).0) + -- (wf_ref: `%`(iter#350))*{iter#350 <- iter#349}*{iter#349 <- $evalexprss(z'', expr_E#6*{expr_E#6 <- `expr_E*#6`}*{`expr_E*#6` <- `expr_E**`}).1} + -- wf_store: `%`($allocmodule(s''', module, externaddr#12*{externaddr#12 <- `externaddr*`}, val_G#6*{val_G#6 <- `val_G*`}, ref_T#6*{ref_T#6 <- `ref_T*`}, ref_E#6*{ref_E#6 <- `ref_E*#6`}*{`ref_E*#6` <- `ref_E**`}).0) + -- wf_moduleinst: `%`($allocmodule(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#7*{val_G#7 <- `val_G*`}, ref_T#7*{ref_T#7 <- `ref_T*`}, ref_E#7*{ref_E#7 <- `ref_E*#7`}*{`ref_E*#7` <- `ref_E**`}).1) + -- (wf_instr: `%`(iter#351))*{iter#351 <- $concat_(syntax instr, $rundata_(`%`_dataidx(i_D#2), data#12*{data#12 <- `data*`}[i_D#2])^(i_D#2<|data#11*{data#11 <- `data*`}|){})} + -- (wf_instr: `%`(iter#352))*{iter#352 <- $rundata_(`%`_dataidx(i_D#3), data#14*{data#14 <- `data*`}[i_D#3])}^(i_D#3<|data#13*{data#13 <- `data*`}|){} + -- (wf_instr: `%`(iter#353))*{iter#353 <- $concat_(syntax instr, $runelem_(`%`_elemidx(i_E#2), elem#11*{elem#11 <- `elem*`}[i_E#2])^(i_E#2<|elem#10*{elem#10 <- `elem*`}|){})} + -- (wf_instr: `%`(iter#354))*{iter#354 <- $runelem_(`%`_elemidx(i_E#3), elem#13*{elem#13 <- `elem*`}[i_E#3])}^(i_E#3<|elem#12*{elem#12 <- `elem*`}|){} + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I#3*{xt_I#3 <- `xt_I*`}, xt_E#2*{xt_E#2 <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(`%`_list(type#7*{type#7 <- `type*`}), `%`_list(import#5*{import#5 <- `import*`}), `%`_list(tag#6*{tag#6 <- `tag*`}), `%`_list(global#8*{global#8 <- `global*`}), `%`_list(mem#7*{mem#7 <- `mem*`}), `%`_list(table#8*{table#8 <- `table*`}), `%`_list(func#11*{func#11 <- `func*`}), `%`_list(data#15*{data#15 <- `data*`}), `%`_list(elem#14*{elem#14 <- `elem*`}), start#7?{start#7 <- `start?`}, `%`_list(export#9*{export#9 <- `export*`}))) + -- (wf_global: `%`(GLOBAL_global(globaltype#134, expr_G#7)))*{expr_G#7 <- `expr_G*`, globaltype#134 <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype#165, expr_T#7)))*{expr_T#7 <- `expr_T*`, tabletype#165 <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte#10*{byte#10 <- `byte*#120`}, datamode#118)))*{`byte*#120` <- `byte**`, datamode#118 <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype#518, expr_E#7*{expr_E#7 <- `expr_E*#7`}, elemmode#239)))*{elemmode#239 <- `elemmode*`, `expr_E*#7` <- `expr_E**`, reftype#518 <- `reftype*`} + -- (wf_start: `%`(START_start(x#10)))?{x#10 <- `x?`} + -- wf_moduleinst: `%`({TYPES $alloctypes(type#8*{type#8 <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr#14*{externaddr#14 <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr#15*{externaddr#15 <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#12*{func#12 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- wf_state: `%`(`%;%`_state(s''', f)) + -- (wf_uN: `%%`(32, `%`_uN(i_D#4)))^(i_D#4<|data#16*{data#16 <- `data*`}|){} + -- (wf_uN: `%%`(32, `%`_uN(i_E#4)))^(i_E#4<|elem#15*{elem#15 <- `elem*`}|){} + -- (wf_instr: `%`(CALL_instr(x#11)))?{x#11 <- `x?`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation instantiate_is_wf: `%%%%`(store : store, module : module, var_0 : externaddr*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule instantiate_is_wf_0{store : store, module : module, var_0 : externaddr*, ret_val : config}: + `%%%%`(store, module, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- if (ret_val = $instantiate(store, module, var_0)) + -- wf_config: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $invoke(store : store, funcaddr : funcaddr, val*) : config + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val#1*{val#1 <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))]) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1#4*{t_1#4 <- `t_1*`}), `%`_resulttype(t_2#4*{t_2#4 <- `t_2*`}))) + -- (Val_ok: `%|-%:%`(s, val#2, t_1#5))*{t_1#5 <- `t_1*`, val#2 <- `val*`} + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#6*{t_1#6 <- `t_1*`}), `%`_resulttype(t_2#5*{t_2#5 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation invoke_is_wf: `%%%%`(store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule invoke_is_wf_0{store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config}: + `%%%%`(store, funcaddr, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_val: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $invoke(store, funcaddr, var_0)) + -- wf_config: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax castop = (null?, null?) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax memidxop = (memidx, memarg) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax startopt = start* + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax code = (local*, expr) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax nopt = u32* + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +def $ieee_(N : N, rat : rat) : fNmag + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation ieee__is_wf: `%%%`(N : N, rat : rat, ret_val : fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule ieee__is_wf_0{N : N, rat : rat, ret_val : fNmag}: + `%%%`(N, rat, ret_val) + -- if (ret_val = $ieee_(N, rat)) + -- wf_fNmag: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax idctxt = +{ + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation wf_idctxt: `%`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) + -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} + -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} + -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} + -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} + -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} + -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} + -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} + -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} + -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} + -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax I = idctxt + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 +def $concat_idctxt(idctxt*) : idctxt + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 + def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 + def $concat_idctxt{I : idctxt, `I'*` : I*}([I] ++ I'#1*{I'#1 <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation concat_idctxt_is_wf: `%%`(var_0 : idctxt*, ret_val : idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule concat_idctxt_is_wf_0{var_0 : idctxt*, ret_val : idctxt}: + `%%`(var_0, ret_val) + -- (wf_idctxt: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $concat_idctxt(var_0)) + -- wf_idctxt: `%`(ret_val) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation Idctxt_ok: `|-%:OK`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule _{I : I, `field**` : char**}: + `|-%:OK`(I) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) + -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} + -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) + -- wf_idctxt: `%`(I) + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TYPES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TAGS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.GLOBALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.MEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TABLES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.FUNCS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.DATAS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.ELEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LOCALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LABELS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])}*{`field*` <- `field**`} + -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $dots : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +syntax decl = + | TYPE(rectype : rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype : memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx : funcidx) + | EXPORT(name : name, externidx : externidx) + +def $decl_data(data) : decl + def $decl_data{x0 : byte*, x1 : datamode}(DATA_data(x0, x1)) = DATA_decl(x0, x1) + +def $decl_elem(elem) : decl + def $decl_elem{x0 : reftype, x1 : expr*, x2 : elemmode}(ELEM_elem(x0, x1, x2)) = ELEM_decl(x0, x1, x2) + +def $decl_export(export) : decl + def $decl_export{x0 : name, x1 : externidx}(EXPORT_export(x0, x1)) = EXPORT_decl(x0, x1) + +def $decl_func(func) : decl + def $decl_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_decl(x0, x1, x2) + +def $decl_global(global) : decl + def $decl_global{x0 : globaltype, x1 : expr}(GLOBAL_global(x0, x1)) = GLOBAL_decl(x0, x1) + +def $decl_import(import) : decl + def $decl_import{x0 : name, x1 : name, x2 : externtype}(IMPORT_import(x0, x1, x2)) = IMPORT_decl(x0, x1, x2) + +def $decl_mem(mem) : decl + def $decl_mem{x0 : memtype}(MEMORY_mem(x0)) = MEMORY_decl(x0) + +def $decl_start(start) : decl + def $decl_start{x0 : funcidx}(START_start(x0)) = START_decl(x0) + +def $decl_table(table) : decl + def $decl_table{x0 : tabletype, x1 : expr}(TABLE_table(x0, x1)) = TABLE_decl(x0, x1) + +def $decl_tag(tag) : decl + def $decl_tag{x0 : tagtype}(TAG_tag(x0)) = TAG_decl(x0) + +def $decl_type(type) : decl + def $decl_type{x0 : rectype}(TYPE_type(x0)) = TYPE_decl(x0) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +relation wf_decl: `%`(decl) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_0{rectype : rectype}: + `%`(TYPE_decl(rectype)) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_1{name : name, name_0 : name, externtype : externtype}: + `%`(IMPORT_decl(name, name_0, externtype)) + -- wf_name: `%`(name) + -- wf_name: `%`(name_0) + -- wf_externtype: `%`(externtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_2{tagtype : tagtype}: + `%`(TAG_decl(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_3{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_decl(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_4{memtype : memtype}: + `%`(MEMORY_decl(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_5{tabletype : tabletype, expr : expr}: + `%`(TABLE_decl(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_6{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_decl(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_7{`byte*` : byte*, datamode : datamode}: + `%`(DATA_decl(`byte*`, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_8{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_decl(reftype, `expr*`, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_9{funcidx : funcidx}: + `%`(START_decl(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_10{name : name, externidx : externidx}: + `%`(EXPORT_decl(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 +def $typesd(decl*) : type* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 + def $typesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:271.1-271.48 + def $typesd{rectype : rectype, `decl'*` : decl*}([TYPE_decl(rectype)] ++ decl'#1*{decl'#1 <- `decl'*`}) = [TYPE_type(rectype)] ++ $typesd(decl'#2*{decl'#2 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:272.1-272.57 + def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#3*{decl'#3 <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 +def $importsd(decl*) : import* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 + def $importsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:275.1-275.56 + def $importsd{name : name, name_0 : name, externtype : externtype, `decl'*` : decl*}([IMPORT_decl(name, name_0, externtype)] ++ decl'#4*{decl'#4 <- `decl'*`}) = [IMPORT_import(name, name_0, externtype)] ++ $importsd(decl'#5*{decl'#5 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:276.1-276.61 + def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#6*{decl'#6 <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation importsd_is_wf: `%%`(var_0 : decl*, ret_val : import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule importsd_is_wf_0{var_0 : decl*, ret_val : import*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $importsd(var_0)) + -- (wf_import: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 +def $tagsd(decl*) : tag* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 + def $tagsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:279.1-279.44 + def $tagsd{tagtype : tagtype, `decl'*` : decl*}([TAG_decl(tagtype)] ++ decl'#7*{decl'#7 <- `decl'*`}) = [TAG_tag(tagtype)] ++ $tagsd(decl'#8*{decl'#8 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:280.1-280.55 + def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#9*{decl'#9 <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation tagsd_is_wf: `%%`(var_0 : decl*, ret_val : tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule tagsd_is_wf_0{var_0 : decl*, ret_val : tag*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tagsd(var_0)) + -- (wf_tag: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 +def $globalsd(decl*) : global* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 + def $globalsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:283.1-283.56 + def $globalsd{globaltype : globaltype, expr : expr, `decl'*` : decl*}([GLOBAL_decl(globaltype, expr)] ++ decl'#10*{decl'#10 <- `decl'*`}) = [GLOBAL_global(globaltype, expr)] ++ $globalsd(decl'#11*{decl'#11 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:284.1-284.61 + def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#12*{decl'#12 <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation globalsd_is_wf: `%%`(var_0 : decl*, ret_val : global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule globalsd_is_wf_0{var_0 : decl*, ret_val : global*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $globalsd(var_0)) + -- (wf_global: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 +def $memsd(decl*) : mem* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 + def $memsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:287.1-287.44 + def $memsd{memtype : memtype, `decl'*` : decl*}([MEMORY_decl(memtype)] ++ decl'#13*{decl'#13 <- `decl'*`}) = [MEMORY_mem(memtype)] ++ $memsd(decl'#14*{decl'#14 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:288.1-288.55 + def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#15*{decl'#15 <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation memsd_is_wf: `%%`(var_0 : decl*, ret_val : mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule memsd_is_wf_0{var_0 : decl*, ret_val : mem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $memsd(var_0)) + -- (wf_mem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 +def $tablesd(decl*) : table* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 + def $tablesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:291.1-291.52 + def $tablesd{tabletype : tabletype, expr : expr, `decl'*` : decl*}([TABLE_decl(tabletype, expr)] ++ decl'#16*{decl'#16 <- `decl'*`}) = [TABLE_table(tabletype, expr)] ++ $tablesd(decl'#17*{decl'#17 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:292.1-292.59 + def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#18*{decl'#18 <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation tablesd_is_wf: `%%`(var_0 : decl*, ret_val : table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule tablesd_is_wf_0{var_0 : decl*, ret_val : table*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $tablesd(var_0)) + -- (wf_table: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 +def $funcsd(decl*) : func* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 + def $funcsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:295.1-295.48 + def $funcsd{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*}([FUNC_decl(typeidx, `local*`, expr)] ++ decl'#19*{decl'#19 <- `decl'*`}) = [FUNC_func(typeidx, `local*`, expr)] ++ $funcsd(decl'#20*{decl'#20 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:296.1-296.57 + def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#21*{decl'#21 <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation funcsd_is_wf: `%%`(var_0 : decl*, ret_val : func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule funcsd_is_wf_0{var_0 : decl*, ret_val : func*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $funcsd(var_0)) + -- (wf_func: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 +def $datasd(decl*) : data* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 + def $datasd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:299.1-299.48 + def $datasd{`byte*` : byte*, datamode : datamode, `decl'*` : decl*}([DATA_decl(`byte*`, datamode)] ++ decl'#22*{decl'#22 <- `decl'*`}) = [DATA_data(`byte*`, datamode)] ++ $datasd(decl'#23*{decl'#23 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:300.1-300.57 + def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#24*{decl'#24 <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation datasd_is_wf: `%%`(var_0 : decl*, ret_val : data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule datasd_is_wf_0{var_0 : decl*, ret_val : data*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $datasd(var_0)) + -- (wf_data: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 +def $elemsd(decl*) : elem* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 + def $elemsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:303.1-303.48 + def $elemsd{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*}([ELEM_decl(reftype, `expr*`, elemmode)] ++ decl'#25*{decl'#25 <- `decl'*`}) = [ELEM_elem(reftype, `expr*`, elemmode)] ++ $elemsd(decl'#26*{decl'#26 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:304.1-304.57 + def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#27*{decl'#27 <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation elemsd_is_wf: `%%`(var_0 : decl*, ret_val : elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule elemsd_is_wf_0{var_0 : decl*, ret_val : elem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $elemsd(var_0)) + -- (wf_elem: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 +def $startsd(decl*) : start* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 + def $startsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:307.1-307.52 + def $startsd{funcidx : funcidx, `decl'*` : decl*}([START_decl(funcidx)] ++ decl'#28*{decl'#28 <- `decl'*`}) = [START_start(funcidx)] ++ $startsd(decl'#29*{decl'#29 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:308.1-308.59 + def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#30*{decl'#30 <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation startsd_is_wf: `%%`(var_0 : decl*, ret_val : start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule startsd_is_wf_0{var_0 : decl*, ret_val : start*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $startsd(var_0)) + -- (wf_start: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 +def $exportsd(decl*) : export* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 + def $exportsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:311.1-311.56 + def $exportsd{name : name, externidx : externidx, `decl'*` : decl*}([EXPORT_decl(name, externidx)] ++ decl'#31*{decl'#31 <- `decl'*`}) = [EXPORT_export(name, externidx)] ++ $exportsd(decl'#32*{decl'#32 <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:312.1-312.61 + def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'#33*{decl'#33 <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation exportsd_is_wf: `%%`(var_0 : decl*, ret_val : export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule exportsd_is_wf_0{var_0 : decl*, ret_val : export*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $exportsd(var_0)) + -- (wf_export: `%`(ret_val))*{ret_val <- ret_val} +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $ordered(decl*) : bool + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + def $ordered{`decl*` : decl*}(decl#1*{decl#1 <- `decl*`}) = true + -- if ($importsd(decl#2*{decl#2 <- `decl*`}) = []) + -- (wf_import: `%`(iter#355))*{iter#355 <- $importsd(decl#3*{decl#3 <- `decl*`})} + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + def $ordered{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*}(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}) = (((((($importsd(decl_1#7*{decl_1#7 <- `decl_1*`}) = []) /\ ($tagsd(decl_1#6*{decl_1#6 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1#5*{decl_1#5 <- `decl_1*`}) = [])) /\ ($memsd(decl_1#4*{decl_1#4 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1#3*{decl_1#3 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1#2*{decl_1#2 <- `decl_1*`}) = [])) + +;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec +relation Context_ok: `|-%:OK`(context) + ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec + rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `|-%:OK`(C) + -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (Deftype_ok: `%|-%:OK`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{dt_F <- `dt_F*`, t_1 <- `t_1*`, t_2 <- `t_2*`} + -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- `et*`} + -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- `lct*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt)])))*{rt <- `rt*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt')])))?{rt' <- `rt'?`} + -- (if ($proj_uN_0(x).0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} + -- wf_context: `%`(C) + -- wf_context: `%`(C_0) + -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (wf_context: `%`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + -- if (n = |`dt*`|) + -- if (m = |`st*`|) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Localval_ok: `%|-%:%`(store, val?, localtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule set{s : store, val : val, t : valtype}: + `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_val: `%`(val) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule unset{s : store}: + `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, BOT_valtype)) + -- wf_store: `%`(s) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, BOT_valtype)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Datainst_ok: `%|-%:%`(store, datainst, datatype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `b*` : byte*}: + `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) + -- wf_store: `%`(s) + -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + -- wf_store: `%`(s) + -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exportinst_ok: `%|-%:OK`(store, exportinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, nm : name, xa : externaddr, xt : externtype}: + `%|-%:OK`(s, {NAME nm, ADDR xa}) + -- Externaddr_ok: `%|-%:%`(s, xa, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_exportinst: `%`({NAME nm, ADDR xa}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `deftype*` : deftype*, `tagaddr*` : tagaddr*, `globaladdr*` : globaladdr*, `memaddr*` : memaddr*, `tableaddr*` : tableaddr*, `funcaddr*` : funcaddr*, `dataaddr*` : dataaddr*, `elemaddr*` : elemaddr*, `exportinst*` : exportinst*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `memtype*` : memtype*, `tabletype*` : tabletype*, `deftype_F*` : deftype*, `datatype*` : datatype*, `elemtype*` : elemtype*, `subtype*` : subtype*}: + `%|-%:%`(s, {TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}, {TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) + -- (Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, deftype))*{deftype <- `deftype*`} + -- (Externaddr_ok: `%|-%:%`(s, TAG_externaddr(tagaddr), TAG_externtype(tagtype)))*{tagaddr <- `tagaddr*`, tagtype <- `tagtype*`} + -- (Externaddr_ok: `%|-%:%`(s, GLOBAL_externaddr(globaladdr), GLOBAL_externtype(globaltype)))*{globaladdr <- `globaladdr*`, globaltype <- `globaltype*`} + -- (Externaddr_ok: `%|-%:%`(s, FUNC_externaddr(funcaddr), FUNC_externtype($typeuse_deftype(deftype_F))))*{deftype_F <- `deftype_F*`, funcaddr <- `funcaddr*`} + -- (Externaddr_ok: `%|-%:%`(s, MEM_externaddr(memaddr), MEM_externtype(memtype)))*{memaddr <- `memaddr*`, memtype <- `memtype*`} + -- (Externaddr_ok: `%|-%:%`(s, TABLE_externaddr(tableaddr), TABLE_externtype(tabletype)))*{tableaddr <- `tableaddr*`, tabletype <- `tabletype*`} + -- (Datainst_ok: `%|-%:%`(s, s.DATAS_store[dataaddr], datatype))*{dataaddr <- `dataaddr*`, datatype <- `datatype*`} + -- (Eleminst_ok: `%|-%:%`(s, s.ELEMS_store[elemaddr], elemtype))*{elemaddr <- `elemaddr*`, elemtype <- `elemtype*`} + -- (Exportinst_ok: `%|-%:OK`(s, exportinst))*{exportinst <- `exportinst*`} + -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) + -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} + -- wf_store: `%`(s) + -- wf_moduleinst: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}) + -- wf_context: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (wf_externtype: `%`(TAG_externtype(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_externtype: `%`(GLOBAL_externtype(globaltype)))*{globaltype <- `globaltype*`} + -- (wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_F))))*{deftype_F <- `deftype_F*`} + -- (wf_externtype: `%`(MEM_externtype(memtype)))*{memtype <- `memtype*`} + -- (wf_externtype: `%`(TABLE_externtype(tabletype)))*{tabletype <- `tabletype*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Frame_ok: `%|-%:%`(store, frame, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `val?*` : val?*, moduleinst : moduleinst, C : context, `lct*` : localtype*}: + `%|-%:%`(s, {LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}, C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) + -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) + -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:3.1-4.36 +relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:10.1-12.46 + rule plain{s : store, C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 + rule ref{s : store, C : context, ref : ref, rt : reftype}: + `%;%|-%:%`(s, C, $instr_ref(ref), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_ref: `%`(ref) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 + rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: + `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) + -- if (n = |`t'*`|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:23.1-26.37 + rule frame{s : store, C : context, n : n, f : frame, `instr*` : instr*, `t*` : valtype*, C' : context}: + `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) + -- Frame_ok: `%|-%:%`(s, f, C') + -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`})) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) + -- if (n = |`t*`|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 + rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 + rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRAP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 +relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 + rule empty{s : store, C : context}: + `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 + rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: + `%;%|-%:%`(s, C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- Instrs_ok2: `%;%|-%:%`(s, !($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`})), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_context: `%`(!($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:47.1-51.33 + rule sub{s : store, C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it') + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 + rule frame{s : store, C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 +relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:60.1-62.44 + rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, jt : tagtype}: + `%|-%:%`(s, {TYPE jt}, jt) + -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) + -- wf_store: `%`(s) + -- wf_taginst: `%`({TYPE jt}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `mut?` : mut?, t : valtype, val : val}: + `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Meminst_ok: `%|-%:%`(store, meminst, memtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, m : m, `b*` : byte*}: + `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) + -- wf_store: `%`(s) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, m : m, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- if (|ref*{ref <- `ref*`}| = n) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + -- wf_store: `%`(s) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) + -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, moduleinst : moduleinst, func : func, C : context, dt' : deftype}: + `%|-%:%`(s, {TYPE dt, MODULE moduleinst, CODE $funccode_func(func)}, dt) + -- Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt) + -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) + -- Func_ok: `%|-%:%`(C, func, dt') + -- Deftype_sub: `%|-%<:%`(C, dt', dt) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE $funccode_func(func)}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Structinst_ok: `%|-%:OK`(store, structinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, `fv*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} + -- wf_store: `%`(s) + -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, `fv*` : fieldval*, `mut?` : mut?, zt : storagetype}: + `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} + -- wf_store: `%`(s) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exninst_ok: `%|-%:OK`(store, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, ta : tagaddr, `val*` : val*, dt : deftype, `t*` : valtype*}: + `%|-%:OK`(s, {TAG ta, FIELDS val*{val <- `val*`}}) + -- if ($typeuse_deftype(dt) = s.TAGS_store[ta].TYPE_taginst) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} + -- wf_store: `%`(s) + -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:208.1-209.50 +relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:222.1-225.35 + rule trans{fv_1 : fieldval, s : store, fv_2 : fieldval, fv' : fieldval}: + `%>>_%%`(fv_1, s, fv_2) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv') + -- ImmutReachable: `%>>_%%`(fv', s, fv_2) + -- wf_fieldval: `%`(fv_1) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(fv_2) + -- wf_fieldval: `%`(fv') + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 + rule `ref.struct`{a : addr, s : store, i : nat, `ft*` : fieldtype*, zt : storagetype}: + `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) + -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:232.1-234.42 + rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: + `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) + -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 + rule `ref.exn`{a : addr, s : store, i : nat}: + `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, $fieldval_val(s.EXNS_store[a].FIELDS_exninst[i])) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 + rule `ref.extern`{ref : ref, s : store}: + `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, $fieldval_ref(ref)) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(ref)) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +def $NotImmutReachable(fieldval : fieldval, store : store, fieldval : fieldval) : bool + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = false + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = true + -- otherwise + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `~%>>_%%`(fv_1, s, fv_2) + -- if $NotImmutReachable(fv_1, s, fv_2) + -- wf_fieldval: `%`(fv_1) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Store_ok: `|-%:OK`(store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `taginst*` : taginst*, `tagtype*` : tagtype*, `globalinst*` : globalinst*, `globaltype*` : globaltype*, `meminst*` : meminst*, `memtype*` : memtype*, `tableinst*` : tableinst*, `tabletype*` : tabletype*, `deftype*` : deftype*, `funcinst*` : funcinst*, `datainst*` : datainst*, `datatype*` : datatype*, `eleminst*` : eleminst*, `elemtype*` : elemtype*, `structinst*` : structinst*, `arrayinst*` : arrayinst*, `exninst*` : exninst*}: + `|-%:OK`(s) + -- (Taginst_ok: `%|-%:%`(s, taginst, tagtype))*{taginst <- `taginst*`, tagtype <- `tagtype*`} + -- (Globalinst_ok: `%|-%:%`(s, globalinst, globaltype))*{globalinst <- `globalinst*`, globaltype <- `globaltype*`} + -- (Meminst_ok: `%|-%:%`(s, meminst, memtype))*{meminst <- `meminst*`, memtype <- `memtype*`} + -- (Tableinst_ok: `%|-%:%`(s, tableinst, tabletype))*{tableinst <- `tableinst*`, tabletype <- `tabletype*`} + -- (Funcinst_ok: `%|-%:%`(s, funcinst, deftype))*{deftype <- `deftype*`, funcinst <- `funcinst*`} + -- (Datainst_ok: `%|-%:%`(s, datainst, datatype))*{datainst <- `datainst*`, datatype <- `datatype*`} + -- (Eleminst_ok: `%|-%:%`(s, eleminst, elemtype))*{eleminst <- `eleminst*`, elemtype <- `elemtype*`} + -- (Structinst_ok: `%|-%:OK`(s, structinst))*{structinst <- `structinst*`} + -- (Arrayinst_ok: `%|-%:OK`(s, arrayinst))*{arrayinst <- `arrayinst*`} + -- (Exninst_ok: `%|-%:OK`(s, exninst))*{exninst <- `exninst*`} + -- (NotImmutReachable: `~%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, `REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + -- wf_store: `%`(s) + -- (wf_typeuse: `%`(tagtype))*{tagtype <- `tagtype*`} + -- (wf_globaltype: `%`(globaltype))*{globaltype <- `globaltype*`} + -- (wf_memtype: `%`(memtype))*{memtype <- `memtype*`} + -- (wf_tabletype: `%`(tabletype))*{tabletype <- `tabletype*`} + -- (wf_reftype: `%`(elemtype))*{elemtype <- `elemtype*`} + -- (wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- wf_store: `%`({TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_taginst: `%<=%`(taginst, taginst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{jt : tagtype}: + `%<=%`({TYPE jt}, {TYPE jt}) + -- wf_taginst: `%`({TYPE jt}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_globalinst: `%<=%`(globalinst, globalinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: + `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_meminst: `%<=%`(meminst, meminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, m : m, `b*` : byte*, n' : n, `b'*` : byte*}: + `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) + -- if (n <= n') + -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_tableinst: `%<=%`(tableinst, tableinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, m : m, rt : reftype, `ref*` : ref*, n' : n, `ref'*` : ref*}: + `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) + -- if (n <= n') + -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_funcinst: `%<=%`(funcinst, funcinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, mm : moduleinst, fc : funccode}: + `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) + -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_datainst: `%<=%`(datainst, datainst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`b*` : byte*, `b'*` : byte*}: + `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) + -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) + -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) + -- wf_datainst: `%`({BYTES b'*{b' <- `b'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_eleminst: `%<=%`(eleminst, eleminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: + `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) + -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) + -- wf_eleminst: `%`({TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_structinst: `%<=%`(structinst, structinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} + -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?` : mut?, zt : storagetype}: + `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_exninst: `%<=%`(exninst, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{ta : tagaddr, `val*` : val*}: + `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) + -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_store: `%<=%`(store, store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, s' : store}: + `%<=%`(s, s') + -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} + -- (Extend_globalinst: `%<=%`(s.GLOBALS_store[a], s'.GLOBALS_store[a]))^(a<|s.GLOBALS_store|){} + -- (Extend_meminst: `%<=%`(s.MEMS_store[a], s'.MEMS_store[a]))^(a<|s.MEMS_store|){} + -- (Extend_tableinst: `%<=%`(s.TABLES_store[a], s'.TABLES_store[a]))^(a<|s.TABLES_store|){} + -- (Extend_funcinst: `%<=%`(s.FUNCS_store[a], s'.FUNCS_store[a]))^(a<|s.FUNCS_store|){} + -- (Extend_datainst: `%<=%`(s.DATAS_store[a], s'.DATAS_store[a]))^(a<|s.DATAS_store|){} + -- (Extend_eleminst: `%<=%`(s.ELEMS_store[a], s'.ELEMS_store[a]))^(a<|s.ELEMS_store|){} + -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} + -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} + -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} + -- wf_store: `%`(s) + -- wf_store: `%`(s') + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation State_ok: `|-%:%`(state, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, C : context}: + `|-%:%`(`%;%`_state(s, f), C) + -- Store_ok: `|-%:OK`(s) + -- Frame_ok: `%|-%:%`(s, f, C) + -- wf_context: `%`(C) + -- wf_state: `%`(`%;%`_state(s, f)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Config_ok: `|-%:%`(config, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- (wf_valtype: `%`(t))*{t <- `t*`} + -- wf_context: `%`(C) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`})) + -- wf_state: `%`(`%;%`_state(s, f)) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax A = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax B = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax sym = + | _FIRST(A_1 : A) + | _DOTS + | _LAST(A_n : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax symsplit = + | _FIRST(A_1 : A) + | _LAST(A_2 : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax recorddots = () + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax record = +{ + FIELD_1 A, + FIELD_2 A, + `...` recorddots +} + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax pth = + | PTHSYNTAX + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +syntax T = nat + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremise: `%`(nat) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremisedots: `...` + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingScheme: `%`(nat) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec + rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: + `%`(conclusion) + -- NotationTypingPremise: `%`(premise_1) + -- NotationTypingPremise: `%`(premise_2) + -- NotationTypingPremisedots: `...` + -- NotationTypingPremise: `%`(premise_n) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 +relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 + rule `i32.add`{C : context}: + `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 + rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: + `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 + rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation NotationReduct: `~>%`(instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 3{q_1 : num_, q_5 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 4{q_6 : num_}: + `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $instrdots : instr* + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation instrdots_is_wf: `%`(ret_val : instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule instrdots_is_wf_0{ret_val : instr*}: + `%`(ret_val) + -- if (ret_val = $instrdots) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax label = + | `LABEL_%{%}`(n : n, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_label: `%`(label) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule label_case_0{n : n, `instr*` : instr*}: + `%`(`LABEL_%{%}`_label(n, `instr*`)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax callframe = + | `FRAME_%{%}`(n : n, frame : frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_callframe: `%`(callframe) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule callframe_case_0{n : n, frame : frame}: + `%`(`FRAME_%{%}`_callframe(n, frame)) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation allocX_is_wf(syntax X, syntax Y): `%%%%`(store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule allocX_is_wf_0{syntax X, syntax Y, store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)}: + `%%%%`(store, X_0, Y_0, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocX(syntax X, syntax Y, store, X_0, Y_0)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 +def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 + def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 + def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*}(syntax X, syntax Y, s, [X] ++ X'#1*{X'#1 <- `X'*`}, [Y] ++ Y'#1*{Y'#1 <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) + -- let{s_2 : store, `a'*` : addr*} (s_2, a'#1*{a'#1 <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'#2*{X'#2 <- `X'*`}, Y'#2*{Y'#2 <- `Y'*`}) + -- wf_store: `%`($allocX(syntax X, syntax Y, s, X, Y).0) + -- wf_store: `%`($allocXs(syntax X, syntax Y, s_1, X'#3*{X'#3 <- `X'*`}, Y'#3*{Y'#3 <- `Y'*`}).0) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 +relation allocXs_is_wf(syntax X, syntax Y): `%%%%`(store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 + rule allocXs_is_wf_0{syntax X, syntax Y, store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocXs(syntax X, syntax Y, store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +syntax symdots = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +relation wf_symdots: `%`(symdots) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + rule symdots_case_0{i : nat}: + `%`(`%`_symdots(i)) + -- if (i = 0) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +def $var(syntax X) : nat + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + def $var{syntax X}(syntax X) = 0 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax abbreviated = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax expanded = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax syntax = () + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bbyte : byte + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 +grammar BuN(N : N) : uN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 + prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) + -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 + prod{m : m, n : n} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 +grammar BsN(N : N) : sN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 + prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) + -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 + prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) + -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 + prod{i : sN, n : n} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * ($proj_sN_0(i).0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BiN(N : N) : iN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{i : sN} i:BsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BfN(N : N) : fN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu32 : u32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu64 : u64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bs33 : s33 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : sN} ``:BsN(33) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi32 : i32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi64 : i64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf32 : f32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : fN} ``:BfN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf64 : f64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : fN} ``:BfN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blist(syntax el, grammar BX : el) : el* + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bname : name + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{name : name, `b*` : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name + -- if ($utf8($proj_name_0(name).0) = b*{b <- `b*`}) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btypeidx : typeidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btagidx : tagidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bglobalidx : globalidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bmemidx : memidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btableidx : tableidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfuncidx : funcidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bdataidx : dataidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Belemidx : elemidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blocalidx : localidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfieldidx : fieldidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blabelidx : labelidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{l : labelidx} l:Bu32 => l + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bexternidx : externidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bnumtype : numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7C => F64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7D => F32_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7E => I64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7F => I32_numtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvectype : vectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7B => V128_vectype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Babsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x69 => EXN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6A => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6B => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6C => I31_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6D => EQ_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6E => ANY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6F => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x70 => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x71 => NONE_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x72 => NOEXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x73 => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x74 => NOEXN_heaptype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => ht + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) + -- if ($proj_sN_0(x33).0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Breftype : reftype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvaltype : valtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{nt : numtype} nt:Bnumtype => $valtype_numtype(nt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{vt : vectype} vt:Bvectype => $valtype_vectype(vt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{rt : reftype} rt:Breftype => $valtype_reftype(rt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bresulttype : resulttype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmut : mut? + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x00 => ?() + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x01 => ?(MUT_mut) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bpacktype : packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x77 => I16_packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x78 => I8_packtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bstoragetype : storagetype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{t : valtype} t:Bvaltype => $storagetype_valtype(t) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{pt : packtype} pt:Bpacktype => $storagetype_packtype(pt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bfieldtype : fieldtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bcomptype : comptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bsubtype : subtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Brectype : rectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Blimits : (addrtype, limits) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btagtype : tagtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bglobaltype : globaltype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmemtype : memtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btabletype : tabletype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bexterntype : externtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcastop : castop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x00 => (?(), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x01 => (?(NULL_null), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x02 => (?(), ?(NULL_null)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x03 => (?(NULL_null), ?(NULL_null)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bblocktype : blocktype + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x40 => _RESULT_blocktype(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx(($proj_sN_0(i).0 : int <:> nat))) + -- if ($proj_sN_0(i).0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcatch : catch + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bmemarg : memidxop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) + -- if (n < (2 ^ 6)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, n : n, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) + -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Blaneidx : laneidx + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} `%`_byte($proj_uN_0(l).0):Bbyte => `%`_laneidx($proj_uN_0(l).0) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 +grammar Binstr : instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 + prod 0x00 => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 + prod 0x01 => NOP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 + prod 0x1A => DROP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 + prod 0x1B => SELECT_instr(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 + prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 + prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 + prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 + prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 + prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 + prod 0x0A => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 + prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 + prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 + prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 + prod 0x0F => RETURN_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 + prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 + prod{x : idx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 + prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 + prod{x : idx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 + prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 + prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 + prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 + prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 + prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 + prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 + prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 + prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 + prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 + prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 + prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 + prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 + prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 + prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 + prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 + prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 + prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 + prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 + prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 + prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 + prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 + prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 + prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 + prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 + prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 + prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 + prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 + prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 + prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 + prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 + prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 + prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 + prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 + prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 + prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 + prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 + prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 + prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 + prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 + prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 + prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 + prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 + prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 + prod 0xD1 => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 + prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 + prod 0xD3 => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 + prod 0xD4 => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 + prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 + prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 + prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 + prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 + prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 + prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 + prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 + prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 + prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 + prod {{0xFB} {`%`_u32(15):Bu32}} => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 + prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 + prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 + prod {{0xFB} {`%`_u32(26):Bu32}} => `ANY.CONVERT_EXTERN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 + prod {{0xFB} {`%`_u32(27):Bu32}} => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 + prod {{0xFB} {`%`_u32(28):Bu32}} => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 + prod {{0xFB} {`%`_u32(29):Bu32}} => `I31.GET`_instr(S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 + prod {{0xFB} {`%`_u32(30):Bu32}} => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 + prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 + prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 + prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 + prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 + prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 + prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 + prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 + prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 + prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 + prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 + prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 + prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 + prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 + prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 + prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 + prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 + prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 + prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 + prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 + prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 + prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 + prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 + prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 + prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 + prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 + prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 + prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 + prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 + prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 + prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 + prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 + prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 + prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 + prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 + prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 + prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 + prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 + prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 + prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 + prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 + prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 + prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 + prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 + prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 + prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 + prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 + prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 + prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 + prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 + prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 + prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 + prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 + prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 + prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 + prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 + prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 + prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 + prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 + prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 + prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 + prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 + prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 + prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 + prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 + prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 + prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 + prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 + prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 + prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 + prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 + prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 + prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 + prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 + prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 + prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 + prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 + prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 + prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 + prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 + prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 + prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 + prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 + prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 + prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 + prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 + prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 + prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 + prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 + prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 + prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 + prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 + prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 + prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 + prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 + prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 + prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 + prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 + prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 + prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 + prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 + prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 + prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 + prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 + prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 + prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 + prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 + prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 + prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 + prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 + prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 + prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 + prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 + prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 + prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 + prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 + prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 + prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 + prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 + prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 + prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 + prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 + prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 + prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 + prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 + prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 + prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 + prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 + prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 + prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 + prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 + prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 + prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 + prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 + prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 + prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 + prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 + prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 + prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 + prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 + prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 + prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 + prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx($proj_uN_0(l).0)^16{l <- `l*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 + prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 + prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 + prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 + prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 + prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 + prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 + prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 + prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 + prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 + prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 + prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 + prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 + prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 + prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 + prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 + prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 + prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 + prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 + prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 + prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 + prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 + prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 + prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 + prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 + prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 + prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 + prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 + prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 + prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 + prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 + prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 + prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 + prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 + prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 + prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 + prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 + prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 + prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 + prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 + prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 + prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 + prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 + prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 + prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 + prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 + prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 + prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 + prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 + prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 + prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 + prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 + prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 + prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 + prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 + prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 + prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 + prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 + prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 + prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 + prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 + prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 + prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 + prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 + prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 + prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 + prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 + prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 + prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 + prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 + prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 + prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 + prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 + prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 + prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 + prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 + prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 + prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 + prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 + prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 + prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 + prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 + prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 + prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 + prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 + prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 + prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 + prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 + prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 + prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 + prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 + prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 + prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 + prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 + prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 + prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 + prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 + prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 + prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 + prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 + prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 + prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 + prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 + prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 + prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 + prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 + prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 + prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 + prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 + prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 + prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 + prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 + prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 + prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 + prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 + prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 + prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 + prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 + prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 + prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 + prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 + prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 + prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 + prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 + prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 + prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 + prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 + prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 + prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 + prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 + prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 + prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 + prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 + prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 + prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 + prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 + prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 + prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 + prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 + prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 + prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 + prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 + prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 + prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 + prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 + prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 + prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 + prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 + prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 + prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 + prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 + prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 + prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 + prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 + prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 + prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 + prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 + prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 + prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 + prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 + prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 + prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 + prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 + prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 + prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 + prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 + prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 + prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 + prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 + prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 + prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 + prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 + prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 + prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 + prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 + prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 + prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 + prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 + prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 + prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 + prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 + prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 + prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 + prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 + prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 + prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 + prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 + prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 + prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 + prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 + prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 + prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 + prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 + prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 + prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 + prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 + prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 + prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 + prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 + prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 + prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 + prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 + prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 + prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 + prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 + prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 + prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 + prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 + prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 + prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 + prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 + prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 + prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 + prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 + prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 + prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 + prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 + prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 + prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 + prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) +} + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bexpr : expr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`en*` : en*, len : nat} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} + -- if (len = 0) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod eps => [] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustom : ()* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{Bname} {Bbyte*{}}} => [] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustomsec : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btype : type + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{qt : rectype} qt:Brectype => TYPE_type(qt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btypesec : type* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimport : import + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimportsec : import* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfuncsec : typeidx* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btable : table + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [`REF.NULL`_instr(ht)]) + -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btablesec : table* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmem : mem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmemsec : mem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobal : global + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobalsec : global* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexport : export + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexportsec : export* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstart : start* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{x : idx} x:Bfuncidx => [START_start(x)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstartsec : start? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => !($opt_(syntax start, startopt)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemkind : reftype + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod 0x00 => REF_reftype(?(), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belem : elem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`y*` : idx*, e_o : expr} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], DECLARE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`e*` : expr*, e_O : expr} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e_O : expr} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemsec : elem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Blocals : local* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{t : valtype, n : n} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfunc : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) + -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcode : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{code : code, len : nat} {{`%`_u32(len):Bu32} {code:Bfunc}} => code + -- if (len = 0) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcodesec : code* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdata : data + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*, e : expr} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*, x : idx, e : expr} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatasec : data* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacnt : u32* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacntsec : u32? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => !($opt_(syntax u32, nopt)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btag : tag + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btagsec : tag* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmagic : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bversion : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmodule : module + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} + -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) + -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tchar : char + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tsource : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tchar*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TuNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TsNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TfNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x21 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x23 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x24 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x25 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x26 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x27 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2A => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2B => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2D => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3A => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3D => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x40 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x60 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7E => `%`_char(``) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x30 => 0 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x31 => 1 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x32 => 2 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x33 => 3 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x34 => 4 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x35 => 5 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x36 => 6 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x37 => 7 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x38 => 8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x39 => 9 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x41 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x42 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x43 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x44 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x45 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x46 => 15 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x61 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x62 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x63 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x64 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x65 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x66 => 15 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 +grammar Thexnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 + prod{h : nat} h:Thexdigit => h + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 + prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char} c:Tchar => c + -- if (((($proj_char_0(c).0 >= 32) /\ ($proj_char_0(c).0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\t" => `%`_char(9) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\n" => `%`_char(10) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\r" => `%`_char(13) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\"" => `%`_char(34) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\'" => `%`_char(39) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\\" => `%`_char(92) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) + -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringelem : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char} c:Tstringchar => $utf8([c]) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstring : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) + -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tname : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*, `b*` : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) + -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tid : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) + -- if (|c*{c <- `c*`}| > 0) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tkeyword : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Treserved : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Ttoken : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tkeyword => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TuNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TsNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TfNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : byte} [``]:Tstring => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tid => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x28 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x29 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Treserved => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tannotid : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tidchar+{} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tname => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 +grammar Tblockcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 + prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 +grammar Tblockchar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 + prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 + prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 + prod{`` : ()} ``:Tblockcomment => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Teof : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : text} ``:"" => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinechar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if (($proj_char_0(c).0 =/= 10) /\ ($proj_char_0(c).0 =/= 13)) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tnewline : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0A => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0D => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinecomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tlinecomment => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tblockcomment => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tformat : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tnewline => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x09 => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 +grammar Tspace : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 + prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 +grammar Tannot : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 + prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tsign : int + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod eps => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "+" => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "-" => - (1 : nat <:> int) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 +grammar Tnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 + prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TuN(N : N) : uN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} n:Tnum => `%`_uN(n) + -- if (n < (2 ^ N)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) + -- if (n < (2 ^ N)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TsN(N : N) : sN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TiN(N : N) : iN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{i : sN} i:TsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 +grammar Tfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 + prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 + prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 +grammar Thexfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 + prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 + prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfNmag(N : N) : fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Tfloat => $ieee_(N, q) + -- if ($ieee_(N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Thexfloat => $ieee_(N, q) + -- if ($ieee_(N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "inf" => INF_fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "nan" => NAN_fNmag($canon_(N)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + -- if ((1 <= n) /\ (n < (2 ^ !($signif(N))))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfN(N : N) : fN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti16 : u16 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(16) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf32 : f32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf64 : f64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlist(syntax el, grammar TX : el) : el* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} + -- if (|el*{el <- `el*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidx_(ids : name?*) : idx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} x:Tu32 => x + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx, id : name} id:Tid => x + -- if (ids[$proj_uN_0(x).0] = ?(id)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttypeidx_(I : I) : typeidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttagidx_(I : I) : tagidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tglobalidx_(I : I) : globalidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmemidx_(I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttableidx_(I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfuncidx_(I : I) : funcidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdataidx_(I : I) : dataidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Telemidx_(I : I) : elemidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlocalidx_(I : I) : localidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlabelidx_(I : I) : labelidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfieldidx__(I : I, x : idx) : fieldidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.FIELDS_I[$proj_uN_0(x).0]) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Texternidx_(I : I) : externidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnumtype : numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f32" => F32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f64" => F64_numtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvectype : vectype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "v128" => V128_vectype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tabsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "any" => ANY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "eq" => EQ_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i31" => I31_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "struct" => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "array" => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "none" => NONE_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "func" => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "nofunc" => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "exn" => EXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noexn" => NOEXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "extern" => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noextern" => NOEXTERN_heaptype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Theaptype_(I : I) : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ht : heaptype} ht:Tabsheaptype => ht + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnull : null + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "null" => NULL_null + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Treftype_(I : I) : reftype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvaltype_(I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{nt : numtype} nt:Tnumtype => $valtype_numtype(nt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{vt : vectype} vt:Tvectype => $valtype_vectype(vt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{rt : reftype} rt:Treftype_(I) => $valtype_reftype(rt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tpacktype : packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i8" => I8_packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i16" => I16_packtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tstoragetype_(I : I) : storagetype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(I) => $storagetype_valtype(t) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{pt : packtype} pt:Tpacktype => $storagetype_packtype(pt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfieldtype_(I : I) : fieldtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfield_(I : I) : (fieldtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft : fieldtype, `id?` : char?} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tparam_(I : I) : (valtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype, `id?` : char?} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tresult_(I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tcomptype_(I : I) : (comptype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfinal : final + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "final" => FINAL_final + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tsubtype_(I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypedef_(I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{st : subtype, I' : I, `id?` : char?} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Trectype_(I : I) : (rectype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Taddrtype : addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_addrtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tlimits : limits + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypeuse_(I : I) : (typeidx, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') + -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') + -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) + -- Idctxt_ok: `|-%:OK`(I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttagtype_(I : I) : tagtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tglobaltype_(I : I) : globaltype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tmemtype_(I : I) : memtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttabletype_(I : I) : tabletype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Texterntype_(I : I) : (externtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{gt : globaltype, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{tt : tabletype, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, `id?` : char?, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlabel_(I : I) : (name?, I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) + -- if ~ (?(id) <- I.LABELS_I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[$proj_uN_0(x).0] = ?()]) + -- if (?(id) = I.LABELS_I[$proj_uN_0(x).0]) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tblocktype_(I : I) : blocktype + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tcatch_(I : I) : catch + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tfoldedinstr_(I : I) : instr* + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlaneidx : laneidx + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : u8} i:Tu8 => i + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Talign_(N : N) : u32 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{n : n, m : m} {{"align="} {`%`_u64(m):Tu64}} => `%`_u32(n) + -- if (m = (2 ^ n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u32(N) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Toffset : u64 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{m : m} {{"offset="} {`%`_u64(m):Tu64}} => `%`_u64(m) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u64(0) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tmemarg_(N : N) : memarg + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{n : n, m : m} {{`%`_u32(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tplaininstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "unreachable" => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "nop" => NOP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "drop" => DROP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "return" => RETURN_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "throw_ref" => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.is_null" => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.as_non_null" => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.eq" => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.i31" => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_s" => `I31.GET`_instr(S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_u" => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "array.len" => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "any.convert_extern" => `ANY.CONVERT_EXTERN`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "extern.convert_any" => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_dot_i8x16_i7x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_dot_i8x16_i7x16_add_s" => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2)) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 +grammar Tinstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 + prod{in : instr} in:Tplaininstr_(I) => in + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 + prod{in : instr} in:Tblockinstr_(I) => in + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 +grammar Tinstrs_(I : I) : instr* + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 + prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 + prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 +grammar Tblockinstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) +} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Texpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttype_(I : I) : (type, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') + -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) + -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tglobal_(I : I) : (global, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmem_(I : I) : (mem, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttable_(I : I) : (table, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tlocal_(I : I) : (local*, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{t : valtype, `id?` : char?} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tfunc_(I : I) : (func, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) + -- Idctxt_ok: `|-%:OK`(I') + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatastring : byte* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmemuse_(I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Toffset_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdata_(I : I) : (data, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemexpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemlist_(I : I) : (reftype, expr*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttableuse_(I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telem_(I : I) : (elem, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tstart_(I : I) : (start, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timport_(I : I) : (import, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texport_(I : I) : (export, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttagdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobaldots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmemdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttabledots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfuncdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttag_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobal_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmem_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfunc_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatamem_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemtable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecl_(I : I) : (decl, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (type, idctxt)} ``:Ttype_(I) => ($decl_type(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (import, idctxt)} ``:Timport_(I) => ($decl_import(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (tag, idctxt)} ``:Ttag_(I) => ($decl_tag(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (global, idctxt)} ``:Tglobal_(I) => ($decl_global(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (mem, idctxt)} ``:Tmem_(I) => ($decl_mem(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (table, idctxt)} ``:Ttable_(I) => ($decl_table(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (func, idctxt)} ``:Tfunc_(I) => ($decl_func(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (data, idctxt)} ``:Tdata_(I) => ($decl_data(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (elem, idctxt)} ``:Telem_(I) => ($decl_elem(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (start, idctxt)} ``:Tstart_(I) => ($decl_start(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (export, idctxt)} ``:Texport_(I) => ($decl_export(``.0), ``.1) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmodule : module + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + -- if (I' = $concat_idctxt(I*{I <- `I*`})) + -- Idctxt_ok: `|-%:OK`(I') + -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) + -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) + -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) + -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) + -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) + -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) + -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) + -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) + -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) + -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) + -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) + -- if $ordered(decl*{decl <- `decl*`}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecldots_(I : I) : (decl, idctxt)* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bvar(syntax X) : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod 0x00 => ((), ()).1 + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsym : A + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod Bvar(syntax B) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsymsplit : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tvar(syntax X) : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod 0x00 => ((), ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsym : A + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod Tvar(syntax T) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsymsplit : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tabbrev : () + diff --git a/spectec/test-middlend/specification.exp/12-definition-to-relation.il b/spectec/test-middlend/specification.exp/12-definition-to-relation.il new file mode 100644 index 0000000000..562dfd2327 --- /dev/null +++ b/spectec/test-middlend/specification.exp/12-definition-to-relation.il @@ -0,0 +1,25207 @@ + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax N = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax M = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax K = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax n = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax m = nat + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +def $min(nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $min{i : nat, j : nat}(i, j) = (if (i <= j) then i else j) + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 +relation fun_sum: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_0: + `%%`([], 0) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'#1*{n'#1 <- `n'*`}, (n + var_0)) + -- fun_sum: `%%`(n'*{n' <- `n'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 +relation fun_prod: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_0: + `%%`([], 1) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'#2*{n'#2 <- `n'*`}, (n * var_0)) + -- fun_prod: `%%`(n'*{n' <- `n'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $opt_(syntax X, X*) : X?? + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X}(syntax X, []) = ?(?()) + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 +def $concat_(syntax X, X**) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 + def $concat_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 + def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w#1*{w#1 <- `w*`}] ++ w'#1*{w'#1 <- `w'*#1`}*{`w'*#1` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 +def $concatn_(syntax X, X**, nat : nat) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 + def $concatn_{syntax X, n : nat}(syntax X, [], n) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 + def $concatn_{syntax X, n : nat, `w*` : X*, `w'**` : X**}(syntax X, [w#2*{w#2 <- `w*`}] ++ w'#2*{w'#2 <- `w'*#2`}*{`w'*#2` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) + -- if (n = |`w*`|) + -- (if (n = |`w'*#2`|))*{`w'*#2` <- `w'**`} +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $concatopt_(syntax X, X?*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w#3?{w#3 <- `w?`}] ++ w'#3?{w'#3 <- `w'?#1`}*{`w'?#1` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concat_(syntax X, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concatn_(syntax X, nat : nat, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 +def $disjoint_(syntax X, X*) : bool + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 + def $disjoint_{syntax X}(syntax X, []) = true + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 + def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'#4*{w'#4 <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 +def $setminus1_(syntax X, X : X, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 + def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 + def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'#5*{w'#5 <- `w'*`}) = (if (w = w_1) then [] else $setminus1_(syntax X, w, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 +def $setminus_(syntax X, X*, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 + def $setminus_{syntax X, `w*` : X*}(syntax X, [], w#4*{w#4 <- `w*`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 + def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'#6*{w'#6 <- `w'*`}, w#5*{w#5 <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 +def $setproduct2_(syntax X, X : X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 + def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 + def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'#7*{w'#7 <- `w'*`}] ++ w#6*{w#6 <- `w*#1`}*{`w*#1` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 +def $setproduct1_(syntax X, X*, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 + def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w#7*{w#7 <- `w*#2`}*{`w*#2` <- `w**`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 + def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'#8*{w'#8 <- `w'*`}, w#8*{w#8 <- `w*#3`}*{`w*#3` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 +def $setproduct_(syntax X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 + def $setproduct_{syntax X}(syntax X, []) = [[]] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 + def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1#1*{w_1#1 <- `w_1*`}] ++ w#9*{w#9 <- `w*#4`}*{`w*#4` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) +} + +;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec +def $ND : bool + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax bit = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_bit: `%`(bit) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule bit_case_0{i : nat}: + `%`(`%`_bit(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax byte = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_byte_0(x : byte) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_byte_0{v_num_0 : nat}(`%`_byte(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_byte: `%`(byte) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule byte_case_0{i : nat}: + `%`(`%`_byte(i)) + -- if ((i >= 0) /\ (i <= 255)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax uN = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_uN_0(x : uN) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_uN_0{v_num_0 : nat}(`%`_uN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_uN: `%%`(N, uN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule uN_case_0{N : N, i : nat}: + `%%`(N, `%`_uN(i)) + -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax sN = + | `%`(i : int) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_sN_0(x : sN) : (int) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_sN_0{v_num_0 : int}(`%`_sN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_sN: `%%`(N, sN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule sN_case_0{N : N, i : int}: + `%%`(N, `%`_sN(i)) + -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax iN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u8 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u16 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u31 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u32 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u64 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax s33 = sN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i32 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i64 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i128 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $signif(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(32) = ?(23) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $expon(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(32) = ?(8) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $M(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $M{N : nat}(N) = !($signif(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $E(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $E{N : nat}(N) = !($expon(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax exp = int + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fNmag = + | NORM(m : m, exp : exp) + | SUBNORM(m : m) + | INF + | NAN(m : m) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fNmag: `%%`(N, fNmag) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_0{N : N, m : m, exp : exp}: + `%%`(N, NORM_fNmag(m, exp)) + -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_1{N : N, exp : exp, m : m}: + `%%`(N, SUBNORM_fNmag(m)) + -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_2{N : N}: + `%%`(N, INF_fNmag) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_3{N : N, m : m}: + `%%`(N, NAN_fNmag(m)) + -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fN = + | POS(fNmag) + | NEG(fNmag) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fN: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_0{N : N, var_0 : fNmag}: + `%%`(N, POS_fN(var_0)) + -- wf_fNmag: `%%`(N, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_1{N : N, var_0 : fNmag}: + `%%`(N, NEG_fN(var_0)) + -- wf_fNmag: `%%`(N, var_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f32 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f64 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fzero(N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fzero_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fzero_is_wf_0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fzero(N)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fnat(N : N, nat : nat) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fnat_is_wf: `%%%`(N : N, nat : nat, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fnat_is_wf_0{N : N, nat : nat, ret_val : fN}: + `%%%`(N, nat, ret_val) + -- if (ret_val = $fnat(N, nat)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fone(N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fone_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fone_is_wf_0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fone(N)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $canon_(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax vN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax v128 = vN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax list{syntax X}(syntax X) = + | `%`(`X*` : X*) + -- if (|X*{X <- `X*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_list_0(syntax X, x : list(syntax X)) : (X*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_list_0{syntax X, v_X_list_0 : X*}(syntax X, `%`_list(v_X_list_0)) = (v_X_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax char = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_char_0(x : char) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_char_0{v_num_0 : nat}(`%`_char(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_char: `%`(char) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule char_case_0{i : nat}: + `%`(`%`_char(i)) + -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +relation fun_cont: `%%`(byte, nat) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + rule fun_cont_case_0{b : byte}: + `%%`(b, ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat)) + -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation fun_utf8: `%%`(char*, byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_0{`ch*` : char*, `var_0*` : byte**}: + `%%`(ch#1*{ch#1 <- `ch*`}, $concat_(syntax byte, var_0*{var_0 <- `var_0*`})) + -- (fun_utf8: `%%`([ch], var_0))*{var_0 <- `var_0*`, ch <- `ch*`} + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_1{ch : char}: + `%%`([ch], [b]) + -- if ($proj_char_0(ch).0 < 128) + -- let{b : byte} b = `%`_byte($proj_char_0(ch).0) + -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: + `%%`([ch], [b_1 b_2]) + -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) + -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) + -- fun_cont: `%%`(b_2, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3]) + -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) + -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * var_0)) + var_1)) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_4{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, var_2 : nat, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3 b_4]) + -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) + -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * var_0)) + ((2 ^ 6) * var_1)) + var_2)) + -- fun_cont: `%%`(b_4, var_2) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation utf8_is_wf: `%%`(var_0 : char*, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule utf8_is_wf_0{var_0 : char*, ret_val : byte*, var_1 : byte*}: + `%%`(var_0, ret_val) + -- (wf_char: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + -- fun_utf8: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax name = + | `%`(`char*` : char*) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_name_0(x : name) : (char*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_name_0{v_char_list_0 : char*}(`%`_name(v_char_list_0)) = (v_char_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_name: `%`(name) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule name_case_0{`char*` : char*, var_0 : byte*}: + `%`(`%`_name(`char*`)) + -- (wf_char: `%`(char))*{char <- `char*`} + -- if (|var_0| < (2 ^ 32)) + -- fun_utf8: `%%`(char*{char <- `char*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax idx = u32 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax laneidx = u8 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax typeidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax funcidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax globalidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tableidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax memidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tagidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax elemidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax dataidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax labelidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax localidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fieldidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax externidx = + | FUNC(funcidx : funcidx) + | GLOBAL(globalidx : globalidx) + | TABLE(tableidx : tableidx) + | MEM(memidx : memidx) + | TAG(tagidx : tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_externidx: `%`(externidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_0{funcidx : funcidx}: + `%`(FUNC_externidx(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_1{globalidx : globalidx}: + `%`(GLOBAL_externidx(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_2{tableidx : tableidx}: + `%`(TABLE_externidx(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_3{memidx : memidx}: + `%`(MEM_externidx(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_4{tagidx : tagidx}: + `%`(TAG_externidx(tagidx)) + -- wf_uN: `%%`(32, tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 +relation fun_funcsxx: `%%`(externidx*, typeidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_1{x : uN, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([FUNC_externidx(x)] ++ xx#1*{xx#1 <- `xx*`}, [x] ++ var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([externidx] ++ xx#2*{xx#2 <- `xx*`}, var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 +relation fun_globalsxx: `%%`(externidx*, globalidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_1{x : uN, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([GLOBAL_externidx(x)] ++ xx#3*{xx#3 <- `xx*`}, [x] ++ var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([externidx] ++ xx#4*{xx#4 <- `xx*`}, var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 +relation fun_tablesxx: `%%`(externidx*, tableidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_1{x : uN, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([TABLE_externidx(x)] ++ xx#5*{xx#5 <- `xx*`}, [x] ++ var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([externidx] ++ xx#6*{xx#6 <- `xx*`}, var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 +relation fun_memsxx: `%%`(externidx*, memidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_1{x : uN, `xx*` : externidx*, var_0 : memidx*}: + `%%`([MEM_externidx(x)] ++ xx#7*{xx#7 <- `xx*`}, [x] ++ var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : memidx*}: + `%%`([externidx] ++ xx#8*{xx#8 <- `xx*`}, var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 +relation fun_tagsxx: `%%`(externidx*, tagidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_1{x : uN, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([TAG_externidx(x)] ++ xx#9*{xx#9 <- `xx*`}, [x] ++ var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([externidx] ++ xx#10*{xx#10 <- `xx*`}, var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax free = +{ + TYPES typeidx*, + FUNCS funcidx*, + GLOBALS globalidx*, + TABLES tableidx*, + MEMS memidx*, + ELEMS elemidx*, + DATAS dataidx*, + LOCALS localidx*, + LABELS labelidx*, + TAGS tagidx* +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_free: `%`(free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_case_{var_0 : typeidx*, var_1 : funcidx*, var_2 : globalidx*, var_3 : tableidx*, var_4 : memidx*, var_5 : elemidx*, var_6 : dataidx*, var_7 : localidx*, var_8 : labelidx*, var_9 : tagidx*}: + `%`({TYPES var_0, FUNCS var_1, GLOBALS var_2, TABLES var_3, MEMS var_4, ELEMS var_5, DATAS var_6, LOCALS var_7, LABELS var_8, TAGS var_9}) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_uN: `%%`(32, var_1))*{var_1 <- var_1} + -- (wf_uN: `%%`(32, var_2))*{var_2 <- var_2} + -- (wf_uN: `%%`(32, var_3))*{var_3 <- var_3} + -- (wf_uN: `%%`(32, var_4))*{var_4 <- var_4} + -- (wf_uN: `%%`(32, var_5))*{var_5 <- var_5} + -- (wf_uN: `%%`(32, var_6))*{var_6 <- var_6} + -- (wf_uN: `%%`(32, var_7))*{var_7 <- var_7} + -- (wf_uN: `%%`(32, var_8))*{var_8 <- var_8} + -- (wf_uN: `%%`(32, var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_opt(free?) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt{free : free}(?(free)) = free + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_opt_is_wf: `%%`(var_0 : free?, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_opt_is_wf_0{var_0 : free?, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))?{var_0 <- var_0} + -- if (ret_val = $free_opt(var_0)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation fun_free_list: `%%`(free*, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule fun_free_list_case_0: + `%%`([], {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule fun_free_list_case_1{free : free, `free'*` : free*, var_0 : free}: + `%%`([free] ++ free'#1*{free'#1 <- `free'*`}, free +++ var_0) + -- fun_free_list: `%%`(free'*{free' <- `free'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation free_list_is_wf: `%%`(var_0 : free*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule free_list_is_wf_0{var_0 : free*, ret_val : free, var_1 : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_free: `%`(ret_val) + -- fun_free_list: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_typeidx(typeidx : typeidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_typeidx_is_wf: `%%`(typeidx : typeidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_typeidx_is_wf_0{typeidx : typeidx, ret_val : free}: + `%%`(typeidx, ret_val) + -- wf_uN: `%%`(32, typeidx) + -- if (ret_val = $free_typeidx(typeidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_funcidx(funcidx : funcidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_funcidx_is_wf: `%%`(funcidx : funcidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_funcidx_is_wf_0{funcidx : funcidx, ret_val : free}: + `%%`(funcidx, ret_val) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $free_funcidx(funcidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_globalidx(globalidx : globalidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_globalidx_is_wf: `%%`(globalidx : globalidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_globalidx_is_wf_0{globalidx : globalidx, ret_val : free}: + `%%`(globalidx, ret_val) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $free_globalidx(globalidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tableidx(tableidx : tableidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tableidx_is_wf: `%%`(tableidx : tableidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tableidx_is_wf_0{tableidx : tableidx, ret_val : free}: + `%%`(tableidx, ret_val) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $free_tableidx(tableidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_memidx(memidx : memidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_memidx_is_wf: `%%`(memidx : memidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_memidx_is_wf_0{memidx : memidx, ret_val : free}: + `%%`(memidx, ret_val) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $free_memidx(memidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_elemidx(elemidx : elemidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_elemidx_is_wf: `%%`(elemidx : elemidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_elemidx_is_wf_0{elemidx : elemidx, ret_val : free}: + `%%`(elemidx, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- if (ret_val = $free_elemidx(elemidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_dataidx(dataidx : dataidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_dataidx_is_wf: `%%`(dataidx : dataidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_dataidx_is_wf_0{dataidx : dataidx, ret_val : free}: + `%%`(dataidx, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $free_dataidx(dataidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_localidx(localidx : localidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_localidx_is_wf: `%%`(localidx : localidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_localidx_is_wf_0{localidx : localidx, ret_val : free}: + `%%`(localidx, ret_val) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $free_localidx(localidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_labelidx(labelidx : labelidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_labelidx_is_wf: `%%`(labelidx : labelidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_labelidx_is_wf_0{labelidx : labelidx, ret_val : free}: + `%%`(labelidx, ret_val) + -- wf_uN: `%%`(32, labelidx) + -- if (ret_val = $free_labelidx(labelidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tagidx(tagidx : tagidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tagidx{tagidx : uN}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tagidx_is_wf: `%%`(tagidx : tagidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tagidx_is_wf_0{tagidx : tagidx, ret_val : free}: + `%%`(tagidx, ret_val) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $free_tagidx(tagidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_externidx(externidx : externidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{funcidx : uN}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{globalidx : uN}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_externidx_is_wf: `%%`(externidx : externidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_externidx_is_wf_0{externidx : externidx, ret_val : free}: + `%%`(externidx, ret_val) + -- wf_externidx: `%`(externidx) + -- if (ret_val = $free_externidx(externidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax null = + | NULL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax addrtype = + | I32 + | I64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax numtype = + | I32 + | I64 + | F32 + | F64 + +def $numtype_addrtype(addrtype) : numtype + def $numtype_addrtype(I32_addrtype) = I32_numtype + def $numtype_addrtype(I64_addrtype) = I64_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax vectype = + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax consttype = + | I32 + | I64 + | F32 + | F64 + | V128 + +def $consttype_numtype(numtype) : consttype + def $consttype_numtype(I32_numtype) = I32_consttype + def $consttype_numtype(I64_numtype) = I64_consttype + def $consttype_numtype(F32_numtype) = F32_consttype + def $consttype_numtype(F64_numtype) = F64_consttype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax absheaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax mut = + | MUT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax final = + | FINAL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 +syntax typeuse = + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 +syntax heaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 +syntax valtype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(`null?` : null?, heaptype : heaptype) + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 +syntax storagetype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(`null?` : null?, heaptype : heaptype) + | BOT + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 +syntax resulttype = list(syntax valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 +syntax fieldtype = + | `%%`(`mut?` : mut?, storagetype : storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 +syntax comptype = + | STRUCT(list(syntax fieldtype)) + | ARRAY(fieldtype : fieldtype) + | `FUNC%->%`(resulttype : resulttype, resulttype : resulttype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 +syntax subtype = + | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 +syntax rectype = + | REC(list(syntax subtype)) +} + +def $heaptype_absheaptype(absheaptype) : heaptype + def $heaptype_absheaptype(ANY_absheaptype) = ANY_heaptype + def $heaptype_absheaptype(EQ_absheaptype) = EQ_heaptype + def $heaptype_absheaptype(I31_absheaptype) = I31_heaptype + def $heaptype_absheaptype(STRUCT_absheaptype) = STRUCT_heaptype + def $heaptype_absheaptype(ARRAY_absheaptype) = ARRAY_heaptype + def $heaptype_absheaptype(NONE_absheaptype) = NONE_heaptype + def $heaptype_absheaptype(FUNC_absheaptype) = FUNC_heaptype + def $heaptype_absheaptype(NOFUNC_absheaptype) = NOFUNC_heaptype + def $heaptype_absheaptype(EXN_absheaptype) = EXN_heaptype + def $heaptype_absheaptype(NOEXN_absheaptype) = NOEXN_heaptype + def $heaptype_absheaptype(EXTERN_absheaptype) = EXTERN_heaptype + def $heaptype_absheaptype(NOEXTERN_absheaptype) = NOEXTERN_heaptype + def $heaptype_absheaptype(BOT_absheaptype) = BOT_heaptype + +def $valtype_addrtype(addrtype) : valtype + def $valtype_addrtype(I32_addrtype) = I32_valtype + def $valtype_addrtype(I64_addrtype) = I64_valtype + +def $storagetype_consttype(consttype) : storagetype + def $storagetype_consttype(I32_consttype) = I32_storagetype + def $storagetype_consttype(I64_consttype) = I64_storagetype + def $storagetype_consttype(F32_consttype) = F32_storagetype + def $storagetype_consttype(F64_consttype) = F64_storagetype + def $storagetype_consttype(V128_consttype) = V128_storagetype + +def $storagetype_numtype(numtype) : storagetype + def $storagetype_numtype(I32_numtype) = I32_storagetype + def $storagetype_numtype(I64_numtype) = I64_storagetype + def $storagetype_numtype(F32_numtype) = F32_storagetype + def $storagetype_numtype(F64_numtype) = F64_storagetype + +def $valtype_numtype(numtype) : valtype + def $valtype_numtype(I32_numtype) = I32_valtype + def $valtype_numtype(I64_numtype) = I64_valtype + def $valtype_numtype(F32_numtype) = F32_valtype + def $valtype_numtype(F64_numtype) = F64_valtype + +def $heaptype_typeuse(typeuse) : heaptype + def $heaptype_typeuse{x0 : typeidx}(_IDX_typeuse(x0)) = _IDX_heaptype(x0) + def $heaptype_typeuse{x0 : rectype, x1 : n}(_DEF_typeuse(x0, x1)) = _DEF_heaptype(x0, x1) + def $heaptype_typeuse{x0 : n}(REC_typeuse(x0)) = REC_heaptype(x0) + +def $storagetype_valtype(valtype) : storagetype + def $storagetype_valtype(I32_valtype) = I32_storagetype + def $storagetype_valtype(I64_valtype) = I64_storagetype + def $storagetype_valtype(F32_valtype) = F32_storagetype + def $storagetype_valtype(F64_valtype) = F64_storagetype + def $storagetype_valtype(V128_valtype) = V128_storagetype + def $storagetype_valtype{x0 : null?, x1 : heaptype}(REF_valtype(x0, x1)) = REF_storagetype(x0, x1) + def $storagetype_valtype(BOT_valtype) = BOT_storagetype + +def $storagetype_vectype(vectype) : storagetype + def $storagetype_vectype(V128_vectype) = V128_storagetype + +def $valtype_vectype(vectype) : valtype + def $valtype_vectype(V128_vectype) = V128_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 +relation wf_typeuse: `%`(typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_0{typeidx : typeidx}: + `%`(_IDX_typeuse(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_1{rectype : rectype, n : n}: + `%`(_DEF_typeuse(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_2{n : n}: + `%`(REC_typeuse(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 +relation wf_heaptype: `%`(heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_0: + `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_1: + `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_2: + `%`(I31_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_3: + `%`(STRUCT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_4: + `%`(ARRAY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_5: + `%`(NONE_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_6: + `%`(FUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_7: + `%`(NOFUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_8: + `%`(EXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_9: + `%`(NOEXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_10: + `%`(EXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_11: + `%`(NOEXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_12: + `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_13{typeidx : typeidx}: + `%`(_IDX_heaptype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_14{rectype : rectype, n : n}: + `%`(_DEF_heaptype(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_15{n : n}: + `%`(REC_heaptype(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 +relation wf_valtype: `%`(valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_0: + `%`(I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_1: + `%`(I64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_2: + `%`(F32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_3: + `%`(F64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_4: + `%`(V128_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_valtype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_6: + `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 +relation wf_storagetype: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_0: + `%`(I32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_4: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_storagetype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_6: + `%`(BOT_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_7: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_8: + `%`(I16_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 +relation wf_fieldtype: `%`(fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 + rule fieldtype_case_0{`mut?` : mut?, storagetype : storagetype}: + `%`(`%%`_fieldtype(`mut?`, storagetype)) + -- wf_storagetype: `%`(storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 +relation wf_comptype: `%`(comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_0{var_0 : list(syntax fieldtype)}: + `%`(STRUCT_comptype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_1{fieldtype : fieldtype}: + `%`(ARRAY_comptype(fieldtype)) + -- wf_fieldtype: `%`(fieldtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_2{resulttype : resulttype, resulttype_0 : resulttype}: + `%`(`FUNC%->%`_comptype(resulttype, resulttype_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 +relation wf_subtype: `%`(subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 + rule subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}: + `%`(SUB_subtype(`final?`, `typeuse*`, comptype)) + -- (wf_typeuse: `%`(typeuse))*{typeuse <- `typeuse*`} + -- wf_comptype: `%`(comptype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax deftype = + | _DEF(rectype : rectype, n : n) + +def $heaptype_deftype(deftype) : heaptype + def $heaptype_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_heaptype(x0, x1) + +def $typeuse_deftype(deftype) : typeuse + def $typeuse_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_typeuse(x0, x1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax typevar = + | _IDX(typeidx : typeidx) + | REC(n : n) + +def $typeuse_typevar(typevar) : typeuse + def $typeuse_typevar{x0 : typeidx}(_IDX_typevar(x0)) = _IDX_typeuse(x0) + def $typeuse_typevar{x0 : n}(REC_typevar(x0)) = REC_typeuse(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_typevar: `%`(typevar) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_0{typeidx : typeidx}: + `%`(_IDX_typevar(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_1{n : n}: + `%`(REC_typevar(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax reftype = + | REF(`null?` : null?, heaptype : heaptype) + +def $storagetype_reftype(reftype) : storagetype + def $storagetype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_storagetype(x0, x1) + +def $valtype_reftype(reftype) : valtype + def $valtype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_valtype(x0, x1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_reftype: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule reftype_case_0{`null?` : null?, heaptype : heaptype}: + `%`(REF_reftype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Inn = addrtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Fnn = + | F32 + | F64 + +def $numtype_Fnn(Fnn) : numtype + def $numtype_Fnn(F32_Fnn) = F32_numtype + def $numtype_Fnn(F64_Fnn) = F64_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Vnn = vectype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Cnn = + | I32 + | I64 + | F32 + | F64 + | V128 + +def $storagetype_Cnn(Cnn) : storagetype + def $storagetype_Cnn(I32_Cnn) = I32_storagetype + def $storagetype_Cnn(I64_Cnn) = I64_storagetype + def $storagetype_Cnn(F32_Cnn) = F32_storagetype + def $storagetype_Cnn(F64_Cnn) = F64_storagetype + def $storagetype_Cnn(V128_Cnn) = V128_storagetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ANYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ANYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ANYREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ANYREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EQREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EQREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EQREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EQREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $I31REF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation I31REF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule I31REF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $I31REF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $STRUCTREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation STRUCTREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule STRUCTREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $STRUCTREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ARRAYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ARRAYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ARRAYREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ARRAYREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation FUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule FUNCREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $FUNCREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXTERNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXTERNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLFUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLFUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLFUNCREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLFUNCREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXTERNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXTERNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax packtype = + | I8 + | I16 + +def $storagetype_packtype(packtype) : storagetype + def $storagetype_packtype(I8_packtype) = I8_storagetype + def $storagetype_packtype(I16_packtype) = I16_storagetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax lanetype = + | I32 + | I64 + | F32 + | F64 + | I8 + | I16 + +def $lanetype_Fnn(Fnn) : lanetype + def $lanetype_Fnn(F32_Fnn) = F32_lanetype + def $lanetype_Fnn(F64_Fnn) = F64_lanetype + +def $lanetype_addrtype(addrtype) : lanetype + def $lanetype_addrtype(I32_addrtype) = I32_lanetype + def $lanetype_addrtype(I64_addrtype) = I64_lanetype + +def $lanetype_numtype(numtype) : lanetype + def $lanetype_numtype(I32_numtype) = I32_lanetype + def $lanetype_numtype(I64_numtype) = I64_lanetype + def $lanetype_numtype(F32_numtype) = F32_lanetype + def $lanetype_numtype(F64_numtype) = F64_lanetype + +def $lanetype_packtype(packtype) : lanetype + def $lanetype_packtype(I8_packtype) = I8_lanetype + def $lanetype_packtype(I16_packtype) = I16_lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Pnn = packtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Jnn = + | I32 + | I64 + | I8 + | I16 + +def $lanetype_Jnn(Jnn) : lanetype + def $lanetype_Jnn(I32_Jnn) = I32_lanetype + def $lanetype_Jnn(I64_Jnn) = I64_lanetype + def $lanetype_Jnn(I8_Jnn) = I8_lanetype + def $lanetype_Jnn(I16_Jnn) = I16_lanetype + +def $Jnn_addrtype(addrtype) : Jnn + def $Jnn_addrtype(I32_addrtype) = I32_Jnn + def $Jnn_addrtype(I64_addrtype) = I64_Jnn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Lnn = lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax limits = + | `[%..%]`(u64 : u64, `u64?` : u64?) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_limits: `%`(limits) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule limits_case_0{u64 : u64, `u64?` : u64?}: + `%`(`[%..%]`_limits(u64, `u64?`)) + -- wf_uN: `%%`(64, u64) + -- (wf_uN: `%%`(64, u64))?{u64 <- `u64?`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tagtype = typeuse + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax globaltype = + | `%%`(`mut?` : mut?, valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_globaltype: `%`(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule globaltype_case_0{`mut?` : mut?, valtype : valtype}: + `%`(`%%`_globaltype(`mut?`, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax memtype = + | `%%PAGE`(addrtype : addrtype, limits : limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_memtype: `%`(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule memtype_case_0{addrtype : addrtype, limits : limits}: + `%`(`%%PAGE`_memtype(addrtype, limits)) + -- wf_limits: `%`(limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tabletype = + | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_tabletype: `%`(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype}: + `%`(`%%%`_tabletype(addrtype, limits, reftype)) + -- wf_limits: `%`(limits) + -- wf_reftype: `%`(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax datatype = + | OK + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax elemtype = reftype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax externtype = + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype) + | MEM(memtype : memtype) + | TABLE(tabletype : tabletype) + | FUNC(typeuse : typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_externtype: `%`(externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_0{tagtype : tagtype}: + `%`(TAG_externtype(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_1{globaltype : globaltype}: + `%`(GLOBAL_externtype(globaltype)) + -- wf_globaltype: `%`(globaltype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_2{memtype : memtype}: + `%`(MEM_externtype(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_3{tabletype : tabletype}: + `%`(TABLE_externtype(tabletype)) + -- wf_tabletype: `%`(tabletype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_4{typeuse : typeuse}: + `%`(FUNC_externtype(typeuse)) + -- wf_typeuse: `%`(typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax moduletype = + | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_moduletype: `%`(moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule moduletype_case_0{`externtype*` : externtype*, `externtype*_0` : externtype*}: + `%`(`%->%`_moduletype(`externtype*`, `externtype*_0`)) + -- (wf_externtype: `%`(externtype))*{externtype <- `externtype*`} + -- (wf_externtype: `%`(`externtype*_0`))*{`externtype*_0` <- `externtype*_0`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $IN(N : N) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FN(N : N) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $JN(N : N) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $size(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I64_numtype) = 64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F64_numtype) = 64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsize(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsize(V128_vectype) = 128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psize(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I8_packtype) = 8 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I16_packtype) = 16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsize(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I32_lanetype) = $size(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I64_lanetype) = $size(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F32_lanetype) = $size(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F64_lanetype) = $size(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I8_lanetype) = $psize(I8_packtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I16_lanetype) = $psize(I16_packtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $zsize(storagetype : storagetype) : nat? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I32_storagetype) = ?($size(I32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I64_storagetype) = ?($size(I64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F32_storagetype) = ?($size(F32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F64_storagetype) = ?($size(F64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I8_storagetype) = ?($psize(I8_packtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I16_storagetype) = ?($psize(I16_packtype)) + def $zsize{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $isize(Inn : Inn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $isize{Inn : addrtype}(Inn) = $size($numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsize(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsize{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $fsize(Fnn : Fnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $fsize{Fnn : Fnn}(Fnn) = $size($numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_isize(nat : nat) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(64) = ?(I64_Inn) + def $inv_isize{x0 : nat}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsize(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize{n : nat}(n) = $Jnn_addrtype(iter_val#1)?{iter_val#1 <- $inv_isize(n)} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_fsize(nat : nat) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(64) = ?(F64_Fnn) + def $inv_fsize{x0 : nat}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn1(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn1{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn2(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn2{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsizenn(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsizenn{vt : vectype}(vt) = $vsize(vt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psizenn(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psizenn{pt : packtype}(pt) = $psize(pt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn1(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn2(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsizenn(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsizenn{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsizenn(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn{n : nat}(n) = $inv_jsize(n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lunpack(lanetype : lanetype) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I32_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I64_lanetype) = I64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F32_lanetype) = F32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F64_lanetype) = F64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I8_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I16_lanetype) = I32_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $unpack(storagetype : storagetype) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(BOT_storagetype) = BOT_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack{`null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype)) = REF_valtype(`null?`, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(V128_storagetype) = V128_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(F64_storagetype) = F64_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(F32_storagetype) = F32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I64_storagetype) = I64_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I32_storagetype) = I32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I8_storagetype) = I32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I16_storagetype) = I32_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation unpack_is_wf: `%%`(storagetype : storagetype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule unpack_is_wf_0{storagetype : storagetype, ret_val : valtype}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $unpack(storagetype)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $nunpack(storagetype : storagetype) : numtype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I32_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I64_storagetype) = ?(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F32_storagetype) = ?(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F64_storagetype) = ?(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I8_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I16_storagetype) = ?(I32_numtype) + def $nunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vunpack(storagetype : storagetype) : vectype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vunpack(V128_storagetype) = ?(V128_vectype) + def $vunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $cunpack(storagetype : storagetype) : consttype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?(I64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?(F32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?(F64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(V128_storagetype) = ?(V128_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?($consttype_numtype($lunpack(I32_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?($consttype_numtype($lunpack(I64_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?($consttype_numtype($lunpack(F32_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?($consttype_numtype($lunpack(F64_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?($consttype_numtype($lunpack(I8_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?($consttype_numtype($lunpack(I16_lanetype))) + def $cunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size($numtype_addrtype(at_1)) <= $size($numtype_addrtype(at_2))) then at_1 else at_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $diffrt(reftype : reftype, reftype : reftype) : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#1?{null_1#1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#2?{null_1#2 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation diffrt_is_wf: `%%%`(reftype : reftype, reftype_0 : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule diffrt_is_wf_0{reftype : reftype, reftype_0 : reftype, ret_val : reftype}: + `%%%`(reftype, reftype_0, ret_val) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + -- if (ret_val = $diffrt(reftype, reftype_0)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $as_deftype(typeuse : typeuse) : deftype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = ?(_DEF_deftype(rectype, n)) + def $as_deftype{x0 : typeuse}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 +relation fun_tagsxt: `%%`(externtype*, tagtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_1{jt : typeuse, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([TAG_externtype(jt)] ++ xt#1*{xt#1 <- `xt*`}, [jt] ++ var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([externtype] ++ xt#2*{xt#2 <- `xt*`}, var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation fun_globalsxt: `%%`(externtype*, globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_1{gt : globaltype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([GLOBAL_externtype(gt)] ++ xt#3*{xt#3 <- `xt*`}, [gt] ++ var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([externtype] ++ xt#4*{xt#4 <- `xt*`}, var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation globalsxt_is_wf: `%%`(var_0 : externtype*, ret_val : globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule globalsxt_is_wf_0{var_0 : externtype*, ret_val : globaltype*, var_1 : globaltype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_globaltype: `%`(ret_val))*{ret_val <- ret_val} + -- fun_globalsxt: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation fun_memsxt: `%%`(externtype*, memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_1{mt : memtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([MEM_externtype(mt)] ++ xt#5*{xt#5 <- `xt*`}, [mt] ++ var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([externtype] ++ xt#6*{xt#6 <- `xt*`}, var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation memsxt_is_wf: `%%`(var_0 : externtype*, ret_val : memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule memsxt_is_wf_0{var_0 : externtype*, ret_val : memtype*, var_1 : memtype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_memtype: `%`(ret_val))*{ret_val <- ret_val} + -- fun_memsxt: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation fun_tablesxt: `%%`(externtype*, tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_1{tt : tabletype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([TABLE_externtype(tt)] ++ xt#7*{xt#7 <- `xt*`}, [tt] ++ var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([externtype] ++ xt#8*{xt#8 <- `xt*`}, var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation tablesxt_is_wf: `%%`(var_0 : externtype*, ret_val : tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule tablesxt_is_wf_0{var_0 : externtype*, ret_val : tabletype*, var_1 : tabletype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_tabletype: `%`(ret_val))*{ret_val <- ret_val} + -- fun_tablesxt: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 +relation fun_funcsxt: `%%`(externtype*, deftype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_1{rectype : rectype, n : n, `xt*` : externtype*, var_0 : deftype*}: + `%%`([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt#9*{xt#9 <- `xt*`}, [_DEF_deftype(rectype, n)] ++ var_0) + -- fun_funcsxt: `%%`(xt#10*{xt#10 <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : deftype*}: + `%%`([externtype] ++ xt#11*{xt#11 <- `xt*`}, var_0) + -- fun_funcsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_typevar_before_fun_subst_typevar_case_2: `%%%`(typevar, typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_typevar_case_1{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*, var_0 : typeuse?}: + `%%%`(tv, [tv_1] ++ tv'#1*{tv'#1 <- `tv'*`}, [tu_1] ++ tu'#1*{tu'#1 <- `tu'*`}) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%`(tv, [], []) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation fun_subst_typevar: `%%%%`(typevar, typevar*, typeuse*, typeuse?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%%`(tv, [], [], ?($typeuse_typevar(tv))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_1{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*, var_0 : typeuse?}: + `%%%%`(tv, [tv_1] ++ tv'#1*{tv'#1 <- `tv'*`}, [tu_1] ++ tu'#1*{tu'#1 <- `tu'*`}, (if (tv = tv_1) then tu_1 else iter_val#2)?{iter_val#2 <- var_0}) + -- fun_subst_typevar: `%%%%`(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_2{x0 : typevar, x1 : typevar*, x2 : typeuse*}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_subst_typevar_before_fun_subst_typevar_case_2: `%%%`(x0, x1, x2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation subst_typevar_is_wf: `%%%%`(typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule subst_typevar_is_wf_0{typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse, var_2 : typeuse?}: + `%%%%`(typevar, var_0, var_1, ret_val) + -- wf_typevar: `%`(typevar) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !(var_2)) + -- wf_typeuse: `%`(ret_val) + -- fun_subst_typevar: `%%%%`(typevar, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_minus_recs_before_fun_minus_recs_case_3: `%%`(typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_2 : (typevar*, typeuse*)?, var_1 : (typevar*, typeuse*)?, var_0 : (typevar*, typeuse*)?}: + `%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#2*{tv'#2 <- `tv'*`}, tu'#2*{tu'#2 <- `tu'*`}) = !(var_0) + -- (wf_typevar: `%`(iter#1))*{iter#1 <- !(var_1).0} + -- (wf_typeuse: `%`(iter#2))*{iter#2 <- !(var_2).1} + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%`([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_minus_recs_case_0: + `%%`([], []) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_0: + `%%%`([], [], ?(([], []))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%%`([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}, var_0) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_2 : (typevar*, typeuse*)?, var_1 : (typevar*, typeuse*)?, var_0 : (typevar*, typeuse*)?}: + `%%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}, ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}))) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#2*{tv'#2 <- `tv'*`}, tu'#2*{tu'#2 <- `tu'*`}) = !(var_0) + -- (wf_typevar: `%`(iter#1))*{iter#1 <- !(var_1).0} + -- (wf_typeuse: `%`(iter#2))*{iter#2 <- !(var_2).1} + -- fun_minus_recs: `%%%`(tv#5*{tv#5 <- `tv*`}, tu#5*{tu#5 <- `tu*`}, var_2) + -- fun_minus_recs: `%%%`(tv#4*{tv#4 <- `tv*`}, tu#4*{tu#4 <- `tu*`}, var_1) + -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_3{x0 : typevar*, x1 : typeuse*}: + `%%%`(x0, x1, ?()) + -- ~ fun_minus_recs_before_fun_minus_recs_case_3: `%%`(x0, x1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation minus_recs_is_wf: `%%%`(var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule minus_recs_is_wf_0{var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*), var_2 : (typevar*, typeuse*)?}: + `%%%`(var_0, var_1, ret_val) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !(var_2)) + -- (wf_typevar: `%`(iter))*{iter <- ret_val.0} + -- (wf_typeuse: `%`(iter))*{iter <- ret_val.1} + -- fun_minus_recs: `%%%`(var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv#6*{tv#6 <- `tv*`}, tu#6*{tu#6 <- `tu*`}) = pt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv#7*{tv#7 <- `tv*`}, tu#7*{tu#7 <- `tu*`}) = nt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv#8*{tv#8 <- `tv*`}, tu#8*{tu#8 <- `tu*`}) = vt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation fun_subst_typeuse: `%%%%`(typeuse, typevar*, typeuse*, typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(REC_typeuse(n), tv#9*{tv#9 <- `tv*`}, tu#9*{tu#9 <- `tu*`}, !(var_0)) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv#10*{tv#10 <- `tv*`}, tu#10*{tu#10 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(_IDX_typeuse(typeidx), tv#11*{tv#11 <- `tv*`}, tu#11*{tu#11 <- `tu*`}, !(var_0)) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv#12*{tv#12 <- `tv*`}, tu#12*{tu#12 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_typeuse(rectype, n), tv#13*{tv#13 <- `tv*`}, tu#13*{tu#13 <- `tu*`}, $typeuse_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv#14*{tv#14 <- `tv*`}, tu#14*{tu#14 <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation fun_subst_heaptype: `%%%%`(heaptype, typevar*, typeuse*, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(REC_heaptype(n), tv#15*{tv#15 <- `tv*`}, tu#15*{tu#15 <- `tu*`}, $heaptype_typeuse(!(var_0))) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv#16*{tv#16 <- `tv*`}, tu#16*{tu#16 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(_IDX_heaptype(typeidx), tv#17*{tv#17 <- `tv*`}, tu#17*{tu#17 <- `tu*`}, $heaptype_typeuse(!(var_0))) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv#18*{tv#18 <- `tv*`}, tu#18*{tu#18 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_heaptype(rectype, n), tv#19*{tv#19 <- `tv*`}, tu#19*{tu#19 <- `tu*`}, $heaptype_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_3{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}, ht) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule fun_subst_reftype_case_0{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : heaptype}: + `%%%%`(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#22*{tv#22 <- `tv*`}, tu#22*{tu#22 <- `tu*`}, REF_reftype(null?{null <- `null?`}, var_0)) + -- fun_subst_heaptype: `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation fun_subst_valtype: `%%%%`(valtype, typevar*, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_0{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I32_valtype, tv#23*{tv#23 <- `tv*`}, tu#23*{tu#23 <- `tu*`}, $valtype_numtype($subst_numtype(I32_numtype, tv#24*{tv#24 <- `tv*`}, tu#24*{tu#24 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_1{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I64_valtype, tv#25*{tv#25 <- `tv*`}, tu#25*{tu#25 <- `tu*`}, $valtype_numtype($subst_numtype(I64_numtype, tv#26*{tv#26 <- `tv*`}, tu#26*{tu#26 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_2{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F32_valtype, tv#27*{tv#27 <- `tv*`}, tu#27*{tu#27 <- `tu*`}, $valtype_numtype($subst_numtype(F32_numtype, tv#28*{tv#28 <- `tv*`}, tu#28*{tu#28 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_3{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F64_valtype, tv#29*{tv#29 <- `tv*`}, tu#29*{tu#29 <- `tu*`}, $valtype_numtype($subst_numtype(F64_numtype, tv#30*{tv#30 <- `tv*`}, tu#30*{tu#30 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_4{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(V128_valtype, tv#31*{tv#31 <- `tv*`}, tu#31*{tu#31 <- `tu*`}, $valtype_vectype($subst_vectype(V128_vectype, tv#32*{tv#32 <- `tv*`}, tu#32*{tu#32 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_5{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : reftype}: + `%%%%`(REF_valtype(`null?`, heaptype), tv#33*{tv#33 <- `tv*`}, tu#33*{tu#33 <- `tu*`}, $valtype_reftype(var_0)) + -- fun_subst_reftype: `%%%%`(REF_reftype(`null?`, heaptype), tv#34*{tv#34 <- `tv*`}, tu#34*{tu#34 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_6{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(BOT_valtype, tv#35*{tv#35 <- `tv*`}, tu#35*{tu#35 <- `tu*`}, BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation fun_subst_storagetype: `%%%%`(storagetype, typevar*, typeuse*, storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_0{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(BOT_storagetype, tv#36*{tv#36 <- `tv*`}, tu#36*{tu#36 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(BOT_valtype, tv#37*{tv#37 <- `tv*`}, tu#37*{tu#37 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_1{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(REF_storagetype(`null?`, heaptype), tv#38*{tv#38 <- `tv*`}, tu#38*{tu#38 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(REF_valtype(`null?`, heaptype), tv#39*{tv#39 <- `tv*`}, tu#39*{tu#39 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_2{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(V128_storagetype, tv#40*{tv#40 <- `tv*`}, tu#40*{tu#40 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(V128_valtype, tv#41*{tv#41 <- `tv*`}, tu#41*{tu#41 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_3{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F64_storagetype, tv#42*{tv#42 <- `tv*`}, tu#42*{tu#42 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F64_valtype, tv#43*{tv#43 <- `tv*`}, tu#43*{tu#43 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_4{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F32_storagetype, tv#44*{tv#44 <- `tv*`}, tu#44*{tu#44 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F32_valtype, tv#45*{tv#45 <- `tv*`}, tu#45*{tu#45 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_5{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I64_storagetype, tv#46*{tv#46 <- `tv*`}, tu#46*{tu#46 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I64_valtype, tv#47*{tv#47 <- `tv*`}, tu#47*{tu#47 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_6{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I32_storagetype, tv#48*{tv#48 <- `tv*`}, tu#48*{tu#48 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I32_valtype, tv#49*{tv#49 <- `tv*`}, tu#49*{tu#49 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_7{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I8_storagetype, tv#50*{tv#50 <- `tv*`}, tu#50*{tu#50 <- `tu*`}, $storagetype_packtype($subst_packtype(I8_packtype, tv#51*{tv#51 <- `tv*`}, tu#51*{tu#51 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_8{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I16_storagetype, tv#52*{tv#52 <- `tv*`}, tu#52*{tu#52 <- `tu*`}, $storagetype_packtype($subst_packtype(I16_packtype, tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation fun_subst_fieldtype: `%%%%`(fieldtype, typevar*, typeuse*, fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule fun_subst_fieldtype_case_0{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : storagetype}: + `%%%%`(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}, `%%`_fieldtype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_storagetype: `%%%%`(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_0{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_0*` : fieldtype*}: + `%%%%`(STRUCT_comptype(`%`_list(ft#1*{ft#1 <- `ft*`})), tv#55*{tv#55 <- `tv*`}, tu#55*{tu#55 <- `tu*`}, STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- (fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, ft <- `ft*`} + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_1{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : fieldtype}: + `%%%%`(ARRAY_comptype(ft), tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`}, ARRAY_comptype(var_0)) + -- fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_2{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : valtype*, `var_0*` : valtype*}: + `%%%%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}, `FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + -- (fun_subst_valtype: `%%%%`(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, t_2 <- `t_2*`} + -- (fun_subst_valtype: `%%%%`(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, t_1 <- `t_1*`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule fun_subst_subtype_case_0{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : comptype, `var_0*` : typeuse*}: + `%%%%`(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#3*{tu'#3 <- `tu'*`}, ct), tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}, SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) + -- fun_subst_comptype: `%%%%`(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- (fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, tu' <- `tu'*`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 +relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 + rule fun_subst_rectype_case_0{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, var_3 : (typevar*, typeuse*)?, var_2 : (typevar*, typeuse*)?, var_1 : (typevar*, typeuse*)?, `var_0*` : subtype*}: + `%%%%`(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}, REC_rectype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#3*{tv'#3 <- `tv'*`}, tu'#4*{tu'#4 <- `tu'*`}) = !(var_1) + -- (wf_typevar: `%`(iter#3))*{iter#3 <- !(var_2).0} + -- (wf_typeuse: `%`(iter#4))*{iter#4 <- !(var_3).1} + -- fun_minus_recs: `%%%`(tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`}, var_3) + -- fun_minus_recs: `%%%`(tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`}, var_2) + -- fun_minus_recs: `%%%`(tv#60*{tv#60 <- `tv*`}, tu#60*{tu#60 <- `tu*`}, var_1) + -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 +relation fun_subst_deftype: `%%%%`(deftype, typevar*, typeuse*, deftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 + rule fun_subst_deftype_case_0{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*, var_0 : rectype}: + `%%%%`(_DEF_deftype(qt, i), tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`}, _DEF_deftype(var_0, i)) + -- fun_subst_rectype: `%%%%`(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation subst_typeuse_is_wf: `%%%%`(typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule subst_typeuse_is_wf_0{typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse, var_2 : typeuse}: + `%%%%`(typeuse, var_0, var_1, ret_val) + -- wf_typeuse: `%`(typeuse) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_typeuse: `%`(ret_val) + -- fun_subst_typeuse: `%%%%`(typeuse, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation subst_heaptype_is_wf: `%%%%`(heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule subst_heaptype_is_wf_0{heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype, var_2 : heaptype}: + `%%%%`(heaptype, var_0, var_1, ret_val) + -- wf_heaptype: `%`(heaptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_heaptype: `%`(ret_val) + -- fun_subst_heaptype: `%%%%`(heaptype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation subst_reftype_is_wf: `%%%%`(reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule subst_reftype_is_wf_0{reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype, var_2 : reftype}: + `%%%%`(reftype, var_0, var_1, ret_val) + -- wf_reftype: `%`(reftype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_reftype: `%`(ret_val) + -- fun_subst_reftype: `%%%%`(reftype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation subst_valtype_is_wf: `%%%%`(valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule subst_valtype_is_wf_0{valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype, var_2 : valtype}: + `%%%%`(valtype, var_0, var_1, ret_val) + -- wf_valtype: `%`(valtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_valtype: `%`(ret_val) + -- fun_subst_valtype: `%%%%`(valtype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation subst_storagetype_is_wf: `%%%%`(storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule subst_storagetype_is_wf_0{storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype, var_2 : storagetype}: + `%%%%`(storagetype, var_0, var_1, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_storagetype: `%`(ret_val) + -- fun_subst_storagetype: `%%%%`(storagetype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation subst_fieldtype_is_wf: `%%%%`(fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule subst_fieldtype_is_wf_0{fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype, var_2 : fieldtype}: + `%%%%`(fieldtype, var_0, var_1, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_fieldtype: `%`(ret_val) + -- fun_subst_fieldtype: `%%%%`(fieldtype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation subst_comptype_is_wf: `%%%%`(comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule subst_comptype_is_wf_0{comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype, var_2 : comptype}: + `%%%%`(comptype, var_0, var_1, ret_val) + -- wf_comptype: `%`(comptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_comptype: `%`(ret_val) + -- fun_subst_comptype: `%%%%`(comptype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation subst_subtype_is_wf: `%%%%`(subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule subst_subtype_is_wf_0{subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype, var_2 : subtype}: + `%%%%`(subtype, var_0, var_1, ret_val) + -- wf_subtype: `%`(subtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_subtype: `%`(ret_val) + -- fun_subst_subtype: `%%%%`(subtype, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}) = at + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_tagtype: `%%%%`(tagtype, typevar*, typeuse*, tagtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_tagtype_case_0{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tagtype}: + `%%%%`(tu', tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}, var_0) + -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_globaltype: `%%%%`(globaltype, typevar*, typeuse*, globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_globaltype_case_0{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(`%%`_globaltype(mut#2?{mut#2 <- `mut?`}, t), tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}, `%%`_globaltype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_valtype: `%%%%`(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_globaltype_is_wf: `%%%%`(globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_globaltype_is_wf_0{globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype, var_2 : globaltype}: + `%%%%`(globaltype, var_0, var_1, ret_val) + -- wf_globaltype: `%`(globaltype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_globaltype: `%`(ret_val) + -- fun_subst_globaltype: `%%%%`(globaltype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv#67*{tv#67 <- `tv*`}, tu#67*{tu#67 <- `tu*`}) = `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_memtype_is_wf: `%%%%`(memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_memtype_is_wf_0{memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype}: + `%%%%`(memtype, var_0, var_1, ret_val) + -- wf_memtype: `%`(memtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_memtype(memtype, var_0, var_1)) + -- wf_memtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_tabletype: `%%%%`(tabletype, typevar*, typeuse*, tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_tabletype_case_0{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : reftype}: + `%%%%`(`%%%`_tabletype(at, lim, rt), tv#68*{tv#68 <- `tv*`}, tu#68*{tu#68 <- `tu*`}, `%%%`_tabletype(at, lim, var_0)) + -- fun_subst_reftype: `%%%%`(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_tabletype_is_wf: `%%%%`(tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_tabletype_is_wf_0{tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype, var_2 : tabletype}: + `%%%%`(tabletype, var_0, var_1, ret_val) + -- wf_tabletype: `%`(tabletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_tabletype: `%`(ret_val) + -- fun_subst_tabletype: `%%%%`(tabletype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_externtype: `%%%%`(externtype, typevar*, typeuse*, externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_0{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tagtype}: + `%%%%`(TAG_externtype(jt), tv#69*{tv#69 <- `tv*`}, tu#69*{tu#69 <- `tu*`}, TAG_externtype(var_0)) + -- fun_subst_tagtype: `%%%%`(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_1{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : globaltype}: + `%%%%`(GLOBAL_externtype(gt), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}, GLOBAL_externtype(var_0)) + -- fun_subst_globaltype: `%%%%`(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_2{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tabletype}: + `%%%%`(TABLE_externtype(tt), tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}, TABLE_externtype(var_0)) + -- fun_subst_tabletype: `%%%%`(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_3{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(MEM_externtype(mt), tv#72*{tv#72 <- `tv*`}, tu#72*{tu#72 <- `tu*`}, MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_4{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse}: + `%%%%`(FUNC_externtype(tu'), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}, FUNC_externtype(var_0)) + -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_externtype_is_wf: `%%%%`(externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_externtype_is_wf_0{externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype, var_2 : externtype}: + `%%%%`(externtype, var_0, var_1, ret_val) + -- wf_externtype: `%`(externtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_externtype: `%`(ret_val) + -- fun_subst_externtype: `%%%%`(externtype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_moduletype_case_0{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : externtype*, `var_0*` : externtype*}: + `%%%%`(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}, `%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) + -- (fun_subst_externtype: `%%%%`(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, xt_2 <- `xt_2*`} + -- (fun_subst_externtype: `%%%%`(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, xt_1 <- `xt_1*`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_moduletype_is_wf: `%%%%`(moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_moduletype_is_wf_0{moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype, var_2 : moduletype}: + `%%%%`(moduletype, var_0, var_1, ret_val) + -- wf_moduletype: `%`(moduletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_moduletype: `%`(ret_val) + -- fun_subst_moduletype: `%%%%`(moduletype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_all_valtype: `%%%`(valtype, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_all_valtype_case_0{t : valtype, n : nat, `tu*` : typeuse*, i : nat, var_0 : valtype}: + `%%%`(t, tu#75*{tu#75 <- `tu*`}, var_0) + -- if (n = |`tu*`|) + -- fun_subst_valtype: `%%%%`(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2), var_0 +++ var_1) + -- fun_free_resulttype: `%%`(resulttype_2, var_1) + -- fun_free_resulttype: `%%`(resulttype_1, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 +relation fun_free_subtype: `%%`(subtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 + rule fun_free_subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(SUB_subtype(final#2?{final#2 <- `final?`}, typeuse#1*{typeuse#1 <- `typeuse*`}, comptype), var_0 +++ var_2) + -- fun_free_comptype: `%%`(comptype, var_2) + -- (fun_free_typeuse: `%%`(typeuse, var_1))*{var_1 <- `var_1*`, typeuse <- `typeuse*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 +relation fun_free_rectype: `%%`(rectype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 + rule fun_free_rectype_case_0{`subtype*` : subtype*, `var_1*` : free*, var_0 : free}: + `%%`(REC_rectype(`%`_list(subtype#5*{subtype#5 <- `subtype*`})), var_0) + -- (fun_free_subtype: `%%`(subtype, var_1))*{var_1 <- `var_1*`, subtype <- `subtype*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 +relation fun_free_deftype: `%%`(deftype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 + rule fun_free_deftype_case_0{rectype : rectype, n : nat, var_0 : free}: + `%%`(_DEF_deftype(rectype, n), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:481.6-481.20 +relation free_heaptype_is_wf: `%%`(heaptype : heaptype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:481.6-481.20 + rule free_heaptype_is_wf_0{heaptype : heaptype, ret_val : free, var_0 : free}: + `%%`(heaptype, ret_val) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_heaptype: `%%`(heaptype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:482.6-482.19 +relation free_reftype_is_wf: `%%`(reftype : reftype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:482.6-482.19 + rule free_reftype_is_wf_0{reftype : reftype, ret_val : free, var_0 : free}: + `%%`(reftype, ret_val) + -- wf_reftype: `%`(reftype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.6-484.19 +relation free_typeuse_is_wf: `%%`(typeuse : typeuse, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.6-484.19 + rule free_typeuse_is_wf_0{typeuse : typeuse, ret_val : free, var_0 : free}: + `%%`(typeuse, ret_val) + -- wf_typeuse: `%`(typeuse) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_typeuse: `%%`(typeuse, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:485.6-485.19 +relation free_valtype_is_wf: `%%`(valtype : valtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:485.6-485.19 + rule free_valtype_is_wf_0{valtype : valtype, ret_val : free, var_0 : free}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_valtype: `%%`(valtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 +relation free_resulttype_is_wf: `%%`(resulttype : resulttype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 + rule free_resulttype_is_wf_0{resulttype : resulttype, ret_val : free, var_0 : free}: + `%%`(resulttype, ret_val) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_resulttype: `%%`(resulttype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 +relation free_storagetype_is_wf: `%%`(storagetype : storagetype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule free_storagetype_is_wf_0{storagetype : storagetype, ret_val : free, var_0 : free}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_storagetype: `%%`(storagetype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 +relation free_fieldtype_is_wf: `%%`(fieldtype : fieldtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 + rule free_fieldtype_is_wf_0{fieldtype : fieldtype, ret_val : free, var_0 : free}: + `%%`(fieldtype, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_fieldtype: `%%`(fieldtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 +relation free_comptype_is_wf: `%%`(comptype : comptype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 + rule free_comptype_is_wf_0{comptype : comptype, ret_val : free, var_0 : free}: + `%%`(comptype, ret_val) + -- wf_comptype: `%`(comptype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_comptype: `%%`(comptype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 +relation free_subtype_is_wf: `%%`(subtype : subtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 + rule free_subtype_is_wf_0{subtype : subtype, ret_val : free, var_0 : free}: + `%%`(subtype, ret_val) + -- wf_subtype: `%`(subtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_subtype: `%%`(subtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 +relation free_rectype_is_wf: `%%`(rectype : rectype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 + rule free_rectype_is_wf_0{rectype : rectype, ret_val : free, var_0 : free}: + `%%`(rectype, ret_val) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_rectype: `%%`(rectype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 +relation free_deftype_is_wf: `%%`(deftype : deftype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 + rule free_deftype_is_wf_0{deftype : deftype, ret_val : free, var_0 : free}: + `%%`(deftype, ret_val) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_deftype: `%%`(deftype, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_tagtype: `%%`(tagtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_tagtype_case_0{rectype : rectype, n : n, var_0 : free}: + `%%`(_DEF_tagtype(rectype, n), var_0) + -- fun_free_deftype: `%%`(_DEF_deftype(rectype, n), var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_tagtype_is_wf: `%%`(tagtype : tagtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_tagtype_is_wf_0{tagtype : tagtype, ret_val : free, var_0 : free}: + `%%`(tagtype, ret_val) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_tagtype: `%%`(tagtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_globaltype: `%%`(globaltype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_globaltype_case_0{`mut?` : mut?, valtype : valtype, var_0 : free}: + `%%`(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, valtype), var_0) + -- fun_free_valtype: `%%`(valtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_globaltype_is_wf: `%%`(globaltype : globaltype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_globaltype_is_wf_0{globaltype : globaltype, ret_val : free, var_0 : free}: + `%%`(globaltype, ret_val) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_globaltype: `%%`(globaltype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_memtype(memtype : memtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_memtype_is_wf: `%%`(memtype : memtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_memtype_is_wf_0{memtype : memtype, ret_val : free}: + `%%`(memtype, ret_val) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $free_memtype(memtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_tabletype: `%%`(tabletype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype, var_0 : free}: + `%%`(`%%%`_tabletype(addrtype, limits, reftype), $free_addrtype(addrtype) +++ var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_tabletype_is_wf: `%%`(tabletype : tabletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_tabletype_is_wf_0{tabletype : tabletype, ret_val : free, var_0 : free}: + `%%`(tabletype, ret_val) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_tabletype: `%%`(tabletype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_datatype(datatype : datatype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_datatype_is_wf: `%%`(datatype : datatype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_datatype_is_wf_0{datatype : datatype, ret_val : free}: + `%%`(datatype, ret_val) + -- if (ret_val = $free_datatype(datatype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_elemtype: `%%`(elemtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_elemtype_case_0{reftype : reftype, var_0 : free}: + `%%`(reftype, var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_elemtype_is_wf: `%%`(elemtype : elemtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_elemtype_is_wf_0{elemtype : elemtype, ret_val : free, var_0 : free}: + `%%`(elemtype, ret_val) + -- wf_reftype: `%`(elemtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_elemtype: `%%`(elemtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_externtype: `%%`(externtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_externtype(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_1{globaltype : globaltype, var_0 : free}: + `%%`(GLOBAL_externtype(globaltype), var_0) + -- fun_free_globaltype: `%%`(globaltype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_2{memtype : memtype}: + `%%`(MEM_externtype(memtype), $free_memtype(memtype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_3{tabletype : tabletype, var_0 : free}: + `%%`(TABLE_externtype(tabletype), var_0) + -- fun_free_tabletype: `%%`(tabletype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_4{typeuse : typeuse, var_0 : free}: + `%%`(FUNC_externtype(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_externtype_is_wf: `%%`(externtype : externtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_externtype_is_wf_0{externtype : externtype, ret_val : free, var_0 : free}: + `%%`(externtype, ret_val) + -- wf_externtype: `%`(externtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_externtype: `%%`(externtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_moduletype: `%%`(moduletype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_moduletype_case_0{`externtype_1*` : externtype*, `externtype_2*` : externtype*, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(`%->%`_moduletype(externtype_1#1*{externtype_1#1 <- `externtype_1*`}, externtype_2#1*{externtype_2#1 <- `externtype_2*`}), var_0 +++ var_2) + -- (fun_free_externtype: `%%`(externtype_2, var_3))*{var_3 <- `var_3*`, externtype_2 <- `externtype_2*`} + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- (fun_free_externtype: `%%`(externtype_1, var_1))*{var_1 <- `var_1*`, externtype_1 <- `externtype_1*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_moduletype_is_wf: `%%`(moduletype : moduletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_moduletype_is_wf_0{moduletype : moduletype, ret_val : free, var_0 : free}: + `%%`(moduletype, ret_val) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_moduletype: `%%`(moduletype, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax num_ = + | mk_num__0(Inn : Inn, var_x : iN) + | mk_num__1(Fnn : Fnn, var_x : fN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_num_: `%%`(numtype, num_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_0{numtype : numtype, Inn : Inn, var_x : iN}: + `%%`(numtype, mk_num__0_num_(Inn, var_x)) + -- wf_uN: `%%`($size($numtype_addrtype(Inn)), var_x) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_1{numtype : numtype, Fnn : Fnn, var_x : fN}: + `%%`(numtype, mk_num__1_num_(Fnn, var_x)) + -- wf_fN: `%%`($sizenn($numtype_Fnn(Fnn)), var_x) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__0(var_x : num_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{Inn : Inn, var_x : iN}(mk_num__0_num_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__1(var_x : num_) : fN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{Fnn : Fnn, var_x : fN}(mk_num__1_num_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax pack_ = iN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lane_ = + | mk_lane__0(numtype : numtype, var_x : num_) + | mk_lane__1(packtype : packtype, var_x : pack_) + | mk_lane__2(Jnn : Jnn, var_x : iN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lane_: `%%`(lanetype, lane_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_0{lanetype : lanetype, numtype : numtype, var_x : num_}: + `%%`(lanetype, mk_lane__0_lane_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (lanetype = $lanetype_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_1{lanetype : lanetype, packtype : packtype, var_x : pack_}: + `%%`(lanetype, mk_lane__1_lane_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (lanetype = $lanetype_packtype(packtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_2{lanetype : lanetype, Jnn : Jnn, var_x : iN}: + `%%`(lanetype, mk_lane__2_lane_(Jnn, var_x)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(Jnn)), var_x) + -- if (lanetype = $lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__0(var_x : lane_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{numtype : numtype, var_x : num_}(mk_lane__0_lane_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__1(var_x : lane_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{packtype : packtype, var_x : pack_}(mk_lane__1_lane_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__2(var_x : lane_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{Jnn : Jnn, var_x : iN}(mk_lane__2_lane_(Jnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vec_ = vN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lit_ = + | mk_lit__0(numtype : numtype, var_x : num_) + | mk_lit__1(vectype : vectype, var_x : vec_) + | mk_lit__2(packtype : packtype, var_x : pack_) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lit_: `%%`(storagetype, lit_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_0{storagetype : storagetype, numtype : numtype, var_x : num_}: + `%%`(storagetype, mk_lit__0_lit_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (storagetype = $storagetype_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_1{storagetype : storagetype, vectype : vectype, var_x : vec_}: + `%%`(storagetype, mk_lit__1_lit_(vectype, var_x)) + -- wf_uN: `%%`($vsize(vectype), var_x) + -- if (storagetype = $storagetype_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_2{storagetype : storagetype, packtype : packtype, var_x : pack_}: + `%%`(storagetype, mk_lit__2_lit_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (storagetype = $storagetype_packtype(packtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__0(var_x : lit_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{numtype : numtype, var_x : num_}(mk_lit__0_lit_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__1(var_x : lit_) : vec_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{vectype : vectype, var_x : vec_}(mk_lit__1_lit_(vectype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__2(var_x : lit_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{packtype : packtype, var_x : pack_}(mk_lit__2_lit_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sz = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_sz_0(x : sz) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_sz_0{v_num_0 : nat}(`%`_sz(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_sz: `%`(sz) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule sz_case_0{i : nat}: + `%`(`%`_sz(i)) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sx = + | U + | S + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Inn = + | CLZ + | CTZ + | POPCNT + | EXTEND(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_Inn: `%%`(Inn, unop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_0{Inn : Inn}: + `%%`(Inn, CLZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_1{Inn : Inn}: + `%%`(Inn, CTZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_2{Inn : Inn}: + `%%`(Inn, POPCNT_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_3{Inn : Inn, sz : sz}: + `%%`(Inn, EXTEND_unop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Fnn = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_ = + | mk_unop__0(Inn : Inn, var_x : unop_Inn) + | mk_unop__1(Fnn : Fnn, var_x : unop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_: `%%`(numtype, unop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_0{numtype : numtype, Inn : Inn, var_x : unop_Inn}: + `%%`(numtype, mk_unop__0_unop_(Inn, var_x)) + -- wf_unop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_1{numtype : numtype, Fnn : Fnn, var_x : unop_Fnn}: + `%%`(numtype, mk_unop__1_unop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__0(var_x : unop_) : unop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{Inn : Inn, var_x : unop_Inn}(mk_unop__0_unop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__1(var_x : unop_) : unop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{Fnn : Fnn, var_x : unop_Fnn}(mk_unop__1_unop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Inn = + | ADD + | SUB + | MUL + | DIV(sx : sx) + | REM(sx : sx) + | AND + | OR + | XOR + | SHL + | SHR(sx : sx) + | ROTL + | ROTR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Fnn = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | COPYSIGN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_ = + | mk_binop__0(Inn : Inn, var_x : binop_Inn) + | mk_binop__1(Fnn : Fnn, var_x : binop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_binop_: `%%`(numtype, binop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_0{numtype : numtype, Inn : Inn, var_x : binop_Inn}: + `%%`(numtype, mk_binop__0_binop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_1{numtype : numtype, Fnn : Fnn, var_x : binop_Fnn}: + `%%`(numtype, mk_binop__1_binop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__0(var_x : binop_) : binop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{Inn : Inn, var_x : binop_Inn}(mk_binop__0_binop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__1(var_x : binop_) : binop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{Fnn : Fnn, var_x : binop_Fnn}(mk_binop__1_binop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_Inn = + | EQZ + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_ = + | mk_testop__0(Inn : Inn, var_x : testop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_testop_: `%%`(numtype, testop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule testop__case_0{numtype : numtype, Inn : Inn, var_x : testop_Inn}: + `%%`(numtype, mk_testop__0_testop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_testop__0(var_x : testop_) : testop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_testop__0{Inn : Inn, var_x : testop_Inn}(mk_testop__0_testop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Inn = + | EQ + | NE + | LT(sx : sx) + | GT(sx : sx) + | LE(sx : sx) + | GE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Fnn = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_ = + | mk_relop__0(Inn : Inn, var_x : relop_Inn) + | mk_relop__1(Fnn : Fnn, var_x : relop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_relop_: `%%`(numtype, relop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_0{numtype : numtype, Inn : Inn, var_x : relop_Inn}: + `%%`(numtype, mk_relop__0_relop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_1{numtype : numtype, Fnn : Fnn, var_x : relop_Fnn}: + `%%`(numtype, mk_relop__1_relop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__0(var_x : relop_) : relop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{Inn : Inn, var_x : relop_Inn}(mk_relop__0_relop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__1(var_x : relop_) : relop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{Fnn : Fnn, var_x : relop_Fnn}(mk_relop__1_relop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Inn_2 = + | EXTEND(sx : sx) + | WRAP + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Inn_2: `%%%`(Inn, Inn, cvtop__Inn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_0{Inn_1 : Inn, Inn_2 : Inn, sx : sx}: + `%%%`(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)) + -- if ($sizenn1($numtype_addrtype(Inn_1)) < $sizenn2($numtype_addrtype(Inn_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_1{Inn_1 : Inn, Inn_2 : Inn}: + `%%%`(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2) + -- if ($sizenn1($numtype_addrtype(Inn_1)) > $sizenn2($numtype_addrtype(Inn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Fnn_2 = + | CONVERT(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn, Fnn, cvtop__Inn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_0{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx}: + `%%%`(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_1{Inn_1 : Inn, Fnn_2 : Fnn}: + `%%%`(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2) + -- if ($sizenn1($numtype_addrtype(Inn_1)) = $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Inn_2 = + | TRUNC(sx : sx) + | TRUNC_SAT(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn, Inn, cvtop__Fnn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_0{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_1{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_2{Fnn_1 : Fnn, Inn_2 : Inn}: + `%%%`(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = $sizenn2($numtype_addrtype(Inn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Fnn_2 = + | PROMOTE + | DEMOTE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn, Fnn, cvtop__Fnn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_0{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) < $sizenn2($numtype_Fnn(Fnn_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_1{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) > $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__ = + | mk_cvtop___0(Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2) + | mk_cvtop___1(Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2) + | mk_cvtop___2(Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2) + | mk_cvtop___3(Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__: `%%%`(numtype, numtype, cvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_0{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) + -- wf_cvtop__Inn_1_Inn_2: `%%%`(Inn_1, Inn_2, var_x) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_1{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) + -- wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn_1, Fnn_2, var_x) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_2{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) + -- wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn_1, Inn_2, var_x) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_3{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) + -- wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn_1, Fnn_2, var_x) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___0(var_x : cvtop__) : cvtop__Inn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___1(var_x : cvtop__) : cvtop__Inn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___2(var_x : cvtop__) : cvtop__Fnn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___3(var_x : cvtop__) : cvtop__Fnn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax dim = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_dim_0(x : dim) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_dim_0{v_num_0 : nat}(`%`_dim(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_dim: `%`(dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_case_0{i : nat}: + `%`(`%`_dim(i)) + -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax shape = + | `%X%`(lanetype : lanetype, dim : dim) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_shape: `%`(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule shape_case_0{lanetype : lanetype, dim : dim}: + `%`(`%X%`_shape(lanetype, dim)) + -- wf_dim: `%`(dim) + -- if (($lsize(lanetype) * $proj_dim_0(dim).0) = 128) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $dim(shape : shape) : dim + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation dim_is_wf: `%%`(shape : shape, ret_val : dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_is_wf_0{shape : shape, ret_val : dim}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $dim(shape)) + -- wf_dim: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $lanetype(shape : shape) : lanetype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $lanetype{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $unpackshape(shape : shape) : numtype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $unpackshape{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax ishape = + | `%`(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_ishape_0(x : ishape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_ishape_0{v_shape_0 : shape}(`%`_ishape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_ishape: `%`(ishape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule ishape_case_0{Jnn : Jnn, shape : shape}: + `%`(`%`_ishape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = $lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax bshape = + | `%`(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_bshape_0(x : bshape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_bshape_0{v_shape_0 : shape}(`%`_bshape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_bshape: `%`(bshape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule bshape_case_0{shape : shape}: + `%`(`%`_bshape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = I8_lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax zero = + | ZERO + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax half = + | LOW + | HIGH + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvunop = + | NOT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvbinop = + | AND + | ANDNOT + | OR + | XOR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvternop = + | BITSELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvtestop = + | ANY_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Jnn_M = + | ABS + | NEG + | POPCNT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_Jnn_M: `%%%`(Jnn, M, vunop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ABS_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NEG_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_2{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, POPCNT_vunop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 8) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Fnn_M = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_ = + | mk_vunop__0(Jnn : Jnn, M : M, var_x : vunop_Jnn_M) + | mk_vunop__1(Fnn : Fnn, M : M, var_x : vunop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_: `%%`(shape, vunop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vunop_Jnn_M}: + `%%`(shape, mk_vunop__0_vunop_(Jnn, M, var_x)) + -- wf_vunop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vunop_Fnn_M}: + `%%`(shape, mk_vunop__1_vunop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__0(var_x : vunop_) : vunop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{Jnn : Jnn, M : M, var_x : vunop_Jnn_M}(mk_vunop__0_vunop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__1(var_x : vunop_) : vunop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{Fnn : Fnn, M : M, var_x : vunop_Fnn_M}(mk_vunop__1_vunop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Jnn_M = + | ADD + | SUB + | ADD_SAT(sx : sx) + | SUB_SAT(sx : sx) + | MUL + | AVGRU + | Q15MULR_SATS + | RELAXED_Q15MULRS + | MIN(sx : sx) + | MAX(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_Jnn_M: `%%%`(Jnn, M, vbinop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ADD_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, SUB_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_4{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, MUL_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) >= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_5{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, AVGRU_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_6{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, Q15MULR_SATS_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_7{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_8{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MIN_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_9{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MAX_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Fnn_M = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | PMIN + | PMAX + | RELAXED_MIN + | RELAXED_MAX + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_ = + | mk_vbinop__0(Jnn : Jnn, M : M, var_x : vbinop_Jnn_M) + | mk_vbinop__1(Fnn : Fnn, M : M, var_x : vbinop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_: `%%`(shape, vbinop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}: + `%%`(shape, mk_vbinop__0_vbinop_(Jnn, M, var_x)) + -- wf_vbinop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}: + `%%`(shape, mk_vbinop__1_vbinop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__0(var_x : vbinop_) : vbinop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}(mk_vbinop__0_vbinop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__1(var_x : vbinop_) : vbinop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}(mk_vbinop__1_vbinop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Jnn_M = + | RELAXED_LANESELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Fnn_M = + | RELAXED_MADD + | RELAXED_NMADD + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_ = + | mk_vternop__0(Jnn : Jnn, M : M, var_x : vternop_Jnn_M) + | mk_vternop__1(Fnn : Fnn, M : M, var_x : vternop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vternop_: `%%`(shape, vternop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vternop_Jnn_M}: + `%%`(shape, mk_vternop__0_vternop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vternop_Fnn_M}: + `%%`(shape, mk_vternop__1_vternop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__0(var_x : vternop_) : vternop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{Jnn : Jnn, M : M, var_x : vternop_Jnn_M}(mk_vternop__0_vternop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__1(var_x : vternop_) : vternop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{Fnn : Fnn, M : M, var_x : vternop_Fnn_M}(mk_vternop__1_vternop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_Jnn_M = + | ALL_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_ = + | mk_vtestop__0(Jnn : Jnn, M : M, var_x : vtestop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vtestop_: `%%`(shape, vtestop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vtestop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}: + `%%`(shape, mk_vtestop__0_vtestop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vtestop__0(var_x : vtestop_) : vtestop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vtestop__0{Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}(mk_vtestop__0_vtestop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Jnn_M = + | EQ + | NE + | LT(sx : sx) + | GT(sx : sx) + | LE(sx : sx) + | GE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_Jnn_M: `%%%`(Jnn, M, vrelop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, EQ_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NE_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LT_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GT_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_4{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LE_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_5{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GE_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Fnn_M = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_ = + | mk_vrelop__0(Jnn : Jnn, M : M, var_x : vrelop_Jnn_M) + | mk_vrelop__1(Fnn : Fnn, M : M, var_x : vrelop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_: `%%`(shape, vrelop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}: + `%%`(shape, mk_vrelop__0_vrelop_(Jnn, M, var_x)) + -- wf_vrelop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}: + `%%`(shape, mk_vrelop__1_vrelop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__0(var_x : vrelop_) : vrelop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}(mk_vrelop__0_vrelop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__1(var_x : vrelop_) : vrelop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}(mk_vrelop__1_vrelop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_Jnn_M = + | SHL + | SHR(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_ = + | mk_vshiftop__0(Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vshiftop_: `%%`(ishape, vshiftop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vshiftop__case_0{ishape : ishape, Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}: + `%%`(ishape, mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) + -- if (ishape = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vshiftop__0(var_x : vshiftop_) : vshiftop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vshiftop__0{Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}(mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_M = + | SWIZZLE + | RELAXED_SWIZZLE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_ = + | mk_vswizzlop__0(M : M, var_x : vswizzlop_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vswizzlop_: `%%`(bshape, vswizzlop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vswizzlop__case_0{bshape : bshape, M : M, var_x : vswizzlop_M}: + `%%`(bshape, mk_vswizzlop__0_vswizzlop_(M, var_x)) + -- if (bshape = `%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vswizzlop__0(var_x : vswizzlop_) : vswizzlop_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vswizzlop__0{M : M, var_x : vswizzlop_M}(mk_vswizzlop__0_vswizzlop_(M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTADD_PAIRWISE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextunop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)) + -- if ((16 <= (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) <= 32))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__ = + | mk_vextunop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__: `%%%`(ishape, ishape, vextunop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextunop___0(var_x : vextunop__) : vextunop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTMUL(half : half, sx : sx) + | DOTS + | RELAXED_DOTS + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextbinop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) >= 16)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_1{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_2{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__ = + | mk_vextbinop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__: `%%%`(ishape, ishape, vextbinop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextbinop___0(var_x : vextbinop__) : vextbinop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__Jnn_1_M_1_Jnn_2_M_2 = + | RELAXED_DOT_ADDS + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextternop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((4 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__ = + | mk_vextternop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__: `%%%`(ishape, ishape, vextternop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextternop___0(var_x : vextternop__) : vextternop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTEND(half : half, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vcvtop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if ($lsizenn2($lanetype_Jnn(Jnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Fnn_2_M_2 = + | CONVERT(`half?` : half?, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn, M, Fnn, M, vcvtop__Jnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Fnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}: + `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(`half?`, sx)) + -- if (((($sizenn2($numtype_Fnn(Fnn_2)) = $lsizenn1($lanetype_Jnn(Jnn_1))) /\ ($lsizenn1($lanetype_Jnn(Jnn_1)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2($numtype_Fnn(Fnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Jnn_2_M_2 = + | TRUNC_SAT(sx : sx, `zero?` : zero?) + | RELAXED_TRUNC(sx : sx, `zero?` : zero?) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn, M, Jnn, M, vcvtop__Fnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, `zero?`)) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, `zero?`)) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Fnn_2_M_2 = + | DEMOTE(zero : zero) + | PROMOTELOW + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn, M, Fnn, M, vcvtop__Fnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $sizenn2($numtype_Fnn(Fnn_2)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2) + -- if ((2 * $sizenn1($numtype_Fnn(Fnn_1))) = $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__ = + | mk_vcvtop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___1(Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2) + | mk_vcvtop___2(Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___3(Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__: `%%%`(shape, shape, vcvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_0{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_1{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_2{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_3{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___0(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___1(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___2(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___3(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax memarg = +{ + ALIGN u32, + OFFSET u64 +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_memarg: `%`(memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg_case_{var_0 : u32, var_1 : u64}: + `%`({ALIGN var_0, OFFSET var_1}) + -- wf_uN: `%%`(32, var_0) + -- wf_uN: `%%`(64, var_1) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_Inn = + | `%_%`(sz : sz, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_Inn: `%%`(Inn, loadop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop_Inn_case_0{Inn : Inn, sz : sz, sx : sx}: + `%%`(Inn, `%_%`_loadop_Inn(sz, sx)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_ = + | mk_loadop__0(Inn : Inn, var_x : loadop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_: `%%`(numtype, loadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop__case_0{numtype : numtype, Inn : Inn, var_x : loadop_Inn}: + `%%`(numtype, mk_loadop__0_loadop_(Inn, var_x)) + -- wf_loadop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_loadop__0(var_x : loadop_) : loadop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_loadop__0{Inn : Inn, var_x : loadop_Inn}(mk_loadop__0_loadop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_Inn = + | `%`(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_Inn: `%%`(Inn, storeop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop_Inn_case_0{Inn : Inn, sz : sz}: + `%%`(Inn, `%`_storeop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_ = + | mk_storeop__0(Inn : Inn, var_x : storeop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_: `%%`(numtype, storeop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop__case_0{numtype : numtype, Inn : Inn, var_x : storeop_Inn}: + `%%`(numtype, mk_storeop__0_storeop_(Inn, var_x)) + -- wf_storeop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_storeop__0(var_x : storeop_) : storeop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_storeop__0{Inn : Inn, var_x : storeop_Inn}(mk_storeop__0_storeop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vloadop_ = + | `SHAPE%X%_%`(sz : sz, M : M, sx : sx) + | SPLAT(sz : sz) + | ZERO(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vloadop_: `%%`(vectype, vloadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_0{vectype : vectype, sz : sz, M : M, sx : sx}: + `%%`(vectype, `SHAPE%X%_%`_vloadop_(sz, M, sx)) + -- wf_sz: `%`(sz) + -- if ((($proj_sz_0(sz).0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_1{vectype : vectype, sz : sz}: + `%%`(vectype, SPLAT_vloadop_(sz)) + -- wf_sz: `%`(sz) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_2{vectype : vectype, sz : sz}: + `%%`(vectype, ZERO_vloadop_(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 >= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax blocktype = + | _RESULT(`valtype?` : valtype?) + | _IDX(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_blocktype: `%`(blocktype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_0{`valtype?` : valtype?}: + `%`(_RESULT_blocktype(`valtype?`)) + -- (wf_valtype: `%`(valtype))?{valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_1{typeidx : typeidx}: + `%`(_IDX_blocktype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax addr = nat + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayaddr = addr + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax catch = + | CATCH(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL(labelidx : labelidx) + | CATCH_ALL_REF(labelidx : labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_catch: `%`(catch) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_0{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_1{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_REF_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_2{labelidx : labelidx}: + `%`(CATCH_ALL_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_3{labelidx : labelidx}: + `%`(CATCH_ALL_REF_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exnaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax dataaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax elemaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globaladdr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax memaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tagaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax externaddr = + | TAG(tagaddr : tagaddr) + | GLOBAL(globaladdr : globaladdr) + | MEM(memaddr : memaddr) + | TABLE(tableaddr : tableaddr) + | FUNC(funcaddr : funcaddr) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exportinst = +{ + NAME name, + ADDR externaddr +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exportinst: `%`(exportinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exportinst_case_{var_0 : name, var_1 : externaddr}: + `%`({NAME var_0, ADDR var_1}) + -- wf_name: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax moduleinst = +{ + TYPES deftype*, + TAGS tagaddr*, + GLOBALS globaladdr*, + MEMS memaddr*, + TABLES tableaddr*, + FUNCS funcaddr*, + DATAS dataaddr*, + ELEMS elemaddr*, + EXPORTS exportinst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_moduleinst: `%`(moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_case_{var_0 : deftype*, var_1 : tagaddr*, var_2 : globaladdr*, var_3 : memaddr*, var_4 : tableaddr*, var_5 : funcaddr*, var_6 : dataaddr*, var_7 : elemaddr*, var_8 : exportinst*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, EXPORTS var_8}) + -- (wf_exportinst: `%`(var_8))*{var_8 <- var_8} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-43.19 +syntax ref = + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 +relation wf_ref: `%`(ref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_0{u31 : u31}: + `%`(`REF.I31_NUM`_ref(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_1: + `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_2{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_ref(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_3{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_ref(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_4{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_ref(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_5{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_ref(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_6{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_ref(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_7{ref : ref}: + `%`(`REF.EXTERN`_ref(ref)) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax val = + | CONST(numtype : numtype, num_) + | VCONST(vectype : vectype, vec_) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + +def $val_ref(ref) : val + def $val_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_val(x0) + def $val_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_val + def $val_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_val(x0) + def $val_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_val(x0) + def $val_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_val(x0) + def $val_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_val(x0) + def $val_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_val(x0) + def $val_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_val(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_val: `%`(val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_val(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_1{vectype : vectype, var_0 : vec_}: + `%`(VCONST_val(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_2{u31 : u31}: + `%`(`REF.I31_NUM`_val(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_3: + `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_4{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_5{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_6{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_7{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_val(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_8{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_9{ref : ref}: + `%`(`REF.EXTERN`_val(ref)) + -- wf_ref: `%`(ref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax frame = +{ + LOCALS val?*, + MODULE moduleinst +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_frame: `%`(frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_case_{var_0 : val?*, var_1 : moduleinst}: + `%`({LOCALS var_0, MODULE var_1}) + -- (wf_val: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- wf_moduleinst: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.1-139.9 +syntax instr = + | NOP + | UNREACHABLE + | DROP + | SELECT(`valtype*?` : valtype*?) + | BLOCK(blocktype : blocktype, `instr*` : instr*) + | LOOP(blocktype : blocktype, `instr*` : instr*) + | `IF%%ELSE%`(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) + | BR(labelidx : labelidx) + | BR_IF(labelidx : labelidx) + | BR_TABLE(`labelidx*` : labelidx*, labelidx : labelidx) + | BR_ON_NULL(labelidx : labelidx) + | BR_ON_NON_NULL(labelidx : labelidx) + | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | CALL(funcidx : funcidx) + | CALL_REF(typeuse : typeuse) + | CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | RETURN + | RETURN_CALL(funcidx : funcidx) + | RETURN_CALL_REF(typeuse : typeuse) + | RETURN_CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | THROW(tagidx : tagidx) + | THROW_REF + | TRY_TABLE(blocktype : blocktype, list(syntax catch), `instr*` : instr*) + | `LOCAL.GET`(localidx : localidx) + | `LOCAL.SET`(localidx : localidx) + | `LOCAL.TEE`(localidx : localidx) + | `GLOBAL.GET`(globalidx : globalidx) + | `GLOBAL.SET`(globalidx : globalidx) + | `TABLE.GET`(tableidx : tableidx) + | `TABLE.SET`(tableidx : tableidx) + | `TABLE.SIZE`(tableidx : tableidx) + | `TABLE.GROW`(tableidx : tableidx) + | `TABLE.FILL`(tableidx : tableidx) + | `TABLE.COPY`(tableidx : tableidx, tableidx : tableidx) + | `TABLE.INIT`(tableidx : tableidx, elemidx : elemidx) + | `ELEM.DROP`(elemidx : elemidx) + | LOAD(numtype : numtype, loadop_?, memidx : memidx, memarg : memarg) + | STORE(numtype : numtype, storeop_?, memidx : memidx, memarg : memarg) + | VLOAD(vectype : vectype, vloadop_?, memidx : memidx, memarg : memarg) + | VLOAD_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | `MEMORY.SIZE`(memidx : memidx) + | `MEMORY.GROW`(memidx : memidx) + | `MEMORY.FILL`(memidx : memidx) + | `MEMORY.COPY`(memidx : memidx, memidx : memidx) + | `MEMORY.INIT`(memidx : memidx, dataidx : dataidx) + | `DATA.DROP`(dataidx : dataidx) + | `REF.NULL`(heaptype : heaptype) + | `REF.IS_NULL` + | `REF.AS_NON_NULL` + | `REF.EQ` + | `REF.TEST`(reftype : reftype) + | `REF.CAST`(reftype : reftype) + | `REF.FUNC`(funcidx : funcidx) + | `REF.I31` + | `I31.GET`(sx : sx) + | `STRUCT.NEW`(typeidx : typeidx) + | `STRUCT.NEW_DEFAULT`(typeidx : typeidx) + | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx) + | `STRUCT.SET`(typeidx : typeidx, fieldidx : fieldidx) + | `ARRAY.NEW`(typeidx : typeidx) + | `ARRAY.NEW_DEFAULT`(typeidx : typeidx) + | `ARRAY.NEW_FIXED`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.NEW_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `ARRAY.GET`(`sx?` : sx?, typeidx : typeidx) + | `ARRAY.SET`(typeidx : typeidx) + | `ARRAY.LEN` + | `ARRAY.FILL`(typeidx : typeidx) + | `ARRAY.COPY`(typeidx : typeidx, typeidx : typeidx) + | `ARRAY.INIT_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.INIT_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `EXTERN.CONVERT_ANY` + | `ANY.CONVERT_EXTERN` + | CONST(numtype : numtype, num_) + | UNOP(numtype : numtype, unop_) + | BINOP(numtype : numtype, binop_) + | TESTOP(numtype : numtype, testop_) + | RELOP(numtype : numtype, relop_) + | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__) + | VCONST(vectype : vectype, vec_) + | VVUNOP(vectype : vectype, vvunop : vvunop) + | VVBINOP(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP(vectype : vectype, vvternop : vvternop) + | VVTESTOP(vectype : vectype, vvtestop : vvtestop) + | VUNOP(shape : shape, vunop_) + | VBINOP(shape : shape, vbinop_) + | VTERNOP(shape : shape, vternop_) + | VTESTOP(shape : shape, vtestop_) + | VRELOP(shape : shape, vrelop_) + | VSHIFTOP(ishape : ishape, vshiftop_) + | VBITMASK(ishape : ishape) + | VSWIZZLOP(bshape : bshape, vswizzlop_) + | VSHUFFLE(bshape : bshape, `laneidx*` : laneidx*) + | VEXTUNOP(ishape_1 : ishape, ishape_2 : ishape, vextunop__) + | VEXTBINOP(ishape_1 : ishape, ishape_2 : ishape, vextbinop__) + | VEXTTERNOP(ishape_1 : ishape, ishape_2 : ishape, vextternop__) + | VNARROW(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + | VCVTOP(shape_1 : shape, shape_2 : shape, vcvtop__) + | VSPLAT(shape : shape) + | VEXTRACT_LANE(shape : shape, `sx?` : sx?, laneidx : laneidx) + | VREPLACE_LANE(shape : shape, laneidx : laneidx) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) + | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) + | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) + | TRAP +} + +def $instr_ref(ref) : instr + def $instr_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_instr(x0) + def $instr_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_instr + def $instr_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_instr(x0) + def $instr_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_instr(x0) + def $instr_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_instr(x0) + def $instr_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_instr(x0) + def $instr_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_instr(x0) + def $instr_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_instr(x0) + +def $instr_val(val) : instr + def $instr_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_instr(x0, x1) + def $instr_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_instr(x0, x1) + def $instr_val{x0 : u31}(`REF.I31_NUM`_val(x0)) = `REF.I31_NUM`_instr(x0) + def $instr_val(`REF.NULL_ADDR`_val) = `REF.NULL_ADDR`_instr + def $instr_val{x0 : structaddr}(`REF.STRUCT_ADDR`_val(x0)) = `REF.STRUCT_ADDR`_instr(x0) + def $instr_val{x0 : arrayaddr}(`REF.ARRAY_ADDR`_val(x0)) = `REF.ARRAY_ADDR`_instr(x0) + def $instr_val{x0 : funcaddr}(`REF.FUNC_ADDR`_val(x0)) = `REF.FUNC_ADDR`_instr(x0) + def $instr_val{x0 : exnaddr}(`REF.EXN_ADDR`_val(x0)) = `REF.EXN_ADDR`_instr(x0) + def $instr_val{x0 : hostaddr}(`REF.HOST_ADDR`_val(x0)) = `REF.HOST_ADDR`_instr(x0) + def $instr_val{x0 : ref}(`REF.EXTERN`_val(x0)) = `REF.EXTERN`_instr(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 +relation wf_instr: `%`(instr) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_0: + `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_1: + `%`(UNREACHABLE_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_2: + `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_3{`valtype*?` : valtype*?}: + `%`(SELECT_instr(`valtype*?`)) + -- (wf_valtype: `%`(valtype))*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_4{blocktype : blocktype, `instr*` : instr*}: + `%`(BLOCK_instr(blocktype, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_5{blocktype : blocktype, `instr*` : instr*}: + `%`(LOOP_instr(blocktype, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_6{blocktype : blocktype, `instr*` : instr*, `instr*_0` : instr*}: + `%`(`IF%%ELSE%`_instr(blocktype, `instr*`, `instr*_0`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(`instr*_0`))*{`instr*_0` <- `instr*_0`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_7{labelidx : labelidx}: + `%`(BR_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_8{labelidx : labelidx}: + `%`(BR_IF_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_9{`labelidx*` : labelidx*, labelidx : labelidx}: + `%`(BR_TABLE_instr(`labelidx*`, labelidx)) + -- (wf_uN: `%%`(32, labelidx))*{labelidx <- `labelidx*`} + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_10{labelidx : labelidx}: + `%`(BR_ON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_11{labelidx : labelidx}: + `%`(BR_ON_NON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_12{labelidx : labelidx, reftype : reftype, reftype_0 : reftype}: + `%`(BR_ON_CAST_instr(labelidx, reftype, reftype_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_13{labelidx : labelidx, reftype : reftype, reftype_0 : reftype}: + `%`(BR_ON_CAST_FAIL_instr(labelidx, reftype, reftype_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_14{funcidx : funcidx}: + `%`(CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_15{typeuse : typeuse}: + `%`(CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_16{tableidx : tableidx, typeuse : typeuse}: + `%`(CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_17: + `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_18{funcidx : funcidx}: + `%`(RETURN_CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_19{typeuse : typeuse}: + `%`(RETURN_CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_20{tableidx : tableidx, typeuse : typeuse}: + `%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_21{tagidx : tagidx}: + `%`(THROW_instr(tagidx)) + -- wf_uN: `%%`(32, tagidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_22: + `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_23{blocktype : blocktype, var_0 : list(syntax catch), `instr*` : instr*}: + `%`(TRY_TABLE_instr(blocktype, var_0, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_24{localidx : localidx}: + `%`(`LOCAL.GET`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_25{localidx : localidx}: + `%`(`LOCAL.SET`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_26{localidx : localidx}: + `%`(`LOCAL.TEE`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_27{globalidx : globalidx}: + `%`(`GLOBAL.GET`_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_28{globalidx : globalidx}: + `%`(`GLOBAL.SET`_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_29{tableidx : tableidx}: + `%`(`TABLE.GET`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_30{tableidx : tableidx}: + `%`(`TABLE.SET`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_31{tableidx : tableidx}: + `%`(`TABLE.SIZE`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_32{tableidx : tableidx}: + `%`(`TABLE.GROW`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_33{tableidx : tableidx}: + `%`(`TABLE.FILL`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_34{tableidx : tableidx, tableidx_0 : tableidx}: + `%`(`TABLE.COPY`_instr(tableidx, tableidx_0)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, tableidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_35{tableidx : tableidx, elemidx : elemidx}: + `%`(`TABLE.INIT`_instr(tableidx, elemidx)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_36{elemidx : elemidx}: + `%`(`ELEM.DROP`_instr(elemidx)) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_37{numtype : numtype, var_0 : loadop_?, memidx : memidx, memarg : memarg}: + `%`(LOAD_instr(numtype, var_0, memidx, memarg)) + -- (wf_loadop_: `%%`(numtype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_38{numtype : numtype, var_0 : storeop_?, memidx : memidx, memarg : memarg}: + `%`(STORE_instr(numtype, var_0, memidx, memarg)) + -- (wf_storeop_: `%%`(numtype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_39{vectype : vectype, var_0 : vloadop_?, memidx : memidx, memarg : memarg}: + `%`(VLOAD_instr(vectype, var_0, memidx, memarg)) + -- (wf_vloadop_: `%%`(vectype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_40{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_41{vectype : vectype, memidx : memidx, memarg : memarg}: + `%`(VSTORE_instr(vectype, memidx, memarg)) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_42{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_43{memidx : memidx}: + `%`(`MEMORY.SIZE`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_44{memidx : memidx}: + `%`(`MEMORY.GROW`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_45{memidx : memidx}: + `%`(`MEMORY.FILL`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_46{memidx : memidx, memidx_0 : memidx}: + `%`(`MEMORY.COPY`_instr(memidx, memidx_0)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, memidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_47{memidx : memidx, dataidx : dataidx}: + `%`(`MEMORY.INIT`_instr(memidx, dataidx)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_48{dataidx : dataidx}: + `%`(`DATA.DROP`_instr(dataidx)) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_49{heaptype : heaptype}: + `%`(`REF.NULL`_instr(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_50: + `%`(`REF.IS_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_51: + `%`(`REF.AS_NON_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_52: + `%`(`REF.EQ`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_53{reftype : reftype}: + `%`(`REF.TEST`_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_54{reftype : reftype}: + `%`(`REF.CAST`_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_55{funcidx : funcidx}: + `%`(`REF.FUNC`_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_56: + `%`(`REF.I31`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_57{sx : sx}: + `%`(`I31.GET`_instr(sx)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_58{typeidx : typeidx}: + `%`(`STRUCT.NEW`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_59{typeidx : typeidx}: + `%`(`STRUCT.NEW_DEFAULT`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_60{`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx}: + `%`(`STRUCT.GET`_instr(`sx?`, typeidx, fieldidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, fieldidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_61{typeidx : typeidx, fieldidx : fieldidx}: + `%`(`STRUCT.SET`_instr(typeidx, fieldidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, fieldidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_62{typeidx : typeidx}: + `%`(`ARRAY.NEW`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_63{typeidx : typeidx}: + `%`(`ARRAY.NEW_DEFAULT`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_64{typeidx : typeidx, u32 : u32}: + `%`(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_65{typeidx : typeidx, dataidx : dataidx}: + `%`(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_66{typeidx : typeidx, elemidx : elemidx}: + `%`(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_67{`sx?` : sx?, typeidx : typeidx}: + `%`(`ARRAY.GET`_instr(`sx?`, typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_68{typeidx : typeidx}: + `%`(`ARRAY.SET`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_69: + `%`(`ARRAY.LEN`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_70{typeidx : typeidx}: + `%`(`ARRAY.FILL`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_71{typeidx : typeidx, typeidx_0 : typeidx}: + `%`(`ARRAY.COPY`_instr(typeidx, typeidx_0)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, typeidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_72{typeidx : typeidx, dataidx : dataidx}: + `%`(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_73{typeidx : typeidx, elemidx : elemidx}: + `%`(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_74: + `%`(`EXTERN.CONVERT_ANY`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_75: + `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_76{numtype : numtype, var_0 : num_}: + `%`(CONST_instr(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_77{numtype : numtype, var_0 : unop_}: + `%`(UNOP_instr(numtype, var_0)) + -- wf_unop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_78{numtype : numtype, var_0 : binop_}: + `%`(BINOP_instr(numtype, var_0)) + -- wf_binop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_79{numtype : numtype, var_0 : testop_}: + `%`(TESTOP_instr(numtype, var_0)) + -- wf_testop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_80{numtype : numtype, var_0 : relop_}: + `%`(RELOP_instr(numtype, var_0)) + -- wf_relop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_81{numtype_1 : numtype, numtype_2 : numtype, var_0 : cvtop__}: + `%`(CVTOP_instr(numtype_1, numtype_2, var_0)) + -- wf_cvtop__: `%%%`(numtype_2, numtype_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_82{vectype : vectype, var_0 : vec_}: + `%`(VCONST_instr(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_83{vectype : vectype, vvunop : vvunop}: + `%`(VVUNOP_instr(vectype, vvunop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_84{vectype : vectype, vvbinop : vvbinop}: + `%`(VVBINOP_instr(vectype, vvbinop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_85{vectype : vectype, vvternop : vvternop}: + `%`(VVTERNOP_instr(vectype, vvternop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_86{vectype : vectype, vvtestop : vvtestop}: + `%`(VVTESTOP_instr(vectype, vvtestop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_87{shape : shape, var_0 : vunop_}: + `%`(VUNOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vunop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_88{shape : shape, var_0 : vbinop_}: + `%`(VBINOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vbinop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_89{shape : shape, var_0 : vternop_}: + `%`(VTERNOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vternop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_90{shape : shape, var_0 : vtestop_}: + `%`(VTESTOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vtestop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_91{shape : shape, var_0 : vrelop_}: + `%`(VRELOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vrelop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_92{ishape : ishape, var_0 : vshiftop_}: + `%`(VSHIFTOP_instr(ishape, var_0)) + -- wf_ishape: `%`(ishape) + -- wf_vshiftop_: `%%`(ishape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_93{ishape : ishape}: + `%`(VBITMASK_instr(ishape)) + -- wf_ishape: `%`(ishape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_94{bshape : bshape, var_0 : vswizzlop_}: + `%`(VSWIZZLOP_instr(bshape, var_0)) + -- wf_bshape: `%`(bshape) + -- wf_vswizzlop_: `%%`(bshape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*}: + `%`(VSHUFFLE_instr(bshape, `laneidx*`)) + -- wf_bshape: `%`(bshape) + -- (wf_uN: `%%`(8, laneidx))*{laneidx <- `laneidx*`} + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim($proj_bshape_0(bshape).0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextunop__}: + `%`(VEXTUNOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextunop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_97{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextbinop__}: + `%`(VEXTBINOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextbinop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_98{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextternop__}: + `%`(VEXTTERNOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextternop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_99{ishape_1 : ishape, ishape_2 : ishape, sx : sx}: + `%`(VNARROW_instr(ishape_1, ishape_2, sx)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- if (($lsize($lanetype($proj_ishape_0(ishape_2).0)) = (2 * $lsize($lanetype($proj_ishape_0(ishape_1).0)))) /\ ((2 * $lsize($lanetype($proj_ishape_0(ishape_1).0))) <= 32)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_100{shape_1 : shape, shape_2 : shape, var_0 : vcvtop__}: + `%`(VCVTOP_instr(shape_1, shape_2, var_0)) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_2, shape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_101{shape : shape}: + `%`(VSPLAT_instr(shape)) + -- wf_shape: `%`(shape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_102{shape : shape, `sx?` : sx?, laneidx : laneidx}: + `%`(VEXTRACT_LANE_instr(shape, `sx?`, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_103{shape : shape, laneidx : laneidx}: + `%`(VREPLACE_LANE_instr(shape, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_104{u31 : u31}: + `%`(`REF.I31_NUM`_instr(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_105: + `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_106{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_instr(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_107{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_instr(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_108{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_instr(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_109{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_instr(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_110{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_instr(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_111{ref : ref}: + `%`(`REF.EXTERN`_instr(ref)) + -- wf_ref: `%`(ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_112{n : n, `instr*` : instr*, `instr*_0` : instr*}: + `%`(`LABEL_%{%}%`_instr(n, `instr*`, `instr*_0`)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(`instr*_0`))*{`instr*_0` <- `instr*_0`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_113{n : n, frame : frame, `instr*` : instr*}: + `%`(`FRAME_%{%}%`_instr(n, frame, `instr*`)) + -- wf_frame: `%`(frame) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_114{n : n, `catch*` : catch*, `instr*` : instr*}: + `%`(`HANDLER_%{%}%`_instr(n, `catch*`, `instr*`)) + -- (wf_catch: `%`(catch))*{catch <- `catch*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_115: + `%`(TRAP_instr) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax expr = instr* + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $memarg0 : memarg + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation memarg0_is_wf: `%`(ret_val : memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg0_is_wf_0{ret_val : memarg}: + `%`(ret_val) + -- if (ret_val = $memarg0) + -- wf_memarg: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $const(consttype : consttype, lit_ : lit_) : instr + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(I32_consttype, mk_lit__0_lit_(I32_numtype, c)) = CONST_instr(I32_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(I64_consttype, mk_lit__0_lit_(I64_numtype, c)) = CONST_instr(I64_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(F32_consttype, mk_lit__0_lit_(F32_numtype, c)) = CONST_instr(F32_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(F64_consttype, mk_lit__0_lit_(F64_numtype, c)) = CONST_instr(F64_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : uN}(V128_consttype, mk_lit__1_lit_(V128_vectype, c)) = VCONST_instr(V128_vectype, c) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation const_is_wf: `%%%`(consttype : consttype, lit_ : lit_, ret_val : instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule const_is_wf_0{consttype : consttype, lit_ : lit_, ret_val : instr}: + `%%%`(consttype, lit_, ret_val) + -- wf_lit_: `%%`($storagetype_consttype(consttype), lit_) + -- if (ret_val = $const(consttype, lit_)) + -- wf_instr: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_shape(shape : shape) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_shape_is_wf: `%%`(shape : shape, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_shape_is_wf_0{shape : shape, ret_val : free}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $free_shape(shape)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_blocktype: `%%`(blocktype, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_blocktype_case_0{`valtype?` : valtype?, `var_0?` : free?}: + `%%`(_RESULT_blocktype(valtype#504?{valtype#504 <- `valtype?`}), $free_opt(var_0?{var_0 <- `var_0?`})) + -- (fun_free_valtype: `%%`(valtype, var_0))?{var_0 <- `var_0?`, valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_blocktype_case_1{typeidx : uN}: + `%%`(_IDX_blocktype(typeidx), $free_typeidx(typeidx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_blocktype_is_wf: `%%`(blocktype : blocktype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_blocktype_is_wf_0{blocktype : blocktype, ret_val : free, var_0 : free}: + `%%`(blocktype, ret_val) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_blocktype: `%%`(blocktype, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_catch(catch : catch) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : uN, labelidx : uN}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : uN, labelidx : uN}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : uN}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : uN}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_catch_is_wf: `%%`(catch : catch, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_catch_is_wf_0{catch : catch, ret_val : free}: + `%%`(catch, ret_val) + -- wf_catch: `%`(catch) + -- if (ret_val = $free_catch(catch)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 +relation fun_shift_labelidxs: `%%`(labelidx*, labelidx*) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_1{`labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([`%`_labelidx(0)] ++ labelidx'#1*{labelidx'#1 <- `labelidx'*`}, var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_2{labelidx : uN, `labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([labelidx] ++ labelidx'#2*{labelidx'#2 <- `labelidx'*`}, [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation fun_free_instr: `%%`(instr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_0: + `%%`(NOP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_1: + `%%`(UNREACHABLE_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_2: + `%%`(DROP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_3{`valtype*?` : valtype*?, `var_1*?` : free*?, `var_0?` : free?}: + `%%`(SELECT_instr(valtype#505*{valtype#505 <- `valtype*#1`}?{`valtype*#1` <- `valtype*?`}), $free_opt(var_0?{var_0 <- `var_0?`})) + -- (fun_free_valtype: `%%`(valtype, var_1))*{var_1 <- `var_1*`, valtype <- `valtype*`}?{`var_1*` <- `var_1*?`, `valtype*` <- `valtype*?`} + -- (fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0))?{`var_1*` <- `var_1*?`, var_0 <- `var_0?`} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_4{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(BLOCK_instr(blocktype, instr#1*{instr#1 <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_5{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(LOOP_instr(blocktype, instr#2*{instr#2 <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_6{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, var_2 : free, var_1 : free, var_0 : free}: + `%%`(`IF%%ELSE%`_instr(blocktype, instr_1#1*{instr_1#1 <- `instr_1*`}, instr_2#1*{instr_2#1 <- `instr_2*`}), var_0 +++ var_1 +++ var_2) + -- fun_free_block: `%%`(instr_2*{instr_2 <- `instr_2*`}, var_2) + -- fun_free_block: `%%`(instr_1*{instr_1 <- `instr_1*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_7{labelidx : uN}: + `%%`(BR_instr(labelidx), $free_labelidx(labelidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_8{labelidx : uN}: + `%%`(BR_IF_instr(labelidx), $free_labelidx(labelidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_9{`labelidx*` : labelidx*, labelidx' : uN, var_0 : free}: + `%%`(BR_TABLE_instr(labelidx#1*{labelidx#1 <- `labelidx*`}, labelidx'), var_0 +++ $free_labelidx(labelidx')) + -- fun_free_list: `%%`($free_labelidx(labelidx)*{labelidx <- `labelidx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_10{labelidx : uN}: + `%%`(BR_ON_NULL_instr(labelidx), $free_labelidx(labelidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_11{labelidx : uN}: + `%%`(BR_ON_NON_NULL_instr(labelidx), $free_labelidx(labelidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_12{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2), $free_labelidx(labelidx) +++ var_0 +++ var_1) + -- fun_free_reftype: `%%`(reftype_2, var_1) + -- fun_free_reftype: `%%`(reftype_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_13{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2), $free_labelidx(labelidx) +++ var_0 +++ var_1) + -- fun_free_reftype: `%%`(reftype_2, var_1) + -- fun_free_reftype: `%%`(reftype_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_14{funcidx : uN}: + `%%`(CALL_instr(funcidx), $free_funcidx(funcidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_15{typeuse : typeuse, var_0 : free}: + `%%`(CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_16{tableidx : uN, typeuse : typeuse, var_0 : free}: + `%%`(CALL_INDIRECT_instr(tableidx, typeuse), $free_tableidx(tableidx) +++ var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_17: + `%%`(RETURN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_18{funcidx : uN}: + `%%`(RETURN_CALL_instr(funcidx), $free_funcidx(funcidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_19{typeuse : typeuse, var_0 : free}: + `%%`(RETURN_CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_20{tableidx : uN, typeuse : typeuse, var_0 : free}: + `%%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse), $free_tableidx(tableidx) +++ var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_21{tagidx : uN}: + `%%`(THROW_instr(tagidx), $free_tagidx(tagidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_22: + `%%`(THROW_REF_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_23{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*, `var_3*` : free*, var_2 : free, var_1 : free, var_0 : free}: + `%%`(TRY_TABLE_instr(blocktype, `%`_list(catch#1*{catch#1 <- `catch*`}), instr#3*{instr#3 <- `instr*`}), var_0 +++ var_1 +++ var_2) + -- (fun_free_instr: `%%`(instr, var_3))*{var_3 <- `var_3*`, instr <- `instr*`} + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- fun_free_list: `%%`($free_catch(catch)*{catch <- `catch*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_24{numtype : numtype, numlit : num_}: + `%%`(CONST_instr(numtype, numlit), $free_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_25{numtype : numtype, unop : unop_}: + `%%`(UNOP_instr(numtype, unop), $free_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_26{numtype : numtype, binop : binop_}: + `%%`(BINOP_instr(numtype, binop), $free_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_27{numtype : numtype, testop : testop_}: + `%%`(TESTOP_instr(numtype, testop), $free_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_28{numtype : numtype, relop : relop_}: + `%%`(RELOP_instr(numtype, relop), $free_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_29{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__}: + `%%`(CVTOP_instr(numtype_1, numtype_2, cvtop), $free_numtype(numtype_1) +++ $free_numtype(numtype_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_30{vectype : vectype, veclit : uN}: + `%%`(VCONST_instr(vectype, veclit), $free_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_31{vectype : vectype, vvunop : vvunop}: + `%%`(VVUNOP_instr(vectype, vvunop), $free_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_32{vectype : vectype, vvbinop : vvbinop}: + `%%`(VVBINOP_instr(vectype, vvbinop), $free_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_33{vectype : vectype, vvternop : vvternop}: + `%%`(VVTERNOP_instr(vectype, vvternop), $free_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_34{vectype : vectype, vvtestop : vvtestop}: + `%%`(VVTESTOP_instr(vectype, vvtestop), $free_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_35{shape : shape, vunop : vunop_}: + `%%`(VUNOP_instr(shape, vunop), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_36{shape : shape, vbinop : vbinop_}: + `%%`(VBINOP_instr(shape, vbinop), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_37{shape : shape, vternop : vternop_}: + `%%`(VTERNOP_instr(shape, vternop), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_38{shape : shape, vtestop : vtestop_}: + `%%`(VTESTOP_instr(shape, vtestop), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_39{shape : shape, vrelop : vrelop_}: + `%%`(VRELOP_instr(shape, vrelop), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_40{ishape : ishape, vshiftop : vshiftop_}: + `%%`(VSHIFTOP_instr(ishape, vshiftop), $free_shape($proj_ishape_0(ishape).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_41{ishape : ishape}: + `%%`(VBITMASK_instr(ishape), $free_shape($proj_ishape_0(ishape).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_42{bshape : bshape, vswizzlop : vswizzlop_}: + `%%`(VSWIZZLOP_instr(bshape, vswizzlop), $free_shape($proj_bshape_0(bshape).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_43{bshape : bshape, `laneidx*` : laneidx*}: + `%%`(VSHUFFLE_instr(bshape, laneidx#1*{laneidx#1 <- `laneidx*`}), $free_shape($proj_bshape_0(bshape).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_44{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__}: + `%%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop), $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_45{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__}: + `%%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop), $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_46{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__}: + `%%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop), $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_47{ishape_1 : ishape, ishape_2 : ishape, sx : sx}: + `%%`(VNARROW_instr(ishape_1, ishape_2, sx), $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_48{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__}: + `%%`(VCVTOP_instr(shape_1, shape_2, vcvtop), $free_shape(shape_1) +++ $free_shape(shape_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_49{shape : shape}: + `%%`(VSPLAT_instr(shape), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_50{shape : shape, `sx?` : sx?, laneidx : uN}: + `%%`(VEXTRACT_LANE_instr(shape, sx#45969?{sx#45969 <- `sx?`}, laneidx), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_51{shape : shape, laneidx : uN}: + `%%`(VREPLACE_LANE_instr(shape, laneidx), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_52{heaptype : heaptype, var_0 : free}: + `%%`(`REF.NULL`_instr(heaptype), var_0) + -- fun_free_heaptype: `%%`(heaptype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_53: + `%%`(`REF.IS_NULL`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_54: + `%%`(`REF.AS_NON_NULL`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_55: + `%%`(`REF.EQ`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_56{reftype : reftype, var_0 : free}: + `%%`(`REF.TEST`_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_57{reftype : reftype, var_0 : free}: + `%%`(`REF.CAST`_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_58{funcidx : uN}: + `%%`(`REF.FUNC`_instr(funcidx), $free_funcidx(funcidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_59: + `%%`(`REF.I31`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_60{sx : sx}: + `%%`(`I31.GET`_instr(sx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_61{typeidx : uN}: + `%%`(`STRUCT.NEW`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_62{typeidx : uN}: + `%%`(`STRUCT.NEW_DEFAULT`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_63{`sx?` : sx?, typeidx : uN, u32 : uN}: + `%%`(`STRUCT.GET`_instr(sx#45970?{sx#45970 <- `sx?`}, typeidx, u32), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_64{typeidx : uN, u32 : uN}: + `%%`(`STRUCT.SET`_instr(typeidx, u32), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_65{typeidx : uN}: + `%%`(`ARRAY.NEW`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_66{typeidx : uN}: + `%%`(`ARRAY.NEW_DEFAULT`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_67{typeidx : uN, u32 : uN}: + `%%`(`ARRAY.NEW_FIXED`_instr(typeidx, u32), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_68{typeidx : uN, dataidx : uN}: + `%%`(`ARRAY.NEW_DATA`_instr(typeidx, dataidx), $free_typeidx(typeidx) +++ $free_dataidx(dataidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_69{typeidx : uN, elemidx : uN}: + `%%`(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx), $free_typeidx(typeidx) +++ $free_elemidx(elemidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_70{`sx?` : sx?, typeidx : uN}: + `%%`(`ARRAY.GET`_instr(sx#45971?{sx#45971 <- `sx?`}, typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_71{typeidx : uN}: + `%%`(`ARRAY.SET`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_72: + `%%`(`ARRAY.LEN`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_73{typeidx : uN}: + `%%`(`ARRAY.FILL`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_74{typeidx_1 : uN, typeidx_2 : uN}: + `%%`(`ARRAY.COPY`_instr(typeidx_1, typeidx_2), $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_75{typeidx : uN, dataidx : uN}: + `%%`(`ARRAY.INIT_DATA`_instr(typeidx, dataidx), $free_typeidx(typeidx) +++ $free_dataidx(dataidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_76{typeidx : uN, elemidx : uN}: + `%%`(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx), $free_typeidx(typeidx) +++ $free_elemidx(elemidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_77: + `%%`(`EXTERN.CONVERT_ANY`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_78: + `%%`(`ANY.CONVERT_EXTERN`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_79{localidx : uN}: + `%%`(`LOCAL.GET`_instr(localidx), $free_localidx(localidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_80{localidx : uN}: + `%%`(`LOCAL.SET`_instr(localidx), $free_localidx(localidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_81{localidx : uN}: + `%%`(`LOCAL.TEE`_instr(localidx), $free_localidx(localidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_82{globalidx : uN}: + `%%`(`GLOBAL.GET`_instr(globalidx), $free_globalidx(globalidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_83{globalidx : uN}: + `%%`(`GLOBAL.SET`_instr(globalidx), $free_globalidx(globalidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_84{tableidx : uN}: + `%%`(`TABLE.GET`_instr(tableidx), $free_tableidx(tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_85{tableidx : uN}: + `%%`(`TABLE.SET`_instr(tableidx), $free_tableidx(tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_86{tableidx : uN}: + `%%`(`TABLE.SIZE`_instr(tableidx), $free_tableidx(tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_87{tableidx : uN}: + `%%`(`TABLE.GROW`_instr(tableidx), $free_tableidx(tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_88{tableidx : uN}: + `%%`(`TABLE.FILL`_instr(tableidx), $free_tableidx(tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_89{tableidx_1 : uN, tableidx_2 : uN}: + `%%`(`TABLE.COPY`_instr(tableidx_1, tableidx_2), $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_90{tableidx : uN, elemidx : uN}: + `%%`(`TABLE.INIT`_instr(tableidx, elemidx), $free_tableidx(tableidx) +++ $free_elemidx(elemidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_91{elemidx : uN}: + `%%`(`ELEM.DROP`_instr(elemidx), $free_elemidx(elemidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_92{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg}: + `%%`(LOAD_instr(numtype, loadop#1?{loadop#1 <- `loadop?`}, memidx, memarg), $free_numtype(numtype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_93{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg}: + `%%`(STORE_instr(numtype, storeop#1?{storeop#1 <- `storeop?`}, memidx, memarg), $free_numtype(numtype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_94{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg}: + `%%`(VLOAD_instr(vectype, vloadop#1?{vloadop#1 <- `vloadop?`}, memidx, memarg), $free_vectype(vectype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_95{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}: + `%%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx), $free_vectype(vectype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_96{vectype : vectype, memidx : uN, memarg : memarg}: + `%%`(VSTORE_instr(vectype, memidx, memarg), $free_vectype(vectype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_97{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}: + `%%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx), $free_vectype(vectype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_98{memidx : uN}: + `%%`(`MEMORY.SIZE`_instr(memidx), $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_99{memidx : uN}: + `%%`(`MEMORY.GROW`_instr(memidx), $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_100{memidx : uN}: + `%%`(`MEMORY.FILL`_instr(memidx), $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_101{memidx_1 : uN, memidx_2 : uN}: + `%%`(`MEMORY.COPY`_instr(memidx_1, memidx_2), $free_memidx(memidx_1) +++ $free_memidx(memidx_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_102{memidx : uN, dataidx : uN}: + `%%`(`MEMORY.INIT`_instr(memidx, dataidx), $free_memidx(memidx) +++ $free_dataidx(dataidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_103{dataidx : uN}: + `%%`(`DATA.DROP`_instr(dataidx), $free_dataidx(dataidx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation fun_free_block: `%%`(instr*, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule fun_free_block_case_0{`instr*` : instr*, `var_5*` : free*, `var_4*` : free*, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : labelidx*}: + `%%`(instr#4*{instr#4 <- `instr*`}, free[LABELS_free = var_0]) + -- let{free : free} free = var_1 + -- wf_free: `%`(var_3) + -- (wf_free: `%`(var_5))*{var_5 <- `var_5*`} + -- (fun_free_instr: `%%`(instr#7, var_5))*{var_5 <- `var_5*`, instr#7 <- `instr*`} + -- (fun_free_instr: `%%`(instr#6, var_4))*{var_4 <- `var_4*`, instr#6 <- `instr*`} + -- fun_free_list: `%%`(var_4*{var_4 <- `var_4*`}, var_3) + -- (fun_free_instr: `%%`(instr#5, var_2))*{var_2 <- `var_2*`, instr#5 <- `instr*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_shift_labelidxs: `%%`(free.LABELS_free, var_0) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation free_instr_is_wf: `%%`(instr : instr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule free_instr_is_wf_0{instr : instr, ret_val : free, var_0 : free}: + `%%`(instr, ret_val) + -- wf_instr: `%`(instr) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_instr: `%%`(instr, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation free_block_is_wf: `%%`(var_0 : instr*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule free_block_is_wf_0{var_0 : instr*, ret_val : free, var_1 : free}: + `%%`(var_0, ret_val) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_free: `%`(ret_val) + -- fun_free_block: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_expr: `%%`(expr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_expr_case_0{`instr*` : instr*, `var_1*` : free*, var_0 : free}: + `%%`(instr#8*{instr#8 <- `instr*`}, var_0) + -- (fun_free_instr: `%%`(instr, var_1))*{var_1 <- `var_1*`, instr <- `instr*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_expr_is_wf: `%%`(expr : expr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_expr_is_wf_0{expr : expr, ret_val : free, var_0 : free}: + `%%`(expr, ret_val) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_expr: `%%`(expr, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elemmode = + | ACTIVE(tableidx : tableidx, expr : expr) + | PASSIVE + | DECLARE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elemmode: `%`(elemmode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_0{tableidx : tableidx, expr : expr}: + `%`(ACTIVE_elemmode(tableidx, expr)) + -- wf_uN: `%%`(32, tableidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_1: + `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_2: + `%`(DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax datamode = + | ACTIVE(memidx : memidx, expr : expr) + | PASSIVE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_datamode: `%`(datamode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_0{memidx : memidx, expr : expr}: + `%`(ACTIVE_datamode(memidx, expr)) + -- wf_uN: `%%`(32, memidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_1: + `%`(PASSIVE_datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax type = + | TYPE(rectype : rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax tag = + | TAG(tagtype : tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_tag: `%`(tag) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule tag_case_0{tagtype : tagtype}: + `%`(TAG_tag(tagtype)) + -- wf_typeuse: `%`(tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax global = + | GLOBAL(globaltype : globaltype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_global: `%`(global) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule global_case_0{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax mem = + | MEMORY(memtype : memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_mem: `%`(mem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule mem_case_0{memtype : memtype}: + `%`(MEMORY_mem(memtype)) + -- wf_memtype: `%`(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax table = + | TABLE(tabletype : tabletype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_table: `%`(table) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule table_case_0{tabletype : tabletype, expr : expr}: + `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax data = + | DATA(`byte*` : byte*, datamode : datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_data: `%`(data) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule data_case_0{`byte*` : byte*, datamode : datamode}: + `%`(DATA_data(`byte*`, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax local = + | LOCAL(valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_local: `%`(local) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule local_case_0{valtype : valtype}: + `%`(LOCAL_local(valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax func = + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_func: `%`(func) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule func_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_func(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elem = + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elem: `%`(elem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_elem(reftype, `expr*`, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax start = + | START(funcidx : funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_start: `%`(start) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule start_case_0{funcidx : funcidx}: + `%`(START_start(funcidx)) + -- wf_uN: `%%`(32, funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax import = + | IMPORT(name : name, name : name, externtype : externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_import: `%`(import) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule import_case_0{name : name, name_0 : name, externtype : externtype}: + `%`(IMPORT_import(name, name_0, externtype)) + -- wf_name: `%`(name) + -- wf_name: `%`(name_0) + -- wf_externtype: `%`(externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax export = + | EXPORT(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_export: `%`(export) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule export_case_0{name : name, externidx : externidx}: + `%`(EXPORT_export(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax module = + | MODULE(list(syntax type), list(syntax import), list(syntax tag), list(syntax global), list(syntax mem), list(syntax table), list(syntax func), list(syntax data), list(syntax elem), `start?` : start?, list(syntax export)) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_module: `%`(module) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule module_case_0{var_0 : list(syntax type), var_1 : list(syntax import), var_2 : list(syntax tag), var_3 : list(syntax global), var_4 : list(syntax mem), var_5 : list(syntax table), var_6 : list(syntax func), var_7 : list(syntax data), var_8 : list(syntax elem), `start?` : start?, var_9 : list(syntax export)}: + `%`(MODULE_module(var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, `start?`, var_9)) + -- (wf_start: `%`(start))?{start <- `start?`} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_type: `%%`(type, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_type_case_0{rectype : rectype, var_0 : free}: + `%%`(TYPE_type(rectype), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_type_is_wf: `%%`(type : type, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_type_is_wf_0{type : type, ret_val : free, var_0 : free}: + `%%`(type, ret_val) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_type: `%%`(type, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_tag: `%%`(tag, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_tag_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_tag(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_tag_is_wf: `%%`(tag : tag, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_tag_is_wf_0{tag : tag, ret_val : free, var_0 : free}: + `%%`(tag, ret_val) + -- wf_tag: `%`(tag) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_tag: `%%`(tag, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_global: `%%`(global, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_global_case_0{globaltype : globaltype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(GLOBAL_global(globaltype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_globaltype: `%%`(globaltype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_global_is_wf: `%%`(global : global, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_global_is_wf_0{global : global, ret_val : free, var_0 : free}: + `%%`(global, ret_val) + -- wf_global: `%`(global) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_global: `%%`(global, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_mem(mem : mem) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_mem_is_wf: `%%`(mem : mem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_mem_is_wf_0{mem : mem, ret_val : free}: + `%%`(mem, ret_val) + -- wf_mem: `%`(mem) + -- if (ret_val = $free_mem(mem)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_table: `%%`(table, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_table_case_0{tabletype : tabletype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(TABLE_table(tabletype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_tabletype: `%%`(tabletype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_table_is_wf: `%%`(table : table, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_table_is_wf_0{table : table, ret_val : free, var_0 : free}: + `%%`(table, ret_val) + -- wf_table: `%`(table) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_table: `%%`(table, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_local: `%%`(local, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_local_case_0{t : valtype, var_0 : free}: + `%%`(LOCAL_local(t), var_0) + -- fun_free_valtype: `%%`(t, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_local_is_wf: `%%`(local : local, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_local_is_wf_0{local : local, ret_val : free, var_0 : free}: + `%%`(local, ret_val) + -- wf_local: `%`(local) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_local: `%%`(local, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_func: `%%`(func, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_func_case_0{typeidx : uN, `local*` : local*, expr : instr*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(FUNC_func(typeidx, local#1*{local#1 <- `local*`}, expr), $free_typeidx(typeidx) +++ var_0 +++ var_2[LOCALS_free = []]) + -- fun_free_block: `%%`(expr, var_2) + -- (fun_free_local: `%%`(local, var_1))*{var_1 <- `var_1*`, local <- `local*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_func_is_wf: `%%`(func : func, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_func_is_wf_0{func : func, ret_val : free, var_0 : free}: + `%%`(func, ret_val) + -- wf_func: `%`(func) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_func: `%%`(func, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_datamode: `%%`(datamode, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_datamode_case_0{memidx : uN, expr : instr*, var_0 : free}: + `%%`(ACTIVE_datamode(memidx, expr), $free_memidx(memidx) +++ var_0) + -- fun_free_expr: `%%`(expr, var_0) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_datamode_case_1: + `%%`(PASSIVE_datamode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_datamode_is_wf: `%%`(datamode : datamode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_datamode_is_wf_0{datamode : datamode, ret_val : free, var_0 : free}: + `%%`(datamode, ret_val) + -- wf_datamode: `%`(datamode) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_datamode: `%%`(datamode, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_data: `%%`(data, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_data_case_0{`byte*` : byte*, datamode : datamode, var_0 : free}: + `%%`(DATA_data(byte#1*{byte#1 <- `byte*`}, datamode), var_0) + -- fun_free_datamode: `%%`(datamode, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_data_is_wf: `%%`(data : data, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_data_is_wf_0{data : data, ret_val : free, var_0 : free}: + `%%`(data, ret_val) + -- wf_data: `%`(data) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_data: `%%`(data, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_elemmode: `%%`(elemmode, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_0{tableidx : uN, expr : instr*, var_0 : free}: + `%%`(ACTIVE_elemmode(tableidx, expr), $free_tableidx(tableidx) +++ var_0) + -- fun_free_expr: `%%`(expr, var_0) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_1: + `%%`(PASSIVE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_2: + `%%`(DECLARE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elemmode_is_wf: `%%`(elemmode : elemmode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elemmode_is_wf_0{elemmode : elemmode, ret_val : free, var_0 : free}: + `%%`(elemmode, ret_val) + -- wf_elemmode: `%`(elemmode) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_elemmode: `%%`(elemmode, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_elem: `%%`(elem, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(ELEM_elem(reftype, expr#358*{expr#358 <- `expr*`}, elemmode), var_0 +++ var_1 +++ var_3) + -- fun_free_elemmode: `%%`(elemmode, var_3) + -- (fun_free_expr: `%%`(expr, var_2))*{var_2 <- `var_2*`, expr <- `expr*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elem_is_wf: `%%`(elem : elem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elem_is_wf_0{elem : elem, ret_val : free, var_0 : free}: + `%%`(elem, ret_val) + -- wf_elem: `%`(elem) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_elem: `%%`(elem, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_start(start : start) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_start_is_wf: `%%`(start : start, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_start_is_wf_0{start : start, ret_val : free}: + `%%`(start, ret_val) + -- wf_start: `%`(start) + -- if (ret_val = $free_start(start)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_import: `%%`(import, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_import_case_0{name_1 : name, name_2 : name, externtype : externtype, var_0 : free}: + `%%`(IMPORT_import(name_1, name_2, externtype), var_0) + -- fun_free_externtype: `%%`(externtype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_import_is_wf: `%%`(import : import, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_import_is_wf_0{import : import, ret_val : free, var_0 : free}: + `%%`(import, ret_val) + -- wf_import: `%`(import) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_import: `%%`(import, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_export(export : export) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_export_is_wf: `%%`(export : export, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_export_is_wf_0{export : export, ret_val : free}: + `%%`(export, ret_val) + -- wf_export: `%`(export) + -- if (ret_val = $free_export(export)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_module: `%%`(module, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_module_case_0{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, var_17 : free, `var_16*` : free*, var_15 : free, `var_14*` : free*, var_13 : free, `var_12*` : free*, var_11 : free, `var_10*` : free*, var_9 : free, `var_8*` : free*, var_7 : free, var_6 : free, `var_5*` : free*, var_4 : free, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(MODULE_module(`%`_list(type#1*{type#1 <- `type*`}), `%`_list(import#1*{import#1 <- `import*`}), `%`_list(tag#1*{tag#1 <- `tag*`}), `%`_list(global#1*{global#1 <- `global*`}), `%`_list(mem#1*{mem#1 <- `mem*`}), `%`_list(table#1*{table#1 <- `table*`}), `%`_list(func#1*{func#1 <- `func*`}), `%`_list(data#1*{data#1 <- `data*`}), `%`_list(elem#1*{elem#1 <- `elem*`}), start#1?{start#1 <- `start?`}, `%`_list(export#1*{export#1 <- `export*`})), var_0 +++ var_2 +++ var_4 +++ var_6 +++ var_7 +++ var_9 +++ var_11 +++ var_13 +++ $free_opt($free_start(start)?{start <- `start?`}) +++ var_15 +++ var_17) + -- fun_free_list: `%%`($free_export(export)*{export <- `export*`}, var_17) + -- (fun_free_import: `%%`(import, var_16))*{var_16 <- `var_16*`, import <- `import*`} + -- fun_free_list: `%%`(var_16*{var_16 <- `var_16*`}, var_15) + -- (fun_free_elem: `%%`(elem, var_14))*{var_14 <- `var_14*`, elem <- `elem*`} + -- fun_free_list: `%%`(var_14*{var_14 <- `var_14*`}, var_13) + -- (fun_free_data: `%%`(data, var_12))*{var_12 <- `var_12*`, data <- `data*`} + -- fun_free_list: `%%`(var_12*{var_12 <- `var_12*`}, var_11) + -- (fun_free_func: `%%`(func, var_10))*{var_10 <- `var_10*`, func <- `func*`} + -- fun_free_list: `%%`(var_10*{var_10 <- `var_10*`}, var_9) + -- (fun_free_table: `%%`(table, var_8))*{var_8 <- `var_8*`, table <- `table*`} + -- fun_free_list: `%%`(var_8*{var_8 <- `var_8*`}, var_7) + -- fun_free_list: `%%`($free_mem(mem)*{mem <- `mem*`}, var_6) + -- (fun_free_global: `%%`(global, var_5))*{var_5 <- `var_5*`, global <- `global*`} + -- fun_free_list: `%%`(var_5*{var_5 <- `var_5*`}, var_4) + -- (fun_free_tag: `%%`(tag, var_3))*{var_3 <- `var_3*`, tag <- `tag*`} + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- (fun_free_type: `%%`(type, var_1))*{var_1 <- `var_1*`, type <- `type*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_module_is_wf: `%%`(module : module, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_module_is_wf_0{module : module, ret_val : free, var_0 : free}: + `%%`(module, ret_val) + -- wf_module: `%`(module) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_module: `%%`(module, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_funcidx_module: `%%`(module, funcidx*) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_funcidx_module_case_0{module : module, var_0 : free}: + `%%`(module, var_0.FUNCS_free) + -- fun_free_module: `%%`(module, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_dataidx_funcs: `%%`(func*, dataidx*) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_dataidx_funcs_case_0{`func*` : func*, `var_1*` : free*, var_0 : free}: + `%%`(func#2*{func#2 <- `func*`}, var_0.DATAS_free) + -- (fun_free_func: `%%`(func, var_1))*{var_1 <- `var_1*`, func <- `func*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax init = + | SET + | UNSET + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax localtype = + | `%%`(init : init, valtype : valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_localtype: `%`(localtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule localtype_case_0{init : init, valtype : valtype}: + `%`(`%%`_localtype(init, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax instrtype = + | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : resulttype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_instrtype: `%`(instrtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule instrtype_case_0{resulttype : resulttype, `localidx*` : localidx*, resulttype_0 : resulttype}: + `%`(`%->_%%`_instrtype(resulttype, `localidx*`, resulttype_0)) + -- (wf_uN: `%%`(32, localidx))*{localidx <- `localidx*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax context = +{ + TYPES deftype*, + TAGS tagtype*, + GLOBALS globaltype*, + MEMS memtype*, + TABLES tabletype*, + FUNCS deftype*, + DATAS datatype*, + ELEMS elemtype*, + LOCALS localtype*, + LABELS resulttype*, + RETURN resulttype?, + REFS funcidx*, + RECS subtype* +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_context: `%`(context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule context_case_{var_0 : deftype*, var_1 : tagtype*, var_2 : globaltype*, var_3 : memtype*, var_4 : tabletype*, var_5 : deftype*, var_6 : datatype*, var_7 : elemtype*, var_8 : localtype*, var_9 : resulttype*, var_10 : resulttype?, var_11 : funcidx*, var_12 : subtype*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, RETURN var_10, REFS var_11, RECS var_12}) + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- (wf_globaltype: `%`(var_2))*{var_2 <- var_2} + -- (wf_memtype: `%`(var_3))*{var_3 <- var_3} + -- (wf_tabletype: `%`(var_4))*{var_4 <- var_4} + -- (wf_reftype: `%`(var_7))*{var_7 <- var_7} + -- (wf_localtype: `%`(var_8))*{var_8 <- var_8} + -- (wf_uN: `%%`(32, var_11))*{var_11 <- var_11} + -- (wf_subtype: `%`(var_12))*{var_12 <- var_12} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_with_locals_before_fun_with_locals_case_2: `%%%`(context, localidx*, localtype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_with_locals_case_1{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, var_0 : context?}: + `%%%`(C, [x_1] ++ x#1*{x#1 <- `x*`}, [lct_1] ++ lct#1*{lct#1 <- `lct*`}) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_with_locals_case_0{C : context}: + `%%%`(C, [], []) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation fun_with_locals: `%%%%`(context, localidx*, localtype*, context?) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_0{C : context}: + `%%%%`(C, [], [], ?(C)) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_1{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, var_0 : context?}: + `%%%%`(C, [x_1] ++ x#1*{x#1 <- `x*`}, [lct_1] ++ lct#1*{lct#1 <- `lct*`}, var_0) + -- fun_with_locals: `%%%%`(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}, var_0) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_2{x0 : context, x1 : localidx*, x2 : localtype*}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_with_locals_before_fun_with_locals_case_2: `%%%`(x0, x1, x2) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation with_locals_is_wf: `%%%%`(context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule with_locals_is_wf_0{context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context, var_2 : context?}: + `%%%%`(context, var_0, var_1, ret_val) + -- wf_context: `%`(context) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_localtype: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !(var_2)) + -- wf_context: `%`(ret_val) + -- fun_with_locals: `%%%%`(context, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 +relation fun_clos_deftypes: `%%`(deftype*, deftype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 + rule fun_clos_deftypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 + rule fun_clos_deftypes_case_1{`dt*` : deftype*, dt_n : deftype, var_1 : deftype*, var_0 : deftype}: + `%%`(dt#2*{dt#2 <- `dt*`} ++ [dt_n], dt'*{dt' <- `dt'*`} ++ [var_0]) + -- let{`dt'*` : deftype*} dt'#1*{dt'#1 <- `dt'*`} = var_1 + -- fun_clos_deftypes: `%%`(dt#3*{dt#3 <- `dt*`}, var_1) + -- fun_subst_all_deftype: `%%%`(dt_n, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_valtype: `%%%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_valtype_case_0{C : context, t : valtype, var_1 : deftype*, var_0 : valtype}: + `%%%`(C, t, var_0) + -- let{`dt*` : deftype*} dt#4*{dt#4 <- `dt*`} = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_valtype_is_wf: `%%%`(context : context, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_valtype_is_wf_0{context : context, valtype : valtype, ret_val : valtype, var_0 : valtype}: + `%%%`(context, valtype, ret_val) + -- wf_context: `%`(context) + -- wf_valtype: `%`(valtype) + -- if (ret_val = var_0) + -- wf_valtype: `%`(ret_val) + -- fun_clos_valtype: `%%%`(context, valtype, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_deftype: `%%%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_deftype_case_0{C : context, dt : deftype, var_1 : deftype*, var_0 : deftype}: + `%%%`(C, dt, var_0) + -- let{`dt'*` : deftype*} dt'#2*{dt'#2 <- `dt'*`} = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_deftype: `%%%`(dt, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_tagtype: `%%%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_tagtype_case_0{C : context, jt : typeuse, var_1 : deftype*, var_0 : tagtype}: + `%%%`(C, jt, var_0) + -- let{`dt*` : deftype*} dt#5*{dt#5 <- `dt*`} = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_tagtype: `%%%`(jt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_externtype: `%%%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_externtype_case_0{C : context, xt : externtype, var_1 : deftype*, var_0 : externtype}: + `%%%`(C, xt, var_0) + -- let{`dt*` : deftype*} dt#6*{dt#6 <- `dt*`} = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_externtype: `%%%`(xt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_externtype_is_wf: `%%%`(context : context, externtype : externtype, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_externtype_is_wf_0{context : context, externtype : externtype, ret_val : externtype, var_0 : externtype}: + `%%%`(context, externtype, ret_val) + -- wf_context: `%`(context) + -- wf_externtype: `%`(externtype) + -- if (ret_val = var_0) + -- wf_externtype: `%`(ret_val) + -- fun_clos_externtype: `%%%`(context, externtype, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_moduletype: `%%%`(context, moduletype, moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_moduletype_case_0{C : context, mmt : moduletype, var_1 : deftype*, var_0 : moduletype}: + `%%%`(C, mmt, var_0) + -- let{`dt*` : deftype*} dt#7*{dt#7 <- `dt*`} = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_moduletype: `%%%`(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_moduletype_is_wf: `%%%`(context : context, moduletype : moduletype, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_moduletype_is_wf_0{context : context, moduletype : moduletype, ret_val : moduletype, var_0 : moduletype}: + `%%%`(context, moduletype, ret_val) + -- wf_context: `%`(context) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = var_0) + -- wf_moduletype: `%`(ret_val) + -- fun_clos_moduletype: `%%%`(context, moduletype, var_0) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Numtype_ok: `%|-%:OK`(context, numtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, numtype : numtype}: + `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Vectype_ok: `%|-%:OK`(context, vectype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, vectype : vectype}: + `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypenat = + | OK(nat) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Packtype_ok: `%|-%:OK`(context, packtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, packtype : packtype}: + `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, packtype : packtype}: + `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, numtype : numtype}: + `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand: `%~~%`(deftype, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*, var_0 : subtype}: + `%~~%`(deftype, comptype) + -- if (var_0 = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- wf_subtype: `%`(var_0) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- fun_unrolldt: `%%`(deftype, var_0) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, vectype : vectype}: + `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $before(typeuse : typeuse, nat : nat) : bool + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{j : nat, i : nat}(REC_typeuse(j), i) = (j < i) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{typeuse : typeuse, i : nat}(typeuse, i) = true + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation fun_unrollht_: `%%%`(context, heaptype, subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht__case_0{rectype : rectype, n : n, C : context, var_0 : subtype}: + `%%%`(C, _DEF_heaptype(rectype, n), var_0) + -- fun_unrolldt: `%%`(_DEF_deftype(rectype, n), var_0) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht__case_1{C : context, typeidx : uN, var_0 : subtype}: + `%%%`(C, _IDX_heaptype(typeidx), var_0) + -- fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(typeidx).0], var_0) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht__case_2{C : context, i : nat}: + `%%%`(C, REC_heaptype(i), C.RECS_context[i]) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation unrollht__is_wf: `%%%`(context : context, heaptype : heaptype, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule unrollht__is_wf_0{context : context, heaptype : heaptype, ret_val : subtype, var_0 : subtype}: + `%%%`(context, heaptype, ret_val) + -- wf_context: `%`(context) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = var_0) + -- wf_subtype: `%`(ret_val) + -- fun_unrollht_: `%%%`(context, heaptype, var_0) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 +relation Heaptype_ok: `%|-%:OK`(context, heaptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 + rule abs{C : context, absheaptype : absheaptype}: + `%|-%:OK`(C, $heaptype_absheaptype(absheaptype)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 + rule typeuse{C : context, typeuse : typeuse}: + `%|-%:OK`(C, $heaptype_typeuse(typeuse)) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 +relation Reftype_ok: `%|-%:OK`(context, reftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:30.1-32.37 + rule _{C : context, heaptype : heaptype}: + `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- Heaptype_ok: `%|-%:OK`(C, heaptype) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 +relation Valtype_ok: `%|-%:OK`(context, valtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:34.1-36.35 + rule num{C : context, numtype : numtype}: + `%|-%:OK`(C, $valtype_numtype(numtype)) + -- Numtype_ok: `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 + rule vec{C : context, vectype : vectype}: + `%|-%:OK`(C, $valtype_vectype(vectype)) + -- Vectype_ok: `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 + rule ref{C : context, reftype : reftype}: + `%|-%:OK`(C, $valtype_reftype(reftype)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 +relation Typeuse_ok: `%|-%:OK`(context, typeuse) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:106.1-108.30 + rule typeidx{C : context, typeidx : typeidx, dt : deftype}: + `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 + rule rec{C : context, i : n, st : subtype}: + `%|-%:OK`(C, REC_typeuse(i)) + -- if (C.RECS_context[i] = st) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 + rule deftype{C : context, deftype : deftype}: + `%|-%:OK`(C, $typeuse_deftype(deftype)) + -- Deftype_ok: `%|-%:OK`(C, deftype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 +relation Resulttype_ok: `%|-%:OK`(context, resulttype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:60.1-62.32 + rule _{C : context, `t*` : valtype*}: + `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 +relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:130.1-132.43 + rule _{C : context, storagetype : storagetype}: + `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- Storagetype_ok: `%|-%:OK`(C, storagetype) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 +relation Storagetype_ok: `%|-%:OK`(context, storagetype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:122.1-124.35 + rule val{C : context, valtype : valtype}: + `%|-%:OK`(C, $storagetype_valtype(valtype)) + -- Valtype_ok: `%|-%:OK`(C, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 + rule pack{C : context, packtype : packtype}: + `%|-%:OK`(C, $storagetype_packtype(packtype)) + -- Packtype_ok: `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 +relation Comptype_ok: `%|-%:OK`(context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:135.1-137.42 + rule struct{C : context, `fieldtype*` : fieldtype*}: + `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 + rule array{C : context, fieldtype : fieldtype}: + `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 + rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 +relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:167.1-176.49 + rule _{C : context, `typeuse*` : typeuse*, comptype : comptype, i : nat, `comptype'*` : comptype*, `typeuse'**` : typeuse**, `var_0*` : subtype*}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype), OK_oktypenat(i)) + -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) + -- (Typeuse_ok: `%|-%:OK`(C, typeuse))*{typeuse <- `typeuse*`} + -- (if $before(typeuse, i))*{typeuse <- `typeuse*`} + -- (if (var_0 = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- wf_context: `%`(C) + -- (wf_subtype: `%`(var_0))*{var_0 <- `var_0*`} + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} + -- (fun_unrollht_: `%%%`(C, $heaptype_typeuse(typeuse), var_0))*{var_0 <- `var_0*`, typeuse <- `typeuse*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 +relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 + rule empty{C : context, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypenat(i)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypenat(i)) + -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) + -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypenat((i + 1))) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 +relation Deftype_ok: `%|-%:OK`(context, deftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:197.1-201.14 + rule _{C : context, rectype : rectype, i : n, n : n, `subtype*` : subtype*}: + `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) + -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) + -- if (i < n) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}}) + -- if (n = |`subtype*`|) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 +relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:181.1-183.41 + rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: + `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 + rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: + `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 + rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: + `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 +relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype, var_1 : deftype, var_0 : deftype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if (var_0 = var_1) + -- wf_context: `%`(C) + -- fun_clos_deftype: `%%%`(C, deftype_2, var_1) + -- fun_clos_deftype: `%%%`(C, deftype_1, var_0) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat, var_0 : subtype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if (var_0 = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(var_0) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- fun_unrolldt: `%%`(deftype_1, var_0) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 +relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 + rule refl{C : context, heaptype : heaptype}: + `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 + rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: + `%|-%<:%`(C, heaptype_1, heaptype_2) + -- Heaptype_ok: `%|-%:OK`(C, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 + rule `eq-any`{C : context}: + `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 + rule `i31-eq`{C : context}: + `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 + rule `struct-eq`{C : context}: + `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 + rule `array-eq`{C : context}: + `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 + rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, $heaptype_deftype(deftype), STRUCT_heaptype) + -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 + rule array{C : context, deftype : deftype, fieldtype : fieldtype}: + `%|-%<:%`(C, $heaptype_deftype(deftype), ARRAY_heaptype) + -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 + rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, $heaptype_deftype(deftype), FUNC_heaptype) + -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 + rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 + rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: + `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 + rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: + `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 + rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 + rule `rec-array`{C : context, i : n, `final?` : final?, fieldtype : fieldtype}: + `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 + rule `rec-func`{C : context, i : n, `final?` : final?, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 + rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: + `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[j])) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 + rule none{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NONE_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:86.1-89.25 + rule nofunc{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:91.1-94.25 + rule noexn{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:96.1-99.25 + rule noextern{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 + rule bot{C : context, heaptype : heaptype}: + `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 +relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:105.1-107.37 + rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 + rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 +relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:114.1-116.46 + rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: + `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) + -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 + rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: + `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) + -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 + rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: + `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 + rule bot{C : context, valtype : valtype}: + `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 +relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-137.37 + rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 +relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:162.1-164.46 + rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 + rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: + `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) + -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 +relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:171.1-173.40 + rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 + rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Localtype_ok: `%|-%:OK`(context, localtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, init : init, t : valtype}: + `%|-%:OK`(C, `%%`_localtype(init, t)) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Instrtype_ok: `%|-%:OK`(context, instrtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand_use: `%~~_%%`(typeuse, context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule deftype{deftype : deftype, C : context, comptype : comptype}: + `%~~_%%`($typeuse_deftype(deftype), C, comptype) + -- Expand: `%~~%`(deftype, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: + `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidx = + | OK(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation wf_oktypeidx: `%`(oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule oktypeidx_case_0{typeidx : typeidx}: + `%`(OK_oktypeidx(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `comptype'*` : comptype*, `yy**` : typeuse**, `var_0*` : subtype*}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- if (|x*{x <- `x*`}| <= 1) + -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} + -- (if (var_0 = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `yy*` <- `yy**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- wf_context: `%`(C) + -- (wf_subtype: `%`(var_0))*{var_0 <- `var_0*`} + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} + -- (fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(x).0], var_0))*{var_0 <- `var_0*`, x <- `x*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.126 +relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 + rule empty{C : context, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Limits_ok: `%|-%:%`(context, limits, nat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, n : n, `m?` : m?, k : nat}: + `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- if (n <= k) + -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tagtype_ok: `%|-%:OK`(context, tagtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, typeuse) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Globaltype_ok: `%|-%:OK`(context, globaltype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, t : valtype}: + `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Memtype_ok: `%|-%:OK`(context, memtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits}: + `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size($numtype_addrtype(addrtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tabletype_ok: `%|-%:OK`(context, tabletype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: + `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size($numtype_addrtype(addrtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Externtype_ok: `%|-%:OK`(context, externtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule tag{C : context, tagtype : tagtype}: + `%|-%:OK`(C, TAG_externtype(tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule global{C : context, globaltype : globaltype}: + `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mem{C : context, memtype : memtype}: + `%|-%:OK`(C, MEM_externtype(memtype)) + -- Memtype_ok: `%|-%:OK`(C, memtype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule table{C : context, tabletype : tabletype}: + `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: + `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- (wf_uN: `%%`(32, iter))*{iter <- $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Limits_sub: `%|-%<:%`(context, limits, limits) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + -- if (n_1 >= n_2) + -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule eps{C : context, n_1 : n, n_2 : n}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) + -- if (n_1 >= n_2) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: + `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: + `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: + `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: + `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: + `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: + `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule valtype{C : context, `valtype?` : valtype?}: + `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Catch_ok: `%|-%:OK`(context, catch) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_catch(x, l)) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all_ref{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +def $default_(valtype : valtype) : val?? + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(I32_valtype) = ?(?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(I64_valtype) = ?(?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(F32_valtype) = ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(F64_valtype) = ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(V128_valtype) = ?(?(VCONST_val(V128_vectype, `%`_vec_(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) + def $default_{x0 : valtype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation default__is_wf: `%%`(valtype : valtype, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule default__is_wf_0{valtype : valtype, ret_val : val?}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if (ret_val = !($default_(valtype))) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Defaultable: `|-%DEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%DEFAULTABLE`(t) + -- if (!($default_(t)) =/= ?()) + -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{n : n, m : m, at : addrtype, N : N}: + `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) + -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- if (m < (2 ^ $size($numtype_addrtype(at)))) + -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +def $is_packtype(storagetype : storagetype) : bool + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + def $is_packtype{zt : storagetype}(zt) = (zt =/= $storagetype_valtype($unpack(zt))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 +relation Instr_ok: `%|-%:%`(context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 + rule nop{C : context}: + `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 + rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 + rule drop{C : context, t : valtype}: + `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 + rule `select-expl`{C : context, t : valtype}: + `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 + rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Valtype_sub: `%|-%<:%`(C, t, t') + -- if ((t' = $valtype_numtype(numtype)) \/ (t' = $valtype_vectype(vectype))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 + rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 + rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 + rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 + rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 + rule br_if{C : context, l : labelidx, `t*` : valtype*}: + `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 + rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 + rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 + rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`($diffrt(rt_1, rt_2)) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 + rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 + rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 + rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: + `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 + rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 + rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 + rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 + rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 + rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 + rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 + rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 + rule `ref.null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.NULL`_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 + rule `ref.func`{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + -- if (x <- C.REFS_context) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.FUNC`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 + rule `ref.i31`{C : context}: + `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.I31`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 + rule `ref.is_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 + rule `ref.as_non_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 + rule `ref.eq`{C : context}: + `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 + rule `ref.test`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.TEST`_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 + rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.CAST`_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 + rule `i31.get`{C : context, sx : sx}: + `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 + rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 + rule `struct.new_default`{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} + -- wf_context: `%`(C) + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} + -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 + rule `struct.get`{C : context, `sx?` : sx?, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: + `%|-%:%`(C, `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 + rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*}: + `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 + rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 + rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype}: + `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 + rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 + rule `array.new_elem`{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: + `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) + -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 + rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 + rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 + rule `array.set`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 + rule `array.len`{C : context}: + `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.LEN`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 + rule `array.fill`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 + rule `array.copy`{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 + rule `array.init_elem`{C : context, x : idx, y : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 + rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 + rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + -- wf_context: `%`(C) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 + rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 + rule `local.get`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 + rule `local.set`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 + rule `local.tee`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 + rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: + `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 + rule `global.set`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 + rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 + rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 + rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 + rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: + `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.GROW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 + rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 + rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) + -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 + rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) + -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 + rule `elem.drop`{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: + `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) + -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + rule `data.drop`{C : context, x : idx}: + `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) + -- wf_context: `%`(C) + -- wf_instr: `%`(`DATA.DROP`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 + rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 + rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 + rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 + rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 + rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 + rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 + rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 + rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 + rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 + rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 + rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 + rule unop{C : context, nt : numtype, unop_nt : unop_}: + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 + rule binop{C : context, nt : numtype, binop_nt : binop_}: + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 + rule testop{C : context, nt : numtype, testop_nt : testop_}: + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 + rule relop{C : context, nt : numtype, relop_nt : relop_}: + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 + rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 + rule vconst{C : context, c : vec_}: + `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 + rule vvunop{C : context, vvunop : vvunop}: + `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 + rule vvbinop{C : context, vvbinop : vvbinop}: + `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 + rule vvternop{C : context, vvternop : vvternop}: + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 + rule vvtestop{C : context, vvtestop : vvtestop}: + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 + rule vunop{C : context, sh : shape, vunop : vunop_}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 + rule vternop{C : context, sh : shape, vternop : vternop_}: + `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 + rule vbitmask{C : context, sh : ishape}: + `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 + rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 + rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: + `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} + -- wf_context: `%`(C) + -- wf_dim: `%`($dim($proj_bshape_0(sh).0)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 + rule vsplat{C : context, sh : shape}: + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 + rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- wf_context: `%`(C) + -- wf_dim: `%`($dim(sh)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 + rule vreplace_lane{C : context, sh : shape, i : laneidx}: + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- wf_context: `%`(C) + -- wf_dim: `%`($dim(sh)) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 + rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 + rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 + rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 + rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 + rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 +relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 + rule empty{C : context}: + `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 + rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*, var_0 : context?}: + `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- Instrs_ok: `%|-%:%`(!(var_0), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_context: `%`(!(var_0)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- fun_with_locals: `%%%%`(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 + rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 + rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) +} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok: `%|-%:%`(context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*, `t*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%NONDEFAULTABLE`(t) + -- if (!($default_(t)) = ?()) + -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Instr_const: `%|-%CONST`(context, instr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule vconst{C : context, vt : vectype, c_vt : vec_}: + `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.null`{C : context, ht : heaptype}: + `%|-%CONST`(C, `REF.NULL`_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.NULL`_instr(ht)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.i31`{C : context}: + `%|-%CONST`(C, `REF.I31`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.I31`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.func`{C : context, x : idx}: + `%|-%CONST`(C, `REF.FUNC`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.FUNC`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `struct.new`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `struct.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new_fixed`{C : context, x : idx, n : n}: + `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `any.convert_extern`{C : context}: + `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `extern.convert_any`{C : context}: + `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `global.get`{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule binop{C : context, Inn : Inn, binop : binop_}: + `%|-%CONST`(C, BINOP_instr($numtype_addrtype(Inn), binop)) + -- if (Inn <- [I32_Inn I64_Inn]) + -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr($numtype_addrtype(Inn), binop)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, MUL_binop_Inn)) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_const: `%|-%CONST`(context, expr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*}: + `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, expr : expr, t : valtype}: + `%|-%:%CONST`(C, expr, t) + -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) + -- Expr_const: `%|-%CONST`(C, expr) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Type_ok: `%|-%:%`(context, type, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx, var_0 : deftype*}: + `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- if ($proj_uN_0(x).0 = |C.TYPES_context|) + -- if (dt*{dt <- `dt*`} = var_0) + -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- fun_rolldt: `%%%`(x, rectype, var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Tag_ok: `%|-%:%`(context, tag, tagtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tagtype : tagtype, var_0 : tagtype}: + `%|-%:%`(C, TAG_tag(tagtype), var_0) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(var_0) + -- wf_tag: `%`(TAG_tag(tagtype)) + -- fun_clos_tagtype: `%%%`(C, tagtype, var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Global_ok: `%|-%:%`(context, global, globaltype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: + `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Mem_ok: `%|-%:%`(context, mem, memtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, memtype : memtype}: + `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- Memtype_ok: `%|-%:OK`(C, memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Table_ok: `%|-%:%`(context, table, tabletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- if (tabletype = `%%%`_tabletype(at, lim, rt)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(rt)) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Local_ok: `%|-%:%`(context, local, localtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule set{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- Defaultable: `|-%DEFAULTABLE`(t) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule unset{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- Nondefaultable: `|-%NONDEFAULTABLE`(t) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Func_ok: `%|-%:%`(context, func, deftype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Datamode_ok: `%|-%:%`(context, datamode, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context}: + `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: + `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Data_ok: `%|-%:%`(context, data, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, `b*` : byte*, datamode : datamode}: + `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context, rt : reftype}: + `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule declare{C : context, rt : reftype}: + `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: + `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elem_ok: `%|-%:%`(context, elem, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: + `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- Reftype_ok: `%|-%:OK`(C, elemtype) + -- (Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(elemtype)))*{expr <- `expr*`} + -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Start_ok: `%|-%:OK`(context, start) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx}: + `%|-%:OK`(C, START_start(x)) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Import_ok: `%|-%:%`(context, import, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name_1 : name, name_2 : name, xt : externtype, var_0 : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), var_0) + -- Externtype_ok: `%|-%:OK`(C, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(var_0) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) + -- fun_clos_externtype: `%%%`(C, xt, var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Externidx_ok: `%|-%:%`(context, externidx, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule tag{C : context, x : idx, jt : tagtype}: + `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule global{C : context, x : idx, gt : globaltype}: + `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mem{C : context, x : idx, mt : memtype}: + `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule table{C : context, x : idx, tt : tabletype}: + `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Export_ok: `%|-%:%%`(context, export, name, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name : name, externidx : externidx, xt : externtype}: + `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- Externidx_ok: `%|-%:%`(C, externidx, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 +relation Globals_ok: `%|-%:%`(context, global*, globaltype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 + rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: + `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- Global_ok: `%|-%:%`(C, global_1, gt_1) + -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 +relation Types_ok: `%|-%:%`(context, type*, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 + rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: + `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) + -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +syntax nonfuncs = + | `%%%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation wf_nonfuncs: `%`(nonfuncs) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}: + `%`(`%%%%%%`_nonfuncs(`global*`, `mem*`, `table*`, `elem*`, `start?`, `export*`)) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_mem: `%`(mem))*{mem <- `mem*`} + -- (wf_table: `%`(table))*{table <- `table*`} + -- (wf_elem: `%`(elem))*{elem <- `elem*`} + -- (wf_start: `%`(start))?{start <- `start?`} + -- (wf_export: `%`(export))*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule fun_funcidx_nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*, var_0 : funcidx*}: + `%%`(`%%%%%%`_nonfuncs(global#2*{global#2 <- `global*`}, mem#2*{mem#2 <- `mem*`}, table#2*{table#2 <- `table*`}, elem#2*{elem#2 <- `elem*`}, start#2?{start#2 <- `start?`}, export#2*{export#2 <- `export*`}), var_0) + -- fun_funcidx_module: `%%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Module_ok: `|-%:%`(module, moduletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*, var_6 : deftype*, var_5 : tabletype*, var_4 : memtype*, var_3 : globaltype*, var_2 : tagtype*, var_1 : funcidx*, var_0 : moduletype}: + `|-%:%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) + -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) + -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} + -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} + -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} + -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} + -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} + -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} + -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} + -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} + -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) + -- if (C = C' +++ {TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) + -- if (x*{x <- `x*`} = var_1) + -- if (jt_I*{jt_I <- `jt_I*`} = var_2) + -- if (gt_I*{gt_I <- `gt_I*`} = var_3) + -- if (mt_I*{mt_I <- `mt_I*`} = var_4) + -- if (tt_I*{tt_I <- `tt_I*`} = var_5) + -- if (dt_I*{dt_I <- `dt_I*`} = var_6) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_moduletype: `%`(var_0) + -- (wf_uN: `%%`(32, iter))*{iter <- var_1} + -- (wf_typeuse: `%`(iter))*{iter <- var_2} + -- (wf_globaltype: `%`(iter))*{iter <- var_3} + -- (wf_memtype: `%`(iter))*{iter <- var_4} + -- (wf_tabletype: `%`(iter))*{iter <- var_5} + -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) + -- wf_nonfuncs: `%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- fun_funcsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_6) + -- fun_tablesxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_5) + -- fun_memsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_4) + -- fun_globalsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_3) + -- fun_tagsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_2) + -- fun_funcidx_nonfuncs: `%%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_1) + -- fun_clos_moduletype: `%%%`(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}), var_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed2 = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed2_0(x : relaxed2) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed2_0{v_num_0 : nat}(`%`_relaxed2(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed2: `%`(relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed2_case_0{i : nat}: + `%`(`%`_relaxed2(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed4 = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed4_0(x : relaxed4) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed4_0{v_num_0 : nat}(`%`_relaxed4(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed4: `%`(relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed4_case_0{i : nat}: + `%`(`%`_relaxed4(i)) + -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = (if $ND then [X_1 X_2][$proj_relaxed2_0(i).0] else [X_1 X_2][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][$proj_relaxed4_0(i).0] else [X_1 X_2 X_3 X_4][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmadd : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmadd_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmadd_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_fmadd) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmin : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmin_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmin_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmin) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmax : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmax_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmax_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmax) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_idot : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_idot_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_idot_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_idot) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_iq15mulr : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_iq15mulr_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_iq15mulr_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_iq15mulr) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_u : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_u_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_u_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_trunc_u) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_s : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_s_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_s_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_trunc_s) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_swizzle : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_swizzle_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_swizzle_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_swizzle) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_laneselect : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_laneselect_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_laneselect_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_laneselect) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $s33_to_u32(s33 : s33) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibits_(N : N, iN : iN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibits__is_wf: `%%%`(N : N, iN : iN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibits__is_wf_0{N : N, iN : iN, ret_val : bit*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibits_(N, iN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbits_(N : N, fN : fN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbits__is_wf: `%%%`(N : N, fN : fN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbits__is_wf_0{N : N, fN : fN, ret_val : bit*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbits_(N, fN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibytes_(N : N, iN : iN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibytes__is_wf: `%%%`(N : N, iN : iN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibytes__is_wf_0{N : N, iN : iN, ret_val : byte*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibytes_(N, iN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbytes_(N : N, fN : fN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbytes__is_wf: `%%%`(N : N, fN : fN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbytes__is_wf_0{N : N, fN : fN, ret_val : byte*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbytes_(N, fN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $nbytes_(numtype : numtype, num_ : num_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation nbytes__is_wf: `%%%`(numtype : numtype, num_ : num_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule nbytes__is_wf_0{numtype : numtype, num_ : num_, ret_val : byte*}: + `%%%`(numtype, num_, ret_val) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $nbytes_(numtype, num_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $vbytes_(vectype : vectype, vec_ : vec_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation vbytes__is_wf: `%%%`(vectype : vectype, vec_ : vec_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule vbytes__is_wf_0{vectype : vectype, vec_ : vec_, ret_val : byte*}: + `%%%`(vectype, vec_, ret_val) + -- wf_uN: `%%`($vsize(vectype), vec_) + -- if (ret_val = $vbytes_(vectype, vec_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zbytes__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zbytes__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : byte*}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $zbytes_(storagetype, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cbytes__is_wf: `%%%`(Cnn : Cnn, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cbytes__is_wf_0{Cnn : Cnn, lit_ : lit_, ret_val : byte*}: + `%%%`(Cnn, lit_, ret_val) + -- wf_lit_: `%%`($storagetype_Cnn(Cnn), lit_) + -- if (ret_val = $cbytes_(Cnn, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibits_(N : N, bit*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbits_(N : N, bit*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbits__is_wf: `%%%`(N : N, var_0 : bit*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbits__is_wf_0{N : N, var_0 : bit*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_bit: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbits_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibytes_(N : N, byte*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbytes_(N : N, byte*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbytes__is_wf: `%%%`(N : N, var_0 : byte*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbytes__is_wf_0{N : N, var_0 : byte*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbytes_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_nbytes_(numtype : numtype, byte*) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_nbytes__is_wf: `%%%`(numtype : numtype, var_0 : byte*, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_nbytes__is_wf_0{numtype : numtype, var_0 : byte*, ret_val : num_}: + `%%%`(numtype, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_nbytes_(numtype, var_0)) + -- wf_num_: `%%`(numtype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_vbytes_(vectype : vectype, byte*) : vec_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_zbytes__is_wf: `%%%`(storagetype : storagetype, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_zbytes__is_wf_0{storagetype : storagetype, var_0 : byte*, ret_val : lit_}: + `%%%`(storagetype, var_0, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_zbytes_(storagetype, var_0)) + -- wf_lit_: `%%`(storagetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_cbytes__is_wf: `%%%`(Cnn : Cnn, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_cbytes__is_wf_0{Cnn : Cnn, var_0 : byte*, ret_val : lit_}: + `%%%`(Cnn, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_cbytes_(Cnn, var_0)) + -- wf_lit_: `%%`($storagetype_Cnn(Cnn), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_signed_: `%%%`(N, nat, int) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_signed__case_0{N : nat, i : nat}: + `%%%`(N, i, (i : nat <:> int)) + -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_signed__case_1{N : nat, i : nat}: + `%%%`(N, i, ((i : nat <:> int) - ((2 ^ N) : nat <:> int))) + -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_inv_signed_: `%%%`(N, int, nat) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_inv_signed__case_0{N : nat, i : int}: + `%%%`(N, i, (i : int <:> nat)) + -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_inv_signed__case_1{N : nat, i : int}: + `%%%`(N, i, ((i + ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sx(storagetype : storagetype) : sx?? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(F32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(F64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(V128_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I8_storagetype) = ?(?(S_sx)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I16_storagetype) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zero(lanetype : lanetype) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zero_is_wf: `%%`(lanetype : lanetype, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zero_is_wf_0{lanetype : lanetype, ret_val : lane_}: + `%%`(lanetype, ret_val) + -- if (ret_val = $zero(lanetype)) + -- wf_lane_: `%%`(lanetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $bool(bool : bool) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(false) = 0 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(true) = 1 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $truncz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ceilz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_u_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_u_{N : nat, i : int}(N, i) = (if (i < (0 : nat <:> int)) then 0 else (if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) then ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) else (i : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_s_(N : N, int : int) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_s_{N : nat, i : int}(N, i) = (if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) then - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) else (if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) then (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) else i)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ineg_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iabs_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iabs_{N : nat, i_1 : uN, var_0 : int}(N, i_1) = (if (var_0 >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iclz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ictz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ipopcnt_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_iextend_: `%%%%%`(N, M, sx, iN, iN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_iextend__case_0{N : nat, M : nat, i : uN}: + `%%%%%`(N, M, U_sx, i, `%`_iN(($proj_uN_0(i).0 \ (2 ^ M)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_iextend__case_1{N : nat, M : nat, i : uN, var_1 : int, var_0 : nat}: + `%%%%%`(N, M, S_sx, i, `%`_iN(var_0)) + -- fun_signed_: `%%%`(M, ($proj_uN_0(i).0 \ (2 ^ M)), var_1) + -- fun_inv_signed_: `%%%`(N, var_1, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imul_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_3{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: + `%%%%%`(N, S_sx, i_1, i_2, ?()) + -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_4{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_3{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- if ((j_1 = var_1) /\ (j_2 = var_2)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 <= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 >= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 + var_2)), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 - var_2)), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_q15mulr_(N : N, sx : sx, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iavgr_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inot_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irev_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iand_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iandnot_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ior_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ixor_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishl_(N : N, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishr_(N : N, sx : sx, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotl_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotr_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibitselect_(N : N, iN : iN, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieqz_(N : N, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inez_(N : N, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieq_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ine_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 < var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 > var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 <= var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 >= var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fabs_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fabs__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fabs__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fabs_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fneg_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fneg__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fneg__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fneg_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsqrt_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsqrt__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsqrt__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fsqrt_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fceil_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fceil__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fceil__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fceil_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ffloor_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ffloor__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ffloor__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ffloor_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ftrunc_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ftrunc__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ftrunc__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ftrunc_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fnearest_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fnearest__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fnearest__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fnearest_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fadd_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fadd__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fadd__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fadd_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsub_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsub__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsub__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fsub_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmul_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmul__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmul__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmul_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fdiv_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fdiv__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fdiv__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fdiv_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmin__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmax__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmin__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmax__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_min__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_min__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_min_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_max__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_max__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_max_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fcopysign_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fcopysign__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fcopysign__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fcopysign_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $feq_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fne_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $flt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fgt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fle_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fge_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_madd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_madd__is_wf_0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_madd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_nmadd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_nmadd__is_wf_0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_nmadd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $wrap__(M : M, N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $extend__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc_sat__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $demote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation demote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule demote___is_wf_0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $demote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $promote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation promote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule promote___is_wf_0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $promote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $convert__(M : M, N : N, sx : sx, iN : iN) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation convert___is_wf: `%%%%%`(M : M, N : N, sx : sx, iN : iN, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule convert___is_wf_0{M : M, N : N, sx : sx, iN : iN, ret_val : fN}: + `%%%%%`(M, N, sx, iN, ret_val) + -- wf_uN: `%%`(M, iN) + -- if (ret_val = $convert__(M, N, sx, iN)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation reinterpret___is_wf: `%%%%`(numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule reinterpret___is_wf_0{numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_}: + `%%%%`(numtype_1, numtype_2, num_, ret_val) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $reinterpret__(numtype_1, numtype_2, num_)) + -- wf_num_: `%%`(numtype_2, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lpacknum__is_wf: `%%%`(lanetype : lanetype, num_ : num_, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lpacknum__is_wf_0{lanetype : lanetype, num_ : num_, ret_val : lane_}: + `%%%`(lanetype, num_, ret_val) + -- wf_num_: `%%`($lunpack(lanetype), num_) + -- if (ret_val = $lpacknum_(lanetype, num_)) + -- wf_lane_: `%%`(lanetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(I32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(I64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(F32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(F64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(V128_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cpacknum__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(storagetype))), lit_) + -- if (ret_val = $cpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`(storagetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(I32_lanetype, mk_lane__0_lane_(I32_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(I64_lanetype, mk_lane__0_lane_(I64_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(F32_lanetype, mk_lane__0_lane_(F32_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lunpacknum__is_wf: `%%%`(lanetype : lanetype, lane_ : lane_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lunpacknum__is_wf_0{lanetype : lanetype, lane_ : lane_, ret_val : num_}: + `%%%`(lanetype, lane_, ret_val) + -- wf_lane_: `%%`(lanetype, lane_) + -- if (ret_val = $lunpacknum_(lanetype, lane_)) + -- wf_num_: `%%`($lunpack(lanetype), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(I32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(I64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(F32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(F64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(V128_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cunpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cunpacknum__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $cunpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(storagetype))), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_0{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_1{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_2{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_3{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_4{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_5{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_6{M : nat, i : uN, var_0 : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_7{M : nat, i : uN, var_0 : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_8{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#1)*{iter_0#1 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_9{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_10{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#3)*{iter_0#3 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_11{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_12{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#5)*{iter_0#5 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_13{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#6)*{iter_0#6 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_14{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#7)*{iter_0#7 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_15{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_16{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#9)*{iter_0#9 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_17{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#10)*{iter_0#10 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_18{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#11)*{iter_0#11 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_19{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_20{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#13)*{iter_0#13 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_21{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#14)*{iter_0#14 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation unop__is_wf: `%%%%`(numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule unop__is_wf_0{numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*, var_0 : num_*}: + `%%%%`(numtype, unop_, num_, ret_val) + -- wf_unop_: `%%`(numtype, unop_) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = var_0) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} + -- fun_unop_: `%%%%`(numtype, unop_, num_, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_binop_: `%%%%%`(numtype, binop_, num_, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_0{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_1{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_2{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_3{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_4{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_5{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_6{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#15)*{iter_0#15 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_7{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#16)*{iter_0#16 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_8{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#17)*{iter_0#17 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_9{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#18)*{iter_0#18 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_10{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_11{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_12{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_13{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_14{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_15{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_16{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_17{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_18{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_19{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_20{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_21{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_22{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_23{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_24{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#19)*{iter_0#19 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_25{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_26{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#21)*{iter_0#21 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_27{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#22)*{iter_0#22 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_28{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#23)*{iter_0#23 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_29{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_30{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#25)*{iter_0#25 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_31{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#26)*{iter_0#26 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_32{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#27)*{iter_0#27 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_33{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_34{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#29)*{iter_0#29 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_35{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#30)*{iter_0#30 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_36{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#31)*{iter_0#31 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_37{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#32)*{iter_0#32 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation binop__is_wf: `%%%%%`(numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule binop__is_wf_0{numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*, var_0 : num_*}: + `%%%%%`(numtype, binop_, num_, num__0, ret_val) + -- wf_binop_: `%%`(numtype, binop_) + -- wf_num_: `%%`(numtype, num_) + -- wf_num_: `%%`(numtype, num__0) + -- if (ret_val = var_0) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} + -- fun_binop_: `%%%%%`(numtype, binop_, num_, num__0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $testop_{i : uN}(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I32_Inn)), i) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $testop_{i : uN}(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I64_Inn)), i) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_cvtop__: `%%%%%`(numtype, numtype, cvtop__, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_0{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_1{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_2{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_3{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_4{i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_5{i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_6{i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_7{i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_8{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#33)*{iter_0#33 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_9{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_10{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#35)*{iter_0#35 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_11{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_12{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#37)*{iter_0#37 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_13{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#38)*{iter_0#38 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_14{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#39)*{iter_0#39 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_15{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#40)*{iter_0#40 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_16{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_17{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_18{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_19{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_20{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#41)*{iter_0#41 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_21{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_22{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#43)*{iter_0#43 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_23{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_24{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#45)*{iter_0#45 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_25{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_26{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#47)*{iter_0#47 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_27{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_28{i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_29{i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_30{i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_31{i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_32{f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_33{f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_34{f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_35{f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cvtop___is_wf: `%%%%%`(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cvtop___is_wf_0{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*, var_0 : num_*}: + `%%%%%`(numtype_1, numtype_2, cvtop__, num_, ret_val) + -- wf_cvtop__: `%%%`(numtype_1, numtype_2, cvtop__) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = var_0) + -- (wf_num_: `%%`(numtype_2, ret_val))*{ret_val <- ret_val} + -- fun_cvtop__: `%%%%%`(numtype_1, numtype_2, cvtop__, num_, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lanes_(shape : shape, vec_ : vec_) : lane_* + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lanes__is_wf: `%%%`(shape : shape, vec_ : vec_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lanes__is_wf_0{shape : shape, vec_ : vec_, ret_val : lane_*}: + `%%%`(shape, vec_, ret_val) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(128, vec_) + -- if (ret_val = $lanes_(shape, vec_)) + -- (wf_lane_: `%%`($lanetype(shape), ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $inv_lanes_(shape : shape, lane_*) : vec_ + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_zeroop: `%%%%`(shape, shape, vcvtop__, zero?) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3037?{half#3037 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3038?{half#3038 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3039?{half#3039 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3040?{half#3040 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3041?{half#3041 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3042?{half#3042 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3043?{half#3043 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3044?{half#3044 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3441?{zero#3441 <- `zero?`})), zero#3442?{zero#3442 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3443?{zero#3443 <- `zero?`})), zero#3444?{zero#3444 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3445?{zero#3445 <- `zero?`})), zero#3446?{zero#3446 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3447?{zero#3447 <- `zero?`})), zero#3448?{zero#3448 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3449?{zero#3449 <- `zero?`})), zero#3450?{zero#3450 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3451?{zero#3451 <- `zero?`})), zero#3452?{zero#3452 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3453?{zero#3453 <- `zero?`})), zero#3454?{zero#3454 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3455?{zero#3455 <- `zero?`})), zero#3456?{zero#3456 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3457?{zero#3457 <- `zero?`})), zero#3458?{zero#3458 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3459?{zero#3459 <- `zero?`})), zero#3460?{zero#3460 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3461?{zero#3461 <- `zero?`})), zero#3462?{zero#3462 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3463?{zero#3463 <- `zero?`})), zero#3464?{zero#3464 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3465?{zero#3465 <- `zero?`})), zero#3466?{zero#3466 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3467?{zero#3467 <- `zero?`})), zero#3468?{zero#3468 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3469?{zero#3469 <- `zero?`})), zero#3470?{zero#3470 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3471?{zero#3471 <- `zero?`})), zero#3472?{zero#3472 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_40{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_41{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_42{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_43{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_44{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_45{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_46{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_47{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_halfop: `%%%%`(shape, shape, vcvtop__, half?) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3045?{half#3045 <- `half?`}, sx)), half#3046?{half#3046 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3047?{half#3047 <- `half?`}, sx)), half#3048?{half#3048 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3049?{half#3049 <- `half?`}, sx)), half#3050?{half#3050 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3051?{half#3051 <- `half?`}, sx)), half#3052?{half#3052 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3053?{half#3053 <- `half?`}, sx)), half#3054?{half#3054 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3055?{half#3055 <- `half?`}, sx)), half#3056?{half#3056 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3057?{half#3057 <- `half?`}, sx)), half#3058?{half#3058 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3059?{half#3059 <- `half?`}, sx)), half#3060?{half#3060 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3473?{zero#3473 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3474?{zero#3474 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3475?{zero#3475 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3476?{zero#3476 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3477?{zero#3477 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3478?{zero#3478 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3479?{zero#3479 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3480?{zero#3480 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3481?{zero#3481 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3482?{zero#3482 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3483?{zero#3483 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3484?{zero#3484 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3485?{zero#3485 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3486?{zero#3486 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3487?{zero#3487 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3488?{zero#3488 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_40{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_41{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_42{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_43{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_44{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_45{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_46{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_47{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $half(half : half, nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(LOW_half, i, j) = i + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(HIGH_half, i, j) = j + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $iswizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#1*{c#1 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN, var_0 : int}(N, c#2*{c#2 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if (var_0 < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i).0, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#4)*{c#4 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#1*{c_1#1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#3*{c#3 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#2)))*{c_1#2 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#5))*{iter#5 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#3)))))*{c_1#3 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#6)*{c#6 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#4*{c_1#4 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#5*{c#5 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#5)))*{c_1#5 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#6))*{iter#6 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#6)))))*{c_1#6 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#8)*{c#8 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#7*{c_1#7 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#7*{c#7 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#8)))*{c_1#8 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#7))*{iter#7 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#9)))))*{c_1#9 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#10)*{c#10 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#10*{c_1#10 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#9*{c#9 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#11)))*{c_1#11 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#8))*{iter#8 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#12)))))*{c_1#12 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#12*{c#12 <- `c*#2`})*{`c*#2` <- `c**`} + -- let{`c_1*` : lane_*} c_1#13*{c_1#13 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#11*{c#11 <- `c*#1`}*{`c*#1` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#49))*{iter_0#49 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#14)))))}*{c_1#14 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#9))*{iter#9 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#11))*{iter#11 <- iter#10}*{iter#10 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#50))*{iter_0#50 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#15)))))}*{c_1#15 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#12))*{iter#12 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#16)))))}*{c_1#16 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#51))))*{iter_0#51 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#17)))))}*{c_1#17 <- `c_1*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#14*{c#14 <- `c*#4`})*{`c*#4` <- `c**`} + -- let{`c_1*` : lane_*} c_1#18*{c_1#18 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#13*{c#13 <- `c*#3`}*{`c*#3` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#52))*{iter_0#52 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#19)))))}*{c_1#19 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#13))*{iter#13 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#15))*{iter#15 <- iter#14}*{iter#14 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#53))*{iter_0#53 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#20)))))}*{c_1#20 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#16))*{iter#16 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#21)))))}*{c_1#21 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#54))))*{iter_0#54 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#22)))))}*{c_1#22 <- `c_1*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#16)*{c#16 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#23*{c_1#23 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#1*{c_2#1 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#15*{c#15 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#24)), !($proj_lane__2(c_2#2)))*{c_1#24 <- `c_1*`, c_2#2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#17))*{iter#17 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#18))*{iter#18 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#25)), !($proj_lane__2(c_2#3)))))*{c_1#25 <- `c_1*`, c_2#3 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#18)*{c#18 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#26*{c_1#26 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#4*{c_2#4 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#17*{c#17 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#27)), !($proj_lane__2(c_2#5)))*{c_1#27 <- `c_1*`, c_2#5 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#19))*{iter#19 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#20))*{iter#20 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#28)), !($proj_lane__2(c_2#6)))))*{c_1#28 <- `c_1*`, c_2#6 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#20)*{c#20 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#29*{c_1#29 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#7*{c_2#7 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#19*{c#19 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#30)), !($proj_lane__2(c_2#8)))*{c_1#30 <- `c_1*`, c_2#8 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#21))*{iter#21 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#22))*{iter#22 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#31)), !($proj_lane__2(c_2#9)))))*{c_1#31 <- `c_1*`, c_2#9 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#22)*{c#22 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#32*{c_1#32 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#10*{c_2#10 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#21*{c#21 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#33)), !($proj_lane__2(c_2#11)))*{c_1#33 <- `c_1*`, c_2#11 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#23))*{iter#23 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#24))*{iter#24 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#34)), !($proj_lane__2(c_2#12)))))*{c_1#34 <- `c_1*`, c_2#12 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#24)*{c#24 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#35*{c_1#35 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#13*{c_2#13 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#23*{c#23 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#36)), !($proj_lane__2(c_2#14)))*{c_1#36 <- `c_1*`, c_2#14 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#25))*{iter#25 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#26))*{iter#26 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#37)), !($proj_lane__2(c_2#15)))))*{c_1#37 <- `c_1*`, c_2#15 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#26)*{c#26 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#38*{c_1#38 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#16*{c_2#16 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#25*{c#25 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#39)), !($proj_lane__2(c_2#17)))*{c_1#39 <- `c_1*`, c_2#17 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#27))*{iter#27 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#28))*{iter#28 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#40)), !($proj_lane__2(c_2#18)))))*{c_1#40 <- `c_1*`, c_2#18 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#28)*{c#28 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#41*{c_1#41 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#19*{c_2#19 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#27*{c#27 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#42)), !($proj_lane__2(c_2#20)))*{c_1#42 <- `c_1*`, c_2#20 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#29))*{iter#29 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#30))*{iter#30 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#43)), !($proj_lane__2(c_2#21)))))*{c_1#43 <- `c_1*`, c_2#21 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#30)*{c#30 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#44*{c_1#44 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#22*{c_2#22 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#29*{c#29 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#45)), !($proj_lane__2(c_2#23)))*{c_1#45 <- `c_1*`, c_2#23 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#31))*{iter#31 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#32))*{iter#32 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#46)), !($proj_lane__2(c_2#24)))))*{c_1#46 <- `c_1*`, c_2#24 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#32*{c#32 <- `c*#6`})*{`c*#6` <- `c**`} + -- let{`c_1*` : lane_*} c_1#47*{c_1#47 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#25*{c_2#25 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#31*{c#31 <- `c*#5`}*{`c*#5` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#55)*{iter_0#55 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#48)), !($proj_lane__2(c_2#26)))}*{c_1#48 <- `c_1*`, c_2#26 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#33))*{iter#33 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#34))*{iter#34 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), iter#36))*{iter#36 <- iter#35}*{iter#35 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#56)*{iter_0#56 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#49)), !($proj_lane__2(c_2#27)))}*{c_1#49 <- `c_1*`, c_2#27 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#37))*{iter#37 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#50)), !($proj_lane__2(c_2#28)))}*{c_1#50 <- `c_1*`, c_2#28 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#57)))*{iter_0#57 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#51)), !($proj_lane__2(c_2#29)))}*{c_1#51 <- `c_1*`, c_2#29 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#34*{c#34 <- `c*#8`})*{`c*#8` <- `c**`} + -- let{`c_1*` : lane_*} c_1#52*{c_1#52 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#30*{c_2#30 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#33*{c#33 <- `c*#7`}*{`c*#7` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#58)*{iter_0#58 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#53)), !($proj_lane__2(c_2#31)))}*{c_1#53 <- `c_1*`, c_2#31 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#38))*{iter#38 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#39))*{iter#39 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), iter#41))*{iter#41 <- iter#40}*{iter#40 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#59)*{iter_0#59 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#54)), !($proj_lane__2(c_2#32)))}*{c_1#54 <- `c_1*`, c_2#32 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#42))*{iter#42 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#55)), !($proj_lane__2(c_2#33)))}*{c_1#55 <- `c_1*`, c_2#33 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#60)))*{iter_0#60 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#56)), !($proj_lane__2(c_2#34)))}*{c_1#56 <- `c_1*`, c_2#34 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#36*{c#36 <- `c*#10`})*{`c*#10` <- `c**`} + -- let{`c_1*` : lane_*} c_1#57*{c_1#57 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#35*{c_2#35 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#35*{c#35 <- `c*#9`}*{`c*#9` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#61)*{iter_0#61 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#58)), !($proj_lane__2(c_2#36)))}*{c_1#58 <- `c_1*`, c_2#36 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#43))*{iter#43 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#44))*{iter#44 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), iter#46))*{iter#46 <- iter#45}*{iter#45 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#62)*{iter_0#62 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#59)), !($proj_lane__2(c_2#37)))}*{c_1#59 <- `c_1*`, c_2#37 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#47))*{iter#47 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#60)), !($proj_lane__2(c_2#38)))}*{c_1#60 <- `c_1*`, c_2#38 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#63)))*{iter_0#63 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#61)), !($proj_lane__2(c_2#39)))}*{c_1#61 <- `c_1*`, c_2#39 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#38*{c#38 <- `c*#12`})*{`c*#12` <- `c**`} + -- let{`c_1*` : lane_*} c_1#62*{c_1#62 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#40*{c_2#40 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#37*{c#37 <- `c*#11`}*{`c*#11` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#64)*{iter_0#64 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#63)), !($proj_lane__2(c_2#41)))}*{c_1#63 <- `c_1*`, c_2#41 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#48))*{iter#48 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#49))*{iter#49 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), iter#51))*{iter#51 <- iter#50}*{iter#50 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#65)*{iter_0#65 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#64)), !($proj_lane__2(c_2#42)))}*{c_1#64 <- `c_1*`, c_2#42 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#52))*{iter#52 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#65)), !($proj_lane__2(c_2#43)))}*{c_1#65 <- `c_1*`, c_2#43 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#66)))*{iter_0#66 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#66)), !($proj_lane__2(c_2#44)))}*{c_1#66 <- `c_1*`, c_2#44 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#40*{c#40 <- `c*#14`})*{`c*#14` <- `c**`} + -- let{`c_1*` : lane_*} c_1#67*{c_1#67 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#45*{c_2#45 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#39*{c#39 <- `c*#13`}*{`c*#13` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#67))*{iter_0#67 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#68)))), !($proj_num__1(!($proj_lane__0(c_2#46)))))}*{c_1#68 <- `c_1*`, c_2#46 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#53))*{iter#53 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#54))*{iter#54 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#56))*{iter#56 <- iter#55}*{iter#55 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#68))*{iter_0#68 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#69)))), !($proj_num__1(!($proj_lane__0(c_2#47)))))}*{c_1#69 <- `c_1*`, c_2#47 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#57))*{iter#57 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#70)))), !($proj_num__1(!($proj_lane__0(c_2#48)))))}*{c_1#70 <- `c_1*`, c_2#48 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#69))))*{iter_0#69 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#71)))), !($proj_num__1(!($proj_lane__0(c_2#49)))))}*{c_1#71 <- `c_1*`, c_2#49 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#42*{c#42 <- `c*#16`})*{`c*#16` <- `c**`} + -- let{`c_1*` : lane_*} c_1#72*{c_1#72 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#50*{c_2#50 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#41*{c#41 <- `c*#15`}*{`c*#15` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#70))*{iter_0#70 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#73)))), !($proj_num__1(!($proj_lane__0(c_2#51)))))}*{c_1#73 <- `c_1*`, c_2#51 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#58))*{iter#58 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#59))*{iter#59 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#61))*{iter#61 <- iter#60}*{iter#60 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#71))*{iter_0#71 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#74)))), !($proj_num__1(!($proj_lane__0(c_2#52)))))}*{c_1#74 <- `c_1*`, c_2#52 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#62))*{iter#62 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#75)))), !($proj_num__1(!($proj_lane__0(c_2#53)))))}*{c_1#75 <- `c_1*`, c_2#53 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#72))))*{iter_0#72 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#76)))), !($proj_num__1(!($proj_lane__0(c_2#54)))))}*{c_1#76 <- `c_1*`, c_2#54 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#44*{c#44 <- `c*#18`})*{`c*#18` <- `c**`} + -- let{`c_1*` : lane_*} c_1#77*{c_1#77 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#55*{c_2#55 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#1*{c_3#1 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#43*{c#43 <- `c*#17`}*{`c*#17` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#73)*{iter_0#73 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#78)), !($proj_lane__2(c_2#56)), !($proj_lane__2(c_3#2)))}*{c_1#78 <- `c_1*`, c_2#56 <- `c_2*`, c_3#2 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#63))*{iter#63 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#64))*{iter#64 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#65))*{iter#65 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), iter#67))*{iter#67 <- iter#66}*{iter#66 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#74)*{iter_0#74 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#79)), !($proj_lane__2(c_2#57)), !($proj_lane__2(c_3#3)))}*{c_1#79 <- `c_1*`, c_2#57 <- `c_2*`, c_3#3 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#68))*{iter#68 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#80)), !($proj_lane__2(c_2#58)), !($proj_lane__2(c_3#4)))}*{c_1#80 <- `c_1*`, c_2#58 <- `c_2*`, c_3#4 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#75)))*{iter_0#75 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#81)), !($proj_lane__2(c_2#59)), !($proj_lane__2(c_3#5)))}*{c_1#81 <- `c_1*`, c_2#59 <- `c_2*`, c_3#5 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#46*{c#46 <- `c*#20`})*{`c*#20` <- `c**`} + -- let{`c_1*` : lane_*} c_1#82*{c_1#82 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#60*{c_2#60 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#6*{c_3#6 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#45*{c#45 <- `c*#19`}*{`c*#19` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#76)*{iter_0#76 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#83)), !($proj_lane__2(c_2#61)), !($proj_lane__2(c_3#7)))}*{c_1#83 <- `c_1*`, c_2#61 <- `c_2*`, c_3#7 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#69))*{iter#69 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#70))*{iter#70 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#71))*{iter#71 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), iter#73))*{iter#73 <- iter#72}*{iter#72 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#77)*{iter_0#77 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#84)), !($proj_lane__2(c_2#62)), !($proj_lane__2(c_3#8)))}*{c_1#84 <- `c_1*`, c_2#62 <- `c_2*`, c_3#8 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#74))*{iter#74 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#85)), !($proj_lane__2(c_2#63)), !($proj_lane__2(c_3#9)))}*{c_1#85 <- `c_1*`, c_2#63 <- `c_2*`, c_3#9 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#78)))*{iter_0#78 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#86)), !($proj_lane__2(c_2#64)), !($proj_lane__2(c_3#10)))}*{c_1#86 <- `c_1*`, c_2#64 <- `c_2*`, c_3#10 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#48*{c#48 <- `c*#22`})*{`c*#22` <- `c**`} + -- let{`c_1*` : lane_*} c_1#87*{c_1#87 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#65*{c_2#65 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#11*{c_3#11 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#47*{c#47 <- `c*#21`}*{`c*#21` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#79)*{iter_0#79 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#88)), !($proj_lane__2(c_2#66)), !($proj_lane__2(c_3#12)))}*{c_1#88 <- `c_1*`, c_2#66 <- `c_2*`, c_3#12 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#75))*{iter#75 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#76))*{iter#76 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#77))*{iter#77 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), iter#79))*{iter#79 <- iter#78}*{iter#78 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#80)*{iter_0#80 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#89)), !($proj_lane__2(c_2#67)), !($proj_lane__2(c_3#13)))}*{c_1#89 <- `c_1*`, c_2#67 <- `c_2*`, c_3#13 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#80))*{iter#80 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#90)), !($proj_lane__2(c_2#68)), !($proj_lane__2(c_3#14)))}*{c_1#90 <- `c_1*`, c_2#68 <- `c_2*`, c_3#14 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#81)))*{iter_0#81 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#91)), !($proj_lane__2(c_2#69)), !($proj_lane__2(c_3#15)))}*{c_1#91 <- `c_1*`, c_2#69 <- `c_2*`, c_3#15 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#50*{c#50 <- `c*#24`})*{`c*#24` <- `c**`} + -- let{`c_1*` : lane_*} c_1#92*{c_1#92 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#70*{c_2#70 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#16*{c_3#16 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#49*{c#49 <- `c*#23`}*{`c*#23` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#82)*{iter_0#82 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#93)), !($proj_lane__2(c_2#71)), !($proj_lane__2(c_3#17)))}*{c_1#93 <- `c_1*`, c_2#71 <- `c_2*`, c_3#17 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#81))*{iter#81 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#82))*{iter#82 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#83))*{iter#83 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), iter#85))*{iter#85 <- iter#84}*{iter#84 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#83)*{iter_0#83 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#94)), !($proj_lane__2(c_2#72)), !($proj_lane__2(c_3#18)))}*{c_1#94 <- `c_1*`, c_2#72 <- `c_2*`, c_3#18 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#86))*{iter#86 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#95)), !($proj_lane__2(c_2#73)), !($proj_lane__2(c_3#19)))}*{c_1#95 <- `c_1*`, c_2#73 <- `c_2*`, c_3#19 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#84)))*{iter_0#84 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#96)), !($proj_lane__2(c_2#74)), !($proj_lane__2(c_3#20)))}*{c_1#96 <- `c_1*`, c_2#74 <- `c_2*`, c_3#20 <- `c_3*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#52*{c#52 <- `c*#26`})*{`c*#26` <- `c**`} + -- let{`c_1*` : lane_*} c_1#97*{c_1#97 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#75*{c_2#75 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#21*{c_3#21 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#51*{c#51 <- `c*#25`}*{`c*#25` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#85))*{iter_0#85 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#98)))), !($proj_num__1(!($proj_lane__0(c_2#76)))), !($proj_num__1(!($proj_lane__0(c_3#22)))))}*{c_1#98 <- `c_1*`, c_2#76 <- `c_2*`, c_3#22 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#87))*{iter#87 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#88))*{iter#88 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#89))*{iter#89 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#91))*{iter#91 <- iter#90}*{iter#90 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#86))*{iter_0#86 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#99)))), !($proj_num__1(!($proj_lane__0(c_2#77)))), !($proj_num__1(!($proj_lane__0(c_3#23)))))}*{c_1#99 <- `c_1*`, c_2#77 <- `c_2*`, c_3#23 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#92))*{iter#92 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#100)))), !($proj_num__1(!($proj_lane__0(c_2#78)))), !($proj_num__1(!($proj_lane__0(c_3#24)))))}*{c_1#100 <- `c_1*`, c_2#78 <- `c_2*`, c_3#24 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#87))))*{iter_0#87 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#101)))), !($proj_num__1(!($proj_lane__0(c_2#79)))), !($proj_num__1(!($proj_lane__0(c_3#25)))))}*{c_1#101 <- `c_1*`, c_2#79 <- `c_2*`, c_3#25 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#54*{c#54 <- `c*#28`})*{`c*#28` <- `c**`} + -- let{`c_1*` : lane_*} c_1#102*{c_1#102 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#80*{c_2#80 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#26*{c_3#26 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#53*{c#53 <- `c*#27`}*{`c*#27` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#88))*{iter_0#88 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#103)))), !($proj_num__1(!($proj_lane__0(c_2#81)))), !($proj_num__1(!($proj_lane__0(c_3#27)))))}*{c_1#103 <- `c_1*`, c_2#81 <- `c_2*`, c_3#27 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#93))*{iter#93 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#94))*{iter#94 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#95))*{iter#95 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#97))*{iter#97 <- iter#96}*{iter#96 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#89))*{iter_0#89 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#104)))), !($proj_num__1(!($proj_lane__0(c_2#82)))), !($proj_num__1(!($proj_lane__0(c_3#28)))))}*{c_1#104 <- `c_1*`, c_2#82 <- `c_2*`, c_3#28 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#98))*{iter#98 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#105)))), !($proj_num__1(!($proj_lane__0(c_2#83)))), !($proj_num__1(!($proj_lane__0(c_3#29)))))}*{c_1#105 <- `c_1*`, c_2#83 <- `c_2*`, c_3#29 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#90))))*{iter_0#90 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#106)))), !($proj_num__1(!($proj_lane__0(c_2#84)))), !($proj_num__1(!($proj_lane__0(c_3#30)))))}*{c_1#106 <- `c_1*`, c_2#84 <- `c_2*`, c_3#30 <- `c_3*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#56)*{c#56 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#107*{c_1#107 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#85*{c_2#85 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#55*{c#55 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#108)), !($proj_lane__2(c_2#86)))).0))*{c_1#108 <- `c_1*`, c_2#86 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#99))*{iter#99 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#100))*{iter#100 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#109)), !($proj_lane__2(c_2#87)))).0))))*{c_1#109 <- `c_1*`, c_2#87 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#110)), !($proj_lane__2(c_2#88)))).0)))*{c_1#110 <- `c_1*`, c_2#88 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#58)*{c#58 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#111*{c_1#111 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#89*{c_2#89 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#57*{c#57 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#112)), !($proj_lane__2(c_2#90)))).0))*{c_1#112 <- `c_1*`, c_2#90 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#101))*{iter#101 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#102))*{iter#102 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#113)), !($proj_lane__2(c_2#91)))).0))))*{c_1#113 <- `c_1*`, c_2#91 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#114)), !($proj_lane__2(c_2#92)))).0)))*{c_1#114 <- `c_1*`, c_2#92 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#60)*{c#60 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#115*{c_1#115 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#93*{c_2#93 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#59*{c#59 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#116)), !($proj_lane__2(c_2#94)))).0))*{c_1#116 <- `c_1*`, c_2#94 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#103))*{iter#103 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#104))*{iter#104 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#117)), !($proj_lane__2(c_2#95)))).0))))*{c_1#117 <- `c_1*`, c_2#95 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#118)), !($proj_lane__2(c_2#96)))).0)))*{c_1#118 <- `c_1*`, c_2#96 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#62)*{c#62 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#119*{c_1#119 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#97*{c_2#97 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#61*{c#61 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#120)), !($proj_lane__2(c_2#98)))).0))*{c_1#120 <- `c_1*`, c_2#98 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#105))*{iter#105 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#106))*{iter#106 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#121)), !($proj_lane__2(c_2#99)))).0))))*{c_1#121 <- `c_1*`, c_2#99 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#122)), !($proj_lane__2(c_2#100)))).0)))*{c_1#122 <- `c_1*`, c_2#100 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#64)*{c#64 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#123*{c_1#123 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#101*{c_2#101 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#63*{c#63 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#124)), !($proj_lane__2(c_2#102)))).0))*{c_1#124 <- `c_1*`, c_2#102 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#107))*{iter#107 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#108))*{iter#108 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#125)), !($proj_lane__2(c_2#103)))).0))))*{c_1#125 <- `c_1*`, c_2#103 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#126)), !($proj_lane__2(c_2#104)))).0)))*{c_1#126 <- `c_1*`, c_2#104 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#66)*{c#66 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#127*{c_1#127 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#105*{c_2#105 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#65*{c#65 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#128)), !($proj_lane__2(c_2#106)))).0))*{c_1#128 <- `c_1*`, c_2#106 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#109))*{iter#109 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#110))*{iter#110 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#129)), !($proj_lane__2(c_2#107)))).0))))*{c_1#129 <- `c_1*`, c_2#107 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#130)), !($proj_lane__2(c_2#108)))).0)))*{c_1#130 <- `c_1*`, c_2#108 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#68)*{c#68 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#131*{c_1#131 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#109*{c_2#109 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#67*{c#67 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#132)), !($proj_lane__2(c_2#110)))).0))*{c_1#132 <- `c_1*`, c_2#110 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#111))*{iter#111 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#112))*{iter#112 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#133)), !($proj_lane__2(c_2#111)))).0))))*{c_1#133 <- `c_1*`, c_2#111 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#134)), !($proj_lane__2(c_2#112)))).0)))*{c_1#134 <- `c_1*`, c_2#112 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#70)*{c#70 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#135*{c_1#135 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#113*{c_2#113 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#69*{c#69 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#136)), !($proj_lane__2(c_2#114)))).0))*{c_1#136 <- `c_1*`, c_2#114 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#113))*{iter#113 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#114))*{iter#114 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#137)), !($proj_lane__2(c_2#115)))).0))))*{c_1#137 <- `c_1*`, c_2#115 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#138)), !($proj_lane__2(c_2#116)))).0)))*{c_1#138 <- `c_1*`, c_2#116 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#72).0)))*{c#72 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#139*{c_1#139 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#117*{c_2#117 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#71*{c#71 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#140)))), !($proj_num__1(!($proj_lane__0(c_2#118)))))).0))*{c_1#140 <- `c_1*`, c_2#118 <- `c_2*`} + -- if ($isize(Inn) = $fsize(F32_Fnn)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#115))*{iter#115 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#116))*{iter#116 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size($numtype_Fnn(F32_Fnn)), $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#141)))), !($proj_num__1(!($proj_lane__0(c_2#119)))))).0))))*{c_1#141 <- `c_1*`, c_2#119 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#142)))), !($proj_num__1(!($proj_lane__0(c_2#120)))))).0)))*{c_1#142 <- `c_1*`, c_2#120 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#74).0)))*{c#74 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#143*{c_1#143 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#121*{c_2#121 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#73*{c#73 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#144)))), !($proj_num__1(!($proj_lane__0(c_2#122)))))).0))*{c_1#144 <- `c_1*`, c_2#122 <- `c_2*`} + -- if ($isize(Inn) = $fsize(F64_Fnn)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#117))*{iter#117 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#118))*{iter#118 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size($numtype_Fnn(F64_Fnn)), $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#145)))), !($proj_num__1(!($proj_lane__0(c_2#123)))))).0))))*{c_1#145 <- `c_1*`, c_2#123 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#146)))), !($proj_num__1(!($proj_lane__0(c_2#124)))))).0)))*{c_1#146 <- `c_1*`, c_2#124 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#76)*{c#76 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#147*{c_1#147 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#75*{c#75 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#148)), i)*{c_1#148 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#119))*{iter#119 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#149)), i)))*{c_1#149 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#78)*{c#78 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#150*{c_1#150 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#77*{c#77 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#151)), i)*{c_1#151 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#120))*{iter#120 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#152)), i)))*{c_1#152 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#80)*{c#80 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#153*{c_1#153 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#79*{c#79 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#154)), i)*{c_1#154 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#121))*{iter#121 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#155)), i)))*{c_1#155 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#82)*{c#82 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#156*{c_1#156 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#81*{c#81 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#157)), i)*{c_1#157 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#122))*{iter#122 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#158)), i)))*{c_1#158 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#84)*{c#84 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#159*{c_1#159 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#83*{c#83 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#160)), i)*{c_1#160 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#123))*{iter#123 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#161)), i)))*{c_1#161 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#86)*{c#86 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#162*{c_1#162 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#85*{c#85 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#163)), i)*{c_1#163 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#124))*{iter#124 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#164)), i)))*{c_1#164 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#88)*{c#88 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#165*{c_1#165 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#87*{c#87 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#166)), i)*{c_1#166 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#125))*{iter#125 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#167)), i)))*{c_1#167 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#90)*{c#90 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#168*{c_1#168 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#89*{c#89 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#169)), i)*{c_1#169 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#126))*{iter#126 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#170)), i)))*{c_1#170 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_0{M : nat, v_1 : uN, c : uN}: + `%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- let{`c_1*` : lane_*} c_1#171*{c_1#171 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#172)), `%`_iN(0))).0)*{c_1#172 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#127))*{iter#127 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#128))*{iter#128 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#173)), `%`_iN(0))).0)))*{c_1#173 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_1{M : nat, v_1 : uN, c : uN}: + `%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- let{`c_1*` : lane_*} c_1#174*{c_1#174 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#175)), `%`_iN(0))).0)*{c_1#175 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#129))*{iter#129 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#130))*{iter#130 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#176)), `%`_iN(0))).0)))*{c_1#176 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_2{M : nat, v_1 : uN, c : uN}: + `%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- let{`c_1*` : lane_*} c_1#177*{c_1#177 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#178)), `%`_iN(0))).0)*{c_1#178 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#131))*{iter#131 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#132))*{iter#132 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#179)), `%`_iN(0))).0)))*{c_1#179 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_3{M : nat, v_1 : uN, c : uN}: + `%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- let{`c_1*` : lane_*} c_1#180*{c_1#180 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#181)), `%`_iN(0))).0)*{c_1#181 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#133))*{iter#133 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#134))*{iter#134 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#182)), `%`_iN(0))).0)))*{c_1#182 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#92)*{c#92 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#183*{c_1#183 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#125*{c_2#125 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#91*{c#91 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#184))*{c_1#184 <- `c_1*`}, !($proj_lane__2(c_2#126)))*{c_2#126 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#135))*{iter#135 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#136))*{iter#136 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#185))*{c_1#185 <- `c_1*`}, !($proj_lane__2(c_2#127)))))*{c_2#127 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#94)*{c#94 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#186*{c_1#186 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#128*{c_2#128 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#93*{c#93 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#187))*{c_1#187 <- `c_1*`}, !($proj_lane__2(c_2#129)))*{c_2#129 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#137))*{iter#137 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#138))*{iter#138 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#188))*{c_1#188 <- `c_1*`}, !($proj_lane__2(c_2#130)))))*{c_2#130 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#96)*{c#96 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#189*{c_1#189 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#131*{c_2#131 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#95*{c#95 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#190))*{c_1#190 <- `c_1*`}, !($proj_lane__2(c_2#132)))*{c_2#132 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#139))*{iter#139 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#140))*{iter#140 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#191))*{c_1#191 <- `c_1*`}, !($proj_lane__2(c_2#133)))))*{c_2#133 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#98)*{c#98 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#192*{c_1#192 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#134*{c_2#134 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#97*{c#97 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#193))*{c_1#193 <- `c_1*`}, !($proj_lane__2(c_2#135)))*{c_2#135 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#141))*{iter#141 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#142))*{iter#142 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#194))*{c_1#194 <- `c_1*`}, !($proj_lane__2(c_2#136)))))*{c_2#136 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), i#139234*{i#139234 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#100*{c#100 <- `c*`})) + -- let{`c_1*` : lane_*} c_1#195*{c_1#195 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#137*{c_2#137 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#99*{c#99 <- `c*`} = c_1#196*{c_1#196 <- `c_1*`} ++ c_2#138*{c_2#138 <- `c_2*`}[$proj_uN_0(i#139237).0]*{i#139237 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#143))*{iter#143 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#144))*{iter#144 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_1{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), i#139245*{i#139245 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#102*{c#102 <- `c*`})) + -- let{`c_1*` : lane_*} c_1#197*{c_1#197 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#139*{c_2#139 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#101*{c#101 <- `c*`} = c_1#198*{c_1#198 <- `c_1*`} ++ c_2#140*{c_2#140 <- `c_2*`}[$proj_uN_0(i#139248).0]*{i#139248 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#145))*{iter#145 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#146))*{iter#146 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_2{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i#139256*{i#139256 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#104*{c#104 <- `c*`})) + -- let{`c_1*` : lane_*} c_1#199*{c_1#199 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#141*{c_2#141 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#103*{c#103 <- `c*`} = c_1#200*{c_1#200 <- `c_1*`} ++ c_2#142*{c_2#142 <- `c_2*`}[$proj_uN_0(i#139259).0]*{i#139259 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#147))*{iter#147 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#148))*{iter#148 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_3{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), i#139267*{i#139267 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#106*{c#106 <- `c*`})) + -- let{`c_1*` : lane_*} c_1#201*{c_1#201 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#143*{c_2#143 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#105*{c#105 <- `c*`} = c_1#202*{c_1#202 <- `c_1*`} ++ c_2#144*{c_2#144 <- `c_2*`}[$proj_uN_0(i#139270).0]*{i#139270 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#149))*{iter#149 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#150))*{iter#150 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvunop_{Vnn : vectype, v : uN}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vunop_: `%%%%`(shape, vunop_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_0{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_1{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_2{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_3{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_4{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_5{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_6{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_7{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_8{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_9{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_10{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_11{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_12{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_13{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_14{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M_0, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_15{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M_0, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_16{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M_0, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_17{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M_0, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_18{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M_0, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_19{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M_0, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_20{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M_0, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_21{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M_0, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_22{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M_0, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_23{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M_0, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_24{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M_0, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_25{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M_0, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vbinop_: `%%%%%`(shape, vbinop_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_0{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_1{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_2{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_3{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_4{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_5{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_6{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_7{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_8{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_9{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_10{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_11{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_24{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_25{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_26{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_27{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_28{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_29{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_30{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_31{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_32{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_33{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_34{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_35{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_36{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_37{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_38{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_39{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_40{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_41{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_42{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_43{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_44{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_45{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_46{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_47{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_48{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_49{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_50{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_51{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_52{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_53{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_54{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_55{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_56{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_57{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_58{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_59{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vternop_: `%%%%%%`(shape, vternop_, vec_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_0{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_1{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_2{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_3{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_4{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M_0, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_5{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M_0, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_6{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M_0, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_7{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M_0, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vrelop_: `%%%%%`(shape, vrelop_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_0{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_1{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_2{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_3{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_4{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_5{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_6{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_7{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_8{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_9{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_10{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_11{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_24{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_25{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_26{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_27{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_28{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_29{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_30{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_31{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_32{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_33{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_34{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_35{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3061?{half#3061 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3062?{half#3062 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3063?{half#3063 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3064?{half#3064 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3065?{half#3065 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3066?{half#3066 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3067?{half#3067 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3068?{half#3068 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3489?{zero#3489 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#108))?{c#108 <- `c?`})) + -- let{`c?` : iN?} c#107?{c#107 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#151))?{iter#151 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3490?{zero#3490 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#110))?{c#110 <- `c?`})) + -- let{`c?` : iN?} c#109?{c#109 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#152))?{iter#152 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3491?{zero#3491 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#112))?{c#112 <- `c?`})) + -- let{`c?` : iN?} c#111?{c#111 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#153))?{iter#153 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3492?{zero#3492 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#114))?{c#114 <- `c?`})) + -- let{`c?` : iN?} c#113?{c#113 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#154))?{iter#154 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3493?{zero#3493 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#116))?{c#116 <- `c?`})) + -- let{`c?` : iN?} c#115?{c#115 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#155))?{iter#155 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3494?{zero#3494 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#118))?{c#118 <- `c?`})) + -- let{`c?` : iN?} c#117?{c#117 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#156))?{iter#156 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3495?{zero#3495 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#120))?{c#120 <- `c?`})) + -- let{`c?` : iN?} c#119?{c#119 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#157))?{iter#157 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3496?{zero#3496 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#122))?{c#122 <- `c?`})) + -- let{`c?` : iN?} c#121?{c#121 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#158))?{iter#158 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3497?{zero#3497 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#124))?{c#124 <- `c?`})) + -- let{`c?` : iN?} c#123?{c#123 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#159))?{iter#159 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3498?{zero#3498 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#126))?{c#126 <- `c?`})) + -- let{`c?` : iN?} c#125?{c#125 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#160))?{iter#160 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3499?{zero#3499 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#128))?{c#128 <- `c?`})) + -- let{`c?` : iN?} c#127?{c#127 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#161))?{iter#161 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3500?{zero#3500 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#130))?{c#130 <- `c?`})) + -- let{`c?` : iN?} c#129?{c#129 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#162))?{iter#162 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3501?{zero#3501 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#132))?{c#132 <- `c?`})) + -- let{`c?` : iN?} c#131?{c#131 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#163))?{iter#163 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3502?{zero#3502 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#134))?{c#134 <- `c?`})) + -- let{`c?` : iN?} c#133?{c#133 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#164))?{iter#164 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3503?{zero#3503 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#136))?{c#136 <- `c?`})) + -- let{`c?` : iN?} c#135?{c#135 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#165))?{iter#165 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3504?{zero#3504 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#138))?{c#138 <- `c?`})) + -- let{`c?` : iN?} c#137?{c#137 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#166))?{iter#166 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3505?{zero#3505 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#140))?{c#140 <- `c?`})) + -- let{`c?` : iN?} c#139?{c#139 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#167))?{iter#167 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3506?{zero#3506 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#142))?{c#142 <- `c?`})) + -- let{`c?` : iN?} c#141?{c#141 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#168))?{iter#168 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3507?{zero#3507 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#144))?{c#144 <- `c?`})) + -- let{`c?` : iN?} c#143?{c#143 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#169))?{iter#169 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_43{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3508?{zero#3508 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#146))?{c#146 <- `c?`})) + -- let{`c?` : iN?} c#145?{c#145 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#170))?{iter#170 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3509?{zero#3509 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#148))?{c#148 <- `c?`})) + -- let{`c?` : iN?} c#147?{c#147 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#171))?{iter#171 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3510?{zero#3510 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#150))?{c#150 <- `c?`})) + -- let{`c?` : iN?} c#149?{c#149 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#172))?{iter#172 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3511?{zero#3511 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#152))?{c#152 <- `c?`})) + -- let{`c?` : iN?} c#151?{c#151 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#173))?{iter#173 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_47{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3512?{zero#3512 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#154))?{c#154 <- `c?`})) + -- let{`c?` : iN?} c#153?{c#153 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#174))?{iter#174 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3513?{zero#3513 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#156))?{c#156 <- `c?`})) + -- let{`c?` : iN?} c#155?{c#155 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#175))?{iter#175 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3514?{zero#3514 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#158))?{c#158 <- `c?`})) + -- let{`c?` : iN?} c#157?{c#157 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#176))?{iter#176 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3515?{zero#3515 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#160))?{c#160 <- `c?`})) + -- let{`c?` : iN?} c#159?{c#159 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#177))?{iter#177 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_51{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3516?{zero#3516 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#162))?{c#162 <- `c?`})) + -- let{`c?` : iN?} c#161?{c#161 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#178))?{iter#178 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3517?{zero#3517 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#164))?{c#164 <- `c?`})) + -- let{`c?` : iN?} c#163?{c#163 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#179))?{iter#179 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3518?{zero#3518 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#166))?{c#166 <- `c?`})) + -- let{`c?` : iN?} c#165?{c#165 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#180))?{iter#180 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3519?{zero#3519 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#168))?{c#168 <- `c?`})) + -- let{`c?` : iN?} c#167?{c#167 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#181))?{iter#181 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_55{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3520?{zero#3520 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#170))?{c#170 <- `c?`})) + -- let{`c?` : iN?} c#169?{c#169 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#182))?{iter#182 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_56{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#172))*{c#172 <- `c*`}) + -- let{`c*` : fN*} c#171*{c#171 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#183))*{iter#183 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_57{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#174))*{c#174 <- `c*`}) + -- let{`c*` : fN*} c#173*{c#173 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#184))*{iter#184 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_58{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#176))*{c#176 <- `c*`}) + -- let{`c*` : fN*} c#175*{c#175 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#185))*{iter#185 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_59{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#178))*{c#178 <- `c*`}) + -- let{`c*` : fN*} c#177*{c#177 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#186))*{iter#186 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_60{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#180))*{c#180 <- `c*`}) + -- let{`c*` : fN*} c#179*{c#179 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#187))*{iter#187 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_61{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#182))*{c#182 <- `c*`}) + -- let{`c*` : fN*} c#181*{c#181 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#188))*{iter#188 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_62{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#184))*{c#184 <- `c*`}) + -- let{`c*` : fN*} c#183*{c#183 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#189))*{iter#189 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_63{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#186))*{c#186 <- `c*`}) + -- let{`c*` : fN*} c#185*{c#185 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#190))*{iter#190 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_64{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#188))*{c#188 <- `c*`}) + -- let{`c*` : fN*} c#187*{c#187 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#191))*{iter#191 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_65{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#190))*{c#190 <- `c*`}) + -- let{`c*` : fN*} c#189*{c#189 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#192))*{iter#192 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_66{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#192))*{c#192 <- `c*`}) + -- let{`c*` : fN*} c#191*{c#191 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#193))*{iter#193 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_67{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#194))*{c#194 <- `c*`}) + -- let{`c*` : fN*} c#193*{c#193 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#194))*{iter#194 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_68{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#196))*{c#196 <- `c*`}) + -- let{`c*` : fN*} c#195*{c#195 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#195))*{iter#195 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_69{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#198))*{c#198 <- `c*`}) + -- let{`c*` : fN*} c#197*{c#197 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#196))*{iter#196 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_70{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#200))*{c#200 <- `c*`}) + -- let{`c*` : fN*} c#199*{c#199 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#197))*{iter#197 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_71{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#202))*{c#202 <- `c*`}) + -- let{`c*` : fN*} c#201*{c#201 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#198))*{iter#198 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lcvtop___is_wf: `%%%%%`(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lcvtop___is_wf_0{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*, var_0 : lane_*}: + `%%%%%`(shape_1, shape_2, vcvtop__, lane_, ret_val) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_1, shape_2, vcvtop__) + -- wf_lane_: `%%`($lanetype(shape_1), lane_) + -- if (ret_val = var_0) + -- (wf_lane_: `%%`($lanetype(shape_2), ret_val))*{ret_val <- ret_val} + -- fun_lcvtop__: `%%%%%`(shape_1, shape_2, vcvtop__, lane_, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, M_0 : nat, `var_4*` : lane_**, `var_3*` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M_0)), vcvtop, v_1, v) + -- if ((var_0 = ?()) /\ (var_1 = ?())) + -- let{`c_1*` : lane_*} c_1#203*{c_1#203 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#203*{c#203 <- `c*#29`}*{`c*#29` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#204*{c#204 <- `c*#30`})*{`c*#30` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), iter#199))*{iter#199 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#201))*{iter#201 <- iter#200}*{iter#200 <- $setproduct_(syntax lane_, var_3*{var_3 <- `var_3*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#202))*{iter#202 <- var_4}*{var_4 <- `var_4*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#205*{c#205 <- `c*#31`})))*{`c*#31` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) + -- if (M = M_0) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#206, var_4))*{var_4 <- `var_4*`, c_1#206 <- `c_1*`} + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#205, var_3))*{var_3 <- `var_3*`, c_1#205 <- `c_1*`} + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#204, var_2))*{var_2 <- `var_2*`, c_1#204 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `var_3*` : lane_**, `var_2*` : lane_**, `var_1*` : lane_**, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- if (var_0 = ?(half)) + -- let{`c_1*` : lane_*} c_1#207*{c_1#207 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] + -- let{`c**` : lane_**} c#206*{c#206 <- `c*#32`}*{`c*#32` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#207*{c#207 <- `c*#33`})*{`c*#33` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#203))*{iter#203 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#205))*{iter#205 <- iter#204}*{iter#204 <- $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#206))*{iter#206 <- var_3}*{var_3 <- `var_3*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#208*{c#208 <- `c*#34`})))*{`c*#34` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#210, var_3))*{var_3 <- `var_3*`, c_1#210 <- `c_1*`} + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#209, var_2))*{var_2 <- `var_2*`, c_1#209 <- `c_1*`} + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#208, var_1))*{var_1 <- `var_1*`, c_1#208 <- `c_1*`} + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `var_3*` : lane_**, `var_2*` : lane_**, `var_1*` : lane_**, var_0 : zero?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- if (var_0 = ?(ZERO_zero)) + -- let{`c_1*` : lane_*} c_1#211*{c_1#211 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) + -- let{`c**` : lane_**} c#209*{c#209 <- `c*#35`}*{`c*#35` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`} ++ [$zero(Lnn_2)]^M_1{}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#210*{c#210 <- `c*#36`})*{`c*#36` <- `c**`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#207))*{iter#207 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#209))*{iter#209 <- iter#208}*{iter#208 <- $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`} ++ [$zero(Lnn_2)]^M_1{})} + -- (wf_lane_: `%%`(Lnn_2, iter#210))*{iter#210 <- var_3}*{var_3 <- `var_3*`} + -- wf_lane_: `%%`(Lnn_2, $zero(Lnn_2)) + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#211*{c#211 <- `c*#37`})))*{`c*#37` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#214, var_3))*{var_3 <- `var_3*`, c_1#214 <- `c_1*`} + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#213, var_2))*{var_2 <- `var_2*`, c_1#213 <- `c_1*`} + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#212, var_1))*{var_1 <- `var_1*`, c_1#212 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vshiftop_: `%%%%%`(ishape, vshiftop_, vec_, u32, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_0{M : nat, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_1{M : nat, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_2{M : nat, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_3{M : nat, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_4{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_5{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_6{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_7{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vbitmaskop_: `%%%`(ishape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_0{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_1{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_2{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_3{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vswizzlop_: `%%%%%`(bshape, vswizzlop_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vswizzlop__case_0{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M_0, SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vswizzlop__case_1{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M_0, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vshufflop_: `%%%%%`(bshape, laneidx*, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, var_0 : vec_}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#139761*{i#139761 <- `i*`}, v_1, v_2, var_0) + -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#215*{c_1#215 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#145*{c_2#145 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#1*{c'_1#1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#216)))*{c_1#216 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#1*{c'_2#1 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#146)))*{c_2#146 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#2)*{c'_1#2 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#2)*{c'_2#2 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#211))*{iter#211 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#212))*{iter#212 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#217)))))*{c_1#217 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#147)))))*{c_2#147 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#3)*{c'_1#3 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#3)*{c'_2#3 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#4)))*{c'_1#4 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#4)))*{c'_2#4 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#218*{c_1#218 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#148*{c_2#148 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#5*{c'_1#5 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#219)))*{c_1#219 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#5*{c'_2#5 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#149)))*{c_2#149 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#6)*{c'_1#6 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#6)*{c'_2#6 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#213))*{iter#213 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#214))*{iter#214 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#220)))))*{c_1#220 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#150)))))*{c_2#150 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#7)*{c'_1#7 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#7)*{c'_2#7 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#8)))*{c'_1#8 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#8)))*{c'_2#8 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#221*{c_1#221 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#151*{c_2#151 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#9*{c'_1#9 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#222)))*{c_1#222 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#9*{c'_2#9 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#152)))*{c_2#152 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#10)*{c'_1#10 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#10)*{c'_2#10 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#215))*{iter#215 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#216))*{iter#216 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#223)))))*{c_1#223 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#153)))))*{c_2#153 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#11)*{c'_1#11 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#11)*{c'_2#11 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#12)))*{c'_1#12 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#12)))*{c'_2#12 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#224*{c_1#224 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#154*{c_2#154 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#13*{c'_1#13 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#225)))*{c_1#225 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#13*{c'_2#13 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#155)))*{c_2#155 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#14)*{c'_1#14 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#14)*{c'_2#14 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#217))*{iter#217 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#218))*{iter#218 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#226)))))*{c_1#226 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#156)))))*{c_2#156 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#15)*{c'_1#15 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#15)*{c'_2#15 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#16)))*{c'_1#16 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#16)))*{c'_2#16 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#227*{c_1#227 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#157*{c_2#157 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#17*{c'_1#17 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#228)))*{c_1#228 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#17*{c'_2#17 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#158)))*{c_2#158 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#18)*{c'_1#18 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#18)*{c'_2#18 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#219))*{iter#219 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#220))*{iter#220 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#229)))))*{c_1#229 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#159)))))*{c_2#159 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#19)*{c'_1#19 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#19)*{c'_2#19 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#20)))*{c'_1#20 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#20)))*{c'_2#20 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#230*{c_1#230 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#160*{c_2#160 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#21*{c'_1#21 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#231)))*{c_1#231 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#21*{c'_2#21 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#161)))*{c_2#161 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#22)*{c'_1#22 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#22)*{c'_2#22 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#221))*{iter#221 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#222))*{iter#222 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#232)))))*{c_1#232 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#162)))))*{c_2#162 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#23)*{c'_1#23 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#23)*{c'_2#23 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#24)))*{c'_1#24 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#24)))*{c'_2#24 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#233*{c_1#233 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#163*{c_2#163 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#25*{c'_1#25 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#234)))*{c_1#234 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#25*{c'_2#25 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#164)))*{c_2#164 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#26)*{c'_1#26 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#26)*{c'_2#26 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#223))*{iter#223 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#224))*{iter#224 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#235)))))*{c_1#235 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#165)))))*{c_2#165 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#27)*{c'_1#27 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#27)*{c'_2#27 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#28)))*{c'_1#28 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#28)))*{c'_2#28 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#236*{c_1#236 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#166*{c_2#166 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#29*{c'_1#29 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#237)))*{c_1#237 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#29*{c'_2#29 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#167)))*{c_2#167 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#30)*{c'_1#30 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#30)*{c'_2#30 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#225))*{iter#225 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#226))*{iter#226 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#238)))))*{c_1#238 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#168)))))*{c_2#168 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#31)*{c'_1#31 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#31)*{c'_2#31 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#32)))*{c'_1#32 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#32)))*{c'_2#32 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#239*{c_1#239 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#169*{c_2#169 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#33*{c'_1#33 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#240)))*{c_1#240 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#33*{c'_2#33 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#170)))*{c_2#170 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#34)*{c'_1#34 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#34)*{c'_2#34 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#227))*{iter#227 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#228))*{iter#228 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#241)))))*{c_1#241 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#171)))))*{c_2#171 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#35)*{c'_1#35 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#35)*{c'_2#35 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#36)))*{c'_1#36 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#36)))*{c'_2#36 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#242*{c_1#242 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#172*{c_2#172 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#37*{c'_1#37 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#243)))*{c_1#243 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#37*{c'_2#37 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#173)))*{c_2#173 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#38)*{c'_1#38 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#38)*{c'_2#38 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#229))*{iter#229 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#230))*{iter#230 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#244)))))*{c_1#244 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#174)))))*{c_2#174 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#39)*{c'_1#39 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#39)*{c'_2#39 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#40)))*{c'_1#40 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#40)))*{c'_2#40 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#245*{c_1#245 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#175*{c_2#175 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#41*{c'_1#41 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#246)))*{c_1#246 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#41*{c'_2#41 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#176)))*{c_2#176 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#42)*{c'_1#42 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#42)*{c'_2#42 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#231))*{iter#231 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#232))*{iter#232 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#247)))))*{c_1#247 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#177)))))*{c_2#177 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#43)*{c'_1#43 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#43)*{c'_2#43 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#44)))*{c'_1#44 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#44)))*{c'_2#44 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#248*{c_1#248 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#178*{c_2#178 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#45*{c'_1#45 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#249)))*{c_1#249 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#45*{c'_2#45 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#179)))*{c_2#179 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#46)*{c'_1#46 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#46)*{c'_2#46 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#233))*{iter#233 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#234))*{iter#234 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#250)))))*{c_1#250 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#180)))))*{c_2#180 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#47)*{c'_1#47 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#47)*{c'_2#47 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#48)))*{c'_1#48 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#48)))*{c'_2#48 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#251*{c_1#251 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#181*{c_2#181 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#49*{c'_1#49 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#252)))*{c_1#252 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#49*{c'_2#49 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#182)))*{c_2#182 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#50)*{c'_1#50 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#50)*{c'_2#50 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#235))*{iter#235 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#236))*{iter#236 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#253)))))*{c_1#253 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#183)))))*{c_2#183 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#51)*{c'_1#51 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#51)*{c'_2#51 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#52)))*{c'_1#52 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#52)))*{c'_2#52 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#254*{c_1#254 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#184*{c_2#184 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#53*{c'_1#53 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#255)))*{c_1#255 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#53*{c'_2#53 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#185)))*{c_2#185 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#54)*{c'_1#54 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#54)*{c'_2#54 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#237))*{iter#237 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#238))*{iter#238 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#256)))))*{c_1#256 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#186)))))*{c_2#186 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#55)*{c'_1#55 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#55)*{c'_2#55 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#56)))*{c'_1#56 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#56)))*{c'_2#56 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#257*{c_1#257 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#187*{c_2#187 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#57*{c'_1#57 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#258)))*{c_1#258 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#57*{c'_2#57 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#188)))*{c_2#188 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#58)*{c'_1#58 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#58)*{c'_2#58 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#239))*{iter#239 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#240))*{iter#240 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#259)))))*{c_1#259 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#189)))))*{c_2#189 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#59)*{c'_1#59 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#59)*{c'_2#59 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#60)))*{c'_1#60 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#60)))*{c'_2#60 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#260*{c_1#260 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#190*{c_2#190 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#61*{c'_1#61 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#261)))*{c_1#261 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#61*{c'_2#61 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#191)))*{c_2#191 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#62)*{c'_1#62 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#62)*{c'_2#62 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#241))*{iter#241 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#242))*{iter#242 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#262)))))*{c_1#262 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#192)))))*{c_2#192 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#63)*{c'_1#63 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#63)*{c'_2#63 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#64)))*{c'_1#64 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#64)))*{c'_2#64 <- `c'_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivadd_pairwise_(N : N, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i#139986*{i#139986 <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax N, [j_1#1 j_2#1]*{j_1#1 <- `j_1*`, j_2#1 <- `j_2*`}) = $proj_uN_0(i#139987).0*{i#139987 <- `i*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#213)*{c#213 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#263*{c_1#263 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#65*{c'_1#65 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#264)))*{c_1#264 <- `c_1*`} + -- let{`c*` : iN*} c#212*{c#212 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#66*{c'_1#66 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#243))*{iter#243 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#265)))))*{c_1#265 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#244))*{iter#244 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#67*{c'_1#67 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#215)*{c#215 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#266*{c_1#266 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#68*{c'_1#68 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#267)))*{c_1#267 <- `c_1*`} + -- let{`c*` : iN*} c#214*{c#214 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#69*{c'_1#69 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#245))*{iter#245 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#268)))))*{c_1#268 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#246))*{iter#246 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#70*{c'_1#70 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#217)*{c#217 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#269*{c_1#269 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#71*{c'_1#71 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#270)))*{c_1#270 <- `c_1*`} + -- let{`c*` : iN*} c#216*{c#216 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#72*{c'_1#72 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#247))*{iter#247 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#271)))))*{c_1#271 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#248))*{iter#248 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#73*{c'_1#73 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#219)*{c#219 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#272*{c_1#272 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#74*{c'_1#74 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#273)))*{c_1#273 <- `c_1*`} + -- let{`c*` : iN*} c#218*{c#218 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#75*{c'_1#75 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#249))*{iter#249 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#274)))))*{c_1#274 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#250))*{iter#250 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#76*{c'_1#76 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#221)*{c#221 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#275*{c_1#275 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#77*{c'_1#77 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#276)))*{c_1#276 <- `c_1*`} + -- let{`c*` : iN*} c#220*{c#220 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#78*{c'_1#78 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#251))*{iter#251 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#277)))))*{c_1#277 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#252))*{iter#252 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#79*{c'_1#79 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#223)*{c#223 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#278*{c_1#278 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#80*{c'_1#80 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#279)))*{c_1#279 <- `c_1*`} + -- let{`c*` : iN*} c#222*{c#222 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#81*{c'_1#81 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#253))*{iter#253 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#280)))))*{c_1#280 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#254))*{iter#254 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#82*{c'_1#82 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#225)*{c#225 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#281*{c_1#281 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#83*{c'_1#83 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#282)))*{c_1#282 <- `c_1*`} + -- let{`c*` : iN*} c#224*{c#224 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#84*{c'_1#84 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#255))*{iter#255 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#283)))))*{c_1#283 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#256))*{iter#256 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#85*{c'_1#85 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#227)*{c#227 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#284*{c_1#284 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#86*{c'_1#86 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#285)))*{c_1#285 <- `c_1*`} + -- let{`c*` : iN*} c#226*{c#226 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#87*{c'_1#87 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#257))*{iter#257 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#286)))))*{c_1#286 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#258))*{iter#258 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#88*{c'_1#88 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#229)*{c#229 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#287*{c_1#287 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#89*{c'_1#89 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#288)))*{c_1#288 <- `c_1*`} + -- let{`c*` : iN*} c#228*{c#228 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#90*{c'_1#90 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#259))*{iter#259 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#289)))))*{c_1#289 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#260))*{iter#260 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#91*{c'_1#91 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#231)*{c#231 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#290*{c_1#290 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#92*{c'_1#92 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#291)))*{c_1#291 <- `c_1*`} + -- let{`c*` : iN*} c#230*{c#230 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#93*{c'_1#93 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#261))*{iter#261 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#292)))))*{c_1#292 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#262))*{iter#262 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#94*{c'_1#94 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#233)*{c#233 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#293*{c_1#293 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#95*{c'_1#95 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#294)))*{c_1#294 <- `c_1*`} + -- let{`c*` : iN*} c#232*{c#232 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#96*{c'_1#96 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#263))*{iter#263 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#295)))))*{c_1#295 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#264))*{iter#264 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#97*{c'_1#97 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#235)*{c#235 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#296*{c_1#296 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#98*{c'_1#98 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#297)))*{c_1#297 <- `c_1*`} + -- let{`c*` : iN*} c#234*{c#234 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#99*{c'_1#99 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#265))*{iter#265 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#298)))))*{c_1#298 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#266))*{iter#266 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#100*{c'_1#100 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#237)*{c#237 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#299*{c_1#299 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#101*{c'_1#101 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#300)))*{c_1#300 <- `c_1*`} + -- let{`c*` : iN*} c#236*{c#236 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#102*{c'_1#102 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#267))*{iter#267 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#301)))))*{c_1#301 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#268))*{iter#268 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#103*{c'_1#103 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#239)*{c#239 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#302*{c_1#302 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#104*{c'_1#104 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#303)))*{c_1#303 <- `c_1*`} + -- let{`c*` : iN*} c#238*{c#238 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#105*{c'_1#105 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#269))*{iter#269 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#304)))))*{c_1#304 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#270))*{iter#270 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#106*{c'_1#106 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#241)*{c#241 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#305*{c_1#305 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#107*{c'_1#107 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#306)))*{c_1#306 <- `c_1*`} + -- let{`c*` : iN*} c#240*{c#240 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#108*{c'_1#108 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#271))*{iter#271 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#307)))))*{c_1#307 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#272))*{iter#272 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#109*{c'_1#109 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#243)*{c#243 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#308*{c_1#308 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#110*{c'_1#110 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#309)))*{c_1#309 <- `c_1*`} + -- let{`c*` : iN*} c#242*{c#242 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#111*{c'_1#111 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#273))*{iter#273 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#310)))))*{c_1#310 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#274))*{iter#274 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#112*{c'_1#112 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextunop__: `%%%%%`(ishape, ishape, vextunop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#1*{i_1#1 <- `i_1*`}, i_2#1*{i_2#1 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#2 j_2#2]*{j_1#2 <- `j_1*`, j_2#2 <- `j_2*`}) = $imul_(N, i_1#2, i_2#2)*{i_1#2 <- `i_1*`, i_2#2 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#275))*{iter#275 <- $concat_(syntax iN, [j_1#3 j_2#3]*{j_1#3 <- `j_1*`, j_2#3 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#3, i_2#3)))*{i_1#3 <- `i_1*`, i_2#3 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_sat_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#4*{i_1#4 <- `i_1*`}, i_2#4*{i_2#4 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#4 j_2#4]*{j_1#4 <- `j_1*`, j_2#4 <- `j_2*`}) = $imul_(N, i_1#5, i_2#5)*{i_1#5 <- `i_1*`, i_2#5 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#276))*{iter#276 <- $concat_(syntax iN, [j_1#5 j_2#5]*{j_1#5 <- `j_1*`, j_2#5 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#6, i_2#6)))*{i_1#6 <- `i_1*`, i_2#6 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#245)*{c#245 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#311*{c_1#311 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#193*{c_2#193 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#113*{c'_1#113 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#312)))*{c_1#312 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#65*{c'_2#65 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#194)))*{c_2#194 <- `c_2*`} + -- let{`c*` : iN*} c#244*{c#244 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#114*{c'_1#114 <- `c'_1*`}, c'_2#66*{c'_2#66 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#277))*{iter#277 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#278))*{iter#278 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#313)))))*{c_1#313 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#195)))))*{c_2#195 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#279))*{iter#279 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#115*{c'_1#115 <- `c'_1*`}, c'_2#67*{c'_2#67 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#247)*{c#247 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#314*{c_1#314 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#196*{c_2#196 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#116*{c'_1#116 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#315)))*{c_1#315 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#68*{c'_2#68 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#197)))*{c_2#197 <- `c_2*`} + -- let{`c*` : iN*} c#246*{c#246 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#117*{c'_1#117 <- `c'_1*`}, c'_2#69*{c'_2#69 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#280))*{iter#280 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#281))*{iter#281 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#316)))))*{c_1#316 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#198)))))*{c_2#198 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#282))*{iter#282 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#118*{c'_1#118 <- `c'_1*`}, c'_2#70*{c'_2#70 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#249)*{c#249 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#317*{c_1#317 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#199*{c_2#199 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#119*{c'_1#119 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#318)))*{c_1#318 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#71*{c'_2#71 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#200)))*{c_2#200 <- `c_2*`} + -- let{`c*` : iN*} c#248*{c#248 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#120*{c'_1#120 <- `c'_1*`}, c'_2#72*{c'_2#72 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#283))*{iter#283 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#284))*{iter#284 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#319)))))*{c_1#319 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#201)))))*{c_2#201 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#285))*{iter#285 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#121*{c'_1#121 <- `c'_1*`}, c'_2#73*{c'_2#73 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#251)*{c#251 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#320*{c_1#320 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#202*{c_2#202 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#122*{c'_1#122 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#321)))*{c_1#321 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#74*{c'_2#74 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#203)))*{c_2#203 <- `c_2*`} + -- let{`c*` : iN*} c#250*{c#250 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#123*{c'_1#123 <- `c'_1*`}, c'_2#75*{c'_2#75 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#286))*{iter#286 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#287))*{iter#287 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#322)))))*{c_1#322 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#204)))))*{c_2#204 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#288))*{iter#288 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#124*{c'_1#124 <- `c'_1*`}, c'_2#76*{c'_2#76 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#253)*{c#253 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#323*{c_1#323 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#205*{c_2#205 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#125*{c'_1#125 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#324)))*{c_1#324 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#77*{c'_2#77 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#206)))*{c_2#206 <- `c_2*`} + -- let{`c*` : iN*} c#252*{c#252 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#126*{c'_1#126 <- `c'_1*`}, c'_2#78*{c'_2#78 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#289))*{iter#289 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#290))*{iter#290 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#325)))))*{c_1#325 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#207)))))*{c_2#207 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#291))*{iter#291 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#127*{c'_1#127 <- `c'_1*`}, c'_2#79*{c'_2#79 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#255)*{c#255 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#326*{c_1#326 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#208*{c_2#208 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#128*{c'_1#128 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#327)))*{c_1#327 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#80*{c'_2#80 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#209)))*{c_2#209 <- `c_2*`} + -- let{`c*` : iN*} c#254*{c#254 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#129*{c'_1#129 <- `c'_1*`}, c'_2#81*{c'_2#81 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#292))*{iter#292 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#293))*{iter#293 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#328)))))*{c_1#328 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#210)))))*{c_2#210 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#294))*{iter#294 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#130*{c'_1#130 <- `c'_1*`}, c'_2#82*{c'_2#82 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#257)*{c#257 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#329*{c_1#329 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#211*{c_2#211 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#131*{c'_1#131 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#330)))*{c_1#330 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#83*{c'_2#83 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#212)))*{c_2#212 <- `c_2*`} + -- let{`c*` : iN*} c#256*{c#256 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#132*{c'_1#132 <- `c'_1*`}, c'_2#84*{c'_2#84 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#295))*{iter#295 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#296))*{iter#296 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#331)))))*{c_1#331 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#213)))))*{c_2#213 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#297))*{iter#297 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#133*{c'_1#133 <- `c'_1*`}, c'_2#85*{c'_2#85 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#259)*{c#259 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#332*{c_1#332 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#214*{c_2#214 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#134*{c'_1#134 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#333)))*{c_1#333 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#86*{c'_2#86 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#215)))*{c_2#215 <- `c_2*`} + -- let{`c*` : iN*} c#258*{c#258 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#135*{c'_1#135 <- `c'_1*`}, c'_2#87*{c'_2#87 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#298))*{iter#298 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#299))*{iter#299 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#334)))))*{c_1#334 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#216)))))*{c_2#216 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#300))*{iter#300 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#136*{c'_1#136 <- `c'_1*`}, c'_2#88*{c'_2#88 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#261)*{c#261 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#335*{c_1#335 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#217*{c_2#217 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#137*{c'_1#137 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#336)))*{c_1#336 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#89*{c'_2#89 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#218)))*{c_2#218 <- `c_2*`} + -- let{`c*` : iN*} c#260*{c#260 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#138*{c'_1#138 <- `c'_1*`}, c'_2#90*{c'_2#90 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#301))*{iter#301 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#302))*{iter#302 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#337)))))*{c_1#337 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#219)))))*{c_2#219 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#303))*{iter#303 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#139*{c'_1#139 <- `c'_1*`}, c'_2#91*{c'_2#91 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#263)*{c#263 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#338*{c_1#338 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#220*{c_2#220 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#140*{c'_1#140 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#339)))*{c_1#339 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#92*{c'_2#92 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#221)))*{c_2#221 <- `c_2*`} + -- let{`c*` : iN*} c#262*{c#262 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#141*{c'_1#141 <- `c'_1*`}, c'_2#93*{c'_2#93 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#304))*{iter#304 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#305))*{iter#305 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#340)))))*{c_1#340 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#222)))))*{c_2#222 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#306))*{iter#306 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#142*{c'_1#142 <- `c'_1*`}, c'_2#94*{c'_2#94 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#265)*{c#265 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#341*{c_1#341 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#223*{c_2#223 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#143*{c'_1#143 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#342)))*{c_1#342 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#95*{c'_2#95 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#224)))*{c_2#224 <- `c_2*`} + -- let{`c*` : iN*} c#264*{c#264 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#144*{c'_1#144 <- `c'_1*`}, c'_2#96*{c'_2#96 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#307))*{iter#307 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#308))*{iter#308 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#343)))))*{c_1#343 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#225)))))*{c_2#225 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#309))*{iter#309 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#145*{c'_1#145 <- `c'_1*`}, c'_2#97*{c'_2#97 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#267)*{c#267 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#344*{c_1#344 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#226*{c_2#226 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#146*{c'_1#146 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#345)))*{c_1#345 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#98*{c'_2#98 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#227)))*{c_2#227 <- `c_2*`} + -- let{`c*` : iN*} c#266*{c#266 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#147*{c'_1#147 <- `c'_1*`}, c'_2#99*{c'_2#99 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#310))*{iter#310 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#311))*{iter#311 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#346)))))*{c_1#346 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#228)))))*{c_2#228 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#312))*{iter#312 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#148*{c'_1#148 <- `c'_1*`}, c'_2#100*{c'_2#100 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#269)*{c#269 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#347*{c_1#347 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#229*{c_2#229 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#149*{c'_1#149 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#348)))*{c_1#348 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#101*{c'_2#101 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#230)))*{c_2#230 <- `c_2*`} + -- let{`c*` : iN*} c#268*{c#268 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#150*{c'_1#150 <- `c'_1*`}, c'_2#102*{c'_2#102 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#313))*{iter#313 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#314))*{iter#314 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#349)))))*{c_1#349 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#231)))))*{c_2#231 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#315))*{iter#315 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#151*{c'_1#151 <- `c'_1*`}, c'_2#103*{c'_2#103 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#271)*{c#271 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#350*{c_1#350 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#232*{c_2#232 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#152*{c'_1#152 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#351)))*{c_1#351 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#104*{c'_2#104 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#233)))*{c_2#233 <- `c_2*`} + -- let{`c*` : iN*} c#270*{c#270 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#153*{c'_1#153 <- `c'_1*`}, c'_2#105*{c'_2#105 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#316))*{iter#316 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#317))*{iter#317 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#352)))))*{c_1#352 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#234)))))*{c_2#234 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#318))*{iter#318 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#154*{c'_1#154 <- `c'_1*`}, c'_2#106*{c'_2#106 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#273)*{c#273 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#353*{c_1#353 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#235*{c_2#235 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#155*{c'_1#155 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#354)))*{c_1#354 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#107*{c'_2#107 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#236)))*{c_2#236 <- `c_2*`} + -- let{`c*` : iN*} c#272*{c#272 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#156*{c'_1#156 <- `c'_1*`}, c'_2#108*{c'_2#108 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#319))*{iter#319 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#320))*{iter#320 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#355)))))*{c_1#355 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#237)))))*{c_2#237 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#321))*{iter#321 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#157*{c'_1#157 <- `c'_1*`}, c'_2#109*{c'_2#109 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#275)*{c#275 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#356*{c_1#356 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#238*{c_2#238 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#158*{c'_1#158 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#357)))*{c_1#357 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#110*{c'_2#110 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#239)))*{c_2#239 <- `c_2*`} + -- let{`c*` : iN*} c#274*{c#274 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#159*{c'_1#159 <- `c'_1*`}, c'_2#111*{c'_2#111 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#322))*{iter#322 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#323))*{iter#323 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#358)))))*{c_1#358 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#240)))))*{c_2#240 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#324))*{iter#324 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#160*{c'_1#160 <- `c'_1*`}, c'_2#112*{c'_2#112 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivmul_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1#7*{i_1#7 <- `i_1*`}, i_2#7*{i_2#7 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextbinop__: `%%%%%%`(ishape, ishape, vextbinop__, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_16{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_17{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_18{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_19{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_20{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_21{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_22{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_23{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_24{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_25{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_26{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_27{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_28{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_29{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_30{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_31{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_32{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_33{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_34{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_35{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_36{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_37{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_38{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_39{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_40{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_41{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_42{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_43{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_44{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_45{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_46{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_47{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_0{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#325))*{iter#325 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_1{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#326))*{iter#326 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_2{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#327))*{iter#327 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_3{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#328))*{iter#328 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_4{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#329))*{iter#329 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_5{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#330))*{iter#330 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_6{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#331))*{iter#331 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_7{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#332))*{iter#332 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_8{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#333))*{iter#333 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_9{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#334))*{iter#334 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_10{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#335))*{iter#335 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_11{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#336))*{iter#336 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_12{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#337))*{iter#337 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_13{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#338))*{iter#338 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_14{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#339))*{iter#339 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_15{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#340))*{iter#340 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax num = + | CONST(numtype : numtype, num_) + +def $val_num(num) : val + def $val_num{x0 : numtype, x1 : num_}(CONST_num(x0, x1)) = CONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_num: `%`(num) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule num_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_num(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax vec = + | VCONST(vectype : vectype, vec_) + +def $val_vec(vec) : val + def $val_vec{x0 : vectype, x1 : vec_}(VCONST_vec(x0, x1)) = VCONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_vec: `%`(vec) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule vec_case_0{vectype : vectype, var_0 : vec_}: + `%`(VCONST_vec(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax result = + | _VALS(`val*` : val*) + | `(REF.EXN_ADDR%)THROW_REF`(exnaddr : exnaddr) + | TRAP + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_result: `%`(result) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_0{`val*` : val*}: + `%`(_VALS_result(`val*`)) + -- (wf_val: `%`(val))*{val <- `val*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_1{exnaddr : exnaddr}: + `%`(`(REF.EXN_ADDR%)THROW_REF`_result(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_2: + `%`(TRAP_result) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostfunc = + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funccode = + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | `...` + +def $funccode_func(func) : funccode + def $funccode_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_funccode(x0, x1, x2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funccode: `%`(funccode) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_funccode(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_1: + `%`(`...`_funccode) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax taginst = +{ + TYPE tagtype +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_taginst: `%`(taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_case_{var_0 : tagtype}: + `%`({TYPE var_0}) + -- wf_typeuse: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globalinst = +{ + TYPE globaltype, + VALUE val +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_globalinst: `%`(globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_case_{var_0 : globaltype, var_1 : val}: + `%`({TYPE var_0, VALUE var_1}) + -- wf_globaltype: `%`(var_0) + -- wf_val: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax meminst = +{ + TYPE memtype, + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_meminst: `%`(meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_case_{var_0 : memtype, var_1 : byte*}: + `%`({TYPE var_0, BYTES var_1}) + -- wf_memtype: `%`(var_0) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableinst = +{ + TYPE tabletype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_tableinst: `%`(tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_case_{var_0 : tabletype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_tabletype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcinst = +{ + TYPE deftype, + MODULE moduleinst, + CODE funccode +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funcinst: `%`(funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_case_{var_0 : deftype, var_1 : moduleinst, var_2 : funccode}: + `%`({TYPE var_0, MODULE var_1, CODE var_2}) + -- wf_moduleinst: `%`(var_1) + -- wf_funccode: `%`(var_2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax datainst = +{ + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_datainst: `%`(datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_case_{var_0 : byte*}: + `%`({BYTES var_0}) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax eleminst = +{ + TYPE elemtype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_eleminst: `%`(eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_case_{var_0 : elemtype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_reftype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax packval = + | PACK(packtype : packtype, iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_packval: `%`(packval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packval_case_0{packtype : packtype, var_0 : iN}: + `%`(PACK_packval(packtype, var_0)) + -- wf_uN: `%%`($psize(packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax fieldval = + | CONST(numtype : numtype, num_) + | VCONST(vectype : vectype, vec_) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + | PACK(packtype : packtype, iN) + +def $fieldval_packval(packval) : fieldval + def $fieldval_packval{x0 : packtype, x1 : iN}(PACK_packval(x0, x1)) = PACK_fieldval(x0, x1) + +def $fieldval_ref(ref) : fieldval + def $fieldval_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_fieldval(x0) + def $fieldval_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_fieldval + def $fieldval_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_fieldval(x0) + +def $fieldval_val(val) : fieldval + def $fieldval_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_fieldval(x0, x1) + def $fieldval_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_fieldval(x0, x1) + def $fieldval_val{x0 : u31}(`REF.I31_NUM`_val(x0)) = `REF.I31_NUM`_fieldval(x0) + def $fieldval_val(`REF.NULL_ADDR`_val) = `REF.NULL_ADDR`_fieldval + def $fieldval_val{x0 : structaddr}(`REF.STRUCT_ADDR`_val(x0)) = `REF.STRUCT_ADDR`_fieldval(x0) + def $fieldval_val{x0 : arrayaddr}(`REF.ARRAY_ADDR`_val(x0)) = `REF.ARRAY_ADDR`_fieldval(x0) + def $fieldval_val{x0 : funcaddr}(`REF.FUNC_ADDR`_val(x0)) = `REF.FUNC_ADDR`_fieldval(x0) + def $fieldval_val{x0 : exnaddr}(`REF.EXN_ADDR`_val(x0)) = `REF.EXN_ADDR`_fieldval(x0) + def $fieldval_val{x0 : hostaddr}(`REF.HOST_ADDR`_val(x0)) = `REF.HOST_ADDR`_fieldval(x0) + def $fieldval_val{x0 : ref}(`REF.EXTERN`_val(x0)) = `REF.EXTERN`_fieldval(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_fieldval: `%`(fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_fieldval(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_1{vectype : vectype, var_0 : vec_}: + `%`(VCONST_fieldval(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_2{u31 : u31}: + `%`(`REF.I31_NUM`_fieldval(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_3: + `%`(`REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_4{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_5{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_6{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_7{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_8{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_9{ref : ref}: + `%`(`REF.EXTERN`_fieldval(ref)) + -- wf_ref: `%`(ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_10{packtype : packtype, var_0 : iN}: + `%`(PACK_fieldval(packtype, var_0)) + -- wf_uN: `%%`($psize(packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_structinst: `%`(structinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_arrayinst: `%`(arrayinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exninst = +{ + TAG tagaddr, + FIELDS val* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exninst: `%`(exninst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_case_{var_0 : tagaddr, var_1 : val*}: + `%`({TAG var_0, FIELDS var_1}) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax store = +{ + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_store: `%`(store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: + `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) + -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} + -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} + -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} + -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} + -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} + -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} + -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} + -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} + -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} + -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax state = + | `%;%`(store : store, frame : frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_state: `%`(state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule state_case_0{store : store, frame : frame}: + `%`(`%;%`_state(store, frame)) + -- wf_store: `%`(store) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax config = + | `%;%`(state : state, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_config: `%`(config) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule config_case_0{state : state, `instr*` : instr*}: + `%`(`%;%`_config(state, `instr*`)) + -- wf_state: `%`(state) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $Ki : nat + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $Ki = 1024 + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $packfield_(storagetype : storagetype, val : val) : fieldval? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(BOT_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{`null?` : null?, heaptype : heaptype, val : val}(REF_storagetype(`null?`, heaptype), val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(V128_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(F64_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(F32_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(I64_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(I32_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation packfield__is_wf: `%%%`(storagetype : storagetype, val : val, ret_val : fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packfield__is_wf_0{storagetype : storagetype, val : val, ret_val : fieldval}: + `%%%`(storagetype, val, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_val: `%`(val) + -- if (ret_val = !($packfield_(storagetype, val))) + -- wf_fieldval: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(BOT_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(V128_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(F64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(F32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(I64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(I32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(BOT_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(V128_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(F64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(F32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(I64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(I32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(BOT_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(V128_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(F64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(F32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(I64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(I32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(BOT_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(V128_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(F64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(F32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(I64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(I32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(BOT_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(V128_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(F64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(F32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(I64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(I32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(BOT_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(V128_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(F64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(F32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(I64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(I32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(BOT_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{`null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(V128_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(F64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(F32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(I64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(I32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(BOT_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(V128_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(F64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(F32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(I64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(I32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(BOT_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(V128_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(F64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(F32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(I64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(I32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(BOT_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(V128_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(F64_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(F32_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(I64_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation unpackfield__is_wf: `%%%%`(storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule unpackfield__is_wf_0{storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val}: + `%%%%`(storagetype, var_0, fieldval, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = !($unpackfield_(storagetype, var_0, fieldval))) + -- wf_val: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 +relation fun_tagsxa: `%%`(externaddr*, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([TAG_externaddr(a)] ++ xa#1*{xa#1 <- `xa*`}, [a] ++ var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([externaddr] ++ xa#2*{xa#2 <- `xa*`}, var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 +relation fun_globalsxa: `%%`(externaddr*, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([GLOBAL_externaddr(a)] ++ xa#3*{xa#3 <- `xa*`}, [a] ++ var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([externaddr] ++ xa#4*{xa#4 <- `xa*`}, var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 +relation fun_memsxa: `%%`(externaddr*, memaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([MEM_externaddr(a)] ++ xa#5*{xa#5 <- `xa*`}, [a] ++ var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([externaddr] ++ xa#6*{xa#6 <- `xa*`}, var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 +relation fun_tablesxa: `%%`(externaddr*, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([TABLE_externaddr(a)] ++ xa#7*{xa#7 <- `xa*`}, [a] ++ var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([externaddr] ++ xa#8*{xa#8 <- `xa*`}, var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 +relation fun_funcsxa: `%%`(externaddr*, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([FUNC_externaddr(a)] ++ xa#9*{xa#9 <- `xa*`}, [a] ++ var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([externaddr] ++ xa#10*{xa#10 <- `xa*`}, var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $store(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $store{s : store, f : frame}(`%;%`_state(s, f)) = s + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation store_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_is_wf_0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $store(state)) + -- wf_store: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $frame(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation frame_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_is_wf_0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $frame(state)) + -- wf_frame: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tagaddr(state : state) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $moduleinst(state : state) : moduleinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation moduleinst_is_wf: `%%`(state : state, ret_val : moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_is_wf_0{state : state, ret_val : moduleinst}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $moduleinst(state)) + -- wf_moduleinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $taginst(state : state) : taginst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation taginst_is_wf: `%%`(state : state, ret_val : taginst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_is_wf_0{state : state, ret_val : taginst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $taginst(state)) + -- (wf_taginst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $globalinst(state : state) : globalinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation globalinst_is_wf: `%%`(state : state, ret_val : globalinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_is_wf_0{state : state, ret_val : globalinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $globalinst(state)) + -- (wf_globalinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $meminst(state : state) : meminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation meminst_is_wf: `%%`(state : state, ret_val : meminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_is_wf_0{state : state, ret_val : meminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $meminst(state)) + -- (wf_meminst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tableinst(state : state) : tableinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tableinst_is_wf: `%%`(state : state, ret_val : tableinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_is_wf_0{state : state, ret_val : tableinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $tableinst(state)) + -- (wf_tableinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $funcinst(state : state) : funcinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation funcinst_is_wf: `%%`(state : state, ret_val : funcinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_is_wf_0{state : state, ret_val : funcinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $funcinst(state)) + -- (wf_funcinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $datainst(state : state) : datainst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation datainst_is_wf: `%%`(state : state, ret_val : datainst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_is_wf_0{state : state, ret_val : datainst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $datainst(state)) + -- (wf_datainst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $eleminst(state : state) : eleminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation eleminst_is_wf: `%%`(state : state, ret_val : eleminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_is_wf_0{state : state, ret_val : eleminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $eleminst(state)) + -- (wf_eleminst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $structinst(state : state) : structinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation structinst_is_wf: `%%`(state : state, ret_val : structinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_is_wf_0{state : state, ret_val : structinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $structinst(state)) + -- (wf_structinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $arrayinst(state : state) : arrayinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation arrayinst_is_wf: `%%`(state : state, ret_val : arrayinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_is_wf_0{state : state, ret_val : arrayinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $arrayinst(state)) + -- (wf_arrayinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $exninst(state : state) : exninst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation exninst_is_wf: `%%`(state : state, ret_val : exninst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_is_wf_0{state : state, ret_val : exninst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $exninst(state)) + -- (wf_exninst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fof(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fof{z : state}(z) = $frame(z) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fof_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fof_is_wf_0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $fof(state)) + -- wf_frame: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $type(state : state, typeidx : typeidx) : deftype + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $type{z : state, x : uN}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $sof(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $sof{z : state}(z) = $store(z) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation sof_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule sof_is_wf_0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $sof(state)) + -- wf_store: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tag(state : state, tagidx : tagidx) : taginst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tag_is_wf: `%%%`(state : state, tagidx : tagidx, ret_val : taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tag_is_wf_0{state : state, tagidx : tagidx, ret_val : taginst}: + `%%%`(state, tagidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $tag(state, tagidx)) + -- wf_taginst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $global(state : state, globalidx : globalidx) : globalinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation global_is_wf: `%%%`(state : state, globalidx : globalidx, ret_val : globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule global_is_wf_0{state : state, globalidx : globalidx, ret_val : globalinst}: + `%%%`(state, globalidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $global(state, globalidx)) + -- wf_globalinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $mem(state : state, memidx : memidx) : meminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation mem_is_wf: `%%%`(state : state, memidx : memidx, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule mem_is_wf_0{state : state, memidx : memidx, ret_val : meminst}: + `%%%`(state, memidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $mem(state, memidx)) + -- wf_meminst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $table(state : state, tableidx : tableidx) : tableinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation table_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule table_is_wf_0{state : state, tableidx : tableidx, ret_val : tableinst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $table(state, tableidx)) + -- wf_tableinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $func(state : state, funcidx : funcidx) : funcinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation func_is_wf: `%%%`(state : state, funcidx : funcidx, ret_val : funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule func_is_wf_0{state : state, funcidx : funcidx, ret_val : funcinst}: + `%%%`(state, funcidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $func(state, funcidx)) + -- wf_funcinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $data(state : state, dataidx : dataidx) : datainst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation data_is_wf: `%%%`(state : state, dataidx : dataidx, ret_val : datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule data_is_wf_0{state : state, dataidx : dataidx, ret_val : datainst}: + `%%%`(state, dataidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $data(state, dataidx)) + -- wf_datainst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $elem(state : state, tableidx : tableidx) : eleminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation elem_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule elem_is_wf_0{state : state, tableidx : tableidx, ret_val : eleminst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $elem(state, tableidx)) + -- wf_eleminst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $local(state : state, localidx : localidx) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation local_is_wf: `%%%`(state : state, localidx : localidx, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule local_is_wf_0{state : state, localidx : localidx, ret_val : val?}: + `%%%`(state, localidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $local(state, localidx)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_local(state : state, localidx : localidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_local_is_wf: `%%%%`(state : state, localidx : localidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_local_is_wf_0{state : state, localidx : localidx, val : val, ret_val : state}: + `%%%%`(state, localidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_local(state, localidx, val)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_global(state : state, globalidx : globalidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_global_is_wf: `%%%%`(state : state, globalidx : globalidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_global_is_wf_0{state : state, globalidx : globalidx, val : val, ret_val : state}: + `%%%%`(state, globalidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_global(state, globalidx, val)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_table_is_wf: `%%%%%`(state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_table_is_wf_0{state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state}: + `%%%%%`(state, tableidx, nat, ref, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_ref: `%`(ref) + -- if (ret_val = $with_table(state, tableidx, nat, ref)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_tableinst_is_wf: `%%%%`(state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_tableinst_is_wf_0{state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state}: + `%%%%`(state, tableidx, tableinst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_tableinst: `%`(tableinst) + -- if (ret_val = $with_tableinst(state, tableidx, tableinst)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_mem{z : state, x : uN, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b#1*{b#1 <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_mem_is_wf: `%%%%%%`(state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_mem_is_wf_0{state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state}: + `%%%%%%`(state, memidx, nat, nat_0, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_mem(state, memidx, nat, nat_0, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_meminst_is_wf: `%%%%`(state : state, memidx : memidx, meminst : meminst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_meminst_is_wf_0{state : state, memidx : memidx, meminst : meminst, ret_val : state}: + `%%%%`(state, memidx, meminst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- wf_meminst: `%`(meminst) + -- if (ret_val = $with_meminst(state, memidx, meminst)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_elem(state : state, elemidx : elemidx, ref*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_elem{z : state, x : uN, `r*` : ref*}(z, x, r#1*{r#1 <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_elem_is_wf: `%%%%`(state : state, elemidx : elemidx, var_0 : ref*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_elem_is_wf_0{state : state, elemidx : elemidx, var_0 : ref*, ret_val : state}: + `%%%%`(state, elemidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, elemidx) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_elem(state, elemidx, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_data(state : state, dataidx : dataidx, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b#2*{b#2 <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_data_is_wf: `%%%%`(state : state, dataidx : dataidx, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_data_is_wf_0{state : state, dataidx : dataidx, var_0 : byte*, ret_val : state}: + `%%%%`(state, dataidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_data(state, dataidx, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_struct_is_wf: `%%%%%`(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_struct_is_wf_0{state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, structaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_struct(state, structaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_array_is_wf: `%%%%%`(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_array_is_wf_0{state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, arrayaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_array(state, arrayaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_structinst(state : state, structinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_structinst{z : state, `si*` : structinst*}(z, si#1*{si#1 <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_structinst_is_wf: `%%%`(state : state, var_0 : structinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_structinst_is_wf_0{state : state, var_0 : structinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_structinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_structinst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_arrayinst(state : state, arrayinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai#1*{ai#1 <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_arrayinst_is_wf: `%%%`(state : state, var_0 : arrayinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_arrayinst_is_wf_0{state : state, var_0 : arrayinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_arrayinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_arrayinst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_exninst(state : state, exninst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_exninst{z : state, `exn*` : exninst*}(z, exn#1*{exn#1 <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_exninst_is_wf: `%%%`(state : state, var_0 : exninst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_exninst_is_wf_0{state : state, var_0 : exninst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_exninst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_exninst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growtable_before_fun_growtable_case_1: `%%%`(tableinst, nat, ref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, i' : uN}: + `%%%`(tableinst, n, r) + -- let{at : addrtype, i : u64, `j?` : u64?, rt : reftype, `r'*` : ref*} {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#1?{j#1 <- `j?`}), rt), REFS r'#1*{r'#1 <- `r'*`}} = tableinst + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#2?{j#2 <- `j?`}), rt), REFS r'#2*{r'#2 <- `r'*`} ++ r^n{}}) + -- if ($proj_uN_0(i').0 = (|r'#3*{r'#3 <- `r'*`}| + n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#3).0))?{j#3 <- `j?`} + -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#4?{j#4 <- `j?`}), rt), REFS r'#4*{r'#4 <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#5?{j#5 <- `j?`}), rt), REFS r'#5*{r'#5 <- `r'*`} ++ r^n{}}) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, i' : uN}: + `%%%%`(tableinst, n, r, ?(tableinst')) + -- let{at : addrtype, i : u64, `j?` : u64?, rt : reftype, `r'*` : ref*} {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#1?{j#1 <- `j?`}), rt), REFS r'#1*{r'#1 <- `r'*`}} = tableinst + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#2?{j#2 <- `j?`}), rt), REFS r'#2*{r'#2 <- `r'*`} ++ r^n{}}) + -- if ($proj_uN_0(i').0 = (|r'#3*{r'#3 <- `r'*`}| + n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#3).0))?{j#3 <- `j?`} + -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#4?{j#4 <- `j?`}), rt), REFS r'#4*{r'#4 <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#5?{j#5 <- `j?`}), rt), REFS r'#5*{r'#5 <- `r'*`} ++ r^n{}}) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_1{x0 : tableinst, x1 : nat, x2 : ref}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_growtable_before_fun_growtable_case_1: `%%%`(x0, x1, x2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growtable_is_wf: `%%%%`(tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growtable_is_wf_0{tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst, var_0 : tableinst?}: + `%%%%`(tableinst, nat, ref, ret_val) + -- wf_tableinst: `%`(tableinst) + -- wf_ref: `%`(ref) + -- if (ret_val = !(var_0)) + -- wf_tableinst: `%`(ret_val) + -- fun_growtable: `%%%%`(tableinst, nat, ref, var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem_before_fun_growmem_case_1: `%%`(meminst, nat) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, i' : uN}: + `%%`(meminst, n) + -- let{at : addrtype, i : u64, `j?` : u64?, `b*` : byte*} {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#3*{b#3 <- `b*`}} = meminst + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#4*{b#4 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#5*{b#5 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#8).0))?{j#8 <- `j?`} + -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#9?{j#9 <- `j?`})), BYTES b#6*{b#6 <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#10?{j#10 <- `j?`})), BYTES b#7*{b#7 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem: `%%%`(meminst, nat, meminst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, i' : uN}: + `%%%`(meminst, n, ?(meminst')) + -- let{at : addrtype, i : u64, `j?` : u64?, `b*` : byte*} {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#3*{b#3 <- `b*`}} = meminst + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#4*{b#4 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#5*{b#5 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#8).0))?{j#8 <- `j?`} + -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#9?{j#9 <- `j?`})), BYTES b#6*{b#6 <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#10?{j#10 <- `j?`})), BYTES b#7*{b#7 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_1{x0 : meminst, x1 : nat}: + `%%%`(x0, x1, ?()) + -- ~ fun_growmem_before_fun_growmem_case_1: `%%`(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growmem_is_wf: `%%%`(meminst : meminst, nat : nat, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growmem_is_wf_0{meminst : meminst, nat : nat, ret_val : meminst, var_0 : meminst?}: + `%%%`(meminst, nat, ret_val) + -- wf_meminst: `%`(meminst) + -- if (ret_val = !(var_0)) + -- wf_meminst: `%`(ret_val) + -- fun_growmem: `%%%`(meminst, nat, var_0) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Num_ok: `%|-%:%`(store, num, numtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, nt : numtype, c : num_}: + `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Vec_ok: `%|-%:%`(store, vec, vectype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, vt : vectype, c : vec_}: + `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +relation Ref_ok: `%|-%:%`(store, ref, reftype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.36 + rule null{s : store}: + `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.31 + rule i31{s : store, i : u31}: + `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.I31_NUM`_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 + rule struct{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.STRUCTS_store[a].TYPE_structinst = dt) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 + rule array{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 + rule func{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.FUNCS_store[a].TYPE_funcinst = dt) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 + rule exn{s : store, a : addr, exn : exninst}: + `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) + -- if (s.EXNS_store[a] = exn) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.33 + rule host{s : store, a : addr}: + `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.HOST_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 + rule extern{s : store, ref : ref}: + `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) + -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.EXTERN`_ref(ref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-69.34 + rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: + `%|-%:%`(s, ref, rt) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Val_ok: `%|-%:%`(store, val, valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule num{s : store, num : num, nt : numtype}: + `%|-%:%`(s, $val_num(num), $valtype_numtype(nt)) + -- Num_ok: `%|-%:%`(s, num, nt) + -- wf_store: `%`(s) + -- wf_num: `%`(num) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule vec{s : store, vec : vec, vt : vectype}: + `%|-%:%`(s, $val_vec(vec), $valtype_vectype(vt)) + -- Vec_ok: `%|-%:%`(s, vec, vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule ref{s : store, ref : ref, rt : reftype}: + `%|-%:%`(s, $val_ref(ref), $valtype_reftype(rt)) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Packval_ok: `%|-%:%`(store, packval, packtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, pt : packtype, c : iN}: + `%|-%:%`(s, PACK_packval(pt, c), pt) + -- wf_store: `%`(s) + -- wf_packval: `%`(PACK_packval(pt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule val{s : store, val : val, t : valtype}: + `%|-%:%`(s, $fieldval_val(val), $storagetype_valtype(t)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_val: `%`(val) + -- wf_valtype: `%`(t) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule packval{s : store, packval : packval, pt : packtype}: + `%|-%:%`(s, $fieldval_packval(packval), $storagetype_packtype(pt)) + -- Packval_ok: `%|-%:%`(s, packval, pt) + -- wf_store: `%`(s) + -- wf_packval: `%`(packval) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-104.84 +relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:106.1-108.28 + rule tag{s : store, a : addr, taginst : taginst}: + `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- if (s.TAGS_store[a] = taginst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:110.1-112.34 + rule global{s : store, a : addr, globalinst : globalinst}: + `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- if (s.GLOBALS_store[a] = globalinst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:114.1-116.28 + rule mem{s : store, a : addr, meminst : meminst}: + `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- if (s.MEMS_store[a] = meminst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:118.1-120.32 + rule table{s : store, a : addr, tableinst : tableinst}: + `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- if (s.TABLES_store[a] = tableinst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:122.1-124.30 + rule func{s : store, a : addr, funcinst : funcinst}: + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) + -- if (s.FUNCS_store[a] = funcinst) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:126.1-130.37 + rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: + `%|-%:%`(s, externaddr, xt) + -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') + -- Externtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt) + -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_valtype: `%%%`(moduleinst, valtype, valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_valtype_case_0{moduleinst : moduleinst, t : valtype, var_0 : valtype}: + `%%%`(moduleinst, t, var_0) + -- fun_subst_all_valtype: `%%%`(t, (iter_val#3 : deftype <: typeuse)*{iter_val#3 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_valtype_is_wf: `%%%`(moduleinst : moduleinst, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_valtype_is_wf_0{moduleinst : moduleinst, valtype : valtype, ret_val : valtype, var_0 : valtype}: + `%%%`(moduleinst, valtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_valtype: `%`(valtype) + -- if (ret_val = var_0) + -- wf_valtype: `%`(ret_val) + -- fun_inst_valtype: `%%%`(moduleinst, valtype, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_reftype: `%%%`(moduleinst, reftype, reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_reftype_case_0{moduleinst : moduleinst, rt : reftype, var_0 : reftype}: + `%%%`(moduleinst, rt, var_0) + -- fun_subst_all_reftype: `%%%`(rt, (iter_val#4 : deftype <: typeuse)*{iter_val#4 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_reftype_is_wf: `%%%`(moduleinst : moduleinst, reftype : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_reftype_is_wf_0{moduleinst : moduleinst, reftype : reftype, ret_val : reftype, var_0 : reftype}: + `%%%`(moduleinst, reftype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_reftype: `%`(reftype) + -- if (ret_val = var_0) + -- wf_reftype: `%`(ret_val) + -- fun_inst_reftype: `%%%`(moduleinst, reftype, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_globaltype: `%%%`(moduleinst, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_globaltype_case_0{moduleinst : moduleinst, gt : globaltype, var_0 : globaltype}: + `%%%`(moduleinst, gt, var_0) + -- fun_subst_all_globaltype: `%%%`(gt, (iter_val#5 : deftype <: typeuse)*{iter_val#5 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_globaltype_is_wf: `%%%`(moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_globaltype_is_wf_0{moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype, var_0 : globaltype}: + `%%%`(moduleinst, globaltype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = var_0) + -- wf_globaltype: `%`(ret_val) + -- fun_inst_globaltype: `%%%`(moduleinst, globaltype, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_memtype: `%%%`(moduleinst, memtype, memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_memtype_case_0{moduleinst : moduleinst, mt : memtype, var_0 : memtype}: + `%%%`(moduleinst, mt, var_0) + -- fun_subst_all_memtype: `%%%`(mt, (iter_val#6 : deftype <: typeuse)*{iter_val#6 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_memtype_is_wf: `%%%`(moduleinst : moduleinst, memtype : memtype, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_memtype_is_wf_0{moduleinst : moduleinst, memtype : memtype, ret_val : memtype, var_0 : memtype}: + `%%%`(moduleinst, memtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_memtype: `%`(memtype) + -- if (ret_val = var_0) + -- wf_memtype: `%`(ret_val) + -- fun_inst_memtype: `%%%`(moduleinst, memtype, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_tabletype: `%%%`(moduleinst, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_tabletype_case_0{moduleinst : moduleinst, tt : tabletype, var_0 : tabletype}: + `%%%`(moduleinst, tt, var_0) + -- fun_subst_all_tabletype: `%%%`(tt, (iter_val#7 : deftype <: typeuse)*{iter_val#7 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_tabletype_is_wf: `%%%`(moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_tabletype_is_wf_0{moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype, var_0 : tabletype}: + `%%%`(moduleinst, tabletype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = var_0) + -- wf_tabletype: `%`(ret_val) + -- fun_inst_tabletype: `%%%`(moduleinst, tabletype, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_pure_before_ref.eq-true`: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref}: + `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_pure: `%~>%`(instr*, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule unreachable: + `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule nop: + `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule drop{val : val}: + `%~>%`([$instr_val(val) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_1)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_2)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- if ($proj_uN_0(l).0 = 0) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- if ($proj_uN_0(l).0 > 0) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-true`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-false`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-null`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- if (val = `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-addr`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [$instr_val(val)]) + -- if (val =/= `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-null`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], []) + -- if (val = `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-addr`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], [$instr_val(val) BR_instr(l)]) + -- if (val =/= `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call_indirect{x : idx, yy : typeuse}: + `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call_indirect{x : idx, yy : typeuse}: + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `frame-vals`{n : n, f : frame, `val*` : val*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: + `%~>%`($instr_val(val)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-label`{n : n, `instr'*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-handler`{n : n, `catch*` : catch*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-frame`{n : n, f : frame}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `local.tee`{val : val, x : idx}: + `%~>%`([$instr_val(val) `LOCAL.TEE`_instr(x)], [$instr_val(val) $instr_val(val) `LOCAL.SET`_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) + -- wf_instr: `%`(`LOCAL.SET`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.i31`{i : num_}: + `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`REF.I31`_instr) + -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-true`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-false`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-null`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr], [TRAP_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-addr`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr], [$instr_ref(ref)]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) + -- if (ref_1 = ref_2) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-null`{sx : sx}: + `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-num`{i : u31, sx : sx}: + `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(`REF.I31_NUM`_instr(i)) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new`{val : val, n : n, x : idx}: + `%~>%`([$instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], $instr_val(val)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-null`{ref : ref}: + `%~>%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-addr`{ref : ref}: + `%~>%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-null`: + `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-addr`{ref : ref}: + `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [$instr_ref(ref)]) + -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- if (c <- var_0) + -- (wf_num_: `%%`(nt, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_num_: `%%`(nt, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- if (c <- var_0) + -- (wf_num_: `%%`(nt, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_num_: `%%`(nt, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) + -- wf_uN: `%%`(32, $testop_(nt, testop, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) + -- wf_uN: `%%`(32, $relop_(nt, relop, c_1, c_2)) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- if (c <- var_0) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, var_0 : num_*}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvunop_(V128_vectype, vvunop, c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvtestop{c_1 : vec_, c : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) + -- wf_uN: `%%`(32, $inez_($vsize(V128_vectype), c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- var_0) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- var_0) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- var_0) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*, var_0 : nat}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) + -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = var_0) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), i))*{i <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)} + -- (wf_uN: `%%`(32, $inez_($jsizenn(Jnn), !($proj_lane__2(i)))))*{i <- `i*`} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- fun_prod: `%%`($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vrelop_: `%%%%%`(sh, vrelop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vshiftop_: `%%%%%`(sh, vshiftop, c_1, !($proj_num__0(i)), var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vbitmask{c_1 : vec_, sh : ishape, c : num_, var_0 : u32}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = var_0) + -- wf_uN: `%%`(32, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- fun_vbitmaskop_: `%%%`(sh, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vswizzlop_: `%%%%%`(sh, swizzlop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vshufflop_: `%%%%%`(sh, i*{i <- `i*`}, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: + `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- wf_uN: `%%`(32, $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)} + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- if (var_0 = c) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vextunop__: `%%%%%`(sh_1, sh_2, vextunop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (var_0 = c) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vextbinop__: `%%%%%%`(sh_1, sh_2, vextbinop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- if (var_0 = c) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vextternop__: `%%%%%%%`(sh_1, sh_2, vextternop, c_1, c_2, c_3, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vnarrowop__: `%%%%%%`($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vcvtop__: `%%%%%`(sh_1, sh_2, vcvtop, c_1, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation fun_blocktype_: `%%%`(state, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule fun_blocktype__case_0{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%`(z, _IDX_blocktype(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1#2*{t_1#2 <- `t_1*`}), `%`_resulttype(t_2#2*{t_2#2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#3*{t_1#3 <- `t_1*`}), `%`_resulttype(t_2#3*{t_2#3 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule fun_blocktype__case_1{z : state, `t?` : valtype?}: + `%%%`(z, _RESULT_blocktype(t#1?{t#1 <- `t?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation blocktype__is_wf: `%%%`(state : state, blocktype : blocktype, ret_val : instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule blocktype__is_wf_0{state : state, blocktype : blocktype, ret_val : instrtype, var_0 : instrtype}: + `%%%`(state, blocktype, ret_val) + -- wf_state: `%`(state) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = var_0) + -- wf_instrtype: `%`(ret_val) + -- fun_blocktype_: `%%%`(state, blocktype, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_throw_ref-handler-next`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.test-false`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-num`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read: `%~>%`(config, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (m = |`val*`|) + -- if (m = |`t_1*`|) + -- if (n = |`t_2*`|) + -- fun_blocktype_: `%%%`(z, bt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (m = |`val*`|) + -- if (m = |`t_1*`|) + -- if (n = |`t_2*`|) + -- fun_blocktype_: `%%%`(z, bt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + -- wf_moduleinst: `%`($moduleinst(z)) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-null`{z : state, yy : typeuse}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- if ($funcinst(z)[a] = fi) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- if (n = |`val*`|) + -- if (n = |`t_1*`|) + -- if (m = |`t_2*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + -- wf_moduleinst: `%`($moduleinst(z)) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) + -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (n = |`val*`|) + -- if (n = |`t_1*`|) + -- if (m = |`t_2*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) + -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (m = |`val*`|) + -- if (m = |`t_1*`|) + -- if (n = |`t_2*`|) + -- fun_blocktype_: `%%%`(z, bt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `local.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [$instr_val(val)]) + -- if ($local(z, x) = ?(val)) + -- wf_val: `%`(val) + -- (wf_val: `%`(iter))?{iter <- $local(z, x)} + -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `global.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [$instr_val(val)]) + -- if ($global(z, x).VALUE_globalinst = val) + -- wf_val: `%`(val) + -- wf_globalinst: `%`($global(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: + `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- if (|$table(z, x).REFS_tableinst| = n) + -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) $instr_ref($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) + -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, Jnn : Jnn}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[(($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (c = $extend__(N, 128, U_sx, j)) + -- wf_uN: `%%`(N, j) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $extend__(N, 128, U_sx, j)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, k)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.size`{z : state, x : idx, at : addrtype, n : n, lim : limits}: + `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) + -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL`_instr(ht)])) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.func`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) + -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)]), [$instr_ref(ref)]) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)]), [TRAP_instr]) + -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), $instr_val(val)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))}*{zt <- `zt*`} + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} + -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])))]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_val: `%`(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]))) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)]), $instr_val(val)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (!($default_($unpack(zt))) = ?(val)) + -- wf_val: `%`(val) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))} + -- wf_valtype: `%`($unpack(zt)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), $instr_ref(ref)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- if (n = |`ref*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- (wf_instr: `%`($const(!($cunpack(zt)), $cunpacknum_(zt, c))))^n{c <- `c*`} + -- (wf_lit_: `%%`($storagetype_consttype(!($cunpack(zt))), $cunpacknum_(zt, c)))^n{c <- `c*`} + -- (wf_byte: `%`(iter))*{iter <- $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))} + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)}^n{c <- `c*`} + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (n = |`c*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [$instr_val(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_val: `%`(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]))) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-array`{z : state, a : addr}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-null`{z : state, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) + -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null1`{z : state, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), []) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) + -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), []) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) + -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) + -- wf_ref: `%`(ref) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), []) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) + -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- wf_lit_: `%%`(zt, c) + -- wf_instr: `%`($const(!($cunpack(zt)), $cunpacknum_(zt, c))) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(zt))), $cunpacknum_(zt, c)) + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)} + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +relation Step: `%~>%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.36 + rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:45.1-47.45 + rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 + rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if (a = |$exninst(z)|) + -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + -- wf_taginst: `%`($tag(z, x)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + -- if (n = |`val*`|) + -- if (n = |`t*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:305.1-306.56 + rule `local.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:318.1-319.58 + rule `global.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:332.1-334.33 + rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.32 + rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:347.1-350.46 + rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst, var_0 : tableinst?}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- if (ti = !(var_0)) + -- wf_tableinst: `%`(!(var_0)) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- fun_growtable: `%%%%`($table(z, x), n, ref, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:352.1-353.87 + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:413.1-414.51 + rule `elem.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:497.1-500.60 + rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:502.1-506.29 + rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $nbytes_(nt, c)) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:508.1-511.52 + rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:513.1-517.52 + rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))} + -- wf_uN: `%%`(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c)))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:519.1-522.63 + rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:524.1-527.31 + rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:530.1-533.50 + rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:535.1-540.49 + rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:549.1-552.37 + rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst, var_0 : meminst?}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (mi = !(var_0)) + -- wf_meminst: `%`(!(var_0)) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- fun_growmem: `%%%`($mem(z, x), n, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:554.1-555.84 + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:615.1-616.51 + rule `data.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:692.1-696.65 + rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (a = |$structinst(z)|) + -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + -- if (n = |`val*`|) + -- if (n = |`mut?*`|) + -- if (n = |`zt*`|) + -- if (n = |`val*`|) + -- if (n = |`zt*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:713.1-714.55 + rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(val) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(val) `STRUCT.SET`_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:716.1-719.46 + rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:732.1-737.65 + rule `array.new_fixed`{z : state, n : n, `val*` : val*, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:777.1-778.66 + rule `array.set-null`{z : state, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:780.1-782.39 + rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:784.1-787.44 + rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +relation Steps: `%~>*%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + rule refl{z : state, `instr*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: + `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`})) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 +relation fun_alloctypes: `%%`(type*, deftype*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_1{`type'*` : type*, type : type, `deftype*` : deftype*, x : uN, var_2 : deftype*, var_1 : deftype*, var_0 : deftype*}: + `%%`(type'#1*{type'#1 <- `type'*`} ++ [type], deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`}) + -- let{`deftype'*` : deftype*} deftype'#1*{deftype'#1 <- `deftype'*`} = var_0 + -- let{rectype : rectype} TYPE_type(rectype) = type + -- if (deftype#1*{deftype#1 <- `deftype*`} = var_1) + -- if ($proj_uN_0(x).0 = |deftype'#3*{deftype'#3 <- `deftype'*`}|) + -- wf_uN: `%%`(32, x) + -- fun_rolldt: `%%%`(x, rectype, var_2) + -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype'#2)*{deftype'#2 <- `deftype'*`}, var_1) + -- fun_alloctypes: `%%`(type'#2*{type'#2 <- `type'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_alloctag: `%%%`(store, tagtype, (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_alloctag_case_0{s : store, tagtype : typeuse, taginst : taginst}: + `%%%`(s, tagtype, (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|)) + -- if (taginst = {TYPE tagtype}) + -- wf_taginst: `%`({TYPE tagtype}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctag_is_wf: `%%%`(store : store, tagtype : tagtype, ret_val : (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctag_is_wf_0{store : store, tagtype : tagtype, ret_val : (store, tagaddr), var_0 : (store, tagaddr)}: + `%%%`(store, tagtype, ret_val) + -- wf_store: `%`(store) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_alloctag: `%%%`(store, tagtype, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation fun_alloctags: `%%%`(store, tagtype*, (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_1{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, var_2 : (store, tagaddr*), var_1 : (store, tagaddr*), var_0 : (store, tagaddr)}: + `%%%`(s, [tagtype] ++ tagtype'#1*{tagtype'#1 <- `tagtype'*`}, (s_2, [ja] ++ ja'*{ja' <- `ja'*`})) + -- let{ja : tagaddr, s_1 : store} (s_1, ja) = var_0 + -- let{s_2 : store, `ja'*` : tagaddr*} (s_2, ja'#1*{ja'#1 <- `ja'*`}) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_alloctags: `%%%`(s_1, tagtype'#3*{tagtype'#3 <- `tagtype'*`}, var_2) + -- fun_alloctags: `%%%`(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}, var_1) + -- fun_alloctag: `%%%`(s, tagtype, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation alloctags_is_wf: `%%%`(store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule alloctags_is_wf_0{store : store, var_0 : tagtype*, ret_val : (store, tagaddr*), var_1 : (store, tagaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_typeuse: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_store: `%`(ret_val.0) + -- fun_alloctags: `%%%`(store, var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocglobal: `%%%%`(store, globaltype, val, (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocglobal_case_0{s : store, globaltype : globaltype, val : val, globalinst : globalinst}: + `%%%%`(s, globaltype, val, (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|)) + -- if (globalinst = {TYPE globaltype, VALUE val}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocglobal_is_wf: `%%%%`(store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocglobal_is_wf_0{store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr), var_0 : (store, globaladdr)}: + `%%%%`(store, globaltype, val, ret_val) + -- wf_store: `%`(store) + -- wf_globaltype: `%`(globaltype) + -- wf_val: `%`(val) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_allocglobal: `%%%%`(store, globaltype, val, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation fun_allocglobals: `%%%%`(store, globaltype*, val*, (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_1{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, var_2 : (store, globaladdr*), var_1 : (store, globaladdr*), var_0 : (store, globaladdr)}: + `%%%%`(s, [globaltype] ++ globaltype'#1*{globaltype'#1 <- `globaltype'*`}, [val] ++ val'#1*{val'#1 <- `val'*`}, (s_2, [ga] ++ ga'*{ga' <- `ga'*`})) + -- let{ga : globaladdr, s_1 : store} (s_1, ga) = var_0 + -- let{s_2 : store, `ga'*` : globaladdr*} (s_2, ga'#1*{ga'#1 <- `ga'*`}) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_allocglobals: `%%%%`(s_1, globaltype'#3*{globaltype'#3 <- `globaltype'*`}, val'#3*{val'#3 <- `val'*`}, var_2) + -- fun_allocglobals: `%%%%`(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, globaltype, val, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation allocglobals_is_wf: `%%%%`(store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule allocglobals_is_wf_0{store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*), var_2 : (store, globaladdr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_store: `%`(ret_val.0) + -- fun_allocglobals: `%%%%`(store, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocmem: `%%%`(store, memtype, (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocmem_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}: + `%%%`(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#11?{j#11 <- `j?`})), (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|)) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#12?{j#12 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#13?{j#13 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmem_is_wf: `%%%`(store : store, memtype : memtype, ret_val : (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmem_is_wf_0{store : store, memtype : memtype, ret_val : (store, memaddr), var_0 : (store, memaddr)}: + `%%%`(store, memtype, ret_val) + -- wf_store: `%`(store) + -- wf_memtype: `%`(memtype) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_allocmem: `%%%`(store, memtype, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation fun_allocmems: `%%%`(store, memtype*, (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_1{s : store, memtype : memtype, `memtype'*` : memtype*, var_2 : (store, memaddr*), var_1 : (store, memaddr*), var_0 : (store, memaddr)}: + `%%%`(s, [memtype] ++ memtype'#1*{memtype'#1 <- `memtype'*`}, (s_2, [ma] ++ ma'*{ma' <- `ma'*`})) + -- let{ma : memaddr, s_1 : store} (s_1, ma) = var_0 + -- let{s_2 : store, `ma'*` : memaddr*} (s_2, ma'#1*{ma'#1 <- `ma'*`}) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_allocmems: `%%%`(s_1, memtype'#3*{memtype'#3 <- `memtype'*`}, var_2) + -- fun_allocmems: `%%%`(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}, var_1) + -- fun_allocmem: `%%%`(s, memtype, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation allocmems_is_wf: `%%%`(store : store, var_0 : memtype*, ret_val : (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule allocmems_is_wf_0{store : store, var_0 : memtype*, ret_val : (store, memaddr*), var_1 : (store, memaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_memtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_store: `%`(ret_val.0) + -- fun_allocmems: `%%%`(store, var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_alloctable: `%%%%`(store, tabletype, ref, (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_alloctable_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}: + `%%%%`(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j#14?{j#14 <- `j?`}), rt), ref, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|)) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#15?{j#15 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#16?{j#16 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctable_is_wf: `%%%%`(store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctable_is_wf_0{store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr), var_0 : (store, tableaddr)}: + `%%%%`(store, tabletype, ref, ret_val) + -- wf_store: `%`(store) + -- wf_tabletype: `%`(tabletype) + -- wf_ref: `%`(ref) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_alloctable: `%%%%`(store, tabletype, ref, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation fun_alloctables: `%%%%`(store, tabletype*, ref*, (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_1{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, var_2 : (store, tableaddr*), var_1 : (store, tableaddr*), var_0 : (store, tableaddr)}: + `%%%%`(s, [tabletype] ++ tabletype'#1*{tabletype'#1 <- `tabletype'*`}, [ref] ++ ref'#1*{ref'#1 <- `ref'*`}, (s_2, [ta] ++ ta'*{ta' <- `ta'*`})) + -- let{ta : tableaddr, s_1 : store} (s_1, ta) = var_0 + -- let{s_2 : store, `ta'*` : tableaddr*} (s_2, ta'#1*{ta'#1 <- `ta'*`}) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_alloctables: `%%%%`(s_1, tabletype'#3*{tabletype'#3 <- `tabletype'*`}, ref'#3*{ref'#3 <- `ref'*`}, var_2) + -- fun_alloctables: `%%%%`(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}, var_1) + -- fun_alloctable: `%%%%`(s, tabletype, ref, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation alloctables_is_wf: `%%%%`(store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule alloctables_is_wf_0{store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*), var_2 : (store, tableaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_tabletype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_store: `%`(ret_val.0) + -- fun_alloctables: `%%%%`(store, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocfunc: `%%%%%`(store, deftype, funccode, moduleinst, (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocfunc_case_0{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}: + `%%%%%`(s, deftype, funccode, moduleinst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|)) + -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocfunc_is_wf: `%%%%%`(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocfunc_is_wf_0{store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr), var_0 : (store, funcaddr)}: + `%%%%%`(store, deftype, funccode, moduleinst, ret_val) + -- wf_store: `%`(store) + -- wf_funccode: `%`(funccode) + -- wf_moduleinst: `%`(moduleinst) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_allocfunc: `%%%%%`(store, deftype, funccode, moduleinst, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation fun_allocfuncs: `%%%%%`(store, deftype*, funccode*, moduleinst*, (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_0{s : store}: + `%%%%%`(s, [], [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_1{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, var_2 : (store, funcaddr*), var_1 : (store, funcaddr*), var_0 : (store, funcaddr)}: + `%%%%%`(s, [dt] ++ dt'#3*{dt'#3 <- `dt'*`}, [funccode] ++ funccode'#1*{funccode'#1 <- `funccode'*`}, [moduleinst] ++ moduleinst'#1*{moduleinst'#1 <- `moduleinst'*`}, (s_2, [fa] ++ fa'*{fa' <- `fa'*`})) + -- let{fa : funcaddr, s_1 : store} (s_1, fa) = var_0 + -- let{s_2 : store, `fa'*` : funcaddr*} (s_2, fa'#1*{fa'#1 <- `fa'*`}) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_allocfuncs: `%%%%%`(s_1, dt'#5*{dt'#5 <- `dt'*`}, funccode'#3*{funccode'#3 <- `funccode'*`}, moduleinst'#3*{moduleinst'#3 <- `moduleinst'*`}, var_2) + -- fun_allocfuncs: `%%%%%`(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}, var_1) + -- fun_allocfunc: `%%%%%`(s, dt, funccode, moduleinst, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation allocfuncs_is_wf: `%%%%%`(store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule allocfuncs_is_wf_0{store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*), var_3 : (store, funcaddr*)}: + `%%%%%`(store, var_0, var_1, var_2, ret_val) + -- wf_store: `%`(store) + -- (wf_funccode: `%`(var_1))*{var_1 <- var_1} + -- (wf_moduleinst: `%`(var_2))*{var_2 <- var_2} + -- if (ret_val = var_3) + -- wf_store: `%`(ret_val.0) + -- fun_allocfuncs: `%%%%%`(store, var_0, var_1, var_2, var_3) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocdata: `%%%%`(store, datatype, byte*, (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocdata_case_0{s : store, `byte*` : byte*, datainst : datainst}: + `%%%%`(s, OK_datatype, byte#2*{byte#2 <- `byte*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|)) + -- if (datainst = {BYTES byte#3*{byte#3 <- `byte*`}}) + -- wf_datainst: `%`({BYTES byte#4*{byte#4 <- `byte*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocdata_is_wf: `%%%%`(store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocdata_is_wf_0{store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr), var_1 : (store, dataaddr)}: + `%%%%`(store, datatype, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_store: `%`(ret_val.0) + -- fun_allocdata: `%%%%`(store, datatype, var_0, var_1) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation fun_allocdatas: `%%%%`(store, datatype*, byte**, (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_1{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, var_3 : (store, dataaddr*), var_2 : (store, dataaddr), var_1 : (store, dataaddr*), var_0 : (store, dataaddr)}: + `%%%%`(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#8*{b#8 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}, (s_2, [da] ++ da'*{da' <- `da'*`})) + -- let{da : dataaddr, s_1 : store} (s_1, da) = var_0 + -- let{s_2 : store, `da'*` : dataaddr*} (s_2, da'#1*{da'#1 <- `da'*`}) = var_1 + -- wf_store: `%`(var_2.0) + -- wf_store: `%`(var_3.0) + -- fun_allocdatas: `%%%%`(s_1, ok'#3*{ok'#3 <- `ok'*`}, b'#3*{b'#3 <- `b'*#3`}*{`b'*#3` <- `b'**`}, var_3) + -- fun_allocdata: `%%%%`(s, ok, b#10*{b#10 <- `b*`}, var_2) + -- fun_allocdatas: `%%%%`(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}, var_1) + -- fun_allocdata: `%%%%`(s, ok, b#9*{b#9 <- `b*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation allocdatas_is_wf: `%%%%`(store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule allocdatas_is_wf_0{store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*), var_2 : (store, dataaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_store: `%`(ret_val.0) + -- fun_allocdatas: `%%%%`(store, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocelem: `%%%%`(store, elemtype, ref*, (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocelem_case_0{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}: + `%%%%`(s, elemtype, ref#1*{ref#1 <- `ref*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|)) + -- if (eleminst = {TYPE elemtype, REFS ref#2*{ref#2 <- `ref*`}}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref#3*{ref#3 <- `ref*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocelem_is_wf: `%%%%`(store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocelem_is_wf_0{store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr), var_1 : (store, elemaddr)}: + `%%%%`(store, elemtype, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_reftype: `%`(elemtype) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_store: `%`(ret_val.0) + -- fun_allocelem: `%%%%`(store, elemtype, var_0, var_1) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation fun_allocelems: `%%%%`(store, elemtype*, ref**, (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_1{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, var_3 : (store, elemaddr*), var_2 : (store, elemaddr), var_1 : (store, elemaddr*), var_0 : (store, elemaddr)}: + `%%%%`(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#4*{ref'#4 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}, (s_2, [ea] ++ ea'*{ea' <- `ea'*`})) + -- let{ea : elemaddr, s_1 : store} (s_1, ea) = var_0 + -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'#1*{ea'#1 <- `ea'*`}) = var_1 + -- wf_store: `%`(var_2.0) + -- wf_store: `%`(var_3.0) + -- fun_allocelems: `%%%%`(s_1, rt'#3*{rt'#3 <- `rt'*`}, ref'#6*{ref'#6 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`}, var_3) + -- fun_allocelem: `%%%%`(s, rt, ref#6*{ref#6 <- `ref*`}, var_2) + -- fun_allocelems: `%%%%`(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#5*{ref'#5 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}, var_1) + -- fun_allocelem: `%%%%`(s, rt, ref#5*{ref#5 <- `ref*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation allocelems_is_wf: `%%%%`(store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule allocelems_is_wf_0{store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*), var_2 : (store, elemaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_reftype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_store: `%`(ret_val.0) + -- fun_allocelems: `%%%%`(store, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexport(moduleinst : moduleinst, export : export) : exportinst + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexport_is_wf: `%%%`(moduleinst : moduleinst, export : export, ret_val : exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexport_is_wf_0{moduleinst : moduleinst, export : export, ret_val : exportinst}: + `%%%`(moduleinst, export, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_export: `%`(export) + -- if (ret_val = $allocexport(moduleinst, export)) + -- wf_exportinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexports(moduleinst : moduleinst, export*) : exportinst* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export#3*{export#3 <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexports_is_wf: `%%%`(moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexports_is_wf_0{moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*}: + `%%%`(moduleinst, var_0, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- (wf_export: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocexports(moduleinst, var_0)) + -- (wf_exportinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref**, (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `xi*` : exportinst*, var_34 : (store, funcaddr*), `var_33*` : reftype*, `var_32*` : elemtype*, var_31 : (store, elemaddr*), var_30 : (store, dataaddr*), `var_29*` : tabletype*, `var_28*` : tabletype*, var_27 : (store, tableaddr*), `var_26*` : memtype*, `var_25*` : memtype*, var_24 : (store, memaddr*), `var_23*` : globaltype*, `var_22*` : globaltype*, var_21 : (store, globaladdr*), `var_20*` : typeuse*, `var_19*` : tagtype*, var_18 : (store, tagaddr*), var_17 : (store, funcaddr*), `var_16*` : elemtype*, var_15 : (store, elemaddr*), var_14 : (store, dataaddr*), `var_13*` : tabletype*, var_12 : (store, tableaddr*), `var_11*` : memtype*, var_10 : (store, memaddr*), `var_9*` : globaltype*, var_8 : (store, globaladdr*), `var_7*` : tagtype*, var_6 : (store, tagaddr*), var_5 : deftype*, var_4 : funcaddr*, var_3 : tableaddr*, var_2 : memaddr*, var_1 : globaladdr*, var_0 : tagaddr*}: + `%%%%%%%`(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}, (s_7, moduleinst)) + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#2*{type#2 <- `type*`}), `%`_list(import#2*{import#2 <- `import*`}), `%`_list(tag#2*{tag#2 <- `tag*`}), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list(func#3*{func#3 <- `func*`}), `%`_list(data#2*{data#2 <- `data*`}), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#4*{export#4 <- `export*`})) = module + -- if (tag#3*{tag#3 <- `tag*`} = TAG_tag(tagtype#78)*{tagtype#78 <- `tagtype*`}) + -- if (global#4*{global#4 <- `global*`} = GLOBAL_global(globaltype#122, expr_G#1)*{expr_G#1 <- `expr_G*`, globaltype#122 <- `globaltype*`}) + -- if (mem#4*{mem#4 <- `mem*`} = MEMORY_mem(memtype#122)*{memtype#122 <- `memtype*`}) + -- if (table#4*{table#4 <- `table*`} = TABLE_table(tabletype#156, expr_T#1)*{expr_T#1 <- `expr_T*`, tabletype#156 <- `tabletype*`}) + -- if (func#4*{func#4 <- `func*`} = FUNC_func(x#2, local#2*{local#2 <- `local*#82`}, expr_F#1)*{expr_F#1 <- `expr_F*`, `local*#82` <- `local**`, x#2 <- `x*`}) + -- if (data#3*{data#3 <- `data*`} = DATA_data(byte#5*{byte#5 <- `byte*#110`}, datamode#110)*{`byte*#110` <- `byte**`, datamode#110 <- `datamode*`}) + -- if (elem#4*{elem#4 <- `elem*`} = ELEM_elem(elemtype#1, expr_E#1*{expr_E#1 <- `expr_E*#1`}, elemmode#230)*{elemmode#230 <- `elemmode*`, elemtype#1 <- `elemtype*`, `expr_E*#1` <- `expr_E**`}) + -- let{`aa_I*` : tagaddr*} aa_I#1*{aa_I#1 <- `aa_I*`} = var_0 + -- let{`ga_I*` : globaladdr*} ga_I#1*{ga_I#1 <- `ga_I*`} = var_1 + -- let{`ma_I*` : memaddr*} ma_I#1*{ma_I#1 <- `ma_I*`} = var_2 + -- let{`ta_I*` : tableaddr*} ta_I#1*{ta_I#1 <- `ta_I*`} = var_3 + -- let{`fa_I*` : funcaddr*} fa_I#1*{fa_I#1 <- `fa_I*`} = var_4 + -- let{`dt*` : deftype*} dt#8*{dt#8 <- `dt*`} = var_5 + -- let{`fa*` : nat*} fa#1*{fa#1 <- `fa*`} = (|s.FUNCS_store| + i_F#1)^(i_F#1<|func#5*{func#5 <- `func*`}|){} + -- let{s_1 : store, `aa*` : tagaddr*} (s_1, aa#1*{aa#1 <- `aa*`}) = var_6 + -- let{s_2 : store, `ga*` : globaladdr*} (s_2, ga#1*{ga#1 <- `ga*`}) = var_8 + -- let{s_3 : store, `ma*` : memaddr*} (s_3, ma#1*{ma#1 <- `ma*`}) = var_10 + -- let{s_4 : store, `ta*` : tableaddr*} (s_4, ta#1*{ta#1 <- `ta*`}) = var_12 + -- let{s_5 : store, `da*` : dataaddr*} (s_5, da#1*{da#1 <- `da*`}) = var_14 + -- let{s_6 : store, `ea*` : elemaddr*} (s_6, ea#1*{ea#1 <- `ea*`}) = var_15 + -- if ((s_7, fa#2*{fa#2 <- `fa*`}) = var_17) + -- if (xi#1*{xi#1 <- `xi*`} = $allocexports({TYPES [], TAGS aa_I#2*{aa_I#2 <- `aa_I*`} ++ aa#2*{aa#2 <- `aa*`}, GLOBALS ga_I#2*{ga_I#2 <- `ga_I*`} ++ ga#2*{ga#2 <- `ga*`}, MEMS ma_I#2*{ma_I#2 <- `ma_I*`} ++ ma#2*{ma#2 <- `ma*`}, TABLES ta_I#2*{ta_I#2 <- `ta_I*`} ++ ta#2*{ta#2 <- `ta*`}, FUNCS fa_I#2*{fa_I#2 <- `fa_I*`} ++ fa#3*{fa#3 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#5*{export#5 <- `export*`})) + -- if (moduleinst = {TYPES dt#15*{dt#15 <- `dt*`}, TAGS aa_I#3*{aa_I#3 <- `aa_I*`} ++ aa#3*{aa#3 <- `aa*`}, GLOBALS ga_I#3*{ga_I#3 <- `ga_I*`} ++ ga#3*{ga#3 <- `ga*`}, MEMS ma_I#3*{ma_I#3 <- `ma_I*`} ++ ma#3*{ma#3 <- `ma*`}, TABLES ta_I#3*{ta_I#3 <- `ta_I*`} ++ ta#3*{ta#3 <- `ta*`}, FUNCS fa_I#3*{fa_I#3 <- `fa_I*`} ++ fa#4*{fa#4 <- `fa*`}, DATAS da#2*{da#2 <- `da*`}, ELEMS ea#2*{ea#2 <- `ea*`}, EXPORTS xi#2*{xi#2 <- `xi*`}}) + -- wf_store: `%`(var_18.0) + -- (wf_typeuse: `%`(var_20))*{var_20 <- `var_20*`} + -- wf_store: `%`(var_21.0) + -- (wf_globaltype: `%`(var_23))*{var_23 <- `var_23*`} + -- wf_store: `%`(var_24.0) + -- (wf_memtype: `%`(var_26))*{var_26 <- `var_26*`} + -- wf_store: `%`(var_27.0) + -- (wf_tabletype: `%`(var_29))*{var_29 <- `var_29*`} + -- wf_store: `%`(var_30.0) + -- wf_store: `%`(var_31.0) + -- (wf_reftype: `%`(var_33))*{var_33 <- `var_33*`} + -- wf_store: `%`(var_34.0) + -- (wf_exportinst: `%`(iter#341))*{iter#341 <- $allocexports({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#6*{export#6 <- `export*`})} + -- wf_module: `%`(MODULE_module(`%`_list(type#4*{type#4 <- `type*`}), `%`_list(import#3*{import#3 <- `import*`}), `%`_list(tag#4*{tag#4 <- `tag*`}), `%`_list(global#5*{global#5 <- `global*`}), `%`_list(mem#5*{mem#5 <- `mem*`}), `%`_list(table#5*{table#5 <- `table*`}), `%`_list(func#8*{func#8 <- `func*`}), `%`_list(data#6*{data#6 <- `data*`}), `%`_list(elem#5*{elem#5 <- `elem*`}), start#4?{start#4 <- `start?`}, `%`_list(export#7*{export#7 <- `export*`}))) + -- (wf_tag: `%`(TAG_tag(tagtype#83)))*{tagtype#83 <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype#127, expr_G#2)))*{expr_G#2 <- `expr_G*`, globaltype#127 <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype#127)))*{memtype#127 <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype#161, expr_T#2)))*{expr_T#2 <- `expr_T*`, tabletype#161 <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x#7, local#5*{local#5 <- `local*#86`}, expr_F#4)))*{expr_F#4 <- `expr_F*`, `local*#86` <- `local**`, x#7 <- `x*`} + -- (wf_data: `%`(DATA_data(byte#8*{byte#8 <- `byte*#114`}, datamode#112)))*{`byte*#114` <- `byte**`, datamode#112 <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype#5, expr_E#2*{expr_E#2 <- `expr_E*#2`}, elemmode#232)))*{elemmode#232 <- `elemmode*`, elemtype#5 <- `elemtype*`, `expr_E*#2` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt#27*{dt#27 <- `dt*`}, TAGS aa_I#6*{aa_I#6 <- `aa_I*`} ++ aa#6*{aa#6 <- `aa*`}, GLOBALS ga_I#6*{ga_I#6 <- `ga_I*`} ++ ga#6*{ga#6 <- `ga*`}, MEMS ma_I#6*{ma_I#6 <- `ma_I*`} ++ ma#6*{ma#6 <- `ma*`}, TABLES ta_I#6*{ta_I#6 <- `ta_I*`} ++ ta#6*{ta#6 <- `ta*`}, FUNCS fa_I#6*{fa_I#6 <- `fa_I*`} ++ fa#7*{fa#7 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) + -- fun_allocfuncs: `%%%%%`(s_6, dt#26*{dt#26 <- `dt*`}[$proj_uN_0(x#5).0]*{x#5 <- `x*`}, FUNC_funccode(x#6, local#4*{local#4 <- `local*#85`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#85` <- `local**`, x#6 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_34) + -- (fun_subst_all_reftype: `%%%`(elemtype#4, $typeuse_deftype(dt#25)*{dt#25 <- `dt*`}, var_33))*{var_33 <- `var_33*`, elemtype#4 <- `elemtype*`} + -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#24)*{dt#24 <- `dt*`}, var_32))*{var_32 <- `var_32*`, elemtype#3 <- `elemtype*`} + -- fun_allocelems: `%%%%`(s_5, var_32*{var_32 <- `var_32*`}, ref_E#3*{ref_E#3 <- `ref_E*#3`}*{`ref_E*#3` <- `ref_E**`}, var_31) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#113`}*{`byte*#113` <- `byte**`}, var_30) + -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#23)*{dt#23 <- `dt*`}, var_29))*{var_29 <- `var_29*`, tabletype#160 <- `tabletype*`} + -- (fun_subst_all_tabletype: `%%%`(tabletype#159, $typeuse_deftype(dt#22)*{dt#22 <- `dt*`}, var_28))*{var_28 <- `var_28*`, tabletype#159 <- `tabletype*`} + -- fun_alloctables: `%%%%`(s_3, var_28*{var_28 <- `var_28*`}, ref_T#3*{ref_T#3 <- `ref_T*`}, var_27) + -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#21)*{dt#21 <- `dt*`}, var_26))*{var_26 <- `var_26*`, memtype#126 <- `memtype*`} + -- (fun_subst_all_memtype: `%%%`(memtype#125, $typeuse_deftype(dt#20)*{dt#20 <- `dt*`}, var_25))*{var_25 <- `var_25*`, memtype#125 <- `memtype*`} + -- fun_allocmems: `%%%`(s_2, var_25*{var_25 <- `var_25*`}, var_24) + -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#19)*{dt#19 <- `dt*`}, var_23))*{var_23 <- `var_23*`, globaltype#126 <- `globaltype*`} + -- (fun_subst_all_globaltype: `%%%`(globaltype#125, $typeuse_deftype(dt#18)*{dt#18 <- `dt*`}, var_22))*{var_22 <- `var_22*`, globaltype#125 <- `globaltype*`} + -- fun_allocglobals: `%%%%`(s_1, var_22*{var_22 <- `var_22*`}, val_G#3*{val_G#3 <- `val_G*`}, var_21) + -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#17)*{dt#17 <- `dt*`}, var_20))*{var_20 <- `var_20*`, tagtype#82 <- `tagtype*`} + -- (fun_subst_all_tagtype: `%%%`(tagtype#81, $typeuse_deftype(dt#16)*{dt#16 <- `dt*`}, var_19))*{var_19 <- `var_19*`, tagtype#81 <- `tagtype*`} + -- fun_alloctags: `%%%`(s, var_19*{var_19 <- `var_19*`}, var_18) + -- fun_allocfuncs: `%%%%%`(s_6, dt#14*{dt#14 <- `dt*`}[$proj_uN_0(x#3).0]*{x#3 <- `x*`}, FUNC_funccode(x#4, local#3*{local#3 <- `local*#84`}, expr_F#2)*{expr_F#2 <- `expr_F*`, `local*#84` <- `local**`, x#4 <- `x*`}, moduleinst^|func#6*{func#6 <- `func*`}|{}, var_17) + -- (fun_subst_all_reftype: `%%%`(elemtype#2, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_16))*{var_16 <- `var_16*`, elemtype#2 <- `elemtype*`} + -- fun_allocelems: `%%%%`(s_5, var_16*{var_16 <- `var_16*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_15) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#4*{data#4 <- `data*`}|{}, byte#6*{byte#6 <- `byte*#112`}*{`byte*#112` <- `byte**`}, var_14) + -- (fun_subst_all_tabletype: `%%%`(tabletype#158, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_13))*{var_13 <- `var_13*`, tabletype#158 <- `tabletype*`} + -- fun_alloctables: `%%%%`(s_3, var_13*{var_13 <- `var_13*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_12) + -- (fun_subst_all_memtype: `%%%`(memtype#124, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_11))*{var_11 <- `var_11*`, memtype#124 <- `memtype*`} + -- fun_allocmems: `%%%`(s_2, var_11*{var_11 <- `var_11*`}, var_10) + -- (fun_subst_all_globaltype: `%%%`(globaltype#124, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_9))*{var_9 <- `var_9*`, globaltype#124 <- `globaltype*`} + -- fun_allocglobals: `%%%%`(s_1, var_9*{var_9 <- `var_9*`}, val_G#2*{val_G#2 <- `val_G*`}, var_8) + -- (fun_subst_all_tagtype: `%%%`(tagtype#80, $typeuse_deftype(dt#9)*{dt#9 <- `dt*`}, var_7))*{var_7 <- `var_7*`, tagtype#80 <- `tagtype*`} + -- fun_alloctags: `%%%`(s, var_7*{var_7 <- `var_7*`}, var_6) + -- fun_alloctypes: `%%`(type#3*{type#3 <- `type*`}, var_5) + -- fun_funcsxa: `%%`(externaddr#6*{externaddr#6 <- `externaddr*`}, var_4) + -- fun_tablesxa: `%%`(externaddr#5*{externaddr#5 <- `externaddr*`}, var_3) + -- fun_memsxa: `%%`(externaddr#4*{externaddr#4 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#3*{externaddr#3 <- `externaddr*`}, var_1) + -- fun_tagsxa: `%%`(externaddr#2*{externaddr#2 <- `externaddr*`}, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmodule_is_wf: `%%%%%%%`(store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmodule_is_wf_0{store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst), var_4 : (store, moduleinst)}: + `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- (wf_ref: `%`(var_2))*{var_2 <- var_2} + -- (wf_ref: `%`(var_3))*{var_3 <- var_3}*{var_3 <- var_3} + -- if (ret_val = var_4) + -- wf_store: `%`(ret_val.0) + -- wf_moduleinst: `%`(ret_val.1) + -- fun_allocmodule: `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, var_4) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_rundata_: `%%%`(dataidx, data, instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_rundata__case_0{x : uN, n : nat, `b*` : byte*}: + `%%%`(x, DATA_data(b#11*{b#11 <- `b*`}, PASSIVE_datamode), []) + -- if (n = |`b*`|) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_rundata__case_1{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}: + `%%%`(x, DATA_data(b#12*{b#12 <- `b*`}, ACTIVE_datamode(y, instr#9*{instr#9 <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)]) + -- if (n = |`b*`|) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation rundata__is_wf: `%%%`(dataidx : dataidx, data : data, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule rundata__is_wf_0{dataidx : dataidx, data : data, ret_val : instr*, var_0 : instr*}: + `%%%`(dataidx, data, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- wf_data: `%`(data) + -- if (ret_val = var_0) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + -- fun_rundata_: `%%%`(dataidx, data, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_runelem_: `%%%`(elemidx, elem, instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_0{x : uN, rt : reftype, n : nat, `e*` : expr*}: + `%%%`(x, ELEM_elem(rt, e#1*{e#1 <- `e*`}, PASSIVE_elemmode), []) + -- if (n = |`e*`|) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_1{x : uN, rt : reftype, n : nat, `e*` : expr*}: + `%%%`(x, ELEM_elem(rt, e#2*{e#2 <- `e*`}, DECLARE_elemmode), [`ELEM.DROP`_instr(x)]) + -- if (n = |`e*`|) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_2{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}: + `%%%`(x, ELEM_elem(rt, e#3*{e#3 <- `e*`}, ACTIVE_elemmode(y, instr#10*{instr#10 <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)]) + -- if (n = |`e*`|) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation runelem__is_wf: `%%%`(elemidx : elemidx, elem : elem, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule runelem__is_wf_0{elemidx : elemidx, elem : elem, ret_val : instr*, var_0 : instr*}: + `%%%`(elemidx, elem, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- wf_elem: `%`(elem) + -- if (ret_val = var_0) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + -- fun_runelem_: `%%%`(elemidx, elem, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation fun_evalexprs: `%%%`(state, expr*, (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule fun_evalexprs_case_0{z : state}: + `%%%`(z, [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule fun_evalexprs_case_1{z : state, expr : instr*, `expr'*` : expr*, ref : ref, z' : state, var_2 : (state, ref*), var_1 : (state, ref*), var_0 : (state, ref*)}: + `%%%`(z, [expr] ++ expr'#1*{expr'#1 <- `expr'*`}, (z'', [ref] ++ ref'*{ref' <- `ref'*`})) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [$val_ref(ref)]) + -- let{z'' : state, `ref'*` : ref*} (z'', ref'#7*{ref'#7 <- `ref'*`}) = var_0 + -- wf_state: `%`(z') + -- wf_state: `%`(var_1.0) + -- (wf_ref: `%`(iter#342))*{iter#342 <- var_2.1} + -- fun_evalexprs: `%%%`(z', expr'#4*{expr'#4 <- `expr'*`}, var_2) + -- fun_evalexprs: `%%%`(z', expr'#3*{expr'#3 <- `expr'*`}, var_1) + -- fun_evalexprs: `%%%`(z', expr'#2*{expr'#2 <- `expr'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation evalexprs_is_wf: `%%%`(state : state, var_0 : expr*, ret_val : (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule evalexprs_is_wf_0{state : state, var_0 : expr*, ret_val : (state, ref*), var_1 : (state, ref*)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- ret_val.1} + -- fun_evalexprs: `%%%`(state, var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation fun_evalexprss: `%%%`(state, expr**, (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule fun_evalexprss_case_0{z : state}: + `%%%`(z, [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule fun_evalexprss_case_1{z : state, `expr*` : expr*, `expr'**` : expr**, var_5 : (state, ref**), var_4 : (state, ref**), var_3 : (state, ref*), var_2 : (state, ref*), var_1 : (state, ref**), var_0 : (state, ref*)}: + `%%%`(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#5*{expr'#5 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}, (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) + -- let{`ref*` : ref*, z' : state} (z', ref#7*{ref#7 <- `ref*`}) = var_0 + -- let{z'' : state, `ref'**` : ref**} (z'', ref'#8*{ref'#8 <- `ref'*#4`}*{`ref'*#4` <- `ref'**`}) = var_1 + -- wf_state: `%`(var_2.0) + -- (wf_ref: `%`(iter#343))*{iter#343 <- var_3.1} + -- wf_state: `%`(var_4.0) + -- (wf_ref: `%`(iter#345))*{iter#345 <- iter#344}*{iter#344 <- var_5.1} + -- fun_evalexprss: `%%%`(z', expr'#8*{expr'#8 <- `expr'*#4`}*{`expr'*#4` <- `expr'**`}, var_5) + -- fun_evalexprss: `%%%`(z', expr'#7*{expr'#7 <- `expr'*#3`}*{`expr'*#3` <- `expr'**`}, var_4) + -- fun_evalexprs: `%%%`(z, expr#368*{expr#368 <- `expr*`}, var_3) + -- fun_evalexprs: `%%%`(z, expr#367*{expr#367 <- `expr*`}, var_2) + -- fun_evalexprss: `%%%`(z', expr'#6*{expr'#6 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}, var_1) + -- fun_evalexprs: `%%%`(z, expr#366*{expr#366 <- `expr*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation evalexprss_is_wf: `%%%`(state : state, var_0 : expr**, ret_val : (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule evalexprss_is_wf_0{state : state, var_0 : expr**, ret_val : (state, ref**), var_1 : (state, ref**)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- ret_val.1} + -- fun_evalexprss: `%%%`(state, var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule fun_evalglobals_case_0{z : state}: + `%%%%`(z, [], [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule fun_evalglobals_case_1{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, val : val, z' : state, var_3 : (state, val*), var_2 : (state, val*), var_1 : (state, val*), var_0 : (store, globaladdr)}: + `%%%%`(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#9*{expr'#9 <- `expr'*`}, (z'', [val] ++ val'*{val' <- `val'*`})) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) + -- let{s : store, f : frame} `%;%`_state(s, f) = z' + -- let{s' : store, a : addr} (s', a) = var_0 + -- let{z'' : state, `val'*` : val*} (z'', val'#4*{val'#4 <- `val'*`}) = var_1 + -- wf_state: `%`(z') + -- wf_store: `%`(var_0.0) + -- wf_state: `%`(var_2.0) + -- (wf_val: `%`(iter#346))*{iter#346 <- var_3.1} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#4*{gt'#4 <- `gt'*`}, expr'#12*{expr'#12 <- `expr'*`}, var_3) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#3*{gt'#3 <- `gt'*`}, expr'#11*{expr'#11 <- `expr'*`}, var_2) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#10*{expr'#10 <- `expr'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, gt, val, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation evalglobals_is_wf: `%%%%`(state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule evalglobals_is_wf_0{state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*), var_2 : (state, val*)}: + `%%%%`(state, var_0, var_1, ret_val) + -- wf_state: `%`(state) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_instr: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_state: `%`(ret_val.0) + -- (wf_val: `%`(iter))*{iter <- ret_val.1} + -- fun_evalglobals: `%%%%`(state, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_instantiate: `%%%%`(store, module, externaddr*, config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, `xt_I*` : externtype*, `xt_E*` : externtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, i_D : nat, i_E : nat, var_23 : funcaddr*, var_22 : globaladdr*, var_21 : deftype*, `var_20*` : instr**, `var_19*` : instr**, `var_18*` : instr**, `var_17*` : instr**, var_16 : (store, moduleinst), var_15 : (store, moduleinst), var_14 : (state, ref**), var_13 : (state, ref**), var_12 : (state, ref*), var_11 : (state, ref*), var_10 : (state, val*), var_9 : (state, val*), `var_8*` : instr**, `var_7*` : instr**, var_6 : (store, moduleinst), var_5 : (state, ref**), var_4 : (state, ref*), var_3 : (state, val*), var_2 : funcaddr*, var_1 : globaladdr*, var_0 : deftype*}: + `%%%%`(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}, `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I#1*{xt_I#1 <- `xt_I*`}, xt_E#1*{xt_E#1 <- `xt_E*`})) + -- (Externaddr_ok: `%|-%:%`(s, externaddr#8, xt_I#2))*{externaddr#8 <- `externaddr*`, xt_I#2 <- `xt_I*`} + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#5*{type#5 <- `type*`}), `%`_list(import#4*{import#4 <- `import*`}), `%`_list(tag#5*{tag#5 <- `tag*`}), `%`_list(global#6*{global#6 <- `global*`}), `%`_list(mem#6*{mem#6 <- `mem*`}), `%`_list(table#6*{table#6 <- `table*`}), `%`_list(func#9*{func#9 <- `func*`}), `%`_list(data#7*{data#7 <- `data*`}), `%`_list(elem#6*{elem#6 <- `elem*`}), start#5?{start#5 <- `start?`}, `%`_list(export#8*{export#8 <- `export*`})) = module + -- if (global#7*{global#7 <- `global*`} = GLOBAL_global(globaltype#129, expr_G#3)*{expr_G#3 <- `expr_G*`, globaltype#129 <- `globaltype*`}) + -- if (table#7*{table#7 <- `table*`} = TABLE_table(tabletype#163, expr_T#3)*{expr_T#3 <- `expr_T*`, tabletype#163 <- `tabletype*`}) + -- if (data#8*{data#8 <- `data*`} = DATA_data(byte#9*{byte#9 <- `byte*#118`}, datamode#116)*{`byte*#118` <- `byte**`, datamode#116 <- `datamode*`}) + -- if (elem#7*{elem#7 <- `elem*`} = ELEM_elem(reftype#516, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#516 <- `reftype*`}) + -- if (start#6?{start#6 <- `start?`} = START_start(x#8)?{x#8 <- `x?`}) + -- if (moduleinst_0 = {TYPES var_0, TAGS [], GLOBALS var_1, MEMS [], TABLES [], FUNCS var_2 ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#10*{func#10 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- let{z' : state, `val_G*` : val*} (z', val_G#4*{val_G#4 <- `val_G*`}) = var_3 + -- let{z'' : state, `ref_T*` : ref*} (z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = var_4 + -- let{z''' : state, `ref_E**` : ref**} (z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = var_5 + -- let{s''' : store, f : frame} `%;%`_state(s''', f) = z''' + -- let{s'''' : store, moduleinst : moduleinst} (s'''', moduleinst) = var_6 + -- let{`instr_D*` : instr*} instr_D#1*{instr_D#1 <- `instr_D*`} = $concat_(syntax instr, var_7^(i_D#1<|data#9*{data#9 <- `data*`}|){var_7 <- `var_7*`}) + -- let{`instr_E*` : instr*} instr_E#1*{instr_E#1 <- `instr_E*`} = $concat_(syntax instr, var_8^(i_E#1<|elem#8*{elem#8 <- `elem*`}|){var_8 <- `var_8*`}) + -- let{`instr_S?` : instr?} instr_S#1?{instr_S#1 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`} + -- wf_state: `%`(z) + -- wf_state: `%`(var_9.0) + -- (wf_val: `%`(iter#347))*{iter#347 <- var_10.1} + -- wf_state: `%`(var_11.0) + -- (wf_ref: `%`(iter#348))*{iter#348 <- var_12.1} + -- wf_state: `%`(var_13.0) + -- (wf_ref: `%`(iter#350))*{iter#350 <- iter#349}*{iter#349 <- var_14.1} + -- wf_store: `%`(var_15.0) + -- wf_moduleinst: `%`(var_16.1) + -- (wf_instr: `%`(iter#351))*{iter#351 <- $concat_(syntax instr, var_17^(i_D#2<|data#11*{data#11 <- `data*`}|){var_17 <- `var_17*`})} + -- (wf_instr: `%`(iter#352))*{iter#352 <- var_18}^(i_D#3<|data#13*{data#13 <- `data*`}|){var_18 <- `var_18*`} + -- (wf_instr: `%`(iter#353))*{iter#353 <- $concat_(syntax instr, var_19^(i_E#2<|elem#10*{elem#10 <- `elem*`}|){var_19 <- `var_19*`})} + -- (wf_instr: `%`(iter#354))*{iter#354 <- var_20}^(i_E#3<|elem#12*{elem#12 <- `elem*`}|){var_20 <- `var_20*`} + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I#3*{xt_I#3 <- `xt_I*`}, xt_E#2*{xt_E#2 <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(`%`_list(type#7*{type#7 <- `type*`}), `%`_list(import#5*{import#5 <- `import*`}), `%`_list(tag#6*{tag#6 <- `tag*`}), `%`_list(global#8*{global#8 <- `global*`}), `%`_list(mem#7*{mem#7 <- `mem*`}), `%`_list(table#8*{table#8 <- `table*`}), `%`_list(func#11*{func#11 <- `func*`}), `%`_list(data#15*{data#15 <- `data*`}), `%`_list(elem#14*{elem#14 <- `elem*`}), start#7?{start#7 <- `start?`}, `%`_list(export#9*{export#9 <- `export*`}))) + -- (wf_global: `%`(GLOBAL_global(globaltype#134, expr_G#7)))*{expr_G#7 <- `expr_G*`, globaltype#134 <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype#165, expr_T#7)))*{expr_T#7 <- `expr_T*`, tabletype#165 <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte#10*{byte#10 <- `byte*#120`}, datamode#118)))*{`byte*#120` <- `byte**`, datamode#118 <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype#518, expr_E#7*{expr_E#7 <- `expr_E*#7`}, elemmode#239)))*{elemmode#239 <- `elemmode*`, `expr_E*#7` <- `expr_E**`, reftype#518 <- `reftype*`} + -- (wf_start: `%`(START_start(x#10)))?{x#10 <- `x?`} + -- wf_moduleinst: `%`({TYPES var_21, TAGS [], GLOBALS var_22, MEMS [], TABLES [], FUNCS var_23 ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#12*{func#12 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- wf_state: `%`(`%;%`_state(s''', f)) + -- (wf_uN: `%%`(32, `%`_uN(i_D#4)))^(i_D#4<|data#16*{data#16 <- `data*`}|){} + -- (wf_uN: `%%`(32, `%`_uN(i_E#4)))^(i_E#4<|elem#15*{elem#15 <- `elem*`}|){} + -- (wf_instr: `%`(CALL_instr(x#11)))?{x#11 <- `x?`} + -- fun_funcsxa: `%%`(externaddr#15*{externaddr#15 <- `externaddr*`}, var_23) + -- fun_globalsxa: `%%`(externaddr#14*{externaddr#14 <- `externaddr*`}, var_22) + -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_21) + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#3), elem#13*{elem#13 <- `elem*`}[i_E#3], var_20))^(i_E#3<|elem#12*{elem#12 <- `elem*`}|){var_20 <- `var_20*`} + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#11*{elem#11 <- `elem*`}[i_E#2], var_19))^(i_E#2<|elem#10*{elem#10 <- `elem*`}|){var_19 <- `var_19*`} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#3), data#14*{data#14 <- `data*`}[i_D#3], var_18))^(i_D#3<|data#13*{data#13 <- `data*`}|){var_18 <- `var_18*`} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#12*{data#12 <- `data*`}[i_D#2], var_17))^(i_D#2<|data#11*{data#11 <- `data*`}|){var_17 <- `var_17*`} + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#7*{val_G#7 <- `val_G*`}, ref_T#7*{ref_T#7 <- `ref_T*`}, ref_E#7*{ref_E#7 <- `ref_E*#7`}*{`ref_E*#7` <- `ref_E**`}, var_16) + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#12*{externaddr#12 <- `externaddr*`}, val_G#6*{val_G#6 <- `val_G*`}, ref_T#6*{ref_T#6 <- `ref_T*`}, ref_E#6*{ref_E#6 <- `ref_E*#6`}*{`ref_E*#6` <- `ref_E**`}, var_15) + -- fun_evalexprss: `%%%`(z'', expr_E#6*{expr_E#6 <- `expr_E*#6`}*{`expr_E*#6` <- `expr_E**`}, var_14) + -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_13) + -- fun_evalexprs: `%%%`(z', expr_T#6*{expr_T#6 <- `expr_T*`}, var_12) + -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_11) + -- fun_evalglobals: `%%%%`(z, globaltype#133*{globaltype#133 <- `globaltype*`}, expr_G#6*{expr_G#6 <- `expr_G*`}, var_10) + -- fun_evalglobals: `%%%%`(z, globaltype#132*{globaltype#132 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_9) + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#1), elem#9*{elem#9 <- `elem*`}[i_E#1], var_8))^(i_E#1<|elem#8*{elem#8 <- `elem*`}|){var_8 <- `var_8*`} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#1), data#10*{data#10 <- `data*`}[i_D#1], var_7))^(i_D#1<|data#9*{data#9 <- `data*`}|){var_7 <- `var_7*`} + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#11*{externaddr#11 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_6) + -- fun_evalexprss: `%%%`(z'', expr_E#4*{expr_E#4 <- `expr_E*#4`}*{`expr_E*#4` <- `expr_E**`}, var_5) + -- fun_evalexprs: `%%%`(z', expr_T#4*{expr_T#4 <- `expr_T*`}, var_4) + -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#4*{expr_G#4 <- `expr_G*`}, var_3) + -- fun_funcsxa: `%%`(externaddr#10*{externaddr#10 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#9*{externaddr#9 <- `externaddr*`}, var_1) + -- fun_alloctypes: `%%`(type#6*{type#6 <- `type*`}, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation instantiate_is_wf: `%%%%`(store : store, module : module, var_0 : externaddr*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule instantiate_is_wf_0{store : store, module : module, var_0 : externaddr*, ret_val : config, var_1 : config}: + `%%%%`(store, module, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- if (ret_val = var_1) + -- wf_config: `%`(ret_val) + -- fun_instantiate: `%%%%`(store, module, var_0, var_1) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_invoke: `%%%%`(store, funcaddr, val*, config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_invoke_case_0{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%%`(s, funcaddr, val#1*{val#1 <- `val*`}, `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1#4*{t_1#4 <- `t_1*`}), `%`_resulttype(t_2#4*{t_2#4 <- `t_2*`}))) + -- (Val_ok: `%|-%:%`(s, val#2, t_1#5))*{t_1#5 <- `t_1*`, val#2 <- `val*`} + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#6*{t_1#6 <- `t_1*`}), `%`_resulttype(t_2#5*{t_2#5 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation invoke_is_wf: `%%%%`(store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule invoke_is_wf_0{store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config, var_1 : config}: + `%%%%`(store, funcaddr, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_val: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_config: `%`(ret_val) + -- fun_invoke: `%%%%`(store, funcaddr, var_0, var_1) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax castop = (null?, null?) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax memidxop = (memidx, memarg) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax startopt = start* + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax code = (local*, expr) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax nopt = u32* + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +def $ieee_(N : N, rat : rat) : fNmag + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation ieee__is_wf: `%%%`(N : N, rat : rat, ret_val : fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule ieee__is_wf_0{N : N, rat : rat, ret_val : fNmag}: + `%%%`(N, rat, ret_val) + -- if (ret_val = $ieee_(N, rat)) + -- wf_fNmag: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax idctxt = +{ + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation wf_idctxt: `%`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) + -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} + -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} + -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} + -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} + -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} + -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} + -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} + -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} + -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} + -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax I = idctxt + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation fun_concat_idctxt: `%%`(idctxt*, idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule fun_concat_idctxt_case_0: + `%%`([], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule fun_concat_idctxt_case_1{I : idctxt, `I'*` : I*, var_0 : idctxt}: + `%%`([I] ++ I'#1*{I'#1 <- `I'*`}, I +++ var_0) + -- fun_concat_idctxt: `%%`(I'*{I' <- `I'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation concat_idctxt_is_wf: `%%`(var_0 : idctxt*, ret_val : idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule concat_idctxt_is_wf_0{var_0 : idctxt*, ret_val : idctxt, var_1 : idctxt}: + `%%`(var_0, ret_val) + -- (wf_idctxt: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_idctxt: `%`(ret_val) + -- fun_concat_idctxt: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation Idctxt_ok: `|-%:OK`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule _{I : I, `field**` : char**}: + `|-%:OK`(I) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) + -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} + -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) + -- wf_idctxt: `%`(I) + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TYPES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TAGS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.GLOBALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.MEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TABLES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.FUNCS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.DATAS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.ELEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LOCALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LABELS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])}*{`field*` <- `field**`} + -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $dots : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +syntax decl = + | TYPE(rectype : rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype : memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx : funcidx) + | EXPORT(name : name, externidx : externidx) + +def $decl_data(data) : decl + def $decl_data{x0 : byte*, x1 : datamode}(DATA_data(x0, x1)) = DATA_decl(x0, x1) + +def $decl_elem(elem) : decl + def $decl_elem{x0 : reftype, x1 : expr*, x2 : elemmode}(ELEM_elem(x0, x1, x2)) = ELEM_decl(x0, x1, x2) + +def $decl_export(export) : decl + def $decl_export{x0 : name, x1 : externidx}(EXPORT_export(x0, x1)) = EXPORT_decl(x0, x1) + +def $decl_func(func) : decl + def $decl_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_decl(x0, x1, x2) + +def $decl_global(global) : decl + def $decl_global{x0 : globaltype, x1 : expr}(GLOBAL_global(x0, x1)) = GLOBAL_decl(x0, x1) + +def $decl_import(import) : decl + def $decl_import{x0 : name, x1 : name, x2 : externtype}(IMPORT_import(x0, x1, x2)) = IMPORT_decl(x0, x1, x2) + +def $decl_mem(mem) : decl + def $decl_mem{x0 : memtype}(MEMORY_mem(x0)) = MEMORY_decl(x0) + +def $decl_start(start) : decl + def $decl_start{x0 : funcidx}(START_start(x0)) = START_decl(x0) + +def $decl_table(table) : decl + def $decl_table{x0 : tabletype, x1 : expr}(TABLE_table(x0, x1)) = TABLE_decl(x0, x1) + +def $decl_tag(tag) : decl + def $decl_tag{x0 : tagtype}(TAG_tag(x0)) = TAG_decl(x0) + +def $decl_type(type) : decl + def $decl_type{x0 : rectype}(TYPE_type(x0)) = TYPE_decl(x0) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +relation wf_decl: `%`(decl) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_0{rectype : rectype}: + `%`(TYPE_decl(rectype)) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_1{name : name, name_0 : name, externtype : externtype}: + `%`(IMPORT_decl(name, name_0, externtype)) + -- wf_name: `%`(name) + -- wf_name: `%`(name_0) + -- wf_externtype: `%`(externtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_2{tagtype : tagtype}: + `%`(TAG_decl(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_3{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_decl(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_4{memtype : memtype}: + `%`(MEMORY_decl(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_5{tabletype : tabletype, expr : expr}: + `%`(TABLE_decl(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_6{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_decl(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_7{`byte*` : byte*, datamode : datamode}: + `%`(DATA_decl(`byte*`, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_8{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_decl(reftype, `expr*`, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_9{funcidx : funcidx}: + `%`(START_decl(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_10{name : name, externidx : externidx}: + `%`(EXPORT_decl(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 +relation fun_typesd: `%%`(decl*, type*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_1{rectype : rectype, `decl'*` : decl*, var_0 : type*}: + `%%`([TYPE_decl(rectype)] ++ decl'#1*{decl'#1 <- `decl'*`}, [TYPE_type(rectype)] ++ var_0) + -- fun_typesd: `%%`(decl'#2*{decl'#2 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_2{decl : decl, `decl'*` : decl*, var_0 : type*}: + `%%`([decl] ++ decl'#3*{decl'#3 <- `decl'*`}, var_0) + -- fun_typesd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation fun_importsd: `%%`(decl*, import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_1{name : name, name_0 : name, externtype : externtype, `decl'*` : decl*, var_0 : import*}: + `%%`([IMPORT_decl(name, name_0, externtype)] ++ decl'#4*{decl'#4 <- `decl'*`}, [IMPORT_import(name, name_0, externtype)] ++ var_0) + -- fun_importsd: `%%`(decl'#5*{decl'#5 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_2{decl : decl, `decl'*` : decl*, var_0 : import*}: + `%%`([decl] ++ decl'#6*{decl'#6 <- `decl'*`}, var_0) + -- fun_importsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation importsd_is_wf: `%%`(var_0 : decl*, ret_val : import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule importsd_is_wf_0{var_0 : decl*, ret_val : import*, var_1 : import*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_import: `%`(ret_val))*{ret_val <- ret_val} + -- fun_importsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation fun_tagsd: `%%`(decl*, tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_1{tagtype : tagtype, `decl'*` : decl*, var_0 : tag*}: + `%%`([TAG_decl(tagtype)] ++ decl'#7*{decl'#7 <- `decl'*`}, [TAG_tag(tagtype)] ++ var_0) + -- fun_tagsd: `%%`(decl'#8*{decl'#8 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_2{decl : decl, `decl'*` : decl*, var_0 : tag*}: + `%%`([decl] ++ decl'#9*{decl'#9 <- `decl'*`}, var_0) + -- fun_tagsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation tagsd_is_wf: `%%`(var_0 : decl*, ret_val : tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule tagsd_is_wf_0{var_0 : decl*, ret_val : tag*, var_1 : tag*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_tag: `%`(ret_val))*{ret_val <- ret_val} + -- fun_tagsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation fun_globalsd: `%%`(decl*, global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_1{globaltype : globaltype, expr : expr, `decl'*` : decl*, var_0 : global*}: + `%%`([GLOBAL_decl(globaltype, expr)] ++ decl'#10*{decl'#10 <- `decl'*`}, [GLOBAL_global(globaltype, expr)] ++ var_0) + -- fun_globalsd: `%%`(decl'#11*{decl'#11 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_2{decl : decl, `decl'*` : decl*, var_0 : global*}: + `%%`([decl] ++ decl'#12*{decl'#12 <- `decl'*`}, var_0) + -- fun_globalsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation globalsd_is_wf: `%%`(var_0 : decl*, ret_val : global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule globalsd_is_wf_0{var_0 : decl*, ret_val : global*, var_1 : global*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_global: `%`(ret_val))*{ret_val <- ret_val} + -- fun_globalsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation fun_memsd: `%%`(decl*, mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_1{memtype : memtype, `decl'*` : decl*, var_0 : mem*}: + `%%`([MEMORY_decl(memtype)] ++ decl'#13*{decl'#13 <- `decl'*`}, [MEMORY_mem(memtype)] ++ var_0) + -- fun_memsd: `%%`(decl'#14*{decl'#14 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_2{decl : decl, `decl'*` : decl*, var_0 : mem*}: + `%%`([decl] ++ decl'#15*{decl'#15 <- `decl'*`}, var_0) + -- fun_memsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation memsd_is_wf: `%%`(var_0 : decl*, ret_val : mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule memsd_is_wf_0{var_0 : decl*, ret_val : mem*, var_1 : mem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_mem: `%`(ret_val))*{ret_val <- ret_val} + -- fun_memsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation fun_tablesd: `%%`(decl*, table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_1{tabletype : tabletype, expr : expr, `decl'*` : decl*, var_0 : table*}: + `%%`([TABLE_decl(tabletype, expr)] ++ decl'#16*{decl'#16 <- `decl'*`}, [TABLE_table(tabletype, expr)] ++ var_0) + -- fun_tablesd: `%%`(decl'#17*{decl'#17 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_2{decl : decl, `decl'*` : decl*, var_0 : table*}: + `%%`([decl] ++ decl'#18*{decl'#18 <- `decl'*`}, var_0) + -- fun_tablesd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation tablesd_is_wf: `%%`(var_0 : decl*, ret_val : table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule tablesd_is_wf_0{var_0 : decl*, ret_val : table*, var_1 : table*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_table: `%`(ret_val))*{ret_val <- ret_val} + -- fun_tablesd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation fun_funcsd: `%%`(decl*, func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_1{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*, var_0 : func*}: + `%%`([FUNC_decl(typeidx, `local*`, expr)] ++ decl'#19*{decl'#19 <- `decl'*`}, [FUNC_func(typeidx, `local*`, expr)] ++ var_0) + -- fun_funcsd: `%%`(decl'#20*{decl'#20 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_2{decl : decl, `decl'*` : decl*, var_0 : func*}: + `%%`([decl] ++ decl'#21*{decl'#21 <- `decl'*`}, var_0) + -- fun_funcsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation funcsd_is_wf: `%%`(var_0 : decl*, ret_val : func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule funcsd_is_wf_0{var_0 : decl*, ret_val : func*, var_1 : func*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_func: `%`(ret_val))*{ret_val <- ret_val} + -- fun_funcsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation fun_datasd: `%%`(decl*, data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_1{`byte*` : byte*, datamode : datamode, `decl'*` : decl*, var_0 : data*}: + `%%`([DATA_decl(`byte*`, datamode)] ++ decl'#22*{decl'#22 <- `decl'*`}, [DATA_data(`byte*`, datamode)] ++ var_0) + -- fun_datasd: `%%`(decl'#23*{decl'#23 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_2{decl : decl, `decl'*` : decl*, var_0 : data*}: + `%%`([decl] ++ decl'#24*{decl'#24 <- `decl'*`}, var_0) + -- fun_datasd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation datasd_is_wf: `%%`(var_0 : decl*, ret_val : data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule datasd_is_wf_0{var_0 : decl*, ret_val : data*, var_1 : data*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_data: `%`(ret_val))*{ret_val <- ret_val} + -- fun_datasd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation fun_elemsd: `%%`(decl*, elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_1{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*, var_0 : elem*}: + `%%`([ELEM_decl(reftype, `expr*`, elemmode)] ++ decl'#25*{decl'#25 <- `decl'*`}, [ELEM_elem(reftype, `expr*`, elemmode)] ++ var_0) + -- fun_elemsd: `%%`(decl'#26*{decl'#26 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_2{decl : decl, `decl'*` : decl*, var_0 : elem*}: + `%%`([decl] ++ decl'#27*{decl'#27 <- `decl'*`}, var_0) + -- fun_elemsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation elemsd_is_wf: `%%`(var_0 : decl*, ret_val : elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule elemsd_is_wf_0{var_0 : decl*, ret_val : elem*, var_1 : elem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_elem: `%`(ret_val))*{ret_val <- ret_val} + -- fun_elemsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation fun_startsd: `%%`(decl*, start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_1{funcidx : funcidx, `decl'*` : decl*, var_0 : start*}: + `%%`([START_decl(funcidx)] ++ decl'#28*{decl'#28 <- `decl'*`}, [START_start(funcidx)] ++ var_0) + -- fun_startsd: `%%`(decl'#29*{decl'#29 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_2{decl : decl, `decl'*` : decl*, var_0 : start*}: + `%%`([decl] ++ decl'#30*{decl'#30 <- `decl'*`}, var_0) + -- fun_startsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation startsd_is_wf: `%%`(var_0 : decl*, ret_val : start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule startsd_is_wf_0{var_0 : decl*, ret_val : start*, var_1 : start*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_start: `%`(ret_val))*{ret_val <- ret_val} + -- fun_startsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation fun_exportsd: `%%`(decl*, export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_1{name : name, externidx : externidx, `decl'*` : decl*, var_0 : export*}: + `%%`([EXPORT_decl(name, externidx)] ++ decl'#31*{decl'#31 <- `decl'*`}, [EXPORT_export(name, externidx)] ++ var_0) + -- fun_exportsd: `%%`(decl'#32*{decl'#32 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_2{decl : decl, `decl'*` : decl*, var_0 : export*}: + `%%`([decl] ++ decl'#33*{decl'#33 <- `decl'*`}, var_0) + -- fun_exportsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation exportsd_is_wf: `%%`(var_0 : decl*, ret_val : export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule exportsd_is_wf_0{var_0 : decl*, ret_val : export*, var_1 : export*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_export: `%`(ret_val))*{ret_val <- ret_val} + -- fun_exportsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +relation fun_ordered: `%%`(decl*, bool) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule fun_ordered_case_0{`decl*` : decl*, var_1 : import*, var_0 : import*}: + `%%`(decl#1*{decl#1 <- `decl*`}, true) + -- if (var_0 = []) + -- (wf_import: `%`(iter#355))*{iter#355 <- var_1} + -- fun_importsd: `%%`(decl#3*{decl#3 <- `decl*`}, var_1) + -- fun_importsd: `%%`(decl#2*{decl#2 <- `decl*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule fun_ordered_case_1{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*, var_5 : func*, var_4 : table*, var_3 : mem*, var_2 : global*, var_1 : tag*, var_0 : import*}: + `%%`(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}, ((((((var_0 = []) /\ (var_1 = [])) /\ (var_2 = [])) /\ (var_3 = [])) /\ (var_4 = [])) /\ (var_5 = []))) + -- fun_funcsd: `%%`(decl_1#2*{decl_1#2 <- `decl_1*`}, var_5) + -- fun_tablesd: `%%`(decl_1#3*{decl_1#3 <- `decl_1*`}, var_4) + -- fun_memsd: `%%`(decl_1#4*{decl_1#4 <- `decl_1*`}, var_3) + -- fun_globalsd: `%%`(decl_1#5*{decl_1#5 <- `decl_1*`}, var_2) + -- fun_tagsd: `%%`(decl_1#6*{decl_1#6 <- `decl_1*`}, var_1) + -- fun_importsd: `%%`(decl_1#7*{decl_1#7 <- `decl_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec +relation Context_ok: `|-%:OK`(context) + ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec + rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `|-%:OK`(C) + -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (Deftype_ok: `%|-%:OK`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{dt_F <- `dt_F*`, t_1 <- `t_1*`, t_2 <- `t_2*`} + -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- `et*`} + -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- `lct*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt)])))*{rt <- `rt*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt')])))?{rt' <- `rt'?`} + -- (if ($proj_uN_0(x).0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} + -- wf_context: `%`(C) + -- wf_context: `%`(C_0) + -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (wf_context: `%`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + -- if (n = |`dt*`|) + -- if (m = |`st*`|) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Localval_ok: `%|-%:%`(store, val?, localtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule set{s : store, val : val, t : valtype}: + `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_val: `%`(val) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule unset{s : store}: + `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, BOT_valtype)) + -- wf_store: `%`(s) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, BOT_valtype)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Datainst_ok: `%|-%:%`(store, datainst, datatype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `b*` : byte*}: + `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) + -- wf_store: `%`(s) + -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + -- wf_store: `%`(s) + -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exportinst_ok: `%|-%:OK`(store, exportinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, nm : name, xa : externaddr, xt : externtype}: + `%|-%:OK`(s, {NAME nm, ADDR xa}) + -- Externaddr_ok: `%|-%:%`(s, xa, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_exportinst: `%`({NAME nm, ADDR xa}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `deftype*` : deftype*, `tagaddr*` : tagaddr*, `globaladdr*` : globaladdr*, `memaddr*` : memaddr*, `tableaddr*` : tableaddr*, `funcaddr*` : funcaddr*, `dataaddr*` : dataaddr*, `elemaddr*` : elemaddr*, `exportinst*` : exportinst*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `memtype*` : memtype*, `tabletype*` : tabletype*, `deftype_F*` : deftype*, `datatype*` : datatype*, `elemtype*` : elemtype*, `subtype*` : subtype*}: + `%|-%:%`(s, {TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}, {TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) + -- (Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, deftype))*{deftype <- `deftype*`} + -- (Externaddr_ok: `%|-%:%`(s, TAG_externaddr(tagaddr), TAG_externtype(tagtype)))*{tagaddr <- `tagaddr*`, tagtype <- `tagtype*`} + -- (Externaddr_ok: `%|-%:%`(s, GLOBAL_externaddr(globaladdr), GLOBAL_externtype(globaltype)))*{globaladdr <- `globaladdr*`, globaltype <- `globaltype*`} + -- (Externaddr_ok: `%|-%:%`(s, FUNC_externaddr(funcaddr), FUNC_externtype($typeuse_deftype(deftype_F))))*{deftype_F <- `deftype_F*`, funcaddr <- `funcaddr*`} + -- (Externaddr_ok: `%|-%:%`(s, MEM_externaddr(memaddr), MEM_externtype(memtype)))*{memaddr <- `memaddr*`, memtype <- `memtype*`} + -- (Externaddr_ok: `%|-%:%`(s, TABLE_externaddr(tableaddr), TABLE_externtype(tabletype)))*{tableaddr <- `tableaddr*`, tabletype <- `tabletype*`} + -- (Datainst_ok: `%|-%:%`(s, s.DATAS_store[dataaddr], datatype))*{dataaddr <- `dataaddr*`, datatype <- `datatype*`} + -- (Eleminst_ok: `%|-%:%`(s, s.ELEMS_store[elemaddr], elemtype))*{elemaddr <- `elemaddr*`, elemtype <- `elemtype*`} + -- (Exportinst_ok: `%|-%:OK`(s, exportinst))*{exportinst <- `exportinst*`} + -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) + -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} + -- wf_store: `%`(s) + -- wf_moduleinst: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}) + -- wf_context: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (wf_externtype: `%`(TAG_externtype(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_externtype: `%`(GLOBAL_externtype(globaltype)))*{globaltype <- `globaltype*`} + -- (wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_F))))*{deftype_F <- `deftype_F*`} + -- (wf_externtype: `%`(MEM_externtype(memtype)))*{memtype <- `memtype*`} + -- (wf_externtype: `%`(TABLE_externtype(tabletype)))*{tabletype <- `tabletype*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Frame_ok: `%|-%:%`(store, frame, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `val?*` : val?*, moduleinst : moduleinst, C : context, `lct*` : localtype*}: + `%|-%:%`(s, {LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}, C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) + -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) + -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:3.1-4.36 +relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:10.1-12.46 + rule plain{s : store, C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 + rule ref{s : store, C : context, ref : ref, rt : reftype}: + `%;%|-%:%`(s, C, $instr_ref(ref), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_ref: `%`(ref) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 + rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: + `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) + -- if (n = |`t'*`|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:23.1-26.37 + rule frame{s : store, C : context, n : n, f : frame, `instr*` : instr*, `t*` : valtype*, C' : context}: + `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) + -- Frame_ok: `%|-%:%`(s, f, C') + -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`})) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) + -- if (n = |`t*`|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 + rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 + rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRAP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 +relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 + rule empty{s : store, C : context}: + `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 + rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*, var_0 : context?}: + `%;%|-%:%`(s, C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- Instrs_ok2: `%;%|-%:%`(s, !(var_0), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_context: `%`(!(var_0)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- fun_with_locals: `%%%%`(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}, var_0) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:47.1-51.33 + rule sub{s : store, C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it') + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 + rule frame{s : store, C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 +relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:60.1-62.44 + rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, jt : tagtype}: + `%|-%:%`(s, {TYPE jt}, jt) + -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) + -- wf_store: `%`(s) + -- wf_taginst: `%`({TYPE jt}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `mut?` : mut?, t : valtype, val : val}: + `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Meminst_ok: `%|-%:%`(store, meminst, memtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, m : m, `b*` : byte*}: + `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) + -- wf_store: `%`(s) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, m : m, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- if (|ref*{ref <- `ref*`}| = n) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + -- wf_store: `%`(s) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) + -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, moduleinst : moduleinst, func : func, C : context, dt' : deftype}: + `%|-%:%`(s, {TYPE dt, MODULE moduleinst, CODE $funccode_func(func)}, dt) + -- Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt) + -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) + -- Func_ok: `%|-%:%`(C, func, dt') + -- Deftype_sub: `%|-%<:%`(C, dt', dt) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE $funccode_func(func)}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Structinst_ok: `%|-%:OK`(store, structinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, `fv*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} + -- wf_store: `%`(s) + -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, `fv*` : fieldval*, `mut?` : mut?, zt : storagetype}: + `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} + -- wf_store: `%`(s) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exninst_ok: `%|-%:OK`(store, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, ta : tagaddr, `val*` : val*, dt : deftype, `t*` : valtype*}: + `%|-%:OK`(s, {TAG ta, FIELDS val*{val <- `val*`}}) + -- if ($typeuse_deftype(dt) = s.TAGS_store[ta].TYPE_taginst) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} + -- wf_store: `%`(s) + -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:208.1-209.50 +relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:222.1-225.35 + rule trans{fv_1 : fieldval, s : store, fv_2 : fieldval, fv' : fieldval}: + `%>>_%%`(fv_1, s, fv_2) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv') + -- ImmutReachable: `%>>_%%`(fv', s, fv_2) + -- wf_fieldval: `%`(fv_1) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(fv_2) + -- wf_fieldval: `%`(fv') + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 + rule `ref.struct`{a : addr, s : store, i : nat, `ft*` : fieldtype*, zt : storagetype}: + `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) + -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:232.1-234.42 + rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: + `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) + -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 + rule `ref.exn`{a : addr, s : store, i : nat}: + `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, $fieldval_val(s.EXNS_store[a].FIELDS_exninst[i])) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 + rule `ref.extern`{ref : ref, s : store}: + `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, $fieldval_ref(ref)) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(ref)) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation fun_NotImmutReachable_before_fun_NotImmutReachable_case_1: `%%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_0{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%`(fv_1, s, fv_2) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation fun_NotImmutReachable: `%%%%`(fieldval, store, fieldval, bool) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_0{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%%`(fv_1, s, fv_2, false) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_1{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%%`(fv_1, s, fv_2, true) + -- ~ fun_NotImmutReachable_before_fun_NotImmutReachable_case_1: `%%%`(fv_1, s, fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{fv_1 : fieldval, s : store, fv_2 : fieldval, var_0 : bool}: + `~%>>_%%`(fv_1, s, fv_2) + -- if var_0 + -- wf_fieldval: `%`(fv_1) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(fv_2) + -- fun_NotImmutReachable: `%%%%`(fv_1, s, fv_2, var_0) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Store_ok: `|-%:OK`(store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `taginst*` : taginst*, `tagtype*` : tagtype*, `globalinst*` : globalinst*, `globaltype*` : globaltype*, `meminst*` : meminst*, `memtype*` : memtype*, `tableinst*` : tableinst*, `tabletype*` : tabletype*, `deftype*` : deftype*, `funcinst*` : funcinst*, `datainst*` : datainst*, `datatype*` : datatype*, `eleminst*` : eleminst*, `elemtype*` : elemtype*, `structinst*` : structinst*, `arrayinst*` : arrayinst*, `exninst*` : exninst*}: + `|-%:OK`(s) + -- (Taginst_ok: `%|-%:%`(s, taginst, tagtype))*{taginst <- `taginst*`, tagtype <- `tagtype*`} + -- (Globalinst_ok: `%|-%:%`(s, globalinst, globaltype))*{globalinst <- `globalinst*`, globaltype <- `globaltype*`} + -- (Meminst_ok: `%|-%:%`(s, meminst, memtype))*{meminst <- `meminst*`, memtype <- `memtype*`} + -- (Tableinst_ok: `%|-%:%`(s, tableinst, tabletype))*{tableinst <- `tableinst*`, tabletype <- `tabletype*`} + -- (Funcinst_ok: `%|-%:%`(s, funcinst, deftype))*{deftype <- `deftype*`, funcinst <- `funcinst*`} + -- (Datainst_ok: `%|-%:%`(s, datainst, datatype))*{datainst <- `datainst*`, datatype <- `datatype*`} + -- (Eleminst_ok: `%|-%:%`(s, eleminst, elemtype))*{eleminst <- `eleminst*`, elemtype <- `elemtype*`} + -- (Structinst_ok: `%|-%:OK`(s, structinst))*{structinst <- `structinst*`} + -- (Arrayinst_ok: `%|-%:OK`(s, arrayinst))*{arrayinst <- `arrayinst*`} + -- (Exninst_ok: `%|-%:OK`(s, exninst))*{exninst <- `exninst*`} + -- (NotImmutReachable: `~%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, `REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + -- wf_store: `%`(s) + -- (wf_typeuse: `%`(tagtype))*{tagtype <- `tagtype*`} + -- (wf_globaltype: `%`(globaltype))*{globaltype <- `globaltype*`} + -- (wf_memtype: `%`(memtype))*{memtype <- `memtype*`} + -- (wf_tabletype: `%`(tabletype))*{tabletype <- `tabletype*`} + -- (wf_reftype: `%`(elemtype))*{elemtype <- `elemtype*`} + -- (wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- wf_store: `%`({TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_taginst: `%<=%`(taginst, taginst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{jt : tagtype}: + `%<=%`({TYPE jt}, {TYPE jt}) + -- wf_taginst: `%`({TYPE jt}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_globalinst: `%<=%`(globalinst, globalinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: + `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_meminst: `%<=%`(meminst, meminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, m : m, `b*` : byte*, n' : n, `b'*` : byte*}: + `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) + -- if (n <= n') + -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_tableinst: `%<=%`(tableinst, tableinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, m : m, rt : reftype, `ref*` : ref*, n' : n, `ref'*` : ref*}: + `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) + -- if (n <= n') + -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_funcinst: `%<=%`(funcinst, funcinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, mm : moduleinst, fc : funccode}: + `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) + -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_datainst: `%<=%`(datainst, datainst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`b*` : byte*, `b'*` : byte*}: + `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) + -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) + -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) + -- wf_datainst: `%`({BYTES b'*{b' <- `b'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_eleminst: `%<=%`(eleminst, eleminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: + `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) + -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) + -- wf_eleminst: `%`({TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_structinst: `%<=%`(structinst, structinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} + -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?` : mut?, zt : storagetype}: + `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_exninst: `%<=%`(exninst, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{ta : tagaddr, `val*` : val*}: + `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) + -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_store: `%<=%`(store, store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, s' : store}: + `%<=%`(s, s') + -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} + -- (Extend_globalinst: `%<=%`(s.GLOBALS_store[a], s'.GLOBALS_store[a]))^(a<|s.GLOBALS_store|){} + -- (Extend_meminst: `%<=%`(s.MEMS_store[a], s'.MEMS_store[a]))^(a<|s.MEMS_store|){} + -- (Extend_tableinst: `%<=%`(s.TABLES_store[a], s'.TABLES_store[a]))^(a<|s.TABLES_store|){} + -- (Extend_funcinst: `%<=%`(s.FUNCS_store[a], s'.FUNCS_store[a]))^(a<|s.FUNCS_store|){} + -- (Extend_datainst: `%<=%`(s.DATAS_store[a], s'.DATAS_store[a]))^(a<|s.DATAS_store|){} + -- (Extend_eleminst: `%<=%`(s.ELEMS_store[a], s'.ELEMS_store[a]))^(a<|s.ELEMS_store|){} + -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} + -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} + -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} + -- wf_store: `%`(s) + -- wf_store: `%`(s') + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation State_ok: `|-%:%`(state, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, C : context}: + `|-%:%`(`%;%`_state(s, f), C) + -- Store_ok: `|-%:OK`(s) + -- Frame_ok: `%|-%:%`(s, f, C) + -- wf_context: `%`(C) + -- wf_state: `%`(`%;%`_state(s, f)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Config_ok: `|-%:%`(config, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- (wf_valtype: `%`(t))*{t <- `t*`} + -- wf_context: `%`(C) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`})) + -- wf_state: `%`(`%;%`_state(s, f)) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax A = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax B = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax sym = + | _FIRST(A_1 : A) + | _DOTS + | _LAST(A_n : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax symsplit = + | _FIRST(A_1 : A) + | _LAST(A_2 : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax recorddots = () + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax record = +{ + FIELD_1 A, + FIELD_2 A, + `...` recorddots +} + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax pth = + | PTHSYNTAX + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +syntax T = nat + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremise: `%`(nat) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremisedots: `...` + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingScheme: `%`(nat) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec + rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: + `%`(conclusion) + -- NotationTypingPremise: `%`(premise_1) + -- NotationTypingPremise: `%`(premise_2) + -- NotationTypingPremisedots: `...` + -- NotationTypingPremise: `%`(premise_n) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 +relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 + rule `i32.add`{C : context}: + `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 + rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: + `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 + rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation NotationReduct: `~>%`(instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 3{q_1 : num_, q_5 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 4{q_6 : num_}: + `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $instrdots : instr* + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation instrdots_is_wf: `%`(ret_val : instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule instrdots_is_wf_0{ret_val : instr*}: + `%`(ret_val) + -- if (ret_val = $instrdots) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax label = + | `LABEL_%{%}`(n : n, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_label: `%`(label) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule label_case_0{n : n, `instr*` : instr*}: + `%`(`LABEL_%{%}`_label(n, `instr*`)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax callframe = + | `FRAME_%{%}`(n : n, frame : frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_callframe: `%`(callframe) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule callframe_case_0{n : n, frame : frame}: + `%`(`FRAME_%{%}`_callframe(n, frame)) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation allocX_is_wf(syntax X, syntax Y): `%%%%`(store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule allocX_is_wf_0{syntax X, syntax Y, store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)}: + `%%%%`(store, X_0, Y_0, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocX(syntax X, syntax Y, store, X_0, Y_0)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 +def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 + def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 + def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*}(syntax X, syntax Y, s, [X] ++ X'#1*{X'#1 <- `X'*`}, [Y] ++ Y'#1*{Y'#1 <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) + -- let{s_2 : store, `a'*` : addr*} (s_2, a'#1*{a'#1 <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'#2*{X'#2 <- `X'*`}, Y'#2*{Y'#2 <- `Y'*`}) + -- wf_store: `%`($allocX(syntax X, syntax Y, s, X, Y).0) + -- wf_store: `%`($allocXs(syntax X, syntax Y, s_1, X'#3*{X'#3 <- `X'*`}, Y'#3*{Y'#3 <- `Y'*`}).0) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 +relation allocXs_is_wf(syntax X, syntax Y): `%%%%`(store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 + rule allocXs_is_wf_0{syntax X, syntax Y, store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocXs(syntax X, syntax Y, store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +syntax symdots = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +relation wf_symdots: `%`(symdots) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + rule symdots_case_0{i : nat}: + `%`(`%`_symdots(i)) + -- if (i = 0) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +def $var(syntax X) : nat + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + def $var{syntax X}(syntax X) = 0 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax abbreviated = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax expanded = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax syntax = () + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bbyte : byte + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 +grammar BuN(N : N) : uN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 + prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) + -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 + prod{m : m, n : n} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 +grammar BsN(N : N) : sN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 + prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) + -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 + prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) + -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 + prod{i : sN, n : n} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * ($proj_sN_0(i).0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BiN(N : N) : iN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{i : sN, var_0 : nat} i:BsN(N) => `%`_iN(var_0) + -- fun_inv_signed_: `%%%`(N, $proj_sN_0(i).0, var_0) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BfN(N : N) : fN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu32 : u32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu64 : u64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bs33 : s33 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : sN} ``:BsN(33) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi32 : i32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi64 : i64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf32 : f32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : fN} ``:BfN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf64 : f64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : fN} ``:BfN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blist(syntax el, grammar BX : el) : el* + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bname : name + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{name : name, `b*` : byte*, var_0 : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name + -- if (var_0 = b*{b <- `b*`}) + -- fun_utf8: `%%`($proj_name_0(name).0, var_0) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btypeidx : typeidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btagidx : tagidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bglobalidx : globalidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bmemidx : memidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btableidx : tableidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfuncidx : funcidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bdataidx : dataidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Belemidx : elemidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blocalidx : localidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfieldidx : fieldidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blabelidx : labelidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{l : labelidx} l:Bu32 => l + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bexternidx : externidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bnumtype : numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7C => F64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7D => F32_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7E => I64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7F => I32_numtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvectype : vectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7B => V128_vectype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Babsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x69 => EXN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6A => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6B => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6C => I31_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6D => EQ_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6E => ANY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6F => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x70 => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x71 => NONE_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x72 => NOEXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x73 => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x74 => NOEXN_heaptype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => ht + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) + -- if ($proj_sN_0(x33).0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Breftype : reftype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvaltype : valtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{nt : numtype} nt:Bnumtype => $valtype_numtype(nt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{vt : vectype} vt:Bvectype => $valtype_vectype(vt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{rt : reftype} rt:Breftype => $valtype_reftype(rt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bresulttype : resulttype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmut : mut? + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x00 => ?() + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x01 => ?(MUT_mut) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bpacktype : packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x77 => I16_packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x78 => I8_packtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bstoragetype : storagetype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{t : valtype} t:Bvaltype => $storagetype_valtype(t) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{pt : packtype} pt:Bpacktype => $storagetype_packtype(pt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bfieldtype : fieldtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bcomptype : comptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bsubtype : subtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Brectype : rectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Blimits : (addrtype, limits) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btagtype : tagtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bglobaltype : globaltype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmemtype : memtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btabletype : tabletype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bexterntype : externtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcastop : castop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x00 => (?(), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x01 => (?(NULL_null), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x02 => (?(), ?(NULL_null)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x03 => (?(NULL_null), ?(NULL_null)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bblocktype : blocktype + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x40 => _RESULT_blocktype(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx(($proj_sN_0(i).0 : int <:> nat))) + -- if ($proj_sN_0(i).0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcatch : catch + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bmemarg : memidxop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) + -- if (n < (2 ^ 6)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, n : n, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) + -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Blaneidx : laneidx + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} `%`_byte($proj_uN_0(l).0):Bbyte => `%`_laneidx($proj_uN_0(l).0) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 +grammar Binstr : instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 + prod 0x00 => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 + prod 0x01 => NOP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 + prod 0x1A => DROP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 + prod 0x1B => SELECT_instr(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 + prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 + prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 + prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 + prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 + prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 + prod 0x0A => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 + prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 + prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 + prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 + prod 0x0F => RETURN_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 + prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 + prod{x : idx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 + prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 + prod{x : idx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 + prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 + prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 + prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 + prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 + prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 + prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 + prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 + prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 + prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 + prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 + prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 + prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 + prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 + prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 + prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 + prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 + prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 + prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 + prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 + prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 + prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 + prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 + prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 + prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 + prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 + prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 + prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 + prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 + prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 + prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 + prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 + prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 + prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 + prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 + prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 + prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 + prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 + prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 + prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 + prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 + prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 + prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 + prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 + prod 0xD1 => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 + prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 + prod 0xD3 => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 + prod 0xD4 => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 + prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 + prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 + prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 + prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 + prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 + prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 + prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 + prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 + prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 + prod {{0xFB} {`%`_u32(15):Bu32}} => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 + prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 + prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 + prod {{0xFB} {`%`_u32(26):Bu32}} => `ANY.CONVERT_EXTERN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 + prod {{0xFB} {`%`_u32(27):Bu32}} => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 + prod {{0xFB} {`%`_u32(28):Bu32}} => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 + prod {{0xFB} {`%`_u32(29):Bu32}} => `I31.GET`_instr(S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 + prod {{0xFB} {`%`_u32(30):Bu32}} => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 + prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 + prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 + prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 + prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 + prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 + prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 + prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 + prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 + prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 + prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 + prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 + prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 + prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 + prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 + prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 + prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 + prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 + prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 + prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 + prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 + prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 + prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 + prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 + prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 + prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 + prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 + prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 + prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 + prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 + prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 + prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 + prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 + prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 + prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 + prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 + prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 + prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 + prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 + prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 + prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 + prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 + prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 + prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 + prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 + prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 + prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 + prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 + prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 + prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 + prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 + prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 + prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 + prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 + prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 + prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 + prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 + prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 + prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 + prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 + prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 + prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 + prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 + prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 + prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 + prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 + prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 + prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 + prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 + prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 + prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 + prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 + prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 + prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 + prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 + prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 + prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 + prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 + prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 + prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 + prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 + prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 + prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 + prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 + prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 + prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 + prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 + prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 + prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 + prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 + prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 + prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 + prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 + prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 + prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 + prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 + prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 + prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 + prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 + prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 + prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 + prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 + prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 + prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 + prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 + prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 + prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 + prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 + prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 + prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 + prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 + prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 + prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 + prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 + prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 + prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 + prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 + prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 + prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 + prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 + prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 + prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 + prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 + prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 + prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 + prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 + prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 + prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 + prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 + prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 + prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 + prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 + prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 + prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 + prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 + prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 + prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 + prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 + prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 + prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 + prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 + prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 + prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx($proj_uN_0(l).0)^16{l <- `l*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 + prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 + prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 + prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 + prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 + prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 + prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 + prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 + prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 + prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 + prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 + prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 + prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 + prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 + prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 + prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 + prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 + prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 + prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 + prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 + prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 + prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 + prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 + prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 + prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 + prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 + prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 + prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 + prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 + prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 + prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 + prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 + prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 + prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 + prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 + prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 + prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 + prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 + prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 + prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 + prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 + prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 + prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 + prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 + prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 + prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 + prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 + prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 + prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 + prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 + prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 + prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 + prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 + prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 + prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 + prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 + prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 + prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 + prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 + prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 + prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 + prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 + prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 + prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 + prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 + prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 + prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 + prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 + prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 + prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 + prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 + prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 + prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 + prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 + prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 + prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 + prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 + prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 + prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 + prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 + prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 + prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 + prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 + prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 + prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 + prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 + prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 + prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 + prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 + prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 + prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 + prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 + prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 + prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 + prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 + prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 + prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 + prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 + prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 + prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 + prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 + prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 + prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 + prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 + prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 + prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 + prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 + prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 + prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 + prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 + prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 + prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 + prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 + prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 + prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 + prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 + prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 + prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 + prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 + prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 + prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 + prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 + prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 + prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 + prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 + prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 + prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 + prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 + prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 + prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 + prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 + prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 + prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 + prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 + prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 + prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 + prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 + prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 + prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 + prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 + prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 + prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 + prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 + prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 + prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 + prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 + prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 + prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 + prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 + prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 + prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 + prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 + prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 + prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 + prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 + prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 + prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 + prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 + prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 + prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 + prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 + prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 + prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 + prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 + prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 + prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 + prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 + prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 + prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 + prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 + prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 + prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 + prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 + prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 + prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 + prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 + prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 + prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 + prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 + prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 + prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 + prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 + prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 + prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 + prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 + prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 + prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 + prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 + prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 + prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 + prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 + prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 + prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 + prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 + prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 + prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 + prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 + prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 + prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 + prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 + prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 + prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 + prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 + prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 + prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 + prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 + prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 + prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 + prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 + prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 + prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 + prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 + prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 + prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 + prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 + prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 + prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 + prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 + prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 + prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) +} + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bexpr : expr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`en*` : en*, len : nat} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} + -- if (len = 0) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod eps => [] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustom : ()* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{Bname} {Bbyte*{}}} => [] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustomsec : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btype : type + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{qt : rectype} qt:Brectype => TYPE_type(qt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btypesec : type* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimport : import + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimportsec : import* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfuncsec : typeidx* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btable : table + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [`REF.NULL`_instr(ht)]) + -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btablesec : table* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmem : mem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmemsec : mem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobal : global + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobalsec : global* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexport : export + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexportsec : export* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstart : start* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{x : idx} x:Bfuncidx => [START_start(x)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstartsec : start? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => !($opt_(syntax start, startopt)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemkind : reftype + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod 0x00 => REF_reftype(?(), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belem : elem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`y*` : idx*, e_o : expr} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], DECLARE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`e*` : expr*, e_O : expr} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e_O : expr} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemsec : elem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Blocals : local* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{t : valtype, n : n} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfunc : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) + -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcode : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{code : code, len : nat} {{`%`_u32(len):Bu32} {code:Bfunc}} => code + -- if (len = 0) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcodesec : code* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdata : data + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*, e : expr} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*, x : idx, e : expr} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatasec : data* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacnt : u32* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacntsec : u32? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => !($opt_(syntax u32, nopt)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btag : tag + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btagsec : tag* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmagic : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bversion : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmodule : module + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**, var_0 : dataidx*} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} + -- if ((n?{n <- `n?`} =/= ?()) \/ (var_0 = [])) + -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} + -- fun_dataidx_funcs: `%%`(func*{func <- `func*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tchar : char + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tsource : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tchar*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TuNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TsNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TfNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x21 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x23 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x24 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x25 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x26 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x27 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2A => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2B => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2D => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3A => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3D => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x40 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x60 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7E => `%`_char(``) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x30 => 0 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x31 => 1 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x32 => 2 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x33 => 3 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x34 => 4 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x35 => 5 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x36 => 6 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x37 => 7 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x38 => 8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x39 => 9 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x41 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x42 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x43 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x44 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x45 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x46 => 15 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x61 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x62 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x63 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x64 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x65 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x66 => 15 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 +grammar Thexnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 + prod{h : nat} h:Thexdigit => h + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 + prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char} c:Tchar => c + -- if (((($proj_char_0(c).0 >= 32) /\ ($proj_char_0(c).0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\t" => `%`_char(9) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\n" => `%`_char(10) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\r" => `%`_char(13) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\"" => `%`_char(34) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\'" => `%`_char(39) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\\" => `%`_char(92) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) + -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringelem : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char, var_0 : byte*} c:Tstringchar => var_0 + -- fun_utf8: `%%`([c], var_0) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstring : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) + -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tname : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*, `b*` : byte*, var_0 : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) + -- if (b*{b <- `b*`} = var_0) + -- fun_utf8: `%%`(c*{c <- `c*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tid : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) + -- if (|c*{c <- `c*`}| > 0) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tkeyword : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Treserved : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Ttoken : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tkeyword => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TuNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TsNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TfNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : byte} [``]:Tstring => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tid => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x28 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x29 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Treserved => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tannotid : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tidchar+{} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tname => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 +grammar Tblockcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 + prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 +grammar Tblockchar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 + prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 + prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 + prod{`` : ()} ``:Tblockcomment => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Teof : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : text} ``:"" => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinechar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if (($proj_char_0(c).0 =/= 10) /\ ($proj_char_0(c).0 =/= 13)) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tnewline : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0A => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0D => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinecomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tlinecomment => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tblockcomment => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tformat : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tnewline => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x09 => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 +grammar Tspace : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 + prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 +grammar Tannot : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 + prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tsign : int + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod eps => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "+" => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "-" => - (1 : nat <:> int) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 +grammar Tnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 + prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TuN(N : N) : uN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} n:Tnum => `%`_uN(n) + -- if (n < (2 ^ N)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) + -- if (n < (2 ^ N)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TsN(N : N) : sN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TiN(N : N) : iN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{i : sN, var_0 : nat} i:TsN(N) => `%`_iN(var_0) + -- fun_inv_signed_: `%%%`(N, $proj_sN_0(i).0, var_0) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 +grammar Tfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 + prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 + prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 +grammar Thexfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 + prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 + prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfNmag(N : N) : fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Tfloat => $ieee_(N, q) + -- if ($ieee_(N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Thexfloat => $ieee_(N, q) + -- if ($ieee_(N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "inf" => INF_fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "nan" => NAN_fNmag($canon_(N)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + -- if ((1 <= n) /\ (n < (2 ^ !($signif(N))))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfN(N : N) : fN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti16 : u16 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(16) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf32 : f32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf64 : f64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlist(syntax el, grammar TX : el) : el* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} + -- if (|el*{el <- `el*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidx_(ids : name?*) : idx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} x:Tu32 => x + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx, id : name} id:Tid => x + -- if (ids[$proj_uN_0(x).0] = ?(id)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttypeidx_(I : I) : typeidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttagidx_(I : I) : tagidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tglobalidx_(I : I) : globalidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmemidx_(I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttableidx_(I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfuncidx_(I : I) : funcidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdataidx_(I : I) : dataidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Telemidx_(I : I) : elemidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlocalidx_(I : I) : localidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlabelidx_(I : I) : labelidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfieldidx__(I : I, x : idx) : fieldidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.FIELDS_I[$proj_uN_0(x).0]) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Texternidx_(I : I) : externidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnumtype : numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f32" => F32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f64" => F64_numtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvectype : vectype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "v128" => V128_vectype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tabsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "any" => ANY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "eq" => EQ_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i31" => I31_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "struct" => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "array" => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "none" => NONE_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "func" => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "nofunc" => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "exn" => EXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noexn" => NOEXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "extern" => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noextern" => NOEXTERN_heaptype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Theaptype_(I : I) : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ht : heaptype} ht:Tabsheaptype => ht + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnull : null + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "null" => NULL_null + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Treftype_(I : I) : reftype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvaltype_(I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{nt : numtype} nt:Tnumtype => $valtype_numtype(nt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{vt : vectype} vt:Tvectype => $valtype_vectype(vt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{rt : reftype} rt:Treftype_(I) => $valtype_reftype(rt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tpacktype : packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i8" => I8_packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i16" => I16_packtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tstoragetype_(I : I) : storagetype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(I) => $storagetype_valtype(t) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{pt : packtype} pt:Tpacktype => $storagetype_packtype(pt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfieldtype_(I : I) : fieldtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfield_(I : I) : (fieldtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft : fieldtype, `id?` : char?} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tparam_(I : I) : (valtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype, `id?` : char?} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tresult_(I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tcomptype_(I : I) : (comptype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfinal : final + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "final" => FINAL_final + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tsubtype_(I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypedef_(I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{st : subtype, I' : I, `id?` : char?} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Trectype_(I : I) : (rectype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`st*` : subtype*, `I'*` : I*, var_0 : idctxt} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), var_0) + -- fun_concat_idctxt: `%%`(I'*{I' <- `I'*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Taddrtype : addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_addrtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tlimits : limits + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypeuse_(I : I) : (typeidx, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') + -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') + -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) + -- Idctxt_ok: `|-%:OK`(I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttagtype_(I : I) : tagtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tglobaltype_(I : I) : globaltype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tmemtype_(I : I) : memtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttabletype_(I : I) : tabletype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Texterntype_(I : I) : (externtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{gt : globaltype, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{tt : tabletype, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, `id?` : char?, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlabel_(I : I) : (name?, I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) + -- if ~ (?(id) <- I.LABELS_I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[$proj_uN_0(x).0] = ?()]) + -- if (?(id) = I.LABELS_I[$proj_uN_0(x).0]) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tblocktype_(I : I) : blocktype + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tcatch_(I : I) : catch + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tfoldedinstr_(I : I) : instr* + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlaneidx : laneidx + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : u8} i:Tu8 => i + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Talign_(N : N) : u32 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{n : n, m : m} {{"align="} {`%`_u64(m):Tu64}} => `%`_u32(n) + -- if (m = (2 ^ n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u32(N) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Toffset : u64 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{m : m} {{"offset="} {`%`_u64(m):Tu64}} => `%`_u64(m) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u64(0) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tmemarg_(N : N) : memarg + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{n : n, m : m} {{`%`_u32(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tplaininstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "unreachable" => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "nop" => NOP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "drop" => DROP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "return" => RETURN_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "throw_ref" => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.is_null" => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.as_non_null" => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.eq" => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.i31" => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_s" => `I31.GET`_instr(S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_u" => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "array.len" => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "any.convert_extern" => `ANY.CONVERT_EXTERN`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "extern.convert_any" => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_dot_i8x16_i7x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_dot_i8x16_i7x16_add_s" => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2)) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 +grammar Tinstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 + prod{in : instr} in:Tplaininstr_(I) => in + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 + prod{in : instr} in:Tblockinstr_(I) => in + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 +grammar Tinstrs_(I : I) : instr* + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 + prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 + prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 +grammar Tblockinstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) +} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Texpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttype_(I : I) : (type, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') + -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) + -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tglobal_(I : I) : (global, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmem_(I : I) : (mem, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttable_(I : I) : (table, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tlocal_(I : I) : (local*, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{t : valtype, `id?` : char?} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tfunc_(I : I) : (func, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I, var_0 : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = I +++ I_1 +++ var_0) + -- Idctxt_ok: `|-%:OK`(I') + -- fun_concat_idctxt: `%%`(I_2*{I_2 <- `I_2*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatastring : byte* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmemuse_(I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Toffset_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdata_(I : I) : (data, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemexpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemlist_(I : I) : (reftype, expr*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttableuse_(I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telem_(I : I) : (elem, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tstart_(I : I) : (start, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timport_(I : I) : (import, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texport_(I : I) : (export, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttagdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobaldots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmemdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttabledots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfuncdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttag_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobal_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmem_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfunc_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatamem_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemtable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecl_(I : I) : (decl, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (type, idctxt)} ``:Ttype_(I) => ($decl_type(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (import, idctxt)} ``:Timport_(I) => ($decl_import(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (tag, idctxt)} ``:Ttag_(I) => ($decl_tag(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (global, idctxt)} ``:Tglobal_(I) => ($decl_global(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (mem, idctxt)} ``:Tmem_(I) => ($decl_mem(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (table, idctxt)} ``:Ttable_(I) => ($decl_table(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (func, idctxt)} ``:Tfunc_(I) => ($decl_func(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (data, idctxt)} ``:Tdata_(I) => ($decl_data(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (elem, idctxt)} ``:Telem_(I) => ($decl_elem(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (start, idctxt)} ``:Tstart_(I) => ($decl_start(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (export, idctxt)} ``:Texport_(I) => ($decl_export(``.0), ``.1) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmodule : module + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I, var_12 : bool, var_11 : export*, var_10 : start*, var_9 : elem*, var_8 : data*, var_7 : func*, var_6 : table*, var_5 : mem*, var_4 : global*, var_3 : tag*, var_2 : import*, var_1 : type*, var_0 : idctxt} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + -- if (I' = var_0) + -- Idctxt_ok: `|-%:OK`(I') + -- if (type*{type <- `type*`} = var_1) + -- if (import*{import <- `import*`} = var_2) + -- if (tag*{tag <- `tag*`} = var_3) + -- if (global*{global <- `global*`} = var_4) + -- if (mem*{mem <- `mem*`} = var_5) + -- if (table*{table <- `table*`} = var_6) + -- if (func*{func <- `func*`} = var_7) + -- if (data*{data <- `data*`} = var_8) + -- if (elem*{elem <- `elem*`} = var_9) + -- if (lift(start?{start <- `start?`}) = var_10) + -- if (export*{export <- `export*`} = var_11) + -- if var_12 + -- fun_ordered: `%%`(decl*{decl <- `decl*`}, var_12) + -- fun_exportsd: `%%`(decl*{decl <- `decl*`}, var_11) + -- fun_startsd: `%%`(decl*{decl <- `decl*`}, var_10) + -- fun_elemsd: `%%`(decl*{decl <- `decl*`}, var_9) + -- fun_datasd: `%%`(decl*{decl <- `decl*`}, var_8) + -- fun_funcsd: `%%`(decl*{decl <- `decl*`}, var_7) + -- fun_tablesd: `%%`(decl*{decl <- `decl*`}, var_6) + -- fun_memsd: `%%`(decl*{decl <- `decl*`}, var_5) + -- fun_globalsd: `%%`(decl*{decl <- `decl*`}, var_4) + -- fun_tagsd: `%%`(decl*{decl <- `decl*`}, var_3) + -- fun_importsd: `%%`(decl*{decl <- `decl*`}, var_2) + -- fun_typesd: `%%`(decl*{decl <- `decl*`}, var_1) + -- fun_concat_idctxt: `%%`(I*{I <- `I*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecldots_(I : I) : (decl, idctxt)* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bvar(syntax X) : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod 0x00 => ((), ()).1 + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsym : A + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod Bvar(syntax B) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsymsplit : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tvar(syntax X) : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod 0x00 => ((), ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsym : A + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod Tvar(syntax T) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsymsplit : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tabbrev : () + diff --git a/spectec/test-middlend/specification.exp/13-sideconditions.il b/spectec/test-middlend/specification.exp/13-sideconditions.il new file mode 100644 index 0000000000..84754ee3ce --- /dev/null +++ b/spectec/test-middlend/specification.exp/13-sideconditions.il @@ -0,0 +1,25827 @@ + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax N = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax M = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax K = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax n = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax m = nat + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +def $min(nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $min{i : nat, j : nat}(i, j) = (if (i <= j) then i else j) + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 +relation fun_sum: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_0: + `%%`([], 0) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'#1*{n'#1 <- `n'*`}, (n + var_0)) + -- fun_sum: `%%`(n'*{n' <- `n'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 +relation fun_prod: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_0: + `%%`([], 1) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'#2*{n'#2 <- `n'*`}, (n * var_0)) + -- fun_prod: `%%`(n'*{n' <- `n'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $opt_(syntax X, X*) : X?? + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X}(syntax X, []) = ?(?()) + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 +def $concat_(syntax X, X**) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 + def $concat_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 + def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w#1*{w#1 <- `w*`}] ++ w'#1*{w'#1 <- `w'*#1`}*{`w'*#1` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 +def $concatn_(syntax X, X**, nat : nat) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 + def $concatn_{syntax X, n : nat}(syntax X, [], n) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 + def $concatn_{syntax X, n : nat, `w*` : X*, `w'**` : X**}(syntax X, [w#2*{w#2 <- `w*`}] ++ w'#2*{w'#2 <- `w'*#2`}*{`w'*#2` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) + -- if (n = |`w*`|) + -- (if (n = |`w'*#2`|))*{`w'*#2` <- `w'**`} +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $concatopt_(syntax X, X?*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w#3?{w#3 <- `w?`}] ++ w'#3?{w'#3 <- `w'?#1`}*{`w'?#1` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concat_(syntax X, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concatn_(syntax X, nat : nat, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 +def $disjoint_(syntax X, X*) : bool + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 + def $disjoint_{syntax X}(syntax X, []) = true + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 + def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'#4*{w'#4 <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 +def $setminus1_(syntax X, X : X, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 + def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 + def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'#5*{w'#5 <- `w'*`}) = (if (w = w_1) then [] else $setminus1_(syntax X, w, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 +def $setminus_(syntax X, X*, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 + def $setminus_{syntax X, `w*` : X*}(syntax X, [], w#4*{w#4 <- `w*`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 + def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'#6*{w'#6 <- `w'*`}, w#5*{w#5 <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 +def $setproduct2_(syntax X, X : X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 + def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 + def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'#7*{w'#7 <- `w'*`}] ++ w#6*{w#6 <- `w*#1`}*{`w*#1` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 +def $setproduct1_(syntax X, X*, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 + def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w#7*{w#7 <- `w*#2`}*{`w*#2` <- `w**`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 + def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'#8*{w'#8 <- `w'*`}, w#8*{w#8 <- `w*#3`}*{`w*#3` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 +def $setproduct_(syntax X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 + def $setproduct_{syntax X}(syntax X, []) = [[]] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 + def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1#1*{w_1#1 <- `w_1*`}] ++ w#9*{w#9 <- `w*#4`}*{`w*#4` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) +} + +;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec +def $ND : bool + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax bit = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_bit: `%`(bit) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule bit_case_0{i : nat}: + `%`(`%`_bit(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax byte = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_byte_0(x : byte) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_byte_0{v_num_0 : nat}(`%`_byte(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_byte: `%`(byte) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule byte_case_0{i : nat}: + `%`(`%`_byte(i)) + -- if ((i >= 0) /\ (i <= 255)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax uN = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_uN_0(x : uN) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_uN_0{v_num_0 : nat}(`%`_uN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_uN: `%%`(N, uN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule uN_case_0{N : N, i : nat}: + `%%`(N, `%`_uN(i)) + -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax sN = + | `%`(i : int) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_sN_0(x : sN) : (int) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_sN_0{v_num_0 : int}(`%`_sN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_sN: `%%`(N, sN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule sN_case_0{N : N, i : int}: + `%%`(N, `%`_sN(i)) + -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax iN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u8 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u16 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u31 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u32 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u64 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax s33 = sN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i32 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i64 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i128 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $signif(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(32) = ?(23) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $expon(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(32) = ?(8) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $M(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $M{N : nat}(N) = !($signif(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $E(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $E{N : nat}(N) = !($expon(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax exp = int + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fNmag = + | NORM(m : m, exp : exp) + | SUBNORM(m : m) + | INF + | NAN(m : m) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fNmag: `%%`(N, fNmag) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_0{N : N, m : m, exp : exp}: + `%%`(N, NORM_fNmag(m, exp)) + -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_1{N : N, exp : exp, m : m}: + `%%`(N, SUBNORM_fNmag(m)) + -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_2{N : N}: + `%%`(N, INF_fNmag) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_3{N : N, m : m}: + `%%`(N, NAN_fNmag(m)) + -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fN = + | POS(fNmag) + | NEG(fNmag) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fN: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_0{N : N, var_0 : fNmag}: + `%%`(N, POS_fN(var_0)) + -- wf_fNmag: `%%`(N, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_1{N : N, var_0 : fNmag}: + `%%`(N, NEG_fN(var_0)) + -- wf_fNmag: `%%`(N, var_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f32 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f64 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fzero(N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fzero_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fzero_is_wf_0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fzero(N)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fnat(N : N, nat : nat) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fnat_is_wf: `%%%`(N : N, nat : nat, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fnat_is_wf_0{N : N, nat : nat, ret_val : fN}: + `%%%`(N, nat, ret_val) + -- if (ret_val = $fnat(N, nat)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fone(N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fone_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fone_is_wf_0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fone(N)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $canon_(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax vN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax v128 = vN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax list{syntax X}(syntax X) = + | `%`(`X*` : X*) + -- if (|X*{X <- `X*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_list_0(syntax X, x : list(syntax X)) : (X*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_list_0{syntax X, v_X_list_0 : X*}(syntax X, `%`_list(v_X_list_0)) = (v_X_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax char = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_char_0(x : char) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_char_0{v_num_0 : nat}(`%`_char(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_char: `%`(char) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule char_case_0{i : nat}: + `%`(`%`_char(i)) + -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +relation fun_cont: `%%`(byte, nat) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + rule fun_cont_case_0{b : byte}: + `%%`(b, ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat)) + -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation fun_utf8: `%%`(char*, byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_0{`ch*` : char*, `var_0*` : byte**}: + `%%`(ch#1*{ch#1 <- `ch*`}, $concat_(syntax byte, var_0*{var_0 <- `var_0*`})) + -- (fun_utf8: `%%`([ch], var_0))*{var_0 <- `var_0*`, ch <- `ch*`} + -- if (|`var_0*`| = |`ch*`|) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_1{ch : char}: + `%%`([ch], [b]) + -- if ($proj_char_0(ch).0 < 128) + -- let{b : byte} b = `%`_byte($proj_char_0(ch).0) + -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: + `%%`([ch], [b_1 b_2]) + -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) + -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) + -- fun_cont: `%%`(b_2, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3]) + -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) + -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * var_0)) + var_1)) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_4{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, var_2 : nat, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3 b_4]) + -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) + -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * var_0)) + ((2 ^ 6) * var_1)) + var_2)) + -- fun_cont: `%%`(b_4, var_2) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation utf8_is_wf: `%%`(var_0 : char*, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule utf8_is_wf_0{var_0 : char*, ret_val : byte*, var_1 : byte*}: + `%%`(var_0, ret_val) + -- (wf_char: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + -- fun_utf8: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax name = + | `%`(`char*` : char*) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_name_0(x : name) : (char*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_name_0{v_char_list_0 : char*}(`%`_name(v_char_list_0)) = (v_char_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_name: `%`(name) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule name_case_0{`char*` : char*, var_0 : byte*}: + `%`(`%`_name(`char*`)) + -- (wf_char: `%`(char))*{char <- `char*`} + -- if (|var_0| < (2 ^ 32)) + -- fun_utf8: `%%`(char*{char <- `char*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax idx = u32 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax laneidx = u8 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax typeidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax funcidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax globalidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tableidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax memidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tagidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax elemidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax dataidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax labelidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax localidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fieldidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax externidx = + | FUNC(funcidx : funcidx) + | GLOBAL(globalidx : globalidx) + | TABLE(tableidx : tableidx) + | MEM(memidx : memidx) + | TAG(tagidx : tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_externidx: `%`(externidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_0{funcidx : funcidx}: + `%`(FUNC_externidx(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_1{globalidx : globalidx}: + `%`(GLOBAL_externidx(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_2{tableidx : tableidx}: + `%`(TABLE_externidx(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_3{memidx : memidx}: + `%`(MEM_externidx(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_4{tagidx : tagidx}: + `%`(TAG_externidx(tagidx)) + -- wf_uN: `%%`(32, tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 +relation fun_funcsxx: `%%`(externidx*, typeidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_1{x : uN, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([FUNC_externidx(x)] ++ xx#1*{xx#1 <- `xx*`}, [x] ++ var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([externidx] ++ xx#2*{xx#2 <- `xx*`}, var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 +relation fun_globalsxx: `%%`(externidx*, globalidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_1{x : uN, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([GLOBAL_externidx(x)] ++ xx#3*{xx#3 <- `xx*`}, [x] ++ var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([externidx] ++ xx#4*{xx#4 <- `xx*`}, var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 +relation fun_tablesxx: `%%`(externidx*, tableidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_1{x : uN, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([TABLE_externidx(x)] ++ xx#5*{xx#5 <- `xx*`}, [x] ++ var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([externidx] ++ xx#6*{xx#6 <- `xx*`}, var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 +relation fun_memsxx: `%%`(externidx*, memidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_1{x : uN, `xx*` : externidx*, var_0 : memidx*}: + `%%`([MEM_externidx(x)] ++ xx#7*{xx#7 <- `xx*`}, [x] ++ var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : memidx*}: + `%%`([externidx] ++ xx#8*{xx#8 <- `xx*`}, var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 +relation fun_tagsxx: `%%`(externidx*, tagidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_1{x : uN, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([TAG_externidx(x)] ++ xx#9*{xx#9 <- `xx*`}, [x] ++ var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([externidx] ++ xx#10*{xx#10 <- `xx*`}, var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax free = +{ + TYPES typeidx*, + FUNCS funcidx*, + GLOBALS globalidx*, + TABLES tableidx*, + MEMS memidx*, + ELEMS elemidx*, + DATAS dataidx*, + LOCALS localidx*, + LABELS labelidx*, + TAGS tagidx* +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_free: `%`(free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_case_{var_0 : typeidx*, var_1 : funcidx*, var_2 : globalidx*, var_3 : tableidx*, var_4 : memidx*, var_5 : elemidx*, var_6 : dataidx*, var_7 : localidx*, var_8 : labelidx*, var_9 : tagidx*}: + `%`({TYPES var_0, FUNCS var_1, GLOBALS var_2, TABLES var_3, MEMS var_4, ELEMS var_5, DATAS var_6, LOCALS var_7, LABELS var_8, TAGS var_9}) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_uN: `%%`(32, var_1))*{var_1 <- var_1} + -- (wf_uN: `%%`(32, var_2))*{var_2 <- var_2} + -- (wf_uN: `%%`(32, var_3))*{var_3 <- var_3} + -- (wf_uN: `%%`(32, var_4))*{var_4 <- var_4} + -- (wf_uN: `%%`(32, var_5))*{var_5 <- var_5} + -- (wf_uN: `%%`(32, var_6))*{var_6 <- var_6} + -- (wf_uN: `%%`(32, var_7))*{var_7 <- var_7} + -- (wf_uN: `%%`(32, var_8))*{var_8 <- var_8} + -- (wf_uN: `%%`(32, var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_opt(free?) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt{free : free}(?(free)) = free + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_opt_is_wf: `%%`(var_0 : free?, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_opt_is_wf_0{var_0 : free?, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))?{var_0 <- var_0} + -- if (ret_val = $free_opt(var_0)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation fun_free_list: `%%`(free*, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule fun_free_list_case_0: + `%%`([], {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule fun_free_list_case_1{free : free, `free'*` : free*, var_0 : free}: + `%%`([free] ++ free'#1*{free'#1 <- `free'*`}, free +++ var_0) + -- fun_free_list: `%%`(free'*{free' <- `free'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation free_list_is_wf: `%%`(var_0 : free*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule free_list_is_wf_0{var_0 : free*, ret_val : free, var_1 : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_free: `%`(ret_val) + -- fun_free_list: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_typeidx(typeidx : typeidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_typeidx_is_wf: `%%`(typeidx : typeidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_typeidx_is_wf_0{typeidx : typeidx, ret_val : free}: + `%%`(typeidx, ret_val) + -- wf_uN: `%%`(32, typeidx) + -- if (ret_val = $free_typeidx(typeidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_funcidx(funcidx : funcidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_funcidx_is_wf: `%%`(funcidx : funcidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_funcidx_is_wf_0{funcidx : funcidx, ret_val : free}: + `%%`(funcidx, ret_val) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $free_funcidx(funcidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_globalidx(globalidx : globalidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_globalidx_is_wf: `%%`(globalidx : globalidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_globalidx_is_wf_0{globalidx : globalidx, ret_val : free}: + `%%`(globalidx, ret_val) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $free_globalidx(globalidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tableidx(tableidx : tableidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tableidx_is_wf: `%%`(tableidx : tableidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tableidx_is_wf_0{tableidx : tableidx, ret_val : free}: + `%%`(tableidx, ret_val) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $free_tableidx(tableidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_memidx(memidx : memidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_memidx_is_wf: `%%`(memidx : memidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_memidx_is_wf_0{memidx : memidx, ret_val : free}: + `%%`(memidx, ret_val) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $free_memidx(memidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_elemidx(elemidx : elemidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_elemidx_is_wf: `%%`(elemidx : elemidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_elemidx_is_wf_0{elemidx : elemidx, ret_val : free}: + `%%`(elemidx, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- if (ret_val = $free_elemidx(elemidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_dataidx(dataidx : dataidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_dataidx_is_wf: `%%`(dataidx : dataidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_dataidx_is_wf_0{dataidx : dataidx, ret_val : free}: + `%%`(dataidx, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $free_dataidx(dataidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_localidx(localidx : localidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_localidx_is_wf: `%%`(localidx : localidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_localidx_is_wf_0{localidx : localidx, ret_val : free}: + `%%`(localidx, ret_val) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $free_localidx(localidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_labelidx(labelidx : labelidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_labelidx_is_wf: `%%`(labelidx : labelidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_labelidx_is_wf_0{labelidx : labelidx, ret_val : free}: + `%%`(labelidx, ret_val) + -- wf_uN: `%%`(32, labelidx) + -- if (ret_val = $free_labelidx(labelidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tagidx(tagidx : tagidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tagidx{tagidx : uN}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tagidx_is_wf: `%%`(tagidx : tagidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tagidx_is_wf_0{tagidx : tagidx, ret_val : free}: + `%%`(tagidx, ret_val) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $free_tagidx(tagidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_externidx(externidx : externidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{funcidx : uN}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{globalidx : uN}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_externidx_is_wf: `%%`(externidx : externidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_externidx_is_wf_0{externidx : externidx, ret_val : free}: + `%%`(externidx, ret_val) + -- wf_externidx: `%`(externidx) + -- if (ret_val = $free_externidx(externidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax null = + | NULL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax addrtype = + | I32 + | I64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax numtype = + | I32 + | I64 + | F32 + | F64 + +def $numtype_addrtype(addrtype) : numtype + def $numtype_addrtype(I32_addrtype) = I32_numtype + def $numtype_addrtype(I64_addrtype) = I64_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax vectype = + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax consttype = + | I32 + | I64 + | F32 + | F64 + | V128 + +def $consttype_numtype(numtype) : consttype + def $consttype_numtype(I32_numtype) = I32_consttype + def $consttype_numtype(I64_numtype) = I64_consttype + def $consttype_numtype(F32_numtype) = F32_consttype + def $consttype_numtype(F64_numtype) = F64_consttype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax absheaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax mut = + | MUT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax final = + | FINAL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 +syntax typeuse = + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 +syntax heaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 +syntax valtype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(`null?` : null?, heaptype : heaptype) + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 +syntax storagetype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(`null?` : null?, heaptype : heaptype) + | BOT + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 +syntax resulttype = list(syntax valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 +syntax fieldtype = + | `%%`(`mut?` : mut?, storagetype : storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 +syntax comptype = + | STRUCT(list(syntax fieldtype)) + | ARRAY(fieldtype : fieldtype) + | `FUNC%->%`(resulttype : resulttype, resulttype : resulttype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 +syntax subtype = + | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 +syntax rectype = + | REC(list(syntax subtype)) +} + +def $heaptype_absheaptype(absheaptype) : heaptype + def $heaptype_absheaptype(ANY_absheaptype) = ANY_heaptype + def $heaptype_absheaptype(EQ_absheaptype) = EQ_heaptype + def $heaptype_absheaptype(I31_absheaptype) = I31_heaptype + def $heaptype_absheaptype(STRUCT_absheaptype) = STRUCT_heaptype + def $heaptype_absheaptype(ARRAY_absheaptype) = ARRAY_heaptype + def $heaptype_absheaptype(NONE_absheaptype) = NONE_heaptype + def $heaptype_absheaptype(FUNC_absheaptype) = FUNC_heaptype + def $heaptype_absheaptype(NOFUNC_absheaptype) = NOFUNC_heaptype + def $heaptype_absheaptype(EXN_absheaptype) = EXN_heaptype + def $heaptype_absheaptype(NOEXN_absheaptype) = NOEXN_heaptype + def $heaptype_absheaptype(EXTERN_absheaptype) = EXTERN_heaptype + def $heaptype_absheaptype(NOEXTERN_absheaptype) = NOEXTERN_heaptype + def $heaptype_absheaptype(BOT_absheaptype) = BOT_heaptype + +def $valtype_addrtype(addrtype) : valtype + def $valtype_addrtype(I32_addrtype) = I32_valtype + def $valtype_addrtype(I64_addrtype) = I64_valtype + +def $storagetype_consttype(consttype) : storagetype + def $storagetype_consttype(I32_consttype) = I32_storagetype + def $storagetype_consttype(I64_consttype) = I64_storagetype + def $storagetype_consttype(F32_consttype) = F32_storagetype + def $storagetype_consttype(F64_consttype) = F64_storagetype + def $storagetype_consttype(V128_consttype) = V128_storagetype + +def $storagetype_numtype(numtype) : storagetype + def $storagetype_numtype(I32_numtype) = I32_storagetype + def $storagetype_numtype(I64_numtype) = I64_storagetype + def $storagetype_numtype(F32_numtype) = F32_storagetype + def $storagetype_numtype(F64_numtype) = F64_storagetype + +def $valtype_numtype(numtype) : valtype + def $valtype_numtype(I32_numtype) = I32_valtype + def $valtype_numtype(I64_numtype) = I64_valtype + def $valtype_numtype(F32_numtype) = F32_valtype + def $valtype_numtype(F64_numtype) = F64_valtype + +def $heaptype_typeuse(typeuse) : heaptype + def $heaptype_typeuse{x0 : typeidx}(_IDX_typeuse(x0)) = _IDX_heaptype(x0) + def $heaptype_typeuse{x0 : rectype, x1 : n}(_DEF_typeuse(x0, x1)) = _DEF_heaptype(x0, x1) + def $heaptype_typeuse{x0 : n}(REC_typeuse(x0)) = REC_heaptype(x0) + +def $storagetype_valtype(valtype) : storagetype + def $storagetype_valtype(I32_valtype) = I32_storagetype + def $storagetype_valtype(I64_valtype) = I64_storagetype + def $storagetype_valtype(F32_valtype) = F32_storagetype + def $storagetype_valtype(F64_valtype) = F64_storagetype + def $storagetype_valtype(V128_valtype) = V128_storagetype + def $storagetype_valtype{x0 : null?, x1 : heaptype}(REF_valtype(x0, x1)) = REF_storagetype(x0, x1) + def $storagetype_valtype(BOT_valtype) = BOT_storagetype + +def $storagetype_vectype(vectype) : storagetype + def $storagetype_vectype(V128_vectype) = V128_storagetype + +def $valtype_vectype(vectype) : valtype + def $valtype_vectype(V128_vectype) = V128_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 +relation wf_typeuse: `%`(typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_0{typeidx : typeidx}: + `%`(_IDX_typeuse(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_1{rectype : rectype, n : n}: + `%`(_DEF_typeuse(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_2{n : n}: + `%`(REC_typeuse(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 +relation wf_heaptype: `%`(heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_0: + `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_1: + `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_2: + `%`(I31_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_3: + `%`(STRUCT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_4: + `%`(ARRAY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_5: + `%`(NONE_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_6: + `%`(FUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_7: + `%`(NOFUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_8: + `%`(EXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_9: + `%`(NOEXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_10: + `%`(EXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_11: + `%`(NOEXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_12: + `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_13{typeidx : typeidx}: + `%`(_IDX_heaptype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_14{rectype : rectype, n : n}: + `%`(_DEF_heaptype(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_15{n : n}: + `%`(REC_heaptype(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 +relation wf_valtype: `%`(valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_0: + `%`(I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_1: + `%`(I64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_2: + `%`(F32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_3: + `%`(F64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_4: + `%`(V128_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_valtype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_6: + `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 +relation wf_storagetype: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_0: + `%`(I32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_4: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_storagetype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_6: + `%`(BOT_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_7: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_8: + `%`(I16_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 +relation wf_fieldtype: `%`(fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 + rule fieldtype_case_0{`mut?` : mut?, storagetype : storagetype}: + `%`(`%%`_fieldtype(`mut?`, storagetype)) + -- wf_storagetype: `%`(storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 +relation wf_comptype: `%`(comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_0{var_0 : list(syntax fieldtype)}: + `%`(STRUCT_comptype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_1{fieldtype : fieldtype}: + `%`(ARRAY_comptype(fieldtype)) + -- wf_fieldtype: `%`(fieldtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_2{resulttype : resulttype, resulttype_0 : resulttype}: + `%`(`FUNC%->%`_comptype(resulttype, resulttype_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 +relation wf_subtype: `%`(subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 + rule subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}: + `%`(SUB_subtype(`final?`, `typeuse*`, comptype)) + -- (wf_typeuse: `%`(typeuse))*{typeuse <- `typeuse*`} + -- wf_comptype: `%`(comptype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax deftype = + | _DEF(rectype : rectype, n : n) + +def $heaptype_deftype(deftype) : heaptype + def $heaptype_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_heaptype(x0, x1) + +def $typeuse_deftype(deftype) : typeuse + def $typeuse_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_typeuse(x0, x1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax typevar = + | _IDX(typeidx : typeidx) + | REC(n : n) + +def $typeuse_typevar(typevar) : typeuse + def $typeuse_typevar{x0 : typeidx}(_IDX_typevar(x0)) = _IDX_typeuse(x0) + def $typeuse_typevar{x0 : n}(REC_typevar(x0)) = REC_typeuse(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_typevar: `%`(typevar) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_0{typeidx : typeidx}: + `%`(_IDX_typevar(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_1{n : n}: + `%`(REC_typevar(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax reftype = + | REF(`null?` : null?, heaptype : heaptype) + +def $storagetype_reftype(reftype) : storagetype + def $storagetype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_storagetype(x0, x1) + +def $valtype_reftype(reftype) : valtype + def $valtype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_valtype(x0, x1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_reftype: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule reftype_case_0{`null?` : null?, heaptype : heaptype}: + `%`(REF_reftype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Inn = addrtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Fnn = + | F32 + | F64 + +def $numtype_Fnn(Fnn) : numtype + def $numtype_Fnn(F32_Fnn) = F32_numtype + def $numtype_Fnn(F64_Fnn) = F64_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Vnn = vectype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Cnn = + | I32 + | I64 + | F32 + | F64 + | V128 + +def $storagetype_Cnn(Cnn) : storagetype + def $storagetype_Cnn(I32_Cnn) = I32_storagetype + def $storagetype_Cnn(I64_Cnn) = I64_storagetype + def $storagetype_Cnn(F32_Cnn) = F32_storagetype + def $storagetype_Cnn(F64_Cnn) = F64_storagetype + def $storagetype_Cnn(V128_Cnn) = V128_storagetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ANYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ANYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ANYREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ANYREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EQREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EQREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EQREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EQREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $I31REF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation I31REF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule I31REF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $I31REF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $STRUCTREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation STRUCTREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule STRUCTREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $STRUCTREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ARRAYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ARRAYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ARRAYREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ARRAYREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation FUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule FUNCREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $FUNCREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXTERNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXTERNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLFUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLFUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLFUNCREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLFUNCREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXTERNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXTERNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax packtype = + | I8 + | I16 + +def $storagetype_packtype(packtype) : storagetype + def $storagetype_packtype(I8_packtype) = I8_storagetype + def $storagetype_packtype(I16_packtype) = I16_storagetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax lanetype = + | I32 + | I64 + | F32 + | F64 + | I8 + | I16 + +def $lanetype_Fnn(Fnn) : lanetype + def $lanetype_Fnn(F32_Fnn) = F32_lanetype + def $lanetype_Fnn(F64_Fnn) = F64_lanetype + +def $lanetype_addrtype(addrtype) : lanetype + def $lanetype_addrtype(I32_addrtype) = I32_lanetype + def $lanetype_addrtype(I64_addrtype) = I64_lanetype + +def $lanetype_numtype(numtype) : lanetype + def $lanetype_numtype(I32_numtype) = I32_lanetype + def $lanetype_numtype(I64_numtype) = I64_lanetype + def $lanetype_numtype(F32_numtype) = F32_lanetype + def $lanetype_numtype(F64_numtype) = F64_lanetype + +def $lanetype_packtype(packtype) : lanetype + def $lanetype_packtype(I8_packtype) = I8_lanetype + def $lanetype_packtype(I16_packtype) = I16_lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Pnn = packtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Jnn = + | I32 + | I64 + | I8 + | I16 + +def $lanetype_Jnn(Jnn) : lanetype + def $lanetype_Jnn(I32_Jnn) = I32_lanetype + def $lanetype_Jnn(I64_Jnn) = I64_lanetype + def $lanetype_Jnn(I8_Jnn) = I8_lanetype + def $lanetype_Jnn(I16_Jnn) = I16_lanetype + +def $Jnn_addrtype(addrtype) : Jnn + def $Jnn_addrtype(I32_addrtype) = I32_Jnn + def $Jnn_addrtype(I64_addrtype) = I64_Jnn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Lnn = lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax limits = + | `[%..%]`(u64 : u64, `u64?` : u64?) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_limits: `%`(limits) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule limits_case_0{u64 : u64, `u64?` : u64?}: + `%`(`[%..%]`_limits(u64, `u64?`)) + -- wf_uN: `%%`(64, u64) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tagtype = typeuse + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax globaltype = + | `%%`(`mut?` : mut?, valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_globaltype: `%`(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule globaltype_case_0{`mut?` : mut?, valtype : valtype}: + `%`(`%%`_globaltype(`mut?`, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax memtype = + | `%%PAGE`(addrtype : addrtype, limits : limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_memtype: `%`(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule memtype_case_0{addrtype : addrtype, limits : limits}: + `%`(`%%PAGE`_memtype(addrtype, limits)) + -- wf_limits: `%`(limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tabletype = + | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_tabletype: `%`(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype}: + `%`(`%%%`_tabletype(addrtype, limits, reftype)) + -- wf_limits: `%`(limits) + -- wf_reftype: `%`(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax datatype = + | OK + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax elemtype = reftype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax externtype = + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype) + | MEM(memtype : memtype) + | TABLE(tabletype : tabletype) + | FUNC(typeuse : typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_externtype: `%`(externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_0{tagtype : tagtype}: + `%`(TAG_externtype(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_1{globaltype : globaltype}: + `%`(GLOBAL_externtype(globaltype)) + -- wf_globaltype: `%`(globaltype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_2{memtype : memtype}: + `%`(MEM_externtype(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_3{tabletype : tabletype}: + `%`(TABLE_externtype(tabletype)) + -- wf_tabletype: `%`(tabletype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_4{typeuse : typeuse}: + `%`(FUNC_externtype(typeuse)) + -- wf_typeuse: `%`(typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax moduletype = + | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_moduletype: `%`(moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule moduletype_case_0{`externtype*` : externtype*, `externtype*_0` : externtype*}: + `%`(`%->%`_moduletype(`externtype*`, `externtype*_0`)) + -- (wf_externtype: `%`(externtype))*{externtype <- `externtype*`} + -- (wf_externtype: `%`(`externtype*_0`))*{`externtype*_0` <- `externtype*_0`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $IN(N : N) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FN(N : N) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $JN(N : N) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $size(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I64_numtype) = 64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F64_numtype) = 64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsize(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsize(V128_vectype) = 128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psize(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I8_packtype) = 8 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I16_packtype) = 16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsize(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I32_lanetype) = $size(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I64_lanetype) = $size(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F32_lanetype) = $size(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F64_lanetype) = $size(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I8_lanetype) = $psize(I8_packtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I16_lanetype) = $psize(I16_packtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $zsize(storagetype : storagetype) : nat? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I32_storagetype) = ?($size(I32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I64_storagetype) = ?($size(I64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F32_storagetype) = ?($size(F32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F64_storagetype) = ?($size(F64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I8_storagetype) = ?($psize(I8_packtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I16_storagetype) = ?($psize(I16_packtype)) + def $zsize{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $isize(Inn : Inn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $isize{Inn : addrtype}(Inn) = $size($numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsize(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsize{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $fsize(Fnn : Fnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $fsize{Fnn : Fnn}(Fnn) = $size($numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_isize(nat : nat) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(64) = ?(I64_Inn) + def $inv_isize{x0 : nat}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsize(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize{n : nat}(n) = $Jnn_addrtype(iter_val#1)?{iter_val#1 <- $inv_isize(n)} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_fsize(nat : nat) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(64) = ?(F64_Fnn) + def $inv_fsize{x0 : nat}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn1(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn1{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn2(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn2{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsizenn(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsizenn{vt : vectype}(vt) = $vsize(vt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psizenn(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psizenn{pt : packtype}(pt) = $psize(pt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn1(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn2(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsizenn(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsizenn{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsizenn(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn{n : nat}(n) = $inv_jsize(n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lunpack(lanetype : lanetype) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I32_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I64_lanetype) = I64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F32_lanetype) = F32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F64_lanetype) = F64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I8_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I16_lanetype) = I32_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $unpack(storagetype : storagetype) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(BOT_storagetype) = BOT_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack{`null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype)) = REF_valtype(`null?`, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(V128_storagetype) = V128_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(F64_storagetype) = F64_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(F32_storagetype) = F32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I64_storagetype) = I64_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I32_storagetype) = I32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I8_storagetype) = I32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I16_storagetype) = I32_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation unpack_is_wf: `%%`(storagetype : storagetype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule unpack_is_wf_0{storagetype : storagetype, ret_val : valtype}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $unpack(storagetype)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $nunpack(storagetype : storagetype) : numtype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I32_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I64_storagetype) = ?(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F32_storagetype) = ?(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F64_storagetype) = ?(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I8_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I16_storagetype) = ?(I32_numtype) + def $nunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vunpack(storagetype : storagetype) : vectype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vunpack(V128_storagetype) = ?(V128_vectype) + def $vunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $cunpack(storagetype : storagetype) : consttype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?(I64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?(F32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?(F64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(V128_storagetype) = ?(V128_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?($consttype_numtype($lunpack(I32_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?($consttype_numtype($lunpack(I64_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?($consttype_numtype($lunpack(F32_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?($consttype_numtype($lunpack(F64_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?($consttype_numtype($lunpack(I8_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?($consttype_numtype($lunpack(I16_lanetype))) + def $cunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size($numtype_addrtype(at_1)) <= $size($numtype_addrtype(at_2))) then at_1 else at_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $diffrt(reftype : reftype, reftype : reftype) : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#1?{null_1#1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#2?{null_1#2 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation diffrt_is_wf: `%%%`(reftype : reftype, reftype_0 : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule diffrt_is_wf_0{reftype : reftype, reftype_0 : reftype, ret_val : reftype}: + `%%%`(reftype, reftype_0, ret_val) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + -- if (ret_val = $diffrt(reftype, reftype_0)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $as_deftype(typeuse : typeuse) : deftype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = ?(_DEF_deftype(rectype, n)) + def $as_deftype{x0 : typeuse}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 +relation fun_tagsxt: `%%`(externtype*, tagtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_1{jt : typeuse, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([TAG_externtype(jt)] ++ xt#1*{xt#1 <- `xt*`}, [jt] ++ var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([externtype] ++ xt#2*{xt#2 <- `xt*`}, var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation fun_globalsxt: `%%`(externtype*, globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_1{gt : globaltype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([GLOBAL_externtype(gt)] ++ xt#3*{xt#3 <- `xt*`}, [gt] ++ var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([externtype] ++ xt#4*{xt#4 <- `xt*`}, var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation globalsxt_is_wf: `%%`(var_0 : externtype*, ret_val : globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule globalsxt_is_wf_0{var_0 : externtype*, ret_val : globaltype*, var_1 : globaltype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_globaltype: `%`(ret_val))*{ret_val <- ret_val} + -- fun_globalsxt: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation fun_memsxt: `%%`(externtype*, memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_1{mt : memtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([MEM_externtype(mt)] ++ xt#5*{xt#5 <- `xt*`}, [mt] ++ var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([externtype] ++ xt#6*{xt#6 <- `xt*`}, var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation memsxt_is_wf: `%%`(var_0 : externtype*, ret_val : memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule memsxt_is_wf_0{var_0 : externtype*, ret_val : memtype*, var_1 : memtype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_memtype: `%`(ret_val))*{ret_val <- ret_val} + -- fun_memsxt: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation fun_tablesxt: `%%`(externtype*, tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_1{tt : tabletype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([TABLE_externtype(tt)] ++ xt#7*{xt#7 <- `xt*`}, [tt] ++ var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([externtype] ++ xt#8*{xt#8 <- `xt*`}, var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation tablesxt_is_wf: `%%`(var_0 : externtype*, ret_val : tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule tablesxt_is_wf_0{var_0 : externtype*, ret_val : tabletype*, var_1 : tabletype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_tabletype: `%`(ret_val))*{ret_val <- ret_val} + -- fun_tablesxt: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 +relation fun_funcsxt: `%%`(externtype*, deftype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_1{rectype : rectype, n : n, `xt*` : externtype*, var_0 : deftype*}: + `%%`([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt#9*{xt#9 <- `xt*`}, [_DEF_deftype(rectype, n)] ++ var_0) + -- fun_funcsxt: `%%`(xt#10*{xt#10 <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : deftype*}: + `%%`([externtype] ++ xt#11*{xt#11 <- `xt*`}, var_0) + -- fun_funcsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_typevar_before_fun_subst_typevar_case_2: `%%%`(typevar, typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_typevar_case_1{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*, var_0 : typeuse?}: + `%%%`(tv, [tv_1] ++ tv'#1*{tv'#1 <- `tv'*`}, [tu_1] ++ tu'#1*{tu'#1 <- `tu'*`}) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%`(tv, [], []) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation fun_subst_typevar: `%%%%`(typevar, typevar*, typeuse*, typeuse?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%%`(tv, [], [], ?($typeuse_typevar(tv))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_1{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*, var_0 : typeuse?}: + `%%%%`(tv, [tv_1] ++ tv'#1*{tv'#1 <- `tv'*`}, [tu_1] ++ tu'#1*{tu'#1 <- `tu'*`}, (if (tv = tv_1) then tu_1 else iter_val#2)?{iter_val#2 <- var_0}) + -- fun_subst_typevar: `%%%%`(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_2{x0 : typevar, x1 : typevar*, x2 : typeuse*}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_subst_typevar_before_fun_subst_typevar_case_2: `%%%`(x0, x1, x2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation subst_typevar_is_wf: `%%%%`(typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule subst_typevar_is_wf_0{typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse, var_2 : typeuse?}: + `%%%%`(typevar, var_0, var_1, ret_val) + -- wf_typevar: `%`(typevar) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !(var_2)) + -- if (var_2 =/= ?()) + -- wf_typeuse: `%`(ret_val) + -- fun_subst_typevar: `%%%%`(typevar, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_minus_recs_before_fun_minus_recs_case_3: `%%`(typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_2 : (typevar*, typeuse*)?, var_1 : (typevar*, typeuse*)?, var_0 : (typevar*, typeuse*)?}: + `%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#2*{tv'#2 <- `tv'*`}, tu'#2*{tu'#2 <- `tu'*`}) = !(var_0) + -- if (var_0 =/= ?()) + -- (wf_typevar: `%`(iter#1))*{iter#1 <- !(var_1).0} + -- (wf_typeuse: `%`(iter#2))*{iter#2 <- !(var_2).1} + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%`([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_minus_recs_case_0: + `%%`([], []) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_0: + `%%%`([], [], ?(([], []))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%%`([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}, var_0) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_2 : (typevar*, typeuse*)?, var_1 : (typevar*, typeuse*)?, var_0 : (typevar*, typeuse*)?}: + `%%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}, ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}))) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#2*{tv'#2 <- `tv'*`}, tu'#2*{tu'#2 <- `tu'*`}) = !(var_0) + -- if (var_0 =/= ?()) + -- (wf_typevar: `%`(iter#1))*{iter#1 <- !(var_1).0} + -- (wf_typeuse: `%`(iter#2))*{iter#2 <- !(var_2).1} + -- fun_minus_recs: `%%%`(tv#5*{tv#5 <- `tv*`}, tu#5*{tu#5 <- `tu*`}, var_2) + -- fun_minus_recs: `%%%`(tv#4*{tv#4 <- `tv*`}, tu#4*{tu#4 <- `tu*`}, var_1) + -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_3{x0 : typevar*, x1 : typeuse*}: + `%%%`(x0, x1, ?()) + -- ~ fun_minus_recs_before_fun_minus_recs_case_3: `%%`(x0, x1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation minus_recs_is_wf: `%%%`(var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule minus_recs_is_wf_0{var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*), var_2 : (typevar*, typeuse*)?}: + `%%%`(var_0, var_1, ret_val) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !(var_2)) + -- if (var_2 =/= ?()) + -- (wf_typevar: `%`(iter))*{iter <- ret_val.0} + -- (wf_typeuse: `%`(iter))*{iter <- ret_val.1} + -- fun_minus_recs: `%%%`(var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv#6*{tv#6 <- `tv*`}, tu#6*{tu#6 <- `tu*`}) = pt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv#7*{tv#7 <- `tv*`}, tu#7*{tu#7 <- `tu*`}) = nt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv#8*{tv#8 <- `tv*`}, tu#8*{tu#8 <- `tu*`}) = vt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation fun_subst_typeuse: `%%%%`(typeuse, typevar*, typeuse*, typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(REC_typeuse(n), tv#9*{tv#9 <- `tv*`}, tu#9*{tu#9 <- `tu*`}, !(var_0)) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv#10*{tv#10 <- `tv*`}, tu#10*{tu#10 <- `tu*`}, var_0) + -- if (var_0 =/= ?()) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(_IDX_typeuse(typeidx), tv#11*{tv#11 <- `tv*`}, tu#11*{tu#11 <- `tu*`}, !(var_0)) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv#12*{tv#12 <- `tv*`}, tu#12*{tu#12 <- `tu*`}, var_0) + -- if (var_0 =/= ?()) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_typeuse(rectype, n), tv#13*{tv#13 <- `tv*`}, tu#13*{tu#13 <- `tu*`}, $typeuse_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv#14*{tv#14 <- `tv*`}, tu#14*{tu#14 <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation fun_subst_heaptype: `%%%%`(heaptype, typevar*, typeuse*, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(REC_heaptype(n), tv#15*{tv#15 <- `tv*`}, tu#15*{tu#15 <- `tu*`}, $heaptype_typeuse(!(var_0))) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv#16*{tv#16 <- `tv*`}, tu#16*{tu#16 <- `tu*`}, var_0) + -- if (var_0 =/= ?()) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(_IDX_heaptype(typeidx), tv#17*{tv#17 <- `tv*`}, tu#17*{tu#17 <- `tu*`}, $heaptype_typeuse(!(var_0))) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv#18*{tv#18 <- `tv*`}, tu#18*{tu#18 <- `tu*`}, var_0) + -- if (var_0 =/= ?()) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_heaptype(rectype, n), tv#19*{tv#19 <- `tv*`}, tu#19*{tu#19 <- `tu*`}, $heaptype_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_3{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}, ht) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule fun_subst_reftype_case_0{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : heaptype}: + `%%%%`(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#22*{tv#22 <- `tv*`}, tu#22*{tu#22 <- `tu*`}, REF_reftype(null?{null <- `null?`}, var_0)) + -- fun_subst_heaptype: `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation fun_subst_valtype: `%%%%`(valtype, typevar*, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_0{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I32_valtype, tv#23*{tv#23 <- `tv*`}, tu#23*{tu#23 <- `tu*`}, $valtype_numtype($subst_numtype(I32_numtype, tv#24*{tv#24 <- `tv*`}, tu#24*{tu#24 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_1{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I64_valtype, tv#25*{tv#25 <- `tv*`}, tu#25*{tu#25 <- `tu*`}, $valtype_numtype($subst_numtype(I64_numtype, tv#26*{tv#26 <- `tv*`}, tu#26*{tu#26 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_2{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F32_valtype, tv#27*{tv#27 <- `tv*`}, tu#27*{tu#27 <- `tu*`}, $valtype_numtype($subst_numtype(F32_numtype, tv#28*{tv#28 <- `tv*`}, tu#28*{tu#28 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_3{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F64_valtype, tv#29*{tv#29 <- `tv*`}, tu#29*{tu#29 <- `tu*`}, $valtype_numtype($subst_numtype(F64_numtype, tv#30*{tv#30 <- `tv*`}, tu#30*{tu#30 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_4{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(V128_valtype, tv#31*{tv#31 <- `tv*`}, tu#31*{tu#31 <- `tu*`}, $valtype_vectype($subst_vectype(V128_vectype, tv#32*{tv#32 <- `tv*`}, tu#32*{tu#32 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_5{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : reftype}: + `%%%%`(REF_valtype(`null?`, heaptype), tv#33*{tv#33 <- `tv*`}, tu#33*{tu#33 <- `tu*`}, $valtype_reftype(var_0)) + -- fun_subst_reftype: `%%%%`(REF_reftype(`null?`, heaptype), tv#34*{tv#34 <- `tv*`}, tu#34*{tu#34 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_6{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(BOT_valtype, tv#35*{tv#35 <- `tv*`}, tu#35*{tu#35 <- `tu*`}, BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation fun_subst_storagetype: `%%%%`(storagetype, typevar*, typeuse*, storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_0{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(BOT_storagetype, tv#36*{tv#36 <- `tv*`}, tu#36*{tu#36 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(BOT_valtype, tv#37*{tv#37 <- `tv*`}, tu#37*{tu#37 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_1{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(REF_storagetype(`null?`, heaptype), tv#38*{tv#38 <- `tv*`}, tu#38*{tu#38 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(REF_valtype(`null?`, heaptype), tv#39*{tv#39 <- `tv*`}, tu#39*{tu#39 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_2{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(V128_storagetype, tv#40*{tv#40 <- `tv*`}, tu#40*{tu#40 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(V128_valtype, tv#41*{tv#41 <- `tv*`}, tu#41*{tu#41 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_3{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F64_storagetype, tv#42*{tv#42 <- `tv*`}, tu#42*{tu#42 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F64_valtype, tv#43*{tv#43 <- `tv*`}, tu#43*{tu#43 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_4{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F32_storagetype, tv#44*{tv#44 <- `tv*`}, tu#44*{tu#44 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F32_valtype, tv#45*{tv#45 <- `tv*`}, tu#45*{tu#45 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_5{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I64_storagetype, tv#46*{tv#46 <- `tv*`}, tu#46*{tu#46 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I64_valtype, tv#47*{tv#47 <- `tv*`}, tu#47*{tu#47 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_6{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I32_storagetype, tv#48*{tv#48 <- `tv*`}, tu#48*{tu#48 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I32_valtype, tv#49*{tv#49 <- `tv*`}, tu#49*{tu#49 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_7{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I8_storagetype, tv#50*{tv#50 <- `tv*`}, tu#50*{tu#50 <- `tu*`}, $storagetype_packtype($subst_packtype(I8_packtype, tv#51*{tv#51 <- `tv*`}, tu#51*{tu#51 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_8{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I16_storagetype, tv#52*{tv#52 <- `tv*`}, tu#52*{tu#52 <- `tu*`}, $storagetype_packtype($subst_packtype(I16_packtype, tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation fun_subst_fieldtype: `%%%%`(fieldtype, typevar*, typeuse*, fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule fun_subst_fieldtype_case_0{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : storagetype}: + `%%%%`(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}, `%%`_fieldtype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_storagetype: `%%%%`(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_0{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_0*` : fieldtype*}: + `%%%%`(STRUCT_comptype(`%`_list(ft#1*{ft#1 <- `ft*`})), tv#55*{tv#55 <- `tv*`}, tu#55*{tu#55 <- `tu*`}, STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- (fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, ft <- `ft*`} + -- if (|`var_0*`| = |`ft*`|) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_1{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : fieldtype}: + `%%%%`(ARRAY_comptype(ft), tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`}, ARRAY_comptype(var_0)) + -- fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_2{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : valtype*, `var_0*` : valtype*}: + `%%%%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}, `FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + -- (fun_subst_valtype: `%%%%`(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, t_2 <- `t_2*`} + -- if (|`var_1*`| = |`t_2*`|) + -- (fun_subst_valtype: `%%%%`(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, t_1 <- `t_1*`} + -- if (|`var_0*`| = |`t_1*`|) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule fun_subst_subtype_case_0{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : comptype, `var_0*` : typeuse*}: + `%%%%`(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#3*{tu'#3 <- `tu'*`}, ct), tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}, SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) + -- fun_subst_comptype: `%%%%`(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- (fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, tu' <- `tu'*`} + -- if (|`var_0*`| = |`tu'*`|) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 +relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 + rule fun_subst_rectype_case_0{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, var_3 : (typevar*, typeuse*)?, var_2 : (typevar*, typeuse*)?, var_1 : (typevar*, typeuse*)?, `var_0*` : subtype*}: + `%%%%`(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}, REC_rectype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#3*{tv'#3 <- `tv'*`}, tu'#4*{tu'#4 <- `tu'*`}) = !(var_1) + -- if (var_1 =/= ?()) + -- (wf_typevar: `%`(iter#3))*{iter#3 <- !(var_2).0} + -- (wf_typeuse: `%`(iter#4))*{iter#4 <- !(var_3).1} + -- fun_minus_recs: `%%%`(tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`}, var_3) + -- fun_minus_recs: `%%%`(tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`}, var_2) + -- fun_minus_recs: `%%%`(tv#60*{tv#60 <- `tv*`}, tu#60*{tu#60 <- `tu*`}, var_1) + -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} + -- if (|`var_0*`| = |`st*`|) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 +relation fun_subst_deftype: `%%%%`(deftype, typevar*, typeuse*, deftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 + rule fun_subst_deftype_case_0{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*, var_0 : rectype}: + `%%%%`(_DEF_deftype(qt, i), tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`}, _DEF_deftype(var_0, i)) + -- fun_subst_rectype: `%%%%`(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation subst_typeuse_is_wf: `%%%%`(typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule subst_typeuse_is_wf_0{typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse, var_2 : typeuse}: + `%%%%`(typeuse, var_0, var_1, ret_val) + -- wf_typeuse: `%`(typeuse) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_typeuse: `%`(ret_val) + -- fun_subst_typeuse: `%%%%`(typeuse, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation subst_heaptype_is_wf: `%%%%`(heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule subst_heaptype_is_wf_0{heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype, var_2 : heaptype}: + `%%%%`(heaptype, var_0, var_1, ret_val) + -- wf_heaptype: `%`(heaptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_heaptype: `%`(ret_val) + -- fun_subst_heaptype: `%%%%`(heaptype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation subst_reftype_is_wf: `%%%%`(reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule subst_reftype_is_wf_0{reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype, var_2 : reftype}: + `%%%%`(reftype, var_0, var_1, ret_val) + -- wf_reftype: `%`(reftype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_reftype: `%`(ret_val) + -- fun_subst_reftype: `%%%%`(reftype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation subst_valtype_is_wf: `%%%%`(valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule subst_valtype_is_wf_0{valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype, var_2 : valtype}: + `%%%%`(valtype, var_0, var_1, ret_val) + -- wf_valtype: `%`(valtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_valtype: `%`(ret_val) + -- fun_subst_valtype: `%%%%`(valtype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation subst_storagetype_is_wf: `%%%%`(storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule subst_storagetype_is_wf_0{storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype, var_2 : storagetype}: + `%%%%`(storagetype, var_0, var_1, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_storagetype: `%`(ret_val) + -- fun_subst_storagetype: `%%%%`(storagetype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation subst_fieldtype_is_wf: `%%%%`(fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule subst_fieldtype_is_wf_0{fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype, var_2 : fieldtype}: + `%%%%`(fieldtype, var_0, var_1, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_fieldtype: `%`(ret_val) + -- fun_subst_fieldtype: `%%%%`(fieldtype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation subst_comptype_is_wf: `%%%%`(comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule subst_comptype_is_wf_0{comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype, var_2 : comptype}: + `%%%%`(comptype, var_0, var_1, ret_val) + -- wf_comptype: `%`(comptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_comptype: `%`(ret_val) + -- fun_subst_comptype: `%%%%`(comptype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation subst_subtype_is_wf: `%%%%`(subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule subst_subtype_is_wf_0{subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype, var_2 : subtype}: + `%%%%`(subtype, var_0, var_1, ret_val) + -- wf_subtype: `%`(subtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_subtype: `%`(ret_val) + -- fun_subst_subtype: `%%%%`(subtype, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}) = at + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_tagtype: `%%%%`(tagtype, typevar*, typeuse*, tagtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_tagtype_case_0{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tagtype}: + `%%%%`(tu', tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}, var_0) + -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_globaltype: `%%%%`(globaltype, typevar*, typeuse*, globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_globaltype_case_0{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(`%%`_globaltype(mut#2?{mut#2 <- `mut?`}, t), tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}, `%%`_globaltype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_valtype: `%%%%`(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_globaltype_is_wf: `%%%%`(globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_globaltype_is_wf_0{globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype, var_2 : globaltype}: + `%%%%`(globaltype, var_0, var_1, ret_val) + -- wf_globaltype: `%`(globaltype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_globaltype: `%`(ret_val) + -- fun_subst_globaltype: `%%%%`(globaltype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv#67*{tv#67 <- `tv*`}, tu#67*{tu#67 <- `tu*`}) = `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_memtype_is_wf: `%%%%`(memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_memtype_is_wf_0{memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype}: + `%%%%`(memtype, var_0, var_1, ret_val) + -- wf_memtype: `%`(memtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_memtype(memtype, var_0, var_1)) + -- wf_memtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_tabletype: `%%%%`(tabletype, typevar*, typeuse*, tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_tabletype_case_0{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : reftype}: + `%%%%`(`%%%`_tabletype(at, lim, rt), tv#68*{tv#68 <- `tv*`}, tu#68*{tu#68 <- `tu*`}, `%%%`_tabletype(at, lim, var_0)) + -- fun_subst_reftype: `%%%%`(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_tabletype_is_wf: `%%%%`(tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_tabletype_is_wf_0{tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype, var_2 : tabletype}: + `%%%%`(tabletype, var_0, var_1, ret_val) + -- wf_tabletype: `%`(tabletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_tabletype: `%`(ret_val) + -- fun_subst_tabletype: `%%%%`(tabletype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_externtype: `%%%%`(externtype, typevar*, typeuse*, externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_0{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tagtype}: + `%%%%`(TAG_externtype(jt), tv#69*{tv#69 <- `tv*`}, tu#69*{tu#69 <- `tu*`}, TAG_externtype(var_0)) + -- fun_subst_tagtype: `%%%%`(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_1{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : globaltype}: + `%%%%`(GLOBAL_externtype(gt), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}, GLOBAL_externtype(var_0)) + -- fun_subst_globaltype: `%%%%`(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_2{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tabletype}: + `%%%%`(TABLE_externtype(tt), tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}, TABLE_externtype(var_0)) + -- fun_subst_tabletype: `%%%%`(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_3{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(MEM_externtype(mt), tv#72*{tv#72 <- `tv*`}, tu#72*{tu#72 <- `tu*`}, MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_4{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse}: + `%%%%`(FUNC_externtype(tu'), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}, FUNC_externtype(var_0)) + -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_externtype_is_wf: `%%%%`(externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_externtype_is_wf_0{externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype, var_2 : externtype}: + `%%%%`(externtype, var_0, var_1, ret_val) + -- wf_externtype: `%`(externtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_externtype: `%`(ret_val) + -- fun_subst_externtype: `%%%%`(externtype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_moduletype_case_0{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : externtype*, `var_0*` : externtype*}: + `%%%%`(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}, `%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) + -- (fun_subst_externtype: `%%%%`(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, xt_2 <- `xt_2*`} + -- if (|`var_1*`| = |`xt_2*`|) + -- (fun_subst_externtype: `%%%%`(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, xt_1 <- `xt_1*`} + -- if (|`var_0*`| = |`xt_1*`|) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_moduletype_is_wf: `%%%%`(moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_moduletype_is_wf_0{moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype, var_2 : moduletype}: + `%%%%`(moduletype, var_0, var_1, ret_val) + -- wf_moduletype: `%`(moduletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_moduletype: `%`(ret_val) + -- fun_subst_moduletype: `%%%%`(moduletype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_all_valtype: `%%%`(valtype, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_all_valtype_case_0{t : valtype, n : nat, `tu*` : typeuse*, i : nat, var_0 : valtype}: + `%%%`(t, tu#75*{tu#75 <- `tu*`}, var_0) + -- if (n = |`tu*`|) + -- fun_subst_valtype: `%%%%`(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2), var_0 +++ var_1) + -- fun_free_resulttype: `%%`(resulttype_2, var_1) + -- fun_free_resulttype: `%%`(resulttype_1, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 +relation fun_free_subtype: `%%`(subtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 + rule fun_free_subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(SUB_subtype(final#2?{final#2 <- `final?`}, typeuse#1*{typeuse#1 <- `typeuse*`}, comptype), var_0 +++ var_2) + -- fun_free_comptype: `%%`(comptype, var_2) + -- (fun_free_typeuse: `%%`(typeuse, var_1))*{var_1 <- `var_1*`, typeuse <- `typeuse*`} + -- if (|`var_1*`| = |`typeuse*`|) + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 +relation fun_free_rectype: `%%`(rectype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 + rule fun_free_rectype_case_0{`subtype*` : subtype*, `var_1*` : free*, var_0 : free}: + `%%`(REC_rectype(`%`_list(subtype#5*{subtype#5 <- `subtype*`})), var_0) + -- (fun_free_subtype: `%%`(subtype, var_1))*{var_1 <- `var_1*`, subtype <- `subtype*`} + -- if (|`var_1*`| = |`subtype*`|) + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 +relation fun_free_deftype: `%%`(deftype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 + rule fun_free_deftype_case_0{rectype : rectype, n : nat, var_0 : free}: + `%%`(_DEF_deftype(rectype, n), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:481.6-481.20 +relation free_heaptype_is_wf: `%%`(heaptype : heaptype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:481.6-481.20 + rule free_heaptype_is_wf_0{heaptype : heaptype, ret_val : free, var_0 : free}: + `%%`(heaptype, ret_val) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_heaptype: `%%`(heaptype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:482.6-482.19 +relation free_reftype_is_wf: `%%`(reftype : reftype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:482.6-482.19 + rule free_reftype_is_wf_0{reftype : reftype, ret_val : free, var_0 : free}: + `%%`(reftype, ret_val) + -- wf_reftype: `%`(reftype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.6-484.19 +relation free_typeuse_is_wf: `%%`(typeuse : typeuse, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.6-484.19 + rule free_typeuse_is_wf_0{typeuse : typeuse, ret_val : free, var_0 : free}: + `%%`(typeuse, ret_val) + -- wf_typeuse: `%`(typeuse) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_typeuse: `%%`(typeuse, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:485.6-485.19 +relation free_valtype_is_wf: `%%`(valtype : valtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:485.6-485.19 + rule free_valtype_is_wf_0{valtype : valtype, ret_val : free, var_0 : free}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_valtype: `%%`(valtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 +relation free_resulttype_is_wf: `%%`(resulttype : resulttype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 + rule free_resulttype_is_wf_0{resulttype : resulttype, ret_val : free, var_0 : free}: + `%%`(resulttype, ret_val) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_resulttype: `%%`(resulttype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 +relation free_storagetype_is_wf: `%%`(storagetype : storagetype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule free_storagetype_is_wf_0{storagetype : storagetype, ret_val : free, var_0 : free}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_storagetype: `%%`(storagetype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 +relation free_fieldtype_is_wf: `%%`(fieldtype : fieldtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 + rule free_fieldtype_is_wf_0{fieldtype : fieldtype, ret_val : free, var_0 : free}: + `%%`(fieldtype, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_fieldtype: `%%`(fieldtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 +relation free_comptype_is_wf: `%%`(comptype : comptype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 + rule free_comptype_is_wf_0{comptype : comptype, ret_val : free, var_0 : free}: + `%%`(comptype, ret_val) + -- wf_comptype: `%`(comptype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_comptype: `%%`(comptype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 +relation free_subtype_is_wf: `%%`(subtype : subtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 + rule free_subtype_is_wf_0{subtype : subtype, ret_val : free, var_0 : free}: + `%%`(subtype, ret_val) + -- wf_subtype: `%`(subtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_subtype: `%%`(subtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 +relation free_rectype_is_wf: `%%`(rectype : rectype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 + rule free_rectype_is_wf_0{rectype : rectype, ret_val : free, var_0 : free}: + `%%`(rectype, ret_val) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_rectype: `%%`(rectype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 +relation free_deftype_is_wf: `%%`(deftype : deftype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 + rule free_deftype_is_wf_0{deftype : deftype, ret_val : free, var_0 : free}: + `%%`(deftype, ret_val) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_deftype: `%%`(deftype, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_tagtype: `%%`(tagtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_tagtype_case_0{rectype : rectype, n : n, var_0 : free}: + `%%`(_DEF_tagtype(rectype, n), var_0) + -- fun_free_deftype: `%%`(_DEF_deftype(rectype, n), var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_tagtype_is_wf: `%%`(tagtype : tagtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_tagtype_is_wf_0{tagtype : tagtype, ret_val : free, var_0 : free}: + `%%`(tagtype, ret_val) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_tagtype: `%%`(tagtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_globaltype: `%%`(globaltype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_globaltype_case_0{`mut?` : mut?, valtype : valtype, var_0 : free}: + `%%`(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, valtype), var_0) + -- fun_free_valtype: `%%`(valtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_globaltype_is_wf: `%%`(globaltype : globaltype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_globaltype_is_wf_0{globaltype : globaltype, ret_val : free, var_0 : free}: + `%%`(globaltype, ret_val) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_globaltype: `%%`(globaltype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_memtype(memtype : memtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_memtype_is_wf: `%%`(memtype : memtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_memtype_is_wf_0{memtype : memtype, ret_val : free}: + `%%`(memtype, ret_val) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $free_memtype(memtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_tabletype: `%%`(tabletype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype, var_0 : free}: + `%%`(`%%%`_tabletype(addrtype, limits, reftype), $free_addrtype(addrtype) +++ var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_tabletype_is_wf: `%%`(tabletype : tabletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_tabletype_is_wf_0{tabletype : tabletype, ret_val : free, var_0 : free}: + `%%`(tabletype, ret_val) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_tabletype: `%%`(tabletype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_datatype(datatype : datatype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_datatype_is_wf: `%%`(datatype : datatype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_datatype_is_wf_0{datatype : datatype, ret_val : free}: + `%%`(datatype, ret_val) + -- if (ret_val = $free_datatype(datatype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_elemtype: `%%`(elemtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_elemtype_case_0{reftype : reftype, var_0 : free}: + `%%`(reftype, var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_elemtype_is_wf: `%%`(elemtype : elemtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_elemtype_is_wf_0{elemtype : elemtype, ret_val : free, var_0 : free}: + `%%`(elemtype, ret_val) + -- wf_reftype: `%`(elemtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_elemtype: `%%`(elemtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_externtype: `%%`(externtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_externtype(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_1{globaltype : globaltype, var_0 : free}: + `%%`(GLOBAL_externtype(globaltype), var_0) + -- fun_free_globaltype: `%%`(globaltype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_2{memtype : memtype}: + `%%`(MEM_externtype(memtype), $free_memtype(memtype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_3{tabletype : tabletype, var_0 : free}: + `%%`(TABLE_externtype(tabletype), var_0) + -- fun_free_tabletype: `%%`(tabletype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_4{typeuse : typeuse, var_0 : free}: + `%%`(FUNC_externtype(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_externtype_is_wf: `%%`(externtype : externtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_externtype_is_wf_0{externtype : externtype, ret_val : free, var_0 : free}: + `%%`(externtype, ret_val) + -- wf_externtype: `%`(externtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_externtype: `%%`(externtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_moduletype: `%%`(moduletype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_moduletype_case_0{`externtype_1*` : externtype*, `externtype_2*` : externtype*, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(`%->%`_moduletype(externtype_1#1*{externtype_1#1 <- `externtype_1*`}, externtype_2#1*{externtype_2#1 <- `externtype_2*`}), var_0 +++ var_2) + -- (fun_free_externtype: `%%`(externtype_2, var_3))*{var_3 <- `var_3*`, externtype_2 <- `externtype_2*`} + -- if (|`var_3*`| = |`externtype_2*`|) + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- (fun_free_externtype: `%%`(externtype_1, var_1))*{var_1 <- `var_1*`, externtype_1 <- `externtype_1*`} + -- if (|`var_1*`| = |`externtype_1*`|) + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_moduletype_is_wf: `%%`(moduletype : moduletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_moduletype_is_wf_0{moduletype : moduletype, ret_val : free, var_0 : free}: + `%%`(moduletype, ret_val) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_moduletype: `%%`(moduletype, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax num_ = + | mk_num__0(Inn : Inn, var_x : iN) + | mk_num__1(Fnn : Fnn, var_x : fN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_num_: `%%`(numtype, num_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_0{numtype : numtype, Inn : Inn, var_x : iN}: + `%%`(numtype, mk_num__0_num_(Inn, var_x)) + -- wf_uN: `%%`($size($numtype_addrtype(Inn)), var_x) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_1{numtype : numtype, Fnn : Fnn, var_x : fN}: + `%%`(numtype, mk_num__1_num_(Fnn, var_x)) + -- wf_fN: `%%`($sizenn($numtype_Fnn(Fnn)), var_x) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__0(var_x : num_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{Inn : Inn, var_x : iN}(mk_num__0_num_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__1(var_x : num_) : fN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{Fnn : Fnn, var_x : fN}(mk_num__1_num_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax pack_ = iN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lane_ = + | mk_lane__0(numtype : numtype, var_x : num_) + | mk_lane__1(packtype : packtype, var_x : pack_) + | mk_lane__2(Jnn : Jnn, var_x : iN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lane_: `%%`(lanetype, lane_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_0{lanetype : lanetype, numtype : numtype, var_x : num_}: + `%%`(lanetype, mk_lane__0_lane_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (lanetype = $lanetype_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_1{lanetype : lanetype, packtype : packtype, var_x : pack_}: + `%%`(lanetype, mk_lane__1_lane_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (lanetype = $lanetype_packtype(packtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_2{lanetype : lanetype, Jnn : Jnn, var_x : iN}: + `%%`(lanetype, mk_lane__2_lane_(Jnn, var_x)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(Jnn)), var_x) + -- if (lanetype = $lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__0(var_x : lane_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{numtype : numtype, var_x : num_}(mk_lane__0_lane_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__1(var_x : lane_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{packtype : packtype, var_x : pack_}(mk_lane__1_lane_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__2(var_x : lane_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{Jnn : Jnn, var_x : iN}(mk_lane__2_lane_(Jnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vec_ = vN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lit_ = + | mk_lit__0(numtype : numtype, var_x : num_) + | mk_lit__1(vectype : vectype, var_x : vec_) + | mk_lit__2(packtype : packtype, var_x : pack_) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lit_: `%%`(storagetype, lit_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_0{storagetype : storagetype, numtype : numtype, var_x : num_}: + `%%`(storagetype, mk_lit__0_lit_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (storagetype = $storagetype_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_1{storagetype : storagetype, vectype : vectype, var_x : vec_}: + `%%`(storagetype, mk_lit__1_lit_(vectype, var_x)) + -- wf_uN: `%%`($vsize(vectype), var_x) + -- if (storagetype = $storagetype_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_2{storagetype : storagetype, packtype : packtype, var_x : pack_}: + `%%`(storagetype, mk_lit__2_lit_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (storagetype = $storagetype_packtype(packtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__0(var_x : lit_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{numtype : numtype, var_x : num_}(mk_lit__0_lit_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__1(var_x : lit_) : vec_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{vectype : vectype, var_x : vec_}(mk_lit__1_lit_(vectype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__2(var_x : lit_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{packtype : packtype, var_x : pack_}(mk_lit__2_lit_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sz = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_sz_0(x : sz) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_sz_0{v_num_0 : nat}(`%`_sz(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_sz: `%`(sz) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule sz_case_0{i : nat}: + `%`(`%`_sz(i)) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sx = + | U + | S + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Inn = + | CLZ + | CTZ + | POPCNT + | EXTEND(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_Inn: `%%`(Inn, unop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_0{Inn : Inn}: + `%%`(Inn, CLZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_1{Inn : Inn}: + `%%`(Inn, CTZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_2{Inn : Inn}: + `%%`(Inn, POPCNT_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_3{Inn : Inn, sz : sz}: + `%%`(Inn, EXTEND_unop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Fnn = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_ = + | mk_unop__0(Inn : Inn, var_x : unop_Inn) + | mk_unop__1(Fnn : Fnn, var_x : unop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_: `%%`(numtype, unop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_0{numtype : numtype, Inn : Inn, var_x : unop_Inn}: + `%%`(numtype, mk_unop__0_unop_(Inn, var_x)) + -- wf_unop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_1{numtype : numtype, Fnn : Fnn, var_x : unop_Fnn}: + `%%`(numtype, mk_unop__1_unop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__0(var_x : unop_) : unop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{Inn : Inn, var_x : unop_Inn}(mk_unop__0_unop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__1(var_x : unop_) : unop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{Fnn : Fnn, var_x : unop_Fnn}(mk_unop__1_unop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Inn = + | ADD + | SUB + | MUL + | DIV(sx : sx) + | REM(sx : sx) + | AND + | OR + | XOR + | SHL + | SHR(sx : sx) + | ROTL + | ROTR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Fnn = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | COPYSIGN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_ = + | mk_binop__0(Inn : Inn, var_x : binop_Inn) + | mk_binop__1(Fnn : Fnn, var_x : binop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_binop_: `%%`(numtype, binop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_0{numtype : numtype, Inn : Inn, var_x : binop_Inn}: + `%%`(numtype, mk_binop__0_binop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_1{numtype : numtype, Fnn : Fnn, var_x : binop_Fnn}: + `%%`(numtype, mk_binop__1_binop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__0(var_x : binop_) : binop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{Inn : Inn, var_x : binop_Inn}(mk_binop__0_binop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__1(var_x : binop_) : binop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{Fnn : Fnn, var_x : binop_Fnn}(mk_binop__1_binop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_Inn = + | EQZ + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_ = + | mk_testop__0(Inn : Inn, var_x : testop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_testop_: `%%`(numtype, testop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule testop__case_0{numtype : numtype, Inn : Inn, var_x : testop_Inn}: + `%%`(numtype, mk_testop__0_testop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_testop__0(var_x : testop_) : testop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_testop__0{Inn : Inn, var_x : testop_Inn}(mk_testop__0_testop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Inn = + | EQ + | NE + | LT(sx : sx) + | GT(sx : sx) + | LE(sx : sx) + | GE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Fnn = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_ = + | mk_relop__0(Inn : Inn, var_x : relop_Inn) + | mk_relop__1(Fnn : Fnn, var_x : relop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_relop_: `%%`(numtype, relop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_0{numtype : numtype, Inn : Inn, var_x : relop_Inn}: + `%%`(numtype, mk_relop__0_relop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_1{numtype : numtype, Fnn : Fnn, var_x : relop_Fnn}: + `%%`(numtype, mk_relop__1_relop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__0(var_x : relop_) : relop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{Inn : Inn, var_x : relop_Inn}(mk_relop__0_relop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__1(var_x : relop_) : relop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{Fnn : Fnn, var_x : relop_Fnn}(mk_relop__1_relop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Inn_2 = + | EXTEND(sx : sx) + | WRAP + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Inn_2: `%%%`(Inn, Inn, cvtop__Inn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_0{Inn_1 : Inn, Inn_2 : Inn, sx : sx}: + `%%%`(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)) + -- if ($sizenn1($numtype_addrtype(Inn_1)) < $sizenn2($numtype_addrtype(Inn_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_1{Inn_1 : Inn, Inn_2 : Inn}: + `%%%`(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2) + -- if ($sizenn1($numtype_addrtype(Inn_1)) > $sizenn2($numtype_addrtype(Inn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Fnn_2 = + | CONVERT(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn, Fnn, cvtop__Inn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_0{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx}: + `%%%`(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_1{Inn_1 : Inn, Fnn_2 : Fnn}: + `%%%`(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2) + -- if ($sizenn1($numtype_addrtype(Inn_1)) = $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Inn_2 = + | TRUNC(sx : sx) + | TRUNC_SAT(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn, Inn, cvtop__Fnn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_0{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_1{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_2{Fnn_1 : Fnn, Inn_2 : Inn}: + `%%%`(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = $sizenn2($numtype_addrtype(Inn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Fnn_2 = + | PROMOTE + | DEMOTE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn, Fnn, cvtop__Fnn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_0{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) < $sizenn2($numtype_Fnn(Fnn_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_1{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) > $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__ = + | mk_cvtop___0(Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2) + | mk_cvtop___1(Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2) + | mk_cvtop___2(Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2) + | mk_cvtop___3(Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__: `%%%`(numtype, numtype, cvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_0{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) + -- wf_cvtop__Inn_1_Inn_2: `%%%`(Inn_1, Inn_2, var_x) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_1{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) + -- wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn_1, Fnn_2, var_x) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_2{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) + -- wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn_1, Inn_2, var_x) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_3{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) + -- wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn_1, Fnn_2, var_x) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___0(var_x : cvtop__) : cvtop__Inn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___1(var_x : cvtop__) : cvtop__Inn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___2(var_x : cvtop__) : cvtop__Fnn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___3(var_x : cvtop__) : cvtop__Fnn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax dim = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_dim_0(x : dim) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_dim_0{v_num_0 : nat}(`%`_dim(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_dim: `%`(dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_case_0{i : nat}: + `%`(`%`_dim(i)) + -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax shape = + | `%X%`(lanetype : lanetype, dim : dim) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_shape: `%`(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule shape_case_0{lanetype : lanetype, dim : dim}: + `%`(`%X%`_shape(lanetype, dim)) + -- wf_dim: `%`(dim) + -- if (($lsize(lanetype) * $proj_dim_0(dim).0) = 128) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $dim(shape : shape) : dim + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation dim_is_wf: `%%`(shape : shape, ret_val : dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_is_wf_0{shape : shape, ret_val : dim}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $dim(shape)) + -- wf_dim: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $lanetype(shape : shape) : lanetype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $lanetype{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $unpackshape(shape : shape) : numtype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $unpackshape{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax ishape = + | `%`(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_ishape_0(x : ishape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_ishape_0{v_shape_0 : shape}(`%`_ishape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_ishape: `%`(ishape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule ishape_case_0{Jnn : Jnn, shape : shape}: + `%`(`%`_ishape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = $lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax bshape = + | `%`(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_bshape_0(x : bshape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_bshape_0{v_shape_0 : shape}(`%`_bshape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_bshape: `%`(bshape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule bshape_case_0{shape : shape}: + `%`(`%`_bshape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = I8_lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax zero = + | ZERO + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax half = + | LOW + | HIGH + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvunop = + | NOT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvbinop = + | AND + | ANDNOT + | OR + | XOR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvternop = + | BITSELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvtestop = + | ANY_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Jnn_M = + | ABS + | NEG + | POPCNT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_Jnn_M: `%%%`(Jnn, M, vunop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ABS_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NEG_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_2{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, POPCNT_vunop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 8) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Fnn_M = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_ = + | mk_vunop__0(Jnn : Jnn, M : M, var_x : vunop_Jnn_M) + | mk_vunop__1(Fnn : Fnn, M : M, var_x : vunop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_: `%%`(shape, vunop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vunop_Jnn_M}: + `%%`(shape, mk_vunop__0_vunop_(Jnn, M, var_x)) + -- wf_vunop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vunop_Fnn_M}: + `%%`(shape, mk_vunop__1_vunop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__0(var_x : vunop_) : vunop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{Jnn : Jnn, M : M, var_x : vunop_Jnn_M}(mk_vunop__0_vunop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__1(var_x : vunop_) : vunop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{Fnn : Fnn, M : M, var_x : vunop_Fnn_M}(mk_vunop__1_vunop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Jnn_M = + | ADD + | SUB + | ADD_SAT(sx : sx) + | SUB_SAT(sx : sx) + | MUL + | AVGRU + | Q15MULR_SATS + | RELAXED_Q15MULRS + | MIN(sx : sx) + | MAX(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_Jnn_M: `%%%`(Jnn, M, vbinop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ADD_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, SUB_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_4{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, MUL_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) >= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_5{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, AVGRU_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_6{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, Q15MULR_SATS_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_7{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_8{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MIN_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_9{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MAX_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Fnn_M = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | PMIN + | PMAX + | RELAXED_MIN + | RELAXED_MAX + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_ = + | mk_vbinop__0(Jnn : Jnn, M : M, var_x : vbinop_Jnn_M) + | mk_vbinop__1(Fnn : Fnn, M : M, var_x : vbinop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_: `%%`(shape, vbinop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}: + `%%`(shape, mk_vbinop__0_vbinop_(Jnn, M, var_x)) + -- wf_vbinop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}: + `%%`(shape, mk_vbinop__1_vbinop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__0(var_x : vbinop_) : vbinop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}(mk_vbinop__0_vbinop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__1(var_x : vbinop_) : vbinop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}(mk_vbinop__1_vbinop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Jnn_M = + | RELAXED_LANESELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Fnn_M = + | RELAXED_MADD + | RELAXED_NMADD + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_ = + | mk_vternop__0(Jnn : Jnn, M : M, var_x : vternop_Jnn_M) + | mk_vternop__1(Fnn : Fnn, M : M, var_x : vternop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vternop_: `%%`(shape, vternop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vternop_Jnn_M}: + `%%`(shape, mk_vternop__0_vternop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vternop_Fnn_M}: + `%%`(shape, mk_vternop__1_vternop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__0(var_x : vternop_) : vternop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{Jnn : Jnn, M : M, var_x : vternop_Jnn_M}(mk_vternop__0_vternop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__1(var_x : vternop_) : vternop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{Fnn : Fnn, M : M, var_x : vternop_Fnn_M}(mk_vternop__1_vternop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_Jnn_M = + | ALL_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_ = + | mk_vtestop__0(Jnn : Jnn, M : M, var_x : vtestop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vtestop_: `%%`(shape, vtestop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vtestop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}: + `%%`(shape, mk_vtestop__0_vtestop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vtestop__0(var_x : vtestop_) : vtestop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vtestop__0{Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}(mk_vtestop__0_vtestop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Jnn_M = + | EQ + | NE + | LT(sx : sx) + | GT(sx : sx) + | LE(sx : sx) + | GE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_Jnn_M: `%%%`(Jnn, M, vrelop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, EQ_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NE_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LT_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GT_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_4{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LE_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_5{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GE_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Fnn_M = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_ = + | mk_vrelop__0(Jnn : Jnn, M : M, var_x : vrelop_Jnn_M) + | mk_vrelop__1(Fnn : Fnn, M : M, var_x : vrelop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_: `%%`(shape, vrelop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}: + `%%`(shape, mk_vrelop__0_vrelop_(Jnn, M, var_x)) + -- wf_vrelop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}: + `%%`(shape, mk_vrelop__1_vrelop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__0(var_x : vrelop_) : vrelop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}(mk_vrelop__0_vrelop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__1(var_x : vrelop_) : vrelop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}(mk_vrelop__1_vrelop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_Jnn_M = + | SHL + | SHR(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_ = + | mk_vshiftop__0(Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vshiftop_: `%%`(ishape, vshiftop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vshiftop__case_0{ishape : ishape, Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}: + `%%`(ishape, mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) + -- if (ishape = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vshiftop__0(var_x : vshiftop_) : vshiftop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vshiftop__0{Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}(mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_M = + | SWIZZLE + | RELAXED_SWIZZLE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_ = + | mk_vswizzlop__0(M : M, var_x : vswizzlop_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vswizzlop_: `%%`(bshape, vswizzlop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vswizzlop__case_0{bshape : bshape, M : M, var_x : vswizzlop_M}: + `%%`(bshape, mk_vswizzlop__0_vswizzlop_(M, var_x)) + -- if (bshape = `%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vswizzlop__0(var_x : vswizzlop_) : vswizzlop_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vswizzlop__0{M : M, var_x : vswizzlop_M}(mk_vswizzlop__0_vswizzlop_(M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTADD_PAIRWISE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextunop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)) + -- if ((16 <= (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) <= 32))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__ = + | mk_vextunop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__: `%%%`(ishape, ishape, vextunop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextunop___0(var_x : vextunop__) : vextunop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTMUL(half : half, sx : sx) + | DOTS + | RELAXED_DOTS + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextbinop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) >= 16)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_1{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_2{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__ = + | mk_vextbinop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__: `%%%`(ishape, ishape, vextbinop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextbinop___0(var_x : vextbinop__) : vextbinop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__Jnn_1_M_1_Jnn_2_M_2 = + | RELAXED_DOT_ADDS + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextternop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((4 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__ = + | mk_vextternop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__: `%%%`(ishape, ishape, vextternop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextternop___0(var_x : vextternop__) : vextternop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTEND(half : half, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vcvtop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if ($lsizenn2($lanetype_Jnn(Jnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Fnn_2_M_2 = + | CONVERT(`half?` : half?, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn, M, Fnn, M, vcvtop__Jnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Fnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}: + `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(`half?`, sx)) + -- if (((($sizenn2($numtype_Fnn(Fnn_2)) = $lsizenn1($lanetype_Jnn(Jnn_1))) /\ ($lsizenn1($lanetype_Jnn(Jnn_1)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2($numtype_Fnn(Fnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Jnn_2_M_2 = + | TRUNC_SAT(sx : sx, `zero?` : zero?) + | RELAXED_TRUNC(sx : sx, `zero?` : zero?) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn, M, Jnn, M, vcvtop__Fnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, `zero?`)) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, `zero?`)) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Fnn_2_M_2 = + | DEMOTE(zero : zero) + | PROMOTELOW + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn, M, Fnn, M, vcvtop__Fnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $sizenn2($numtype_Fnn(Fnn_2)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2) + -- if ((2 * $sizenn1($numtype_Fnn(Fnn_1))) = $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__ = + | mk_vcvtop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___1(Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2) + | mk_vcvtop___2(Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___3(Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__: `%%%`(shape, shape, vcvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_0{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_1{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_2{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_3{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___0(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___1(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___2(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___3(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax memarg = +{ + ALIGN u32, + OFFSET u64 +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_memarg: `%`(memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg_case_{var_0 : u32, var_1 : u64}: + `%`({ALIGN var_0, OFFSET var_1}) + -- wf_uN: `%%`(32, var_0) + -- wf_uN: `%%`(64, var_1) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_Inn = + | `%_%`(sz : sz, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_Inn: `%%`(Inn, loadop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop_Inn_case_0{Inn : Inn, sz : sz, sx : sx}: + `%%`(Inn, `%_%`_loadop_Inn(sz, sx)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_ = + | mk_loadop__0(Inn : Inn, var_x : loadop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_: `%%`(numtype, loadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop__case_0{numtype : numtype, Inn : Inn, var_x : loadop_Inn}: + `%%`(numtype, mk_loadop__0_loadop_(Inn, var_x)) + -- wf_loadop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_loadop__0(var_x : loadop_) : loadop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_loadop__0{Inn : Inn, var_x : loadop_Inn}(mk_loadop__0_loadop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_Inn = + | `%`(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_Inn: `%%`(Inn, storeop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop_Inn_case_0{Inn : Inn, sz : sz}: + `%%`(Inn, `%`_storeop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_ = + | mk_storeop__0(Inn : Inn, var_x : storeop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_: `%%`(numtype, storeop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop__case_0{numtype : numtype, Inn : Inn, var_x : storeop_Inn}: + `%%`(numtype, mk_storeop__0_storeop_(Inn, var_x)) + -- wf_storeop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_storeop__0(var_x : storeop_) : storeop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_storeop__0{Inn : Inn, var_x : storeop_Inn}(mk_storeop__0_storeop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vloadop_ = + | `SHAPE%X%_%`(sz : sz, M : M, sx : sx) + | SPLAT(sz : sz) + | ZERO(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vloadop_: `%%`(vectype, vloadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_0{vectype : vectype, sz : sz, M : M, sx : sx}: + `%%`(vectype, `SHAPE%X%_%`_vloadop_(sz, M, sx)) + -- wf_sz: `%`(sz) + -- if ((($proj_sz_0(sz).0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_1{vectype : vectype, sz : sz}: + `%%`(vectype, SPLAT_vloadop_(sz)) + -- wf_sz: `%`(sz) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_2{vectype : vectype, sz : sz}: + `%%`(vectype, ZERO_vloadop_(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 >= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax blocktype = + | _RESULT(`valtype?` : valtype?) + | _IDX(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_blocktype: `%`(blocktype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_0{`valtype?` : valtype?}: + `%`(_RESULT_blocktype(`valtype?`)) + -- (wf_valtype: `%`(valtype))?{valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_1{typeidx : typeidx}: + `%`(_IDX_blocktype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax addr = nat + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayaddr = addr + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax catch = + | CATCH(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL(labelidx : labelidx) + | CATCH_ALL_REF(labelidx : labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_catch: `%`(catch) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_0{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_1{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_REF_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_2{labelidx : labelidx}: + `%`(CATCH_ALL_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_3{labelidx : labelidx}: + `%`(CATCH_ALL_REF_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exnaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax dataaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax elemaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globaladdr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax memaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tagaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax externaddr = + | TAG(tagaddr : tagaddr) + | GLOBAL(globaladdr : globaladdr) + | MEM(memaddr : memaddr) + | TABLE(tableaddr : tableaddr) + | FUNC(funcaddr : funcaddr) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exportinst = +{ + NAME name, + ADDR externaddr +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exportinst: `%`(exportinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exportinst_case_{var_0 : name, var_1 : externaddr}: + `%`({NAME var_0, ADDR var_1}) + -- wf_name: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax moduleinst = +{ + TYPES deftype*, + TAGS tagaddr*, + GLOBALS globaladdr*, + MEMS memaddr*, + TABLES tableaddr*, + FUNCS funcaddr*, + DATAS dataaddr*, + ELEMS elemaddr*, + EXPORTS exportinst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_moduleinst: `%`(moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_case_{var_0 : deftype*, var_1 : tagaddr*, var_2 : globaladdr*, var_3 : memaddr*, var_4 : tableaddr*, var_5 : funcaddr*, var_6 : dataaddr*, var_7 : elemaddr*, var_8 : exportinst*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, EXPORTS var_8}) + -- (wf_exportinst: `%`(var_8))*{var_8 <- var_8} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-43.19 +syntax ref = + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 +relation wf_ref: `%`(ref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_0{u31 : u31}: + `%`(`REF.I31_NUM`_ref(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_1: + `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_2{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_ref(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_3{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_ref(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_4{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_ref(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_5{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_ref(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_6{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_ref(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_7{ref : ref}: + `%`(`REF.EXTERN`_ref(ref)) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax val = + | CONST(numtype : numtype, num_) + | VCONST(vectype : vectype, vec_) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + +def $val_ref(ref) : val + def $val_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_val(x0) + def $val_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_val + def $val_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_val(x0) + def $val_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_val(x0) + def $val_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_val(x0) + def $val_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_val(x0) + def $val_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_val(x0) + def $val_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_val(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_val: `%`(val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_val(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_1{vectype : vectype, var_0 : vec_}: + `%`(VCONST_val(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_2{u31 : u31}: + `%`(`REF.I31_NUM`_val(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_3: + `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_4{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_5{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_6{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_7{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_val(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_8{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_9{ref : ref}: + `%`(`REF.EXTERN`_val(ref)) + -- wf_ref: `%`(ref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax frame = +{ + LOCALS val?*, + MODULE moduleinst +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_frame: `%`(frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_case_{var_0 : val?*, var_1 : moduleinst}: + `%`({LOCALS var_0, MODULE var_1}) + -- (wf_val: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- wf_moduleinst: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.1-139.9 +syntax instr = + | NOP + | UNREACHABLE + | DROP + | SELECT(`valtype*?` : valtype*?) + | BLOCK(blocktype : blocktype, `instr*` : instr*) + | LOOP(blocktype : blocktype, `instr*` : instr*) + | `IF%%ELSE%`(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) + | BR(labelidx : labelidx) + | BR_IF(labelidx : labelidx) + | BR_TABLE(`labelidx*` : labelidx*, labelidx : labelidx) + | BR_ON_NULL(labelidx : labelidx) + | BR_ON_NON_NULL(labelidx : labelidx) + | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | CALL(funcidx : funcidx) + | CALL_REF(typeuse : typeuse) + | CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | RETURN + | RETURN_CALL(funcidx : funcidx) + | RETURN_CALL_REF(typeuse : typeuse) + | RETURN_CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | THROW(tagidx : tagidx) + | THROW_REF + | TRY_TABLE(blocktype : blocktype, list(syntax catch), `instr*` : instr*) + | `LOCAL.GET`(localidx : localidx) + | `LOCAL.SET`(localidx : localidx) + | `LOCAL.TEE`(localidx : localidx) + | `GLOBAL.GET`(globalidx : globalidx) + | `GLOBAL.SET`(globalidx : globalidx) + | `TABLE.GET`(tableidx : tableidx) + | `TABLE.SET`(tableidx : tableidx) + | `TABLE.SIZE`(tableidx : tableidx) + | `TABLE.GROW`(tableidx : tableidx) + | `TABLE.FILL`(tableidx : tableidx) + | `TABLE.COPY`(tableidx : tableidx, tableidx : tableidx) + | `TABLE.INIT`(tableidx : tableidx, elemidx : elemidx) + | `ELEM.DROP`(elemidx : elemidx) + | LOAD(numtype : numtype, loadop_?, memidx : memidx, memarg : memarg) + | STORE(numtype : numtype, storeop_?, memidx : memidx, memarg : memarg) + | VLOAD(vectype : vectype, vloadop_?, memidx : memidx, memarg : memarg) + | VLOAD_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | `MEMORY.SIZE`(memidx : memidx) + | `MEMORY.GROW`(memidx : memidx) + | `MEMORY.FILL`(memidx : memidx) + | `MEMORY.COPY`(memidx : memidx, memidx : memidx) + | `MEMORY.INIT`(memidx : memidx, dataidx : dataidx) + | `DATA.DROP`(dataidx : dataidx) + | `REF.NULL`(heaptype : heaptype) + | `REF.IS_NULL` + | `REF.AS_NON_NULL` + | `REF.EQ` + | `REF.TEST`(reftype : reftype) + | `REF.CAST`(reftype : reftype) + | `REF.FUNC`(funcidx : funcidx) + | `REF.I31` + | `I31.GET`(sx : sx) + | `STRUCT.NEW`(typeidx : typeidx) + | `STRUCT.NEW_DEFAULT`(typeidx : typeidx) + | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx) + | `STRUCT.SET`(typeidx : typeidx, fieldidx : fieldidx) + | `ARRAY.NEW`(typeidx : typeidx) + | `ARRAY.NEW_DEFAULT`(typeidx : typeidx) + | `ARRAY.NEW_FIXED`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.NEW_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `ARRAY.GET`(`sx?` : sx?, typeidx : typeidx) + | `ARRAY.SET`(typeidx : typeidx) + | `ARRAY.LEN` + | `ARRAY.FILL`(typeidx : typeidx) + | `ARRAY.COPY`(typeidx : typeidx, typeidx : typeidx) + | `ARRAY.INIT_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.INIT_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `EXTERN.CONVERT_ANY` + | `ANY.CONVERT_EXTERN` + | CONST(numtype : numtype, num_) + | UNOP(numtype : numtype, unop_) + | BINOP(numtype : numtype, binop_) + | TESTOP(numtype : numtype, testop_) + | RELOP(numtype : numtype, relop_) + | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__) + | VCONST(vectype : vectype, vec_) + | VVUNOP(vectype : vectype, vvunop : vvunop) + | VVBINOP(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP(vectype : vectype, vvternop : vvternop) + | VVTESTOP(vectype : vectype, vvtestop : vvtestop) + | VUNOP(shape : shape, vunop_) + | VBINOP(shape : shape, vbinop_) + | VTERNOP(shape : shape, vternop_) + | VTESTOP(shape : shape, vtestop_) + | VRELOP(shape : shape, vrelop_) + | VSHIFTOP(ishape : ishape, vshiftop_) + | VBITMASK(ishape : ishape) + | VSWIZZLOP(bshape : bshape, vswizzlop_) + | VSHUFFLE(bshape : bshape, `laneidx*` : laneidx*) + | VEXTUNOP(ishape_1 : ishape, ishape_2 : ishape, vextunop__) + | VEXTBINOP(ishape_1 : ishape, ishape_2 : ishape, vextbinop__) + | VEXTTERNOP(ishape_1 : ishape, ishape_2 : ishape, vextternop__) + | VNARROW(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + | VCVTOP(shape_1 : shape, shape_2 : shape, vcvtop__) + | VSPLAT(shape : shape) + | VEXTRACT_LANE(shape : shape, `sx?` : sx?, laneidx : laneidx) + | VREPLACE_LANE(shape : shape, laneidx : laneidx) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) + | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) + | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) + | TRAP +} + +def $instr_ref(ref) : instr + def $instr_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_instr(x0) + def $instr_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_instr + def $instr_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_instr(x0) + def $instr_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_instr(x0) + def $instr_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_instr(x0) + def $instr_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_instr(x0) + def $instr_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_instr(x0) + def $instr_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_instr(x0) + +def $instr_val(val) : instr + def $instr_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_instr(x0, x1) + def $instr_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_instr(x0, x1) + def $instr_val{x0 : u31}(`REF.I31_NUM`_val(x0)) = `REF.I31_NUM`_instr(x0) + def $instr_val(`REF.NULL_ADDR`_val) = `REF.NULL_ADDR`_instr + def $instr_val{x0 : structaddr}(`REF.STRUCT_ADDR`_val(x0)) = `REF.STRUCT_ADDR`_instr(x0) + def $instr_val{x0 : arrayaddr}(`REF.ARRAY_ADDR`_val(x0)) = `REF.ARRAY_ADDR`_instr(x0) + def $instr_val{x0 : funcaddr}(`REF.FUNC_ADDR`_val(x0)) = `REF.FUNC_ADDR`_instr(x0) + def $instr_val{x0 : exnaddr}(`REF.EXN_ADDR`_val(x0)) = `REF.EXN_ADDR`_instr(x0) + def $instr_val{x0 : hostaddr}(`REF.HOST_ADDR`_val(x0)) = `REF.HOST_ADDR`_instr(x0) + def $instr_val{x0 : ref}(`REF.EXTERN`_val(x0)) = `REF.EXTERN`_instr(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 +relation wf_instr: `%`(instr) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_0: + `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_1: + `%`(UNREACHABLE_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_2: + `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_3{`valtype*?` : valtype*?}: + `%`(SELECT_instr(`valtype*?`)) + -- (wf_valtype: `%`(valtype))*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_4{blocktype : blocktype, `instr*` : instr*}: + `%`(BLOCK_instr(blocktype, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_5{blocktype : blocktype, `instr*` : instr*}: + `%`(LOOP_instr(blocktype, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_6{blocktype : blocktype, `instr*` : instr*, `instr*_0` : instr*}: + `%`(`IF%%ELSE%`_instr(blocktype, `instr*`, `instr*_0`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(`instr*_0`))*{`instr*_0` <- `instr*_0`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_7{labelidx : labelidx}: + `%`(BR_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_8{labelidx : labelidx}: + `%`(BR_IF_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_9{`labelidx*` : labelidx*, labelidx : labelidx}: + `%`(BR_TABLE_instr(`labelidx*`, labelidx)) + -- (wf_uN: `%%`(32, labelidx))*{labelidx <- `labelidx*`} + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_10{labelidx : labelidx}: + `%`(BR_ON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_11{labelidx : labelidx}: + `%`(BR_ON_NON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_12{labelidx : labelidx, reftype : reftype, reftype_0 : reftype}: + `%`(BR_ON_CAST_instr(labelidx, reftype, reftype_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_13{labelidx : labelidx, reftype : reftype, reftype_0 : reftype}: + `%`(BR_ON_CAST_FAIL_instr(labelidx, reftype, reftype_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_14{funcidx : funcidx}: + `%`(CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_15{typeuse : typeuse}: + `%`(CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_16{tableidx : tableidx, typeuse : typeuse}: + `%`(CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_17: + `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_18{funcidx : funcidx}: + `%`(RETURN_CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_19{typeuse : typeuse}: + `%`(RETURN_CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_20{tableidx : tableidx, typeuse : typeuse}: + `%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_21{tagidx : tagidx}: + `%`(THROW_instr(tagidx)) + -- wf_uN: `%%`(32, tagidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_22: + `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_23{blocktype : blocktype, var_0 : list(syntax catch), `instr*` : instr*}: + `%`(TRY_TABLE_instr(blocktype, var_0, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_24{localidx : localidx}: + `%`(`LOCAL.GET`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_25{localidx : localidx}: + `%`(`LOCAL.SET`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_26{localidx : localidx}: + `%`(`LOCAL.TEE`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_27{globalidx : globalidx}: + `%`(`GLOBAL.GET`_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_28{globalidx : globalidx}: + `%`(`GLOBAL.SET`_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_29{tableidx : tableidx}: + `%`(`TABLE.GET`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_30{tableidx : tableidx}: + `%`(`TABLE.SET`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_31{tableidx : tableidx}: + `%`(`TABLE.SIZE`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_32{tableidx : tableidx}: + `%`(`TABLE.GROW`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_33{tableidx : tableidx}: + `%`(`TABLE.FILL`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_34{tableidx : tableidx, tableidx_0 : tableidx}: + `%`(`TABLE.COPY`_instr(tableidx, tableidx_0)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, tableidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_35{tableidx : tableidx, elemidx : elemidx}: + `%`(`TABLE.INIT`_instr(tableidx, elemidx)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_36{elemidx : elemidx}: + `%`(`ELEM.DROP`_instr(elemidx)) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_37{numtype : numtype, var_0 : loadop_?, memidx : memidx, memarg : memarg}: + `%`(LOAD_instr(numtype, var_0, memidx, memarg)) + -- (wf_loadop_: `%%`(numtype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_38{numtype : numtype, var_0 : storeop_?, memidx : memidx, memarg : memarg}: + `%`(STORE_instr(numtype, var_0, memidx, memarg)) + -- (wf_storeop_: `%%`(numtype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_39{vectype : vectype, var_0 : vloadop_?, memidx : memidx, memarg : memarg}: + `%`(VLOAD_instr(vectype, var_0, memidx, memarg)) + -- (wf_vloadop_: `%%`(vectype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_40{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_41{vectype : vectype, memidx : memidx, memarg : memarg}: + `%`(VSTORE_instr(vectype, memidx, memarg)) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_42{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_43{memidx : memidx}: + `%`(`MEMORY.SIZE`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_44{memidx : memidx}: + `%`(`MEMORY.GROW`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_45{memidx : memidx}: + `%`(`MEMORY.FILL`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_46{memidx : memidx, memidx_0 : memidx}: + `%`(`MEMORY.COPY`_instr(memidx, memidx_0)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, memidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_47{memidx : memidx, dataidx : dataidx}: + `%`(`MEMORY.INIT`_instr(memidx, dataidx)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_48{dataidx : dataidx}: + `%`(`DATA.DROP`_instr(dataidx)) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_49{heaptype : heaptype}: + `%`(`REF.NULL`_instr(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_50: + `%`(`REF.IS_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_51: + `%`(`REF.AS_NON_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_52: + `%`(`REF.EQ`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_53{reftype : reftype}: + `%`(`REF.TEST`_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_54{reftype : reftype}: + `%`(`REF.CAST`_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_55{funcidx : funcidx}: + `%`(`REF.FUNC`_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_56: + `%`(`REF.I31`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_57{sx : sx}: + `%`(`I31.GET`_instr(sx)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_58{typeidx : typeidx}: + `%`(`STRUCT.NEW`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_59{typeidx : typeidx}: + `%`(`STRUCT.NEW_DEFAULT`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_60{`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx}: + `%`(`STRUCT.GET`_instr(`sx?`, typeidx, fieldidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, fieldidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_61{typeidx : typeidx, fieldidx : fieldidx}: + `%`(`STRUCT.SET`_instr(typeidx, fieldidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, fieldidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_62{typeidx : typeidx}: + `%`(`ARRAY.NEW`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_63{typeidx : typeidx}: + `%`(`ARRAY.NEW_DEFAULT`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_64{typeidx : typeidx, u32 : u32}: + `%`(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_65{typeidx : typeidx, dataidx : dataidx}: + `%`(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_66{typeidx : typeidx, elemidx : elemidx}: + `%`(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_67{`sx?` : sx?, typeidx : typeidx}: + `%`(`ARRAY.GET`_instr(`sx?`, typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_68{typeidx : typeidx}: + `%`(`ARRAY.SET`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_69: + `%`(`ARRAY.LEN`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_70{typeidx : typeidx}: + `%`(`ARRAY.FILL`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_71{typeidx : typeidx, typeidx_0 : typeidx}: + `%`(`ARRAY.COPY`_instr(typeidx, typeidx_0)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, typeidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_72{typeidx : typeidx, dataidx : dataidx}: + `%`(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_73{typeidx : typeidx, elemidx : elemidx}: + `%`(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_74: + `%`(`EXTERN.CONVERT_ANY`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_75: + `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_76{numtype : numtype, var_0 : num_}: + `%`(CONST_instr(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_77{numtype : numtype, var_0 : unop_}: + `%`(UNOP_instr(numtype, var_0)) + -- wf_unop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_78{numtype : numtype, var_0 : binop_}: + `%`(BINOP_instr(numtype, var_0)) + -- wf_binop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_79{numtype : numtype, var_0 : testop_}: + `%`(TESTOP_instr(numtype, var_0)) + -- wf_testop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_80{numtype : numtype, var_0 : relop_}: + `%`(RELOP_instr(numtype, var_0)) + -- wf_relop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_81{numtype_1 : numtype, numtype_2 : numtype, var_0 : cvtop__}: + `%`(CVTOP_instr(numtype_1, numtype_2, var_0)) + -- wf_cvtop__: `%%%`(numtype_2, numtype_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_82{vectype : vectype, var_0 : vec_}: + `%`(VCONST_instr(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_83{vectype : vectype, vvunop : vvunop}: + `%`(VVUNOP_instr(vectype, vvunop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_84{vectype : vectype, vvbinop : vvbinop}: + `%`(VVBINOP_instr(vectype, vvbinop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_85{vectype : vectype, vvternop : vvternop}: + `%`(VVTERNOP_instr(vectype, vvternop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_86{vectype : vectype, vvtestop : vvtestop}: + `%`(VVTESTOP_instr(vectype, vvtestop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_87{shape : shape, var_0 : vunop_}: + `%`(VUNOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vunop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_88{shape : shape, var_0 : vbinop_}: + `%`(VBINOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vbinop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_89{shape : shape, var_0 : vternop_}: + `%`(VTERNOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vternop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_90{shape : shape, var_0 : vtestop_}: + `%`(VTESTOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vtestop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_91{shape : shape, var_0 : vrelop_}: + `%`(VRELOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vrelop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_92{ishape : ishape, var_0 : vshiftop_}: + `%`(VSHIFTOP_instr(ishape, var_0)) + -- wf_ishape: `%`(ishape) + -- wf_vshiftop_: `%%`(ishape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_93{ishape : ishape}: + `%`(VBITMASK_instr(ishape)) + -- wf_ishape: `%`(ishape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_94{bshape : bshape, var_0 : vswizzlop_}: + `%`(VSWIZZLOP_instr(bshape, var_0)) + -- wf_bshape: `%`(bshape) + -- wf_vswizzlop_: `%%`(bshape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*}: + `%`(VSHUFFLE_instr(bshape, `laneidx*`)) + -- wf_bshape: `%`(bshape) + -- (wf_uN: `%%`(8, laneidx))*{laneidx <- `laneidx*`} + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim($proj_bshape_0(bshape).0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextunop__}: + `%`(VEXTUNOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextunop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_97{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextbinop__}: + `%`(VEXTBINOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextbinop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_98{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextternop__}: + `%`(VEXTTERNOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextternop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_99{ishape_1 : ishape, ishape_2 : ishape, sx : sx}: + `%`(VNARROW_instr(ishape_1, ishape_2, sx)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- if (($lsize($lanetype($proj_ishape_0(ishape_2).0)) = (2 * $lsize($lanetype($proj_ishape_0(ishape_1).0)))) /\ ((2 * $lsize($lanetype($proj_ishape_0(ishape_1).0))) <= 32)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_100{shape_1 : shape, shape_2 : shape, var_0 : vcvtop__}: + `%`(VCVTOP_instr(shape_1, shape_2, var_0)) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_2, shape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_101{shape : shape}: + `%`(VSPLAT_instr(shape)) + -- wf_shape: `%`(shape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_102{shape : shape, `sx?` : sx?, laneidx : laneidx}: + `%`(VEXTRACT_LANE_instr(shape, `sx?`, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) + -- if (|[I32_lanetype I64_lanetype F32_lanetype F64_lanetype]| > 0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_103{shape : shape, laneidx : laneidx}: + `%`(VREPLACE_LANE_instr(shape, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_104{u31 : u31}: + `%`(`REF.I31_NUM`_instr(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_105: + `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_106{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_instr(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_107{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_instr(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_108{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_instr(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_109{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_instr(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_110{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_instr(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_111{ref : ref}: + `%`(`REF.EXTERN`_instr(ref)) + -- wf_ref: `%`(ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_112{n : n, `instr*` : instr*, `instr*_0` : instr*}: + `%`(`LABEL_%{%}%`_instr(n, `instr*`, `instr*_0`)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(`instr*_0`))*{`instr*_0` <- `instr*_0`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_113{n : n, frame : frame, `instr*` : instr*}: + `%`(`FRAME_%{%}%`_instr(n, frame, `instr*`)) + -- wf_frame: `%`(frame) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_114{n : n, `catch*` : catch*, `instr*` : instr*}: + `%`(`HANDLER_%{%}%`_instr(n, `catch*`, `instr*`)) + -- (wf_catch: `%`(catch))*{catch <- `catch*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_115: + `%`(TRAP_instr) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax expr = instr* + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $memarg0 : memarg + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation memarg0_is_wf: `%`(ret_val : memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg0_is_wf_0{ret_val : memarg}: + `%`(ret_val) + -- if (ret_val = $memarg0) + -- wf_memarg: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $const(consttype : consttype, lit_ : lit_) : instr + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(I32_consttype, mk_lit__0_lit_(I32_numtype, c)) = CONST_instr(I32_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(I64_consttype, mk_lit__0_lit_(I64_numtype, c)) = CONST_instr(I64_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(F32_consttype, mk_lit__0_lit_(F32_numtype, c)) = CONST_instr(F32_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(F64_consttype, mk_lit__0_lit_(F64_numtype, c)) = CONST_instr(F64_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : uN}(V128_consttype, mk_lit__1_lit_(V128_vectype, c)) = VCONST_instr(V128_vectype, c) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation const_is_wf: `%%%`(consttype : consttype, lit_ : lit_, ret_val : instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule const_is_wf_0{consttype : consttype, lit_ : lit_, ret_val : instr}: + `%%%`(consttype, lit_, ret_val) + -- wf_lit_: `%%`($storagetype_consttype(consttype), lit_) + -- if (ret_val = $const(consttype, lit_)) + -- wf_instr: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_shape(shape : shape) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_shape_is_wf: `%%`(shape : shape, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_shape_is_wf_0{shape : shape, ret_val : free}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $free_shape(shape)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_blocktype: `%%`(blocktype, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_blocktype_case_0{`valtype?` : valtype?, `var_0?` : free?}: + `%%`(_RESULT_blocktype(valtype#504?{valtype#504 <- `valtype?`}), $free_opt(var_0?{var_0 <- `var_0?`})) + -- (fun_free_valtype: `%%`(valtype, var_0))?{var_0 <- `var_0?`, valtype <- `valtype?`} + -- if ((`var_0?` = ?()) <=> (`valtype?` = ?())) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_blocktype_case_1{typeidx : uN}: + `%%`(_IDX_blocktype(typeidx), $free_typeidx(typeidx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_blocktype_is_wf: `%%`(blocktype : blocktype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_blocktype_is_wf_0{blocktype : blocktype, ret_val : free, var_0 : free}: + `%%`(blocktype, ret_val) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_blocktype: `%%`(blocktype, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_catch(catch : catch) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : uN, labelidx : uN}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : uN, labelidx : uN}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : uN}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : uN}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_catch_is_wf: `%%`(catch : catch, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_catch_is_wf_0{catch : catch, ret_val : free}: + `%%`(catch, ret_val) + -- wf_catch: `%`(catch) + -- if (ret_val = $free_catch(catch)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 +relation fun_shift_labelidxs: `%%`(labelidx*, labelidx*) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_1{`labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([`%`_labelidx(0)] ++ labelidx'#1*{labelidx'#1 <- `labelidx'*`}, var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_2{labelidx : uN, `labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([labelidx] ++ labelidx'#2*{labelidx'#2 <- `labelidx'*`}, [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation fun_free_instr: `%%`(instr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_0: + `%%`(NOP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_1: + `%%`(UNREACHABLE_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_2: + `%%`(DROP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_3{`valtype*?` : valtype*?, `var_1*?` : free*?, `var_0?` : free?}: + `%%`(SELECT_instr(valtype#505*{valtype#505 <- `valtype*#1`}?{`valtype*#1` <- `valtype*?`}), $free_opt(var_0?{var_0 <- `var_0?`})) + -- (fun_free_valtype: `%%`(valtype, var_1))*{var_1 <- `var_1*`, valtype <- `valtype*`}?{`var_1*` <- `var_1*?`, `valtype*` <- `valtype*?`} + -- if ((`var_1*?` = ?()) <=> (`valtype*?` = ?())) + -- (if (|`var_1*`| = |`valtype*`|))?{`var_1*` <- `var_1*?`, `valtype*` <- `valtype*?`} + -- (fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0))?{`var_1*` <- `var_1*?`, var_0 <- `var_0?`} + -- if ((`var_1*?` = ?()) <=> (`var_0?` = ?())) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_4{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(BLOCK_instr(blocktype, instr#1*{instr#1 <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_5{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(LOOP_instr(blocktype, instr#2*{instr#2 <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_6{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, var_2 : free, var_1 : free, var_0 : free}: + `%%`(`IF%%ELSE%`_instr(blocktype, instr_1#1*{instr_1#1 <- `instr_1*`}, instr_2#1*{instr_2#1 <- `instr_2*`}), var_0 +++ var_1 +++ var_2) + -- fun_free_block: `%%`(instr_2*{instr_2 <- `instr_2*`}, var_2) + -- fun_free_block: `%%`(instr_1*{instr_1 <- `instr_1*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_7{labelidx : uN}: + `%%`(BR_instr(labelidx), $free_labelidx(labelidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_8{labelidx : uN}: + `%%`(BR_IF_instr(labelidx), $free_labelidx(labelidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_9{`labelidx*` : labelidx*, labelidx' : uN, var_0 : free}: + `%%`(BR_TABLE_instr(labelidx#1*{labelidx#1 <- `labelidx*`}, labelidx'), var_0 +++ $free_labelidx(labelidx')) + -- fun_free_list: `%%`($free_labelidx(labelidx)*{labelidx <- `labelidx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_10{labelidx : uN}: + `%%`(BR_ON_NULL_instr(labelidx), $free_labelidx(labelidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_11{labelidx : uN}: + `%%`(BR_ON_NON_NULL_instr(labelidx), $free_labelidx(labelidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_12{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2), $free_labelidx(labelidx) +++ var_0 +++ var_1) + -- fun_free_reftype: `%%`(reftype_2, var_1) + -- fun_free_reftype: `%%`(reftype_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_13{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2), $free_labelidx(labelidx) +++ var_0 +++ var_1) + -- fun_free_reftype: `%%`(reftype_2, var_1) + -- fun_free_reftype: `%%`(reftype_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_14{funcidx : uN}: + `%%`(CALL_instr(funcidx), $free_funcidx(funcidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_15{typeuse : typeuse, var_0 : free}: + `%%`(CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_16{tableidx : uN, typeuse : typeuse, var_0 : free}: + `%%`(CALL_INDIRECT_instr(tableidx, typeuse), $free_tableidx(tableidx) +++ var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_17: + `%%`(RETURN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_18{funcidx : uN}: + `%%`(RETURN_CALL_instr(funcidx), $free_funcidx(funcidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_19{typeuse : typeuse, var_0 : free}: + `%%`(RETURN_CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_20{tableidx : uN, typeuse : typeuse, var_0 : free}: + `%%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse), $free_tableidx(tableidx) +++ var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_21{tagidx : uN}: + `%%`(THROW_instr(tagidx), $free_tagidx(tagidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_22: + `%%`(THROW_REF_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_23{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*, `var_3*` : free*, var_2 : free, var_1 : free, var_0 : free}: + `%%`(TRY_TABLE_instr(blocktype, `%`_list(catch#1*{catch#1 <- `catch*`}), instr#3*{instr#3 <- `instr*`}), var_0 +++ var_1 +++ var_2) + -- (fun_free_instr: `%%`(instr, var_3))*{var_3 <- `var_3*`, instr <- `instr*`} + -- if (|`var_3*`| = |`instr*`|) + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- fun_free_list: `%%`($free_catch(catch)*{catch <- `catch*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_24{numtype : numtype, numlit : num_}: + `%%`(CONST_instr(numtype, numlit), $free_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_25{numtype : numtype, unop : unop_}: + `%%`(UNOP_instr(numtype, unop), $free_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_26{numtype : numtype, binop : binop_}: + `%%`(BINOP_instr(numtype, binop), $free_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_27{numtype : numtype, testop : testop_}: + `%%`(TESTOP_instr(numtype, testop), $free_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_28{numtype : numtype, relop : relop_}: + `%%`(RELOP_instr(numtype, relop), $free_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_29{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__}: + `%%`(CVTOP_instr(numtype_1, numtype_2, cvtop), $free_numtype(numtype_1) +++ $free_numtype(numtype_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_30{vectype : vectype, veclit : uN}: + `%%`(VCONST_instr(vectype, veclit), $free_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_31{vectype : vectype, vvunop : vvunop}: + `%%`(VVUNOP_instr(vectype, vvunop), $free_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_32{vectype : vectype, vvbinop : vvbinop}: + `%%`(VVBINOP_instr(vectype, vvbinop), $free_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_33{vectype : vectype, vvternop : vvternop}: + `%%`(VVTERNOP_instr(vectype, vvternop), $free_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_34{vectype : vectype, vvtestop : vvtestop}: + `%%`(VVTESTOP_instr(vectype, vvtestop), $free_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_35{shape : shape, vunop : vunop_}: + `%%`(VUNOP_instr(shape, vunop), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_36{shape : shape, vbinop : vbinop_}: + `%%`(VBINOP_instr(shape, vbinop), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_37{shape : shape, vternop : vternop_}: + `%%`(VTERNOP_instr(shape, vternop), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_38{shape : shape, vtestop : vtestop_}: + `%%`(VTESTOP_instr(shape, vtestop), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_39{shape : shape, vrelop : vrelop_}: + `%%`(VRELOP_instr(shape, vrelop), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_40{ishape : ishape, vshiftop : vshiftop_}: + `%%`(VSHIFTOP_instr(ishape, vshiftop), $free_shape($proj_ishape_0(ishape).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_41{ishape : ishape}: + `%%`(VBITMASK_instr(ishape), $free_shape($proj_ishape_0(ishape).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_42{bshape : bshape, vswizzlop : vswizzlop_}: + `%%`(VSWIZZLOP_instr(bshape, vswizzlop), $free_shape($proj_bshape_0(bshape).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_43{bshape : bshape, `laneidx*` : laneidx*}: + `%%`(VSHUFFLE_instr(bshape, laneidx#1*{laneidx#1 <- `laneidx*`}), $free_shape($proj_bshape_0(bshape).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_44{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__}: + `%%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop), $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_45{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__}: + `%%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop), $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_46{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__}: + `%%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop), $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_47{ishape_1 : ishape, ishape_2 : ishape, sx : sx}: + `%%`(VNARROW_instr(ishape_1, ishape_2, sx), $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_48{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__}: + `%%`(VCVTOP_instr(shape_1, shape_2, vcvtop), $free_shape(shape_1) +++ $free_shape(shape_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_49{shape : shape}: + `%%`(VSPLAT_instr(shape), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_50{shape : shape, `sx?` : sx?, laneidx : uN}: + `%%`(VEXTRACT_LANE_instr(shape, sx#45969?{sx#45969 <- `sx?`}, laneidx), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_51{shape : shape, laneidx : uN}: + `%%`(VREPLACE_LANE_instr(shape, laneidx), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_52{heaptype : heaptype, var_0 : free}: + `%%`(`REF.NULL`_instr(heaptype), var_0) + -- fun_free_heaptype: `%%`(heaptype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_53: + `%%`(`REF.IS_NULL`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_54: + `%%`(`REF.AS_NON_NULL`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_55: + `%%`(`REF.EQ`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_56{reftype : reftype, var_0 : free}: + `%%`(`REF.TEST`_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_57{reftype : reftype, var_0 : free}: + `%%`(`REF.CAST`_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_58{funcidx : uN}: + `%%`(`REF.FUNC`_instr(funcidx), $free_funcidx(funcidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_59: + `%%`(`REF.I31`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_60{sx : sx}: + `%%`(`I31.GET`_instr(sx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_61{typeidx : uN}: + `%%`(`STRUCT.NEW`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_62{typeidx : uN}: + `%%`(`STRUCT.NEW_DEFAULT`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_63{`sx?` : sx?, typeidx : uN, u32 : uN}: + `%%`(`STRUCT.GET`_instr(sx#45970?{sx#45970 <- `sx?`}, typeidx, u32), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_64{typeidx : uN, u32 : uN}: + `%%`(`STRUCT.SET`_instr(typeidx, u32), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_65{typeidx : uN}: + `%%`(`ARRAY.NEW`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_66{typeidx : uN}: + `%%`(`ARRAY.NEW_DEFAULT`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_67{typeidx : uN, u32 : uN}: + `%%`(`ARRAY.NEW_FIXED`_instr(typeidx, u32), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_68{typeidx : uN, dataidx : uN}: + `%%`(`ARRAY.NEW_DATA`_instr(typeidx, dataidx), $free_typeidx(typeidx) +++ $free_dataidx(dataidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_69{typeidx : uN, elemidx : uN}: + `%%`(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx), $free_typeidx(typeidx) +++ $free_elemidx(elemidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_70{`sx?` : sx?, typeidx : uN}: + `%%`(`ARRAY.GET`_instr(sx#45971?{sx#45971 <- `sx?`}, typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_71{typeidx : uN}: + `%%`(`ARRAY.SET`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_72: + `%%`(`ARRAY.LEN`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_73{typeidx : uN}: + `%%`(`ARRAY.FILL`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_74{typeidx_1 : uN, typeidx_2 : uN}: + `%%`(`ARRAY.COPY`_instr(typeidx_1, typeidx_2), $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_75{typeidx : uN, dataidx : uN}: + `%%`(`ARRAY.INIT_DATA`_instr(typeidx, dataidx), $free_typeidx(typeidx) +++ $free_dataidx(dataidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_76{typeidx : uN, elemidx : uN}: + `%%`(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx), $free_typeidx(typeidx) +++ $free_elemidx(elemidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_77: + `%%`(`EXTERN.CONVERT_ANY`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_78: + `%%`(`ANY.CONVERT_EXTERN`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_79{localidx : uN}: + `%%`(`LOCAL.GET`_instr(localidx), $free_localidx(localidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_80{localidx : uN}: + `%%`(`LOCAL.SET`_instr(localidx), $free_localidx(localidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_81{localidx : uN}: + `%%`(`LOCAL.TEE`_instr(localidx), $free_localidx(localidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_82{globalidx : uN}: + `%%`(`GLOBAL.GET`_instr(globalidx), $free_globalidx(globalidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_83{globalidx : uN}: + `%%`(`GLOBAL.SET`_instr(globalidx), $free_globalidx(globalidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_84{tableidx : uN}: + `%%`(`TABLE.GET`_instr(tableidx), $free_tableidx(tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_85{tableidx : uN}: + `%%`(`TABLE.SET`_instr(tableidx), $free_tableidx(tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_86{tableidx : uN}: + `%%`(`TABLE.SIZE`_instr(tableidx), $free_tableidx(tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_87{tableidx : uN}: + `%%`(`TABLE.GROW`_instr(tableidx), $free_tableidx(tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_88{tableidx : uN}: + `%%`(`TABLE.FILL`_instr(tableidx), $free_tableidx(tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_89{tableidx_1 : uN, tableidx_2 : uN}: + `%%`(`TABLE.COPY`_instr(tableidx_1, tableidx_2), $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_90{tableidx : uN, elemidx : uN}: + `%%`(`TABLE.INIT`_instr(tableidx, elemidx), $free_tableidx(tableidx) +++ $free_elemidx(elemidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_91{elemidx : uN}: + `%%`(`ELEM.DROP`_instr(elemidx), $free_elemidx(elemidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_92{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg}: + `%%`(LOAD_instr(numtype, loadop#1?{loadop#1 <- `loadop?`}, memidx, memarg), $free_numtype(numtype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_93{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg}: + `%%`(STORE_instr(numtype, storeop#1?{storeop#1 <- `storeop?`}, memidx, memarg), $free_numtype(numtype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_94{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg}: + `%%`(VLOAD_instr(vectype, vloadop#1?{vloadop#1 <- `vloadop?`}, memidx, memarg), $free_vectype(vectype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_95{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}: + `%%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx), $free_vectype(vectype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_96{vectype : vectype, memidx : uN, memarg : memarg}: + `%%`(VSTORE_instr(vectype, memidx, memarg), $free_vectype(vectype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_97{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}: + `%%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx), $free_vectype(vectype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_98{memidx : uN}: + `%%`(`MEMORY.SIZE`_instr(memidx), $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_99{memidx : uN}: + `%%`(`MEMORY.GROW`_instr(memidx), $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_100{memidx : uN}: + `%%`(`MEMORY.FILL`_instr(memidx), $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_101{memidx_1 : uN, memidx_2 : uN}: + `%%`(`MEMORY.COPY`_instr(memidx_1, memidx_2), $free_memidx(memidx_1) +++ $free_memidx(memidx_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_102{memidx : uN, dataidx : uN}: + `%%`(`MEMORY.INIT`_instr(memidx, dataidx), $free_memidx(memidx) +++ $free_dataidx(dataidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_103{dataidx : uN}: + `%%`(`DATA.DROP`_instr(dataidx), $free_dataidx(dataidx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation fun_free_block: `%%`(instr*, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule fun_free_block_case_0{`instr*` : instr*, `var_5*` : free*, `var_4*` : free*, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : labelidx*}: + `%%`(instr#4*{instr#4 <- `instr*`}, free[LABELS_free = var_0]) + -- let{free : free} free = var_1 + -- wf_free: `%`(var_3) + -- (wf_free: `%`(var_5))*{var_5 <- `var_5*`} + -- (fun_free_instr: `%%`(instr#7, var_5))*{var_5 <- `var_5*`, instr#7 <- `instr*`} + -- if (|`var_5*`| = |`instr*`|) + -- (fun_free_instr: `%%`(instr#6, var_4))*{var_4 <- `var_4*`, instr#6 <- `instr*`} + -- if (|`var_4*`| = |`instr*`|) + -- fun_free_list: `%%`(var_4*{var_4 <- `var_4*`}, var_3) + -- (fun_free_instr: `%%`(instr#5, var_2))*{var_2 <- `var_2*`, instr#5 <- `instr*`} + -- if (|`var_2*`| = |`instr*`|) + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_shift_labelidxs: `%%`(free.LABELS_free, var_0) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation free_instr_is_wf: `%%`(instr : instr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule free_instr_is_wf_0{instr : instr, ret_val : free, var_0 : free}: + `%%`(instr, ret_val) + -- wf_instr: `%`(instr) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_instr: `%%`(instr, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation free_block_is_wf: `%%`(var_0 : instr*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule free_block_is_wf_0{var_0 : instr*, ret_val : free, var_1 : free}: + `%%`(var_0, ret_val) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_free: `%`(ret_val) + -- fun_free_block: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_expr: `%%`(expr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_expr_case_0{`instr*` : instr*, `var_1*` : free*, var_0 : free}: + `%%`(instr#8*{instr#8 <- `instr*`}, var_0) + -- (fun_free_instr: `%%`(instr, var_1))*{var_1 <- `var_1*`, instr <- `instr*`} + -- if (|`var_1*`| = |`instr*`|) + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_expr_is_wf: `%%`(expr : expr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_expr_is_wf_0{expr : expr, ret_val : free, var_0 : free}: + `%%`(expr, ret_val) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_expr: `%%`(expr, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elemmode = + | ACTIVE(tableidx : tableidx, expr : expr) + | PASSIVE + | DECLARE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elemmode: `%`(elemmode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_0{tableidx : tableidx, expr : expr}: + `%`(ACTIVE_elemmode(tableidx, expr)) + -- wf_uN: `%%`(32, tableidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_1: + `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_2: + `%`(DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax datamode = + | ACTIVE(memidx : memidx, expr : expr) + | PASSIVE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_datamode: `%`(datamode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_0{memidx : memidx, expr : expr}: + `%`(ACTIVE_datamode(memidx, expr)) + -- wf_uN: `%%`(32, memidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_1: + `%`(PASSIVE_datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax type = + | TYPE(rectype : rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax tag = + | TAG(tagtype : tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_tag: `%`(tag) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule tag_case_0{tagtype : tagtype}: + `%`(TAG_tag(tagtype)) + -- wf_typeuse: `%`(tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax global = + | GLOBAL(globaltype : globaltype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_global: `%`(global) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule global_case_0{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax mem = + | MEMORY(memtype : memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_mem: `%`(mem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule mem_case_0{memtype : memtype}: + `%`(MEMORY_mem(memtype)) + -- wf_memtype: `%`(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax table = + | TABLE(tabletype : tabletype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_table: `%`(table) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule table_case_0{tabletype : tabletype, expr : expr}: + `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax data = + | DATA(`byte*` : byte*, datamode : datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_data: `%`(data) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule data_case_0{`byte*` : byte*, datamode : datamode}: + `%`(DATA_data(`byte*`, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax local = + | LOCAL(valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_local: `%`(local) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule local_case_0{valtype : valtype}: + `%`(LOCAL_local(valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax func = + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_func: `%`(func) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule func_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_func(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elem = + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elem: `%`(elem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_elem(reftype, `expr*`, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax start = + | START(funcidx : funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_start: `%`(start) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule start_case_0{funcidx : funcidx}: + `%`(START_start(funcidx)) + -- wf_uN: `%%`(32, funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax import = + | IMPORT(name : name, name : name, externtype : externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_import: `%`(import) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule import_case_0{name : name, name_0 : name, externtype : externtype}: + `%`(IMPORT_import(name, name_0, externtype)) + -- wf_name: `%`(name) + -- wf_name: `%`(name_0) + -- wf_externtype: `%`(externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax export = + | EXPORT(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_export: `%`(export) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule export_case_0{name : name, externidx : externidx}: + `%`(EXPORT_export(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax module = + | MODULE(list(syntax type), list(syntax import), list(syntax tag), list(syntax global), list(syntax mem), list(syntax table), list(syntax func), list(syntax data), list(syntax elem), `start?` : start?, list(syntax export)) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_module: `%`(module) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule module_case_0{var_0 : list(syntax type), var_1 : list(syntax import), var_2 : list(syntax tag), var_3 : list(syntax global), var_4 : list(syntax mem), var_5 : list(syntax table), var_6 : list(syntax func), var_7 : list(syntax data), var_8 : list(syntax elem), `start?` : start?, var_9 : list(syntax export)}: + `%`(MODULE_module(var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, `start?`, var_9)) + -- (wf_start: `%`(start))?{start <- `start?`} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_type: `%%`(type, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_type_case_0{rectype : rectype, var_0 : free}: + `%%`(TYPE_type(rectype), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_type_is_wf: `%%`(type : type, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_type_is_wf_0{type : type, ret_val : free, var_0 : free}: + `%%`(type, ret_val) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_type: `%%`(type, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_tag: `%%`(tag, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_tag_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_tag(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_tag_is_wf: `%%`(tag : tag, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_tag_is_wf_0{tag : tag, ret_val : free, var_0 : free}: + `%%`(tag, ret_val) + -- wf_tag: `%`(tag) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_tag: `%%`(tag, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_global: `%%`(global, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_global_case_0{globaltype : globaltype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(GLOBAL_global(globaltype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_globaltype: `%%`(globaltype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_global_is_wf: `%%`(global : global, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_global_is_wf_0{global : global, ret_val : free, var_0 : free}: + `%%`(global, ret_val) + -- wf_global: `%`(global) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_global: `%%`(global, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_mem(mem : mem) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_mem_is_wf: `%%`(mem : mem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_mem_is_wf_0{mem : mem, ret_val : free}: + `%%`(mem, ret_val) + -- wf_mem: `%`(mem) + -- if (ret_val = $free_mem(mem)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_table: `%%`(table, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_table_case_0{tabletype : tabletype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(TABLE_table(tabletype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_tabletype: `%%`(tabletype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_table_is_wf: `%%`(table : table, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_table_is_wf_0{table : table, ret_val : free, var_0 : free}: + `%%`(table, ret_val) + -- wf_table: `%`(table) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_table: `%%`(table, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_local: `%%`(local, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_local_case_0{t : valtype, var_0 : free}: + `%%`(LOCAL_local(t), var_0) + -- fun_free_valtype: `%%`(t, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_local_is_wf: `%%`(local : local, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_local_is_wf_0{local : local, ret_val : free, var_0 : free}: + `%%`(local, ret_val) + -- wf_local: `%`(local) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_local: `%%`(local, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_func: `%%`(func, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_func_case_0{typeidx : uN, `local*` : local*, expr : instr*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(FUNC_func(typeidx, local#1*{local#1 <- `local*`}, expr), $free_typeidx(typeidx) +++ var_0 +++ var_2[LOCALS_free = []]) + -- fun_free_block: `%%`(expr, var_2) + -- (fun_free_local: `%%`(local, var_1))*{var_1 <- `var_1*`, local <- `local*`} + -- if (|`var_1*`| = |`local*`|) + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_func_is_wf: `%%`(func : func, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_func_is_wf_0{func : func, ret_val : free, var_0 : free}: + `%%`(func, ret_val) + -- wf_func: `%`(func) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_func: `%%`(func, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_datamode: `%%`(datamode, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_datamode_case_0{memidx : uN, expr : instr*, var_0 : free}: + `%%`(ACTIVE_datamode(memidx, expr), $free_memidx(memidx) +++ var_0) + -- fun_free_expr: `%%`(expr, var_0) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_datamode_case_1: + `%%`(PASSIVE_datamode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_datamode_is_wf: `%%`(datamode : datamode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_datamode_is_wf_0{datamode : datamode, ret_val : free, var_0 : free}: + `%%`(datamode, ret_val) + -- wf_datamode: `%`(datamode) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_datamode: `%%`(datamode, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_data: `%%`(data, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_data_case_0{`byte*` : byte*, datamode : datamode, var_0 : free}: + `%%`(DATA_data(byte#1*{byte#1 <- `byte*`}, datamode), var_0) + -- fun_free_datamode: `%%`(datamode, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_data_is_wf: `%%`(data : data, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_data_is_wf_0{data : data, ret_val : free, var_0 : free}: + `%%`(data, ret_val) + -- wf_data: `%`(data) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_data: `%%`(data, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_elemmode: `%%`(elemmode, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_0{tableidx : uN, expr : instr*, var_0 : free}: + `%%`(ACTIVE_elemmode(tableidx, expr), $free_tableidx(tableidx) +++ var_0) + -- fun_free_expr: `%%`(expr, var_0) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_1: + `%%`(PASSIVE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_2: + `%%`(DECLARE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elemmode_is_wf: `%%`(elemmode : elemmode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elemmode_is_wf_0{elemmode : elemmode, ret_val : free, var_0 : free}: + `%%`(elemmode, ret_val) + -- wf_elemmode: `%`(elemmode) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_elemmode: `%%`(elemmode, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_elem: `%%`(elem, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(ELEM_elem(reftype, expr#358*{expr#358 <- `expr*`}, elemmode), var_0 +++ var_1 +++ var_3) + -- fun_free_elemmode: `%%`(elemmode, var_3) + -- (fun_free_expr: `%%`(expr, var_2))*{var_2 <- `var_2*`, expr <- `expr*`} + -- if (|`var_2*`| = |`expr*`|) + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elem_is_wf: `%%`(elem : elem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elem_is_wf_0{elem : elem, ret_val : free, var_0 : free}: + `%%`(elem, ret_val) + -- wf_elem: `%`(elem) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_elem: `%%`(elem, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_start(start : start) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_start_is_wf: `%%`(start : start, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_start_is_wf_0{start : start, ret_val : free}: + `%%`(start, ret_val) + -- wf_start: `%`(start) + -- if (ret_val = $free_start(start)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_import: `%%`(import, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_import_case_0{name_1 : name, name_2 : name, externtype : externtype, var_0 : free}: + `%%`(IMPORT_import(name_1, name_2, externtype), var_0) + -- fun_free_externtype: `%%`(externtype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_import_is_wf: `%%`(import : import, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_import_is_wf_0{import : import, ret_val : free, var_0 : free}: + `%%`(import, ret_val) + -- wf_import: `%`(import) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_import: `%%`(import, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_export(export : export) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_export_is_wf: `%%`(export : export, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_export_is_wf_0{export : export, ret_val : free}: + `%%`(export, ret_val) + -- wf_export: `%`(export) + -- if (ret_val = $free_export(export)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_module: `%%`(module, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_module_case_0{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, var_17 : free, `var_16*` : free*, var_15 : free, `var_14*` : free*, var_13 : free, `var_12*` : free*, var_11 : free, `var_10*` : free*, var_9 : free, `var_8*` : free*, var_7 : free, var_6 : free, `var_5*` : free*, var_4 : free, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(MODULE_module(`%`_list(type#1*{type#1 <- `type*`}), `%`_list(import#1*{import#1 <- `import*`}), `%`_list(tag#1*{tag#1 <- `tag*`}), `%`_list(global#1*{global#1 <- `global*`}), `%`_list(mem#1*{mem#1 <- `mem*`}), `%`_list(table#1*{table#1 <- `table*`}), `%`_list(func#1*{func#1 <- `func*`}), `%`_list(data#1*{data#1 <- `data*`}), `%`_list(elem#1*{elem#1 <- `elem*`}), start#1?{start#1 <- `start?`}, `%`_list(export#1*{export#1 <- `export*`})), var_0 +++ var_2 +++ var_4 +++ var_6 +++ var_7 +++ var_9 +++ var_11 +++ var_13 +++ $free_opt($free_start(start)?{start <- `start?`}) +++ var_15 +++ var_17) + -- fun_free_list: `%%`($free_export(export)*{export <- `export*`}, var_17) + -- (fun_free_import: `%%`(import, var_16))*{var_16 <- `var_16*`, import <- `import*`} + -- if (|`var_16*`| = |`import*`|) + -- fun_free_list: `%%`(var_16*{var_16 <- `var_16*`}, var_15) + -- (fun_free_elem: `%%`(elem, var_14))*{var_14 <- `var_14*`, elem <- `elem*`} + -- if (|`var_14*`| = |`elem*`|) + -- fun_free_list: `%%`(var_14*{var_14 <- `var_14*`}, var_13) + -- (fun_free_data: `%%`(data, var_12))*{var_12 <- `var_12*`, data <- `data*`} + -- if (|`var_12*`| = |`data*`|) + -- fun_free_list: `%%`(var_12*{var_12 <- `var_12*`}, var_11) + -- (fun_free_func: `%%`(func, var_10))*{var_10 <- `var_10*`, func <- `func*`} + -- if (|`var_10*`| = |`func*`|) + -- fun_free_list: `%%`(var_10*{var_10 <- `var_10*`}, var_9) + -- (fun_free_table: `%%`(table, var_8))*{var_8 <- `var_8*`, table <- `table*`} + -- if (|`var_8*`| = |`table*`|) + -- fun_free_list: `%%`(var_8*{var_8 <- `var_8*`}, var_7) + -- fun_free_list: `%%`($free_mem(mem)*{mem <- `mem*`}, var_6) + -- (fun_free_global: `%%`(global, var_5))*{var_5 <- `var_5*`, global <- `global*`} + -- if (|`var_5*`| = |`global*`|) + -- fun_free_list: `%%`(var_5*{var_5 <- `var_5*`}, var_4) + -- (fun_free_tag: `%%`(tag, var_3))*{var_3 <- `var_3*`, tag <- `tag*`} + -- if (|`var_3*`| = |`tag*`|) + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- (fun_free_type: `%%`(type, var_1))*{var_1 <- `var_1*`, type <- `type*`} + -- if (|`var_1*`| = |`type*`|) + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_module_is_wf: `%%`(module : module, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_module_is_wf_0{module : module, ret_val : free, var_0 : free}: + `%%`(module, ret_val) + -- wf_module: `%`(module) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_module: `%%`(module, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_funcidx_module: `%%`(module, funcidx*) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_funcidx_module_case_0{module : module, var_0 : free}: + `%%`(module, var_0.FUNCS_free) + -- fun_free_module: `%%`(module, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_dataidx_funcs: `%%`(func*, dataidx*) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_dataidx_funcs_case_0{`func*` : func*, `var_1*` : free*, var_0 : free}: + `%%`(func#2*{func#2 <- `func*`}, var_0.DATAS_free) + -- (fun_free_func: `%%`(func, var_1))*{var_1 <- `var_1*`, func <- `func*`} + -- if (|`var_1*`| = |`func*`|) + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax init = + | SET + | UNSET + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax localtype = + | `%%`(init : init, valtype : valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_localtype: `%`(localtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule localtype_case_0{init : init, valtype : valtype}: + `%`(`%%`_localtype(init, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax instrtype = + | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : resulttype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_instrtype: `%`(instrtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule instrtype_case_0{resulttype : resulttype, `localidx*` : localidx*, resulttype_0 : resulttype}: + `%`(`%->_%%`_instrtype(resulttype, `localidx*`, resulttype_0)) + -- (wf_uN: `%%`(32, localidx))*{localidx <- `localidx*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax context = +{ + TYPES deftype*, + TAGS tagtype*, + GLOBALS globaltype*, + MEMS memtype*, + TABLES tabletype*, + FUNCS deftype*, + DATAS datatype*, + ELEMS elemtype*, + LOCALS localtype*, + LABELS resulttype*, + RETURN resulttype?, + REFS funcidx*, + RECS subtype* +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_context: `%`(context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule context_case_{var_0 : deftype*, var_1 : tagtype*, var_2 : globaltype*, var_3 : memtype*, var_4 : tabletype*, var_5 : deftype*, var_6 : datatype*, var_7 : elemtype*, var_8 : localtype*, var_9 : resulttype*, var_10 : resulttype?, var_11 : funcidx*, var_12 : subtype*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, RETURN var_10, REFS var_11, RECS var_12}) + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- (wf_globaltype: `%`(var_2))*{var_2 <- var_2} + -- (wf_memtype: `%`(var_3))*{var_3 <- var_3} + -- (wf_tabletype: `%`(var_4))*{var_4 <- var_4} + -- (wf_reftype: `%`(var_7))*{var_7 <- var_7} + -- (wf_localtype: `%`(var_8))*{var_8 <- var_8} + -- (wf_uN: `%%`(32, var_11))*{var_11 <- var_11} + -- (wf_subtype: `%`(var_12))*{var_12 <- var_12} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_with_locals_before_fun_with_locals_case_2: `%%%`(context, localidx*, localtype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_with_locals_case_1{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, var_0 : context?}: + `%%%`(C, [x_1] ++ x#1*{x#1 <- `x*`}, [lct_1] ++ lct#1*{lct#1 <- `lct*`}) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_with_locals_case_0{C : context}: + `%%%`(C, [], []) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation fun_with_locals: `%%%%`(context, localidx*, localtype*, context?) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_0{C : context}: + `%%%%`(C, [], [], ?(C)) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_1{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, var_0 : context?}: + `%%%%`(C, [x_1] ++ x#1*{x#1 <- `x*`}, [lct_1] ++ lct#1*{lct#1 <- `lct*`}, var_0) + -- fun_with_locals: `%%%%`(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}, var_0) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_2{x0 : context, x1 : localidx*, x2 : localtype*}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_with_locals_before_fun_with_locals_case_2: `%%%`(x0, x1, x2) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation with_locals_is_wf: `%%%%`(context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule with_locals_is_wf_0{context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context, var_2 : context?}: + `%%%%`(context, var_0, var_1, ret_val) + -- wf_context: `%`(context) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_localtype: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !(var_2)) + -- if (var_2 =/= ?()) + -- wf_context: `%`(ret_val) + -- fun_with_locals: `%%%%`(context, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 +relation fun_clos_deftypes: `%%`(deftype*, deftype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 + rule fun_clos_deftypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 + rule fun_clos_deftypes_case_1{`dt*` : deftype*, dt_n : deftype, var_1 : deftype*, var_0 : deftype}: + `%%`(dt#2*{dt#2 <- `dt*`} ++ [dt_n], dt'*{dt' <- `dt'*`} ++ [var_0]) + -- let{`dt'*` : deftype*} dt'#1*{dt'#1 <- `dt'*`} = var_1 + -- fun_clos_deftypes: `%%`(dt#3*{dt#3 <- `dt*`}, var_1) + -- fun_subst_all_deftype: `%%%`(dt_n, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_valtype: `%%%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_valtype_case_0{C : context, t : valtype, var_1 : deftype*, var_0 : valtype}: + `%%%`(C, t, var_0) + -- let{`dt*` : deftype*} dt#4*{dt#4 <- `dt*`} = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_valtype_is_wf: `%%%`(context : context, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_valtype_is_wf_0{context : context, valtype : valtype, ret_val : valtype, var_0 : valtype}: + `%%%`(context, valtype, ret_val) + -- wf_context: `%`(context) + -- wf_valtype: `%`(valtype) + -- if (ret_val = var_0) + -- wf_valtype: `%`(ret_val) + -- fun_clos_valtype: `%%%`(context, valtype, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_deftype: `%%%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_deftype_case_0{C : context, dt : deftype, var_1 : deftype*, var_0 : deftype}: + `%%%`(C, dt, var_0) + -- let{`dt'*` : deftype*} dt'#2*{dt'#2 <- `dt'*`} = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_deftype: `%%%`(dt, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_tagtype: `%%%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_tagtype_case_0{C : context, jt : typeuse, var_1 : deftype*, var_0 : tagtype}: + `%%%`(C, jt, var_0) + -- let{`dt*` : deftype*} dt#5*{dt#5 <- `dt*`} = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_tagtype: `%%%`(jt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_externtype: `%%%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_externtype_case_0{C : context, xt : externtype, var_1 : deftype*, var_0 : externtype}: + `%%%`(C, xt, var_0) + -- let{`dt*` : deftype*} dt#6*{dt#6 <- `dt*`} = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_externtype: `%%%`(xt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_externtype_is_wf: `%%%`(context : context, externtype : externtype, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_externtype_is_wf_0{context : context, externtype : externtype, ret_val : externtype, var_0 : externtype}: + `%%%`(context, externtype, ret_val) + -- wf_context: `%`(context) + -- wf_externtype: `%`(externtype) + -- if (ret_val = var_0) + -- wf_externtype: `%`(ret_val) + -- fun_clos_externtype: `%%%`(context, externtype, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_moduletype: `%%%`(context, moduletype, moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_moduletype_case_0{C : context, mmt : moduletype, var_1 : deftype*, var_0 : moduletype}: + `%%%`(C, mmt, var_0) + -- let{`dt*` : deftype*} dt#7*{dt#7 <- `dt*`} = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_moduletype: `%%%`(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_moduletype_is_wf: `%%%`(context : context, moduletype : moduletype, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_moduletype_is_wf_0{context : context, moduletype : moduletype, ret_val : moduletype, var_0 : moduletype}: + `%%%`(context, moduletype, ret_val) + -- wf_context: `%`(context) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = var_0) + -- wf_moduletype: `%`(ret_val) + -- fun_clos_moduletype: `%%%`(context, moduletype, var_0) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Numtype_ok: `%|-%:OK`(context, numtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, numtype : numtype}: + `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Vectype_ok: `%|-%:OK`(context, vectype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, vectype : vectype}: + `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypenat = + | OK(nat) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Packtype_ok: `%|-%:OK`(context, packtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, packtype : packtype}: + `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, packtype : packtype}: + `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, numtype : numtype}: + `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand: `%~~%`(deftype, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*, var_0 : subtype}: + `%~~%`(deftype, comptype) + -- if (var_0 = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- wf_subtype: `%`(var_0) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- fun_unrolldt: `%%`(deftype, var_0) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, vectype : vectype}: + `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $before(typeuse : typeuse, nat : nat) : bool + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{j : nat, i : nat}(REC_typeuse(j), i) = (j < i) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{typeuse : typeuse, i : nat}(typeuse, i) = true + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation fun_unrollht_: `%%%`(context, heaptype, subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht__case_0{rectype : rectype, n : n, C : context, var_0 : subtype}: + `%%%`(C, _DEF_heaptype(rectype, n), var_0) + -- fun_unrolldt: `%%`(_DEF_deftype(rectype, n), var_0) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht__case_1{C : context, typeidx : uN, var_0 : subtype}: + `%%%`(C, _IDX_heaptype(typeidx), var_0) + -- fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(typeidx).0], var_0) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht__case_2{C : context, i : nat}: + `%%%`(C, REC_heaptype(i), C.RECS_context[i]) + -- if (i < |C.RECS_context|) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation unrollht__is_wf: `%%%`(context : context, heaptype : heaptype, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule unrollht__is_wf_0{context : context, heaptype : heaptype, ret_val : subtype, var_0 : subtype}: + `%%%`(context, heaptype, ret_val) + -- wf_context: `%`(context) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = var_0) + -- wf_subtype: `%`(ret_val) + -- fun_unrollht_: `%%%`(context, heaptype, var_0) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 +relation Heaptype_ok: `%|-%:OK`(context, heaptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 + rule abs{C : context, absheaptype : absheaptype}: + `%|-%:OK`(C, $heaptype_absheaptype(absheaptype)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 + rule typeuse{C : context, typeuse : typeuse}: + `%|-%:OK`(C, $heaptype_typeuse(typeuse)) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 +relation Reftype_ok: `%|-%:OK`(context, reftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:30.1-32.37 + rule _{C : context, heaptype : heaptype}: + `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- Heaptype_ok: `%|-%:OK`(C, heaptype) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 +relation Valtype_ok: `%|-%:OK`(context, valtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:34.1-36.35 + rule num{C : context, numtype : numtype}: + `%|-%:OK`(C, $valtype_numtype(numtype)) + -- Numtype_ok: `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 + rule vec{C : context, vectype : vectype}: + `%|-%:OK`(C, $valtype_vectype(vectype)) + -- Vectype_ok: `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 + rule ref{C : context, reftype : reftype}: + `%|-%:OK`(C, $valtype_reftype(reftype)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 +relation Typeuse_ok: `%|-%:OK`(context, typeuse) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:106.1-108.30 + rule typeidx{C : context, typeidx : typeidx, dt : deftype}: + `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 + rule rec{C : context, i : n, st : subtype}: + `%|-%:OK`(C, REC_typeuse(i)) + -- if (C.RECS_context[i] = st) + -- if (i < |C.RECS_context|) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 + rule deftype{C : context, deftype : deftype}: + `%|-%:OK`(C, $typeuse_deftype(deftype)) + -- Deftype_ok: `%|-%:OK`(C, deftype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 +relation Resulttype_ok: `%|-%:OK`(context, resulttype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:60.1-62.32 + rule _{C : context, `t*` : valtype*}: + `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 +relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:130.1-132.43 + rule _{C : context, storagetype : storagetype}: + `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- Storagetype_ok: `%|-%:OK`(C, storagetype) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 +relation Storagetype_ok: `%|-%:OK`(context, storagetype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:122.1-124.35 + rule val{C : context, valtype : valtype}: + `%|-%:OK`(C, $storagetype_valtype(valtype)) + -- Valtype_ok: `%|-%:OK`(C, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 + rule pack{C : context, packtype : packtype}: + `%|-%:OK`(C, $storagetype_packtype(packtype)) + -- Packtype_ok: `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 +relation Comptype_ok: `%|-%:OK`(context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:135.1-137.42 + rule struct{C : context, `fieldtype*` : fieldtype*}: + `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 + rule array{C : context, fieldtype : fieldtype}: + `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 + rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 +relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:167.1-176.49 + rule _{C : context, `typeuse*` : typeuse*, comptype : comptype, i : nat, `comptype'*` : comptype*, `typeuse'**` : typeuse**, `var_0*` : subtype*}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype), OK_oktypenat(i)) + -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) + -- (Typeuse_ok: `%|-%:OK`(C, typeuse))*{typeuse <- `typeuse*`} + -- (if $before(typeuse, i))*{typeuse <- `typeuse*`} + -- (if (var_0 = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} + -- if (|`var_0*`| = |`comptype'*`|) + -- if (|`var_0*`| = |`typeuse'**`|) + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- wf_context: `%`(C) + -- (wf_subtype: `%`(var_0))*{var_0 <- `var_0*`} + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} + -- if (|`comptype'*`| = |`typeuse'**`|) + -- (fun_unrollht_: `%%%`(C, $heaptype_typeuse(typeuse), var_0))*{var_0 <- `var_0*`, typeuse <- `typeuse*`} + -- if (|`var_0*`| = |`typeuse*`|) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 +relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 + rule empty{C : context, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypenat(i)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypenat(i)) + -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) + -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypenat((i + 1))) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 +relation Deftype_ok: `%|-%:OK`(context, deftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:197.1-201.14 + rule _{C : context, rectype : rectype, i : n, n : n, `subtype*` : subtype*}: + `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) + -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) + -- if (i < n) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}}) + -- if (n = |`subtype*`|) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 +relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:181.1-183.41 + rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: + `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} + -- if (|`ft_1*`| = |`ft_2*`|) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 + rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: + `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 + rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: + `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 +relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype, var_1 : deftype, var_0 : deftype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if (var_0 = var_1) + -- wf_context: `%`(C) + -- fun_clos_deftype: `%%%`(C, deftype_2, var_1) + -- fun_clos_deftype: `%%%`(C, deftype_1, var_0) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat, var_0 : subtype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if (var_0 = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) + -- if (i < |typeuse*{typeuse <- `typeuse*`}|) + -- wf_context: `%`(C) + -- wf_subtype: `%`(var_0) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- fun_unrolldt: `%%`(deftype_1, var_0) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 +relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 + rule refl{C : context, heaptype : heaptype}: + `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 + rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: + `%|-%<:%`(C, heaptype_1, heaptype_2) + -- Heaptype_ok: `%|-%:OK`(C, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 + rule `eq-any`{C : context}: + `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 + rule `i31-eq`{C : context}: + `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 + rule `struct-eq`{C : context}: + `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 + rule `array-eq`{C : context}: + `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 + rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, $heaptype_deftype(deftype), STRUCT_heaptype) + -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 + rule array{C : context, deftype : deftype, fieldtype : fieldtype}: + `%|-%<:%`(C, $heaptype_deftype(deftype), ARRAY_heaptype) + -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 + rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, $heaptype_deftype(deftype), FUNC_heaptype) + -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 + rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 + rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: + `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 + rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: + `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 + rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) + -- if (i < |C.RECS_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 + rule `rec-array`{C : context, i : n, `final?` : final?, fieldtype : fieldtype}: + `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + -- if (i < |C.RECS_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 + rule `rec-func`{C : context, i : n, `final?` : final?, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (i < |C.RECS_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 + rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: + `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[j])) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- if (i < |C.RECS_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- if (j < |typeuse*{typeuse <- `typeuse*`}|) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 + rule none{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NONE_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:86.1-89.25 + rule nofunc{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:91.1-94.25 + rule noexn{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:96.1-99.25 + rule noextern{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 + rule bot{C : context, heaptype : heaptype}: + `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 +relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:105.1-107.37 + rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 + rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 +relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:114.1-116.46 + rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: + `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) + -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 + rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: + `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) + -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 + rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: + `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 + rule bot{C : context, valtype : valtype}: + `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 +relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-137.37 + rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + -- if (|`t_1*`| = |`t_2*`|) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 +relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:162.1-164.46 + rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 + rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: + `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) + -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 +relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:171.1-173.40 + rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 + rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Localtype_ok: `%|-%:OK`(context, localtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, init : init, t : valtype}: + `%|-%:OK`(C, `%%`_localtype(init, t)) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Instrtype_ok: `%|-%:OK`(context, instrtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} + -- if (|`lct*`| = |`x*`|) + -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand_use: `%~~_%%`(typeuse, context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule deftype{deftype : deftype, C : context, comptype : comptype}: + `%~~_%%`($typeuse_deftype(deftype), C, comptype) + -- Expand: `%~~%`(deftype, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: + `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidx = + | OK(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation wf_oktypeidx: `%`(oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule oktypeidx_case_0{typeidx : typeidx}: + `%`(OK_oktypeidx(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `comptype'*` : comptype*, `yy**` : typeuse**, `var_0*` : subtype*}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- if (|x*{x <- `x*`}| <= 1) + -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} + -- (if (var_0 = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `yy*` <- `yy**`} + -- if (|`var_0*`| = |`comptype'*`|) + -- if (|`var_0*`| = |`yy**`|) + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- wf_context: `%`(C) + -- (wf_subtype: `%`(var_0))*{var_0 <- `var_0*`} + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} + -- if (|`comptype'*`| = |`yy**`|) + -- (fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(x).0], var_0))*{var_0 <- `var_0*`, x <- `x*`} + -- if (|`var_0*`| = |`x*`|) + -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.126 +relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 + rule empty{C : context, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Limits_ok: `%|-%:%`(context, limits, nat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, n : n, `m?` : m?, k : nat}: + `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- if (n <= k) + -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tagtype_ok: `%|-%:OK`(context, tagtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, typeuse) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Globaltype_ok: `%|-%:OK`(context, globaltype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, t : valtype}: + `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Memtype_ok: `%|-%:OK`(context, memtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits}: + `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size($numtype_addrtype(addrtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tabletype_ok: `%|-%:OK`(context, tabletype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: + `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size($numtype_addrtype(addrtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Externtype_ok: `%|-%:OK`(context, externtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule tag{C : context, tagtype : tagtype}: + `%|-%:OK`(C, TAG_externtype(tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule global{C : context, globaltype : globaltype}: + `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mem{C : context, memtype : memtype}: + `%|-%:OK`(C, MEM_externtype(memtype)) + -- Memtype_ok: `%|-%:OK`(C, memtype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule table{C : context, tabletype : tabletype}: + `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: + `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} + -- if (|`t*`| = |`x*`|) + -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- (wf_uN: `%%`(32, iter))*{iter <- $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Limits_sub: `%|-%<:%`(context, limits, limits) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + -- if (n_1 >= n_2) + -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule eps{C : context, n_1 : n, n_2 : n}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) + -- if (n_1 >= n_2) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: + `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: + `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: + `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: + `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: + `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: + `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule valtype{C : context, `valtype?` : valtype?}: + `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Catch_ok: `%|-%:OK`(context, catch) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_catch(x, l)) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all_ref{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +def $default_(valtype : valtype) : val?? + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(I32_valtype) = ?(?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(I64_valtype) = ?(?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(F32_valtype) = ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(F64_valtype) = ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(V128_valtype) = ?(?(VCONST_val(V128_vectype, `%`_vec_(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) + def $default_{x0 : valtype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation default__is_wf: `%%`(valtype : valtype, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule default__is_wf_0{valtype : valtype, ret_val : val?}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if (ret_val = !($default_(valtype))) + -- if ($default_(valtype) =/= ?()) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Defaultable: `|-%DEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%DEFAULTABLE`(t) + -- if (!($default_(t)) =/= ?()) + -- if ($default_(t) =/= ?()) + -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{n : n, m : m, at : addrtype, N : N}: + `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) + -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- if (m < (2 ^ $size($numtype_addrtype(at)))) + -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +def $is_packtype(storagetype : storagetype) : bool + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + def $is_packtype{zt : storagetype}(zt) = (zt =/= $storagetype_valtype($unpack(zt))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 +relation Instr_ok: `%|-%:%`(context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 + rule nop{C : context}: + `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 + rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 + rule drop{C : context, t : valtype}: + `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 + rule `select-expl`{C : context, t : valtype}: + `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 + rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Valtype_sub: `%|-%<:%`(C, t, t') + -- if ((t' = $valtype_numtype(numtype)) \/ (t' = $valtype_vectype(vectype))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 + rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 + rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 + rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 + rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 + rule br_if{C : context, l : labelidx, `t*` : valtype*}: + `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 + rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} + -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) + -- if ($proj_uN_0(l').0 < |C.LABELS_context|) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 + rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 + rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`($diffrt(rt_1, rt_2)) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 + rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 + rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 + rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: + `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(y).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 + rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 + rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 + rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 + rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(y).0 < |C.TYPES_context|) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 + rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 + rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 + rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 + rule `ref.null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.NULL`_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 + rule `ref.func`{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- if (x <- C.REFS_context) + -- if (|C.REFS_context| > 0) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.FUNC`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 + rule `ref.i31`{C : context}: + `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.I31`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 + rule `ref.is_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 + rule `ref.as_non_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 + rule `ref.eq`{C : context}: + `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 + rule `ref.test`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.TEST`_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 + rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.CAST`_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 + rule `i31.get`{C : context, sx : sx}: + `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 + rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 + rule `struct.new_default`{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} + -- wf_context: `%`(C) + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} + -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 + rule `struct.get`{C : context, `sx?` : sx?, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: + `%|-%:%`(C, `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 + rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*}: + `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) + -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 + rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 + rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype}: + `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 + rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 + rule `array.new_elem`{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: + `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) + -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 + rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 + rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 + rule `array.set`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 + rule `array.len`{C : context}: + `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.LEN`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 + rule `array.fill`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 + rule `array.copy`{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 + rule `array.init_elem`{C : context, x : idx, y : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) + -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 + rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 + rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + -- wf_context: `%`(C) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 + rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 + rule `local.get`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) + -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 + rule `local.set`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 + rule `local.tee`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 + rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: + `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 + rule `global.set`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 + rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 + rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 + rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 + rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: + `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.GROW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 + rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 + rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) + -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) + -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 + rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) + -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 + rule `elem.drop`{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) + -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: + `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) + -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) + -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + rule `data.drop`{C : context, x : idx}: + `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) + -- if ($proj_uN_0(x).0 < |C.DATAS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`DATA.DROP`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 + rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 + rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 + rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 + rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 + rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 + rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 + rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 + rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 + rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 + rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 + rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 + rule unop{C : context, nt : numtype, unop_nt : unop_}: + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 + rule binop{C : context, nt : numtype, binop_nt : binop_}: + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 + rule testop{C : context, nt : numtype, testop_nt : testop_}: + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 + rule relop{C : context, nt : numtype, relop_nt : relop_}: + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 + rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 + rule vconst{C : context, c : vec_}: + `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 + rule vvunop{C : context, vvunop : vvunop}: + `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 + rule vvbinop{C : context, vvbinop : vvbinop}: + `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 + rule vvternop{C : context, vvternop : vvternop}: + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 + rule vvtestop{C : context, vvtestop : vvtestop}: + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 + rule vunop{C : context, sh : shape, vunop : vunop_}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 + rule vternop{C : context, sh : shape, vternop : vternop_}: + `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 + rule vbitmask{C : context, sh : ishape}: + `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 + rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 + rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: + `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} + -- wf_context: `%`(C) + -- wf_dim: `%`($dim($proj_bshape_0(sh).0)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 + rule vsplat{C : context, sh : shape}: + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 + rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- wf_context: `%`(C) + -- wf_dim: `%`($dim(sh)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 + rule vreplace_lane{C : context, sh : shape, i : laneidx}: + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- wf_context: `%`(C) + -- wf_dim: `%`($dim(sh)) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 + rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 + rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 + rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 + rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 + rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 +relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 + rule empty{C : context}: + `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 + rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*, var_0 : context?}: + `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- if (|`init*`| = |`t*`|) + -- if (|`init*`| = |`x_1*`|) + -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} + -- Instrs_ok: `%|-%:%`(!(var_0), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- if (var_0 =/= ?()) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_context: `%`(!(var_0)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- fun_with_locals: `%%%%`(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 + rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 + rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) +} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok: `%|-%:%`(context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*, `t*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%NONDEFAULTABLE`(t) + -- if (!($default_(t)) = ?()) + -- if ($default_(t) =/= ?()) + -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Instr_const: `%|-%CONST`(context, instr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule vconst{C : context, vt : vectype, c_vt : vec_}: + `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.null`{C : context, ht : heaptype}: + `%|-%CONST`(C, `REF.NULL`_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.NULL`_instr(ht)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.i31`{C : context}: + `%|-%CONST`(C, `REF.I31`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.I31`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.func`{C : context, x : idx}: + `%|-%CONST`(C, `REF.FUNC`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.FUNC`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `struct.new`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `struct.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new_fixed`{C : context, x : idx, n : n}: + `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `any.convert_extern`{C : context}: + `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `extern.convert_any`{C : context}: + `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `global.get`{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule binop{C : context, Inn : Inn, binop : binop_}: + `%|-%CONST`(C, BINOP_instr($numtype_addrtype(Inn), binop)) + -- if (Inn <- [I32_Inn I64_Inn]) + -- if (|[I32_Inn I64_Inn]| > 0) + -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) + -- if (|[mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]| > 0) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr($numtype_addrtype(Inn), binop)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, MUL_binop_Inn)) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_const: `%|-%CONST`(context, expr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*}: + `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, expr : expr, t : valtype}: + `%|-%:%CONST`(C, expr, t) + -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) + -- Expr_const: `%|-%CONST`(C, expr) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Type_ok: `%|-%:%`(context, type, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx, var_0 : deftype*}: + `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- if ($proj_uN_0(x).0 = |C.TYPES_context|) + -- if (dt*{dt <- `dt*`} = var_0) + -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- fun_rolldt: `%%%`(x, rectype, var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Tag_ok: `%|-%:%`(context, tag, tagtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tagtype : tagtype, var_0 : tagtype}: + `%|-%:%`(C, TAG_tag(tagtype), var_0) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(var_0) + -- wf_tag: `%`(TAG_tag(tagtype)) + -- fun_clos_tagtype: `%%%`(C, tagtype, var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Global_ok: `%|-%:%`(context, global, globaltype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: + `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Mem_ok: `%|-%:%`(context, mem, memtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, memtype : memtype}: + `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- Memtype_ok: `%|-%:OK`(C, memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Table_ok: `%|-%:%`(context, table, tabletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- if (tabletype = `%%%`_tabletype(at, lim, rt)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(rt)) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Local_ok: `%|-%:%`(context, local, localtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule set{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- Defaultable: `|-%DEFAULTABLE`(t) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule unset{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- Nondefaultable: `|-%NONDEFAULTABLE`(t) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Func_ok: `%|-%:%`(context, func, deftype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} + -- if (|`lct*`| = |`local*`|) + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Datamode_ok: `%|-%:%`(context, datamode, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context}: + `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: + `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Data_ok: `%|-%:%`(context, data, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, `b*` : byte*, datamode : datamode}: + `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context, rt : reftype}: + `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule declare{C : context, rt : reftype}: + `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: + `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elem_ok: `%|-%:%`(context, elem, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: + `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- Reftype_ok: `%|-%:OK`(C, elemtype) + -- (Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(elemtype)))*{expr <- `expr*`} + -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Start_ok: `%|-%:OK`(context, start) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx}: + `%|-%:OK`(C, START_start(x)) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Import_ok: `%|-%:%`(context, import, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name_1 : name, name_2 : name, xt : externtype, var_0 : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), var_0) + -- Externtype_ok: `%|-%:OK`(C, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(var_0) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) + -- fun_clos_externtype: `%%%`(C, xt, var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Externidx_ok: `%|-%:%`(context, externidx, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule tag{C : context, x : idx, jt : tagtype}: + `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule global{C : context, x : idx, gt : globaltype}: + `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mem{C : context, x : idx, mt : memtype}: + `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule table{C : context, x : idx, tt : tabletype}: + `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Export_ok: `%|-%:%%`(context, export, name, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name : name, externidx : externidx, xt : externtype}: + `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- Externidx_ok: `%|-%:%`(C, externidx, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 +relation Globals_ok: `%|-%:%`(context, global*, globaltype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 + rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: + `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- Global_ok: `%|-%:%`(C, global_1, gt_1) + -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 +relation Types_ok: `%|-%:%`(context, type*, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 + rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: + `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) + -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +syntax nonfuncs = + | `%%%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation wf_nonfuncs: `%`(nonfuncs) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}: + `%`(`%%%%%%`_nonfuncs(`global*`, `mem*`, `table*`, `elem*`, `start?`, `export*`)) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_mem: `%`(mem))*{mem <- `mem*`} + -- (wf_table: `%`(table))*{table <- `table*`} + -- (wf_elem: `%`(elem))*{elem <- `elem*`} + -- (wf_start: `%`(start))?{start <- `start?`} + -- (wf_export: `%`(export))*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule fun_funcidx_nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*, var_0 : funcidx*}: + `%%`(`%%%%%%`_nonfuncs(global#2*{global#2 <- `global*`}, mem#2*{mem#2 <- `mem*`}, table#2*{table#2 <- `table*`}, elem#2*{elem#2 <- `elem*`}, start#2?{start#2 <- `start?`}, export#2*{export#2 <- `export*`}), var_0) + -- fun_funcidx_module: `%%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Module_ok: `|-%:%`(module, moduletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*, var_6 : deftype*, var_5 : tabletype*, var_4 : memtype*, var_3 : globaltype*, var_2 : tagtype*, var_1 : funcidx*, var_0 : moduletype}: + `|-%:%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) + -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) + -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + -- if (|`import*`| = |`xt_I*`|) + -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} + -- if (|`jt*`| = |`tag*`|) + -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} + -- if (|`mem*`| = |`mt*`|) + -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} + -- if (|`table*`| = |`tt*`|) + -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} + -- if (|`dt*`| = |`func*`|) + -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} + -- if (|`data*`| = |`ok*`|) + -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} + -- if (|`elem*`| = |`rt*`|) + -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} + -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} + -- if (|`export*`| = |`nm*`|) + -- if (|`export*`| = |`xt_E*`|) + -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) + -- if (C = C' +++ {TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) + -- if (x*{x <- `x*`} = var_1) + -- if (jt_I*{jt_I <- `jt_I*`} = var_2) + -- if (gt_I*{gt_I <- `gt_I*`} = var_3) + -- if (mt_I*{mt_I <- `mt_I*`} = var_4) + -- if (tt_I*{tt_I <- `tt_I*`} = var_5) + -- if (dt_I*{dt_I <- `dt_I*`} = var_6) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_moduletype: `%`(var_0) + -- (wf_uN: `%%`(32, iter))*{iter <- var_1} + -- (wf_typeuse: `%`(iter))*{iter <- var_2} + -- (wf_globaltype: `%`(iter))*{iter <- var_3} + -- (wf_memtype: `%`(iter))*{iter <- var_4} + -- (wf_tabletype: `%`(iter))*{iter <- var_5} + -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) + -- wf_nonfuncs: `%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- fun_funcsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_6) + -- fun_tablesxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_5) + -- fun_memsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_4) + -- fun_globalsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_3) + -- fun_tagsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_2) + -- fun_funcidx_nonfuncs: `%%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_1) + -- fun_clos_moduletype: `%%%`(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}), var_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed2 = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed2_0(x : relaxed2) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed2_0{v_num_0 : nat}(`%`_relaxed2(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed2: `%`(relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed2_case_0{i : nat}: + `%`(`%`_relaxed2(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed4 = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed4_0(x : relaxed4) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed4_0{v_num_0 : nat}(`%`_relaxed4(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed4: `%`(relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed4_case_0{i : nat}: + `%`(`%`_relaxed4(i)) + -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = (if $ND then [X_1 X_2][$proj_relaxed2_0(i).0] else [X_1 X_2][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][$proj_relaxed4_0(i).0] else [X_1 X_2 X_3 X_4][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmadd : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmadd_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmadd_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_fmadd) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmin : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmin_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmin_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmin) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmax : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmax_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmax_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmax) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_idot : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_idot_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_idot_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_idot) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_iq15mulr : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_iq15mulr_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_iq15mulr_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_iq15mulr) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_u : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_u_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_u_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_trunc_u) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_s : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_s_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_s_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_trunc_s) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_swizzle : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_swizzle_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_swizzle_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_swizzle) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_laneselect : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_laneselect_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_laneselect_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_laneselect) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $s33_to_u32(s33 : s33) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibits_(N : N, iN : iN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibits__is_wf: `%%%`(N : N, iN : iN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibits__is_wf_0{N : N, iN : iN, ret_val : bit*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibits_(N, iN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbits_(N : N, fN : fN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbits__is_wf: `%%%`(N : N, fN : fN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbits__is_wf_0{N : N, fN : fN, ret_val : bit*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbits_(N, fN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibytes_(N : N, iN : iN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibytes__is_wf: `%%%`(N : N, iN : iN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibytes__is_wf_0{N : N, iN : iN, ret_val : byte*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibytes_(N, iN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbytes_(N : N, fN : fN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbytes__is_wf: `%%%`(N : N, fN : fN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbytes__is_wf_0{N : N, fN : fN, ret_val : byte*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbytes_(N, fN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $nbytes_(numtype : numtype, num_ : num_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation nbytes__is_wf: `%%%`(numtype : numtype, num_ : num_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule nbytes__is_wf_0{numtype : numtype, num_ : num_, ret_val : byte*}: + `%%%`(numtype, num_, ret_val) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $nbytes_(numtype, num_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $vbytes_(vectype : vectype, vec_ : vec_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation vbytes__is_wf: `%%%`(vectype : vectype, vec_ : vec_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule vbytes__is_wf_0{vectype : vectype, vec_ : vec_, ret_val : byte*}: + `%%%`(vectype, vec_, ret_val) + -- wf_uN: `%%`($vsize(vectype), vec_) + -- if (ret_val = $vbytes_(vectype, vec_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zbytes__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zbytes__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : byte*}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $zbytes_(storagetype, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cbytes__is_wf: `%%%`(Cnn : Cnn, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cbytes__is_wf_0{Cnn : Cnn, lit_ : lit_, ret_val : byte*}: + `%%%`(Cnn, lit_, ret_val) + -- wf_lit_: `%%`($storagetype_Cnn(Cnn), lit_) + -- if (ret_val = $cbytes_(Cnn, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibits_(N : N, bit*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbits_(N : N, bit*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbits__is_wf: `%%%`(N : N, var_0 : bit*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbits__is_wf_0{N : N, var_0 : bit*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_bit: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbits_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibytes_(N : N, byte*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbytes_(N : N, byte*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbytes__is_wf: `%%%`(N : N, var_0 : byte*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbytes__is_wf_0{N : N, var_0 : byte*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbytes_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_nbytes_(numtype : numtype, byte*) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_nbytes__is_wf: `%%%`(numtype : numtype, var_0 : byte*, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_nbytes__is_wf_0{numtype : numtype, var_0 : byte*, ret_val : num_}: + `%%%`(numtype, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_nbytes_(numtype, var_0)) + -- wf_num_: `%%`(numtype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_vbytes_(vectype : vectype, byte*) : vec_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_zbytes__is_wf: `%%%`(storagetype : storagetype, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_zbytes__is_wf_0{storagetype : storagetype, var_0 : byte*, ret_val : lit_}: + `%%%`(storagetype, var_0, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_zbytes_(storagetype, var_0)) + -- wf_lit_: `%%`(storagetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_cbytes__is_wf: `%%%`(Cnn : Cnn, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_cbytes__is_wf_0{Cnn : Cnn, var_0 : byte*, ret_val : lit_}: + `%%%`(Cnn, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_cbytes_(Cnn, var_0)) + -- wf_lit_: `%%`($storagetype_Cnn(Cnn), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_signed_: `%%%`(N, nat, int) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_signed__case_0{N : nat, i : nat}: + `%%%`(N, i, (i : nat <:> int)) + -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_signed__case_1{N : nat, i : nat}: + `%%%`(N, i, ((i : nat <:> int) - ((2 ^ N) : nat <:> int))) + -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_inv_signed_: `%%%`(N, int, nat) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_inv_signed__case_0{N : nat, i : int}: + `%%%`(N, i, (i : int <:> nat)) + -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_inv_signed__case_1{N : nat, i : int}: + `%%%`(N, i, ((i + ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sx(storagetype : storagetype) : sx?? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(F32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(F64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(V128_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I8_storagetype) = ?(?(S_sx)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I16_storagetype) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zero(lanetype : lanetype) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zero_is_wf: `%%`(lanetype : lanetype, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zero_is_wf_0{lanetype : lanetype, ret_val : lane_}: + `%%`(lanetype, ret_val) + -- if (ret_val = $zero(lanetype)) + -- wf_lane_: `%%`(lanetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $bool(bool : bool) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(false) = 0 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(true) = 1 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $truncz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ceilz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_u_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_u_{N : nat, i : int}(N, i) = (if (i < (0 : nat <:> int)) then 0 else (if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) then ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) else (i : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_s_(N : N, int : int) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_s_{N : nat, i : int}(N, i) = (if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) then - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) else (if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) then (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) else i)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ineg_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iabs_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iabs_{N : nat, i_1 : uN, var_0 : int}(N, i_1) = (if (var_0 >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iclz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ictz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ipopcnt_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_iextend_: `%%%%%`(N, M, sx, iN, iN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_iextend__case_0{N : nat, M : nat, i : uN}: + `%%%%%`(N, M, U_sx, i, `%`_iN(($proj_uN_0(i).0 \ (2 ^ M)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_iextend__case_1{N : nat, M : nat, i : uN, var_1 : int, var_0 : nat}: + `%%%%%`(N, M, S_sx, i, `%`_iN(var_0)) + -- fun_signed_: `%%%`(M, ($proj_uN_0(i).0 \ (2 ^ M)), var_1) + -- fun_inv_signed_: `%%%`(N, var_1, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imul_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_3{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: + `%%%%%`(N, S_sx, i_1, i_2, ?()) + -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_4{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_3{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- if ((j_1 = var_1) /\ (j_2 = var_2)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 <= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 >= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 + var_2)), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 - var_2)), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_q15mulr_(N : N, sx : sx, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iavgr_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inot_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irev_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iand_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iandnot_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ior_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ixor_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishl_(N : N, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishr_(N : N, sx : sx, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotl_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotr_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibitselect_(N : N, iN : iN, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieqz_(N : N, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inez_(N : N, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieq_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ine_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 < var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 > var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 <= var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 >= var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fabs_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fabs__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fabs__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fabs_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fneg_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fneg__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fneg__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fneg_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsqrt_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsqrt__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsqrt__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fsqrt_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fceil_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fceil__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fceil__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fceil_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ffloor_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ffloor__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ffloor__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ffloor_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ftrunc_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ftrunc__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ftrunc__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ftrunc_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fnearest_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fnearest__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fnearest__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fnearest_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fadd_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fadd__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fadd__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fadd_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsub_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsub__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsub__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fsub_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmul_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmul__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmul__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmul_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fdiv_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fdiv__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fdiv__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fdiv_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmin__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmax__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmin__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmax__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_min__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_min__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_min_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_max__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_max__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_max_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fcopysign_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fcopysign__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fcopysign__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fcopysign_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $feq_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fne_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $flt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fgt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fle_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fge_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_madd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_madd__is_wf_0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_madd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_nmadd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_nmadd__is_wf_0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_nmadd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $wrap__(M : M, N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $extend__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc_sat__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $demote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation demote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule demote___is_wf_0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $demote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $promote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation promote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule promote___is_wf_0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $promote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $convert__(M : M, N : N, sx : sx, iN : iN) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation convert___is_wf: `%%%%%`(M : M, N : N, sx : sx, iN : iN, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule convert___is_wf_0{M : M, N : N, sx : sx, iN : iN, ret_val : fN}: + `%%%%%`(M, N, sx, iN, ret_val) + -- wf_uN: `%%`(M, iN) + -- if (ret_val = $convert__(M, N, sx, iN)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation reinterpret___is_wf: `%%%%`(numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule reinterpret___is_wf_0{numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_}: + `%%%%`(numtype_1, numtype_2, num_, ret_val) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $reinterpret__(numtype_1, numtype_2, num_)) + -- wf_num_: `%%`(numtype_2, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lpacknum__is_wf: `%%%`(lanetype : lanetype, num_ : num_, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lpacknum__is_wf_0{lanetype : lanetype, num_ : num_, ret_val : lane_}: + `%%%`(lanetype, num_, ret_val) + -- wf_num_: `%%`($lunpack(lanetype), num_) + -- if (ret_val = $lpacknum_(lanetype, num_)) + -- wf_lane_: `%%`(lanetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(I32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(I64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(F32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(F64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(V128_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cpacknum__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(storagetype))), lit_) + -- if ($cunpack(storagetype) =/= ?()) + -- if (ret_val = $cpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`(storagetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(I32_lanetype, mk_lane__0_lane_(I32_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(I64_lanetype, mk_lane__0_lane_(I64_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(F32_lanetype, mk_lane__0_lane_(F32_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lunpacknum__is_wf: `%%%`(lanetype : lanetype, lane_ : lane_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lunpacknum__is_wf_0{lanetype : lanetype, lane_ : lane_, ret_val : num_}: + `%%%`(lanetype, lane_, ret_val) + -- wf_lane_: `%%`(lanetype, lane_) + -- if (ret_val = $lunpacknum_(lanetype, lane_)) + -- wf_num_: `%%`($lunpack(lanetype), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(I32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(I64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(F32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(F64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(V128_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cunpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cunpacknum__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $cunpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(storagetype))), ret_val) + -- if ($cunpack(storagetype) =/= ?()) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_0{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_1{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_2{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_3{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_4{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_5{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_6{M : nat, i : uN, var_0 : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_7{M : nat, i : uN, var_0 : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_8{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#1)*{iter_0#1 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_9{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_10{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#3)*{iter_0#3 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_11{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_12{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#5)*{iter_0#5 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_13{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#6)*{iter_0#6 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_14{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#7)*{iter_0#7 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_15{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_16{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#9)*{iter_0#9 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_17{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#10)*{iter_0#10 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_18{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#11)*{iter_0#11 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_19{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_20{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#13)*{iter_0#13 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_21{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#14)*{iter_0#14 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation unop__is_wf: `%%%%`(numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule unop__is_wf_0{numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*, var_0 : num_*}: + `%%%%`(numtype, unop_, num_, ret_val) + -- wf_unop_: `%%`(numtype, unop_) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = var_0) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} + -- fun_unop_: `%%%%`(numtype, unop_, num_, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_binop_: `%%%%%`(numtype, binop_, num_, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_0{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_1{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_2{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_3{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_4{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_5{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_6{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#15)*{iter_0#15 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_7{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#16)*{iter_0#16 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_8{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#17)*{iter_0#17 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_9{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#18)*{iter_0#18 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_10{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_11{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_12{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_13{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_14{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_15{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_16{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_17{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_18{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_19{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_20{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_21{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_22{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_23{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_24{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#19)*{iter_0#19 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_25{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_26{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#21)*{iter_0#21 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_27{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#22)*{iter_0#22 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_28{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#23)*{iter_0#23 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_29{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_30{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#25)*{iter_0#25 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_31{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#26)*{iter_0#26 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_32{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#27)*{iter_0#27 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_33{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_34{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#29)*{iter_0#29 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_35{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#30)*{iter_0#30 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_36{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#31)*{iter_0#31 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_37{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#32)*{iter_0#32 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation binop__is_wf: `%%%%%`(numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule binop__is_wf_0{numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*, var_0 : num_*}: + `%%%%%`(numtype, binop_, num_, num__0, ret_val) + -- wf_binop_: `%%`(numtype, binop_) + -- wf_num_: `%%`(numtype, num_) + -- wf_num_: `%%`(numtype, num__0) + -- if (ret_val = var_0) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} + -- fun_binop_: `%%%%%`(numtype, binop_, num_, num__0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $testop_{i : uN}(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I32_Inn)), i) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $testop_{i : uN}(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I64_Inn)), i) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_cvtop__: `%%%%%`(numtype, numtype, cvtop__, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_0{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_1{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_2{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_3{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_4{i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_5{i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_6{i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_7{i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_8{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#33)*{iter_0#33 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_9{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_10{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#35)*{iter_0#35 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_11{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_12{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#37)*{iter_0#37 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_13{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#38)*{iter_0#38 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_14{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#39)*{iter_0#39 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_15{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#40)*{iter_0#40 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_16{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_17{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_18{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_19{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_20{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#41)*{iter_0#41 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_21{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_22{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#43)*{iter_0#43 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_23{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_24{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#45)*{iter_0#45 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_25{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_26{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#47)*{iter_0#47 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_27{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_28{i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_29{i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_30{i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_31{i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_32{f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_33{f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_34{f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_35{f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cvtop___is_wf: `%%%%%`(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cvtop___is_wf_0{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*, var_0 : num_*}: + `%%%%%`(numtype_1, numtype_2, cvtop__, num_, ret_val) + -- wf_cvtop__: `%%%`(numtype_1, numtype_2, cvtop__) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = var_0) + -- (wf_num_: `%%`(numtype_2, ret_val))*{ret_val <- ret_val} + -- fun_cvtop__: `%%%%%`(numtype_1, numtype_2, cvtop__, num_, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lanes_(shape : shape, vec_ : vec_) : lane_* + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lanes__is_wf: `%%%`(shape : shape, vec_ : vec_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lanes__is_wf_0{shape : shape, vec_ : vec_, ret_val : lane_*}: + `%%%`(shape, vec_, ret_val) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(128, vec_) + -- if (ret_val = $lanes_(shape, vec_)) + -- (wf_lane_: `%%`($lanetype(shape), ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $inv_lanes_(shape : shape, lane_*) : vec_ + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_zeroop: `%%%%`(shape, shape, vcvtop__, zero?) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3037?{half#3037 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3038?{half#3038 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3039?{half#3039 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3040?{half#3040 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3041?{half#3041 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3042?{half#3042 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3043?{half#3043 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3044?{half#3044 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3441?{zero#3441 <- `zero?`})), zero#3442?{zero#3442 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3443?{zero#3443 <- `zero?`})), zero#3444?{zero#3444 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3445?{zero#3445 <- `zero?`})), zero#3446?{zero#3446 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3447?{zero#3447 <- `zero?`})), zero#3448?{zero#3448 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3449?{zero#3449 <- `zero?`})), zero#3450?{zero#3450 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3451?{zero#3451 <- `zero?`})), zero#3452?{zero#3452 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3453?{zero#3453 <- `zero?`})), zero#3454?{zero#3454 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3455?{zero#3455 <- `zero?`})), zero#3456?{zero#3456 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3457?{zero#3457 <- `zero?`})), zero#3458?{zero#3458 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3459?{zero#3459 <- `zero?`})), zero#3460?{zero#3460 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3461?{zero#3461 <- `zero?`})), zero#3462?{zero#3462 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3463?{zero#3463 <- `zero?`})), zero#3464?{zero#3464 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3465?{zero#3465 <- `zero?`})), zero#3466?{zero#3466 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3467?{zero#3467 <- `zero?`})), zero#3468?{zero#3468 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3469?{zero#3469 <- `zero?`})), zero#3470?{zero#3470 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3471?{zero#3471 <- `zero?`})), zero#3472?{zero#3472 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_40{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_41{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_42{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_43{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_44{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_45{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_46{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_47{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_halfop: `%%%%`(shape, shape, vcvtop__, half?) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3045?{half#3045 <- `half?`}, sx)), half#3046?{half#3046 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3047?{half#3047 <- `half?`}, sx)), half#3048?{half#3048 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3049?{half#3049 <- `half?`}, sx)), half#3050?{half#3050 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3051?{half#3051 <- `half?`}, sx)), half#3052?{half#3052 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3053?{half#3053 <- `half?`}, sx)), half#3054?{half#3054 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3055?{half#3055 <- `half?`}, sx)), half#3056?{half#3056 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3057?{half#3057 <- `half?`}, sx)), half#3058?{half#3058 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3059?{half#3059 <- `half?`}, sx)), half#3060?{half#3060 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3473?{zero#3473 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3474?{zero#3474 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3475?{zero#3475 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3476?{zero#3476 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3477?{zero#3477 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3478?{zero#3478 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3479?{zero#3479 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3480?{zero#3480 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3481?{zero#3481 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3482?{zero#3482 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3483?{zero#3483 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3484?{zero#3484 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3485?{zero#3485 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3486?{zero#3486 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3487?{zero#3487 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3488?{zero#3488 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_40{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_41{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_42{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_43{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_44{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_45{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_46{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_47{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $half(half : half, nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(LOW_half, i, j) = i + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(HIGH_half, i, j) = j + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $iswizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#1*{c#1 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN, var_0 : int}(N, c#2*{c#2 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if (var_0 < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i).0, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#4)*{c#4 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#1*{c_1#1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#3*{c#3 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#2)))*{c_1#2 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#5))*{iter#5 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#3)))))*{c_1#3 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#6)*{c#6 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#4*{c_1#4 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#5*{c#5 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#5)))*{c_1#5 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#6))*{iter#6 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#6)))))*{c_1#6 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#8)*{c#8 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#7*{c_1#7 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#7*{c#7 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#8)))*{c_1#8 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#7))*{iter#7 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#9)))))*{c_1#9 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#10)*{c#10 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#10*{c_1#10 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#9*{c#9 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#11)))*{c_1#11 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#8))*{iter#8 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#12)))))*{c_1#12 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#12*{c#12 <- `c*#2`})*{`c*#2` <- `c**`} + -- let{`c_1*` : lane_*} c_1#13*{c_1#13 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#11*{c#11 <- `c*#1`}*{`c*#1` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#49))*{iter_0#49 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#14)))))}*{c_1#14 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#9))*{iter#9 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#11))*{iter#11 <- iter#10}*{iter#10 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#50))*{iter_0#50 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#15)))))}*{c_1#15 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#12))*{iter#12 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#16)))))}*{c_1#16 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#51))))*{iter_0#51 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#17)))))}*{c_1#17 <- `c_1*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#14*{c#14 <- `c*#4`})*{`c*#4` <- `c**`} + -- let{`c_1*` : lane_*} c_1#18*{c_1#18 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#13*{c#13 <- `c*#3`}*{`c*#3` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#52))*{iter_0#52 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#19)))))}*{c_1#19 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#13))*{iter#13 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#15))*{iter#15 <- iter#14}*{iter#14 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#53))*{iter_0#53 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#20)))))}*{c_1#20 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#16))*{iter#16 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#21)))))}*{c_1#21 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#54))))*{iter_0#54 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#22)))))}*{c_1#22 <- `c_1*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#16)*{c#16 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#23*{c_1#23 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#1*{c_2#1 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#15*{c#15 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#24)), !($proj_lane__2(c_2#2)))*{c_1#24 <- `c_1*`, c_2#2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#17))*{iter#17 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#18))*{iter#18 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#25)), !($proj_lane__2(c_2#3)))))*{c_1#25 <- `c_1*`, c_2#3 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#18)*{c#18 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#26*{c_1#26 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#4*{c_2#4 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#17*{c#17 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#27)), !($proj_lane__2(c_2#5)))*{c_1#27 <- `c_1*`, c_2#5 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#19))*{iter#19 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#20))*{iter#20 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#28)), !($proj_lane__2(c_2#6)))))*{c_1#28 <- `c_1*`, c_2#6 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#20)*{c#20 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#29*{c_1#29 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#7*{c_2#7 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#19*{c#19 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#30)), !($proj_lane__2(c_2#8)))*{c_1#30 <- `c_1*`, c_2#8 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#21))*{iter#21 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#22))*{iter#22 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#31)), !($proj_lane__2(c_2#9)))))*{c_1#31 <- `c_1*`, c_2#9 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#22)*{c#22 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#32*{c_1#32 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#10*{c_2#10 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#21*{c#21 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#33)), !($proj_lane__2(c_2#11)))*{c_1#33 <- `c_1*`, c_2#11 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#23))*{iter#23 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#24))*{iter#24 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#34)), !($proj_lane__2(c_2#12)))))*{c_1#34 <- `c_1*`, c_2#12 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#24)*{c#24 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#35*{c_1#35 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#13*{c_2#13 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#23*{c#23 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#36)), !($proj_lane__2(c_2#14)))*{c_1#36 <- `c_1*`, c_2#14 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#25))*{iter#25 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#26))*{iter#26 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#37)), !($proj_lane__2(c_2#15)))))*{c_1#37 <- `c_1*`, c_2#15 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#26)*{c#26 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#38*{c_1#38 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#16*{c_2#16 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#25*{c#25 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#39)), !($proj_lane__2(c_2#17)))*{c_1#39 <- `c_1*`, c_2#17 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#27))*{iter#27 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#28))*{iter#28 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#40)), !($proj_lane__2(c_2#18)))))*{c_1#40 <- `c_1*`, c_2#18 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#28)*{c#28 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#41*{c_1#41 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#19*{c_2#19 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#27*{c#27 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#42)), !($proj_lane__2(c_2#20)))*{c_1#42 <- `c_1*`, c_2#20 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#29))*{iter#29 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#30))*{iter#30 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#43)), !($proj_lane__2(c_2#21)))))*{c_1#43 <- `c_1*`, c_2#21 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#30)*{c#30 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#44*{c_1#44 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#22*{c_2#22 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#29*{c#29 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#45)), !($proj_lane__2(c_2#23)))*{c_1#45 <- `c_1*`, c_2#23 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#31))*{iter#31 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#32))*{iter#32 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#46)), !($proj_lane__2(c_2#24)))))*{c_1#46 <- `c_1*`, c_2#24 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#32*{c#32 <- `c*#6`})*{`c*#6` <- `c**`} + -- let{`c_1*` : lane_*} c_1#47*{c_1#47 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#25*{c_2#25 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#31*{c#31 <- `c*#5`}*{`c*#5` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#55)*{iter_0#55 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#48)), !($proj_lane__2(c_2#26)))}*{c_1#48 <- `c_1*`, c_2#26 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#33))*{iter#33 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#34))*{iter#34 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), iter#36))*{iter#36 <- iter#35}*{iter#35 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#56)*{iter_0#56 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#49)), !($proj_lane__2(c_2#27)))}*{c_1#49 <- `c_1*`, c_2#27 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#37))*{iter#37 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#50)), !($proj_lane__2(c_2#28)))}*{c_1#50 <- `c_1*`, c_2#28 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#57)))*{iter_0#57 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#51)), !($proj_lane__2(c_2#29)))}*{c_1#51 <- `c_1*`, c_2#29 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#34*{c#34 <- `c*#8`})*{`c*#8` <- `c**`} + -- let{`c_1*` : lane_*} c_1#52*{c_1#52 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#30*{c_2#30 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#33*{c#33 <- `c*#7`}*{`c*#7` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#58)*{iter_0#58 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#53)), !($proj_lane__2(c_2#31)))}*{c_1#53 <- `c_1*`, c_2#31 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#38))*{iter#38 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#39))*{iter#39 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), iter#41))*{iter#41 <- iter#40}*{iter#40 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#59)*{iter_0#59 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#54)), !($proj_lane__2(c_2#32)))}*{c_1#54 <- `c_1*`, c_2#32 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#42))*{iter#42 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#55)), !($proj_lane__2(c_2#33)))}*{c_1#55 <- `c_1*`, c_2#33 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#60)))*{iter_0#60 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#56)), !($proj_lane__2(c_2#34)))}*{c_1#56 <- `c_1*`, c_2#34 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#36*{c#36 <- `c*#10`})*{`c*#10` <- `c**`} + -- let{`c_1*` : lane_*} c_1#57*{c_1#57 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#35*{c_2#35 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#35*{c#35 <- `c*#9`}*{`c*#9` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#61)*{iter_0#61 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#58)), !($proj_lane__2(c_2#36)))}*{c_1#58 <- `c_1*`, c_2#36 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#43))*{iter#43 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#44))*{iter#44 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), iter#46))*{iter#46 <- iter#45}*{iter#45 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#62)*{iter_0#62 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#59)), !($proj_lane__2(c_2#37)))}*{c_1#59 <- `c_1*`, c_2#37 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#47))*{iter#47 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#60)), !($proj_lane__2(c_2#38)))}*{c_1#60 <- `c_1*`, c_2#38 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#63)))*{iter_0#63 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#61)), !($proj_lane__2(c_2#39)))}*{c_1#61 <- `c_1*`, c_2#39 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#38*{c#38 <- `c*#12`})*{`c*#12` <- `c**`} + -- let{`c_1*` : lane_*} c_1#62*{c_1#62 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#40*{c_2#40 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#37*{c#37 <- `c*#11`}*{`c*#11` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#64)*{iter_0#64 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#63)), !($proj_lane__2(c_2#41)))}*{c_1#63 <- `c_1*`, c_2#41 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#48))*{iter#48 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#49))*{iter#49 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), iter#51))*{iter#51 <- iter#50}*{iter#50 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#65)*{iter_0#65 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#64)), !($proj_lane__2(c_2#42)))}*{c_1#64 <- `c_1*`, c_2#42 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#52))*{iter#52 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#65)), !($proj_lane__2(c_2#43)))}*{c_1#65 <- `c_1*`, c_2#43 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#66)))*{iter_0#66 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#66)), !($proj_lane__2(c_2#44)))}*{c_1#66 <- `c_1*`, c_2#44 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#40*{c#40 <- `c*#14`})*{`c*#14` <- `c**`} + -- let{`c_1*` : lane_*} c_1#67*{c_1#67 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#45*{c_2#45 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#39*{c#39 <- `c*#13`}*{`c*#13` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#67))*{iter_0#67 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#68)))), !($proj_num__1(!($proj_lane__0(c_2#46)))))}*{c_1#68 <- `c_1*`, c_2#46 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#53))*{iter#53 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#54))*{iter#54 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#56))*{iter#56 <- iter#55}*{iter#55 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#68))*{iter_0#68 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#69)))), !($proj_num__1(!($proj_lane__0(c_2#47)))))}*{c_1#69 <- `c_1*`, c_2#47 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#57))*{iter#57 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#70)))), !($proj_num__1(!($proj_lane__0(c_2#48)))))}*{c_1#70 <- `c_1*`, c_2#48 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#69))))*{iter_0#69 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#71)))), !($proj_num__1(!($proj_lane__0(c_2#49)))))}*{c_1#71 <- `c_1*`, c_2#49 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#42*{c#42 <- `c*#16`})*{`c*#16` <- `c**`} + -- let{`c_1*` : lane_*} c_1#72*{c_1#72 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#50*{c_2#50 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#41*{c#41 <- `c*#15`}*{`c*#15` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#70))*{iter_0#70 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#73)))), !($proj_num__1(!($proj_lane__0(c_2#51)))))}*{c_1#73 <- `c_1*`, c_2#51 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#58))*{iter#58 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#59))*{iter#59 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#61))*{iter#61 <- iter#60}*{iter#60 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#71))*{iter_0#71 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#74)))), !($proj_num__1(!($proj_lane__0(c_2#52)))))}*{c_1#74 <- `c_1*`, c_2#52 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#62))*{iter#62 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#75)))), !($proj_num__1(!($proj_lane__0(c_2#53)))))}*{c_1#75 <- `c_1*`, c_2#53 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#72))))*{iter_0#72 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#76)))), !($proj_num__1(!($proj_lane__0(c_2#54)))))}*{c_1#76 <- `c_1*`, c_2#54 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#44*{c#44 <- `c*#18`})*{`c*#18` <- `c**`} + -- let{`c_1*` : lane_*} c_1#77*{c_1#77 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#55*{c_2#55 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#1*{c_3#1 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#43*{c#43 <- `c*#17`}*{`c*#17` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#73)*{iter_0#73 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#78)), !($proj_lane__2(c_2#56)), !($proj_lane__2(c_3#2)))}*{c_1#78 <- `c_1*`, c_2#56 <- `c_2*`, c_3#2 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#63))*{iter#63 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#64))*{iter#64 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#65))*{iter#65 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), iter#67))*{iter#67 <- iter#66}*{iter#66 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#74)*{iter_0#74 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#79)), !($proj_lane__2(c_2#57)), !($proj_lane__2(c_3#3)))}*{c_1#79 <- `c_1*`, c_2#57 <- `c_2*`, c_3#3 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#68))*{iter#68 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#80)), !($proj_lane__2(c_2#58)), !($proj_lane__2(c_3#4)))}*{c_1#80 <- `c_1*`, c_2#58 <- `c_2*`, c_3#4 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#75)))*{iter_0#75 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#81)), !($proj_lane__2(c_2#59)), !($proj_lane__2(c_3#5)))}*{c_1#81 <- `c_1*`, c_2#59 <- `c_2*`, c_3#5 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#46*{c#46 <- `c*#20`})*{`c*#20` <- `c**`} + -- let{`c_1*` : lane_*} c_1#82*{c_1#82 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#60*{c_2#60 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#6*{c_3#6 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#45*{c#45 <- `c*#19`}*{`c*#19` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#76)*{iter_0#76 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#83)), !($proj_lane__2(c_2#61)), !($proj_lane__2(c_3#7)))}*{c_1#83 <- `c_1*`, c_2#61 <- `c_2*`, c_3#7 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#69))*{iter#69 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#70))*{iter#70 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#71))*{iter#71 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), iter#73))*{iter#73 <- iter#72}*{iter#72 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#77)*{iter_0#77 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#84)), !($proj_lane__2(c_2#62)), !($proj_lane__2(c_3#8)))}*{c_1#84 <- `c_1*`, c_2#62 <- `c_2*`, c_3#8 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#74))*{iter#74 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#85)), !($proj_lane__2(c_2#63)), !($proj_lane__2(c_3#9)))}*{c_1#85 <- `c_1*`, c_2#63 <- `c_2*`, c_3#9 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#78)))*{iter_0#78 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#86)), !($proj_lane__2(c_2#64)), !($proj_lane__2(c_3#10)))}*{c_1#86 <- `c_1*`, c_2#64 <- `c_2*`, c_3#10 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#48*{c#48 <- `c*#22`})*{`c*#22` <- `c**`} + -- let{`c_1*` : lane_*} c_1#87*{c_1#87 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#65*{c_2#65 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#11*{c_3#11 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#47*{c#47 <- `c*#21`}*{`c*#21` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#79)*{iter_0#79 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#88)), !($proj_lane__2(c_2#66)), !($proj_lane__2(c_3#12)))}*{c_1#88 <- `c_1*`, c_2#66 <- `c_2*`, c_3#12 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#75))*{iter#75 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#76))*{iter#76 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#77))*{iter#77 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), iter#79))*{iter#79 <- iter#78}*{iter#78 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#80)*{iter_0#80 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#89)), !($proj_lane__2(c_2#67)), !($proj_lane__2(c_3#13)))}*{c_1#89 <- `c_1*`, c_2#67 <- `c_2*`, c_3#13 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#80))*{iter#80 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#90)), !($proj_lane__2(c_2#68)), !($proj_lane__2(c_3#14)))}*{c_1#90 <- `c_1*`, c_2#68 <- `c_2*`, c_3#14 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#81)))*{iter_0#81 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#91)), !($proj_lane__2(c_2#69)), !($proj_lane__2(c_3#15)))}*{c_1#91 <- `c_1*`, c_2#69 <- `c_2*`, c_3#15 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#50*{c#50 <- `c*#24`})*{`c*#24` <- `c**`} + -- let{`c_1*` : lane_*} c_1#92*{c_1#92 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#70*{c_2#70 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#16*{c_3#16 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#49*{c#49 <- `c*#23`}*{`c*#23` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#82)*{iter_0#82 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#93)), !($proj_lane__2(c_2#71)), !($proj_lane__2(c_3#17)))}*{c_1#93 <- `c_1*`, c_2#71 <- `c_2*`, c_3#17 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#81))*{iter#81 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#82))*{iter#82 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#83))*{iter#83 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), iter#85))*{iter#85 <- iter#84}*{iter#84 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#83)*{iter_0#83 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#94)), !($proj_lane__2(c_2#72)), !($proj_lane__2(c_3#18)))}*{c_1#94 <- `c_1*`, c_2#72 <- `c_2*`, c_3#18 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#86))*{iter#86 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#95)), !($proj_lane__2(c_2#73)), !($proj_lane__2(c_3#19)))}*{c_1#95 <- `c_1*`, c_2#73 <- `c_2*`, c_3#19 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#84)))*{iter_0#84 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#96)), !($proj_lane__2(c_2#74)), !($proj_lane__2(c_3#20)))}*{c_1#96 <- `c_1*`, c_2#74 <- `c_2*`, c_3#20 <- `c_3*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#52*{c#52 <- `c*#26`})*{`c*#26` <- `c**`} + -- let{`c_1*` : lane_*} c_1#97*{c_1#97 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#75*{c_2#75 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#21*{c_3#21 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#51*{c#51 <- `c*#25`}*{`c*#25` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#85))*{iter_0#85 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#98)))), !($proj_num__1(!($proj_lane__0(c_2#76)))), !($proj_num__1(!($proj_lane__0(c_3#22)))))}*{c_1#98 <- `c_1*`, c_2#76 <- `c_2*`, c_3#22 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#87))*{iter#87 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#88))*{iter#88 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#89))*{iter#89 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#91))*{iter#91 <- iter#90}*{iter#90 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#86))*{iter_0#86 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#99)))), !($proj_num__1(!($proj_lane__0(c_2#77)))), !($proj_num__1(!($proj_lane__0(c_3#23)))))}*{c_1#99 <- `c_1*`, c_2#77 <- `c_2*`, c_3#23 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#92))*{iter#92 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#100)))), !($proj_num__1(!($proj_lane__0(c_2#78)))), !($proj_num__1(!($proj_lane__0(c_3#24)))))}*{c_1#100 <- `c_1*`, c_2#78 <- `c_2*`, c_3#24 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#87))))*{iter_0#87 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#101)))), !($proj_num__1(!($proj_lane__0(c_2#79)))), !($proj_num__1(!($proj_lane__0(c_3#25)))))}*{c_1#101 <- `c_1*`, c_2#79 <- `c_2*`, c_3#25 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#54*{c#54 <- `c*#28`})*{`c*#28` <- `c**`} + -- let{`c_1*` : lane_*} c_1#102*{c_1#102 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#80*{c_2#80 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#26*{c_3#26 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#53*{c#53 <- `c*#27`}*{`c*#27` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#88))*{iter_0#88 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#103)))), !($proj_num__1(!($proj_lane__0(c_2#81)))), !($proj_num__1(!($proj_lane__0(c_3#27)))))}*{c_1#103 <- `c_1*`, c_2#81 <- `c_2*`, c_3#27 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#93))*{iter#93 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#94))*{iter#94 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#95))*{iter#95 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#97))*{iter#97 <- iter#96}*{iter#96 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#89))*{iter_0#89 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#104)))), !($proj_num__1(!($proj_lane__0(c_2#82)))), !($proj_num__1(!($proj_lane__0(c_3#28)))))}*{c_1#104 <- `c_1*`, c_2#82 <- `c_2*`, c_3#28 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#98))*{iter#98 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#105)))), !($proj_num__1(!($proj_lane__0(c_2#83)))), !($proj_num__1(!($proj_lane__0(c_3#29)))))}*{c_1#105 <- `c_1*`, c_2#83 <- `c_2*`, c_3#29 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#90))))*{iter_0#90 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#106)))), !($proj_num__1(!($proj_lane__0(c_2#84)))), !($proj_num__1(!($proj_lane__0(c_3#30)))))}*{c_1#106 <- `c_1*`, c_2#84 <- `c_2*`, c_3#30 <- `c_3*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#56)*{c#56 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#107*{c_1#107 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#85*{c_2#85 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#55*{c#55 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#108)), !($proj_lane__2(c_2#86)))).0))*{c_1#108 <- `c_1*`, c_2#86 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#99))*{iter#99 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#100))*{iter#100 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#109)), !($proj_lane__2(c_2#87)))).0))))*{c_1#109 <- `c_1*`, c_2#87 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#110)), !($proj_lane__2(c_2#88)))).0)))*{c_1#110 <- `c_1*`, c_2#88 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#58)*{c#58 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#111*{c_1#111 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#89*{c_2#89 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#57*{c#57 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#112)), !($proj_lane__2(c_2#90)))).0))*{c_1#112 <- `c_1*`, c_2#90 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#101))*{iter#101 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#102))*{iter#102 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#113)), !($proj_lane__2(c_2#91)))).0))))*{c_1#113 <- `c_1*`, c_2#91 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#114)), !($proj_lane__2(c_2#92)))).0)))*{c_1#114 <- `c_1*`, c_2#92 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#60)*{c#60 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#115*{c_1#115 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#93*{c_2#93 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#59*{c#59 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#116)), !($proj_lane__2(c_2#94)))).0))*{c_1#116 <- `c_1*`, c_2#94 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#103))*{iter#103 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#104))*{iter#104 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#117)), !($proj_lane__2(c_2#95)))).0))))*{c_1#117 <- `c_1*`, c_2#95 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#118)), !($proj_lane__2(c_2#96)))).0)))*{c_1#118 <- `c_1*`, c_2#96 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#62)*{c#62 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#119*{c_1#119 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#97*{c_2#97 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#61*{c#61 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#120)), !($proj_lane__2(c_2#98)))).0))*{c_1#120 <- `c_1*`, c_2#98 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#105))*{iter#105 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#106))*{iter#106 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#121)), !($proj_lane__2(c_2#99)))).0))))*{c_1#121 <- `c_1*`, c_2#99 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#122)), !($proj_lane__2(c_2#100)))).0)))*{c_1#122 <- `c_1*`, c_2#100 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#64)*{c#64 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#123*{c_1#123 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#101*{c_2#101 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#63*{c#63 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#124)), !($proj_lane__2(c_2#102)))).0))*{c_1#124 <- `c_1*`, c_2#102 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#107))*{iter#107 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#108))*{iter#108 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#125)), !($proj_lane__2(c_2#103)))).0))))*{c_1#125 <- `c_1*`, c_2#103 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#126)), !($proj_lane__2(c_2#104)))).0)))*{c_1#126 <- `c_1*`, c_2#104 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#66)*{c#66 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#127*{c_1#127 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#105*{c_2#105 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#65*{c#65 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#128)), !($proj_lane__2(c_2#106)))).0))*{c_1#128 <- `c_1*`, c_2#106 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#109))*{iter#109 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#110))*{iter#110 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#129)), !($proj_lane__2(c_2#107)))).0))))*{c_1#129 <- `c_1*`, c_2#107 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#130)), !($proj_lane__2(c_2#108)))).0)))*{c_1#130 <- `c_1*`, c_2#108 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#68)*{c#68 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#131*{c_1#131 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#109*{c_2#109 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#67*{c#67 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#132)), !($proj_lane__2(c_2#110)))).0))*{c_1#132 <- `c_1*`, c_2#110 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#111))*{iter#111 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#112))*{iter#112 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#133)), !($proj_lane__2(c_2#111)))).0))))*{c_1#133 <- `c_1*`, c_2#111 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#134)), !($proj_lane__2(c_2#112)))).0)))*{c_1#134 <- `c_1*`, c_2#112 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#70)*{c#70 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#135*{c_1#135 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#113*{c_2#113 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#69*{c#69 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#136)), !($proj_lane__2(c_2#114)))).0))*{c_1#136 <- `c_1*`, c_2#114 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#113))*{iter#113 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#114))*{iter#114 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#137)), !($proj_lane__2(c_2#115)))).0))))*{c_1#137 <- `c_1*`, c_2#115 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#138)), !($proj_lane__2(c_2#116)))).0)))*{c_1#138 <- `c_1*`, c_2#116 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#72).0)))*{c#72 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#139*{c_1#139 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#117*{c_2#117 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#71*{c#71 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#140)))), !($proj_num__1(!($proj_lane__0(c_2#118)))))).0))*{c_1#140 <- `c_1*`, c_2#118 <- `c_2*`} + -- if ($isize(Inn) = $fsize(F32_Fnn)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#115))*{iter#115 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#116))*{iter#116 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size($numtype_Fnn(F32_Fnn)), $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#141)))), !($proj_num__1(!($proj_lane__0(c_2#119)))))).0))))*{c_1#141 <- `c_1*`, c_2#119 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#142)))), !($proj_num__1(!($proj_lane__0(c_2#120)))))).0)))*{c_1#142 <- `c_1*`, c_2#120 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#74).0)))*{c#74 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#143*{c_1#143 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#121*{c_2#121 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#73*{c#73 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#144)))), !($proj_num__1(!($proj_lane__0(c_2#122)))))).0))*{c_1#144 <- `c_1*`, c_2#122 <- `c_2*`} + -- if ($isize(Inn) = $fsize(F64_Fnn)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#117))*{iter#117 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#118))*{iter#118 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size($numtype_Fnn(F64_Fnn)), $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#145)))), !($proj_num__1(!($proj_lane__0(c_2#123)))))).0))))*{c_1#145 <- `c_1*`, c_2#123 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#146)))), !($proj_num__1(!($proj_lane__0(c_2#124)))))).0)))*{c_1#146 <- `c_1*`, c_2#124 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#76)*{c#76 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#147*{c_1#147 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#75*{c#75 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#148)), i)*{c_1#148 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#119))*{iter#119 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#149)), i)))*{c_1#149 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#78)*{c#78 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#150*{c_1#150 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#77*{c#77 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#151)), i)*{c_1#151 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#120))*{iter#120 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#152)), i)))*{c_1#152 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#80)*{c#80 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#153*{c_1#153 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#79*{c#79 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#154)), i)*{c_1#154 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#121))*{iter#121 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#155)), i)))*{c_1#155 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#82)*{c#82 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#156*{c_1#156 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#81*{c#81 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#157)), i)*{c_1#157 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#122))*{iter#122 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#158)), i)))*{c_1#158 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#84)*{c#84 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#159*{c_1#159 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#83*{c#83 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#160)), i)*{c_1#160 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#123))*{iter#123 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#161)), i)))*{c_1#161 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#86)*{c#86 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#162*{c_1#162 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#85*{c#85 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#163)), i)*{c_1#163 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#124))*{iter#124 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#164)), i)))*{c_1#164 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#88)*{c#88 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#165*{c_1#165 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#87*{c#87 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#166)), i)*{c_1#166 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#125))*{iter#125 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#167)), i)))*{c_1#167 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#90)*{c#90 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#168*{c_1#168 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#89*{c#89 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#169)), i)*{c_1#169 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#126))*{iter#126 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#170)), i)))*{c_1#170 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_0{M : nat, v_1 : uN, c : uN}: + `%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- let{`c_1*` : lane_*} c_1#171*{c_1#171 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#172)), `%`_iN(0))).0)*{c_1#172 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (if ($proj_lane__2(c_1#172) =/= ?()))*{c_1#172 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#127))*{iter#127 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#128))*{iter#128 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#173)), `%`_iN(0))).0)))*{c_1#173 <- `c_1*`} + -- (if ($proj_lane__2(c_1#173) =/= ?()))*{c_1#173 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_1{M : nat, v_1 : uN, c : uN}: + `%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- let{`c_1*` : lane_*} c_1#174*{c_1#174 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#175)), `%`_iN(0))).0)*{c_1#175 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (if ($proj_lane__2(c_1#175) =/= ?()))*{c_1#175 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#129))*{iter#129 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#130))*{iter#130 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#176)), `%`_iN(0))).0)))*{c_1#176 <- `c_1*`} + -- (if ($proj_lane__2(c_1#176) =/= ?()))*{c_1#176 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_2{M : nat, v_1 : uN, c : uN}: + `%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- let{`c_1*` : lane_*} c_1#177*{c_1#177 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#178)), `%`_iN(0))).0)*{c_1#178 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (if ($proj_lane__2(c_1#178) =/= ?()))*{c_1#178 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#131))*{iter#131 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#132))*{iter#132 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#179)), `%`_iN(0))).0)))*{c_1#179 <- `c_1*`} + -- (if ($proj_lane__2(c_1#179) =/= ?()))*{c_1#179 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_3{M : nat, v_1 : uN, c : uN}: + `%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- let{`c_1*` : lane_*} c_1#180*{c_1#180 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#181)), `%`_iN(0))).0)*{c_1#181 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (if ($proj_lane__2(c_1#181) =/= ?()))*{c_1#181 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#133))*{iter#133 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#134))*{iter#134 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#182)), `%`_iN(0))).0)))*{c_1#182 <- `c_1*`} + -- (if ($proj_lane__2(c_1#182) =/= ?()))*{c_1#182 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#92)*{c#92 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#183*{c_1#183 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#125*{c_2#125 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#91*{c#91 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#184))*{c_1#184 <- `c_1*`}, !($proj_lane__2(c_2#126)))*{c_2#126 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#135))*{iter#135 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#136))*{iter#136 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#185))*{c_1#185 <- `c_1*`}, !($proj_lane__2(c_2#127)))))*{c_2#127 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#94)*{c#94 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#186*{c_1#186 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#128*{c_2#128 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#93*{c#93 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#187))*{c_1#187 <- `c_1*`}, !($proj_lane__2(c_2#129)))*{c_2#129 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#137))*{iter#137 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#138))*{iter#138 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#188))*{c_1#188 <- `c_1*`}, !($proj_lane__2(c_2#130)))))*{c_2#130 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#96)*{c#96 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#189*{c_1#189 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#131*{c_2#131 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#95*{c#95 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#190))*{c_1#190 <- `c_1*`}, !($proj_lane__2(c_2#132)))*{c_2#132 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#139))*{iter#139 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#140))*{iter#140 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#191))*{c_1#191 <- `c_1*`}, !($proj_lane__2(c_2#133)))))*{c_2#133 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#98)*{c#98 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#192*{c_1#192 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#134*{c_2#134 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#97*{c#97 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#193))*{c_1#193 <- `c_1*`}, !($proj_lane__2(c_2#135)))*{c_2#135 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#141))*{iter#141 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#142))*{iter#142 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#194))*{c_1#194 <- `c_1*`}, !($proj_lane__2(c_2#136)))))*{c_2#136 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), i#139234*{i#139234 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#100*{c#100 <- `c*`})) + -- let{`c_1*` : lane_*} c_1#195*{c_1#195 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#137*{c_2#137 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#99*{c#99 <- `c*`} = c_1#196*{c_1#196 <- `c_1*`} ++ c_2#138*{c_2#138 <- `c_2*`}[$proj_uN_0(i#139237).0]*{i#139237 <- `i*`} + -- (if ($proj_uN_0(i#139237).0 < |c_1#196*{c_1#196 <- `c_1*`} ++ c_2#138*{c_2#138 <- `c_2*`}|))*{i#139237 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#143))*{iter#143 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#144))*{iter#144 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_1{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), i#139245*{i#139245 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#102*{c#102 <- `c*`})) + -- let{`c_1*` : lane_*} c_1#197*{c_1#197 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#139*{c_2#139 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#101*{c#101 <- `c*`} = c_1#198*{c_1#198 <- `c_1*`} ++ c_2#140*{c_2#140 <- `c_2*`}[$proj_uN_0(i#139248).0]*{i#139248 <- `i*`} + -- (if ($proj_uN_0(i#139248).0 < |c_1#198*{c_1#198 <- `c_1*`} ++ c_2#140*{c_2#140 <- `c_2*`}|))*{i#139248 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#145))*{iter#145 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#146))*{iter#146 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_2{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i#139256*{i#139256 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#104*{c#104 <- `c*`})) + -- let{`c_1*` : lane_*} c_1#199*{c_1#199 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#141*{c_2#141 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#103*{c#103 <- `c*`} = c_1#200*{c_1#200 <- `c_1*`} ++ c_2#142*{c_2#142 <- `c_2*`}[$proj_uN_0(i#139259).0]*{i#139259 <- `i*`} + -- (if ($proj_uN_0(i#139259).0 < |c_1#200*{c_1#200 <- `c_1*`} ++ c_2#142*{c_2#142 <- `c_2*`}|))*{i#139259 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#147))*{iter#147 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#148))*{iter#148 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_3{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), i#139267*{i#139267 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#106*{c#106 <- `c*`})) + -- let{`c_1*` : lane_*} c_1#201*{c_1#201 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#143*{c_2#143 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#105*{c#105 <- `c*`} = c_1#202*{c_1#202 <- `c_1*`} ++ c_2#144*{c_2#144 <- `c_2*`}[$proj_uN_0(i#139270).0]*{i#139270 <- `i*`} + -- (if ($proj_uN_0(i#139270).0 < |c_1#202*{c_1#202 <- `c_1*`} ++ c_2#144*{c_2#144 <- `c_2*`}|))*{i#139270 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#149))*{iter#149 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#150))*{iter#150 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvunop_{Vnn : vectype, v : uN}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vunop_: `%%%%`(shape, vunop_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_0{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_1{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_2{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_3{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_4{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_5{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_6{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_7{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_8{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_9{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_10{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_11{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_12{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_13{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_14{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M_0, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_15{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M_0, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_16{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M_0, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_17{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M_0, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_18{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M_0, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_19{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M_0, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_20{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M_0, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_21{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M_0, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_22{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M_0, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_23{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M_0, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_24{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M_0, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_25{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M_0, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vbinop_: `%%%%%`(shape, vbinop_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_0{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_1{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_2{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_3{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_4{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_5{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_6{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_7{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_8{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_9{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_10{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_11{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_24{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_25{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_26{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_27{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_28{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_29{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_30{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_31{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_32{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_33{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_34{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_35{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_36{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_37{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_38{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_39{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_40{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_41{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_42{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_43{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_44{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_45{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_46{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_47{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_48{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_49{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_50{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_51{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_52{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_53{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_54{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_55{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_56{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_57{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_58{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_59{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vternop_: `%%%%%%`(shape, vternop_, vec_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_0{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_1{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_2{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_3{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_4{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M_0, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_5{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M_0, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_6{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M_0, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_7{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M_0, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vrelop_: `%%%%%`(shape, vrelop_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_0{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_1{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_2{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_3{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_4{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_5{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_6{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_7{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_8{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_9{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_10{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_11{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_24{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_25{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_26{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_27{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_28{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_29{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_30{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_31{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_32{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_33{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_34{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_35{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3061?{half#3061 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3062?{half#3062 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3063?{half#3063 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3064?{half#3064 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3065?{half#3065 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3066?{half#3066 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3067?{half#3067 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3068?{half#3068 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3489?{zero#3489 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#108))?{c#108 <- `c?`})) + -- let{`c?` : iN?} c#107?{c#107 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#151))?{iter#151 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3490?{zero#3490 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#110))?{c#110 <- `c?`})) + -- let{`c?` : iN?} c#109?{c#109 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#152))?{iter#152 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3491?{zero#3491 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#112))?{c#112 <- `c?`})) + -- let{`c?` : iN?} c#111?{c#111 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#153))?{iter#153 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3492?{zero#3492 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#114))?{c#114 <- `c?`})) + -- let{`c?` : iN?} c#113?{c#113 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#154))?{iter#154 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3493?{zero#3493 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#116))?{c#116 <- `c?`})) + -- let{`c?` : iN?} c#115?{c#115 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#155))?{iter#155 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3494?{zero#3494 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#118))?{c#118 <- `c?`})) + -- let{`c?` : iN?} c#117?{c#117 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#156))?{iter#156 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3495?{zero#3495 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#120))?{c#120 <- `c?`})) + -- let{`c?` : iN?} c#119?{c#119 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#157))?{iter#157 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3496?{zero#3496 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#122))?{c#122 <- `c?`})) + -- let{`c?` : iN?} c#121?{c#121 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#158))?{iter#158 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3497?{zero#3497 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#124))?{c#124 <- `c?`})) + -- let{`c?` : iN?} c#123?{c#123 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#159))?{iter#159 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3498?{zero#3498 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#126))?{c#126 <- `c?`})) + -- let{`c?` : iN?} c#125?{c#125 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#160))?{iter#160 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3499?{zero#3499 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#128))?{c#128 <- `c?`})) + -- let{`c?` : iN?} c#127?{c#127 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#161))?{iter#161 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3500?{zero#3500 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#130))?{c#130 <- `c?`})) + -- let{`c?` : iN?} c#129?{c#129 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#162))?{iter#162 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3501?{zero#3501 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#132))?{c#132 <- `c?`})) + -- let{`c?` : iN?} c#131?{c#131 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#163))?{iter#163 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3502?{zero#3502 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#134))?{c#134 <- `c?`})) + -- let{`c?` : iN?} c#133?{c#133 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#164))?{iter#164 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3503?{zero#3503 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#136))?{c#136 <- `c?`})) + -- let{`c?` : iN?} c#135?{c#135 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#165))?{iter#165 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3504?{zero#3504 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#138))?{c#138 <- `c?`})) + -- let{`c?` : iN?} c#137?{c#137 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#166))?{iter#166 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3505?{zero#3505 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#140))?{c#140 <- `c?`})) + -- let{`c?` : iN?} c#139?{c#139 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#167))?{iter#167 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3506?{zero#3506 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#142))?{c#142 <- `c?`})) + -- let{`c?` : iN?} c#141?{c#141 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#168))?{iter#168 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3507?{zero#3507 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#144))?{c#144 <- `c?`})) + -- let{`c?` : iN?} c#143?{c#143 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#169))?{iter#169 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_43{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3508?{zero#3508 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#146))?{c#146 <- `c?`})) + -- let{`c?` : iN?} c#145?{c#145 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#170))?{iter#170 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3509?{zero#3509 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#148))?{c#148 <- `c?`})) + -- let{`c?` : iN?} c#147?{c#147 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#171))?{iter#171 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3510?{zero#3510 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#150))?{c#150 <- `c?`})) + -- let{`c?` : iN?} c#149?{c#149 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#172))?{iter#172 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3511?{zero#3511 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#152))?{c#152 <- `c?`})) + -- let{`c?` : iN?} c#151?{c#151 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#173))?{iter#173 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_47{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3512?{zero#3512 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#154))?{c#154 <- `c?`})) + -- let{`c?` : iN?} c#153?{c#153 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#174))?{iter#174 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3513?{zero#3513 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#156))?{c#156 <- `c?`})) + -- let{`c?` : iN?} c#155?{c#155 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#175))?{iter#175 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3514?{zero#3514 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#158))?{c#158 <- `c?`})) + -- let{`c?` : iN?} c#157?{c#157 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#176))?{iter#176 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3515?{zero#3515 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#160))?{c#160 <- `c?`})) + -- let{`c?` : iN?} c#159?{c#159 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#177))?{iter#177 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_51{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3516?{zero#3516 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#162))?{c#162 <- `c?`})) + -- let{`c?` : iN?} c#161?{c#161 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#178))?{iter#178 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3517?{zero#3517 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#164))?{c#164 <- `c?`})) + -- let{`c?` : iN?} c#163?{c#163 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#179))?{iter#179 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3518?{zero#3518 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#166))?{c#166 <- `c?`})) + -- let{`c?` : iN?} c#165?{c#165 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#180))?{iter#180 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3519?{zero#3519 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#168))?{c#168 <- `c?`})) + -- let{`c?` : iN?} c#167?{c#167 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#181))?{iter#181 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_55{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3520?{zero#3520 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#170))?{c#170 <- `c?`})) + -- let{`c?` : iN?} c#169?{c#169 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#182))?{iter#182 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_56{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#172))*{c#172 <- `c*`}) + -- let{`c*` : fN*} c#171*{c#171 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#183))*{iter#183 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_57{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#174))*{c#174 <- `c*`}) + -- let{`c*` : fN*} c#173*{c#173 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#184))*{iter#184 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_58{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#176))*{c#176 <- `c*`}) + -- let{`c*` : fN*} c#175*{c#175 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#185))*{iter#185 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_59{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#178))*{c#178 <- `c*`}) + -- let{`c*` : fN*} c#177*{c#177 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#186))*{iter#186 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_60{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#180))*{c#180 <- `c*`}) + -- let{`c*` : fN*} c#179*{c#179 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#187))*{iter#187 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_61{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#182))*{c#182 <- `c*`}) + -- let{`c*` : fN*} c#181*{c#181 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#188))*{iter#188 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_62{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#184))*{c#184 <- `c*`}) + -- let{`c*` : fN*} c#183*{c#183 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#189))*{iter#189 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_63{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#186))*{c#186 <- `c*`}) + -- let{`c*` : fN*} c#185*{c#185 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#190))*{iter#190 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_64{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#188))*{c#188 <- `c*`}) + -- let{`c*` : fN*} c#187*{c#187 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#191))*{iter#191 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_65{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#190))*{c#190 <- `c*`}) + -- let{`c*` : fN*} c#189*{c#189 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#192))*{iter#192 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_66{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#192))*{c#192 <- `c*`}) + -- let{`c*` : fN*} c#191*{c#191 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#193))*{iter#193 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_67{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#194))*{c#194 <- `c*`}) + -- let{`c*` : fN*} c#193*{c#193 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#194))*{iter#194 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_68{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#196))*{c#196 <- `c*`}) + -- let{`c*` : fN*} c#195*{c#195 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#195))*{iter#195 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_69{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#198))*{c#198 <- `c*`}) + -- let{`c*` : fN*} c#197*{c#197 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#196))*{iter#196 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_70{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#200))*{c#200 <- `c*`}) + -- let{`c*` : fN*} c#199*{c#199 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#197))*{iter#197 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_71{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#202))*{c#202 <- `c*`}) + -- let{`c*` : fN*} c#201*{c#201 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#198))*{iter#198 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lcvtop___is_wf: `%%%%%`(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lcvtop___is_wf_0{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*, var_0 : lane_*}: + `%%%%%`(shape_1, shape_2, vcvtop__, lane_, ret_val) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_1, shape_2, vcvtop__) + -- wf_lane_: `%%`($lanetype(shape_1), lane_) + -- if (ret_val = var_0) + -- (wf_lane_: `%%`($lanetype(shape_2), ret_val))*{ret_val <- ret_val} + -- fun_lcvtop__: `%%%%%`(shape_1, shape_2, vcvtop__, lane_, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, M_0 : nat, `var_4*` : lane_**, `var_3*` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M_0)), vcvtop, v_1, v) + -- if ((var_0 = ?()) /\ (var_1 = ?())) + -- let{`c_1*` : lane_*} c_1#203*{c_1#203 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#203*{c#203 <- `c*#29`}*{`c*#29` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#204*{c#204 <- `c*#30`})*{`c*#30` <- `c**`}) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#204*{c#204 <- `c*#30`})*{`c*#30` <- `c**`}| > 0) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), iter#199))*{iter#199 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#201))*{iter#201 <- iter#200}*{iter#200 <- $setproduct_(syntax lane_, var_3*{var_3 <- `var_3*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#202))*{iter#202 <- var_4}*{var_4 <- `var_4*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#205*{c#205 <- `c*#31`})))*{`c*#31` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) + -- if (M = M_0) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#206, var_4))*{var_4 <- `var_4*`, c_1#206 <- `c_1*`} + -- if (|`var_4*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#205, var_3))*{var_3 <- `var_3*`, c_1#205 <- `c_1*`} + -- if (|`var_3*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#204, var_2))*{var_2 <- `var_2*`, c_1#204 <- `c_1*`} + -- if (|`var_2*`| = |`c_1*`|) + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `var_3*` : lane_**, `var_2*` : lane_**, `var_1*` : lane_**, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- if (var_0 = ?(half)) + -- let{`c_1*` : lane_*} c_1#207*{c_1#207 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] + -- let{`c**` : lane_**} c#206*{c#206 <- `c*#32`}*{`c*#32` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#207*{c#207 <- `c*#33`})*{`c*#33` <- `c**`}) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#207*{c#207 <- `c*#33`})*{`c*#33` <- `c**`}| > 0) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#203))*{iter#203 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#205))*{iter#205 <- iter#204}*{iter#204 <- $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#206))*{iter#206 <- var_3}*{var_3 <- `var_3*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#208*{c#208 <- `c*#34`})))*{`c*#34` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#210, var_3))*{var_3 <- `var_3*`, c_1#210 <- `c_1*`} + -- if (|`var_3*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#209, var_2))*{var_2 <- `var_2*`, c_1#209 <- `c_1*`} + -- if (|`var_2*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#208, var_1))*{var_1 <- `var_1*`, c_1#208 <- `c_1*`} + -- if (|`var_1*`| = |`c_1*`|) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `var_3*` : lane_**, `var_2*` : lane_**, `var_1*` : lane_**, var_0 : zero?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- if (var_0 = ?(ZERO_zero)) + -- let{`c_1*` : lane_*} c_1#211*{c_1#211 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) + -- let{`c**` : lane_**} c#209*{c#209 <- `c*#35`}*{`c*#35` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`} ++ [$zero(Lnn_2)]^M_1{}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#210*{c#210 <- `c*#36`})*{`c*#36` <- `c**`}) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#210*{c#210 <- `c*#36`})*{`c*#36` <- `c**`}| > 0) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#207))*{iter#207 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#209))*{iter#209 <- iter#208}*{iter#208 <- $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`} ++ [$zero(Lnn_2)]^M_1{})} + -- (wf_lane_: `%%`(Lnn_2, iter#210))*{iter#210 <- var_3}*{var_3 <- `var_3*`} + -- wf_lane_: `%%`(Lnn_2, $zero(Lnn_2)) + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#211*{c#211 <- `c*#37`})))*{`c*#37` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#214, var_3))*{var_3 <- `var_3*`, c_1#214 <- `c_1*`} + -- if (|`var_3*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#213, var_2))*{var_2 <- `var_2*`, c_1#213 <- `c_1*`} + -- if (|`var_2*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#212, var_1))*{var_1 <- `var_1*`, c_1#212 <- `c_1*`} + -- if (|`var_1*`| = |`c_1*`|) + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vshiftop_: `%%%%%`(ishape, vshiftop_, vec_, u32, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_0{M : nat, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_1{M : nat, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_2{M : nat, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_3{M : nat, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_4{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_5{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_6{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_7{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vbitmaskop_: `%%%`(ishape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_0{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_1{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_2{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_3{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vswizzlop_: `%%%%%`(bshape, vswizzlop_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vswizzlop__case_0{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M_0, SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vswizzlop__case_1{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M_0, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vshufflop_: `%%%%%`(bshape, laneidx*, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, var_0 : vec_}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#139761*{i#139761 <- `i*`}, v_1, v_2, var_0) + -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#215*{c_1#215 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#145*{c_2#145 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#1*{c'_1#1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#216)))*{c_1#216 <- `c_1*`} + -- (if ($proj_lane__2(c_1#216) =/= ?()))*{c_1#216 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#1*{c'_2#1 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#146)))*{c_2#146 <- `c_2*`} + -- (if ($proj_lane__2(c_2#146) =/= ?()))*{c_2#146 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#2)*{c'_1#2 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#2)*{c'_2#2 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#211))*{iter#211 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#212))*{iter#212 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#217)))))*{c_1#217 <- `c_1*`} + -- (if ($proj_lane__2(c_1#217) =/= ?()))*{c_1#217 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#147)))))*{c_2#147 <- `c_2*`} + -- (if ($proj_lane__2(c_2#147) =/= ?()))*{c_2#147 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#3)*{c'_1#3 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#3)*{c'_2#3 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#4)))*{c'_1#4 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#4)))*{c'_2#4 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#218*{c_1#218 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#148*{c_2#148 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#5*{c'_1#5 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#219)))*{c_1#219 <- `c_1*`} + -- (if ($proj_lane__2(c_1#219) =/= ?()))*{c_1#219 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#5*{c'_2#5 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#149)))*{c_2#149 <- `c_2*`} + -- (if ($proj_lane__2(c_2#149) =/= ?()))*{c_2#149 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#6)*{c'_1#6 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#6)*{c'_2#6 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#213))*{iter#213 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#214))*{iter#214 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#220)))))*{c_1#220 <- `c_1*`} + -- (if ($proj_lane__2(c_1#220) =/= ?()))*{c_1#220 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#150)))))*{c_2#150 <- `c_2*`} + -- (if ($proj_lane__2(c_2#150) =/= ?()))*{c_2#150 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#7)*{c'_1#7 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#7)*{c'_2#7 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#8)))*{c'_1#8 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#8)))*{c'_2#8 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#221*{c_1#221 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#151*{c_2#151 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#9*{c'_1#9 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#222)))*{c_1#222 <- `c_1*`} + -- (if ($proj_lane__2(c_1#222) =/= ?()))*{c_1#222 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#9*{c'_2#9 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#152)))*{c_2#152 <- `c_2*`} + -- (if ($proj_lane__2(c_2#152) =/= ?()))*{c_2#152 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#10)*{c'_1#10 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#10)*{c'_2#10 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#215))*{iter#215 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#216))*{iter#216 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#223)))))*{c_1#223 <- `c_1*`} + -- (if ($proj_lane__2(c_1#223) =/= ?()))*{c_1#223 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#153)))))*{c_2#153 <- `c_2*`} + -- (if ($proj_lane__2(c_2#153) =/= ?()))*{c_2#153 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#11)*{c'_1#11 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#11)*{c'_2#11 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#12)))*{c'_1#12 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#12)))*{c'_2#12 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#224*{c_1#224 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#154*{c_2#154 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#13*{c'_1#13 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#225)))*{c_1#225 <- `c_1*`} + -- (if ($proj_lane__2(c_1#225) =/= ?()))*{c_1#225 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#13*{c'_2#13 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#155)))*{c_2#155 <- `c_2*`} + -- (if ($proj_lane__2(c_2#155) =/= ?()))*{c_2#155 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#14)*{c'_1#14 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#14)*{c'_2#14 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#217))*{iter#217 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#218))*{iter#218 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#226)))))*{c_1#226 <- `c_1*`} + -- (if ($proj_lane__2(c_1#226) =/= ?()))*{c_1#226 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#156)))))*{c_2#156 <- `c_2*`} + -- (if ($proj_lane__2(c_2#156) =/= ?()))*{c_2#156 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#15)*{c'_1#15 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#15)*{c'_2#15 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#16)))*{c'_1#16 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#16)))*{c'_2#16 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#227*{c_1#227 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#157*{c_2#157 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#17*{c'_1#17 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#228)))*{c_1#228 <- `c_1*`} + -- (if ($proj_lane__2(c_1#228) =/= ?()))*{c_1#228 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#17*{c'_2#17 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#158)))*{c_2#158 <- `c_2*`} + -- (if ($proj_lane__2(c_2#158) =/= ?()))*{c_2#158 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#18)*{c'_1#18 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#18)*{c'_2#18 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#219))*{iter#219 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#220))*{iter#220 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#229)))))*{c_1#229 <- `c_1*`} + -- (if ($proj_lane__2(c_1#229) =/= ?()))*{c_1#229 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#159)))))*{c_2#159 <- `c_2*`} + -- (if ($proj_lane__2(c_2#159) =/= ?()))*{c_2#159 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#19)*{c'_1#19 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#19)*{c'_2#19 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#20)))*{c'_1#20 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#20)))*{c'_2#20 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#230*{c_1#230 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#160*{c_2#160 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#21*{c'_1#21 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#231)))*{c_1#231 <- `c_1*`} + -- (if ($proj_lane__2(c_1#231) =/= ?()))*{c_1#231 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#21*{c'_2#21 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#161)))*{c_2#161 <- `c_2*`} + -- (if ($proj_lane__2(c_2#161) =/= ?()))*{c_2#161 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#22)*{c'_1#22 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#22)*{c'_2#22 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#221))*{iter#221 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#222))*{iter#222 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#232)))))*{c_1#232 <- `c_1*`} + -- (if ($proj_lane__2(c_1#232) =/= ?()))*{c_1#232 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#162)))))*{c_2#162 <- `c_2*`} + -- (if ($proj_lane__2(c_2#162) =/= ?()))*{c_2#162 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#23)*{c'_1#23 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#23)*{c'_2#23 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#24)))*{c'_1#24 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#24)))*{c'_2#24 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#233*{c_1#233 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#163*{c_2#163 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#25*{c'_1#25 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#234)))*{c_1#234 <- `c_1*`} + -- (if ($proj_lane__2(c_1#234) =/= ?()))*{c_1#234 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#25*{c'_2#25 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#164)))*{c_2#164 <- `c_2*`} + -- (if ($proj_lane__2(c_2#164) =/= ?()))*{c_2#164 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#26)*{c'_1#26 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#26)*{c'_2#26 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#223))*{iter#223 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#224))*{iter#224 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#235)))))*{c_1#235 <- `c_1*`} + -- (if ($proj_lane__2(c_1#235) =/= ?()))*{c_1#235 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#165)))))*{c_2#165 <- `c_2*`} + -- (if ($proj_lane__2(c_2#165) =/= ?()))*{c_2#165 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#27)*{c'_1#27 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#27)*{c'_2#27 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#28)))*{c'_1#28 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#28)))*{c'_2#28 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#236*{c_1#236 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#166*{c_2#166 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#29*{c'_1#29 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#237)))*{c_1#237 <- `c_1*`} + -- (if ($proj_lane__2(c_1#237) =/= ?()))*{c_1#237 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#29*{c'_2#29 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#167)))*{c_2#167 <- `c_2*`} + -- (if ($proj_lane__2(c_2#167) =/= ?()))*{c_2#167 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#30)*{c'_1#30 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#30)*{c'_2#30 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#225))*{iter#225 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#226))*{iter#226 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#238)))))*{c_1#238 <- `c_1*`} + -- (if ($proj_lane__2(c_1#238) =/= ?()))*{c_1#238 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#168)))))*{c_2#168 <- `c_2*`} + -- (if ($proj_lane__2(c_2#168) =/= ?()))*{c_2#168 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#31)*{c'_1#31 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#31)*{c'_2#31 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#32)))*{c'_1#32 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#32)))*{c'_2#32 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#239*{c_1#239 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#169*{c_2#169 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#33*{c'_1#33 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#240)))*{c_1#240 <- `c_1*`} + -- (if ($proj_lane__2(c_1#240) =/= ?()))*{c_1#240 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#33*{c'_2#33 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#170)))*{c_2#170 <- `c_2*`} + -- (if ($proj_lane__2(c_2#170) =/= ?()))*{c_2#170 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#34)*{c'_1#34 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#34)*{c'_2#34 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#227))*{iter#227 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#228))*{iter#228 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#241)))))*{c_1#241 <- `c_1*`} + -- (if ($proj_lane__2(c_1#241) =/= ?()))*{c_1#241 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#171)))))*{c_2#171 <- `c_2*`} + -- (if ($proj_lane__2(c_2#171) =/= ?()))*{c_2#171 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#35)*{c'_1#35 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#35)*{c'_2#35 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#36)))*{c'_1#36 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#36)))*{c'_2#36 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#242*{c_1#242 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#172*{c_2#172 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#37*{c'_1#37 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#243)))*{c_1#243 <- `c_1*`} + -- (if ($proj_lane__2(c_1#243) =/= ?()))*{c_1#243 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#37*{c'_2#37 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#173)))*{c_2#173 <- `c_2*`} + -- (if ($proj_lane__2(c_2#173) =/= ?()))*{c_2#173 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#38)*{c'_1#38 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#38)*{c'_2#38 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#229))*{iter#229 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#230))*{iter#230 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#244)))))*{c_1#244 <- `c_1*`} + -- (if ($proj_lane__2(c_1#244) =/= ?()))*{c_1#244 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#174)))))*{c_2#174 <- `c_2*`} + -- (if ($proj_lane__2(c_2#174) =/= ?()))*{c_2#174 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#39)*{c'_1#39 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#39)*{c'_2#39 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#40)))*{c'_1#40 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#40)))*{c'_2#40 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#245*{c_1#245 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#175*{c_2#175 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#41*{c'_1#41 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#246)))*{c_1#246 <- `c_1*`} + -- (if ($proj_lane__2(c_1#246) =/= ?()))*{c_1#246 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#41*{c'_2#41 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#176)))*{c_2#176 <- `c_2*`} + -- (if ($proj_lane__2(c_2#176) =/= ?()))*{c_2#176 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#42)*{c'_1#42 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#42)*{c'_2#42 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#231))*{iter#231 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#232))*{iter#232 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#247)))))*{c_1#247 <- `c_1*`} + -- (if ($proj_lane__2(c_1#247) =/= ?()))*{c_1#247 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#177)))))*{c_2#177 <- `c_2*`} + -- (if ($proj_lane__2(c_2#177) =/= ?()))*{c_2#177 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#43)*{c'_1#43 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#43)*{c'_2#43 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#44)))*{c'_1#44 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#44)))*{c'_2#44 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#248*{c_1#248 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#178*{c_2#178 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#45*{c'_1#45 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#249)))*{c_1#249 <- `c_1*`} + -- (if ($proj_lane__2(c_1#249) =/= ?()))*{c_1#249 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#45*{c'_2#45 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#179)))*{c_2#179 <- `c_2*`} + -- (if ($proj_lane__2(c_2#179) =/= ?()))*{c_2#179 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#46)*{c'_1#46 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#46)*{c'_2#46 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#233))*{iter#233 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#234))*{iter#234 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#250)))))*{c_1#250 <- `c_1*`} + -- (if ($proj_lane__2(c_1#250) =/= ?()))*{c_1#250 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#180)))))*{c_2#180 <- `c_2*`} + -- (if ($proj_lane__2(c_2#180) =/= ?()))*{c_2#180 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#47)*{c'_1#47 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#47)*{c'_2#47 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#48)))*{c'_1#48 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#48)))*{c'_2#48 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#251*{c_1#251 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#181*{c_2#181 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#49*{c'_1#49 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#252)))*{c_1#252 <- `c_1*`} + -- (if ($proj_lane__2(c_1#252) =/= ?()))*{c_1#252 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#49*{c'_2#49 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#182)))*{c_2#182 <- `c_2*`} + -- (if ($proj_lane__2(c_2#182) =/= ?()))*{c_2#182 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#50)*{c'_1#50 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#50)*{c'_2#50 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#235))*{iter#235 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#236))*{iter#236 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#253)))))*{c_1#253 <- `c_1*`} + -- (if ($proj_lane__2(c_1#253) =/= ?()))*{c_1#253 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#183)))))*{c_2#183 <- `c_2*`} + -- (if ($proj_lane__2(c_2#183) =/= ?()))*{c_2#183 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#51)*{c'_1#51 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#51)*{c'_2#51 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#52)))*{c'_1#52 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#52)))*{c'_2#52 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#254*{c_1#254 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#184*{c_2#184 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#53*{c'_1#53 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#255)))*{c_1#255 <- `c_1*`} + -- (if ($proj_lane__2(c_1#255) =/= ?()))*{c_1#255 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#53*{c'_2#53 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#185)))*{c_2#185 <- `c_2*`} + -- (if ($proj_lane__2(c_2#185) =/= ?()))*{c_2#185 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#54)*{c'_1#54 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#54)*{c'_2#54 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#237))*{iter#237 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#238))*{iter#238 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#256)))))*{c_1#256 <- `c_1*`} + -- (if ($proj_lane__2(c_1#256) =/= ?()))*{c_1#256 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#186)))))*{c_2#186 <- `c_2*`} + -- (if ($proj_lane__2(c_2#186) =/= ?()))*{c_2#186 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#55)*{c'_1#55 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#55)*{c'_2#55 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#56)))*{c'_1#56 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#56)))*{c'_2#56 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#257*{c_1#257 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#187*{c_2#187 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#57*{c'_1#57 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#258)))*{c_1#258 <- `c_1*`} + -- (if ($proj_lane__2(c_1#258) =/= ?()))*{c_1#258 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#57*{c'_2#57 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#188)))*{c_2#188 <- `c_2*`} + -- (if ($proj_lane__2(c_2#188) =/= ?()))*{c_2#188 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#58)*{c'_1#58 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#58)*{c'_2#58 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#239))*{iter#239 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#240))*{iter#240 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#259)))))*{c_1#259 <- `c_1*`} + -- (if ($proj_lane__2(c_1#259) =/= ?()))*{c_1#259 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#189)))))*{c_2#189 <- `c_2*`} + -- (if ($proj_lane__2(c_2#189) =/= ?()))*{c_2#189 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#59)*{c'_1#59 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#59)*{c'_2#59 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#60)))*{c'_1#60 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#60)))*{c'_2#60 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#260*{c_1#260 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#190*{c_2#190 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#61*{c'_1#61 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#261)))*{c_1#261 <- `c_1*`} + -- (if ($proj_lane__2(c_1#261) =/= ?()))*{c_1#261 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#61*{c'_2#61 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#191)))*{c_2#191 <- `c_2*`} + -- (if ($proj_lane__2(c_2#191) =/= ?()))*{c_2#191 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#62)*{c'_1#62 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#62)*{c'_2#62 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#241))*{iter#241 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#242))*{iter#242 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#262)))))*{c_1#262 <- `c_1*`} + -- (if ($proj_lane__2(c_1#262) =/= ?()))*{c_1#262 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#192)))))*{c_2#192 <- `c_2*`} + -- (if ($proj_lane__2(c_2#192) =/= ?()))*{c_2#192 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#63)*{c'_1#63 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#63)*{c'_2#63 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#64)))*{c'_1#64 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#64)))*{c'_2#64 <- `c'_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivadd_pairwise_(N : N, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i#139986*{i#139986 <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax N, [j_1#1 j_2#1]*{j_1#1 <- `j_1*`, j_2#1 <- `j_2*`}) = $proj_uN_0(i#139987).0*{i#139987 <- `i*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#213)*{c#213 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#263*{c_1#263 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#65*{c'_1#65 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#264)))*{c_1#264 <- `c_1*`} + -- let{`c*` : iN*} c#212*{c#212 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#66*{c'_1#66 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#243))*{iter#243 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#265)))))*{c_1#265 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#244))*{iter#244 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#67*{c'_1#67 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#215)*{c#215 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#266*{c_1#266 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#68*{c'_1#68 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#267)))*{c_1#267 <- `c_1*`} + -- let{`c*` : iN*} c#214*{c#214 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#69*{c'_1#69 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#245))*{iter#245 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#268)))))*{c_1#268 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#246))*{iter#246 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#70*{c'_1#70 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#217)*{c#217 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#269*{c_1#269 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#71*{c'_1#71 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#270)))*{c_1#270 <- `c_1*`} + -- let{`c*` : iN*} c#216*{c#216 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#72*{c'_1#72 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#247))*{iter#247 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#271)))))*{c_1#271 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#248))*{iter#248 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#73*{c'_1#73 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#219)*{c#219 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#272*{c_1#272 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#74*{c'_1#74 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#273)))*{c_1#273 <- `c_1*`} + -- let{`c*` : iN*} c#218*{c#218 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#75*{c'_1#75 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#249))*{iter#249 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#274)))))*{c_1#274 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#250))*{iter#250 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#76*{c'_1#76 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#221)*{c#221 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#275*{c_1#275 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#77*{c'_1#77 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#276)))*{c_1#276 <- `c_1*`} + -- let{`c*` : iN*} c#220*{c#220 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#78*{c'_1#78 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#251))*{iter#251 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#277)))))*{c_1#277 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#252))*{iter#252 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#79*{c'_1#79 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#223)*{c#223 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#278*{c_1#278 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#80*{c'_1#80 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#279)))*{c_1#279 <- `c_1*`} + -- let{`c*` : iN*} c#222*{c#222 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#81*{c'_1#81 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#253))*{iter#253 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#280)))))*{c_1#280 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#254))*{iter#254 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#82*{c'_1#82 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#225)*{c#225 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#281*{c_1#281 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#83*{c'_1#83 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#282)))*{c_1#282 <- `c_1*`} + -- let{`c*` : iN*} c#224*{c#224 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#84*{c'_1#84 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#255))*{iter#255 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#283)))))*{c_1#283 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#256))*{iter#256 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#85*{c'_1#85 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#227)*{c#227 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#284*{c_1#284 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#86*{c'_1#86 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#285)))*{c_1#285 <- `c_1*`} + -- let{`c*` : iN*} c#226*{c#226 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#87*{c'_1#87 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#257))*{iter#257 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#286)))))*{c_1#286 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#258))*{iter#258 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#88*{c'_1#88 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#229)*{c#229 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#287*{c_1#287 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#89*{c'_1#89 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#288)))*{c_1#288 <- `c_1*`} + -- let{`c*` : iN*} c#228*{c#228 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#90*{c'_1#90 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#259))*{iter#259 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#289)))))*{c_1#289 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#260))*{iter#260 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#91*{c'_1#91 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#231)*{c#231 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#290*{c_1#290 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#92*{c'_1#92 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#291)))*{c_1#291 <- `c_1*`} + -- let{`c*` : iN*} c#230*{c#230 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#93*{c'_1#93 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#261))*{iter#261 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#292)))))*{c_1#292 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#262))*{iter#262 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#94*{c'_1#94 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#233)*{c#233 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#293*{c_1#293 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#95*{c'_1#95 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#294)))*{c_1#294 <- `c_1*`} + -- let{`c*` : iN*} c#232*{c#232 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#96*{c'_1#96 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#263))*{iter#263 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#295)))))*{c_1#295 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#264))*{iter#264 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#97*{c'_1#97 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#235)*{c#235 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#296*{c_1#296 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#98*{c'_1#98 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#297)))*{c_1#297 <- `c_1*`} + -- let{`c*` : iN*} c#234*{c#234 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#99*{c'_1#99 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#265))*{iter#265 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#298)))))*{c_1#298 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#266))*{iter#266 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#100*{c'_1#100 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#237)*{c#237 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#299*{c_1#299 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#101*{c'_1#101 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#300)))*{c_1#300 <- `c_1*`} + -- let{`c*` : iN*} c#236*{c#236 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#102*{c'_1#102 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#267))*{iter#267 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#301)))))*{c_1#301 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#268))*{iter#268 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#103*{c'_1#103 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#239)*{c#239 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#302*{c_1#302 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#104*{c'_1#104 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#303)))*{c_1#303 <- `c_1*`} + -- let{`c*` : iN*} c#238*{c#238 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#105*{c'_1#105 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#269))*{iter#269 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#304)))))*{c_1#304 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#270))*{iter#270 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#106*{c'_1#106 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#241)*{c#241 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#305*{c_1#305 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#107*{c'_1#107 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#306)))*{c_1#306 <- `c_1*`} + -- let{`c*` : iN*} c#240*{c#240 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#108*{c'_1#108 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#271))*{iter#271 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#307)))))*{c_1#307 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#272))*{iter#272 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#109*{c'_1#109 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#243)*{c#243 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#308*{c_1#308 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#110*{c'_1#110 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#309)))*{c_1#309 <- `c_1*`} + -- let{`c*` : iN*} c#242*{c#242 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#111*{c'_1#111 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#273))*{iter#273 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#310)))))*{c_1#310 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#274))*{iter#274 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#112*{c'_1#112 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextunop__: `%%%%%`(ishape, ishape, vextunop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#1*{i_1#1 <- `i_1*`}, i_2#1*{i_2#1 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#2 j_2#2]*{j_1#2 <- `j_1*`, j_2#2 <- `j_2*`}) = $imul_(N, i_1#2, i_2#2)*{i_1#2 <- `i_1*`, i_2#2 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#275))*{iter#275 <- $concat_(syntax iN, [j_1#3 j_2#3]*{j_1#3 <- `j_1*`, j_2#3 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#3, i_2#3)))*{i_1#3 <- `i_1*`, i_2#3 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_sat_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#4*{i_1#4 <- `i_1*`}, i_2#4*{i_2#4 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#4 j_2#4]*{j_1#4 <- `j_1*`, j_2#4 <- `j_2*`}) = $imul_(N, i_1#5, i_2#5)*{i_1#5 <- `i_1*`, i_2#5 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#276))*{iter#276 <- $concat_(syntax iN, [j_1#5 j_2#5]*{j_1#5 <- `j_1*`, j_2#5 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#6, i_2#6)))*{i_1#6 <- `i_1*`, i_2#6 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#245)*{c#245 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#311*{c_1#311 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#193*{c_2#193 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#113*{c'_1#113 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#312)))*{c_1#312 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#65*{c'_2#65 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#194)))*{c_2#194 <- `c_2*`} + -- let{`c*` : iN*} c#244*{c#244 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#114*{c'_1#114 <- `c'_1*`}, c'_2#66*{c'_2#66 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#277))*{iter#277 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#278))*{iter#278 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#313)))))*{c_1#313 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#195)))))*{c_2#195 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#279))*{iter#279 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#115*{c'_1#115 <- `c'_1*`}, c'_2#67*{c'_2#67 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#247)*{c#247 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#314*{c_1#314 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#196*{c_2#196 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#116*{c'_1#116 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#315)))*{c_1#315 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#68*{c'_2#68 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#197)))*{c_2#197 <- `c_2*`} + -- let{`c*` : iN*} c#246*{c#246 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#117*{c'_1#117 <- `c'_1*`}, c'_2#69*{c'_2#69 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#280))*{iter#280 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#281))*{iter#281 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#316)))))*{c_1#316 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#198)))))*{c_2#198 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#282))*{iter#282 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#118*{c'_1#118 <- `c'_1*`}, c'_2#70*{c'_2#70 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#249)*{c#249 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#317*{c_1#317 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#199*{c_2#199 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#119*{c'_1#119 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#318)))*{c_1#318 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#71*{c'_2#71 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#200)))*{c_2#200 <- `c_2*`} + -- let{`c*` : iN*} c#248*{c#248 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#120*{c'_1#120 <- `c'_1*`}, c'_2#72*{c'_2#72 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#283))*{iter#283 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#284))*{iter#284 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#319)))))*{c_1#319 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#201)))))*{c_2#201 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#285))*{iter#285 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#121*{c'_1#121 <- `c'_1*`}, c'_2#73*{c'_2#73 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#251)*{c#251 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#320*{c_1#320 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#202*{c_2#202 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#122*{c'_1#122 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#321)))*{c_1#321 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#74*{c'_2#74 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#203)))*{c_2#203 <- `c_2*`} + -- let{`c*` : iN*} c#250*{c#250 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#123*{c'_1#123 <- `c'_1*`}, c'_2#75*{c'_2#75 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#286))*{iter#286 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#287))*{iter#287 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#322)))))*{c_1#322 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#204)))))*{c_2#204 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#288))*{iter#288 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#124*{c'_1#124 <- `c'_1*`}, c'_2#76*{c'_2#76 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#253)*{c#253 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#323*{c_1#323 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#205*{c_2#205 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#125*{c'_1#125 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#324)))*{c_1#324 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#77*{c'_2#77 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#206)))*{c_2#206 <- `c_2*`} + -- let{`c*` : iN*} c#252*{c#252 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#126*{c'_1#126 <- `c'_1*`}, c'_2#78*{c'_2#78 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#289))*{iter#289 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#290))*{iter#290 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#325)))))*{c_1#325 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#207)))))*{c_2#207 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#291))*{iter#291 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#127*{c'_1#127 <- `c'_1*`}, c'_2#79*{c'_2#79 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#255)*{c#255 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#326*{c_1#326 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#208*{c_2#208 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#128*{c'_1#128 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#327)))*{c_1#327 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#80*{c'_2#80 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#209)))*{c_2#209 <- `c_2*`} + -- let{`c*` : iN*} c#254*{c#254 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#129*{c'_1#129 <- `c'_1*`}, c'_2#81*{c'_2#81 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#292))*{iter#292 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#293))*{iter#293 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#328)))))*{c_1#328 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#210)))))*{c_2#210 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#294))*{iter#294 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#130*{c'_1#130 <- `c'_1*`}, c'_2#82*{c'_2#82 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#257)*{c#257 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#329*{c_1#329 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#211*{c_2#211 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#131*{c'_1#131 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#330)))*{c_1#330 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#83*{c'_2#83 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#212)))*{c_2#212 <- `c_2*`} + -- let{`c*` : iN*} c#256*{c#256 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#132*{c'_1#132 <- `c'_1*`}, c'_2#84*{c'_2#84 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#295))*{iter#295 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#296))*{iter#296 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#331)))))*{c_1#331 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#213)))))*{c_2#213 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#297))*{iter#297 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#133*{c'_1#133 <- `c'_1*`}, c'_2#85*{c'_2#85 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#259)*{c#259 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#332*{c_1#332 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#214*{c_2#214 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#134*{c'_1#134 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#333)))*{c_1#333 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#86*{c'_2#86 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#215)))*{c_2#215 <- `c_2*`} + -- let{`c*` : iN*} c#258*{c#258 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#135*{c'_1#135 <- `c'_1*`}, c'_2#87*{c'_2#87 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#298))*{iter#298 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#299))*{iter#299 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#334)))))*{c_1#334 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#216)))))*{c_2#216 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#300))*{iter#300 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#136*{c'_1#136 <- `c'_1*`}, c'_2#88*{c'_2#88 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#261)*{c#261 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#335*{c_1#335 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#217*{c_2#217 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#137*{c'_1#137 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#336)))*{c_1#336 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#89*{c'_2#89 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#218)))*{c_2#218 <- `c_2*`} + -- let{`c*` : iN*} c#260*{c#260 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#138*{c'_1#138 <- `c'_1*`}, c'_2#90*{c'_2#90 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#301))*{iter#301 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#302))*{iter#302 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#337)))))*{c_1#337 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#219)))))*{c_2#219 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#303))*{iter#303 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#139*{c'_1#139 <- `c'_1*`}, c'_2#91*{c'_2#91 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#263)*{c#263 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#338*{c_1#338 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#220*{c_2#220 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#140*{c'_1#140 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#339)))*{c_1#339 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#92*{c'_2#92 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#221)))*{c_2#221 <- `c_2*`} + -- let{`c*` : iN*} c#262*{c#262 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#141*{c'_1#141 <- `c'_1*`}, c'_2#93*{c'_2#93 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#304))*{iter#304 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#305))*{iter#305 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#340)))))*{c_1#340 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#222)))))*{c_2#222 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#306))*{iter#306 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#142*{c'_1#142 <- `c'_1*`}, c'_2#94*{c'_2#94 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#265)*{c#265 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#341*{c_1#341 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#223*{c_2#223 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#143*{c'_1#143 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#342)))*{c_1#342 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#95*{c'_2#95 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#224)))*{c_2#224 <- `c_2*`} + -- let{`c*` : iN*} c#264*{c#264 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#144*{c'_1#144 <- `c'_1*`}, c'_2#96*{c'_2#96 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#307))*{iter#307 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#308))*{iter#308 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#343)))))*{c_1#343 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#225)))))*{c_2#225 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#309))*{iter#309 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#145*{c'_1#145 <- `c'_1*`}, c'_2#97*{c'_2#97 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#267)*{c#267 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#344*{c_1#344 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#226*{c_2#226 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#146*{c'_1#146 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#345)))*{c_1#345 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#98*{c'_2#98 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#227)))*{c_2#227 <- `c_2*`} + -- let{`c*` : iN*} c#266*{c#266 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#147*{c'_1#147 <- `c'_1*`}, c'_2#99*{c'_2#99 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#310))*{iter#310 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#311))*{iter#311 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#346)))))*{c_1#346 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#228)))))*{c_2#228 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#312))*{iter#312 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#148*{c'_1#148 <- `c'_1*`}, c'_2#100*{c'_2#100 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#269)*{c#269 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#347*{c_1#347 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#229*{c_2#229 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#149*{c'_1#149 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#348)))*{c_1#348 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#101*{c'_2#101 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#230)))*{c_2#230 <- `c_2*`} + -- let{`c*` : iN*} c#268*{c#268 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#150*{c'_1#150 <- `c'_1*`}, c'_2#102*{c'_2#102 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#313))*{iter#313 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#314))*{iter#314 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#349)))))*{c_1#349 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#231)))))*{c_2#231 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#315))*{iter#315 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#151*{c'_1#151 <- `c'_1*`}, c'_2#103*{c'_2#103 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#271)*{c#271 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#350*{c_1#350 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#232*{c_2#232 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#152*{c'_1#152 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#351)))*{c_1#351 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#104*{c'_2#104 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#233)))*{c_2#233 <- `c_2*`} + -- let{`c*` : iN*} c#270*{c#270 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#153*{c'_1#153 <- `c'_1*`}, c'_2#105*{c'_2#105 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#316))*{iter#316 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#317))*{iter#317 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#352)))))*{c_1#352 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#234)))))*{c_2#234 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#318))*{iter#318 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#154*{c'_1#154 <- `c'_1*`}, c'_2#106*{c'_2#106 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#273)*{c#273 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#353*{c_1#353 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#235*{c_2#235 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#155*{c'_1#155 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#354)))*{c_1#354 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#107*{c'_2#107 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#236)))*{c_2#236 <- `c_2*`} + -- let{`c*` : iN*} c#272*{c#272 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#156*{c'_1#156 <- `c'_1*`}, c'_2#108*{c'_2#108 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#319))*{iter#319 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#320))*{iter#320 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#355)))))*{c_1#355 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#237)))))*{c_2#237 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#321))*{iter#321 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#157*{c'_1#157 <- `c'_1*`}, c'_2#109*{c'_2#109 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#275)*{c#275 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#356*{c_1#356 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#238*{c_2#238 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#158*{c'_1#158 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#357)))*{c_1#357 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#110*{c'_2#110 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#239)))*{c_2#239 <- `c_2*`} + -- let{`c*` : iN*} c#274*{c#274 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#159*{c'_1#159 <- `c'_1*`}, c'_2#111*{c'_2#111 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#322))*{iter#322 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#323))*{iter#323 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#358)))))*{c_1#358 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#240)))))*{c_2#240 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#324))*{iter#324 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#160*{c'_1#160 <- `c'_1*`}, c'_2#112*{c'_2#112 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivmul_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1#7*{i_1#7 <- `i_1*`}, i_2#7*{i_2#7 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextbinop__: `%%%%%%`(ishape, ishape, vextbinop__, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_16{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_17{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_18{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_19{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_20{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_21{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_22{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_23{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_24{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_25{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_26{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_27{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_28{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_29{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_30{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_31{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_32{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_33{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_34{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_35{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_36{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_37{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_38{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_39{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_40{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_41{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_42{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_43{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_44{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_45{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_46{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_47{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_0{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#325))*{iter#325 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_1{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#326))*{iter#326 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_2{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#327))*{iter#327 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_3{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#328))*{iter#328 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_4{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#329))*{iter#329 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_5{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#330))*{iter#330 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_6{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#331))*{iter#331 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_7{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#332))*{iter#332 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_8{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#333))*{iter#333 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_9{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#334))*{iter#334 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_10{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#335))*{iter#335 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_11{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#336))*{iter#336 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_12{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#337))*{iter#337 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_13{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#338))*{iter#338 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_14{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#339))*{iter#339 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_15{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#340))*{iter#340 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax num = + | CONST(numtype : numtype, num_) + +def $val_num(num) : val + def $val_num{x0 : numtype, x1 : num_}(CONST_num(x0, x1)) = CONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_num: `%`(num) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule num_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_num(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax vec = + | VCONST(vectype : vectype, vec_) + +def $val_vec(vec) : val + def $val_vec{x0 : vectype, x1 : vec_}(VCONST_vec(x0, x1)) = VCONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_vec: `%`(vec) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule vec_case_0{vectype : vectype, var_0 : vec_}: + `%`(VCONST_vec(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax result = + | _VALS(`val*` : val*) + | `(REF.EXN_ADDR%)THROW_REF`(exnaddr : exnaddr) + | TRAP + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_result: `%`(result) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_0{`val*` : val*}: + `%`(_VALS_result(`val*`)) + -- (wf_val: `%`(val))*{val <- `val*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_1{exnaddr : exnaddr}: + `%`(`(REF.EXN_ADDR%)THROW_REF`_result(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_2: + `%`(TRAP_result) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostfunc = + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funccode = + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | `...` + +def $funccode_func(func) : funccode + def $funccode_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_funccode(x0, x1, x2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funccode: `%`(funccode) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_funccode(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_1: + `%`(`...`_funccode) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax taginst = +{ + TYPE tagtype +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_taginst: `%`(taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_case_{var_0 : tagtype}: + `%`({TYPE var_0}) + -- wf_typeuse: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globalinst = +{ + TYPE globaltype, + VALUE val +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_globalinst: `%`(globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_case_{var_0 : globaltype, var_1 : val}: + `%`({TYPE var_0, VALUE var_1}) + -- wf_globaltype: `%`(var_0) + -- wf_val: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax meminst = +{ + TYPE memtype, + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_meminst: `%`(meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_case_{var_0 : memtype, var_1 : byte*}: + `%`({TYPE var_0, BYTES var_1}) + -- wf_memtype: `%`(var_0) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableinst = +{ + TYPE tabletype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_tableinst: `%`(tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_case_{var_0 : tabletype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_tabletype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcinst = +{ + TYPE deftype, + MODULE moduleinst, + CODE funccode +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funcinst: `%`(funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_case_{var_0 : deftype, var_1 : moduleinst, var_2 : funccode}: + `%`({TYPE var_0, MODULE var_1, CODE var_2}) + -- wf_moduleinst: `%`(var_1) + -- wf_funccode: `%`(var_2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax datainst = +{ + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_datainst: `%`(datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_case_{var_0 : byte*}: + `%`({BYTES var_0}) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax eleminst = +{ + TYPE elemtype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_eleminst: `%`(eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_case_{var_0 : elemtype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_reftype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax packval = + | PACK(packtype : packtype, iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_packval: `%`(packval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packval_case_0{packtype : packtype, var_0 : iN}: + `%`(PACK_packval(packtype, var_0)) + -- wf_uN: `%%`($psize(packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax fieldval = + | CONST(numtype : numtype, num_) + | VCONST(vectype : vectype, vec_) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + | PACK(packtype : packtype, iN) + +def $fieldval_packval(packval) : fieldval + def $fieldval_packval{x0 : packtype, x1 : iN}(PACK_packval(x0, x1)) = PACK_fieldval(x0, x1) + +def $fieldval_ref(ref) : fieldval + def $fieldval_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_fieldval(x0) + def $fieldval_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_fieldval + def $fieldval_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_fieldval(x0) + +def $fieldval_val(val) : fieldval + def $fieldval_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_fieldval(x0, x1) + def $fieldval_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_fieldval(x0, x1) + def $fieldval_val{x0 : u31}(`REF.I31_NUM`_val(x0)) = `REF.I31_NUM`_fieldval(x0) + def $fieldval_val(`REF.NULL_ADDR`_val) = `REF.NULL_ADDR`_fieldval + def $fieldval_val{x0 : structaddr}(`REF.STRUCT_ADDR`_val(x0)) = `REF.STRUCT_ADDR`_fieldval(x0) + def $fieldval_val{x0 : arrayaddr}(`REF.ARRAY_ADDR`_val(x0)) = `REF.ARRAY_ADDR`_fieldval(x0) + def $fieldval_val{x0 : funcaddr}(`REF.FUNC_ADDR`_val(x0)) = `REF.FUNC_ADDR`_fieldval(x0) + def $fieldval_val{x0 : exnaddr}(`REF.EXN_ADDR`_val(x0)) = `REF.EXN_ADDR`_fieldval(x0) + def $fieldval_val{x0 : hostaddr}(`REF.HOST_ADDR`_val(x0)) = `REF.HOST_ADDR`_fieldval(x0) + def $fieldval_val{x0 : ref}(`REF.EXTERN`_val(x0)) = `REF.EXTERN`_fieldval(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_fieldval: `%`(fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_fieldval(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_1{vectype : vectype, var_0 : vec_}: + `%`(VCONST_fieldval(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_2{u31 : u31}: + `%`(`REF.I31_NUM`_fieldval(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_3: + `%`(`REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_4{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_5{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_6{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_7{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_8{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_9{ref : ref}: + `%`(`REF.EXTERN`_fieldval(ref)) + -- wf_ref: `%`(ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_10{packtype : packtype, var_0 : iN}: + `%`(PACK_fieldval(packtype, var_0)) + -- wf_uN: `%%`($psize(packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_structinst: `%`(structinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_arrayinst: `%`(arrayinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exninst = +{ + TAG tagaddr, + FIELDS val* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exninst: `%`(exninst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_case_{var_0 : tagaddr, var_1 : val*}: + `%`({TAG var_0, FIELDS var_1}) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax store = +{ + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_store: `%`(store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: + `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) + -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} + -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} + -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} + -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} + -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} + -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} + -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} + -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} + -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} + -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax state = + | `%;%`(store : store, frame : frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_state: `%`(state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule state_case_0{store : store, frame : frame}: + `%`(`%;%`_state(store, frame)) + -- wf_store: `%`(store) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax config = + | `%;%`(state : state, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_config: `%`(config) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule config_case_0{state : state, `instr*` : instr*}: + `%`(`%;%`_config(state, `instr*`)) + -- wf_state: `%`(state) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $Ki : nat + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $Ki = 1024 + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $packfield_(storagetype : storagetype, val : val) : fieldval? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(BOT_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{`null?` : null?, heaptype : heaptype, val : val}(REF_storagetype(`null?`, heaptype), val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(V128_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(F64_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(F32_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(I64_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(I32_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation packfield__is_wf: `%%%`(storagetype : storagetype, val : val, ret_val : fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packfield__is_wf_0{storagetype : storagetype, val : val, ret_val : fieldval}: + `%%%`(storagetype, val, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_val: `%`(val) + -- if (ret_val = !($packfield_(storagetype, val))) + -- if ($packfield_(storagetype, val) =/= ?()) + -- wf_fieldval: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(BOT_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(V128_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(F64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(F32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(I64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(I32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(BOT_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(V128_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(F64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(F32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(I64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(I32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(BOT_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(V128_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(F64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(F32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(I64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(I32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(BOT_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(V128_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(F64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(F32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(I64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(I32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(BOT_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(V128_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(F64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(F32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(I64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(I32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(BOT_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(V128_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(F64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(F32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(I64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(I32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(BOT_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{`null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(V128_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(F64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(F32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(I64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(I32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(BOT_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(V128_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(F64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(F32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(I64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(I32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(BOT_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(V128_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(F64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(F32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(I64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(I32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(BOT_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(V128_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(F64_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(F32_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(I64_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation unpackfield__is_wf: `%%%%`(storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule unpackfield__is_wf_0{storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val}: + `%%%%`(storagetype, var_0, fieldval, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = !($unpackfield_(storagetype, var_0, fieldval))) + -- if ($unpackfield_(storagetype, var_0, fieldval) =/= ?()) + -- wf_val: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 +relation fun_tagsxa: `%%`(externaddr*, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([TAG_externaddr(a)] ++ xa#1*{xa#1 <- `xa*`}, [a] ++ var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([externaddr] ++ xa#2*{xa#2 <- `xa*`}, var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 +relation fun_globalsxa: `%%`(externaddr*, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([GLOBAL_externaddr(a)] ++ xa#3*{xa#3 <- `xa*`}, [a] ++ var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([externaddr] ++ xa#4*{xa#4 <- `xa*`}, var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 +relation fun_memsxa: `%%`(externaddr*, memaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([MEM_externaddr(a)] ++ xa#5*{xa#5 <- `xa*`}, [a] ++ var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([externaddr] ++ xa#6*{xa#6 <- `xa*`}, var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 +relation fun_tablesxa: `%%`(externaddr*, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([TABLE_externaddr(a)] ++ xa#7*{xa#7 <- `xa*`}, [a] ++ var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([externaddr] ++ xa#8*{xa#8 <- `xa*`}, var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 +relation fun_funcsxa: `%%`(externaddr*, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([FUNC_externaddr(a)] ++ xa#9*{xa#9 <- `xa*`}, [a] ++ var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([externaddr] ++ xa#10*{xa#10 <- `xa*`}, var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $store(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $store{s : store, f : frame}(`%;%`_state(s, f)) = s + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation store_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_is_wf_0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $store(state)) + -- wf_store: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $frame(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation frame_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_is_wf_0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $frame(state)) + -- wf_frame: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tagaddr(state : state) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $moduleinst(state : state) : moduleinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation moduleinst_is_wf: `%%`(state : state, ret_val : moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_is_wf_0{state : state, ret_val : moduleinst}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $moduleinst(state)) + -- wf_moduleinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $taginst(state : state) : taginst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation taginst_is_wf: `%%`(state : state, ret_val : taginst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_is_wf_0{state : state, ret_val : taginst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $taginst(state)) + -- (wf_taginst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $globalinst(state : state) : globalinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation globalinst_is_wf: `%%`(state : state, ret_val : globalinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_is_wf_0{state : state, ret_val : globalinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $globalinst(state)) + -- (wf_globalinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $meminst(state : state) : meminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation meminst_is_wf: `%%`(state : state, ret_val : meminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_is_wf_0{state : state, ret_val : meminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $meminst(state)) + -- (wf_meminst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tableinst(state : state) : tableinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tableinst_is_wf: `%%`(state : state, ret_val : tableinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_is_wf_0{state : state, ret_val : tableinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $tableinst(state)) + -- (wf_tableinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $funcinst(state : state) : funcinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation funcinst_is_wf: `%%`(state : state, ret_val : funcinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_is_wf_0{state : state, ret_val : funcinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $funcinst(state)) + -- (wf_funcinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $datainst(state : state) : datainst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation datainst_is_wf: `%%`(state : state, ret_val : datainst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_is_wf_0{state : state, ret_val : datainst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $datainst(state)) + -- (wf_datainst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $eleminst(state : state) : eleminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation eleminst_is_wf: `%%`(state : state, ret_val : eleminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_is_wf_0{state : state, ret_val : eleminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $eleminst(state)) + -- (wf_eleminst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $structinst(state : state) : structinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation structinst_is_wf: `%%`(state : state, ret_val : structinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_is_wf_0{state : state, ret_val : structinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $structinst(state)) + -- (wf_structinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $arrayinst(state : state) : arrayinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation arrayinst_is_wf: `%%`(state : state, ret_val : arrayinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_is_wf_0{state : state, ret_val : arrayinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $arrayinst(state)) + -- (wf_arrayinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $exninst(state : state) : exninst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation exninst_is_wf: `%%`(state : state, ret_val : exninst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_is_wf_0{state : state, ret_val : exninst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $exninst(state)) + -- (wf_exninst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fof(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fof{z : state}(z) = $frame(z) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fof_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fof_is_wf_0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $fof(state)) + -- wf_frame: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $type(state : state, typeidx : typeidx) : deftype + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $type{z : state, x : uN}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $sof(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $sof{z : state}(z) = $store(z) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation sof_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule sof_is_wf_0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $sof(state)) + -- wf_store: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tag(state : state, tagidx : tagidx) : taginst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tag_is_wf: `%%%`(state : state, tagidx : tagidx, ret_val : taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tag_is_wf_0{state : state, tagidx : tagidx, ret_val : taginst}: + `%%%`(state, tagidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $tag(state, tagidx)) + -- wf_taginst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $global(state : state, globalidx : globalidx) : globalinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation global_is_wf: `%%%`(state : state, globalidx : globalidx, ret_val : globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule global_is_wf_0{state : state, globalidx : globalidx, ret_val : globalinst}: + `%%%`(state, globalidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $global(state, globalidx)) + -- wf_globalinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $mem(state : state, memidx : memidx) : meminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation mem_is_wf: `%%%`(state : state, memidx : memidx, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule mem_is_wf_0{state : state, memidx : memidx, ret_val : meminst}: + `%%%`(state, memidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $mem(state, memidx)) + -- wf_meminst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $table(state : state, tableidx : tableidx) : tableinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation table_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule table_is_wf_0{state : state, tableidx : tableidx, ret_val : tableinst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $table(state, tableidx)) + -- wf_tableinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $func(state : state, funcidx : funcidx) : funcinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation func_is_wf: `%%%`(state : state, funcidx : funcidx, ret_val : funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule func_is_wf_0{state : state, funcidx : funcidx, ret_val : funcinst}: + `%%%`(state, funcidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $func(state, funcidx)) + -- wf_funcinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $data(state : state, dataidx : dataidx) : datainst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation data_is_wf: `%%%`(state : state, dataidx : dataidx, ret_val : datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule data_is_wf_0{state : state, dataidx : dataidx, ret_val : datainst}: + `%%%`(state, dataidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $data(state, dataidx)) + -- wf_datainst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $elem(state : state, tableidx : tableidx) : eleminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation elem_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule elem_is_wf_0{state : state, tableidx : tableidx, ret_val : eleminst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $elem(state, tableidx)) + -- wf_eleminst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $local(state : state, localidx : localidx) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation local_is_wf: `%%%`(state : state, localidx : localidx, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule local_is_wf_0{state : state, localidx : localidx, ret_val : val?}: + `%%%`(state, localidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $local(state, localidx)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_local(state : state, localidx : localidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_local_is_wf: `%%%%`(state : state, localidx : localidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_local_is_wf_0{state : state, localidx : localidx, val : val, ret_val : state}: + `%%%%`(state, localidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_local(state, localidx, val)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_global(state : state, globalidx : globalidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_global_is_wf: `%%%%`(state : state, globalidx : globalidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_global_is_wf_0{state : state, globalidx : globalidx, val : val, ret_val : state}: + `%%%%`(state, globalidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_global(state, globalidx, val)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_table_is_wf: `%%%%%`(state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_table_is_wf_0{state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state}: + `%%%%%`(state, tableidx, nat, ref, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_ref: `%`(ref) + -- if (ret_val = $with_table(state, tableidx, nat, ref)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_tableinst_is_wf: `%%%%`(state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_tableinst_is_wf_0{state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state}: + `%%%%`(state, tableidx, tableinst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_tableinst: `%`(tableinst) + -- if (ret_val = $with_tableinst(state, tableidx, tableinst)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_mem{z : state, x : uN, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b#1*{b#1 <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_mem_is_wf: `%%%%%%`(state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_mem_is_wf_0{state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state}: + `%%%%%%`(state, memidx, nat, nat_0, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_mem(state, memidx, nat, nat_0, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_meminst_is_wf: `%%%%`(state : state, memidx : memidx, meminst : meminst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_meminst_is_wf_0{state : state, memidx : memidx, meminst : meminst, ret_val : state}: + `%%%%`(state, memidx, meminst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- wf_meminst: `%`(meminst) + -- if (ret_val = $with_meminst(state, memidx, meminst)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_elem(state : state, elemidx : elemidx, ref*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_elem{z : state, x : uN, `r*` : ref*}(z, x, r#1*{r#1 <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_elem_is_wf: `%%%%`(state : state, elemidx : elemidx, var_0 : ref*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_elem_is_wf_0{state : state, elemidx : elemidx, var_0 : ref*, ret_val : state}: + `%%%%`(state, elemidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, elemidx) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_elem(state, elemidx, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_data(state : state, dataidx : dataidx, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b#2*{b#2 <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_data_is_wf: `%%%%`(state : state, dataidx : dataidx, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_data_is_wf_0{state : state, dataidx : dataidx, var_0 : byte*, ret_val : state}: + `%%%%`(state, dataidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_data(state, dataidx, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_struct_is_wf: `%%%%%`(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_struct_is_wf_0{state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, structaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_struct(state, structaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_array_is_wf: `%%%%%`(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_array_is_wf_0{state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, arrayaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_array(state, arrayaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_structinst(state : state, structinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_structinst{z : state, `si*` : structinst*}(z, si#1*{si#1 <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_structinst_is_wf: `%%%`(state : state, var_0 : structinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_structinst_is_wf_0{state : state, var_0 : structinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_structinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_structinst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_arrayinst(state : state, arrayinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai#1*{ai#1 <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_arrayinst_is_wf: `%%%`(state : state, var_0 : arrayinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_arrayinst_is_wf_0{state : state, var_0 : arrayinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_arrayinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_arrayinst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_exninst(state : state, exninst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_exninst{z : state, `exn*` : exninst*}(z, exn#1*{exn#1 <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_exninst_is_wf: `%%%`(state : state, var_0 : exninst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_exninst_is_wf_0{state : state, var_0 : exninst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_exninst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_exninst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growtable_before_fun_growtable_case_1: `%%%`(tableinst, nat, ref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, i' : uN}: + `%%%`(tableinst, n, r) + -- let{at : addrtype, i : u64, `j?` : u64?, rt : reftype, `r'*` : ref*} {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#1?{j#1 <- `j?`}), rt), REFS r'#1*{r'#1 <- `r'*`}} = tableinst + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#2?{j#2 <- `j?`}), rt), REFS r'#2*{r'#2 <- `r'*`} ++ r^n{}}) + -- if ($proj_uN_0(i').0 = (|r'#3*{r'#3 <- `r'*`}| + n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#3).0))?{j#3 <- `j?`} + -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#4?{j#4 <- `j?`}), rt), REFS r'#4*{r'#4 <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#5?{j#5 <- `j?`}), rt), REFS r'#5*{r'#5 <- `r'*`} ++ r^n{}}) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, i' : uN}: + `%%%%`(tableinst, n, r, ?(tableinst')) + -- let{at : addrtype, i : u64, `j?` : u64?, rt : reftype, `r'*` : ref*} {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#1?{j#1 <- `j?`}), rt), REFS r'#1*{r'#1 <- `r'*`}} = tableinst + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#2?{j#2 <- `j?`}), rt), REFS r'#2*{r'#2 <- `r'*`} ++ r^n{}}) + -- if ($proj_uN_0(i').0 = (|r'#3*{r'#3 <- `r'*`}| + n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#3).0))?{j#3 <- `j?`} + -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#4?{j#4 <- `j?`}), rt), REFS r'#4*{r'#4 <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#5?{j#5 <- `j?`}), rt), REFS r'#5*{r'#5 <- `r'*`} ++ r^n{}}) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_1{x0 : tableinst, x1 : nat, x2 : ref}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_growtable_before_fun_growtable_case_1: `%%%`(x0, x1, x2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growtable_is_wf: `%%%%`(tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growtable_is_wf_0{tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst, var_0 : tableinst?}: + `%%%%`(tableinst, nat, ref, ret_val) + -- wf_tableinst: `%`(tableinst) + -- wf_ref: `%`(ref) + -- if (ret_val = !(var_0)) + -- if (var_0 =/= ?()) + -- wf_tableinst: `%`(ret_val) + -- fun_growtable: `%%%%`(tableinst, nat, ref, var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem_before_fun_growmem_case_1: `%%`(meminst, nat) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, i' : uN}: + `%%`(meminst, n) + -- let{at : addrtype, i : u64, `j?` : u64?, `b*` : byte*} {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#3*{b#3 <- `b*`}} = meminst + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#4*{b#4 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#5*{b#5 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#8).0))?{j#8 <- `j?`} + -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#9?{j#9 <- `j?`})), BYTES b#6*{b#6 <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#10?{j#10 <- `j?`})), BYTES b#7*{b#7 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem: `%%%`(meminst, nat, meminst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, i' : uN}: + `%%%`(meminst, n, ?(meminst')) + -- let{at : addrtype, i : u64, `j?` : u64?, `b*` : byte*} {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#3*{b#3 <- `b*`}} = meminst + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#4*{b#4 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#5*{b#5 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#8).0))?{j#8 <- `j?`} + -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#9?{j#9 <- `j?`})), BYTES b#6*{b#6 <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#10?{j#10 <- `j?`})), BYTES b#7*{b#7 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_1{x0 : meminst, x1 : nat}: + `%%%`(x0, x1, ?()) + -- ~ fun_growmem_before_fun_growmem_case_1: `%%`(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growmem_is_wf: `%%%`(meminst : meminst, nat : nat, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growmem_is_wf_0{meminst : meminst, nat : nat, ret_val : meminst, var_0 : meminst?}: + `%%%`(meminst, nat, ret_val) + -- wf_meminst: `%`(meminst) + -- if (ret_val = !(var_0)) + -- if (var_0 =/= ?()) + -- wf_meminst: `%`(ret_val) + -- fun_growmem: `%%%`(meminst, nat, var_0) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Num_ok: `%|-%:%`(store, num, numtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, nt : numtype, c : num_}: + `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Vec_ok: `%|-%:%`(store, vec, vectype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, vt : vectype, c : vec_}: + `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +relation Ref_ok: `%|-%:%`(store, ref, reftype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.36 + rule null{s : store}: + `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.31 + rule i31{s : store, i : u31}: + `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.I31_NUM`_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 + rule struct{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.STRUCTS_store[a].TYPE_structinst = dt) + -- if (a < |s.STRUCTS_store|) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 + rule array{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) + -- if (a < |s.ARRAYS_store|) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 + rule func{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.FUNCS_store[a].TYPE_funcinst = dt) + -- if (a < |s.FUNCS_store|) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 + rule exn{s : store, a : addr, exn : exninst}: + `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) + -- if (s.EXNS_store[a] = exn) + -- if (a < |s.EXNS_store|) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.33 + rule host{s : store, a : addr}: + `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.HOST_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 + rule extern{s : store, ref : ref}: + `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) + -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.EXTERN`_ref(ref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-69.34 + rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: + `%|-%:%`(s, ref, rt) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Val_ok: `%|-%:%`(store, val, valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule num{s : store, num : num, nt : numtype}: + `%|-%:%`(s, $val_num(num), $valtype_numtype(nt)) + -- Num_ok: `%|-%:%`(s, num, nt) + -- wf_store: `%`(s) + -- wf_num: `%`(num) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule vec{s : store, vec : vec, vt : vectype}: + `%|-%:%`(s, $val_vec(vec), $valtype_vectype(vt)) + -- Vec_ok: `%|-%:%`(s, vec, vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule ref{s : store, ref : ref, rt : reftype}: + `%|-%:%`(s, $val_ref(ref), $valtype_reftype(rt)) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Packval_ok: `%|-%:%`(store, packval, packtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, pt : packtype, c : iN}: + `%|-%:%`(s, PACK_packval(pt, c), pt) + -- wf_store: `%`(s) + -- wf_packval: `%`(PACK_packval(pt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule val{s : store, val : val, t : valtype}: + `%|-%:%`(s, $fieldval_val(val), $storagetype_valtype(t)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_val: `%`(val) + -- wf_valtype: `%`(t) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule packval{s : store, packval : packval, pt : packtype}: + `%|-%:%`(s, $fieldval_packval(packval), $storagetype_packtype(pt)) + -- Packval_ok: `%|-%:%`(s, packval, pt) + -- wf_store: `%`(s) + -- wf_packval: `%`(packval) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-104.84 +relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:106.1-108.28 + rule tag{s : store, a : addr, taginst : taginst}: + `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- if (s.TAGS_store[a] = taginst) + -- if (a < |s.TAGS_store|) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:110.1-112.34 + rule global{s : store, a : addr, globalinst : globalinst}: + `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- if (s.GLOBALS_store[a] = globalinst) + -- if (a < |s.GLOBALS_store|) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:114.1-116.28 + rule mem{s : store, a : addr, meminst : meminst}: + `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- if (s.MEMS_store[a] = meminst) + -- if (a < |s.MEMS_store|) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:118.1-120.32 + rule table{s : store, a : addr, tableinst : tableinst}: + `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- if (s.TABLES_store[a] = tableinst) + -- if (a < |s.TABLES_store|) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:122.1-124.30 + rule func{s : store, a : addr, funcinst : funcinst}: + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) + -- if (s.FUNCS_store[a] = funcinst) + -- if (a < |s.FUNCS_store|) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:126.1-130.37 + rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: + `%|-%:%`(s, externaddr, xt) + -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') + -- Externtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt) + -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_valtype: `%%%`(moduleinst, valtype, valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_valtype_case_0{moduleinst : moduleinst, t : valtype, var_0 : valtype}: + `%%%`(moduleinst, t, var_0) + -- fun_subst_all_valtype: `%%%`(t, (iter_val#3 : deftype <: typeuse)*{iter_val#3 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_valtype_is_wf: `%%%`(moduleinst : moduleinst, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_valtype_is_wf_0{moduleinst : moduleinst, valtype : valtype, ret_val : valtype, var_0 : valtype}: + `%%%`(moduleinst, valtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_valtype: `%`(valtype) + -- if (ret_val = var_0) + -- wf_valtype: `%`(ret_val) + -- fun_inst_valtype: `%%%`(moduleinst, valtype, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_reftype: `%%%`(moduleinst, reftype, reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_reftype_case_0{moduleinst : moduleinst, rt : reftype, var_0 : reftype}: + `%%%`(moduleinst, rt, var_0) + -- fun_subst_all_reftype: `%%%`(rt, (iter_val#4 : deftype <: typeuse)*{iter_val#4 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_reftype_is_wf: `%%%`(moduleinst : moduleinst, reftype : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_reftype_is_wf_0{moduleinst : moduleinst, reftype : reftype, ret_val : reftype, var_0 : reftype}: + `%%%`(moduleinst, reftype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_reftype: `%`(reftype) + -- if (ret_val = var_0) + -- wf_reftype: `%`(ret_val) + -- fun_inst_reftype: `%%%`(moduleinst, reftype, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_globaltype: `%%%`(moduleinst, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_globaltype_case_0{moduleinst : moduleinst, gt : globaltype, var_0 : globaltype}: + `%%%`(moduleinst, gt, var_0) + -- fun_subst_all_globaltype: `%%%`(gt, (iter_val#5 : deftype <: typeuse)*{iter_val#5 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_globaltype_is_wf: `%%%`(moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_globaltype_is_wf_0{moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype, var_0 : globaltype}: + `%%%`(moduleinst, globaltype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = var_0) + -- wf_globaltype: `%`(ret_val) + -- fun_inst_globaltype: `%%%`(moduleinst, globaltype, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_memtype: `%%%`(moduleinst, memtype, memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_memtype_case_0{moduleinst : moduleinst, mt : memtype, var_0 : memtype}: + `%%%`(moduleinst, mt, var_0) + -- fun_subst_all_memtype: `%%%`(mt, (iter_val#6 : deftype <: typeuse)*{iter_val#6 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_memtype_is_wf: `%%%`(moduleinst : moduleinst, memtype : memtype, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_memtype_is_wf_0{moduleinst : moduleinst, memtype : memtype, ret_val : memtype, var_0 : memtype}: + `%%%`(moduleinst, memtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_memtype: `%`(memtype) + -- if (ret_val = var_0) + -- wf_memtype: `%`(ret_val) + -- fun_inst_memtype: `%%%`(moduleinst, memtype, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_tabletype: `%%%`(moduleinst, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_tabletype_case_0{moduleinst : moduleinst, tt : tabletype, var_0 : tabletype}: + `%%%`(moduleinst, tt, var_0) + -- fun_subst_all_tabletype: `%%%`(tt, (iter_val#7 : deftype <: typeuse)*{iter_val#7 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_tabletype_is_wf: `%%%`(moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_tabletype_is_wf_0{moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype, var_0 : tabletype}: + `%%%`(moduleinst, tabletype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = var_0) + -- wf_tabletype: `%`(ret_val) + -- fun_inst_tabletype: `%%%`(moduleinst, tabletype, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_pure_before_ref.eq-true`: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref}: + `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_pure: `%~>%`(instr*, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule unreachable: + `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule nop: + `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule drop{val : val}: + `%~>%`([$instr_val(val) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_1)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_2)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- if ($proj_uN_0(l).0 = 0) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- if ($proj_uN_0(l).0 > 0) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-true`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-false`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-null`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- if (val = `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-addr`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [$instr_val(val)]) + -- if (val =/= `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-null`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], []) + -- if (val = `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-addr`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], [$instr_val(val) BR_instr(l)]) + -- if (val =/= `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call_indirect{x : idx, yy : typeuse}: + `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call_indirect{x : idx, yy : typeuse}: + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `frame-vals`{n : n, f : frame, `val*` : val*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: + `%~>%`($instr_val(val)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-label`{n : n, `instr'*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-handler`{n : n, `catch*` : catch*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-frame`{n : n, f : frame}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `local.tee`{val : val, x : idx}: + `%~>%`([$instr_val(val) `LOCAL.TEE`_instr(x)], [$instr_val(val) $instr_val(val) `LOCAL.SET`_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) + -- wf_instr: `%`(`LOCAL.SET`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.i31`{i : num_}: + `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`REF.I31`_instr) + -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) + -- if ($proj_num__0(i) =/= ?()) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-true`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-false`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-null`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr], [TRAP_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-addr`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr], [$instr_ref(ref)]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) + -- if (ref_1 = ref_2) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-null`{sx : sx}: + `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-num`{i : u31, sx : sx}: + `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(`REF.I31_NUM`_instr(i)) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new`{val : val, n : n, x : idx}: + `%~>%`([$instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], $instr_val(val)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-null`{ref : ref}: + `%~>%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-addr`{ref : ref}: + `%~>%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-null`: + `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-addr`{ref : ref}: + `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [$instr_ref(ref)]) + -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_num_: `%%`(nt, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_num_: `%%`(nt, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_num_: `%%`(nt, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_num_: `%%`(nt, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) + -- if ($proj_num__0(c) =/= ?()) + -- wf_uN: `%%`(32, $testop_(nt, testop, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) + -- if ($proj_num__0(c) =/= ?()) + -- wf_uN: `%%`(32, $relop_(nt, relop, c_1, c_2)) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, var_0 : num_*}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) + -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvunop_(V128_vectype, vvunop, c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) + -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) + -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvtestop{c_1 : vec_, c : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) + -- if ($proj_num__0(c) =/= ?()) + -- wf_uN: `%%`(32, $inez_($vsize(V128_vectype), c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*, var_0 : nat}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) + -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = var_0) + -- if ($proj_num__0(c) =/= ?()) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), i))*{i <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)} + -- (wf_uN: `%%`(32, $inez_($jsizenn(Jnn), !($proj_lane__2(i)))))*{i <- `i*`} + -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- fun_prod: `%%`($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vrelop_: `%%%%%`(sh, vrelop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vshiftop_: `%%%%%`(sh, vshiftop, c_1, !($proj_num__0(i)), var_0) + -- if ($proj_num__0(i) =/= ?()) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vbitmask{c_1 : vec_, sh : ishape, c : num_, var_0 : u32}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = var_0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_uN: `%%`(32, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- fun_vbitmaskop_: `%%%`(sh, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vswizzlop_: `%%%%%`(sh, swizzlop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vshufflop_: `%%%%%`(sh, i*{i <- `i*`}, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: + `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) + -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)|) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- if ($proj_num__0(c_2) =/= ?()) + -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) + -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)|) + -- wf_uN: `%%`(32, $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)} + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- if (var_0 = c) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vextunop__: `%%%%%`(sh_1, sh_2, vextunop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (var_0 = c) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vextbinop__: `%%%%%%`(sh_1, sh_2, vextbinop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- if (var_0 = c) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vextternop__: `%%%%%%%`(sh_1, sh_2, vextternop, c_1, c_2, c_3, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vnarrowop__: `%%%%%%`($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vcvtop__: `%%%%%`(sh_1, sh_2, vcvtop, c_1, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation fun_blocktype_: `%%%`(state, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule fun_blocktype__case_0{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%`(z, _IDX_blocktype(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1#2*{t_1#2 <- `t_1*`}), `%`_resulttype(t_2#2*{t_2#2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#3*{t_1#3 <- `t_1*`}), `%`_resulttype(t_2#3*{t_2#3 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule fun_blocktype__case_1{z : state, `t?` : valtype?}: + `%%%`(z, _RESULT_blocktype(t#1?{t#1 <- `t?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation blocktype__is_wf: `%%%`(state : state, blocktype : blocktype, ret_val : instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule blocktype__is_wf_0{state : state, blocktype : blocktype, ret_val : instrtype, var_0 : instrtype}: + `%%%`(state, blocktype, ret_val) + -- wf_state: `%`(state) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = var_0) + -- wf_instrtype: `%`(ret_val) + -- fun_blocktype_: `%%%`(state, blocktype, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_throw_ref-handler-next`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.test-false`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ($sx(zt_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(j) =/= ?()) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(j) =/= ?()) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-num`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read: `%~>%`(config, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (m = |`val*`|) + -- if (m = |`t_1*`|) + -- if (n = |`t_2*`|) + -- fun_blocktype_: `%%%`(z, bt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (m = |`val*`|) + -- if (m = |`t_1*`|) + -- if (n = |`t_2*`|) + -- fun_blocktype_: `%%%`(z, bt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + -- wf_moduleinst: `%`($moduleinst(z)) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + -- if (a < |$funcinst(z)|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-null`{z : state, yy : typeuse}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- if ($funcinst(z)[a] = fi) + -- if (a < |$funcinst(z)|) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- (if ($default_(t) =/= ?()))*{t <- `t*`} + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- if (n = |`val*`|) + -- if (n = |`t_1*`|) + -- if (m = |`t_2*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + -- wf_moduleinst: `%`($moduleinst(z)) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + -- if (a < |$funcinst(z)|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) + -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (a < |$funcinst(z)|) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (n = |`val*`|) + -- if (n = |`t_1*`|) + -- if (m = |`t_2*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) + -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (m = |`val*`|) + -- if (m = |`t_1*`|) + -- if (n = |`t_2*`|) + -- fun_blocktype_: `%%%`(z, bt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `local.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [$instr_val(val)]) + -- if ($local(z, x) = ?(val)) + -- wf_val: `%`(val) + -- (wf_val: `%`(iter))?{iter <- $local(z, x)} + -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `global.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [$instr_val(val)]) + -- if ($global(z, x).VALUE_globalinst = val) + -- wf_val: `%`(val) + -- wf_globalinst: `%`($global(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: + `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- if (|$table(z, x).REFS_tableinst| = n) + -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- if ($proj_num__0(i_1) =/= ?()) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) $instr_ref($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) + -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) + -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, Jnn : Jnn}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[(($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- if (c = $extend__(N, 128, U_sx, j)) + -- wf_uN: `%%`(N, j) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $extend__(N, 128, U_sx, j)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, k)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.size`{z : state, x : idx, at : addrtype, n : n, lim : limits}: + `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) + -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) + -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL`_instr(ht)])) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.func`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) + -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) + -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)]), [$instr_ref(ref)]) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)]), [TRAP_instr]) + -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), $instr_val(val)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} + -- if (|`val*`| = |`zt*`|) + -- (if ($default_($unpack(zt)) =/= ?()))*{zt <- `zt*`} + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))}*{zt <- `zt*`} + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} + -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])))]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_val: `%`(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]))) + -- if ($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]) =/= ?()) + -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) + -- if (a < |$structinst(z)|) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)]), $instr_val(val)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (!($default_($unpack(zt))) = ?(val)) + -- if ($default_($unpack(zt)) =/= ?()) + -- wf_val: `%`(val) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))} + -- wf_valtype: `%`($unpack(zt)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), $instr_ref(ref)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- if (n = |`ref*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ($proj_num__0(i) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($zsize(zt) =/= ?()) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- (wf_instr: `%`($const(!($cunpack(zt)), $cunpacknum_(zt, c))))^n{c <- `c*`} + -- (if ($cunpack(zt) =/= ?()))^n{} + -- (wf_lit_: `%%`($storagetype_consttype(!($cunpack(zt))), $cunpacknum_(zt, c)))^n{c <- `c*`} + -- (wf_byte: `%`(iter))*{iter <- $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))} + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)}^n{c <- `c*`} + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (n = |`c*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [$instr_val(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_val: `%`(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]))) + -- if ($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if (a < |$arrayinst(z)|) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-array`{z : state, a : addr}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) + -- if (a < |$arrayinst(z)|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-null`{z : state, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) + -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null1`{z : state, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), []) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ($sx(zt_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) + -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) + -- if ($sx(zt_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- if ($proj_num__0(i_1) =/= ?()) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(j) =/= ?()) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), []) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) + -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) + -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(j) =/= ?()) + -- wf_ref: `%`(ref) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), []) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) + -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- wf_lit_: `%%`(zt, c) + -- wf_instr: `%`($const(!($cunpack(zt)), $cunpacknum_(zt, c))) + -- if ($cunpack(zt) =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(zt))), $cunpacknum_(zt, c)) + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)} + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +relation Step: `%~>%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.36 + rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:45.1-47.45 + rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 + rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype($tag(z, x).TYPE_taginst) =/= ?()) + -- if (a = |$exninst(z)|) + -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- wf_taginst: `%`($tag(z, x)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + -- if (n = |`val*`|) + -- if (n = |`t*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:305.1-306.56 + rule `local.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:318.1-319.58 + rule `global.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:332.1-334.33 + rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.32 + rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:347.1-350.46 + rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst, var_0 : tableinst?}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- if (ti = !(var_0)) + -- if (var_0 =/= ?()) + -- wf_tableinst: `%`(!(var_0)) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- fun_growtable: `%%%%`($table(z, x), n, ref, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:352.1-353.87 + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:413.1-414.51 + rule `elem.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:497.1-500.60 + rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:502.1-506.29 + rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $nbytes_(nt, c)) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if ($proj_num__0(i) =/= ?()) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:508.1-511.52 + rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:513.1-517.52 + rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) + -- if ($proj_num__0(c) =/= ?()) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))} + -- wf_uN: `%%`(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c)))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if ($proj_num__0(i) =/= ?()) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:519.1-522.63 + rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:524.1-527.31 + rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if ($proj_num__0(i) =/= ?()) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:530.1-533.50 + rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:535.1-540.49 + rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) + -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) + -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if ($proj_num__0(i) =/= ?()) + -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:549.1-552.37 + rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst, var_0 : meminst?}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (mi = !(var_0)) + -- if (var_0 =/= ?()) + -- wf_meminst: `%`(!(var_0)) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- fun_growmem: `%%%`($mem(z, x), n, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:554.1-555.84 + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:615.1-616.51 + rule `data.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:692.1-696.65 + rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (a = |$structinst(z)|) + -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`, zt <- `zt*`} + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + -- if (n = |`val*`|) + -- if (n = |`mut?*`|) + -- if (n = |`zt*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:713.1-714.55 + rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(val) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(val) `STRUCT.SET`_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:716.1-719.46 + rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) + -- if ($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val) =/= ?()) + -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:732.1-737.65 + rule `array.new_fixed`{z : state, n : n, `val*` : val*, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) + -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`} + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:777.1-778.66 + rule `array.set-null`{z : state, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:780.1-782.39 + rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:784.1-787.44 + rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) + -- if ($proj_num__0(i) =/= ?()) + -- if ($packfield_(zt, val) =/= ?()) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +relation Steps: `%~>*%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + rule refl{z : state, `instr*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: + `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`})) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 +relation fun_alloctypes: `%%`(type*, deftype*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_1{`type'*` : type*, type : type, `deftype*` : deftype*, x : uN, var_2 : deftype*, var_1 : deftype*, var_0 : deftype*}: + `%%`(type'#1*{type'#1 <- `type'*`} ++ [type], deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`}) + -- let{`deftype'*` : deftype*} deftype'#1*{deftype'#1 <- `deftype'*`} = var_0 + -- let{rectype : rectype} TYPE_type(rectype) = type + -- if (deftype#1*{deftype#1 <- `deftype*`} = var_1) + -- if ($proj_uN_0(x).0 = |deftype'#3*{deftype'#3 <- `deftype'*`}|) + -- wf_uN: `%%`(32, x) + -- fun_rolldt: `%%%`(x, rectype, var_2) + -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype'#2)*{deftype'#2 <- `deftype'*`}, var_1) + -- fun_alloctypes: `%%`(type'#2*{type'#2 <- `type'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_alloctag: `%%%`(store, tagtype, (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_alloctag_case_0{s : store, tagtype : typeuse, taginst : taginst}: + `%%%`(s, tagtype, (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|)) + -- if (taginst = {TYPE tagtype}) + -- wf_taginst: `%`({TYPE tagtype}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctag_is_wf: `%%%`(store : store, tagtype : tagtype, ret_val : (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctag_is_wf_0{store : store, tagtype : tagtype, ret_val : (store, tagaddr), var_0 : (store, tagaddr)}: + `%%%`(store, tagtype, ret_val) + -- wf_store: `%`(store) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_alloctag: `%%%`(store, tagtype, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation fun_alloctags: `%%%`(store, tagtype*, (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_1{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, var_2 : (store, tagaddr*), var_1 : (store, tagaddr*), var_0 : (store, tagaddr)}: + `%%%`(s, [tagtype] ++ tagtype'#1*{tagtype'#1 <- `tagtype'*`}, (s_2, [ja] ++ ja'*{ja' <- `ja'*`})) + -- let{ja : tagaddr, s_1 : store} (s_1, ja) = var_0 + -- let{s_2 : store, `ja'*` : tagaddr*} (s_2, ja'#1*{ja'#1 <- `ja'*`}) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_alloctags: `%%%`(s_1, tagtype'#3*{tagtype'#3 <- `tagtype'*`}, var_2) + -- fun_alloctags: `%%%`(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}, var_1) + -- fun_alloctag: `%%%`(s, tagtype, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation alloctags_is_wf: `%%%`(store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule alloctags_is_wf_0{store : store, var_0 : tagtype*, ret_val : (store, tagaddr*), var_1 : (store, tagaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_typeuse: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_store: `%`(ret_val.0) + -- fun_alloctags: `%%%`(store, var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocglobal: `%%%%`(store, globaltype, val, (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocglobal_case_0{s : store, globaltype : globaltype, val : val, globalinst : globalinst}: + `%%%%`(s, globaltype, val, (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|)) + -- if (globalinst = {TYPE globaltype, VALUE val}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocglobal_is_wf: `%%%%`(store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocglobal_is_wf_0{store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr), var_0 : (store, globaladdr)}: + `%%%%`(store, globaltype, val, ret_val) + -- wf_store: `%`(store) + -- wf_globaltype: `%`(globaltype) + -- wf_val: `%`(val) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_allocglobal: `%%%%`(store, globaltype, val, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation fun_allocglobals: `%%%%`(store, globaltype*, val*, (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_1{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, var_2 : (store, globaladdr*), var_1 : (store, globaladdr*), var_0 : (store, globaladdr)}: + `%%%%`(s, [globaltype] ++ globaltype'#1*{globaltype'#1 <- `globaltype'*`}, [val] ++ val'#1*{val'#1 <- `val'*`}, (s_2, [ga] ++ ga'*{ga' <- `ga'*`})) + -- let{ga : globaladdr, s_1 : store} (s_1, ga) = var_0 + -- let{s_2 : store, `ga'*` : globaladdr*} (s_2, ga'#1*{ga'#1 <- `ga'*`}) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_allocglobals: `%%%%`(s_1, globaltype'#3*{globaltype'#3 <- `globaltype'*`}, val'#3*{val'#3 <- `val'*`}, var_2) + -- fun_allocglobals: `%%%%`(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, globaltype, val, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation allocglobals_is_wf: `%%%%`(store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule allocglobals_is_wf_0{store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*), var_2 : (store, globaladdr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_store: `%`(ret_val.0) + -- fun_allocglobals: `%%%%`(store, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocmem: `%%%`(store, memtype, (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocmem_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}: + `%%%`(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#11?{j#11 <- `j?`})), (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|)) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#12?{j#12 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#13?{j#13 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmem_is_wf: `%%%`(store : store, memtype : memtype, ret_val : (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmem_is_wf_0{store : store, memtype : memtype, ret_val : (store, memaddr), var_0 : (store, memaddr)}: + `%%%`(store, memtype, ret_val) + -- wf_store: `%`(store) + -- wf_memtype: `%`(memtype) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_allocmem: `%%%`(store, memtype, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation fun_allocmems: `%%%`(store, memtype*, (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_1{s : store, memtype : memtype, `memtype'*` : memtype*, var_2 : (store, memaddr*), var_1 : (store, memaddr*), var_0 : (store, memaddr)}: + `%%%`(s, [memtype] ++ memtype'#1*{memtype'#1 <- `memtype'*`}, (s_2, [ma] ++ ma'*{ma' <- `ma'*`})) + -- let{ma : memaddr, s_1 : store} (s_1, ma) = var_0 + -- let{s_2 : store, `ma'*` : memaddr*} (s_2, ma'#1*{ma'#1 <- `ma'*`}) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_allocmems: `%%%`(s_1, memtype'#3*{memtype'#3 <- `memtype'*`}, var_2) + -- fun_allocmems: `%%%`(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}, var_1) + -- fun_allocmem: `%%%`(s, memtype, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation allocmems_is_wf: `%%%`(store : store, var_0 : memtype*, ret_val : (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule allocmems_is_wf_0{store : store, var_0 : memtype*, ret_val : (store, memaddr*), var_1 : (store, memaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_memtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_store: `%`(ret_val.0) + -- fun_allocmems: `%%%`(store, var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_alloctable: `%%%%`(store, tabletype, ref, (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_alloctable_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}: + `%%%%`(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j#14?{j#14 <- `j?`}), rt), ref, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|)) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#15?{j#15 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#16?{j#16 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctable_is_wf: `%%%%`(store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctable_is_wf_0{store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr), var_0 : (store, tableaddr)}: + `%%%%`(store, tabletype, ref, ret_val) + -- wf_store: `%`(store) + -- wf_tabletype: `%`(tabletype) + -- wf_ref: `%`(ref) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_alloctable: `%%%%`(store, tabletype, ref, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation fun_alloctables: `%%%%`(store, tabletype*, ref*, (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_1{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, var_2 : (store, tableaddr*), var_1 : (store, tableaddr*), var_0 : (store, tableaddr)}: + `%%%%`(s, [tabletype] ++ tabletype'#1*{tabletype'#1 <- `tabletype'*`}, [ref] ++ ref'#1*{ref'#1 <- `ref'*`}, (s_2, [ta] ++ ta'*{ta' <- `ta'*`})) + -- let{ta : tableaddr, s_1 : store} (s_1, ta) = var_0 + -- let{s_2 : store, `ta'*` : tableaddr*} (s_2, ta'#1*{ta'#1 <- `ta'*`}) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_alloctables: `%%%%`(s_1, tabletype'#3*{tabletype'#3 <- `tabletype'*`}, ref'#3*{ref'#3 <- `ref'*`}, var_2) + -- fun_alloctables: `%%%%`(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}, var_1) + -- fun_alloctable: `%%%%`(s, tabletype, ref, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation alloctables_is_wf: `%%%%`(store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule alloctables_is_wf_0{store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*), var_2 : (store, tableaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_tabletype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_store: `%`(ret_val.0) + -- fun_alloctables: `%%%%`(store, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocfunc: `%%%%%`(store, deftype, funccode, moduleinst, (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocfunc_case_0{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}: + `%%%%%`(s, deftype, funccode, moduleinst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|)) + -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocfunc_is_wf: `%%%%%`(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocfunc_is_wf_0{store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr), var_0 : (store, funcaddr)}: + `%%%%%`(store, deftype, funccode, moduleinst, ret_val) + -- wf_store: `%`(store) + -- wf_funccode: `%`(funccode) + -- wf_moduleinst: `%`(moduleinst) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_allocfunc: `%%%%%`(store, deftype, funccode, moduleinst, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation fun_allocfuncs: `%%%%%`(store, deftype*, funccode*, moduleinst*, (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_0{s : store}: + `%%%%%`(s, [], [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_1{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, var_2 : (store, funcaddr*), var_1 : (store, funcaddr*), var_0 : (store, funcaddr)}: + `%%%%%`(s, [dt] ++ dt'#3*{dt'#3 <- `dt'*`}, [funccode] ++ funccode'#1*{funccode'#1 <- `funccode'*`}, [moduleinst] ++ moduleinst'#1*{moduleinst'#1 <- `moduleinst'*`}, (s_2, [fa] ++ fa'*{fa' <- `fa'*`})) + -- let{fa : funcaddr, s_1 : store} (s_1, fa) = var_0 + -- let{s_2 : store, `fa'*` : funcaddr*} (s_2, fa'#1*{fa'#1 <- `fa'*`}) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_allocfuncs: `%%%%%`(s_1, dt'#5*{dt'#5 <- `dt'*`}, funccode'#3*{funccode'#3 <- `funccode'*`}, moduleinst'#3*{moduleinst'#3 <- `moduleinst'*`}, var_2) + -- fun_allocfuncs: `%%%%%`(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}, var_1) + -- fun_allocfunc: `%%%%%`(s, dt, funccode, moduleinst, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation allocfuncs_is_wf: `%%%%%`(store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule allocfuncs_is_wf_0{store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*), var_3 : (store, funcaddr*)}: + `%%%%%`(store, var_0, var_1, var_2, ret_val) + -- wf_store: `%`(store) + -- (wf_funccode: `%`(var_1))*{var_1 <- var_1} + -- (wf_moduleinst: `%`(var_2))*{var_2 <- var_2} + -- if (ret_val = var_3) + -- wf_store: `%`(ret_val.0) + -- fun_allocfuncs: `%%%%%`(store, var_0, var_1, var_2, var_3) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocdata: `%%%%`(store, datatype, byte*, (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocdata_case_0{s : store, `byte*` : byte*, datainst : datainst}: + `%%%%`(s, OK_datatype, byte#2*{byte#2 <- `byte*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|)) + -- if (datainst = {BYTES byte#3*{byte#3 <- `byte*`}}) + -- wf_datainst: `%`({BYTES byte#4*{byte#4 <- `byte*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocdata_is_wf: `%%%%`(store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocdata_is_wf_0{store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr), var_1 : (store, dataaddr)}: + `%%%%`(store, datatype, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_store: `%`(ret_val.0) + -- fun_allocdata: `%%%%`(store, datatype, var_0, var_1) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation fun_allocdatas: `%%%%`(store, datatype*, byte**, (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_1{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, var_3 : (store, dataaddr*), var_2 : (store, dataaddr), var_1 : (store, dataaddr*), var_0 : (store, dataaddr)}: + `%%%%`(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#8*{b#8 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}, (s_2, [da] ++ da'*{da' <- `da'*`})) + -- let{da : dataaddr, s_1 : store} (s_1, da) = var_0 + -- let{s_2 : store, `da'*` : dataaddr*} (s_2, da'#1*{da'#1 <- `da'*`}) = var_1 + -- wf_store: `%`(var_2.0) + -- wf_store: `%`(var_3.0) + -- fun_allocdatas: `%%%%`(s_1, ok'#3*{ok'#3 <- `ok'*`}, b'#3*{b'#3 <- `b'*#3`}*{`b'*#3` <- `b'**`}, var_3) + -- fun_allocdata: `%%%%`(s, ok, b#10*{b#10 <- `b*`}, var_2) + -- fun_allocdatas: `%%%%`(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}, var_1) + -- fun_allocdata: `%%%%`(s, ok, b#9*{b#9 <- `b*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation allocdatas_is_wf: `%%%%`(store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule allocdatas_is_wf_0{store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*), var_2 : (store, dataaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_store: `%`(ret_val.0) + -- fun_allocdatas: `%%%%`(store, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocelem: `%%%%`(store, elemtype, ref*, (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocelem_case_0{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}: + `%%%%`(s, elemtype, ref#1*{ref#1 <- `ref*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|)) + -- if (eleminst = {TYPE elemtype, REFS ref#2*{ref#2 <- `ref*`}}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref#3*{ref#3 <- `ref*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocelem_is_wf: `%%%%`(store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocelem_is_wf_0{store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr), var_1 : (store, elemaddr)}: + `%%%%`(store, elemtype, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_reftype: `%`(elemtype) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_store: `%`(ret_val.0) + -- fun_allocelem: `%%%%`(store, elemtype, var_0, var_1) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation fun_allocelems: `%%%%`(store, elemtype*, ref**, (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_1{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, var_3 : (store, elemaddr*), var_2 : (store, elemaddr), var_1 : (store, elemaddr*), var_0 : (store, elemaddr)}: + `%%%%`(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#4*{ref'#4 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}, (s_2, [ea] ++ ea'*{ea' <- `ea'*`})) + -- let{ea : elemaddr, s_1 : store} (s_1, ea) = var_0 + -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'#1*{ea'#1 <- `ea'*`}) = var_1 + -- wf_store: `%`(var_2.0) + -- wf_store: `%`(var_3.0) + -- fun_allocelems: `%%%%`(s_1, rt'#3*{rt'#3 <- `rt'*`}, ref'#6*{ref'#6 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`}, var_3) + -- fun_allocelem: `%%%%`(s, rt, ref#6*{ref#6 <- `ref*`}, var_2) + -- fun_allocelems: `%%%%`(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#5*{ref'#5 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}, var_1) + -- fun_allocelem: `%%%%`(s, rt, ref#5*{ref#5 <- `ref*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation allocelems_is_wf: `%%%%`(store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule allocelems_is_wf_0{store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*), var_2 : (store, elemaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_reftype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_store: `%`(ret_val.0) + -- fun_allocelems: `%%%%`(store, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexport(moduleinst : moduleinst, export : export) : exportinst + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexport_is_wf: `%%%`(moduleinst : moduleinst, export : export, ret_val : exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexport_is_wf_0{moduleinst : moduleinst, export : export, ret_val : exportinst}: + `%%%`(moduleinst, export, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_export: `%`(export) + -- if (ret_val = $allocexport(moduleinst, export)) + -- wf_exportinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexports(moduleinst : moduleinst, export*) : exportinst* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export#3*{export#3 <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexports_is_wf: `%%%`(moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexports_is_wf_0{moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*}: + `%%%`(moduleinst, var_0, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- (wf_export: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocexports(moduleinst, var_0)) + -- (wf_exportinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref**, (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `xi*` : exportinst*, var_34 : (store, funcaddr*), `var_33*` : reftype*, `var_32*` : elemtype*, var_31 : (store, elemaddr*), var_30 : (store, dataaddr*), `var_29*` : tabletype*, `var_28*` : tabletype*, var_27 : (store, tableaddr*), `var_26*` : memtype*, `var_25*` : memtype*, var_24 : (store, memaddr*), `var_23*` : globaltype*, `var_22*` : globaltype*, var_21 : (store, globaladdr*), `var_20*` : typeuse*, `var_19*` : tagtype*, var_18 : (store, tagaddr*), var_17 : (store, funcaddr*), `var_16*` : elemtype*, var_15 : (store, elemaddr*), var_14 : (store, dataaddr*), `var_13*` : tabletype*, var_12 : (store, tableaddr*), `var_11*` : memtype*, var_10 : (store, memaddr*), `var_9*` : globaltype*, var_8 : (store, globaladdr*), `var_7*` : tagtype*, var_6 : (store, tagaddr*), var_5 : deftype*, var_4 : funcaddr*, var_3 : tableaddr*, var_2 : memaddr*, var_1 : globaladdr*, var_0 : tagaddr*}: + `%%%%%%%`(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}, (s_7, moduleinst)) + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#2*{type#2 <- `type*`}), `%`_list(import#2*{import#2 <- `import*`}), `%`_list(tag#2*{tag#2 <- `tag*`}), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list(func#3*{func#3 <- `func*`}), `%`_list(data#2*{data#2 <- `data*`}), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#4*{export#4 <- `export*`})) = module + -- if (tag#3*{tag#3 <- `tag*`} = TAG_tag(tagtype#78)*{tagtype#78 <- `tagtype*`}) + -- if (global#4*{global#4 <- `global*`} = GLOBAL_global(globaltype#122, expr_G#1)*{expr_G#1 <- `expr_G*`, globaltype#122 <- `globaltype*`}) + -- if (mem#4*{mem#4 <- `mem*`} = MEMORY_mem(memtype#122)*{memtype#122 <- `memtype*`}) + -- if (table#4*{table#4 <- `table*`} = TABLE_table(tabletype#156, expr_T#1)*{expr_T#1 <- `expr_T*`, tabletype#156 <- `tabletype*`}) + -- if (func#4*{func#4 <- `func*`} = FUNC_func(x#2, local#2*{local#2 <- `local*#82`}, expr_F#1)*{expr_F#1 <- `expr_F*`, `local*#82` <- `local**`, x#2 <- `x*`}) + -- if (data#3*{data#3 <- `data*`} = DATA_data(byte#5*{byte#5 <- `byte*#110`}, datamode#110)*{`byte*#110` <- `byte**`, datamode#110 <- `datamode*`}) + -- if (elem#4*{elem#4 <- `elem*`} = ELEM_elem(elemtype#1, expr_E#1*{expr_E#1 <- `expr_E*#1`}, elemmode#230)*{elemmode#230 <- `elemmode*`, elemtype#1 <- `elemtype*`, `expr_E*#1` <- `expr_E**`}) + -- let{`aa_I*` : tagaddr*} aa_I#1*{aa_I#1 <- `aa_I*`} = var_0 + -- let{`ga_I*` : globaladdr*} ga_I#1*{ga_I#1 <- `ga_I*`} = var_1 + -- let{`ma_I*` : memaddr*} ma_I#1*{ma_I#1 <- `ma_I*`} = var_2 + -- let{`ta_I*` : tableaddr*} ta_I#1*{ta_I#1 <- `ta_I*`} = var_3 + -- let{`fa_I*` : funcaddr*} fa_I#1*{fa_I#1 <- `fa_I*`} = var_4 + -- let{`dt*` : deftype*} dt#8*{dt#8 <- `dt*`} = var_5 + -- let{`fa*` : nat*} fa#1*{fa#1 <- `fa*`} = (|s.FUNCS_store| + i_F#1)^(i_F#1<|func#5*{func#5 <- `func*`}|){} + -- let{s_1 : store, `aa*` : tagaddr*} (s_1, aa#1*{aa#1 <- `aa*`}) = var_6 + -- let{s_2 : store, `ga*` : globaladdr*} (s_2, ga#1*{ga#1 <- `ga*`}) = var_8 + -- let{s_3 : store, `ma*` : memaddr*} (s_3, ma#1*{ma#1 <- `ma*`}) = var_10 + -- let{s_4 : store, `ta*` : tableaddr*} (s_4, ta#1*{ta#1 <- `ta*`}) = var_12 + -- let{s_5 : store, `da*` : dataaddr*} (s_5, da#1*{da#1 <- `da*`}) = var_14 + -- let{s_6 : store, `ea*` : elemaddr*} (s_6, ea#1*{ea#1 <- `ea*`}) = var_15 + -- if ((s_7, fa#2*{fa#2 <- `fa*`}) = var_17) + -- if (xi#1*{xi#1 <- `xi*`} = $allocexports({TYPES [], TAGS aa_I#2*{aa_I#2 <- `aa_I*`} ++ aa#2*{aa#2 <- `aa*`}, GLOBALS ga_I#2*{ga_I#2 <- `ga_I*`} ++ ga#2*{ga#2 <- `ga*`}, MEMS ma_I#2*{ma_I#2 <- `ma_I*`} ++ ma#2*{ma#2 <- `ma*`}, TABLES ta_I#2*{ta_I#2 <- `ta_I*`} ++ ta#2*{ta#2 <- `ta*`}, FUNCS fa_I#2*{fa_I#2 <- `fa_I*`} ++ fa#3*{fa#3 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#5*{export#5 <- `export*`})) + -- if (moduleinst = {TYPES dt#15*{dt#15 <- `dt*`}, TAGS aa_I#3*{aa_I#3 <- `aa_I*`} ++ aa#3*{aa#3 <- `aa*`}, GLOBALS ga_I#3*{ga_I#3 <- `ga_I*`} ++ ga#3*{ga#3 <- `ga*`}, MEMS ma_I#3*{ma_I#3 <- `ma_I*`} ++ ma#3*{ma#3 <- `ma*`}, TABLES ta_I#3*{ta_I#3 <- `ta_I*`} ++ ta#3*{ta#3 <- `ta*`}, FUNCS fa_I#3*{fa_I#3 <- `fa_I*`} ++ fa#4*{fa#4 <- `fa*`}, DATAS da#2*{da#2 <- `da*`}, ELEMS ea#2*{ea#2 <- `ea*`}, EXPORTS xi#2*{xi#2 <- `xi*`}}) + -- wf_store: `%`(var_18.0) + -- (wf_typeuse: `%`(var_20))*{var_20 <- `var_20*`} + -- wf_store: `%`(var_21.0) + -- (wf_globaltype: `%`(var_23))*{var_23 <- `var_23*`} + -- wf_store: `%`(var_24.0) + -- (wf_memtype: `%`(var_26))*{var_26 <- `var_26*`} + -- wf_store: `%`(var_27.0) + -- (wf_tabletype: `%`(var_29))*{var_29 <- `var_29*`} + -- wf_store: `%`(var_30.0) + -- wf_store: `%`(var_31.0) + -- (wf_reftype: `%`(var_33))*{var_33 <- `var_33*`} + -- wf_store: `%`(var_34.0) + -- (wf_exportinst: `%`(iter#341))*{iter#341 <- $allocexports({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#6*{export#6 <- `export*`})} + -- wf_module: `%`(MODULE_module(`%`_list(type#4*{type#4 <- `type*`}), `%`_list(import#3*{import#3 <- `import*`}), `%`_list(tag#4*{tag#4 <- `tag*`}), `%`_list(global#5*{global#5 <- `global*`}), `%`_list(mem#5*{mem#5 <- `mem*`}), `%`_list(table#5*{table#5 <- `table*`}), `%`_list(func#8*{func#8 <- `func*`}), `%`_list(data#6*{data#6 <- `data*`}), `%`_list(elem#5*{elem#5 <- `elem*`}), start#4?{start#4 <- `start?`}, `%`_list(export#7*{export#7 <- `export*`}))) + -- (wf_tag: `%`(TAG_tag(tagtype#83)))*{tagtype#83 <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype#127, expr_G#2)))*{expr_G#2 <- `expr_G*`, globaltype#127 <- `globaltype*`} + -- if (|`expr_G*`| = |`globaltype*`|) + -- (wf_mem: `%`(MEMORY_mem(memtype#127)))*{memtype#127 <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype#161, expr_T#2)))*{expr_T#2 <- `expr_T*`, tabletype#161 <- `tabletype*`} + -- if (|`expr_T*`| = |`tabletype*`|) + -- (wf_func: `%`(FUNC_func(x#7, local#5*{local#5 <- `local*#86`}, expr_F#4)))*{expr_F#4 <- `expr_F*`, `local*#86` <- `local**`, x#7 <- `x*`} + -- if (|`expr_F*`| = |`local**`|) + -- if (|`expr_F*`| = |`x*`|) + -- (wf_data: `%`(DATA_data(byte#8*{byte#8 <- `byte*#114`}, datamode#112)))*{`byte*#114` <- `byte**`, datamode#112 <- `datamode*`} + -- if (|`byte**`| = |`datamode*`|) + -- (wf_elem: `%`(ELEM_elem(elemtype#5, expr_E#2*{expr_E#2 <- `expr_E*#2`}, elemmode#232)))*{elemmode#232 <- `elemmode*`, elemtype#5 <- `elemtype*`, `expr_E*#2` <- `expr_E**`} + -- if (|`elemmode*`| = |`elemtype*`|) + -- if (|`elemmode*`| = |`expr_E**`|) + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt#27*{dt#27 <- `dt*`}, TAGS aa_I#6*{aa_I#6 <- `aa_I*`} ++ aa#6*{aa#6 <- `aa*`}, GLOBALS ga_I#6*{ga_I#6 <- `ga_I*`} ++ ga#6*{ga#6 <- `ga*`}, MEMS ma_I#6*{ma_I#6 <- `ma_I*`} ++ ma#6*{ma#6 <- `ma*`}, TABLES ta_I#6*{ta_I#6 <- `ta_I*`} ++ ta#6*{ta#6 <- `ta*`}, FUNCS fa_I#6*{fa_I#6 <- `fa_I*`} ++ fa#7*{fa#7 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) + -- fun_allocfuncs: `%%%%%`(s_6, dt#26*{dt#26 <- `dt*`}[$proj_uN_0(x#5).0]*{x#5 <- `x*`}, FUNC_funccode(x#6, local#4*{local#4 <- `local*#85`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#85` <- `local**`, x#6 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_34) + -- (if ($proj_uN_0(x#5).0 < |dt#26*{dt#26 <- `dt*`}|))*{x#5 <- `x*`} + -- (fun_subst_all_reftype: `%%%`(elemtype#4, $typeuse_deftype(dt#25)*{dt#25 <- `dt*`}, var_33))*{var_33 <- `var_33*`, elemtype#4 <- `elemtype*`} + -- if (|`var_33*`| = |`elemtype*`|) + -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#24)*{dt#24 <- `dt*`}, var_32))*{var_32 <- `var_32*`, elemtype#3 <- `elemtype*`} + -- if (|`var_32*`| = |`elemtype*`|) + -- fun_allocelems: `%%%%`(s_5, var_32*{var_32 <- `var_32*`}, ref_E#3*{ref_E#3 <- `ref_E*#3`}*{`ref_E*#3` <- `ref_E**`}, var_31) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#113`}*{`byte*#113` <- `byte**`}, var_30) + -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#23)*{dt#23 <- `dt*`}, var_29))*{var_29 <- `var_29*`, tabletype#160 <- `tabletype*`} + -- if (|`var_29*`| = |`tabletype*`|) + -- (fun_subst_all_tabletype: `%%%`(tabletype#159, $typeuse_deftype(dt#22)*{dt#22 <- `dt*`}, var_28))*{var_28 <- `var_28*`, tabletype#159 <- `tabletype*`} + -- if (|`var_28*`| = |`tabletype*`|) + -- fun_alloctables: `%%%%`(s_3, var_28*{var_28 <- `var_28*`}, ref_T#3*{ref_T#3 <- `ref_T*`}, var_27) + -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#21)*{dt#21 <- `dt*`}, var_26))*{var_26 <- `var_26*`, memtype#126 <- `memtype*`} + -- if (|`var_26*`| = |`memtype*`|) + -- (fun_subst_all_memtype: `%%%`(memtype#125, $typeuse_deftype(dt#20)*{dt#20 <- `dt*`}, var_25))*{var_25 <- `var_25*`, memtype#125 <- `memtype*`} + -- if (|`var_25*`| = |`memtype*`|) + -- fun_allocmems: `%%%`(s_2, var_25*{var_25 <- `var_25*`}, var_24) + -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#19)*{dt#19 <- `dt*`}, var_23))*{var_23 <- `var_23*`, globaltype#126 <- `globaltype*`} + -- if (|`var_23*`| = |`globaltype*`|) + -- (fun_subst_all_globaltype: `%%%`(globaltype#125, $typeuse_deftype(dt#18)*{dt#18 <- `dt*`}, var_22))*{var_22 <- `var_22*`, globaltype#125 <- `globaltype*`} + -- if (|`var_22*`| = |`globaltype*`|) + -- fun_allocglobals: `%%%%`(s_1, var_22*{var_22 <- `var_22*`}, val_G#3*{val_G#3 <- `val_G*`}, var_21) + -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#17)*{dt#17 <- `dt*`}, var_20))*{var_20 <- `var_20*`, tagtype#82 <- `tagtype*`} + -- if (|`var_20*`| = |`tagtype*`|) + -- (fun_subst_all_tagtype: `%%%`(tagtype#81, $typeuse_deftype(dt#16)*{dt#16 <- `dt*`}, var_19))*{var_19 <- `var_19*`, tagtype#81 <- `tagtype*`} + -- if (|`var_19*`| = |`tagtype*`|) + -- fun_alloctags: `%%%`(s, var_19*{var_19 <- `var_19*`}, var_18) + -- fun_allocfuncs: `%%%%%`(s_6, dt#14*{dt#14 <- `dt*`}[$proj_uN_0(x#3).0]*{x#3 <- `x*`}, FUNC_funccode(x#4, local#3*{local#3 <- `local*#84`}, expr_F#2)*{expr_F#2 <- `expr_F*`, `local*#84` <- `local**`, x#4 <- `x*`}, moduleinst^|func#6*{func#6 <- `func*`}|{}, var_17) + -- (if ($proj_uN_0(x#3).0 < |dt#14*{dt#14 <- `dt*`}|))*{x#3 <- `x*`} + -- (fun_subst_all_reftype: `%%%`(elemtype#2, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_16))*{var_16 <- `var_16*`, elemtype#2 <- `elemtype*`} + -- if (|`var_16*`| = |`elemtype*`|) + -- fun_allocelems: `%%%%`(s_5, var_16*{var_16 <- `var_16*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_15) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#4*{data#4 <- `data*`}|{}, byte#6*{byte#6 <- `byte*#112`}*{`byte*#112` <- `byte**`}, var_14) + -- (fun_subst_all_tabletype: `%%%`(tabletype#158, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_13))*{var_13 <- `var_13*`, tabletype#158 <- `tabletype*`} + -- if (|`var_13*`| = |`tabletype*`|) + -- fun_alloctables: `%%%%`(s_3, var_13*{var_13 <- `var_13*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_12) + -- (fun_subst_all_memtype: `%%%`(memtype#124, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_11))*{var_11 <- `var_11*`, memtype#124 <- `memtype*`} + -- if (|`var_11*`| = |`memtype*`|) + -- fun_allocmems: `%%%`(s_2, var_11*{var_11 <- `var_11*`}, var_10) + -- (fun_subst_all_globaltype: `%%%`(globaltype#124, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_9))*{var_9 <- `var_9*`, globaltype#124 <- `globaltype*`} + -- if (|`var_9*`| = |`globaltype*`|) + -- fun_allocglobals: `%%%%`(s_1, var_9*{var_9 <- `var_9*`}, val_G#2*{val_G#2 <- `val_G*`}, var_8) + -- (fun_subst_all_tagtype: `%%%`(tagtype#80, $typeuse_deftype(dt#9)*{dt#9 <- `dt*`}, var_7))*{var_7 <- `var_7*`, tagtype#80 <- `tagtype*`} + -- if (|`var_7*`| = |`tagtype*`|) + -- fun_alloctags: `%%%`(s, var_7*{var_7 <- `var_7*`}, var_6) + -- fun_alloctypes: `%%`(type#3*{type#3 <- `type*`}, var_5) + -- fun_funcsxa: `%%`(externaddr#6*{externaddr#6 <- `externaddr*`}, var_4) + -- fun_tablesxa: `%%`(externaddr#5*{externaddr#5 <- `externaddr*`}, var_3) + -- fun_memsxa: `%%`(externaddr#4*{externaddr#4 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#3*{externaddr#3 <- `externaddr*`}, var_1) + -- fun_tagsxa: `%%`(externaddr#2*{externaddr#2 <- `externaddr*`}, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmodule_is_wf: `%%%%%%%`(store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmodule_is_wf_0{store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst), var_4 : (store, moduleinst)}: + `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- (wf_ref: `%`(var_2))*{var_2 <- var_2} + -- (wf_ref: `%`(var_3))*{var_3 <- var_3}*{var_3 <- var_3} + -- if (ret_val = var_4) + -- wf_store: `%`(ret_val.0) + -- wf_moduleinst: `%`(ret_val.1) + -- fun_allocmodule: `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, var_4) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_rundata_: `%%%`(dataidx, data, instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_rundata__case_0{x : uN, n : nat, `b*` : byte*}: + `%%%`(x, DATA_data(b#11*{b#11 <- `b*`}, PASSIVE_datamode), []) + -- if (n = |`b*`|) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_rundata__case_1{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}: + `%%%`(x, DATA_data(b#12*{b#12 <- `b*`}, ACTIVE_datamode(y, instr#9*{instr#9 <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)]) + -- if (n = |`b*`|) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation rundata__is_wf: `%%%`(dataidx : dataidx, data : data, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule rundata__is_wf_0{dataidx : dataidx, data : data, ret_val : instr*, var_0 : instr*}: + `%%%`(dataidx, data, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- wf_data: `%`(data) + -- if (ret_val = var_0) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + -- fun_rundata_: `%%%`(dataidx, data, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_runelem_: `%%%`(elemidx, elem, instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_0{x : uN, rt : reftype, n : nat, `e*` : expr*}: + `%%%`(x, ELEM_elem(rt, e#1*{e#1 <- `e*`}, PASSIVE_elemmode), []) + -- if (n = |`e*`|) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_1{x : uN, rt : reftype, n : nat, `e*` : expr*}: + `%%%`(x, ELEM_elem(rt, e#2*{e#2 <- `e*`}, DECLARE_elemmode), [`ELEM.DROP`_instr(x)]) + -- if (n = |`e*`|) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_2{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}: + `%%%`(x, ELEM_elem(rt, e#3*{e#3 <- `e*`}, ACTIVE_elemmode(y, instr#10*{instr#10 <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)]) + -- if (n = |`e*`|) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation runelem__is_wf: `%%%`(elemidx : elemidx, elem : elem, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule runelem__is_wf_0{elemidx : elemidx, elem : elem, ret_val : instr*, var_0 : instr*}: + `%%%`(elemidx, elem, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- wf_elem: `%`(elem) + -- if (ret_val = var_0) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + -- fun_runelem_: `%%%`(elemidx, elem, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation fun_evalexprs: `%%%`(state, expr*, (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule fun_evalexprs_case_0{z : state}: + `%%%`(z, [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule fun_evalexprs_case_1{z : state, expr : instr*, `expr'*` : expr*, ref : ref, z' : state, var_2 : (state, ref*), var_1 : (state, ref*), var_0 : (state, ref*)}: + `%%%`(z, [expr] ++ expr'#1*{expr'#1 <- `expr'*`}, (z'', [ref] ++ ref'*{ref' <- `ref'*`})) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [$val_ref(ref)]) + -- let{z'' : state, `ref'*` : ref*} (z'', ref'#7*{ref'#7 <- `ref'*`}) = var_0 + -- wf_state: `%`(z') + -- wf_state: `%`(var_1.0) + -- (wf_ref: `%`(iter#342))*{iter#342 <- var_2.1} + -- fun_evalexprs: `%%%`(z', expr'#4*{expr'#4 <- `expr'*`}, var_2) + -- fun_evalexprs: `%%%`(z', expr'#3*{expr'#3 <- `expr'*`}, var_1) + -- fun_evalexprs: `%%%`(z', expr'#2*{expr'#2 <- `expr'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation evalexprs_is_wf: `%%%`(state : state, var_0 : expr*, ret_val : (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule evalexprs_is_wf_0{state : state, var_0 : expr*, ret_val : (state, ref*), var_1 : (state, ref*)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- ret_val.1} + -- fun_evalexprs: `%%%`(state, var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation fun_evalexprss: `%%%`(state, expr**, (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule fun_evalexprss_case_0{z : state}: + `%%%`(z, [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule fun_evalexprss_case_1{z : state, `expr*` : expr*, `expr'**` : expr**, var_5 : (state, ref**), var_4 : (state, ref**), var_3 : (state, ref*), var_2 : (state, ref*), var_1 : (state, ref**), var_0 : (state, ref*)}: + `%%%`(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#5*{expr'#5 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}, (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) + -- let{`ref*` : ref*, z' : state} (z', ref#7*{ref#7 <- `ref*`}) = var_0 + -- let{z'' : state, `ref'**` : ref**} (z'', ref'#8*{ref'#8 <- `ref'*#4`}*{`ref'*#4` <- `ref'**`}) = var_1 + -- wf_state: `%`(var_2.0) + -- (wf_ref: `%`(iter#343))*{iter#343 <- var_3.1} + -- wf_state: `%`(var_4.0) + -- (wf_ref: `%`(iter#345))*{iter#345 <- iter#344}*{iter#344 <- var_5.1} + -- fun_evalexprss: `%%%`(z', expr'#8*{expr'#8 <- `expr'*#4`}*{`expr'*#4` <- `expr'**`}, var_5) + -- fun_evalexprss: `%%%`(z', expr'#7*{expr'#7 <- `expr'*#3`}*{`expr'*#3` <- `expr'**`}, var_4) + -- fun_evalexprs: `%%%`(z, expr#368*{expr#368 <- `expr*`}, var_3) + -- fun_evalexprs: `%%%`(z, expr#367*{expr#367 <- `expr*`}, var_2) + -- fun_evalexprss: `%%%`(z', expr'#6*{expr'#6 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}, var_1) + -- fun_evalexprs: `%%%`(z, expr#366*{expr#366 <- `expr*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation evalexprss_is_wf: `%%%`(state : state, var_0 : expr**, ret_val : (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule evalexprss_is_wf_0{state : state, var_0 : expr**, ret_val : (state, ref**), var_1 : (state, ref**)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- ret_val.1} + -- fun_evalexprss: `%%%`(state, var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule fun_evalglobals_case_0{z : state}: + `%%%%`(z, [], [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule fun_evalglobals_case_1{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, val : val, z' : state, var_3 : (state, val*), var_2 : (state, val*), var_1 : (state, val*), var_0 : (store, globaladdr)}: + `%%%%`(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#9*{expr'#9 <- `expr'*`}, (z'', [val] ++ val'*{val' <- `val'*`})) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) + -- let{s : store, f : frame} `%;%`_state(s, f) = z' + -- let{s' : store, a : addr} (s', a) = var_0 + -- let{z'' : state, `val'*` : val*} (z'', val'#4*{val'#4 <- `val'*`}) = var_1 + -- wf_state: `%`(z') + -- wf_store: `%`(var_0.0) + -- wf_state: `%`(var_2.0) + -- (wf_val: `%`(iter#346))*{iter#346 <- var_3.1} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#4*{gt'#4 <- `gt'*`}, expr'#12*{expr'#12 <- `expr'*`}, var_3) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#3*{gt'#3 <- `gt'*`}, expr'#11*{expr'#11 <- `expr'*`}, var_2) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#10*{expr'#10 <- `expr'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, gt, val, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation evalglobals_is_wf: `%%%%`(state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule evalglobals_is_wf_0{state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*), var_2 : (state, val*)}: + `%%%%`(state, var_0, var_1, ret_val) + -- wf_state: `%`(state) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_instr: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_state: `%`(ret_val.0) + -- (wf_val: `%`(iter))*{iter <- ret_val.1} + -- fun_evalglobals: `%%%%`(state, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_instantiate: `%%%%`(store, module, externaddr*, config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, `xt_I*` : externtype*, `xt_E*` : externtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, i_D : nat, i_E : nat, var_23 : funcaddr*, var_22 : globaladdr*, var_21 : deftype*, `var_20*` : instr**, `var_19*` : instr**, `var_18*` : instr**, `var_17*` : instr**, var_16 : (store, moduleinst), var_15 : (store, moduleinst), var_14 : (state, ref**), var_13 : (state, ref**), var_12 : (state, ref*), var_11 : (state, ref*), var_10 : (state, val*), var_9 : (state, val*), `var_8*` : instr**, `var_7*` : instr**, var_6 : (store, moduleinst), var_5 : (state, ref**), var_4 : (state, ref*), var_3 : (state, val*), var_2 : funcaddr*, var_1 : globaladdr*, var_0 : deftype*}: + `%%%%`(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}, `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I#1*{xt_I#1 <- `xt_I*`}, xt_E#1*{xt_E#1 <- `xt_E*`})) + -- (Externaddr_ok: `%|-%:%`(s, externaddr#8, xt_I#2))*{externaddr#8 <- `externaddr*`, xt_I#2 <- `xt_I*`} + -- if (|`externaddr*`| = |`xt_I*`|) + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#5*{type#5 <- `type*`}), `%`_list(import#4*{import#4 <- `import*`}), `%`_list(tag#5*{tag#5 <- `tag*`}), `%`_list(global#6*{global#6 <- `global*`}), `%`_list(mem#6*{mem#6 <- `mem*`}), `%`_list(table#6*{table#6 <- `table*`}), `%`_list(func#9*{func#9 <- `func*`}), `%`_list(data#7*{data#7 <- `data*`}), `%`_list(elem#6*{elem#6 <- `elem*`}), start#5?{start#5 <- `start?`}, `%`_list(export#8*{export#8 <- `export*`})) = module + -- if (global#7*{global#7 <- `global*`} = GLOBAL_global(globaltype#129, expr_G#3)*{expr_G#3 <- `expr_G*`, globaltype#129 <- `globaltype*`}) + -- if (table#7*{table#7 <- `table*`} = TABLE_table(tabletype#163, expr_T#3)*{expr_T#3 <- `expr_T*`, tabletype#163 <- `tabletype*`}) + -- if (data#8*{data#8 <- `data*`} = DATA_data(byte#9*{byte#9 <- `byte*#118`}, datamode#116)*{`byte*#118` <- `byte**`, datamode#116 <- `datamode*`}) + -- if (elem#7*{elem#7 <- `elem*`} = ELEM_elem(reftype#516, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#516 <- `reftype*`}) + -- if (start#6?{start#6 <- `start?`} = START_start(x#8)?{x#8 <- `x?`}) + -- if (moduleinst_0 = {TYPES var_0, TAGS [], GLOBALS var_1, MEMS [], TABLES [], FUNCS var_2 ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#10*{func#10 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- let{z' : state, `val_G*` : val*} (z', val_G#4*{val_G#4 <- `val_G*`}) = var_3 + -- let{z'' : state, `ref_T*` : ref*} (z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = var_4 + -- let{z''' : state, `ref_E**` : ref**} (z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = var_5 + -- let{s''' : store, f : frame} `%;%`_state(s''', f) = z''' + -- let{s'''' : store, moduleinst : moduleinst} (s'''', moduleinst) = var_6 + -- let{`instr_D*` : instr*} instr_D#1*{instr_D#1 <- `instr_D*`} = $concat_(syntax instr, var_7^(i_D#1<|data#9*{data#9 <- `data*`}|){var_7 <- `var_7*`}) + -- let{`instr_E*` : instr*} instr_E#1*{instr_E#1 <- `instr_E*`} = $concat_(syntax instr, var_8^(i_E#1<|elem#8*{elem#8 <- `elem*`}|){var_8 <- `var_8*`}) + -- let{`instr_S?` : instr?} instr_S#1?{instr_S#1 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`} + -- wf_state: `%`(z) + -- wf_state: `%`(var_9.0) + -- (wf_val: `%`(iter#347))*{iter#347 <- var_10.1} + -- wf_state: `%`(var_11.0) + -- (wf_ref: `%`(iter#348))*{iter#348 <- var_12.1} + -- wf_state: `%`(var_13.0) + -- (wf_ref: `%`(iter#350))*{iter#350 <- iter#349}*{iter#349 <- var_14.1} + -- wf_store: `%`(var_15.0) + -- wf_moduleinst: `%`(var_16.1) + -- (wf_instr: `%`(iter#351))*{iter#351 <- $concat_(syntax instr, var_17^(i_D#2<|data#11*{data#11 <- `data*`}|){var_17 <- `var_17*`})} + -- (wf_instr: `%`(iter#352))*{iter#352 <- var_18}^(i_D#3<|data#13*{data#13 <- `data*`}|){var_18 <- `var_18*`} + -- (wf_instr: `%`(iter#353))*{iter#353 <- $concat_(syntax instr, var_19^(i_E#2<|elem#10*{elem#10 <- `elem*`}|){var_19 <- `var_19*`})} + -- (wf_instr: `%`(iter#354))*{iter#354 <- var_20}^(i_E#3<|elem#12*{elem#12 <- `elem*`}|){var_20 <- `var_20*`} + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I#3*{xt_I#3 <- `xt_I*`}, xt_E#2*{xt_E#2 <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(`%`_list(type#7*{type#7 <- `type*`}), `%`_list(import#5*{import#5 <- `import*`}), `%`_list(tag#6*{tag#6 <- `tag*`}), `%`_list(global#8*{global#8 <- `global*`}), `%`_list(mem#7*{mem#7 <- `mem*`}), `%`_list(table#8*{table#8 <- `table*`}), `%`_list(func#11*{func#11 <- `func*`}), `%`_list(data#15*{data#15 <- `data*`}), `%`_list(elem#14*{elem#14 <- `elem*`}), start#7?{start#7 <- `start?`}, `%`_list(export#9*{export#9 <- `export*`}))) + -- (wf_global: `%`(GLOBAL_global(globaltype#134, expr_G#7)))*{expr_G#7 <- `expr_G*`, globaltype#134 <- `globaltype*`} + -- if (|`expr_G*`| = |`globaltype*`|) + -- (wf_table: `%`(TABLE_table(tabletype#165, expr_T#7)))*{expr_T#7 <- `expr_T*`, tabletype#165 <- `tabletype*`} + -- if (|`expr_T*`| = |`tabletype*`|) + -- (wf_data: `%`(DATA_data(byte#10*{byte#10 <- `byte*#120`}, datamode#118)))*{`byte*#120` <- `byte**`, datamode#118 <- `datamode*`} + -- if (|`byte**`| = |`datamode*`|) + -- (wf_elem: `%`(ELEM_elem(reftype#518, expr_E#7*{expr_E#7 <- `expr_E*#7`}, elemmode#239)))*{elemmode#239 <- `elemmode*`, `expr_E*#7` <- `expr_E**`, reftype#518 <- `reftype*`} + -- if (|`elemmode*`| = |`expr_E**`|) + -- if (|`elemmode*`| = |`reftype*`|) + -- (wf_start: `%`(START_start(x#10)))?{x#10 <- `x?`} + -- wf_moduleinst: `%`({TYPES var_21, TAGS [], GLOBALS var_22, MEMS [], TABLES [], FUNCS var_23 ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#12*{func#12 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- wf_state: `%`(`%;%`_state(s''', f)) + -- (wf_uN: `%%`(32, `%`_uN(i_D#4)))^(i_D#4<|data#16*{data#16 <- `data*`}|){} + -- (wf_uN: `%%`(32, `%`_uN(i_E#4)))^(i_E#4<|elem#15*{elem#15 <- `elem*`}|){} + -- (wf_instr: `%`(CALL_instr(x#11)))?{x#11 <- `x?`} + -- fun_funcsxa: `%%`(externaddr#15*{externaddr#15 <- `externaddr*`}, var_23) + -- fun_globalsxa: `%%`(externaddr#14*{externaddr#14 <- `externaddr*`}, var_22) + -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_21) + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#3), elem#13*{elem#13 <- `elem*`}[i_E#3], var_20))^(i_E#3<|elem#12*{elem#12 <- `elem*`}|){var_20 <- `var_20*`} + -- (if (i_E#3 < |elem#13*{elem#13 <- `elem*`}|))^(i_E#3<|elem#12*{elem#12 <- `elem*`}|){} + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#11*{elem#11 <- `elem*`}[i_E#2], var_19))^(i_E#2<|elem#10*{elem#10 <- `elem*`}|){var_19 <- `var_19*`} + -- (if (i_E#2 < |elem#11*{elem#11 <- `elem*`}|))^(i_E#2<|elem#10*{elem#10 <- `elem*`}|){} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#3), data#14*{data#14 <- `data*`}[i_D#3], var_18))^(i_D#3<|data#13*{data#13 <- `data*`}|){var_18 <- `var_18*`} + -- (if (i_D#3 < |data#14*{data#14 <- `data*`}|))^(i_D#3<|data#13*{data#13 <- `data*`}|){} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#12*{data#12 <- `data*`}[i_D#2], var_17))^(i_D#2<|data#11*{data#11 <- `data*`}|){var_17 <- `var_17*`} + -- (if (i_D#2 < |data#12*{data#12 <- `data*`}|))^(i_D#2<|data#11*{data#11 <- `data*`}|){} + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#7*{val_G#7 <- `val_G*`}, ref_T#7*{ref_T#7 <- `ref_T*`}, ref_E#7*{ref_E#7 <- `ref_E*#7`}*{`ref_E*#7` <- `ref_E**`}, var_16) + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#12*{externaddr#12 <- `externaddr*`}, val_G#6*{val_G#6 <- `val_G*`}, ref_T#6*{ref_T#6 <- `ref_T*`}, ref_E#6*{ref_E#6 <- `ref_E*#6`}*{`ref_E*#6` <- `ref_E**`}, var_15) + -- fun_evalexprss: `%%%`(z'', expr_E#6*{expr_E#6 <- `expr_E*#6`}*{`expr_E*#6` <- `expr_E**`}, var_14) + -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_13) + -- fun_evalexprs: `%%%`(z', expr_T#6*{expr_T#6 <- `expr_T*`}, var_12) + -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_11) + -- fun_evalglobals: `%%%%`(z, globaltype#133*{globaltype#133 <- `globaltype*`}, expr_G#6*{expr_G#6 <- `expr_G*`}, var_10) + -- fun_evalglobals: `%%%%`(z, globaltype#132*{globaltype#132 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_9) + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#1), elem#9*{elem#9 <- `elem*`}[i_E#1], var_8))^(i_E#1<|elem#8*{elem#8 <- `elem*`}|){var_8 <- `var_8*`} + -- (if (i_E#1 < |elem#9*{elem#9 <- `elem*`}|))^(i_E#1<|elem#8*{elem#8 <- `elem*`}|){} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#1), data#10*{data#10 <- `data*`}[i_D#1], var_7))^(i_D#1<|data#9*{data#9 <- `data*`}|){var_7 <- `var_7*`} + -- (if (i_D#1 < |data#10*{data#10 <- `data*`}|))^(i_D#1<|data#9*{data#9 <- `data*`}|){} + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#11*{externaddr#11 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_6) + -- fun_evalexprss: `%%%`(z'', expr_E#4*{expr_E#4 <- `expr_E*#4`}*{`expr_E*#4` <- `expr_E**`}, var_5) + -- fun_evalexprs: `%%%`(z', expr_T#4*{expr_T#4 <- `expr_T*`}, var_4) + -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#4*{expr_G#4 <- `expr_G*`}, var_3) + -- fun_funcsxa: `%%`(externaddr#10*{externaddr#10 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#9*{externaddr#9 <- `externaddr*`}, var_1) + -- fun_alloctypes: `%%`(type#6*{type#6 <- `type*`}, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation instantiate_is_wf: `%%%%`(store : store, module : module, var_0 : externaddr*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule instantiate_is_wf_0{store : store, module : module, var_0 : externaddr*, ret_val : config, var_1 : config}: + `%%%%`(store, module, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- if (ret_val = var_1) + -- wf_config: `%`(ret_val) + -- fun_instantiate: `%%%%`(store, module, var_0, var_1) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_invoke: `%%%%`(store, funcaddr, val*, config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_invoke_case_0{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%%`(s, funcaddr, val#1*{val#1 <- `val*`}, `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1#4*{t_1#4 <- `t_1*`}), `%`_resulttype(t_2#4*{t_2#4 <- `t_2*`}))) + -- if (funcaddr < |s.FUNCS_store|) + -- (Val_ok: `%|-%:%`(s, val#2, t_1#5))*{t_1#5 <- `t_1*`, val#2 <- `val*`} + -- if (|`t_1*`| = |`val*`|) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#6*{t_1#6 <- `t_1*`}), `%`_resulttype(t_2#5*{t_2#5 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation invoke_is_wf: `%%%%`(store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule invoke_is_wf_0{store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config, var_1 : config}: + `%%%%`(store, funcaddr, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_val: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_config: `%`(ret_val) + -- fun_invoke: `%%%%`(store, funcaddr, var_0, var_1) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax castop = (null?, null?) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax memidxop = (memidx, memarg) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax startopt = start* + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax code = (local*, expr) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax nopt = u32* + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +def $ieee_(N : N, rat : rat) : fNmag + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation ieee__is_wf: `%%%`(N : N, rat : rat, ret_val : fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule ieee__is_wf_0{N : N, rat : rat, ret_val : fNmag}: + `%%%`(N, rat, ret_val) + -- if (ret_val = $ieee_(N, rat)) + -- wf_fNmag: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax idctxt = +{ + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation wf_idctxt: `%`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) + -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} + -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} + -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} + -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} + -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} + -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} + -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} + -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} + -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} + -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax I = idctxt + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation fun_concat_idctxt: `%%`(idctxt*, idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule fun_concat_idctxt_case_0: + `%%`([], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule fun_concat_idctxt_case_1{I : idctxt, `I'*` : I*, var_0 : idctxt}: + `%%`([I] ++ I'#1*{I'#1 <- `I'*`}, I +++ var_0) + -- fun_concat_idctxt: `%%`(I'*{I' <- `I'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation concat_idctxt_is_wf: `%%`(var_0 : idctxt*, ret_val : idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule concat_idctxt_is_wf_0{var_0 : idctxt*, ret_val : idctxt, var_1 : idctxt}: + `%%`(var_0, ret_val) + -- (wf_idctxt: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_idctxt: `%`(ret_val) + -- fun_concat_idctxt: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation Idctxt_ok: `|-%:OK`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule _{I : I, `field**` : char**}: + `|-%:OK`(I) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) + -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} + -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) + -- wf_idctxt: `%`(I) + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TYPES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TAGS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.GLOBALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.MEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TABLES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.FUNCS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.DATAS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.ELEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LOCALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LABELS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])}*{`field*` <- `field**`} + -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $dots : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +syntax decl = + | TYPE(rectype : rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype : memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx : funcidx) + | EXPORT(name : name, externidx : externidx) + +def $decl_data(data) : decl + def $decl_data{x0 : byte*, x1 : datamode}(DATA_data(x0, x1)) = DATA_decl(x0, x1) + +def $decl_elem(elem) : decl + def $decl_elem{x0 : reftype, x1 : expr*, x2 : elemmode}(ELEM_elem(x0, x1, x2)) = ELEM_decl(x0, x1, x2) + +def $decl_export(export) : decl + def $decl_export{x0 : name, x1 : externidx}(EXPORT_export(x0, x1)) = EXPORT_decl(x0, x1) + +def $decl_func(func) : decl + def $decl_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_decl(x0, x1, x2) + +def $decl_global(global) : decl + def $decl_global{x0 : globaltype, x1 : expr}(GLOBAL_global(x0, x1)) = GLOBAL_decl(x0, x1) + +def $decl_import(import) : decl + def $decl_import{x0 : name, x1 : name, x2 : externtype}(IMPORT_import(x0, x1, x2)) = IMPORT_decl(x0, x1, x2) + +def $decl_mem(mem) : decl + def $decl_mem{x0 : memtype}(MEMORY_mem(x0)) = MEMORY_decl(x0) + +def $decl_start(start) : decl + def $decl_start{x0 : funcidx}(START_start(x0)) = START_decl(x0) + +def $decl_table(table) : decl + def $decl_table{x0 : tabletype, x1 : expr}(TABLE_table(x0, x1)) = TABLE_decl(x0, x1) + +def $decl_tag(tag) : decl + def $decl_tag{x0 : tagtype}(TAG_tag(x0)) = TAG_decl(x0) + +def $decl_type(type) : decl + def $decl_type{x0 : rectype}(TYPE_type(x0)) = TYPE_decl(x0) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +relation wf_decl: `%`(decl) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_0{rectype : rectype}: + `%`(TYPE_decl(rectype)) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_1{name : name, name_0 : name, externtype : externtype}: + `%`(IMPORT_decl(name, name_0, externtype)) + -- wf_name: `%`(name) + -- wf_name: `%`(name_0) + -- wf_externtype: `%`(externtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_2{tagtype : tagtype}: + `%`(TAG_decl(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_3{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_decl(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_4{memtype : memtype}: + `%`(MEMORY_decl(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_5{tabletype : tabletype, expr : expr}: + `%`(TABLE_decl(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_6{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_decl(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_7{`byte*` : byte*, datamode : datamode}: + `%`(DATA_decl(`byte*`, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_8{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_decl(reftype, `expr*`, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_9{funcidx : funcidx}: + `%`(START_decl(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_10{name : name, externidx : externidx}: + `%`(EXPORT_decl(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 +relation fun_typesd: `%%`(decl*, type*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_1{rectype : rectype, `decl'*` : decl*, var_0 : type*}: + `%%`([TYPE_decl(rectype)] ++ decl'#1*{decl'#1 <- `decl'*`}, [TYPE_type(rectype)] ++ var_0) + -- fun_typesd: `%%`(decl'#2*{decl'#2 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_2{decl : decl, `decl'*` : decl*, var_0 : type*}: + `%%`([decl] ++ decl'#3*{decl'#3 <- `decl'*`}, var_0) + -- fun_typesd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation fun_importsd: `%%`(decl*, import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_1{name : name, name_0 : name, externtype : externtype, `decl'*` : decl*, var_0 : import*}: + `%%`([IMPORT_decl(name, name_0, externtype)] ++ decl'#4*{decl'#4 <- `decl'*`}, [IMPORT_import(name, name_0, externtype)] ++ var_0) + -- fun_importsd: `%%`(decl'#5*{decl'#5 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_2{decl : decl, `decl'*` : decl*, var_0 : import*}: + `%%`([decl] ++ decl'#6*{decl'#6 <- `decl'*`}, var_0) + -- fun_importsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation importsd_is_wf: `%%`(var_0 : decl*, ret_val : import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule importsd_is_wf_0{var_0 : decl*, ret_val : import*, var_1 : import*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_import: `%`(ret_val))*{ret_val <- ret_val} + -- fun_importsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation fun_tagsd: `%%`(decl*, tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_1{tagtype : tagtype, `decl'*` : decl*, var_0 : tag*}: + `%%`([TAG_decl(tagtype)] ++ decl'#7*{decl'#7 <- `decl'*`}, [TAG_tag(tagtype)] ++ var_0) + -- fun_tagsd: `%%`(decl'#8*{decl'#8 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_2{decl : decl, `decl'*` : decl*, var_0 : tag*}: + `%%`([decl] ++ decl'#9*{decl'#9 <- `decl'*`}, var_0) + -- fun_tagsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation tagsd_is_wf: `%%`(var_0 : decl*, ret_val : tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule tagsd_is_wf_0{var_0 : decl*, ret_val : tag*, var_1 : tag*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_tag: `%`(ret_val))*{ret_val <- ret_val} + -- fun_tagsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation fun_globalsd: `%%`(decl*, global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_1{globaltype : globaltype, expr : expr, `decl'*` : decl*, var_0 : global*}: + `%%`([GLOBAL_decl(globaltype, expr)] ++ decl'#10*{decl'#10 <- `decl'*`}, [GLOBAL_global(globaltype, expr)] ++ var_0) + -- fun_globalsd: `%%`(decl'#11*{decl'#11 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_2{decl : decl, `decl'*` : decl*, var_0 : global*}: + `%%`([decl] ++ decl'#12*{decl'#12 <- `decl'*`}, var_0) + -- fun_globalsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation globalsd_is_wf: `%%`(var_0 : decl*, ret_val : global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule globalsd_is_wf_0{var_0 : decl*, ret_val : global*, var_1 : global*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_global: `%`(ret_val))*{ret_val <- ret_val} + -- fun_globalsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation fun_memsd: `%%`(decl*, mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_1{memtype : memtype, `decl'*` : decl*, var_0 : mem*}: + `%%`([MEMORY_decl(memtype)] ++ decl'#13*{decl'#13 <- `decl'*`}, [MEMORY_mem(memtype)] ++ var_0) + -- fun_memsd: `%%`(decl'#14*{decl'#14 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_2{decl : decl, `decl'*` : decl*, var_0 : mem*}: + `%%`([decl] ++ decl'#15*{decl'#15 <- `decl'*`}, var_0) + -- fun_memsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation memsd_is_wf: `%%`(var_0 : decl*, ret_val : mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule memsd_is_wf_0{var_0 : decl*, ret_val : mem*, var_1 : mem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_mem: `%`(ret_val))*{ret_val <- ret_val} + -- fun_memsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation fun_tablesd: `%%`(decl*, table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_1{tabletype : tabletype, expr : expr, `decl'*` : decl*, var_0 : table*}: + `%%`([TABLE_decl(tabletype, expr)] ++ decl'#16*{decl'#16 <- `decl'*`}, [TABLE_table(tabletype, expr)] ++ var_0) + -- fun_tablesd: `%%`(decl'#17*{decl'#17 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_2{decl : decl, `decl'*` : decl*, var_0 : table*}: + `%%`([decl] ++ decl'#18*{decl'#18 <- `decl'*`}, var_0) + -- fun_tablesd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation tablesd_is_wf: `%%`(var_0 : decl*, ret_val : table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule tablesd_is_wf_0{var_0 : decl*, ret_val : table*, var_1 : table*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_table: `%`(ret_val))*{ret_val <- ret_val} + -- fun_tablesd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation fun_funcsd: `%%`(decl*, func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_1{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*, var_0 : func*}: + `%%`([FUNC_decl(typeidx, `local*`, expr)] ++ decl'#19*{decl'#19 <- `decl'*`}, [FUNC_func(typeidx, `local*`, expr)] ++ var_0) + -- fun_funcsd: `%%`(decl'#20*{decl'#20 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_2{decl : decl, `decl'*` : decl*, var_0 : func*}: + `%%`([decl] ++ decl'#21*{decl'#21 <- `decl'*`}, var_0) + -- fun_funcsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation funcsd_is_wf: `%%`(var_0 : decl*, ret_val : func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule funcsd_is_wf_0{var_0 : decl*, ret_val : func*, var_1 : func*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_func: `%`(ret_val))*{ret_val <- ret_val} + -- fun_funcsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation fun_datasd: `%%`(decl*, data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_1{`byte*` : byte*, datamode : datamode, `decl'*` : decl*, var_0 : data*}: + `%%`([DATA_decl(`byte*`, datamode)] ++ decl'#22*{decl'#22 <- `decl'*`}, [DATA_data(`byte*`, datamode)] ++ var_0) + -- fun_datasd: `%%`(decl'#23*{decl'#23 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_2{decl : decl, `decl'*` : decl*, var_0 : data*}: + `%%`([decl] ++ decl'#24*{decl'#24 <- `decl'*`}, var_0) + -- fun_datasd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation datasd_is_wf: `%%`(var_0 : decl*, ret_val : data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule datasd_is_wf_0{var_0 : decl*, ret_val : data*, var_1 : data*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_data: `%`(ret_val))*{ret_val <- ret_val} + -- fun_datasd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation fun_elemsd: `%%`(decl*, elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_1{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*, var_0 : elem*}: + `%%`([ELEM_decl(reftype, `expr*`, elemmode)] ++ decl'#25*{decl'#25 <- `decl'*`}, [ELEM_elem(reftype, `expr*`, elemmode)] ++ var_0) + -- fun_elemsd: `%%`(decl'#26*{decl'#26 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_2{decl : decl, `decl'*` : decl*, var_0 : elem*}: + `%%`([decl] ++ decl'#27*{decl'#27 <- `decl'*`}, var_0) + -- fun_elemsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation elemsd_is_wf: `%%`(var_0 : decl*, ret_val : elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule elemsd_is_wf_0{var_0 : decl*, ret_val : elem*, var_1 : elem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_elem: `%`(ret_val))*{ret_val <- ret_val} + -- fun_elemsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation fun_startsd: `%%`(decl*, start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_1{funcidx : funcidx, `decl'*` : decl*, var_0 : start*}: + `%%`([START_decl(funcidx)] ++ decl'#28*{decl'#28 <- `decl'*`}, [START_start(funcidx)] ++ var_0) + -- fun_startsd: `%%`(decl'#29*{decl'#29 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_2{decl : decl, `decl'*` : decl*, var_0 : start*}: + `%%`([decl] ++ decl'#30*{decl'#30 <- `decl'*`}, var_0) + -- fun_startsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation startsd_is_wf: `%%`(var_0 : decl*, ret_val : start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule startsd_is_wf_0{var_0 : decl*, ret_val : start*, var_1 : start*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_start: `%`(ret_val))*{ret_val <- ret_val} + -- fun_startsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation fun_exportsd: `%%`(decl*, export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_1{name : name, externidx : externidx, `decl'*` : decl*, var_0 : export*}: + `%%`([EXPORT_decl(name, externidx)] ++ decl'#31*{decl'#31 <- `decl'*`}, [EXPORT_export(name, externidx)] ++ var_0) + -- fun_exportsd: `%%`(decl'#32*{decl'#32 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_2{decl : decl, `decl'*` : decl*, var_0 : export*}: + `%%`([decl] ++ decl'#33*{decl'#33 <- `decl'*`}, var_0) + -- fun_exportsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation exportsd_is_wf: `%%`(var_0 : decl*, ret_val : export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule exportsd_is_wf_0{var_0 : decl*, ret_val : export*, var_1 : export*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_export: `%`(ret_val))*{ret_val <- ret_val} + -- fun_exportsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +relation fun_ordered: `%%`(decl*, bool) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule fun_ordered_case_0{`decl*` : decl*, var_1 : import*, var_0 : import*}: + `%%`(decl#1*{decl#1 <- `decl*`}, true) + -- if (var_0 = []) + -- (wf_import: `%`(iter#355))*{iter#355 <- var_1} + -- fun_importsd: `%%`(decl#3*{decl#3 <- `decl*`}, var_1) + -- fun_importsd: `%%`(decl#2*{decl#2 <- `decl*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule fun_ordered_case_1{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*, var_5 : func*, var_4 : table*, var_3 : mem*, var_2 : global*, var_1 : tag*, var_0 : import*}: + `%%`(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}, ((((((var_0 = []) /\ (var_1 = [])) /\ (var_2 = [])) /\ (var_3 = [])) /\ (var_4 = [])) /\ (var_5 = []))) + -- fun_funcsd: `%%`(decl_1#2*{decl_1#2 <- `decl_1*`}, var_5) + -- fun_tablesd: `%%`(decl_1#3*{decl_1#3 <- `decl_1*`}, var_4) + -- fun_memsd: `%%`(decl_1#4*{decl_1#4 <- `decl_1*`}, var_3) + -- fun_globalsd: `%%`(decl_1#5*{decl_1#5 <- `decl_1*`}, var_2) + -- fun_tagsd: `%%`(decl_1#6*{decl_1#6 <- `decl_1*`}, var_1) + -- fun_importsd: `%%`(decl_1#7*{decl_1#7 <- `decl_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec +relation Context_ok: `|-%:OK`(context) + ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec + rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `|-%:OK`(C) + -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (Deftype_ok: `%|-%:OK`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{dt_F <- `dt_F*`, t_1 <- `t_1*`, t_2 <- `t_2*`} + -- if (|`dt_F*`| = |`t_1*`|) + -- if (|`dt_F*`| = |`t_2*`|) + -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- `et*`} + -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- `lct*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt)])))*{rt <- `rt*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt')])))?{rt' <- `rt'?`} + -- (if ($proj_uN_0(x).0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} + -- wf_context: `%`(C) + -- wf_context: `%`(C_0) + -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (wf_context: `%`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + -- if (|`t_1*`| = |`t_2*`|) + -- if (n = |`dt*`|) + -- if (m = |`st*`|) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Localval_ok: `%|-%:%`(store, val?, localtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule set{s : store, val : val, t : valtype}: + `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_val: `%`(val) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule unset{s : store}: + `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, BOT_valtype)) + -- wf_store: `%`(s) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, BOT_valtype)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Datainst_ok: `%|-%:%`(store, datainst, datatype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `b*` : byte*}: + `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) + -- wf_store: `%`(s) + -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + -- wf_store: `%`(s) + -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exportinst_ok: `%|-%:OK`(store, exportinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, nm : name, xa : externaddr, xt : externtype}: + `%|-%:OK`(s, {NAME nm, ADDR xa}) + -- Externaddr_ok: `%|-%:%`(s, xa, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_exportinst: `%`({NAME nm, ADDR xa}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `deftype*` : deftype*, `tagaddr*` : tagaddr*, `globaladdr*` : globaladdr*, `memaddr*` : memaddr*, `tableaddr*` : tableaddr*, `funcaddr*` : funcaddr*, `dataaddr*` : dataaddr*, `elemaddr*` : elemaddr*, `exportinst*` : exportinst*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `memtype*` : memtype*, `tabletype*` : tabletype*, `deftype_F*` : deftype*, `datatype*` : datatype*, `elemtype*` : elemtype*, `subtype*` : subtype*}: + `%|-%:%`(s, {TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}, {TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) + -- (Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, deftype))*{deftype <- `deftype*`} + -- (Externaddr_ok: `%|-%:%`(s, TAG_externaddr(tagaddr), TAG_externtype(tagtype)))*{tagaddr <- `tagaddr*`, tagtype <- `tagtype*`} + -- if (|`tagaddr*`| = |`tagtype*`|) + -- (Externaddr_ok: `%|-%:%`(s, GLOBAL_externaddr(globaladdr), GLOBAL_externtype(globaltype)))*{globaladdr <- `globaladdr*`, globaltype <- `globaltype*`} + -- if (|`globaladdr*`| = |`globaltype*`|) + -- (Externaddr_ok: `%|-%:%`(s, FUNC_externaddr(funcaddr), FUNC_externtype($typeuse_deftype(deftype_F))))*{deftype_F <- `deftype_F*`, funcaddr <- `funcaddr*`} + -- if (|`deftype_F*`| = |`funcaddr*`|) + -- (Externaddr_ok: `%|-%:%`(s, MEM_externaddr(memaddr), MEM_externtype(memtype)))*{memaddr <- `memaddr*`, memtype <- `memtype*`} + -- if (|`memaddr*`| = |`memtype*`|) + -- (Externaddr_ok: `%|-%:%`(s, TABLE_externaddr(tableaddr), TABLE_externtype(tabletype)))*{tableaddr <- `tableaddr*`, tabletype <- `tabletype*`} + -- if (|`tableaddr*`| = |`tabletype*`|) + -- (Datainst_ok: `%|-%:%`(s, s.DATAS_store[dataaddr], datatype))*{dataaddr <- `dataaddr*`, datatype <- `datatype*`} + -- if (|`dataaddr*`| = |`datatype*`|) + -- (if (dataaddr < |s.DATAS_store|))*{dataaddr <- `dataaddr*`} + -- (Eleminst_ok: `%|-%:%`(s, s.ELEMS_store[elemaddr], elemtype))*{elemaddr <- `elemaddr*`, elemtype <- `elemtype*`} + -- if (|`elemaddr*`| = |`elemtype*`|) + -- (if (elemaddr < |s.ELEMS_store|))*{elemaddr <- `elemaddr*`} + -- (Exportinst_ok: `%|-%:OK`(s, exportinst))*{exportinst <- `exportinst*`} + -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) + -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} + -- if (|TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}| > 0) + -- wf_store: `%`(s) + -- wf_moduleinst: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}) + -- wf_context: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (wf_externtype: `%`(TAG_externtype(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_externtype: `%`(GLOBAL_externtype(globaltype)))*{globaltype <- `globaltype*`} + -- (wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_F))))*{deftype_F <- `deftype_F*`} + -- (wf_externtype: `%`(MEM_externtype(memtype)))*{memtype <- `memtype*`} + -- (wf_externtype: `%`(TABLE_externtype(tabletype)))*{tabletype <- `tabletype*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Frame_ok: `%|-%:%`(store, frame, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `val?*` : val?*, moduleinst : moduleinst, C : context, `lct*` : localtype*}: + `%|-%:%`(s, {LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}, C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) + -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) + -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} + -- if (|`lct*`| = |`val?*`|) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:3.1-4.36 +relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:10.1-12.46 + rule plain{s : store, C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 + rule ref{s : store, C : context, ref : ref, rt : reftype}: + `%;%|-%:%`(s, C, $instr_ref(ref), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_ref: `%`(ref) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 + rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: + `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) + -- if (n = |`t'*`|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:23.1-26.37 + rule frame{s : store, C : context, n : n, f : frame, `instr*` : instr*, `t*` : valtype*, C' : context}: + `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) + -- Frame_ok: `%|-%:%`(s, f, C') + -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`})) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) + -- if (n = |`t*`|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 + rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 + rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRAP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 +relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 + rule empty{s : store, C : context}: + `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 + rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*, var_0 : context?}: + `%;%|-%:%`(s, C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- if (|`init*`| = |`t*`|) + -- if (|`init*`| = |`x_1*`|) + -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} + -- Instrs_ok2: `%;%|-%:%`(s, !(var_0), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- if (var_0 =/= ?()) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_context: `%`(!(var_0)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- fun_with_locals: `%%%%`(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}, var_0) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:47.1-51.33 + rule sub{s : store, C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it') + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 + rule frame{s : store, C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 +relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:60.1-62.44 + rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, jt : tagtype}: + `%|-%:%`(s, {TYPE jt}, jt) + -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) + -- wf_store: `%`(s) + -- wf_taginst: `%`({TYPE jt}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `mut?` : mut?, t : valtype, val : val}: + `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Meminst_ok: `%|-%:%`(store, meminst, memtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, m : m, `b*` : byte*}: + `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) + -- wf_store: `%`(s) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, m : m, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- if (|ref*{ref <- `ref*`}| = n) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + -- wf_store: `%`(s) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) + -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, moduleinst : moduleinst, func : func, C : context, dt' : deftype}: + `%|-%:%`(s, {TYPE dt, MODULE moduleinst, CODE $funccode_func(func)}, dt) + -- Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt) + -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) + -- Func_ok: `%|-%:%`(C, func, dt') + -- Deftype_sub: `%|-%<:%`(C, dt', dt) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE $funccode_func(func)}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Structinst_ok: `%|-%:OK`(store, structinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, `fv*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} + -- if (|`fv*`| = |`zt*`|) + -- wf_store: `%`(s) + -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, `fv*` : fieldval*, `mut?` : mut?, zt : storagetype}: + `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} + -- wf_store: `%`(s) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exninst_ok: `%|-%:OK`(store, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, ta : tagaddr, `val*` : val*, dt : deftype, `t*` : valtype*}: + `%|-%:OK`(s, {TAG ta, FIELDS val*{val <- `val*`}}) + -- if ($typeuse_deftype(dt) = s.TAGS_store[ta].TYPE_taginst) + -- if (ta < |s.TAGS_store|) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} + -- if (|`t*`| = |`val*`|) + -- wf_store: `%`(s) + -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:208.1-209.50 +relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:222.1-225.35 + rule trans{fv_1 : fieldval, s : store, fv_2 : fieldval, fv' : fieldval}: + `%>>_%%`(fv_1, s, fv_2) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv') + -- ImmutReachable: `%>>_%%`(fv', s, fv_2) + -- wf_fieldval: `%`(fv_1) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(fv_2) + -- wf_fieldval: `%`(fv') + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 + rule `ref.struct`{a : addr, s : store, i : nat, `ft*` : fieldtype*, zt : storagetype}: + `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) + -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (a < |s.STRUCTS_store|) + -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) + -- if (i < |ft*{ft <- `ft*`}|) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) + -- if (i < |s.STRUCTS_store[a].FIELDS_structinst|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:232.1-234.42 + rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: + `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) + -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) + -- if (a < |s.ARRAYS_store|) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) + -- if (i < |s.ARRAYS_store[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 + rule `ref.exn`{a : addr, s : store, i : nat}: + `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, $fieldval_val(s.EXNS_store[a].FIELDS_exninst[i])) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) + -- if (i < |s.EXNS_store[a].FIELDS_exninst|) + -- if (a < |s.EXNS_store|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 + rule `ref.extern`{ref : ref, s : store}: + `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, $fieldval_ref(ref)) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(ref)) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation fun_NotImmutReachable_before_fun_NotImmutReachable_case_1: `%%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_0{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%`(fv_1, s, fv_2) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation fun_NotImmutReachable: `%%%%`(fieldval, store, fieldval, bool) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_0{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%%`(fv_1, s, fv_2, false) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_1{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%%`(fv_1, s, fv_2, true) + -- ~ fun_NotImmutReachable_before_fun_NotImmutReachable_case_1: `%%%`(fv_1, s, fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{fv_1 : fieldval, s : store, fv_2 : fieldval, var_0 : bool}: + `~%>>_%%`(fv_1, s, fv_2) + -- if var_0 + -- wf_fieldval: `%`(fv_1) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(fv_2) + -- fun_NotImmutReachable: `%%%%`(fv_1, s, fv_2, var_0) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Store_ok: `|-%:OK`(store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `taginst*` : taginst*, `tagtype*` : tagtype*, `globalinst*` : globalinst*, `globaltype*` : globaltype*, `meminst*` : meminst*, `memtype*` : memtype*, `tableinst*` : tableinst*, `tabletype*` : tabletype*, `deftype*` : deftype*, `funcinst*` : funcinst*, `datainst*` : datainst*, `datatype*` : datatype*, `eleminst*` : eleminst*, `elemtype*` : elemtype*, `structinst*` : structinst*, `arrayinst*` : arrayinst*, `exninst*` : exninst*}: + `|-%:OK`(s) + -- (Taginst_ok: `%|-%:%`(s, taginst, tagtype))*{taginst <- `taginst*`, tagtype <- `tagtype*`} + -- if (|`taginst*`| = |`tagtype*`|) + -- (Globalinst_ok: `%|-%:%`(s, globalinst, globaltype))*{globalinst <- `globalinst*`, globaltype <- `globaltype*`} + -- if (|`globalinst*`| = |`globaltype*`|) + -- (Meminst_ok: `%|-%:%`(s, meminst, memtype))*{meminst <- `meminst*`, memtype <- `memtype*`} + -- if (|`meminst*`| = |`memtype*`|) + -- (Tableinst_ok: `%|-%:%`(s, tableinst, tabletype))*{tableinst <- `tableinst*`, tabletype <- `tabletype*`} + -- if (|`tableinst*`| = |`tabletype*`|) + -- (Funcinst_ok: `%|-%:%`(s, funcinst, deftype))*{deftype <- `deftype*`, funcinst <- `funcinst*`} + -- if (|`deftype*`| = |`funcinst*`|) + -- (Datainst_ok: `%|-%:%`(s, datainst, datatype))*{datainst <- `datainst*`, datatype <- `datatype*`} + -- if (|`datainst*`| = |`datatype*`|) + -- (Eleminst_ok: `%|-%:%`(s, eleminst, elemtype))*{eleminst <- `eleminst*`, elemtype <- `elemtype*`} + -- if (|`eleminst*`| = |`elemtype*`|) + -- (Structinst_ok: `%|-%:OK`(s, structinst))*{structinst <- `structinst*`} + -- (Arrayinst_ok: `%|-%:OK`(s, arrayinst))*{arrayinst <- `arrayinst*`} + -- (Exninst_ok: `%|-%:OK`(s, exninst))*{exninst <- `exninst*`} + -- (NotImmutReachable: `~%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, `REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + -- wf_store: `%`(s) + -- (wf_typeuse: `%`(tagtype))*{tagtype <- `tagtype*`} + -- (wf_globaltype: `%`(globaltype))*{globaltype <- `globaltype*`} + -- (wf_memtype: `%`(memtype))*{memtype <- `memtype*`} + -- (wf_tabletype: `%`(tabletype))*{tabletype <- `tabletype*`} + -- (wf_reftype: `%`(elemtype))*{elemtype <- `elemtype*`} + -- (wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- wf_store: `%`({TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_taginst: `%<=%`(taginst, taginst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{jt : tagtype}: + `%<=%`({TYPE jt}, {TYPE jt}) + -- wf_taginst: `%`({TYPE jt}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_globalinst: `%<=%`(globalinst, globalinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: + `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_meminst: `%<=%`(meminst, meminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, m : m, `b*` : byte*, n' : n, `b'*` : byte*}: + `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) + -- if (n <= n') + -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_tableinst: `%<=%`(tableinst, tableinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, m : m, rt : reftype, `ref*` : ref*, n' : n, `ref'*` : ref*}: + `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) + -- if (n <= n') + -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_funcinst: `%<=%`(funcinst, funcinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, mm : moduleinst, fc : funccode}: + `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) + -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_datainst: `%<=%`(datainst, datainst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`b*` : byte*, `b'*` : byte*}: + `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) + -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) + -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) + -- wf_datainst: `%`({BYTES b'*{b' <- `b'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_eleminst: `%<=%`(eleminst, eleminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: + `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) + -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) + -- wf_eleminst: `%`({TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_structinst: `%<=%`(structinst, structinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} + -- if (|`fv*`| = |`fv'*`|) + -- if (|`fv*`| = |`mut?*`|) + -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?` : mut?, zt : storagetype}: + `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} + -- if (|`fv*`| = |`fv'*`|) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_exninst: `%<=%`(exninst, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{ta : tagaddr, `val*` : val*}: + `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) + -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_store: `%<=%`(store, store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, s' : store}: + `%<=%`(s, s') + -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} + -- (if (a < |s.TAGS_store|))^(a<|s.TAGS_store|){} + -- (if (a < |s'.TAGS_store|))^(a<|s.TAGS_store|){} + -- (Extend_globalinst: `%<=%`(s.GLOBALS_store[a], s'.GLOBALS_store[a]))^(a<|s.GLOBALS_store|){} + -- (if (a < |s.GLOBALS_store|))^(a<|s.GLOBALS_store|){} + -- (if (a < |s'.GLOBALS_store|))^(a<|s.GLOBALS_store|){} + -- (Extend_meminst: `%<=%`(s.MEMS_store[a], s'.MEMS_store[a]))^(a<|s.MEMS_store|){} + -- (if (a < |s.MEMS_store|))^(a<|s.MEMS_store|){} + -- (if (a < |s'.MEMS_store|))^(a<|s.MEMS_store|){} + -- (Extend_tableinst: `%<=%`(s.TABLES_store[a], s'.TABLES_store[a]))^(a<|s.TABLES_store|){} + -- (if (a < |s.TABLES_store|))^(a<|s.TABLES_store|){} + -- (if (a < |s'.TABLES_store|))^(a<|s.TABLES_store|){} + -- (Extend_funcinst: `%<=%`(s.FUNCS_store[a], s'.FUNCS_store[a]))^(a<|s.FUNCS_store|){} + -- (if (a < |s.FUNCS_store|))^(a<|s.FUNCS_store|){} + -- (if (a < |s'.FUNCS_store|))^(a<|s.FUNCS_store|){} + -- (Extend_datainst: `%<=%`(s.DATAS_store[a], s'.DATAS_store[a]))^(a<|s.DATAS_store|){} + -- (if (a < |s.DATAS_store|))^(a<|s.DATAS_store|){} + -- (if (a < |s'.DATAS_store|))^(a<|s.DATAS_store|){} + -- (Extend_eleminst: `%<=%`(s.ELEMS_store[a], s'.ELEMS_store[a]))^(a<|s.ELEMS_store|){} + -- (if (a < |s.ELEMS_store|))^(a<|s.ELEMS_store|){} + -- (if (a < |s'.ELEMS_store|))^(a<|s.ELEMS_store|){} + -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} + -- (if (a < |s.STRUCTS_store|))^(a<|s.STRUCTS_store|){} + -- (if (a < |s'.STRUCTS_store|))^(a<|s.STRUCTS_store|){} + -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} + -- (if (a < |s.ARRAYS_store|))^(a<|s.ARRAYS_store|){} + -- (if (a < |s'.ARRAYS_store|))^(a<|s.ARRAYS_store|){} + -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} + -- (if (a < |s.EXNS_store|))^(a<|s.EXNS_store|){} + -- (if (a < |s'.EXNS_store|))^(a<|s.EXNS_store|){} + -- wf_store: `%`(s) + -- wf_store: `%`(s') + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation State_ok: `|-%:%`(state, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, C : context}: + `|-%:%`(`%;%`_state(s, f), C) + -- Store_ok: `|-%:OK`(s) + -- Frame_ok: `%|-%:%`(s, f, C) + -- wf_context: `%`(C) + -- wf_state: `%`(`%;%`_state(s, f)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Config_ok: `|-%:%`(config, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- (wf_valtype: `%`(t))*{t <- `t*`} + -- wf_context: `%`(C) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`})) + -- wf_state: `%`(`%;%`_state(s, f)) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax A = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax B = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax sym = + | _FIRST(A_1 : A) + | _DOTS + | _LAST(A_n : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax symsplit = + | _FIRST(A_1 : A) + | _LAST(A_2 : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax recorddots = () + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax record = +{ + FIELD_1 A, + FIELD_2 A, + `...` recorddots +} + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax pth = + | PTHSYNTAX + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +syntax T = nat + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremise: `%`(nat) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremisedots: `...` + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingScheme: `%`(nat) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec + rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: + `%`(conclusion) + -- NotationTypingPremise: `%`(premise_1) + -- NotationTypingPremise: `%`(premise_2) + -- NotationTypingPremisedots: `...` + -- NotationTypingPremise: `%`(premise_n) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 +relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 + rule `i32.add`{C : context}: + `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 + rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: + `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 + rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation NotationReduct: `~>%`(instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 3{q_1 : num_, q_5 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 4{q_6 : num_}: + `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $instrdots : instr* + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation instrdots_is_wf: `%`(ret_val : instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule instrdots_is_wf_0{ret_val : instr*}: + `%`(ret_val) + -- if (ret_val = $instrdots) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax label = + | `LABEL_%{%}`(n : n, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_label: `%`(label) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule label_case_0{n : n, `instr*` : instr*}: + `%`(`LABEL_%{%}`_label(n, `instr*`)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax callframe = + | `FRAME_%{%}`(n : n, frame : frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_callframe: `%`(callframe) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule callframe_case_0{n : n, frame : frame}: + `%`(`FRAME_%{%}`_callframe(n, frame)) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation allocX_is_wf(syntax X, syntax Y): `%%%%`(store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule allocX_is_wf_0{syntax X, syntax Y, store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)}: + `%%%%`(store, X_0, Y_0, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocX(syntax X, syntax Y, store, X_0, Y_0)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 +def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 + def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 + def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*}(syntax X, syntax Y, s, [X] ++ X'#1*{X'#1 <- `X'*`}, [Y] ++ Y'#1*{Y'#1 <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) + -- let{s_2 : store, `a'*` : addr*} (s_2, a'#1*{a'#1 <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'#2*{X'#2 <- `X'*`}, Y'#2*{Y'#2 <- `Y'*`}) + -- wf_store: `%`($allocX(syntax X, syntax Y, s, X, Y).0) + -- wf_store: `%`($allocXs(syntax X, syntax Y, s_1, X'#3*{X'#3 <- `X'*`}, Y'#3*{Y'#3 <- `Y'*`}).0) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 +relation allocXs_is_wf(syntax X, syntax Y): `%%%%`(store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 + rule allocXs_is_wf_0{syntax X, syntax Y, store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocXs(syntax X, syntax Y, store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +syntax symdots = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +relation wf_symdots: `%`(symdots) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + rule symdots_case_0{i : nat}: + `%`(`%`_symdots(i)) + -- if (i = 0) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +def $var(syntax X) : nat + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + def $var{syntax X}(syntax X) = 0 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax abbreviated = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax expanded = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax syntax = () + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bbyte : byte + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 +grammar BuN(N : N) : uN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 + prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) + -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 + prod{m : m, n : n} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 +grammar BsN(N : N) : sN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 + prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) + -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 + prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) + -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 + prod{i : sN, n : n} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * ($proj_sN_0(i).0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BiN(N : N) : iN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{i : sN, var_0 : nat} i:BsN(N) => `%`_iN(var_0) + -- fun_inv_signed_: `%%%`(N, $proj_sN_0(i).0, var_0) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BfN(N : N) : fN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu32 : u32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu64 : u64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bs33 : s33 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : sN} ``:BsN(33) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi32 : i32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi64 : i64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf32 : f32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : fN} ``:BfN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf64 : f64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : fN} ``:BfN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blist(syntax el, grammar BX : el) : el* + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bname : name + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{name : name, `b*` : byte*, var_0 : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name + -- if (var_0 = b*{b <- `b*`}) + -- fun_utf8: `%%`($proj_name_0(name).0, var_0) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btypeidx : typeidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btagidx : tagidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bglobalidx : globalidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bmemidx : memidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btableidx : tableidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfuncidx : funcidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bdataidx : dataidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Belemidx : elemidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blocalidx : localidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfieldidx : fieldidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blabelidx : labelidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{l : labelidx} l:Bu32 => l + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bexternidx : externidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bnumtype : numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7C => F64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7D => F32_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7E => I64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7F => I32_numtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvectype : vectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7B => V128_vectype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Babsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x69 => EXN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6A => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6B => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6C => I31_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6D => EQ_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6E => ANY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6F => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x70 => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x71 => NONE_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x72 => NOEXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x73 => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x74 => NOEXN_heaptype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => ht + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) + -- if ($proj_sN_0(x33).0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Breftype : reftype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvaltype : valtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{nt : numtype} nt:Bnumtype => $valtype_numtype(nt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{vt : vectype} vt:Bvectype => $valtype_vectype(vt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{rt : reftype} rt:Breftype => $valtype_reftype(rt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bresulttype : resulttype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmut : mut? + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x00 => ?() + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x01 => ?(MUT_mut) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bpacktype : packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x77 => I16_packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x78 => I8_packtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bstoragetype : storagetype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{t : valtype} t:Bvaltype => $storagetype_valtype(t) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{pt : packtype} pt:Bpacktype => $storagetype_packtype(pt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bfieldtype : fieldtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bcomptype : comptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bsubtype : subtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Brectype : rectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Blimits : (addrtype, limits) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btagtype : tagtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bglobaltype : globaltype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmemtype : memtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btabletype : tabletype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bexterntype : externtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcastop : castop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x00 => (?(), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x01 => (?(NULL_null), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x02 => (?(), ?(NULL_null)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x03 => (?(NULL_null), ?(NULL_null)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bblocktype : blocktype + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x40 => _RESULT_blocktype(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx(($proj_sN_0(i).0 : int <:> nat))) + -- if ($proj_sN_0(i).0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcatch : catch + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bmemarg : memidxop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) + -- if (n < (2 ^ 6)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, n : n, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) + -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Blaneidx : laneidx + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} `%`_byte($proj_uN_0(l).0):Bbyte => `%`_laneidx($proj_uN_0(l).0) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 +grammar Binstr : instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 + prod 0x00 => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 + prod 0x01 => NOP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 + prod 0x1A => DROP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 + prod 0x1B => SELECT_instr(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 + prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 + prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 + prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 + prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 + prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 + prod 0x0A => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 + prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 + prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 + prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 + prod 0x0F => RETURN_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 + prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 + prod{x : idx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 + prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 + prod{x : idx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 + prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 + prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 + prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 + prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 + prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 + prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 + prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 + prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 + prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 + prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 + prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 + prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 + prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 + prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 + prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 + prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 + prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 + prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 + prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 + prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 + prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 + prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 + prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 + prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 + prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 + prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 + prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 + prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 + prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 + prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 + prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 + prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 + prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 + prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 + prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 + prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 + prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 + prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 + prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 + prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 + prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 + prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 + prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 + prod 0xD1 => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 + prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 + prod 0xD3 => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 + prod 0xD4 => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 + prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 + prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 + prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 + prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 + prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 + prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 + prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 + prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 + prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 + prod {{0xFB} {`%`_u32(15):Bu32}} => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 + prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 + prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 + prod {{0xFB} {`%`_u32(26):Bu32}} => `ANY.CONVERT_EXTERN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 + prod {{0xFB} {`%`_u32(27):Bu32}} => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 + prod {{0xFB} {`%`_u32(28):Bu32}} => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 + prod {{0xFB} {`%`_u32(29):Bu32}} => `I31.GET`_instr(S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 + prod {{0xFB} {`%`_u32(30):Bu32}} => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 + prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 + prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 + prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 + prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 + prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 + prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 + prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 + prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 + prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 + prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 + prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 + prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 + prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 + prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 + prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 + prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 + prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 + prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 + prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 + prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 + prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 + prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 + prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 + prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 + prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 + prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 + prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 + prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 + prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 + prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 + prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 + prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 + prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 + prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 + prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 + prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 + prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 + prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 + prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 + prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 + prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 + prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 + prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 + prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 + prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 + prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 + prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 + prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 + prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 + prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 + prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 + prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 + prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 + prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 + prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 + prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 + prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 + prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 + prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 + prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 + prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 + prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 + prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 + prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 + prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 + prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 + prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 + prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 + prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 + prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 + prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 + prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 + prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 + prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 + prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 + prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 + prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 + prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 + prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 + prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 + prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 + prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 + prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 + prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 + prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 + prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 + prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 + prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 + prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 + prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 + prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 + prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 + prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 + prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 + prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 + prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 + prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 + prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 + prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 + prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 + prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 + prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 + prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 + prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 + prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 + prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 + prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 + prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 + prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 + prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 + prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 + prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 + prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 + prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 + prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 + prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 + prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 + prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 + prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 + prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 + prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 + prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 + prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 + prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 + prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 + prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 + prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 + prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 + prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 + prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 + prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 + prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 + prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 + prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 + prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 + prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 + prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 + prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 + prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 + prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 + prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 + prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx($proj_uN_0(l).0)^16{l <- `l*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 + prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 + prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 + prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 + prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 + prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 + prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 + prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 + prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 + prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 + prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 + prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 + prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 + prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 + prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 + prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 + prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 + prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 + prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 + prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 + prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 + prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 + prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 + prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 + prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 + prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 + prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 + prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 + prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 + prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 + prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 + prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 + prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 + prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 + prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 + prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 + prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 + prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 + prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 + prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 + prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 + prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 + prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 + prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 + prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 + prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 + prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 + prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 + prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 + prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 + prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 + prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 + prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 + prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 + prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 + prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 + prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 + prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 + prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 + prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 + prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 + prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 + prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 + prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 + prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 + prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 + prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 + prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 + prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 + prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 + prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 + prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 + prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 + prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 + prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 + prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 + prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 + prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 + prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 + prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 + prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 + prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 + prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 + prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 + prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 + prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 + prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 + prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 + prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 + prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 + prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 + prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 + prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 + prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 + prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 + prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 + prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 + prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 + prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 + prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 + prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 + prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 + prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 + prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 + prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 + prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 + prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 + prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 + prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 + prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 + prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 + prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 + prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 + prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 + prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 + prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 + prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 + prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 + prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 + prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 + prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 + prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 + prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 + prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 + prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 + prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 + prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 + prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 + prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 + prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 + prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 + prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 + prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 + prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 + prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 + prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 + prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 + prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 + prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 + prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 + prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 + prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 + prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 + prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 + prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 + prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 + prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 + prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 + prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 + prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 + prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 + prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 + prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 + prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 + prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 + prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 + prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 + prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 + prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 + prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 + prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 + prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 + prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 + prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 + prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 + prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 + prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 + prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 + prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 + prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 + prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 + prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 + prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 + prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 + prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 + prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 + prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 + prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 + prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 + prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 + prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 + prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 + prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 + prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 + prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 + prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 + prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 + prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 + prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 + prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 + prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 + prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 + prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 + prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 + prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 + prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 + prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 + prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 + prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 + prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 + prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 + prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 + prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 + prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 + prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 + prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 + prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 + prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 + prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 + prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 + prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 + prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 + prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 + prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 + prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 + prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 + prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 + prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 + prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 + prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) +} + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bexpr : expr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`en*` : en*, len : nat} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} + -- if (len = 0) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod eps => [] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustom : ()* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{Bname} {Bbyte*{}}} => [] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustomsec : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btype : type + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{qt : rectype} qt:Brectype => TYPE_type(qt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btypesec : type* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimport : import + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimportsec : import* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfuncsec : typeidx* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btable : table + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [`REF.NULL`_instr(ht)]) + -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btablesec : table* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmem : mem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmemsec : mem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobal : global + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobalsec : global* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexport : export + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexportsec : export* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstart : start* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{x : idx} x:Bfuncidx => [START_start(x)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstartsec : start? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => !($opt_(syntax start, startopt)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemkind : reftype + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod 0x00 => REF_reftype(?(), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belem : elem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`y*` : idx*, e_o : expr} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], DECLARE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`e*` : expr*, e_O : expr} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e_O : expr} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemsec : elem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Blocals : local* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{t : valtype, n : n} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfunc : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) + -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcode : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{code : code, len : nat} {{`%`_u32(len):Bu32} {code:Bfunc}} => code + -- if (len = 0) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcodesec : code* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdata : data + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*, e : expr} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*, x : idx, e : expr} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatasec : data* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacnt : u32* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacntsec : u32? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => !($opt_(syntax u32, nopt)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btag : tag + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btagsec : tag* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmagic : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bversion : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmodule : module + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**, var_0 : dataidx*} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} + -- if ((n?{n <- `n?`} =/= ?()) \/ (var_0 = [])) + -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} + -- fun_dataidx_funcs: `%%`(func*{func <- `func*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tchar : char + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tsource : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tchar*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TuNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TsNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TfNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x21 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x23 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x24 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x25 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x26 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x27 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2A => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2B => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2D => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3A => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3D => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x40 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x60 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7E => `%`_char(``) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x30 => 0 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x31 => 1 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x32 => 2 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x33 => 3 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x34 => 4 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x35 => 5 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x36 => 6 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x37 => 7 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x38 => 8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x39 => 9 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x41 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x42 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x43 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x44 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x45 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x46 => 15 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x61 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x62 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x63 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x64 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x65 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x66 => 15 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 +grammar Thexnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 + prod{h : nat} h:Thexdigit => h + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 + prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char} c:Tchar => c + -- if (((($proj_char_0(c).0 >= 32) /\ ($proj_char_0(c).0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\t" => `%`_char(9) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\n" => `%`_char(10) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\r" => `%`_char(13) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\"" => `%`_char(34) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\'" => `%`_char(39) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\\" => `%`_char(92) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) + -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringelem : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char, var_0 : byte*} c:Tstringchar => var_0 + -- fun_utf8: `%%`([c], var_0) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstring : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) + -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tname : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*, `b*` : byte*, var_0 : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) + -- if (b*{b <- `b*`} = var_0) + -- fun_utf8: `%%`(c*{c <- `c*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tid : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) + -- if (|c*{c <- `c*`}| > 0) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tkeyword : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Treserved : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Ttoken : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tkeyword => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TuNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TsNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TfNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : byte} [``]:Tstring => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tid => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x28 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x29 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Treserved => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tannotid : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tidchar+{} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tname => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 +grammar Tblockcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 + prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 +grammar Tblockchar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 + prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 + prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 + prod{`` : ()} ``:Tblockcomment => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Teof : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : text} ``:"" => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinechar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if (($proj_char_0(c).0 =/= 10) /\ ($proj_char_0(c).0 =/= 13)) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tnewline : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0A => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0D => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinecomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tlinecomment => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tblockcomment => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tformat : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tnewline => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x09 => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 +grammar Tspace : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 + prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 +grammar Tannot : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 + prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tsign : int + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod eps => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "+" => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "-" => - (1 : nat <:> int) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 +grammar Tnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 + prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TuN(N : N) : uN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} n:Tnum => `%`_uN(n) + -- if (n < (2 ^ N)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) + -- if (n < (2 ^ N)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TsN(N : N) : sN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TiN(N : N) : iN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{i : sN, var_0 : nat} i:TsN(N) => `%`_iN(var_0) + -- fun_inv_signed_: `%%%`(N, $proj_sN_0(i).0, var_0) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 +grammar Tfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 + prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 + prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 +grammar Thexfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 + prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 + prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfNmag(N : N) : fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Tfloat => $ieee_(N, q) + -- if ($ieee_(N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Thexfloat => $ieee_(N, q) + -- if ($ieee_(N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "inf" => INF_fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "nan" => NAN_fNmag($canon_(N)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + -- if ((1 <= n) /\ (n < (2 ^ !($signif(N))))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfN(N : N) : fN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti16 : u16 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(16) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf32 : f32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf64 : f64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlist(syntax el, grammar TX : el) : el* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} + -- if (|el*{el <- `el*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidx_(ids : name?*) : idx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} x:Tu32 => x + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx, id : name} id:Tid => x + -- if (ids[$proj_uN_0(x).0] = ?(id)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttypeidx_(I : I) : typeidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttagidx_(I : I) : tagidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tglobalidx_(I : I) : globalidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmemidx_(I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttableidx_(I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfuncidx_(I : I) : funcidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdataidx_(I : I) : dataidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Telemidx_(I : I) : elemidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlocalidx_(I : I) : localidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlabelidx_(I : I) : labelidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfieldidx__(I : I, x : idx) : fieldidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.FIELDS_I[$proj_uN_0(x).0]) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Texternidx_(I : I) : externidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnumtype : numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f32" => F32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f64" => F64_numtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvectype : vectype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "v128" => V128_vectype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tabsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "any" => ANY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "eq" => EQ_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i31" => I31_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "struct" => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "array" => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "none" => NONE_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "func" => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "nofunc" => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "exn" => EXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noexn" => NOEXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "extern" => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noextern" => NOEXTERN_heaptype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Theaptype_(I : I) : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ht : heaptype} ht:Tabsheaptype => ht + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnull : null + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "null" => NULL_null + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Treftype_(I : I) : reftype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvaltype_(I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{nt : numtype} nt:Tnumtype => $valtype_numtype(nt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{vt : vectype} vt:Tvectype => $valtype_vectype(vt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{rt : reftype} rt:Treftype_(I) => $valtype_reftype(rt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tpacktype : packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i8" => I8_packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i16" => I16_packtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tstoragetype_(I : I) : storagetype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(I) => $storagetype_valtype(t) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{pt : packtype} pt:Tpacktype => $storagetype_packtype(pt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfieldtype_(I : I) : fieldtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfield_(I : I) : (fieldtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft : fieldtype, `id?` : char?} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tparam_(I : I) : (valtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype, `id?` : char?} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tresult_(I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tcomptype_(I : I) : (comptype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfinal : final + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "final" => FINAL_final + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tsubtype_(I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypedef_(I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{st : subtype, I' : I, `id?` : char?} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Trectype_(I : I) : (rectype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`st*` : subtype*, `I'*` : I*, var_0 : idctxt} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), var_0) + -- fun_concat_idctxt: `%%`(I'*{I' <- `I'*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Taddrtype : addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_addrtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tlimits : limits + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypeuse_(I : I) : (typeidx, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') + -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') + -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) + -- Idctxt_ok: `|-%:OK`(I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttagtype_(I : I) : tagtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tglobaltype_(I : I) : globaltype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tmemtype_(I : I) : memtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttabletype_(I : I) : tabletype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Texterntype_(I : I) : (externtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{gt : globaltype, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{tt : tabletype, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, `id?` : char?, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlabel_(I : I) : (name?, I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) + -- if ~ (?(id) <- I.LABELS_I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[$proj_uN_0(x).0] = ?()]) + -- if (?(id) = I.LABELS_I[$proj_uN_0(x).0]) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tblocktype_(I : I) : blocktype + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tcatch_(I : I) : catch + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tfoldedinstr_(I : I) : instr* + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlaneidx : laneidx + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : u8} i:Tu8 => i + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Talign_(N : N) : u32 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{n : n, m : m} {{"align="} {`%`_u64(m):Tu64}} => `%`_u32(n) + -- if (m = (2 ^ n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u32(N) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Toffset : u64 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{m : m} {{"offset="} {`%`_u64(m):Tu64}} => `%`_u64(m) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u64(0) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tmemarg_(N : N) : memarg + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{n : n, m : m} {{`%`_u32(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tplaininstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "unreachable" => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "nop" => NOP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "drop" => DROP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "return" => RETURN_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "throw_ref" => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.is_null" => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.as_non_null" => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.eq" => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.i31" => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_s" => `I31.GET`_instr(S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_u" => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "array.len" => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "any.convert_extern" => `ANY.CONVERT_EXTERN`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "extern.convert_any" => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_dot_i8x16_i7x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_dot_i8x16_i7x16_add_s" => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2)) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 +grammar Tinstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 + prod{in : instr} in:Tplaininstr_(I) => in + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 + prod{in : instr} in:Tblockinstr_(I) => in + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 +grammar Tinstrs_(I : I) : instr* + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 + prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 + prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 +grammar Tblockinstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) +} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Texpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttype_(I : I) : (type, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') + -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) + -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tglobal_(I : I) : (global, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmem_(I : I) : (mem, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttable_(I : I) : (table, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tlocal_(I : I) : (local*, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{t : valtype, `id?` : char?} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tfunc_(I : I) : (func, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I, var_0 : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = I +++ I_1 +++ var_0) + -- Idctxt_ok: `|-%:OK`(I') + -- fun_concat_idctxt: `%%`(I_2*{I_2 <- `I_2*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatastring : byte* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmemuse_(I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Toffset_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdata_(I : I) : (data, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemexpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemlist_(I : I) : (reftype, expr*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttableuse_(I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telem_(I : I) : (elem, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tstart_(I : I) : (start, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timport_(I : I) : (import, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texport_(I : I) : (export, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttagdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobaldots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmemdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttabledots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfuncdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttag_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobal_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmem_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfunc_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatamem_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemtable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecl_(I : I) : (decl, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (type, idctxt)} ``:Ttype_(I) => ($decl_type(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (import, idctxt)} ``:Timport_(I) => ($decl_import(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (tag, idctxt)} ``:Ttag_(I) => ($decl_tag(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (global, idctxt)} ``:Tglobal_(I) => ($decl_global(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (mem, idctxt)} ``:Tmem_(I) => ($decl_mem(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (table, idctxt)} ``:Ttable_(I) => ($decl_table(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (func, idctxt)} ``:Tfunc_(I) => ($decl_func(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (data, idctxt)} ``:Tdata_(I) => ($decl_data(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (elem, idctxt)} ``:Telem_(I) => ($decl_elem(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (start, idctxt)} ``:Tstart_(I) => ($decl_start(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (export, idctxt)} ``:Texport_(I) => ($decl_export(``.0), ``.1) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmodule : module + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I, var_12 : bool, var_11 : export*, var_10 : start*, var_9 : elem*, var_8 : data*, var_7 : func*, var_6 : table*, var_5 : mem*, var_4 : global*, var_3 : tag*, var_2 : import*, var_1 : type*, var_0 : idctxt} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + -- if (I' = var_0) + -- Idctxt_ok: `|-%:OK`(I') + -- if (type*{type <- `type*`} = var_1) + -- if (import*{import <- `import*`} = var_2) + -- if (tag*{tag <- `tag*`} = var_3) + -- if (global*{global <- `global*`} = var_4) + -- if (mem*{mem <- `mem*`} = var_5) + -- if (table*{table <- `table*`} = var_6) + -- if (func*{func <- `func*`} = var_7) + -- if (data*{data <- `data*`} = var_8) + -- if (elem*{elem <- `elem*`} = var_9) + -- if (lift(start?{start <- `start?`}) = var_10) + -- if (export*{export <- `export*`} = var_11) + -- if var_12 + -- fun_ordered: `%%`(decl*{decl <- `decl*`}, var_12) + -- fun_exportsd: `%%`(decl*{decl <- `decl*`}, var_11) + -- fun_startsd: `%%`(decl*{decl <- `decl*`}, var_10) + -- fun_elemsd: `%%`(decl*{decl <- `decl*`}, var_9) + -- fun_datasd: `%%`(decl*{decl <- `decl*`}, var_8) + -- fun_funcsd: `%%`(decl*{decl <- `decl*`}, var_7) + -- fun_tablesd: `%%`(decl*{decl <- `decl*`}, var_6) + -- fun_memsd: `%%`(decl*{decl <- `decl*`}, var_5) + -- fun_globalsd: `%%`(decl*{decl <- `decl*`}, var_4) + -- fun_tagsd: `%%`(decl*{decl <- `decl*`}, var_3) + -- fun_importsd: `%%`(decl*{decl <- `decl*`}, var_2) + -- fun_typesd: `%%`(decl*{decl <- `decl*`}, var_1) + -- fun_concat_idctxt: `%%`(I*{I <- `I*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecldots_(I : I) : (decl, idctxt)* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bvar(syntax X) : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod 0x00 => ((), ()).1 + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsym : A + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod Bvar(syntax B) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsymsplit : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tvar(syntax X) : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod 0x00 => ((), ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsym : A + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod Tvar(syntax T) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsymsplit : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tabbrev : () + diff --git a/spectec/test-middlend/specification.exp/14-alias-demut.il b/spectec/test-middlend/specification.exp/14-alias-demut.il new file mode 100644 index 0000000000..c0258a09d0 --- /dev/null +++ b/spectec/test-middlend/specification.exp/14-alias-demut.il @@ -0,0 +1,25827 @@ + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax N = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax M = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax K = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax n = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax m = nat + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +def $min(nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $min{i : nat, j : nat}(i, j) = (if (i <= j) then i else j) + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 +relation fun_sum: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_0: + `%%`([], 0) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'#1*{n'#1 <- `n'*`}, (n + var_0)) + -- fun_sum: `%%`(n'*{n' <- `n'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 +relation fun_prod: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_0: + `%%`([], 1) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'#2*{n'#2 <- `n'*`}, (n * var_0)) + -- fun_prod: `%%`(n'*{n' <- `n'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $opt_(syntax X, X*) : X?? + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X}(syntax X, []) = ?(?()) + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 +def $concat_(syntax X, X**) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 + def $concat_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 + def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w#1*{w#1 <- `w*`}] ++ w'#1*{w'#1 <- `w'*#1`}*{`w'*#1` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 +def $concatn_(syntax X, X**, nat : nat) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 + def $concatn_{syntax X, n : nat}(syntax X, [], n) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 + def $concatn_{syntax X, n : nat, `w*` : X*, `w'**` : X**}(syntax X, [w#2*{w#2 <- `w*`}] ++ w'#2*{w'#2 <- `w'*#2`}*{`w'*#2` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) + -- if (n = |`w*`|) + -- (if (n = |`w'*#2`|))*{`w'*#2` <- `w'**`} +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $concatopt_(syntax X, X?*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w#3?{w#3 <- `w?`}] ++ w'#3?{w'#3 <- `w'?#1`}*{`w'?#1` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concat_(syntax X, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concatn_(syntax X, nat : nat, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 +def $disjoint_(syntax X, X*) : bool + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 + def $disjoint_{syntax X}(syntax X, []) = true + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 + def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'#4*{w'#4 <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 +def $setminus1_(syntax X, X : X, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 + def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 + def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'#5*{w'#5 <- `w'*`}) = (if (w = w_1) then [] else $setminus1_(syntax X, w, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 +def $setminus_(syntax X, X*, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 + def $setminus_{syntax X, `w*` : X*}(syntax X, [], w#4*{w#4 <- `w*`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 + def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'#6*{w'#6 <- `w'*`}, w#5*{w#5 <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 +def $setproduct2_(syntax X, X : X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 + def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 + def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'#7*{w'#7 <- `w'*`}] ++ w#6*{w#6 <- `w*#1`}*{`w*#1` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 +def $setproduct1_(syntax X, X*, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 + def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w#7*{w#7 <- `w*#2`}*{`w*#2` <- `w**`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 + def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'#8*{w'#8 <- `w'*`}, w#8*{w#8 <- `w*#3`}*{`w*#3` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 +def $setproduct_(syntax X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 + def $setproduct_{syntax X}(syntax X, []) = [[]] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 + def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1#1*{w_1#1 <- `w_1*`}] ++ w#9*{w#9 <- `w*#4`}*{`w*#4` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) +} + +;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec +def $ND : bool + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax bit = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_bit: `%`(bit) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule bit_case_0{i : nat}: + `%`(`%`_bit(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax byte = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_byte_0(x : byte) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_byte_0{v_num_0 : nat}(`%`_byte(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_byte: `%`(byte) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule byte_case_0{i : nat}: + `%`(`%`_byte(i)) + -- if ((i >= 0) /\ (i <= 255)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax uN = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_uN_0(x : uN) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_uN_0{v_num_0 : nat}(`%`_uN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_uN: `%%`(N, uN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule uN_case_0{N : N, i : nat}: + `%%`(N, `%`_uN(i)) + -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax sN = + | `%`(i : int) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_sN_0(x : sN) : (int) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_sN_0{v_num_0 : int}(`%`_sN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_sN: `%%`(N, sN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule sN_case_0{N : N, i : int}: + `%%`(N, `%`_sN(i)) + -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax iN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u8 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u16 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u31 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u32 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u64 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax s33 = sN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i32 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i64 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i128 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $signif(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(32) = ?(23) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $expon(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(32) = ?(8) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $M(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $M{N : nat}(N) = !($signif(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $E(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $E{N : nat}(N) = !($expon(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax exp = int + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fNmag = + | NORM(m : m, exp : exp) + | SUBNORM(m : m) + | INF + | NAN(m : m) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fNmag: `%%`(N, fNmag) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_0{N : N, m : m, exp : exp}: + `%%`(N, NORM_fNmag(m, exp)) + -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_1{N : N, exp : exp, m : m}: + `%%`(N, SUBNORM_fNmag(m)) + -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_2{N : N}: + `%%`(N, INF_fNmag) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_3{N : N, m : m}: + `%%`(N, NAN_fNmag(m)) + -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fN = + | POS(fNmag) + | NEG(fNmag) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fN: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_0{N : N, var_0 : fNmag}: + `%%`(N, POS_fN(var_0)) + -- wf_fNmag: `%%`(N, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_1{N : N, var_0 : fNmag}: + `%%`(N, NEG_fN(var_0)) + -- wf_fNmag: `%%`(N, var_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f32 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f64 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fzero(N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fzero_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fzero_is_wf_0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fzero(N)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fnat(N : N, nat : nat) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fnat_is_wf: `%%%`(N : N, nat : nat, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fnat_is_wf_0{N : N, nat : nat, ret_val : fN}: + `%%%`(N, nat, ret_val) + -- if (ret_val = $fnat(N, nat)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fone(N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fone_is_wf: `%%`(N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fone_is_wf_0{N : N, ret_val : fN}: + `%%`(N, ret_val) + -- if (ret_val = $fone(N)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $canon_(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax vN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax v128 = vN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax list{syntax X}(syntax X) = + | `%`(`X*` : X*) + -- if (|X*{X <- `X*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_list_0(syntax X, x : list(syntax X)) : (X*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_list_0{syntax X, v_X_list_0 : X*}(syntax X, `%`_list(v_X_list_0)) = (v_X_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax char = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_char_0(x : char) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_char_0{v_num_0 : nat}(`%`_char(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_char: `%`(char) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule char_case_0{i : nat}: + `%`(`%`_char(i)) + -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +relation fun_cont: `%%`(byte, nat) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + rule fun_cont_case_0{b : byte}: + `%%`(b, ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat)) + -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation fun_utf8: `%%`(char*, byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_0{`ch*` : char*, `var_0*` : byte**}: + `%%`(ch#1*{ch#1 <- `ch*`}, $concat_(syntax byte, var_0*{var_0 <- `var_0*`})) + -- (fun_utf8: `%%`([ch], var_0))*{var_0 <- `var_0*`, ch <- `ch*`} + -- if (|`var_0*`| = |`ch*`|) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_1{ch : char}: + `%%`([ch], [b]) + -- if ($proj_char_0(ch).0 < 128) + -- let{b : byte} b = `%`_byte($proj_char_0(ch).0) + -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: + `%%`([ch], [b_1 b_2]) + -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) + -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) + -- fun_cont: `%%`(b_2, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3]) + -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) + -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * var_0)) + var_1)) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_4{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, var_2 : nat, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3 b_4]) + -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) + -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * var_0)) + ((2 ^ 6) * var_1)) + var_2)) + -- fun_cont: `%%`(b_4, var_2) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation utf8_is_wf: `%%`(var_0 : char*, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule utf8_is_wf_0{var_0 : char*, ret_val : byte*, var_1 : byte*}: + `%%`(var_0, ret_val) + -- (wf_char: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + -- fun_utf8: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax name = + | `%`(`char*` : char*) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_name_0(x : name) : (char*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_name_0{v_char_list_0 : char*}(`%`_name(v_char_list_0)) = (v_char_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_name: `%`(name) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule name_case_0{`char*` : char*, var_0 : byte*}: + `%`(`%`_name(`char*`)) + -- (wf_char: `%`(char))*{char <- `char*`} + -- if (|var_0| < (2 ^ 32)) + -- fun_utf8: `%%`(char*{char <- `char*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax idx = u32 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax laneidx = u8 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax typeidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax funcidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax globalidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tableidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax memidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tagidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax elemidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax dataidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax labelidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax localidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fieldidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax externidx = + | FUNC(funcidx : funcidx) + | GLOBAL(globalidx : globalidx) + | TABLE(tableidx : tableidx) + | MEM(memidx : memidx) + | TAG(tagidx : tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_externidx: `%`(externidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_0{funcidx : funcidx}: + `%`(FUNC_externidx(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_1{globalidx : globalidx}: + `%`(GLOBAL_externidx(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_2{tableidx : tableidx}: + `%`(TABLE_externidx(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_3{memidx : memidx}: + `%`(MEM_externidx(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_4{tagidx : tagidx}: + `%`(TAG_externidx(tagidx)) + -- wf_uN: `%%`(32, tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 +relation fun_funcsxx: `%%`(externidx*, typeidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_1{x : uN, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([FUNC_externidx(x)] ++ xx#1*{xx#1 <- `xx*`}, [x] ++ var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([externidx] ++ xx#2*{xx#2 <- `xx*`}, var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 +relation fun_globalsxx: `%%`(externidx*, globalidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_1{x : uN, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([GLOBAL_externidx(x)] ++ xx#3*{xx#3 <- `xx*`}, [x] ++ var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([externidx] ++ xx#4*{xx#4 <- `xx*`}, var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 +relation fun_tablesxx: `%%`(externidx*, tableidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_1{x : uN, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([TABLE_externidx(x)] ++ xx#5*{xx#5 <- `xx*`}, [x] ++ var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([externidx] ++ xx#6*{xx#6 <- `xx*`}, var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 +relation fun_memsxx: `%%`(externidx*, memidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_1{x : uN, `xx*` : externidx*, var_0 : memidx*}: + `%%`([MEM_externidx(x)] ++ xx#7*{xx#7 <- `xx*`}, [x] ++ var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : memidx*}: + `%%`([externidx] ++ xx#8*{xx#8 <- `xx*`}, var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 +relation fun_tagsxx: `%%`(externidx*, tagidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_1{x : uN, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([TAG_externidx(x)] ++ xx#9*{xx#9 <- `xx*`}, [x] ++ var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([externidx] ++ xx#10*{xx#10 <- `xx*`}, var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax free = +{ + TYPES typeidx*, + FUNCS funcidx*, + GLOBALS globalidx*, + TABLES tableidx*, + MEMS memidx*, + ELEMS elemidx*, + DATAS dataidx*, + LOCALS localidx*, + LABELS labelidx*, + TAGS tagidx* +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_free: `%`(free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_case_{var_0 : typeidx*, var_1 : funcidx*, var_2 : globalidx*, var_3 : tableidx*, var_4 : memidx*, var_5 : elemidx*, var_6 : dataidx*, var_7 : localidx*, var_8 : labelidx*, var_9 : tagidx*}: + `%`({TYPES var_0, FUNCS var_1, GLOBALS var_2, TABLES var_3, MEMS var_4, ELEMS var_5, DATAS var_6, LOCALS var_7, LABELS var_8, TAGS var_9}) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_uN: `%%`(32, var_1))*{var_1 <- var_1} + -- (wf_uN: `%%`(32, var_2))*{var_2 <- var_2} + -- (wf_uN: `%%`(32, var_3))*{var_3 <- var_3} + -- (wf_uN: `%%`(32, var_4))*{var_4 <- var_4} + -- (wf_uN: `%%`(32, var_5))*{var_5 <- var_5} + -- (wf_uN: `%%`(32, var_6))*{var_6 <- var_6} + -- (wf_uN: `%%`(32, var_7))*{var_7 <- var_7} + -- (wf_uN: `%%`(32, var_8))*{var_8 <- var_8} + -- (wf_uN: `%%`(32, var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_opt(free?) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt{free : free}(?(free)) = free + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_opt_is_wf: `%%`(var_0 : free?, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_opt_is_wf_0{var_0 : free?, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))?{var_0 <- var_0} + -- if (ret_val = $free_opt(var_0)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation fun_free_list: `%%`(free*, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule fun_free_list_case_0: + `%%`([], {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule fun_free_list_case_1{free : free, `free'*` : free*, var_0 : free}: + `%%`([free] ++ free'#1*{free'#1 <- `free'*`}, free +++ var_0) + -- fun_free_list: `%%`(free'*{free' <- `free'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation free_list_is_wf: `%%`(var_0 : free*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule free_list_is_wf_0{var_0 : free*, ret_val : free, var_1 : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_free: `%`(ret_val) + -- fun_free_list: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_typeidx(typeidx : typeidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_typeidx_is_wf: `%%`(typeidx : typeidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_typeidx_is_wf_0{typeidx : typeidx, ret_val : free}: + `%%`(typeidx, ret_val) + -- wf_uN: `%%`(32, typeidx) + -- if (ret_val = $free_typeidx(typeidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_funcidx(funcidx : funcidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_funcidx_is_wf: `%%`(funcidx : funcidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_funcidx_is_wf_0{funcidx : funcidx, ret_val : free}: + `%%`(funcidx, ret_val) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $free_funcidx(funcidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_globalidx(globalidx : globalidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_globalidx_is_wf: `%%`(globalidx : globalidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_globalidx_is_wf_0{globalidx : globalidx, ret_val : free}: + `%%`(globalidx, ret_val) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $free_globalidx(globalidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tableidx(tableidx : tableidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tableidx_is_wf: `%%`(tableidx : tableidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tableidx_is_wf_0{tableidx : tableidx, ret_val : free}: + `%%`(tableidx, ret_val) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $free_tableidx(tableidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_memidx(memidx : memidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_memidx_is_wf: `%%`(memidx : memidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_memidx_is_wf_0{memidx : memidx, ret_val : free}: + `%%`(memidx, ret_val) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $free_memidx(memidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_elemidx(elemidx : elemidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_elemidx_is_wf: `%%`(elemidx : elemidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_elemidx_is_wf_0{elemidx : elemidx, ret_val : free}: + `%%`(elemidx, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- if (ret_val = $free_elemidx(elemidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_dataidx(dataidx : dataidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_dataidx_is_wf: `%%`(dataidx : dataidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_dataidx_is_wf_0{dataidx : dataidx, ret_val : free}: + `%%`(dataidx, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $free_dataidx(dataidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_localidx(localidx : localidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_localidx_is_wf: `%%`(localidx : localidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_localidx_is_wf_0{localidx : localidx, ret_val : free}: + `%%`(localidx, ret_val) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $free_localidx(localidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_labelidx(labelidx : labelidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_labelidx_is_wf: `%%`(labelidx : labelidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_labelidx_is_wf_0{labelidx : labelidx, ret_val : free}: + `%%`(labelidx, ret_val) + -- wf_uN: `%%`(32, labelidx) + -- if (ret_val = $free_labelidx(labelidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tagidx(tagidx : tagidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tagidx{tagidx : uN}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tagidx_is_wf: `%%`(tagidx : tagidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tagidx_is_wf_0{tagidx : tagidx, ret_val : free}: + `%%`(tagidx, ret_val) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $free_tagidx(tagidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_externidx(externidx : externidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{funcidx : uN}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{globalidx : uN}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_externidx_is_wf: `%%`(externidx : externidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_externidx_is_wf_0{externidx : externidx, ret_val : free}: + `%%`(externidx, ret_val) + -- wf_externidx: `%`(externidx) + -- if (ret_val = $free_externidx(externidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax null = + | NULL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax addrtype = + | I32 + | I64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax numtype = + | I32 + | I64 + | F32 + | F64 + +def $numtype_addrtype(addrtype) : numtype + def $numtype_addrtype(I32_addrtype) = I32_numtype + def $numtype_addrtype(I64_addrtype) = I64_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax vectype = + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax consttype = + | I32 + | I64 + | F32 + | F64 + | V128 + +def $consttype_numtype(numtype) : consttype + def $consttype_numtype(I32_numtype) = I32_consttype + def $consttype_numtype(I64_numtype) = I64_consttype + def $consttype_numtype(F32_numtype) = F32_consttype + def $consttype_numtype(F64_numtype) = F64_consttype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax absheaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax mut = + | MUT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax final = + | FINAL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 +syntax typeuse = + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 +syntax heaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 +syntax valtype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(`null?` : null?, heaptype : heaptype) + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 +syntax storagetype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(`null?` : null?, heaptype : heaptype) + | BOT + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 +syntax fieldtype = + | `%%`(`mut?` : mut?, storagetype : storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 +syntax comptype = + | STRUCT(list(syntax fieldtype)) + | ARRAY(fieldtype : fieldtype) + | `FUNC%->%`(resulttype : list(syntax valtype), resulttype : list(syntax valtype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 +syntax subtype = + | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 +syntax rectype = + | REC(list(syntax subtype)) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax resulttype = list(syntax valtype) + +def $heaptype_absheaptype(absheaptype) : heaptype + def $heaptype_absheaptype(ANY_absheaptype) = ANY_heaptype + def $heaptype_absheaptype(EQ_absheaptype) = EQ_heaptype + def $heaptype_absheaptype(I31_absheaptype) = I31_heaptype + def $heaptype_absheaptype(STRUCT_absheaptype) = STRUCT_heaptype + def $heaptype_absheaptype(ARRAY_absheaptype) = ARRAY_heaptype + def $heaptype_absheaptype(NONE_absheaptype) = NONE_heaptype + def $heaptype_absheaptype(FUNC_absheaptype) = FUNC_heaptype + def $heaptype_absheaptype(NOFUNC_absheaptype) = NOFUNC_heaptype + def $heaptype_absheaptype(EXN_absheaptype) = EXN_heaptype + def $heaptype_absheaptype(NOEXN_absheaptype) = NOEXN_heaptype + def $heaptype_absheaptype(EXTERN_absheaptype) = EXTERN_heaptype + def $heaptype_absheaptype(NOEXTERN_absheaptype) = NOEXTERN_heaptype + def $heaptype_absheaptype(BOT_absheaptype) = BOT_heaptype + +def $valtype_addrtype(addrtype) : valtype + def $valtype_addrtype(I32_addrtype) = I32_valtype + def $valtype_addrtype(I64_addrtype) = I64_valtype + +def $storagetype_consttype(consttype) : storagetype + def $storagetype_consttype(I32_consttype) = I32_storagetype + def $storagetype_consttype(I64_consttype) = I64_storagetype + def $storagetype_consttype(F32_consttype) = F32_storagetype + def $storagetype_consttype(F64_consttype) = F64_storagetype + def $storagetype_consttype(V128_consttype) = V128_storagetype + +def $storagetype_numtype(numtype) : storagetype + def $storagetype_numtype(I32_numtype) = I32_storagetype + def $storagetype_numtype(I64_numtype) = I64_storagetype + def $storagetype_numtype(F32_numtype) = F32_storagetype + def $storagetype_numtype(F64_numtype) = F64_storagetype + +def $valtype_numtype(numtype) : valtype + def $valtype_numtype(I32_numtype) = I32_valtype + def $valtype_numtype(I64_numtype) = I64_valtype + def $valtype_numtype(F32_numtype) = F32_valtype + def $valtype_numtype(F64_numtype) = F64_valtype + +def $heaptype_typeuse(typeuse) : heaptype + def $heaptype_typeuse{x0 : typeidx}(_IDX_typeuse(x0)) = _IDX_heaptype(x0) + def $heaptype_typeuse{x0 : rectype, x1 : n}(_DEF_typeuse(x0, x1)) = _DEF_heaptype(x0, x1) + def $heaptype_typeuse{x0 : n}(REC_typeuse(x0)) = REC_heaptype(x0) + +def $storagetype_valtype(valtype) : storagetype + def $storagetype_valtype(I32_valtype) = I32_storagetype + def $storagetype_valtype(I64_valtype) = I64_storagetype + def $storagetype_valtype(F32_valtype) = F32_storagetype + def $storagetype_valtype(F64_valtype) = F64_storagetype + def $storagetype_valtype(V128_valtype) = V128_storagetype + def $storagetype_valtype{x0 : null?, x1 : heaptype}(REF_valtype(x0, x1)) = REF_storagetype(x0, x1) + def $storagetype_valtype(BOT_valtype) = BOT_storagetype + +def $storagetype_vectype(vectype) : storagetype + def $storagetype_vectype(V128_vectype) = V128_storagetype + +def $valtype_vectype(vectype) : valtype + def $valtype_vectype(V128_vectype) = V128_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 +relation wf_typeuse: `%`(typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_0{typeidx : typeidx}: + `%`(_IDX_typeuse(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_1{rectype : rectype, n : n}: + `%`(_DEF_typeuse(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_2{n : n}: + `%`(REC_typeuse(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 +relation wf_heaptype: `%`(heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_0: + `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_1: + `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_2: + `%`(I31_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_3: + `%`(STRUCT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_4: + `%`(ARRAY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_5: + `%`(NONE_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_6: + `%`(FUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_7: + `%`(NOFUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_8: + `%`(EXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_9: + `%`(NOEXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_10: + `%`(EXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_11: + `%`(NOEXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_12: + `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_13{typeidx : typeidx}: + `%`(_IDX_heaptype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_14{rectype : rectype, n : n}: + `%`(_DEF_heaptype(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_15{n : n}: + `%`(REC_heaptype(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 +relation wf_valtype: `%`(valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_0: + `%`(I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_1: + `%`(I64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_2: + `%`(F32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_3: + `%`(F64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_4: + `%`(V128_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_valtype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_6: + `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 +relation wf_storagetype: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_0: + `%`(I32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_4: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_storagetype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_6: + `%`(BOT_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_7: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_8: + `%`(I16_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 +relation wf_fieldtype: `%`(fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 + rule fieldtype_case_0{`mut?` : mut?, storagetype : storagetype}: + `%`(`%%`_fieldtype(`mut?`, storagetype)) + -- wf_storagetype: `%`(storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 +relation wf_comptype: `%`(comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_0{var_0 : list(syntax fieldtype)}: + `%`(STRUCT_comptype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_1{fieldtype : fieldtype}: + `%`(ARRAY_comptype(fieldtype)) + -- wf_fieldtype: `%`(fieldtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_2{resulttype : resulttype, resulttype_0 : resulttype}: + `%`(`FUNC%->%`_comptype(resulttype, resulttype_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 +relation wf_subtype: `%`(subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 + rule subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}: + `%`(SUB_subtype(`final?`, `typeuse*`, comptype)) + -- (wf_typeuse: `%`(typeuse))*{typeuse <- `typeuse*`} + -- wf_comptype: `%`(comptype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax deftype = + | _DEF(rectype : rectype, n : n) + +def $heaptype_deftype(deftype) : heaptype + def $heaptype_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_heaptype(x0, x1) + +def $typeuse_deftype(deftype) : typeuse + def $typeuse_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_typeuse(x0, x1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax typevar = + | _IDX(typeidx : typeidx) + | REC(n : n) + +def $typeuse_typevar(typevar) : typeuse + def $typeuse_typevar{x0 : typeidx}(_IDX_typevar(x0)) = _IDX_typeuse(x0) + def $typeuse_typevar{x0 : n}(REC_typevar(x0)) = REC_typeuse(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_typevar: `%`(typevar) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_0{typeidx : typeidx}: + `%`(_IDX_typevar(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_1{n : n}: + `%`(REC_typevar(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax reftype = + | REF(`null?` : null?, heaptype : heaptype) + +def $storagetype_reftype(reftype) : storagetype + def $storagetype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_storagetype(x0, x1) + +def $valtype_reftype(reftype) : valtype + def $valtype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_valtype(x0, x1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_reftype: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule reftype_case_0{`null?` : null?, heaptype : heaptype}: + `%`(REF_reftype(`null?`, heaptype)) + -- wf_heaptype: `%`(heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Inn = addrtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Fnn = + | F32 + | F64 + +def $numtype_Fnn(Fnn) : numtype + def $numtype_Fnn(F32_Fnn) = F32_numtype + def $numtype_Fnn(F64_Fnn) = F64_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Vnn = vectype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Cnn = + | I32 + | I64 + | F32 + | F64 + | V128 + +def $storagetype_Cnn(Cnn) : storagetype + def $storagetype_Cnn(I32_Cnn) = I32_storagetype + def $storagetype_Cnn(I64_Cnn) = I64_storagetype + def $storagetype_Cnn(F32_Cnn) = F32_storagetype + def $storagetype_Cnn(F64_Cnn) = F64_storagetype + def $storagetype_Cnn(V128_Cnn) = V128_storagetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ANYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ANYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ANYREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ANYREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EQREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EQREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EQREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EQREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $I31REF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation I31REF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule I31REF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $I31REF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $STRUCTREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation STRUCTREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule STRUCTREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $STRUCTREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ARRAYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ARRAYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ARRAYREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ARRAYREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation FUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule FUNCREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $FUNCREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXTERNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXTERNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLFUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLFUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLFUNCREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLFUNCREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXTERNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXTERNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax packtype = + | I8 + | I16 + +def $storagetype_packtype(packtype) : storagetype + def $storagetype_packtype(I8_packtype) = I8_storagetype + def $storagetype_packtype(I16_packtype) = I16_storagetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax lanetype = + | I32 + | I64 + | F32 + | F64 + | I8 + | I16 + +def $lanetype_Fnn(Fnn) : lanetype + def $lanetype_Fnn(F32_Fnn) = F32_lanetype + def $lanetype_Fnn(F64_Fnn) = F64_lanetype + +def $lanetype_addrtype(addrtype) : lanetype + def $lanetype_addrtype(I32_addrtype) = I32_lanetype + def $lanetype_addrtype(I64_addrtype) = I64_lanetype + +def $lanetype_numtype(numtype) : lanetype + def $lanetype_numtype(I32_numtype) = I32_lanetype + def $lanetype_numtype(I64_numtype) = I64_lanetype + def $lanetype_numtype(F32_numtype) = F32_lanetype + def $lanetype_numtype(F64_numtype) = F64_lanetype + +def $lanetype_packtype(packtype) : lanetype + def $lanetype_packtype(I8_packtype) = I8_lanetype + def $lanetype_packtype(I16_packtype) = I16_lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Pnn = packtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Jnn = + | I32 + | I64 + | I8 + | I16 + +def $lanetype_Jnn(Jnn) : lanetype + def $lanetype_Jnn(I32_Jnn) = I32_lanetype + def $lanetype_Jnn(I64_Jnn) = I64_lanetype + def $lanetype_Jnn(I8_Jnn) = I8_lanetype + def $lanetype_Jnn(I16_Jnn) = I16_lanetype + +def $Jnn_addrtype(addrtype) : Jnn + def $Jnn_addrtype(I32_addrtype) = I32_Jnn + def $Jnn_addrtype(I64_addrtype) = I64_Jnn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Lnn = lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax limits = + | `[%..%]`(u64 : u64, `u64?` : u64?) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_limits: `%`(limits) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule limits_case_0{u64 : u64, `u64?` : u64?}: + `%`(`[%..%]`_limits(u64, `u64?`)) + -- wf_uN: `%%`(64, u64) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tagtype = typeuse + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax globaltype = + | `%%`(`mut?` : mut?, valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_globaltype: `%`(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule globaltype_case_0{`mut?` : mut?, valtype : valtype}: + `%`(`%%`_globaltype(`mut?`, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax memtype = + | `%%PAGE`(addrtype : addrtype, limits : limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_memtype: `%`(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule memtype_case_0{addrtype : addrtype, limits : limits}: + `%`(`%%PAGE`_memtype(addrtype, limits)) + -- wf_limits: `%`(limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tabletype = + | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_tabletype: `%`(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype}: + `%`(`%%%`_tabletype(addrtype, limits, reftype)) + -- wf_limits: `%`(limits) + -- wf_reftype: `%`(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax datatype = + | OK + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax elemtype = reftype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax externtype = + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype) + | MEM(memtype : memtype) + | TABLE(tabletype : tabletype) + | FUNC(typeuse : typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_externtype: `%`(externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_0{tagtype : tagtype}: + `%`(TAG_externtype(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_1{globaltype : globaltype}: + `%`(GLOBAL_externtype(globaltype)) + -- wf_globaltype: `%`(globaltype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_2{memtype : memtype}: + `%`(MEM_externtype(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_3{tabletype : tabletype}: + `%`(TABLE_externtype(tabletype)) + -- wf_tabletype: `%`(tabletype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_4{typeuse : typeuse}: + `%`(FUNC_externtype(typeuse)) + -- wf_typeuse: `%`(typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax moduletype = + | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_moduletype: `%`(moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule moduletype_case_0{`externtype*` : externtype*, `externtype*_0` : externtype*}: + `%`(`%->%`_moduletype(`externtype*`, `externtype*_0`)) + -- (wf_externtype: `%`(externtype))*{externtype <- `externtype*`} + -- (wf_externtype: `%`(`externtype*_0`))*{`externtype*_0` <- `externtype*_0`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $IN(N : N) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FN(N : N) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $JN(N : N) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $size(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I64_numtype) = 64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F64_numtype) = 64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsize(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsize(V128_vectype) = 128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psize(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I8_packtype) = 8 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I16_packtype) = 16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsize(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I32_lanetype) = $size(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I64_lanetype) = $size(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F32_lanetype) = $size(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F64_lanetype) = $size(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I8_lanetype) = $psize(I8_packtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I16_lanetype) = $psize(I16_packtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $zsize(storagetype : storagetype) : nat? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I32_storagetype) = ?($size(I32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I64_storagetype) = ?($size(I64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F32_storagetype) = ?($size(F32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F64_storagetype) = ?($size(F64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I8_storagetype) = ?($psize(I8_packtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I16_storagetype) = ?($psize(I16_packtype)) + def $zsize{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $isize(Inn : Inn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $isize{Inn : addrtype}(Inn) = $size($numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsize(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsize{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $fsize(Fnn : Fnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $fsize{Fnn : Fnn}(Fnn) = $size($numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_isize(nat : nat) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(64) = ?(I64_Inn) + def $inv_isize{x0 : nat}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsize(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize{n : nat}(n) = $Jnn_addrtype(iter_val#1)?{iter_val#1 <- $inv_isize(n)} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_fsize(nat : nat) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(64) = ?(F64_Fnn) + def $inv_fsize{x0 : nat}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn1(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn1{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn2(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn2{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsizenn(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsizenn{vt : vectype}(vt) = $vsize(vt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psizenn(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psizenn{pt : packtype}(pt) = $psize(pt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn1(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn2(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsizenn(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsizenn{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsizenn(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn{n : nat}(n) = $inv_jsize(n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lunpack(lanetype : lanetype) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I32_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I64_lanetype) = I64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F32_lanetype) = F32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F64_lanetype) = F64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I8_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I16_lanetype) = I32_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $unpack(storagetype : storagetype) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(BOT_storagetype) = BOT_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack{`null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype)) = REF_valtype(`null?`, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(V128_storagetype) = V128_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(F64_storagetype) = F64_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(F32_storagetype) = F32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I64_storagetype) = I64_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I32_storagetype) = I32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I8_storagetype) = I32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I16_storagetype) = I32_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation unpack_is_wf: `%%`(storagetype : storagetype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule unpack_is_wf_0{storagetype : storagetype, ret_val : valtype}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = $unpack(storagetype)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $nunpack(storagetype : storagetype) : numtype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I32_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I64_storagetype) = ?(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F32_storagetype) = ?(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F64_storagetype) = ?(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I8_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I16_storagetype) = ?(I32_numtype) + def $nunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vunpack(storagetype : storagetype) : vectype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vunpack(V128_storagetype) = ?(V128_vectype) + def $vunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $cunpack(storagetype : storagetype) : consttype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?(I64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?(F32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?(F64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(V128_storagetype) = ?(V128_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?($consttype_numtype($lunpack(I32_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?($consttype_numtype($lunpack(I64_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?($consttype_numtype($lunpack(F32_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?($consttype_numtype($lunpack(F64_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?($consttype_numtype($lunpack(I8_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?($consttype_numtype($lunpack(I16_lanetype))) + def $cunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size($numtype_addrtype(at_1)) <= $size($numtype_addrtype(at_2))) then at_1 else at_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $diffrt(reftype : reftype, reftype : reftype) : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#1?{null_1#1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1#2?{null_1#2 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation diffrt_is_wf: `%%%`(reftype : reftype, reftype_0 : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule diffrt_is_wf_0{reftype : reftype, reftype_0 : reftype, ret_val : reftype}: + `%%%`(reftype, reftype_0, ret_val) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + -- if (ret_val = $diffrt(reftype, reftype_0)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $as_deftype(typeuse : typeuse) : deftype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = ?(_DEF_deftype(rectype, n)) + def $as_deftype{x0 : typeuse}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 +relation fun_tagsxt: `%%`(externtype*, tagtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_1{jt : typeuse, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([TAG_externtype(jt)] ++ xt#1*{xt#1 <- `xt*`}, [jt] ++ var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([externtype] ++ xt#2*{xt#2 <- `xt*`}, var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation fun_globalsxt: `%%`(externtype*, globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_1{gt : globaltype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([GLOBAL_externtype(gt)] ++ xt#3*{xt#3 <- `xt*`}, [gt] ++ var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([externtype] ++ xt#4*{xt#4 <- `xt*`}, var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation globalsxt_is_wf: `%%`(var_0 : externtype*, ret_val : globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule globalsxt_is_wf_0{var_0 : externtype*, ret_val : globaltype*, var_1 : globaltype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_globaltype: `%`(ret_val))*{ret_val <- ret_val} + -- fun_globalsxt: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation fun_memsxt: `%%`(externtype*, memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_1{mt : memtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([MEM_externtype(mt)] ++ xt#5*{xt#5 <- `xt*`}, [mt] ++ var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([externtype] ++ xt#6*{xt#6 <- `xt*`}, var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation memsxt_is_wf: `%%`(var_0 : externtype*, ret_val : memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule memsxt_is_wf_0{var_0 : externtype*, ret_val : memtype*, var_1 : memtype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_memtype: `%`(ret_val))*{ret_val <- ret_val} + -- fun_memsxt: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation fun_tablesxt: `%%`(externtype*, tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_1{tt : tabletype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([TABLE_externtype(tt)] ++ xt#7*{xt#7 <- `xt*`}, [tt] ++ var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([externtype] ++ xt#8*{xt#8 <- `xt*`}, var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation tablesxt_is_wf: `%%`(var_0 : externtype*, ret_val : tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule tablesxt_is_wf_0{var_0 : externtype*, ret_val : tabletype*, var_1 : tabletype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_tabletype: `%`(ret_val))*{ret_val <- ret_val} + -- fun_tablesxt: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 +relation fun_funcsxt: `%%`(externtype*, deftype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_1{rectype : rectype, n : n, `xt*` : externtype*, var_0 : deftype*}: + `%%`([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt#9*{xt#9 <- `xt*`}, [_DEF_deftype(rectype, n)] ++ var_0) + -- fun_funcsxt: `%%`(xt#10*{xt#10 <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : deftype*}: + `%%`([externtype] ++ xt#11*{xt#11 <- `xt*`}, var_0) + -- fun_funcsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_typevar_before_fun_subst_typevar_case_2: `%%%`(typevar, typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_typevar_case_1{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*, var_0 : typeuse?}: + `%%%`(tv, [tv_1] ++ tv'#1*{tv'#1 <- `tv'*`}, [tu_1] ++ tu'#1*{tu'#1 <- `tu'*`}) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%`(tv, [], []) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation fun_subst_typevar: `%%%%`(typevar, typevar*, typeuse*, typeuse?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%%`(tv, [], [], ?($typeuse_typevar(tv))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_1{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*, var_0 : typeuse?}: + `%%%%`(tv, [tv_1] ++ tv'#1*{tv'#1 <- `tv'*`}, [tu_1] ++ tu'#1*{tu'#1 <- `tu'*`}, (if (tv = tv_1) then tu_1 else iter_val#2)?{iter_val#2 <- var_0}) + -- fun_subst_typevar: `%%%%`(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_2{x0 : typevar, x1 : typevar*, x2 : typeuse*}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_subst_typevar_before_fun_subst_typevar_case_2: `%%%`(x0, x1, x2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation subst_typevar_is_wf: `%%%%`(typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule subst_typevar_is_wf_0{typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse, var_2 : typeuse?}: + `%%%%`(typevar, var_0, var_1, ret_val) + -- wf_typevar: `%`(typevar) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !(var_2)) + -- if (var_2 =/= ?()) + -- wf_typeuse: `%`(ret_val) + -- fun_subst_typevar: `%%%%`(typevar, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_minus_recs_before_fun_minus_recs_case_3: `%%`(typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_2 : (typevar*, typeuse*)?, var_1 : (typevar*, typeuse*)?, var_0 : (typevar*, typeuse*)?}: + `%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#2*{tv'#2 <- `tv'*`}, tu'#2*{tu'#2 <- `tu'*`}) = !(var_0) + -- if (var_0 =/= ?()) + -- (wf_typevar: `%`(iter#1))*{iter#1 <- !(var_1).0} + -- (wf_typeuse: `%`(iter#2))*{iter#2 <- !(var_2).1} + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%`([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_minus_recs_case_0: + `%%`([], []) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_0: + `%%%`([], [], ?(([], []))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%%`([REC_typevar(n)] ++ tv#1*{tv#1 <- `tv*`}, [tu_1] ++ tu#1*{tu#1 <- `tu*`}, var_0) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_2 : (typevar*, typeuse*)?, var_1 : (typevar*, typeuse*)?, var_0 : (typevar*, typeuse*)?}: + `%%%`([_IDX_typevar(x)] ++ tv#2*{tv#2 <- `tv*`}, [tu_1] ++ tu#2*{tu#2 <- `tu*`}, ?(([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}))) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#2*{tv'#2 <- `tv'*`}, tu'#2*{tu'#2 <- `tu'*`}) = !(var_0) + -- if (var_0 =/= ?()) + -- (wf_typevar: `%`(iter#1))*{iter#1 <- !(var_1).0} + -- (wf_typeuse: `%`(iter#2))*{iter#2 <- !(var_2).1} + -- fun_minus_recs: `%%%`(tv#5*{tv#5 <- `tv*`}, tu#5*{tu#5 <- `tu*`}, var_2) + -- fun_minus_recs: `%%%`(tv#4*{tv#4 <- `tv*`}, tu#4*{tu#4 <- `tu*`}, var_1) + -- fun_minus_recs: `%%%`(tv#3*{tv#3 <- `tv*`}, tu#3*{tu#3 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_3{x0 : typevar*, x1 : typeuse*}: + `%%%`(x0, x1, ?()) + -- ~ fun_minus_recs_before_fun_minus_recs_case_3: `%%`(x0, x1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation minus_recs_is_wf: `%%%`(var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule minus_recs_is_wf_0{var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*), var_2 : (typevar*, typeuse*)?}: + `%%%`(var_0, var_1, ret_val) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !(var_2)) + -- if (var_2 =/= ?()) + -- (wf_typevar: `%`(iter))*{iter <- ret_val.0} + -- (wf_typeuse: `%`(iter))*{iter <- ret_val.1} + -- fun_minus_recs: `%%%`(var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv#6*{tv#6 <- `tv*`}, tu#6*{tu#6 <- `tu*`}) = pt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv#7*{tv#7 <- `tv*`}, tu#7*{tu#7 <- `tu*`}) = nt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv#8*{tv#8 <- `tv*`}, tu#8*{tu#8 <- `tu*`}) = vt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation fun_subst_typeuse: `%%%%`(typeuse, typevar*, typeuse*, typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(REC_typeuse(n), tv#9*{tv#9 <- `tv*`}, tu#9*{tu#9 <- `tu*`}, !(var_0)) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv#10*{tv#10 <- `tv*`}, tu#10*{tu#10 <- `tu*`}, var_0) + -- if (var_0 =/= ?()) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(_IDX_typeuse(typeidx), tv#11*{tv#11 <- `tv*`}, tu#11*{tu#11 <- `tu*`}, !(var_0)) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv#12*{tv#12 <- `tv*`}, tu#12*{tu#12 <- `tu*`}, var_0) + -- if (var_0 =/= ?()) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_typeuse(rectype, n), tv#13*{tv#13 <- `tv*`}, tu#13*{tu#13 <- `tu*`}, $typeuse_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv#14*{tv#14 <- `tv*`}, tu#14*{tu#14 <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation fun_subst_heaptype: `%%%%`(heaptype, typevar*, typeuse*, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(REC_heaptype(n), tv#15*{tv#15 <- `tv*`}, tu#15*{tu#15 <- `tu*`}, $heaptype_typeuse(!(var_0))) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv#16*{tv#16 <- `tv*`}, tu#16*{tu#16 <- `tu*`}, var_0) + -- if (var_0 =/= ?()) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse?}: + `%%%%`(_IDX_heaptype(typeidx), tv#17*{tv#17 <- `tv*`}, tu#17*{tu#17 <- `tu*`}, $heaptype_typeuse(!(var_0))) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv#18*{tv#18 <- `tv*`}, tu#18*{tu#18 <- `tu*`}, var_0) + -- if (var_0 =/= ?()) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_heaptype(rectype, n), tv#19*{tv#19 <- `tv*`}, tu#19*{tu#19 <- `tu*`}, $heaptype_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv#20*{tv#20 <- `tv*`}, tu#20*{tu#20 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_3{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(ht, tv#21*{tv#21 <- `tv*`}, tu#21*{tu#21 <- `tu*`}, ht) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule fun_subst_reftype_case_0{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : heaptype}: + `%%%%`(REF_reftype(null#1?{null#1 <- `null?`}, ht), tv#22*{tv#22 <- `tv*`}, tu#22*{tu#22 <- `tu*`}, REF_reftype(null?{null <- `null?`}, var_0)) + -- fun_subst_heaptype: `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation fun_subst_valtype: `%%%%`(valtype, typevar*, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_0{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I32_valtype, tv#23*{tv#23 <- `tv*`}, tu#23*{tu#23 <- `tu*`}, $valtype_numtype($subst_numtype(I32_numtype, tv#24*{tv#24 <- `tv*`}, tu#24*{tu#24 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_1{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I64_valtype, tv#25*{tv#25 <- `tv*`}, tu#25*{tu#25 <- `tu*`}, $valtype_numtype($subst_numtype(I64_numtype, tv#26*{tv#26 <- `tv*`}, tu#26*{tu#26 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_2{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F32_valtype, tv#27*{tv#27 <- `tv*`}, tu#27*{tu#27 <- `tu*`}, $valtype_numtype($subst_numtype(F32_numtype, tv#28*{tv#28 <- `tv*`}, tu#28*{tu#28 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_3{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F64_valtype, tv#29*{tv#29 <- `tv*`}, tu#29*{tu#29 <- `tu*`}, $valtype_numtype($subst_numtype(F64_numtype, tv#30*{tv#30 <- `tv*`}, tu#30*{tu#30 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_4{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(V128_valtype, tv#31*{tv#31 <- `tv*`}, tu#31*{tu#31 <- `tu*`}, $valtype_vectype($subst_vectype(V128_vectype, tv#32*{tv#32 <- `tv*`}, tu#32*{tu#32 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_5{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : reftype}: + `%%%%`(REF_valtype(`null?`, heaptype), tv#33*{tv#33 <- `tv*`}, tu#33*{tu#33 <- `tu*`}, $valtype_reftype(var_0)) + -- fun_subst_reftype: `%%%%`(REF_reftype(`null?`, heaptype), tv#34*{tv#34 <- `tv*`}, tu#34*{tu#34 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_6{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(BOT_valtype, tv#35*{tv#35 <- `tv*`}, tu#35*{tu#35 <- `tu*`}, BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation fun_subst_storagetype: `%%%%`(storagetype, typevar*, typeuse*, storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_0{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(BOT_storagetype, tv#36*{tv#36 <- `tv*`}, tu#36*{tu#36 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(BOT_valtype, tv#37*{tv#37 <- `tv*`}, tu#37*{tu#37 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_1{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(REF_storagetype(`null?`, heaptype), tv#38*{tv#38 <- `tv*`}, tu#38*{tu#38 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(REF_valtype(`null?`, heaptype), tv#39*{tv#39 <- `tv*`}, tu#39*{tu#39 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_2{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(V128_storagetype, tv#40*{tv#40 <- `tv*`}, tu#40*{tu#40 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(V128_valtype, tv#41*{tv#41 <- `tv*`}, tu#41*{tu#41 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_3{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F64_storagetype, tv#42*{tv#42 <- `tv*`}, tu#42*{tu#42 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F64_valtype, tv#43*{tv#43 <- `tv*`}, tu#43*{tu#43 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_4{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F32_storagetype, tv#44*{tv#44 <- `tv*`}, tu#44*{tu#44 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F32_valtype, tv#45*{tv#45 <- `tv*`}, tu#45*{tu#45 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_5{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I64_storagetype, tv#46*{tv#46 <- `tv*`}, tu#46*{tu#46 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I64_valtype, tv#47*{tv#47 <- `tv*`}, tu#47*{tu#47 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_6{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I32_storagetype, tv#48*{tv#48 <- `tv*`}, tu#48*{tu#48 <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I32_valtype, tv#49*{tv#49 <- `tv*`}, tu#49*{tu#49 <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_7{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I8_storagetype, tv#50*{tv#50 <- `tv*`}, tu#50*{tu#50 <- `tu*`}, $storagetype_packtype($subst_packtype(I8_packtype, tv#51*{tv#51 <- `tv*`}, tu#51*{tu#51 <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_8{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I16_storagetype, tv#52*{tv#52 <- `tv*`}, tu#52*{tu#52 <- `tu*`}, $storagetype_packtype($subst_packtype(I16_packtype, tv#53*{tv#53 <- `tv*`}, tu#53*{tu#53 <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation fun_subst_fieldtype: `%%%%`(fieldtype, typevar*, typeuse*, fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule fun_subst_fieldtype_case_0{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : storagetype}: + `%%%%`(`%%`_fieldtype(mut#1?{mut#1 <- `mut?`}, zt), tv#54*{tv#54 <- `tv*`}, tu#54*{tu#54 <- `tu*`}, `%%`_fieldtype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_storagetype: `%%%%`(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_0{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_0*` : fieldtype*}: + `%%%%`(STRUCT_comptype(`%`_list(ft#1*{ft#1 <- `ft*`})), tv#55*{tv#55 <- `tv*`}, tu#55*{tu#55 <- `tu*`}, STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- (fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, ft <- `ft*`} + -- if (|`var_0*`| = |`ft*`|) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_1{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : fieldtype}: + `%%%%`(ARRAY_comptype(ft), tv#56*{tv#56 <- `tv*`}, tu#56*{tu#56 <- `tu*`}, ARRAY_comptype(var_0)) + -- fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_2{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : valtype*, `var_0*` : valtype*}: + `%%%%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#1*{t_1#1 <- `t_1*`}), `%`_resulttype(t_2#1*{t_2#1 <- `t_2*`})), tv#57*{tv#57 <- `tv*`}, tu#57*{tu#57 <- `tu*`}, `FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + -- (fun_subst_valtype: `%%%%`(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, t_2 <- `t_2*`} + -- if (|`var_1*`| = |`t_2*`|) + -- (fun_subst_valtype: `%%%%`(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, t_1 <- `t_1*`} + -- if (|`var_0*`| = |`t_1*`|) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule fun_subst_subtype_case_0{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : comptype, `var_0*` : typeuse*}: + `%%%%`(SUB_subtype(final#1?{final#1 <- `final?`}, tu'#3*{tu'#3 <- `tu'*`}, ct), tv#58*{tv#58 <- `tv*`}, tu#58*{tu#58 <- `tu*`}, SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) + -- fun_subst_comptype: `%%%%`(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- (fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, tu' <- `tu'*`} + -- if (|`var_0*`| = |`tu'*`|) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 +relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 + rule fun_subst_rectype_case_0{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, var_3 : (typevar*, typeuse*)?, var_2 : (typevar*, typeuse*)?, var_1 : (typevar*, typeuse*)?, `var_0*` : subtype*}: + `%%%%`(REC_rectype(`%`_list(st#1*{st#1 <- `st*`})), tv#59*{tv#59 <- `tv*`}, tu#59*{tu#59 <- `tu*`}, REC_rectype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- let{`tv'*` : typevar*, `tu'*` : typeuse*} (tv'#3*{tv'#3 <- `tv'*`}, tu'#4*{tu'#4 <- `tu'*`}) = !(var_1) + -- if (var_1 =/= ?()) + -- (wf_typevar: `%`(iter#3))*{iter#3 <- !(var_2).0} + -- (wf_typeuse: `%`(iter#4))*{iter#4 <- !(var_3).1} + -- fun_minus_recs: `%%%`(tv#62*{tv#62 <- `tv*`}, tu#62*{tu#62 <- `tu*`}, var_3) + -- fun_minus_recs: `%%%`(tv#61*{tv#61 <- `tv*`}, tu#61*{tu#61 <- `tu*`}, var_2) + -- fun_minus_recs: `%%%`(tv#60*{tv#60 <- `tv*`}, tu#60*{tu#60 <- `tu*`}, var_1) + -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} + -- if (|`var_0*`| = |`st*`|) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 +relation fun_subst_deftype: `%%%%`(deftype, typevar*, typeuse*, deftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 + rule fun_subst_deftype_case_0{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*, var_0 : rectype}: + `%%%%`(_DEF_deftype(qt, i), tv#63*{tv#63 <- `tv*`}, tu#63*{tu#63 <- `tu*`}, _DEF_deftype(var_0, i)) + -- fun_subst_rectype: `%%%%`(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation subst_typeuse_is_wf: `%%%%`(typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule subst_typeuse_is_wf_0{typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse, var_2 : typeuse}: + `%%%%`(typeuse, var_0, var_1, ret_val) + -- wf_typeuse: `%`(typeuse) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_typeuse: `%`(ret_val) + -- fun_subst_typeuse: `%%%%`(typeuse, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation subst_heaptype_is_wf: `%%%%`(heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule subst_heaptype_is_wf_0{heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype, var_2 : heaptype}: + `%%%%`(heaptype, var_0, var_1, ret_val) + -- wf_heaptype: `%`(heaptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_heaptype: `%`(ret_val) + -- fun_subst_heaptype: `%%%%`(heaptype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation subst_reftype_is_wf: `%%%%`(reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule subst_reftype_is_wf_0{reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype, var_2 : reftype}: + `%%%%`(reftype, var_0, var_1, ret_val) + -- wf_reftype: `%`(reftype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_reftype: `%`(ret_val) + -- fun_subst_reftype: `%%%%`(reftype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation subst_valtype_is_wf: `%%%%`(valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule subst_valtype_is_wf_0{valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype, var_2 : valtype}: + `%%%%`(valtype, var_0, var_1, ret_val) + -- wf_valtype: `%`(valtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_valtype: `%`(ret_val) + -- fun_subst_valtype: `%%%%`(valtype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation subst_storagetype_is_wf: `%%%%`(storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule subst_storagetype_is_wf_0{storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype, var_2 : storagetype}: + `%%%%`(storagetype, var_0, var_1, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_storagetype: `%`(ret_val) + -- fun_subst_storagetype: `%%%%`(storagetype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation subst_fieldtype_is_wf: `%%%%`(fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule subst_fieldtype_is_wf_0{fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype, var_2 : fieldtype}: + `%%%%`(fieldtype, var_0, var_1, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_fieldtype: `%`(ret_val) + -- fun_subst_fieldtype: `%%%%`(fieldtype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation subst_comptype_is_wf: `%%%%`(comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule subst_comptype_is_wf_0{comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype, var_2 : comptype}: + `%%%%`(comptype, var_0, var_1, ret_val) + -- wf_comptype: `%`(comptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_comptype: `%`(ret_val) + -- fun_subst_comptype: `%%%%`(comptype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation subst_subtype_is_wf: `%%%%`(subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule subst_subtype_is_wf_0{subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype, var_2 : subtype}: + `%%%%`(subtype, var_0, var_1, ret_val) + -- wf_subtype: `%`(subtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_subtype: `%`(ret_val) + -- fun_subst_subtype: `%%%%`(subtype, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv#64*{tv#64 <- `tv*`}, tu#64*{tu#64 <- `tu*`}) = at + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_tagtype: `%%%%`(tagtype, typevar*, typeuse*, tagtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_tagtype_case_0{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tagtype}: + `%%%%`(tu', tv#65*{tv#65 <- `tv*`}, tu#65*{tu#65 <- `tu*`}, var_0) + -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_globaltype: `%%%%`(globaltype, typevar*, typeuse*, globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_globaltype_case_0{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(`%%`_globaltype(mut#2?{mut#2 <- `mut?`}, t), tv#66*{tv#66 <- `tv*`}, tu#66*{tu#66 <- `tu*`}, `%%`_globaltype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_valtype: `%%%%`(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_globaltype_is_wf: `%%%%`(globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_globaltype_is_wf_0{globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype, var_2 : globaltype}: + `%%%%`(globaltype, var_0, var_1, ret_val) + -- wf_globaltype: `%`(globaltype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_globaltype: `%`(ret_val) + -- fun_subst_globaltype: `%%%%`(globaltype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv#67*{tv#67 <- `tv*`}, tu#67*{tu#67 <- `tu*`}) = `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_memtype_is_wf: `%%%%`(memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_memtype_is_wf_0{memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype}: + `%%%%`(memtype, var_0, var_1, ret_val) + -- wf_memtype: `%`(memtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_memtype(memtype, var_0, var_1)) + -- wf_memtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_tabletype: `%%%%`(tabletype, typevar*, typeuse*, tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_tabletype_case_0{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : reftype}: + `%%%%`(`%%%`_tabletype(at, lim, rt), tv#68*{tv#68 <- `tv*`}, tu#68*{tu#68 <- `tu*`}, `%%%`_tabletype(at, lim, var_0)) + -- fun_subst_reftype: `%%%%`(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_tabletype_is_wf: `%%%%`(tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_tabletype_is_wf_0{tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype, var_2 : tabletype}: + `%%%%`(tabletype, var_0, var_1, ret_val) + -- wf_tabletype: `%`(tabletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_tabletype: `%`(ret_val) + -- fun_subst_tabletype: `%%%%`(tabletype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_externtype: `%%%%`(externtype, typevar*, typeuse*, externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_0{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tagtype}: + `%%%%`(TAG_externtype(jt), tv#69*{tv#69 <- `tv*`}, tu#69*{tu#69 <- `tu*`}, TAG_externtype(var_0)) + -- fun_subst_tagtype: `%%%%`(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_1{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : globaltype}: + `%%%%`(GLOBAL_externtype(gt), tv#70*{tv#70 <- `tv*`}, tu#70*{tu#70 <- `tu*`}, GLOBAL_externtype(var_0)) + -- fun_subst_globaltype: `%%%%`(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_2{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tabletype}: + `%%%%`(TABLE_externtype(tt), tv#71*{tv#71 <- `tv*`}, tu#71*{tu#71 <- `tu*`}, TABLE_externtype(var_0)) + -- fun_subst_tabletype: `%%%%`(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_3{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(MEM_externtype(mt), tv#72*{tv#72 <- `tv*`}, tu#72*{tu#72 <- `tu*`}, MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_4{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse}: + `%%%%`(FUNC_externtype(tu'), tv#73*{tv#73 <- `tv*`}, tu#73*{tu#73 <- `tu*`}, FUNC_externtype(var_0)) + -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_externtype_is_wf: `%%%%`(externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_externtype_is_wf_0{externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype, var_2 : externtype}: + `%%%%`(externtype, var_0, var_1, ret_val) + -- wf_externtype: `%`(externtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_externtype: `%`(ret_val) + -- fun_subst_externtype: `%%%%`(externtype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_moduletype_case_0{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : externtype*, `var_0*` : externtype*}: + `%%%%`(`%->%`_moduletype(xt_1#1*{xt_1#1 <- `xt_1*`}, xt_2#1*{xt_2#1 <- `xt_2*`}), tv#74*{tv#74 <- `tv*`}, tu#74*{tu#74 <- `tu*`}, `%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) + -- (fun_subst_externtype: `%%%%`(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, xt_2 <- `xt_2*`} + -- if (|`var_1*`| = |`xt_2*`|) + -- (fun_subst_externtype: `%%%%`(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, xt_1 <- `xt_1*`} + -- if (|`var_0*`| = |`xt_1*`|) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_moduletype_is_wf: `%%%%`(moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_moduletype_is_wf_0{moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype, var_2 : moduletype}: + `%%%%`(moduletype, var_0, var_1, ret_val) + -- wf_moduletype: `%`(moduletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_moduletype: `%`(ret_val) + -- fun_subst_moduletype: `%%%%`(moduletype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_all_valtype: `%%%`(valtype, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_all_valtype_case_0{t : valtype, n : nat, `tu*` : typeuse*, i : nat, var_0 : valtype}: + `%%%`(t, tu#75*{tu#75 <- `tu*`}, var_0) + -- if (n = |`tu*`|) + -- fun_subst_valtype: `%%%%`(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2), var_0 +++ var_1) + -- fun_free_resulttype: `%%`(resulttype_2, var_1) + -- fun_free_resulttype: `%%`(resulttype_1, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 +relation fun_free_subtype: `%%`(subtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 + rule fun_free_subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(SUB_subtype(final#2?{final#2 <- `final?`}, typeuse#1*{typeuse#1 <- `typeuse*`}, comptype), var_0 +++ var_2) + -- fun_free_comptype: `%%`(comptype, var_2) + -- (fun_free_typeuse: `%%`(typeuse, var_1))*{var_1 <- `var_1*`, typeuse <- `typeuse*`} + -- if (|`var_1*`| = |`typeuse*`|) + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 +relation fun_free_rectype: `%%`(rectype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 + rule fun_free_rectype_case_0{`subtype*` : subtype*, `var_1*` : free*, var_0 : free}: + `%%`(REC_rectype(`%`_list(subtype#5*{subtype#5 <- `subtype*`})), var_0) + -- (fun_free_subtype: `%%`(subtype, var_1))*{var_1 <- `var_1*`, subtype <- `subtype*`} + -- if (|`var_1*`| = |`subtype*`|) + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 +relation fun_free_deftype: `%%`(deftype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 + rule fun_free_deftype_case_0{rectype : rectype, n : nat, var_0 : free}: + `%%`(_DEF_deftype(rectype, n), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:481.6-481.20 +relation free_heaptype_is_wf: `%%`(heaptype : heaptype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:481.6-481.20 + rule free_heaptype_is_wf_0{heaptype : heaptype, ret_val : free, var_0 : free}: + `%%`(heaptype, ret_val) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_heaptype: `%%`(heaptype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:482.6-482.19 +relation free_reftype_is_wf: `%%`(reftype : reftype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:482.6-482.19 + rule free_reftype_is_wf_0{reftype : reftype, ret_val : free, var_0 : free}: + `%%`(reftype, ret_val) + -- wf_reftype: `%`(reftype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.6-484.19 +relation free_typeuse_is_wf: `%%`(typeuse : typeuse, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.6-484.19 + rule free_typeuse_is_wf_0{typeuse : typeuse, ret_val : free, var_0 : free}: + `%%`(typeuse, ret_val) + -- wf_typeuse: `%`(typeuse) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_typeuse: `%%`(typeuse, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:485.6-485.19 +relation free_valtype_is_wf: `%%`(valtype : valtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:485.6-485.19 + rule free_valtype_is_wf_0{valtype : valtype, ret_val : free, var_0 : free}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_valtype: `%%`(valtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 +relation free_resulttype_is_wf: `%%`(resulttype : resulttype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 + rule free_resulttype_is_wf_0{resulttype : resulttype, ret_val : free, var_0 : free}: + `%%`(resulttype, ret_val) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_resulttype: `%%`(resulttype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 +relation free_storagetype_is_wf: `%%`(storagetype : storagetype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule free_storagetype_is_wf_0{storagetype : storagetype, ret_val : free, var_0 : free}: + `%%`(storagetype, ret_val) + -- wf_storagetype: `%`(storagetype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_storagetype: `%%`(storagetype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 +relation free_fieldtype_is_wf: `%%`(fieldtype : fieldtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 + rule free_fieldtype_is_wf_0{fieldtype : fieldtype, ret_val : free, var_0 : free}: + `%%`(fieldtype, ret_val) + -- wf_fieldtype: `%`(fieldtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_fieldtype: `%%`(fieldtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 +relation free_comptype_is_wf: `%%`(comptype : comptype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 + rule free_comptype_is_wf_0{comptype : comptype, ret_val : free, var_0 : free}: + `%%`(comptype, ret_val) + -- wf_comptype: `%`(comptype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_comptype: `%%`(comptype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 +relation free_subtype_is_wf: `%%`(subtype : subtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 + rule free_subtype_is_wf_0{subtype : subtype, ret_val : free, var_0 : free}: + `%%`(subtype, ret_val) + -- wf_subtype: `%`(subtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_subtype: `%%`(subtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 +relation free_rectype_is_wf: `%%`(rectype : rectype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 + rule free_rectype_is_wf_0{rectype : rectype, ret_val : free, var_0 : free}: + `%%`(rectype, ret_val) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_rectype: `%%`(rectype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 +relation free_deftype_is_wf: `%%`(deftype : deftype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 + rule free_deftype_is_wf_0{deftype : deftype, ret_val : free, var_0 : free}: + `%%`(deftype, ret_val) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_deftype: `%%`(deftype, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_tagtype: `%%`(tagtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_tagtype_case_0{rectype : rectype, n : n, var_0 : free}: + `%%`(_DEF_tagtype(rectype, n), var_0) + -- fun_free_deftype: `%%`(_DEF_deftype(rectype, n), var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_tagtype_is_wf: `%%`(tagtype : tagtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_tagtype_is_wf_0{tagtype : tagtype, ret_val : free, var_0 : free}: + `%%`(tagtype, ret_val) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_tagtype: `%%`(tagtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_globaltype: `%%`(globaltype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_globaltype_case_0{`mut?` : mut?, valtype : valtype, var_0 : free}: + `%%`(`%%`_globaltype(mut#4?{mut#4 <- `mut?`}, valtype), var_0) + -- fun_free_valtype: `%%`(valtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_globaltype_is_wf: `%%`(globaltype : globaltype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_globaltype_is_wf_0{globaltype : globaltype, ret_val : free, var_0 : free}: + `%%`(globaltype, ret_val) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_globaltype: `%%`(globaltype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_memtype(memtype : memtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_memtype_is_wf: `%%`(memtype : memtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_memtype_is_wf_0{memtype : memtype, ret_val : free}: + `%%`(memtype, ret_val) + -- wf_memtype: `%`(memtype) + -- if (ret_val = $free_memtype(memtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_tabletype: `%%`(tabletype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype, var_0 : free}: + `%%`(`%%%`_tabletype(addrtype, limits, reftype), $free_addrtype(addrtype) +++ var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_tabletype_is_wf: `%%`(tabletype : tabletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_tabletype_is_wf_0{tabletype : tabletype, ret_val : free, var_0 : free}: + `%%`(tabletype, ret_val) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_tabletype: `%%`(tabletype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_datatype(datatype : datatype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_datatype_is_wf: `%%`(datatype : datatype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_datatype_is_wf_0{datatype : datatype, ret_val : free}: + `%%`(datatype, ret_val) + -- if (ret_val = $free_datatype(datatype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_elemtype: `%%`(elemtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_elemtype_case_0{reftype : reftype, var_0 : free}: + `%%`(reftype, var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_elemtype_is_wf: `%%`(elemtype : elemtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_elemtype_is_wf_0{elemtype : elemtype, ret_val : free, var_0 : free}: + `%%`(elemtype, ret_val) + -- wf_reftype: `%`(elemtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_elemtype: `%%`(elemtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_externtype: `%%`(externtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_externtype(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_1{globaltype : globaltype, var_0 : free}: + `%%`(GLOBAL_externtype(globaltype), var_0) + -- fun_free_globaltype: `%%`(globaltype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_2{memtype : memtype}: + `%%`(MEM_externtype(memtype), $free_memtype(memtype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_3{tabletype : tabletype, var_0 : free}: + `%%`(TABLE_externtype(tabletype), var_0) + -- fun_free_tabletype: `%%`(tabletype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_4{typeuse : typeuse, var_0 : free}: + `%%`(FUNC_externtype(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_externtype_is_wf: `%%`(externtype : externtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_externtype_is_wf_0{externtype : externtype, ret_val : free, var_0 : free}: + `%%`(externtype, ret_val) + -- wf_externtype: `%`(externtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_externtype: `%%`(externtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_moduletype: `%%`(moduletype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_moduletype_case_0{`externtype_1*` : externtype*, `externtype_2*` : externtype*, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(`%->%`_moduletype(externtype_1#1*{externtype_1#1 <- `externtype_1*`}, externtype_2#1*{externtype_2#1 <- `externtype_2*`}), var_0 +++ var_2) + -- (fun_free_externtype: `%%`(externtype_2, var_3))*{var_3 <- `var_3*`, externtype_2 <- `externtype_2*`} + -- if (|`var_3*`| = |`externtype_2*`|) + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- (fun_free_externtype: `%%`(externtype_1, var_1))*{var_1 <- `var_1*`, externtype_1 <- `externtype_1*`} + -- if (|`var_1*`| = |`externtype_1*`|) + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_moduletype_is_wf: `%%`(moduletype : moduletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_moduletype_is_wf_0{moduletype : moduletype, ret_val : free, var_0 : free}: + `%%`(moduletype, ret_val) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_moduletype: `%%`(moduletype, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax num_ = + | mk_num__0(Inn : Inn, var_x : iN) + | mk_num__1(Fnn : Fnn, var_x : fN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_num_: `%%`(numtype, num_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_0{numtype : numtype, Inn : Inn, var_x : iN}: + `%%`(numtype, mk_num__0_num_(Inn, var_x)) + -- wf_uN: `%%`($size($numtype_addrtype(Inn)), var_x) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_1{numtype : numtype, Fnn : Fnn, var_x : fN}: + `%%`(numtype, mk_num__1_num_(Fnn, var_x)) + -- wf_fN: `%%`($sizenn($numtype_Fnn(Fnn)), var_x) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__0(var_x : num_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{Inn : Inn, var_x : iN}(mk_num__0_num_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__1(var_x : num_) : fN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{Fnn : Fnn, var_x : fN}(mk_num__1_num_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax pack_ = iN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lane_ = + | mk_lane__0(numtype : numtype, var_x : num_) + | mk_lane__1(packtype : packtype, var_x : pack_) + | mk_lane__2(Jnn : Jnn, var_x : iN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lane_: `%%`(lanetype, lane_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_0{lanetype : lanetype, numtype : numtype, var_x : num_}: + `%%`(lanetype, mk_lane__0_lane_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (lanetype = $lanetype_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_1{lanetype : lanetype, packtype : packtype, var_x : pack_}: + `%%`(lanetype, mk_lane__1_lane_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (lanetype = $lanetype_packtype(packtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_2{lanetype : lanetype, Jnn : Jnn, var_x : iN}: + `%%`(lanetype, mk_lane__2_lane_(Jnn, var_x)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(Jnn)), var_x) + -- if (lanetype = $lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__0(var_x : lane_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{numtype : numtype, var_x : num_}(mk_lane__0_lane_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__1(var_x : lane_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{packtype : packtype, var_x : pack_}(mk_lane__1_lane_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__2(var_x : lane_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{Jnn : Jnn, var_x : iN}(mk_lane__2_lane_(Jnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vec_ = vN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lit_ = + | mk_lit__0(numtype : numtype, var_x : num_) + | mk_lit__1(vectype : vectype, var_x : vec_) + | mk_lit__2(packtype : packtype, var_x : pack_) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lit_: `%%`(storagetype, lit_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_0{storagetype : storagetype, numtype : numtype, var_x : num_}: + `%%`(storagetype, mk_lit__0_lit_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (storagetype = $storagetype_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_1{storagetype : storagetype, vectype : vectype, var_x : vec_}: + `%%`(storagetype, mk_lit__1_lit_(vectype, var_x)) + -- wf_uN: `%%`($vsize(vectype), var_x) + -- if (storagetype = $storagetype_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_2{storagetype : storagetype, packtype : packtype, var_x : pack_}: + `%%`(storagetype, mk_lit__2_lit_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (storagetype = $storagetype_packtype(packtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__0(var_x : lit_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{numtype : numtype, var_x : num_}(mk_lit__0_lit_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__1(var_x : lit_) : vec_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{vectype : vectype, var_x : vec_}(mk_lit__1_lit_(vectype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__2(var_x : lit_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{packtype : packtype, var_x : pack_}(mk_lit__2_lit_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sz = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_sz_0(x : sz) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_sz_0{v_num_0 : nat}(`%`_sz(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_sz: `%`(sz) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule sz_case_0{i : nat}: + `%`(`%`_sz(i)) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sx = + | U + | S + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Inn = + | CLZ + | CTZ + | POPCNT + | EXTEND(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_Inn: `%%`(Inn, unop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_0{Inn : Inn}: + `%%`(Inn, CLZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_1{Inn : Inn}: + `%%`(Inn, CTZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_2{Inn : Inn}: + `%%`(Inn, POPCNT_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_3{Inn : Inn, sz : sz}: + `%%`(Inn, EXTEND_unop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Fnn = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_ = + | mk_unop__0(Inn : Inn, var_x : unop_Inn) + | mk_unop__1(Fnn : Fnn, var_x : unop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_: `%%`(numtype, unop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_0{numtype : numtype, Inn : Inn, var_x : unop_Inn}: + `%%`(numtype, mk_unop__0_unop_(Inn, var_x)) + -- wf_unop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_1{numtype : numtype, Fnn : Fnn, var_x : unop_Fnn}: + `%%`(numtype, mk_unop__1_unop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__0(var_x : unop_) : unop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{Inn : Inn, var_x : unop_Inn}(mk_unop__0_unop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__1(var_x : unop_) : unop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{Fnn : Fnn, var_x : unop_Fnn}(mk_unop__1_unop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Inn = + | ADD + | SUB + | MUL + | DIV(sx : sx) + | REM(sx : sx) + | AND + | OR + | XOR + | SHL + | SHR(sx : sx) + | ROTL + | ROTR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Fnn = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | COPYSIGN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_ = + | mk_binop__0(Inn : Inn, var_x : binop_Inn) + | mk_binop__1(Fnn : Fnn, var_x : binop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_binop_: `%%`(numtype, binop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_0{numtype : numtype, Inn : Inn, var_x : binop_Inn}: + `%%`(numtype, mk_binop__0_binop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_1{numtype : numtype, Fnn : Fnn, var_x : binop_Fnn}: + `%%`(numtype, mk_binop__1_binop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__0(var_x : binop_) : binop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{Inn : Inn, var_x : binop_Inn}(mk_binop__0_binop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__1(var_x : binop_) : binop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{Fnn : Fnn, var_x : binop_Fnn}(mk_binop__1_binop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_Inn = + | EQZ + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_ = + | mk_testop__0(Inn : Inn, var_x : testop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_testop_: `%%`(numtype, testop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule testop__case_0{numtype : numtype, Inn : Inn, var_x : testop_Inn}: + `%%`(numtype, mk_testop__0_testop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_testop__0(var_x : testop_) : testop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_testop__0{Inn : Inn, var_x : testop_Inn}(mk_testop__0_testop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Inn = + | EQ + | NE + | LT(sx : sx) + | GT(sx : sx) + | LE(sx : sx) + | GE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Fnn = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_ = + | mk_relop__0(Inn : Inn, var_x : relop_Inn) + | mk_relop__1(Fnn : Fnn, var_x : relop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_relop_: `%%`(numtype, relop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_0{numtype : numtype, Inn : Inn, var_x : relop_Inn}: + `%%`(numtype, mk_relop__0_relop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_1{numtype : numtype, Fnn : Fnn, var_x : relop_Fnn}: + `%%`(numtype, mk_relop__1_relop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__0(var_x : relop_) : relop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{Inn : Inn, var_x : relop_Inn}(mk_relop__0_relop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__1(var_x : relop_) : relop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{Fnn : Fnn, var_x : relop_Fnn}(mk_relop__1_relop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Inn_2 = + | EXTEND(sx : sx) + | WRAP + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Inn_2: `%%%`(Inn, Inn, cvtop__Inn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_0{Inn_1 : Inn, Inn_2 : Inn, sx : sx}: + `%%%`(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)) + -- if ($sizenn1($numtype_addrtype(Inn_1)) < $sizenn2($numtype_addrtype(Inn_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_1{Inn_1 : Inn, Inn_2 : Inn}: + `%%%`(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2) + -- if ($sizenn1($numtype_addrtype(Inn_1)) > $sizenn2($numtype_addrtype(Inn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Fnn_2 = + | CONVERT(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn, Fnn, cvtop__Inn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_0{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx}: + `%%%`(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_1{Inn_1 : Inn, Fnn_2 : Fnn}: + `%%%`(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2) + -- if ($sizenn1($numtype_addrtype(Inn_1)) = $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Inn_2 = + | TRUNC(sx : sx) + | TRUNC_SAT(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn, Inn, cvtop__Fnn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_0{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_1{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_2{Fnn_1 : Fnn, Inn_2 : Inn}: + `%%%`(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = $sizenn2($numtype_addrtype(Inn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Fnn_2 = + | PROMOTE + | DEMOTE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn, Fnn, cvtop__Fnn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_0{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) < $sizenn2($numtype_Fnn(Fnn_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_1{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) > $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__ = + | mk_cvtop___0(Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2) + | mk_cvtop___1(Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2) + | mk_cvtop___2(Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2) + | mk_cvtop___3(Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__: `%%%`(numtype, numtype, cvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_0{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) + -- wf_cvtop__Inn_1_Inn_2: `%%%`(Inn_1, Inn_2, var_x) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_1{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) + -- wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn_1, Fnn_2, var_x) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_2{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) + -- wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn_1, Inn_2, var_x) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_3{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) + -- wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn_1, Fnn_2, var_x) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___0(var_x : cvtop__) : cvtop__Inn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___1(var_x : cvtop__) : cvtop__Inn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___2(var_x : cvtop__) : cvtop__Fnn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___3(var_x : cvtop__) : cvtop__Fnn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax dim = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_dim_0(x : dim) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_dim_0{v_num_0 : nat}(`%`_dim(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_dim: `%`(dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_case_0{i : nat}: + `%`(`%`_dim(i)) + -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax shape = + | `%X%`(lanetype : lanetype, dim : dim) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_shape: `%`(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule shape_case_0{lanetype : lanetype, dim : dim}: + `%`(`%X%`_shape(lanetype, dim)) + -- wf_dim: `%`(dim) + -- if (($lsize(lanetype) * $proj_dim_0(dim).0) = 128) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $dim(shape : shape) : dim + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation dim_is_wf: `%%`(shape : shape, ret_val : dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_is_wf_0{shape : shape, ret_val : dim}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $dim(shape)) + -- wf_dim: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $lanetype(shape : shape) : lanetype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $lanetype{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $unpackshape(shape : shape) : numtype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $unpackshape{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax ishape = + | `%`(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_ishape_0(x : ishape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_ishape_0{v_shape_0 : shape}(`%`_ishape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_ishape: `%`(ishape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule ishape_case_0{Jnn : Jnn, shape : shape}: + `%`(`%`_ishape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = $lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax bshape = + | `%`(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_bshape_0(x : bshape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_bshape_0{v_shape_0 : shape}(`%`_bshape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_bshape: `%`(bshape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule bshape_case_0{shape : shape}: + `%`(`%`_bshape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = I8_lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax zero = + | ZERO + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax half = + | LOW + | HIGH + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvunop = + | NOT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvbinop = + | AND + | ANDNOT + | OR + | XOR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvternop = + | BITSELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvtestop = + | ANY_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Jnn_M = + | ABS + | NEG + | POPCNT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_Jnn_M: `%%%`(Jnn, M, vunop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ABS_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NEG_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_2{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, POPCNT_vunop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 8) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Fnn_M = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_ = + | mk_vunop__0(Jnn : Jnn, M : M, var_x : vunop_Jnn_M) + | mk_vunop__1(Fnn : Fnn, M : M, var_x : vunop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_: `%%`(shape, vunop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vunop_Jnn_M}: + `%%`(shape, mk_vunop__0_vunop_(Jnn, M, var_x)) + -- wf_vunop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vunop_Fnn_M}: + `%%`(shape, mk_vunop__1_vunop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__0(var_x : vunop_) : vunop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{Jnn : Jnn, M : M, var_x : vunop_Jnn_M}(mk_vunop__0_vunop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__1(var_x : vunop_) : vunop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{Fnn : Fnn, M : M, var_x : vunop_Fnn_M}(mk_vunop__1_vunop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Jnn_M = + | ADD + | SUB + | ADD_SAT(sx : sx) + | SUB_SAT(sx : sx) + | MUL + | AVGRU + | Q15MULR_SATS + | RELAXED_Q15MULRS + | MIN(sx : sx) + | MAX(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_Jnn_M: `%%%`(Jnn, M, vbinop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ADD_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, SUB_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_4{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, MUL_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) >= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_5{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, AVGRU_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_6{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, Q15MULR_SATS_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_7{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, RELAXED_Q15MULRS_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_8{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MIN_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_9{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MAX_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Fnn_M = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | PMIN + | PMAX + | RELAXED_MIN + | RELAXED_MAX + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_ = + | mk_vbinop__0(Jnn : Jnn, M : M, var_x : vbinop_Jnn_M) + | mk_vbinop__1(Fnn : Fnn, M : M, var_x : vbinop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_: `%%`(shape, vbinop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}: + `%%`(shape, mk_vbinop__0_vbinop_(Jnn, M, var_x)) + -- wf_vbinop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}: + `%%`(shape, mk_vbinop__1_vbinop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__0(var_x : vbinop_) : vbinop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}(mk_vbinop__0_vbinop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__1(var_x : vbinop_) : vbinop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}(mk_vbinop__1_vbinop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Jnn_M = + | RELAXED_LANESELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Fnn_M = + | RELAXED_MADD + | RELAXED_NMADD + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_ = + | mk_vternop__0(Jnn : Jnn, M : M, var_x : vternop_Jnn_M) + | mk_vternop__1(Fnn : Fnn, M : M, var_x : vternop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vternop_: `%%`(shape, vternop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vternop_Jnn_M}: + `%%`(shape, mk_vternop__0_vternop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vternop_Fnn_M}: + `%%`(shape, mk_vternop__1_vternop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__0(var_x : vternop_) : vternop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{Jnn : Jnn, M : M, var_x : vternop_Jnn_M}(mk_vternop__0_vternop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__1(var_x : vternop_) : vternop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{Fnn : Fnn, M : M, var_x : vternop_Fnn_M}(mk_vternop__1_vternop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_Jnn_M = + | ALL_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_ = + | mk_vtestop__0(Jnn : Jnn, M : M, var_x : vtestop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vtestop_: `%%`(shape, vtestop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vtestop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}: + `%%`(shape, mk_vtestop__0_vtestop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vtestop__0(var_x : vtestop_) : vtestop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vtestop__0{Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}(mk_vtestop__0_vtestop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Jnn_M = + | EQ + | NE + | LT(sx : sx) + | GT(sx : sx) + | LE(sx : sx) + | GE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_Jnn_M: `%%%`(Jnn, M, vrelop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, EQ_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NE_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LT_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GT_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_4{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LE_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_5{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GE_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Fnn_M = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_ = + | mk_vrelop__0(Jnn : Jnn, M : M, var_x : vrelop_Jnn_M) + | mk_vrelop__1(Fnn : Fnn, M : M, var_x : vrelop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_: `%%`(shape, vrelop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}: + `%%`(shape, mk_vrelop__0_vrelop_(Jnn, M, var_x)) + -- wf_vrelop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}: + `%%`(shape, mk_vrelop__1_vrelop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__0(var_x : vrelop_) : vrelop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}(mk_vrelop__0_vrelop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__1(var_x : vrelop_) : vrelop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}(mk_vrelop__1_vrelop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_Jnn_M = + | SHL + | SHR(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_ = + | mk_vshiftop__0(Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vshiftop_: `%%`(ishape, vshiftop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vshiftop__case_0{ishape : ishape, Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}: + `%%`(ishape, mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) + -- if (ishape = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vshiftop__0(var_x : vshiftop_) : vshiftop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vshiftop__0{Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}(mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_M = + | SWIZZLE + | RELAXED_SWIZZLE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_ = + | mk_vswizzlop__0(M : M, var_x : vswizzlop_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vswizzlop_: `%%`(bshape, vswizzlop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vswizzlop__case_0{bshape : bshape, M : M, var_x : vswizzlop_M}: + `%%`(bshape, mk_vswizzlop__0_vswizzlop_(M, var_x)) + -- if (bshape = `%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vswizzlop__0(var_x : vswizzlop_) : vswizzlop_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vswizzlop__0{M : M, var_x : vswizzlop_M}(mk_vswizzlop__0_vswizzlop_(M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTADD_PAIRWISE(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextunop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)) + -- if ((16 <= (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) <= 32))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__ = + | mk_vextunop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__: `%%%`(ishape, ishape, vextunop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextunop___0(var_x : vextunop__) : vextunop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTMUL(half : half, sx : sx) + | DOTS + | RELAXED_DOTS + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextbinop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) >= 16)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_1{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_2{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__ = + | mk_vextbinop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__: `%%%`(ishape, ishape, vextbinop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextbinop___0(var_x : vextbinop__) : vextbinop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__Jnn_1_M_1_Jnn_2_M_2 = + | RELAXED_DOT_ADDS + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextternop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((4 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__ = + | mk_vextternop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__: `%%%`(ishape, ishape, vextternop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextternop___0(var_x : vextternop__) : vextternop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTEND(half : half, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vcvtop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if ($lsizenn2($lanetype_Jnn(Jnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Fnn_2_M_2 = + | CONVERT(`half?` : half?, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn, M, Fnn, M, vcvtop__Jnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Fnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}: + `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(`half?`, sx)) + -- if (((($sizenn2($numtype_Fnn(Fnn_2)) = $lsizenn1($lanetype_Jnn(Jnn_1))) /\ ($lsizenn1($lanetype_Jnn(Jnn_1)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2($numtype_Fnn(Fnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Jnn_2_M_2 = + | TRUNC_SAT(sx : sx, `zero?` : zero?) + | RELAXED_TRUNC(sx : sx, `zero?` : zero?) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn, M, Jnn, M, vcvtop__Fnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, `zero?`)) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, `zero?`)) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Fnn_2_M_2 = + | DEMOTE(zero : zero) + | PROMOTELOW + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn, M, Fnn, M, vcvtop__Fnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $sizenn2($numtype_Fnn(Fnn_2)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2) + -- if ((2 * $sizenn1($numtype_Fnn(Fnn_1))) = $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__ = + | mk_vcvtop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___1(Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2) + | mk_vcvtop___2(Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___3(Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__: `%%%`(shape, shape, vcvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_0{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_1{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_2{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_3{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___0(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___1(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___2(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___3(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax memarg = +{ + ALIGN u32, + OFFSET u64 +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_memarg: `%`(memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg_case_{var_0 : u32, var_1 : u64}: + `%`({ALIGN var_0, OFFSET var_1}) + -- wf_uN: `%%`(32, var_0) + -- wf_uN: `%%`(64, var_1) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_Inn = + | `%_%`(sz : sz, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_Inn: `%%`(Inn, loadop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop_Inn_case_0{Inn : Inn, sz : sz, sx : sx}: + `%%`(Inn, `%_%`_loadop_Inn(sz, sx)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_ = + | mk_loadop__0(Inn : Inn, var_x : loadop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_: `%%`(numtype, loadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop__case_0{numtype : numtype, Inn : Inn, var_x : loadop_Inn}: + `%%`(numtype, mk_loadop__0_loadop_(Inn, var_x)) + -- wf_loadop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_loadop__0(var_x : loadop_) : loadop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_loadop__0{Inn : Inn, var_x : loadop_Inn}(mk_loadop__0_loadop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_Inn = + | `%`(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_Inn: `%%`(Inn, storeop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop_Inn_case_0{Inn : Inn, sz : sz}: + `%%`(Inn, `%`_storeop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_ = + | mk_storeop__0(Inn : Inn, var_x : storeop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_: `%%`(numtype, storeop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop__case_0{numtype : numtype, Inn : Inn, var_x : storeop_Inn}: + `%%`(numtype, mk_storeop__0_storeop_(Inn, var_x)) + -- wf_storeop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_storeop__0(var_x : storeop_) : storeop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_storeop__0{Inn : Inn, var_x : storeop_Inn}(mk_storeop__0_storeop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vloadop_ = + | `SHAPE%X%_%`(sz : sz, M : M, sx : sx) + | SPLAT(sz : sz) + | ZERO(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vloadop_: `%%`(vectype, vloadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_0{vectype : vectype, sz : sz, M : M, sx : sx}: + `%%`(vectype, `SHAPE%X%_%`_vloadop_(sz, M, sx)) + -- wf_sz: `%`(sz) + -- if ((($proj_sz_0(sz).0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_1{vectype : vectype, sz : sz}: + `%%`(vectype, SPLAT_vloadop_(sz)) + -- wf_sz: `%`(sz) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_2{vectype : vectype, sz : sz}: + `%%`(vectype, ZERO_vloadop_(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 >= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax blocktype = + | _RESULT(`valtype?` : valtype?) + | _IDX(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_blocktype: `%`(blocktype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_0{`valtype?` : valtype?}: + `%`(_RESULT_blocktype(`valtype?`)) + -- (wf_valtype: `%`(valtype))?{valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_1{typeidx : typeidx}: + `%`(_IDX_blocktype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax addr = nat + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayaddr = addr + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax catch = + | CATCH(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL(labelidx : labelidx) + | CATCH_ALL_REF(labelidx : labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_catch: `%`(catch) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_0{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_1{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_REF_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_2{labelidx : labelidx}: + `%`(CATCH_ALL_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_3{labelidx : labelidx}: + `%`(CATCH_ALL_REF_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exnaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax dataaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax elemaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globaladdr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax memaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tagaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax externaddr = + | TAG(tagaddr : tagaddr) + | GLOBAL(globaladdr : globaladdr) + | MEM(memaddr : memaddr) + | TABLE(tableaddr : tableaddr) + | FUNC(funcaddr : funcaddr) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exportinst = +{ + NAME name, + ADDR externaddr +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exportinst: `%`(exportinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exportinst_case_{var_0 : name, var_1 : externaddr}: + `%`({NAME var_0, ADDR var_1}) + -- wf_name: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax moduleinst = +{ + TYPES deftype*, + TAGS tagaddr*, + GLOBALS globaladdr*, + MEMS memaddr*, + TABLES tableaddr*, + FUNCS funcaddr*, + DATAS dataaddr*, + ELEMS elemaddr*, + EXPORTS exportinst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_moduleinst: `%`(moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_case_{var_0 : deftype*, var_1 : tagaddr*, var_2 : globaladdr*, var_3 : memaddr*, var_4 : tableaddr*, var_5 : funcaddr*, var_6 : dataaddr*, var_7 : elemaddr*, var_8 : exportinst*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, EXPORTS var_8}) + -- (wf_exportinst: `%`(var_8))*{var_8 <- var_8} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-43.19 +syntax ref = + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 +relation wf_ref: `%`(ref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_0{u31 : u31}: + `%`(`REF.I31_NUM`_ref(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_1: + `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_2{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_ref(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_3{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_ref(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_4{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_ref(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_5{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_ref(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_6{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_ref(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_7{ref : ref}: + `%`(`REF.EXTERN`_ref(ref)) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax val = + | CONST(numtype : numtype, num_) + | VCONST(vectype : vectype, vec_) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + +def $val_ref(ref) : val + def $val_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_val(x0) + def $val_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_val + def $val_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_val(x0) + def $val_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_val(x0) + def $val_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_val(x0) + def $val_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_val(x0) + def $val_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_val(x0) + def $val_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_val(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_val: `%`(val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_val(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_1{vectype : vectype, var_0 : vec_}: + `%`(VCONST_val(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_2{u31 : u31}: + `%`(`REF.I31_NUM`_val(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_3: + `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_4{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_5{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_6{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_7{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_val(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_8{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_9{ref : ref}: + `%`(`REF.EXTERN`_val(ref)) + -- wf_ref: `%`(ref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax frame = +{ + LOCALS val?*, + MODULE moduleinst +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_frame: `%`(frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_case_{var_0 : val?*, var_1 : moduleinst}: + `%`({LOCALS var_0, MODULE var_1}) + -- (wf_val: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- wf_moduleinst: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.1-139.9 +syntax instr = + | NOP + | UNREACHABLE + | DROP + | SELECT(`valtype*?` : valtype*?) + | BLOCK(blocktype : blocktype, `instr*` : instr*) + | LOOP(blocktype : blocktype, `instr*` : instr*) + | `IF%%ELSE%`(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) + | BR(labelidx : labelidx) + | BR_IF(labelidx : labelidx) + | BR_TABLE(`labelidx*` : labelidx*, labelidx : labelidx) + | BR_ON_NULL(labelidx : labelidx) + | BR_ON_NON_NULL(labelidx : labelidx) + | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | CALL(funcidx : funcidx) + | CALL_REF(typeuse : typeuse) + | CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | RETURN + | RETURN_CALL(funcidx : funcidx) + | RETURN_CALL_REF(typeuse : typeuse) + | RETURN_CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | THROW(tagidx : tagidx) + | THROW_REF + | TRY_TABLE(blocktype : blocktype, list(syntax catch), `instr*` : instr*) + | `LOCAL.GET`(localidx : localidx) + | `LOCAL.SET`(localidx : localidx) + | `LOCAL.TEE`(localidx : localidx) + | `GLOBAL.GET`(globalidx : globalidx) + | `GLOBAL.SET`(globalidx : globalidx) + | `TABLE.GET`(tableidx : tableidx) + | `TABLE.SET`(tableidx : tableidx) + | `TABLE.SIZE`(tableidx : tableidx) + | `TABLE.GROW`(tableidx : tableidx) + | `TABLE.FILL`(tableidx : tableidx) + | `TABLE.COPY`(tableidx : tableidx, tableidx : tableidx) + | `TABLE.INIT`(tableidx : tableidx, elemidx : elemidx) + | `ELEM.DROP`(elemidx : elemidx) + | LOAD(numtype : numtype, loadop_?, memidx : memidx, memarg : memarg) + | STORE(numtype : numtype, storeop_?, memidx : memidx, memarg : memarg) + | VLOAD(vectype : vectype, vloadop_?, memidx : memidx, memarg : memarg) + | VLOAD_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | `MEMORY.SIZE`(memidx : memidx) + | `MEMORY.GROW`(memidx : memidx) + | `MEMORY.FILL`(memidx : memidx) + | `MEMORY.COPY`(memidx : memidx, memidx : memidx) + | `MEMORY.INIT`(memidx : memidx, dataidx : dataidx) + | `DATA.DROP`(dataidx : dataidx) + | `REF.NULL`(heaptype : heaptype) + | `REF.IS_NULL` + | `REF.AS_NON_NULL` + | `REF.EQ` + | `REF.TEST`(reftype : reftype) + | `REF.CAST`(reftype : reftype) + | `REF.FUNC`(funcidx : funcidx) + | `REF.I31` + | `I31.GET`(sx : sx) + | `STRUCT.NEW`(typeidx : typeidx) + | `STRUCT.NEW_DEFAULT`(typeidx : typeidx) + | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx) + | `STRUCT.SET`(typeidx : typeidx, fieldidx : fieldidx) + | `ARRAY.NEW`(typeidx : typeidx) + | `ARRAY.NEW_DEFAULT`(typeidx : typeidx) + | `ARRAY.NEW_FIXED`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.NEW_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `ARRAY.GET`(`sx?` : sx?, typeidx : typeidx) + | `ARRAY.SET`(typeidx : typeidx) + | `ARRAY.LEN` + | `ARRAY.FILL`(typeidx : typeidx) + | `ARRAY.COPY`(typeidx : typeidx, typeidx : typeidx) + | `ARRAY.INIT_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.INIT_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `EXTERN.CONVERT_ANY` + | `ANY.CONVERT_EXTERN` + | CONST(numtype : numtype, num_) + | UNOP(numtype : numtype, unop_) + | BINOP(numtype : numtype, binop_) + | TESTOP(numtype : numtype, testop_) + | RELOP(numtype : numtype, relop_) + | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__) + | VCONST(vectype : vectype, vec_) + | VVUNOP(vectype : vectype, vvunop : vvunop) + | VVBINOP(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP(vectype : vectype, vvternop : vvternop) + | VVTESTOP(vectype : vectype, vvtestop : vvtestop) + | VUNOP(shape : shape, vunop_) + | VBINOP(shape : shape, vbinop_) + | VTERNOP(shape : shape, vternop_) + | VTESTOP(shape : shape, vtestop_) + | VRELOP(shape : shape, vrelop_) + | VSHIFTOP(ishape : ishape, vshiftop_) + | VBITMASK(ishape : ishape) + | VSWIZZLOP(bshape : bshape, vswizzlop_) + | VSHUFFLE(bshape : bshape, `laneidx*` : laneidx*) + | VEXTUNOP(ishape_1 : ishape, ishape_2 : ishape, vextunop__) + | VEXTBINOP(ishape_1 : ishape, ishape_2 : ishape, vextbinop__) + | VEXTTERNOP(ishape_1 : ishape, ishape_2 : ishape, vextternop__) + | VNARROW(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + | VCVTOP(shape_1 : shape, shape_2 : shape, vcvtop__) + | VSPLAT(shape : shape) + | VEXTRACT_LANE(shape : shape, `sx?` : sx?, laneidx : laneidx) + | VREPLACE_LANE(shape : shape, laneidx : laneidx) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) + | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) + | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) + | TRAP +} + +def $instr_ref(ref) : instr + def $instr_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_instr(x0) + def $instr_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_instr + def $instr_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_instr(x0) + def $instr_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_instr(x0) + def $instr_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_instr(x0) + def $instr_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_instr(x0) + def $instr_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_instr(x0) + def $instr_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_instr(x0) + +def $instr_val(val) : instr + def $instr_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_instr(x0, x1) + def $instr_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_instr(x0, x1) + def $instr_val{x0 : u31}(`REF.I31_NUM`_val(x0)) = `REF.I31_NUM`_instr(x0) + def $instr_val(`REF.NULL_ADDR`_val) = `REF.NULL_ADDR`_instr + def $instr_val{x0 : structaddr}(`REF.STRUCT_ADDR`_val(x0)) = `REF.STRUCT_ADDR`_instr(x0) + def $instr_val{x0 : arrayaddr}(`REF.ARRAY_ADDR`_val(x0)) = `REF.ARRAY_ADDR`_instr(x0) + def $instr_val{x0 : funcaddr}(`REF.FUNC_ADDR`_val(x0)) = `REF.FUNC_ADDR`_instr(x0) + def $instr_val{x0 : exnaddr}(`REF.EXN_ADDR`_val(x0)) = `REF.EXN_ADDR`_instr(x0) + def $instr_val{x0 : hostaddr}(`REF.HOST_ADDR`_val(x0)) = `REF.HOST_ADDR`_instr(x0) + def $instr_val{x0 : ref}(`REF.EXTERN`_val(x0)) = `REF.EXTERN`_instr(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 +relation wf_instr: `%`(instr) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_0: + `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_1: + `%`(UNREACHABLE_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_2: + `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_3{`valtype*?` : valtype*?}: + `%`(SELECT_instr(`valtype*?`)) + -- (wf_valtype: `%`(valtype))*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_4{blocktype : blocktype, `instr*` : instr*}: + `%`(BLOCK_instr(blocktype, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_5{blocktype : blocktype, `instr*` : instr*}: + `%`(LOOP_instr(blocktype, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_6{blocktype : blocktype, `instr*` : instr*, `instr*_0` : instr*}: + `%`(`IF%%ELSE%`_instr(blocktype, `instr*`, `instr*_0`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(`instr*_0`))*{`instr*_0` <- `instr*_0`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_7{labelidx : labelidx}: + `%`(BR_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_8{labelidx : labelidx}: + `%`(BR_IF_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_9{`labelidx*` : labelidx*, labelidx : labelidx}: + `%`(BR_TABLE_instr(`labelidx*`, labelidx)) + -- (wf_uN: `%%`(32, labelidx))*{labelidx <- `labelidx*`} + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_10{labelidx : labelidx}: + `%`(BR_ON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_11{labelidx : labelidx}: + `%`(BR_ON_NON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_12{labelidx : labelidx, reftype : reftype, reftype_0 : reftype}: + `%`(BR_ON_CAST_instr(labelidx, reftype, reftype_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_13{labelidx : labelidx, reftype : reftype, reftype_0 : reftype}: + `%`(BR_ON_CAST_FAIL_instr(labelidx, reftype, reftype_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(reftype_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_14{funcidx : funcidx}: + `%`(CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_15{typeuse : typeuse}: + `%`(CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_16{tableidx : tableidx, typeuse : typeuse}: + `%`(CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_17: + `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_18{funcidx : funcidx}: + `%`(RETURN_CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_19{typeuse : typeuse}: + `%`(RETURN_CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_20{tableidx : tableidx, typeuse : typeuse}: + `%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_21{tagidx : tagidx}: + `%`(THROW_instr(tagidx)) + -- wf_uN: `%%`(32, tagidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_22: + `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_23{blocktype : blocktype, var_0 : list(syntax catch), `instr*` : instr*}: + `%`(TRY_TABLE_instr(blocktype, var_0, `instr*`)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_24{localidx : localidx}: + `%`(`LOCAL.GET`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_25{localidx : localidx}: + `%`(`LOCAL.SET`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_26{localidx : localidx}: + `%`(`LOCAL.TEE`_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_27{globalidx : globalidx}: + `%`(`GLOBAL.GET`_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_28{globalidx : globalidx}: + `%`(`GLOBAL.SET`_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_29{tableidx : tableidx}: + `%`(`TABLE.GET`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_30{tableidx : tableidx}: + `%`(`TABLE.SET`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_31{tableidx : tableidx}: + `%`(`TABLE.SIZE`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_32{tableidx : tableidx}: + `%`(`TABLE.GROW`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_33{tableidx : tableidx}: + `%`(`TABLE.FILL`_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_34{tableidx : tableidx, tableidx_0 : tableidx}: + `%`(`TABLE.COPY`_instr(tableidx, tableidx_0)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, tableidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_35{tableidx : tableidx, elemidx : elemidx}: + `%`(`TABLE.INIT`_instr(tableidx, elemidx)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_36{elemidx : elemidx}: + `%`(`ELEM.DROP`_instr(elemidx)) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_37{numtype : numtype, var_0 : loadop_?, memidx : memidx, memarg : memarg}: + `%`(LOAD_instr(numtype, var_0, memidx, memarg)) + -- (wf_loadop_: `%%`(numtype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_38{numtype : numtype, var_0 : storeop_?, memidx : memidx, memarg : memarg}: + `%`(STORE_instr(numtype, var_0, memidx, memarg)) + -- (wf_storeop_: `%%`(numtype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_39{vectype : vectype, var_0 : vloadop_?, memidx : memidx, memarg : memarg}: + `%`(VLOAD_instr(vectype, var_0, memidx, memarg)) + -- (wf_vloadop_: `%%`(vectype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_40{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_41{vectype : vectype, memidx : memidx, memarg : memarg}: + `%`(VSTORE_instr(vectype, memidx, memarg)) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_42{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_43{memidx : memidx}: + `%`(`MEMORY.SIZE`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_44{memidx : memidx}: + `%`(`MEMORY.GROW`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_45{memidx : memidx}: + `%`(`MEMORY.FILL`_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_46{memidx : memidx, memidx_0 : memidx}: + `%`(`MEMORY.COPY`_instr(memidx, memidx_0)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, memidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_47{memidx : memidx, dataidx : dataidx}: + `%`(`MEMORY.INIT`_instr(memidx, dataidx)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_48{dataidx : dataidx}: + `%`(`DATA.DROP`_instr(dataidx)) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_49{heaptype : heaptype}: + `%`(`REF.NULL`_instr(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_50: + `%`(`REF.IS_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_51: + `%`(`REF.AS_NON_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_52: + `%`(`REF.EQ`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_53{reftype : reftype}: + `%`(`REF.TEST`_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_54{reftype : reftype}: + `%`(`REF.CAST`_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_55{funcidx : funcidx}: + `%`(`REF.FUNC`_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_56: + `%`(`REF.I31`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_57{sx : sx}: + `%`(`I31.GET`_instr(sx)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_58{typeidx : typeidx}: + `%`(`STRUCT.NEW`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_59{typeidx : typeidx}: + `%`(`STRUCT.NEW_DEFAULT`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_60{`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx}: + `%`(`STRUCT.GET`_instr(`sx?`, typeidx, fieldidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, fieldidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_61{typeidx : typeidx, fieldidx : fieldidx}: + `%`(`STRUCT.SET`_instr(typeidx, fieldidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, fieldidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_62{typeidx : typeidx}: + `%`(`ARRAY.NEW`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_63{typeidx : typeidx}: + `%`(`ARRAY.NEW_DEFAULT`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_64{typeidx : typeidx, u32 : u32}: + `%`(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_65{typeidx : typeidx, dataidx : dataidx}: + `%`(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_66{typeidx : typeidx, elemidx : elemidx}: + `%`(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_67{`sx?` : sx?, typeidx : typeidx}: + `%`(`ARRAY.GET`_instr(`sx?`, typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_68{typeidx : typeidx}: + `%`(`ARRAY.SET`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_69: + `%`(`ARRAY.LEN`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_70{typeidx : typeidx}: + `%`(`ARRAY.FILL`_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_71{typeidx : typeidx, typeidx_0 : typeidx}: + `%`(`ARRAY.COPY`_instr(typeidx, typeidx_0)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, typeidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_72{typeidx : typeidx, dataidx : dataidx}: + `%`(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_73{typeidx : typeidx, elemidx : elemidx}: + `%`(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_74: + `%`(`EXTERN.CONVERT_ANY`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_75: + `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_76{numtype : numtype, var_0 : num_}: + `%`(CONST_instr(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_77{numtype : numtype, var_0 : unop_}: + `%`(UNOP_instr(numtype, var_0)) + -- wf_unop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_78{numtype : numtype, var_0 : binop_}: + `%`(BINOP_instr(numtype, var_0)) + -- wf_binop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_79{numtype : numtype, var_0 : testop_}: + `%`(TESTOP_instr(numtype, var_0)) + -- wf_testop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_80{numtype : numtype, var_0 : relop_}: + `%`(RELOP_instr(numtype, var_0)) + -- wf_relop_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_81{numtype_1 : numtype, numtype_2 : numtype, var_0 : cvtop__}: + `%`(CVTOP_instr(numtype_1, numtype_2, var_0)) + -- wf_cvtop__: `%%%`(numtype_2, numtype_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_82{vectype : vectype, var_0 : vec_}: + `%`(VCONST_instr(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_83{vectype : vectype, vvunop : vvunop}: + `%`(VVUNOP_instr(vectype, vvunop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_84{vectype : vectype, vvbinop : vvbinop}: + `%`(VVBINOP_instr(vectype, vvbinop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_85{vectype : vectype, vvternop : vvternop}: + `%`(VVTERNOP_instr(vectype, vvternop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_86{vectype : vectype, vvtestop : vvtestop}: + `%`(VVTESTOP_instr(vectype, vvtestop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_87{shape : shape, var_0 : vunop_}: + `%`(VUNOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vunop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_88{shape : shape, var_0 : vbinop_}: + `%`(VBINOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vbinop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_89{shape : shape, var_0 : vternop_}: + `%`(VTERNOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vternop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_90{shape : shape, var_0 : vtestop_}: + `%`(VTESTOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vtestop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_91{shape : shape, var_0 : vrelop_}: + `%`(VRELOP_instr(shape, var_0)) + -- wf_shape: `%`(shape) + -- wf_vrelop_: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_92{ishape : ishape, var_0 : vshiftop_}: + `%`(VSHIFTOP_instr(ishape, var_0)) + -- wf_ishape: `%`(ishape) + -- wf_vshiftop_: `%%`(ishape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_93{ishape : ishape}: + `%`(VBITMASK_instr(ishape)) + -- wf_ishape: `%`(ishape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_94{bshape : bshape, var_0 : vswizzlop_}: + `%`(VSWIZZLOP_instr(bshape, var_0)) + -- wf_bshape: `%`(bshape) + -- wf_vswizzlop_: `%%`(bshape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*}: + `%`(VSHUFFLE_instr(bshape, `laneidx*`)) + -- wf_bshape: `%`(bshape) + -- (wf_uN: `%%`(8, laneidx))*{laneidx <- `laneidx*`} + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim($proj_bshape_0(bshape).0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextunop__}: + `%`(VEXTUNOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextunop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_97{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextbinop__}: + `%`(VEXTBINOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextbinop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_98{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextternop__}: + `%`(VEXTTERNOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextternop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_99{ishape_1 : ishape, ishape_2 : ishape, sx : sx}: + `%`(VNARROW_instr(ishape_1, ishape_2, sx)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- if (($lsize($lanetype($proj_ishape_0(ishape_2).0)) = (2 * $lsize($lanetype($proj_ishape_0(ishape_1).0)))) /\ ((2 * $lsize($lanetype($proj_ishape_0(ishape_1).0))) <= 32)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_100{shape_1 : shape, shape_2 : shape, var_0 : vcvtop__}: + `%`(VCVTOP_instr(shape_1, shape_2, var_0)) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_2, shape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_101{shape : shape}: + `%`(VSPLAT_instr(shape)) + -- wf_shape: `%`(shape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_102{shape : shape, `sx?` : sx?, laneidx : laneidx}: + `%`(VEXTRACT_LANE_instr(shape, `sx?`, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) + -- if (|[I32_lanetype I64_lanetype F32_lanetype F64_lanetype]| > 0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_103{shape : shape, laneidx : laneidx}: + `%`(VREPLACE_LANE_instr(shape, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_104{u31 : u31}: + `%`(`REF.I31_NUM`_instr(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_105: + `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_106{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_instr(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_107{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_instr(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_108{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_instr(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_109{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_instr(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_110{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_instr(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_111{ref : ref}: + `%`(`REF.EXTERN`_instr(ref)) + -- wf_ref: `%`(ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_112{n : n, `instr*` : instr*, `instr*_0` : instr*}: + `%`(`LABEL_%{%}%`_instr(n, `instr*`, `instr*_0`)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(`instr*_0`))*{`instr*_0` <- `instr*_0`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_113{n : n, frame : frame, `instr*` : instr*}: + `%`(`FRAME_%{%}%`_instr(n, frame, `instr*`)) + -- wf_frame: `%`(frame) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_114{n : n, `catch*` : catch*, `instr*` : instr*}: + `%`(`HANDLER_%{%}%`_instr(n, `catch*`, `instr*`)) + -- (wf_catch: `%`(catch))*{catch <- `catch*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_115: + `%`(TRAP_instr) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax expr = instr* + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $memarg0 : memarg + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation memarg0_is_wf: `%`(ret_val : memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg0_is_wf_0{ret_val : memarg}: + `%`(ret_val) + -- if (ret_val = $memarg0) + -- wf_memarg: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $const(consttype : consttype, lit_ : lit_) : instr + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(I32_consttype, mk_lit__0_lit_(I32_numtype, c)) = CONST_instr(I32_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(I64_consttype, mk_lit__0_lit_(I64_numtype, c)) = CONST_instr(I64_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(F32_consttype, mk_lit__0_lit_(F32_numtype, c)) = CONST_instr(F32_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(F64_consttype, mk_lit__0_lit_(F64_numtype, c)) = CONST_instr(F64_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : uN}(V128_consttype, mk_lit__1_lit_(V128_vectype, c)) = VCONST_instr(V128_vectype, c) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation const_is_wf: `%%%`(consttype : consttype, lit_ : lit_, ret_val : instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule const_is_wf_0{consttype : consttype, lit_ : lit_, ret_val : instr}: + `%%%`(consttype, lit_, ret_val) + -- wf_lit_: `%%`($storagetype_consttype(consttype), lit_) + -- if (ret_val = $const(consttype, lit_)) + -- wf_instr: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_shape(shape : shape) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_shape_is_wf: `%%`(shape : shape, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_shape_is_wf_0{shape : shape, ret_val : free}: + `%%`(shape, ret_val) + -- wf_shape: `%`(shape) + -- if (ret_val = $free_shape(shape)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_blocktype: `%%`(blocktype, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_blocktype_case_0{`valtype?` : valtype?, `var_0?` : free?}: + `%%`(_RESULT_blocktype(valtype#504?{valtype#504 <- `valtype?`}), $free_opt(var_0?{var_0 <- `var_0?`})) + -- (fun_free_valtype: `%%`(valtype, var_0))?{var_0 <- `var_0?`, valtype <- `valtype?`} + -- if ((`var_0?` = ?()) <=> (`valtype?` = ?())) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_blocktype_case_1{typeidx : uN}: + `%%`(_IDX_blocktype(typeidx), $free_typeidx(typeidx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_blocktype_is_wf: `%%`(blocktype : blocktype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_blocktype_is_wf_0{blocktype : blocktype, ret_val : free, var_0 : free}: + `%%`(blocktype, ret_val) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_blocktype: `%%`(blocktype, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_catch(catch : catch) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : uN, labelidx : uN}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : uN, labelidx : uN}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : uN}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : uN}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_catch_is_wf: `%%`(catch : catch, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_catch_is_wf_0{catch : catch, ret_val : free}: + `%%`(catch, ret_val) + -- wf_catch: `%`(catch) + -- if (ret_val = $free_catch(catch)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 +relation fun_shift_labelidxs: `%%`(labelidx*, labelidx*) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_1{`labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([`%`_labelidx(0)] ++ labelidx'#1*{labelidx'#1 <- `labelidx'*`}, var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_2{labelidx : uN, `labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([labelidx] ++ labelidx'#2*{labelidx'#2 <- `labelidx'*`}, [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation fun_free_instr: `%%`(instr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_0: + `%%`(NOP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_1: + `%%`(UNREACHABLE_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_2: + `%%`(DROP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_3{`valtype*?` : valtype*?, `var_1*?` : free*?, `var_0?` : free?}: + `%%`(SELECT_instr(valtype#505*{valtype#505 <- `valtype*#1`}?{`valtype*#1` <- `valtype*?`}), $free_opt(var_0?{var_0 <- `var_0?`})) + -- (fun_free_valtype: `%%`(valtype, var_1))*{var_1 <- `var_1*`, valtype <- `valtype*`}?{`var_1*` <- `var_1*?`, `valtype*` <- `valtype*?`} + -- if ((`var_1*?` = ?()) <=> (`valtype*?` = ?())) + -- (if (|`var_1*`| = |`valtype*`|))?{`var_1*` <- `var_1*?`, `valtype*` <- `valtype*?`} + -- (fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0))?{`var_1*` <- `var_1*?`, var_0 <- `var_0?`} + -- if ((`var_1*?` = ?()) <=> (`var_0?` = ?())) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_4{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(BLOCK_instr(blocktype, instr#1*{instr#1 <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_5{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(LOOP_instr(blocktype, instr#2*{instr#2 <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_6{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, var_2 : free, var_1 : free, var_0 : free}: + `%%`(`IF%%ELSE%`_instr(blocktype, instr_1#1*{instr_1#1 <- `instr_1*`}, instr_2#1*{instr_2#1 <- `instr_2*`}), var_0 +++ var_1 +++ var_2) + -- fun_free_block: `%%`(instr_2*{instr_2 <- `instr_2*`}, var_2) + -- fun_free_block: `%%`(instr_1*{instr_1 <- `instr_1*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_7{labelidx : uN}: + `%%`(BR_instr(labelidx), $free_labelidx(labelidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_8{labelidx : uN}: + `%%`(BR_IF_instr(labelidx), $free_labelidx(labelidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_9{`labelidx*` : labelidx*, labelidx' : uN, var_0 : free}: + `%%`(BR_TABLE_instr(labelidx#1*{labelidx#1 <- `labelidx*`}, labelidx'), var_0 +++ $free_labelidx(labelidx')) + -- fun_free_list: `%%`($free_labelidx(labelidx)*{labelidx <- `labelidx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_10{labelidx : uN}: + `%%`(BR_ON_NULL_instr(labelidx), $free_labelidx(labelidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_11{labelidx : uN}: + `%%`(BR_ON_NON_NULL_instr(labelidx), $free_labelidx(labelidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_12{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2), $free_labelidx(labelidx) +++ var_0 +++ var_1) + -- fun_free_reftype: `%%`(reftype_2, var_1) + -- fun_free_reftype: `%%`(reftype_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_13{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2), $free_labelidx(labelidx) +++ var_0 +++ var_1) + -- fun_free_reftype: `%%`(reftype_2, var_1) + -- fun_free_reftype: `%%`(reftype_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_14{funcidx : uN}: + `%%`(CALL_instr(funcidx), $free_funcidx(funcidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_15{typeuse : typeuse, var_0 : free}: + `%%`(CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_16{tableidx : uN, typeuse : typeuse, var_0 : free}: + `%%`(CALL_INDIRECT_instr(tableidx, typeuse), $free_tableidx(tableidx) +++ var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_17: + `%%`(RETURN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_18{funcidx : uN}: + `%%`(RETURN_CALL_instr(funcidx), $free_funcidx(funcidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_19{typeuse : typeuse, var_0 : free}: + `%%`(RETURN_CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_20{tableidx : uN, typeuse : typeuse, var_0 : free}: + `%%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse), $free_tableidx(tableidx) +++ var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_21{tagidx : uN}: + `%%`(THROW_instr(tagidx), $free_tagidx(tagidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_22: + `%%`(THROW_REF_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_23{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*, `var_3*` : free*, var_2 : free, var_1 : free, var_0 : free}: + `%%`(TRY_TABLE_instr(blocktype, `%`_list(catch#1*{catch#1 <- `catch*`}), instr#3*{instr#3 <- `instr*`}), var_0 +++ var_1 +++ var_2) + -- (fun_free_instr: `%%`(instr, var_3))*{var_3 <- `var_3*`, instr <- `instr*`} + -- if (|`var_3*`| = |`instr*`|) + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- fun_free_list: `%%`($free_catch(catch)*{catch <- `catch*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_24{numtype : numtype, numlit : num_}: + `%%`(CONST_instr(numtype, numlit), $free_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_25{numtype : numtype, unop : unop_}: + `%%`(UNOP_instr(numtype, unop), $free_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_26{numtype : numtype, binop : binop_}: + `%%`(BINOP_instr(numtype, binop), $free_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_27{numtype : numtype, testop : testop_}: + `%%`(TESTOP_instr(numtype, testop), $free_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_28{numtype : numtype, relop : relop_}: + `%%`(RELOP_instr(numtype, relop), $free_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_29{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__}: + `%%`(CVTOP_instr(numtype_1, numtype_2, cvtop), $free_numtype(numtype_1) +++ $free_numtype(numtype_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_30{vectype : vectype, veclit : uN}: + `%%`(VCONST_instr(vectype, veclit), $free_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_31{vectype : vectype, vvunop : vvunop}: + `%%`(VVUNOP_instr(vectype, vvunop), $free_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_32{vectype : vectype, vvbinop : vvbinop}: + `%%`(VVBINOP_instr(vectype, vvbinop), $free_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_33{vectype : vectype, vvternop : vvternop}: + `%%`(VVTERNOP_instr(vectype, vvternop), $free_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_34{vectype : vectype, vvtestop : vvtestop}: + `%%`(VVTESTOP_instr(vectype, vvtestop), $free_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_35{shape : shape, vunop : vunop_}: + `%%`(VUNOP_instr(shape, vunop), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_36{shape : shape, vbinop : vbinop_}: + `%%`(VBINOP_instr(shape, vbinop), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_37{shape : shape, vternop : vternop_}: + `%%`(VTERNOP_instr(shape, vternop), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_38{shape : shape, vtestop : vtestop_}: + `%%`(VTESTOP_instr(shape, vtestop), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_39{shape : shape, vrelop : vrelop_}: + `%%`(VRELOP_instr(shape, vrelop), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_40{ishape : ishape, vshiftop : vshiftop_}: + `%%`(VSHIFTOP_instr(ishape, vshiftop), $free_shape($proj_ishape_0(ishape).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_41{ishape : ishape}: + `%%`(VBITMASK_instr(ishape), $free_shape($proj_ishape_0(ishape).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_42{bshape : bshape, vswizzlop : vswizzlop_}: + `%%`(VSWIZZLOP_instr(bshape, vswizzlop), $free_shape($proj_bshape_0(bshape).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_43{bshape : bshape, `laneidx*` : laneidx*}: + `%%`(VSHUFFLE_instr(bshape, laneidx#1*{laneidx#1 <- `laneidx*`}), $free_shape($proj_bshape_0(bshape).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_44{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__}: + `%%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop), $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_45{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__}: + `%%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop), $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_46{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__}: + `%%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop), $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_47{ishape_1 : ishape, ishape_2 : ishape, sx : sx}: + `%%`(VNARROW_instr(ishape_1, ishape_2, sx), $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_48{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__}: + `%%`(VCVTOP_instr(shape_1, shape_2, vcvtop), $free_shape(shape_1) +++ $free_shape(shape_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_49{shape : shape}: + `%%`(VSPLAT_instr(shape), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_50{shape : shape, `sx?` : sx?, laneidx : uN}: + `%%`(VEXTRACT_LANE_instr(shape, sx#45969?{sx#45969 <- `sx?`}, laneidx), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_51{shape : shape, laneidx : uN}: + `%%`(VREPLACE_LANE_instr(shape, laneidx), $free_shape(shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_52{heaptype : heaptype, var_0 : free}: + `%%`(`REF.NULL`_instr(heaptype), var_0) + -- fun_free_heaptype: `%%`(heaptype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_53: + `%%`(`REF.IS_NULL`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_54: + `%%`(`REF.AS_NON_NULL`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_55: + `%%`(`REF.EQ`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_56{reftype : reftype, var_0 : free}: + `%%`(`REF.TEST`_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_57{reftype : reftype, var_0 : free}: + `%%`(`REF.CAST`_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_58{funcidx : uN}: + `%%`(`REF.FUNC`_instr(funcidx), $free_funcidx(funcidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_59: + `%%`(`REF.I31`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_60{sx : sx}: + `%%`(`I31.GET`_instr(sx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_61{typeidx : uN}: + `%%`(`STRUCT.NEW`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_62{typeidx : uN}: + `%%`(`STRUCT.NEW_DEFAULT`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_63{`sx?` : sx?, typeidx : uN, u32 : uN}: + `%%`(`STRUCT.GET`_instr(sx#45970?{sx#45970 <- `sx?`}, typeidx, u32), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_64{typeidx : uN, u32 : uN}: + `%%`(`STRUCT.SET`_instr(typeidx, u32), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_65{typeidx : uN}: + `%%`(`ARRAY.NEW`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_66{typeidx : uN}: + `%%`(`ARRAY.NEW_DEFAULT`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_67{typeidx : uN, u32 : uN}: + `%%`(`ARRAY.NEW_FIXED`_instr(typeidx, u32), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_68{typeidx : uN, dataidx : uN}: + `%%`(`ARRAY.NEW_DATA`_instr(typeidx, dataidx), $free_typeidx(typeidx) +++ $free_dataidx(dataidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_69{typeidx : uN, elemidx : uN}: + `%%`(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx), $free_typeidx(typeidx) +++ $free_elemidx(elemidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_70{`sx?` : sx?, typeidx : uN}: + `%%`(`ARRAY.GET`_instr(sx#45971?{sx#45971 <- `sx?`}, typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_71{typeidx : uN}: + `%%`(`ARRAY.SET`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_72: + `%%`(`ARRAY.LEN`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_73{typeidx : uN}: + `%%`(`ARRAY.FILL`_instr(typeidx), $free_typeidx(typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_74{typeidx_1 : uN, typeidx_2 : uN}: + `%%`(`ARRAY.COPY`_instr(typeidx_1, typeidx_2), $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_75{typeidx : uN, dataidx : uN}: + `%%`(`ARRAY.INIT_DATA`_instr(typeidx, dataidx), $free_typeidx(typeidx) +++ $free_dataidx(dataidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_76{typeidx : uN, elemidx : uN}: + `%%`(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx), $free_typeidx(typeidx) +++ $free_elemidx(elemidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_77: + `%%`(`EXTERN.CONVERT_ANY`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_78: + `%%`(`ANY.CONVERT_EXTERN`_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_79{localidx : uN}: + `%%`(`LOCAL.GET`_instr(localidx), $free_localidx(localidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_80{localidx : uN}: + `%%`(`LOCAL.SET`_instr(localidx), $free_localidx(localidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_81{localidx : uN}: + `%%`(`LOCAL.TEE`_instr(localidx), $free_localidx(localidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_82{globalidx : uN}: + `%%`(`GLOBAL.GET`_instr(globalidx), $free_globalidx(globalidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_83{globalidx : uN}: + `%%`(`GLOBAL.SET`_instr(globalidx), $free_globalidx(globalidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_84{tableidx : uN}: + `%%`(`TABLE.GET`_instr(tableidx), $free_tableidx(tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_85{tableidx : uN}: + `%%`(`TABLE.SET`_instr(tableidx), $free_tableidx(tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_86{tableidx : uN}: + `%%`(`TABLE.SIZE`_instr(tableidx), $free_tableidx(tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_87{tableidx : uN}: + `%%`(`TABLE.GROW`_instr(tableidx), $free_tableidx(tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_88{tableidx : uN}: + `%%`(`TABLE.FILL`_instr(tableidx), $free_tableidx(tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_89{tableidx_1 : uN, tableidx_2 : uN}: + `%%`(`TABLE.COPY`_instr(tableidx_1, tableidx_2), $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_90{tableidx : uN, elemidx : uN}: + `%%`(`TABLE.INIT`_instr(tableidx, elemidx), $free_tableidx(tableidx) +++ $free_elemidx(elemidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_91{elemidx : uN}: + `%%`(`ELEM.DROP`_instr(elemidx), $free_elemidx(elemidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_92{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg}: + `%%`(LOAD_instr(numtype, loadop#1?{loadop#1 <- `loadop?`}, memidx, memarg), $free_numtype(numtype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_93{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg}: + `%%`(STORE_instr(numtype, storeop#1?{storeop#1 <- `storeop?`}, memidx, memarg), $free_numtype(numtype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_94{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg}: + `%%`(VLOAD_instr(vectype, vloadop#1?{vloadop#1 <- `vloadop?`}, memidx, memarg), $free_vectype(vectype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_95{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}: + `%%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx), $free_vectype(vectype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_96{vectype : vectype, memidx : uN, memarg : memarg}: + `%%`(VSTORE_instr(vectype, memidx, memarg), $free_vectype(vectype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_97{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}: + `%%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx), $free_vectype(vectype) +++ $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_98{memidx : uN}: + `%%`(`MEMORY.SIZE`_instr(memidx), $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_99{memidx : uN}: + `%%`(`MEMORY.GROW`_instr(memidx), $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_100{memidx : uN}: + `%%`(`MEMORY.FILL`_instr(memidx), $free_memidx(memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_101{memidx_1 : uN, memidx_2 : uN}: + `%%`(`MEMORY.COPY`_instr(memidx_1, memidx_2), $free_memidx(memidx_1) +++ $free_memidx(memidx_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_102{memidx : uN, dataidx : uN}: + `%%`(`MEMORY.INIT`_instr(memidx, dataidx), $free_memidx(memidx) +++ $free_dataidx(dataidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_103{dataidx : uN}: + `%%`(`DATA.DROP`_instr(dataidx), $free_dataidx(dataidx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation fun_free_block: `%%`(instr*, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule fun_free_block_case_0{`instr*` : instr*, `var_5*` : free*, `var_4*` : free*, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : labelidx*}: + `%%`(instr#4*{instr#4 <- `instr*`}, free[LABELS_free = var_0]) + -- let{free : free} free = var_1 + -- wf_free: `%`(var_3) + -- (wf_free: `%`(var_5))*{var_5 <- `var_5*`} + -- (fun_free_instr: `%%`(instr#7, var_5))*{var_5 <- `var_5*`, instr#7 <- `instr*`} + -- if (|`var_5*`| = |`instr*`|) + -- (fun_free_instr: `%%`(instr#6, var_4))*{var_4 <- `var_4*`, instr#6 <- `instr*`} + -- if (|`var_4*`| = |`instr*`|) + -- fun_free_list: `%%`(var_4*{var_4 <- `var_4*`}, var_3) + -- (fun_free_instr: `%%`(instr#5, var_2))*{var_2 <- `var_2*`, instr#5 <- `instr*`} + -- if (|`var_2*`| = |`instr*`|) + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_shift_labelidxs: `%%`(free.LABELS_free, var_0) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation free_instr_is_wf: `%%`(instr : instr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule free_instr_is_wf_0{instr : instr, ret_val : free, var_0 : free}: + `%%`(instr, ret_val) + -- wf_instr: `%`(instr) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_instr: `%%`(instr, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation free_block_is_wf: `%%`(var_0 : instr*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule free_block_is_wf_0{var_0 : instr*, ret_val : free, var_1 : free}: + `%%`(var_0, ret_val) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_free: `%`(ret_val) + -- fun_free_block: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_expr: `%%`(expr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_expr_case_0{`instr*` : instr*, `var_1*` : free*, var_0 : free}: + `%%`(instr#8*{instr#8 <- `instr*`}, var_0) + -- (fun_free_instr: `%%`(instr, var_1))*{var_1 <- `var_1*`, instr <- `instr*`} + -- if (|`var_1*`| = |`instr*`|) + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_expr_is_wf: `%%`(expr : expr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_expr_is_wf_0{expr : expr, ret_val : free, var_0 : free}: + `%%`(expr, ret_val) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_expr: `%%`(expr, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elemmode = + | ACTIVE(tableidx : tableidx, expr : expr) + | PASSIVE + | DECLARE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elemmode: `%`(elemmode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_0{tableidx : tableidx, expr : expr}: + `%`(ACTIVE_elemmode(tableidx, expr)) + -- wf_uN: `%%`(32, tableidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_1: + `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_2: + `%`(DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax datamode = + | ACTIVE(memidx : memidx, expr : expr) + | PASSIVE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_datamode: `%`(datamode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_0{memidx : memidx, expr : expr}: + `%`(ACTIVE_datamode(memidx, expr)) + -- wf_uN: `%%`(32, memidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_1: + `%`(PASSIVE_datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax type = + | TYPE(rectype : rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax tag = + | TAG(tagtype : tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_tag: `%`(tag) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule tag_case_0{tagtype : tagtype}: + `%`(TAG_tag(tagtype)) + -- wf_typeuse: `%`(tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax global = + | GLOBAL(globaltype : globaltype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_global: `%`(global) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule global_case_0{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax mem = + | MEMORY(memtype : memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_mem: `%`(mem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule mem_case_0{memtype : memtype}: + `%`(MEMORY_mem(memtype)) + -- wf_memtype: `%`(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax table = + | TABLE(tabletype : tabletype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_table: `%`(table) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule table_case_0{tabletype : tabletype, expr : expr}: + `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax data = + | DATA(`byte*` : byte*, datamode : datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_data: `%`(data) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule data_case_0{`byte*` : byte*, datamode : datamode}: + `%`(DATA_data(`byte*`, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax local = + | LOCAL(valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_local: `%`(local) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule local_case_0{valtype : valtype}: + `%`(LOCAL_local(valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax func = + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_func: `%`(func) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule func_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_func(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elem = + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elem: `%`(elem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_elem(reftype, `expr*`, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax start = + | START(funcidx : funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_start: `%`(start) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule start_case_0{funcidx : funcidx}: + `%`(START_start(funcidx)) + -- wf_uN: `%%`(32, funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax import = + | IMPORT(name : name, name : name, externtype : externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_import: `%`(import) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule import_case_0{name : name, name_0 : name, externtype : externtype}: + `%`(IMPORT_import(name, name_0, externtype)) + -- wf_name: `%`(name) + -- wf_name: `%`(name_0) + -- wf_externtype: `%`(externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax export = + | EXPORT(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_export: `%`(export) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule export_case_0{name : name, externidx : externidx}: + `%`(EXPORT_export(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax module = + | MODULE(list(syntax type), list(syntax import), list(syntax tag), list(syntax global), list(syntax mem), list(syntax table), list(syntax func), list(syntax data), list(syntax elem), `start?` : start?, list(syntax export)) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_module: `%`(module) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule module_case_0{var_0 : list(syntax type), var_1 : list(syntax import), var_2 : list(syntax tag), var_3 : list(syntax global), var_4 : list(syntax mem), var_5 : list(syntax table), var_6 : list(syntax func), var_7 : list(syntax data), var_8 : list(syntax elem), `start?` : start?, var_9 : list(syntax export)}: + `%`(MODULE_module(var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, `start?`, var_9)) + -- (wf_start: `%`(start))?{start <- `start?`} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_type: `%%`(type, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_type_case_0{rectype : rectype, var_0 : free}: + `%%`(TYPE_type(rectype), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_type_is_wf: `%%`(type : type, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_type_is_wf_0{type : type, ret_val : free, var_0 : free}: + `%%`(type, ret_val) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_type: `%%`(type, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_tag: `%%`(tag, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_tag_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_tag(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_tag_is_wf: `%%`(tag : tag, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_tag_is_wf_0{tag : tag, ret_val : free, var_0 : free}: + `%%`(tag, ret_val) + -- wf_tag: `%`(tag) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_tag: `%%`(tag, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_global: `%%`(global, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_global_case_0{globaltype : globaltype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(GLOBAL_global(globaltype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_globaltype: `%%`(globaltype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_global_is_wf: `%%`(global : global, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_global_is_wf_0{global : global, ret_val : free, var_0 : free}: + `%%`(global, ret_val) + -- wf_global: `%`(global) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_global: `%%`(global, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_mem(mem : mem) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_mem_is_wf: `%%`(mem : mem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_mem_is_wf_0{mem : mem, ret_val : free}: + `%%`(mem, ret_val) + -- wf_mem: `%`(mem) + -- if (ret_val = $free_mem(mem)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_table: `%%`(table, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_table_case_0{tabletype : tabletype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(TABLE_table(tabletype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_tabletype: `%%`(tabletype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_table_is_wf: `%%`(table : table, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_table_is_wf_0{table : table, ret_val : free, var_0 : free}: + `%%`(table, ret_val) + -- wf_table: `%`(table) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_table: `%%`(table, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_local: `%%`(local, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_local_case_0{t : valtype, var_0 : free}: + `%%`(LOCAL_local(t), var_0) + -- fun_free_valtype: `%%`(t, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_local_is_wf: `%%`(local : local, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_local_is_wf_0{local : local, ret_val : free, var_0 : free}: + `%%`(local, ret_val) + -- wf_local: `%`(local) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_local: `%%`(local, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_func: `%%`(func, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_func_case_0{typeidx : uN, `local*` : local*, expr : instr*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(FUNC_func(typeidx, local#1*{local#1 <- `local*`}, expr), $free_typeidx(typeidx) +++ var_0 +++ var_2[LOCALS_free = []]) + -- fun_free_block: `%%`(expr, var_2) + -- (fun_free_local: `%%`(local, var_1))*{var_1 <- `var_1*`, local <- `local*`} + -- if (|`var_1*`| = |`local*`|) + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_func_is_wf: `%%`(func : func, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_func_is_wf_0{func : func, ret_val : free, var_0 : free}: + `%%`(func, ret_val) + -- wf_func: `%`(func) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_func: `%%`(func, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_datamode: `%%`(datamode, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_datamode_case_0{memidx : uN, expr : instr*, var_0 : free}: + `%%`(ACTIVE_datamode(memidx, expr), $free_memidx(memidx) +++ var_0) + -- fun_free_expr: `%%`(expr, var_0) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_datamode_case_1: + `%%`(PASSIVE_datamode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_datamode_is_wf: `%%`(datamode : datamode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_datamode_is_wf_0{datamode : datamode, ret_val : free, var_0 : free}: + `%%`(datamode, ret_val) + -- wf_datamode: `%`(datamode) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_datamode: `%%`(datamode, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_data: `%%`(data, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_data_case_0{`byte*` : byte*, datamode : datamode, var_0 : free}: + `%%`(DATA_data(byte#1*{byte#1 <- `byte*`}, datamode), var_0) + -- fun_free_datamode: `%%`(datamode, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_data_is_wf: `%%`(data : data, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_data_is_wf_0{data : data, ret_val : free, var_0 : free}: + `%%`(data, ret_val) + -- wf_data: `%`(data) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_data: `%%`(data, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_elemmode: `%%`(elemmode, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_0{tableidx : uN, expr : instr*, var_0 : free}: + `%%`(ACTIVE_elemmode(tableidx, expr), $free_tableidx(tableidx) +++ var_0) + -- fun_free_expr: `%%`(expr, var_0) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_1: + `%%`(PASSIVE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_2: + `%%`(DECLARE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elemmode_is_wf: `%%`(elemmode : elemmode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elemmode_is_wf_0{elemmode : elemmode, ret_val : free, var_0 : free}: + `%%`(elemmode, ret_val) + -- wf_elemmode: `%`(elemmode) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_elemmode: `%%`(elemmode, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_elem: `%%`(elem, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(ELEM_elem(reftype, expr#358*{expr#358 <- `expr*`}, elemmode), var_0 +++ var_1 +++ var_3) + -- fun_free_elemmode: `%%`(elemmode, var_3) + -- (fun_free_expr: `%%`(expr, var_2))*{var_2 <- `var_2*`, expr <- `expr*`} + -- if (|`var_2*`| = |`expr*`|) + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elem_is_wf: `%%`(elem : elem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elem_is_wf_0{elem : elem, ret_val : free, var_0 : free}: + `%%`(elem, ret_val) + -- wf_elem: `%`(elem) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_elem: `%%`(elem, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_start(start : start) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_start_is_wf: `%%`(start : start, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_start_is_wf_0{start : start, ret_val : free}: + `%%`(start, ret_val) + -- wf_start: `%`(start) + -- if (ret_val = $free_start(start)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_import: `%%`(import, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_import_case_0{name_1 : name, name_2 : name, externtype : externtype, var_0 : free}: + `%%`(IMPORT_import(name_1, name_2, externtype), var_0) + -- fun_free_externtype: `%%`(externtype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_import_is_wf: `%%`(import : import, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_import_is_wf_0{import : import, ret_val : free, var_0 : free}: + `%%`(import, ret_val) + -- wf_import: `%`(import) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_import: `%%`(import, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_export(export : export) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_export_is_wf: `%%`(export : export, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_export_is_wf_0{export : export, ret_val : free}: + `%%`(export, ret_val) + -- wf_export: `%`(export) + -- if (ret_val = $free_export(export)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_module: `%%`(module, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_module_case_0{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, var_17 : free, `var_16*` : free*, var_15 : free, `var_14*` : free*, var_13 : free, `var_12*` : free*, var_11 : free, `var_10*` : free*, var_9 : free, `var_8*` : free*, var_7 : free, var_6 : free, `var_5*` : free*, var_4 : free, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(MODULE_module(`%`_list(type#1*{type#1 <- `type*`}), `%`_list(import#1*{import#1 <- `import*`}), `%`_list(tag#1*{tag#1 <- `tag*`}), `%`_list(global#1*{global#1 <- `global*`}), `%`_list(mem#1*{mem#1 <- `mem*`}), `%`_list(table#1*{table#1 <- `table*`}), `%`_list(func#1*{func#1 <- `func*`}), `%`_list(data#1*{data#1 <- `data*`}), `%`_list(elem#1*{elem#1 <- `elem*`}), start#1?{start#1 <- `start?`}, `%`_list(export#1*{export#1 <- `export*`})), var_0 +++ var_2 +++ var_4 +++ var_6 +++ var_7 +++ var_9 +++ var_11 +++ var_13 +++ $free_opt($free_start(start)?{start <- `start?`}) +++ var_15 +++ var_17) + -- fun_free_list: `%%`($free_export(export)*{export <- `export*`}, var_17) + -- (fun_free_import: `%%`(import, var_16))*{var_16 <- `var_16*`, import <- `import*`} + -- if (|`var_16*`| = |`import*`|) + -- fun_free_list: `%%`(var_16*{var_16 <- `var_16*`}, var_15) + -- (fun_free_elem: `%%`(elem, var_14))*{var_14 <- `var_14*`, elem <- `elem*`} + -- if (|`var_14*`| = |`elem*`|) + -- fun_free_list: `%%`(var_14*{var_14 <- `var_14*`}, var_13) + -- (fun_free_data: `%%`(data, var_12))*{var_12 <- `var_12*`, data <- `data*`} + -- if (|`var_12*`| = |`data*`|) + -- fun_free_list: `%%`(var_12*{var_12 <- `var_12*`}, var_11) + -- (fun_free_func: `%%`(func, var_10))*{var_10 <- `var_10*`, func <- `func*`} + -- if (|`var_10*`| = |`func*`|) + -- fun_free_list: `%%`(var_10*{var_10 <- `var_10*`}, var_9) + -- (fun_free_table: `%%`(table, var_8))*{var_8 <- `var_8*`, table <- `table*`} + -- if (|`var_8*`| = |`table*`|) + -- fun_free_list: `%%`(var_8*{var_8 <- `var_8*`}, var_7) + -- fun_free_list: `%%`($free_mem(mem)*{mem <- `mem*`}, var_6) + -- (fun_free_global: `%%`(global, var_5))*{var_5 <- `var_5*`, global <- `global*`} + -- if (|`var_5*`| = |`global*`|) + -- fun_free_list: `%%`(var_5*{var_5 <- `var_5*`}, var_4) + -- (fun_free_tag: `%%`(tag, var_3))*{var_3 <- `var_3*`, tag <- `tag*`} + -- if (|`var_3*`| = |`tag*`|) + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- (fun_free_type: `%%`(type, var_1))*{var_1 <- `var_1*`, type <- `type*`} + -- if (|`var_1*`| = |`type*`|) + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_module_is_wf: `%%`(module : module, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_module_is_wf_0{module : module, ret_val : free, var_0 : free}: + `%%`(module, ret_val) + -- wf_module: `%`(module) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_module: `%%`(module, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_funcidx_module: `%%`(module, funcidx*) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_funcidx_module_case_0{module : module, var_0 : free}: + `%%`(module, var_0.FUNCS_free) + -- fun_free_module: `%%`(module, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_dataidx_funcs: `%%`(func*, dataidx*) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_dataidx_funcs_case_0{`func*` : func*, `var_1*` : free*, var_0 : free}: + `%%`(func#2*{func#2 <- `func*`}, var_0.DATAS_free) + -- (fun_free_func: `%%`(func, var_1))*{var_1 <- `var_1*`, func <- `func*`} + -- if (|`var_1*`| = |`func*`|) + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax init = + | SET + | UNSET + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax localtype = + | `%%`(init : init, valtype : valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_localtype: `%`(localtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule localtype_case_0{init : init, valtype : valtype}: + `%`(`%%`_localtype(init, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax instrtype = + | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : resulttype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_instrtype: `%`(instrtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule instrtype_case_0{resulttype : resulttype, `localidx*` : localidx*, resulttype_0 : resulttype}: + `%`(`%->_%%`_instrtype(resulttype, `localidx*`, resulttype_0)) + -- (wf_uN: `%%`(32, localidx))*{localidx <- `localidx*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax context = +{ + TYPES deftype*, + TAGS tagtype*, + GLOBALS globaltype*, + MEMS memtype*, + TABLES tabletype*, + FUNCS deftype*, + DATAS datatype*, + ELEMS elemtype*, + LOCALS localtype*, + LABELS resulttype*, + RETURN resulttype?, + REFS funcidx*, + RECS subtype* +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_context: `%`(context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule context_case_{var_0 : deftype*, var_1 : tagtype*, var_2 : globaltype*, var_3 : memtype*, var_4 : tabletype*, var_5 : deftype*, var_6 : datatype*, var_7 : elemtype*, var_8 : localtype*, var_9 : resulttype*, var_10 : resulttype?, var_11 : funcidx*, var_12 : subtype*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, RETURN var_10, REFS var_11, RECS var_12}) + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- (wf_globaltype: `%`(var_2))*{var_2 <- var_2} + -- (wf_memtype: `%`(var_3))*{var_3 <- var_3} + -- (wf_tabletype: `%`(var_4))*{var_4 <- var_4} + -- (wf_reftype: `%`(var_7))*{var_7 <- var_7} + -- (wf_localtype: `%`(var_8))*{var_8 <- var_8} + -- (wf_uN: `%%`(32, var_11))*{var_11 <- var_11} + -- (wf_subtype: `%`(var_12))*{var_12 <- var_12} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_with_locals_before_fun_with_locals_case_2: `%%%`(context, localidx*, localtype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_with_locals_case_1{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, var_0 : context?}: + `%%%`(C, [x_1] ++ x#1*{x#1 <- `x*`}, [lct_1] ++ lct#1*{lct#1 <- `lct*`}) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_with_locals_case_0{C : context}: + `%%%`(C, [], []) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation fun_with_locals: `%%%%`(context, localidx*, localtype*, context?) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_0{C : context}: + `%%%%`(C, [], [], ?(C)) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_1{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, var_0 : context?}: + `%%%%`(C, [x_1] ++ x#1*{x#1 <- `x*`}, [lct_1] ++ lct#1*{lct#1 <- `lct*`}, var_0) + -- fun_with_locals: `%%%%`(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}, var_0) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_2{x0 : context, x1 : localidx*, x2 : localtype*}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_with_locals_before_fun_with_locals_case_2: `%%%`(x0, x1, x2) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation with_locals_is_wf: `%%%%`(context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule with_locals_is_wf_0{context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context, var_2 : context?}: + `%%%%`(context, var_0, var_1, ret_val) + -- wf_context: `%`(context) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_localtype: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !(var_2)) + -- if (var_2 =/= ?()) + -- wf_context: `%`(ret_val) + -- fun_with_locals: `%%%%`(context, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 +relation fun_clos_deftypes: `%%`(deftype*, deftype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 + rule fun_clos_deftypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 + rule fun_clos_deftypes_case_1{`dt*` : deftype*, dt_n : deftype, var_1 : deftype*, var_0 : deftype}: + `%%`(dt#2*{dt#2 <- `dt*`} ++ [dt_n], dt'*{dt' <- `dt'*`} ++ [var_0]) + -- let{`dt'*` : deftype*} dt'#1*{dt'#1 <- `dt'*`} = var_1 + -- fun_clos_deftypes: `%%`(dt#3*{dt#3 <- `dt*`}, var_1) + -- fun_subst_all_deftype: `%%%`(dt_n, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_valtype: `%%%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_valtype_case_0{C : context, t : valtype, var_1 : deftype*, var_0 : valtype}: + `%%%`(C, t, var_0) + -- let{`dt*` : deftype*} dt#4*{dt#4 <- `dt*`} = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_valtype_is_wf: `%%%`(context : context, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_valtype_is_wf_0{context : context, valtype : valtype, ret_val : valtype, var_0 : valtype}: + `%%%`(context, valtype, ret_val) + -- wf_context: `%`(context) + -- wf_valtype: `%`(valtype) + -- if (ret_val = var_0) + -- wf_valtype: `%`(ret_val) + -- fun_clos_valtype: `%%%`(context, valtype, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_deftype: `%%%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_deftype_case_0{C : context, dt : deftype, var_1 : deftype*, var_0 : deftype}: + `%%%`(C, dt, var_0) + -- let{`dt'*` : deftype*} dt'#2*{dt'#2 <- `dt'*`} = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_deftype: `%%%`(dt, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_tagtype: `%%%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_tagtype_case_0{C : context, jt : typeuse, var_1 : deftype*, var_0 : tagtype}: + `%%%`(C, jt, var_0) + -- let{`dt*` : deftype*} dt#5*{dt#5 <- `dt*`} = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_tagtype: `%%%`(jt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_externtype: `%%%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_externtype_case_0{C : context, xt : externtype, var_1 : deftype*, var_0 : externtype}: + `%%%`(C, xt, var_0) + -- let{`dt*` : deftype*} dt#6*{dt#6 <- `dt*`} = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_externtype: `%%%`(xt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_externtype_is_wf: `%%%`(context : context, externtype : externtype, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_externtype_is_wf_0{context : context, externtype : externtype, ret_val : externtype, var_0 : externtype}: + `%%%`(context, externtype, ret_val) + -- wf_context: `%`(context) + -- wf_externtype: `%`(externtype) + -- if (ret_val = var_0) + -- wf_externtype: `%`(ret_val) + -- fun_clos_externtype: `%%%`(context, externtype, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_moduletype: `%%%`(context, moduletype, moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_moduletype_case_0{C : context, mmt : moduletype, var_1 : deftype*, var_0 : moduletype}: + `%%%`(C, mmt, var_0) + -- let{`dt*` : deftype*} dt#7*{dt#7 <- `dt*`} = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_moduletype: `%%%`(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_moduletype_is_wf: `%%%`(context : context, moduletype : moduletype, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_moduletype_is_wf_0{context : context, moduletype : moduletype, ret_val : moduletype, var_0 : moduletype}: + `%%%`(context, moduletype, ret_val) + -- wf_context: `%`(context) + -- wf_moduletype: `%`(moduletype) + -- if (ret_val = var_0) + -- wf_moduletype: `%`(ret_val) + -- fun_clos_moduletype: `%%%`(context, moduletype, var_0) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Numtype_ok: `%|-%:OK`(context, numtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, numtype : numtype}: + `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Vectype_ok: `%|-%:OK`(context, vectype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, vectype : vectype}: + `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypenat = + | OK(nat) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Packtype_ok: `%|-%:OK`(context, packtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, packtype : packtype}: + `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, packtype : packtype}: + `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, numtype : numtype}: + `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand: `%~~%`(deftype, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*, var_0 : subtype}: + `%~~%`(deftype, comptype) + -- if (var_0 = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- wf_subtype: `%`(var_0) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- fun_unrolldt: `%%`(deftype, var_0) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, vectype : vectype}: + `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $before(typeuse : typeuse, nat : nat) : bool + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{j : nat, i : nat}(REC_typeuse(j), i) = (j < i) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{typeuse : typeuse, i : nat}(typeuse, i) = true + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation fun_unrollht_: `%%%`(context, heaptype, subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht__case_0{rectype : rectype, n : n, C : context, var_0 : subtype}: + `%%%`(C, _DEF_heaptype(rectype, n), var_0) + -- fun_unrolldt: `%%`(_DEF_deftype(rectype, n), var_0) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht__case_1{C : context, typeidx : uN, var_0 : subtype}: + `%%%`(C, _IDX_heaptype(typeidx), var_0) + -- fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(typeidx).0], var_0) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht__case_2{C : context, i : nat}: + `%%%`(C, REC_heaptype(i), C.RECS_context[i]) + -- if (i < |C.RECS_context|) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation unrollht__is_wf: `%%%`(context : context, heaptype : heaptype, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule unrollht__is_wf_0{context : context, heaptype : heaptype, ret_val : subtype, var_0 : subtype}: + `%%%`(context, heaptype, ret_val) + -- wf_context: `%`(context) + -- wf_heaptype: `%`(heaptype) + -- if (ret_val = var_0) + -- wf_subtype: `%`(ret_val) + -- fun_unrollht_: `%%%`(context, heaptype, var_0) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 +relation Heaptype_ok: `%|-%:OK`(context, heaptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 + rule abs{C : context, absheaptype : absheaptype}: + `%|-%:OK`(C, $heaptype_absheaptype(absheaptype)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 + rule typeuse{C : context, typeuse : typeuse}: + `%|-%:OK`(C, $heaptype_typeuse(typeuse)) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 +relation Reftype_ok: `%|-%:OK`(context, reftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:30.1-32.37 + rule _{C : context, heaptype : heaptype}: + `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- Heaptype_ok: `%|-%:OK`(C, heaptype) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 +relation Valtype_ok: `%|-%:OK`(context, valtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:34.1-36.35 + rule num{C : context, numtype : numtype}: + `%|-%:OK`(C, $valtype_numtype(numtype)) + -- Numtype_ok: `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 + rule vec{C : context, vectype : vectype}: + `%|-%:OK`(C, $valtype_vectype(vectype)) + -- Vectype_ok: `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 + rule ref{C : context, reftype : reftype}: + `%|-%:OK`(C, $valtype_reftype(reftype)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 +relation Typeuse_ok: `%|-%:OK`(context, typeuse) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:106.1-108.30 + rule typeidx{C : context, typeidx : typeidx, dt : deftype}: + `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 + rule rec{C : context, i : n, st : subtype}: + `%|-%:OK`(C, REC_typeuse(i)) + -- if (C.RECS_context[i] = st) + -- if (i < |C.RECS_context|) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 + rule deftype{C : context, deftype : deftype}: + `%|-%:OK`(C, $typeuse_deftype(deftype)) + -- Deftype_ok: `%|-%:OK`(C, deftype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 +relation Resulttype_ok: `%|-%:OK`(context, resulttype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:60.1-62.32 + rule _{C : context, `t*` : valtype*}: + `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 +relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:130.1-132.43 + rule _{C : context, storagetype : storagetype}: + `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- Storagetype_ok: `%|-%:OK`(C, storagetype) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 +relation Storagetype_ok: `%|-%:OK`(context, storagetype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:122.1-124.35 + rule val{C : context, valtype : valtype}: + `%|-%:OK`(C, $storagetype_valtype(valtype)) + -- Valtype_ok: `%|-%:OK`(C, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 + rule pack{C : context, packtype : packtype}: + `%|-%:OK`(C, $storagetype_packtype(packtype)) + -- Packtype_ok: `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 +relation Comptype_ok: `%|-%:OK`(context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:135.1-137.42 + rule struct{C : context, `fieldtype*` : fieldtype*}: + `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 + rule array{C : context, fieldtype : fieldtype}: + `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 + rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 +relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:167.1-176.49 + rule _{C : context, `typeuse*` : typeuse*, comptype : comptype, i : nat, `comptype'*` : comptype*, `typeuse'**` : typeuse**, `var_0*` : subtype*}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype), OK_oktypenat(i)) + -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) + -- (Typeuse_ok: `%|-%:OK`(C, typeuse))*{typeuse <- `typeuse*`} + -- (if $before(typeuse, i))*{typeuse <- `typeuse*`} + -- (if (var_0 = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} + -- if (|`var_0*`| = |`comptype'*`|) + -- if (|`var_0*`| = |`typeuse'**`|) + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- wf_context: `%`(C) + -- (wf_subtype: `%`(var_0))*{var_0 <- `var_0*`} + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} + -- if (|`comptype'*`| = |`typeuse'**`|) + -- (fun_unrollht_: `%%%`(C, $heaptype_typeuse(typeuse), var_0))*{var_0 <- `var_0*`, typeuse <- `typeuse*`} + -- if (|`var_0*`| = |`typeuse*`|) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 +relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 + rule empty{C : context, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypenat(i)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypenat(i)) + -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) + -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypenat((i + 1))) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 +relation Deftype_ok: `%|-%:OK`(context, deftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:197.1-201.14 + rule _{C : context, rectype : rectype, i : n, n : n, `subtype*` : subtype*}: + `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}} +++ C, rectype, OK_oktypenat(0)) + -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) + -- if (i < n) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype^n{subtype <- `subtype*`}}) + -- if (n = |`subtype*`|) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 +relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:181.1-183.41 + rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: + `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} + -- if (|`ft_1*`| = |`ft_2*`|) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 + rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: + `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 + rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: + `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 +relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype, var_1 : deftype, var_0 : deftype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if (var_0 = var_1) + -- wf_context: `%`(C) + -- fun_clos_deftype: `%%%`(C, deftype_2, var_1) + -- fun_clos_deftype: `%%%`(C, deftype_1, var_0) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat, var_0 : subtype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if (var_0 = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) + -- if (i < |typeuse*{typeuse <- `typeuse*`}|) + -- wf_context: `%`(C) + -- wf_subtype: `%`(var_0) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- fun_unrolldt: `%%`(deftype_1, var_0) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 +relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 + rule refl{C : context, heaptype : heaptype}: + `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 + rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: + `%|-%<:%`(C, heaptype_1, heaptype_2) + -- Heaptype_ok: `%|-%:OK`(C, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 + rule `eq-any`{C : context}: + `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 + rule `i31-eq`{C : context}: + `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 + rule `struct-eq`{C : context}: + `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 + rule `array-eq`{C : context}: + `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 + rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, $heaptype_deftype(deftype), STRUCT_heaptype) + -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 + rule array{C : context, deftype : deftype, fieldtype : fieldtype}: + `%|-%<:%`(C, $heaptype_deftype(deftype), ARRAY_heaptype) + -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 + rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, $heaptype_deftype(deftype), FUNC_heaptype) + -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 + rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 + rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: + `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 + rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: + `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 + rule `rec-struct`{C : context, i : n, `final?` : final?, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) + -- if (i < |C.RECS_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 + rule `rec-array`{C : context, i : n, `final?` : final?, fieldtype : fieldtype}: + `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + -- if (i < |C.RECS_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 + rule `rec-func`{C : context, i : n, `final?` : final?, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (i < |C.RECS_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 + rule `rec-sub`{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: + `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[j])) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- if (i < |C.RECS_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- if (j < |typeuse*{typeuse <- `typeuse*`}|) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 + rule none{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NONE_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:86.1-89.25 + rule nofunc{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:91.1-94.25 + rule noexn{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:96.1-99.25 + rule noextern{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + -- if (heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 + rule bot{C : context, heaptype : heaptype}: + `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 +relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:105.1-107.37 + rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 + rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 +relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:114.1-116.46 + rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: + `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) + -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 + rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: + `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) + -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 + rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: + `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 + rule bot{C : context, valtype : valtype}: + `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 +relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-137.37 + rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + -- if (|`t_1*`| = |`t_2*`|) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 +relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:162.1-164.46 + rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 + rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: + `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) + -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 +relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:171.1-173.40 + rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 + rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Localtype_ok: `%|-%:OK`(context, localtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, init : init, t : valtype}: + `%|-%:OK`(C, `%%`_localtype(init, t)) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Instrtype_ok: `%|-%:OK`(context, instrtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} + -- if (|`lct*`| = |`x*`|) + -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand_use: `%~~_%%`(typeuse, context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule deftype{deftype : deftype, C : context, comptype : comptype}: + `%~~_%%`($typeuse_deftype(deftype), C, comptype) + -- Expand: `%~~%`(deftype, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: + `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidx = + | OK(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation wf_oktypeidx: `%`(oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule oktypeidx_case_0{typeidx : typeidx}: + `%`(OK_oktypeidx(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `comptype'*` : comptype*, `yy**` : typeuse**, `var_0*` : subtype*}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- if (|x*{x <- `x*`}| <= 1) + -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} + -- (if (var_0 = SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `yy*` <- `yy**`} + -- if (|`var_0*`| = |`comptype'*`|) + -- if (|`var_0*`| = |`yy**`|) + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + -- wf_context: `%`(C) + -- (wf_subtype: `%`(var_0))*{var_0 <- `var_0*`} + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`(SUB_subtype(?(), yy*{yy <- `yy*`}, comptype')))*{comptype' <- `comptype'*`, `yy*` <- `yy**`} + -- if (|`comptype'*`| = |`yy**`|) + -- (fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(x).0], var_0))*{var_0 <- `var_0*`, x <- `x*`} + -- if (|`var_0*`| = |`x*`|) + -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.126 +relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 + rule empty{C : context, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Limits_ok: `%|-%:%`(context, limits, nat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, n : n, `m?` : m?, k : nat}: + `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- if (n <= k) + -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tagtype_ok: `%|-%:OK`(context, tagtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, typeuse) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Globaltype_ok: `%|-%:OK`(context, globaltype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, t : valtype}: + `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Memtype_ok: `%|-%:OK`(context, memtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits}: + `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size($numtype_addrtype(addrtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tabletype_ok: `%|-%:OK`(context, tabletype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: + `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size($numtype_addrtype(addrtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Externtype_ok: `%|-%:OK`(context, externtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule tag{C : context, tagtype : tagtype}: + `%|-%:OK`(C, TAG_externtype(tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule global{C : context, globaltype : globaltype}: + `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mem{C : context, memtype : memtype}: + `%|-%:OK`(C, MEM_externtype(memtype)) + -- Memtype_ok: `%|-%:OK`(C, memtype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule table{C : context, tabletype : tabletype}: + `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: + `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} + -- if (|`t*`| = |`x*`|) + -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- (wf_uN: `%%`(32, iter))*{iter <- $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Limits_sub: `%|-%<:%`(context, limits, limits) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + -- if (n_1 >= n_2) + -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule eps{C : context, n_1 : n, n_2 : n}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) + -- if (n_1 >= n_2) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: + `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: + `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: + `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: + `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: + `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: + `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule valtype{C : context, `valtype?` : valtype?}: + `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Catch_ok: `%|-%:OK`(context, catch) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_catch(x, l)) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all_ref{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +def $default_(valtype : valtype) : val?? + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(I32_valtype) = ?(?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(I64_valtype) = ?(?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(F32_valtype) = ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(F64_valtype) = ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(V128_valtype) = ?(?(VCONST_val(V128_vectype, `%`_vec_(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(`REF.NULL_ADDR`_val)) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) + def $default_{x0 : valtype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation default__is_wf: `%%`(valtype : valtype, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule default__is_wf_0{valtype : valtype, ret_val : val?}: + `%%`(valtype, ret_val) + -- wf_valtype: `%`(valtype) + -- if (ret_val = !($default_(valtype))) + -- if ($default_(valtype) =/= ?()) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Defaultable: `|-%DEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%DEFAULTABLE`(t) + -- if (!($default_(t)) =/= ?()) + -- if ($default_(t) =/= ?()) + -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{n : n, m : m, at : addrtype, N : N}: + `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) + -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- if (m < (2 ^ $size($numtype_addrtype(at)))) + -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +def $is_packtype(storagetype : storagetype) : bool + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + def $is_packtype{zt : storagetype}(zt) = (zt =/= $storagetype_valtype($unpack(zt))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 +relation Instr_ok: `%|-%:%`(context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 + rule nop{C : context}: + `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 + rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 + rule drop{C : context, t : valtype}: + `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 + rule `select-expl`{C : context, t : valtype}: + `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 + rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Valtype_sub: `%|-%<:%`(C, t, t') + -- if ((t' = $valtype_numtype(numtype)) \/ (t' = $valtype_vectype(vectype))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 + rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 + rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 + rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 + rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 + rule br_if{C : context, l : labelidx, `t*` : valtype*}: + `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 + rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} + -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) + -- if ($proj_uN_0(l').0 < |C.LABELS_context|) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 + rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 + rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`($diffrt(rt_1, rt_2)) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 + rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 + rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 + rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: + `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(y).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 + rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 + rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 + rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 + rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(y).0 < |C.TYPES_context|) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 + rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 + rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 + rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 + rule `ref.null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.NULL`_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 + rule `ref.func`{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- if (x <- C.REFS_context) + -- if (|C.REFS_context| > 0) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.FUNC`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 + rule `ref.i31`{C : context}: + `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.I31`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 + rule `ref.is_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 + rule `ref.as_non_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 + rule `ref.eq`{C : context}: + `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 + rule `ref.test`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.TEST`_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 + rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.CAST`_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 + rule `i31.get`{C : context, sx : sx}: + `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 + rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 + rule `struct.new_default`{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} + -- wf_context: `%`(C) + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} + -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 + rule `struct.get`{C : context, `sx?` : sx?, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: + `%|-%:%`(C, `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 + rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*}: + `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) + -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.SET`_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 + rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 + rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype}: + `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 + rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 + rule `array.new_elem`{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: + `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) + -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_ELEM`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 + rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.NEW_DATA`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 + rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 + rule `array.set`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 + rule `array.len`{C : context}: + `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.LEN`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 + rule `array.fill`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 + rule `array.copy`{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 + rule `array.init_elem`{C : context, x : idx, y : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) + -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 + rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 + rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + -- wf_context: `%`(C) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 + rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 + rule `local.get`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) + -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 + rule `local.set`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 + rule `local.tee`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 + rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: + `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 + rule `global.set`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 + rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 + rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 + rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.SIZE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 + rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: + `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.GROW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 + rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 + rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) + -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) + -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- wf_context: `%`(C) + -- wf_instr: `%`(`TABLE.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 + rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) + -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 + rule `elem.drop`{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) + -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(`ELEM.DROP`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.SIZE`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.GROW`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: + `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) + -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) + -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + rule `data.drop`{C : context, x : idx}: + `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) + -- if ($proj_uN_0(x).0 < |C.DATAS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`DATA.DROP`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 + rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 + rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 + rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 + rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 + rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 + rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 + rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 + rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 + rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 + rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 + rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 + rule unop{C : context, nt : numtype, unop_nt : unop_}: + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 + rule binop{C : context, nt : numtype, binop_nt : binop_}: + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 + rule testop{C : context, nt : numtype, testop_nt : testop_}: + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 + rule relop{C : context, nt : numtype, relop_nt : relop_}: + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 + rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 + rule vconst{C : context, c : vec_}: + `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 + rule vvunop{C : context, vvunop : vvunop}: + `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 + rule vvbinop{C : context, vvbinop : vvbinop}: + `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 + rule vvternop{C : context, vvternop : vvternop}: + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 + rule vvtestop{C : context, vvtestop : vvtestop}: + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 + rule vunop{C : context, sh : shape, vunop : vunop_}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 + rule vternop{C : context, sh : shape, vternop : vternop_}: + `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 + rule vbitmask{C : context, sh : ishape}: + `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 + rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 + rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: + `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} + -- wf_context: `%`(C) + -- wf_dim: `%`($dim($proj_bshape_0(sh).0)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 + rule vsplat{C : context, sh : shape}: + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 + rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- wf_context: `%`(C) + -- wf_dim: `%`($dim(sh)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 + rule vreplace_lane{C : context, sh : shape, i : laneidx}: + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- wf_context: `%`(C) + -- wf_dim: `%`($dim(sh)) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 + rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 + rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 + rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 + rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 + rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 +relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 + rule empty{C : context}: + `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 + rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*, var_0 : context?}: + `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- if (|`init*`| = |`t*`|) + -- if (|`init*`| = |`x_1*`|) + -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} + -- Instrs_ok: `%|-%:%`(!(var_0), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- if (var_0 =/= ?()) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_context: `%`(!(var_0)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- fun_with_locals: `%%%%`(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 + rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 + rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) +} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok: `%|-%:%`(context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*, `t*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%NONDEFAULTABLE`(t) + -- if (!($default_(t)) = ?()) + -- if ($default_(t) =/= ?()) + -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Instr_const: `%|-%CONST`(context, instr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule vconst{C : context, vt : vectype, c_vt : vec_}: + `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.null`{C : context, ht : heaptype}: + `%|-%CONST`(C, `REF.NULL`_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.NULL`_instr(ht)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.i31`{C : context}: + `%|-%CONST`(C, `REF.I31`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.I31`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `ref.func`{C : context, x : idx}: + `%|-%CONST`(C, `REF.FUNC`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`REF.FUNC`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `struct.new`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `struct.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`STRUCT.NEW_DEFAULT`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_DEFAULT`_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `array.new_fixed`{C : context, x : idx, n : n}: + `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `any.convert_extern`{C : context}: + `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `extern.convert_any`{C : context}: + `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule `global.get`{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule binop{C : context, Inn : Inn, binop : binop_}: + `%|-%CONST`(C, BINOP_instr($numtype_addrtype(Inn), binop)) + -- if (Inn <- [I32_Inn I64_Inn]) + -- if (|[I32_Inn I64_Inn]| > 0) + -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) + -- if (|[mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]| > 0) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr($numtype_addrtype(Inn), binop)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, MUL_binop_Inn)) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_const: `%|-%CONST`(context, expr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*}: + `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, expr : expr, t : valtype}: + `%|-%:%CONST`(C, expr, t) + -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) + -- Expr_const: `%|-%CONST`(C, expr) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Type_ok: `%|-%:%`(context, type, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx, var_0 : deftype*}: + `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- if ($proj_uN_0(x).0 = |C.TYPES_context|) + -- if (dt*{dt <- `dt*`} = var_0) + -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- fun_rolldt: `%%%`(x, rectype, var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Tag_ok: `%|-%:%`(context, tag, tagtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tagtype : tagtype, var_0 : tagtype}: + `%|-%:%`(C, TAG_tag(tagtype), var_0) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(var_0) + -- wf_tag: `%`(TAG_tag(tagtype)) + -- fun_clos_tagtype: `%%%`(C, tagtype, var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Global_ok: `%|-%:%`(context, global, globaltype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: + `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Mem_ok: `%|-%:%`(context, mem, memtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, memtype : memtype}: + `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- Memtype_ok: `%|-%:OK`(C, memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Table_ok: `%|-%:%`(context, table, tabletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- if (tabletype = `%%%`_tabletype(at, lim, rt)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(rt)) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Local_ok: `%|-%:%`(context, local, localtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule set{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- Defaultable: `|-%DEFAULTABLE`(t) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule unset{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- Nondefaultable: `|-%NONDEFAULTABLE`(t) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Func_ok: `%|-%:%`(context, func, deftype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} + -- if (|`lct*`| = |`local*`|) + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Datamode_ok: `%|-%:%`(context, datamode, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context}: + `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: + `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Data_ok: `%|-%:%`(context, data, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, `b*` : byte*, datamode : datamode}: + `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context, rt : reftype}: + `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule declare{C : context, rt : reftype}: + `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: + `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elem_ok: `%|-%:%`(context, elem, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: + `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- Reftype_ok: `%|-%:OK`(C, elemtype) + -- (Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(elemtype)))*{expr <- `expr*`} + -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Start_ok: `%|-%:OK`(context, start) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx}: + `%|-%:OK`(C, START_start(x)) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Import_ok: `%|-%:%`(context, import, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name_1 : name, name_2 : name, xt : externtype, var_0 : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), var_0) + -- Externtype_ok: `%|-%:OK`(C, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(var_0) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) + -- fun_clos_externtype: `%%%`(C, xt, var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Externidx_ok: `%|-%:%`(context, externidx, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule tag{C : context, x : idx, jt : tagtype}: + `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule global{C : context, x : idx, gt : globaltype}: + `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mem{C : context, x : idx, mt : memtype}: + `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule table{C : context, x : idx, tt : tabletype}: + `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Export_ok: `%|-%:%%`(context, export, name, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name : name, externidx : externidx, xt : externtype}: + `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- Externidx_ok: `%|-%:%`(C, externidx, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 +relation Globals_ok: `%|-%:%`(context, global*, globaltype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 + rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: + `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- Global_ok: `%|-%:%`(C, global_1, gt_1) + -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 +relation Types_ok: `%|-%:%`(context, type*, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 + rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: + `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) + -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +syntax nonfuncs = + | `%%%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation wf_nonfuncs: `%`(nonfuncs) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*}: + `%`(`%%%%%%`_nonfuncs(`global*`, `mem*`, `table*`, `elem*`, `start?`, `export*`)) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_mem: `%`(mem))*{mem <- `mem*`} + -- (wf_table: `%`(table))*{table <- `table*`} + -- (wf_elem: `%`(elem))*{elem <- `elem*`} + -- (wf_start: `%`(start))?{start <- `start?`} + -- (wf_export: `%`(export))*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule fun_funcidx_nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `start?` : start?, `export*` : export*, var_0 : funcidx*}: + `%%`(`%%%%%%`_nonfuncs(global#2*{global#2 <- `global*`}, mem#2*{mem#2 <- `mem*`}, table#2*{table#2 <- `table*`}, elem#2*{elem#2 <- `elem*`}, start#2?{start#2 <- `start?`}, export#2*{export#2 <- `export*`}), var_0) + -- fun_funcidx_module: `%%`(MODULE_module(`%`_list([]), `%`_list([]), `%`_list([]), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list([]), `%`_list([]), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Module_ok: `|-%:%`(module, moduletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*, var_6 : deftype*, var_5 : tabletype*, var_4 : memtype*, var_3 : globaltype*, var_2 : tagtype*, var_1 : funcidx*, var_0 : moduletype}: + `|-%:%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})), var_0) + -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) + -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + -- if (|`import*`| = |`xt_I*`|) + -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} + -- if (|`jt*`| = |`tag*`|) + -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} + -- if (|`mem*`| = |`mt*`|) + -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} + -- if (|`table*`| = |`tt*`|) + -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} + -- if (|`dt*`| = |`func*`|) + -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} + -- if (|`data*`| = |`ok*`|) + -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} + -- if (|`elem*`| = |`rt*`|) + -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} + -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} + -- if (|`export*`| = |`nm*`|) + -- if (|`export*`| = |`xt_E*`|) + -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) + -- if (C = C' +++ {TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) + -- if (x*{x <- `x*`} = var_1) + -- if (jt_I*{jt_I <- `jt_I*`} = var_2) + -- if (gt_I*{gt_I <- `gt_I*`} = var_3) + -- if (mt_I*{mt_I <- `mt_I*`} = var_4) + -- if (tt_I*{tt_I <- `tt_I*`} = var_5) + -- if (dt_I*{dt_I <- `dt_I*`} = var_6) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_moduletype: `%`(var_0) + -- (wf_uN: `%%`(32, iter))*{iter <- var_1} + -- (wf_typeuse: `%`(iter))*{iter <- var_2} + -- (wf_globaltype: `%`(iter))*{iter <- var_3} + -- (wf_memtype: `%`(iter))*{iter <- var_4} + -- (wf_tabletype: `%`(iter))*{iter <- var_5} + -- wf_module: `%`(MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}, RECS []}) + -- wf_nonfuncs: `%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- fun_funcsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_6) + -- fun_tablesxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_5) + -- fun_memsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_4) + -- fun_globalsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_3) + -- fun_tagsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_2) + -- fun_funcidx_nonfuncs: `%%`(`%%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_1) + -- fun_clos_moduletype: `%%%`(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}), var_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed2 = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed2_0(x : relaxed2) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed2_0{v_num_0 : nat}(`%`_relaxed2(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed2: `%`(relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed2_case_0{i : nat}: + `%`(`%`_relaxed2(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed4 = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed4_0(x : relaxed4) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed4_0{v_num_0 : nat}(`%`_relaxed4(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed4: `%`(relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed4_case_0{i : nat}: + `%`(`%`_relaxed4(i)) + -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = (if $ND then [X_1 X_2][$proj_relaxed2_0(i).0] else [X_1 X_2][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][$proj_relaxed4_0(i).0] else [X_1 X_2 X_3 X_4][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmadd : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmadd_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmadd_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_fmadd) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmin : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmin_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmin_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmin) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmax : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmax_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmax_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmax) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_idot : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_idot_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_idot_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_idot) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_iq15mulr : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_iq15mulr_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_iq15mulr_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_iq15mulr) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_u : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_u_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_u_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_trunc_u) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_s : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_s_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_s_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_trunc_s) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_swizzle : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_swizzle_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_swizzle_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_swizzle) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_laneselect : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_laneselect_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_laneselect_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_laneselect) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $s33_to_u32(s33 : s33) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibits_(N : N, iN : iN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibits__is_wf: `%%%`(N : N, iN : iN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibits__is_wf_0{N : N, iN : iN, ret_val : bit*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibits_(N, iN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbits_(N : N, fN : fN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbits__is_wf: `%%%`(N : N, fN : fN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbits__is_wf_0{N : N, fN : fN, ret_val : bit*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbits_(N, fN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibytes_(N : N, iN : iN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibytes__is_wf: `%%%`(N : N, iN : iN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibytes__is_wf_0{N : N, iN : iN, ret_val : byte*}: + `%%%`(N, iN, ret_val) + -- wf_uN: `%%`(N, iN) + -- if (ret_val = $ibytes_(N, iN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbytes_(N : N, fN : fN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbytes__is_wf: `%%%`(N : N, fN : fN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbytes__is_wf_0{N : N, fN : fN, ret_val : byte*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fbytes_(N, fN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $nbytes_(numtype : numtype, num_ : num_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation nbytes__is_wf: `%%%`(numtype : numtype, num_ : num_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule nbytes__is_wf_0{numtype : numtype, num_ : num_, ret_val : byte*}: + `%%%`(numtype, num_, ret_val) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = $nbytes_(numtype, num_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $vbytes_(vectype : vectype, vec_ : vec_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation vbytes__is_wf: `%%%`(vectype : vectype, vec_ : vec_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule vbytes__is_wf_0{vectype : vectype, vec_ : vec_, ret_val : byte*}: + `%%%`(vectype, vec_, ret_val) + -- wf_uN: `%%`($vsize(vectype), vec_) + -- if (ret_val = $vbytes_(vectype, vec_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zbytes__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zbytes__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : byte*}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $zbytes_(storagetype, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cbytes__is_wf: `%%%`(Cnn : Cnn, lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cbytes__is_wf_0{Cnn : Cnn, lit_ : lit_, ret_val : byte*}: + `%%%`(Cnn, lit_, ret_val) + -- wf_lit_: `%%`($storagetype_Cnn(Cnn), lit_) + -- if (ret_val = $cbytes_(Cnn, lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibits_(N : N, bit*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbits_(N : N, bit*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbits__is_wf: `%%%`(N : N, var_0 : bit*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbits__is_wf_0{N : N, var_0 : bit*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_bit: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbits_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibytes_(N : N, byte*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbytes_(N : N, byte*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbytes__is_wf: `%%%`(N : N, var_0 : byte*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbytes__is_wf_0{N : N, var_0 : byte*, ret_val : fN}: + `%%%`(N, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbytes_(N, var_0)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_nbytes_(numtype : numtype, byte*) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_nbytes__is_wf: `%%%`(numtype : numtype, var_0 : byte*, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_nbytes__is_wf_0{numtype : numtype, var_0 : byte*, ret_val : num_}: + `%%%`(numtype, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_nbytes_(numtype, var_0)) + -- wf_num_: `%%`(numtype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_vbytes_(vectype : vectype, byte*) : vec_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_zbytes__is_wf: `%%%`(storagetype : storagetype, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_zbytes__is_wf_0{storagetype : storagetype, var_0 : byte*, ret_val : lit_}: + `%%%`(storagetype, var_0, ret_val) + -- wf_storagetype: `%`(storagetype) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_zbytes_(storagetype, var_0)) + -- wf_lit_: `%%`(storagetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_cbytes__is_wf: `%%%`(Cnn : Cnn, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_cbytes__is_wf_0{Cnn : Cnn, var_0 : byte*, ret_val : lit_}: + `%%%`(Cnn, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_cbytes_(Cnn, var_0)) + -- wf_lit_: `%%`($storagetype_Cnn(Cnn), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_signed_: `%%%`(N, nat, int) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_signed__case_0{N : nat, i : nat}: + `%%%`(N, i, (i : nat <:> int)) + -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_signed__case_1{N : nat, i : nat}: + `%%%`(N, i, ((i : nat <:> int) - ((2 ^ N) : nat <:> int))) + -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_inv_signed_: `%%%`(N, int, nat) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_inv_signed__case_0{N : nat, i : int}: + `%%%`(N, i, (i : int <:> nat)) + -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_inv_signed__case_1{N : nat, i : int}: + `%%%`(N, i, ((i + ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sx(storagetype : storagetype) : sx?? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(F32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(F64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(V128_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I8_storagetype) = ?(?(S_sx)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I16_storagetype) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zero(lanetype : lanetype) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zero_is_wf: `%%`(lanetype : lanetype, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zero_is_wf_0{lanetype : lanetype, ret_val : lane_}: + `%%`(lanetype, ret_val) + -- if (ret_val = $zero(lanetype)) + -- wf_lane_: `%%`(lanetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $bool(bool : bool) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(false) = 0 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(true) = 1 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $truncz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ceilz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_u_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_u_{N : nat, i : int}(N, i) = (if (i < (0 : nat <:> int)) then 0 else (if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) then ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) else (i : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_s_(N : N, int : int) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_s_{N : nat, i : int}(N, i) = (if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) then - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) else (if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) then (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) else i)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ineg_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iabs_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iabs_{N : nat, i_1 : uN, var_0 : int}(N, i_1) = (if (var_0 >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iclz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ictz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ipopcnt_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_iextend_: `%%%%%`(N, M, sx, iN, iN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_iextend__case_0{N : nat, M : nat, i : uN}: + `%%%%%`(N, M, U_sx, i, `%`_iN(($proj_uN_0(i).0 \ (2 ^ M)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_iextend__case_1{N : nat, M : nat, i : uN, var_1 : int, var_0 : nat}: + `%%%%%`(N, M, S_sx, i, `%`_iN(var_0)) + -- fun_signed_: `%%%`(M, ($proj_uN_0(i).0 \ (2 ^ M)), var_1) + -- fun_inv_signed_: `%%%`(N, var_1, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imul_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_3{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: + `%%%%%`(N, S_sx, i_1, i_2, ?()) + -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_4{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_3{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- if ((j_1 = var_1) /\ (j_2 = var_2)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 <= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 >= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 + var_2)), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 - var_2)), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_q15mulr_(N : N, sx : sx, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iavgr_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inot_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irev_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iand_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iandnot_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ior_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ixor_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishl_(N : N, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishr_(N : N, sx : sx, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotl_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotr_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibitselect_(N : N, iN : iN, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieqz_(N : N, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inez_(N : N, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieq_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ine_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 < var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 > var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 <= var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 >= var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fabs_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fabs__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fabs__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fabs_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fneg_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fneg__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fneg__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fneg_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsqrt_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsqrt__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsqrt__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fsqrt_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fceil_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fceil__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fceil__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fceil_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ffloor_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ffloor__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ffloor__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ffloor_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ftrunc_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ftrunc__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ftrunc__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $ftrunc_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fnearest_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fnearest__is_wf: `%%%`(N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fnearest__is_wf_0{N : N, fN : fN, ret_val : fN*}: + `%%%`(N, fN, ret_val) + -- wf_fN: `%%`(N, fN) + -- if (ret_val = $fnearest_(N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fadd_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fadd__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fadd__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fadd_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsub_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsub__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsub__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fsub_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmul_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmul__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmul__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmul_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fdiv_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fdiv__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fdiv__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fdiv_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmin__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmax__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmin__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmin__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmin_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmax__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmax__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fpmax_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_min__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_min__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_min_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_max__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_max__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $frelaxed_max_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fcopysign_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fcopysign__is_wf: `%%%%`(N : N, fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fcopysign__is_wf_0{N : N, fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(N, fN, fN_0, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- if (ret_val = $fcopysign_(N, fN, fN_0)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $feq_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fne_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $flt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fgt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fle_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fge_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_madd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_madd__is_wf_0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_madd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_nmadd__is_wf: `%%%%%`(N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_nmadd__is_wf_0{N : N, fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(N, fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(N, fN) + -- wf_fN: `%%`(N, fN_0) + -- wf_fN: `%%`(N, fN_1) + -- if (ret_val = $frelaxed_nmadd_(N, fN, fN_0, fN_1)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $wrap__(M : M, N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $extend__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc_sat__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $demote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation demote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule demote___is_wf_0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $demote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $promote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation promote___is_wf: `%%%%`(M : M, N : N, fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule promote___is_wf_0{M : M, N : N, fN : fN, ret_val : fN*}: + `%%%%`(M, N, fN, ret_val) + -- wf_fN: `%%`(M, fN) + -- if (ret_val = $promote__(M, N, fN)) + -- (wf_fN: `%%`(N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $convert__(M : M, N : N, sx : sx, iN : iN) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation convert___is_wf: `%%%%%`(M : M, N : N, sx : sx, iN : iN, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule convert___is_wf_0{M : M, N : N, sx : sx, iN : iN, ret_val : fN}: + `%%%%%`(M, N, sx, iN, ret_val) + -- wf_uN: `%%`(M, iN) + -- if (ret_val = $convert__(M, N, sx, iN)) + -- wf_fN: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation reinterpret___is_wf: `%%%%`(numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule reinterpret___is_wf_0{numtype_1 : numtype, numtype_2 : numtype, num_ : num_, ret_val : num_}: + `%%%%`(numtype_1, numtype_2, num_, ret_val) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = $reinterpret__(numtype_1, numtype_2, num_)) + -- wf_num_: `%%`(numtype_2, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lpacknum__is_wf: `%%%`(lanetype : lanetype, num_ : num_, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lpacknum__is_wf_0{lanetype : lanetype, num_ : num_, ret_val : lane_}: + `%%%`(lanetype, num_, ret_val) + -- wf_num_: `%%`($lunpack(lanetype), num_) + -- if (ret_val = $lpacknum_(lanetype, num_)) + -- wf_lane_: `%%`(lanetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(I32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(I64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(F32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(F64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(V128_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cpacknum__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(storagetype))), lit_) + -- if ($cunpack(storagetype) =/= ?()) + -- if (ret_val = $cpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`(storagetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(I32_lanetype, mk_lane__0_lane_(I32_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(I64_lanetype, mk_lane__0_lane_(I64_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(F32_lanetype, mk_lane__0_lane_(F32_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lunpacknum__is_wf: `%%%`(lanetype : lanetype, lane_ : lane_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lunpacknum__is_wf_0{lanetype : lanetype, lane_ : lane_, ret_val : num_}: + `%%%`(lanetype, lane_, ret_val) + -- wf_lane_: `%%`(lanetype, lane_) + -- if (ret_val = $lunpacknum_(lanetype, lane_)) + -- wf_num_: `%%`($lunpack(lanetype), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(I32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(I64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(F32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(F64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(V128_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cunpacknum__is_wf: `%%%`(storagetype : storagetype, lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cunpacknum__is_wf_0{storagetype : storagetype, lit_ : lit_, ret_val : lit_}: + `%%%`(storagetype, lit_, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_lit_: `%%`(storagetype, lit_) + -- if (ret_val = $cunpacknum_(storagetype, lit_)) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(storagetype))), ret_val) + -- if ($cunpack(storagetype) =/= ?()) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_0{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_1{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_2{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_3{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_4{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_5{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_6{M : nat, i : uN, var_0 : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_7{M : nat, i : uN, var_0 : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_8{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#1)*{iter_0#1 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_9{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#2)*{iter_0#2 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_10{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#3)*{iter_0#3 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_11{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#4)*{iter_0#4 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_12{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#5)*{iter_0#5 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_13{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#6)*{iter_0#6 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_14{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#7)*{iter_0#7 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_15{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#8)*{iter_0#8 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_16{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#9)*{iter_0#9 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_17{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#10)*{iter_0#10 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_18{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#11)*{iter_0#11 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_19{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#12)*{iter_0#12 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_20{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0#13)*{iter_0#13 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_21{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0#14)*{iter_0#14 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation unop__is_wf: `%%%%`(numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule unop__is_wf_0{numtype : numtype, unop_ : unop_, num_ : num_, ret_val : num_*, var_0 : num_*}: + `%%%%`(numtype, unop_, num_, ret_val) + -- wf_unop_: `%%`(numtype, unop_) + -- wf_num_: `%%`(numtype, num_) + -- if (ret_val = var_0) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} + -- fun_unop_: `%%%%`(numtype, unop_, num_, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_binop_: `%%%%%`(numtype, binop_, num_, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_0{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_1{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_2{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_3{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_4{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_5{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_6{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#15)*{iter_0#15 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_7{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#16)*{iter_0#16 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_8{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0#17)*{iter_0#17 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_9{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0#18)*{iter_0#18 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_10{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_11{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_12{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_13{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_14{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_15{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_16{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_17{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_18{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_19{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_20{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_21{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_22{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_23{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_24{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#19)*{iter_0#19 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_25{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#20)*{iter_0#20 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_26{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#21)*{iter_0#21 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_27{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#22)*{iter_0#22 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_28{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#23)*{iter_0#23 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_29{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#24)*{iter_0#24 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_30{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#25)*{iter_0#25 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_31{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#26)*{iter_0#26 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_32{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#27)*{iter_0#27 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_33{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#28)*{iter_0#28 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_34{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#29)*{iter_0#29 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_35{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#30)*{iter_0#30 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_36{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0#31)*{iter_0#31 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_37{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0#32)*{iter_0#32 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation binop__is_wf: `%%%%%`(numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule binop__is_wf_0{numtype : numtype, binop_ : binop_, num_ : num_, num__0 : num_, ret_val : num_*, var_0 : num_*}: + `%%%%%`(numtype, binop_, num_, num__0, ret_val) + -- wf_binop_: `%%`(numtype, binop_) + -- wf_num_: `%%`(numtype, num_) + -- wf_num_: `%%`(numtype, num__0) + -- if (ret_val = var_0) + -- (wf_num_: `%%`(numtype, ret_val))*{ret_val <- ret_val} + -- fun_binop_: `%%%%%`(numtype, binop_, num_, num__0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $testop_{i : uN}(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I32_Inn)), i) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $testop_{i : uN}(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I64_Inn)), i) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_cvtop__: `%%%%%`(numtype, numtype, cvtop__, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_0{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_1{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_2{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_3{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_4{i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_5{i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_6{i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_7{i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_8{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#33)*{iter_0#33 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_9{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#34)*{iter_0#34 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_10{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#35)*{iter_0#35 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_11{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#36)*{iter_0#36 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_12{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#37)*{iter_0#37 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_13{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0#38)*{iter_0#38 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_14{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#39)*{iter_0#39 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_15{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0#40)*{iter_0#40 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_16{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_17{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_18{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_19{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_20{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#41)*{iter_0#41 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_21{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#42)*{iter_0#42 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_22{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#43)*{iter_0#43 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_23{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#44)*{iter_0#44 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_24{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#45)*{iter_0#45 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_25{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0#46)*{iter_0#46 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_26{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#47)*{iter_0#47 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_27{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0#48)*{iter_0#48 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_28{i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_29{i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_30{i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_31{i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_32{f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_33{f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_34{f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_35{f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cvtop___is_wf: `%%%%%`(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cvtop___is_wf_0{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_, ret_val : num_*, var_0 : num_*}: + `%%%%%`(numtype_1, numtype_2, cvtop__, num_, ret_val) + -- wf_cvtop__: `%%%`(numtype_1, numtype_2, cvtop__) + -- wf_num_: `%%`(numtype_1, num_) + -- if (ret_val = var_0) + -- (wf_num_: `%%`(numtype_2, ret_val))*{ret_val <- ret_val} + -- fun_cvtop__: `%%%%%`(numtype_1, numtype_2, cvtop__, num_, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lanes_(shape : shape, vec_ : vec_) : lane_* + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lanes__is_wf: `%%%`(shape : shape, vec_ : vec_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lanes__is_wf_0{shape : shape, vec_ : vec_, ret_val : lane_*}: + `%%%`(shape, vec_, ret_val) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(128, vec_) + -- if (ret_val = $lanes_(shape, vec_)) + -- (wf_lane_: `%%`($lanetype(shape), ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $inv_lanes_(shape : shape, lane_*) : vec_ + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_zeroop: `%%%%`(shape, shape, vcvtop__, zero?) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3037?{half#3037 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3038?{half#3038 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3039?{half#3039 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3040?{half#3040 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3041?{half#3041 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3042?{half#3042 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3043?{half#3043 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3044?{half#3044 <- `half?`}, sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3441?{zero#3441 <- `zero?`})), zero#3442?{zero#3442 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3443?{zero#3443 <- `zero?`})), zero#3444?{zero#3444 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3445?{zero#3445 <- `zero?`})), zero#3446?{zero#3446 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3447?{zero#3447 <- `zero?`})), zero#3448?{zero#3448 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3449?{zero#3449 <- `zero?`})), zero#3450?{zero#3450 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3451?{zero#3451 <- `zero?`})), zero#3452?{zero#3452 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3453?{zero#3453 <- `zero?`})), zero#3454?{zero#3454 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3455?{zero#3455 <- `zero?`})), zero#3456?{zero#3456 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3457?{zero#3457 <- `zero?`})), zero#3458?{zero#3458 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3459?{zero#3459 <- `zero?`})), zero#3460?{zero#3460 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3461?{zero#3461 <- `zero?`})), zero#3462?{zero#3462 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3463?{zero#3463 <- `zero?`})), zero#3464?{zero#3464 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3465?{zero#3465 <- `zero?`})), zero#3466?{zero#3466 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3467?{zero#3467 <- `zero?`})), zero#3468?{zero#3468 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3469?{zero#3469 <- `zero?`})), zero#3470?{zero#3470 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3471?{zero#3471 <- `zero?`})), zero#3472?{zero#3472 <- `zero?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_40{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_41{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_42{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_43{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_44{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_45{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_46{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_47{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_halfop: `%%%%`(shape, shape, vcvtop__, half?) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3045?{half#3045 <- `half?`}, sx)), half#3046?{half#3046 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3047?{half#3047 <- `half?`}, sx)), half#3048?{half#3048 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3049?{half#3049 <- `half?`}, sx)), half#3050?{half#3050 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3051?{half#3051 <- `half?`}, sx)), half#3052?{half#3052 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3053?{half#3053 <- `half?`}, sx)), half#3054?{half#3054 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3055?{half#3055 <- `half?`}, sx)), half#3056?{half#3056 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3057?{half#3057 <- `half?`}, sx)), half#3058?{half#3058 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3059?{half#3059 <- `half?`}, sx)), half#3060?{half#3060 <- `half?`}) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3473?{zero#3473 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3474?{zero#3474 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3475?{zero#3475 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3476?{zero#3476 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3477?{zero#3477 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3478?{zero#3478 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3479?{zero#3479 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3480?{zero#3480 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3481?{zero#3481 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3482?{zero#3482 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3483?{zero#3483 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3484?{zero#3484 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3485?{zero#3485 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3486?{zero#3486 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3487?{zero#3487 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3488?{zero#3488 <- `zero?`})), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_40{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_41{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_42{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_43{M_1 : nat, M_2 : nat, zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_44{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_45{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_46{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_47{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $half(half : half, nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(LOW_half, i, j) = i + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(HIGH_half, i, j) = j + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $iswizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c#1*{c#1 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN, var_0 : int}(N, c#2*{c#2 <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if (var_0 < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i).0, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#4)*{c#4 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#1*{c_1#1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#3*{c#3 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#2)))*{c_1#2 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#5))*{iter#5 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#3)))))*{c_1#3 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#6)*{c#6 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#4*{c_1#4 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#5*{c#5 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#5)))*{c_1#5 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#6))*{iter#6 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#6)))))*{c_1#6 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#8)*{c#8 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#7*{c_1#7 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#7*{c#7 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#8)))*{c_1#8 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#7))*{iter#7 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#9)))))*{c_1#9 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#10)*{c#10 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#10*{c_1#10 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#9*{c#9 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#11)))*{c_1#11 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#8))*{iter#8 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#12)))))*{c_1#12 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#12*{c#12 <- `c*#2`})*{`c*#2` <- `c**`} + -- let{`c_1*` : lane_*} c_1#13*{c_1#13 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#11*{c#11 <- `c*#1`}*{`c*#1` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#49))*{iter_0#49 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#14)))))}*{c_1#14 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#9))*{iter#9 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#11))*{iter#11 <- iter#10}*{iter#10 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#50))*{iter_0#50 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#15)))))}*{c_1#15 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#12))*{iter#12 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#16)))))}*{c_1#16 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#51))))*{iter_0#51 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#17)))))}*{c_1#17 <- `c_1*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#14*{c#14 <- `c*#4`})*{`c*#4` <- `c**`} + -- let{`c_1*` : lane_*} c_1#18*{c_1#18 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#13*{c#13 <- `c*#3`}*{`c*#3` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#52))*{iter_0#52 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#19)))))}*{c_1#19 <- `c_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#13))*{iter#13 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#15))*{iter#15 <- iter#14}*{iter#14 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#53))*{iter_0#53 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#20)))))}*{c_1#20 <- `c_1*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#16))*{iter#16 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#21)))))}*{c_1#21 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#54))))*{iter_0#54 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#22)))))}*{c_1#22 <- `c_1*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#16)*{c#16 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#23*{c_1#23 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#1*{c_2#1 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#15*{c#15 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#24)), !($proj_lane__2(c_2#2)))*{c_1#24 <- `c_1*`, c_2#2 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#17))*{iter#17 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#18))*{iter#18 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#25)), !($proj_lane__2(c_2#3)))))*{c_1#25 <- `c_1*`, c_2#3 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#18)*{c#18 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#26*{c_1#26 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#4*{c_2#4 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#17*{c#17 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#27)), !($proj_lane__2(c_2#5)))*{c_1#27 <- `c_1*`, c_2#5 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#19))*{iter#19 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#20))*{iter#20 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#28)), !($proj_lane__2(c_2#6)))))*{c_1#28 <- `c_1*`, c_2#6 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#20)*{c#20 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#29*{c_1#29 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#7*{c_2#7 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#19*{c#19 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#30)), !($proj_lane__2(c_2#8)))*{c_1#30 <- `c_1*`, c_2#8 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#21))*{iter#21 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#22))*{iter#22 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#31)), !($proj_lane__2(c_2#9)))))*{c_1#31 <- `c_1*`, c_2#9 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#22)*{c#22 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#32*{c_1#32 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#10*{c_2#10 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#21*{c#21 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#33)), !($proj_lane__2(c_2#11)))*{c_1#33 <- `c_1*`, c_2#11 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#23))*{iter#23 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#24))*{iter#24 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#34)), !($proj_lane__2(c_2#12)))))*{c_1#34 <- `c_1*`, c_2#12 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#24)*{c#24 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#35*{c_1#35 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#13*{c_2#13 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#23*{c#23 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#36)), !($proj_lane__2(c_2#14)))*{c_1#36 <- `c_1*`, c_2#14 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#25))*{iter#25 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#26))*{iter#26 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#37)), !($proj_lane__2(c_2#15)))))*{c_1#37 <- `c_1*`, c_2#15 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#26)*{c#26 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#38*{c_1#38 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#16*{c_2#16 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#25*{c#25 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#39)), !($proj_lane__2(c_2#17)))*{c_1#39 <- `c_1*`, c_2#17 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#27))*{iter#27 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#28))*{iter#28 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#40)), !($proj_lane__2(c_2#18)))))*{c_1#40 <- `c_1*`, c_2#18 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#28)*{c#28 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#41*{c_1#41 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#19*{c_2#19 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#27*{c#27 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#42)), !($proj_lane__2(c_2#20)))*{c_1#42 <- `c_1*`, c_2#20 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#29))*{iter#29 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#30))*{iter#30 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#43)), !($proj_lane__2(c_2#21)))))*{c_1#43 <- `c_1*`, c_2#21 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#30)*{c#30 <- `c*`})] + -- let{`c_1*` : lane_*} c_1#44*{c_1#44 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#22*{c_2#22 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#29*{c#29 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#45)), !($proj_lane__2(c_2#23)))*{c_1#45 <- `c_1*`, c_2#23 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#31))*{iter#31 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#32))*{iter#32 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#46)), !($proj_lane__2(c_2#24)))))*{c_1#46 <- `c_1*`, c_2#24 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#32*{c#32 <- `c*#6`})*{`c*#6` <- `c**`} + -- let{`c_1*` : lane_*} c_1#47*{c_1#47 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#25*{c_2#25 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#31*{c#31 <- `c*#5`}*{`c*#5` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#55)*{iter_0#55 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#48)), !($proj_lane__2(c_2#26)))}*{c_1#48 <- `c_1*`, c_2#26 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#33))*{iter#33 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#34))*{iter#34 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), iter#36))*{iter#36 <- iter#35}*{iter#35 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#56)*{iter_0#56 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#49)), !($proj_lane__2(c_2#27)))}*{c_1#49 <- `c_1*`, c_2#27 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#37))*{iter#37 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#50)), !($proj_lane__2(c_2#28)))}*{c_1#50 <- `c_1*`, c_2#28 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#57)))*{iter_0#57 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#51)), !($proj_lane__2(c_2#29)))}*{c_1#51 <- `c_1*`, c_2#29 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#34*{c#34 <- `c*#8`})*{`c*#8` <- `c**`} + -- let{`c_1*` : lane_*} c_1#52*{c_1#52 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#30*{c_2#30 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#33*{c#33 <- `c*#7`}*{`c*#7` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#58)*{iter_0#58 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#53)), !($proj_lane__2(c_2#31)))}*{c_1#53 <- `c_1*`, c_2#31 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#38))*{iter#38 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#39))*{iter#39 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), iter#41))*{iter#41 <- iter#40}*{iter#40 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#59)*{iter_0#59 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#54)), !($proj_lane__2(c_2#32)))}*{c_1#54 <- `c_1*`, c_2#32 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#42))*{iter#42 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#55)), !($proj_lane__2(c_2#33)))}*{c_1#55 <- `c_1*`, c_2#33 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#60)))*{iter_0#60 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#56)), !($proj_lane__2(c_2#34)))}*{c_1#56 <- `c_1*`, c_2#34 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#36*{c#36 <- `c*#10`})*{`c*#10` <- `c**`} + -- let{`c_1*` : lane_*} c_1#57*{c_1#57 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#35*{c_2#35 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#35*{c#35 <- `c*#9`}*{`c*#9` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#61)*{iter_0#61 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#58)), !($proj_lane__2(c_2#36)))}*{c_1#58 <- `c_1*`, c_2#36 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#43))*{iter#43 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#44))*{iter#44 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), iter#46))*{iter#46 <- iter#45}*{iter#45 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#62)*{iter_0#62 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#59)), !($proj_lane__2(c_2#37)))}*{c_1#59 <- `c_1*`, c_2#37 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#47))*{iter#47 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#60)), !($proj_lane__2(c_2#38)))}*{c_1#60 <- `c_1*`, c_2#38 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#63)))*{iter_0#63 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#61)), !($proj_lane__2(c_2#39)))}*{c_1#61 <- `c_1*`, c_2#39 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#38*{c#38 <- `c*#12`})*{`c*#12` <- `c**`} + -- let{`c_1*` : lane_*} c_1#62*{c_1#62 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#40*{c_2#40 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#37*{c#37 <- `c*#11`}*{`c*#11` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#64)*{iter_0#64 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#63)), !($proj_lane__2(c_2#41)))}*{c_1#63 <- `c_1*`, c_2#41 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#48))*{iter#48 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#49))*{iter#49 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), iter#51))*{iter#51 <- iter#50}*{iter#50 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#65)*{iter_0#65 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#64)), !($proj_lane__2(c_2#42)))}*{c_1#64 <- `c_1*`, c_2#42 <- `c_2*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#52))*{iter#52 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#65)), !($proj_lane__2(c_2#43)))}*{c_1#65 <- `c_1*`, c_2#43 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#66)))*{iter_0#66 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#66)), !($proj_lane__2(c_2#44)))}*{c_1#66 <- `c_1*`, c_2#44 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#40*{c#40 <- `c*#14`})*{`c*#14` <- `c**`} + -- let{`c_1*` : lane_*} c_1#67*{c_1#67 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#45*{c_2#45 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#39*{c#39 <- `c*#13`}*{`c*#13` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#67))*{iter_0#67 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#68)))), !($proj_num__1(!($proj_lane__0(c_2#46)))))}*{c_1#68 <- `c_1*`, c_2#46 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#53))*{iter#53 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#54))*{iter#54 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#56))*{iter#56 <- iter#55}*{iter#55 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#68))*{iter_0#68 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#69)))), !($proj_num__1(!($proj_lane__0(c_2#47)))))}*{c_1#69 <- `c_1*`, c_2#47 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#57))*{iter#57 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#70)))), !($proj_num__1(!($proj_lane__0(c_2#48)))))}*{c_1#70 <- `c_1*`, c_2#48 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#69))))*{iter_0#69 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#71)))), !($proj_num__1(!($proj_lane__0(c_2#49)))))}*{c_1#71 <- `c_1*`, c_2#49 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#42*{c#42 <- `c*#16`})*{`c*#16` <- `c**`} + -- let{`c_1*` : lane_*} c_1#72*{c_1#72 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#50*{c_2#50 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c**` : lane_**} c#41*{c#41 <- `c*#15`}*{`c*#15` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#70))*{iter_0#70 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#73)))), !($proj_num__1(!($proj_lane__0(c_2#51)))))}*{c_1#73 <- `c_1*`, c_2#51 <- `c_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#58))*{iter#58 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#59))*{iter#59 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#61))*{iter#61 <- iter#60}*{iter#60 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#71))*{iter_0#71 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#74)))), !($proj_num__1(!($proj_lane__0(c_2#52)))))}*{c_1#74 <- `c_1*`, c_2#52 <- `c_2*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#62))*{iter#62 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#75)))), !($proj_num__1(!($proj_lane__0(c_2#53)))))}*{c_1#75 <- `c_1*`, c_2#53 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#72))))*{iter_0#72 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#76)))), !($proj_num__1(!($proj_lane__0(c_2#54)))))}*{c_1#76 <- `c_1*`, c_2#54 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#44*{c#44 <- `c*#18`})*{`c*#18` <- `c**`} + -- let{`c_1*` : lane_*} c_1#77*{c_1#77 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#55*{c_2#55 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#1*{c_3#1 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#43*{c#43 <- `c*#17`}*{`c*#17` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#73)*{iter_0#73 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#78)), !($proj_lane__2(c_2#56)), !($proj_lane__2(c_3#2)))}*{c_1#78 <- `c_1*`, c_2#56 <- `c_2*`, c_3#2 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#63))*{iter#63 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#64))*{iter#64 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#65))*{iter#65 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), iter#67))*{iter#67 <- iter#66}*{iter#66 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0#74)*{iter_0#74 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#79)), !($proj_lane__2(c_2#57)), !($proj_lane__2(c_3#3)))}*{c_1#79 <- `c_1*`, c_2#57 <- `c_2*`, c_3#3 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#68))*{iter#68 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#80)), !($proj_lane__2(c_2#58)), !($proj_lane__2(c_3#4)))}*{c_1#80 <- `c_1*`, c_2#58 <- `c_2*`, c_3#4 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0#75)))*{iter_0#75 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#81)), !($proj_lane__2(c_2#59)), !($proj_lane__2(c_3#5)))}*{c_1#81 <- `c_1*`, c_2#59 <- `c_2*`, c_3#5 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#46*{c#46 <- `c*#20`})*{`c*#20` <- `c**`} + -- let{`c_1*` : lane_*} c_1#82*{c_1#82 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#60*{c_2#60 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#6*{c_3#6 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#45*{c#45 <- `c*#19`}*{`c*#19` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#76)*{iter_0#76 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#83)), !($proj_lane__2(c_2#61)), !($proj_lane__2(c_3#7)))}*{c_1#83 <- `c_1*`, c_2#61 <- `c_2*`, c_3#7 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#69))*{iter#69 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#70))*{iter#70 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#71))*{iter#71 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), iter#73))*{iter#73 <- iter#72}*{iter#72 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0#77)*{iter_0#77 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#84)), !($proj_lane__2(c_2#62)), !($proj_lane__2(c_3#8)))}*{c_1#84 <- `c_1*`, c_2#62 <- `c_2*`, c_3#8 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#74))*{iter#74 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#85)), !($proj_lane__2(c_2#63)), !($proj_lane__2(c_3#9)))}*{c_1#85 <- `c_1*`, c_2#63 <- `c_2*`, c_3#9 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0#78)))*{iter_0#78 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#86)), !($proj_lane__2(c_2#64)), !($proj_lane__2(c_3#10)))}*{c_1#86 <- `c_1*`, c_2#64 <- `c_2*`, c_3#10 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#48*{c#48 <- `c*#22`})*{`c*#22` <- `c**`} + -- let{`c_1*` : lane_*} c_1#87*{c_1#87 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#65*{c_2#65 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#11*{c_3#11 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#47*{c#47 <- `c*#21`}*{`c*#21` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#79)*{iter_0#79 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#88)), !($proj_lane__2(c_2#66)), !($proj_lane__2(c_3#12)))}*{c_1#88 <- `c_1*`, c_2#66 <- `c_2*`, c_3#12 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#75))*{iter#75 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#76))*{iter#76 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#77))*{iter#77 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), iter#79))*{iter#79 <- iter#78}*{iter#78 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0#80)*{iter_0#80 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#89)), !($proj_lane__2(c_2#67)), !($proj_lane__2(c_3#13)))}*{c_1#89 <- `c_1*`, c_2#67 <- `c_2*`, c_3#13 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#80))*{iter#80 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#90)), !($proj_lane__2(c_2#68)), !($proj_lane__2(c_3#14)))}*{c_1#90 <- `c_1*`, c_2#68 <- `c_2*`, c_3#14 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0#81)))*{iter_0#81 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#91)), !($proj_lane__2(c_2#69)), !($proj_lane__2(c_3#15)))}*{c_1#91 <- `c_1*`, c_2#69 <- `c_2*`, c_3#15 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#50*{c#50 <- `c*#24`})*{`c*#24` <- `c**`} + -- let{`c_1*` : lane_*} c_1#92*{c_1#92 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#70*{c_2#70 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#16*{c_3#16 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#49*{c#49 <- `c*#23`}*{`c*#23` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#82)*{iter_0#82 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#93)), !($proj_lane__2(c_2#71)), !($proj_lane__2(c_3#17)))}*{c_1#93 <- `c_1*`, c_2#71 <- `c_2*`, c_3#17 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#81))*{iter#81 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#82))*{iter#82 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#83))*{iter#83 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), iter#85))*{iter#85 <- iter#84}*{iter#84 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0#83)*{iter_0#83 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#94)), !($proj_lane__2(c_2#72)), !($proj_lane__2(c_3#18)))}*{c_1#94 <- `c_1*`, c_2#72 <- `c_2*`, c_3#18 <- `c_3*`})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#86))*{iter#86 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#95)), !($proj_lane__2(c_2#73)), !($proj_lane__2(c_3#19)))}*{c_1#95 <- `c_1*`, c_2#73 <- `c_2*`, c_3#19 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0#84)))*{iter_0#84 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#96)), !($proj_lane__2(c_2#74)), !($proj_lane__2(c_3#20)))}*{c_1#96 <- `c_1*`, c_2#74 <- `c_2*`, c_3#20 <- `c_3*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c#52*{c#52 <- `c*#26`})*{`c*#26` <- `c**`} + -- let{`c_1*` : lane_*} c_1#97*{c_1#97 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#75*{c_2#75 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#21*{c_3#21 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#51*{c#51 <- `c*#25`}*{`c*#25` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#85))*{iter_0#85 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#98)))), !($proj_num__1(!($proj_lane__0(c_2#76)))), !($proj_num__1(!($proj_lane__0(c_3#22)))))}*{c_1#98 <- `c_1*`, c_2#76 <- `c_2*`, c_3#22 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#87))*{iter#87 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#88))*{iter#88 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#89))*{iter#89 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter#91))*{iter#91 <- iter#90}*{iter#90 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#86))*{iter_0#86 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#99)))), !($proj_num__1(!($proj_lane__0(c_2#77)))), !($proj_num__1(!($proj_lane__0(c_3#23)))))}*{c_1#99 <- `c_1*`, c_2#77 <- `c_2*`, c_3#23 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter#92))*{iter#92 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#100)))), !($proj_num__1(!($proj_lane__0(c_2#78)))), !($proj_num__1(!($proj_lane__0(c_3#24)))))}*{c_1#100 <- `c_1*`, c_2#78 <- `c_2*`, c_3#24 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0#87))))*{iter_0#87 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#101)))), !($proj_num__1(!($proj_lane__0(c_2#79)))), !($proj_num__1(!($proj_lane__0(c_3#25)))))}*{c_1#101 <- `c_1*`, c_2#79 <- `c_2*`, c_3#25 <- `c_3*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c#54*{c#54 <- `c*#28`})*{`c*#28` <- `c**`} + -- let{`c_1*` : lane_*} c_1#102*{c_1#102 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#80*{c_2#80 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c_3*` : lane_*} c_3#26*{c_3#26 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3) + -- let{`c**` : lane_**} c#53*{c#53 <- `c*#27`}*{`c*#27` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#88))*{iter_0#88 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#103)))), !($proj_num__1(!($proj_lane__0(c_2#81)))), !($proj_num__1(!($proj_lane__0(c_3#27)))))}*{c_1#103 <- `c_1*`, c_2#81 <- `c_2*`, c_3#27 <- `c_3*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#93))*{iter#93 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#94))*{iter#94 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#95))*{iter#95 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter#97))*{iter#97 <- iter#96}*{iter#96 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#89))*{iter_0#89 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#104)))), !($proj_num__1(!($proj_lane__0(c_2#82)))), !($proj_num__1(!($proj_lane__0(c_3#28)))))}*{c_1#104 <- `c_1*`, c_2#82 <- `c_2*`, c_3#28 <- `c_3*`})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter#98))*{iter#98 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#105)))), !($proj_num__1(!($proj_lane__0(c_2#83)))), !($proj_num__1(!($proj_lane__0(c_3#29)))))}*{c_1#105 <- `c_1*`, c_2#83 <- `c_2*`, c_3#29 <- `c_3*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0#90))))*{iter_0#90 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#106)))), !($proj_num__1(!($proj_lane__0(c_2#84)))), !($proj_num__1(!($proj_lane__0(c_3#30)))))}*{c_1#106 <- `c_1*`, c_2#84 <- `c_2*`, c_3#30 <- `c_3*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#56)*{c#56 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#107*{c_1#107 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#85*{c_2#85 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#55*{c#55 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#108)), !($proj_lane__2(c_2#86)))).0))*{c_1#108 <- `c_1*`, c_2#86 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#99))*{iter#99 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#100))*{iter#100 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#109)), !($proj_lane__2(c_2#87)))).0))))*{c_1#109 <- `c_1*`, c_2#87 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#110)), !($proj_lane__2(c_2#88)))).0)))*{c_1#110 <- `c_1*`, c_2#88 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#58)*{c#58 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#111*{c_1#111 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#89*{c_2#89 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#57*{c#57 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#112)), !($proj_lane__2(c_2#90)))).0))*{c_1#112 <- `c_1*`, c_2#90 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#101))*{iter#101 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#102))*{iter#102 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#113)), !($proj_lane__2(c_2#91)))).0))))*{c_1#113 <- `c_1*`, c_2#91 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#114)), !($proj_lane__2(c_2#92)))).0)))*{c_1#114 <- `c_1*`, c_2#92 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#60)*{c#60 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#115*{c_1#115 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#93*{c_2#93 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#59*{c#59 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#116)), !($proj_lane__2(c_2#94)))).0))*{c_1#116 <- `c_1*`, c_2#94 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#103))*{iter#103 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#104))*{iter#104 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#117)), !($proj_lane__2(c_2#95)))).0))))*{c_1#117 <- `c_1*`, c_2#95 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#118)), !($proj_lane__2(c_2#96)))).0)))*{c_1#118 <- `c_1*`, c_2#96 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#62)*{c#62 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#119*{c_1#119 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#97*{c_2#97 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#61*{c#61 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#120)), !($proj_lane__2(c_2#98)))).0))*{c_1#120 <- `c_1*`, c_2#98 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#105))*{iter#105 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#106))*{iter#106 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#121)), !($proj_lane__2(c_2#99)))).0))))*{c_1#121 <- `c_1*`, c_2#99 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#122)), !($proj_lane__2(c_2#100)))).0)))*{c_1#122 <- `c_1*`, c_2#100 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#64)*{c#64 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#123*{c_1#123 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#101*{c_2#101 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#63*{c#63 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#124)), !($proj_lane__2(c_2#102)))).0))*{c_1#124 <- `c_1*`, c_2#102 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#107))*{iter#107 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#108))*{iter#108 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#125)), !($proj_lane__2(c_2#103)))).0))))*{c_1#125 <- `c_1*`, c_2#103 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#126)), !($proj_lane__2(c_2#104)))).0)))*{c_1#126 <- `c_1*`, c_2#104 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#66)*{c#66 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#127*{c_1#127 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#105*{c_2#105 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#65*{c#65 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#128)), !($proj_lane__2(c_2#106)))).0))*{c_1#128 <- `c_1*`, c_2#106 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#109))*{iter#109 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#110))*{iter#110 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#129)), !($proj_lane__2(c_2#107)))).0))))*{c_1#129 <- `c_1*`, c_2#107 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#130)), !($proj_lane__2(c_2#108)))).0)))*{c_1#130 <- `c_1*`, c_2#108 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#68)*{c#68 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#131*{c_1#131 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#109*{c_2#109 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#67*{c#67 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#132)), !($proj_lane__2(c_2#110)))).0))*{c_1#132 <- `c_1*`, c_2#110 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#111))*{iter#111 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#112))*{iter#112 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#133)), !($proj_lane__2(c_2#111)))).0))))*{c_1#133 <- `c_1*`, c_2#111 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#134)), !($proj_lane__2(c_2#112)))).0)))*{c_1#134 <- `c_1*`, c_2#112 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#70)*{c#70 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#135*{c_1#135 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#113*{c_2#113 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#69*{c#69 <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#136)), !($proj_lane__2(c_2#114)))).0))*{c_1#136 <- `c_1*`, c_2#114 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#113))*{iter#113 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#114))*{iter#114 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#137)), !($proj_lane__2(c_2#115)))).0))))*{c_1#137 <- `c_1*`, c_2#115 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#138)), !($proj_lane__2(c_2#116)))).0)))*{c_1#138 <- `c_1*`, c_2#116 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#72).0)))*{c#72 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#139*{c_1#139 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#117*{c_2#117 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#71*{c#71 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#140)))), !($proj_num__1(!($proj_lane__0(c_2#118)))))).0))*{c_1#140 <- `c_1*`, c_2#118 <- `c_2*`} + -- if ($isize(Inn) = $fsize(F32_Fnn)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#115))*{iter#115 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))), iter#116))*{iter#116 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size($numtype_Fnn(F32_Fnn)), $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#141)))), !($proj_num__1(!($proj_lane__0(c_2#119)))))).0))))*{c_1#141 <- `c_1*`, c_2#119 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#142)))), !($proj_num__1(!($proj_lane__0(c_2#120)))))).0)))*{c_1#142 <- `c_1*`, c_2#120 <- `c_2*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c#74).0)))*{c#74 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#143*{c_1#143 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#121*{c_2#121 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#73*{c#73 <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#144)))), !($proj_num__1(!($proj_lane__0(c_2#122)))))).0))*{c_1#144 <- `c_1*`, c_2#122 <- `c_2*`} + -- if ($isize(Inn) = $fsize(F64_Fnn)) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#117))*{iter#117 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))), iter#118))*{iter#118 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($size($numtype_Fnn(F64_Fnn)), $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#145)))), !($proj_num__1(!($proj_lane__0(c_2#123)))))).0))))*{c_1#145 <- `c_1*`, c_2#123 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1#146)))), !($proj_num__1(!($proj_lane__0(c_2#124)))))).0)))*{c_1#146 <- `c_1*`, c_2#124 <- `c_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#76)*{c#76 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#147*{c_1#147 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#75*{c#75 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#148)), i)*{c_1#148 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#119))*{iter#119 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#149)), i)))*{c_1#149 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#78)*{c#78 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#150*{c_1#150 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#77*{c#77 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#151)), i)*{c_1#151 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#120))*{iter#120 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#152)), i)))*{c_1#152 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#80)*{c#80 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#153*{c_1#153 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#79*{c#79 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#154)), i)*{c_1#154 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#121))*{iter#121 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#155)), i)))*{c_1#155 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#82)*{c#82 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#156*{c_1#156 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#81*{c#81 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#157)), i)*{c_1#157 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#122))*{iter#122 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#158)), i)))*{c_1#158 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#84)*{c#84 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#159*{c_1#159 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#83*{c#83 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#160)), i)*{c_1#160 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#123))*{iter#123 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#161)), i)))*{c_1#161 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#86)*{c#86 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#162*{c_1#162 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#85*{c#85 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#163)), i)*{c_1#163 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#124))*{iter#124 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#164)), i)))*{c_1#164 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#88)*{c#88 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#165*{c_1#165 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#87*{c#87 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#166)), i)*{c_1#166 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#125))*{iter#125 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#167)), i)))*{c_1#167 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#90)*{c#90 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#168*{c_1#168 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c*` : iN*} c#89*{c#89 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#169)), i)*{c_1#169 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#126))*{iter#126 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#170)), i)))*{c_1#170 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_0{M : nat, v_1 : uN, c : uN}: + `%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- let{`c_1*` : lane_*} c_1#171*{c_1#171 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#172)), `%`_iN(0))).0)*{c_1#172 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (if ($proj_lane__2(c_1#172) =/= ?()))*{c_1#172 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#127))*{iter#127 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#128))*{iter#128 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1#173)), `%`_iN(0))).0)))*{c_1#173 <- `c_1*`} + -- (if ($proj_lane__2(c_1#173) =/= ?()))*{c_1#173 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_1{M : nat, v_1 : uN, c : uN}: + `%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- let{`c_1*` : lane_*} c_1#174*{c_1#174 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#175)), `%`_iN(0))).0)*{c_1#175 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (if ($proj_lane__2(c_1#175) =/= ?()))*{c_1#175 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#129))*{iter#129 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#130))*{iter#130 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1#176)), `%`_iN(0))).0)))*{c_1#176 <- `c_1*`} + -- (if ($proj_lane__2(c_1#176) =/= ?()))*{c_1#176 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_2{M : nat, v_1 : uN, c : uN}: + `%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- let{`c_1*` : lane_*} c_1#177*{c_1#177 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#178)), `%`_iN(0))).0)*{c_1#178 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (if ($proj_lane__2(c_1#178) =/= ?()))*{c_1#178 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#131))*{iter#131 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#132))*{iter#132 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1#179)), `%`_iN(0))).0)))*{c_1#179 <- `c_1*`} + -- (if ($proj_lane__2(c_1#179) =/= ?()))*{c_1#179 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_3{M : nat, v_1 : uN, c : uN}: + `%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- let{`c_1*` : lane_*} c_1#180*{c_1#180 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#181)), `%`_iN(0))).0)*{c_1#181 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + -- (if ($proj_lane__2(c_1#181) =/= ?()))*{c_1#181 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#133))*{iter#133 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_bit: `%`(iter#134))*{iter#134 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1#182)), `%`_iN(0))).0)))*{c_1#182 <- `c_1*`} + -- (if ($proj_lane__2(c_1#182) =/= ?()))*{c_1#182 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c#92)*{c#92 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#183*{c_1#183 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#125*{c_2#125 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#91*{c#91 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#184))*{c_1#184 <- `c_1*`}, !($proj_lane__2(c_2#126)))*{c_2#126 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#135))*{iter#135 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#136))*{iter#136 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1#185))*{c_1#185 <- `c_1*`}, !($proj_lane__2(c_2#127)))))*{c_2#127 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c#94)*{c#94 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#186*{c_1#186 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#128*{c_2#128 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#93*{c#93 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#187))*{c_1#187 <- `c_1*`}, !($proj_lane__2(c_2#129)))*{c_2#129 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#137))*{iter#137 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#138))*{iter#138 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1#188))*{c_1#188 <- `c_1*`}, !($proj_lane__2(c_2#130)))))*{c_2#130 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c#96)*{c#96 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#189*{c_1#189 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#131*{c_2#131 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#95*{c#95 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#190))*{c_1#190 <- `c_1*`}, !($proj_lane__2(c_2#132)))*{c_2#132 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#139))*{iter#139 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#140))*{iter#140 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1#191))*{c_1#191 <- `c_1*`}, !($proj_lane__2(c_2#133)))))*{c_2#133 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c#98)*{c#98 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#192*{c_1#192 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#134*{c_2#134 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : iN*} c#97*{c#97 <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#193))*{c_1#193 <- `c_1*`}, !($proj_lane__2(c_2#135)))*{c_2#135 <- `c_2*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#141))*{iter#141 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#142))*{iter#142 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1#194))*{c_1#194 <- `c_1*`}, !($proj_lane__2(c_2#136)))))*{c_2#136 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), i#139234*{i#139234 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c#100*{c#100 <- `c*`})) + -- let{`c_1*` : lane_*} c_1#195*{c_1#195 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#137*{c_2#137 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#99*{c#99 <- `c*`} = c_1#196*{c_1#196 <- `c_1*`} ++ c_2#138*{c_2#138 <- `c_2*`}[$proj_uN_0(i#139237).0]*{i#139237 <- `i*`} + -- (if ($proj_uN_0(i#139237).0 < |c_1#196*{c_1#196 <- `c_1*`} ++ c_2#138*{c_2#138 <- `c_2*`}|))*{i#139237 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#143))*{iter#143 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), iter#144))*{iter#144 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_1{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), i#139245*{i#139245 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c#102*{c#102 <- `c*`})) + -- let{`c_1*` : lane_*} c_1#197*{c_1#197 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#139*{c_2#139 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#101*{c#101 <- `c*`} = c_1#198*{c_1#198 <- `c_1*`} ++ c_2#140*{c_2#140 <- `c_2*`}[$proj_uN_0(i#139248).0]*{i#139248 <- `i*`} + -- (if ($proj_uN_0(i#139248).0 < |c_1#198*{c_1#198 <- `c_1*`} ++ c_2#140*{c_2#140 <- `c_2*`}|))*{i#139248 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#145))*{iter#145 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), iter#146))*{iter#146 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_2{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i#139256*{i#139256 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c#104*{c#104 <- `c*`})) + -- let{`c_1*` : lane_*} c_1#199*{c_1#199 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#141*{c_2#141 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#103*{c#103 <- `c*`} = c_1#200*{c_1#200 <- `c_1*`} ++ c_2#142*{c_2#142 <- `c_2*`}[$proj_uN_0(i#139259).0]*{i#139259 <- `i*`} + -- (if ($proj_uN_0(i#139259).0 < |c_1#200*{c_1#200 <- `c_1*`} ++ c_2#142*{c_2#142 <- `c_2*`}|))*{i#139259 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#147))*{iter#147 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), iter#148))*{iter#148 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_3{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), i#139267*{i#139267 <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c#106*{c#106 <- `c*`})) + -- let{`c_1*` : lane_*} c_1#201*{c_1#201 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) + -- let{`c_2*` : lane_*} c_2#143*{c_2#143 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) + -- let{`c*` : lane_*} c#105*{c#105 <- `c*`} = c_1#202*{c_1#202 <- `c_1*`} ++ c_2#144*{c_2#144 <- `c_2*`}[$proj_uN_0(i#139270).0]*{i#139270 <- `i*`} + -- (if ($proj_uN_0(i#139270).0 < |c_1#202*{c_1#202 <- `c_1*`} ++ c_2#144*{c_2#144 <- `c_2*`}|))*{i#139270 <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#149))*{iter#149 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), iter#150))*{iter#150 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvunop_{Vnn : vectype, v : uN}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vunop_: `%%%%`(shape, vunop_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_0{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_1{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_2{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_3{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_4{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_5{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_6{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_7{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_8{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_9{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_10{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_11{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_12{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M_0, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_13{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M_0, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_14{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M_0, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_15{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M_0, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_16{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M_0, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_17{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M_0, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_18{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M_0, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_19{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M_0, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_20{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M_0, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_21{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M_0, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_22{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M_0, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_23{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M_0, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_24{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M_0, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_25{M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M_0, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vbinop_: `%%%%%`(shape, vbinop_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_0{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_1{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_2{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_3{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_4{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_5{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_6{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_7{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_8{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_9{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_10{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_11{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_24{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_25{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_26{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_27{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_28{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_29{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_30{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_31{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_32{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_33{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_34{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_35{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_36{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_37{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_38{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_39{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_40{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_41{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_42{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_43{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_44{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_45{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_46{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_47{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_48{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_49{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_50{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_51{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_52{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_53{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_54{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_55{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_56{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_57{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_58{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_59{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vternop_: `%%%%%%`(shape, vternop_, vec_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_0{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_1{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_2{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_3{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_4{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M_0, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_5{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M_0, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_6{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M_0, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_7{M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M_0, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vrelop_: `%%%%%`(shape, vrelop_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_0{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_1{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_2{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_3{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_4{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_5{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_6{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_7{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_8{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_9{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_10{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_11{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_24{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_25{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_26{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_27{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_28{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_29{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_30{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_31{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_32{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_33{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_34{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_35{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3061?{half#3061 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3062?{half#3062 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3063?{half#3063 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3064?{half#3064 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3065?{half#3065 <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3066?{half#3066 <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3067?{half#3067 <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half#3068?{half#3068 <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3489?{zero#3489 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#108))?{c#108 <- `c?`})) + -- let{`c?` : iN?} c#107?{c#107 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#151))?{iter#151 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3490?{zero#3490 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#110))?{c#110 <- `c?`})) + -- let{`c?` : iN?} c#109?{c#109 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#152))?{iter#152 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3491?{zero#3491 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#112))?{c#112 <- `c?`})) + -- let{`c?` : iN?} c#111?{c#111 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#153))?{iter#153 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3492?{zero#3492 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#114))?{c#114 <- `c?`})) + -- let{`c?` : iN?} c#113?{c#113 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#154))?{iter#154 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3493?{zero#3493 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#116))?{c#116 <- `c?`})) + -- let{`c?` : iN?} c#115?{c#115 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#155))?{iter#155 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3494?{zero#3494 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#118))?{c#118 <- `c?`})) + -- let{`c?` : iN?} c#117?{c#117 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#156))?{iter#156 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3495?{zero#3495 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#120))?{c#120 <- `c?`})) + -- let{`c?` : iN?} c#119?{c#119 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#157))?{iter#157 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3496?{zero#3496 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#122))?{c#122 <- `c?`})) + -- let{`c?` : iN?} c#121?{c#121 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#158))?{iter#158 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3497?{zero#3497 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#124))?{c#124 <- `c?`})) + -- let{`c?` : iN?} c#123?{c#123 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#159))?{iter#159 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3498?{zero#3498 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#126))?{c#126 <- `c?`})) + -- let{`c?` : iN?} c#125?{c#125 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#160))?{iter#160 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3499?{zero#3499 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#128))?{c#128 <- `c?`})) + -- let{`c?` : iN?} c#127?{c#127 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#161))?{iter#161 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3500?{zero#3500 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#130))?{c#130 <- `c?`})) + -- let{`c?` : iN?} c#129?{c#129 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#162))?{iter#162 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3501?{zero#3501 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#132))?{c#132 <- `c?`})) + -- let{`c?` : iN?} c#131?{c#131 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#163))?{iter#163 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3502?{zero#3502 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#134))?{c#134 <- `c?`})) + -- let{`c?` : iN?} c#133?{c#133 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#164))?{iter#164 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3503?{zero#3503 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#136))?{c#136 <- `c?`})) + -- let{`c?` : iN?} c#135?{c#135 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#165))?{iter#165 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3504?{zero#3504 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#138))?{c#138 <- `c?`})) + -- let{`c?` : iN?} c#137?{c#137 <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#166))?{iter#166 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3505?{zero#3505 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#140))?{c#140 <- `c?`})) + -- let{`c?` : iN?} c#139?{c#139 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#167))?{iter#167 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3506?{zero#3506 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#142))?{c#142 <- `c?`})) + -- let{`c?` : iN?} c#141?{c#141 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#168))?{iter#168 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3507?{zero#3507 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#144))?{c#144 <- `c?`})) + -- let{`c?` : iN?} c#143?{c#143 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#169))?{iter#169 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_43{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3508?{zero#3508 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#146))?{c#146 <- `c?`})) + -- let{`c?` : iN?} c#145?{c#145 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#170))?{iter#170 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3509?{zero#3509 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#148))?{c#148 <- `c?`})) + -- let{`c?` : iN?} c#147?{c#147 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#171))?{iter#171 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3510?{zero#3510 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#150))?{c#150 <- `c?`})) + -- let{`c?` : iN?} c#149?{c#149 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#172))?{iter#172 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3511?{zero#3511 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#152))?{c#152 <- `c?`})) + -- let{`c?` : iN?} c#151?{c#151 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#173))?{iter#173 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_47{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3512?{zero#3512 <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#154))?{c#154 <- `c?`})) + -- let{`c?` : iN?} c#153?{c#153 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#174))?{iter#174 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3513?{zero#3513 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#156))?{c#156 <- `c?`})) + -- let{`c?` : iN?} c#155?{c#155 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#175))?{iter#175 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3514?{zero#3514 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#158))?{c#158 <- `c?`})) + -- let{`c?` : iN?} c#157?{c#157 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#176))?{iter#176 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3515?{zero#3515 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#160))?{c#160 <- `c?`})) + -- let{`c?` : iN?} c#159?{c#159 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#177))?{iter#177 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_51{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3516?{zero#3516 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c#162))?{c#162 <- `c?`})) + -- let{`c?` : iN?} c#161?{c#161 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter#178))?{iter#178 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3517?{zero#3517 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#164))?{c#164 <- `c?`})) + -- let{`c?` : iN?} c#163?{c#163 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#179))?{iter#179 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3518?{zero#3518 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#166))?{c#166 <- `c?`})) + -- let{`c?` : iN?} c#165?{c#165 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#180))?{iter#180 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3519?{zero#3519 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#168))?{c#168 <- `c?`})) + -- let{`c?` : iN?} c#167?{c#167 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#181))?{iter#181 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_55{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero#3520?{zero#3520 <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c#170))?{c#170 <- `c?`})) + -- let{`c?` : iN?} c#169?{c#169 <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter#182))?{iter#182 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_56{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#172))*{c#172 <- `c*`}) + -- let{`c*` : fN*} c#171*{c#171 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#183))*{iter#183 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_57{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#174))*{c#174 <- `c*`}) + -- let{`c*` : fN*} c#173*{c#173 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#184))*{iter#184 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_58{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#176))*{c#176 <- `c*`}) + -- let{`c*` : fN*} c#175*{c#175 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#185))*{iter#185 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_59{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#178))*{c#178 <- `c*`}) + -- let{`c*` : fN*} c#177*{c#177 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#186))*{iter#186 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_60{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#180))*{c#180 <- `c*`}) + -- let{`c*` : fN*} c#179*{c#179 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#187))*{iter#187 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_61{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#182))*{c#182 <- `c*`}) + -- let{`c*` : fN*} c#181*{c#181 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#188))*{iter#188 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_62{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#184))*{c#184 <- `c*`}) + -- let{`c*` : fN*} c#183*{c#183 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#189))*{iter#189 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_63{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#186))*{c#186 <- `c*`}) + -- let{`c*` : fN*} c#185*{c#185 <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#190))*{iter#190 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_64{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#188))*{c#188 <- `c*`}) + -- let{`c*` : fN*} c#187*{c#187 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#191))*{iter#191 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_65{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#190))*{c#190 <- `c*`}) + -- let{`c*` : fN*} c#189*{c#189 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#192))*{iter#192 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_66{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#192))*{c#192 <- `c*`}) + -- let{`c*` : fN*} c#191*{c#191 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#193))*{iter#193 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_67{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#194))*{c#194 <- `c*`}) + -- let{`c*` : fN*} c#193*{c#193 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#194))*{iter#194 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_68{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#196))*{c#196 <- `c*`}) + -- let{`c*` : fN*} c#195*{c#195 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#195))*{iter#195 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_69{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c#198))*{c#198 <- `c*`}) + -- let{`c*` : fN*} c#197*{c#197 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter#196))*{iter#196 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_70{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#200))*{c#200 <- `c*`}) + -- let{`c*` : fN*} c#199*{c#199 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#197))*{iter#197 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_71{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c#202))*{c#202 <- `c*`}) + -- let{`c*` : fN*} c#201*{c#201 <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter#198))*{iter#198 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lcvtop___is_wf: `%%%%%`(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lcvtop___is_wf_0{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_, ret_val : lane_*, var_0 : lane_*}: + `%%%%%`(shape_1, shape_2, vcvtop__, lane_, ret_val) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_1, shape_2, vcvtop__) + -- wf_lane_: `%%`($lanetype(shape_1), lane_) + -- if (ret_val = var_0) + -- (wf_lane_: `%%`($lanetype(shape_2), ret_val))*{ret_val <- ret_val} + -- fun_lcvtop__: `%%%%%`(shape_1, shape_2, vcvtop__, lane_, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, M_0 : nat, `var_4*` : lane_**, `var_3*` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M_0)), vcvtop, v_1, v) + -- if ((var_0 = ?()) /\ (var_1 = ?())) + -- let{`c_1*` : lane_*} c_1#203*{c_1#203 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) + -- let{`c**` : lane_**} c#203*{c#203 <- `c*#29`}*{`c*#29` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#204*{c#204 <- `c*#30`})*{`c*#30` <- `c**`}) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#204*{c#204 <- `c*#30`})*{`c*#30` <- `c**`}| > 0) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), iter#199))*{iter#199 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#201))*{iter#201 <- iter#200}*{iter#200 <- $setproduct_(syntax lane_, var_3*{var_3 <- `var_3*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#202))*{iter#202 <- var_4}*{var_4 <- `var_4*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c#205*{c#205 <- `c*#31`})))*{`c*#31` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) + -- if (M = M_0) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#206, var_4))*{var_4 <- `var_4*`, c_1#206 <- `c_1*`} + -- if (|`var_4*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#205, var_3))*{var_3 <- `var_3*`, c_1#205 <- `c_1*`} + -- if (|`var_3*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1#204, var_2))*{var_2 <- `var_2*`, c_1#204 <- `c_1*`} + -- if (|`var_2*`| = |`c_1*`|) + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `var_3*` : lane_**, `var_2*` : lane_**, `var_1*` : lane_**, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- if (var_0 = ?(half)) + -- let{`c_1*` : lane_*} c_1#207*{c_1#207 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] + -- let{`c**` : lane_**} c#206*{c#206 <- `c*#32`}*{`c*#32` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#207*{c#207 <- `c*#33`})*{`c*#33` <- `c**`}) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#207*{c#207 <- `c*#33`})*{`c*#33` <- `c**`}| > 0) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#203))*{iter#203 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#205))*{iter#205 <- iter#204}*{iter#204 <- $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`})} + -- (wf_lane_: `%%`(Lnn_2, iter#206))*{iter#206 <- var_3}*{var_3 <- `var_3*`} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#208*{c#208 <- `c*#34`})))*{`c*#34` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#210, var_3))*{var_3 <- `var_3*`, c_1#210 <- `c_1*`} + -- if (|`var_3*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#209, var_2))*{var_2 <- `var_2*`, c_1#209 <- `c_1*`} + -- if (|`var_2*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#208, var_1))*{var_1 <- `var_1*`, c_1#208 <- `c_1*`} + -- if (|`var_1*`| = |`c_1*`|) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `var_3*` : lane_**, `var_2*` : lane_**, `var_1*` : lane_**, var_0 : zero?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- if (var_0 = ?(ZERO_zero)) + -- let{`c_1*` : lane_*} c_1#211*{c_1#211 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) + -- let{`c**` : lane_**} c#209*{c#209 <- `c*#35`}*{`c*#35` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`} ++ [$zero(Lnn_2)]^M_1{}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#210*{c#210 <- `c*#36`})*{`c*#36` <- `c**`}) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#210*{c#210 <- `c*#36`})*{`c*#36` <- `c**`}| > 0) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), iter#207))*{iter#207 <- $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter#209))*{iter#209 <- iter#208}*{iter#208 <- $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`} ++ [$zero(Lnn_2)]^M_1{})} + -- (wf_lane_: `%%`(Lnn_2, iter#210))*{iter#210 <- var_3}*{var_3 <- `var_3*`} + -- wf_lane_: `%%`(Lnn_2, $zero(Lnn_2)) + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c#211*{c#211 <- `c*#37`})))*{`c*#37` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#214, var_3))*{var_3 <- `var_3*`, c_1#214 <- `c_1*`} + -- if (|`var_3*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#213, var_2))*{var_2 <- `var_2*`, c_1#213 <- `c_1*`} + -- if (|`var_2*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1#212, var_1))*{var_1 <- `var_1*`, c_1#212 <- `c_1*`} + -- if (|`var_1*`| = |`c_1*`|) + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vshiftop_: `%%%%%`(ishape, vshiftop_, vec_, u32, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_0{M : nat, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_1{M : nat, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_2{M : nat, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_3{M : nat, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_4{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_5{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_6{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_7{M : nat, sx : sx, v : uN, i : uN, M_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M_0, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vbitmaskop_: `%%%`(ishape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_0{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_1{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_2{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_3{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vswizzlop_: `%%%%%`(bshape, vswizzlop_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vswizzlop__case_0{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M_0, SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2)) + -- if (M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vswizzlop__case_1{M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M_0, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2)) + -- if (M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vshufflop_: `%%%%%`(bshape, laneidx*, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, var_0 : vec_}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i#139761*{i#139761 <- `i*`}, v_1, v_2, var_0) + -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#215*{c_1#215 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#145*{c_2#145 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#1*{c'_1#1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#216)))*{c_1#216 <- `c_1*`} + -- (if ($proj_lane__2(c_1#216) =/= ?()))*{c_1#216 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#1*{c'_2#1 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#146)))*{c_2#146 <- `c_2*`} + -- (if ($proj_lane__2(c_2#146) =/= ?()))*{c_2#146 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#2)*{c'_1#2 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#2)*{c'_2#2 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#211))*{iter#211 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#212))*{iter#212 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#217)))))*{c_1#217 <- `c_1*`} + -- (if ($proj_lane__2(c_1#217) =/= ?()))*{c_1#217 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#147)))))*{c_2#147 <- `c_2*`} + -- (if ($proj_lane__2(c_2#147) =/= ?()))*{c_2#147 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#3)*{c'_1#3 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#3)*{c'_2#3 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#4)))*{c'_1#4 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#4)))*{c'_2#4 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#218*{c_1#218 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#148*{c_2#148 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#5*{c'_1#5 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#219)))*{c_1#219 <- `c_1*`} + -- (if ($proj_lane__2(c_1#219) =/= ?()))*{c_1#219 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#5*{c'_2#5 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#149)))*{c_2#149 <- `c_2*`} + -- (if ($proj_lane__2(c_2#149) =/= ?()))*{c_2#149 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#6)*{c'_1#6 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#6)*{c'_2#6 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#213))*{iter#213 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#214))*{iter#214 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#220)))))*{c_1#220 <- `c_1*`} + -- (if ($proj_lane__2(c_1#220) =/= ?()))*{c_1#220 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#150)))))*{c_2#150 <- `c_2*`} + -- (if ($proj_lane__2(c_2#150) =/= ?()))*{c_2#150 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#7)*{c'_1#7 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#7)*{c'_2#7 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#8)))*{c'_1#8 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#8)))*{c'_2#8 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#221*{c_1#221 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#151*{c_2#151 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#9*{c'_1#9 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#222)))*{c_1#222 <- `c_1*`} + -- (if ($proj_lane__2(c_1#222) =/= ?()))*{c_1#222 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#9*{c'_2#9 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#152)))*{c_2#152 <- `c_2*`} + -- (if ($proj_lane__2(c_2#152) =/= ?()))*{c_2#152 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#10)*{c'_1#10 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#10)*{c'_2#10 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#215))*{iter#215 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#216))*{iter#216 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#223)))))*{c_1#223 <- `c_1*`} + -- (if ($proj_lane__2(c_1#223) =/= ?()))*{c_1#223 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#153)))))*{c_2#153 <- `c_2*`} + -- (if ($proj_lane__2(c_2#153) =/= ?()))*{c_2#153 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#11)*{c'_1#11 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#11)*{c'_2#11 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#12)))*{c'_1#12 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#12)))*{c'_2#12 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#224*{c_1#224 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#154*{c_2#154 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#13*{c'_1#13 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#225)))*{c_1#225 <- `c_1*`} + -- (if ($proj_lane__2(c_1#225) =/= ?()))*{c_1#225 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#13*{c'_2#13 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#155)))*{c_2#155 <- `c_2*`} + -- (if ($proj_lane__2(c_2#155) =/= ?()))*{c_2#155 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#14)*{c'_1#14 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#14)*{c'_2#14 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#217))*{iter#217 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#218))*{iter#218 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#226)))))*{c_1#226 <- `c_1*`} + -- (if ($proj_lane__2(c_1#226) =/= ?()))*{c_1#226 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2#156)))))*{c_2#156 <- `c_2*`} + -- (if ($proj_lane__2(c_2#156) =/= ?()))*{c_2#156 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1#15)*{c'_1#15 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2#15)*{c'_2#15 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1#16)))*{c'_1#16 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2#16)))*{c'_2#16 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#227*{c_1#227 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#157*{c_2#157 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#17*{c'_1#17 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#228)))*{c_1#228 <- `c_1*`} + -- (if ($proj_lane__2(c_1#228) =/= ?()))*{c_1#228 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#17*{c'_2#17 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#158)))*{c_2#158 <- `c_2*`} + -- (if ($proj_lane__2(c_2#158) =/= ?()))*{c_2#158 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#18)*{c'_1#18 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#18)*{c'_2#18 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#219))*{iter#219 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#220))*{iter#220 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#229)))))*{c_1#229 <- `c_1*`} + -- (if ($proj_lane__2(c_1#229) =/= ?()))*{c_1#229 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#159)))))*{c_2#159 <- `c_2*`} + -- (if ($proj_lane__2(c_2#159) =/= ?()))*{c_2#159 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#19)*{c'_1#19 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#19)*{c'_2#19 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#20)))*{c'_1#20 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#20)))*{c'_2#20 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#230*{c_1#230 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#160*{c_2#160 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#21*{c'_1#21 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#231)))*{c_1#231 <- `c_1*`} + -- (if ($proj_lane__2(c_1#231) =/= ?()))*{c_1#231 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#21*{c'_2#21 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#161)))*{c_2#161 <- `c_2*`} + -- (if ($proj_lane__2(c_2#161) =/= ?()))*{c_2#161 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#22)*{c'_1#22 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#22)*{c'_2#22 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#221))*{iter#221 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#222))*{iter#222 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#232)))))*{c_1#232 <- `c_1*`} + -- (if ($proj_lane__2(c_1#232) =/= ?()))*{c_1#232 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#162)))))*{c_2#162 <- `c_2*`} + -- (if ($proj_lane__2(c_2#162) =/= ?()))*{c_2#162 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#23)*{c'_1#23 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#23)*{c'_2#23 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#24)))*{c'_1#24 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#24)))*{c'_2#24 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#233*{c_1#233 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#163*{c_2#163 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#25*{c'_1#25 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#234)))*{c_1#234 <- `c_1*`} + -- (if ($proj_lane__2(c_1#234) =/= ?()))*{c_1#234 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#25*{c'_2#25 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#164)))*{c_2#164 <- `c_2*`} + -- (if ($proj_lane__2(c_2#164) =/= ?()))*{c_2#164 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#26)*{c'_1#26 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#26)*{c'_2#26 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#223))*{iter#223 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#224))*{iter#224 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#235)))))*{c_1#235 <- `c_1*`} + -- (if ($proj_lane__2(c_1#235) =/= ?()))*{c_1#235 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#165)))))*{c_2#165 <- `c_2*`} + -- (if ($proj_lane__2(c_2#165) =/= ?()))*{c_2#165 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#27)*{c'_1#27 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#27)*{c'_2#27 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#28)))*{c'_1#28 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#28)))*{c'_2#28 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#236*{c_1#236 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#166*{c_2#166 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#29*{c'_1#29 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#237)))*{c_1#237 <- `c_1*`} + -- (if ($proj_lane__2(c_1#237) =/= ?()))*{c_1#237 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#29*{c'_2#29 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#167)))*{c_2#167 <- `c_2*`} + -- (if ($proj_lane__2(c_2#167) =/= ?()))*{c_2#167 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#30)*{c'_1#30 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#30)*{c'_2#30 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#225))*{iter#225 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#226))*{iter#226 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#238)))))*{c_1#238 <- `c_1*`} + -- (if ($proj_lane__2(c_1#238) =/= ?()))*{c_1#238 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2#168)))))*{c_2#168 <- `c_2*`} + -- (if ($proj_lane__2(c_2#168) =/= ?()))*{c_2#168 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1#31)*{c'_1#31 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2#31)*{c'_2#31 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1#32)))*{c'_1#32 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2#32)))*{c'_2#32 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#239*{c_1#239 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#169*{c_2#169 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#33*{c'_1#33 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#240)))*{c_1#240 <- `c_1*`} + -- (if ($proj_lane__2(c_1#240) =/= ?()))*{c_1#240 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#33*{c'_2#33 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#170)))*{c_2#170 <- `c_2*`} + -- (if ($proj_lane__2(c_2#170) =/= ?()))*{c_2#170 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#34)*{c'_1#34 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#34)*{c'_2#34 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#227))*{iter#227 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#228))*{iter#228 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#241)))))*{c_1#241 <- `c_1*`} + -- (if ($proj_lane__2(c_1#241) =/= ?()))*{c_1#241 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#171)))))*{c_2#171 <- `c_2*`} + -- (if ($proj_lane__2(c_2#171) =/= ?()))*{c_2#171 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#35)*{c'_1#35 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#35)*{c'_2#35 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#36)))*{c'_1#36 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#36)))*{c'_2#36 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#242*{c_1#242 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#172*{c_2#172 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#37*{c'_1#37 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#243)))*{c_1#243 <- `c_1*`} + -- (if ($proj_lane__2(c_1#243) =/= ?()))*{c_1#243 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#37*{c'_2#37 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#173)))*{c_2#173 <- `c_2*`} + -- (if ($proj_lane__2(c_2#173) =/= ?()))*{c_2#173 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#38)*{c'_1#38 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#38)*{c'_2#38 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#229))*{iter#229 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#230))*{iter#230 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#244)))))*{c_1#244 <- `c_1*`} + -- (if ($proj_lane__2(c_1#244) =/= ?()))*{c_1#244 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#174)))))*{c_2#174 <- `c_2*`} + -- (if ($proj_lane__2(c_2#174) =/= ?()))*{c_2#174 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#39)*{c'_1#39 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#39)*{c'_2#39 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#40)))*{c'_1#40 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#40)))*{c'_2#40 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#245*{c_1#245 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#175*{c_2#175 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#41*{c'_1#41 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#246)))*{c_1#246 <- `c_1*`} + -- (if ($proj_lane__2(c_1#246) =/= ?()))*{c_1#246 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#41*{c'_2#41 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#176)))*{c_2#176 <- `c_2*`} + -- (if ($proj_lane__2(c_2#176) =/= ?()))*{c_2#176 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#42)*{c'_1#42 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#42)*{c'_2#42 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#231))*{iter#231 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#232))*{iter#232 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#247)))))*{c_1#247 <- `c_1*`} + -- (if ($proj_lane__2(c_1#247) =/= ?()))*{c_1#247 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#177)))))*{c_2#177 <- `c_2*`} + -- (if ($proj_lane__2(c_2#177) =/= ?()))*{c_2#177 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#43)*{c'_1#43 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#43)*{c'_2#43 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#44)))*{c'_1#44 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#44)))*{c'_2#44 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#248*{c_1#248 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#178*{c_2#178 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#45*{c'_1#45 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#249)))*{c_1#249 <- `c_1*`} + -- (if ($proj_lane__2(c_1#249) =/= ?()))*{c_1#249 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#45*{c'_2#45 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#179)))*{c_2#179 <- `c_2*`} + -- (if ($proj_lane__2(c_2#179) =/= ?()))*{c_2#179 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#46)*{c'_1#46 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#46)*{c'_2#46 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#233))*{iter#233 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#234))*{iter#234 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#250)))))*{c_1#250 <- `c_1*`} + -- (if ($proj_lane__2(c_1#250) =/= ?()))*{c_1#250 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2#180)))))*{c_2#180 <- `c_2*`} + -- (if ($proj_lane__2(c_2#180) =/= ?()))*{c_2#180 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1#47)*{c'_1#47 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2#47)*{c'_2#47 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1#48)))*{c'_1#48 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2#48)))*{c'_2#48 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#251*{c_1#251 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#181*{c_2#181 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#49*{c'_1#49 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#252)))*{c_1#252 <- `c_1*`} + -- (if ($proj_lane__2(c_1#252) =/= ?()))*{c_1#252 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#49*{c'_2#49 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#182)))*{c_2#182 <- `c_2*`} + -- (if ($proj_lane__2(c_2#182) =/= ?()))*{c_2#182 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#50)*{c'_1#50 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#50)*{c'_2#50 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#235))*{iter#235 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#236))*{iter#236 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#253)))))*{c_1#253 <- `c_1*`} + -- (if ($proj_lane__2(c_1#253) =/= ?()))*{c_1#253 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#183)))))*{c_2#183 <- `c_2*`} + -- (if ($proj_lane__2(c_2#183) =/= ?()))*{c_2#183 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#51)*{c'_1#51 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#51)*{c'_2#51 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#52)))*{c'_1#52 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#52)))*{c'_2#52 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#254*{c_1#254 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#184*{c_2#184 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#53*{c'_1#53 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#255)))*{c_1#255 <- `c_1*`} + -- (if ($proj_lane__2(c_1#255) =/= ?()))*{c_1#255 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#53*{c'_2#53 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#185)))*{c_2#185 <- `c_2*`} + -- (if ($proj_lane__2(c_2#185) =/= ?()))*{c_2#185 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#54)*{c'_1#54 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#54)*{c'_2#54 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#237))*{iter#237 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#238))*{iter#238 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#256)))))*{c_1#256 <- `c_1*`} + -- (if ($proj_lane__2(c_1#256) =/= ?()))*{c_1#256 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#186)))))*{c_2#186 <- `c_2*`} + -- (if ($proj_lane__2(c_2#186) =/= ?()))*{c_2#186 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#55)*{c'_1#55 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#55)*{c'_2#55 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#56)))*{c'_1#56 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#56)))*{c'_2#56 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#257*{c_1#257 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#187*{c_2#187 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#57*{c'_1#57 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#258)))*{c_1#258 <- `c_1*`} + -- (if ($proj_lane__2(c_1#258) =/= ?()))*{c_1#258 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#57*{c'_2#57 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#188)))*{c_2#188 <- `c_2*`} + -- (if ($proj_lane__2(c_2#188) =/= ?()))*{c_2#188 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#58)*{c'_1#58 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#58)*{c'_2#58 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#239))*{iter#239 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#240))*{iter#240 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#259)))))*{c_1#259 <- `c_1*`} + -- (if ($proj_lane__2(c_1#259) =/= ?()))*{c_1#259 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#189)))))*{c_2#189 <- `c_2*`} + -- (if ($proj_lane__2(c_2#189) =/= ?()))*{c_2#189 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#59)*{c'_1#59 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#59)*{c'_2#59 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#60)))*{c'_1#60 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#60)))*{c'_2#60 <- `c'_2*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- let{`c_1*` : lane_*} c_1#260*{c_1#260 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c_2*` : lane_*} c_2#190*{c_2#190 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) + -- let{`c'_1*` : iN*} c'_1#61*{c'_1#61 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#261)))*{c_1#261 <- `c_1*`} + -- (if ($proj_lane__2(c_1#261) =/= ?()))*{c_1#261 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#61*{c'_2#61 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#191)))*{c_2#191 <- `c_2*`} + -- (if ($proj_lane__2(c_2#191) =/= ?()))*{c_2#191 <- `c_2*`} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#62)*{c'_1#62 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#62)*{c'_2#62 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#241))*{iter#241 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#242))*{iter#242 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#262)))))*{c_1#262 <- `c_1*`} + -- (if ($proj_lane__2(c_1#262) =/= ?()))*{c_1#262 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2#192)))))*{c_2#192 <- `c_2*`} + -- (if ($proj_lane__2(c_2#192) =/= ?()))*{c_2#192 <- `c_2*`} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1#63)*{c'_1#63 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2#63)*{c'_2#63 <- `c'_2*`})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1#64)))*{c'_1#64 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2#64)))*{c'_2#64 <- `c'_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivadd_pairwise_(N : N, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i#139986*{i#139986 <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax N, [j_1#1 j_2#1]*{j_1#1 <- `j_1*`, j_2#1 <- `j_2*`}) = $proj_uN_0(i#139987).0*{i#139987 <- `i*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#213)*{c#213 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#263*{c_1#263 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#65*{c'_1#65 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#264)))*{c_1#264 <- `c_1*`} + -- let{`c*` : iN*} c#212*{c#212 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#66*{c'_1#66 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#243))*{iter#243 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#265)))))*{c_1#265 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#244))*{iter#244 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#67*{c'_1#67 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#215)*{c#215 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#266*{c_1#266 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#68*{c'_1#68 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#267)))*{c_1#267 <- `c_1*`} + -- let{`c*` : iN*} c#214*{c#214 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#69*{c'_1#69 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#245))*{iter#245 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#268)))))*{c_1#268 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#246))*{iter#246 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#70*{c'_1#70 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#217)*{c#217 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#269*{c_1#269 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#71*{c'_1#71 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#270)))*{c_1#270 <- `c_1*`} + -- let{`c*` : iN*} c#216*{c#216 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#72*{c'_1#72 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#247))*{iter#247 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#271)))))*{c_1#271 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#248))*{iter#248 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#73*{c'_1#73 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#219)*{c#219 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#272*{c_1#272 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#74*{c'_1#74 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#273)))*{c_1#273 <- `c_1*`} + -- let{`c*` : iN*} c#218*{c#218 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#75*{c'_1#75 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#249))*{iter#249 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1#274)))))*{c_1#274 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#250))*{iter#250 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#76*{c'_1#76 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#221)*{c#221 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#275*{c_1#275 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#77*{c'_1#77 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#276)))*{c_1#276 <- `c_1*`} + -- let{`c*` : iN*} c#220*{c#220 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#78*{c'_1#78 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#251))*{iter#251 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#277)))))*{c_1#277 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#252))*{iter#252 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#79*{c'_1#79 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#223)*{c#223 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#278*{c_1#278 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#80*{c'_1#80 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#279)))*{c_1#279 <- `c_1*`} + -- let{`c*` : iN*} c#222*{c#222 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#81*{c'_1#81 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#253))*{iter#253 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#280)))))*{c_1#280 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#254))*{iter#254 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#82*{c'_1#82 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#225)*{c#225 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#281*{c_1#281 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#83*{c'_1#83 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#282)))*{c_1#282 <- `c_1*`} + -- let{`c*` : iN*} c#224*{c#224 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#84*{c'_1#84 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#255))*{iter#255 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#283)))))*{c_1#283 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#256))*{iter#256 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#85*{c'_1#85 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#227)*{c#227 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#284*{c_1#284 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#86*{c'_1#86 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#285)))*{c_1#285 <- `c_1*`} + -- let{`c*` : iN*} c#226*{c#226 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#87*{c'_1#87 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#257))*{iter#257 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1#286)))))*{c_1#286 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#258))*{iter#258 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#88*{c'_1#88 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#229)*{c#229 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#287*{c_1#287 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#89*{c'_1#89 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#288)))*{c_1#288 <- `c_1*`} + -- let{`c*` : iN*} c#228*{c#228 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#90*{c'_1#90 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#259))*{iter#259 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#289)))))*{c_1#289 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#260))*{iter#260 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#91*{c'_1#91 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#231)*{c#231 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#290*{c_1#290 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#92*{c'_1#92 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#291)))*{c_1#291 <- `c_1*`} + -- let{`c*` : iN*} c#230*{c#230 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#93*{c'_1#93 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#261))*{iter#261 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#292)))))*{c_1#292 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#262))*{iter#262 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#94*{c'_1#94 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#233)*{c#233 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#293*{c_1#293 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#95*{c'_1#95 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#294)))*{c_1#294 <- `c_1*`} + -- let{`c*` : iN*} c#232*{c#232 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#96*{c'_1#96 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#263))*{iter#263 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#295)))))*{c_1#295 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#264))*{iter#264 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#97*{c'_1#97 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#235)*{c#235 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#296*{c_1#296 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#98*{c'_1#98 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#297)))*{c_1#297 <- `c_1*`} + -- let{`c*` : iN*} c#234*{c#234 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#99*{c'_1#99 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#265))*{iter#265 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1#298)))))*{c_1#298 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#266))*{iter#266 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#100*{c'_1#100 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#237)*{c#237 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#299*{c_1#299 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#101*{c'_1#101 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#300)))*{c_1#300 <- `c_1*`} + -- let{`c*` : iN*} c#236*{c#236 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#102*{c'_1#102 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#267))*{iter#267 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#301)))))*{c_1#301 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#268))*{iter#268 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#103*{c'_1#103 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#239)*{c#239 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#302*{c_1#302 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#104*{c'_1#104 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#303)))*{c_1#303 <- `c_1*`} + -- let{`c*` : iN*} c#238*{c#238 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#105*{c'_1#105 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#269))*{iter#269 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#304)))))*{c_1#304 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#270))*{iter#270 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#106*{c'_1#106 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#241)*{c#241 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#305*{c_1#305 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#107*{c'_1#107 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#306)))*{c_1#306 <- `c_1*`} + -- let{`c*` : iN*} c#240*{c#240 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#108*{c'_1#108 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#271))*{iter#271 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#307)))))*{c_1#307 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#272))*{iter#272 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#109*{c'_1#109 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#243)*{c#243 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#308*{c_1#308 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) + -- let{`c'_1*` : iN*} c'_1#110*{c'_1#110 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#309)))*{c_1#309 <- `c_1*`} + -- let{`c*` : iN*} c#242*{c#242 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#111*{c'_1#111 <- `c'_1*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#273))*{iter#273 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1#310)))))*{c_1#310 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#274))*{iter#274 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#112*{c'_1#112 <- `c'_1*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextunop__: `%%%%%`(ishape, ishape, vextunop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#1*{i_1#1 <- `i_1*`}, i_2#1*{i_2#1 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#2 j_2#2]*{j_1#2 <- `j_1*`, j_2#2 <- `j_2*`}) = $imul_(N, i_1#2, i_2#2)*{i_1#2 <- `i_1*`, i_2#2 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#275))*{iter#275 <- $concat_(syntax iN, [j_1#3 j_2#3]*{j_1#3 <- `j_1*`, j_2#3 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#3, i_2#3)))*{i_1#3 <- `i_1*`, i_2#3 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_sat_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1#4*{i_1#4 <- `i_1*`}, i_2#4*{i_2#4 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1#4 j_2#4]*{j_1#4 <- `j_1*`, j_2#4 <- `j_2*`}) = $imul_(N, i_1#5, i_2#5)*{i_1#5 <- `i_1*`, i_2#5 <- `i_2*`}) + -- (wf_uN: `%%`(N, iter#276))*{iter#276 <- $concat_(syntax iN, [j_1#5 j_2#5]*{j_1#5 <- `j_1*`, j_2#5 <- `j_2*`})} + -- (wf_uN: `%%`(N, $imul_(N, i_1#6, i_2#6)))*{i_1#6 <- `i_1*`, i_2#6 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#245)*{c#245 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#311*{c_1#311 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#193*{c_2#193 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#113*{c'_1#113 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#312)))*{c_1#312 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#65*{c'_2#65 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#194)))*{c_2#194 <- `c_2*`} + -- let{`c*` : iN*} c#244*{c#244 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#114*{c'_1#114 <- `c'_1*`}, c'_2#66*{c'_2#66 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#277))*{iter#277 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#278))*{iter#278 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#313)))))*{c_1#313 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#195)))))*{c_2#195 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#279))*{iter#279 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#115*{c'_1#115 <- `c'_1*`}, c'_2#67*{c'_2#67 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#247)*{c#247 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#314*{c_1#314 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#196*{c_2#196 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#116*{c'_1#116 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#315)))*{c_1#315 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#68*{c'_2#68 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#197)))*{c_2#197 <- `c_2*`} + -- let{`c*` : iN*} c#246*{c#246 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#117*{c'_1#117 <- `c'_1*`}, c'_2#69*{c'_2#69 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#280))*{iter#280 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#281))*{iter#281 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#316)))))*{c_1#316 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#198)))))*{c_2#198 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#282))*{iter#282 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#118*{c'_1#118 <- `c'_1*`}, c'_2#70*{c'_2#70 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#249)*{c#249 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#317*{c_1#317 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#199*{c_2#199 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#119*{c'_1#119 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#318)))*{c_1#318 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#71*{c'_2#71 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#200)))*{c_2#200 <- `c_2*`} + -- let{`c*` : iN*} c#248*{c#248 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#120*{c'_1#120 <- `c'_1*`}, c'_2#72*{c'_2#72 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#283))*{iter#283 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#284))*{iter#284 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#319)))))*{c_1#319 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#201)))))*{c_2#201 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#285))*{iter#285 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#121*{c'_1#121 <- `c'_1*`}, c'_2#73*{c'_2#73 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c#251)*{c#251 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#320*{c_1#320 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#202*{c_2#202 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#122*{c'_1#122 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#321)))*{c_1#321 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#74*{c'_2#74 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#203)))*{c_2#203 <- `c_2*`} + -- let{`c*` : iN*} c#250*{c#250 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#123*{c'_1#123 <- `c'_1*`}, c'_2#75*{c'_2#75 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#286))*{iter#286 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#287))*{iter#287 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1#322)))))*{c_1#322 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2#204)))))*{c_2#204 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter#288))*{iter#288 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1#124*{c'_1#124 <- `c'_1*`}, c'_2#76*{c'_2#76 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#253)*{c#253 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#323*{c_1#323 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#205*{c_2#205 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#125*{c'_1#125 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#324)))*{c_1#324 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#77*{c'_2#77 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#206)))*{c_2#206 <- `c_2*`} + -- let{`c*` : iN*} c#252*{c#252 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#126*{c'_1#126 <- `c'_1*`}, c'_2#78*{c'_2#78 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#289))*{iter#289 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#290))*{iter#290 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#325)))))*{c_1#325 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#207)))))*{c_2#207 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#291))*{iter#291 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#127*{c'_1#127 <- `c'_1*`}, c'_2#79*{c'_2#79 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#255)*{c#255 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#326*{c_1#326 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#208*{c_2#208 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#128*{c'_1#128 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#327)))*{c_1#327 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#80*{c'_2#80 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#209)))*{c_2#209 <- `c_2*`} + -- let{`c*` : iN*} c#254*{c#254 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#129*{c'_1#129 <- `c'_1*`}, c'_2#81*{c'_2#81 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#292))*{iter#292 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#293))*{iter#293 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#328)))))*{c_1#328 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#210)))))*{c_2#210 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#294))*{iter#294 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#130*{c'_1#130 <- `c'_1*`}, c'_2#82*{c'_2#82 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#257)*{c#257 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#329*{c_1#329 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#211*{c_2#211 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#131*{c'_1#131 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#330)))*{c_1#330 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#83*{c'_2#83 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#212)))*{c_2#212 <- `c_2*`} + -- let{`c*` : iN*} c#256*{c#256 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#132*{c'_1#132 <- `c'_1*`}, c'_2#84*{c'_2#84 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#295))*{iter#295 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#296))*{iter#296 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#331)))))*{c_1#331 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#213)))))*{c_2#213 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#297))*{iter#297 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#133*{c'_1#133 <- `c'_1*`}, c'_2#85*{c'_2#85 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c#259)*{c#259 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#332*{c_1#332 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#214*{c_2#214 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#134*{c'_1#134 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#333)))*{c_1#333 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#86*{c'_2#86 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#215)))*{c_2#215 <- `c_2*`} + -- let{`c*` : iN*} c#258*{c#258 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#135*{c'_1#135 <- `c'_1*`}, c'_2#87*{c'_2#87 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#298))*{iter#298 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#299))*{iter#299 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1#334)))))*{c_1#334 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2#216)))))*{c_2#216 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter#300))*{iter#300 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1#136*{c'_1#136 <- `c'_1*`}, c'_2#88*{c'_2#88 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#261)*{c#261 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#335*{c_1#335 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#217*{c_2#217 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#137*{c'_1#137 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#336)))*{c_1#336 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#89*{c'_2#89 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#218)))*{c_2#218 <- `c_2*`} + -- let{`c*` : iN*} c#260*{c#260 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#138*{c'_1#138 <- `c'_1*`}, c'_2#90*{c'_2#90 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#301))*{iter#301 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#302))*{iter#302 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#337)))))*{c_1#337 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#219)))))*{c_2#219 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#303))*{iter#303 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#139*{c'_1#139 <- `c'_1*`}, c'_2#91*{c'_2#91 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#263)*{c#263 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#338*{c_1#338 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#220*{c_2#220 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#140*{c'_1#140 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#339)))*{c_1#339 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#92*{c'_2#92 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#221)))*{c_2#221 <- `c_2*`} + -- let{`c*` : iN*} c#262*{c#262 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#141*{c'_1#141 <- `c'_1*`}, c'_2#93*{c'_2#93 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#304))*{iter#304 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#305))*{iter#305 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#340)))))*{c_1#340 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#222)))))*{c_2#222 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#306))*{iter#306 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#142*{c'_1#142 <- `c'_1*`}, c'_2#94*{c'_2#94 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#265)*{c#265 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#341*{c_1#341 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#223*{c_2#223 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#143*{c'_1#143 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#342)))*{c_1#342 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#95*{c'_2#95 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#224)))*{c_2#224 <- `c_2*`} + -- let{`c*` : iN*} c#264*{c#264 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#144*{c'_1#144 <- `c'_1*`}, c'_2#96*{c'_2#96 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#307))*{iter#307 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#308))*{iter#308 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#343)))))*{c_1#343 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#225)))))*{c_2#225 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#309))*{iter#309 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#145*{c'_1#145 <- `c'_1*`}, c'_2#97*{c'_2#97 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c#267)*{c#267 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#344*{c_1#344 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#226*{c_2#226 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#146*{c'_1#146 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#345)))*{c_1#345 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#98*{c'_2#98 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#227)))*{c_2#227 <- `c_2*`} + -- let{`c*` : iN*} c#266*{c#266 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#147*{c'_1#147 <- `c'_1*`}, c'_2#99*{c'_2#99 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#310))*{iter#310 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#311))*{iter#311 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1#346)))))*{c_1#346 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2#228)))))*{c_2#228 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter#312))*{iter#312 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1#148*{c'_1#148 <- `c'_1*`}, c'_2#100*{c'_2#100 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#269)*{c#269 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#347*{c_1#347 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#229*{c_2#229 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#149*{c'_1#149 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#348)))*{c_1#348 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#101*{c'_2#101 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#230)))*{c_2#230 <- `c_2*`} + -- let{`c*` : iN*} c#268*{c#268 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#150*{c'_1#150 <- `c'_1*`}, c'_2#102*{c'_2#102 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#313))*{iter#313 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), iter#314))*{iter#314 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#349)))))*{c_1#349 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#231)))))*{c_2#231 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#315))*{iter#315 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#151*{c'_1#151 <- `c'_1*`}, c'_2#103*{c'_2#103 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#271)*{c#271 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#350*{c_1#350 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#232*{c_2#232 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#152*{c'_1#152 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#351)))*{c_1#351 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#104*{c'_2#104 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#233)))*{c_2#233 <- `c_2*`} + -- let{`c*` : iN*} c#270*{c#270 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#153*{c'_1#153 <- `c'_1*`}, c'_2#105*{c'_2#105 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#316))*{iter#316 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), iter#317))*{iter#317 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#352)))))*{c_1#352 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#234)))))*{c_2#234 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#318))*{iter#318 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#154*{c'_1#154 <- `c'_1*`}, c'_2#106*{c'_2#106 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#273)*{c#273 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#353*{c_1#353 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#235*{c_2#235 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#155*{c'_1#155 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#354)))*{c_1#354 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#107*{c'_2#107 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#236)))*{c_2#236 <- `c_2*`} + -- let{`c*` : iN*} c#272*{c#272 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#156*{c'_1#156 <- `c'_1*`}, c'_2#108*{c'_2#108 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#319))*{iter#319 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), iter#320))*{iter#320 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#355)))))*{c_1#355 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#237)))))*{c_2#237 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#321))*{iter#321 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#157*{c'_1#157 <- `c'_1*`}, c'_2#109*{c'_2#109 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c#275)*{c#275 <- `c*`}) + -- let{`c_1*` : lane_*} c_1#356*{c_1#356 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c_2*` : lane_*} c_2#238*{c_2#238 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{`c'_1*` : iN*} c'_1#158*{c'_1#158 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#357)))*{c_1#357 <- `c_1*`} + -- let{`c'_2*` : iN*} c'_2#110*{c'_2#110 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#239)))*{c_2#239 <- `c_2*`} + -- let{`c*` : iN*} c#274*{c#274 <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#159*{c'_1#159 <- `c'_1*`}, c'_2#111*{c'_2#111 <- `c'_2*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#322))*{iter#322 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), iter#323))*{iter#323 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1#358)))))*{c_1#358 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2#240)))))*{c_2#240 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter#324))*{iter#324 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1#160*{c'_1#160 <- `c'_1*`}, c'_2#112*{c'_2#112 <- `c'_2*`})} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivmul_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1#7*{i_1#7 <- `i_1*`}, i_2#7*{i_2#7 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextbinop__: `%%%%%%`(ishape, ishape, vextbinop__, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_16{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_17{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_18{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_19{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_20{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_21{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_22{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_23{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_24{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_25{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_26{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_27{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_28{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_29{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_30{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_31{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_32{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_33{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_34{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_35{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_36{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_37{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_38{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_39{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_40{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_41{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_42{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_43{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_44{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_45{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_46{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_47{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_0{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#325))*{iter#325 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_1{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#326))*{iter#326 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_2{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#327))*{iter#327 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_3{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#328))*{iter#328 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_4{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#329))*{iter#329 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_5{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#330))*{iter#330 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_6{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#331))*{iter#331 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_7{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#332))*{iter#332 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_8{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#333))*{iter#333 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_9{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#334))*{iter#334 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_10{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#335))*{iter#335 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_11{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#336))*{iter#336 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_12{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#337))*{iter#337 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_13{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#338))*{iter#338 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_14{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#339))*{iter#339 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_15{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{M : M} M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter#340))*{iter#340 <- var_2} + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax num = + | CONST(numtype : numtype, num_) + +def $val_num(num) : val + def $val_num{x0 : numtype, x1 : num_}(CONST_num(x0, x1)) = CONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_num: `%`(num) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule num_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_num(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax vec = + | VCONST(vectype : vectype, vec_) + +def $val_vec(vec) : val + def $val_vec{x0 : vectype, x1 : vec_}(VCONST_vec(x0, x1)) = VCONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_vec: `%`(vec) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule vec_case_0{vectype : vectype, var_0 : vec_}: + `%`(VCONST_vec(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax result = + | _VALS(`val*` : val*) + | `(REF.EXN_ADDR%)THROW_REF`(exnaddr : exnaddr) + | TRAP + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_result: `%`(result) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_0{`val*` : val*}: + `%`(_VALS_result(`val*`)) + -- (wf_val: `%`(val))*{val <- `val*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_1{exnaddr : exnaddr}: + `%`(`(REF.EXN_ADDR%)THROW_REF`_result(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_2: + `%`(TRAP_result) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostfunc = + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funccode = + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | `...` + +def $funccode_func(func) : funccode + def $funccode_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_funccode(x0, x1, x2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funccode: `%`(funccode) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_funccode(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_1: + `%`(`...`_funccode) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax taginst = +{ + TYPE tagtype +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_taginst: `%`(taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_case_{var_0 : tagtype}: + `%`({TYPE var_0}) + -- wf_typeuse: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globalinst = +{ + TYPE globaltype, + VALUE val +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_globalinst: `%`(globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_case_{var_0 : globaltype, var_1 : val}: + `%`({TYPE var_0, VALUE var_1}) + -- wf_globaltype: `%`(var_0) + -- wf_val: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax meminst = +{ + TYPE memtype, + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_meminst: `%`(meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_case_{var_0 : memtype, var_1 : byte*}: + `%`({TYPE var_0, BYTES var_1}) + -- wf_memtype: `%`(var_0) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableinst = +{ + TYPE tabletype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_tableinst: `%`(tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_case_{var_0 : tabletype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_tabletype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcinst = +{ + TYPE deftype, + MODULE moduleinst, + CODE funccode +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funcinst: `%`(funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_case_{var_0 : deftype, var_1 : moduleinst, var_2 : funccode}: + `%`({TYPE var_0, MODULE var_1, CODE var_2}) + -- wf_moduleinst: `%`(var_1) + -- wf_funccode: `%`(var_2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax datainst = +{ + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_datainst: `%`(datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_case_{var_0 : byte*}: + `%`({BYTES var_0}) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax eleminst = +{ + TYPE elemtype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_eleminst: `%`(eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_case_{var_0 : elemtype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_reftype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax packval = + | PACK(packtype : packtype, iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_packval: `%`(packval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packval_case_0{packtype : packtype, var_0 : iN}: + `%`(PACK_packval(packtype, var_0)) + -- wf_uN: `%%`($psize(packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax fieldval = + | CONST(numtype : numtype, num_) + | VCONST(vectype : vectype, vec_) + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) + | PACK(packtype : packtype, iN) + +def $fieldval_packval(packval) : fieldval + def $fieldval_packval{x0 : packtype, x1 : iN}(PACK_packval(x0, x1)) = PACK_fieldval(x0, x1) + +def $fieldval_ref(ref) : fieldval + def $fieldval_ref{x0 : u31}(`REF.I31_NUM`_ref(x0)) = `REF.I31_NUM`_fieldval(x0) + def $fieldval_ref(`REF.NULL_ADDR`_ref) = `REF.NULL_ADDR`_fieldval + def $fieldval_ref{x0 : structaddr}(`REF.STRUCT_ADDR`_ref(x0)) = `REF.STRUCT_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : arrayaddr}(`REF.ARRAY_ADDR`_ref(x0)) = `REF.ARRAY_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : funcaddr}(`REF.FUNC_ADDR`_ref(x0)) = `REF.FUNC_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : exnaddr}(`REF.EXN_ADDR`_ref(x0)) = `REF.EXN_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : hostaddr}(`REF.HOST_ADDR`_ref(x0)) = `REF.HOST_ADDR`_fieldval(x0) + def $fieldval_ref{x0 : ref}(`REF.EXTERN`_ref(x0)) = `REF.EXTERN`_fieldval(x0) + +def $fieldval_val(val) : fieldval + def $fieldval_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_fieldval(x0, x1) + def $fieldval_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_fieldval(x0, x1) + def $fieldval_val{x0 : u31}(`REF.I31_NUM`_val(x0)) = `REF.I31_NUM`_fieldval(x0) + def $fieldval_val(`REF.NULL_ADDR`_val) = `REF.NULL_ADDR`_fieldval + def $fieldval_val{x0 : structaddr}(`REF.STRUCT_ADDR`_val(x0)) = `REF.STRUCT_ADDR`_fieldval(x0) + def $fieldval_val{x0 : arrayaddr}(`REF.ARRAY_ADDR`_val(x0)) = `REF.ARRAY_ADDR`_fieldval(x0) + def $fieldval_val{x0 : funcaddr}(`REF.FUNC_ADDR`_val(x0)) = `REF.FUNC_ADDR`_fieldval(x0) + def $fieldval_val{x0 : exnaddr}(`REF.EXN_ADDR`_val(x0)) = `REF.EXN_ADDR`_fieldval(x0) + def $fieldval_val{x0 : hostaddr}(`REF.HOST_ADDR`_val(x0)) = `REF.HOST_ADDR`_fieldval(x0) + def $fieldval_val{x0 : ref}(`REF.EXTERN`_val(x0)) = `REF.EXTERN`_fieldval(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_fieldval: `%`(fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_0{numtype : numtype, var_0 : num_}: + `%`(CONST_fieldval(numtype, var_0)) + -- wf_num_: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_1{vectype : vectype, var_0 : vec_}: + `%`(VCONST_fieldval(vectype, var_0)) + -- wf_uN: `%%`($vsize(vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_2{u31 : u31}: + `%`(`REF.I31_NUM`_fieldval(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_3: + `%`(`REF.NULL_ADDR`_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_4{structaddr : structaddr}: + `%`(`REF.STRUCT_ADDR`_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_5{arrayaddr : arrayaddr}: + `%`(`REF.ARRAY_ADDR`_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_6{funcaddr : funcaddr}: + `%`(`REF.FUNC_ADDR`_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_7{exnaddr : exnaddr}: + `%`(`REF.EXN_ADDR`_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_8{hostaddr : hostaddr}: + `%`(`REF.HOST_ADDR`_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_9{ref : ref}: + `%`(`REF.EXTERN`_fieldval(ref)) + -- wf_ref: `%`(ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_10{packtype : packtype, var_0 : iN}: + `%`(PACK_fieldval(packtype, var_0)) + -- wf_uN: `%%`($psize(packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_structinst: `%`(structinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_arrayinst: `%`(arrayinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exninst = +{ + TAG tagaddr, + FIELDS val* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exninst: `%`(exninst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_case_{var_0 : tagaddr, var_1 : val*}: + `%`({TAG var_0, FIELDS var_1}) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax store = +{ + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_store: `%`(store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: + `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) + -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} + -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} + -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} + -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} + -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} + -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} + -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} + -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} + -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} + -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax state = + | `%;%`(store : store, frame : frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_state: `%`(state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule state_case_0{store : store, frame : frame}: + `%`(`%;%`_state(store, frame)) + -- wf_store: `%`(store) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax config = + | `%;%`(state : state, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_config: `%`(config) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule config_case_0{state : state, `instr*` : instr*}: + `%`(`%;%`_config(state, `instr*`)) + -- wf_state: `%`(state) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $Ki : nat + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $Ki = 1024 + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $packfield_(storagetype : storagetype, val : val) : fieldval? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(BOT_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{`null?` : null?, heaptype : heaptype, val : val}(REF_storagetype(`null?`, heaptype), val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(V128_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(F64_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(F32_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(I64_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{val : val}(I32_storagetype, val) = ?($fieldval_val(val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation packfield__is_wf: `%%%`(storagetype : storagetype, val : val, ret_val : fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packfield__is_wf_0{storagetype : storagetype, val : val, ret_val : fieldval}: + `%%%`(storagetype, val, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_val: `%`(val) + -- if (ret_val = !($packfield_(storagetype, val))) + -- if ($packfield_(storagetype, val) =/= ?()) + -- wf_fieldval: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(BOT_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(V128_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(F64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(F32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(I64_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{ref : ref}(I32_storagetype, ?(), `REF.EXTERN`_fieldval(ref)) = ?(`REF.EXTERN`_val(ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(BOT_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(V128_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(F64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(F32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(I64_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{hostaddr : hostaddr}(I32_storagetype, ?(), `REF.HOST_ADDR`_fieldval(hostaddr)) = ?(`REF.HOST_ADDR`_val(hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(BOT_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(V128_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(F64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(F32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(I64_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{exnaddr : exnaddr}(I32_storagetype, ?(), `REF.EXN_ADDR`_fieldval(exnaddr)) = ?(`REF.EXN_ADDR`_val(exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(BOT_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(V128_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(F64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(F32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(I64_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{funcaddr : funcaddr}(I32_storagetype, ?(), `REF.FUNC_ADDR`_fieldval(funcaddr)) = ?(`REF.FUNC_ADDR`_val(funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(BOT_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(V128_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(F64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(F32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(I64_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{arrayaddr : arrayaddr}(I32_storagetype, ?(), `REF.ARRAY_ADDR`_fieldval(arrayaddr)) = ?(`REF.ARRAY_ADDR`_val(arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(BOT_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(V128_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(F64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(F32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(I64_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{structaddr : structaddr}(I32_storagetype, ?(), `REF.STRUCT_ADDR`_fieldval(structaddr)) = ?(`REF.STRUCT_ADDR`_val(structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(BOT_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{`null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(V128_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(F64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(F32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(I64_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(I32_storagetype, ?(), `REF.NULL_ADDR`_fieldval) = ?(`REF.NULL_ADDR`_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(BOT_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(V128_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(F64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(F32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(I64_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{u31 : u31}(I32_storagetype, ?(), `REF.I31_NUM`_fieldval(u31)) = ?(`REF.I31_NUM`_val(u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(BOT_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(V128_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(F64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(F32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(I64_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{vectype : vectype, var_1 : vec_}(I32_storagetype, ?(), VCONST_fieldval(vectype, var_1)) = ?(VCONST_val(vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(BOT_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_, `null?` : null?, heaptype : heaptype}(REF_storagetype(`null?`, heaptype), ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(V128_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(F64_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(F32_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(I64_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{numtype : numtype, var_0 : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, var_0)) = ?(CONST_val(numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation unpackfield__is_wf: `%%%%`(storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule unpackfield__is_wf_0{storagetype : storagetype, var_0 : sx?, fieldval : fieldval, ret_val : val}: + `%%%%`(storagetype, var_0, fieldval, ret_val) + -- wf_storagetype: `%`(storagetype) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = !($unpackfield_(storagetype, var_0, fieldval))) + -- if ($unpackfield_(storagetype, var_0, fieldval) =/= ?()) + -- wf_val: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 +relation fun_tagsxa: `%%`(externaddr*, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([TAG_externaddr(a)] ++ xa#1*{xa#1 <- `xa*`}, [a] ++ var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([externaddr] ++ xa#2*{xa#2 <- `xa*`}, var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 +relation fun_globalsxa: `%%`(externaddr*, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([GLOBAL_externaddr(a)] ++ xa#3*{xa#3 <- `xa*`}, [a] ++ var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([externaddr] ++ xa#4*{xa#4 <- `xa*`}, var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 +relation fun_memsxa: `%%`(externaddr*, memaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([MEM_externaddr(a)] ++ xa#5*{xa#5 <- `xa*`}, [a] ++ var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([externaddr] ++ xa#6*{xa#6 <- `xa*`}, var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 +relation fun_tablesxa: `%%`(externaddr*, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([TABLE_externaddr(a)] ++ xa#7*{xa#7 <- `xa*`}, [a] ++ var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([externaddr] ++ xa#8*{xa#8 <- `xa*`}, var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 +relation fun_funcsxa: `%%`(externaddr*, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([FUNC_externaddr(a)] ++ xa#9*{xa#9 <- `xa*`}, [a] ++ var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([externaddr] ++ xa#10*{xa#10 <- `xa*`}, var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $store(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $store{s : store, f : frame}(`%;%`_state(s, f)) = s + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation store_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_is_wf_0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $store(state)) + -- wf_store: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $frame(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation frame_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_is_wf_0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $frame(state)) + -- wf_frame: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tagaddr(state : state) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $moduleinst(state : state) : moduleinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation moduleinst_is_wf: `%%`(state : state, ret_val : moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_is_wf_0{state : state, ret_val : moduleinst}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $moduleinst(state)) + -- wf_moduleinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $taginst(state : state) : taginst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation taginst_is_wf: `%%`(state : state, ret_val : taginst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_is_wf_0{state : state, ret_val : taginst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $taginst(state)) + -- (wf_taginst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $globalinst(state : state) : globalinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation globalinst_is_wf: `%%`(state : state, ret_val : globalinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_is_wf_0{state : state, ret_val : globalinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $globalinst(state)) + -- (wf_globalinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $meminst(state : state) : meminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation meminst_is_wf: `%%`(state : state, ret_val : meminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_is_wf_0{state : state, ret_val : meminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $meminst(state)) + -- (wf_meminst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tableinst(state : state) : tableinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tableinst_is_wf: `%%`(state : state, ret_val : tableinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_is_wf_0{state : state, ret_val : tableinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $tableinst(state)) + -- (wf_tableinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $funcinst(state : state) : funcinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation funcinst_is_wf: `%%`(state : state, ret_val : funcinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_is_wf_0{state : state, ret_val : funcinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $funcinst(state)) + -- (wf_funcinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $datainst(state : state) : datainst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation datainst_is_wf: `%%`(state : state, ret_val : datainst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_is_wf_0{state : state, ret_val : datainst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $datainst(state)) + -- (wf_datainst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $eleminst(state : state) : eleminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation eleminst_is_wf: `%%`(state : state, ret_val : eleminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_is_wf_0{state : state, ret_val : eleminst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $eleminst(state)) + -- (wf_eleminst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $structinst(state : state) : structinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation structinst_is_wf: `%%`(state : state, ret_val : structinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_is_wf_0{state : state, ret_val : structinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $structinst(state)) + -- (wf_structinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $arrayinst(state : state) : arrayinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation arrayinst_is_wf: `%%`(state : state, ret_val : arrayinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_is_wf_0{state : state, ret_val : arrayinst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $arrayinst(state)) + -- (wf_arrayinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $exninst(state : state) : exninst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation exninst_is_wf: `%%`(state : state, ret_val : exninst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_is_wf_0{state : state, ret_val : exninst*}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $exninst(state)) + -- (wf_exninst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fof(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fof{z : state}(z) = $frame(z) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fof_is_wf: `%%`(state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fof_is_wf_0{state : state, ret_val : frame}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $fof(state)) + -- wf_frame: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $type(state : state, typeidx : typeidx) : deftype + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $type{z : state, x : uN}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $sof(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $sof{z : state}(z) = $store(z) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation sof_is_wf: `%%`(state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule sof_is_wf_0{state : state, ret_val : store}: + `%%`(state, ret_val) + -- wf_state: `%`(state) + -- if (ret_val = $sof(state)) + -- wf_store: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tag(state : state, tagidx : tagidx) : taginst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tag_is_wf: `%%%`(state : state, tagidx : tagidx, ret_val : taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tag_is_wf_0{state : state, tagidx : tagidx, ret_val : taginst}: + `%%%`(state, tagidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tagidx) + -- if (ret_val = $tag(state, tagidx)) + -- wf_taginst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $global(state : state, globalidx : globalidx) : globalinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation global_is_wf: `%%%`(state : state, globalidx : globalidx, ret_val : globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule global_is_wf_0{state : state, globalidx : globalidx, ret_val : globalinst}: + `%%%`(state, globalidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- if (ret_val = $global(state, globalidx)) + -- wf_globalinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $mem(state : state, memidx : memidx) : meminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation mem_is_wf: `%%%`(state : state, memidx : memidx, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule mem_is_wf_0{state : state, memidx : memidx, ret_val : meminst}: + `%%%`(state, memidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- if (ret_val = $mem(state, memidx)) + -- wf_meminst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $table(state : state, tableidx : tableidx) : tableinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation table_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule table_is_wf_0{state : state, tableidx : tableidx, ret_val : tableinst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $table(state, tableidx)) + -- wf_tableinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $func(state : state, funcidx : funcidx) : funcinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation func_is_wf: `%%%`(state : state, funcidx : funcidx, ret_val : funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule func_is_wf_0{state : state, funcidx : funcidx, ret_val : funcinst}: + `%%%`(state, funcidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, funcidx) + -- if (ret_val = $func(state, funcidx)) + -- wf_funcinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $data(state : state, dataidx : dataidx) : datainst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation data_is_wf: `%%%`(state : state, dataidx : dataidx, ret_val : datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule data_is_wf_0{state : state, dataidx : dataidx, ret_val : datainst}: + `%%%`(state, dataidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- if (ret_val = $data(state, dataidx)) + -- wf_datainst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $elem(state : state, tableidx : tableidx) : eleminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation elem_is_wf: `%%%`(state : state, tableidx : tableidx, ret_val : eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule elem_is_wf_0{state : state, tableidx : tableidx, ret_val : eleminst}: + `%%%`(state, tableidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- if (ret_val = $elem(state, tableidx)) + -- wf_eleminst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $local(state : state, localidx : localidx) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation local_is_wf: `%%%`(state : state, localidx : localidx, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule local_is_wf_0{state : state, localidx : localidx, ret_val : val?}: + `%%%`(state, localidx, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- if (ret_val = $local(state, localidx)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_local(state : state, localidx : localidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_local{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_local_is_wf: `%%%%`(state : state, localidx : localidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_local_is_wf_0{state : state, localidx : localidx, val : val, ret_val : state}: + `%%%%`(state, localidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, localidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_local(state, localidx, val)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_global(state : state, globalidx : globalidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_global{z : state, x : uN, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_global_is_wf: `%%%%`(state : state, globalidx : globalidx, val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_global_is_wf_0{state : state, globalidx : globalidx, val : val, ret_val : state}: + `%%%%`(state, globalidx, val, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, globalidx) + -- wf_val: `%`(val) + -- if (ret_val = $with_global(state, globalidx, val)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_table_is_wf: `%%%%%`(state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_table_is_wf_0{state : state, tableidx : tableidx, nat : nat, ref : ref, ret_val : state}: + `%%%%%`(state, tableidx, nat, ref, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_ref: `%`(ref) + -- if (ret_val = $with_table(state, tableidx, nat, ref)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_tableinst_is_wf: `%%%%`(state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_tableinst_is_wf_0{state : state, tableidx : tableidx, tableinst : tableinst, ret_val : state}: + `%%%%`(state, tableidx, tableinst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, tableidx) + -- wf_tableinst: `%`(tableinst) + -- if (ret_val = $with_tableinst(state, tableidx, tableinst)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_mem{z : state, x : uN, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b#1*{b#1 <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_mem_is_wf: `%%%%%%`(state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_mem_is_wf_0{state : state, memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state}: + `%%%%%%`(state, memidx, nat, nat_0, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_mem(state, memidx, nat, nat_0, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_meminst_is_wf: `%%%%`(state : state, memidx : memidx, meminst : meminst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_meminst_is_wf_0{state : state, memidx : memidx, meminst : meminst, ret_val : state}: + `%%%%`(state, memidx, meminst, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, memidx) + -- wf_meminst: `%`(meminst) + -- if (ret_val = $with_meminst(state, memidx, meminst)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_elem(state : state, elemidx : elemidx, ref*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_elem{z : state, x : uN, `r*` : ref*}(z, x, r#1*{r#1 <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_elem_is_wf: `%%%%`(state : state, elemidx : elemidx, var_0 : ref*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_elem_is_wf_0{state : state, elemidx : elemidx, var_0 : ref*, ret_val : state}: + `%%%%`(state, elemidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, elemidx) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_elem(state, elemidx, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_data(state : state, dataidx : dataidx, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_data{z : state, x : uN, `b*` : byte*}(z, x, b#2*{b#2 <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_data_is_wf: `%%%%`(state : state, dataidx : dataidx, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_data_is_wf_0{state : state, dataidx : dataidx, var_0 : byte*, ret_val : state}: + `%%%%`(state, dataidx, var_0, ret_val) + -- wf_state: `%`(state) + -- wf_uN: `%%`(32, dataidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_data(state, dataidx, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_struct_is_wf: `%%%%%`(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_struct_is_wf_0{state : state, structaddr : structaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, structaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_struct(state, structaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_array_is_wf: `%%%%%`(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_array_is_wf_0{state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval, ret_val : state}: + `%%%%%`(state, arrayaddr, nat, fieldval, ret_val) + -- wf_state: `%`(state) + -- wf_fieldval: `%`(fieldval) + -- if (ret_val = $with_array(state, arrayaddr, nat, fieldval)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_structinst(state : state, structinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_structinst{z : state, `si*` : structinst*}(z, si#1*{si#1 <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_structinst_is_wf: `%%%`(state : state, var_0 : structinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_structinst_is_wf_0{state : state, var_0 : structinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_structinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_structinst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_arrayinst(state : state, arrayinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai#1*{ai#1 <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_arrayinst_is_wf: `%%%`(state : state, var_0 : arrayinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_arrayinst_is_wf_0{state : state, var_0 : arrayinst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_arrayinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_arrayinst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_exninst(state : state, exninst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_exninst{z : state, `exn*` : exninst*}(z, exn#1*{exn#1 <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_exninst_is_wf: `%%%`(state : state, var_0 : exninst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_exninst_is_wf_0{state : state, var_0 : exninst*, ret_val : state}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_exninst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_exninst(state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growtable_before_fun_growtable_case_1: `%%%`(tableinst, nat, ref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, i' : uN}: + `%%%`(tableinst, n, r) + -- let{at : addrtype, i : u64, `j?` : u64?, rt : reftype, `r'*` : ref*} {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#1?{j#1 <- `j?`}), rt), REFS r'#1*{r'#1 <- `r'*`}} = tableinst + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#2?{j#2 <- `j?`}), rt), REFS r'#2*{r'#2 <- `r'*`} ++ r^n{}}) + -- if ($proj_uN_0(i').0 = (|r'#3*{r'#3 <- `r'*`}| + n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#3).0))?{j#3 <- `j?`} + -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#4?{j#4 <- `j?`}), rt), REFS r'#4*{r'#4 <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#5?{j#5 <- `j?`}), rt), REFS r'#5*{r'#5 <- `r'*`} ++ r^n{}}) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, i' : uN}: + `%%%%`(tableinst, n, r, ?(tableinst')) + -- let{at : addrtype, i : u64, `j?` : u64?, rt : reftype, `r'*` : ref*} {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#1?{j#1 <- `j?`}), rt), REFS r'#1*{r'#1 <- `r'*`}} = tableinst + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#2?{j#2 <- `j?`}), rt), REFS r'#2*{r'#2 <- `r'*`} ++ r^n{}}) + -- if ($proj_uN_0(i').0 = (|r'#3*{r'#3 <- `r'*`}| + n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#3).0))?{j#3 <- `j?`} + -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#4?{j#4 <- `j?`}), rt), REFS r'#4*{r'#4 <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j#5?{j#5 <- `j?`}), rt), REFS r'#5*{r'#5 <- `r'*`} ++ r^n{}}) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_1{x0 : tableinst, x1 : nat, x2 : ref}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_growtable_before_fun_growtable_case_1: `%%%`(x0, x1, x2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growtable_is_wf: `%%%%`(tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growtable_is_wf_0{tableinst : tableinst, nat : nat, ref : ref, ret_val : tableinst, var_0 : tableinst?}: + `%%%%`(tableinst, nat, ref, ret_val) + -- wf_tableinst: `%`(tableinst) + -- wf_ref: `%`(ref) + -- if (ret_val = !(var_0)) + -- if (var_0 =/= ?()) + -- wf_tableinst: `%`(ret_val) + -- fun_growtable: `%%%%`(tableinst, nat, ref, var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem_before_fun_growmem_case_1: `%%`(meminst, nat) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, i' : uN}: + `%%`(meminst, n) + -- let{at : addrtype, i : u64, `j?` : u64?, `b*` : byte*} {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#3*{b#3 <- `b*`}} = meminst + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#4*{b#4 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#5*{b#5 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#8).0))?{j#8 <- `j?`} + -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#9?{j#9 <- `j?`})), BYTES b#6*{b#6 <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#10?{j#10 <- `j?`})), BYTES b#7*{b#7 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem: `%%%`(meminst, nat, meminst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, i' : uN}: + `%%%`(meminst, n, ?(meminst')) + -- let{at : addrtype, i : u64, `j?` : u64?, `b*` : byte*} {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#6?{j#6 <- `j?`})), BYTES b#3*{b#3 <- `b*`}} = meminst + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#7?{j#7 <- `j?`})), BYTES b#4*{b#4 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b#5*{b#5 <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j#8).0))?{j#8 <- `j?`} + -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#9?{j#9 <- `j?`})), BYTES b#6*{b#6 <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j#10?{j#10 <- `j?`})), BYTES b#7*{b#7 <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_1{x0 : meminst, x1 : nat}: + `%%%`(x0, x1, ?()) + -- ~ fun_growmem_before_fun_growmem_case_1: `%%`(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growmem_is_wf: `%%%`(meminst : meminst, nat : nat, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growmem_is_wf_0{meminst : meminst, nat : nat, ret_val : meminst, var_0 : meminst?}: + `%%%`(meminst, nat, ret_val) + -- wf_meminst: `%`(meminst) + -- if (ret_val = !(var_0)) + -- if (var_0 =/= ?()) + -- wf_meminst: `%`(ret_val) + -- fun_growmem: `%%%`(meminst, nat, var_0) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Num_ok: `%|-%:%`(store, num, numtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, nt : numtype, c : num_}: + `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Vec_ok: `%|-%:%`(store, vec, vectype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, vt : vectype, c : vec_}: + `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +relation Ref_ok: `%|-%:%`(store, ref, reftype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.36 + rule null{s : store}: + `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.31 + rule i31{s : store, i : u31}: + `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.I31_NUM`_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 + rule struct{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.STRUCTS_store[a].TYPE_structinst = dt) + -- if (a < |s.STRUCTS_store|) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.STRUCT_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 + rule array{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) + -- if (a < |s.ARRAYS_store|) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.ARRAY_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 + rule func{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.FUNCS_store[a].TYPE_funcinst = dt) + -- if (a < |s.FUNCS_store|) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.FUNC_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 + rule exn{s : store, a : addr, exn : exninst}: + `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) + -- if (s.EXNS_store[a] = exn) + -- if (a < |s.EXNS_store|) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(`REF.EXN_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.33 + rule host{s : store, a : addr}: + `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.HOST_ADDR`_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 + rule extern{s : store, ref : ref}: + `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) + -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_store: `%`(s) + -- wf_ref: `%`(`REF.EXTERN`_ref(ref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-69.34 + rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: + `%|-%:%`(s, ref, rt) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Val_ok: `%|-%:%`(store, val, valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule num{s : store, num : num, nt : numtype}: + `%|-%:%`(s, $val_num(num), $valtype_numtype(nt)) + -- Num_ok: `%|-%:%`(s, num, nt) + -- wf_store: `%`(s) + -- wf_num: `%`(num) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule vec{s : store, vec : vec, vt : vectype}: + `%|-%:%`(s, $val_vec(vec), $valtype_vectype(vt)) + -- Vec_ok: `%|-%:%`(s, vec, vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule ref{s : store, ref : ref, rt : reftype}: + `%|-%:%`(s, $val_ref(ref), $valtype_reftype(rt)) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Packval_ok: `%|-%:%`(store, packval, packtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, pt : packtype, c : iN}: + `%|-%:%`(s, PACK_packval(pt, c), pt) + -- wf_store: `%`(s) + -- wf_packval: `%`(PACK_packval(pt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule val{s : store, val : val, t : valtype}: + `%|-%:%`(s, $fieldval_val(val), $storagetype_valtype(t)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_val: `%`(val) + -- wf_valtype: `%`(t) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule packval{s : store, packval : packval, pt : packtype}: + `%|-%:%`(s, $fieldval_packval(packval), $storagetype_packtype(pt)) + -- Packval_ok: `%|-%:%`(s, packval, pt) + -- wf_store: `%`(s) + -- wf_packval: `%`(packval) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-104.84 +relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:106.1-108.28 + rule tag{s : store, a : addr, taginst : taginst}: + `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- if (s.TAGS_store[a] = taginst) + -- if (a < |s.TAGS_store|) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:110.1-112.34 + rule global{s : store, a : addr, globalinst : globalinst}: + `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- if (s.GLOBALS_store[a] = globalinst) + -- if (a < |s.GLOBALS_store|) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:114.1-116.28 + rule mem{s : store, a : addr, meminst : meminst}: + `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- if (s.MEMS_store[a] = meminst) + -- if (a < |s.MEMS_store|) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:118.1-120.32 + rule table{s : store, a : addr, tableinst : tableinst}: + `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- if (s.TABLES_store[a] = tableinst) + -- if (a < |s.TABLES_store|) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:122.1-124.30 + rule func{s : store, a : addr, funcinst : funcinst}: + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) + -- if (s.FUNCS_store[a] = funcinst) + -- if (a < |s.FUNCS_store|) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:126.1-130.37 + rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: + `%|-%:%`(s, externaddr, xt) + -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') + -- Externtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt) + -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_valtype: `%%%`(moduleinst, valtype, valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_valtype_case_0{moduleinst : moduleinst, t : valtype, var_0 : valtype}: + `%%%`(moduleinst, t, var_0) + -- fun_subst_all_valtype: `%%%`(t, (iter_val#3 : deftype <: typeuse)*{iter_val#3 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_valtype_is_wf: `%%%`(moduleinst : moduleinst, valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_valtype_is_wf_0{moduleinst : moduleinst, valtype : valtype, ret_val : valtype, var_0 : valtype}: + `%%%`(moduleinst, valtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_valtype: `%`(valtype) + -- if (ret_val = var_0) + -- wf_valtype: `%`(ret_val) + -- fun_inst_valtype: `%%%`(moduleinst, valtype, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_reftype: `%%%`(moduleinst, reftype, reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_reftype_case_0{moduleinst : moduleinst, rt : reftype, var_0 : reftype}: + `%%%`(moduleinst, rt, var_0) + -- fun_subst_all_reftype: `%%%`(rt, (iter_val#4 : deftype <: typeuse)*{iter_val#4 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_reftype_is_wf: `%%%`(moduleinst : moduleinst, reftype : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_reftype_is_wf_0{moduleinst : moduleinst, reftype : reftype, ret_val : reftype, var_0 : reftype}: + `%%%`(moduleinst, reftype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_reftype: `%`(reftype) + -- if (ret_val = var_0) + -- wf_reftype: `%`(ret_val) + -- fun_inst_reftype: `%%%`(moduleinst, reftype, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_globaltype: `%%%`(moduleinst, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_globaltype_case_0{moduleinst : moduleinst, gt : globaltype, var_0 : globaltype}: + `%%%`(moduleinst, gt, var_0) + -- fun_subst_all_globaltype: `%%%`(gt, (iter_val#5 : deftype <: typeuse)*{iter_val#5 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_globaltype_is_wf: `%%%`(moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_globaltype_is_wf_0{moduleinst : moduleinst, globaltype : globaltype, ret_val : globaltype, var_0 : globaltype}: + `%%%`(moduleinst, globaltype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_globaltype: `%`(globaltype) + -- if (ret_val = var_0) + -- wf_globaltype: `%`(ret_val) + -- fun_inst_globaltype: `%%%`(moduleinst, globaltype, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_memtype: `%%%`(moduleinst, memtype, memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_memtype_case_0{moduleinst : moduleinst, mt : memtype, var_0 : memtype}: + `%%%`(moduleinst, mt, var_0) + -- fun_subst_all_memtype: `%%%`(mt, (iter_val#6 : deftype <: typeuse)*{iter_val#6 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_memtype_is_wf: `%%%`(moduleinst : moduleinst, memtype : memtype, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_memtype_is_wf_0{moduleinst : moduleinst, memtype : memtype, ret_val : memtype, var_0 : memtype}: + `%%%`(moduleinst, memtype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_memtype: `%`(memtype) + -- if (ret_val = var_0) + -- wf_memtype: `%`(ret_val) + -- fun_inst_memtype: `%%%`(moduleinst, memtype, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_tabletype: `%%%`(moduleinst, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_tabletype_case_0{moduleinst : moduleinst, tt : tabletype, var_0 : tabletype}: + `%%%`(moduleinst, tt, var_0) + -- fun_subst_all_tabletype: `%%%`(tt, (iter_val#7 : deftype <: typeuse)*{iter_val#7 <- moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_tabletype_is_wf: `%%%`(moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_tabletype_is_wf_0{moduleinst : moduleinst, tabletype : tabletype, ret_val : tabletype, var_0 : tabletype}: + `%%%`(moduleinst, tabletype, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_tabletype: `%`(tabletype) + -- if (ret_val = var_0) + -- wf_tabletype: `%`(ret_val) + -- fun_inst_tabletype: `%%%`(moduleinst, tabletype, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_pure_before_ref.eq-true`: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref}: + `%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr]) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_pure: `%~>%`(instr*, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule unreachable: + `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule nop: + `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule drop{val : val}: + `%~>%`([$instr_val(val) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_1)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_2)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- if ($proj_uN_0(l).0 = 0) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- if ($proj_uN_0(l).0 > 0) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-true`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-false`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-null`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- if (val = `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-addr`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [$instr_val(val)]) + -- if (val =/= `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-null`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], []) + -- if (val = `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(`REF.NULL_ADDR`_val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-addr`{val : val, l : labelidx}: + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], [$instr_val(val) BR_instr(l)]) + -- if (val =/= `REF.NULL_ADDR`_val) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call_indirect{x : idx, yy : typeuse}: + `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call_indirect{x : idx, yy : typeuse}: + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(`TABLE.GET`_instr(x)) + -- wf_instr: `%`(`REF.CAST`_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `frame-vals`{n : n, f : frame, `val*` : val*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: + `%~>%`($instr_val(val)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-label`{n : n, `instr'*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-handler`{n : n, `catch*` : catch*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-frame`{n : n, f : frame}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `local.tee`{val : val, x : idx}: + `%~>%`([$instr_val(val) `LOCAL.TEE`_instr(x)], [$instr_val(val) $instr_val(val) `LOCAL.SET`_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(`LOCAL.TEE`_instr(x)) + -- wf_instr: `%`(`LOCAL.SET`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.i31`{i : num_}: + `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`REF.I31`_instr) + -- wf_instr: `%`(`REF.I31_NUM`_instr($wrap__(32, 31, !($proj_num__0(i))))) + -- if ($proj_num__0(i) =/= ?()) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-true`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-false`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.IS_NULL`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-null`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr], [TRAP_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-addr`{ref : ref}: + `%~>%`([$instr_ref(ref) `REF.AS_NON_NULL`_instr], [$instr_ref(ref)]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`REF.AS_NON_NULL`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(`REF.NULL_ADDR`_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) + -- if (ref_1 = ref_2) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) `REF.EQ`_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= `REF.NULL_ADDR`_ref) \/ (ref_2 =/= `REF.NULL_ADDR`_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(`REF.EQ`_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-null`{sx : sx}: + `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-num`{i : u31, sx : sx}: + `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(`REF.I31_NUM`_instr(i)) + -- wf_instr: `%`(`I31.GET`_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new`{val : val, n : n, x : idx}: + `%~>%`([$instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW`_instr(x)], $instr_val(val)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(`ARRAY.NEW`_instr(x)) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-null`{ref : ref}: + `%~>%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-addr`{ref : ref}: + `%~>%`([$instr_ref(ref) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) + -- if (ref =/= `REF.NULL_ADDR`_ref) + -- wf_instr: `%`(`EXTERN.CONVERT_ANY`_instr) + -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-null`: + `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-addr`{ref : ref}: + `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [$instr_ref(ref)]) + -- wf_instr: `%`(`REF.EXTERN`_instr(ref)) + -- wf_instr: `%`(`ANY.CONVERT_EXTERN`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_num_: `%%`(nt, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_num_: `%%`(nt, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_num_: `%%`(nt, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_num_: `%%`(nt, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) + -- if ($proj_num__0(c) =/= ?()) + -- wf_uN: `%%`(32, $testop_(nt, testop, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) + -- if ($proj_num__0(c) =/= ?()) + -- wf_uN: `%%`(32, $relop_(nt, relop, c_1, c_2)) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, var_0 : num_*}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) + -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvunop_(V128_vectype, vvunop, c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) + -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) + -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvtestop{c_1 : vec_, c : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) + -- if ($proj_num__0(c) =/= ?()) + -- wf_uN: `%%`(32, $inez_($vsize(V128_vectype), c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*, var_0 : nat}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) + -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = var_0) + -- if ($proj_num__0(c) =/= ?()) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), i))*{i <- `i*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)} + -- (wf_uN: `%%`(32, $inez_($jsizenn(Jnn), !($proj_lane__2(i)))))*{i <- `i*`} + -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- fun_prod: `%%`($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vrelop_: `%%%%%`(sh, vrelop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vshiftop_: `%%%%%`(sh, vshiftop, c_1, !($proj_num__0(i)), var_0) + -- if ($proj_num__0(i) =/= ?()) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vbitmask{c_1 : vec_, sh : ishape, c : num_, var_0 : u32}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = var_0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_uN: `%%`(32, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- fun_vbitmaskop_: `%%%`(sh, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vswizzlop_: `%%%%%`(sh, swizzlop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vshufflop_: `%%%%%`(sh, i*{i <- `i*`}, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: + `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) + -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)|) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- if ($proj_num__0(c_2) =/= ?()) + -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) + -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)|) + -- wf_uN: `%%`(32, $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)} + -- wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn, `%`_dim(M))), $lpacknum_(Lnn, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- if (var_0 = c) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vextunop__: `%%%%%`(sh_1, sh_2, vextunop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (var_0 = c) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vextbinop__: `%%%%%%`(sh_1, sh_2, vextbinop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- if (var_0 = c) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vextternop__: `%%%%%%%`(sh_1, sh_2, vextternop, c_1, c_2, c_3, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vnarrowop__: `%%%%%%`($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vcvtop__: `%%%%%`(sh_1, sh_2, vcvtop, c_1, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation fun_blocktype_: `%%%`(state, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule fun_blocktype__case_0{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%`(z, _IDX_blocktype(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1#2*{t_1#2 <- `t_1*`}), `%`_resulttype(t_2#2*{t_2#2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#3*{t_1#3 <- `t_1*`}), `%`_resulttype(t_2#3*{t_2#3 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule fun_blocktype__case_1{z : state, `t?` : valtype?}: + `%%%`(z, _RESULT_blocktype(t#1?{t#1 <- `t?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation blocktype__is_wf: `%%%`(state : state, blocktype : blocktype, ret_val : instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule blocktype__is_wf_0{state : state, blocktype : blocktype, ret_val : instrtype, var_0 : instrtype}: + `%%%`(state, blocktype, ret_val) + -- wf_state: `%`(state) + -- wf_blocktype: `%`(blocktype) + -- if (ret_val = var_0) + -- wf_instrtype: `%`(ret_val) + -- fun_blocktype_: `%%%`(state, blocktype, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_throw_ref-handler-next`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.test-false`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ($sx(zt_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(j) =/= ?()) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-succ`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(j) =/= ?()) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-num`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read: `%~>%`(config, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (m = |`val*`|) + -- if (m = |`t_1*`|) + -- if (n = |`t_2*`|) + -- fun_blocktype_: `%%%`(z, bt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (m = |`val*`|) + -- if (m = |`t_1*`|) + -- if (n = |`t_2*`|) + -- fun_blocktype_: `%%%`(z, bt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + -- wf_moduleinst: `%`($moduleinst(z)) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + -- if (a < |$funcinst(z)|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-null`{z : state, yy : typeuse}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- if ($funcinst(z)[a] = fi) + -- if (a < |$funcinst(z)|) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- (if ($default_(t) =/= ?()))*{t <- `t*`} + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ !($default_(t))*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- if (n = |`val*`|) + -- if (n = |`t_1*`|) + -- if (m = |`t_2*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + -- wf_moduleinst: `%`($moduleinst(z)) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + -- if (a < |$funcinst(z)|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) + -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (a < |$funcinst(z)|) + -- (wf_funcinst: `%`(iter))*{iter <- $funcinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (n = |`val*`|) + -- if (n = |`t_1*`|) + -- if (m = |`t_2*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`REF.EXN_ADDR`_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) + -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (m = |`val*`|) + -- if (m = |`t_1*`|) + -- if (n = |`t_2*`|) + -- fun_blocktype_: `%%%`(z, bt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `local.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [$instr_val(val)]) + -- if ($local(z, x) = ?(val)) + -- wf_val: `%`(val) + -- (wf_val: `%`(iter))?{iter <- $local(z, x)} + -- wf_config: `%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `global.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [$instr_val(val)]) + -- if ($global(z, x).VALUE_globalinst = val) + -- wf_val: `%`(val) + -- wf_globalinst: `%`($global(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) `TABLE.GET`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: + `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- if (|$table(z, x).REFS_tableinst| = n) + -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.FILL`_instr(x)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.FILL`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_tableinst: `%`($table(z, x_1)) + -- wf_tableinst: `%`($table(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), []) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.COPY`_instr(x, y)]) + -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `TABLE.COPY`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- if ($proj_num__0(i_1) =/= ?()) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_instr: `%`(`TABLE.GET`_instr(y)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.COPY`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_tableinst: `%`($table(z, x)) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) $instr_ref($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) `TABLE.SET`_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `TABLE.INIT`_instr(x, y)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(`TABLE.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`TABLE.INIT`_instr(x, y)) + -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) + -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, Jnn : Jnn}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[(($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- if (c = $extend__(N, 128, U_sx, j)) + -- wf_uN: `%%`(N, j) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, j)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $extend__(N, 128, U_sx, j)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, k)} + -- wf_meminst: `%`($mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.size`{z : state, x : idx, at : addrtype, n : n, lim : limits}: + `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) + -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.FILL`_instr(x)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.FILL`_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_meminst: `%`($mem(z, x_1)) + -- wf_meminst: `%`($mem(z, x_2)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.COPY`_instr(x_1, x_2)]) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) `MEMORY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.COPY`_instr(x_1, x_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `MEMORY.INIT`_instr(x, y)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) + -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`MEMORY.INIT`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL`_instr(ht)])) + -- wf_instr: `%`(`REF.NULL_ADDR`_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.func`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) + -- wf_config: `%`(`%;%`_config(z, [`REF.FUNC`_instr(x)])) + -- wf_instr: `%`(`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) + -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.TEST`_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)]), [$instr_ref(ref)]) + -- Ref_ok: `%|-%:%`(s, ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)]), [TRAP_instr]) + -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) `REF.CAST`_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), $instr_val(val)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if (!($default_($unpack(zt))) = ?(val)))*{val <- `val*`, zt <- `zt*`} + -- if (|`val*`| = |`zt*`|) + -- (if ($default_($unpack(zt)) =/= ?()))*{zt <- `zt*`} + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))}*{zt <- `zt*`} + -- (wf_valtype: `%`($unpack(zt)))*{zt <- `zt*`} + -- wf_config: `%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])) + -- wf_instr: `%`(`STRUCT.NEW`_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])))]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_val: `%`(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]))) + -- if ($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]) =/= ?()) + -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) + -- if (a < |$structinst(z)|) + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)]), $instr_val(val)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (!($default_($unpack(zt))) = ?(val)) + -- if ($default_($unpack(zt)) =/= ?()) + -- wf_val: `%`(val) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))} + -- wf_valtype: `%`($unpack(zt)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DEFAULT`_instr(x)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)]), $instr_ref(ref)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_ELEM`_instr(x, y)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- if (n = |`ref*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ($proj_num__0(i) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($zsize(zt) =/= ?()) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- (wf_instr: `%`($const(!($cunpack(zt)), $cunpacknum_(zt, c))))^n{c <- `c*`} + -- (if ($cunpack(zt) =/= ?()))^n{} + -- (wf_lit_: `%%`($storagetype_consttype(!($cunpack(zt))), $cunpacknum_(zt, c)))^n{c <- `c*`} + -- (wf_byte: `%`(iter))*{iter <- $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))} + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)}^n{c <- `c*`} + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.NEW_DATA`_instr(x, y)])) + -- wf_instr: `%`(`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (n = |`c*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-null`{z : state, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [$instr_val(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_val: `%`(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]))) + -- if ($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if (a < |$arrayinst(z)|) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-array`{z : state, a : addr}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) + -- if (a < |$arrayinst(z)|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-null`{z : state, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), []) + -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.FILL`_instr(x)]) + -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.FILL`_instr(x)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.FILL`_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null1`{z : state, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), []) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ($sx(zt_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.COPY`_instr(x_1, x_2)]) + -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) + -- if ($sx(zt_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.COPY`_instr(x_1, x_2)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- if ($proj_num__0(i_1) =/= ?()) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_instr: `%`(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.COPY`_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(j) =/= ?()) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), []) + -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_ELEM`_instr(x, y)]) + -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) + -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(j) =/= ?()) + -- wf_ref: `%`(ref) + -- wf_eleminst: `%`($elem(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_ELEM`_instr(x, y)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.INIT_ELEM`_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-null`{z : state, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), []) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- if (n = 0) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) `ARRAY.INIT_DATA`_instr(x, y)]) + -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- wf_lit_: `%%`(zt, c) + -- wf_instr: `%`($const(!($cunpack(zt)), $cunpacknum_(zt, c))) + -- if ($cunpack(zt) =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(zt))), $cunpacknum_(zt, c)) + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)} + -- wf_datainst: `%`($data(z, y)) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `ARRAY.INIT_DATA`_instr(x, y)])) + -- wf_instr: `%`(`REF.ARRAY_ADDR`_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(`ARRAY.SET`_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(`ARRAY.INIT_DATA`_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +relation Step: `%~>%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.36 + rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:45.1-47.45 + rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 + rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype($tag(z, x).TYPE_taginst) =/= ?()) + -- if (a = |$exninst(z)|) + -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- wf_taginst: `%`($tag(z, x)) + -- (wf_exninst: `%`(iter))*{iter <- $exninst(z)} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + -- if (n = |`val*`|) + -- if (n = |`t*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:305.1-306.56 + rule `local.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `LOCAL.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:318.1-319.58 + rule `global.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) `GLOBAL.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:332.1-334.33 + rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.32 + rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) `TABLE.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:347.1-350.46 + rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst, var_0 : tableinst?}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- if (ti = !(var_0)) + -- if (var_0 =/= ?()) + -- wf_tableinst: `%`(!(var_0)) + -- wf_tableinst: `%`($table(z, x)) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- fun_growtable: `%%%%`($table(z, x), n, ref, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:352.1-353.87 + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `TABLE.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:413.1-414.51 + rule `elem.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:497.1-500.60 + rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:502.1-506.29 + rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $nbytes_(nt, c)) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if ($proj_num__0(i) =/= ?()) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:508.1-511.52 + rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:513.1-517.52 + rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) + -- if ($proj_num__0(c) =/= ?()) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))} + -- wf_uN: `%%`(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c)))) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if ($proj_num__0(i) =/= ?()) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:519.1-522.63 + rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:524.1-527.31 + rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if ($proj_num__0(i) =/= ?()) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:530.1-533.50 + rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:535.1-540.49 + rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) + -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) + -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if ($proj_num__0(i) =/= ?()) + -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:549.1-552.37 + rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst, var_0 : meminst?}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (mi = !(var_0)) + -- if (var_0 =/= ?()) + -- wf_meminst: `%`(!(var_0)) + -- wf_meminst: `%`($mem(z, x)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- fun_growmem: `%%%`($mem(z, x), n, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:554.1-555.84 + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) `MEMORY.GROW`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:615.1-616.51 + rule `data.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [`DATA.DROP`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:692.1-696.65 + rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (a = |$structinst(z)|) + -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`, zt <- `zt*`} + -- (wf_structinst: `%`(iter))*{iter <- $structinst(z)} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + -- if (n = |`val*`|) + -- if (n = |`mut?*`|) + -- if (n = |`zt*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:713.1-714.55 + rule `struct.set-null`{z : state, val : val, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(val) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr $instr_val(val) `STRUCT.SET`_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:716.1-719.46 + rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_config: `%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) $instr_val(val) `STRUCT.SET`_instr(x, i)])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) + -- if ($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val) =/= ?()) + -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:732.1-737.65 + rule `array.new_fixed`{z : state, n : n, `val*` : val*, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) + -- (if ($packfield_(zt, val) =/= ?()))^n{val <- `val*`} + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) + -- if (n = |`val*`|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:777.1-778.66 + rule `array.set-null`{z : state, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:780.1-782.39 + rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $arrayinst(z)} + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:784.1-787.44 + rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_config: `%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) `ARRAY.SET`_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) + -- if ($proj_num__0(i) =/= ?()) + -- if ($packfield_(zt, val) =/= ?()) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +relation Steps: `%~>*%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + rule refl{z : state, `instr*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: + `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`})) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 +relation fun_alloctypes: `%%`(type*, deftype*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_1{`type'*` : type*, type : type, `deftype*` : deftype*, x : uN, var_2 : deftype*, var_1 : deftype*, var_0 : deftype*}: + `%%`(type'#1*{type'#1 <- `type'*`} ++ [type], deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`}) + -- let{`deftype'*` : deftype*} deftype'#1*{deftype'#1 <- `deftype'*`} = var_0 + -- let{rectype : rectype} TYPE_type(rectype) = type + -- if (deftype#1*{deftype#1 <- `deftype*`} = var_1) + -- if ($proj_uN_0(x).0 = |deftype'#3*{deftype'#3 <- `deftype'*`}|) + -- wf_uN: `%%`(32, x) + -- fun_rolldt: `%%%`(x, rectype, var_2) + -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype'#2)*{deftype'#2 <- `deftype'*`}, var_1) + -- fun_alloctypes: `%%`(type'#2*{type'#2 <- `type'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_alloctag: `%%%`(store, tagtype, (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_alloctag_case_0{s : store, tagtype : typeuse, taginst : taginst}: + `%%%`(s, tagtype, (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|)) + -- if (taginst = {TYPE tagtype}) + -- wf_taginst: `%`({TYPE tagtype}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctag_is_wf: `%%%`(store : store, tagtype : tagtype, ret_val : (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctag_is_wf_0{store : store, tagtype : tagtype, ret_val : (store, tagaddr), var_0 : (store, tagaddr)}: + `%%%`(store, tagtype, ret_val) + -- wf_store: `%`(store) + -- wf_typeuse: `%`(tagtype) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_alloctag: `%%%`(store, tagtype, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation fun_alloctags: `%%%`(store, tagtype*, (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_1{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, var_2 : (store, tagaddr*), var_1 : (store, tagaddr*), var_0 : (store, tagaddr)}: + `%%%`(s, [tagtype] ++ tagtype'#1*{tagtype'#1 <- `tagtype'*`}, (s_2, [ja] ++ ja'*{ja' <- `ja'*`})) + -- let{ja : tagaddr, s_1 : store} (s_1, ja) = var_0 + -- let{s_2 : store, `ja'*` : tagaddr*} (s_2, ja'#1*{ja'#1 <- `ja'*`}) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_alloctags: `%%%`(s_1, tagtype'#3*{tagtype'#3 <- `tagtype'*`}, var_2) + -- fun_alloctags: `%%%`(s_1, tagtype'#2*{tagtype'#2 <- `tagtype'*`}, var_1) + -- fun_alloctag: `%%%`(s, tagtype, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation alloctags_is_wf: `%%%`(store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule alloctags_is_wf_0{store : store, var_0 : tagtype*, ret_val : (store, tagaddr*), var_1 : (store, tagaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_typeuse: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_store: `%`(ret_val.0) + -- fun_alloctags: `%%%`(store, var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocglobal: `%%%%`(store, globaltype, val, (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocglobal_case_0{s : store, globaltype : globaltype, val : val, globalinst : globalinst}: + `%%%%`(s, globaltype, val, (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|)) + -- if (globalinst = {TYPE globaltype, VALUE val}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocglobal_is_wf: `%%%%`(store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocglobal_is_wf_0{store : store, globaltype : globaltype, val : val, ret_val : (store, globaladdr), var_0 : (store, globaladdr)}: + `%%%%`(store, globaltype, val, ret_val) + -- wf_store: `%`(store) + -- wf_globaltype: `%`(globaltype) + -- wf_val: `%`(val) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_allocglobal: `%%%%`(store, globaltype, val, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation fun_allocglobals: `%%%%`(store, globaltype*, val*, (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_1{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, var_2 : (store, globaladdr*), var_1 : (store, globaladdr*), var_0 : (store, globaladdr)}: + `%%%%`(s, [globaltype] ++ globaltype'#1*{globaltype'#1 <- `globaltype'*`}, [val] ++ val'#1*{val'#1 <- `val'*`}, (s_2, [ga] ++ ga'*{ga' <- `ga'*`})) + -- let{ga : globaladdr, s_1 : store} (s_1, ga) = var_0 + -- let{s_2 : store, `ga'*` : globaladdr*} (s_2, ga'#1*{ga'#1 <- `ga'*`}) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_allocglobals: `%%%%`(s_1, globaltype'#3*{globaltype'#3 <- `globaltype'*`}, val'#3*{val'#3 <- `val'*`}, var_2) + -- fun_allocglobals: `%%%%`(s_1, globaltype'#2*{globaltype'#2 <- `globaltype'*`}, val'#2*{val'#2 <- `val'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, globaltype, val, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation allocglobals_is_wf: `%%%%`(store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule allocglobals_is_wf_0{store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*), var_2 : (store, globaladdr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_store: `%`(ret_val.0) + -- fun_allocglobals: `%%%%`(store, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocmem: `%%%`(store, memtype, (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocmem_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}: + `%%%`(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#11?{j#11 <- `j?`})), (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|)) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#12?{j#12 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j#13?{j#13 <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmem_is_wf: `%%%`(store : store, memtype : memtype, ret_val : (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmem_is_wf_0{store : store, memtype : memtype, ret_val : (store, memaddr), var_0 : (store, memaddr)}: + `%%%`(store, memtype, ret_val) + -- wf_store: `%`(store) + -- wf_memtype: `%`(memtype) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_allocmem: `%%%`(store, memtype, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation fun_allocmems: `%%%`(store, memtype*, (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_1{s : store, memtype : memtype, `memtype'*` : memtype*, var_2 : (store, memaddr*), var_1 : (store, memaddr*), var_0 : (store, memaddr)}: + `%%%`(s, [memtype] ++ memtype'#1*{memtype'#1 <- `memtype'*`}, (s_2, [ma] ++ ma'*{ma' <- `ma'*`})) + -- let{ma : memaddr, s_1 : store} (s_1, ma) = var_0 + -- let{s_2 : store, `ma'*` : memaddr*} (s_2, ma'#1*{ma'#1 <- `ma'*`}) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_allocmems: `%%%`(s_1, memtype'#3*{memtype'#3 <- `memtype'*`}, var_2) + -- fun_allocmems: `%%%`(s_1, memtype'#2*{memtype'#2 <- `memtype'*`}, var_1) + -- fun_allocmem: `%%%`(s, memtype, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation allocmems_is_wf: `%%%`(store : store, var_0 : memtype*, ret_val : (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule allocmems_is_wf_0{store : store, var_0 : memtype*, ret_val : (store, memaddr*), var_1 : (store, memaddr*)}: + `%%%`(store, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_memtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_store: `%`(ret_val.0) + -- fun_allocmems: `%%%`(store, var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_alloctable: `%%%%`(store, tabletype, ref, (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_alloctable_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}: + `%%%%`(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j#14?{j#14 <- `j?`}), rt), ref, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|)) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#15?{j#15 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j#16?{j#16 <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctable_is_wf: `%%%%`(store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctable_is_wf_0{store : store, tabletype : tabletype, ref : ref, ret_val : (store, tableaddr), var_0 : (store, tableaddr)}: + `%%%%`(store, tabletype, ref, ret_val) + -- wf_store: `%`(store) + -- wf_tabletype: `%`(tabletype) + -- wf_ref: `%`(ref) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_alloctable: `%%%%`(store, tabletype, ref, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation fun_alloctables: `%%%%`(store, tabletype*, ref*, (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_1{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, var_2 : (store, tableaddr*), var_1 : (store, tableaddr*), var_0 : (store, tableaddr)}: + `%%%%`(s, [tabletype] ++ tabletype'#1*{tabletype'#1 <- `tabletype'*`}, [ref] ++ ref'#1*{ref'#1 <- `ref'*`}, (s_2, [ta] ++ ta'*{ta' <- `ta'*`})) + -- let{ta : tableaddr, s_1 : store} (s_1, ta) = var_0 + -- let{s_2 : store, `ta'*` : tableaddr*} (s_2, ta'#1*{ta'#1 <- `ta'*`}) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_alloctables: `%%%%`(s_1, tabletype'#3*{tabletype'#3 <- `tabletype'*`}, ref'#3*{ref'#3 <- `ref'*`}, var_2) + -- fun_alloctables: `%%%%`(s_1, tabletype'#2*{tabletype'#2 <- `tabletype'*`}, ref'#2*{ref'#2 <- `ref'*`}, var_1) + -- fun_alloctable: `%%%%`(s, tabletype, ref, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation alloctables_is_wf: `%%%%`(store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule alloctables_is_wf_0{store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*), var_2 : (store, tableaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_tabletype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_store: `%`(ret_val.0) + -- fun_alloctables: `%%%%`(store, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocfunc: `%%%%%`(store, deftype, funccode, moduleinst, (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocfunc_case_0{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}: + `%%%%%`(s, deftype, funccode, moduleinst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|)) + -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocfunc_is_wf: `%%%%%`(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocfunc_is_wf_0{store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, ret_val : (store, funcaddr), var_0 : (store, funcaddr)}: + `%%%%%`(store, deftype, funccode, moduleinst, ret_val) + -- wf_store: `%`(store) + -- wf_funccode: `%`(funccode) + -- wf_moduleinst: `%`(moduleinst) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_allocfunc: `%%%%%`(store, deftype, funccode, moduleinst, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation fun_allocfuncs: `%%%%%`(store, deftype*, funccode*, moduleinst*, (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_0{s : store}: + `%%%%%`(s, [], [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_1{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, var_2 : (store, funcaddr*), var_1 : (store, funcaddr*), var_0 : (store, funcaddr)}: + `%%%%%`(s, [dt] ++ dt'#3*{dt'#3 <- `dt'*`}, [funccode] ++ funccode'#1*{funccode'#1 <- `funccode'*`}, [moduleinst] ++ moduleinst'#1*{moduleinst'#1 <- `moduleinst'*`}, (s_2, [fa] ++ fa'*{fa' <- `fa'*`})) + -- let{fa : funcaddr, s_1 : store} (s_1, fa) = var_0 + -- let{s_2 : store, `fa'*` : funcaddr*} (s_2, fa'#1*{fa'#1 <- `fa'*`}) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_allocfuncs: `%%%%%`(s_1, dt'#5*{dt'#5 <- `dt'*`}, funccode'#3*{funccode'#3 <- `funccode'*`}, moduleinst'#3*{moduleinst'#3 <- `moduleinst'*`}, var_2) + -- fun_allocfuncs: `%%%%%`(s_1, dt'#4*{dt'#4 <- `dt'*`}, funccode'#2*{funccode'#2 <- `funccode'*`}, moduleinst'#2*{moduleinst'#2 <- `moduleinst'*`}, var_1) + -- fun_allocfunc: `%%%%%`(s, dt, funccode, moduleinst, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation allocfuncs_is_wf: `%%%%%`(store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule allocfuncs_is_wf_0{store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*), var_3 : (store, funcaddr*)}: + `%%%%%`(store, var_0, var_1, var_2, ret_val) + -- wf_store: `%`(store) + -- (wf_funccode: `%`(var_1))*{var_1 <- var_1} + -- (wf_moduleinst: `%`(var_2))*{var_2 <- var_2} + -- if (ret_val = var_3) + -- wf_store: `%`(ret_val.0) + -- fun_allocfuncs: `%%%%%`(store, var_0, var_1, var_2, var_3) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocdata: `%%%%`(store, datatype, byte*, (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocdata_case_0{s : store, `byte*` : byte*, datainst : datainst}: + `%%%%`(s, OK_datatype, byte#2*{byte#2 <- `byte*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|)) + -- if (datainst = {BYTES byte#3*{byte#3 <- `byte*`}}) + -- wf_datainst: `%`({BYTES byte#4*{byte#4 <- `byte*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocdata_is_wf: `%%%%`(store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocdata_is_wf_0{store : store, datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr), var_1 : (store, dataaddr)}: + `%%%%`(store, datatype, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_store: `%`(ret_val.0) + -- fun_allocdata: `%%%%`(store, datatype, var_0, var_1) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation fun_allocdatas: `%%%%`(store, datatype*, byte**, (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_1{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, var_3 : (store, dataaddr*), var_2 : (store, dataaddr), var_1 : (store, dataaddr*), var_0 : (store, dataaddr)}: + `%%%%`(s, [ok] ++ ok'#1*{ok'#1 <- `ok'*`}, [b#8*{b#8 <- `b*`}] ++ b'#1*{b'#1 <- `b'*#1`}*{`b'*#1` <- `b'**`}, (s_2, [da] ++ da'*{da' <- `da'*`})) + -- let{da : dataaddr, s_1 : store} (s_1, da) = var_0 + -- let{s_2 : store, `da'*` : dataaddr*} (s_2, da'#1*{da'#1 <- `da'*`}) = var_1 + -- wf_store: `%`(var_2.0) + -- wf_store: `%`(var_3.0) + -- fun_allocdatas: `%%%%`(s_1, ok'#3*{ok'#3 <- `ok'*`}, b'#3*{b'#3 <- `b'*#3`}*{`b'*#3` <- `b'**`}, var_3) + -- fun_allocdata: `%%%%`(s, ok, b#10*{b#10 <- `b*`}, var_2) + -- fun_allocdatas: `%%%%`(s_1, ok'#2*{ok'#2 <- `ok'*`}, b'#2*{b'#2 <- `b'*#2`}*{`b'*#2` <- `b'**`}, var_1) + -- fun_allocdata: `%%%%`(s, ok, b#9*{b#9 <- `b*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation allocdatas_is_wf: `%%%%`(store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule allocdatas_is_wf_0{store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*), var_2 : (store, dataaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_store: `%`(ret_val.0) + -- fun_allocdatas: `%%%%`(store, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocelem: `%%%%`(store, elemtype, ref*, (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocelem_case_0{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}: + `%%%%`(s, elemtype, ref#1*{ref#1 <- `ref*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|)) + -- if (eleminst = {TYPE elemtype, REFS ref#2*{ref#2 <- `ref*`}}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref#3*{ref#3 <- `ref*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocelem_is_wf: `%%%%`(store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocelem_is_wf_0{store : store, elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr), var_1 : (store, elemaddr)}: + `%%%%`(store, elemtype, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_reftype: `%`(elemtype) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_store: `%`(ret_val.0) + -- fun_allocelem: `%%%%`(store, elemtype, var_0, var_1) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation fun_allocelems: `%%%%`(store, elemtype*, ref**, (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_1{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, var_3 : (store, elemaddr*), var_2 : (store, elemaddr), var_1 : (store, elemaddr*), var_0 : (store, elemaddr)}: + `%%%%`(s, [rt] ++ rt'#1*{rt'#1 <- `rt'*`}, [ref#4*{ref#4 <- `ref*`}] ++ ref'#4*{ref'#4 <- `ref'*#1`}*{`ref'*#1` <- `ref'**`}, (s_2, [ea] ++ ea'*{ea' <- `ea'*`})) + -- let{ea : elemaddr, s_1 : store} (s_1, ea) = var_0 + -- let{s_2 : store, `ea'*` : elemaddr*} (s_2, ea'#1*{ea'#1 <- `ea'*`}) = var_1 + -- wf_store: `%`(var_2.0) + -- wf_store: `%`(var_3.0) + -- fun_allocelems: `%%%%`(s_1, rt'#3*{rt'#3 <- `rt'*`}, ref'#6*{ref'#6 <- `ref'*#3`}*{`ref'*#3` <- `ref'**`}, var_3) + -- fun_allocelem: `%%%%`(s, rt, ref#6*{ref#6 <- `ref*`}, var_2) + -- fun_allocelems: `%%%%`(s_1, rt'#2*{rt'#2 <- `rt'*`}, ref'#5*{ref'#5 <- `ref'*#2`}*{`ref'*#2` <- `ref'**`}, var_1) + -- fun_allocelem: `%%%%`(s, rt, ref#5*{ref#5 <- `ref*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation allocelems_is_wf: `%%%%`(store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule allocelems_is_wf_0{store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*), var_2 : (store, elemaddr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- (wf_reftype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_store: `%`(ret_val.0) + -- fun_allocelems: `%%%%`(store, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexport(moduleinst : moduleinst, export : export) : exportinst + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexport_is_wf: `%%%`(moduleinst : moduleinst, export : export, ret_val : exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexport_is_wf_0{moduleinst : moduleinst, export : export, ret_val : exportinst}: + `%%%`(moduleinst, export, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- wf_export: `%`(export) + -- if (ret_val = $allocexport(moduleinst, export)) + -- wf_exportinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexports(moduleinst : moduleinst, export*) : exportinst* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export#3*{export#3 <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexports_is_wf: `%%%`(moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexports_is_wf_0{moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*}: + `%%%`(moduleinst, var_0, ret_val) + -- wf_moduleinst: `%`(moduleinst) + -- (wf_export: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocexports(moduleinst, var_0)) + -- (wf_exportinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref**, (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `xi*` : exportinst*, var_34 : (store, funcaddr*), `var_33*` : reftype*, `var_32*` : elemtype*, var_31 : (store, elemaddr*), var_30 : (store, dataaddr*), `var_29*` : tabletype*, `var_28*` : tabletype*, var_27 : (store, tableaddr*), `var_26*` : memtype*, `var_25*` : memtype*, var_24 : (store, memaddr*), `var_23*` : globaltype*, `var_22*` : globaltype*, var_21 : (store, globaladdr*), `var_20*` : typeuse*, `var_19*` : tagtype*, var_18 : (store, tagaddr*), var_17 : (store, funcaddr*), `var_16*` : elemtype*, var_15 : (store, elemaddr*), var_14 : (store, dataaddr*), `var_13*` : tabletype*, var_12 : (store, tableaddr*), `var_11*` : memtype*, var_10 : (store, memaddr*), `var_9*` : globaltype*, var_8 : (store, globaladdr*), `var_7*` : tagtype*, var_6 : (store, tagaddr*), var_5 : deftype*, var_4 : funcaddr*, var_3 : tableaddr*, var_2 : memaddr*, var_1 : globaladdr*, var_0 : tagaddr*}: + `%%%%%%%`(s, module, externaddr#1*{externaddr#1 <- `externaddr*`}, val_G#1*{val_G#1 <- `val_G*`}, ref_T#1*{ref_T#1 <- `ref_T*`}, ref_E#1*{ref_E#1 <- `ref_E*#1`}*{`ref_E*#1` <- `ref_E**`}, (s_7, moduleinst)) + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#2*{type#2 <- `type*`}), `%`_list(import#2*{import#2 <- `import*`}), `%`_list(tag#2*{tag#2 <- `tag*`}), `%`_list(global#3*{global#3 <- `global*`}), `%`_list(mem#3*{mem#3 <- `mem*`}), `%`_list(table#3*{table#3 <- `table*`}), `%`_list(func#3*{func#3 <- `func*`}), `%`_list(data#2*{data#2 <- `data*`}), `%`_list(elem#3*{elem#3 <- `elem*`}), start#3?{start#3 <- `start?`}, `%`_list(export#4*{export#4 <- `export*`})) = module + -- if (tag#3*{tag#3 <- `tag*`} = TAG_tag(tagtype#78)*{tagtype#78 <- `tagtype*`}) + -- if (global#4*{global#4 <- `global*`} = GLOBAL_global(globaltype#122, expr_G#1)*{expr_G#1 <- `expr_G*`, globaltype#122 <- `globaltype*`}) + -- if (mem#4*{mem#4 <- `mem*`} = MEMORY_mem(memtype#122)*{memtype#122 <- `memtype*`}) + -- if (table#4*{table#4 <- `table*`} = TABLE_table(tabletype#156, expr_T#1)*{expr_T#1 <- `expr_T*`, tabletype#156 <- `tabletype*`}) + -- if (func#4*{func#4 <- `func*`} = FUNC_func(x#2, local#2*{local#2 <- `local*#82`}, expr_F#1)*{expr_F#1 <- `expr_F*`, `local*#82` <- `local**`, x#2 <- `x*`}) + -- if (data#3*{data#3 <- `data*`} = DATA_data(byte#5*{byte#5 <- `byte*#110`}, datamode#110)*{`byte*#110` <- `byte**`, datamode#110 <- `datamode*`}) + -- if (elem#4*{elem#4 <- `elem*`} = ELEM_elem(elemtype#1, expr_E#1*{expr_E#1 <- `expr_E*#1`}, elemmode#230)*{elemmode#230 <- `elemmode*`, elemtype#1 <- `elemtype*`, `expr_E*#1` <- `expr_E**`}) + -- let{`aa_I*` : tagaddr*} aa_I#1*{aa_I#1 <- `aa_I*`} = var_0 + -- let{`ga_I*` : globaladdr*} ga_I#1*{ga_I#1 <- `ga_I*`} = var_1 + -- let{`ma_I*` : memaddr*} ma_I#1*{ma_I#1 <- `ma_I*`} = var_2 + -- let{`ta_I*` : tableaddr*} ta_I#1*{ta_I#1 <- `ta_I*`} = var_3 + -- let{`fa_I*` : funcaddr*} fa_I#1*{fa_I#1 <- `fa_I*`} = var_4 + -- let{`dt*` : deftype*} dt#8*{dt#8 <- `dt*`} = var_5 + -- let{`fa*` : nat*} fa#1*{fa#1 <- `fa*`} = (|s.FUNCS_store| + i_F#1)^(i_F#1<|func#5*{func#5 <- `func*`}|){} + -- let{s_1 : store, `aa*` : tagaddr*} (s_1, aa#1*{aa#1 <- `aa*`}) = var_6 + -- let{s_2 : store, `ga*` : globaladdr*} (s_2, ga#1*{ga#1 <- `ga*`}) = var_8 + -- let{s_3 : store, `ma*` : memaddr*} (s_3, ma#1*{ma#1 <- `ma*`}) = var_10 + -- let{s_4 : store, `ta*` : tableaddr*} (s_4, ta#1*{ta#1 <- `ta*`}) = var_12 + -- let{s_5 : store, `da*` : dataaddr*} (s_5, da#1*{da#1 <- `da*`}) = var_14 + -- let{s_6 : store, `ea*` : elemaddr*} (s_6, ea#1*{ea#1 <- `ea*`}) = var_15 + -- if ((s_7, fa#2*{fa#2 <- `fa*`}) = var_17) + -- if (xi#1*{xi#1 <- `xi*`} = $allocexports({TYPES [], TAGS aa_I#2*{aa_I#2 <- `aa_I*`} ++ aa#2*{aa#2 <- `aa*`}, GLOBALS ga_I#2*{ga_I#2 <- `ga_I*`} ++ ga#2*{ga#2 <- `ga*`}, MEMS ma_I#2*{ma_I#2 <- `ma_I*`} ++ ma#2*{ma#2 <- `ma*`}, TABLES ta_I#2*{ta_I#2 <- `ta_I*`} ++ ta#2*{ta#2 <- `ta*`}, FUNCS fa_I#2*{fa_I#2 <- `fa_I*`} ++ fa#3*{fa#3 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#5*{export#5 <- `export*`})) + -- if (moduleinst = {TYPES dt#15*{dt#15 <- `dt*`}, TAGS aa_I#3*{aa_I#3 <- `aa_I*`} ++ aa#3*{aa#3 <- `aa*`}, GLOBALS ga_I#3*{ga_I#3 <- `ga_I*`} ++ ga#3*{ga#3 <- `ga*`}, MEMS ma_I#3*{ma_I#3 <- `ma_I*`} ++ ma#3*{ma#3 <- `ma*`}, TABLES ta_I#3*{ta_I#3 <- `ta_I*`} ++ ta#3*{ta#3 <- `ta*`}, FUNCS fa_I#3*{fa_I#3 <- `fa_I*`} ++ fa#4*{fa#4 <- `fa*`}, DATAS da#2*{da#2 <- `da*`}, ELEMS ea#2*{ea#2 <- `ea*`}, EXPORTS xi#2*{xi#2 <- `xi*`}}) + -- wf_store: `%`(var_18.0) + -- (wf_typeuse: `%`(var_20))*{var_20 <- `var_20*`} + -- wf_store: `%`(var_21.0) + -- (wf_globaltype: `%`(var_23))*{var_23 <- `var_23*`} + -- wf_store: `%`(var_24.0) + -- (wf_memtype: `%`(var_26))*{var_26 <- `var_26*`} + -- wf_store: `%`(var_27.0) + -- (wf_tabletype: `%`(var_29))*{var_29 <- `var_29*`} + -- wf_store: `%`(var_30.0) + -- wf_store: `%`(var_31.0) + -- (wf_reftype: `%`(var_33))*{var_33 <- `var_33*`} + -- wf_store: `%`(var_34.0) + -- (wf_exportinst: `%`(iter#341))*{iter#341 <- $allocexports({TYPES [], TAGS aa_I#4*{aa_I#4 <- `aa_I*`} ++ aa#4*{aa#4 <- `aa*`}, GLOBALS ga_I#4*{ga_I#4 <- `ga_I*`} ++ ga#4*{ga#4 <- `ga*`}, MEMS ma_I#4*{ma_I#4 <- `ma_I*`} ++ ma#4*{ma#4 <- `ma*`}, TABLES ta_I#4*{ta_I#4 <- `ta_I*`} ++ ta#4*{ta#4 <- `ta*`}, FUNCS fa_I#4*{fa_I#4 <- `fa_I*`} ++ fa#5*{fa#5 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export#6*{export#6 <- `export*`})} + -- wf_module: `%`(MODULE_module(`%`_list(type#4*{type#4 <- `type*`}), `%`_list(import#3*{import#3 <- `import*`}), `%`_list(tag#4*{tag#4 <- `tag*`}), `%`_list(global#5*{global#5 <- `global*`}), `%`_list(mem#5*{mem#5 <- `mem*`}), `%`_list(table#5*{table#5 <- `table*`}), `%`_list(func#8*{func#8 <- `func*`}), `%`_list(data#6*{data#6 <- `data*`}), `%`_list(elem#5*{elem#5 <- `elem*`}), start#4?{start#4 <- `start?`}, `%`_list(export#7*{export#7 <- `export*`}))) + -- (wf_tag: `%`(TAG_tag(tagtype#83)))*{tagtype#83 <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype#127, expr_G#2)))*{expr_G#2 <- `expr_G*`, globaltype#127 <- `globaltype*`} + -- if (|`expr_G*`| = |`globaltype*`|) + -- (wf_mem: `%`(MEMORY_mem(memtype#127)))*{memtype#127 <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype#161, expr_T#2)))*{expr_T#2 <- `expr_T*`, tabletype#161 <- `tabletype*`} + -- if (|`expr_T*`| = |`tabletype*`|) + -- (wf_func: `%`(FUNC_func(x#7, local#5*{local#5 <- `local*#86`}, expr_F#4)))*{expr_F#4 <- `expr_F*`, `local*#86` <- `local**`, x#7 <- `x*`} + -- if (|`expr_F*`| = |`local**`|) + -- if (|`expr_F*`| = |`x*`|) + -- (wf_data: `%`(DATA_data(byte#8*{byte#8 <- `byte*#114`}, datamode#112)))*{`byte*#114` <- `byte**`, datamode#112 <- `datamode*`} + -- if (|`byte**`| = |`datamode*`|) + -- (wf_elem: `%`(ELEM_elem(elemtype#5, expr_E#2*{expr_E#2 <- `expr_E*#2`}, elemmode#232)))*{elemmode#232 <- `elemmode*`, elemtype#5 <- `elemtype*`, `expr_E*#2` <- `expr_E**`} + -- if (|`elemmode*`| = |`elemtype*`|) + -- if (|`elemmode*`| = |`expr_E**`|) + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I#5*{aa_I#5 <- `aa_I*`} ++ aa#5*{aa#5 <- `aa*`}, GLOBALS ga_I#5*{ga_I#5 <- `ga_I*`} ++ ga#5*{ga#5 <- `ga*`}, MEMS ma_I#5*{ma_I#5 <- `ma_I*`} ++ ma#5*{ma#5 <- `ma*`}, TABLES ta_I#5*{ta_I#5 <- `ta_I*`} ++ ta#5*{ta#5 <- `ta*`}, FUNCS fa_I#5*{fa_I#5 <- `fa_I*`} ++ fa#6*{fa#6 <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt#27*{dt#27 <- `dt*`}, TAGS aa_I#6*{aa_I#6 <- `aa_I*`} ++ aa#6*{aa#6 <- `aa*`}, GLOBALS ga_I#6*{ga_I#6 <- `ga_I*`} ++ ga#6*{ga#6 <- `ga*`}, MEMS ma_I#6*{ma_I#6 <- `ma_I*`} ++ ma#6*{ma#6 <- `ma*`}, TABLES ta_I#6*{ta_I#6 <- `ta_I*`} ++ ta#6*{ta#6 <- `ta*`}, FUNCS fa_I#6*{fa_I#6 <- `fa_I*`} ++ fa#7*{fa#7 <- `fa*`}, DATAS da#3*{da#3 <- `da*`}, ELEMS ea#3*{ea#3 <- `ea*`}, EXPORTS xi#3*{xi#3 <- `xi*`}}) + -- fun_allocfuncs: `%%%%%`(s_6, dt#26*{dt#26 <- `dt*`}[$proj_uN_0(x#5).0]*{x#5 <- `x*`}, FUNC_funccode(x#6, local#4*{local#4 <- `local*#85`}, expr_F#3)*{expr_F#3 <- `expr_F*`, `local*#85` <- `local**`, x#6 <- `x*`}, moduleinst^|func#7*{func#7 <- `func*`}|{}, var_34) + -- (if ($proj_uN_0(x#5).0 < |dt#26*{dt#26 <- `dt*`}|))*{x#5 <- `x*`} + -- (fun_subst_all_reftype: `%%%`(elemtype#4, $typeuse_deftype(dt#25)*{dt#25 <- `dt*`}, var_33))*{var_33 <- `var_33*`, elemtype#4 <- `elemtype*`} + -- if (|`var_33*`| = |`elemtype*`|) + -- (fun_subst_all_reftype: `%%%`(elemtype#3, $typeuse_deftype(dt#24)*{dt#24 <- `dt*`}, var_32))*{var_32 <- `var_32*`, elemtype#3 <- `elemtype*`} + -- if (|`var_32*`| = |`elemtype*`|) + -- fun_allocelems: `%%%%`(s_5, var_32*{var_32 <- `var_32*`}, ref_E#3*{ref_E#3 <- `ref_E*#3`}*{`ref_E*#3` <- `ref_E**`}, var_31) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#5*{data#5 <- `data*`}|{}, byte#7*{byte#7 <- `byte*#113`}*{`byte*#113` <- `byte**`}, var_30) + -- (fun_subst_all_tabletype: `%%%`(tabletype#160, $typeuse_deftype(dt#23)*{dt#23 <- `dt*`}, var_29))*{var_29 <- `var_29*`, tabletype#160 <- `tabletype*`} + -- if (|`var_29*`| = |`tabletype*`|) + -- (fun_subst_all_tabletype: `%%%`(tabletype#159, $typeuse_deftype(dt#22)*{dt#22 <- `dt*`}, var_28))*{var_28 <- `var_28*`, tabletype#159 <- `tabletype*`} + -- if (|`var_28*`| = |`tabletype*`|) + -- fun_alloctables: `%%%%`(s_3, var_28*{var_28 <- `var_28*`}, ref_T#3*{ref_T#3 <- `ref_T*`}, var_27) + -- (fun_subst_all_memtype: `%%%`(memtype#126, $typeuse_deftype(dt#21)*{dt#21 <- `dt*`}, var_26))*{var_26 <- `var_26*`, memtype#126 <- `memtype*`} + -- if (|`var_26*`| = |`memtype*`|) + -- (fun_subst_all_memtype: `%%%`(memtype#125, $typeuse_deftype(dt#20)*{dt#20 <- `dt*`}, var_25))*{var_25 <- `var_25*`, memtype#125 <- `memtype*`} + -- if (|`var_25*`| = |`memtype*`|) + -- fun_allocmems: `%%%`(s_2, var_25*{var_25 <- `var_25*`}, var_24) + -- (fun_subst_all_globaltype: `%%%`(globaltype#126, $typeuse_deftype(dt#19)*{dt#19 <- `dt*`}, var_23))*{var_23 <- `var_23*`, globaltype#126 <- `globaltype*`} + -- if (|`var_23*`| = |`globaltype*`|) + -- (fun_subst_all_globaltype: `%%%`(globaltype#125, $typeuse_deftype(dt#18)*{dt#18 <- `dt*`}, var_22))*{var_22 <- `var_22*`, globaltype#125 <- `globaltype*`} + -- if (|`var_22*`| = |`globaltype*`|) + -- fun_allocglobals: `%%%%`(s_1, var_22*{var_22 <- `var_22*`}, val_G#3*{val_G#3 <- `val_G*`}, var_21) + -- (fun_subst_all_tagtype: `%%%`(tagtype#82, $typeuse_deftype(dt#17)*{dt#17 <- `dt*`}, var_20))*{var_20 <- `var_20*`, tagtype#82 <- `tagtype*`} + -- if (|`var_20*`| = |`tagtype*`|) + -- (fun_subst_all_tagtype: `%%%`(tagtype#81, $typeuse_deftype(dt#16)*{dt#16 <- `dt*`}, var_19))*{var_19 <- `var_19*`, tagtype#81 <- `tagtype*`} + -- if (|`var_19*`| = |`tagtype*`|) + -- fun_alloctags: `%%%`(s, var_19*{var_19 <- `var_19*`}, var_18) + -- fun_allocfuncs: `%%%%%`(s_6, dt#14*{dt#14 <- `dt*`}[$proj_uN_0(x#3).0]*{x#3 <- `x*`}, FUNC_funccode(x#4, local#3*{local#3 <- `local*#84`}, expr_F#2)*{expr_F#2 <- `expr_F*`, `local*#84` <- `local**`, x#4 <- `x*`}, moduleinst^|func#6*{func#6 <- `func*`}|{}, var_17) + -- (if ($proj_uN_0(x#3).0 < |dt#14*{dt#14 <- `dt*`}|))*{x#3 <- `x*`} + -- (fun_subst_all_reftype: `%%%`(elemtype#2, $typeuse_deftype(dt#13)*{dt#13 <- `dt*`}, var_16))*{var_16 <- `var_16*`, elemtype#2 <- `elemtype*`} + -- if (|`var_16*`| = |`elemtype*`|) + -- fun_allocelems: `%%%%`(s_5, var_16*{var_16 <- `var_16*`}, ref_E#2*{ref_E#2 <- `ref_E*#2`}*{`ref_E*#2` <- `ref_E**`}, var_15) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data#4*{data#4 <- `data*`}|{}, byte#6*{byte#6 <- `byte*#112`}*{`byte*#112` <- `byte**`}, var_14) + -- (fun_subst_all_tabletype: `%%%`(tabletype#158, $typeuse_deftype(dt#12)*{dt#12 <- `dt*`}, var_13))*{var_13 <- `var_13*`, tabletype#158 <- `tabletype*`} + -- if (|`var_13*`| = |`tabletype*`|) + -- fun_alloctables: `%%%%`(s_3, var_13*{var_13 <- `var_13*`}, ref_T#2*{ref_T#2 <- `ref_T*`}, var_12) + -- (fun_subst_all_memtype: `%%%`(memtype#124, $typeuse_deftype(dt#11)*{dt#11 <- `dt*`}, var_11))*{var_11 <- `var_11*`, memtype#124 <- `memtype*`} + -- if (|`var_11*`| = |`memtype*`|) + -- fun_allocmems: `%%%`(s_2, var_11*{var_11 <- `var_11*`}, var_10) + -- (fun_subst_all_globaltype: `%%%`(globaltype#124, $typeuse_deftype(dt#10)*{dt#10 <- `dt*`}, var_9))*{var_9 <- `var_9*`, globaltype#124 <- `globaltype*`} + -- if (|`var_9*`| = |`globaltype*`|) + -- fun_allocglobals: `%%%%`(s_1, var_9*{var_9 <- `var_9*`}, val_G#2*{val_G#2 <- `val_G*`}, var_8) + -- (fun_subst_all_tagtype: `%%%`(tagtype#80, $typeuse_deftype(dt#9)*{dt#9 <- `dt*`}, var_7))*{var_7 <- `var_7*`, tagtype#80 <- `tagtype*`} + -- if (|`var_7*`| = |`tagtype*`|) + -- fun_alloctags: `%%%`(s, var_7*{var_7 <- `var_7*`}, var_6) + -- fun_alloctypes: `%%`(type#3*{type#3 <- `type*`}, var_5) + -- fun_funcsxa: `%%`(externaddr#6*{externaddr#6 <- `externaddr*`}, var_4) + -- fun_tablesxa: `%%`(externaddr#5*{externaddr#5 <- `externaddr*`}, var_3) + -- fun_memsxa: `%%`(externaddr#4*{externaddr#4 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#3*{externaddr#3 <- `externaddr*`}, var_1) + -- fun_tagsxa: `%%`(externaddr#2*{externaddr#2 <- `externaddr*`}, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmodule_is_wf: `%%%%%%%`(store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmodule_is_wf_0{store : store, module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst), var_4 : (store, moduleinst)}: + `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- (wf_ref: `%`(var_2))*{var_2 <- var_2} + -- (wf_ref: `%`(var_3))*{var_3 <- var_3}*{var_3 <- var_3} + -- if (ret_val = var_4) + -- wf_store: `%`(ret_val.0) + -- wf_moduleinst: `%`(ret_val.1) + -- fun_allocmodule: `%%%%%%%`(store, module, var_0, var_1, var_2, var_3, var_4) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_rundata_: `%%%`(dataidx, data, instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_rundata__case_0{x : uN, n : nat, `b*` : byte*}: + `%%%`(x, DATA_data(b#11*{b#11 <- `b*`}, PASSIVE_datamode), []) + -- if (n = |`b*`|) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_rundata__case_1{x : uN, n : nat, `b*` : byte*, y : uN, `instr*` : instr*}: + `%%%`(x, DATA_data(b#12*{b#12 <- `b*`}, ACTIVE_datamode(y, instr#9*{instr#9 <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)]) + -- if (n = |`b*`|) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation rundata__is_wf: `%%%`(dataidx : dataidx, data : data, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule rundata__is_wf_0{dataidx : dataidx, data : data, ret_val : instr*, var_0 : instr*}: + `%%%`(dataidx, data, ret_val) + -- wf_uN: `%%`(32, dataidx) + -- wf_data: `%`(data) + -- if (ret_val = var_0) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + -- fun_rundata_: `%%%`(dataidx, data, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_runelem_: `%%%`(elemidx, elem, instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_0{x : uN, rt : reftype, n : nat, `e*` : expr*}: + `%%%`(x, ELEM_elem(rt, e#1*{e#1 <- `e*`}, PASSIVE_elemmode), []) + -- if (n = |`e*`|) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_1{x : uN, rt : reftype, n : nat, `e*` : expr*}: + `%%%`(x, ELEM_elem(rt, e#2*{e#2 <- `e*`}, DECLARE_elemmode), [`ELEM.DROP`_instr(x)]) + -- if (n = |`e*`|) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_2{x : uN, rt : reftype, n : nat, `e*` : expr*, y : uN, `instr*` : instr*}: + `%%%`(x, ELEM_elem(rt, e#3*{e#3 <- `e*`}, ACTIVE_elemmode(y, instr#10*{instr#10 <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)]) + -- if (n = |`e*`|) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation runelem__is_wf: `%%%`(elemidx : elemidx, elem : elem, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule runelem__is_wf_0{elemidx : elemidx, elem : elem, ret_val : instr*, var_0 : instr*}: + `%%%`(elemidx, elem, ret_val) + -- wf_uN: `%%`(32, elemidx) + -- wf_elem: `%`(elem) + -- if (ret_val = var_0) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + -- fun_runelem_: `%%%`(elemidx, elem, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation fun_evalexprs: `%%%`(state, expr*, (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule fun_evalexprs_case_0{z : state}: + `%%%`(z, [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule fun_evalexprs_case_1{z : state, expr : instr*, `expr'*` : expr*, ref : ref, z' : state, var_2 : (state, ref*), var_1 : (state, ref*), var_0 : (state, ref*)}: + `%%%`(z, [expr] ++ expr'#1*{expr'#1 <- `expr'*`}, (z'', [ref] ++ ref'*{ref' <- `ref'*`})) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [$val_ref(ref)]) + -- let{z'' : state, `ref'*` : ref*} (z'', ref'#7*{ref'#7 <- `ref'*`}) = var_0 + -- wf_state: `%`(z') + -- wf_state: `%`(var_1.0) + -- (wf_ref: `%`(iter#342))*{iter#342 <- var_2.1} + -- fun_evalexprs: `%%%`(z', expr'#4*{expr'#4 <- `expr'*`}, var_2) + -- fun_evalexprs: `%%%`(z', expr'#3*{expr'#3 <- `expr'*`}, var_1) + -- fun_evalexprs: `%%%`(z', expr'#2*{expr'#2 <- `expr'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation evalexprs_is_wf: `%%%`(state : state, var_0 : expr*, ret_val : (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule evalexprs_is_wf_0{state : state, var_0 : expr*, ret_val : (state, ref*), var_1 : (state, ref*)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- ret_val.1} + -- fun_evalexprs: `%%%`(state, var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation fun_evalexprss: `%%%`(state, expr**, (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule fun_evalexprss_case_0{z : state}: + `%%%`(z, [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule fun_evalexprss_case_1{z : state, `expr*` : expr*, `expr'**` : expr**, var_5 : (state, ref**), var_4 : (state, ref**), var_3 : (state, ref*), var_2 : (state, ref*), var_1 : (state, ref**), var_0 : (state, ref*)}: + `%%%`(z, [expr#365*{expr#365 <- `expr*`}] ++ expr'#5*{expr'#5 <- `expr'*#1`}*{`expr'*#1` <- `expr'**`}, (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) + -- let{`ref*` : ref*, z' : state} (z', ref#7*{ref#7 <- `ref*`}) = var_0 + -- let{z'' : state, `ref'**` : ref**} (z'', ref'#8*{ref'#8 <- `ref'*#4`}*{`ref'*#4` <- `ref'**`}) = var_1 + -- wf_state: `%`(var_2.0) + -- (wf_ref: `%`(iter#343))*{iter#343 <- var_3.1} + -- wf_state: `%`(var_4.0) + -- (wf_ref: `%`(iter#345))*{iter#345 <- iter#344}*{iter#344 <- var_5.1} + -- fun_evalexprss: `%%%`(z', expr'#8*{expr'#8 <- `expr'*#4`}*{`expr'*#4` <- `expr'**`}, var_5) + -- fun_evalexprss: `%%%`(z', expr'#7*{expr'#7 <- `expr'*#3`}*{`expr'*#3` <- `expr'**`}, var_4) + -- fun_evalexprs: `%%%`(z, expr#368*{expr#368 <- `expr*`}, var_3) + -- fun_evalexprs: `%%%`(z, expr#367*{expr#367 <- `expr*`}, var_2) + -- fun_evalexprss: `%%%`(z', expr'#6*{expr'#6 <- `expr'*#2`}*{`expr'*#2` <- `expr'**`}, var_1) + -- fun_evalexprs: `%%%`(z, expr#366*{expr#366 <- `expr*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation evalexprss_is_wf: `%%%`(state : state, var_0 : expr**, ret_val : (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule evalexprss_is_wf_0{state : state, var_0 : expr**, ret_val : (state, ref**), var_1 : (state, ref**)}: + `%%%`(state, var_0, ret_val) + -- wf_state: `%`(state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- ret_val.1} + -- fun_evalexprss: `%%%`(state, var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule fun_evalglobals_case_0{z : state}: + `%%%%`(z, [], [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule fun_evalglobals_case_1{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, val : val, z' : state, var_3 : (state, val*), var_2 : (state, val*), var_1 : (state, val*), var_0 : (store, globaladdr)}: + `%%%%`(z, [gt] ++ gt'#1*{gt'#1 <- `gt'*`}, [expr] ++ expr'#9*{expr'#9 <- `expr'*`}, (z'', [val] ++ val'*{val' <- `val'*`})) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) + -- let{s : store, f : frame} `%;%`_state(s, f) = z' + -- let{s' : store, a : addr} (s', a) = var_0 + -- let{z'' : state, `val'*` : val*} (z'', val'#4*{val'#4 <- `val'*`}) = var_1 + -- wf_state: `%`(z') + -- wf_store: `%`(var_0.0) + -- wf_state: `%`(var_2.0) + -- (wf_val: `%`(iter#346))*{iter#346 <- var_3.1} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#4*{gt'#4 <- `gt'*`}, expr'#12*{expr'#12 <- `expr'*`}, var_3) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#3*{gt'#3 <- `gt'*`}, expr'#11*{expr'#11 <- `expr'*`}, var_2) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'#2*{gt'#2 <- `gt'*`}, expr'#10*{expr'#10 <- `expr'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, gt, val, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation evalglobals_is_wf: `%%%%`(state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule evalglobals_is_wf_0{state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*), var_2 : (state, val*)}: + `%%%%`(state, var_0, var_1, ret_val) + -- wf_state: `%`(state) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_instr: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_state: `%`(ret_val.0) + -- (wf_val: `%`(iter))*{iter <- ret_val.1} + -- fun_evalglobals: `%%%%`(state, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_instantiate: `%%%%`(store, module, externaddr*, config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, `xt_I*` : externtype*, `xt_E*` : externtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, i_D : nat, i_E : nat, var_23 : funcaddr*, var_22 : globaladdr*, var_21 : deftype*, `var_20*` : instr**, `var_19*` : instr**, `var_18*` : instr**, `var_17*` : instr**, var_16 : (store, moduleinst), var_15 : (store, moduleinst), var_14 : (state, ref**), var_13 : (state, ref**), var_12 : (state, ref*), var_11 : (state, ref*), var_10 : (state, val*), var_9 : (state, val*), `var_8*` : instr**, `var_7*` : instr**, var_6 : (store, moduleinst), var_5 : (state, ref**), var_4 : (state, ref*), var_3 : (state, val*), var_2 : funcaddr*, var_1 : globaladdr*, var_0 : deftype*}: + `%%%%`(s, module, externaddr#7*{externaddr#7 <- `externaddr*`}, `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I#1*{xt_I#1 <- `xt_I*`}, xt_E#1*{xt_E#1 <- `xt_E*`})) + -- (Externaddr_ok: `%|-%:%`(s, externaddr#8, xt_I#2))*{externaddr#8 <- `externaddr*`, xt_I#2 <- `xt_I*`} + -- if (|`externaddr*`| = |`xt_I*`|) + -- let{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} MODULE_module(`%`_list(type#5*{type#5 <- `type*`}), `%`_list(import#4*{import#4 <- `import*`}), `%`_list(tag#5*{tag#5 <- `tag*`}), `%`_list(global#6*{global#6 <- `global*`}), `%`_list(mem#6*{mem#6 <- `mem*`}), `%`_list(table#6*{table#6 <- `table*`}), `%`_list(func#9*{func#9 <- `func*`}), `%`_list(data#7*{data#7 <- `data*`}), `%`_list(elem#6*{elem#6 <- `elem*`}), start#5?{start#5 <- `start?`}, `%`_list(export#8*{export#8 <- `export*`})) = module + -- if (global#7*{global#7 <- `global*`} = GLOBAL_global(globaltype#129, expr_G#3)*{expr_G#3 <- `expr_G*`, globaltype#129 <- `globaltype*`}) + -- if (table#7*{table#7 <- `table*`} = TABLE_table(tabletype#163, expr_T#3)*{expr_T#3 <- `expr_T*`, tabletype#163 <- `tabletype*`}) + -- if (data#8*{data#8 <- `data*`} = DATA_data(byte#9*{byte#9 <- `byte*#118`}, datamode#116)*{`byte*#118` <- `byte**`, datamode#116 <- `datamode*`}) + -- if (elem#7*{elem#7 <- `elem*`} = ELEM_elem(reftype#516, expr_E#3*{expr_E#3 <- `expr_E*#3`}, elemmode#237)*{elemmode#237 <- `elemmode*`, `expr_E*#3` <- `expr_E**`, reftype#516 <- `reftype*`}) + -- if (start#6?{start#6 <- `start?`} = START_start(x#8)?{x#8 <- `x?`}) + -- if (moduleinst_0 = {TYPES var_0, TAGS [], GLOBALS var_1, MEMS [], TABLES [], FUNCS var_2 ++ (|s.FUNCS_store| + i_F#2)^(i_F#2<|func#10*{func#10 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- let{z' : state, `val_G*` : val*} (z', val_G#4*{val_G#4 <- `val_G*`}) = var_3 + -- let{z'' : state, `ref_T*` : ref*} (z'', ref_T#4*{ref_T#4 <- `ref_T*`}) = var_4 + -- let{z''' : state, `ref_E**` : ref**} (z''', ref_E#4*{ref_E#4 <- `ref_E*#4`}*{`ref_E*#4` <- `ref_E**`}) = var_5 + -- let{s''' : store, f : frame} `%;%`_state(s''', f) = z''' + -- let{s'''' : store, moduleinst : moduleinst} (s'''', moduleinst) = var_6 + -- let{`instr_D*` : instr*} instr_D#1*{instr_D#1 <- `instr_D*`} = $concat_(syntax instr, var_7^(i_D#1<|data#9*{data#9 <- `data*`}|){var_7 <- `var_7*`}) + -- let{`instr_E*` : instr*} instr_E#1*{instr_E#1 <- `instr_E*`} = $concat_(syntax instr, var_8^(i_E#1<|elem#8*{elem#8 <- `elem*`}|){var_8 <- `var_8*`}) + -- let{`instr_S?` : instr?} instr_S#1?{instr_S#1 <- `instr_S?`} = CALL_instr(x#9)?{x#9 <- `x?`} + -- wf_state: `%`(z) + -- wf_state: `%`(var_9.0) + -- (wf_val: `%`(iter#347))*{iter#347 <- var_10.1} + -- wf_state: `%`(var_11.0) + -- (wf_ref: `%`(iter#348))*{iter#348 <- var_12.1} + -- wf_state: `%`(var_13.0) + -- (wf_ref: `%`(iter#350))*{iter#350 <- iter#349}*{iter#349 <- var_14.1} + -- wf_store: `%`(var_15.0) + -- wf_moduleinst: `%`(var_16.1) + -- (wf_instr: `%`(iter#351))*{iter#351 <- $concat_(syntax instr, var_17^(i_D#2<|data#11*{data#11 <- `data*`}|){var_17 <- `var_17*`})} + -- (wf_instr: `%`(iter#352))*{iter#352 <- var_18}^(i_D#3<|data#13*{data#13 <- `data*`}|){var_18 <- `var_18*`} + -- (wf_instr: `%`(iter#353))*{iter#353 <- $concat_(syntax instr, var_19^(i_E#2<|elem#10*{elem#10 <- `elem*`}|){var_19 <- `var_19*`})} + -- (wf_instr: `%`(iter#354))*{iter#354 <- var_20}^(i_E#3<|elem#12*{elem#12 <- `elem*`}|){var_20 <- `var_20*`} + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I#3*{xt_I#3 <- `xt_I*`}, xt_E#2*{xt_E#2 <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(`%`_list(type#7*{type#7 <- `type*`}), `%`_list(import#5*{import#5 <- `import*`}), `%`_list(tag#6*{tag#6 <- `tag*`}), `%`_list(global#8*{global#8 <- `global*`}), `%`_list(mem#7*{mem#7 <- `mem*`}), `%`_list(table#8*{table#8 <- `table*`}), `%`_list(func#11*{func#11 <- `func*`}), `%`_list(data#15*{data#15 <- `data*`}), `%`_list(elem#14*{elem#14 <- `elem*`}), start#7?{start#7 <- `start?`}, `%`_list(export#9*{export#9 <- `export*`}))) + -- (wf_global: `%`(GLOBAL_global(globaltype#134, expr_G#7)))*{expr_G#7 <- `expr_G*`, globaltype#134 <- `globaltype*`} + -- if (|`expr_G*`| = |`globaltype*`|) + -- (wf_table: `%`(TABLE_table(tabletype#165, expr_T#7)))*{expr_T#7 <- `expr_T*`, tabletype#165 <- `tabletype*`} + -- if (|`expr_T*`| = |`tabletype*`|) + -- (wf_data: `%`(DATA_data(byte#10*{byte#10 <- `byte*#120`}, datamode#118)))*{`byte*#120` <- `byte**`, datamode#118 <- `datamode*`} + -- if (|`byte**`| = |`datamode*`|) + -- (wf_elem: `%`(ELEM_elem(reftype#518, expr_E#7*{expr_E#7 <- `expr_E*#7`}, elemmode#239)))*{elemmode#239 <- `elemmode*`, `expr_E*#7` <- `expr_E**`, reftype#518 <- `reftype*`} + -- if (|`elemmode*`| = |`expr_E**`|) + -- if (|`elemmode*`| = |`reftype*`|) + -- (wf_start: `%`(START_start(x#10)))?{x#10 <- `x?`} + -- wf_moduleinst: `%`({TYPES var_21, TAGS [], GLOBALS var_22, MEMS [], TABLES [], FUNCS var_23 ++ (|s.FUNCS_store| + i_F#3)^(i_F#3<|func#12*{func#12 <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- wf_state: `%`(`%;%`_state(s''', f)) + -- (wf_uN: `%%`(32, `%`_uN(i_D#4)))^(i_D#4<|data#16*{data#16 <- `data*`}|){} + -- (wf_uN: `%%`(32, `%`_uN(i_E#4)))^(i_E#4<|elem#15*{elem#15 <- `elem*`}|){} + -- (wf_instr: `%`(CALL_instr(x#11)))?{x#11 <- `x?`} + -- fun_funcsxa: `%%`(externaddr#15*{externaddr#15 <- `externaddr*`}, var_23) + -- fun_globalsxa: `%%`(externaddr#14*{externaddr#14 <- `externaddr*`}, var_22) + -- fun_alloctypes: `%%`(type#8*{type#8 <- `type*`}, var_21) + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#3), elem#13*{elem#13 <- `elem*`}[i_E#3], var_20))^(i_E#3<|elem#12*{elem#12 <- `elem*`}|){var_20 <- `var_20*`} + -- (if (i_E#3 < |elem#13*{elem#13 <- `elem*`}|))^(i_E#3<|elem#12*{elem#12 <- `elem*`}|){} + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#2), elem#11*{elem#11 <- `elem*`}[i_E#2], var_19))^(i_E#2<|elem#10*{elem#10 <- `elem*`}|){var_19 <- `var_19*`} + -- (if (i_E#2 < |elem#11*{elem#11 <- `elem*`}|))^(i_E#2<|elem#10*{elem#10 <- `elem*`}|){} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#3), data#14*{data#14 <- `data*`}[i_D#3], var_18))^(i_D#3<|data#13*{data#13 <- `data*`}|){var_18 <- `var_18*`} + -- (if (i_D#3 < |data#14*{data#14 <- `data*`}|))^(i_D#3<|data#13*{data#13 <- `data*`}|){} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#2), data#12*{data#12 <- `data*`}[i_D#2], var_17))^(i_D#2<|data#11*{data#11 <- `data*`}|){var_17 <- `var_17*`} + -- (if (i_D#2 < |data#12*{data#12 <- `data*`}|))^(i_D#2<|data#11*{data#11 <- `data*`}|){} + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#13*{externaddr#13 <- `externaddr*`}, val_G#7*{val_G#7 <- `val_G*`}, ref_T#7*{ref_T#7 <- `ref_T*`}, ref_E#7*{ref_E#7 <- `ref_E*#7`}*{`ref_E*#7` <- `ref_E**`}, var_16) + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#12*{externaddr#12 <- `externaddr*`}, val_G#6*{val_G#6 <- `val_G*`}, ref_T#6*{ref_T#6 <- `ref_T*`}, ref_E#6*{ref_E#6 <- `ref_E*#6`}*{`ref_E*#6` <- `ref_E**`}, var_15) + -- fun_evalexprss: `%%%`(z'', expr_E#6*{expr_E#6 <- `expr_E*#6`}*{`expr_E*#6` <- `expr_E**`}, var_14) + -- fun_evalexprss: `%%%`(z'', expr_E#5*{expr_E#5 <- `expr_E*#5`}*{`expr_E*#5` <- `expr_E**`}, var_13) + -- fun_evalexprs: `%%%`(z', expr_T#6*{expr_T#6 <- `expr_T*`}, var_12) + -- fun_evalexprs: `%%%`(z', expr_T#5*{expr_T#5 <- `expr_T*`}, var_11) + -- fun_evalglobals: `%%%%`(z, globaltype#133*{globaltype#133 <- `globaltype*`}, expr_G#6*{expr_G#6 <- `expr_G*`}, var_10) + -- fun_evalglobals: `%%%%`(z, globaltype#132*{globaltype#132 <- `globaltype*`}, expr_G#5*{expr_G#5 <- `expr_G*`}, var_9) + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E#1), elem#9*{elem#9 <- `elem*`}[i_E#1], var_8))^(i_E#1<|elem#8*{elem#8 <- `elem*`}|){var_8 <- `var_8*`} + -- (if (i_E#1 < |elem#9*{elem#9 <- `elem*`}|))^(i_E#1<|elem#8*{elem#8 <- `elem*`}|){} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D#1), data#10*{data#10 <- `data*`}[i_D#1], var_7))^(i_D#1<|data#9*{data#9 <- `data*`}|){var_7 <- `var_7*`} + -- (if (i_D#1 < |data#10*{data#10 <- `data*`}|))^(i_D#1<|data#9*{data#9 <- `data*`}|){} + -- fun_allocmodule: `%%%%%%%`(s''', module, externaddr#11*{externaddr#11 <- `externaddr*`}, val_G#5*{val_G#5 <- `val_G*`}, ref_T#5*{ref_T#5 <- `ref_T*`}, ref_E#5*{ref_E#5 <- `ref_E*#5`}*{`ref_E*#5` <- `ref_E**`}, var_6) + -- fun_evalexprss: `%%%`(z'', expr_E#4*{expr_E#4 <- `expr_E*#4`}*{`expr_E*#4` <- `expr_E**`}, var_5) + -- fun_evalexprs: `%%%`(z', expr_T#4*{expr_T#4 <- `expr_T*`}, var_4) + -- fun_evalglobals: `%%%%`(z, globaltype#131*{globaltype#131 <- `globaltype*`}, expr_G#4*{expr_G#4 <- `expr_G*`}, var_3) + -- fun_funcsxa: `%%`(externaddr#10*{externaddr#10 <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr#9*{externaddr#9 <- `externaddr*`}, var_1) + -- fun_alloctypes: `%%`(type#6*{type#6 <- `type*`}, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation instantiate_is_wf: `%%%%`(store : store, module : module, var_0 : externaddr*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule instantiate_is_wf_0{store : store, module : module, var_0 : externaddr*, ret_val : config, var_1 : config}: + `%%%%`(store, module, var_0, ret_val) + -- wf_store: `%`(store) + -- wf_module: `%`(module) + -- if (ret_val = var_1) + -- wf_config: `%`(ret_val) + -- fun_instantiate: `%%%%`(store, module, var_0, var_1) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_invoke: `%%%%`(store, funcaddr, val*, config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_invoke_case_0{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%%`(s, funcaddr, val#1*{val#1 <- `val*`}, `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1#4*{t_1#4 <- `t_1*`}), `%`_resulttype(t_2#4*{t_2#4 <- `t_2*`}))) + -- if (funcaddr < |s.FUNCS_store|) + -- (Val_ok: `%|-%:%`(s, val#2, t_1#5))*{t_1#5 <- `t_1*`, val#2 <- `val*`} + -- if (|`t_1*`| = |`val*`|) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1#6*{t_1#6 <- `t_1*`}), `%`_resulttype(t_2#5*{t_2#5 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation invoke_is_wf: `%%%%`(store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule invoke_is_wf_0{store : store, funcaddr : funcaddr, var_0 : val*, ret_val : config, var_1 : config}: + `%%%%`(store, funcaddr, var_0, ret_val) + -- wf_store: `%`(store) + -- (wf_val: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_config: `%`(ret_val) + -- fun_invoke: `%%%%`(store, funcaddr, var_0, var_1) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax castop = (null?, null?) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax memidxop = (memidx, memarg) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax startopt = start* + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax code = (local*, expr) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax nopt = u32* + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +def $ieee_(N : N, rat : rat) : fNmag + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation ieee__is_wf: `%%%`(N : N, rat : rat, ret_val : fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule ieee__is_wf_0{N : N, rat : rat, ret_val : fNmag}: + `%%%`(N, rat, ret_val) + -- if (ret_val = $ieee_(N, rat)) + -- wf_fNmag: `%%`(N, ret_val) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax idctxt = +{ + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation wf_idctxt: `%`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) + -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} + -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} + -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} + -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} + -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} + -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} + -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} + -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} + -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} + -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax I = idctxt + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation fun_concat_idctxt: `%%`(idctxt*, idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule fun_concat_idctxt_case_0: + `%%`([], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule fun_concat_idctxt_case_1{I : idctxt, `I'*` : I*, var_0 : idctxt}: + `%%`([I] ++ I'#1*{I'#1 <- `I'*`}, I +++ var_0) + -- fun_concat_idctxt: `%%`(I'*{I' <- `I'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation concat_idctxt_is_wf: `%%`(var_0 : idctxt*, ret_val : idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule concat_idctxt_is_wf_0{var_0 : idctxt*, ret_val : idctxt, var_1 : idctxt}: + `%%`(var_0, ret_val) + -- (wf_idctxt: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_idctxt: `%`(ret_val) + -- fun_concat_idctxt: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation Idctxt_ok: `|-%:OK`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule _{I : I, `field**` : char**}: + `|-%:OK`(I) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) + -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} + -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) + -- wf_idctxt: `%`(I) + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TYPES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TAGS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.GLOBALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.MEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.TABLES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.FUNCS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.DATAS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.ELEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LOCALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, I.LABELS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])}*{`field*` <- `field**`} + -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $dots : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +syntax decl = + | TYPE(rectype : rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype : memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx : funcidx) + | EXPORT(name : name, externidx : externidx) + +def $decl_data(data) : decl + def $decl_data{x0 : byte*, x1 : datamode}(DATA_data(x0, x1)) = DATA_decl(x0, x1) + +def $decl_elem(elem) : decl + def $decl_elem{x0 : reftype, x1 : expr*, x2 : elemmode}(ELEM_elem(x0, x1, x2)) = ELEM_decl(x0, x1, x2) + +def $decl_export(export) : decl + def $decl_export{x0 : name, x1 : externidx}(EXPORT_export(x0, x1)) = EXPORT_decl(x0, x1) + +def $decl_func(func) : decl + def $decl_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_decl(x0, x1, x2) + +def $decl_global(global) : decl + def $decl_global{x0 : globaltype, x1 : expr}(GLOBAL_global(x0, x1)) = GLOBAL_decl(x0, x1) + +def $decl_import(import) : decl + def $decl_import{x0 : name, x1 : name, x2 : externtype}(IMPORT_import(x0, x1, x2)) = IMPORT_decl(x0, x1, x2) + +def $decl_mem(mem) : decl + def $decl_mem{x0 : memtype}(MEMORY_mem(x0)) = MEMORY_decl(x0) + +def $decl_start(start) : decl + def $decl_start{x0 : funcidx}(START_start(x0)) = START_decl(x0) + +def $decl_table(table) : decl + def $decl_table{x0 : tabletype, x1 : expr}(TABLE_table(x0, x1)) = TABLE_decl(x0, x1) + +def $decl_tag(tag) : decl + def $decl_tag{x0 : tagtype}(TAG_tag(x0)) = TAG_decl(x0) + +def $decl_type(type) : decl + def $decl_type{x0 : rectype}(TYPE_type(x0)) = TYPE_decl(x0) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +relation wf_decl: `%`(decl) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_0{rectype : rectype}: + `%`(TYPE_decl(rectype)) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_1{name : name, name_0 : name, externtype : externtype}: + `%`(IMPORT_decl(name, name_0, externtype)) + -- wf_name: `%`(name) + -- wf_name: `%`(name_0) + -- wf_externtype: `%`(externtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_2{tagtype : tagtype}: + `%`(TAG_decl(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_3{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_decl(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_4{memtype : memtype}: + `%`(MEMORY_decl(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_5{tabletype : tabletype, expr : expr}: + `%`(TABLE_decl(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_6{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_decl(typeidx, `local*`, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_7{`byte*` : byte*, datamode : datamode}: + `%`(DATA_decl(`byte*`, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_8{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_decl(reftype, `expr*`, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_9{funcidx : funcidx}: + `%`(START_decl(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_10{name : name, externidx : externidx}: + `%`(EXPORT_decl(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 +relation fun_typesd: `%%`(decl*, type*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_1{rectype : rectype, `decl'*` : decl*, var_0 : type*}: + `%%`([TYPE_decl(rectype)] ++ decl'#1*{decl'#1 <- `decl'*`}, [TYPE_type(rectype)] ++ var_0) + -- fun_typesd: `%%`(decl'#2*{decl'#2 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_2{decl : decl, `decl'*` : decl*, var_0 : type*}: + `%%`([decl] ++ decl'#3*{decl'#3 <- `decl'*`}, var_0) + -- fun_typesd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation fun_importsd: `%%`(decl*, import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_1{name : name, name_0 : name, externtype : externtype, `decl'*` : decl*, var_0 : import*}: + `%%`([IMPORT_decl(name, name_0, externtype)] ++ decl'#4*{decl'#4 <- `decl'*`}, [IMPORT_import(name, name_0, externtype)] ++ var_0) + -- fun_importsd: `%%`(decl'#5*{decl'#5 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_2{decl : decl, `decl'*` : decl*, var_0 : import*}: + `%%`([decl] ++ decl'#6*{decl'#6 <- `decl'*`}, var_0) + -- fun_importsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation importsd_is_wf: `%%`(var_0 : decl*, ret_val : import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule importsd_is_wf_0{var_0 : decl*, ret_val : import*, var_1 : import*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_import: `%`(ret_val))*{ret_val <- ret_val} + -- fun_importsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation fun_tagsd: `%%`(decl*, tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_1{tagtype : tagtype, `decl'*` : decl*, var_0 : tag*}: + `%%`([TAG_decl(tagtype)] ++ decl'#7*{decl'#7 <- `decl'*`}, [TAG_tag(tagtype)] ++ var_0) + -- fun_tagsd: `%%`(decl'#8*{decl'#8 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_2{decl : decl, `decl'*` : decl*, var_0 : tag*}: + `%%`([decl] ++ decl'#9*{decl'#9 <- `decl'*`}, var_0) + -- fun_tagsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation tagsd_is_wf: `%%`(var_0 : decl*, ret_val : tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule tagsd_is_wf_0{var_0 : decl*, ret_val : tag*, var_1 : tag*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_tag: `%`(ret_val))*{ret_val <- ret_val} + -- fun_tagsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation fun_globalsd: `%%`(decl*, global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_1{globaltype : globaltype, expr : expr, `decl'*` : decl*, var_0 : global*}: + `%%`([GLOBAL_decl(globaltype, expr)] ++ decl'#10*{decl'#10 <- `decl'*`}, [GLOBAL_global(globaltype, expr)] ++ var_0) + -- fun_globalsd: `%%`(decl'#11*{decl'#11 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_2{decl : decl, `decl'*` : decl*, var_0 : global*}: + `%%`([decl] ++ decl'#12*{decl'#12 <- `decl'*`}, var_0) + -- fun_globalsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation globalsd_is_wf: `%%`(var_0 : decl*, ret_val : global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule globalsd_is_wf_0{var_0 : decl*, ret_val : global*, var_1 : global*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_global: `%`(ret_val))*{ret_val <- ret_val} + -- fun_globalsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation fun_memsd: `%%`(decl*, mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_1{memtype : memtype, `decl'*` : decl*, var_0 : mem*}: + `%%`([MEMORY_decl(memtype)] ++ decl'#13*{decl'#13 <- `decl'*`}, [MEMORY_mem(memtype)] ++ var_0) + -- fun_memsd: `%%`(decl'#14*{decl'#14 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_2{decl : decl, `decl'*` : decl*, var_0 : mem*}: + `%%`([decl] ++ decl'#15*{decl'#15 <- `decl'*`}, var_0) + -- fun_memsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation memsd_is_wf: `%%`(var_0 : decl*, ret_val : mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule memsd_is_wf_0{var_0 : decl*, ret_val : mem*, var_1 : mem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_mem: `%`(ret_val))*{ret_val <- ret_val} + -- fun_memsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation fun_tablesd: `%%`(decl*, table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_1{tabletype : tabletype, expr : expr, `decl'*` : decl*, var_0 : table*}: + `%%`([TABLE_decl(tabletype, expr)] ++ decl'#16*{decl'#16 <- `decl'*`}, [TABLE_table(tabletype, expr)] ++ var_0) + -- fun_tablesd: `%%`(decl'#17*{decl'#17 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_2{decl : decl, `decl'*` : decl*, var_0 : table*}: + `%%`([decl] ++ decl'#18*{decl'#18 <- `decl'*`}, var_0) + -- fun_tablesd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation tablesd_is_wf: `%%`(var_0 : decl*, ret_val : table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule tablesd_is_wf_0{var_0 : decl*, ret_val : table*, var_1 : table*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_table: `%`(ret_val))*{ret_val <- ret_val} + -- fun_tablesd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation fun_funcsd: `%%`(decl*, func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_1{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*, var_0 : func*}: + `%%`([FUNC_decl(typeidx, `local*`, expr)] ++ decl'#19*{decl'#19 <- `decl'*`}, [FUNC_func(typeidx, `local*`, expr)] ++ var_0) + -- fun_funcsd: `%%`(decl'#20*{decl'#20 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_2{decl : decl, `decl'*` : decl*, var_0 : func*}: + `%%`([decl] ++ decl'#21*{decl'#21 <- `decl'*`}, var_0) + -- fun_funcsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation funcsd_is_wf: `%%`(var_0 : decl*, ret_val : func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule funcsd_is_wf_0{var_0 : decl*, ret_val : func*, var_1 : func*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_func: `%`(ret_val))*{ret_val <- ret_val} + -- fun_funcsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation fun_datasd: `%%`(decl*, data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_1{`byte*` : byte*, datamode : datamode, `decl'*` : decl*, var_0 : data*}: + `%%`([DATA_decl(`byte*`, datamode)] ++ decl'#22*{decl'#22 <- `decl'*`}, [DATA_data(`byte*`, datamode)] ++ var_0) + -- fun_datasd: `%%`(decl'#23*{decl'#23 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_2{decl : decl, `decl'*` : decl*, var_0 : data*}: + `%%`([decl] ++ decl'#24*{decl'#24 <- `decl'*`}, var_0) + -- fun_datasd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation datasd_is_wf: `%%`(var_0 : decl*, ret_val : data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule datasd_is_wf_0{var_0 : decl*, ret_val : data*, var_1 : data*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_data: `%`(ret_val))*{ret_val <- ret_val} + -- fun_datasd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation fun_elemsd: `%%`(decl*, elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_1{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*, var_0 : elem*}: + `%%`([ELEM_decl(reftype, `expr*`, elemmode)] ++ decl'#25*{decl'#25 <- `decl'*`}, [ELEM_elem(reftype, `expr*`, elemmode)] ++ var_0) + -- fun_elemsd: `%%`(decl'#26*{decl'#26 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_2{decl : decl, `decl'*` : decl*, var_0 : elem*}: + `%%`([decl] ++ decl'#27*{decl'#27 <- `decl'*`}, var_0) + -- fun_elemsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation elemsd_is_wf: `%%`(var_0 : decl*, ret_val : elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule elemsd_is_wf_0{var_0 : decl*, ret_val : elem*, var_1 : elem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_elem: `%`(ret_val))*{ret_val <- ret_val} + -- fun_elemsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation fun_startsd: `%%`(decl*, start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_1{funcidx : funcidx, `decl'*` : decl*, var_0 : start*}: + `%%`([START_decl(funcidx)] ++ decl'#28*{decl'#28 <- `decl'*`}, [START_start(funcidx)] ++ var_0) + -- fun_startsd: `%%`(decl'#29*{decl'#29 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_2{decl : decl, `decl'*` : decl*, var_0 : start*}: + `%%`([decl] ++ decl'#30*{decl'#30 <- `decl'*`}, var_0) + -- fun_startsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation startsd_is_wf: `%%`(var_0 : decl*, ret_val : start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule startsd_is_wf_0{var_0 : decl*, ret_val : start*, var_1 : start*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_start: `%`(ret_val))*{ret_val <- ret_val} + -- fun_startsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation fun_exportsd: `%%`(decl*, export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_1{name : name, externidx : externidx, `decl'*` : decl*, var_0 : export*}: + `%%`([EXPORT_decl(name, externidx)] ++ decl'#31*{decl'#31 <- `decl'*`}, [EXPORT_export(name, externidx)] ++ var_0) + -- fun_exportsd: `%%`(decl'#32*{decl'#32 <- `decl'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_2{decl : decl, `decl'*` : decl*, var_0 : export*}: + `%%`([decl] ++ decl'#33*{decl'#33 <- `decl'*`}, var_0) + -- fun_exportsd: `%%`(decl'*{decl' <- `decl'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation exportsd_is_wf: `%%`(var_0 : decl*, ret_val : export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule exportsd_is_wf_0{var_0 : decl*, ret_val : export*, var_1 : export*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_export: `%`(ret_val))*{ret_val <- ret_val} + -- fun_exportsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +relation fun_ordered: `%%`(decl*, bool) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule fun_ordered_case_0{`decl*` : decl*, var_1 : import*, var_0 : import*}: + `%%`(decl#1*{decl#1 <- `decl*`}, true) + -- if (var_0 = []) + -- (wf_import: `%`(iter#355))*{iter#355 <- var_1} + -- fun_importsd: `%%`(decl#3*{decl#3 <- `decl*`}, var_1) + -- fun_importsd: `%%`(decl#2*{decl#2 <- `decl*`}, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule fun_ordered_case_1{name : name, name_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*, var_5 : func*, var_4 : table*, var_3 : mem*, var_2 : global*, var_1 : tag*, var_0 : import*}: + `%%`(decl_1#1*{decl_1#1 <- `decl_1*`} ++ [IMPORT_decl(name, name_0, externtype)] ++ decl_2#1*{decl_2#1 <- `decl_2*`}, ((((((var_0 = []) /\ (var_1 = [])) /\ (var_2 = [])) /\ (var_3 = [])) /\ (var_4 = [])) /\ (var_5 = []))) + -- fun_funcsd: `%%`(decl_1#2*{decl_1#2 <- `decl_1*`}, var_5) + -- fun_tablesd: `%%`(decl_1#3*{decl_1#3 <- `decl_1*`}, var_4) + -- fun_memsd: `%%`(decl_1#4*{decl_1#4 <- `decl_1*`}, var_3) + -- fun_globalsd: `%%`(decl_1#5*{decl_1#5 <- `decl_1*`}, var_2) + -- fun_tagsd: `%%`(decl_1#6*{decl_1#6 <- `decl_1*`}, var_1) + -- fun_importsd: `%%`(decl_1#7*{decl_1#7 <- `decl_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec +relation Context_ok: `|-%:OK`(context) + ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec + rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `|-%:OK`(C) + -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (Deftype_ok: `%|-%:OK`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{dt_F <- `dt_F*`, t_1 <- `t_1*`, t_2 <- `t_2*`} + -- if (|`dt_F*`| = |`t_1*`|) + -- if (|`dt_F*`| = |`t_2*`|) + -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- `et*`} + -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- `lct*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt)])))*{rt <- `rt*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([$valtype_reftype(rt')])))?{rt' <- `rt'?`} + -- (if ($proj_uN_0(x).0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} + -- wf_context: `%`(C) + -- wf_context: `%`(C_0) + -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype($valtype_reftype(rt)*{rt <- `rt*`})], RETURN ?(`%`_resulttype(lift($valtype_reftype(rt')?{rt' <- `rt'?`}))), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- wf_context: `%`({TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (wf_context: `%`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}))^(i%`_comptype(`%`_resulttype([t_1]), `%`_resulttype([t_2]))))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + -- if (|`t_1*`| = |`t_2*`|) + -- if (n = |`dt*`|) + -- if (m = |`st*`|) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Localval_ok: `%|-%:%`(store, val?, localtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule set{s : store, val : val, t : valtype}: + `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_val: `%`(val) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule unset{s : store}: + `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, BOT_valtype)) + -- wf_store: `%`(s) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, BOT_valtype)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Datainst_ok: `%|-%:%`(store, datainst, datatype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `b*` : byte*}: + `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) + -- wf_store: `%`(s) + -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + -- wf_store: `%`(s) + -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exportinst_ok: `%|-%:OK`(store, exportinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, nm : name, xa : externaddr, xt : externtype}: + `%|-%:OK`(s, {NAME nm, ADDR xa}) + -- Externaddr_ok: `%|-%:%`(s, xa, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_exportinst: `%`({NAME nm, ADDR xa}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `deftype*` : deftype*, `tagaddr*` : tagaddr*, `globaladdr*` : globaladdr*, `memaddr*` : memaddr*, `tableaddr*` : tableaddr*, `funcaddr*` : funcaddr*, `dataaddr*` : dataaddr*, `elemaddr*` : elemaddr*, `exportinst*` : exportinst*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `memtype*` : memtype*, `tabletype*` : tabletype*, `deftype_F*` : deftype*, `datatype*` : datatype*, `elemtype*` : elemtype*, `subtype*` : subtype*}: + `%|-%:%`(s, {TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}, {TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) + -- (Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, deftype))*{deftype <- `deftype*`} + -- (Externaddr_ok: `%|-%:%`(s, TAG_externaddr(tagaddr), TAG_externtype(tagtype)))*{tagaddr <- `tagaddr*`, tagtype <- `tagtype*`} + -- if (|`tagaddr*`| = |`tagtype*`|) + -- (Externaddr_ok: `%|-%:%`(s, GLOBAL_externaddr(globaladdr), GLOBAL_externtype(globaltype)))*{globaladdr <- `globaladdr*`, globaltype <- `globaltype*`} + -- if (|`globaladdr*`| = |`globaltype*`|) + -- (Externaddr_ok: `%|-%:%`(s, FUNC_externaddr(funcaddr), FUNC_externtype($typeuse_deftype(deftype_F))))*{deftype_F <- `deftype_F*`, funcaddr <- `funcaddr*`} + -- if (|`deftype_F*`| = |`funcaddr*`|) + -- (Externaddr_ok: `%|-%:%`(s, MEM_externaddr(memaddr), MEM_externtype(memtype)))*{memaddr <- `memaddr*`, memtype <- `memtype*`} + -- if (|`memaddr*`| = |`memtype*`|) + -- (Externaddr_ok: `%|-%:%`(s, TABLE_externaddr(tableaddr), TABLE_externtype(tabletype)))*{tableaddr <- `tableaddr*`, tabletype <- `tabletype*`} + -- if (|`tableaddr*`| = |`tabletype*`|) + -- (Datainst_ok: `%|-%:%`(s, s.DATAS_store[dataaddr], datatype))*{dataaddr <- `dataaddr*`, datatype <- `datatype*`} + -- if (|`dataaddr*`| = |`datatype*`|) + -- (if (dataaddr < |s.DATAS_store|))*{dataaddr <- `dataaddr*`} + -- (Eleminst_ok: `%|-%:%`(s, s.ELEMS_store[elemaddr], elemtype))*{elemaddr <- `elemaddr*`, elemtype <- `elemtype*`} + -- if (|`elemaddr*`| = |`elemtype*`|) + -- (if (elemaddr < |s.ELEMS_store|))*{elemaddr <- `elemaddr*`} + -- (Exportinst_ok: `%|-%:OK`(s, exportinst))*{exportinst <- `exportinst*`} + -- if $disjoint_(syntax name, exportinst.NAME_exportinst*{exportinst <- `exportinst*`}) + -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} + -- if (|TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}| > 0) + -- wf_store: `%`(s) + -- wf_moduleinst: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagaddr*{tagaddr <- `tagaddr*`}, GLOBALS globaladdr*{globaladdr <- `globaladdr*`}, MEMS memaddr*{memaddr <- `memaddr*`}, TABLES tableaddr*{tableaddr <- `tableaddr*`}, FUNCS funcaddr*{funcaddr <- `funcaddr*`}, DATAS dataaddr*{dataaddr <- `dataaddr*`}, ELEMS elemaddr*{elemaddr <- `elemaddr*`}, EXPORTS exportinst*{exportinst <- `exportinst*`}}) + -- wf_context: `%`({TYPES deftype*{deftype <- `deftype*`}, TAGS tagtype*{tagtype <- `tagtype*`}, GLOBALS globaltype*{globaltype <- `globaltype*`}, MEMS memtype*{memtype <- `memtype*`}, TABLES tabletype*{tabletype <- `tabletype*`}, FUNCS deftype_F*{deftype_F <- `deftype_F*`}, DATAS datatype*{datatype <- `datatype*`}, ELEMS elemtype*{elemtype <- `elemtype*`}, LOCALS [], LABELS [], RETURN ?(), REFS `%`_funcidx(i)^(i<|funcaddr*{funcaddr <- `funcaddr*`}|){}, RECS subtype*{subtype <- `subtype*`}}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (wf_externtype: `%`(TAG_externtype(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_externtype: `%`(GLOBAL_externtype(globaltype)))*{globaltype <- `globaltype*`} + -- (wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_F))))*{deftype_F <- `deftype_F*`} + -- (wf_externtype: `%`(MEM_externtype(memtype)))*{memtype <- `memtype*`} + -- (wf_externtype: `%`(TABLE_externtype(tabletype)))*{tabletype <- `tabletype*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Frame_ok: `%|-%:%`(store, frame, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `val?*` : val?*, moduleinst : moduleinst, C : context, `lct*` : localtype*}: + `%|-%:%`(s, {LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}, C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) + -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) + -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} + -- if (|`lct*`| = |`val?*`|) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_frame: `%`({LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:3.1-4.36 +relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:10.1-12.46 + rule plain{s : store, C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instr_ok: `%|-%:%`(C, instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 + rule ref{s : store, C : context, ref : ref, rt : reftype}: + `%;%|-%:%`(s, C, $instr_ref(ref), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_ref: `%`(ref) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_reftype(rt)]))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 + rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: + `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`}), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`})], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`}))) + -- if (n = |`t'*`|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:23.1-26.37 + rule frame{s : store, C : context, n : n, f : frame, `instr*` : instr*, `t*` : valtype*, C' : context}: + `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) + -- Frame_ok: `%|-%:%`(s, f, C') + -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`})) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t^n{t <- `t*`}))) + -- if (n = |`t*`|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 + rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 + rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRAP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 +relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 + rule empty{s : store, C : context}: + `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 + rule seq{s : store, C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*, var_0 : context?}: + `%;%|-%:%`(s, C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- if (|`init*`| = |`t*`|) + -- if (|`init*`| = |`x_1*`|) + -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} + -- Instrs_ok2: `%;%|-%:%`(s, !(var_0), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- if (var_0 =/= ?()) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_context: `%`(!(var_0)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- fun_with_locals: `%%%%`(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}, var_0) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:47.1-51.33 + rule sub{s : store, C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it') + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 + rule frame{s : store, C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 +relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:60.1-62.44 + rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, jt : tagtype}: + `%|-%:%`(s, {TYPE jt}, jt) + -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) + -- wf_store: `%`(s) + -- wf_taginst: `%`({TYPE jt}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `mut?` : mut?, t : valtype, val : val}: + `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Val_ok: `%|-%:%`(s, val, t) + -- wf_store: `%`(s) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Meminst_ok: `%|-%:%`(store, meminst, memtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, m : m, `b*` : byte*}: + `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) + -- wf_store: `%`(s) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, m : m, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- if (|ref*{ref <- `ref*`}| = n) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + -- wf_store: `%`(s) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) + -- wf_tabletype: `%`(`%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, moduleinst : moduleinst, func : func, C : context, dt' : deftype}: + `%|-%:%`(s, {TYPE dt, MODULE moduleinst, CODE $funccode_func(func)}, dt) + -- Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt) + -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) + -- Func_ok: `%|-%:%`(C, func, dt') + -- Deftype_sub: `%|-%<:%`(C, dt', dt) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_funcinst: `%`({TYPE dt, MODULE moduleinst, CODE $funccode_func(func)}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Structinst_ok: `%|-%:OK`(store, structinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, `fv*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} + -- if (|`fv*`| = |`zt*`|) + -- wf_store: `%`(s) + -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, `fv*` : fieldval*, `mut?` : mut?, zt : storagetype}: + `%|-%:OK`(s, {TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} + -- wf_store: `%`(s) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exninst_ok: `%|-%:OK`(store, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, ta : tagaddr, `val*` : val*, dt : deftype, `t*` : valtype*}: + `%|-%:OK`(s, {TAG ta, FIELDS val*{val <- `val*`}}) + -- if ($typeuse_deftype(dt) = s.TAGS_store[ta].TYPE_taginst) + -- if (ta < |s.TAGS_store|) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} + -- if (|`t*`| = |`val*`|) + -- wf_store: `%`(s) + -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:208.1-209.50 +relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:222.1-225.35 + rule trans{fv_1 : fieldval, s : store, fv_2 : fieldval, fv' : fieldval}: + `%>>_%%`(fv_1, s, fv_2) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv') + -- ImmutReachable: `%>>_%%`(fv', s, fv_2) + -- wf_fieldval: `%`(fv_1) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(fv_2) + -- wf_fieldval: `%`(fv') + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 + rule `ref.struct`{a : addr, s : store, i : nat, `ft*` : fieldtype*, zt : storagetype}: + `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) + -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (a < |s.STRUCTS_store|) + -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) + -- if (i < |ft*{ft <- `ft*`}|) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt)) + -- if (i < |s.STRUCTS_store[a].FIELDS_structinst|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:232.1-234.42 + rule `ref.array`{a : addr, s : store, i : nat, zt : storagetype}: + `%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) + -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(`%%`_fieldtype(?(), zt))) + -- if (a < |s.ARRAYS_store|) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(), zt))) + -- if (i < |s.ARRAYS_store[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 + rule `ref.exn`{a : addr, s : store, i : nat}: + `%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, $fieldval_val(s.EXNS_store[a].FIELDS_exninst[i])) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)) + -- if (i < |s.EXNS_store[a].FIELDS_exninst|) + -- if (a < |s.EXNS_store|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 + rule `ref.extern`{ref : ref, s : store}: + `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, $fieldval_ref(ref)) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(`REF.EXTERN`_fieldval(ref)) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation fun_NotImmutReachable_before_fun_NotImmutReachable_case_1: `%%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_0{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%`(fv_1, s, fv_2) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation fun_NotImmutReachable: `%%%%`(fieldval, store, fieldval, bool) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_0{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%%`(fv_1, s, fv_2, false) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_1{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%%`(fv_1, s, fv_2, true) + -- ~ fun_NotImmutReachable_before_fun_NotImmutReachable_case_1: `%%%`(fv_1, s, fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{fv_1 : fieldval, s : store, fv_2 : fieldval, var_0 : bool}: + `~%>>_%%`(fv_1, s, fv_2) + -- if var_0 + -- wf_fieldval: `%`(fv_1) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(fv_2) + -- fun_NotImmutReachable: `%%%%`(fv_1, s, fv_2, var_0) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Store_ok: `|-%:OK`(store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `taginst*` : taginst*, `tagtype*` : tagtype*, `globalinst*` : globalinst*, `globaltype*` : globaltype*, `meminst*` : meminst*, `memtype*` : memtype*, `tableinst*` : tableinst*, `tabletype*` : tabletype*, `deftype*` : deftype*, `funcinst*` : funcinst*, `datainst*` : datainst*, `datatype*` : datatype*, `eleminst*` : eleminst*, `elemtype*` : elemtype*, `structinst*` : structinst*, `arrayinst*` : arrayinst*, `exninst*` : exninst*}: + `|-%:OK`(s) + -- (Taginst_ok: `%|-%:%`(s, taginst, tagtype))*{taginst <- `taginst*`, tagtype <- `tagtype*`} + -- if (|`taginst*`| = |`tagtype*`|) + -- (Globalinst_ok: `%|-%:%`(s, globalinst, globaltype))*{globalinst <- `globalinst*`, globaltype <- `globaltype*`} + -- if (|`globalinst*`| = |`globaltype*`|) + -- (Meminst_ok: `%|-%:%`(s, meminst, memtype))*{meminst <- `meminst*`, memtype <- `memtype*`} + -- if (|`meminst*`| = |`memtype*`|) + -- (Tableinst_ok: `%|-%:%`(s, tableinst, tabletype))*{tableinst <- `tableinst*`, tabletype <- `tabletype*`} + -- if (|`tableinst*`| = |`tabletype*`|) + -- (Funcinst_ok: `%|-%:%`(s, funcinst, deftype))*{deftype <- `deftype*`, funcinst <- `funcinst*`} + -- if (|`deftype*`| = |`funcinst*`|) + -- (Datainst_ok: `%|-%:%`(s, datainst, datatype))*{datainst <- `datainst*`, datatype <- `datatype*`} + -- if (|`datainst*`| = |`datatype*`|) + -- (Eleminst_ok: `%|-%:%`(s, eleminst, elemtype))*{eleminst <- `eleminst*`, elemtype <- `elemtype*`} + -- if (|`eleminst*`| = |`elemtype*`|) + -- (Structinst_ok: `%|-%:OK`(s, structinst))*{structinst <- `structinst*`} + -- (Arrayinst_ok: `%|-%:OK`(s, arrayinst))*{arrayinst <- `arrayinst*`} + -- (Exninst_ok: `%|-%:OK`(s, exninst))*{exninst <- `exninst*`} + -- (NotImmutReachable: `~%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, `REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + -- wf_store: `%`(s) + -- (wf_typeuse: `%`(tagtype))*{tagtype <- `tagtype*`} + -- (wf_globaltype: `%`(globaltype))*{globaltype <- `globaltype*`} + -- (wf_memtype: `%`(memtype))*{memtype <- `memtype*`} + -- (wf_tabletype: `%`(tabletype))*{tabletype <- `tabletype*`} + -- (wf_reftype: `%`(elemtype))*{elemtype <- `elemtype*`} + -- (wf_fieldval: `%`(`REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (wf_fieldval: `%`(`REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (wf_fieldval: `%`(`REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- wf_store: `%`({TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_taginst: `%<=%`(taginst, taginst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{jt : tagtype}: + `%<=%`({TYPE jt}, {TYPE jt}) + -- wf_taginst: `%`({TYPE jt}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_globalinst: `%<=%`(globalinst, globalinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: + `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}) + -- wf_globalinst: `%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_meminst: `%<=%`(meminst, meminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, m : m, `b*` : byte*, n' : n, `b'*` : byte*}: + `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) + -- if (n <= n') + -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m)))), BYTES b'*{b' <- `b'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_tableinst: `%<=%`(tableinst, tableinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, m : m, rt : reftype, `ref*` : ref*, n' : n, `ref'*` : ref*}: + `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) + -- if (n <= n') + -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))), rt), REFS ref*{ref <- `ref*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n'), ?(`%`_u64(m))), rt), REFS ref'*{ref' <- `ref'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_funcinst: `%<=%`(funcinst, funcinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, mm : moduleinst, fc : funccode}: + `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) + -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_datainst: `%<=%`(datainst, datainst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`b*` : byte*, `b'*` : byte*}: + `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) + -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) + -- wf_datainst: `%`({BYTES b*{b <- `b*`}}) + -- wf_datainst: `%`({BYTES b'*{b' <- `b'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_eleminst: `%<=%`(eleminst, eleminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: + `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) + -- wf_eleminst: `%`({TYPE rt, REFS ref*{ref <- `ref*`}}) + -- wf_eleminst: `%`({TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_structinst: `%<=%`(structinst, structinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} + -- if (|`fv*`| = |`fv'*`|) + -- if (|`fv*`| = |`mut?*`|) + -- wf_structinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_structinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, `fv*` : fieldval*, `fv'*` : fieldval*, `mut?` : mut?, zt : storagetype}: + `%<=%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}, {TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} + -- if (|`fv*`| = |`fv'*`|) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv*{fv <- `fv*`}}) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'*{fv' <- `fv'*`}}) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_exninst: `%<=%`(exninst, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{ta : tagaddr, `val*` : val*}: + `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) + -- wf_exninst: `%`({TAG ta, FIELDS val*{val <- `val*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_store: `%<=%`(store, store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, s' : store}: + `%<=%`(s, s') + -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} + -- (if (a < |s.TAGS_store|))^(a<|s.TAGS_store|){} + -- (if (a < |s'.TAGS_store|))^(a<|s.TAGS_store|){} + -- (Extend_globalinst: `%<=%`(s.GLOBALS_store[a], s'.GLOBALS_store[a]))^(a<|s.GLOBALS_store|){} + -- (if (a < |s.GLOBALS_store|))^(a<|s.GLOBALS_store|){} + -- (if (a < |s'.GLOBALS_store|))^(a<|s.GLOBALS_store|){} + -- (Extend_meminst: `%<=%`(s.MEMS_store[a], s'.MEMS_store[a]))^(a<|s.MEMS_store|){} + -- (if (a < |s.MEMS_store|))^(a<|s.MEMS_store|){} + -- (if (a < |s'.MEMS_store|))^(a<|s.MEMS_store|){} + -- (Extend_tableinst: `%<=%`(s.TABLES_store[a], s'.TABLES_store[a]))^(a<|s.TABLES_store|){} + -- (if (a < |s.TABLES_store|))^(a<|s.TABLES_store|){} + -- (if (a < |s'.TABLES_store|))^(a<|s.TABLES_store|){} + -- (Extend_funcinst: `%<=%`(s.FUNCS_store[a], s'.FUNCS_store[a]))^(a<|s.FUNCS_store|){} + -- (if (a < |s.FUNCS_store|))^(a<|s.FUNCS_store|){} + -- (if (a < |s'.FUNCS_store|))^(a<|s.FUNCS_store|){} + -- (Extend_datainst: `%<=%`(s.DATAS_store[a], s'.DATAS_store[a]))^(a<|s.DATAS_store|){} + -- (if (a < |s.DATAS_store|))^(a<|s.DATAS_store|){} + -- (if (a < |s'.DATAS_store|))^(a<|s.DATAS_store|){} + -- (Extend_eleminst: `%<=%`(s.ELEMS_store[a], s'.ELEMS_store[a]))^(a<|s.ELEMS_store|){} + -- (if (a < |s.ELEMS_store|))^(a<|s.ELEMS_store|){} + -- (if (a < |s'.ELEMS_store|))^(a<|s.ELEMS_store|){} + -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} + -- (if (a < |s.STRUCTS_store|))^(a<|s.STRUCTS_store|){} + -- (if (a < |s'.STRUCTS_store|))^(a<|s.STRUCTS_store|){} + -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} + -- (if (a < |s.ARRAYS_store|))^(a<|s.ARRAYS_store|){} + -- (if (a < |s'.ARRAYS_store|))^(a<|s.ARRAYS_store|){} + -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} + -- (if (a < |s.EXNS_store|))^(a<|s.EXNS_store|){} + -- (if (a < |s'.EXNS_store|))^(a<|s.EXNS_store|){} + -- wf_store: `%`(s) + -- wf_store: `%`(s') + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation State_ok: `|-%:%`(state, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, C : context}: + `|-%:%`(`%;%`_state(s, f), C) + -- Store_ok: `|-%:OK`(s) + -- Frame_ok: `%|-%:%`(s, f, C) + -- wf_context: `%`(C) + -- wf_state: `%`(`%;%`_state(s, f)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Config_ok: `|-%:%`(config, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`})) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- (wf_valtype: `%`(t))*{t <- `t*`} + -- wf_context: `%`(C) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`})) + -- wf_state: `%`(`%;%`_state(s, f)) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax A = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax B = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax sym = + | _FIRST(A_1 : A) + | _DOTS + | _LAST(A_n : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax symsplit = + | _FIRST(A_1 : A) + | _LAST(A_2 : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax recorddots = () + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax record = +{ + FIELD_1 A, + FIELD_2 A, + `...` recorddots +} + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax pth = + | PTHSYNTAX + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +syntax T = nat + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremise: `%`(nat) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremisedots: `...` + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingScheme: `%`(nat) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec + rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: + `%`(conclusion) + -- NotationTypingPremise: `%`(premise_1) + -- NotationTypingPremise: `%`(premise_2) + -- NotationTypingPremisedots: `...` + -- NotationTypingPremise: `%`(premise_n) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 +relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 + rule `i32.add`{C : context}: + `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 + rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: + `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(`GLOBAL.GET`_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 + rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation NotationReduct: `~>%`(instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 3{q_1 : num_, q_5 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 4{q_6 : num_}: + `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $instrdots : instr* + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation instrdots_is_wf: `%`(ret_val : instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule instrdots_is_wf_0{ret_val : instr*}: + `%`(ret_val) + -- if (ret_val = $instrdots) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax label = + | `LABEL_%{%}`(n : n, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_label: `%`(label) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule label_case_0{n : n, `instr*` : instr*}: + `%`(`LABEL_%{%}`_label(n, `instr*`)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax callframe = + | `FRAME_%{%}`(n : n, frame : frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_callframe: `%`(callframe) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule callframe_case_0{n : n, frame : frame}: + `%`(`FRAME_%{%}`_callframe(n, frame)) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation allocX_is_wf(syntax X, syntax Y): `%%%%`(store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule allocX_is_wf_0{syntax X, syntax Y, store : store, X_0 : X, Y_0 : Y, ret_val : (store, addr)}: + `%%%%`(store, X_0, Y_0, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocX(syntax X, syntax Y, store, X_0, Y_0)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 +def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 + def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 + def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*}(syntax X, syntax Y, s, [X] ++ X'#1*{X'#1 <- `X'*`}, [Y] ++ Y'#1*{Y'#1 <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax X, syntax Y, s, X, Y) + -- let{s_2 : store, `a'*` : addr*} (s_2, a'#1*{a'#1 <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'#2*{X'#2 <- `X'*`}, Y'#2*{Y'#2 <- `Y'*`}) + -- wf_store: `%`($allocX(syntax X, syntax Y, s, X, Y).0) + -- wf_store: `%`($allocXs(syntax X, syntax Y, s_1, X'#3*{X'#3 <- `X'*`}, Y'#3*{Y'#3 <- `Y'*`}).0) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 +relation allocXs_is_wf(syntax X, syntax Y): `%%%%`(store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 + rule allocXs_is_wf_0{syntax X, syntax Y, store : store, var_0 : X*, var_1 : Y*, ret_val : (store, addr*)}: + `%%%%`(store, var_0, var_1, ret_val) + -- wf_store: `%`(store) + -- if (ret_val = $allocXs(syntax X, syntax Y, store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +syntax symdots = + | `%`(i : nat) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +relation wf_symdots: `%`(symdots) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + rule symdots_case_0{i : nat}: + `%`(`%`_symdots(i)) + -- if (i = 0) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +def $var(syntax X) : nat + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + def $var{syntax X}(syntax X) = 0 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax abbreviated = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax expanded = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax syntax = () + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bbyte : byte + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 +grammar BuN(N : N) : uN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 + prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) + -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 + prod{m : m, n : n} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 +grammar BsN(N : N) : sN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 + prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) + -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 + prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) + -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 + prod{i : sN, n : n} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * ($proj_sN_0(i).0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BiN(N : N) : iN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{i : sN, var_0 : nat} i:BsN(N) => `%`_iN(var_0) + -- fun_inv_signed_: `%%%`(N, $proj_sN_0(i).0, var_0) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BfN(N : N) : fN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu32 : u32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu64 : u64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bs33 : s33 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : sN} ``:BsN(33) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi32 : i32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi64 : i64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf32 : f32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : fN} ``:BfN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf64 : f64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : fN} ``:BfN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blist(syntax el, grammar BX : el) : el* + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bname : name + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{name : name, `b*` : byte*, var_0 : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name + -- if (var_0 = b*{b <- `b*`}) + -- fun_utf8: `%%`($proj_name_0(name).0, var_0) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btypeidx : typeidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btagidx : tagidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bglobalidx : globalidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bmemidx : memidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btableidx : tableidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfuncidx : funcidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bdataidx : dataidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Belemidx : elemidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blocalidx : localidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfieldidx : fieldidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blabelidx : labelidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{l : labelidx} l:Bu32 => l + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bexternidx : externidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bnumtype : numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7C => F64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7D => F32_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7E => I64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7F => I32_numtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvectype : vectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7B => V128_vectype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Babsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x69 => EXN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6A => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6B => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6C => I31_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6D => EQ_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6E => ANY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6F => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x70 => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x71 => NONE_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x72 => NOEXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x73 => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x74 => NOEXN_heaptype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => ht + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) + -- if ($proj_sN_0(x33).0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Breftype : reftype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvaltype : valtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{nt : numtype} nt:Bnumtype => $valtype_numtype(nt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{vt : vectype} vt:Bvectype => $valtype_vectype(vt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{rt : reftype} rt:Breftype => $valtype_reftype(rt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bresulttype : resulttype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmut : mut? + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x00 => ?() + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x01 => ?(MUT_mut) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bpacktype : packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x77 => I16_packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x78 => I8_packtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bstoragetype : storagetype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{t : valtype} t:Bvaltype => $storagetype_valtype(t) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{pt : packtype} pt:Bpacktype => $storagetype_packtype(pt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bfieldtype : fieldtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bcomptype : comptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bsubtype : subtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Brectype : rectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Blimits : (addrtype, limits) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btagtype : tagtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bglobaltype : globaltype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmemtype : memtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btabletype : tabletype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bexterntype : externtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcastop : castop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x00 => (?(), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x01 => (?(NULL_null), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x02 => (?(), ?(NULL_null)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x03 => (?(NULL_null), ?(NULL_null)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bblocktype : blocktype + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x40 => _RESULT_blocktype(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx(($proj_sN_0(i).0 : int <:> nat))) + -- if ($proj_sN_0(i).0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcatch : catch + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bmemarg : memidxop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) + -- if (n < (2 ^ 6)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, n : n, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) + -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Blaneidx : laneidx + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} `%`_byte($proj_uN_0(l).0):Bbyte => `%`_laneidx($proj_uN_0(l).0) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 +grammar Binstr : instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 + prod 0x00 => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 + prod 0x01 => NOP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 + prod 0x1A => DROP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 + prod 0x1B => SELECT_instr(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 + prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 + prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 + prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 + prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 + prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 + prod 0x0A => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 + prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 + prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 + prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 + prod 0x0F => RETURN_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 + prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 + prod{x : idx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 + prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 + prod{x : idx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 + prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 + prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 + prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 + prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 + prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 + prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 + prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 + prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 + prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 + prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 + prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 + prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 + prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 + prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 + prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 + prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 + prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 + prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 + prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 + prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 + prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 + prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 + prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 + prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 + prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 + prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 + prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 + prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 + prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 + prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 + prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 + prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 + prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 + prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 + prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 + prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 + prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 + prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 + prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 + prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 + prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 + prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 + prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 + prod 0xD1 => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 + prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 + prod 0xD3 => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 + prod 0xD4 => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 + prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 + prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 + prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 + prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 + prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 + prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 + prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 + prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 + prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 + prod {{0xFB} {`%`_u32(15):Bu32}} => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 + prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 + prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 + prod {{0xFB} {`%`_u32(26):Bu32}} => `ANY.CONVERT_EXTERN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 + prod {{0xFB} {`%`_u32(27):Bu32}} => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 + prod {{0xFB} {`%`_u32(28):Bu32}} => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 + prod {{0xFB} {`%`_u32(29):Bu32}} => `I31.GET`_instr(S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 + prod {{0xFB} {`%`_u32(30):Bu32}} => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 + prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 + prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 + prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 + prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 + prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 + prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 + prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 + prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 + prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 + prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 + prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 + prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 + prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 + prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 + prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 + prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 + prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 + prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 + prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 + prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 + prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 + prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 + prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 + prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 + prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 + prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 + prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 + prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 + prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 + prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 + prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 + prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 + prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 + prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 + prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 + prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 + prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 + prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 + prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 + prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 + prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 + prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 + prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 + prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 + prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 + prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 + prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 + prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 + prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 + prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 + prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 + prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 + prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 + prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 + prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 + prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 + prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 + prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 + prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 + prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 + prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 + prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 + prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 + prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 + prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 + prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 + prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 + prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 + prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 + prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 + prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 + prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 + prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 + prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 + prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 + prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 + prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 + prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 + prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 + prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 + prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 + prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 + prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 + prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 + prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 + prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 + prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 + prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 + prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 + prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 + prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 + prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 + prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 + prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 + prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 + prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 + prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 + prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 + prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 + prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 + prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 + prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 + prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 + prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 + prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 + prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 + prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 + prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 + prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 + prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 + prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 + prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 + prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 + prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 + prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 + prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 + prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 + prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 + prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 + prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 + prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 + prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 + prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 + prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 + prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 + prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 + prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 + prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 + prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 + prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 + prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 + prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 + prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 + prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 + prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 + prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 + prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 + prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 + prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 + prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 + prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 + prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx($proj_uN_0(l).0)^16{l <- `l*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 + prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 + prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 + prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 + prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 + prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 + prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 + prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 + prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 + prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 + prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 + prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 + prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 + prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 + prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 + prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 + prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 + prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 + prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 + prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 + prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 + prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 + prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 + prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 + prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 + prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 + prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 + prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 + prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 + prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 + prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 + prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 + prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 + prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 + prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 + prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 + prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 + prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 + prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 + prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 + prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 + prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 + prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 + prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 + prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 + prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 + prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 + prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 + prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 + prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 + prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 + prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 + prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 + prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 + prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 + prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 + prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 + prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 + prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 + prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 + prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 + prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 + prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 + prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 + prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 + prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 + prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 + prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 + prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 + prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 + prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 + prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 + prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 + prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 + prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 + prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 + prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 + prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 + prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 + prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 + prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 + prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 + prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 + prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 + prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 + prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 + prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 + prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 + prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 + prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 + prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 + prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 + prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 + prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 + prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 + prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 + prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 + prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 + prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 + prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 + prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 + prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 + prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 + prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 + prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 + prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 + prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 + prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 + prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 + prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 + prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 + prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 + prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 + prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 + prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 + prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 + prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 + prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 + prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 + prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 + prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 + prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 + prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 + prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 + prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 + prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 + prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 + prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 + prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 + prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 + prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 + prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 + prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 + prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 + prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 + prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 + prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 + prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 + prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 + prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 + prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 + prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 + prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 + prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 + prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 + prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 + prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 + prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 + prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 + prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 + prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 + prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 + prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 + prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 + prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 + prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 + prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 + prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 + prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 + prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 + prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 + prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 + prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 + prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 + prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 + prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 + prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 + prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 + prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 + prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 + prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 + prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 + prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 + prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 + prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 + prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 + prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 + prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 + prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 + prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 + prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 + prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 + prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 + prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 + prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 + prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 + prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 + prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 + prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 + prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 + prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 + prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 + prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 + prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 + prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 + prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 + prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 + prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 + prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 + prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 + prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 + prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 + prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 + prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 + prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 + prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 + prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 + prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 + prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 + prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 + prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 + prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 + prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 + prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 + prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 + prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 + prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 + prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 + prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 + prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) +} + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bexpr : expr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`en*` : en*, len : nat} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} + -- if (len = 0) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod eps => [] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustom : ()* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{Bname} {Bbyte*{}}} => [] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustomsec : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btype : type + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{qt : rectype} qt:Brectype => TYPE_type(qt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btypesec : type* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimport : import + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimportsec : import* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfuncsec : typeidx* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btable : table + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [`REF.NULL`_instr(ht)]) + -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btablesec : table* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmem : mem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmemsec : mem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobal : global + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobalsec : global* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexport : export + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexportsec : export* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstart : start* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{x : idx} x:Bfuncidx => [START_start(x)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstartsec : start? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => !($opt_(syntax start, startopt)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemkind : reftype + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod 0x00 => REF_reftype(?(), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belem : elem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`y*` : idx*, e_o : expr} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], DECLARE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`e*` : expr*, e_O : expr} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e_O : expr} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemsec : elem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Blocals : local* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{t : valtype, n : n} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfunc : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) + -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcode : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{code : code, len : nat} {{`%`_u32(len):Bu32} {code:Bfunc}} => code + -- if (len = 0) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcodesec : code* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdata : data + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*, e : expr} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`b*` : byte*, x : idx, e : expr} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatasec : data* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacnt : u32* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacntsec : u32? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => !($opt_(syntax u32, nopt)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btag : tag + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btagsec : tag* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmagic : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bversion : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmodule : module + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**, var_0 : dataidx*} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} + -- if ((n?{n <- `n?`} =/= ?()) \/ (var_0 = [])) + -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} + -- fun_dataidx_funcs: `%%`(func*{func <- `func*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tchar : char + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tsource : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tchar*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TuNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TsNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TfNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x21 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x23 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x24 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x25 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x26 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x27 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2A => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2B => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2D => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3A => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3D => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x40 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5E => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5F => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x60 => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7C => `%`_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7E => `%`_char(``) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x30 => 0 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x31 => 1 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x32 => 2 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x33 => 3 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x34 => 4 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x35 => 5 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x36 => 6 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x37 => 7 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x38 => 8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x39 => 9 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x41 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x42 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x43 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x44 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x45 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x46 => 15 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x61 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x62 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x63 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x64 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x65 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x66 => 15 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 +grammar Thexnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 + prod{h : nat} h:Thexdigit => h + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 + prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char} c:Tchar => c + -- if (((($proj_char_0(c).0 >= 32) /\ ($proj_char_0(c).0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\t" => `%`_char(9) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\n" => `%`_char(10) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\r" => `%`_char(13) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\"" => `%`_char(34) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\'" => `%`_char(39) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\\" => `%`_char(92) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) + -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringelem : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char, var_0 : byte*} c:Tstringchar => var_0 + -- fun_utf8: `%%`([c], var_0) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstring : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) + -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tname : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*, `b*` : byte*, var_0 : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) + -- if (b*{b <- `b*`} = var_0) + -- fun_utf8: `%%`(c*{c <- `c*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tid : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) + -- if (|c*{c <- `c*`}| > 0) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tkeyword : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Treserved : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Ttoken : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tkeyword => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TuNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TsNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TfNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : byte} [``]:Tstring => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tid => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x28 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x29 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Treserved => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tannotid : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tidchar+{} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tname => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 +grammar Tblockcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 + prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 +grammar Tblockchar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 + prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 + prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 + prod{`` : ()} ``:Tblockcomment => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Teof : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : text} ``:"" => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinechar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if (($proj_char_0(c).0 =/= 10) /\ ($proj_char_0(c).0 =/= 13)) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tnewline : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0A => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0D => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinecomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tlinecomment => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tblockcomment => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tformat : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tnewline => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x09 => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 +grammar Tspace : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 + prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 +grammar Tannot : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 + prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tsign : int + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod eps => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "+" => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "-" => - (1 : nat <:> int) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 +grammar Tnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 + prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TuN(N : N) : uN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} n:Tnum => `%`_uN(n) + -- if (n < (2 ^ N)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) + -- if (n < (2 ^ N)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TsN(N : N) : sN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TiN(N : N) : iN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{i : sN, var_0 : nat} i:TsN(N) => `%`_iN(var_0) + -- fun_inv_signed_: `%%%`(N, $proj_sN_0(i).0, var_0) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 +grammar Tfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 + prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 + prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 +grammar Thexfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 + prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 + prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfNmag(N : N) : fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Tfloat => $ieee_(N, q) + -- if ($ieee_(N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Thexfloat => $ieee_(N, q) + -- if ($ieee_(N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "inf" => INF_fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "nan" => NAN_fNmag($canon_(N)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + -- if ((1 <= n) /\ (n < (2 ^ !($signif(N))))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfN(N : N) : fN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti16 : u16 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(16) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf32 : f32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf64 : f64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlist(syntax el, grammar TX : el) : el* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} + -- if (|el*{el <- `el*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidx_(ids : name?*) : idx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} x:Tu32 => x + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx, id : name} id:Tid => x + -- if (ids[$proj_uN_0(x).0] = ?(id)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttypeidx_(I : I) : typeidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttagidx_(I : I) : tagidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tglobalidx_(I : I) : globalidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmemidx_(I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttableidx_(I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfuncidx_(I : I) : funcidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdataidx_(I : I) : dataidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Telemidx_(I : I) : elemidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlocalidx_(I : I) : localidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlabelidx_(I : I) : labelidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfieldidx__(I : I, x : idx) : fieldidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(I.FIELDS_I[$proj_uN_0(x).0]) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Texternidx_(I : I) : externidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnumtype : numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f32" => F32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f64" => F64_numtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvectype : vectype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "v128" => V128_vectype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tabsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "any" => ANY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "eq" => EQ_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i31" => I31_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "struct" => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "array" => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "none" => NONE_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "func" => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "nofunc" => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "exn" => EXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noexn" => NOEXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "extern" => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noextern" => NOEXTERN_heaptype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Theaptype_(I : I) : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ht : heaptype} ht:Tabsheaptype => ht + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnull : null + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "null" => NULL_null + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Treftype_(I : I) : reftype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvaltype_(I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{nt : numtype} nt:Tnumtype => $valtype_numtype(nt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{vt : vectype} vt:Tvectype => $valtype_vectype(vt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{rt : reftype} rt:Treftype_(I) => $valtype_reftype(rt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tpacktype : packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i8" => I8_packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i16" => I16_packtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tstoragetype_(I : I) : storagetype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(I) => $storagetype_valtype(t) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{pt : packtype} pt:Tpacktype => $storagetype_packtype(pt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfieldtype_(I : I) : fieldtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfield_(I : I) : (fieldtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft : fieldtype, `id?` : char?} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tparam_(I : I) : (valtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype, `id?` : char?} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tresult_(I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tcomptype_(I : I) : (comptype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfinal : final + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "final" => FINAL_final + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tsubtype_(I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypedef_(I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{st : subtype, I' : I, `id?` : char?} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Trectype_(I : I) : (rectype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{`st*` : subtype*, `I'*` : I*, var_0 : idctxt} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), var_0) + -- fun_concat_idctxt: `%%`(I'*{I' <- `I'*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Taddrtype : addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_addrtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tlimits : limits + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypeuse_(I : I) : (typeidx, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') + -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') + -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) + -- Idctxt_ok: `|-%:OK`(I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttagtype_(I : I) : tagtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tglobaltype_(I : I) : globaltype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tmemtype_(I : I) : memtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttabletype_(I : I) : tabletype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Texterntype_(I : I) : (externtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{gt : globaltype, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{tt : tabletype, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, `id?` : char?, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlabel_(I : I) : (name?, I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) + -- if ~ (?(id) <- I.LABELS_I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[$proj_uN_0(x).0] = ?()]) + -- if (?(id) = I.LABELS_I[$proj_uN_0(x).0]) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tblocktype_(I : I) : blocktype + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tcatch_(I : I) : catch + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tfoldedinstr_(I : I) : instr* + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlaneidx : laneidx + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : u8} i:Tu8 => i + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Talign_(N : N) : u32 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{n : n, m : m} {{"align="} {`%`_u64(m):Tu64}} => `%`_u32(n) + -- if (m = (2 ^ n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u32(N) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Toffset : u64 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{m : m} {{"offset="} {`%`_u64(m):Tu64}} => `%`_u64(m) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u64(0) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tmemarg_(N : N) : memarg + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{n : n, m : m} {{`%`_u32(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tplaininstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "unreachable" => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "nop" => NOP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "drop" => DROP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "return" => RETURN_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "throw_ref" => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.is_null" => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.as_non_null" => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.eq" => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.i31" => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_s" => `I31.GET`_instr(S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_u" => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "array.len" => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "any.convert_extern" => `ANY.CONVERT_EXTERN`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "extern.convert_any" => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_dot_i8x16_i7x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_dot_i8x16_i7x16_add_s" => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2)) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 +grammar Tinstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 + prod{in : instr} in:Tplaininstr_(I) => in + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 + prod{in : instr} in:Tblockinstr_(I) => in + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 +grammar Tinstrs_(I : I) : instr* + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 + prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 + prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 +grammar Tblockinstr_(I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) +} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Texpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttype_(I : I) : (type, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') + -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) + -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tglobal_(I : I) : (global, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmem_(I : I) : (mem, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttable_(I : I) : (table, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tlocal_(I : I) : (local*, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{t : valtype, `id?` : char?} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tfunc_(I : I) : (func, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I, var_0 : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = I +++ I_1 +++ var_0) + -- Idctxt_ok: `|-%:OK`(I') + -- fun_concat_idctxt: `%%`(I_2*{I_2 <- `I_2*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatastring : byte* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmemuse_(I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Toffset_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdata_(I : I) : (data, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemexpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemlist_(I : I) : (reftype, expr*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttableuse_(I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telem_(I : I) : (elem, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tstart_(I : I) : (start, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timport_(I : I) : (import, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texport_(I : I) : (export, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttagdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobaldots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmemdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttabledots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfuncdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttag_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobal_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmem_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfunc_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatamem_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemtable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecl_(I : I) : (decl, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (type, idctxt)} ``:Ttype_(I) => ($decl_type(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (import, idctxt)} ``:Timport_(I) => ($decl_import(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (tag, idctxt)} ``:Ttag_(I) => ($decl_tag(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (global, idctxt)} ``:Tglobal_(I) => ($decl_global(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (mem, idctxt)} ``:Tmem_(I) => ($decl_mem(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (table, idctxt)} ``:Ttable_(I) => ($decl_table(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (func, idctxt)} ``:Tfunc_(I) => ($decl_func(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (data, idctxt)} ``:Tdata_(I) => ($decl_data(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (elem, idctxt)} ``:Telem_(I) => ($decl_elem(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (start, idctxt)} ``:Tstart_(I) => ($decl_start(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (export, idctxt)} ``:Texport_(I) => ($decl_export(``.0), ``.1) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmodule : module + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I, var_12 : bool, var_11 : export*, var_10 : start*, var_9 : elem*, var_8 : data*, var_7 : func*, var_6 : table*, var_5 : mem*, var_4 : global*, var_3 : tag*, var_2 : import*, var_1 : type*, var_0 : idctxt} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_list(type*{type <- `type*`}), `%`_list(import*{import <- `import*`}), `%`_list(tag*{tag <- `tag*`}), `%`_list(global*{global <- `global*`}), `%`_list(mem*{mem <- `mem*`}), `%`_list(table*{table <- `table*`}), `%`_list(func*{func <- `func*`}), `%`_list(data*{data <- `data*`}), `%`_list(elem*{elem <- `elem*`}), start?{start <- `start?`}, `%`_list(export*{export <- `export*`})) + -- if (I' = var_0) + -- Idctxt_ok: `|-%:OK`(I') + -- if (type*{type <- `type*`} = var_1) + -- if (import*{import <- `import*`} = var_2) + -- if (tag*{tag <- `tag*`} = var_3) + -- if (global*{global <- `global*`} = var_4) + -- if (mem*{mem <- `mem*`} = var_5) + -- if (table*{table <- `table*`} = var_6) + -- if (func*{func <- `func*`} = var_7) + -- if (data*{data <- `data*`} = var_8) + -- if (elem*{elem <- `elem*`} = var_9) + -- if (lift(start?{start <- `start?`}) = var_10) + -- if (export*{export <- `export*`} = var_11) + -- if var_12 + -- fun_ordered: `%%`(decl*{decl <- `decl*`}, var_12) + -- fun_exportsd: `%%`(decl*{decl <- `decl*`}, var_11) + -- fun_startsd: `%%`(decl*{decl <- `decl*`}, var_10) + -- fun_elemsd: `%%`(decl*{decl <- `decl*`}, var_9) + -- fun_datasd: `%%`(decl*{decl <- `decl*`}, var_8) + -- fun_funcsd: `%%`(decl*{decl <- `decl*`}, var_7) + -- fun_tablesd: `%%`(decl*{decl <- `decl*`}, var_6) + -- fun_memsd: `%%`(decl*{decl <- `decl*`}, var_5) + -- fun_globalsd: `%%`(decl*{decl <- `decl*`}, var_4) + -- fun_tagsd: `%%`(decl*{decl <- `decl*`}, var_3) + -- fun_importsd: `%%`(decl*{decl <- `decl*`}, var_2) + -- fun_typesd: `%%`(decl*{decl <- `decl*`}, var_1) + -- fun_concat_idctxt: `%%`(I*{I <- `I*`}, var_0) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecldots_(I : I) : (decl, idctxt)* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bvar(syntax X) : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod 0x00 => ((), ()).1 + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsym : A + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod Bvar(syntax B) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsymsplit : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tvar(syntax X) : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod 0x00 => ((), ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsym : A + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod Tvar(syntax T) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsymsplit : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tabbrev : () + diff --git a/spectec/test-middlend/specification.exp/15-improve-ids.il b/spectec/test-middlend/specification.exp/15-improve-ids.il new file mode 100644 index 0000000000..a74257d307 --- /dev/null +++ b/spectec/test-middlend/specification.exp/15-improve-ids.il @@ -0,0 +1,25827 @@ + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax N = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax M = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax K = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax n = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax m = nat + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +def $min(nat : nat, nat_0 : nat) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $min{i : nat, j : nat}(i, j) = (if (i <= j) then i else j) + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 +relation fun_sum: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_0: + `%%`([], 0) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_1{v_n : nat, n'_lst : n*, var_0 : nat}: + `%%`([v_n] ++ n'_lst, (v_n + var_0)) + -- fun_sum: `%%`(n'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 +relation fun_prod: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_0: + `%%`([], 1) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_1{v_n : nat, n'_lst : n*, var_0 : nat}: + `%%`([v_n] ++ n'_lst, (v_n * var_0)) + -- fun_prod: `%%`(n'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $opt_(syntax X, var_0 : X*) : X?? + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X}(syntax X, []) = ?(?()) + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 +def $concat_(syntax X, var_0 : X**) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 + def $concat_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 + def $concat_{syntax X, w_lst : X*, w'_lst_lst : X**}(syntax X, [w_lst] ++ w'_lst_lst) = w_lst ++ $concat_(syntax X, w'_lst_lst) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 +def $concatn_(syntax X, var_0 : X**, nat : nat) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 + def $concatn_{syntax X, v_n : nat}(syntax X, [], v_n) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 + def $concatn_{syntax X, v_n : nat, w_lst : X*, w'_lst_lst : X**}(syntax X, [w_lst] ++ w'_lst_lst, v_n) = w_lst ++ $concatn_(syntax X, w'_lst_lst, v_n) + -- if (v_n = |w_lst|) + -- (if (v_n = |w'_lst_2|))*{w'_lst_2 <- w'_lst_lst} +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $concatopt_(syntax X, var_0 : X?*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X, w_opt : X?, w'_opt_lst : X?*}(syntax X, [w_opt] ++ w'_opt_lst) = lift(w_opt) ++ $concat_(syntax X, lift(w'_opt)*{w'_opt <- w'_opt_lst}) + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concat_(syntax X, var_0 : X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concatn_(syntax X, nat : nat, var_0 : X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 +def $disjoint_(syntax X, var_0 : X*) : bool + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 + def $disjoint_{syntax X}(syntax X, []) = true + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 + def $disjoint_{syntax X, w : X, w'_lst : X*}(syntax X, [w] ++ w'_lst) = (~ (w <- w'_lst) /\ $disjoint_(syntax X, w'_lst)) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 +def $setminus1_(syntax X, X_0 : X, var_0 : X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 + def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 + def $setminus1_{syntax X, w : X, w_1 : X, w'_lst : X*}(syntax X, w, [w_1] ++ w'_lst) = (if (w = w_1) then [] else $setminus1_(syntax X, w, w'_lst)) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 +def $setminus_(syntax X, var_0 : X*, var_1 : X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 + def $setminus_{syntax X, w_lst : X*}(syntax X, [], w_lst) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 + def $setminus_{syntax X, w_1 : X, w'_lst : X*, w_lst : X*}(syntax X, [w_1] ++ w'_lst, w_lst) = $setminus1_(syntax X, w_1, w_lst) ++ $setminus_(syntax X, w'_lst, w_lst) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 +def $setproduct2_(syntax X, X_0 : X, var_0 : X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 + def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 + def $setproduct2_{syntax X, w_1 : X, w'_lst : X*, w_lst_lst : X**}(syntax X, w_1, [w'_lst] ++ w_lst_lst) = [[w_1] ++ w'_lst] ++ $setproduct2_(syntax X, w_1, w_lst_lst) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 +def $setproduct1_(syntax X, var_0 : X*, var_1 : X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 + def $setproduct1_{syntax X, w_lst_lst : X**}(syntax X, [], w_lst_lst) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 + def $setproduct1_{syntax X, w_1 : X, w'_lst : X*, w_lst_lst : X**}(syntax X, [w_1] ++ w'_lst, w_lst_lst) = $setproduct2_(syntax X, w_1, w_lst_lst) ++ $setproduct1_(syntax X, w'_lst, w_lst_lst) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 +def $setproduct_(syntax X, var_0 : X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 + def $setproduct_{syntax X}(syntax X, []) = [[]] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 + def $setproduct_{syntax X, w_1_lst : X*, w_lst_lst : X**}(syntax X, [w_1_lst] ++ w_lst_lst) = $setproduct1_(syntax X, w_1_lst, $setproduct_(syntax X, w_lst_lst)) +} + +;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec +def $ND : bool + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax bit = + | mk_bit(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_bit: `%`(bit) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule bit_case_0{i : nat}: + `%`(mk_bit_bit(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax byte = + | mk_byte(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_byte_0(x : byte) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_byte_0{v_num_0 : nat}(mk_byte_byte(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_byte: `%`(byte) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule byte_case_0{i : nat}: + `%`(mk_byte_byte(i)) + -- if ((i >= 0) /\ (i <= 255)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax uN = + | mk_uN(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_uN_0(x : uN) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_uN_0{v_num_0 : nat}(mk_uN_uN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_uN: `%%`(N, uN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule uN_case_0{v_N : N, i : nat}: + `%%`(v_N, mk_uN_uN(i)) + -- if ((i >= 0) /\ (i <= ((((2 ^ v_N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax sN = + | mk_sN(i : int) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_sN_0(x : sN) : (int) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_sN_0{v_num_0 : int}(mk_sN_sN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_sN: `%%`(N, sN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule sN_case_0{v_N : N, i : int}: + `%%`(v_N, mk_sN_sN(i)) + -- if ((((i >= - ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax iN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u8 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u16 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u31 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u32 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u64 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax s33 = sN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i32 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i64 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i128 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $signif(v_N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(32) = ?(23) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $expon(v_N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(32) = ?(8) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fun_M(v_N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fun_M{v_N : nat}(v_N) = !($signif(v_N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $E(v_N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $E{v_N : nat}(v_N) = !($expon(v_N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax exp = int + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fNmag = + | NORM(v_m : m, v_exp : exp) + | SUBNORM(v_m : m) + | INF + | NAN(v_m : m) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fNmag: `%%`(N, fNmag) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_0{v_N : N, v_m : m, v_exp : exp}: + `%%`(v_N, NORM_fNmag(v_m, v_exp)) + -- if ((v_m < (2 ^ $fun_M(v_N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(v_N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= v_exp) /\ (v_exp <= (((2 ^ ((($E(v_N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_1{v_N : N, v_exp : exp, v_m : m}: + `%%`(v_N, SUBNORM_fNmag(v_m)) + -- if ((v_m < (2 ^ $fun_M(v_N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(v_N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = v_exp)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_2{v_N : N}: + `%%`(v_N, INF_fNmag) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_3{v_N : N, v_m : m}: + `%%`(v_N, NAN_fNmag(v_m)) + -- if ((1 <= v_m) /\ (v_m < (2 ^ $fun_M(v_N)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fN = + | POS(fNmag) + | NEG(fNmag) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fN: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_0{v_N : N, var_0 : fNmag}: + `%%`(v_N, POS_fN(var_0)) + -- wf_fNmag: `%%`(v_N, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_1{v_N : N, var_0 : fNmag}: + `%%`(v_N, NEG_fN(var_0)) + -- wf_fNmag: `%%`(v_N, var_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f32 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f64 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fzero(v_N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fzero{v_N : nat}(v_N) = POS_fN(SUBNORM_fNmag(0)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fzero_is_wf: `%%`(v_N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fzero_is_wf_0{v_N : N, ret_val : fN}: + `%%`(v_N, ret_val) + -- if (ret_val = $fzero(v_N)) + -- wf_fN: `%%`(v_N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fnat(v_N : N, nat : nat) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fnat{v_N : nat, v_n : nat}(v_N, v_n) = POS_fN(NORM_fNmag(v_n, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fnat_is_wf: `%%%`(v_N : N, nat : nat, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fnat_is_wf_0{v_N : N, nat : nat, ret_val : fN}: + `%%%`(v_N, nat, ret_val) + -- if (ret_val = $fnat(v_N, nat)) + -- wf_fN: `%%`(v_N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fone(v_N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fone{v_N : nat}(v_N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fone_is_wf: `%%`(v_N : N, ret_val : fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fone_is_wf_0{v_N : N, ret_val : fN}: + `%%`(v_N, ret_val) + -- if (ret_val = $fone(v_N)) + -- wf_fN: `%%`(v_N, ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $canon_(v_N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $canon_{v_N : nat}(v_N) = (2 ^ (((!($signif(v_N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax vN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax v128 = vN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax list{syntax X}(syntax X) = + | mk_list(X_lst : X*) + -- if (|X_lst| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_list_0(syntax X, x : list(syntax X)) : (X*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_list_0{syntax X, v_X_list_0 : X*}(syntax X, mk_list_list(v_X_list_0)) = (v_X_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax char = + | mk_char(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_char_0(x : char) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_char_0{v_num_0 : nat}(mk_char_char(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_char: `%`(char) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule char_case_0{i : nat}: + `%`(mk_char_char(i)) + -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +relation fun_cont: `%%`(byte, nat) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + rule fun_cont_case_0{b : byte}: + `%%`(b, ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat)) + -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation fun_utf8: `%%`(char*, byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_0{ch_lst : char*, var_0_lst : byte**}: + `%%`(ch_lst, $concat_(syntax byte, var_0_lst)) + -- (fun_utf8: `%%`([ch], var_0))*{var_0 <- var_0_lst, ch <- ch_lst} + -- if (|var_0_lst| = |ch_lst|) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_1{ch : char}: + `%%`([ch], [b]) + -- if ($proj_char_0(ch).0 < 128) + -- let{b : byte} b = mk_byte_byte($proj_char_0(ch).0) + -- wf_byte: `%`(mk_byte_byte($proj_char_0(ch).0)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_2{ch : char, b_1 : byte, b_2 : byte, var_0 : nat}: + `%%`([ch], [b_1 b_2]) + -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) + -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + var_0)) + -- fun_cont: `%%`(b_2, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_3{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3]) + -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) + -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * var_0)) + var_1)) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule fun_utf8_case_4{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, var_2 : nat, var_1 : nat, var_0 : nat}: + `%%`([ch], [b_1 b_2 b_3 b_4]) + -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) + -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * var_0)) + ((2 ^ 6) * var_1)) + var_2)) + -- fun_cont: `%%`(b_4, var_2) + -- fun_cont: `%%`(b_3, var_1) + -- fun_cont: `%%`(b_2, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 +relation utf8_is_wf: `%%`(var_0 : char*, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 + rule utf8_is_wf_0{var_0 : char*, ret_val : byte*, var_1 : byte*}: + `%%`(var_0, ret_val) + -- (wf_char: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + -- fun_utf8: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax name = + | mk_name(char_lst : char*) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_name_0(x : name) : (char*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_name_0{v_char_list_0 : char*}(mk_name_name(v_char_list_0)) = (v_char_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_name: `%`(name) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule name_case_0{char_lst : char*, var_0 : byte*}: + `%`(mk_name_name(char_lst)) + -- (wf_char: `%`(v_char))*{v_char <- char_lst} + -- if (|var_0| < (2 ^ 32)) + -- fun_utf8: `%%`(char_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax idx = u32 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax laneidx = u8 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax typeidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax funcidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax globalidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tableidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax memidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tagidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax elemidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax dataidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax labelidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax localidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fieldidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax externidx = + | FUNC(v_funcidx : funcidx) + | GLOBAL(v_globalidx : globalidx) + | TABLE(v_tableidx : tableidx) + | MEM(v_memidx : memidx) + | TAG(v_tagidx : tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_externidx: `%`(externidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_0{v_funcidx : funcidx}: + `%`(FUNC_externidx(v_funcidx)) + -- wf_uN: `%%`(32, v_funcidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_1{v_globalidx : globalidx}: + `%`(GLOBAL_externidx(v_globalidx)) + -- wf_uN: `%%`(32, v_globalidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_2{v_tableidx : tableidx}: + `%`(TABLE_externidx(v_tableidx)) + -- wf_uN: `%%`(32, v_tableidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_3{v_memidx : memidx}: + `%`(MEM_externidx(v_memidx)) + -- wf_uN: `%%`(32, v_memidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_4{v_tagidx : tagidx}: + `%`(TAG_externidx(v_tagidx)) + -- wf_uN: `%%`(32, v_tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 +relation fun_funcsxx: `%%`(externidx*, typeidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_1{x : uN, xx_lst : externidx*, var_0 : typeidx*}: + `%%`([FUNC_externidx(x)] ++ xx_lst, [x] ++ var_0) + -- fun_funcsxx: `%%`(xx_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_2{v_externidx : externidx, xx_lst : externidx*, var_0 : typeidx*}: + `%%`([v_externidx] ++ xx_lst, var_0) + -- fun_funcsxx: `%%`(xx_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 +relation fun_globalsxx: `%%`(externidx*, globalidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_1{x : uN, xx_lst : externidx*, var_0 : globalidx*}: + `%%`([GLOBAL_externidx(x)] ++ xx_lst, [x] ++ var_0) + -- fun_globalsxx: `%%`(xx_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_2{v_externidx : externidx, xx_lst : externidx*, var_0 : globalidx*}: + `%%`([v_externidx] ++ xx_lst, var_0) + -- fun_globalsxx: `%%`(xx_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 +relation fun_tablesxx: `%%`(externidx*, tableidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_1{x : uN, xx_lst : externidx*, var_0 : tableidx*}: + `%%`([TABLE_externidx(x)] ++ xx_lst, [x] ++ var_0) + -- fun_tablesxx: `%%`(xx_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_2{v_externidx : externidx, xx_lst : externidx*, var_0 : tableidx*}: + `%%`([v_externidx] ++ xx_lst, var_0) + -- fun_tablesxx: `%%`(xx_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 +relation fun_memsxx: `%%`(externidx*, memidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_1{x : uN, xx_lst : externidx*, var_0 : memidx*}: + `%%`([MEM_externidx(x)] ++ xx_lst, [x] ++ var_0) + -- fun_memsxx: `%%`(xx_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_2{v_externidx : externidx, xx_lst : externidx*, var_0 : memidx*}: + `%%`([v_externidx] ++ xx_lst, var_0) + -- fun_memsxx: `%%`(xx_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 +relation fun_tagsxx: `%%`(externidx*, tagidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_1{x : uN, xx_lst : externidx*, var_0 : tagidx*}: + `%%`([TAG_externidx(x)] ++ xx_lst, [x] ++ var_0) + -- fun_tagsxx: `%%`(xx_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_2{v_externidx : externidx, xx_lst : externidx*, var_0 : tagidx*}: + `%%`([v_externidx] ++ xx_lst, var_0) + -- fun_tagsxx: `%%`(xx_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax free = +{ + TYPES typeidx*, + FUNCS funcidx*, + GLOBALS globalidx*, + TABLES tableidx*, + MEMS memidx*, + ELEMS elemidx*, + DATAS dataidx*, + LOCALS localidx*, + LABELS labelidx*, + TAGS tagidx* +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_free: `%`(free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_case_{var_0 : typeidx*, var_1 : funcidx*, var_2 : globalidx*, var_3 : tableidx*, var_4 : memidx*, var_5 : elemidx*, var_6 : dataidx*, var_7 : localidx*, var_8 : labelidx*, var_9 : tagidx*}: + `%`({TYPES var_0, FUNCS var_1, GLOBALS var_2, TABLES var_3, MEMS var_4, ELEMS var_5, DATAS var_6, LOCALS var_7, LABELS var_8, TAGS var_9}) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_uN: `%%`(32, var_1))*{var_1 <- var_1} + -- (wf_uN: `%%`(32, var_2))*{var_2 <- var_2} + -- (wf_uN: `%%`(32, var_3))*{var_3 <- var_3} + -- (wf_uN: `%%`(32, var_4))*{var_4 <- var_4} + -- (wf_uN: `%%`(32, var_5))*{var_5 <- var_5} + -- (wf_uN: `%%`(32, var_6))*{var_6 <- var_6} + -- (wf_uN: `%%`(32, var_7))*{var_7 <- var_7} + -- (wf_uN: `%%`(32, var_8))*{var_8 <- var_8} + -- (wf_uN: `%%`(32, var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_opt(var_0 : free?) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt{v_free : free}(?(v_free)) = v_free + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_opt_is_wf: `%%`(var_0 : free?, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_opt_is_wf_0{var_0 : free?, ret_val : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))?{var_0 <- var_0} + -- if (ret_val = $free_opt(var_0)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation fun_free_list: `%%`(free*, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule fun_free_list_case_0: + `%%`([], {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule fun_free_list_case_1{v_free : free, free'_lst : free*, var_0 : free}: + `%%`([v_free] ++ free'_lst, v_free +++ var_0) + -- fun_free_list: `%%`(free'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 +relation free_list_is_wf: `%%`(var_0 : free*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.6-173.16 + rule free_list_is_wf_0{var_0 : free*, ret_val : free, var_1 : free}: + `%%`(var_0, ret_val) + -- (wf_free: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_free: `%`(ret_val) + -- fun_free_list: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_typeidx(v_typeidx : typeidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_typeidx{v_typeidx : uN}(v_typeidx) = {TYPES [v_typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_typeidx_is_wf: `%%`(v_typeidx : typeidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_typeidx_is_wf_0{v_typeidx : typeidx, ret_val : free}: + `%%`(v_typeidx, ret_val) + -- wf_uN: `%%`(32, v_typeidx) + -- if (ret_val = $free_typeidx(v_typeidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_funcidx(v_funcidx : funcidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_funcidx{v_funcidx : uN}(v_funcidx) = {TYPES [], FUNCS [v_funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_funcidx_is_wf: `%%`(v_funcidx : funcidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_funcidx_is_wf_0{v_funcidx : funcidx, ret_val : free}: + `%%`(v_funcidx, ret_val) + -- wf_uN: `%%`(32, v_funcidx) + -- if (ret_val = $free_funcidx(v_funcidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_globalidx(v_globalidx : globalidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_globalidx{v_globalidx : uN}(v_globalidx) = {TYPES [], FUNCS [], GLOBALS [v_globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_globalidx_is_wf: `%%`(v_globalidx : globalidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_globalidx_is_wf_0{v_globalidx : globalidx, ret_val : free}: + `%%`(v_globalidx, ret_val) + -- wf_uN: `%%`(32, v_globalidx) + -- if (ret_val = $free_globalidx(v_globalidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tableidx(v_tableidx : tableidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tableidx{v_tableidx : uN}(v_tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [v_tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tableidx_is_wf: `%%`(v_tableidx : tableidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tableidx_is_wf_0{v_tableidx : tableidx, ret_val : free}: + `%%`(v_tableidx, ret_val) + -- wf_uN: `%%`(32, v_tableidx) + -- if (ret_val = $free_tableidx(v_tableidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_memidx(v_memidx : memidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_memidx{v_memidx : uN}(v_memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [v_memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_memidx_is_wf: `%%`(v_memidx : memidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_memidx_is_wf_0{v_memidx : memidx, ret_val : free}: + `%%`(v_memidx, ret_val) + -- wf_uN: `%%`(32, v_memidx) + -- if (ret_val = $free_memidx(v_memidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_elemidx(v_elemidx : elemidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_elemidx{v_elemidx : uN}(v_elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [v_elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_elemidx_is_wf: `%%`(v_elemidx : elemidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_elemidx_is_wf_0{v_elemidx : elemidx, ret_val : free}: + `%%`(v_elemidx, ret_val) + -- wf_uN: `%%`(32, v_elemidx) + -- if (ret_val = $free_elemidx(v_elemidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_dataidx(v_dataidx : dataidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_dataidx{v_dataidx : uN}(v_dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [v_dataidx], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_dataidx_is_wf: `%%`(v_dataidx : dataidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_dataidx_is_wf_0{v_dataidx : dataidx, ret_val : free}: + `%%`(v_dataidx, ret_val) + -- wf_uN: `%%`(32, v_dataidx) + -- if (ret_val = $free_dataidx(v_dataidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_localidx(v_localidx : localidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_localidx{v_localidx : uN}(v_localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [v_localidx], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_localidx_is_wf: `%%`(v_localidx : localidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_localidx_is_wf_0{v_localidx : localidx, ret_val : free}: + `%%`(v_localidx, ret_val) + -- wf_uN: `%%`(32, v_localidx) + -- if (ret_val = $free_localidx(v_localidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_labelidx(v_labelidx : labelidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_labelidx{v_labelidx : uN}(v_labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [v_labelidx], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_labelidx_is_wf: `%%`(v_labelidx : labelidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_labelidx_is_wf_0{v_labelidx : labelidx, ret_val : free}: + `%%`(v_labelidx, ret_val) + -- wf_uN: `%%`(32, v_labelidx) + -- if (ret_val = $free_labelidx(v_labelidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tagidx(v_tagidx : tagidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tagidx{v_tagidx : uN}(v_tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [v_tagidx]} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_tagidx_is_wf: `%%`(v_tagidx : tagidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_tagidx_is_wf_0{v_tagidx : tagidx, ret_val : free}: + `%%`(v_tagidx, ret_val) + -- wf_uN: `%%`(32, v_tagidx) + -- if (ret_val = $free_tagidx(v_tagidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_externidx(v_externidx : externidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{v_funcidx : uN}(FUNC_externidx(v_funcidx)) = $free_funcidx(v_funcidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{v_globalidx : uN}(GLOBAL_externidx(v_globalidx)) = $free_globalidx(v_globalidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{v_tableidx : uN}(TABLE_externidx(v_tableidx)) = $free_tableidx(v_tableidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{v_memidx : uN}(MEM_externidx(v_memidx)) = $free_memidx(v_memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{v_tagidx : uN}(TAG_externidx(v_tagidx)) = $free_tagidx(v_tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation free_externidx_is_wf: `%%`(v_externidx : externidx, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_externidx_is_wf_0{v_externidx : externidx, ret_val : free}: + `%%`(v_externidx, ret_val) + -- wf_externidx: `%`(v_externidx) + -- if (ret_val = $free_externidx(v_externidx)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax null = + | NULL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax addrtype = + | I32 + | I64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax numtype = + | I32 + | I64 + | F32 + | F64 + +def $numtype_addrtype(var_0 : addrtype) : numtype + def $numtype_addrtype(I32_addrtype) = I32_numtype + def $numtype_addrtype(I64_addrtype) = I64_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax vectype = + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax consttype = + | I32 + | I64 + | F32 + | F64 + | V128 + +def $consttype_numtype(var_0 : numtype) : consttype + def $consttype_numtype(I32_numtype) = I32_consttype + def $consttype_numtype(I64_numtype) = I64_consttype + def $consttype_numtype(F32_numtype) = F32_consttype + def $consttype_numtype(F64_numtype) = F64_consttype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax absheaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax mut = + | MUT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax final = + | FINAL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 +syntax typeuse = + | _IDX(v_typeidx : typeidx) + | _DEF(v_rectype : rectype, v_n : n) + | REC(v_n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 +syntax heaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + | _IDX(v_typeidx : typeidx) + | _DEF(v_rectype : rectype, v_n : n) + | REC(v_n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 +syntax valtype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(null_opt : null?, v_heaptype : heaptype) + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 +syntax storagetype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(null_opt : null?, v_heaptype : heaptype) + | BOT + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 +syntax fieldtype = + | mk_fieldtype(mut_opt : mut?, v_storagetype : storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 +syntax comptype = + | STRUCT(list(syntax fieldtype)) + | ARRAY(v_fieldtype : fieldtype) + | `FUNC%->%`(v_resulttype : list(syntax valtype), v_resulttype : list(syntax valtype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 +syntax subtype = + | SUB(final_opt : final?, typeuse_lst : typeuse*, v_comptype : comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 +syntax rectype = + | REC(list(syntax subtype)) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax resulttype = list(syntax valtype) + +def $heaptype_absheaptype(var_0 : absheaptype) : heaptype + def $heaptype_absheaptype(ANY_absheaptype) = ANY_heaptype + def $heaptype_absheaptype(EQ_absheaptype) = EQ_heaptype + def $heaptype_absheaptype(I31_absheaptype) = I31_heaptype + def $heaptype_absheaptype(STRUCT_absheaptype) = STRUCT_heaptype + def $heaptype_absheaptype(ARRAY_absheaptype) = ARRAY_heaptype + def $heaptype_absheaptype(NONE_absheaptype) = NONE_heaptype + def $heaptype_absheaptype(FUNC_absheaptype) = FUNC_heaptype + def $heaptype_absheaptype(NOFUNC_absheaptype) = NOFUNC_heaptype + def $heaptype_absheaptype(EXN_absheaptype) = EXN_heaptype + def $heaptype_absheaptype(NOEXN_absheaptype) = NOEXN_heaptype + def $heaptype_absheaptype(EXTERN_absheaptype) = EXTERN_heaptype + def $heaptype_absheaptype(NOEXTERN_absheaptype) = NOEXTERN_heaptype + def $heaptype_absheaptype(BOT_absheaptype) = BOT_heaptype + +def $valtype_addrtype(var_0 : addrtype) : valtype + def $valtype_addrtype(I32_addrtype) = I32_valtype + def $valtype_addrtype(I64_addrtype) = I64_valtype + +def $storagetype_consttype(var_0 : consttype) : storagetype + def $storagetype_consttype(I32_consttype) = I32_storagetype + def $storagetype_consttype(I64_consttype) = I64_storagetype + def $storagetype_consttype(F32_consttype) = F32_storagetype + def $storagetype_consttype(F64_consttype) = F64_storagetype + def $storagetype_consttype(V128_consttype) = V128_storagetype + +def $storagetype_numtype(var_0 : numtype) : storagetype + def $storagetype_numtype(I32_numtype) = I32_storagetype + def $storagetype_numtype(I64_numtype) = I64_storagetype + def $storagetype_numtype(F32_numtype) = F32_storagetype + def $storagetype_numtype(F64_numtype) = F64_storagetype + +def $valtype_numtype(var_0 : numtype) : valtype + def $valtype_numtype(I32_numtype) = I32_valtype + def $valtype_numtype(I64_numtype) = I64_valtype + def $valtype_numtype(F32_numtype) = F32_valtype + def $valtype_numtype(F64_numtype) = F64_valtype + +def $heaptype_typeuse(var_0 : typeuse) : heaptype + def $heaptype_typeuse{x0 : typeidx}(_IDX_typeuse(x0)) = _IDX_heaptype(x0) + def $heaptype_typeuse{x0 : rectype, x1 : n}(_DEF_typeuse(x0, x1)) = _DEF_heaptype(x0, x1) + def $heaptype_typeuse{x0 : n}(REC_typeuse(x0)) = REC_heaptype(x0) + +def $storagetype_valtype(var_0 : valtype) : storagetype + def $storagetype_valtype(I32_valtype) = I32_storagetype + def $storagetype_valtype(I64_valtype) = I64_storagetype + def $storagetype_valtype(F32_valtype) = F32_storagetype + def $storagetype_valtype(F64_valtype) = F64_storagetype + def $storagetype_valtype(V128_valtype) = V128_storagetype + def $storagetype_valtype{x0 : null?, x1 : heaptype}(REF_valtype(x0, x1)) = REF_storagetype(x0, x1) + def $storagetype_valtype(BOT_valtype) = BOT_storagetype + +def $storagetype_vectype(var_0 : vectype) : storagetype + def $storagetype_vectype(V128_vectype) = V128_storagetype + +def $valtype_vectype(var_0 : vectype) : valtype + def $valtype_vectype(V128_vectype) = V128_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 +relation wf_typeuse: `%`(typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_0{v_typeidx : typeidx}: + `%`(_IDX_typeuse(v_typeidx)) + -- wf_uN: `%%`(32, v_typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_1{v_rectype : rectype, v_n : n}: + `%`(_DEF_typeuse(v_rectype, v_n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_2{v_n : n}: + `%`(REC_typeuse(v_n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 +relation wf_heaptype: `%`(heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_0: + `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_1: + `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_2: + `%`(I31_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_3: + `%`(STRUCT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_4: + `%`(ARRAY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_5: + `%`(NONE_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_6: + `%`(FUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_7: + `%`(NOFUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_8: + `%`(EXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_9: + `%`(NOEXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_10: + `%`(EXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_11: + `%`(NOEXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_12: + `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_13{v_typeidx : typeidx}: + `%`(_IDX_heaptype(v_typeidx)) + -- wf_uN: `%%`(32, v_typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_14{v_rectype : rectype, v_n : n}: + `%`(_DEF_heaptype(v_rectype, v_n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_15{v_n : n}: + `%`(REC_heaptype(v_n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 +relation wf_valtype: `%`(valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_0: + `%`(I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_1: + `%`(I64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_2: + `%`(F32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_3: + `%`(F64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_4: + `%`(V128_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_5{null_opt : null?, v_heaptype : heaptype}: + `%`(REF_valtype(null_opt, v_heaptype)) + -- wf_heaptype: `%`(v_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_6: + `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 +relation wf_storagetype: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_0: + `%`(I32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_1: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_2: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_3: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_4: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_5{null_opt : null?, v_heaptype : heaptype}: + `%`(REF_storagetype(null_opt, v_heaptype)) + -- wf_heaptype: `%`(v_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_6: + `%`(BOT_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_7: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_8: + `%`(I16_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 +relation wf_fieldtype: `%`(fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 + rule fieldtype_case_0{mut_opt : mut?, v_storagetype : storagetype}: + `%`(mk_fieldtype_fieldtype(mut_opt, v_storagetype)) + -- wf_storagetype: `%`(v_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 +relation wf_comptype: `%`(comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_0{var_0 : list(syntax fieldtype)}: + `%`(STRUCT_comptype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_1{v_fieldtype : fieldtype}: + `%`(ARRAY_comptype(v_fieldtype)) + -- wf_fieldtype: `%`(v_fieldtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_2{v_resulttype : resulttype, resulttype_0 : resulttype}: + `%`(`FUNC%->%`_comptype(v_resulttype, resulttype_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 +relation wf_subtype: `%`(subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 + rule subtype_case_0{final_opt : final?, typeuse_lst : typeuse*, v_comptype : comptype}: + `%`(SUB_subtype(final_opt, typeuse_lst, v_comptype)) + -- (wf_typeuse: `%`(v_typeuse))*{v_typeuse <- typeuse_lst} + -- wf_comptype: `%`(v_comptype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax deftype = + | _DEF(v_rectype : rectype, v_n : n) + +def $heaptype_deftype(var_0 : deftype) : heaptype + def $heaptype_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_heaptype(x0, x1) + +def $typeuse_deftype(var_0 : deftype) : typeuse + def $typeuse_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_typeuse(x0, x1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax typevar = + | _IDX(v_typeidx : typeidx) + | REC(v_n : n) + +def $typeuse_typevar(var_0 : typevar) : typeuse + def $typeuse_typevar{x0 : typeidx}(_IDX_typevar(x0)) = _IDX_typeuse(x0) + def $typeuse_typevar{x0 : n}(REC_typevar(x0)) = REC_typeuse(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_typevar: `%`(typevar) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_0{v_typeidx : typeidx}: + `%`(_IDX_typevar(v_typeidx)) + -- wf_uN: `%%`(32, v_typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_1{v_n : n}: + `%`(REC_typevar(v_n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax reftype = + | REF(null_opt : null?, v_heaptype : heaptype) + +def $storagetype_reftype(var_0 : reftype) : storagetype + def $storagetype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_storagetype(x0, x1) + +def $valtype_reftype(var_0 : reftype) : valtype + def $valtype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_valtype(x0, x1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_reftype: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule reftype_case_0{null_opt : null?, v_heaptype : heaptype}: + `%`(REF_reftype(null_opt, v_heaptype)) + -- wf_heaptype: `%`(v_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Inn = addrtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Fnn = + | F32 + | F64 + +def $numtype_Fnn(var_0 : Fnn) : numtype + def $numtype_Fnn(F32_Fnn) = F32_numtype + def $numtype_Fnn(F64_Fnn) = F64_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Vnn = vectype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Cnn = + | I32 + | I64 + | F32 + | F64 + | V128 + +def $storagetype_Cnn(var_0 : Cnn) : storagetype + def $storagetype_Cnn(I32_Cnn) = I32_storagetype + def $storagetype_Cnn(I64_Cnn) = I64_storagetype + def $storagetype_Cnn(F32_Cnn) = F32_storagetype + def $storagetype_Cnn(F64_Cnn) = F64_storagetype + def $storagetype_Cnn(V128_Cnn) = V128_storagetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ANYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ANYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ANYREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ANYREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EQREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EQREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EQREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EQREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $I31REF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation I31REF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule I31REF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $I31REF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $STRUCTREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation STRUCTREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule STRUCTREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $STRUCTREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ARRAYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation ARRAYREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule ARRAYREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $ARRAYREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation FUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule FUNCREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $FUNCREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation EXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule EXTERNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $EXTERNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLFUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLFUNCREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLFUNCREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLFUNCREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation NULLEXTERNREF_is_wf: `%`(ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule NULLEXTERNREF_is_wf_0{ret_val : reftype}: + `%`(ret_val) + -- if (ret_val = $NULLEXTERNREF) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax packtype = + | I8 + | I16 + +def $storagetype_packtype(var_0 : packtype) : storagetype + def $storagetype_packtype(I8_packtype) = I8_storagetype + def $storagetype_packtype(I16_packtype) = I16_storagetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax lanetype = + | I32 + | I64 + | F32 + | F64 + | I8 + | I16 + +def $lanetype_Fnn(var_0 : Fnn) : lanetype + def $lanetype_Fnn(F32_Fnn) = F32_lanetype + def $lanetype_Fnn(F64_Fnn) = F64_lanetype + +def $lanetype_addrtype(var_0 : addrtype) : lanetype + def $lanetype_addrtype(I32_addrtype) = I32_lanetype + def $lanetype_addrtype(I64_addrtype) = I64_lanetype + +def $lanetype_numtype(var_0 : numtype) : lanetype + def $lanetype_numtype(I32_numtype) = I32_lanetype + def $lanetype_numtype(I64_numtype) = I64_lanetype + def $lanetype_numtype(F32_numtype) = F32_lanetype + def $lanetype_numtype(F64_numtype) = F64_lanetype + +def $lanetype_packtype(var_0 : packtype) : lanetype + def $lanetype_packtype(I8_packtype) = I8_lanetype + def $lanetype_packtype(I16_packtype) = I16_lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Pnn = packtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Jnn = + | I32 + | I64 + | I8 + | I16 + +def $lanetype_Jnn(var_0 : Jnn) : lanetype + def $lanetype_Jnn(I32_Jnn) = I32_lanetype + def $lanetype_Jnn(I64_Jnn) = I64_lanetype + def $lanetype_Jnn(I8_Jnn) = I8_lanetype + def $lanetype_Jnn(I16_Jnn) = I16_lanetype + +def $Jnn_addrtype(var_0 : addrtype) : Jnn + def $Jnn_addrtype(I32_addrtype) = I32_Jnn + def $Jnn_addrtype(I64_addrtype) = I64_Jnn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Lnn = lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax limits = + | mk_limits(v_u64 : u64, u64_opt : u64?) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_limits: `%`(limits) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule limits_case_0{v_u64 : u64, u64_opt : u64?}: + `%`(mk_limits_limits(v_u64, u64_opt)) + -- wf_uN: `%%`(64, v_u64) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tagtype = typeuse + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax globaltype = + | mk_globaltype(mut_opt : mut?, v_valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_globaltype: `%`(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule globaltype_case_0{mut_opt : mut?, v_valtype : valtype}: + `%`(mk_globaltype_globaltype(mut_opt, v_valtype)) + -- wf_valtype: `%`(v_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax memtype = + | `%%PAGE`(v_addrtype : addrtype, v_limits : limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_memtype: `%`(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule memtype_case_0{v_addrtype : addrtype, v_limits : limits}: + `%`(`%%PAGE`_memtype(v_addrtype, v_limits)) + -- wf_limits: `%`(v_limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tabletype = + | mk_tabletype(v_addrtype : addrtype, v_limits : limits, v_reftype : reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_tabletype: `%`(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule tabletype_case_0{v_addrtype : addrtype, v_limits : limits, v_reftype : reftype}: + `%`(mk_tabletype_tabletype(v_addrtype, v_limits, v_reftype)) + -- wf_limits: `%`(v_limits) + -- wf_reftype: `%`(v_reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax datatype = + | OK + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax elemtype = reftype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax externtype = + | TAG(v_tagtype : tagtype) + | GLOBAL(v_globaltype : globaltype) + | MEM(v_memtype : memtype) + | TABLE(v_tabletype : tabletype) + | FUNC(v_typeuse : typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_externtype: `%`(externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_0{v_tagtype : tagtype}: + `%`(TAG_externtype(v_tagtype)) + -- wf_typeuse: `%`(v_tagtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_1{v_globaltype : globaltype}: + `%`(GLOBAL_externtype(v_globaltype)) + -- wf_globaltype: `%`(v_globaltype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_2{v_memtype : memtype}: + `%`(MEM_externtype(v_memtype)) + -- wf_memtype: `%`(v_memtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_3{v_tabletype : tabletype}: + `%`(TABLE_externtype(v_tabletype)) + -- wf_tabletype: `%`(v_tabletype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_4{v_typeuse : typeuse}: + `%`(FUNC_externtype(v_typeuse)) + -- wf_typeuse: `%`(v_typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax moduletype = + | mk_moduletype(externtype_lst : externtype*, externtype_lst : externtype*) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_moduletype: `%`(moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule moduletype_case_0{externtype_lst : externtype*, externtype_lst_0 : externtype*}: + `%`(mk_moduletype_moduletype(externtype_lst, externtype_lst_0)) + -- (wf_externtype: `%`(v_externtype))*{v_externtype <- externtype_lst} + -- (wf_externtype: `%`(externtype_lst_0))*{externtype_lst_0 <- externtype_lst_0} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $IN(v_N : N) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FN(v_N : N) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $JN(v_N : N) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $size(v_numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I64_numtype) = 64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F64_numtype) = 64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsize(v_vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsize(V128_vectype) = 128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psize(v_packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I8_packtype) = 8 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I16_packtype) = 16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsize(v_lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I32_lanetype) = $size(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I64_lanetype) = $size(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F32_lanetype) = $size(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F64_lanetype) = $size(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I8_lanetype) = $psize(I8_packtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I16_lanetype) = $psize(I16_packtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $zsize(v_storagetype : storagetype) : nat? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I32_storagetype) = ?($size(I32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I64_storagetype) = ?($size(I64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F32_storagetype) = ?($size(F32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F64_storagetype) = ?($size(F64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I8_storagetype) = ?($psize(I8_packtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I16_storagetype) = ?($psize(I16_packtype)) + def $zsize{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $isize(v_Inn : Inn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $isize{v_Inn : addrtype}(v_Inn) = $size($numtype_addrtype(v_Inn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsize(v_Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsize{v_Jnn : Jnn}(v_Jnn) = $lsize($lanetype_Jnn(v_Jnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $fsize(v_Fnn : Fnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $fsize{v_Fnn : Fnn}(v_Fnn) = $size($numtype_Fnn(v_Fnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_isize(nat : nat) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(64) = ?(I64_Inn) + def $inv_isize{x0 : nat}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsize(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize{v_n : nat}(v_n) = $Jnn_addrtype(iter_val_1)?{iter_val_1 <- $inv_isize(v_n)} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_fsize(nat : nat) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(64) = ?(F64_Fnn) + def $inv_fsize{x0 : nat}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn(v_numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn1(v_numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn1{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn2(v_numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn2{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsizenn(v_vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsizenn{vt : vectype}(vt) = $vsize(vt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psizenn(v_packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psizenn{pt : packtype}(pt) = $psize(pt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn(v_lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn1(v_lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn2(v_lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsizenn(v_Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsizenn{v_Jnn : Jnn}(v_Jnn) = $lsize($lanetype_Jnn(v_Jnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsizenn(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn{v_n : nat}(v_n) = $inv_jsize(v_n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lunpack(v_lanetype : lanetype) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I32_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I64_lanetype) = I64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F32_lanetype) = F32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F64_lanetype) = F64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I8_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I16_lanetype) = I32_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $unpack(v_storagetype : storagetype) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(BOT_storagetype) = BOT_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack{null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype)) = REF_valtype(null_opt, v_heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(V128_storagetype) = V128_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(F64_storagetype) = F64_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(F32_storagetype) = F32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I64_storagetype) = I64_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I32_storagetype) = I32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I8_storagetype) = I32_valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack(I16_storagetype) = I32_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation unpack_is_wf: `%%`(v_storagetype : storagetype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule unpack_is_wf_0{v_storagetype : storagetype, ret_val : valtype}: + `%%`(v_storagetype, ret_val) + -- wf_storagetype: `%`(v_storagetype) + -- if (ret_val = $unpack(v_storagetype)) + -- wf_valtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $nunpack(v_storagetype : storagetype) : numtype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I32_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I64_storagetype) = ?(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F32_storagetype) = ?(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F64_storagetype) = ?(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I8_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I16_storagetype) = ?(I32_numtype) + def $nunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vunpack(v_storagetype : storagetype) : vectype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vunpack(V128_storagetype) = ?(V128_vectype) + def $vunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $cunpack(v_storagetype : storagetype) : consttype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?(I64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?(F32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?(F64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(V128_storagetype) = ?(V128_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?($consttype_numtype($lunpack(I32_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?($consttype_numtype($lunpack(I64_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?($consttype_numtype($lunpack(F32_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?($consttype_numtype($lunpack(F64_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?($consttype_numtype($lunpack(I8_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?($consttype_numtype($lunpack(I16_lanetype))) + def $cunpack{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $minat(v_addrtype : addrtype, v_addrtype_0 : addrtype) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size($numtype_addrtype(at_1)) <= $size($numtype_addrtype(at_2))) then at_1 else at_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $diffrt(v_reftype : reftype, v_reftype_0 : reftype) : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{null_1_opt : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1_opt, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{null_1_opt : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1_opt, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1_opt, ht_1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation diffrt_is_wf: `%%%`(v_reftype : reftype, reftype_0 : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule diffrt_is_wf_0{v_reftype : reftype, reftype_0 : reftype, ret_val : reftype}: + `%%%`(v_reftype, reftype_0, ret_val) + -- wf_reftype: `%`(v_reftype) + -- wf_reftype: `%`(reftype_0) + -- if (ret_val = $diffrt(v_reftype, reftype_0)) + -- wf_reftype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $as_deftype(v_typeuse : typeuse) : deftype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $as_deftype{v_rectype : rectype, v_n : n}(_DEF_typeuse(v_rectype, v_n)) = ?(_DEF_deftype(v_rectype, v_n)) + def $as_deftype{x0 : typeuse}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 +relation fun_tagsxt: `%%`(externtype*, tagtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_1{jt : typeuse, xt_lst : externtype*, var_0 : tagtype*}: + `%%`([TAG_externtype(jt)] ++ xt_lst, [jt] ++ var_0) + -- fun_tagsxt: `%%`(xt_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 + rule fun_tagsxt_case_2{v_externtype : externtype, xt_lst : externtype*, var_0 : tagtype*}: + `%%`([v_externtype] ++ xt_lst, var_0) + -- fun_tagsxt: `%%`(xt_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation fun_globalsxt: `%%`(externtype*, globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_1{gt : globaltype, xt_lst : externtype*, var_0 : globaltype*}: + `%%`([GLOBAL_externtype(gt)] ++ xt_lst, [gt] ++ var_0) + -- fun_globalsxt: `%%`(xt_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule fun_globalsxt_case_2{v_externtype : externtype, xt_lst : externtype*, var_0 : globaltype*}: + `%%`([v_externtype] ++ xt_lst, var_0) + -- fun_globalsxt: `%%`(xt_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 +relation globalsxt_is_wf: `%%`(var_0 : externtype*, ret_val : globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 + rule globalsxt_is_wf_0{var_0 : externtype*, ret_val : globaltype*, var_1 : globaltype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_globaltype: `%`(ret_val))*{ret_val <- ret_val} + -- fun_globalsxt: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation fun_memsxt: `%%`(externtype*, memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_1{mt : memtype, xt_lst : externtype*, var_0 : memtype*}: + `%%`([MEM_externtype(mt)] ++ xt_lst, [mt] ++ var_0) + -- fun_memsxt: `%%`(xt_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule fun_memsxt_case_2{v_externtype : externtype, xt_lst : externtype*, var_0 : memtype*}: + `%%`([v_externtype] ++ xt_lst, var_0) + -- fun_memsxt: `%%`(xt_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 +relation memsxt_is_wf: `%%`(var_0 : externtype*, ret_val : memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 + rule memsxt_is_wf_0{var_0 : externtype*, ret_val : memtype*, var_1 : memtype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_memtype: `%`(ret_val))*{ret_val <- ret_val} + -- fun_memsxt: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation fun_tablesxt: `%%`(externtype*, tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_1{tt : tabletype, xt_lst : externtype*, var_0 : tabletype*}: + `%%`([TABLE_externtype(tt)] ++ xt_lst, [tt] ++ var_0) + -- fun_tablesxt: `%%`(xt_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule fun_tablesxt_case_2{v_externtype : externtype, xt_lst : externtype*, var_0 : tabletype*}: + `%%`([v_externtype] ++ xt_lst, var_0) + -- fun_tablesxt: `%%`(xt_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 +relation tablesxt_is_wf: `%%`(var_0 : externtype*, ret_val : tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 + rule tablesxt_is_wf_0{var_0 : externtype*, ret_val : tabletype*, var_1 : tabletype*}: + `%%`(var_0, ret_val) + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_tabletype: `%`(ret_val))*{ret_val <- ret_val} + -- fun_tablesxt: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 +relation fun_funcsxt: `%%`(externtype*, deftype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_1{v_rectype : rectype, v_n : n, xt_lst : externtype*, var_0 : deftype*}: + `%%`([FUNC_externtype(_DEF_typeuse(v_rectype, v_n))] ++ xt_lst, [_DEF_deftype(v_rectype, v_n)] ++ var_0) + -- fun_funcsxt: `%%`(xt_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 + rule fun_funcsxt_case_2{v_externtype : externtype, xt_lst : externtype*, var_0 : deftype*}: + `%%`([v_externtype] ++ xt_lst, var_0) + -- fun_funcsxt: `%%`(xt_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_typevar_before_fun_subst_typevar_case_2: `%%%`(typevar, typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_typevar_case_1{tv : typevar, tv_1 : typevar, tv'_lst : typevar*, tu_1 : typeuse, tu'_lst : typeuse*, var_0 : typeuse?}: + `%%%`(tv, [tv_1] ++ tv'_lst, [tu_1] ++ tu'_lst) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%`(tv, [], []) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation fun_subst_typevar: `%%%%`(typevar, typevar*, typeuse*, typeuse?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%%`(tv, [], [], ?($typeuse_typevar(tv))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_1{tv : typevar, tv_1 : typevar, tv'_lst : typevar*, tu_1 : typeuse, tu'_lst : typeuse*, var_0 : typeuse?}: + `%%%%`(tv, [tv_1] ++ tv'_lst, [tu_1] ++ tu'_lst, (if (tv = tv_1) then tu_1 else iter_val_2)?{iter_val_2 <- var_0}) + -- fun_subst_typevar: `%%%%`(tv, tv'_lst, tu'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule fun_subst_typevar_case_2{x0 : typevar, x1 : typevar*, x2 : typeuse*}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_subst_typevar_before_fun_subst_typevar_case_2: `%%%`(x0, x1, x2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 +relation subst_typevar_is_wf: `%%%%`(v_typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 + rule subst_typevar_is_wf_0{v_typevar : typevar, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse, var_2 : typeuse?}: + `%%%%`(v_typevar, var_0, var_1, ret_val) + -- wf_typevar: `%`(v_typevar) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !(var_2)) + -- if (var_2 =/= ?()) + -- wf_typeuse: `%`(ret_val) + -- fun_subst_typevar: `%%%%`(v_typevar, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_minus_recs_before_fun_minus_recs_case_3: `%%`(typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_minus_recs_case_2{x : uN, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*, var_2 : (typevar*, typeuse*)?, var_1 : (typevar*, typeuse*)?, var_0 : (typevar*, typeuse*)?}: + `%%`([_IDX_typevar(x)] ++ tv_lst, [tu_1] ++ tu_lst) + -- let{tv'_lst : typevar*, tu'_lst : typeuse*} (tv'_lst, tu'_lst) = !(var_0) + -- if (var_0 =/= ?()) + -- (wf_typevar: `%`(iter_1))*{iter_1 <- !(var_1).0} + -- (wf_typeuse: `%`(iter_2))*{iter_2 <- !(var_2).1} + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_minus_recs_case_1{v_n : nat, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%`([REC_typevar(v_n)] ++ tv_lst, [tu_1] ++ tu_lst) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_minus_recs_case_0: + `%%`([], []) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)?) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_0: + `%%%`([], [], ?(([], []))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_1{v_n : nat, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*, var_0 : (typevar*, typeuse*)?}: + `%%%`([REC_typevar(v_n)] ++ tv_lst, [tu_1] ++ tu_lst, var_0) + -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_2{x : uN, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*, var_2 : (typevar*, typeuse*)?, var_1 : (typevar*, typeuse*)?, var_0 : (typevar*, typeuse*)?}: + `%%%`([_IDX_typevar(x)] ++ tv_lst, [tu_1] ++ tu_lst, ?(([_IDX_typevar(x)] ++ tv'_lst, [tu_1] ++ tu'_lst))) + -- let{tv'_lst : typevar*, tu'_lst : typeuse*} (tv'_lst, tu'_lst) = !(var_0) + -- if (var_0 =/= ?()) + -- (wf_typevar: `%`(iter_1))*{iter_1 <- !(var_1).0} + -- (wf_typeuse: `%`(iter_2))*{iter_2 <- !(var_2).1} + -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_2) + -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_1) + -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule fun_minus_recs_case_3{x0 : typevar*, x1 : typeuse*}: + `%%%`(x0, x1, ?()) + -- ~ fun_minus_recs_before_fun_minus_recs_case_3: `%%`(x0, x1) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 +relation minus_recs_is_wf: `%%%`(var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 + rule minus_recs_is_wf_0{var_0 : typevar*, var_1 : typeuse*, ret_val : (typevar*, typeuse*), var_2 : (typevar*, typeuse*)?}: + `%%%`(var_0, var_1, ret_val) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !(var_2)) + -- if (var_2 =/= ?()) + -- (wf_typevar: `%`(iter))*{iter <- ret_val.0} + -- (wf_typeuse: `%`(iter))*{iter <- ret_val.1} + -- fun_minus_recs: `%%%`(var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_packtype(v_packtype : packtype, var_0 : typevar*, var_1 : typeuse*) : packtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_packtype{pt : packtype, tv_lst : typevar*, tu_lst : typeuse*}(pt, tv_lst, tu_lst) = pt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_numtype(v_numtype : numtype, var_0 : typevar*, var_1 : typeuse*) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_numtype{nt : numtype, tv_lst : typevar*, tu_lst : typeuse*}(nt, tv_lst, tu_lst) = nt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_vectype(v_vectype : vectype, var_0 : typevar*, var_1 : typeuse*) : vectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_vectype{vt : vectype, tv_lst : typevar*, tu_lst : typeuse*}(vt, tv_lst, tu_lst) = vt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation fun_subst_typeuse: `%%%%`(typeuse, typevar*, typeuse*, typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_0{v_n : n, tv_lst : typevar*, tu_lst : typeuse*, var_0 : typeuse?}: + `%%%%`(REC_typeuse(v_n), tv_lst, tu_lst, !(var_0)) + -- fun_subst_typevar: `%%%%`(REC_typevar(v_n), tv_lst, tu_lst, var_0) + -- if (var_0 =/= ?()) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_1{v_typeidx : typeidx, tv_lst : typevar*, tu_lst : typeuse*, var_0 : typeuse?}: + `%%%%`(_IDX_typeuse(v_typeidx), tv_lst, tu_lst, !(var_0)) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(v_typeidx), tv_lst, tu_lst, var_0) + -- if (var_0 =/= ?()) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule fun_subst_typeuse_case_2{v_rectype : rectype, v_n : n, tv_lst : typevar*, tu_lst : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_typeuse(v_rectype, v_n), tv_lst, tu_lst, $typeuse_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(v_rectype, v_n), tv_lst, tu_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation fun_subst_heaptype: `%%%%`(heaptype, typevar*, typeuse*, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_0{v_n : n, tv_lst : typevar*, tu_lst : typeuse*, var_0 : typeuse?}: + `%%%%`(REC_heaptype(v_n), tv_lst, tu_lst, $heaptype_typeuse(!(var_0))) + -- fun_subst_typevar: `%%%%`(REC_typevar(v_n), tv_lst, tu_lst, var_0) + -- if (var_0 =/= ?()) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_1{v_typeidx : typeidx, tv_lst : typevar*, tu_lst : typeuse*, var_0 : typeuse?}: + `%%%%`(_IDX_heaptype(v_typeidx), tv_lst, tu_lst, $heaptype_typeuse(!(var_0))) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(v_typeidx), tv_lst, tu_lst, var_0) + -- if (var_0 =/= ?()) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_2{v_rectype : rectype, v_n : n, tv_lst : typevar*, tu_lst : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_heaptype(v_rectype, v_n), tv_lst, tu_lst, $heaptype_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(v_rectype, v_n), tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule fun_subst_heaptype_case_3{ht : heaptype, tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(ht, tv_lst, tu_lst, ht) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule fun_subst_reftype_case_0{null_opt : null?, ht : heaptype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : heaptype}: + `%%%%`(REF_reftype(null_opt, ht), tv_lst, tu_lst, REF_reftype(null_opt, var_0)) + -- fun_subst_heaptype: `%%%%`(ht, tv_lst, tu_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation fun_subst_valtype: `%%%%`(valtype, typevar*, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_0{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(I32_valtype, tv_lst, tu_lst, $valtype_numtype($subst_numtype(I32_numtype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_1{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(I64_valtype, tv_lst, tu_lst, $valtype_numtype($subst_numtype(I64_numtype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_2{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(F32_valtype, tv_lst, tu_lst, $valtype_numtype($subst_numtype(F32_numtype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_3{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(F64_valtype, tv_lst, tu_lst, $valtype_numtype($subst_numtype(F64_numtype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_4{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(V128_valtype, tv_lst, tu_lst, $valtype_vectype($subst_vectype(V128_vectype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_5{null_opt : null?, v_heaptype : heaptype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : reftype}: + `%%%%`(REF_valtype(null_opt, v_heaptype), tv_lst, tu_lst, $valtype_reftype(var_0)) + -- fun_subst_reftype: `%%%%`(REF_reftype(null_opt, v_heaptype), tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule fun_subst_valtype_case_6{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(BOT_valtype, tv_lst, tu_lst, BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation fun_subst_storagetype: `%%%%`(storagetype, typevar*, typeuse*, storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_0{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(BOT_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(BOT_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_1{null_opt : null?, v_heaptype : heaptype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(REF_valtype(null_opt, v_heaptype), tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_2{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(V128_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(V128_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_3{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(F64_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F64_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_4{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(F32_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F32_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_5{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(I64_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I64_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_6{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(I32_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I32_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_7{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(I8_storagetype, tv_lst, tu_lst, $storagetype_packtype($subst_packtype(I8_packtype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule fun_subst_storagetype_case_8{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(I16_storagetype, tv_lst, tu_lst, $storagetype_packtype($subst_packtype(I16_packtype, tv_lst, tu_lst))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation fun_subst_fieldtype: `%%%%`(fieldtype, typevar*, typeuse*, fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule fun_subst_fieldtype_case_0{mut_opt : mut?, zt : storagetype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : storagetype}: + `%%%%`(mk_fieldtype_fieldtype(mut_opt, zt), tv_lst, tu_lst, mk_fieldtype_fieldtype(mut_opt, var_0)) + -- fun_subst_storagetype: `%%%%`(zt, tv_lst, tu_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_0{ft_lst : fieldtype*, tv_lst : typevar*, tu_lst : typeuse*, var_0_lst : fieldtype*}: + `%%%%`(STRUCT_comptype(mk_list_list(ft_lst)), tv_lst, tu_lst, STRUCT_comptype(mk_list_list(var_0_lst))) + -- (fun_subst_fieldtype: `%%%%`(ft, tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, ft <- ft_lst} + -- if (|var_0_lst| = |ft_lst|) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_1{ft : fieldtype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : fieldtype}: + `%%%%`(ARRAY_comptype(ft), tv_lst, tu_lst, ARRAY_comptype(var_0)) + -- fun_subst_fieldtype: `%%%%`(ft, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule fun_subst_comptype_case_2{t_1_lst : valtype*, t_2_lst : valtype*, tv_lst : typevar*, tu_lst : typeuse*, var_1_lst : valtype*, var_0_lst : valtype*}: + `%%%%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)), tv_lst, tu_lst, `FUNC%->%`_comptype(mk_list_resulttype(var_0_lst), mk_list_resulttype(var_1_lst))) + -- (fun_subst_valtype: `%%%%`(t_2, tv_lst, tu_lst, var_1))*{var_1 <- var_1_lst, t_2 <- t_2_lst} + -- if (|var_1_lst| = |t_2_lst|) + -- (fun_subst_valtype: `%%%%`(t_1, tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, t_1 <- t_1_lst} + -- if (|var_0_lst| = |t_1_lst|) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule fun_subst_subtype_case_0{final_opt : final?, tu'_lst : typeuse*, ct : comptype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : comptype, var_0_lst : typeuse*}: + `%%%%`(SUB_subtype(final_opt, tu'_lst, ct), tv_lst, tu_lst, SUB_subtype(final_opt, var_0_lst, var_1)) + -- fun_subst_comptype: `%%%%`(ct, tv_lst, tu_lst, var_1) + -- (fun_subst_typeuse: `%%%%`(tu', tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, tu' <- tu'_lst} + -- if (|var_0_lst| = |tu'_lst|) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 +relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 + rule fun_subst_rectype_case_0{st_lst : subtype*, tv_lst : typevar*, tu_lst : typeuse*, var_3 : (typevar*, typeuse*)?, var_2 : (typevar*, typeuse*)?, var_1 : (typevar*, typeuse*)?, var_0_lst : subtype*}: + `%%%%`(REC_rectype(mk_list_list(st_lst)), tv_lst, tu_lst, REC_rectype(mk_list_list(var_0_lst))) + -- let{tv'_lst : typevar*, tu'_lst : typeuse*} (tv'_lst, tu'_lst) = !(var_1) + -- if (var_1 =/= ?()) + -- (wf_typevar: `%`(iter_3))*{iter_3 <- !(var_2).0} + -- (wf_typeuse: `%`(iter_4))*{iter_4 <- !(var_3).1} + -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_3) + -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_2) + -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_1) + -- (fun_subst_subtype: `%%%%`(st, tv'_lst, tu'_lst, var_0))*{var_0 <- var_0_lst, st <- st_lst} + -- if (|var_0_lst| = |st_lst|) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 +relation fun_subst_deftype: `%%%%`(deftype, typevar*, typeuse*, deftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 + rule fun_subst_deftype_case_0{qt : rectype, i : nat, tv_lst : typevar*, tu_lst : typeuse*, var_0 : rectype}: + `%%%%`(_DEF_deftype(qt, i), tv_lst, tu_lst, _DEF_deftype(var_0, i)) + -- fun_subst_rectype: `%%%%`(qt, tv_lst, tu_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 +relation subst_typeuse_is_wf: `%%%%`(v_typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 + rule subst_typeuse_is_wf_0{v_typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*, ret_val : typeuse, var_2 : typeuse}: + `%%%%`(v_typeuse, var_0, var_1, ret_val) + -- wf_typeuse: `%`(v_typeuse) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_typeuse: `%`(ret_val) + -- fun_subst_typeuse: `%%%%`(v_typeuse, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 +relation subst_heaptype_is_wf: `%%%%`(v_heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 + rule subst_heaptype_is_wf_0{v_heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*, ret_val : heaptype, var_2 : heaptype}: + `%%%%`(v_heaptype, var_0, var_1, ret_val) + -- wf_heaptype: `%`(v_heaptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_heaptype: `%`(ret_val) + -- fun_subst_heaptype: `%%%%`(v_heaptype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 +relation subst_reftype_is_wf: `%%%%`(v_reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 + rule subst_reftype_is_wf_0{v_reftype : reftype, var_0 : typevar*, var_1 : typeuse*, ret_val : reftype, var_2 : reftype}: + `%%%%`(v_reftype, var_0, var_1, ret_val) + -- wf_reftype: `%`(v_reftype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_reftype: `%`(ret_val) + -- fun_subst_reftype: `%%%%`(v_reftype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 +relation subst_valtype_is_wf: `%%%%`(v_valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 + rule subst_valtype_is_wf_0{v_valtype : valtype, var_0 : typevar*, var_1 : typeuse*, ret_val : valtype, var_2 : valtype}: + `%%%%`(v_valtype, var_0, var_1, ret_val) + -- wf_valtype: `%`(v_valtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_valtype: `%`(ret_val) + -- fun_subst_valtype: `%%%%`(v_valtype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 +relation subst_storagetype_is_wf: `%%%%`(v_storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 + rule subst_storagetype_is_wf_0{v_storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*, ret_val : storagetype, var_2 : storagetype}: + `%%%%`(v_storagetype, var_0, var_1, ret_val) + -- wf_storagetype: `%`(v_storagetype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_storagetype: `%`(ret_val) + -- fun_subst_storagetype: `%%%%`(v_storagetype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 +relation subst_fieldtype_is_wf: `%%%%`(v_fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 + rule subst_fieldtype_is_wf_0{v_fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*, ret_val : fieldtype, var_2 : fieldtype}: + `%%%%`(v_fieldtype, var_0, var_1, ret_val) + -- wf_fieldtype: `%`(v_fieldtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_fieldtype: `%`(ret_val) + -- fun_subst_fieldtype: `%%%%`(v_fieldtype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 +relation subst_comptype_is_wf: `%%%%`(v_comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 + rule subst_comptype_is_wf_0{v_comptype : comptype, var_0 : typevar*, var_1 : typeuse*, ret_val : comptype, var_2 : comptype}: + `%%%%`(v_comptype, var_0, var_1, ret_val) + -- wf_comptype: `%`(v_comptype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_comptype: `%`(ret_val) + -- fun_subst_comptype: `%%%%`(v_comptype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 +relation subst_subtype_is_wf: `%%%%`(v_subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 + rule subst_subtype_is_wf_0{v_subtype : subtype, var_0 : typevar*, var_1 : typeuse*, ret_val : subtype, var_2 : subtype}: + `%%%%`(v_subtype, var_0, var_1, ret_val) + -- wf_subtype: `%`(v_subtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_subtype: `%`(ret_val) + -- fun_subst_subtype: `%%%%`(v_subtype, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_addrtype(v_addrtype : addrtype, var_0 : typevar*, var_1 : typeuse*) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_addrtype{at : addrtype, tv_lst : typevar*, tu_lst : typeuse*}(at, tv_lst, tu_lst) = at + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_tagtype: `%%%%`(tagtype, typevar*, typeuse*, tagtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_tagtype_case_0{tu' : typeuse, tv_lst : typevar*, tu_lst : typeuse*, var_0 : tagtype}: + `%%%%`(tu', tv_lst, tu_lst, var_0) + -- fun_subst_typeuse: `%%%%`(tu', tv_lst, tu_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_globaltype: `%%%%`(globaltype, typevar*, typeuse*, globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_globaltype_case_0{mut_opt : mut?, t : valtype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(mk_globaltype_globaltype(mut_opt, t), tv_lst, tu_lst, mk_globaltype_globaltype(mut_opt, var_0)) + -- fun_subst_valtype: `%%%%`(t, tv_lst, tu_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_globaltype_is_wf: `%%%%`(v_globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_globaltype_is_wf_0{v_globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*, ret_val : globaltype, var_2 : globaltype}: + `%%%%`(v_globaltype, var_0, var_1, ret_val) + -- wf_globaltype: `%`(v_globaltype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_globaltype: `%`(ret_val) + -- fun_subst_globaltype: `%%%%`(v_globaltype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_memtype(v_memtype : memtype, var_0 : typevar*, var_1 : typeuse*) : memtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_memtype{at : addrtype, lim : limits, tv_lst : typevar*, tu_lst : typeuse*}(`%%PAGE`_memtype(at, lim), tv_lst, tu_lst) = `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_memtype_is_wf: `%%%%`(v_memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_memtype_is_wf_0{v_memtype : memtype, var_0 : typevar*, var_1 : typeuse*, ret_val : memtype}: + `%%%%`(v_memtype, var_0, var_1, ret_val) + -- wf_memtype: `%`(v_memtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = $subst_memtype(v_memtype, var_0, var_1)) + -- wf_memtype: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_tabletype: `%%%%`(tabletype, typevar*, typeuse*, tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_tabletype_case_0{at : addrtype, lim : limits, rt : reftype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : reftype}: + `%%%%`(mk_tabletype_tabletype(at, lim, rt), tv_lst, tu_lst, mk_tabletype_tabletype(at, lim, var_0)) + -- fun_subst_reftype: `%%%%`(rt, tv_lst, tu_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_tabletype_is_wf: `%%%%`(v_tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_tabletype_is_wf_0{v_tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*, ret_val : tabletype, var_2 : tabletype}: + `%%%%`(v_tabletype, var_0, var_1, ret_val) + -- wf_tabletype: `%`(v_tabletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_tabletype: `%`(ret_val) + -- fun_subst_tabletype: `%%%%`(v_tabletype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_externtype: `%%%%`(externtype, typevar*, typeuse*, externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_0{jt : typeuse, tv_lst : typevar*, tu_lst : typeuse*, var_0 : tagtype}: + `%%%%`(TAG_externtype(jt), tv_lst, tu_lst, TAG_externtype(var_0)) + -- fun_subst_tagtype: `%%%%`(jt, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_1{gt : globaltype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : globaltype}: + `%%%%`(GLOBAL_externtype(gt), tv_lst, tu_lst, GLOBAL_externtype(var_0)) + -- fun_subst_globaltype: `%%%%`(gt, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_2{tt : tabletype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : tabletype}: + `%%%%`(TABLE_externtype(tt), tv_lst, tu_lst, TABLE_externtype(var_0)) + -- fun_subst_tabletype: `%%%%`(tt, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_3{mt : memtype, tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(MEM_externtype(mt), tv_lst, tu_lst, MEM_externtype($subst_memtype(mt, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_4{tu' : typeuse, tv_lst : typevar*, tu_lst : typeuse*, var_0 : typeuse}: + `%%%%`(FUNC_externtype(tu'), tv_lst, tu_lst, FUNC_externtype(var_0)) + -- fun_subst_typeuse: `%%%%`(tu', tv_lst, tu_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_externtype_is_wf: `%%%%`(v_externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_externtype_is_wf_0{v_externtype : externtype, var_0 : typevar*, var_1 : typeuse*, ret_val : externtype, var_2 : externtype}: + `%%%%`(v_externtype, var_0, var_1, ret_val) + -- wf_externtype: `%`(v_externtype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_externtype: `%`(ret_val) + -- fun_subst_externtype: `%%%%`(v_externtype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_moduletype_case_0{xt_1_lst : externtype*, xt_2_lst : externtype*, tv_lst : typevar*, tu_lst : typeuse*, var_1_lst : externtype*, var_0_lst : externtype*}: + `%%%%`(mk_moduletype_moduletype(xt_1_lst, xt_2_lst), tv_lst, tu_lst, mk_moduletype_moduletype(var_0_lst, var_1_lst)) + -- (fun_subst_externtype: `%%%%`(xt_2, tv_lst, tu_lst, var_1))*{var_1 <- var_1_lst, xt_2 <- xt_2_lst} + -- if (|var_1_lst| = |xt_2_lst|) + -- (fun_subst_externtype: `%%%%`(xt_1, tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, xt_1 <- xt_1_lst} + -- if (|var_0_lst| = |xt_1_lst|) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation subst_moduletype_is_wf: `%%%%`(v_moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule subst_moduletype_is_wf_0{v_moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*, ret_val : moduletype, var_2 : moduletype}: + `%%%%`(v_moduletype, var_0, var_1, ret_val) + -- wf_moduletype: `%`(v_moduletype) + -- (wf_typevar: `%`(var_0))*{var_0 <- var_0} + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_moduletype: `%`(ret_val) + -- fun_subst_moduletype: `%%%%`(v_moduletype, var_0, var_1, var_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_all_valtype: `%%%`(valtype, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_all_valtype_case_0{t : valtype, v_n : nat, tu_lst : typeuse*, i : nat, var_0 : valtype}: + `%%%`(t, tu_lst, var_0) + -- if (v_n = |tu_lst|) + -- fun_subst_valtype: `%%%%`(t, _IDX_typevar(mk_uN_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2), var_0 +++ var_1) + -- fun_free_resulttype: `%%`(resulttype_2, var_1) + -- fun_free_resulttype: `%%`(resulttype_1, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 +relation fun_free_subtype: `%%`(subtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 + rule fun_free_subtype_case_0{final_opt : final?, typeuse_lst : typeuse*, v_comptype : comptype, var_2 : free, var_1_lst : free*, var_0 : free}: + `%%`(SUB_subtype(final_opt, typeuse_lst, v_comptype), var_0 +++ var_2) + -- fun_free_comptype: `%%`(v_comptype, var_2) + -- (fun_free_typeuse: `%%`(v_typeuse, var_1))*{var_1 <- var_1_lst, v_typeuse <- typeuse_lst} + -- if (|var_1_lst| = |typeuse_lst|) + -- fun_free_list: `%%`(var_1_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 +relation fun_free_rectype: `%%`(rectype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 + rule fun_free_rectype_case_0{subtype_lst : subtype*, var_1_lst : free*, var_0 : free}: + `%%`(REC_rectype(mk_list_list(subtype_lst)), var_0) + -- (fun_free_subtype: `%%`(v_subtype, var_1))*{var_1 <- var_1_lst, v_subtype <- subtype_lst} + -- if (|var_1_lst| = |subtype_lst|) + -- fun_free_list: `%%`(var_1_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 +relation fun_free_deftype: `%%`(deftype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 + rule fun_free_deftype_case_0{v_rectype : rectype, v_n : nat, var_0 : free}: + `%%`(_DEF_deftype(v_rectype, v_n), var_0) + -- fun_free_rectype: `%%`(v_rectype, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:481.6-481.20 +relation free_heaptype_is_wf: `%%`(v_heaptype : heaptype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:481.6-481.20 + rule free_heaptype_is_wf_0{v_heaptype : heaptype, ret_val : free, var_0 : free}: + `%%`(v_heaptype, ret_val) + -- wf_heaptype: `%`(v_heaptype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_heaptype: `%%`(v_heaptype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:482.6-482.19 +relation free_reftype_is_wf: `%%`(v_reftype : reftype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:482.6-482.19 + rule free_reftype_is_wf_0{v_reftype : reftype, ret_val : free, var_0 : free}: + `%%`(v_reftype, ret_val) + -- wf_reftype: `%`(v_reftype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_reftype: `%%`(v_reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.6-484.19 +relation free_typeuse_is_wf: `%%`(v_typeuse : typeuse, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.6-484.19 + rule free_typeuse_is_wf_0{v_typeuse : typeuse, ret_val : free, var_0 : free}: + `%%`(v_typeuse, ret_val) + -- wf_typeuse: `%`(v_typeuse) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_typeuse: `%%`(v_typeuse, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:485.6-485.19 +relation free_valtype_is_wf: `%%`(v_valtype : valtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:485.6-485.19 + rule free_valtype_is_wf_0{v_valtype : valtype, ret_val : free, var_0 : free}: + `%%`(v_valtype, ret_val) + -- wf_valtype: `%`(v_valtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_valtype: `%%`(v_valtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 +relation free_resulttype_is_wf: `%%`(v_resulttype : resulttype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.22 + rule free_resulttype_is_wf_0{v_resulttype : resulttype, ret_val : free, var_0 : free}: + `%%`(v_resulttype, ret_val) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_resulttype: `%%`(v_resulttype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 +relation free_storagetype_is_wf: `%%`(v_storagetype : storagetype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.23 + rule free_storagetype_is_wf_0{v_storagetype : storagetype, ret_val : free, var_0 : free}: + `%%`(v_storagetype, ret_val) + -- wf_storagetype: `%`(v_storagetype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_storagetype: `%%`(v_storagetype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 +relation free_fieldtype_is_wf: `%%`(v_fieldtype : fieldtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:489.6-489.21 + rule free_fieldtype_is_wf_0{v_fieldtype : fieldtype, ret_val : free, var_0 : free}: + `%%`(v_fieldtype, ret_val) + -- wf_fieldtype: `%`(v_fieldtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_fieldtype: `%%`(v_fieldtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 +relation free_comptype_is_wf: `%%`(v_comptype : comptype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.20 + rule free_comptype_is_wf_0{v_comptype : comptype, ret_val : free, var_0 : free}: + `%%`(v_comptype, ret_val) + -- wf_comptype: `%`(v_comptype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_comptype: `%%`(v_comptype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 +relation free_subtype_is_wf: `%%`(v_subtype : subtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.19 + rule free_subtype_is_wf_0{v_subtype : subtype, ret_val : free, var_0 : free}: + `%%`(v_subtype, ret_val) + -- wf_subtype: `%`(v_subtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_subtype: `%%`(v_subtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 +relation free_rectype_is_wf: `%%`(v_rectype : rectype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.19 + rule free_rectype_is_wf_0{v_rectype : rectype, ret_val : free, var_0 : free}: + `%%`(v_rectype, ret_val) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_rectype: `%%`(v_rectype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 +relation free_deftype_is_wf: `%%`(v_deftype : deftype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.6-520.19 + rule free_deftype_is_wf_0{v_deftype : deftype, ret_val : free, var_0 : free}: + `%%`(v_deftype, ret_val) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_deftype: `%%`(v_deftype, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_tagtype: `%%`(tagtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_tagtype_case_0{v_rectype : rectype, v_n : n, var_0 : free}: + `%%`(_DEF_tagtype(v_rectype, v_n), var_0) + -- fun_free_deftype: `%%`(_DEF_deftype(v_rectype, v_n), var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_tagtype_is_wf: `%%`(v_tagtype : tagtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_tagtype_is_wf_0{v_tagtype : tagtype, ret_val : free, var_0 : free}: + `%%`(v_tagtype, ret_val) + -- wf_typeuse: `%`(v_tagtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_tagtype: `%%`(v_tagtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_globaltype: `%%`(globaltype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_globaltype_case_0{mut_opt : mut?, v_valtype : valtype, var_0 : free}: + `%%`(mk_globaltype_globaltype(mut_opt, v_valtype), var_0) + -- fun_free_valtype: `%%`(v_valtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_globaltype_is_wf: `%%`(v_globaltype : globaltype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_globaltype_is_wf_0{v_globaltype : globaltype, ret_val : free, var_0 : free}: + `%%`(v_globaltype, ret_val) + -- wf_globaltype: `%`(v_globaltype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_globaltype: `%%`(v_globaltype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_memtype(v_memtype : memtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_memtype{v_addrtype : addrtype, v_limits : limits}(`%%PAGE`_memtype(v_addrtype, v_limits)) = $free_addrtype(v_addrtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_memtype_is_wf: `%%`(v_memtype : memtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_memtype_is_wf_0{v_memtype : memtype, ret_val : free}: + `%%`(v_memtype, ret_val) + -- wf_memtype: `%`(v_memtype) + -- if (ret_val = $free_memtype(v_memtype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_tabletype: `%%`(tabletype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_tabletype_case_0{v_addrtype : addrtype, v_limits : limits, v_reftype : reftype, var_0 : free}: + `%%`(mk_tabletype_tabletype(v_addrtype, v_limits, v_reftype), $free_addrtype(v_addrtype) +++ var_0) + -- fun_free_reftype: `%%`(v_reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_tabletype_is_wf: `%%`(v_tabletype : tabletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_tabletype_is_wf_0{v_tabletype : tabletype, ret_val : free, var_0 : free}: + `%%`(v_tabletype, ret_val) + -- wf_tabletype: `%`(v_tabletype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_tabletype: `%%`(v_tabletype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_datatype(v_datatype : datatype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_datatype_is_wf: `%%`(v_datatype : datatype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_datatype_is_wf_0{v_datatype : datatype, ret_val : free}: + `%%`(v_datatype, ret_val) + -- if (ret_val = $free_datatype(v_datatype)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_elemtype: `%%`(elemtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_elemtype_case_0{v_reftype : reftype, var_0 : free}: + `%%`(v_reftype, var_0) + -- fun_free_reftype: `%%`(v_reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_elemtype_is_wf: `%%`(v_elemtype : elemtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_elemtype_is_wf_0{v_elemtype : elemtype, ret_val : free, var_0 : free}: + `%%`(v_elemtype, ret_val) + -- wf_reftype: `%`(v_elemtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_elemtype: `%%`(v_elemtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_externtype: `%%`(externtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_0{v_tagtype : typeuse, var_0 : free}: + `%%`(TAG_externtype(v_tagtype), var_0) + -- fun_free_tagtype: `%%`(v_tagtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_1{v_globaltype : globaltype, var_0 : free}: + `%%`(GLOBAL_externtype(v_globaltype), var_0) + -- fun_free_globaltype: `%%`(v_globaltype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_2{v_memtype : memtype}: + `%%`(MEM_externtype(v_memtype), $free_memtype(v_memtype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_3{v_tabletype : tabletype, var_0 : free}: + `%%`(TABLE_externtype(v_tabletype), var_0) + -- fun_free_tabletype: `%%`(v_tabletype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_4{v_typeuse : typeuse, var_0 : free}: + `%%`(FUNC_externtype(v_typeuse), var_0) + -- fun_free_typeuse: `%%`(v_typeuse, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_externtype_is_wf: `%%`(v_externtype : externtype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_externtype_is_wf_0{v_externtype : externtype, ret_val : free, var_0 : free}: + `%%`(v_externtype, ret_val) + -- wf_externtype: `%`(v_externtype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_externtype: `%%`(v_externtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_moduletype: `%%`(moduletype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_moduletype_case_0{externtype_1_lst : externtype*, externtype_2_lst : externtype*, var_3_lst : free*, var_2 : free, var_1_lst : free*, var_0 : free}: + `%%`(mk_moduletype_moduletype(externtype_1_lst, externtype_2_lst), var_0 +++ var_2) + -- (fun_free_externtype: `%%`(externtype_2, var_3))*{var_3 <- var_3_lst, externtype_2 <- externtype_2_lst} + -- if (|var_3_lst| = |externtype_2_lst|) + -- fun_free_list: `%%`(var_3_lst, var_2) + -- (fun_free_externtype: `%%`(externtype_1, var_1))*{var_1 <- var_1_lst, externtype_1 <- externtype_1_lst} + -- if (|var_1_lst| = |externtype_1_lst|) + -- fun_free_list: `%%`(var_1_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation free_moduletype_is_wf: `%%`(v_moduletype : moduletype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule free_moduletype_is_wf_0{v_moduletype : moduletype, ret_val : free, var_0 : free}: + `%%`(v_moduletype, ret_val) + -- wf_moduletype: `%`(v_moduletype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_moduletype: `%%`(v_moduletype, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax num_ = + | mk_num__0(v_Inn : Inn, var_x : iN) + | mk_num__1(v_Fnn : Fnn, var_x : fN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_num_: `%%`(numtype, num_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_0{v_numtype : numtype, v_Inn : Inn, var_x : iN}: + `%%`(v_numtype, mk_num__0_num_(v_Inn, var_x)) + -- wf_uN: `%%`($size($numtype_addrtype(v_Inn)), var_x) + -- if (v_numtype = $numtype_addrtype(v_Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_1{v_numtype : numtype, v_Fnn : Fnn, var_x : fN}: + `%%`(v_numtype, mk_num__1_num_(v_Fnn, var_x)) + -- wf_fN: `%%`($sizenn($numtype_Fnn(v_Fnn)), var_x) + -- if (v_numtype = $numtype_Fnn(v_Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__0(var_x : num_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{v_Inn : Inn, var_x : iN}(mk_num__0_num_(v_Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__1(var_x : num_) : fN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{v_Fnn : Fnn, var_x : fN}(mk_num__1_num_(v_Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax pack_ = iN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lane_ = + | mk_lane__0(v_numtype : numtype, var_x : num_) + | mk_lane__1(v_packtype : packtype, var_x : pack_) + | mk_lane__2(v_Jnn : Jnn, var_x : iN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lane_: `%%`(lanetype, lane_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_0{v_lanetype : lanetype, v_numtype : numtype, var_x : num_}: + `%%`(v_lanetype, mk_lane__0_lane_(v_numtype, var_x)) + -- wf_num_: `%%`(v_numtype, var_x) + -- if (v_lanetype = $lanetype_numtype(v_numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_1{v_lanetype : lanetype, v_packtype : packtype, var_x : pack_}: + `%%`(v_lanetype, mk_lane__1_lane_(v_packtype, var_x)) + -- wf_uN: `%%`($psize(v_packtype), var_x) + -- if (v_lanetype = $lanetype_packtype(v_packtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_2{v_lanetype : lanetype, v_Jnn : Jnn, var_x : iN}: + `%%`(v_lanetype, mk_lane__2_lane_(v_Jnn, var_x)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(v_Jnn)), var_x) + -- if (v_lanetype = $lanetype_Jnn(v_Jnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__0(var_x : lane_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{v_numtype : numtype, var_x : num_}(mk_lane__0_lane_(v_numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__1(var_x : lane_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{v_packtype : packtype, var_x : pack_}(mk_lane__1_lane_(v_packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__2(var_x : lane_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{v_Jnn : Jnn, var_x : iN}(mk_lane__2_lane_(v_Jnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vec_ = vN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lit_ = + | mk_lit__0(v_numtype : numtype, var_x : num_) + | mk_lit__1(v_vectype : vectype, var_x : vec_) + | mk_lit__2(v_packtype : packtype, var_x : pack_) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lit_: `%%`(storagetype, lit_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_0{v_storagetype : storagetype, v_numtype : numtype, var_x : num_}: + `%%`(v_storagetype, mk_lit__0_lit_(v_numtype, var_x)) + -- wf_num_: `%%`(v_numtype, var_x) + -- if (v_storagetype = $storagetype_numtype(v_numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_1{v_storagetype : storagetype, v_vectype : vectype, var_x : vec_}: + `%%`(v_storagetype, mk_lit__1_lit_(v_vectype, var_x)) + -- wf_uN: `%%`($vsize(v_vectype), var_x) + -- if (v_storagetype = $storagetype_vectype(v_vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_2{v_storagetype : storagetype, v_packtype : packtype, var_x : pack_}: + `%%`(v_storagetype, mk_lit__2_lit_(v_packtype, var_x)) + -- wf_uN: `%%`($psize(v_packtype), var_x) + -- if (v_storagetype = $storagetype_packtype(v_packtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__0(var_x : lit_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{v_numtype : numtype, var_x : num_}(mk_lit__0_lit_(v_numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__1(var_x : lit_) : vec_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{v_vectype : vectype, var_x : vec_}(mk_lit__1_lit_(v_vectype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__2(var_x : lit_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{v_packtype : packtype, var_x : pack_}(mk_lit__2_lit_(v_packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sz = + | mk_sz(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_sz_0(x : sz) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_sz_0{v_num_0 : nat}(mk_sz_sz(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_sz: `%`(sz) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule sz_case_0{i : nat}: + `%`(mk_sz_sz(i)) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sx = + | U + | S + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Inn = + | CLZ + | CTZ + | POPCNT + | EXTEND(v_sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_Inn: `%%`(Inn, unop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_0{v_Inn : Inn}: + `%%`(v_Inn, CLZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_1{v_Inn : Inn}: + `%%`(v_Inn, CTZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_2{v_Inn : Inn}: + `%%`(v_Inn, POPCNT_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_3{v_Inn : Inn, v_sz : sz}: + `%%`(v_Inn, EXTEND_unop_Inn(v_sz)) + -- wf_sz: `%`(v_sz) + -- if ($proj_sz_0(v_sz).0 < $sizenn($numtype_addrtype(v_Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Fnn = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_ = + | mk_unop__0(v_Inn : Inn, var_x : unop_Inn) + | mk_unop__1(v_Fnn : Fnn, var_x : unop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_: `%%`(numtype, unop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_0{v_numtype : numtype, v_Inn : Inn, var_x : unop_Inn}: + `%%`(v_numtype, mk_unop__0_unop_(v_Inn, var_x)) + -- wf_unop_Inn: `%%`(v_Inn, var_x) + -- if (v_numtype = $numtype_addrtype(v_Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_1{v_numtype : numtype, v_Fnn : Fnn, var_x : unop_Fnn}: + `%%`(v_numtype, mk_unop__1_unop_(v_Fnn, var_x)) + -- if (v_numtype = $numtype_Fnn(v_Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__0(var_x : unop_) : unop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{v_Inn : Inn, var_x : unop_Inn}(mk_unop__0_unop_(v_Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__1(var_x : unop_) : unop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{v_Fnn : Fnn, var_x : unop_Fnn}(mk_unop__1_unop_(v_Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Inn = + | ADD + | SUB + | MUL + | DIV(v_sx : sx) + | REM(v_sx : sx) + | AND + | OR + | XOR + | SHL + | SHR(v_sx : sx) + | ROTL + | ROTR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Fnn = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | COPYSIGN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_ = + | mk_binop__0(v_Inn : Inn, var_x : binop_Inn) + | mk_binop__1(v_Fnn : Fnn, var_x : binop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_binop_: `%%`(numtype, binop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_0{v_numtype : numtype, v_Inn : Inn, var_x : binop_Inn}: + `%%`(v_numtype, mk_binop__0_binop_(v_Inn, var_x)) + -- if (v_numtype = $numtype_addrtype(v_Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_1{v_numtype : numtype, v_Fnn : Fnn, var_x : binop_Fnn}: + `%%`(v_numtype, mk_binop__1_binop_(v_Fnn, var_x)) + -- if (v_numtype = $numtype_Fnn(v_Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__0(var_x : binop_) : binop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{v_Inn : Inn, var_x : binop_Inn}(mk_binop__0_binop_(v_Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__1(var_x : binop_) : binop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{v_Fnn : Fnn, var_x : binop_Fnn}(mk_binop__1_binop_(v_Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_Inn = + | EQZ + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_ = + | mk_testop__0(v_Inn : Inn, var_x : testop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_testop_: `%%`(numtype, testop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule testop__case_0{v_numtype : numtype, v_Inn : Inn, var_x : testop_Inn}: + `%%`(v_numtype, mk_testop__0_testop_(v_Inn, var_x)) + -- if (v_numtype = $numtype_addrtype(v_Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_testop__0(var_x : testop_) : testop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_testop__0{v_Inn : Inn, var_x : testop_Inn}(mk_testop__0_testop_(v_Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Inn = + | EQ + | NE + | LT(v_sx : sx) + | GT(v_sx : sx) + | LE(v_sx : sx) + | GE(v_sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Fnn = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_ = + | mk_relop__0(v_Inn : Inn, var_x : relop_Inn) + | mk_relop__1(v_Fnn : Fnn, var_x : relop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_relop_: `%%`(numtype, relop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_0{v_numtype : numtype, v_Inn : Inn, var_x : relop_Inn}: + `%%`(v_numtype, mk_relop__0_relop_(v_Inn, var_x)) + -- if (v_numtype = $numtype_addrtype(v_Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_1{v_numtype : numtype, v_Fnn : Fnn, var_x : relop_Fnn}: + `%%`(v_numtype, mk_relop__1_relop_(v_Fnn, var_x)) + -- if (v_numtype = $numtype_Fnn(v_Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__0(var_x : relop_) : relop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{v_Inn : Inn, var_x : relop_Inn}(mk_relop__0_relop_(v_Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__1(var_x : relop_) : relop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{v_Fnn : Fnn, var_x : relop_Fnn}(mk_relop__1_relop_(v_Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Inn_2 = + | EXTEND(v_sx : sx) + | WRAP + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Inn_2: `%%%`(Inn, Inn, cvtop__Inn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_0{Inn_1 : Inn, Inn_2 : Inn, v_sx : sx}: + `%%%`(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(v_sx)) + -- if ($sizenn1($numtype_addrtype(Inn_1)) < $sizenn2($numtype_addrtype(Inn_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_1{Inn_1 : Inn, Inn_2 : Inn}: + `%%%`(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2) + -- if ($sizenn1($numtype_addrtype(Inn_1)) > $sizenn2($numtype_addrtype(Inn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Fnn_2 = + | CONVERT(v_sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn, Fnn, cvtop__Inn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_0{Inn_1 : Inn, Fnn_2 : Fnn, v_sx : sx}: + `%%%`(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_1{Inn_1 : Inn, Fnn_2 : Fnn}: + `%%%`(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2) + -- if ($sizenn1($numtype_addrtype(Inn_1)) = $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Inn_2 = + | TRUNC(v_sx : sx) + | TRUNC_SAT(v_sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn, Inn, cvtop__Fnn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_0{Fnn_1 : Fnn, Inn_2 : Inn, v_sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_1{Fnn_1 : Fnn, Inn_2 : Inn, v_sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_2{Fnn_1 : Fnn, Inn_2 : Inn}: + `%%%`(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = $sizenn2($numtype_addrtype(Inn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Fnn_2 = + | PROMOTE + | DEMOTE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn, Fnn, cvtop__Fnn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_0{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) < $sizenn2($numtype_Fnn(Fnn_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_1{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) > $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__ = + | mk_cvtop___0(Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2) + | mk_cvtop___1(Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2) + | mk_cvtop___2(Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2) + | mk_cvtop___3(Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__: `%%%`(numtype, numtype, cvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_0{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) + -- wf_cvtop__Inn_1_Inn_2: `%%%`(Inn_1, Inn_2, var_x) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_1{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) + -- wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn_1, Fnn_2, var_x) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_2{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) + -- wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn_1, Inn_2, var_x) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_3{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) + -- wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn_1, Fnn_2, var_x) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___0(var_x : cvtop__) : cvtop__Inn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___1(var_x : cvtop__) : cvtop__Inn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___2(var_x : cvtop__) : cvtop__Fnn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___3(var_x : cvtop__) : cvtop__Fnn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax dim = + | mk_dim(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_dim_0(x : dim) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_dim_0{v_num_0 : nat}(mk_dim_dim(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_dim: `%`(dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_case_0{i : nat}: + `%`(mk_dim_dim(i)) + -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax shape = + | `%X%`(v_lanetype : lanetype, v_dim : dim) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_shape: `%`(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule shape_case_0{v_lanetype : lanetype, v_dim : dim}: + `%`(`%X%`_shape(v_lanetype, v_dim)) + -- wf_dim: `%`(v_dim) + -- if (($lsize(v_lanetype) * $proj_dim_0(v_dim).0) = 128) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $fun_dim(v_shape : shape) : dim + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $fun_dim{v_Lnn : lanetype, v_N : nat}(`%X%`_shape(v_Lnn, mk_dim_dim(v_N))) = mk_dim_dim(v_N) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation dim_is_wf: `%%`(v_shape : shape, ret_val : dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_is_wf_0{v_shape : shape, ret_val : dim}: + `%%`(v_shape, ret_val) + -- wf_shape: `%`(v_shape) + -- if (ret_val = $fun_dim(v_shape)) + -- wf_dim: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $fun_lanetype(v_shape : shape) : lanetype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $fun_lanetype{v_Lnn : lanetype, v_N : nat}(`%X%`_shape(v_Lnn, mk_dim_dim(v_N))) = v_Lnn + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $unpackshape(v_shape : shape) : numtype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $unpackshape{v_Lnn : lanetype, v_N : nat}(`%X%`_shape(v_Lnn, mk_dim_dim(v_N))) = $lunpack(v_Lnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax ishape = + | mk_ishape(v_shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_ishape_0(x : ishape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_ishape_0{v_shape_0 : shape}(mk_ishape_ishape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_ishape: `%`(ishape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule ishape_case_0{v_Jnn : Jnn, v_shape : shape}: + `%`(mk_ishape_ishape(v_shape)) + -- wf_shape: `%`(v_shape) + -- if ($fun_lanetype(v_shape) = $lanetype_Jnn(v_Jnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax bshape = + | mk_bshape(v_shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_bshape_0(x : bshape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_bshape_0{v_shape_0 : shape}(mk_bshape_bshape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_bshape: `%`(bshape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule bshape_case_0{v_shape : shape}: + `%`(mk_bshape_bshape(v_shape)) + -- wf_shape: `%`(v_shape) + -- if ($fun_lanetype(v_shape) = I8_lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax zero = + | ZERO + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax half = + | LOW + | HIGH + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvunop = + | NOT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvbinop = + | AND + | ANDNOT + | OR + | XOR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvternop = + | BITSELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvtestop = + | ANY_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Jnn_M = + | ABS + | NEG + | POPCNT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_Jnn_M: `%%%`(Jnn, M, vunop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_0{v_Jnn : Jnn, v_M : M}: + `%%%`(v_Jnn, v_M, ABS_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_1{v_Jnn : Jnn, v_M : M}: + `%%%`(v_Jnn, v_M, NEG_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_2{v_Jnn : Jnn, v_M : M}: + `%%%`(v_Jnn, v_M, POPCNT_vunop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(v_Jnn)) = 8) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Fnn_M = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_ = + | mk_vunop__0(v_Jnn : Jnn, v_M : M, var_x : vunop_Jnn_M) + | mk_vunop__1(v_Fnn : Fnn, v_M : M, var_x : vunop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_: `%%`(shape, vunop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_0{v_shape : shape, v_Jnn : Jnn, v_M : M, var_x : vunop_Jnn_M}: + `%%`(v_shape, mk_vunop__0_vunop_(v_Jnn, v_M, var_x)) + -- wf_vunop_Jnn_M: `%%%`(v_Jnn, v_M, var_x) + -- if (v_shape = `%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_1{v_shape : shape, v_Fnn : Fnn, v_M : M, var_x : vunop_Fnn_M}: + `%%`(v_shape, mk_vunop__1_vunop_(v_Fnn, v_M, var_x)) + -- if (v_shape = `%X%`_shape($lanetype_Fnn(v_Fnn), mk_dim_dim(v_M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__0(var_x : vunop_) : vunop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{v_Jnn : Jnn, v_M : M, var_x : vunop_Jnn_M}(mk_vunop__0_vunop_(v_Jnn, v_M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__1(var_x : vunop_) : vunop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{v_Fnn : Fnn, v_M : M, var_x : vunop_Fnn_M}(mk_vunop__1_vunop_(v_Fnn, v_M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Jnn_M = + | ADD + | SUB + | ADD_SAT(v_sx : sx) + | SUB_SAT(v_sx : sx) + | MUL + | AVGRU + | Q15MULR_SATS + | RELAXED_Q15MULRS + | MIN(v_sx : sx) + | MAX(v_sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_Jnn_M: `%%%`(Jnn, M, vbinop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_0{v_Jnn : Jnn, v_M : M}: + `%%%`(v_Jnn, v_M, ADD_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_1{v_Jnn : Jnn, v_M : M}: + `%%%`(v_Jnn, v_M, SUB_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_2{v_Jnn : Jnn, v_M : M, v_sx : sx}: + `%%%`(v_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)) + -- if ($lsizenn($lanetype_Jnn(v_Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_3{v_Jnn : Jnn, v_M : M, v_sx : sx}: + `%%%`(v_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)) + -- if ($lsizenn($lanetype_Jnn(v_Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_4{v_Jnn : Jnn, v_M : M}: + `%%%`(v_Jnn, v_M, MUL_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(v_Jnn)) >= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_5{v_Jnn : Jnn, v_M : M}: + `%%%`(v_Jnn, v_M, AVGRU_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(v_Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_6{v_Jnn : Jnn, v_M : M}: + `%%%`(v_Jnn, v_M, Q15MULR_SATS_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(v_Jnn)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_7{v_Jnn : Jnn, v_M : M}: + `%%%`(v_Jnn, v_M, RELAXED_Q15MULRS_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(v_Jnn)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_8{v_Jnn : Jnn, v_M : M, v_sx : sx}: + `%%%`(v_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)) + -- if ($lsizenn($lanetype_Jnn(v_Jnn)) <= 32) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_9{v_Jnn : Jnn, v_M : M, v_sx : sx}: + `%%%`(v_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)) + -- if ($lsizenn($lanetype_Jnn(v_Jnn)) <= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Fnn_M = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | PMIN + | PMAX + | RELAXED_MIN + | RELAXED_MAX + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_ = + | mk_vbinop__0(v_Jnn : Jnn, v_M : M, var_x : vbinop_Jnn_M) + | mk_vbinop__1(v_Fnn : Fnn, v_M : M, var_x : vbinop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_: `%%`(shape, vbinop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_0{v_shape : shape, v_Jnn : Jnn, v_M : M, var_x : vbinop_Jnn_M}: + `%%`(v_shape, mk_vbinop__0_vbinop_(v_Jnn, v_M, var_x)) + -- wf_vbinop_Jnn_M: `%%%`(v_Jnn, v_M, var_x) + -- if (v_shape = `%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_1{v_shape : shape, v_Fnn : Fnn, v_M : M, var_x : vbinop_Fnn_M}: + `%%`(v_shape, mk_vbinop__1_vbinop_(v_Fnn, v_M, var_x)) + -- if (v_shape = `%X%`_shape($lanetype_Fnn(v_Fnn), mk_dim_dim(v_M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__0(var_x : vbinop_) : vbinop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{v_Jnn : Jnn, v_M : M, var_x : vbinop_Jnn_M}(mk_vbinop__0_vbinop_(v_Jnn, v_M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__1(var_x : vbinop_) : vbinop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{v_Fnn : Fnn, v_M : M, var_x : vbinop_Fnn_M}(mk_vbinop__1_vbinop_(v_Fnn, v_M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Jnn_M = + | RELAXED_LANESELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Fnn_M = + | RELAXED_MADD + | RELAXED_NMADD + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_ = + | mk_vternop__0(v_Jnn : Jnn, v_M : M, var_x : vternop_Jnn_M) + | mk_vternop__1(v_Fnn : Fnn, v_M : M, var_x : vternop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vternop_: `%%`(shape, vternop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_0{v_shape : shape, v_Jnn : Jnn, v_M : M, var_x : vternop_Jnn_M}: + `%%`(v_shape, mk_vternop__0_vternop_(v_Jnn, v_M, var_x)) + -- if (v_shape = `%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_1{v_shape : shape, v_Fnn : Fnn, v_M : M, var_x : vternop_Fnn_M}: + `%%`(v_shape, mk_vternop__1_vternop_(v_Fnn, v_M, var_x)) + -- if (v_shape = `%X%`_shape($lanetype_Fnn(v_Fnn), mk_dim_dim(v_M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__0(var_x : vternop_) : vternop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{v_Jnn : Jnn, v_M : M, var_x : vternop_Jnn_M}(mk_vternop__0_vternop_(v_Jnn, v_M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__1(var_x : vternop_) : vternop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{v_Fnn : Fnn, v_M : M, var_x : vternop_Fnn_M}(mk_vternop__1_vternop_(v_Fnn, v_M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_Jnn_M = + | ALL_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_ = + | mk_vtestop__0(v_Jnn : Jnn, v_M : M, var_x : vtestop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vtestop_: `%%`(shape, vtestop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vtestop__case_0{v_shape : shape, v_Jnn : Jnn, v_M : M, var_x : vtestop_Jnn_M}: + `%%`(v_shape, mk_vtestop__0_vtestop_(v_Jnn, v_M, var_x)) + -- if (v_shape = `%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vtestop__0(var_x : vtestop_) : vtestop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vtestop__0{v_Jnn : Jnn, v_M : M, var_x : vtestop_Jnn_M}(mk_vtestop__0_vtestop_(v_Jnn, v_M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Jnn_M = + | EQ + | NE + | LT(v_sx : sx) + | GT(v_sx : sx) + | LE(v_sx : sx) + | GE(v_sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_Jnn_M: `%%%`(Jnn, M, vrelop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_0{v_Jnn : Jnn, v_M : M}: + `%%%`(v_Jnn, v_M, EQ_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_1{v_Jnn : Jnn, v_M : M}: + `%%%`(v_Jnn, v_M, NE_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_2{v_Jnn : Jnn, v_M : M, v_sx : sx}: + `%%%`(v_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)) + -- if (($lsizenn($lanetype_Jnn(v_Jnn)) =/= 64) \/ (v_sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_3{v_Jnn : Jnn, v_M : M, v_sx : sx}: + `%%%`(v_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)) + -- if (($lsizenn($lanetype_Jnn(v_Jnn)) =/= 64) \/ (v_sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_4{v_Jnn : Jnn, v_M : M, v_sx : sx}: + `%%%`(v_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)) + -- if (($lsizenn($lanetype_Jnn(v_Jnn)) =/= 64) \/ (v_sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_5{v_Jnn : Jnn, v_M : M, v_sx : sx}: + `%%%`(v_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)) + -- if (($lsizenn($lanetype_Jnn(v_Jnn)) =/= 64) \/ (v_sx = S_sx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Fnn_M = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_ = + | mk_vrelop__0(v_Jnn : Jnn, v_M : M, var_x : vrelop_Jnn_M) + | mk_vrelop__1(v_Fnn : Fnn, v_M : M, var_x : vrelop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_: `%%`(shape, vrelop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_0{v_shape : shape, v_Jnn : Jnn, v_M : M, var_x : vrelop_Jnn_M}: + `%%`(v_shape, mk_vrelop__0_vrelop_(v_Jnn, v_M, var_x)) + -- wf_vrelop_Jnn_M: `%%%`(v_Jnn, v_M, var_x) + -- if (v_shape = `%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_1{v_shape : shape, v_Fnn : Fnn, v_M : M, var_x : vrelop_Fnn_M}: + `%%`(v_shape, mk_vrelop__1_vrelop_(v_Fnn, v_M, var_x)) + -- if (v_shape = `%X%`_shape($lanetype_Fnn(v_Fnn), mk_dim_dim(v_M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__0(var_x : vrelop_) : vrelop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{v_Jnn : Jnn, v_M : M, var_x : vrelop_Jnn_M}(mk_vrelop__0_vrelop_(v_Jnn, v_M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__1(var_x : vrelop_) : vrelop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{v_Fnn : Fnn, v_M : M, var_x : vrelop_Fnn_M}(mk_vrelop__1_vrelop_(v_Fnn, v_M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_Jnn_M = + | SHL + | SHR(v_sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_ = + | mk_vshiftop__0(v_Jnn : Jnn, v_M : M, var_x : vshiftop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vshiftop_: `%%`(ishape, vshiftop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vshiftop__case_0{v_ishape : ishape, v_Jnn : Jnn, v_M : M, var_x : vshiftop_Jnn_M}: + `%%`(v_ishape, mk_vshiftop__0_vshiftop_(v_Jnn, v_M, var_x)) + -- if (v_ishape = mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vshiftop__0(var_x : vshiftop_) : vshiftop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vshiftop__0{v_Jnn : Jnn, v_M : M, var_x : vshiftop_Jnn_M}(mk_vshiftop__0_vshiftop_(v_Jnn, v_M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_M = + | SWIZZLE + | RELAXED_SWIZZLE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_ = + | mk_vswizzlop__0(v_M : M, var_x : vswizzlop_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vswizzlop_: `%%`(bshape, vswizzlop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vswizzlop__case_0{v_bshape : bshape, v_M : M, var_x : vswizzlop_M}: + `%%`(v_bshape, mk_vswizzlop__0_vswizzlop_(v_M, var_x)) + -- if (v_bshape = mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vswizzlop__0(var_x : vswizzlop_) : vswizzlop_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vswizzlop__0{v_M : M, var_x : vswizzlop_M}(mk_vswizzlop__0_vswizzlop_(v_M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTADD_PAIRWISE(v_sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextunop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)) + -- if ((16 <= (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) <= 32))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__ = + | mk_vextunop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__: `%%%`(ishape, ishape, vextunop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), mk_dim_dim(M_1)))) + -- if (ishape_2 = mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), mk_dim_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextunop___0(var_x : vextunop__) : vextunop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTMUL(v_half : half, v_sx : sx) + | DOTS + | RELAXED_DOTS + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextbinop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_half : half, v_sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) >= 16)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_1{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_2{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__ = + | mk_vextbinop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__: `%%%`(ishape, ishape, vextbinop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), mk_dim_dim(M_1)))) + -- if (ishape_2 = mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), mk_dim_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextbinop___0(var_x : vextbinop__) : vextbinop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__Jnn_1_M_1_Jnn_2_M_2 = + | RELAXED_DOT_ADDS + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextternop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((4 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__ = + | mk_vextternop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__: `%%%`(ishape, ishape, vextternop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), mk_dim_dim(M_1)))) + -- if (ishape_2 = mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), mk_dim_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextternop___0(var_x : vextternop__) : vextternop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTEND(v_half : half, v_sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vcvtop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_half : half, v_sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)) + -- if ($lsizenn2($lanetype_Jnn(Jnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Fnn_2_M_2 = + | CONVERT(half_opt : half?, v_sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn, M, Fnn, M, vcvtop__Jnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Fnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, half_opt : half?, v_sx : sx}: + `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)) + -- if (((($sizenn2($numtype_Fnn(Fnn_2)) = $lsizenn1($lanetype_Jnn(Jnn_1))) /\ ($lsizenn1($lanetype_Jnn(Jnn_1)) = 32)) /\ (half_opt = ?())) \/ (($sizenn2($numtype_Fnn(Fnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (half_opt = ?(LOW_half)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Jnn_2_M_2 = + | TRUNC_SAT(v_sx : sx, zero_opt : zero?) + | RELAXED_TRUNC(v_sx : sx, zero_opt : zero?) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn, M, Jnn, M, vcvtop__Fnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_sx : sx, zero_opt : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero_opt = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero_opt = ?(ZERO_zero)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_sx : sx, zero_opt : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero_opt = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero_opt = ?(ZERO_zero)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Fnn_2_M_2 = + | DEMOTE(v_zero : zero) + | PROMOTELOW + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn, M, Fnn, M, vcvtop__Fnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, v_zero : zero}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $sizenn2($numtype_Fnn(Fnn_2)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2) + -- if ((2 * $sizenn1($numtype_Fnn(Fnn_1))) = $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__ = + | mk_vcvtop___0(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___1(Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2) + | mk_vcvtop___2(Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___3(Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__: `%%%`(shape, shape, vcvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_0{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), mk_dim_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), mk_dim_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_1{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), mk_dim_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), mk_dim_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_2{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), mk_dim_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), mk_dim_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_3{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), mk_dim_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), mk_dim_dim(M_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___0(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___1(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___2(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___3(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax memarg = +{ + ALIGN u32, + OFFSET u64 +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_memarg: `%`(memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg_case_{var_0 : u32, var_1 : u64}: + `%`({ALIGN var_0, OFFSET var_1}) + -- wf_uN: `%%`(32, var_0) + -- wf_uN: `%%`(64, var_1) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_Inn = + | mk_loadop_Inn(v_sz : sz, v_sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_Inn: `%%`(Inn, loadop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop_Inn_case_0{v_Inn : Inn, v_sz : sz, v_sx : sx}: + `%%`(v_Inn, mk_loadop_Inn_loadop_Inn(v_sz, v_sx)) + -- wf_sz: `%`(v_sz) + -- if ($proj_sz_0(v_sz).0 < $sizenn($numtype_addrtype(v_Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_ = + | mk_loadop__0(v_Inn : Inn, var_x : loadop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_: `%%`(numtype, loadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop__case_0{v_numtype : numtype, v_Inn : Inn, var_x : loadop_Inn}: + `%%`(v_numtype, mk_loadop__0_loadop_(v_Inn, var_x)) + -- wf_loadop_Inn: `%%`(v_Inn, var_x) + -- if (v_numtype = $numtype_addrtype(v_Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_loadop__0(var_x : loadop_) : loadop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_loadop__0{v_Inn : Inn, var_x : loadop_Inn}(mk_loadop__0_loadop_(v_Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_Inn = + | mk_storeop_Inn(v_sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_Inn: `%%`(Inn, storeop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop_Inn_case_0{v_Inn : Inn, v_sz : sz}: + `%%`(v_Inn, mk_storeop_Inn_storeop_Inn(v_sz)) + -- wf_sz: `%`(v_sz) + -- if ($proj_sz_0(v_sz).0 < $sizenn($numtype_addrtype(v_Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_ = + | mk_storeop__0(v_Inn : Inn, var_x : storeop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_: `%%`(numtype, storeop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop__case_0{v_numtype : numtype, v_Inn : Inn, var_x : storeop_Inn}: + `%%`(v_numtype, mk_storeop__0_storeop_(v_Inn, var_x)) + -- wf_storeop_Inn: `%%`(v_Inn, var_x) + -- if (v_numtype = $numtype_addrtype(v_Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_storeop__0(var_x : storeop_) : storeop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_storeop__0{v_Inn : Inn, var_x : storeop_Inn}(mk_storeop__0_storeop_(v_Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vloadop_ = + | `SHAPE%X%_%`(v_sz : sz, v_M : M, v_sx : sx) + | SPLAT(v_sz : sz) + | ZERO(v_sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vloadop_: `%%`(vectype, vloadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_0{v_vectype : vectype, v_sz : sz, v_M : M, v_sx : sx}: + `%%`(v_vectype, `SHAPE%X%_%`_vloadop_(v_sz, v_M, v_sx)) + -- wf_sz: `%`(v_sz) + -- if ((($proj_sz_0(v_sz).0 * v_M) : nat <:> rat) = (($vsize(v_vectype) : nat <:> rat) / (2 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_1{v_vectype : vectype, v_sz : sz}: + `%%`(v_vectype, SPLAT_vloadop_(v_sz)) + -- wf_sz: `%`(v_sz) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_2{v_vectype : vectype, v_sz : sz}: + `%%`(v_vectype, ZERO_vloadop_(v_sz)) + -- wf_sz: `%`(v_sz) + -- if ($proj_sz_0(v_sz).0 >= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax blocktype = + | _RESULT(valtype_opt : valtype?) + | _IDX(v_typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_blocktype: `%`(blocktype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_0{valtype_opt : valtype?}: + `%`(_RESULT_blocktype(valtype_opt)) + -- (wf_valtype: `%`(v_valtype))?{v_valtype <- valtype_opt} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_1{v_typeidx : typeidx}: + `%`(_IDX_blocktype(v_typeidx)) + -- wf_uN: `%%`(32, v_typeidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax addr = nat + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayaddr = addr + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax catch = + | CATCH(v_tagidx : tagidx, v_labelidx : labelidx) + | CATCH_REF(v_tagidx : tagidx, v_labelidx : labelidx) + | CATCH_ALL(v_labelidx : labelidx) + | CATCH_ALL_REF(v_labelidx : labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_catch: `%`(catch) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_0{v_tagidx : tagidx, v_labelidx : labelidx}: + `%`(CATCH_catch(v_tagidx, v_labelidx)) + -- wf_uN: `%%`(32, v_tagidx) + -- wf_uN: `%%`(32, v_labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_1{v_tagidx : tagidx, v_labelidx : labelidx}: + `%`(CATCH_REF_catch(v_tagidx, v_labelidx)) + -- wf_uN: `%%`(32, v_tagidx) + -- wf_uN: `%%`(32, v_labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_2{v_labelidx : labelidx}: + `%`(CATCH_ALL_catch(v_labelidx)) + -- wf_uN: `%%`(32, v_labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_3{v_labelidx : labelidx}: + `%`(CATCH_ALL_REF_catch(v_labelidx)) + -- wf_uN: `%%`(32, v_labelidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exnaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax dataaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax elemaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globaladdr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax memaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tagaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax externaddr = + | TAG(v_tagaddr : tagaddr) + | GLOBAL(v_globaladdr : globaladdr) + | MEM(v_memaddr : memaddr) + | TABLE(v_tableaddr : tableaddr) + | FUNC(v_funcaddr : funcaddr) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exportinst = +{ + NAME name, + ADDR externaddr +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exportinst: `%`(exportinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exportinst_case_{var_0 : name, var_1 : externaddr}: + `%`({NAME var_0, ADDR var_1}) + -- wf_name: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax moduleinst = +{ + TYPES deftype*, + TAGS tagaddr*, + GLOBALS globaladdr*, + MEMS memaddr*, + TABLES tableaddr*, + FUNCS funcaddr*, + DATAS dataaddr*, + ELEMS elemaddr*, + EXPORTS exportinst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_moduleinst: `%`(moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_case_{var_0 : deftype*, var_1 : tagaddr*, var_2 : globaladdr*, var_3 : memaddr*, var_4 : tableaddr*, var_5 : funcaddr*, var_6 : dataaddr*, var_7 : elemaddr*, var_8 : exportinst*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, EXPORTS var_8}) + -- (wf_exportinst: `%`(var_8))*{var_8 <- var_8} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-43.19 +syntax ref = + | REF_I31_NUM(v_u31 : u31) + | REF_NULL_ADDR + | REF_STRUCT_ADDR(v_structaddr : structaddr) + | REF_ARRAY_ADDR(v_arrayaddr : arrayaddr) + | REF_FUNC_ADDR(v_funcaddr : funcaddr) + | REF_EXN_ADDR(v_exnaddr : exnaddr) + | REF_HOST_ADDR(v_hostaddr : hostaddr) + | REF_EXTERN(v_ref : ref) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 +relation wf_ref: `%`(ref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_0{v_u31 : u31}: + `%`(REF_I31_NUM_ref(v_u31)) + -- wf_uN: `%%`(31, v_u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_1: + `%`(REF_NULL_ADDR_ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_2{v_structaddr : structaddr}: + `%`(REF_STRUCT_ADDR_ref(v_structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_3{v_arrayaddr : arrayaddr}: + `%`(REF_ARRAY_ADDR_ref(v_arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_4{v_funcaddr : funcaddr}: + `%`(REF_FUNC_ADDR_ref(v_funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_5{v_exnaddr : exnaddr}: + `%`(REF_EXN_ADDR_ref(v_exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_6{v_hostaddr : hostaddr}: + `%`(REF_HOST_ADDR_ref(v_hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.11 + rule ref_case_7{v_ref : ref}: + `%`(REF_EXTERN_ref(v_ref)) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax val = + | CONST(v_numtype : numtype, num_) + | VCONST(v_vectype : vectype, vec_) + | REF_I31_NUM(v_u31 : u31) + | REF_NULL_ADDR + | REF_STRUCT_ADDR(v_structaddr : structaddr) + | REF_ARRAY_ADDR(v_arrayaddr : arrayaddr) + | REF_FUNC_ADDR(v_funcaddr : funcaddr) + | REF_EXN_ADDR(v_exnaddr : exnaddr) + | REF_HOST_ADDR(v_hostaddr : hostaddr) + | REF_EXTERN(v_ref : ref) + +def $val_ref(var_0 : ref) : val + def $val_ref{x0 : u31}(REF_I31_NUM_ref(x0)) = REF_I31_NUM_val(x0) + def $val_ref(REF_NULL_ADDR_ref) = REF_NULL_ADDR_val + def $val_ref{x0 : structaddr}(REF_STRUCT_ADDR_ref(x0)) = REF_STRUCT_ADDR_val(x0) + def $val_ref{x0 : arrayaddr}(REF_ARRAY_ADDR_ref(x0)) = REF_ARRAY_ADDR_val(x0) + def $val_ref{x0 : funcaddr}(REF_FUNC_ADDR_ref(x0)) = REF_FUNC_ADDR_val(x0) + def $val_ref{x0 : exnaddr}(REF_EXN_ADDR_ref(x0)) = REF_EXN_ADDR_val(x0) + def $val_ref{x0 : hostaddr}(REF_HOST_ADDR_ref(x0)) = REF_HOST_ADDR_val(x0) + def $val_ref{x0 : ref}(REF_EXTERN_ref(x0)) = REF_EXTERN_val(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_val: `%`(val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_0{v_numtype : numtype, var_0 : num_}: + `%`(CONST_val(v_numtype, var_0)) + -- wf_num_: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_1{v_vectype : vectype, var_0 : vec_}: + `%`(VCONST_val(v_vectype, var_0)) + -- wf_uN: `%%`($vsize(v_vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_2{v_u31 : u31}: + `%`(REF_I31_NUM_val(v_u31)) + -- wf_uN: `%%`(31, v_u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_3: + `%`(REF_NULL_ADDR_val) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_4{v_structaddr : structaddr}: + `%`(REF_STRUCT_ADDR_val(v_structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_5{v_arrayaddr : arrayaddr}: + `%`(REF_ARRAY_ADDR_val(v_arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_6{v_funcaddr : funcaddr}: + `%`(REF_FUNC_ADDR_val(v_funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_7{v_exnaddr : exnaddr}: + `%`(REF_EXN_ADDR_val(v_exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_8{v_hostaddr : hostaddr}: + `%`(REF_HOST_ADDR_val(v_hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_9{v_ref : ref}: + `%`(REF_EXTERN_val(v_ref)) + -- wf_ref: `%`(v_ref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax frame = +{ + LOCALS val?*, + MODULE moduleinst +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_frame: `%`(frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_case_{var_0 : val?*, var_1 : moduleinst}: + `%`({LOCALS var_0, MODULE var_1}) + -- (wf_val: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- wf_moduleinst: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.1-139.9 +syntax instr = + | NOP + | UNREACHABLE + | DROP + | SELECT(valtype_lst_opt : valtype*?) + | BLOCK(v_blocktype : blocktype, instr_lst : instr*) + | LOOP(v_blocktype : blocktype, instr_lst : instr*) + | `IF%%ELSE%`(v_blocktype : blocktype, instr_lst : instr*, instr_lst : instr*) + | BR(v_labelidx : labelidx) + | BR_IF(v_labelidx : labelidx) + | BR_TABLE(labelidx_lst : labelidx*, v_labelidx : labelidx) + | BR_ON_NULL(v_labelidx : labelidx) + | BR_ON_NON_NULL(v_labelidx : labelidx) + | BR_ON_CAST(v_labelidx : labelidx, v_reftype : reftype, v_reftype : reftype) + | BR_ON_CAST_FAIL(v_labelidx : labelidx, v_reftype : reftype, v_reftype : reftype) + | CALL(v_funcidx : funcidx) + | CALL_REF(v_typeuse : typeuse) + | CALL_INDIRECT(v_tableidx : tableidx, v_typeuse : typeuse) + | RETURN + | RETURN_CALL(v_funcidx : funcidx) + | RETURN_CALL_REF(v_typeuse : typeuse) + | RETURN_CALL_INDIRECT(v_tableidx : tableidx, v_typeuse : typeuse) + | THROW(v_tagidx : tagidx) + | THROW_REF + | TRY_TABLE(v_blocktype : blocktype, list(syntax catch), instr_lst : instr*) + | LOCAL_GET(v_localidx : localidx) + | LOCAL_SET(v_localidx : localidx) + | LOCAL_TEE(v_localidx : localidx) + | GLOBAL_GET(v_globalidx : globalidx) + | GLOBAL_SET(v_globalidx : globalidx) + | TABLE_GET(v_tableidx : tableidx) + | TABLE_SET(v_tableidx : tableidx) + | TABLE_SIZE(v_tableidx : tableidx) + | TABLE_GROW(v_tableidx : tableidx) + | TABLE_FILL(v_tableidx : tableidx) + | TABLE_COPY(v_tableidx : tableidx, v_tableidx : tableidx) + | TABLE_INIT(v_tableidx : tableidx, v_elemidx : elemidx) + | ELEM_DROP(v_elemidx : elemidx) + | LOAD(v_numtype : numtype, loadop_?, v_memidx : memidx, v_memarg : memarg) + | STORE(v_numtype : numtype, storeop_?, v_memidx : memidx, v_memarg : memarg) + | VLOAD(v_vectype : vectype, vloadop_?, v_memidx : memidx, v_memarg : memarg) + | VLOAD_LANE(v_vectype : vectype, v_sz : sz, v_memidx : memidx, v_memarg : memarg, v_laneidx : laneidx) + | VSTORE(v_vectype : vectype, v_memidx : memidx, v_memarg : memarg) + | VSTORE_LANE(v_vectype : vectype, v_sz : sz, v_memidx : memidx, v_memarg : memarg, v_laneidx : laneidx) + | MEMORY_SIZE(v_memidx : memidx) + | MEMORY_GROW(v_memidx : memidx) + | MEMORY_FILL(v_memidx : memidx) + | MEMORY_COPY(v_memidx : memidx, v_memidx : memidx) + | MEMORY_INIT(v_memidx : memidx, v_dataidx : dataidx) + | DATA_DROP(v_dataidx : dataidx) + | REF_NULL(v_heaptype : heaptype) + | REF_IS_NULL + | REF_AS_NON_NULL + | REF_EQ + | REF_TEST(v_reftype : reftype) + | REF_CAST(v_reftype : reftype) + | REF_FUNC(v_funcidx : funcidx) + | REF_I31 + | I31_GET(v_sx : sx) + | STRUCT_NEW(v_typeidx : typeidx) + | STRUCT_NEW_DEFAULT(v_typeidx : typeidx) + | STRUCT_GET(sx_opt : sx?, v_typeidx : typeidx, v_fieldidx : fieldidx) + | STRUCT_SET(v_typeidx : typeidx, v_fieldidx : fieldidx) + | ARRAY_NEW(v_typeidx : typeidx) + | ARRAY_NEW_DEFAULT(v_typeidx : typeidx) + | ARRAY_NEW_FIXED(v_typeidx : typeidx, v_u32 : u32) + | ARRAY_NEW_DATA(v_typeidx : typeidx, v_dataidx : dataidx) + | ARRAY_NEW_ELEM(v_typeidx : typeidx, v_elemidx : elemidx) + | ARRAY_GET(sx_opt : sx?, v_typeidx : typeidx) + | ARRAY_SET(v_typeidx : typeidx) + | ARRAY_LEN + | ARRAY_FILL(v_typeidx : typeidx) + | ARRAY_COPY(v_typeidx : typeidx, v_typeidx : typeidx) + | ARRAY_INIT_DATA(v_typeidx : typeidx, v_dataidx : dataidx) + | ARRAY_INIT_ELEM(v_typeidx : typeidx, v_elemidx : elemidx) + | EXTERN_CONVERT_ANY + | ANY_CONVERT_EXTERN + | CONST(v_numtype : numtype, num_) + | UNOP(v_numtype : numtype, unop_) + | BINOP(v_numtype : numtype, binop_) + | TESTOP(v_numtype : numtype, testop_) + | RELOP(v_numtype : numtype, relop_) + | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__) + | VCONST(v_vectype : vectype, vec_) + | VVUNOP(v_vectype : vectype, v_vvunop : vvunop) + | VVBINOP(v_vectype : vectype, v_vvbinop : vvbinop) + | VVTERNOP(v_vectype : vectype, v_vvternop : vvternop) + | VVTESTOP(v_vectype : vectype, v_vvtestop : vvtestop) + | VUNOP(v_shape : shape, vunop_) + | VBINOP(v_shape : shape, vbinop_) + | VTERNOP(v_shape : shape, vternop_) + | VTESTOP(v_shape : shape, vtestop_) + | VRELOP(v_shape : shape, vrelop_) + | VSHIFTOP(v_ishape : ishape, vshiftop_) + | VBITMASK(v_ishape : ishape) + | VSWIZZLOP(v_bshape : bshape, vswizzlop_) + | VSHUFFLE(v_bshape : bshape, laneidx_lst : laneidx*) + | VEXTUNOP(ishape_1 : ishape, ishape_2 : ishape, vextunop__) + | VEXTBINOP(ishape_1 : ishape, ishape_2 : ishape, vextbinop__) + | VEXTTERNOP(ishape_1 : ishape, ishape_2 : ishape, vextternop__) + | VNARROW(ishape_1 : ishape, ishape_2 : ishape, v_sx : sx) + | VCVTOP(shape_1 : shape, shape_2 : shape, vcvtop__) + | VSPLAT(v_shape : shape) + | VEXTRACT_LANE(v_shape : shape, sx_opt : sx?, v_laneidx : laneidx) + | VREPLACE_LANE(v_shape : shape, v_laneidx : laneidx) + | REF_I31_NUM(v_u31 : u31) + | REF_NULL_ADDR + | REF_STRUCT_ADDR(v_structaddr : structaddr) + | REF_ARRAY_ADDR(v_arrayaddr : arrayaddr) + | REF_FUNC_ADDR(v_funcaddr : funcaddr) + | REF_EXN_ADDR(v_exnaddr : exnaddr) + | REF_HOST_ADDR(v_hostaddr : hostaddr) + | REF_EXTERN(v_ref : ref) + | `LABEL_%{%}%`(v_n : n, instr_lst : instr*, instr_lst : instr*) + | `FRAME_%{%}%`(v_n : n, v_frame : frame, instr_lst : instr*) + | `HANDLER_%{%}%`(v_n : n, catch_lst : catch*, instr_lst : instr*) + | TRAP +} + +def $instr_ref(var_0 : ref) : instr + def $instr_ref{x0 : u31}(REF_I31_NUM_ref(x0)) = REF_I31_NUM_instr(x0) + def $instr_ref(REF_NULL_ADDR_ref) = REF_NULL_ADDR_instr + def $instr_ref{x0 : structaddr}(REF_STRUCT_ADDR_ref(x0)) = REF_STRUCT_ADDR_instr(x0) + def $instr_ref{x0 : arrayaddr}(REF_ARRAY_ADDR_ref(x0)) = REF_ARRAY_ADDR_instr(x0) + def $instr_ref{x0 : funcaddr}(REF_FUNC_ADDR_ref(x0)) = REF_FUNC_ADDR_instr(x0) + def $instr_ref{x0 : exnaddr}(REF_EXN_ADDR_ref(x0)) = REF_EXN_ADDR_instr(x0) + def $instr_ref{x0 : hostaddr}(REF_HOST_ADDR_ref(x0)) = REF_HOST_ADDR_instr(x0) + def $instr_ref{x0 : ref}(REF_EXTERN_ref(x0)) = REF_EXTERN_instr(x0) + +def $instr_val(var_0 : val) : instr + def $instr_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_instr(x0, x1) + def $instr_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_instr(x0, x1) + def $instr_val{x0 : u31}(REF_I31_NUM_val(x0)) = REF_I31_NUM_instr(x0) + def $instr_val(REF_NULL_ADDR_val) = REF_NULL_ADDR_instr + def $instr_val{x0 : structaddr}(REF_STRUCT_ADDR_val(x0)) = REF_STRUCT_ADDR_instr(x0) + def $instr_val{x0 : arrayaddr}(REF_ARRAY_ADDR_val(x0)) = REF_ARRAY_ADDR_instr(x0) + def $instr_val{x0 : funcaddr}(REF_FUNC_ADDR_val(x0)) = REF_FUNC_ADDR_instr(x0) + def $instr_val{x0 : exnaddr}(REF_EXN_ADDR_val(x0)) = REF_EXN_ADDR_instr(x0) + def $instr_val{x0 : hostaddr}(REF_HOST_ADDR_val(x0)) = REF_HOST_ADDR_instr(x0) + def $instr_val{x0 : ref}(REF_EXTERN_val(x0)) = REF_EXTERN_instr(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 +relation wf_instr: `%`(instr) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_0: + `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_1: + `%`(UNREACHABLE_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_2: + `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_3{valtype_lst_opt : valtype*?}: + `%`(SELECT_instr(valtype_lst_opt)) + -- (wf_valtype: `%`(v_valtype))*{v_valtype <- valtype_lst}?{valtype_lst <- valtype_lst_opt} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_4{v_blocktype : blocktype, instr_lst : instr*}: + `%`(BLOCK_instr(v_blocktype, instr_lst)) + -- wf_blocktype: `%`(v_blocktype) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_5{v_blocktype : blocktype, instr_lst : instr*}: + `%`(LOOP_instr(v_blocktype, instr_lst)) + -- wf_blocktype: `%`(v_blocktype) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_6{v_blocktype : blocktype, instr_lst : instr*, instr_lst_0 : instr*}: + `%`(`IF%%ELSE%`_instr(v_blocktype, instr_lst, instr_lst_0)) + -- wf_blocktype: `%`(v_blocktype) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + -- (wf_instr: `%`(instr_lst_0))*{instr_lst_0 <- instr_lst_0} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_7{v_labelidx : labelidx}: + `%`(BR_instr(v_labelidx)) + -- wf_uN: `%%`(32, v_labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_8{v_labelidx : labelidx}: + `%`(BR_IF_instr(v_labelidx)) + -- wf_uN: `%%`(32, v_labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_9{labelidx_lst : labelidx*, v_labelidx : labelidx}: + `%`(BR_TABLE_instr(labelidx_lst, v_labelidx)) + -- (wf_uN: `%%`(32, v_labelidx))*{v_labelidx <- labelidx_lst} + -- wf_uN: `%%`(32, v_labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_10{v_labelidx : labelidx}: + `%`(BR_ON_NULL_instr(v_labelidx)) + -- wf_uN: `%%`(32, v_labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_11{v_labelidx : labelidx}: + `%`(BR_ON_NON_NULL_instr(v_labelidx)) + -- wf_uN: `%%`(32, v_labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_12{v_labelidx : labelidx, v_reftype : reftype, reftype_0 : reftype}: + `%`(BR_ON_CAST_instr(v_labelidx, v_reftype, reftype_0)) + -- wf_uN: `%%`(32, v_labelidx) + -- wf_reftype: `%`(v_reftype) + -- wf_reftype: `%`(reftype_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_13{v_labelidx : labelidx, v_reftype : reftype, reftype_0 : reftype}: + `%`(BR_ON_CAST_FAIL_instr(v_labelidx, v_reftype, reftype_0)) + -- wf_uN: `%%`(32, v_labelidx) + -- wf_reftype: `%`(v_reftype) + -- wf_reftype: `%`(reftype_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_14{v_funcidx : funcidx}: + `%`(CALL_instr(v_funcidx)) + -- wf_uN: `%%`(32, v_funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_15{v_typeuse : typeuse}: + `%`(CALL_REF_instr(v_typeuse)) + -- wf_typeuse: `%`(v_typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_16{v_tableidx : tableidx, v_typeuse : typeuse}: + `%`(CALL_INDIRECT_instr(v_tableidx, v_typeuse)) + -- wf_uN: `%%`(32, v_tableidx) + -- wf_typeuse: `%`(v_typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_17: + `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_18{v_funcidx : funcidx}: + `%`(RETURN_CALL_instr(v_funcidx)) + -- wf_uN: `%%`(32, v_funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_19{v_typeuse : typeuse}: + `%`(RETURN_CALL_REF_instr(v_typeuse)) + -- wf_typeuse: `%`(v_typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_20{v_tableidx : tableidx, v_typeuse : typeuse}: + `%`(RETURN_CALL_INDIRECT_instr(v_tableidx, v_typeuse)) + -- wf_uN: `%%`(32, v_tableidx) + -- wf_typeuse: `%`(v_typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_21{v_tagidx : tagidx}: + `%`(THROW_instr(v_tagidx)) + -- wf_uN: `%%`(32, v_tagidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_22: + `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_23{v_blocktype : blocktype, var_0 : list(syntax catch), instr_lst : instr*}: + `%`(TRY_TABLE_instr(v_blocktype, var_0, instr_lst)) + -- wf_blocktype: `%`(v_blocktype) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_24{v_localidx : localidx}: + `%`(LOCAL_GET_instr(v_localidx)) + -- wf_uN: `%%`(32, v_localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_25{v_localidx : localidx}: + `%`(LOCAL_SET_instr(v_localidx)) + -- wf_uN: `%%`(32, v_localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_26{v_localidx : localidx}: + `%`(LOCAL_TEE_instr(v_localidx)) + -- wf_uN: `%%`(32, v_localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_27{v_globalidx : globalidx}: + `%`(GLOBAL_GET_instr(v_globalidx)) + -- wf_uN: `%%`(32, v_globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_28{v_globalidx : globalidx}: + `%`(GLOBAL_SET_instr(v_globalidx)) + -- wf_uN: `%%`(32, v_globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_29{v_tableidx : tableidx}: + `%`(TABLE_GET_instr(v_tableidx)) + -- wf_uN: `%%`(32, v_tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_30{v_tableidx : tableidx}: + `%`(TABLE_SET_instr(v_tableidx)) + -- wf_uN: `%%`(32, v_tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_31{v_tableidx : tableidx}: + `%`(TABLE_SIZE_instr(v_tableidx)) + -- wf_uN: `%%`(32, v_tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_32{v_tableidx : tableidx}: + `%`(TABLE_GROW_instr(v_tableidx)) + -- wf_uN: `%%`(32, v_tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_33{v_tableidx : tableidx}: + `%`(TABLE_FILL_instr(v_tableidx)) + -- wf_uN: `%%`(32, v_tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_34{v_tableidx : tableidx, tableidx_0 : tableidx}: + `%`(TABLE_COPY_instr(v_tableidx, tableidx_0)) + -- wf_uN: `%%`(32, v_tableidx) + -- wf_uN: `%%`(32, tableidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_35{v_tableidx : tableidx, v_elemidx : elemidx}: + `%`(TABLE_INIT_instr(v_tableidx, v_elemidx)) + -- wf_uN: `%%`(32, v_tableidx) + -- wf_uN: `%%`(32, v_elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_36{v_elemidx : elemidx}: + `%`(ELEM_DROP_instr(v_elemidx)) + -- wf_uN: `%%`(32, v_elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_37{v_numtype : numtype, var_0 : loadop_?, v_memidx : memidx, v_memarg : memarg}: + `%`(LOAD_instr(v_numtype, var_0, v_memidx, v_memarg)) + -- (wf_loadop_: `%%`(v_numtype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, v_memidx) + -- wf_memarg: `%`(v_memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_38{v_numtype : numtype, var_0 : storeop_?, v_memidx : memidx, v_memarg : memarg}: + `%`(STORE_instr(v_numtype, var_0, v_memidx, v_memarg)) + -- (wf_storeop_: `%%`(v_numtype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, v_memidx) + -- wf_memarg: `%`(v_memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_39{v_vectype : vectype, var_0 : vloadop_?, v_memidx : memidx, v_memarg : memarg}: + `%`(VLOAD_instr(v_vectype, var_0, v_memidx, v_memarg)) + -- (wf_vloadop_: `%%`(v_vectype, var_0))?{var_0 <- var_0} + -- wf_uN: `%%`(32, v_memidx) + -- wf_memarg: `%`(v_memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_40{v_vectype : vectype, v_sz : sz, v_memidx : memidx, v_memarg : memarg, v_laneidx : laneidx}: + `%`(VLOAD_LANE_instr(v_vectype, v_sz, v_memidx, v_memarg, v_laneidx)) + -- wf_sz: `%`(v_sz) + -- wf_uN: `%%`(32, v_memidx) + -- wf_memarg: `%`(v_memarg) + -- wf_uN: `%%`(8, v_laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_41{v_vectype : vectype, v_memidx : memidx, v_memarg : memarg}: + `%`(VSTORE_instr(v_vectype, v_memidx, v_memarg)) + -- wf_uN: `%%`(32, v_memidx) + -- wf_memarg: `%`(v_memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_42{v_vectype : vectype, v_sz : sz, v_memidx : memidx, v_memarg : memarg, v_laneidx : laneidx}: + `%`(VSTORE_LANE_instr(v_vectype, v_sz, v_memidx, v_memarg, v_laneidx)) + -- wf_sz: `%`(v_sz) + -- wf_uN: `%%`(32, v_memidx) + -- wf_memarg: `%`(v_memarg) + -- wf_uN: `%%`(8, v_laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_43{v_memidx : memidx}: + `%`(MEMORY_SIZE_instr(v_memidx)) + -- wf_uN: `%%`(32, v_memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_44{v_memidx : memidx}: + `%`(MEMORY_GROW_instr(v_memidx)) + -- wf_uN: `%%`(32, v_memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_45{v_memidx : memidx}: + `%`(MEMORY_FILL_instr(v_memidx)) + -- wf_uN: `%%`(32, v_memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_46{v_memidx : memidx, memidx_0 : memidx}: + `%`(MEMORY_COPY_instr(v_memidx, memidx_0)) + -- wf_uN: `%%`(32, v_memidx) + -- wf_uN: `%%`(32, memidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_47{v_memidx : memidx, v_dataidx : dataidx}: + `%`(MEMORY_INIT_instr(v_memidx, v_dataidx)) + -- wf_uN: `%%`(32, v_memidx) + -- wf_uN: `%%`(32, v_dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_48{v_dataidx : dataidx}: + `%`(DATA_DROP_instr(v_dataidx)) + -- wf_uN: `%%`(32, v_dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_49{v_heaptype : heaptype}: + `%`(REF_NULL_instr(v_heaptype)) + -- wf_heaptype: `%`(v_heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_50: + `%`(REF_IS_NULL_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_51: + `%`(REF_AS_NON_NULL_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_52: + `%`(REF_EQ_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_53{v_reftype : reftype}: + `%`(REF_TEST_instr(v_reftype)) + -- wf_reftype: `%`(v_reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_54{v_reftype : reftype}: + `%`(REF_CAST_instr(v_reftype)) + -- wf_reftype: `%`(v_reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_55{v_funcidx : funcidx}: + `%`(REF_FUNC_instr(v_funcidx)) + -- wf_uN: `%%`(32, v_funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_56: + `%`(REF_I31_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_57{v_sx : sx}: + `%`(I31_GET_instr(v_sx)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_58{v_typeidx : typeidx}: + `%`(STRUCT_NEW_instr(v_typeidx)) + -- wf_uN: `%%`(32, v_typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_59{v_typeidx : typeidx}: + `%`(STRUCT_NEW_DEFAULT_instr(v_typeidx)) + -- wf_uN: `%%`(32, v_typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_60{sx_opt : sx?, v_typeidx : typeidx, v_fieldidx : fieldidx}: + `%`(STRUCT_GET_instr(sx_opt, v_typeidx, v_fieldidx)) + -- wf_uN: `%%`(32, v_typeidx) + -- wf_uN: `%%`(32, v_fieldidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_61{v_typeidx : typeidx, v_fieldidx : fieldidx}: + `%`(STRUCT_SET_instr(v_typeidx, v_fieldidx)) + -- wf_uN: `%%`(32, v_typeidx) + -- wf_uN: `%%`(32, v_fieldidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_62{v_typeidx : typeidx}: + `%`(ARRAY_NEW_instr(v_typeidx)) + -- wf_uN: `%%`(32, v_typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_63{v_typeidx : typeidx}: + `%`(ARRAY_NEW_DEFAULT_instr(v_typeidx)) + -- wf_uN: `%%`(32, v_typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_64{v_typeidx : typeidx, v_u32 : u32}: + `%`(ARRAY_NEW_FIXED_instr(v_typeidx, v_u32)) + -- wf_uN: `%%`(32, v_typeidx) + -- wf_uN: `%%`(32, v_u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_65{v_typeidx : typeidx, v_dataidx : dataidx}: + `%`(ARRAY_NEW_DATA_instr(v_typeidx, v_dataidx)) + -- wf_uN: `%%`(32, v_typeidx) + -- wf_uN: `%%`(32, v_dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_66{v_typeidx : typeidx, v_elemidx : elemidx}: + `%`(ARRAY_NEW_ELEM_instr(v_typeidx, v_elemidx)) + -- wf_uN: `%%`(32, v_typeidx) + -- wf_uN: `%%`(32, v_elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_67{sx_opt : sx?, v_typeidx : typeidx}: + `%`(ARRAY_GET_instr(sx_opt, v_typeidx)) + -- wf_uN: `%%`(32, v_typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_68{v_typeidx : typeidx}: + `%`(ARRAY_SET_instr(v_typeidx)) + -- wf_uN: `%%`(32, v_typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_69: + `%`(ARRAY_LEN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_70{v_typeidx : typeidx}: + `%`(ARRAY_FILL_instr(v_typeidx)) + -- wf_uN: `%%`(32, v_typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_71{v_typeidx : typeidx, typeidx_0 : typeidx}: + `%`(ARRAY_COPY_instr(v_typeidx, typeidx_0)) + -- wf_uN: `%%`(32, v_typeidx) + -- wf_uN: `%%`(32, typeidx_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_72{v_typeidx : typeidx, v_dataidx : dataidx}: + `%`(ARRAY_INIT_DATA_instr(v_typeidx, v_dataidx)) + -- wf_uN: `%%`(32, v_typeidx) + -- wf_uN: `%%`(32, v_dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_73{v_typeidx : typeidx, v_elemidx : elemidx}: + `%`(ARRAY_INIT_ELEM_instr(v_typeidx, v_elemidx)) + -- wf_uN: `%%`(32, v_typeidx) + -- wf_uN: `%%`(32, v_elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_74: + `%`(EXTERN_CONVERT_ANY_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_75: + `%`(ANY_CONVERT_EXTERN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_76{v_numtype : numtype, var_0 : num_}: + `%`(CONST_instr(v_numtype, var_0)) + -- wf_num_: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_77{v_numtype : numtype, var_0 : unop_}: + `%`(UNOP_instr(v_numtype, var_0)) + -- wf_unop_: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_78{v_numtype : numtype, var_0 : binop_}: + `%`(BINOP_instr(v_numtype, var_0)) + -- wf_binop_: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_79{v_numtype : numtype, var_0 : testop_}: + `%`(TESTOP_instr(v_numtype, var_0)) + -- wf_testop_: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_80{v_numtype : numtype, var_0 : relop_}: + `%`(RELOP_instr(v_numtype, var_0)) + -- wf_relop_: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_81{numtype_1 : numtype, numtype_2 : numtype, var_0 : cvtop__}: + `%`(CVTOP_instr(numtype_1, numtype_2, var_0)) + -- wf_cvtop__: `%%%`(numtype_2, numtype_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_82{v_vectype : vectype, var_0 : vec_}: + `%`(VCONST_instr(v_vectype, var_0)) + -- wf_uN: `%%`($vsize(v_vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_83{v_vectype : vectype, v_vvunop : vvunop}: + `%`(VVUNOP_instr(v_vectype, v_vvunop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_84{v_vectype : vectype, v_vvbinop : vvbinop}: + `%`(VVBINOP_instr(v_vectype, v_vvbinop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_85{v_vectype : vectype, v_vvternop : vvternop}: + `%`(VVTERNOP_instr(v_vectype, v_vvternop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_86{v_vectype : vectype, v_vvtestop : vvtestop}: + `%`(VVTESTOP_instr(v_vectype, v_vvtestop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_87{v_shape : shape, var_0 : vunop_}: + `%`(VUNOP_instr(v_shape, var_0)) + -- wf_shape: `%`(v_shape) + -- wf_vunop_: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_88{v_shape : shape, var_0 : vbinop_}: + `%`(VBINOP_instr(v_shape, var_0)) + -- wf_shape: `%`(v_shape) + -- wf_vbinop_: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_89{v_shape : shape, var_0 : vternop_}: + `%`(VTERNOP_instr(v_shape, var_0)) + -- wf_shape: `%`(v_shape) + -- wf_vternop_: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_90{v_shape : shape, var_0 : vtestop_}: + `%`(VTESTOP_instr(v_shape, var_0)) + -- wf_shape: `%`(v_shape) + -- wf_vtestop_: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_91{v_shape : shape, var_0 : vrelop_}: + `%`(VRELOP_instr(v_shape, var_0)) + -- wf_shape: `%`(v_shape) + -- wf_vrelop_: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_92{v_ishape : ishape, var_0 : vshiftop_}: + `%`(VSHIFTOP_instr(v_ishape, var_0)) + -- wf_ishape: `%`(v_ishape) + -- wf_vshiftop_: `%%`(v_ishape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_93{v_ishape : ishape}: + `%`(VBITMASK_instr(v_ishape)) + -- wf_ishape: `%`(v_ishape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_94{v_bshape : bshape, var_0 : vswizzlop_}: + `%`(VSWIZZLOP_instr(v_bshape, var_0)) + -- wf_bshape: `%`(v_bshape) + -- wf_vswizzlop_: `%%`(v_bshape, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_95{v_bshape : bshape, laneidx_lst : laneidx*}: + `%`(VSHUFFLE_instr(v_bshape, laneidx_lst)) + -- wf_bshape: `%`(v_bshape) + -- (wf_uN: `%%`(8, v_laneidx))*{v_laneidx <- laneidx_lst} + -- if (mk_dim_dim(|laneidx_lst|) = $fun_dim($proj_bshape_0(v_bshape).0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextunop__}: + `%`(VEXTUNOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextunop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_97{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextbinop__}: + `%`(VEXTBINOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextbinop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_98{ishape_1 : ishape, ishape_2 : ishape, var_0 : vextternop__}: + `%`(VEXTTERNOP_instr(ishape_1, ishape_2, var_0)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextternop__: `%%%`(ishape_2, ishape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_99{ishape_1 : ishape, ishape_2 : ishape, v_sx : sx}: + `%`(VNARROW_instr(ishape_1, ishape_2, v_sx)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- if (($lsize($fun_lanetype($proj_ishape_0(ishape_2).0)) = (2 * $lsize($fun_lanetype($proj_ishape_0(ishape_1).0)))) /\ ((2 * $lsize($fun_lanetype($proj_ishape_0(ishape_1).0))) <= 32)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_100{shape_1 : shape, shape_2 : shape, var_0 : vcvtop__}: + `%`(VCVTOP_instr(shape_1, shape_2, var_0)) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_2, shape_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_101{v_shape : shape}: + `%`(VSPLAT_instr(v_shape)) + -- wf_shape: `%`(v_shape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_102{v_shape : shape, sx_opt : sx?, v_laneidx : laneidx}: + `%`(VEXTRACT_LANE_instr(v_shape, sx_opt, v_laneidx)) + -- wf_shape: `%`(v_shape) + -- wf_uN: `%%`(8, v_laneidx) + -- if ((sx_opt = ?()) <=> ($fun_lanetype(v_shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) + -- if (|[I32_lanetype I64_lanetype F32_lanetype F64_lanetype]| > 0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_103{v_shape : shape, v_laneidx : laneidx}: + `%`(VREPLACE_LANE_instr(v_shape, v_laneidx)) + -- wf_shape: `%`(v_shape) + -- wf_uN: `%%`(8, v_laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_104{v_u31 : u31}: + `%`(REF_I31_NUM_instr(v_u31)) + -- wf_uN: `%%`(31, v_u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_105: + `%`(REF_NULL_ADDR_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_106{v_structaddr : structaddr}: + `%`(REF_STRUCT_ADDR_instr(v_structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_107{v_arrayaddr : arrayaddr}: + `%`(REF_ARRAY_ADDR_instr(v_arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_108{v_funcaddr : funcaddr}: + `%`(REF_FUNC_ADDR_instr(v_funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_109{v_exnaddr : exnaddr}: + `%`(REF_EXN_ADDR_instr(v_exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_110{v_hostaddr : hostaddr}: + `%`(REF_HOST_ADDR_instr(v_hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_111{v_ref : ref}: + `%`(REF_EXTERN_instr(v_ref)) + -- wf_ref: `%`(v_ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_112{v_n : n, instr_lst : instr*, instr_lst_0 : instr*}: + `%`(`LABEL_%{%}%`_instr(v_n, instr_lst, instr_lst_0)) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + -- (wf_instr: `%`(instr_lst_0))*{instr_lst_0 <- instr_lst_0} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_113{v_n : n, v_frame : frame, instr_lst : instr*}: + `%`(`FRAME_%{%}%`_instr(v_n, v_frame, instr_lst)) + -- wf_frame: `%`(v_frame) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_114{v_n : n, catch_lst : catch*, instr_lst : instr*}: + `%`(`HANDLER_%{%}%`_instr(v_n, catch_lst, instr_lst)) + -- (wf_catch: `%`(v_catch))*{v_catch <- catch_lst} + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.8-133.13 + rule instr_case_115: + `%`(TRAP_instr) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax expr = instr* + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $memarg0 : memarg + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $memarg0 = {ALIGN mk_uN_u32(0), OFFSET mk_uN_u64(0)} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation memarg0_is_wf: `%`(ret_val : memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg0_is_wf_0{ret_val : memarg}: + `%`(ret_val) + -- if (ret_val = $memarg0) + -- wf_memarg: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $const(v_consttype : consttype, v_lit_ : lit_) : instr + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(I32_consttype, mk_lit__0_lit_(I32_numtype, c)) = CONST_instr(I32_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(I64_consttype, mk_lit__0_lit_(I64_numtype, c)) = CONST_instr(I64_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(F32_consttype, mk_lit__0_lit_(F32_numtype, c)) = CONST_instr(F32_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : num_}(F64_consttype, mk_lit__0_lit_(F64_numtype, c)) = CONST_instr(F64_numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{c : uN}(V128_consttype, mk_lit__1_lit_(V128_vectype, c)) = VCONST_instr(V128_vectype, c) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation const_is_wf: `%%%`(v_consttype : consttype, v_lit_ : lit_, ret_val : instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule const_is_wf_0{v_consttype : consttype, v_lit_ : lit_, ret_val : instr}: + `%%%`(v_consttype, v_lit_, ret_val) + -- wf_lit_: `%%`($storagetype_consttype(v_consttype), v_lit_) + -- if (ret_val = $const(v_consttype, v_lit_)) + -- wf_instr: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_shape(v_shape : shape) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_shape{v_lanetype : lanetype, v_dim : dim}(`%X%`_shape(v_lanetype, v_dim)) = $free_lanetype(v_lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_shape_is_wf: `%%`(v_shape : shape, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_shape_is_wf_0{v_shape : shape, ret_val : free}: + `%%`(v_shape, ret_val) + -- wf_shape: `%`(v_shape) + -- if (ret_val = $free_shape(v_shape)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_blocktype: `%%`(blocktype, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_blocktype_case_0{valtype_opt : valtype?, var_0_opt : free?}: + `%%`(_RESULT_blocktype(valtype_opt), $free_opt(var_0_opt)) + -- (fun_free_valtype: `%%`(v_valtype, var_0))?{var_0 <- var_0_opt, v_valtype <- valtype_opt} + -- if ((var_0_opt = ?()) <=> (valtype_opt = ?())) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_blocktype_case_1{v_typeidx : uN}: + `%%`(_IDX_blocktype(v_typeidx), $free_typeidx(v_typeidx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_blocktype_is_wf: `%%`(v_blocktype : blocktype, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_blocktype_is_wf_0{v_blocktype : blocktype, ret_val : free, var_0 : free}: + `%%`(v_blocktype, ret_val) + -- wf_blocktype: `%`(v_blocktype) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_blocktype: `%%`(v_blocktype, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_catch(v_catch : catch) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{v_tagidx : uN, v_labelidx : uN}(CATCH_catch(v_tagidx, v_labelidx)) = $free_tagidx(v_tagidx) +++ $free_labelidx(v_labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{v_tagidx : uN, v_labelidx : uN}(CATCH_REF_catch(v_tagidx, v_labelidx)) = $free_tagidx(v_tagidx) +++ $free_labelidx(v_labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{v_labelidx : uN}(CATCH_ALL_catch(v_labelidx)) = $free_labelidx(v_labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{v_labelidx : uN}(CATCH_ALL_REF_catch(v_labelidx)) = $free_labelidx(v_labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_catch_is_wf: `%%`(v_catch : catch, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_catch_is_wf_0{v_catch : catch, ret_val : free}: + `%%`(v_catch, ret_val) + -- wf_catch: `%`(v_catch) + -- if (ret_val = $free_catch(v_catch)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 +relation fun_shift_labelidxs: `%%`(labelidx*, labelidx*) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_1{labelidx'_lst : labelidx*, var_0 : labelidx*}: + `%%`([mk_uN_labelidx(0)] ++ labelidx'_lst, var_0) + -- fun_shift_labelidxs: `%%`(labelidx'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.6-584.22 + rule fun_shift_labelidxs_case_2{v_labelidx : uN, labelidx'_lst : labelidx*, var_0 : labelidx*}: + `%%`([v_labelidx] ++ labelidx'_lst, [mk_uN_labelidx(((($proj_uN_0(v_labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ var_0) + -- fun_shift_labelidxs: `%%`(labelidx'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation fun_free_instr: `%%`(instr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_0: + `%%`(NOP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_1: + `%%`(UNREACHABLE_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_2: + `%%`(DROP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_3{valtype_lst_opt : valtype*?, var_1_lst_opt : free*?, var_0_opt : free?}: + `%%`(SELECT_instr(valtype_lst_opt), $free_opt(var_0_opt)) + -- (fun_free_valtype: `%%`(v_valtype, var_1))*{var_1 <- var_1_lst, v_valtype <- valtype_lst}?{var_1_lst <- var_1_lst_opt, valtype_lst <- valtype_lst_opt} + -- if ((var_1_lst_opt = ?()) <=> (valtype_lst_opt = ?())) + -- (if (|var_1_lst| = |valtype_lst|))?{var_1_lst <- var_1_lst_opt, valtype_lst <- valtype_lst_opt} + -- (fun_free_list: `%%`(var_1_lst, var_0))?{var_1_lst <- var_1_lst_opt, var_0 <- var_0_opt} + -- if ((var_1_lst_opt = ?()) <=> (var_0_opt = ?())) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_4{v_blocktype : blocktype, instr_lst : instr*, var_1 : free, var_0 : free}: + `%%`(BLOCK_instr(v_blocktype, instr_lst), var_0 +++ var_1) + -- fun_free_block: `%%`(instr_lst, var_1) + -- fun_free_blocktype: `%%`(v_blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_5{v_blocktype : blocktype, instr_lst : instr*, var_1 : free, var_0 : free}: + `%%`(LOOP_instr(v_blocktype, instr_lst), var_0 +++ var_1) + -- fun_free_block: `%%`(instr_lst, var_1) + -- fun_free_blocktype: `%%`(v_blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_6{v_blocktype : blocktype, instr_1_lst : instr*, instr_2_lst : instr*, var_2 : free, var_1 : free, var_0 : free}: + `%%`(`IF%%ELSE%`_instr(v_blocktype, instr_1_lst, instr_2_lst), var_0 +++ var_1 +++ var_2) + -- fun_free_block: `%%`(instr_2_lst, var_2) + -- fun_free_block: `%%`(instr_1_lst, var_1) + -- fun_free_blocktype: `%%`(v_blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_7{v_labelidx : uN}: + `%%`(BR_instr(v_labelidx), $free_labelidx(v_labelidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_8{v_labelidx : uN}: + `%%`(BR_IF_instr(v_labelidx), $free_labelidx(v_labelidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_9{labelidx_lst : labelidx*, labelidx' : uN, var_0 : free}: + `%%`(BR_TABLE_instr(labelidx_lst, labelidx'), var_0 +++ $free_labelidx(labelidx')) + -- fun_free_list: `%%`($free_labelidx(v_labelidx)*{v_labelidx <- labelidx_lst}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_10{v_labelidx : uN}: + `%%`(BR_ON_NULL_instr(v_labelidx), $free_labelidx(v_labelidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_11{v_labelidx : uN}: + `%%`(BR_ON_NON_NULL_instr(v_labelidx), $free_labelidx(v_labelidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_12{v_labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_instr(v_labelidx, reftype_1, reftype_2), $free_labelidx(v_labelidx) +++ var_0 +++ var_1) + -- fun_free_reftype: `%%`(reftype_2, var_1) + -- fun_free_reftype: `%%`(reftype_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_13{v_labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_FAIL_instr(v_labelidx, reftype_1, reftype_2), $free_labelidx(v_labelidx) +++ var_0 +++ var_1) + -- fun_free_reftype: `%%`(reftype_2, var_1) + -- fun_free_reftype: `%%`(reftype_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_14{v_funcidx : uN}: + `%%`(CALL_instr(v_funcidx), $free_funcidx(v_funcidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_15{v_typeuse : typeuse, var_0 : free}: + `%%`(CALL_REF_instr(v_typeuse), var_0) + -- fun_free_typeuse: `%%`(v_typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_16{v_tableidx : uN, v_typeuse : typeuse, var_0 : free}: + `%%`(CALL_INDIRECT_instr(v_tableidx, v_typeuse), $free_tableidx(v_tableidx) +++ var_0) + -- fun_free_typeuse: `%%`(v_typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_17: + `%%`(RETURN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_18{v_funcidx : uN}: + `%%`(RETURN_CALL_instr(v_funcidx), $free_funcidx(v_funcidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_19{v_typeuse : typeuse, var_0 : free}: + `%%`(RETURN_CALL_REF_instr(v_typeuse), var_0) + -- fun_free_typeuse: `%%`(v_typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_20{v_tableidx : uN, v_typeuse : typeuse, var_0 : free}: + `%%`(RETURN_CALL_INDIRECT_instr(v_tableidx, v_typeuse), $free_tableidx(v_tableidx) +++ var_0) + -- fun_free_typeuse: `%%`(v_typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_21{v_tagidx : uN}: + `%%`(THROW_instr(v_tagidx), $free_tagidx(v_tagidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_22: + `%%`(THROW_REF_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_23{v_blocktype : blocktype, catch_lst : catch*, instr_lst : instr*, var_3_lst : free*, var_2 : free, var_1 : free, var_0 : free}: + `%%`(TRY_TABLE_instr(v_blocktype, mk_list_list(catch_lst), instr_lst), var_0 +++ var_1 +++ var_2) + -- (fun_free_instr: `%%`(v_instr, var_3))*{var_3 <- var_3_lst, v_instr <- instr_lst} + -- if (|var_3_lst| = |instr_lst|) + -- fun_free_list: `%%`(var_3_lst, var_2) + -- fun_free_list: `%%`($free_catch(v_catch)*{v_catch <- catch_lst}, var_1) + -- fun_free_blocktype: `%%`(v_blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_24{v_numtype : numtype, numlit : num_}: + `%%`(CONST_instr(v_numtype, numlit), $free_numtype(v_numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_25{v_numtype : numtype, unop : unop_}: + `%%`(UNOP_instr(v_numtype, unop), $free_numtype(v_numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_26{v_numtype : numtype, binop : binop_}: + `%%`(BINOP_instr(v_numtype, binop), $free_numtype(v_numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_27{v_numtype : numtype, testop : testop_}: + `%%`(TESTOP_instr(v_numtype, testop), $free_numtype(v_numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_28{v_numtype : numtype, relop : relop_}: + `%%`(RELOP_instr(v_numtype, relop), $free_numtype(v_numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_29{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__}: + `%%`(CVTOP_instr(numtype_1, numtype_2, cvtop), $free_numtype(numtype_1) +++ $free_numtype(numtype_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_30{v_vectype : vectype, veclit : uN}: + `%%`(VCONST_instr(v_vectype, veclit), $free_vectype(v_vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_31{v_vectype : vectype, v_vvunop : vvunop}: + `%%`(VVUNOP_instr(v_vectype, v_vvunop), $free_vectype(v_vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_32{v_vectype : vectype, v_vvbinop : vvbinop}: + `%%`(VVBINOP_instr(v_vectype, v_vvbinop), $free_vectype(v_vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_33{v_vectype : vectype, v_vvternop : vvternop}: + `%%`(VVTERNOP_instr(v_vectype, v_vvternop), $free_vectype(v_vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_34{v_vectype : vectype, v_vvtestop : vvtestop}: + `%%`(VVTESTOP_instr(v_vectype, v_vvtestop), $free_vectype(v_vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_35{v_shape : shape, vunop : vunop_}: + `%%`(VUNOP_instr(v_shape, vunop), $free_shape(v_shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_36{v_shape : shape, vbinop : vbinop_}: + `%%`(VBINOP_instr(v_shape, vbinop), $free_shape(v_shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_37{v_shape : shape, vternop : vternop_}: + `%%`(VTERNOP_instr(v_shape, vternop), $free_shape(v_shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_38{v_shape : shape, vtestop : vtestop_}: + `%%`(VTESTOP_instr(v_shape, vtestop), $free_shape(v_shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_39{v_shape : shape, vrelop : vrelop_}: + `%%`(VRELOP_instr(v_shape, vrelop), $free_shape(v_shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_40{v_ishape : ishape, vshiftop : vshiftop_}: + `%%`(VSHIFTOP_instr(v_ishape, vshiftop), $free_shape($proj_ishape_0(v_ishape).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_41{v_ishape : ishape}: + `%%`(VBITMASK_instr(v_ishape), $free_shape($proj_ishape_0(v_ishape).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_42{v_bshape : bshape, vswizzlop : vswizzlop_}: + `%%`(VSWIZZLOP_instr(v_bshape, vswizzlop), $free_shape($proj_bshape_0(v_bshape).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_43{v_bshape : bshape, laneidx_lst : laneidx*}: + `%%`(VSHUFFLE_instr(v_bshape, laneidx_lst), $free_shape($proj_bshape_0(v_bshape).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_44{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__}: + `%%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop), $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_45{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__}: + `%%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop), $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_46{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__}: + `%%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop), $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_47{ishape_1 : ishape, ishape_2 : ishape, v_sx : sx}: + `%%`(VNARROW_instr(ishape_1, ishape_2, v_sx), $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_48{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__}: + `%%`(VCVTOP_instr(shape_1, shape_2, vcvtop), $free_shape(shape_1) +++ $free_shape(shape_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_49{v_shape : shape}: + `%%`(VSPLAT_instr(v_shape), $free_shape(v_shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_50{v_shape : shape, sx_opt : sx?, v_laneidx : uN}: + `%%`(VEXTRACT_LANE_instr(v_shape, sx_opt, v_laneidx), $free_shape(v_shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_51{v_shape : shape, v_laneidx : uN}: + `%%`(VREPLACE_LANE_instr(v_shape, v_laneidx), $free_shape(v_shape)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_52{v_heaptype : heaptype, var_0 : free}: + `%%`(REF_NULL_instr(v_heaptype), var_0) + -- fun_free_heaptype: `%%`(v_heaptype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_53: + `%%`(REF_IS_NULL_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_54: + `%%`(REF_AS_NON_NULL_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_55: + `%%`(REF_EQ_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_56{v_reftype : reftype, var_0 : free}: + `%%`(REF_TEST_instr(v_reftype), var_0) + -- fun_free_reftype: `%%`(v_reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_57{v_reftype : reftype, var_0 : free}: + `%%`(REF_CAST_instr(v_reftype), var_0) + -- fun_free_reftype: `%%`(v_reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_58{v_funcidx : uN}: + `%%`(REF_FUNC_instr(v_funcidx), $free_funcidx(v_funcidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_59: + `%%`(REF_I31_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_60{v_sx : sx}: + `%%`(I31_GET_instr(v_sx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_61{v_typeidx : uN}: + `%%`(STRUCT_NEW_instr(v_typeidx), $free_typeidx(v_typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_62{v_typeidx : uN}: + `%%`(STRUCT_NEW_DEFAULT_instr(v_typeidx), $free_typeidx(v_typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_63{sx_opt : sx?, v_typeidx : uN, v_u32 : uN}: + `%%`(STRUCT_GET_instr(sx_opt, v_typeidx, v_u32), $free_typeidx(v_typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_64{v_typeidx : uN, v_u32 : uN}: + `%%`(STRUCT_SET_instr(v_typeidx, v_u32), $free_typeidx(v_typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_65{v_typeidx : uN}: + `%%`(ARRAY_NEW_instr(v_typeidx), $free_typeidx(v_typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_66{v_typeidx : uN}: + `%%`(ARRAY_NEW_DEFAULT_instr(v_typeidx), $free_typeidx(v_typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_67{v_typeidx : uN, v_u32 : uN}: + `%%`(ARRAY_NEW_FIXED_instr(v_typeidx, v_u32), $free_typeidx(v_typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_68{v_typeidx : uN, v_dataidx : uN}: + `%%`(ARRAY_NEW_DATA_instr(v_typeidx, v_dataidx), $free_typeidx(v_typeidx) +++ $free_dataidx(v_dataidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_69{v_typeidx : uN, v_elemidx : uN}: + `%%`(ARRAY_NEW_ELEM_instr(v_typeidx, v_elemidx), $free_typeidx(v_typeidx) +++ $free_elemidx(v_elemidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_70{sx_opt : sx?, v_typeidx : uN}: + `%%`(ARRAY_GET_instr(sx_opt, v_typeidx), $free_typeidx(v_typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_71{v_typeidx : uN}: + `%%`(ARRAY_SET_instr(v_typeidx), $free_typeidx(v_typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_72: + `%%`(ARRAY_LEN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_73{v_typeidx : uN}: + `%%`(ARRAY_FILL_instr(v_typeidx), $free_typeidx(v_typeidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_74{typeidx_1 : uN, typeidx_2 : uN}: + `%%`(ARRAY_COPY_instr(typeidx_1, typeidx_2), $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_75{v_typeidx : uN, v_dataidx : uN}: + `%%`(ARRAY_INIT_DATA_instr(v_typeidx, v_dataidx), $free_typeidx(v_typeidx) +++ $free_dataidx(v_dataidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_76{v_typeidx : uN, v_elemidx : uN}: + `%%`(ARRAY_INIT_ELEM_instr(v_typeidx, v_elemidx), $free_typeidx(v_typeidx) +++ $free_elemidx(v_elemidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_77: + `%%`(EXTERN_CONVERT_ANY_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_78: + `%%`(ANY_CONVERT_EXTERN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_79{v_localidx : uN}: + `%%`(LOCAL_GET_instr(v_localidx), $free_localidx(v_localidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_80{v_localidx : uN}: + `%%`(LOCAL_SET_instr(v_localidx), $free_localidx(v_localidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_81{v_localidx : uN}: + `%%`(LOCAL_TEE_instr(v_localidx), $free_localidx(v_localidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_82{v_globalidx : uN}: + `%%`(GLOBAL_GET_instr(v_globalidx), $free_globalidx(v_globalidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_83{v_globalidx : uN}: + `%%`(GLOBAL_SET_instr(v_globalidx), $free_globalidx(v_globalidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_84{v_tableidx : uN}: + `%%`(TABLE_GET_instr(v_tableidx), $free_tableidx(v_tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_85{v_tableidx : uN}: + `%%`(TABLE_SET_instr(v_tableidx), $free_tableidx(v_tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_86{v_tableidx : uN}: + `%%`(TABLE_SIZE_instr(v_tableidx), $free_tableidx(v_tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_87{v_tableidx : uN}: + `%%`(TABLE_GROW_instr(v_tableidx), $free_tableidx(v_tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_88{v_tableidx : uN}: + `%%`(TABLE_FILL_instr(v_tableidx), $free_tableidx(v_tableidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_89{tableidx_1 : uN, tableidx_2 : uN}: + `%%`(TABLE_COPY_instr(tableidx_1, tableidx_2), $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_90{v_tableidx : uN, v_elemidx : uN}: + `%%`(TABLE_INIT_instr(v_tableidx, v_elemidx), $free_tableidx(v_tableidx) +++ $free_elemidx(v_elemidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_91{v_elemidx : uN}: + `%%`(ELEM_DROP_instr(v_elemidx), $free_elemidx(v_elemidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_92{v_numtype : numtype, loadop_opt : loadop_?, v_memidx : uN, v_memarg : memarg}: + `%%`(LOAD_instr(v_numtype, loadop_opt, v_memidx, v_memarg), $free_numtype(v_numtype) +++ $free_memidx(v_memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_93{v_numtype : numtype, storeop_opt : storeop_?, v_memidx : uN, v_memarg : memarg}: + `%%`(STORE_instr(v_numtype, storeop_opt, v_memidx, v_memarg), $free_numtype(v_numtype) +++ $free_memidx(v_memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_94{v_vectype : vectype, vloadop_opt : vloadop_?, v_memidx : uN, v_memarg : memarg}: + `%%`(VLOAD_instr(v_vectype, vloadop_opt, v_memidx, v_memarg), $free_vectype(v_vectype) +++ $free_memidx(v_memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_95{v_vectype : vectype, v_sz : sz, v_memidx : uN, v_memarg : memarg, v_laneidx : uN}: + `%%`(VLOAD_LANE_instr(v_vectype, v_sz, v_memidx, v_memarg, v_laneidx), $free_vectype(v_vectype) +++ $free_memidx(v_memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_96{v_vectype : vectype, v_memidx : uN, v_memarg : memarg}: + `%%`(VSTORE_instr(v_vectype, v_memidx, v_memarg), $free_vectype(v_vectype) +++ $free_memidx(v_memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_97{v_vectype : vectype, v_sz : sz, v_memidx : uN, v_memarg : memarg, v_laneidx : uN}: + `%%`(VSTORE_LANE_instr(v_vectype, v_sz, v_memidx, v_memarg, v_laneidx), $free_vectype(v_vectype) +++ $free_memidx(v_memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_98{v_memidx : uN}: + `%%`(MEMORY_SIZE_instr(v_memidx), $free_memidx(v_memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_99{v_memidx : uN}: + `%%`(MEMORY_GROW_instr(v_memidx), $free_memidx(v_memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_100{v_memidx : uN}: + `%%`(MEMORY_FILL_instr(v_memidx), $free_memidx(v_memidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_101{memidx_1 : uN, memidx_2 : uN}: + `%%`(MEMORY_COPY_instr(memidx_1, memidx_2), $free_memidx(memidx_1) +++ $free_memidx(memidx_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_102{v_memidx : uN, v_dataidx : uN}: + `%%`(MEMORY_INIT_instr(v_memidx, v_dataidx), $free_memidx(v_memidx) +++ $free_dataidx(v_dataidx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule fun_free_instr_case_103{v_dataidx : uN}: + `%%`(DATA_DROP_instr(v_dataidx), $free_dataidx(v_dataidx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation fun_free_block: `%%`(instr*, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule fun_free_block_case_0{instr_lst : instr*, var_5_lst : free*, var_4_lst : free*, var_3 : free, var_2_lst : free*, var_1 : free, var_0 : labelidx*}: + `%%`(instr_lst, v_free[LABELS_free = var_0]) + -- let{v_free : free} v_free = var_1 + -- wf_free: `%`(var_3) + -- (wf_free: `%`(var_5))*{var_5 <- var_5_lst} + -- (fun_free_instr: `%%`(instr_7, var_5))*{var_5 <- var_5_lst, instr_7 <- instr_lst} + -- if (|var_5_lst| = |instr_lst|) + -- (fun_free_instr: `%%`(instr_6, var_4))*{var_4 <- var_4_lst, instr_6 <- instr_lst} + -- if (|var_4_lst| = |instr_lst|) + -- fun_free_list: `%%`(var_4_lst, var_3) + -- (fun_free_instr: `%%`(instr_5, var_2))*{var_2 <- var_2_lst, instr_5 <- instr_lst} + -- if (|var_2_lst| = |instr_lst|) + -- fun_free_list: `%%`(var_2_lst, var_1) + -- fun_shift_labelidxs: `%%`(v_free.LABELS_free, var_0) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 +relation free_instr_is_wf: `%%`(v_instr : instr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:420.6-420.17 + rule free_instr_is_wf_0{v_instr : instr, ret_val : free, var_0 : free}: + `%%`(v_instr, ret_val) + -- wf_instr: `%`(v_instr) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_instr: `%%`(v_instr, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 +relation free_block_is_wf: `%%`(var_0 : instr*, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.6-421.17 + rule free_block_is_wf_0{var_0 : instr*, ret_val : free, var_1 : free}: + `%%`(var_0, ret_val) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_free: `%`(ret_val) + -- fun_free_block: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_expr: `%%`(expr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_expr_case_0{instr_lst : instr*, var_1_lst : free*, var_0 : free}: + `%%`(instr_lst, var_0) + -- (fun_free_instr: `%%`(v_instr, var_1))*{var_1 <- var_1_lst, v_instr <- instr_lst} + -- if (|var_1_lst| = |instr_lst|) + -- fun_free_list: `%%`(var_1_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation free_expr_is_wf: `%%`(v_expr : expr, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule free_expr_is_wf_0{v_expr : expr, ret_val : free, var_0 : free}: + `%%`(v_expr, ret_val) + -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_expr: `%%`(v_expr, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elemmode = + | ACTIVE(v_tableidx : tableidx, v_expr : expr) + | PASSIVE + | DECLARE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elemmode: `%`(elemmode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_0{v_tableidx : tableidx, v_expr : expr}: + `%`(ACTIVE_elemmode(v_tableidx, v_expr)) + -- wf_uN: `%%`(32, v_tableidx) + -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_1: + `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_2: + `%`(DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax datamode = + | ACTIVE(v_memidx : memidx, v_expr : expr) + | PASSIVE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_datamode: `%`(datamode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_0{v_memidx : memidx, v_expr : expr}: + `%`(ACTIVE_datamode(v_memidx, v_expr)) + -- wf_uN: `%%`(32, v_memidx) + -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_1: + `%`(PASSIVE_datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax type = + | TYPE(v_rectype : rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax tag = + | TAG(v_tagtype : tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_tag: `%`(tag) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule tag_case_0{v_tagtype : tagtype}: + `%`(TAG_tag(v_tagtype)) + -- wf_typeuse: `%`(v_tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax global = + | GLOBAL(v_globaltype : globaltype, v_expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_global: `%`(global) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule global_case_0{v_globaltype : globaltype, v_expr : expr}: + `%`(GLOBAL_global(v_globaltype, v_expr)) + -- wf_globaltype: `%`(v_globaltype) + -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax mem = + | MEMORY(v_memtype : memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_mem: `%`(mem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule mem_case_0{v_memtype : memtype}: + `%`(MEMORY_mem(v_memtype)) + -- wf_memtype: `%`(v_memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax table = + | TABLE(v_tabletype : tabletype, v_expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_table: `%`(table) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule table_case_0{v_tabletype : tabletype, v_expr : expr}: + `%`(TABLE_table(v_tabletype, v_expr)) + -- wf_tabletype: `%`(v_tabletype) + -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax data = + | DATA(byte_lst : byte*, v_datamode : datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_data: `%`(data) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule data_case_0{byte_lst : byte*, v_datamode : datamode}: + `%`(DATA_data(byte_lst, v_datamode)) + -- (wf_byte: `%`(v_byte))*{v_byte <- byte_lst} + -- wf_datamode: `%`(v_datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax local = + | LOCAL(v_valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_local: `%`(local) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule local_case_0{v_valtype : valtype}: + `%`(LOCAL_local(v_valtype)) + -- wf_valtype: `%`(v_valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax func = + | FUNC(v_typeidx : typeidx, local_lst : local*, v_expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_func: `%`(func) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule func_case_0{v_typeidx : typeidx, local_lst : local*, v_expr : expr}: + `%`(FUNC_func(v_typeidx, local_lst, v_expr)) + -- wf_uN: `%%`(32, v_typeidx) + -- (wf_local: `%`(v_local))*{v_local <- local_lst} + -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elem = + | ELEM(v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elem: `%`(elem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elem_case_0{v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode}: + `%`(ELEM_elem(v_reftype, expr_lst, v_elemmode)) + -- wf_reftype: `%`(v_reftype) + -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr}*{v_expr <- expr_lst} + -- wf_elemmode: `%`(v_elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax start = + | START(v_funcidx : funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_start: `%`(start) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule start_case_0{v_funcidx : funcidx}: + `%`(START_start(v_funcidx)) + -- wf_uN: `%%`(32, v_funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax import = + | IMPORT(v_name : name, v_name : name, v_externtype : externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_import: `%`(import) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule import_case_0{v_name : name, name_0 : name, v_externtype : externtype}: + `%`(IMPORT_import(v_name, name_0, v_externtype)) + -- wf_name: `%`(v_name) + -- wf_name: `%`(name_0) + -- wf_externtype: `%`(v_externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax export = + | EXPORT(v_name : name, v_externidx : externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_export: `%`(export) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule export_case_0{v_name : name, v_externidx : externidx}: + `%`(EXPORT_export(v_name, v_externidx)) + -- wf_name: `%`(v_name) + -- wf_externidx: `%`(v_externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax module = + | MODULE(list(syntax type), list(syntax import), list(syntax tag), list(syntax global), list(syntax mem), list(syntax table), list(syntax func), list(syntax data), list(syntax elem), start_opt : start?, list(syntax export)) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_module: `%`(module) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule module_case_0{var_0 : list(syntax type), var_1 : list(syntax import), var_2 : list(syntax tag), var_3 : list(syntax global), var_4 : list(syntax mem), var_5 : list(syntax table), var_6 : list(syntax func), var_7 : list(syntax data), var_8 : list(syntax elem), start_opt : start?, var_9 : list(syntax export)}: + `%`(MODULE_module(var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, start_opt, var_9)) + -- (wf_start: `%`(v_start))?{v_start <- start_opt} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_type: `%%`(type, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_type_case_0{v_rectype : rectype, var_0 : free}: + `%%`(TYPE_type(v_rectype), var_0) + -- fun_free_rectype: `%%`(v_rectype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_type_is_wf: `%%`(v_type : type, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_type_is_wf_0{v_type : type, ret_val : free, var_0 : free}: + `%%`(v_type, ret_val) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_type: `%%`(v_type, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_tag: `%%`(tag, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_tag_case_0{v_tagtype : typeuse, var_0 : free}: + `%%`(TAG_tag(v_tagtype), var_0) + -- fun_free_tagtype: `%%`(v_tagtype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_tag_is_wf: `%%`(v_tag : tag, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_tag_is_wf_0{v_tag : tag, ret_val : free, var_0 : free}: + `%%`(v_tag, ret_val) + -- wf_tag: `%`(v_tag) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_tag: `%%`(v_tag, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_global: `%%`(global, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_global_case_0{v_globaltype : globaltype, v_expr : instr*, var_1 : free, var_0 : free}: + `%%`(GLOBAL_global(v_globaltype, v_expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(v_expr, var_1) + -- fun_free_globaltype: `%%`(v_globaltype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_global_is_wf: `%%`(v_global : global, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_global_is_wf_0{v_global : global, ret_val : free, var_0 : free}: + `%%`(v_global, ret_val) + -- wf_global: `%`(v_global) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_global: `%%`(v_global, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_mem(v_mem : mem) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_mem{v_memtype : memtype}(MEMORY_mem(v_memtype)) = $free_memtype(v_memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_mem_is_wf: `%%`(v_mem : mem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_mem_is_wf_0{v_mem : mem, ret_val : free}: + `%%`(v_mem, ret_val) + -- wf_mem: `%`(v_mem) + -- if (ret_val = $free_mem(v_mem)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_table: `%%`(table, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_table_case_0{v_tabletype : tabletype, v_expr : instr*, var_1 : free, var_0 : free}: + `%%`(TABLE_table(v_tabletype, v_expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(v_expr, var_1) + -- fun_free_tabletype: `%%`(v_tabletype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_table_is_wf: `%%`(v_table : table, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_table_is_wf_0{v_table : table, ret_val : free, var_0 : free}: + `%%`(v_table, ret_val) + -- wf_table: `%`(v_table) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_table: `%%`(v_table, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_local: `%%`(local, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_local_case_0{t : valtype, var_0 : free}: + `%%`(LOCAL_local(t), var_0) + -- fun_free_valtype: `%%`(t, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_local_is_wf: `%%`(v_local : local, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_local_is_wf_0{v_local : local, ret_val : free, var_0 : free}: + `%%`(v_local, ret_val) + -- wf_local: `%`(v_local) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_local: `%%`(v_local, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_func: `%%`(func, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_func_case_0{v_typeidx : uN, local_lst : local*, v_expr : instr*, var_2 : free, var_1_lst : free*, var_0 : free}: + `%%`(FUNC_func(v_typeidx, local_lst, v_expr), $free_typeidx(v_typeidx) +++ var_0 +++ var_2[LOCALS_free = []]) + -- fun_free_block: `%%`(v_expr, var_2) + -- (fun_free_local: `%%`(v_local, var_1))*{var_1 <- var_1_lst, v_local <- local_lst} + -- if (|var_1_lst| = |local_lst|) + -- fun_free_list: `%%`(var_1_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_func_is_wf: `%%`(v_func : func, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_func_is_wf_0{v_func : func, ret_val : free, var_0 : free}: + `%%`(v_func, ret_val) + -- wf_func: `%`(v_func) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_func: `%%`(v_func, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_datamode: `%%`(datamode, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_datamode_case_0{v_memidx : uN, v_expr : instr*, var_0 : free}: + `%%`(ACTIVE_datamode(v_memidx, v_expr), $free_memidx(v_memidx) +++ var_0) + -- fun_free_expr: `%%`(v_expr, var_0) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_datamode_case_1: + `%%`(PASSIVE_datamode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_datamode_is_wf: `%%`(v_datamode : datamode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_datamode_is_wf_0{v_datamode : datamode, ret_val : free, var_0 : free}: + `%%`(v_datamode, ret_val) + -- wf_datamode: `%`(v_datamode) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_datamode: `%%`(v_datamode, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_data: `%%`(data, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_data_case_0{byte_lst : byte*, v_datamode : datamode, var_0 : free}: + `%%`(DATA_data(byte_lst, v_datamode), var_0) + -- fun_free_datamode: `%%`(v_datamode, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_data_is_wf: `%%`(v_data : data, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_data_is_wf_0{v_data : data, ret_val : free, var_0 : free}: + `%%`(v_data, ret_val) + -- wf_data: `%`(v_data) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_data: `%%`(v_data, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_elemmode: `%%`(elemmode, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_0{v_tableidx : uN, v_expr : instr*, var_0 : free}: + `%%`(ACTIVE_elemmode(v_tableidx, v_expr), $free_tableidx(v_tableidx) +++ var_0) + -- fun_free_expr: `%%`(v_expr, var_0) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_1: + `%%`(PASSIVE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_2: + `%%`(DECLARE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elemmode_is_wf: `%%`(v_elemmode : elemmode, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elemmode_is_wf_0{v_elemmode : elemmode, ret_val : free, var_0 : free}: + `%%`(v_elemmode, ret_val) + -- wf_elemmode: `%`(v_elemmode) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_elemmode: `%%`(v_elemmode, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_elem: `%%`(elem, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elem_case_0{v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode, var_3 : free, var_2_lst : free*, var_1 : free, var_0 : free}: + `%%`(ELEM_elem(v_reftype, expr_lst, v_elemmode), var_0 +++ var_1 +++ var_3) + -- fun_free_elemmode: `%%`(v_elemmode, var_3) + -- (fun_free_expr: `%%`(v_expr, var_2))*{var_2 <- var_2_lst, v_expr <- expr_lst} + -- if (|var_2_lst| = |expr_lst|) + -- fun_free_list: `%%`(var_2_lst, var_1) + -- fun_free_reftype: `%%`(v_reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_elem_is_wf: `%%`(v_elem : elem, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_elem_is_wf_0{v_elem : elem, ret_val : free, var_0 : free}: + `%%`(v_elem, ret_val) + -- wf_elem: `%`(v_elem) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_elem: `%%`(v_elem, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_start(v_start : start) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_start{v_funcidx : uN}(START_start(v_funcidx)) = $free_funcidx(v_funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_start_is_wf: `%%`(v_start : start, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_start_is_wf_0{v_start : start, ret_val : free}: + `%%`(v_start, ret_val) + -- wf_start: `%`(v_start) + -- if (ret_val = $free_start(v_start)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_import: `%%`(import, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_import_case_0{name_1 : name, name_2 : name, v_externtype : externtype, var_0 : free}: + `%%`(IMPORT_import(name_1, name_2, v_externtype), var_0) + -- fun_free_externtype: `%%`(v_externtype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_import_is_wf: `%%`(v_import : import, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_import_is_wf_0{v_import : import, ret_val : free, var_0 : free}: + `%%`(v_import, ret_val) + -- wf_import: `%`(v_import) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_import: `%%`(v_import, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_export(v_export : export) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_export{v_name : name, v_externidx : externidx}(EXPORT_export(v_name, v_externidx)) = $free_externidx(v_externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_export_is_wf: `%%`(v_export : export, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_export_is_wf_0{v_export : export, ret_val : free}: + `%%`(v_export, ret_val) + -- wf_export: `%`(v_export) + -- if (ret_val = $free_export(v_export)) + -- wf_free: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_module: `%%`(module, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_module_case_0{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, var_17 : free, var_16_lst : free*, var_15 : free, var_14_lst : free*, var_13 : free, var_12_lst : free*, var_11 : free, var_10_lst : free*, var_9 : free, var_8_lst : free*, var_7 : free, var_6 : free, var_5_lst : free*, var_4 : free, var_3_lst : free*, var_2 : free, var_1_lst : free*, var_0 : free}: + `%%`(MODULE_module(mk_list_list(type_lst), mk_list_list(import_lst), mk_list_list(tag_lst), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list(func_lst), mk_list_list(data_lst), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst)), var_0 +++ var_2 +++ var_4 +++ var_6 +++ var_7 +++ var_9 +++ var_11 +++ var_13 +++ $free_opt($free_start(v_start)?{v_start <- start_opt}) +++ var_15 +++ var_17) + -- fun_free_list: `%%`($free_export(v_export)*{v_export <- export_lst}, var_17) + -- (fun_free_import: `%%`(v_import, var_16))*{var_16 <- var_16_lst, v_import <- import_lst} + -- if (|var_16_lst| = |import_lst|) + -- fun_free_list: `%%`(var_16_lst, var_15) + -- (fun_free_elem: `%%`(v_elem, var_14))*{var_14 <- var_14_lst, v_elem <- elem_lst} + -- if (|var_14_lst| = |elem_lst|) + -- fun_free_list: `%%`(var_14_lst, var_13) + -- (fun_free_data: `%%`(v_data, var_12))*{var_12 <- var_12_lst, v_data <- data_lst} + -- if (|var_12_lst| = |data_lst|) + -- fun_free_list: `%%`(var_12_lst, var_11) + -- (fun_free_func: `%%`(v_func, var_10))*{var_10 <- var_10_lst, v_func <- func_lst} + -- if (|var_10_lst| = |func_lst|) + -- fun_free_list: `%%`(var_10_lst, var_9) + -- (fun_free_table: `%%`(v_table, var_8))*{var_8 <- var_8_lst, v_table <- table_lst} + -- if (|var_8_lst| = |table_lst|) + -- fun_free_list: `%%`(var_8_lst, var_7) + -- fun_free_list: `%%`($free_mem(v_mem)*{v_mem <- mem_lst}, var_6) + -- (fun_free_global: `%%`(v_global, var_5))*{var_5 <- var_5_lst, v_global <- global_lst} + -- if (|var_5_lst| = |global_lst|) + -- fun_free_list: `%%`(var_5_lst, var_4) + -- (fun_free_tag: `%%`(v_tag, var_3))*{var_3 <- var_3_lst, v_tag <- tag_lst} + -- if (|var_3_lst| = |tag_lst|) + -- fun_free_list: `%%`(var_3_lst, var_2) + -- (fun_free_type: `%%`(v_type, var_1))*{var_1 <- var_1_lst, v_type <- type_lst} + -- if (|var_1_lst| = |type_lst|) + -- fun_free_list: `%%`(var_1_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation free_module_is_wf: `%%`(v_module : module, ret_val : free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule free_module_is_wf_0{v_module : module, ret_val : free, var_0 : free}: + `%%`(v_module, ret_val) + -- wf_module: `%`(v_module) + -- if (ret_val = var_0) + -- wf_free: `%`(ret_val) + -- fun_free_module: `%%`(v_module, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_funcidx_module: `%%`(module, funcidx*) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_funcidx_module_case_0{v_module : module, var_0 : free}: + `%%`(v_module, var_0.FUNCS_free) + -- fun_free_module: `%%`(v_module, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_dataidx_funcs: `%%`(func*, dataidx*) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_dataidx_funcs_case_0{func_lst : func*, var_1_lst : free*, var_0 : free}: + `%%`(func_lst, var_0.DATAS_free) + -- (fun_free_func: `%%`(v_func, var_1))*{var_1 <- var_1_lst, v_func <- func_lst} + -- if (|var_1_lst| = |func_lst|) + -- fun_free_list: `%%`(var_1_lst, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax init = + | SET + | UNSET + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax localtype = + | mk_localtype(v_init : init, v_valtype : valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_localtype: `%`(localtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule localtype_case_0{v_init : init, v_valtype : valtype}: + `%`(mk_localtype_localtype(v_init, v_valtype)) + -- wf_valtype: `%`(v_valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax instrtype = + | mk_instrtype(v_resulttype : resulttype, localidx_lst : localidx*, v_resulttype : resulttype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_instrtype: `%`(instrtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule instrtype_case_0{v_resulttype : resulttype, localidx_lst : localidx*, resulttype_0 : resulttype}: + `%`(mk_instrtype_instrtype(v_resulttype, localidx_lst, resulttype_0)) + -- (wf_uN: `%%`(32, v_localidx))*{v_localidx <- localidx_lst} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax context = +{ + TYPES deftype*, + TAGS tagtype*, + GLOBALS globaltype*, + MEMS memtype*, + TABLES tabletype*, + FUNCS deftype*, + DATAS datatype*, + ELEMS elemtype*, + LOCALS localtype*, + LABELS resulttype*, + RETURN resulttype?, + REFS funcidx*, + RECS subtype* +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_context: `%`(context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule context_case_{var_0 : deftype*, var_1 : tagtype*, var_2 : globaltype*, var_3 : memtype*, var_4 : tabletype*, var_5 : deftype*, var_6 : datatype*, var_7 : elemtype*, var_8 : localtype*, var_9 : resulttype*, var_10 : resulttype?, var_11 : funcidx*, var_12 : subtype*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, RETURN var_10, REFS var_11, RECS var_12}) + -- (wf_typeuse: `%`(var_1))*{var_1 <- var_1} + -- (wf_globaltype: `%`(var_2))*{var_2 <- var_2} + -- (wf_memtype: `%`(var_3))*{var_3 <- var_3} + -- (wf_tabletype: `%`(var_4))*{var_4 <- var_4} + -- (wf_reftype: `%`(var_7))*{var_7 <- var_7} + -- (wf_localtype: `%`(var_8))*{var_8 <- var_8} + -- (wf_uN: `%%`(32, var_11))*{var_11 <- var_11} + -- (wf_subtype: `%`(var_12))*{var_12 <- var_12} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_with_locals_before_fun_with_locals_case_2: `%%%`(context, localidx*, localtype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_with_locals_case_1{C : context, x_1 : uN, x_lst : idx*, lct_1 : localtype, lct_lst : localtype*, var_0 : context?}: + `%%%`(C, [x_1] ++ x_lst, [lct_1] ++ lct_lst) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_with_locals_case_0{C : context}: + `%%%`(C, [], []) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation fun_with_locals: `%%%%`(context, localidx*, localtype*, context?) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_0{C : context}: + `%%%%`(C, [], [], ?(C)) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_1{C : context, x_1 : uN, x_lst : idx*, lct_1 : localtype, lct_lst : localtype*, var_0 : context?}: + `%%%%`(C, [x_1] ++ x_lst, [lct_1] ++ lct_lst, var_0) + -- fun_with_locals: `%%%%`(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x_lst, lct_lst, var_0) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule fun_with_locals_case_2{x0 : context, x1 : localidx*, x2 : localtype*}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_with_locals_before_fun_with_locals_case_2: `%%%`(x0, x1, x2) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 +relation with_locals_is_wf: `%%%%`(v_context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.6-49.18 + rule with_locals_is_wf_0{v_context : context, var_0 : localidx*, var_1 : localtype*, ret_val : context, var_2 : context?}: + `%%%%`(v_context, var_0, var_1, ret_val) + -- wf_context: `%`(v_context) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_localtype: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = !(var_2)) + -- if (var_2 =/= ?()) + -- wf_context: `%`(ret_val) + -- fun_with_locals: `%%%%`(v_context, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 +relation fun_clos_deftypes: `%%`(deftype*, deftype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 + rule fun_clos_deftypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.6-62.20 + rule fun_clos_deftypes_case_1{dt_lst : deftype*, dt_n : deftype, var_1 : deftype*, var_0 : deftype}: + `%%`(dt_lst ++ [dt_n], dt'_lst ++ [var_0]) + -- let{dt'_lst : deftype*} dt'_lst = var_1 + -- fun_clos_deftypes: `%%`(dt_lst, var_1) + -- fun_subst_all_deftype: `%%%`(dt_n, $typeuse_deftype(dt')*{dt' <- dt'_lst}, var_0) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_valtype: `%%%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_valtype_case_0{C : context, t : valtype, var_1 : deftype*, var_0 : valtype}: + `%%%`(C, t, var_0) + -- let{dt_lst : deftype*} dt_lst = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_valtype_is_wf: `%%%`(v_context : context, v_valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_valtype_is_wf_0{v_context : context, v_valtype : valtype, ret_val : valtype, var_0 : valtype}: + `%%%`(v_context, v_valtype, ret_val) + -- wf_context: `%`(v_context) + -- wf_valtype: `%`(v_valtype) + -- if (ret_val = var_0) + -- wf_valtype: `%`(ret_val) + -- fun_clos_valtype: `%%%`(v_context, v_valtype, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_deftype: `%%%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_deftype_case_0{C : context, dt : deftype, var_1 : deftype*, var_0 : deftype}: + `%%%`(C, dt, var_0) + -- let{dt'_lst : deftype*} dt'_lst = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_deftype: `%%%`(dt, $typeuse_deftype(dt')*{dt' <- dt'_lst}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_tagtype: `%%%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_tagtype_case_0{C : context, jt : typeuse, var_1 : deftype*, var_0 : tagtype}: + `%%%`(C, jt, var_0) + -- let{dt_lst : deftype*} dt_lst = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_tagtype: `%%%`(jt, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_externtype: `%%%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_externtype_case_0{C : context, xt : externtype, var_1 : deftype*, var_0 : externtype}: + `%%%`(C, xt, var_0) + -- let{dt_lst : deftype*} dt_lst = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_externtype: `%%%`(xt, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_externtype_is_wf: `%%%`(v_context : context, v_externtype : externtype, ret_val : externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_externtype_is_wf_0{v_context : context, v_externtype : externtype, ret_val : externtype, var_0 : externtype}: + `%%%`(v_context, v_externtype, ret_val) + -- wf_context: `%`(v_context) + -- wf_externtype: `%`(v_externtype) + -- if (ret_val = var_0) + -- wf_externtype: `%`(ret_val) + -- fun_clos_externtype: `%%%`(v_context, v_externtype, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_moduletype: `%%%`(context, moduletype, moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_moduletype_case_0{C : context, mmt : moduletype, var_1 : deftype*, var_0 : moduletype}: + `%%%`(C, mmt, var_0) + -- let{dt_lst : deftype*} dt_lst = var_1 + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_moduletype: `%%%`(mmt, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation clos_moduletype_is_wf: `%%%`(v_context : context, v_moduletype : moduletype, ret_val : moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule clos_moduletype_is_wf_0{v_context : context, v_moduletype : moduletype, ret_val : moduletype, var_0 : moduletype}: + `%%%`(v_context, v_moduletype, ret_val) + -- wf_context: `%`(v_context) + -- wf_moduletype: `%`(v_moduletype) + -- if (ret_val = var_0) + -- wf_moduletype: `%`(ret_val) + -- fun_clos_moduletype: `%%%`(v_context, v_moduletype, var_0) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Numtype_ok: `%|-%:OK`(context, numtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mk_Numtype_ok{C : context, v_numtype : numtype}: + `%|-%:OK`(C, v_numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Vectype_ok: `%|-%:OK`(context, vectype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mk_Vectype_ok{C : context, v_vectype : vectype}: + `%|-%:OK`(C, v_vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypenat = + | OK(nat) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Packtype_ok: `%|-%:OK`(context, packtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mk_Packtype_ok{C : context, v_packtype : packtype}: + `%|-%:OK`(C, v_packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mk_Packtype_sub{C : context, v_packtype : packtype}: + `%|-%<:%`(C, v_packtype, v_packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mk_Numtype_sub{C : context, v_numtype : numtype}: + `%|-%<:%`(C, v_numtype, v_numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand: `%~~%`(deftype, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mk_Expand{v_deftype : deftype, v_comptype : comptype, final_opt : final?, typeuse_lst : typeuse*, var_0 : subtype}: + `%~~%`(v_deftype, v_comptype) + -- if (var_0 = SUB_subtype(final_opt, typeuse_lst, v_comptype)) + -- wf_subtype: `%`(var_0) + -- wf_subtype: `%`(SUB_subtype(final_opt, typeuse_lst, v_comptype)) + -- fun_unrolldt: `%%`(v_deftype, var_0) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mk_Vectype_sub{C : context, v_vectype : vectype}: + `%|-%<:%`(C, v_vectype, v_vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $before(v_typeuse : typeuse, nat : nat) : bool + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{j : nat, i : nat}(REC_typeuse(j), i) = (j < i) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{v_typeuse : typeuse, i : nat}(v_typeuse, i) = true + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation fun_unrollht_: `%%%`(context, heaptype, subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht__case_0{v_rectype : rectype, v_n : n, C : context, var_0 : subtype}: + `%%%`(C, _DEF_heaptype(v_rectype, v_n), var_0) + -- fun_unrolldt: `%%`(_DEF_deftype(v_rectype, v_n), var_0) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht__case_1{C : context, v_typeidx : uN, var_0 : subtype}: + `%%%`(C, _IDX_heaptype(v_typeidx), var_0) + -- fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(v_typeidx).0], var_0) + -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht__case_2{C : context, i : nat}: + `%%%`(C, REC_heaptype(i), C.RECS_context[i]) + -- if (i < |C.RECS_context|) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation unrollht__is_wf: `%%%`(v_context : context, v_heaptype : heaptype, ret_val : subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule unrollht__is_wf_0{v_context : context, v_heaptype : heaptype, ret_val : subtype, var_0 : subtype}: + `%%%`(v_context, v_heaptype, ret_val) + -- wf_context: `%`(v_context) + -- wf_heaptype: `%`(v_heaptype) + -- if (ret_val = var_0) + -- wf_subtype: `%`(ret_val) + -- fun_unrollht_: `%%%`(v_context, v_heaptype, var_0) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 +relation Heaptype_ok: `%|-%:OK`(context, heaptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 + rule abs{C : context, v_absheaptype : absheaptype}: + `%|-%:OK`(C, $heaptype_absheaptype(v_absheaptype)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 + rule typeuse{C : context, v_typeuse : typeuse}: + `%|-%:OK`(C, $heaptype_typeuse(v_typeuse)) + -- Typeuse_ok: `%|-%:OK`(C, v_typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(v_typeuse) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 +relation Reftype_ok: `%|-%:OK`(context, reftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:30.1-32.37 + rule mk_Reftype_ok{C : context, v_heaptype : heaptype}: + `%|-%:OK`(C, REF_reftype(?(NULL_null), v_heaptype)) + -- Heaptype_ok: `%|-%:OK`(C, v_heaptype) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), v_heaptype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 +relation Valtype_ok: `%|-%:OK`(context, valtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:34.1-36.35 + rule num{C : context, v_numtype : numtype}: + `%|-%:OK`(C, $valtype_numtype(v_numtype)) + -- Numtype_ok: `%|-%:OK`(C, v_numtype) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 + rule vec{C : context, v_vectype : vectype}: + `%|-%:OK`(C, $valtype_vectype(v_vectype)) + -- Vectype_ok: `%|-%:OK`(C, v_vectype) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 + rule ref{C : context, v_reftype : reftype}: + `%|-%:OK`(C, $valtype_reftype(v_reftype)) + -- Reftype_ok: `%|-%:OK`(C, v_reftype) + -- wf_context: `%`(C) + -- wf_reftype: `%`(v_reftype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 +relation Typeuse_ok: `%|-%:OK`(context, typeuse) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:106.1-108.30 + rule typeidx{C : context, v_typeidx : typeidx, dt : deftype}: + `%|-%:OK`(C, _IDX_typeuse(v_typeidx)) + -- if (C.TYPES_context[$proj_uN_0(v_typeidx).0] = dt) + -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(v_typeidx)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 + rule rec{C : context, i : n, st : subtype}: + `%|-%:OK`(C, REC_typeuse(i)) + -- if (C.RECS_context[i] = st) + -- if (i < |C.RECS_context|) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 + rule deftype{C : context, v_deftype : deftype}: + `%|-%:OK`(C, $typeuse_deftype(v_deftype)) + -- Deftype_ok: `%|-%:OK`(C, v_deftype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 +relation Resulttype_ok: `%|-%:OK`(context, resulttype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:60.1-62.32 + rule mk_Resulttype_ok{C : context, t_lst : valtype*}: + `%|-%:OK`(C, mk_list_resulttype(t_lst)) + -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- t_lst} + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- t_lst} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 +relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:130.1-132.43 + rule mk_Fieldtype_ok{C : context, v_storagetype : storagetype}: + `%|-%:OK`(C, mk_fieldtype_fieldtype(?(MUT_mut), v_storagetype)) + -- Storagetype_ok: `%|-%:OK`(C, v_storagetype) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(MUT_mut), v_storagetype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 +relation Storagetype_ok: `%|-%:OK`(context, storagetype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:122.1-124.35 + rule val{C : context, v_valtype : valtype}: + `%|-%:OK`(C, $storagetype_valtype(v_valtype)) + -- Valtype_ok: `%|-%:OK`(C, v_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(v_valtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 + rule pack{C : context, v_packtype : packtype}: + `%|-%:OK`(C, $storagetype_packtype(v_packtype)) + -- Packtype_ok: `%|-%:OK`(C, v_packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 +relation Comptype_ok: `%|-%:OK`(context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:135.1-137.42 + rule struct{C : context, fieldtype_lst : fieldtype*}: + `%|-%:OK`(C, STRUCT_comptype(mk_list_list(fieldtype_lst))) + -- (Fieldtype_ok: `%|-%:OK`(C, v_fieldtype))*{v_fieldtype <- fieldtype_lst} + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(fieldtype_lst))) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 + rule array{C : context, v_fieldtype : fieldtype}: + `%|-%:OK`(C, ARRAY_comptype(v_fieldtype)) + -- Fieldtype_ok: `%|-%:OK`(C, v_fieldtype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(v_fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 + rule func{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: + `%|-%:OK`(C, `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_1_lst)) + -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_2_lst)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 +relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:167.1-176.49 + rule mk_Subtype_ok2{C : context, typeuse_lst : typeuse*, v_comptype : comptype, i : nat, comptype'_lst : comptype*, typeuse'_lst_lst : typeuse**, var_0_lst : subtype*}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse_lst, v_comptype), OK_oktypenat(i)) + -- if (|typeuse_lst| <= 1) + -- (Typeuse_ok: `%|-%:OK`(C, v_typeuse))*{v_typeuse <- typeuse_lst} + -- (if $before(v_typeuse, i))*{v_typeuse <- typeuse_lst} + -- (if (var_0 = SUB_subtype(?(), typeuse'_lst, comptype')))*{var_0 <- var_0_lst, comptype' <- comptype'_lst, typeuse'_lst <- typeuse'_lst_lst} + -- if (|var_0_lst| = |comptype'_lst|) + -- if (|var_0_lst| = |typeuse'_lst_lst|) + -- Comptype_ok: `%|-%:OK`(C, v_comptype) + -- (Comptype_sub: `%|-%<:%`(C, v_comptype, comptype'))*{comptype' <- comptype'_lst} + -- wf_context: `%`(C) + -- (wf_subtype: `%`(var_0))*{var_0 <- var_0_lst} + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse_lst, v_comptype)) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'_lst, comptype')))*{comptype' <- comptype'_lst, typeuse'_lst <- typeuse'_lst_lst} + -- if (|comptype'_lst| = |typeuse'_lst_lst|) + -- (fun_unrollht_: `%%%`(C, $heaptype_typeuse(v_typeuse), var_0))*{var_0 <- var_0_lst, v_typeuse <- typeuse_lst} + -- if (|var_0_lst| = |typeuse_lst|) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 +relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 + rule empty{C : context, i : nat}: + `%|-%:%`(C, REC_rectype(mk_list_list([])), OK_oktypenat(i)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 + rule cons{C : context, subtype_1 : subtype, subtype_lst : subtype*, i : nat}: + `%|-%:%`(C, REC_rectype(mk_list_list([subtype_1] ++ subtype_lst)), OK_oktypenat(i)) + -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypenat(i)) + -- Rectype_ok2: `%|-%:%`(C, REC_rectype(mk_list_list(subtype_lst)), OK_oktypenat((i + 1))) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(v_subtype))*{v_subtype <- subtype_lst} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 +relation Deftype_ok: `%|-%:OK`(context, deftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:197.1-201.14 + rule mk_Deftype_ok{C : context, v_rectype : rectype, i : n, v_n : n, subtype_lst : subtype*}: + `%|-%:OK`(C, _DEF_deftype(v_rectype, i)) + -- Rectype_ok2: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype_lst} +++ C, v_rectype, OK_oktypenat(0)) + -- if (v_rectype = REC_rectype(mk_list_list(subtype_lst))) + -- if (i < v_n) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS subtype_lst}) + -- if (v_n = |subtype_lst|) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 +relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:181.1-183.41 + rule struct{C : context, ft_1_lst : fieldtype*, ft'_1_lst : fieldtype*, ft_2_lst : fieldtype*}: + `%|-%<:%`(C, STRUCT_comptype(mk_list_list(ft_1_lst ++ ft'_1_lst)), STRUCT_comptype(mk_list_list(ft_2_lst))) + -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- ft_1_lst, ft_2 <- ft_2_lst} + -- if (|ft_1_lst| = |ft_2_lst|) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_1_lst ++ ft'_1_lst))) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_2_lst))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 + rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: + `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 + rule func{C : context, t_11_lst : valtype*, t_12_lst : valtype*, t_21_lst : valtype*, t_22_lst : valtype*}: + `%|-%<:%`(C, `FUNC%->%`_comptype(mk_list_resulttype(t_11_lst), mk_list_resulttype(t_12_lst)), `FUNC%->%`_comptype(mk_list_resulttype(t_21_lst), mk_list_resulttype(t_22_lst))) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_21_lst), mk_list_resulttype(t_11_lst)) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_12_lst), mk_list_resulttype(t_22_lst)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_11_lst), mk_list_resulttype(t_12_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_21_lst), mk_list_resulttype(t_22_lst))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 +relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype, var_1 : deftype, var_0 : deftype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if (var_0 = var_1) + -- wf_context: `%`(C) + -- fun_clos_deftype: `%%%`(C, deftype_2, var_1) + -- fun_clos_deftype: `%%%`(C, deftype_1, var_0) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, final_opt : final?, typeuse_lst : typeuse*, ct : comptype, i : nat, var_0 : subtype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if (var_0 = SUB_subtype(final_opt, typeuse_lst, ct)) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse_lst[i]), $heaptype_deftype(deftype_2)) + -- if (i < |typeuse_lst|) + -- wf_context: `%`(C) + -- wf_subtype: `%`(var_0) + -- wf_subtype: `%`(SUB_subtype(final_opt, typeuse_lst, ct)) + -- fun_unrolldt: `%%`(deftype_1, var_0) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 +relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 + rule refl{C : context, v_heaptype : heaptype}: + `%|-%<:%`(C, v_heaptype, v_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(v_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 + rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: + `%|-%<:%`(C, heaptype_1, heaptype_2) + -- Heaptype_ok: `%|-%:OK`(C, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 + rule eq_any{C : context}: + `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 + rule i31_eq{C : context}: + `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 + rule struct_eq{C : context}: + `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 + rule array_eq{C : context}: + `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 + rule struct{C : context, v_deftype : deftype, fieldtype_lst : fieldtype*}: + `%|-%<:%`(C, $heaptype_deftype(v_deftype), STRUCT_heaptype) + -- Expand: `%~~%`(v_deftype, STRUCT_comptype(mk_list_list(fieldtype_lst))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(fieldtype_lst))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 + rule array{C : context, v_deftype : deftype, v_fieldtype : fieldtype}: + `%|-%<:%`(C, $heaptype_deftype(v_deftype), ARRAY_heaptype) + -- Expand: `%~~%`(v_deftype, ARRAY_comptype(v_fieldtype)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(v_fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 + rule func{C : context, v_deftype : deftype, t_1_lst : valtype*, t_2_lst : valtype*}: + `%|-%<:%`(C, $heaptype_deftype(v_deftype), FUNC_heaptype) + -- Expand: `%~~%`(v_deftype, `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 + rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 + rule typeidx_l{C : context, v_typeidx : typeidx, v_heaptype : heaptype}: + `%|-%<:%`(C, _IDX_heaptype(v_typeidx), v_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(v_typeidx).0]), v_heaptype) + -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(v_heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(v_typeidx)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 + rule typeidx_r{C : context, v_heaptype : heaptype, v_typeidx : typeidx}: + `%|-%<:%`(C, v_heaptype, _IDX_heaptype(v_typeidx)) + -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(v_typeidx).0])) + -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(v_heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(v_typeidx)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 + rule rec_struct{C : context, i : n, final_opt : final?, fieldtype_lst : fieldtype*}: + `%|-%<:%`(C, REC_heaptype(i), STRUCT_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final_opt, [], STRUCT_comptype(mk_list_list(fieldtype_lst)))) + -- if (i < |C.RECS_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_subtype: `%`(SUB_subtype(final_opt, [], STRUCT_comptype(mk_list_list(fieldtype_lst)))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 + rule rec_array{C : context, i : n, final_opt : final?, v_fieldtype : fieldtype}: + `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final_opt, [], ARRAY_comptype(v_fieldtype))) + -- if (i < |C.RECS_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_subtype: `%`(SUB_subtype(final_opt, [], ARRAY_comptype(v_fieldtype))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 + rule rec_func{C : context, i : n, final_opt : final?, t_1_lst : valtype*, t_2_lst : valtype*}: + `%|-%<:%`(C, REC_heaptype(i), FUNC_heaptype) + -- if (C.RECS_context[i] = SUB_subtype(final_opt, [], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)))) + -- if (i < |C.RECS_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_subtype: `%`(SUB_subtype(final_opt, [], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 + rule rec_sub{C : context, i : n, typeuse_lst : typeuse*, j : nat, final_opt : final?, ct : comptype}: + `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse_lst[j])) + -- if (C.RECS_context[i] = SUB_subtype(final_opt, typeuse_lst, ct)) + -- if (i < |C.RECS_context|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final_opt, typeuse_lst, ct)) + -- if (j < |typeuse_lst|) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 + rule none{C : context, v_heaptype : heaptype}: + `%|-%<:%`(C, NONE_heaptype, v_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, ANY_heaptype) + -- if (v_heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(v_heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:86.1-89.25 + rule nofunc{C : context, v_heaptype : heaptype}: + `%|-%<:%`(C, NOFUNC_heaptype, v_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, FUNC_heaptype) + -- if (v_heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(v_heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:91.1-94.25 + rule noexn{C : context, v_heaptype : heaptype}: + `%|-%<:%`(C, NOEXN_heaptype, v_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, EXN_heaptype) + -- if (v_heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(v_heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:96.1-99.25 + rule noextern{C : context, v_heaptype : heaptype}: + `%|-%<:%`(C, NOEXTERN_heaptype, v_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, v_heaptype, EXTERN_heaptype) + -- if (v_heaptype =/= BOT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(v_heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 + rule bot{C : context, v_heaptype : heaptype}: + `%|-%<:%`(C, BOT_heaptype, v_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(v_heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 +relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:105.1-107.37 + rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 + rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 +relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:114.1-116.46 + rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: + `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) + -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 + rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: + `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) + -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 + rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: + `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 + rule bot{C : context, v_valtype : valtype}: + `%|-%<:%`(C, BOT_valtype, v_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(v_valtype) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 +relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-137.37 + rule mk_Resulttype_sub{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: + `%|-%<:%`(C, mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)) + -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- t_1_lst, t_2 <- t_2_lst} + -- if (|t_1_lst| = |t_2_lst|) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- t_1_lst} + -- (wf_valtype: `%`(t_2))*{t_2 <- t_2_lst} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 +relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:162.1-164.46 + rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 + rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: + `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) + -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 +relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:171.1-173.40 + rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, mk_fieldtype_fieldtype(?(), zt_1), mk_fieldtype_fieldtype(?(), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(), zt_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 + rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, mk_fieldtype_fieldtype(?(MUT_mut), zt_1), mk_fieldtype_fieldtype(?(MUT_mut), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(MUT_mut), zt_2)) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Localtype_ok: `%|-%:OK`(context, localtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mk_Localtype_ok{C : context, v_init : init, t : valtype}: + `%|-%:OK`(C, mk_localtype_localtype(v_init, t)) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_localtype: `%`(mk_localtype_localtype(v_init, t)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Instrtype_ok: `%|-%:OK`(context, instrtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mk_Instrtype_ok{C : context, t_1_lst : valtype*, x_lst : idx*, t_2_lst : valtype*, lct_lst : localtype*}: + `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_1_lst)) + -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_2_lst)) + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- lct_lst, x <- x_lst} + -- if (|lct_lst| = |x_lst|) + -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- x_lst} + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- lct_lst} + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand_use: `%~~_%%`(typeuse, context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule deftype{v_deftype : deftype, C : context, v_comptype : comptype}: + `%~~_%%`($typeuse_deftype(v_deftype), C, v_comptype) + -- Expand: `%~~%`(v_deftype, v_comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(v_comptype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule typeidx{v_typeidx : typeidx, C : context, v_comptype : comptype}: + `%~~_%%`(_IDX_typeuse(v_typeidx), C, v_comptype) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(v_typeidx).0], v_comptype) + -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_comptype: `%`(v_comptype) + -- wf_typeuse: `%`(_IDX_typeuse(v_typeidx)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidx = + | OK(v_typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation wf_oktypeidx: `%`(oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule oktypeidx_case_0{v_typeidx : typeidx}: + `%`(OK_oktypeidx(v_typeidx)) + -- wf_uN: `%%`(32, v_typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mk_Subtype_ok{C : context, x_lst : idx*, v_comptype : comptype, x_0 : idx, comptype'_lst : comptype*, yy_lst_lst : typeuse**, var_0_lst : subtype*}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- x_lst}, v_comptype), OK_oktypeidx(x_0)) + -- if (|x_lst| <= 1) + -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- x_lst} + -- (if (var_0 = SUB_subtype(?(), yy_lst, comptype')))*{var_0 <- var_0_lst, comptype' <- comptype'_lst, yy_lst <- yy_lst_lst} + -- if (|var_0_lst| = |comptype'_lst|) + -- if (|var_0_lst| = |yy_lst_lst|) + -- Comptype_ok: `%|-%:OK`(C, v_comptype) + -- (Comptype_sub: `%|-%<:%`(C, v_comptype, comptype'))*{comptype' <- comptype'_lst} + -- wf_context: `%`(C) + -- (wf_subtype: `%`(var_0))*{var_0 <- var_0_lst} + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- x_lst}, v_comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`(SUB_subtype(?(), yy_lst, comptype')))*{comptype' <- comptype'_lst, yy_lst <- yy_lst_lst} + -- if (|comptype'_lst| = |yy_lst_lst|) + -- (fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(x).0], var_0))*{var_0 <- var_0_lst, x <- x_lst} + -- if (|var_0_lst| = |x_lst|) + -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- x_lst} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.126 +relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 + rule empty{C : context, x : idx}: + `%|-%:%`(C, REC_rectype(mk_list_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 + rule cons{C : context, subtype_1 : subtype, subtype_lst : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(mk_list_list([subtype_1] ++ subtype_lst)), OK_oktypeidx(x)) + -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, REC_rectype(mk_list_list(subtype_lst)), OK_oktypeidx(mk_uN_typeidx(($proj_uN_0(x).0 + 1)))) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(v_subtype))*{v_subtype <- subtype_lst} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(mk_uN_typeidx(($proj_uN_0(x).0 + 1)))) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Limits_ok: `%|-%:%`(context, limits, nat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mk_Limits_ok{C : context, v_n : n, m_opt : m?, k : nat}: + `%|-%:%`(C, mk_limits_limits(mk_uN_u64(v_n), mk_uN_u64(v_m)?{v_m <- m_opt}), k) + -- if (v_n <= k) + -- (if ((v_n <= v_m) /\ (v_m <= k)))?{v_m <- m_opt} + -- wf_context: `%`(C) + -- wf_limits: `%`(mk_limits_limits(mk_uN_u64(v_n), mk_uN_u64(v_m)?{v_m <- m_opt})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tagtype_ok: `%|-%:OK`(context, tagtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mk_Tagtype_ok{C : context, v_typeuse : typeuse, t_1_lst : valtype*, t_2_lst : valtype*}: + `%|-%:OK`(C, v_typeuse) + -- Typeuse_ok: `%|-%:OK`(C, v_typeuse) + -- Expand_use: `%~~_%%`(v_typeuse, C, `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(v_typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Globaltype_ok: `%|-%:OK`(context, globaltype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mk_Globaltype_ok{C : context, t : valtype}: + `%|-%:OK`(C, mk_globaltype_globaltype(?(MUT_mut), t)) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(MUT_mut), t)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Memtype_ok: `%|-%:OK`(context, memtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mk_Memtype_ok{C : context, v_addrtype : addrtype, v_limits : limits}: + `%|-%:OK`(C, `%%PAGE`_memtype(v_addrtype, v_limits)) + -- Limits_ok: `%|-%:%`(C, v_limits, (2 ^ ((($size($numtype_addrtype(v_addrtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(v_addrtype, v_limits)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tabletype_ok: `%|-%:OK`(context, tabletype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mk_Tabletype_ok{C : context, v_addrtype : addrtype, v_limits : limits, v_reftype : reftype}: + `%|-%:OK`(C, mk_tabletype_tabletype(v_addrtype, v_limits, v_reftype)) + -- Limits_ok: `%|-%:%`(C, v_limits, ((((2 ^ $size($numtype_addrtype(v_addrtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Reftype_ok: `%|-%:OK`(C, v_reftype) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(mk_tabletype_tabletype(v_addrtype, v_limits, v_reftype)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Externtype_ok: `%|-%:OK`(context, externtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule tag{C : context, v_tagtype : tagtype}: + `%|-%:OK`(C, TAG_externtype(v_tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, v_tagtype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(v_tagtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule global{C : context, v_globaltype : globaltype}: + `%|-%:OK`(C, GLOBAL_externtype(v_globaltype)) + -- Globaltype_ok: `%|-%:OK`(C, v_globaltype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(v_globaltype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mem{C : context, v_memtype : memtype}: + `%|-%:OK`(C, MEM_externtype(v_memtype)) + -- Memtype_ok: `%|-%:OK`(C, v_memtype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(v_memtype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule table{C : context, v_tabletype : tabletype}: + `%|-%:OK`(C, TABLE_externtype(v_tabletype)) + -- Tabletype_ok: `%|-%:OK`(C, v_tabletype) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(v_tabletype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule func{C : context, v_typeuse : typeuse, t_1_lst : valtype*, t_2_lst : valtype*}: + `%|-%:OK`(C, FUNC_externtype(v_typeuse)) + -- Typeuse_ok: `%|-%:OK`(C, v_typeuse) + -- Expand_use: `%~~_%%`(v_typeuse, C, `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(v_typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mk_Instrtype_sub{C : context, t_11_lst : valtype*, x_1_lst : idx*, t_12_lst : valtype*, t_21_lst : valtype*, x_2_lst : idx*, t_22_lst : valtype*, x_lst : idx*, t_lst : valtype*}: + `%|-%<:%`(C, mk_instrtype_instrtype(mk_list_resulttype(t_11_lst), x_1_lst, mk_list_resulttype(t_12_lst)), mk_instrtype_instrtype(mk_list_resulttype(t_21_lst), x_2_lst, mk_list_resulttype(t_22_lst))) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_21_lst), mk_list_resulttype(t_11_lst)) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_12_lst), mk_list_resulttype(t_22_lst)) + -- if (x_lst = $setminus_(syntax localidx, x_2_lst, x_1_lst)) + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = mk_localtype_localtype(SET_init, t)))*{t <- t_lst, x <- x_lst} + -- if (|t_lst| = |x_lst|) + -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- x_lst} + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- x_lst} + -- (wf_uN: `%%`(32, iter))*{iter <- $setminus_(syntax localidx, x_2_lst, x_1_lst)} + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_11_lst), x_1_lst, mk_list_resulttype(t_12_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_21_lst), x_2_lst, mk_list_resulttype(t_22_lst))) + -- (wf_localtype: `%`(mk_localtype_localtype(SET_init, t)))*{t <- t_lst} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Limits_sub: `%|-%<:%`(context, limits, limits) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule max{C : context, n_1 : n, m_1 : m, n_2 : n, m_2_opt : m?}: + `%|-%<:%`(C, mk_limits_limits(mk_uN_u64(n_1), ?(mk_uN_u64(m_1))), mk_limits_limits(mk_uN_u64(n_2), mk_uN_u64(m_2)?{m_2 <- m_2_opt})) + -- if (n_1 >= n_2) + -- (if (m_1 <= m_2))?{m_2 <- m_2_opt} + -- wf_context: `%`(C) + -- wf_limits: `%`(mk_limits_limits(mk_uN_u64(n_1), ?(mk_uN_u64(m_1)))) + -- wf_limits: `%`(mk_limits_limits(mk_uN_u64(n_2), mk_uN_u64(m_2)?{m_2 <- m_2_opt})) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule eps{C : context, n_1 : n, n_2 : n}: + `%|-%<:%`(C, mk_limits_limits(mk_uN_u64(n_1), ?()), mk_limits_limits(mk_uN_u64(n_2), ?())) + -- if (n_1 >= n_2) + -- wf_context: `%`(C) + -- wf_limits: `%`(mk_limits_limits(mk_uN_u64(n_1), ?())) + -- wf_limits: `%`(mk_limits_limits(mk_uN_u64(n_2), ?())) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mk_Tagtype_sub{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, mk_globaltype_globaltype(?(), valtype_1), mk_globaltype_globaltype(?(), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(), valtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, mk_globaltype_globaltype(?(MUT_mut), valtype_1), mk_globaltype_globaltype(?(MUT_mut), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(MUT_mut), valtype_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mk_Memtype_sub{C : context, v_addrtype : addrtype, limits_1 : limits, limits_2 : limits}: + `%|-%<:%`(C, `%%PAGE`_memtype(v_addrtype, limits_1), `%%PAGE`_memtype(v_addrtype, limits_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(v_addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(v_addrtype, limits_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mk_Tabletype_sub{C : context, v_addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: + `%|-%<:%`(C, mk_tabletype_tabletype(v_addrtype, limits_1, reftype_1), mk_tabletype_tabletype(v_addrtype, limits_2, reftype_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(mk_tabletype_tabletype(v_addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(v_addrtype, limits_2, reftype_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: + `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: + `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: + `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: + `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule valtype{C : context, valtype_opt : valtype?}: + `%|-%:%`(C, _RESULT_blocktype(valtype_opt), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(lift(valtype_opt)))) + -- (Valtype_ok: `%|-%:OK`(C, v_valtype))?{v_valtype <- valtype_opt} + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype_opt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(lift(valtype_opt)))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule typeidx{C : context, v_typeidx : typeidx, t_1_lst : valtype*, t_2_lst : valtype*}: + `%|-%:%`(C, _IDX_blocktype(v_typeidx), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(v_typeidx).0], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(v_typeidx)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Catch_ok: `%|-%:OK`(context, catch) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch{C : context, x : idx, l : labelidx, t_lst : valtype*}: + `%|-%:OK`(C, CATCH_catch(x, l)) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_lst), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_ref{C : context, x : idx, l : labelidx, t_lst : valtype*}: + `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_lst ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all_ref{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +def $default_(v_valtype : valtype) : val?? + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(I32_valtype) = ?(?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, mk_uN_uN(0))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(I64_valtype) = ?(?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, mk_uN_uN(0))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(F32_valtype) = ?(?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(F64_valtype) = ?(?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(V128_valtype) = ?(?(VCONST_val(V128_vectype, mk_uN_vec_(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(?(REF_NULL_ADDR_val)) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?(?()) + def $default_{x0 : valtype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation default__is_wf: `%%`(v_valtype : valtype, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule default__is_wf_0{v_valtype : valtype, ret_val : val?}: + `%%`(v_valtype, ret_val) + -- wf_valtype: `%`(v_valtype) + -- if (ret_val = !($default_(v_valtype))) + -- if ($default_(v_valtype) =/= ?()) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Defaultable: `|-%DEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule mk_Defaultable{t : valtype}: + `|-%DEFAULTABLE`(t) + -- if (!($default_(t)) =/= ?()) + -- if ($default_(t) =/= ?()) + -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule mk_Memarg_ok{v_n : n, v_m : m, at : addrtype, v_N : N}: + `|-%:%->%`({ALIGN mk_uN_u32(v_n), OFFSET mk_uN_u64(v_m)}, at, v_N) + -- if (((2 ^ v_n) : nat <:> rat) <= ((v_N : nat <:> rat) / (8 : nat <:> rat))) + -- if (v_m < (2 ^ $size($numtype_addrtype(at)))) + -- wf_memarg: `%`({ALIGN mk_uN_u32(v_n), OFFSET mk_uN_u64(v_m)}) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +def $is_packtype(v_storagetype : storagetype) : bool + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + def $is_packtype{zt : storagetype}(zt) = (zt =/= $storagetype_valtype($unpack(zt))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 +relation Instr_ok: `%|-%:%`(context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 + rule nop{C : context}: + `%|-%:%`(C, NOP_instr, mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 + rule unreachable{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: + `%|-%:%`(C, UNREACHABLE_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 + rule drop{C : context, t : valtype}: + `%|-%:%`(C, DROP_instr, mk_instrtype_instrtype(mk_list_resulttype([t]), [], mk_list_resulttype([]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t]), [], mk_list_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 + rule select_expl{C : context, t : valtype}: + `%|-%:%`(C, SELECT_instr(?([t])), mk_instrtype_instrtype(mk_list_resulttype([t t I32_valtype]), [], mk_list_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t t I32_valtype]), [], mk_list_resulttype([t]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 + rule select_impl{C : context, t : valtype, t' : valtype, v_numtype : numtype, v_vectype : vectype}: + `%|-%:%`(C, SELECT_instr(?()), mk_instrtype_instrtype(mk_list_resulttype([t t I32_valtype]), [], mk_list_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Valtype_sub: `%|-%<:%`(C, t, t') + -- if ((t' = $valtype_numtype(v_numtype)) \/ (t' = $valtype_vectype(v_vectype))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t t I32_valtype]), [], mk_list_resulttype([t]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 + rule block{C : context, bt : blocktype, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_lst : idx*}: + `%|-%:%`(C, BLOCK_instr(bt, instr_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Blocktype_ok: `%|-%:%`(C, bt, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 + rule loop{C : context, bt : blocktype, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_lst : idx*}: + `%|-%:%`(C, LOOP_instr(bt, instr_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Blocktype_ok: `%|-%:%`(C, bt, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_1_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_1_lst)], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 + rule if{C : context, bt : blocktype, instr_1_lst : instr*, instr_2_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_1_lst : idx*, x_2_lst : idx*}: + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [I32_valtype]), [], mk_list_resulttype(t_2_lst))) + -- Blocktype_ok: `%|-%:%`(C, bt, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_1_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_2_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_2_lst, mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [I32_valtype]), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_2_lst, mk_list_resulttype(t_2_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 + rule br{C : context, l : labelidx, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: + `%|-%:%`(C, BR_instr(l), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t_lst) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 + rule br_if{C : context, l : labelidx, t_lst : valtype*}: + `%|-%:%`(C, BR_IF_instr(l), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [I32_valtype]), [], mk_list_resulttype(t_lst))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t_lst) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [I32_valtype]), [], mk_list_resulttype(t_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 + rule br_table{C : context, l_lst : labelidx*, l' : labelidx, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: + `%|-%:%`(C, BR_TABLE_instr(l_lst, l'), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst ++ [I32_valtype]), [], mk_list_resulttype(t_2_lst))) + -- (Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_lst), C.LABELS_context[$proj_uN_0(l).0]))*{l <- l_lst} + -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- l_lst} + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_lst), C.LABELS_context[$proj_uN_0(l').0]) + -- if ($proj_uN_0(l').0 < |C.LABELS_context|) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst ++ [I32_valtype]), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l_lst, l')) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst ++ [I32_valtype]), [], mk_list_resulttype(t_2_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 + rule br_on_null{C : context, l : labelidx, t_lst : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NULL_instr(l), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype(t_lst ++ [REF_valtype(?(), ht)]))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t_lst) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype(t_lst ++ [REF_valtype(?(), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 + rule br_on_non_null{C : context, l : labelidx, t_lst : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype(t_lst))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)])) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype(t_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, t_lst : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = mk_list_resulttype(t_lst ++ [$valtype_reftype(rt)])) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, t_lst : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_2)]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = mk_list_resulttype(t_lst ++ [$valtype_reftype(rt)])) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`($diffrt(rt_1, rt_2)) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_2)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 + rule call{C : context, x : idx, t_1_lst : valtype*, t_2_lst : valtype*}: + `%|-%:%`(C, CALL_instr(x), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 + rule call_ref{C : context, x : idx, t_1_lst : valtype*, t_2_lst : valtype*}: + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype(t_2_lst))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 + rule call_indirect{C : context, x : idx, y : idx, t_1_lst : valtype*, at : addrtype, t_2_lst : valtype*, lim : limits, rt : reftype}: + `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [$valtype_addrtype(at)]), [], mk_list_resulttype(t_2_lst))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- if ($proj_uN_0(y).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [$valtype_addrtype(at)]), [], mk_list_resulttype(t_2_lst))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 + rule return{C : context, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: + `%|-%:%`(C, RETURN_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) + -- if (C.RETURN_context = ?(mk_list_resulttype(t_lst))) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 + rule return_call{C : context, x : idx, t_3_lst : valtype*, t_1_lst : valtype*, t_4_lst : valtype*, t_2_lst : valtype*, t'_2_lst : valtype*}: + `%|-%:%`(C, RETURN_CALL_instr(x), mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst), [], mk_list_resulttype(t_4_lst))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- if (C.RETURN_context = ?(mk_list_resulttype(t'_2_lst))) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_2_lst), mk_list_resulttype(t'_2_lst)) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- t'_2_lst} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst), [], mk_list_resulttype(t_4_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 + rule return_call_ref{C : context, x : idx, t_3_lst : valtype*, t_1_lst : valtype*, t_4_lst : valtype*, t_2_lst : valtype*, t'_2_lst : valtype*}: + `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype(t_4_lst))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if (C.RETURN_context = ?(mk_list_resulttype(t'_2_lst))) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_2_lst), mk_list_resulttype(t'_2_lst)) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- t'_2_lst} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype(t_4_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 + rule return_call_indirect{C : context, x : idx, y : idx, t_3_lst : valtype*, t_1_lst : valtype*, at : addrtype, t_4_lst : valtype*, lim : limits, rt : reftype, t_2_lst : valtype*, t'_2_lst : valtype*}: + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst ++ [$valtype_addrtype(at)]), [], mk_list_resulttype(t_4_lst))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- if ($proj_uN_0(y).0 < |C.TYPES_context|) + -- if (C.RETURN_context = ?(mk_list_resulttype(t'_2_lst))) + -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_2_lst), mk_list_resulttype(t'_2_lst)) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- t'_2_lst} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst ++ t_1_lst ++ [$valtype_addrtype(at)]), [], mk_list_resulttype(t_4_lst))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_3_lst), [], mk_list_resulttype(t_4_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 + rule throw{C : context, x : idx, t_1_lst : valtype*, t_lst : valtype*, t_2_lst : valtype*}: + `%|-%:%`(C, THROW_instr(x), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 + rule throw_ref{C : context, t_1_lst : valtype*, t_2_lst : valtype*}: + `%|-%:%`(C, THROW_REF_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], mk_list_resulttype(t_2_lst))) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 + rule try_table{C : context, bt : blocktype, catch_lst : catch*, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_lst : idx*}: + `%|-%:%`(C, TRY_TABLE_instr(bt, mk_list_list(catch_lst), instr_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Blocktype_ok: `%|-%:%`(C, bt, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- (Catch_ok: `%|-%:OK`(C, v_catch))*{v_catch <- catch_lst} + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, mk_list_list(catch_lst), instr_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 + rule ref_null{C : context, ht : heaptype}: + `%|-%:%`(C, REF_NULL_instr(ht), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_NULL_instr(ht)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(NULL_null), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 + rule ref_func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, REF_FUNC_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- if (x <- C.REFS_context) + -- if (|C.REFS_context| > 0) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_FUNC_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 + rule ref_i31{C : context}: + `%|-%:%`(C, REF_I31_instr, mk_instrtype_instrtype(mk_list_resulttype([I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_I31_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), I31_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 + rule ref_is_null{C : context, ht : heaptype}: + `%|-%:%`(C, REF_IS_NULL_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype([I32_valtype]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_IS_NULL_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 + rule ref_as_non_null{C : context, ht : heaptype}: + `%|-%:%`(C, REF_AS_NON_NULL_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype([REF_valtype(?(), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_AS_NON_NULL_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ht)]), [], mk_list_resulttype([REF_valtype(?(), ht)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 + rule ref_eq{C : context}: + `%|-%:%`(C, REF_EQ_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_EQ_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], mk_list_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 + rule ref_test{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, REF_TEST_instr(rt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt')]), [], mk_list_resulttype([I32_valtype]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_TEST_instr(rt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt')]), [], mk_list_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 + rule ref_cast{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, REF_CAST_instr(rt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt')]), [], mk_list_resulttype([$valtype_reftype(rt)]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_CAST_instr(rt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt')]), [], mk_list_resulttype([$valtype_reftype(rt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 + rule i31_get{C : context, v_sx : sx}: + `%|-%:%`(C, I31_GET_instr(v_sx), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(I31_GET_instr(v_sx)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], mk_list_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 + rule struct_new{C : context, x : idx, zt_lst : storagetype*, mut_opt_lst : mut?*}: + `%|-%:%`(C, STRUCT_NEW_instr(x), mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)*{zt <- zt_lst}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT_NEW_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)*{zt <- zt_lst}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 + rule struct_new_default{C : context, x : idx, mut_opt_lst : mut?*, zt_lst : storagetype*}: + `%|-%:%`(C, STRUCT_NEW_DEFAULT_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- zt_lst} + -- wf_context: `%`(C) + -- (wf_valtype: `%`($unpack(zt)))*{zt <- zt_lst} + -- wf_instr: `%`(STRUCT_NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 + rule struct_get{C : context, sx_opt : sx?, x : idx, i : fieldidx, zt : storagetype, ft_lst : fieldtype*, mut_opt : mut?}: + `%|-%:%`(C, STRUCT_GET_instr(sx_opt, x, i), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(ft_lst))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if (ft_lst[$proj_uN_0(i).0] = mk_fieldtype_fieldtype(mut_opt, zt)) + -- if ($proj_uN_0(i).0 < |ft_lst|) + -- if ((sx_opt =/= ?()) <=> $is_packtype(zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT_GET_instr(sx_opt, x, i)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_lst))) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(mut_opt, zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 + rule struct_set{C : context, x : idx, i : fieldidx, zt : storagetype, ft_lst : fieldtype*}: + `%|-%:%`(C, STRUCT_SET_instr(x, i), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], mk_list_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(ft_lst))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if (ft_lst[$proj_uN_0(i).0] = mk_fieldtype_fieldtype(?(MUT_mut), zt)) + -- if ($proj_uN_0(i).0 < |ft_lst|) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT_SET_instr(x, i)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], mk_list_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_lst))) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(MUT_mut), zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 + rule array_new{C : context, x : idx, zt : storagetype, mut_opt : mut?}: + `%|-%:%`(C, ARRAY_NEW_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$unpack(zt) I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_NEW_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$unpack(zt) I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 + rule array_new_default{C : context, x : idx, mut_opt : mut?, zt : storagetype}: + `%|-%:%`(C, ARRAY_NEW_DEFAULT_instr(x), mk_instrtype_instrtype(mk_list_resulttype([I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(ARRAY_NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 + rule array_new_fixed{C : context, x : idx, v_n : n, zt : storagetype, mut_opt : mut?}: + `%|-%:%`(C, ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n)), mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)^v_n{}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)^v_n{}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 + rule array_new_elem{C : context, x : idx, y : idx, mut_opt : mut?, rt : reftype}: + `%|-%:%`(C, ARRAY_NEW_ELEM_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, $storagetype_reftype(rt)))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) + -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_NEW_ELEM_instr(x, y)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, $storagetype_reftype(rt)))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 + rule array_new_data{C : context, x : idx, y : idx, mut_opt : mut?, zt : storagetype, v_numtype : numtype, v_vectype : vectype}: + `%|-%:%`(C, ARRAY_NEW_DATA_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if (($unpack(zt) = $valtype_numtype(v_numtype)) \/ ($unpack(zt) = $valtype_vectype(v_vectype))) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(ARRAY_NEW_DATA_instr(x, y)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 + rule array_get{C : context, sx_opt : sx?, x : idx, zt : storagetype, mut_opt : mut?}: + `%|-%:%`(C, ARRAY_GET_instr(sx_opt, x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], mk_list_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if ((sx_opt =/= ?()) <=> $is_packtype(zt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_GET_instr(sx_opt, x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], mk_list_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 + rule array_set{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, ARRAY_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], mk_list_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_SET_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], mk_list_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 + rule array_len{C : context}: + `%|-%:%`(C, ARRAY_LEN_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_LEN_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], mk_list_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 + rule array_fill{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, ARRAY_FILL_instr(x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], mk_list_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_FILL_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], mk_list_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 + rule array_copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, mut_opt : mut?, zt_2 : storagetype}: + `%|-%:%`(C, ARRAY_COPY_instr(x_1, x_2), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt_1))) + -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) + -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 + rule array_init_elem{C : context, x : idx, y : idx, zt : storagetype}: + `%|-%:%`(C, ARRAY_INIT_ELEM_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) + -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_INIT_ELEM_instr(x, y)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 + rule array_init_data{C : context, x : idx, y : idx, zt : storagetype, v_numtype : numtype, v_vectype : vectype}: + `%|-%:%`(C, ARRAY_INIT_DATA_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- if (($unpack(zt) = $valtype_numtype(v_numtype)) \/ ($unpack(zt) = $valtype_vectype(v_vectype))) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- wf_context: `%`(C) + -- wf_valtype: `%`($unpack(zt)) + -- wf_instr: `%`(ARRAY_INIT_DATA_instr(x, y)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 + rule extern_convert_any{C : context, null_1_opt : null?, null_2_opt : null?}: + `%|-%:%`(C, EXTERN_CONVERT_ANY_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(null_1_opt, ANY_heaptype)]), [], mk_list_resulttype([REF_valtype(null_2_opt, EXTERN_heaptype)]))) + -- if (null_1_opt = null_2_opt) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN_CONVERT_ANY_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(null_1_opt, ANY_heaptype)]), [], mk_list_resulttype([REF_valtype(null_2_opt, EXTERN_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 + rule any_convert_extern{C : context, null_1_opt : null?, null_2_opt : null?}: + `%|-%:%`(C, ANY_CONVERT_EXTERN_instr, mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(null_1_opt, EXTERN_heaptype)]), [], mk_list_resulttype([REF_valtype(null_2_opt, ANY_heaptype)]))) + -- if (null_1_opt = null_2_opt) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY_CONVERT_EXTERN_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(null_1_opt, EXTERN_heaptype)]), [], mk_list_resulttype([REF_valtype(null_2_opt, ANY_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 + rule local_get{C : context, x : idx, t : valtype}: + `%|-%:%`(C, LOCAL_GET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = mk_localtype_localtype(SET_init, t)) + -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL_GET_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) + -- wf_localtype: `%`(mk_localtype_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 + rule local_set{C : context, x : idx, t : valtype, v_init : init}: + `%|-%:%`(C, LOCAL_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([t]), [x], mk_list_resulttype([]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = mk_localtype_localtype(v_init, t)) + -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL_SET_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t]), [x], mk_list_resulttype([]))) + -- wf_localtype: `%`(mk_localtype_localtype(v_init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 + rule local_tee{C : context, x : idx, t : valtype, v_init : init}: + `%|-%:%`(C, LOCAL_TEE_instr(x), mk_instrtype_instrtype(mk_list_resulttype([t]), [x], mk_list_resulttype([t]))) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = mk_localtype_localtype(v_init, t)) + -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL_TEE_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t]), [x], mk_list_resulttype([t]))) + -- wf_localtype: `%`(mk_localtype_localtype(v_init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 + rule global_get{C : context, x : idx, t : valtype, mut_opt : mut?}: + `%|-%:%`(C, GLOBAL_GET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = mk_globaltype_globaltype(mut_opt, t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL_GET_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) + -- wf_globaltype: `%`(mk_globaltype_globaltype(mut_opt, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 + rule global_set{C : context, x : idx, t : valtype}: + `%|-%:%`(C, GLOBAL_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([t]), [], mk_list_resulttype([]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = mk_globaltype_globaltype(?(MUT_mut), t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL_SET_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([t]), [], mk_list_resulttype([]))) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(MUT_mut), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 + rule table_get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE_GET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_reftype(rt)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE_GET_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_reftype(rt)]))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 + rule table_set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], mk_list_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE_SET_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], mk_list_resulttype([]))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 + rule table_size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE_SIZE_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_addrtype(at)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE_SIZE_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_addrtype(at)]))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 + rule table_grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: + `%|-%:%`(C, TABLE_GROW_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_addrtype(at)]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE_GROW_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_addrtype(at)]))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 + rule table_fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE_FILL_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], mk_list_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE_FILL_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], mk_list_resulttype([]))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 + rule table_copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, TABLE_COPY_instr(x_1, x_2), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], mk_list_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x_1).0] = mk_tabletype_tabletype(at_1, lim_1, rt_1)) + -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x_2).0] = mk_tabletype_tabletype(at_2, lim_2, rt_2)) + -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE_COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], mk_list_resulttype([]))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at_2, lim_2, rt_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 + rule table_init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: + `%|-%:%`(C, TABLE_INIT_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt_1)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) + -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(TABLE_INIT_instr(x, y)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt_1)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 + rule elem_drop{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, ELEM_DROP_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) + -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) + -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(ELEM_DROP_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + rule memory_size{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY_SIZE_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_addrtype(at)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY_SIZE_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + rule memory_grow{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY_GROW_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_addrtype(at)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY_GROW_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + rule memory_fill{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY_FILL_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], mk_list_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY_FILL_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], mk_list_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + rule memory_copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: + `%|-%:%`(C, MEMORY_COPY_instr(x_1, x_2), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], mk_list_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) + -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) + -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY_COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], mk_list_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + rule memory_init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY_INIT_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY_INIT_instr(x, y)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + rule data_drop{C : context, x : idx}: + `%|-%:%`(C, DATA_DROP_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) + -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) + -- if ($proj_uN_0(x).0 < |C.DATAS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(DATA_DROP_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 + rule load_val{C : context, nt : numtype, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr(nt, ?(), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(v_memarg, at, $size(nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 + rule load_pack{C : context, v_Inn : Inn, v_M : M, v_sx : sx, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_M), v_sx))), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_addrtype(v_Inn)]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(v_memarg, at, v_M) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_M), v_sx))), x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([$valtype_addrtype(v_Inn)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 + rule store_val{C : context, nt : numtype, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr(nt, ?(), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], mk_list_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(v_memarg, at, $size(nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], mk_list_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 + rule store_pack{C : context, v_Inn : Inn, v_M : M, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_M)))), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_addrtype(v_Inn)]), [], mk_list_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(v_memarg, at, v_M) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_M)))), x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) $valtype_addrtype(v_Inn)]), [], mk_list_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 + rule vload_val{C : context, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(v_memarg, at, $vsize(V128_vectype)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 + rule vload_pack{C : context, v_M : M, v_N : N, v_sx : sx, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_N, v_sx)), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(v_memarg, at, (v_M * v_N)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_N, v_sx)), x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 + rule vload_splat{C : context, v_N : N, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(v_memarg, at, v_N) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 + rule vload_zero{C : context, v_N : N, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(v_memarg, at, v_N) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at)]), [], mk_list_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 + rule vload_lane{C : context, v_N : N, x : idx, v_memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, v_memarg, i), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(v_memarg, at, v_N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (v_N : nat <:> rat))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, v_memarg, i)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 + rule vstore{C : context, x : idx, v_memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_instr(V128_vectype, x, v_memarg), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(v_memarg, at, $vsize(V128_vectype)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, v_memarg)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 + rule vstore_lane{C : context, v_N : N, x : idx, v_memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, v_memarg, i), mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([]))) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Memarg_ok: `|-%:%->%`(v_memarg, at, v_N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (v_N : nat <:> rat))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, v_memarg, i)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_addrtype(at) V128_valtype]), [], mk_list_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%:%`(C, CONST_instr(nt, c_nt), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 + rule unop{C : context, nt : numtype, unop_nt : unop_}: + `%|-%:%`(C, UNOP_instr(nt, unop_nt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 + rule binop{C : context, nt : numtype, binop_nt : binop_}: + `%|-%:%`(C, BINOP_instr(nt, binop_nt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], mk_list_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 + rule testop{C : context, nt : numtype, testop_nt : testop_}: + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt)]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt)]), [], mk_list_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 + rule relop{C : context, nt : numtype, relop_nt : relop_}: + `%|-%:%`(C, RELOP_instr(nt, relop_nt), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], mk_list_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 + rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt_2)]), [], mk_list_resulttype([$valtype_numtype(nt_1)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype(nt_2)]), [], mk_list_resulttype([$valtype_numtype(nt_1)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 + rule vconst{C : context, c : vec_}: + `%|-%:%`(C, VCONST_instr(V128_vectype, c), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 + rule vvunop{C : context, v_vvunop : vvunop}: + `%|-%:%`(C, VVUNOP_instr(V128_vectype, v_vvunop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, v_vvunop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 + rule vvbinop{C : context, v_vvbinop : vvbinop}: + `%|-%:%`(C, VVBINOP_instr(V128_vectype, v_vvbinop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, v_vvbinop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 + rule vvternop{C : context, v_vvternop : vvternop}: + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, v_vvternop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, v_vvternop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 + rule vvtestop{C : context, v_vvtestop : vvtestop}: + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, v_vvtestop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, v_vvtestop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 + rule vunop{C : context, sh : shape, vunop : vunop_}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 + rule vternop{C : context, sh : shape, vternop : vternop_}: + `%|-%:%`(C, VTERNOP_instr(sh, vternop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype I32_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype I32_valtype]), [], mk_list_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 + rule vbitmask{C : context, sh : ishape}: + `%|-%:%`(C, VBITMASK_instr(sh), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 + rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 + rule vshuffle{C : context, sh : bshape, i_lst : laneidx*}: + `%|-%:%`(C, VSHUFFLE_instr(sh, i_lst), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($fun_dim($proj_bshape_0(sh).0)).0)))*{i <- i_lst} + -- wf_context: `%`(C) + -- wf_dim: `%`($fun_dim($proj_bshape_0(sh).0)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 + rule vsplat{C : context, sh : shape}: + `%|-%:%`(C, VSPLAT_instr(sh), mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype($unpackshape(sh))]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype($unpackshape(sh))]), [], mk_list_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 + rule vextract_lane{C : context, sh : shape, sx_opt : sx?, i : laneidx}: + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx_opt, i), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0($fun_dim(sh)).0) + -- wf_context: `%`(C) + -- wf_dim: `%`($fun_dim(sh)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx_opt, i)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([$valtype_numtype($unpackshape(sh))]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 + rule vreplace_lane{C : context, sh : shape, i : laneidx}: + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], mk_list_resulttype([V128_valtype]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0($fun_dim(sh)).0) + -- wf_context: `%`(C) + -- wf_dim: `%`($fun_dim(sh)) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], mk_list_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 + rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 + rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 + rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 + rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, v_sx : sx}: + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, v_sx), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, v_sx)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 + rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 +relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 + rule empty{C : context}: + `%|-%:%`(C, [], mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 + rule seq{C : context, instr_1 : instr, instr_2_lst : instr*, t_1_lst : valtype*, x_1_lst : idx*, x_2_lst : idx*, t_3_lst : valtype*, t_2_lst : valtype*, init_lst : init*, t_lst : valtype*, var_0 : context?}: + `%|-%:%`(C, [instr_1] ++ instr_2_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst ++ x_2_lst, mk_list_resulttype(t_3_lst))) + -- Instr_ok: `%|-%:%`(C, instr_1, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = mk_localtype_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst, x_1 <- x_1_lst} + -- if (|init_lst| = |t_lst|) + -- if (|init_lst| = |x_1_lst|) + -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- x_1_lst} + -- Instrs_ok: `%|-%:%`(!(var_0), instr_2_lst, mk_instrtype_instrtype(mk_list_resulttype(t_2_lst), x_2_lst, mk_list_resulttype(t_3_lst))) + -- if (var_0 =/= ?()) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- instr_2_lst} + -- wf_context: `%`(!(var_0)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst ++ x_2_lst, mk_list_resulttype(t_3_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) + -- (wf_localtype: `%`(mk_localtype_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst} + -- (wf_localtype: `%`(mk_localtype_localtype(SET_init, t)))*{t <- t_lst} + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_2_lst), x_2_lst, mk_list_resulttype(t_3_lst))) + -- fun_with_locals: `%%%%`(C, x_1_lst, mk_localtype_localtype(SET_init, t)*{t <- t_lst}, var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 + rule sub{C : context, instr_lst : instr*, it' : instrtype, it : instrtype}: + `%|-%:%`(C, instr_lst, it') + -- Instrs_ok: `%|-%:%`(C, instr_lst, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 + rule frame{C : context, instr_lst : instr*, t_lst : valtype*, t_1_lst : valtype*, x_lst : idx*, t_2_lst : valtype*}: + `%|-%:%`(C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ t_1_lst), x_lst, mk_list_resulttype(t_lst ++ t_2_lst))) + -- Instrs_ok: `%|-%:%`(C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_lst)) + -- wf_context: `%`(C) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ t_1_lst), x_lst, mk_list_resulttype(t_lst ++ t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) +} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok: `%|-%:%`(context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule mk_Expr_ok{C : context, instr_lst : instr*, t_lst : valtype*}: + `%|-%:%`(C, instr_lst, mk_list_resulttype(t_lst)) + -- Instrs_ok: `%|-%:%`(C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule mk_Nondefaultable{t : valtype}: + `|-%NONDEFAULTABLE`(t) + -- if (!($default_(t)) = ?()) + -- if ($default_(t) =/= ?()) + -- wf_valtype: `%`(t) + -- (wf_val: `%`(iter))?{iter <- !($default_(t))} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Instr_const: `%|-%CONST`(context, instr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule vconst{C : context, vt : vectype, c_vt : vec_}: + `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref_null{C : context, ht : heaptype}: + `%|-%CONST`(C, REF_NULL_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_NULL_instr(ht)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref_i31{C : context}: + `%|-%CONST`(C, REF_I31_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_I31_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref_func{C : context, x : idx}: + `%|-%CONST`(C, REF_FUNC_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF_FUNC_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule struct_new{C : context, x : idx}: + `%|-%CONST`(C, STRUCT_NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT_NEW_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule struct_new_default{C : context, x : idx}: + `%|-%CONST`(C, STRUCT_NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT_NEW_DEFAULT_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array_new{C : context, x : idx}: + `%|-%CONST`(C, ARRAY_NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_NEW_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array_new_default{C : context, x : idx}: + `%|-%CONST`(C, ARRAY_NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_NEW_DEFAULT_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array_new_fixed{C : context, x : idx, v_n : n}: + `%|-%CONST`(C, ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule any_convert_extern{C : context}: + `%|-%CONST`(C, ANY_CONVERT_EXTERN_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY_CONVERT_EXTERN_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule extern_convert_any{C : context}: + `%|-%CONST`(C, EXTERN_CONVERT_ANY_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN_CONVERT_ANY_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule global_get{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, GLOBAL_GET_instr(x)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = mk_globaltype_globaltype(?(), t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL_GET_instr(x)) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule binop{C : context, v_Inn : Inn, binop : binop_}: + `%|-%CONST`(C, BINOP_instr($numtype_addrtype(v_Inn), binop)) + -- if (v_Inn <- [I32_Inn I64_Inn]) + -- if (|[I32_Inn I64_Inn]| > 0) + -- if (binop <- [mk_binop__0_binop_(v_Inn, ADD_binop_Inn) mk_binop__0_binop_(v_Inn, SUB_binop_Inn) mk_binop__0_binop_(v_Inn, MUL_binop_Inn)]) + -- if (|[mk_binop__0_binop_(v_Inn, ADD_binop_Inn) mk_binop__0_binop_(v_Inn, SUB_binop_Inn) mk_binop__0_binop_(v_Inn, MUL_binop_Inn)]| > 0) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr($numtype_addrtype(v_Inn), binop)) + -- wf_binop_: `%%`($numtype_addrtype(v_Inn), mk_binop__0_binop_(v_Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(v_Inn), mk_binop__0_binop_(v_Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(v_Inn), mk_binop__0_binop_(v_Inn, MUL_binop_Inn)) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_const: `%|-%CONST`(context, expr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule mk_Expr_const{C : context, instr_lst : instr*}: + `%|-%CONST`(C, instr_lst) + -- (Instr_const: `%|-%CONST`(C, v_instr))*{v_instr <- instr_lst} + -- wf_context: `%`(C) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule mk_Expr_ok_const{C : context, v_expr : expr, t : valtype}: + `%|-%:%CONST`(C, v_expr, t) + -- Expr_ok: `%|-%:%`(C, v_expr, mk_list_resulttype([t])) + -- Expr_const: `%|-%CONST`(C, v_expr) + -- wf_context: `%`(C) + -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} + -- wf_valtype: `%`(t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Type_ok: `%|-%:%`(context, type, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mk_Type_ok{C : context, v_rectype : rectype, dt_lst : deftype*, x : idx, var_0 : deftype*}: + `%|-%:%`(C, TYPE_type(v_rectype), dt_lst) + -- if ($proj_uN_0(x).0 = |C.TYPES_context|) + -- if (dt_lst = var_0) + -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, v_rectype, OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- fun_rolldt: `%%%`(x, v_rectype, var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Tag_ok: `%|-%:%`(context, tag, tagtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mk_Tag_ok{C : context, v_tagtype : tagtype, var_0 : tagtype}: + `%|-%:%`(C, TAG_tag(v_tagtype), var_0) + -- Tagtype_ok: `%|-%:OK`(C, v_tagtype) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(var_0) + -- wf_tag: `%`(TAG_tag(v_tagtype)) + -- fun_clos_tagtype: `%%%`(C, v_tagtype, var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Global_ok: `%|-%:%`(context, global, globaltype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mk_Global_ok{C : context, v_globaltype : globaltype, v_expr : expr, t : valtype}: + `%|-%:%`(C, GLOBAL_global(v_globaltype, v_expr), v_globaltype) + -- Globaltype_ok: `%|-%:OK`(C, v_globaltype) + -- if (v_globaltype = mk_globaltype_globaltype(?(MUT_mut), t)) + -- Expr_ok_const: `%|-%:%CONST`(C, v_expr, t) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(v_globaltype, v_expr)) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(MUT_mut), t)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Mem_ok: `%|-%:%`(context, mem, memtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mk_Mem_ok{C : context, v_memtype : memtype}: + `%|-%:%`(C, MEMORY_mem(v_memtype), v_memtype) + -- Memtype_ok: `%|-%:OK`(C, v_memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(v_memtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Table_ok: `%|-%:%`(context, table, tabletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mk_Table_ok{C : context, v_tabletype : tabletype, v_expr : expr, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE_table(v_tabletype, v_expr), v_tabletype) + -- Tabletype_ok: `%|-%:OK`(C, v_tabletype) + -- if (v_tabletype = mk_tabletype_tabletype(at, lim, rt)) + -- Expr_ok_const: `%|-%:%CONST`(C, v_expr, $valtype_reftype(rt)) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(v_tabletype, v_expr)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Local_ok: `%|-%:%`(context, local, localtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule set{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), mk_localtype_localtype(SET_init, t)) + -- Defaultable: `|-%DEFAULTABLE`(t) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(mk_localtype_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule unset{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), mk_localtype_localtype(UNSET_init, t)) + -- Nondefaultable: `|-%NONDEFAULTABLE`(t) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(mk_localtype_localtype(UNSET_init, t)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Func_ok: `%|-%:%`(context, func, deftype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mk_Func_ok{C : context, x : idx, local_lst : local*, v_expr : expr, t_1_lst : valtype*, t_2_lst : valtype*, lct_lst : localtype*}: + `%|-%:%`(C, FUNC_func(x, local_lst, v_expr), C.TYPES_context[$proj_uN_0(x).0]) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- (Local_ok: `%|-%:%`(C, v_local, lct))*{lct <- lct_lst, v_local <- local_lst} + -- if (|lct_lst| = |local_lst|) + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS mk_localtype_localtype(SET_init, t_1)*{t_1 <- t_1_lst} ++ lct_lst, LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(mk_list_resulttype(t_2_lst)), REFS [], RECS []}, v_expr, mk_list_resulttype(t_2_lst)) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local_lst, v_expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS mk_localtype_localtype(SET_init, t_1)*{t_1 <- t_1_lst} ++ lct_lst, LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(mk_list_resulttype(t_2_lst)), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Datamode_ok: `%|-%:%`(context, datamode, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context}: + `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, v_expr : expr, at : addrtype, lim : limits}: + `%|-%:%`(C, ACTIVE_datamode(x, v_expr), OK_datatype) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- Expr_ok_const: `%|-%:%CONST`(C, v_expr, $valtype_addrtype(at)) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, v_expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Data_ok: `%|-%:%`(context, data, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mk_Data_ok{C : context, b_lst : byte*, v_datamode : datamode}: + `%|-%:%`(C, DATA_data(b_lst, v_datamode), OK_datatype) + -- Datamode_ok: `%|-%:%`(C, v_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b_lst, v_datamode)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context, rt : reftype}: + `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule declare{C : context, rt : reftype}: + `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, v_expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: + `%|-%:%`(C, ACTIVE_elemmode(x, v_expr), rt) + -- if (C.TABLES_context[$proj_uN_0(x).0] = mk_tabletype_tabletype(at, lim, rt')) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- Expr_ok_const: `%|-%:%CONST`(C, v_expr, $valtype_addrtype(at)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, v_expr)) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt')) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elem_ok: `%|-%:%`(context, elem, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mk_Elem_ok{C : context, v_elemtype : elemtype, expr_lst : expr*, v_elemmode : elemmode}: + `%|-%:%`(C, ELEM_elem(v_elemtype, expr_lst, v_elemmode), v_elemtype) + -- Reftype_ok: `%|-%:OK`(C, v_elemtype) + -- (Expr_ok_const: `%|-%:%CONST`(C, v_expr, $valtype_reftype(v_elemtype)))*{v_expr <- expr_lst} + -- Elemmode_ok: `%|-%:%`(C, v_elemmode, v_elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(v_elemtype, expr_lst, v_elemmode)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Start_ok: `%|-%:OK`(context, start) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mk_Start_ok{C : context, x : idx}: + `%|-%:OK`(C, START_start(x)) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(mk_list_resulttype([]), mk_list_resulttype([]))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype([]), mk_list_resulttype([]))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Import_ok: `%|-%:%`(context, import, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mk_Import_ok{C : context, name_1 : name, name_2 : name, xt : externtype, var_0 : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), var_0) + -- Externtype_ok: `%|-%:OK`(C, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(var_0) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) + -- fun_clos_externtype: `%%%`(C, xt, var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Externidx_ok: `%|-%:%`(context, externidx, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule tag{C : context, x : idx, jt : tagtype}: + `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule global{C : context, x : idx, gt : globaltype}: + `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mem{C : context, x : idx, mt : memtype}: + `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule table{C : context, x : idx, tt : tabletype}: + `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Export_ok: `%|-%:%%`(context, export, name, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mk_Export_ok{C : context, v_name : name, v_externidx : externidx, xt : externtype}: + `%|-%:%%`(C, EXPORT_export(v_name, v_externidx), v_name, xt) + -- Externidx_ok: `%|-%:%`(C, v_externidx, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(v_name, v_externidx)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 +relation Globals_ok: `%|-%:%`(context, global*, globaltype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:181.1-182.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:184.1-187.54 + rule cons{C : context, global_1 : global, global_lst : global*, gt_1 : globaltype, gt_lst : globaltype*}: + `%|-%:%`(C, [global_1] ++ global_lst, [gt_1] ++ gt_lst) + -- Global_ok: `%|-%:%`(C, global_1, gt_1) + -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global_lst, gt_lst) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(v_global))*{v_global <- global_lst} + -- (wf_globaltype: `%`(gt))*{gt <- gt_lst} + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 +relation Types_ok: `%|-%:%`(context, type*, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:173.1-174.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:176.1-179.49 + rule cons{C : context, type_1 : type, type_lst : type*, dt_1_lst : deftype*, dt_lst : deftype*}: + `%|-%:%`(C, [type_1] ++ type_lst, dt_1_lst ++ dt_lst) + -- Type_ok: `%|-%:%`(C, type_1, dt_1_lst) + -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type_lst, dt_lst) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +syntax nonfuncs = + | mk_nonfuncs(global_lst : global*, mem_lst : mem*, table_lst : table*, elem_lst : elem*, start_opt : start?, export_lst : export*) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation wf_nonfuncs: `%`(nonfuncs) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule nonfuncs_case_0{global_lst : global*, mem_lst : mem*, table_lst : table*, elem_lst : elem*, start_opt : start?, export_lst : export*}: + `%`(mk_nonfuncs_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst)) + -- (wf_global: `%`(v_global))*{v_global <- global_lst} + -- (wf_mem: `%`(v_mem))*{v_mem <- mem_lst} + -- (wf_table: `%`(v_table))*{v_table <- table_lst} + -- (wf_elem: `%`(v_elem))*{v_elem <- elem_lst} + -- (wf_start: `%`(v_start))?{v_start <- start_opt} + -- (wf_export: `%`(v_export))*{v_export <- export_lst} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule fun_funcidx_nonfuncs_case_0{global_lst : global*, mem_lst : mem*, table_lst : table*, elem_lst : elem*, start_opt : start?, export_lst : export*, var_0 : funcidx*}: + `%%`(mk_nonfuncs_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst), var_0) + -- fun_funcidx_module: `%%`(MODULE_module(mk_list_list([]), mk_list_list([]), mk_list_list([]), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list([]), mk_list_list([]), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst)), var_0) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Module_ok: `|-%:%`(module, moduletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mk_Module_ok{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, C : context, xt_I_lst : externtype*, xt_E_lst : externtype*, dt'_lst : deftype*, C' : context, jt_lst : tagtype*, gt_lst : globaltype*, mt_lst : memtype*, tt_lst : tabletype*, dt_lst : deftype*, ok_lst : datatype*, rt_lst : reftype*, nm_lst : name*, jt_I_lst : tagtype*, mt_I_lst : memtype*, tt_I_lst : tabletype*, gt_I_lst : globaltype*, dt_I_lst : deftype*, x_lst : idx*, var_6 : deftype*, var_5 : tabletype*, var_4 : memtype*, var_3 : globaltype*, var_2 : tagtype*, var_1 : funcidx*, var_0 : moduletype}: + `|-%:%`(MODULE_module(mk_list_list(type_lst), mk_list_list(import_lst), mk_list_list(tag_lst), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list(func_lst), mk_list_list(data_lst), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst)), var_0) + -- Types_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type_lst, dt'_lst) + -- (Import_ok: `%|-%:%`({TYPES dt'_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, v_import, xt_I))*{v_import <- import_lst, xt_I <- xt_I_lst} + -- if (|import_lst| = |xt_I_lst|) + -- (Tag_ok: `%|-%:%`(C', v_tag, jt))*{jt <- jt_lst, v_tag <- tag_lst} + -- if (|jt_lst| = |tag_lst|) + -- Globals_ok: `%|-%:%`(C', global_lst, gt_lst) + -- (Mem_ok: `%|-%:%`(C', v_mem, mt))*{v_mem <- mem_lst, mt <- mt_lst} + -- if (|mem_lst| = |mt_lst|) + -- (Table_ok: `%|-%:%`(C', v_table, tt))*{v_table <- table_lst, tt <- tt_lst} + -- if (|table_lst| = |tt_lst|) + -- (Func_ok: `%|-%:%`(C, v_func, dt))*{dt <- dt_lst, v_func <- func_lst} + -- if (|dt_lst| = |func_lst|) + -- (Data_ok: `%|-%:%`(C, v_data, ok))*{v_data <- data_lst, ok <- ok_lst} + -- if (|data_lst| = |ok_lst|) + -- (Elem_ok: `%|-%:%`(C, v_elem, rt))*{v_elem <- elem_lst, rt <- rt_lst} + -- if (|elem_lst| = |rt_lst|) + -- (Start_ok: `%|-%:OK`(C, v_start))?{v_start <- start_opt} + -- (Export_ok: `%|-%:%%`(C, v_export, nm, xt_E))*{v_export <- export_lst, nm <- nm_lst, xt_E <- xt_E_lst} + -- if (|export_lst| = |nm_lst|) + -- if (|export_lst| = |xt_E_lst|) + -- if $disjoint_(syntax name, nm_lst) + -- if (C = C' +++ {TYPES [], TAGS jt_I_lst ++ jt_lst, GLOBALS gt_lst, MEMS mt_I_lst ++ mt_lst, TABLES tt_I_lst ++ tt_lst, FUNCS [], DATAS ok_lst, ELEMS rt_lst, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- if (C' = {TYPES dt'_lst, TAGS [], GLOBALS gt_I_lst, MEMS [], TABLES [], FUNCS dt_I_lst ++ dt_lst, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x_lst, RECS []}) + -- if (x_lst = var_1) + -- if (jt_I_lst = var_2) + -- if (gt_I_lst = var_3) + -- if (mt_I_lst = var_4) + -- if (tt_I_lst = var_5) + -- if (dt_I_lst = var_6) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- nm_lst} + -- wf_moduletype: `%`(var_0) + -- (wf_uN: `%%`(32, iter))*{iter <- var_1} + -- (wf_typeuse: `%`(iter))*{iter <- var_2} + -- (wf_globaltype: `%`(iter))*{iter <- var_3} + -- (wf_memtype: `%`(iter))*{iter <- var_4} + -- (wf_tabletype: `%`(iter))*{iter <- var_5} + -- wf_module: `%`(MODULE_module(mk_list_list(type_lst), mk_list_list(import_lst), mk_list_list(tag_lst), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list(func_lst), mk_list_list(data_lst), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst))) + -- wf_moduletype: `%`(mk_moduletype_moduletype(xt_I_lst, xt_E_lst)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES dt'_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES [], TAGS jt_I_lst ++ jt_lst, GLOBALS gt_lst, MEMS mt_I_lst ++ mt_lst, TABLES tt_I_lst ++ tt_lst, FUNCS [], DATAS ok_lst, ELEMS rt_lst, LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- wf_context: `%`({TYPES dt'_lst, TAGS [], GLOBALS gt_I_lst, MEMS [], TABLES [], FUNCS dt_I_lst ++ dt_lst, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x_lst, RECS []}) + -- wf_nonfuncs: `%`(mk_nonfuncs_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst)) + -- fun_funcsxt: `%%`(xt_I_lst, var_6) + -- fun_tablesxt: `%%`(xt_I_lst, var_5) + -- fun_memsxt: `%%`(xt_I_lst, var_4) + -- fun_globalsxt: `%%`(xt_I_lst, var_3) + -- fun_tagsxt: `%%`(xt_I_lst, var_2) + -- fun_funcidx_nonfuncs: `%%`(mk_nonfuncs_nonfuncs(global_lst, mem_lst, table_lst, elem_lst, start_opt, export_lst), var_1) + -- fun_clos_moduletype: `%%%`(C, mk_moduletype_moduletype(xt_I_lst, xt_E_lst), var_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed2 = + | mk_relaxed2(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed2_0(x : relaxed2) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed2_0{v_num_0 : nat}(mk_relaxed2_relaxed2(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed2: `%`(relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed2_case_0{i : nat}: + `%`(mk_relaxed2_relaxed2(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed4 = + | mk_relaxed4(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed4_0(x : relaxed4) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed4_0{v_num_0 : nat}(mk_relaxed4_relaxed4(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed4: `%`(relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed4_case_0{i : nat}: + `%`(mk_relaxed4_relaxed4(i)) + -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $fun_relaxed2(v_relaxed2 : relaxed2, syntax r_X, v_X : r_X, v_X_0 : r_X) : r_X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $fun_relaxed2{i : relaxed2, syntax r_X, X_1 : r_X, X_2 : r_X}(i, syntax r_X, X_1, X_2) = (if $ND then [X_1 X_2][$proj_relaxed2_0(i).0] else [X_1 X_2][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $fun_relaxed4(v_relaxed4 : relaxed4, syntax r_X, v_X : r_X, v_X_0 : r_X, v_X_1 : r_X, v_X_2 : r_X) : r_X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $fun_relaxed4{i : relaxed4, syntax r_X, X_1 : r_X, X_2 : r_X, X_3 : r_X, X_4 : r_X}(i, syntax r_X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][$proj_relaxed4_0(i).0] else [X_1 X_2 X_3 X_4][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmadd : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmadd_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmadd_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_fmadd) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmin : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmin_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmin_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmin) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmax : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_fmax_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_fmax_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_fmax) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_idot : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_idot_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_idot_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_idot) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_iq15mulr : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_iq15mulr_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_iq15mulr_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_iq15mulr) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_u : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_u_is_wf: `%`(ret_val : relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_u_is_wf_0{ret_val : relaxed4}: + `%`(ret_val) + -- if (ret_val = $R_trunc_u) + -- wf_relaxed4: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_s : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_trunc_s_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_trunc_s_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_trunc_s) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_swizzle : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_swizzle_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_swizzle_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_swizzle) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_laneselect : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation R_laneselect_is_wf: `%`(ret_val : relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule R_laneselect_is_wf_0{ret_val : relaxed2}: + `%`(ret_val) + -- if (ret_val = $R_laneselect) + -- wf_relaxed2: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $s33_to_u32(v_s33 : s33) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibits_(v_N : N, v_iN : iN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibits__is_wf: `%%%`(v_N : N, v_iN : iN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibits__is_wf_0{v_N : N, v_iN : iN, ret_val : bit*}: + `%%%`(v_N, v_iN, ret_val) + -- wf_uN: `%%`(v_N, v_iN) + -- if (ret_val = $ibits_(v_N, v_iN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbits_(v_N : N, v_fN : fN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbits__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : bit*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbits__is_wf_0{v_N : N, v_fN : fN, ret_val : bit*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $fbits_(v_N, v_fN)) + -- (wf_bit: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibytes_(v_N : N, v_iN : iN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ibytes__is_wf: `%%%`(v_N : N, v_iN : iN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ibytes__is_wf_0{v_N : N, v_iN : iN, ret_val : byte*}: + `%%%`(v_N, v_iN, ret_val) + -- wf_uN: `%%`(v_N, v_iN) + -- if (ret_val = $ibytes_(v_N, v_iN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbytes_(v_N : N, v_fN : fN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fbytes__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fbytes__is_wf_0{v_N : N, v_fN : fN, ret_val : byte*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $fbytes_(v_N, v_fN)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $nbytes_(v_numtype : numtype, v_num_ : num_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation nbytes__is_wf: `%%%`(v_numtype : numtype, v_num_ : num_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule nbytes__is_wf_0{v_numtype : numtype, v_num_ : num_, ret_val : byte*}: + `%%%`(v_numtype, v_num_, ret_val) + -- wf_num_: `%%`(v_numtype, v_num_) + -- if (ret_val = $nbytes_(v_numtype, v_num_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $vbytes_(v_vectype : vectype, v_vec_ : vec_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation vbytes__is_wf: `%%%`(v_vectype : vectype, v_vec_ : vec_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule vbytes__is_wf_0{v_vectype : vectype, v_vec_ : vec_, ret_val : byte*}: + `%%%`(v_vectype, v_vec_, ret_val) + -- wf_uN: `%%`($vsize(v_vectype), v_vec_) + -- if (ret_val = $vbytes_(v_vectype, v_vec_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zbytes_(v_storagetype : storagetype, v_lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zbytes__is_wf: `%%%`(v_storagetype : storagetype, v_lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zbytes__is_wf_0{v_storagetype : storagetype, v_lit_ : lit_, ret_val : byte*}: + `%%%`(v_storagetype, v_lit_, ret_val) + -- wf_storagetype: `%`(v_storagetype) + -- wf_lit_: `%%`(v_storagetype, v_lit_) + -- if (ret_val = $zbytes_(v_storagetype, v_lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cbytes_(v_Cnn : Cnn, v_lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cbytes__is_wf: `%%%`(v_Cnn : Cnn, v_lit_ : lit_, ret_val : byte*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cbytes__is_wf_0{v_Cnn : Cnn, v_lit_ : lit_, ret_val : byte*}: + `%%%`(v_Cnn, v_lit_, ret_val) + -- wf_lit_: `%%`($storagetype_Cnn(v_Cnn), v_lit_) + -- if (ret_val = $cbytes_(v_Cnn, v_lit_)) + -- (wf_byte: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibits_(v_N : N, var_0 : bit*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbits_(v_N : N, var_0 : bit*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbits__is_wf: `%%%`(v_N : N, var_0 : bit*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbits__is_wf_0{v_N : N, var_0 : bit*, ret_val : fN}: + `%%%`(v_N, var_0, ret_val) + -- (wf_bit: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbits_(v_N, var_0)) + -- wf_fN: `%%`(v_N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibytes_(v_N : N, var_0 : byte*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbytes_(v_N : N, var_0 : byte*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_fbytes__is_wf: `%%%`(v_N : N, var_0 : byte*, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_fbytes__is_wf_0{v_N : N, var_0 : byte*, ret_val : fN}: + `%%%`(v_N, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_fbytes_(v_N, var_0)) + -- wf_fN: `%%`(v_N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_nbytes_(v_numtype : numtype, var_0 : byte*) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_nbytes__is_wf: `%%%`(v_numtype : numtype, var_0 : byte*, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_nbytes__is_wf_0{v_numtype : numtype, var_0 : byte*, ret_val : num_}: + `%%%`(v_numtype, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_nbytes_(v_numtype, var_0)) + -- wf_num_: `%%`(v_numtype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_vbytes_(v_vectype : vectype, var_0 : byte*) : vec_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_zbytes_(v_storagetype : storagetype, var_0 : byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_zbytes__is_wf: `%%%`(v_storagetype : storagetype, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_zbytes__is_wf_0{v_storagetype : storagetype, var_0 : byte*, ret_val : lit_}: + `%%%`(v_storagetype, var_0, ret_val) + -- wf_storagetype: `%`(v_storagetype) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_zbytes_(v_storagetype, var_0)) + -- wf_lit_: `%%`(v_storagetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_cbytes_(v_Cnn : Cnn, var_0 : byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation inv_cbytes__is_wf: `%%%`(v_Cnn : Cnn, var_0 : byte*, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule inv_cbytes__is_wf_0{v_Cnn : Cnn, var_0 : byte*, ret_val : lit_}: + `%%%`(v_Cnn, var_0, ret_val) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $inv_cbytes_(v_Cnn, var_0)) + -- wf_lit_: `%%`($storagetype_Cnn(v_Cnn), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_signed_: `%%%`(N, nat, int) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_signed__case_0{v_N : nat, i : nat}: + `%%%`(v_N, i, (i : nat <:> int)) + -- if (i < (2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_signed__case_1{v_N : nat, i : nat}: + `%%%`(v_N, i, ((i : nat <:> int) - ((2 ^ v_N) : nat <:> int))) + -- if (((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ v_N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_inv_signed_: `%%%`(N, int, nat) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_inv_signed__case_0{v_N : nat, i : int}: + `%%%`(v_N, i, (i : int <:> nat)) + -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_inv_signed__case_1{v_N : nat, i : int}: + `%%%`(v_N, i, ((i + ((2 ^ v_N) : nat <:> int)) : int <:> nat)) + -- if ((- ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fun_sx(v_storagetype : storagetype) : sx?? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_sx(I32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_sx(I64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_sx(F32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_sx(F64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_sx(V128_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_sx(I8_storagetype) = ?(?(S_sx)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_sx(I16_storagetype) = ?(?(S_sx)) + def $fun_sx{x0 : storagetype}(x0) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fun_zero(v_lanetype : lanetype) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, mk_uN_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, mk_uN_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, mk_uN_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, mk_uN_uN(0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation zero_is_wf: `%%`(v_lanetype : lanetype, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule zero_is_wf_0{v_lanetype : lanetype, ret_val : lane_}: + `%%`(v_lanetype, ret_val) + -- if (ret_val = $fun_zero(v_lanetype)) + -- wf_lane_: `%%`(v_lanetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $bool(v_bool : bool) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(false) = 0 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(true) = 1 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $truncz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ceilz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_u_(v_N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_u_{v_N : nat, i : int}(v_N, i) = (if (i < (0 : nat <:> int)) then 0 else (if (i > (((2 ^ v_N) : nat <:> int) - (1 : nat <:> int))) then ((((2 ^ v_N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) else (i : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_s_(v_N : N, int : int) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_s_{v_N : nat, i : int}(v_N, i) = (if (i < - ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) then - ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) else (if (i > (((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) then (((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) else i)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ineg_(v_N : N, v_iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ineg_{v_N : nat, i_1 : uN}(v_N, i_1) = mk_uN_iN((((((2 ^ v_N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ v_N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iabs_(v_N : N, v_iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iabs_{v_N : nat, i_1 : uN, var_0 : int}(v_N, i_1) = (if (var_0 >= (0 : nat <:> int)) then i_1 else $ineg_(v_N, i_1)) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iclz_(v_N : N, v_iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ictz_(v_N : N, v_iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ipopcnt_(v_N : N, v_iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_iextend_: `%%%%%`(N, M, sx, iN, iN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_iextend__case_0{v_N : nat, v_M : nat, i : uN}: + `%%%%%`(v_N, v_M, U_sx, i, mk_uN_iN(($proj_uN_0(i).0 \ (2 ^ v_M)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_iextend__case_1{v_N : nat, v_M : nat, i : uN, var_1 : int, var_0 : nat}: + `%%%%%`(v_N, v_M, S_sx, i, mk_uN_iN(var_0)) + -- fun_signed_: `%%%`(v_M, ($proj_uN_0(i).0 \ (2 ^ v_M)), var_1) + -- fun_inv_signed_: `%%%`(v_N, var_1, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ v_N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_iN(((((((2 ^ v_N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ v_N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imul_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imul_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ v_N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_0{v_N : nat, i_1 : uN}: + `%%%%%`(v_N, U_sx, i_1, mk_uN_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_1{v_N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(v_N, U_sx, i_1, i_2, ?(mk_uN_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_2{v_N : nat, i_1 : uN}: + `%%%%%`(v_N, S_sx, i_1, mk_uN_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_3{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: + `%%%%%`(v_N, S_sx, i_1, i_2, ?()) + -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_4{v_N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(v_N, S_sx, i_1, i_2, ?(mk_uN_iN(var_0))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(v_N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_0{v_N : nat, i_1 : uN}: + `%%%%%`(v_N, U_sx, i_1, mk_uN_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_1{v_N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(v_N, U_sx, i_1, i_2, ?(mk_uN_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_2{v_N : nat, i_1 : uN}: + `%%%%%`(v_N, S_sx, i_1, mk_uN_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_3{v_N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(v_N, S_sx, i_1, i_2, ?(mk_uN_iN(var_0))) + -- if ((j_1 = var_1) /\ (j_2 = var_2)) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(v_N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imin_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = (if (var_0 <= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imax_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = (if (var_0 >= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_iN($sat_u_(v_N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{v_N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(v_N, S_sx, i_1, i_2) = mk_uN_iN(var_0) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(v_N, $sat_s_(v_N, (var_1 + var_2)), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_iN($sat_u_(v_N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{v_N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(v_N, S_sx, i_1, i_2) = mk_uN_iN(var_0) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(v_N, $sat_s_(v_N, (var_1 - var_2)), var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iq15mulr_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_q15mulr_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iavgr_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inot_(v_N : N, v_iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irev_(v_N : N, v_iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iand_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iandnot_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ior_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ixor_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishl_(v_N : N, v_iN : iN, v_u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishr_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotl_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotr_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibitselect_(v_N : N, v_iN : iN, v_iN_0 : iN, v_iN_1 : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_laneselect_(v_N : N, v_iN : iN, v_iN_0 : iN, v_iN_1 : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieqz_(v_N : N, v_iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieqz_{v_N : nat, i_1 : uN}(v_N, i_1) = mk_uN_u32($bool(($proj_uN_0(i_1).0 = 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inez_(v_N : N, v_iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inez_{v_N : nat, i_1 : uN}(v_N, i_1) = mk_uN_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieq_(v_N : N, v_iN : iN, v_iN_0 : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieq_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_u32($bool((i_1 = i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ine_(v_N : N, v_iN : iN, v_iN_0 : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ine_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, i_1, i_2) = mk_uN_u32($bool((i_1 =/= i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ilt_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool((var_0 < var_1))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $igt_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool((var_0 > var_1))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ile_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool((var_0 <= var_1))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ige_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool((var_0 >= var_1))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fabs_(v_N : N, v_fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fabs__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fabs__is_wf_0{v_N : N, v_fN : fN, ret_val : fN*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $fabs_(v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fneg_(v_N : N, v_fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fneg__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fneg__is_wf_0{v_N : N, v_fN : fN, ret_val : fN*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $fneg_(v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsqrt_(v_N : N, v_fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsqrt__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsqrt__is_wf_0{v_N : N, v_fN : fN, ret_val : fN*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $fsqrt_(v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fceil_(v_N : N, v_fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fceil__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fceil__is_wf_0{v_N : N, v_fN : fN, ret_val : fN*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $fceil_(v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ffloor_(v_N : N, v_fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ffloor__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ffloor__is_wf_0{v_N : N, v_fN : fN, ret_val : fN*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $ffloor_(v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ftrunc_(v_N : N, v_fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation ftrunc__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule ftrunc__is_wf_0{v_N : N, v_fN : fN, ret_val : fN*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $ftrunc_(v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fnearest_(v_N : N, v_fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fnearest__is_wf: `%%%`(v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fnearest__is_wf_0{v_N : N, v_fN : fN, ret_val : fN*}: + `%%%`(v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- if (ret_val = $fnearest_(v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fadd_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fadd__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fadd__is_wf_0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fadd_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsub_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fsub__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fsub__is_wf_0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fsub_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmul_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmul__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmul__is_wf_0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fmul_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fdiv_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fdiv__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fdiv__is_wf_0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fdiv_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmin_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmin__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmin__is_wf_0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fmin_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmax_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fmax__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fmax__is_wf_0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fmax_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmin_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmin__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmin__is_wf_0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fpmin_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmax_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fpmax__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fpmax__is_wf_0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fpmax_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_min_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_min__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_min__is_wf_0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $frelaxed_min_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_max_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_max__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_max__is_wf_0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $frelaxed_max_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fcopysign_(v_N : N, v_fN : fN, v_fN_0 : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fcopysign__is_wf: `%%%%`(v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fcopysign__is_wf_0{v_N : N, v_fN : fN, fN_0 : fN, ret_val : fN*}: + `%%%%`(v_N, v_fN, fN_0, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- if (ret_val = $fcopysign_(v_N, v_fN, fN_0)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $feq_(v_N : N, v_fN : fN, v_fN_0 : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fne_(v_N : N, v_fN : fN, v_fN_0 : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $flt_(v_N : N, v_fN : fN, v_fN_0 : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fgt_(v_N : N, v_fN : fN, v_fN_0 : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fle_(v_N : N, v_fN : fN, v_fN_0 : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fge_(v_N : N, v_fN : fN, v_fN_0 : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_madd_(v_N : N, v_fN : fN, v_fN_0 : fN, v_fN_1 : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_madd__is_wf: `%%%%%`(v_N : N, v_fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_madd__is_wf_0{v_N : N, v_fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(v_N, v_fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- wf_fN: `%%`(v_N, fN_1) + -- if (ret_val = $frelaxed_madd_(v_N, v_fN, fN_0, fN_1)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_nmadd_(v_N : N, v_fN : fN, v_fN_0 : fN, v_fN_1 : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation frelaxed_nmadd__is_wf: `%%%%%`(v_N : N, v_fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule frelaxed_nmadd__is_wf_0{v_N : N, v_fN : fN, fN_0 : fN, fN_1 : fN, ret_val : fN*}: + `%%%%%`(v_N, v_fN, fN_0, fN_1, ret_val) + -- wf_fN: `%%`(v_N, v_fN) + -- wf_fN: `%%`(v_N, fN_0) + -- wf_fN: `%%`(v_N, fN_1) + -- if (ret_val = $frelaxed_nmadd_(v_N, v_fN, fN_0, fN_1)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $wrap__(v_M : M, v_N : N, v_iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $extend__(v_M : M, v_N : N, v_sx : sx, v_iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc__(v_M : M, v_N : N, v_sx : sx, v_fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc_sat__(v_M : M, v_N : N, v_sx : sx, v_fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relaxed_trunc__(v_M : M, v_N : N, v_sx : sx, v_fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $demote__(v_M : M, v_N : N, v_fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation demote___is_wf: `%%%%`(v_M : M, v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule demote___is_wf_0{v_M : M, v_N : N, v_fN : fN, ret_val : fN*}: + `%%%%`(v_M, v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_M, v_fN) + -- if (ret_val = $demote__(v_M, v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $promote__(v_M : M, v_N : N, v_fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation promote___is_wf: `%%%%`(v_M : M, v_N : N, v_fN : fN, ret_val : fN*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule promote___is_wf_0{v_M : M, v_N : N, v_fN : fN, ret_val : fN*}: + `%%%%`(v_M, v_N, v_fN, ret_val) + -- wf_fN: `%%`(v_M, v_fN) + -- if (ret_val = $promote__(v_M, v_N, v_fN)) + -- (wf_fN: `%%`(v_N, ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $convert__(v_M : M, v_N : N, v_sx : sx, v_iN : iN) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation convert___is_wf: `%%%%%`(v_M : M, v_N : N, v_sx : sx, v_iN : iN, ret_val : fN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule convert___is_wf_0{v_M : M, v_N : N, v_sx : sx, v_iN : iN, ret_val : fN}: + `%%%%%`(v_M, v_N, v_sx, v_iN, ret_val) + -- wf_uN: `%%`(v_M, v_iN) + -- if (ret_val = $convert__(v_M, v_N, v_sx, v_iN)) + -- wf_fN: `%%`(v_N, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $narrow__(v_M : M, v_N : N, v_sx : sx, v_iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, v_num_ : num_) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation reinterpret___is_wf: `%%%%`(numtype_1 : numtype, numtype_2 : numtype, v_num_ : num_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule reinterpret___is_wf_0{numtype_1 : numtype, numtype_2 : numtype, v_num_ : num_, ret_val : num_}: + `%%%%`(numtype_1, numtype_2, v_num_, ret_val) + -- wf_num_: `%%`(numtype_1, v_num_) + -- if (ret_val = $reinterpret__(numtype_1, numtype_2, v_num_)) + -- wf_num_: `%%`(numtype_2, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lpacknum_(v_lanetype : lanetype, v_num_ : num_) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lpacknum__is_wf: `%%%`(v_lanetype : lanetype, v_num_ : num_, ret_val : lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lpacknum__is_wf_0{v_lanetype : lanetype, v_num_ : num_, ret_val : lane_}: + `%%%`(v_lanetype, v_num_, ret_val) + -- wf_num_: `%%`($lunpack(v_lanetype), v_num_) + -- if (ret_val = $lpacknum_(v_lanetype, v_num_)) + -- wf_lane_: `%%`(v_lanetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(I32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(I64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(F32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(F64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : lit_}(V128_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cpacknum__is_wf: `%%%`(v_storagetype : storagetype, v_lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cpacknum__is_wf_0{v_storagetype : storagetype, v_lit_ : lit_, ret_val : lit_}: + `%%%`(v_storagetype, v_lit_, ret_val) + -- wf_storagetype: `%`(v_storagetype) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(v_storagetype))), v_lit_) + -- if ($cunpack(v_storagetype) =/= ?()) + -- if (ret_val = $cpacknum_(v_storagetype, v_lit_)) + -- wf_lit_: `%%`(v_storagetype, ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lunpacknum_(v_lanetype : lanetype, v_lane_ : lane_) : num_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(I32_lanetype, mk_lane__0_lane_(I32_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(I64_lanetype, mk_lane__0_lane_(I64_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(F32_lanetype, mk_lane__0_lane_(F32_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation lunpacknum__is_wf: `%%%`(v_lanetype : lanetype, v_lane_ : lane_, ret_val : num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule lunpacknum__is_wf_0{v_lanetype : lanetype, v_lane_ : lane_, ret_val : num_}: + `%%%`(v_lanetype, v_lane_, ret_val) + -- wf_lane_: `%%`(v_lanetype, v_lane_) + -- if (ret_val = $lunpacknum_(v_lanetype, v_lane_)) + -- wf_num_: `%%`($lunpack(v_lanetype), ret_val) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cunpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(I32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(I64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(F32_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(F64_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : lit_}(V128_storagetype, c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cunpacknum__is_wf: `%%%`(v_storagetype : storagetype, v_lit_ : lit_, ret_val : lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cunpacknum__is_wf_0{v_storagetype : storagetype, v_lit_ : lit_, ret_val : lit_}: + `%%%`(v_storagetype, v_lit_, ret_val) + -- wf_storagetype: `%`(v_storagetype) + -- wf_lit_: `%%`(v_storagetype, v_lit_) + -- if (ret_val = $cunpacknum_(v_storagetype, v_lit_)) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(v_storagetype))), ret_val) + -- if ($cunpack(v_storagetype) =/= ?()) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_0{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_1{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_2{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_3{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_4{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_5{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_6{v_M : nat, i : uN, var_0 : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(v_M))), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), v_M, S_sx, i, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_7{v_M : nat, i : uN, var_0 : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(v_M))), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), v_M, S_sx, i, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_8{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0_1)*{iter_0_1 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_9{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0_2)*{iter_0_2 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_10{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0_3)*{iter_0_3 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_11{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0_4)*{iter_0_4 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_12{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0_5)*{iter_0_5 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_13{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0_6)*{iter_0_6 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_14{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0_7)*{iter_0_7 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_15{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0_8)*{iter_0_8 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_16{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0_9)*{iter_0_9 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_17{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0_10)*{iter_0_10 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_18{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0_11)*{iter_0_11 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_19{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0_12)*{iter_0_12 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_20{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0_13)*{iter_0_13 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_21{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0_14)*{iter_0_14 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation unop__is_wf: `%%%%`(v_numtype : numtype, v_unop_ : unop_, v_num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule unop__is_wf_0{v_numtype : numtype, v_unop_ : unop_, v_num_ : num_, ret_val : num_*, var_0 : num_*}: + `%%%%`(v_numtype, v_unop_, v_num_, ret_val) + -- wf_unop_: `%%`(v_numtype, v_unop_) + -- wf_num_: `%%`(v_numtype, v_num_) + -- if (ret_val = var_0) + -- (wf_num_: `%%`(v_numtype, ret_val))*{ret_val <- ret_val} + -- fun_unop_: `%%%%`(v_numtype, v_unop_, v_num_, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_binop_: `%%%%%`(numtype, binop_, num_, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_0{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_1{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_2{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_3{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_4{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_5{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_6{v_sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0_15)*{iter_0_15 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_7{v_sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0_16)*{iter_0_16 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_8{v_sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0_17)*{iter_0_17 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_9{v_sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0_18)*{iter_0_18 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_10{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_11{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_12{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_13{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_14{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_15{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_16{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_17{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_18{v_sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_19{v_sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_20{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_21{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_22{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_23{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_24{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0_19)*{iter_0_19 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_25{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0_20)*{iter_0_20 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_26{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0_21)*{iter_0_21 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_27{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0_22)*{iter_0_22 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_28{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0_23)*{iter_0_23 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_29{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0_24)*{iter_0_24 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_30{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0_25)*{iter_0_25 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_31{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0_26)*{iter_0_26 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_32{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0_27)*{iter_0_27 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_33{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0_28)*{iter_0_28 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_34{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0_29)*{iter_0_29 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_35{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0_30)*{iter_0_30 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_36{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0_31)*{iter_0_31 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_37{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0_32)*{iter_0_32 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation binop__is_wf: `%%%%%`(v_numtype : numtype, v_binop_ : binop_, v_num_ : num_, num__0 : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule binop__is_wf_0{v_numtype : numtype, v_binop_ : binop_, v_num_ : num_, num__0 : num_, ret_val : num_*, var_0 : num_*}: + `%%%%%`(v_numtype, v_binop_, v_num_, num__0, ret_val) + -- wf_binop_: `%%`(v_numtype, v_binop_) + -- wf_num_: `%%`(v_numtype, v_num_) + -- wf_num_: `%%`(v_numtype, num__0) + -- if (ret_val = var_0) + -- (wf_num_: `%%`(v_numtype, ret_val))*{ret_val <- ret_val} + -- fun_binop_: `%%%%%`(v_numtype, v_binop_, v_num_, num__0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fun_testop_(v_numtype : numtype, v_testop_ : testop_, v_num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_testop_{i : uN}(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I32_Inn)), i) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_testop_{i : uN}(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I64_Inn)), i) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fun_relop_(v_numtype : numtype, v_relop_ : relop_, v_num_ : num_, v_num__0 : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $fun_relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_cvtop__: `%%%%%`(numtype, numtype, cvtop__, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_0{v_sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_1{v_sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_2{v_sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_3{v_sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_4{i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_5{i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_6{i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_7{i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_8{v_sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0_33)*{iter_0_33 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_9{v_sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0_34)*{iter_0_34 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_10{v_sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0_35)*{iter_0_35 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_11{v_sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0_36)*{iter_0_36 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_12{v_sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0_37)*{iter_0_37 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_13{v_sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0_38)*{iter_0_38 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_14{v_sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0_39)*{iter_0_39 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_15{v_sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0_40)*{iter_0_40 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_16{v_sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_17{v_sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_18{v_sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_19{v_sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))]) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_20{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0_41)*{iter_0_41 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_21{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0_42)*{iter_0_42 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_22{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0_43)*{iter_0_43 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_23{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0_44)*{iter_0_44 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_24{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0_45)*{iter_0_45 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_25{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0_46)*{iter_0_46 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_26{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0_47)*{iter_0_47 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_27{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0_48)*{iter_0_48 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_28{i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_29{i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_30{i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_31{i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_32{f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_33{f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_34{f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_35{f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation cvtop___is_wf: `%%%%%`(numtype_1 : numtype, numtype_2 : numtype, v_cvtop__ : cvtop__, v_num_ : num_, ret_val : num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule cvtop___is_wf_0{numtype_1 : numtype, numtype_2 : numtype, v_cvtop__ : cvtop__, v_num_ : num_, ret_val : num_*, var_0 : num_*}: + `%%%%%`(numtype_1, numtype_2, v_cvtop__, v_num_, ret_val) + -- wf_cvtop__: `%%%`(numtype_1, numtype_2, v_cvtop__) + -- wf_num_: `%%`(numtype_1, v_num_) + -- if (ret_val = var_0) + -- (wf_num_: `%%`(numtype_2, ret_val))*{ret_val <- ret_val} + -- fun_cvtop__: `%%%%%`(numtype_1, numtype_2, v_cvtop__, v_num_, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lanes_(v_shape : shape, v_vec_ : vec_) : lane_* + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lanes__is_wf: `%%%`(v_shape : shape, v_vec_ : vec_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lanes__is_wf_0{v_shape : shape, v_vec_ : vec_, ret_val : lane_*}: + `%%%`(v_shape, v_vec_, ret_val) + -- wf_shape: `%`(v_shape) + -- wf_uN: `%%`(128, v_vec_) + -- if (ret_val = $lanes_(v_shape, v_vec_)) + -- (wf_lane_: `%%`($fun_lanetype(v_shape), ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $inv_lanes_(v_shape : shape, var_0 : lane_*) : vec_ + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_zeroop: `%%%%`(shape, shape, vcvtop__, zero?) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_0{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_1{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_2{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_3{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_4{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_5{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_6{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_7{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_8{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_9{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_10{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_11{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_12{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_13{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_14{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_15{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_16{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_17{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_18{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_19{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_20{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_21{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_22{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_23{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_24{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_25{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_26{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_27{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_28{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_29{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_30{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_31{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_32{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_33{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_34{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_35{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_36{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_37{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_38{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_39{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_40{M_1 : nat, M_2 : nat, v_zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?(v_zero)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_41{M_1 : nat, M_2 : nat, v_zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?(v_zero)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_42{M_1 : nat, M_2 : nat, v_zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?(v_zero)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_43{M_1 : nat, M_2 : nat, v_zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?(v_zero)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_44{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_45{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_46{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_47{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_halfop: `%%%%`(shape, shape, vcvtop__, half?) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_0{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_1{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_2{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_3{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_4{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_5{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_6{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_7{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_8{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_9{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_10{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_11{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_12{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_13{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_14{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_15{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_16{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_17{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_18{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_19{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_20{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_21{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_22{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_23{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_24{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_25{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_26{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_27{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_28{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_29{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_30{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_31{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_32{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_33{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_34{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_35{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_36{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_37{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I8_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_38{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_39{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I16_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_40{M_1 : nat, M_2 : nat, v_zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_41{M_1 : nat, M_2 : nat, v_zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_42{M_1 : nat, M_2 : nat, v_zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_43{M_1 : nat, M_2 : nat, v_zero : zero, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?()) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_44{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_45{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_46{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_47{M_1 : nat, M_2 : nat, M_1_0 : nat, M_2_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fun_half(v_half : half, nat : nat, nat_0 : nat) : nat + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_half{i : nat, j : nat}(LOW_half, i, j) = i + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fun_half{i : nat, j : nat}(HIGH_half, i, j) = j + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $iswizzle_lane_(v_N : N, var_0 : iN*, v_iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $iswizzle_lane_{v_N : nat, c_lst : iN*, i : uN}(v_N, c_lst, i) = (if ($proj_uN_0(i).0 < |c_lst|) then c_lst[$proj_uN_0(i).0] else mk_uN_iN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $irelaxed_swizzle_lane_(v_N : N, var_0 : iN*, v_iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{v_N : nat, c_lst : iN*, i : uN, var_0 : int}(v_N, c_lst, i) = (if ($proj_uN_0(i).0 < |c_lst|) then c_lst[$proj_uN_0(i).0] else (if (var_0 < (0 : nat <:> int)) then mk_uN_iN(0) else $fun_relaxed2($R_swizzle, syntax iN, mk_uN_iN(0), c_lst[($proj_uN_0(i).0 \ |c_lst|)]))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i).0, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivunop_(v_shape : shape, def $f_(v_N : N, v_iN : iN) : iN, v_vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c_4)*{c_4 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_2)))*{c_1_2 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_5))*{iter_5 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_3)))))*{c_1_3 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c_6)*{c_6 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_5)))*{c_1_5 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_6))*{iter_6 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_6)))))*{c_1_6 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c_8)*{c_8 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_8)))*{c_1_8 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_7))*{iter_7 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_9)))))*{c_1_9 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c_10)*{c_10 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_11)))*{c_1_11 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_8))*{iter_8 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_12)))))*{c_1_12 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvunop_(v_shape : shape, def $f_(v_N : N, v_fN : fN) : fN*, v_vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{v_M : nat, def $f_(v_N : N, v_fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), c_lst_2)*{c_lst_2 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_49))*{iter_0_49 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_14)))))}*{c_1_14 <- c_1_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), iter_9))*{iter_9 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter_11))*{iter_11 <- iter_10}*{iter_10 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_50))*{iter_0_50 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_15)))))}*{c_1_15 <- c_1_lst})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter_12))*{iter_12 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_16)))))}*{c_1_16 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_51))))*{iter_0_51 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_17)))))}*{c_1_17 <- c_1_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{v_M : nat, def $f_(v_N : N, v_fN : fN) : fN*, v_1 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), c_lst_4)*{c_lst_4 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_52))*{iter_0_52 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_19)))))}*{c_1_19 <- c_1_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), iter_13))*{iter_13 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter_15))*{iter_15 <- iter_14}*{iter_14 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_53))*{iter_0_53 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_20)))))}*{c_1_20 <- c_1_lst})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter_16))*{iter_16 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_21)))))}*{c_1_21 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_54))))*{iter_0_54 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_22)))))}*{c_1_22 <- c_1_lst} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_vec_ : vec_, v_vec__0 : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c_16)*{c_16 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_24)), !($proj_lane__2(c_2_2)))*{c_1_24 <- c_1_lst, c_2_2 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_17))*{iter_17 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_18))*{iter_18 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_25)), !($proj_lane__2(c_2_3)))))*{c_1_25 <- c_1_lst, c_2_3 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c_18)*{c_18 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_27)), !($proj_lane__2(c_2_5)))*{c_1_27 <- c_1_lst, c_2_5 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_19))*{iter_19 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_20))*{iter_20 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_28)), !($proj_lane__2(c_2_6)))))*{c_1_28 <- c_1_lst, c_2_6 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c_20)*{c_20 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_30)), !($proj_lane__2(c_2_8)))*{c_1_30 <- c_1_lst, c_2_8 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_21))*{iter_21 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_22))*{iter_22 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_31)), !($proj_lane__2(c_2_9)))))*{c_1_31 <- c_1_lst, c_2_9 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c_22)*{c_22 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_33)), !($proj_lane__2(c_2_11)))*{c_1_33 <- c_1_lst, c_2_11 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_23))*{iter_23 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_24))*{iter_24 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_34)), !($proj_lane__2(c_2_12)))))*{c_1_34 <- c_1_lst, c_2_12 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c_24)*{c_24 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_36)), !($proj_lane__2(c_2_14)))*{c_1_36 <- c_1_lst, c_2_14 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_25))*{iter_25 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_26))*{iter_26 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_37)), !($proj_lane__2(c_2_15)))))*{c_1_37 <- c_1_lst, c_2_15 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c_26)*{c_26 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_39)), !($proj_lane__2(c_2_17)))*{c_1_39 <- c_1_lst, c_2_17 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_27))*{iter_27 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_28))*{iter_28 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_40)), !($proj_lane__2(c_2_18)))))*{c_1_40 <- c_1_lst, c_2_18 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c_28)*{c_28 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_42)), !($proj_lane__2(c_2_20)))*{c_1_42 <- c_1_lst, c_2_20 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_29))*{iter_29 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_30))*{iter_30 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_43)), !($proj_lane__2(c_2_21)))))*{c_1_43 <- c_1_lst, c_2_21 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c_30)*{c_30 <- c_lst})] + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_45)), !($proj_lane__2(c_2_23)))*{c_1_45 <- c_1_lst, c_2_23 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_31))*{iter_31 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_32))*{iter_32 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_46)), !($proj_lane__2(c_2_24)))))*{c_1_46 <- c_1_lst, c_2_24 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsxnd_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), c_lst_6)*{c_lst_6 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0_55)*{iter_0_55 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_48)), !($proj_lane__2(c_2_26)))}*{c_1_48 <- c_1_lst, c_2_26 <- c_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_33))*{iter_33 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_34))*{iter_34 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), iter_36))*{iter_36 <- iter_35}*{iter_35 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0_56)*{iter_0_56 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_49)), !($proj_lane__2(c_2_27)))}*{c_1_49 <- c_1_lst, c_2_27 <- c_2_lst})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_37))*{iter_37 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_50)), !($proj_lane__2(c_2_28)))}*{c_1_50 <- c_1_lst, c_2_28 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0_57)))*{iter_0_57 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_51)), !($proj_lane__2(c_2_29)))}*{c_1_51 <- c_1_lst, c_2_29 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), c_lst_8)*{c_lst_8 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0_58)*{iter_0_58 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_53)), !($proj_lane__2(c_2_31)))}*{c_1_53 <- c_1_lst, c_2_31 <- c_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_38))*{iter_38 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_39))*{iter_39 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), iter_41))*{iter_41 <- iter_40}*{iter_40 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0_59)*{iter_0_59 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_54)), !($proj_lane__2(c_2_32)))}*{c_1_54 <- c_1_lst, c_2_32 <- c_2_lst})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_42))*{iter_42 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_55)), !($proj_lane__2(c_2_33)))}*{c_1_55 <- c_1_lst, c_2_33 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0_60)))*{iter_0_60 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_56)), !($proj_lane__2(c_2_34)))}*{c_1_56 <- c_1_lst, c_2_34 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), c_lst_10)*{c_lst_10 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0_61)*{iter_0_61 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_58)), !($proj_lane__2(c_2_36)))}*{c_1_58 <- c_1_lst, c_2_36 <- c_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_43))*{iter_43 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_44))*{iter_44 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), iter_46))*{iter_46 <- iter_45}*{iter_45 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0_62)*{iter_0_62 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_59)), !($proj_lane__2(c_2_37)))}*{c_1_59 <- c_1_lst, c_2_37 <- c_2_lst})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_47))*{iter_47 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_60)), !($proj_lane__2(c_2_38)))}*{c_1_60 <- c_1_lst, c_2_38 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0_63)))*{iter_0_63 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_61)), !($proj_lane__2(c_2_39)))}*{c_1_61 <- c_1_lst, c_2_39 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), c_lst_12)*{c_lst_12 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0_64)*{iter_0_64 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_63)), !($proj_lane__2(c_2_41)))}*{c_1_63 <- c_1_lst, c_2_41 <- c_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_48))*{iter_48 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_49))*{iter_49 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), iter_51))*{iter_51 <- iter_50}*{iter_50 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0_65)*{iter_0_65 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_64)), !($proj_lane__2(c_2_42)))}*{c_1_64 <- c_1_lst, c_2_42 <- c_2_lst})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_52))*{iter_52 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_65)), !($proj_lane__2(c_2_43)))}*{c_1_65 <- c_1_lst, c_2_43 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0_66)))*{iter_0_66 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_66)), !($proj_lane__2(c_2_44)))}*{c_1_66 <- c_1_lst, c_2_44 <- c_2_lst} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvbinop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_vec_ : vec_, v_vec__0 : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), c_lst_14)*{c_lst_14 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_67))*{iter_0_67 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_68)))), !($proj_num__1(!($proj_lane__0(c_2_46)))))}*{c_1_68 <- c_1_lst, c_2_46 <- c_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), iter_53))*{iter_53 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), iter_54))*{iter_54 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter_56))*{iter_56 <- iter_55}*{iter_55 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_68))*{iter_0_68 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_69)))), !($proj_num__1(!($proj_lane__0(c_2_47)))))}*{c_1_69 <- c_1_lst, c_2_47 <- c_2_lst})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter_57))*{iter_57 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_70)))), !($proj_num__1(!($proj_lane__0(c_2_48)))))}*{c_1_70 <- c_1_lst, c_2_48 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_69))))*{iter_0_69 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_71)))), !($proj_num__1(!($proj_lane__0(c_2_49)))))}*{c_1_71 <- c_1_lst, c_2_49 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), c_lst_16)*{c_lst_16 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_70))*{iter_0_70 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_73)))), !($proj_num__1(!($proj_lane__0(c_2_51)))))}*{c_1_73 <- c_1_lst, c_2_51 <- c_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), iter_58))*{iter_58 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), iter_59))*{iter_59 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter_61))*{iter_61 <- iter_60}*{iter_60 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_71))*{iter_0_71 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_74)))), !($proj_num__1(!($proj_lane__0(c_2_52)))))}*{c_1_74 <- c_1_lst, c_2_52 <- c_2_lst})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter_62))*{iter_62 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_75)))), !($proj_num__1(!($proj_lane__0(c_2_53)))))}*{c_1_75 <- c_1_lst, c_2_53 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_72))))*{iter_0_72 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_76)))), !($proj_num__1(!($proj_lane__0(c_2_54)))))}*{c_1_76 <- c_1_lst, c_2_54 <- c_2_lst} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivternopnd_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), c_lst_18)*{c_lst_18 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_3) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0_73)*{iter_0_73 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_78)), !($proj_lane__2(c_2_56)), !($proj_lane__2(c_3_2)))}*{c_1_78 <- c_1_lst, c_2_56 <- c_2_lst, c_3_2 <- c_3_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_63))*{iter_63 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_64))*{iter_64 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_65))*{iter_65 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), iter_67))*{iter_67 <- iter_66}*{iter_66 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0_74)*{iter_0_74 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_79)), !($proj_lane__2(c_2_57)), !($proj_lane__2(c_3_3)))}*{c_1_79 <- c_1_lst, c_2_57 <- c_2_lst, c_3_3 <- c_3_lst})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_68))*{iter_68 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_80)), !($proj_lane__2(c_2_58)), !($proj_lane__2(c_3_4)))}*{c_1_80 <- c_1_lst, c_2_58 <- c_2_lst, c_3_4 <- c_3_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0_75)))*{iter_0_75 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_81)), !($proj_lane__2(c_2_59)), !($proj_lane__2(c_3_5)))}*{c_1_81 <- c_1_lst, c_2_59 <- c_2_lst, c_3_5 <- c_3_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), c_lst_20)*{c_lst_20 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_3) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0_76)*{iter_0_76 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_83)), !($proj_lane__2(c_2_61)), !($proj_lane__2(c_3_7)))}*{c_1_83 <- c_1_lst, c_2_61 <- c_2_lst, c_3_7 <- c_3_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_69))*{iter_69 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_70))*{iter_70 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_71))*{iter_71 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), iter_73))*{iter_73 <- iter_72}*{iter_72 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0_77)*{iter_0_77 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_84)), !($proj_lane__2(c_2_62)), !($proj_lane__2(c_3_8)))}*{c_1_84 <- c_1_lst, c_2_62 <- c_2_lst, c_3_8 <- c_3_lst})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_74))*{iter_74 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_85)), !($proj_lane__2(c_2_63)), !($proj_lane__2(c_3_9)))}*{c_1_85 <- c_1_lst, c_2_63 <- c_2_lst, c_3_9 <- c_3_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0_78)))*{iter_0_78 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_86)), !($proj_lane__2(c_2_64)), !($proj_lane__2(c_3_10)))}*{c_1_86 <- c_1_lst, c_2_64 <- c_2_lst, c_3_10 <- c_3_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), c_lst_22)*{c_lst_22 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_3) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0_79)*{iter_0_79 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_88)), !($proj_lane__2(c_2_66)), !($proj_lane__2(c_3_12)))}*{c_1_88 <- c_1_lst, c_2_66 <- c_2_lst, c_3_12 <- c_3_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_75))*{iter_75 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_76))*{iter_76 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_77))*{iter_77 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), iter_79))*{iter_79 <- iter_78}*{iter_78 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0_80)*{iter_0_80 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_89)), !($proj_lane__2(c_2_67)), !($proj_lane__2(c_3_13)))}*{c_1_89 <- c_1_lst, c_2_67 <- c_2_lst, c_3_13 <- c_3_lst})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_80))*{iter_80 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_90)), !($proj_lane__2(c_2_68)), !($proj_lane__2(c_3_14)))}*{c_1_90 <- c_1_lst, c_2_68 <- c_2_lst, c_3_14 <- c_3_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0_81)))*{iter_0_81 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_91)), !($proj_lane__2(c_2_69)), !($proj_lane__2(c_3_15)))}*{c_1_91 <- c_1_lst, c_2_69 <- c_2_lst, c_3_15 <- c_3_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), c_lst_24)*{c_lst_24 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_3) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0_82)*{iter_0_82 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_93)), !($proj_lane__2(c_2_71)), !($proj_lane__2(c_3_17)))}*{c_1_93 <- c_1_lst, c_2_71 <- c_2_lst, c_3_17 <- c_3_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_81))*{iter_81 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_82))*{iter_82 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_83))*{iter_83 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), iter_85))*{iter_85 <- iter_84}*{iter_84 <- $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0_83)*{iter_0_83 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_94)), !($proj_lane__2(c_2_72)), !($proj_lane__2(c_3_18)))}*{c_1_94 <- c_1_lst, c_2_72 <- c_2_lst, c_3_18 <- c_3_lst})} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_86))*{iter_86 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_95)), !($proj_lane__2(c_2_73)), !($proj_lane__2(c_3_19)))}*{c_1_95 <- c_1_lst, c_2_73 <- c_2_lst, c_3_19 <- c_3_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0_84)))*{iter_0_84 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_96)), !($proj_lane__2(c_2_74)), !($proj_lane__2(c_3_20)))}*{c_1_96 <- c_1_lst, c_2_74 <- c_2_lst, c_3_20 <- c_3_lst} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvternop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN) : fN*, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), c_lst_26)*{c_lst_26 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2) + -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_3) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_85))*{iter_0_85 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_98)))), !($proj_num__1(!($proj_lane__0(c_2_76)))), !($proj_num__1(!($proj_lane__0(c_3_22)))))}*{c_1_98 <- c_1_lst, c_2_76 <- c_2_lst, c_3_22 <- c_3_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), iter_87))*{iter_87 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), iter_88))*{iter_88 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), iter_89))*{iter_89 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), iter_91))*{iter_91 <- iter_90}*{iter_90 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_86))*{iter_0_86 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_99)))), !($proj_num__1(!($proj_lane__0(c_2_77)))), !($proj_num__1(!($proj_lane__0(c_3_23)))))}*{c_1_99 <- c_1_lst, c_2_77 <- c_2_lst, c_3_23 <- c_3_lst})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F32_Fnn)), iter_92))*{iter_92 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_100)))), !($proj_num__1(!($proj_lane__0(c_2_78)))), !($proj_num__1(!($proj_lane__0(c_3_24)))))}*{c_1_100 <- c_1_lst, c_2_78 <- c_2_lst, c_3_24 <- c_3_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0_87))))*{iter_0_87 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_101)))), !($proj_num__1(!($proj_lane__0(c_2_79)))), !($proj_num__1(!($proj_lane__0(c_3_25)))))}*{c_1_101 <- c_1_lst, c_2_79 <- c_2_lst, c_3_25 <- c_3_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), c_lst_28)*{c_lst_28 <- c_lst_lst} + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2) + -- let{c_3_lst : lane_*} c_3_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_3) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_88))*{iter_0_88 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_103)))), !($proj_num__1(!($proj_lane__0(c_2_81)))), !($proj_num__1(!($proj_lane__0(c_3_27)))))}*{c_1_103 <- c_1_lst, c_2_81 <- c_2_lst, c_3_27 <- c_3_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), iter_93))*{iter_93 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), iter_94))*{iter_94 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), iter_95))*{iter_95 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_3)} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), iter_97))*{iter_97 <- iter_96}*{iter_96 <- $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_89))*{iter_0_89 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_104)))), !($proj_num__1(!($proj_lane__0(c_2_82)))), !($proj_num__1(!($proj_lane__0(c_3_28)))))}*{c_1_104 <- c_1_lst, c_2_82 <- c_2_lst, c_3_28 <- c_3_lst})} + -- (wf_fN: `%%`($sizenn($numtype_Fnn(F64_Fnn)), iter_98))*{iter_98 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_105)))), !($proj_num__1(!($proj_lane__0(c_2_83)))), !($proj_num__1(!($proj_lane__0(c_3_29)))))}*{c_1_105 <- c_1_lst, c_2_83 <- c_2_lst, c_3_29 <- c_3_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0_90))))*{iter_0_90 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_106)))), !($proj_num__1(!($proj_lane__0(c_2_84)))), !($proj_num__1(!($proj_lane__0(c_3_30)))))}*{c_1_106 <- c_1_lst, c_2_84 <- c_2_lst, c_3_30 <- c_3_lst} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_vec_ : vec_, v_vec__0 : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c_56)*{c_56 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_108)), !($proj_lane__2(c_2_86)))).0))*{c_1_108 <- c_1_lst, c_2_86 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_99))*{iter_99 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_100))*{iter_100 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_109)), !($proj_lane__2(c_2_87)))).0))))*{c_1_109 <- c_1_lst, c_2_87 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_110)), !($proj_lane__2(c_2_88)))).0)))*{c_1_110 <- c_1_lst, c_2_88 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c_58)*{c_58 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_112)), !($proj_lane__2(c_2_90)))).0))*{c_1_112 <- c_1_lst, c_2_90 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_101))*{iter_101 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_102))*{iter_102 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_113)), !($proj_lane__2(c_2_91)))).0))))*{c_1_113 <- c_1_lst, c_2_91 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_114)), !($proj_lane__2(c_2_92)))).0)))*{c_1_114 <- c_1_lst, c_2_92 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c_60)*{c_60 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_116)), !($proj_lane__2(c_2_94)))).0))*{c_1_116 <- c_1_lst, c_2_94 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_103))*{iter_103 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_104))*{iter_104 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_117)), !($proj_lane__2(c_2_95)))).0))))*{c_1_117 <- c_1_lst, c_2_95 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_118)), !($proj_lane__2(c_2_96)))).0)))*{c_1_118 <- c_1_lst, c_2_96 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c_62)*{c_62 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_120)), !($proj_lane__2(c_2_98)))).0))*{c_1_120 <- c_1_lst, c_2_98 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_105))*{iter_105 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_106))*{iter_106 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_121)), !($proj_lane__2(c_2_99)))).0))))*{c_1_121 <- c_1_lst, c_2_99 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_122)), !($proj_lane__2(c_2_100)))).0)))*{c_1_122 <- c_1_lst, c_2_100 <- c_2_lst} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c_64)*{c_64 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_124)), !($proj_lane__2(c_2_102)))).0))*{c_1_124 <- c_1_lst, c_2_102 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_107))*{iter_107 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_108))*{iter_108 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_125)), !($proj_lane__2(c_2_103)))).0))))*{c_1_125 <- c_1_lst, c_2_103 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_126)), !($proj_lane__2(c_2_104)))).0)))*{c_1_126 <- c_1_lst, c_2_104 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c_66)*{c_66 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_128)), !($proj_lane__2(c_2_106)))).0))*{c_1_128 <- c_1_lst, c_2_106 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_109))*{iter_109 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_110))*{iter_110 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_129)), !($proj_lane__2(c_2_107)))).0))))*{c_1_129 <- c_1_lst, c_2_107 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_130)), !($proj_lane__2(c_2_108)))).0)))*{c_1_130 <- c_1_lst, c_2_108 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c_68)*{c_68 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_132)), !($proj_lane__2(c_2_110)))).0))*{c_1_132 <- c_1_lst, c_2_110 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_111))*{iter_111 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_112))*{iter_112 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_133)), !($proj_lane__2(c_2_111)))).0))))*{c_1_133 <- c_1_lst, c_2_111 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_134)), !($proj_lane__2(c_2_112)))).0)))*{c_1_134 <- c_1_lst, c_2_112 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c_70)*{c_70 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_136)), !($proj_lane__2(c_2_114)))).0))*{c_1_136 <- c_1_lst, c_2_114 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_113))*{iter_113 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_114))*{iter_114 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_137)), !($proj_lane__2(c_2_115)))).0))))*{c_1_137 <- c_1_lst, c_2_115 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_138)), !($proj_lane__2(c_2_116)))).0)))*{c_1_138 <- c_1_lst, c_2_116 <- c_2_lst} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvrelop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_vec_ : vec_, v_vec__0 : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_1 : uN, v_2 : uN, v_Inn : addrtype}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M)), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, mk_uN_uN($proj_uN_0(c_72).0)))*{c_72 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, mk_uN_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_140)))), !($proj_num__1(!($proj_lane__0(c_2_118)))))).0))*{c_1_140 <- c_1_lst, c_2_118 <- c_2_lst} + -- if ($isize(v_Inn) = $fsize(F32_Fnn)) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), iter_115))*{iter_115 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))), iter_116))*{iter_116 <- $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($size($numtype_Fnn(F32_Fnn)), $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, mk_uN_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_141)))), !($proj_num__1(!($proj_lane__0(c_2_119)))))).0))))*{c_1_141 <- c_1_lst, c_2_119 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_142)))), !($proj_num__1(!($proj_lane__0(c_2_120)))))).0)))*{c_1_142 <- c_1_lst, c_2_120 <- c_2_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_1 : uN, v_2 : uN, v_Inn : addrtype}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M)), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, mk_uN_uN($proj_uN_0(c_74).0)))*{c_74 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, mk_uN_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_144)))), !($proj_num__1(!($proj_lane__0(c_2_122)))))).0))*{c_1_144 <- c_1_lst, c_2_122 <- c_2_lst} + -- if ($isize(v_Inn) = $fsize(F64_Fnn)) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), iter_117))*{iter_117 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))), iter_118))*{iter_118 <- $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($size($numtype_Fnn(F64_Fnn)), $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, mk_uN_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_145)))), !($proj_num__1(!($proj_lane__0(c_2_123)))))).0))))*{c_1_145 <- c_1_lst, c_2_123 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1_146)))), !($proj_num__1(!($proj_lane__0(c_2_124)))))).0)))*{c_1_146 <- c_1_lst, c_2_124 <- c_2_lst} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_vec_ : vec_, v_u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c_76)*{c_76 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_148)), i)*{c_1_148 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_119))*{iter_119 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_149)), i)))*{c_1_149 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c_78)*{c_78 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_151)), i)*{c_1_151 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_120))*{iter_120 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_152)), i)))*{c_1_152 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c_80)*{c_80 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_154)), i)*{c_1_154 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_121))*{iter_121 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_155)), i)))*{c_1_155 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c_82)*{c_82 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_157)), i)*{c_1_157 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_122))*{iter_122 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_158)), i)))*{c_1_158 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_vec_ : vec_, v_u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c_84)*{c_84 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_160)), i)*{c_1_160 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_123))*{iter_123 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_161)), i)))*{c_1_161 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c_86)*{c_86 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_163)), i)*{c_1_163 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_124))*{iter_124 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_164)), i)))*{c_1_164 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c_88)*{c_88 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_166)), i)*{c_1_166 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_125))*{iter_125 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_167)), i)))*{c_1_167 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c_90)*{c_90 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_169)), i)*{c_1_169 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_126))*{iter_126 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_170)), i)))*{c_1_170 <- c_1_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_0{v_M : nat, v_1 : uN, c : uN}: + `%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), v_1, $irev_(32, c)) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1_172)), mk_uN_iN(0))).0)*{c_1_172 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) + -- (if ($proj_lane__2(c_1_172) =/= ?()))*{c_1_172 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_127))*{iter_127 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_bit: `%`(iter_128))*{iter_128 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1_173)), mk_uN_iN(0))).0)))*{c_1_173 <- c_1_lst} + -- (if ($proj_lane__2(c_1_173) =/= ?()))*{c_1_173 <- c_1_lst} + -- wf_bit: `%`(mk_bit_bit(0)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_1{v_M : nat, v_1 : uN, c : uN}: + `%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), v_1, $irev_(32, c)) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1_175)), mk_uN_iN(0))).0)*{c_1_175 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) + -- (if ($proj_lane__2(c_1_175) =/= ?()))*{c_1_175 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_129))*{iter_129 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_bit: `%`(iter_130))*{iter_130 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1_176)), mk_uN_iN(0))).0)))*{c_1_176 <- c_1_lst} + -- (if ($proj_lane__2(c_1_176) =/= ?()))*{c_1_176 <- c_1_lst} + -- wf_bit: `%`(mk_bit_bit(0)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_2{v_M : nat, v_1 : uN, c : uN}: + `%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), v_1, $irev_(32, c)) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1_178)), mk_uN_iN(0))).0)*{c_1_178 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) + -- (if ($proj_lane__2(c_1_178) =/= ?()))*{c_1_178 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_131))*{iter_131 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_bit: `%`(iter_132))*{iter_132 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1_179)), mk_uN_iN(0))).0)))*{c_1_179 <- c_1_lst} + -- (if ($proj_lane__2(c_1_179) =/= ?()))*{c_1_179 <- c_1_lst} + -- wf_bit: `%`(mk_bit_bit(0)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_3{v_M : nat, v_1 : uN, c : uN}: + `%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), v_1, $irev_(32, c)) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1_181)), mk_uN_iN(0))).0)*{c_1_181 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) + -- (if ($proj_lane__2(c_1_181) =/= ?()))*{c_1_181 <- c_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_133))*{iter_133 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_bit: `%`(iter_134))*{iter_134 <- $ibits_(32, c)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1_182)), mk_uN_iN(0))).0)))*{c_1_182 <- c_1_lst} + -- (if ($proj_lane__2(c_1_182) =/= ?()))*{c_1_182 <- c_1_lst} + -- wf_bit: `%`(mk_bit_bit(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivswizzlop_(v_shape : shape, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_vec_ : vec_, v_vec__0 : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I32_Jnn, c_92)*{c_92 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_184))*{c_1_184 <- c_1_lst}, !($proj_lane__2(c_2_126)))*{c_2_126 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_135))*{iter_135 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_136))*{iter_136 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1_185))*{c_1_185 <- c_1_lst}, !($proj_lane__2(c_2_127)))))*{c_2_127 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c_94)*{c_94 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_187))*{c_1_187 <- c_1_lst}, !($proj_lane__2(c_2_129)))*{c_2_129 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_137))*{iter_137 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_138))*{iter_138 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1_188))*{c_1_188 <- c_1_lst}, !($proj_lane__2(c_2_130)))))*{c_2_130 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c_96)*{c_96 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_190))*{c_1_190 <- c_1_lst}, !($proj_lane__2(c_2_132)))*{c_2_132 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_139))*{iter_139 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_140))*{iter_140 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1_191))*{c_1_191 <- c_1_lst}, !($proj_lane__2(c_2_133)))))*{c_2_133 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c_98)*{c_98 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : iN*} c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_193))*{c_1_193 <- c_1_lst}, !($proj_lane__2(c_2_135)))*{c_2_135 <- c_2_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_141))*{iter_141 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_142))*{iter_142 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1_194))*{c_1_194 <- c_1_lst}, !($proj_lane__2(c_2_136)))))*{c_2_136 <- c_2_lst} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_0{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), c_lst)) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : lane_*} c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i_139237).0]*{i_139237 <- i_lst} + -- (if ($proj_uN_0(i_139237).0 < |c_1_lst ++ c_2_lst|))*{i_139237 <- i_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_143))*{iter_143 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), iter_144))*{iter_144 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_1{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), c_lst)) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : lane_*} c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i_139248).0]*{i_139248 <- i_lst} + -- (if ($proj_uN_0(i_139248).0 < |c_1_lst ++ c_2_lst|))*{i_139248 <- i_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_145))*{iter_145 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), iter_146))*{iter_146 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_2{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), c_lst)) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : lane_*} c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i_139259).0]*{i_139259 <- i_lst} + -- (if ($proj_uN_0(i_139259).0 < |c_1_lst ++ c_2_lst|))*{i_139259 <- i_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_147))*{iter_147 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), iter_148))*{iter_148 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_3{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), c_lst)) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) + -- let{c_lst : lane_*} c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i_139270).0]*{i_139270 <- i_lst} + -- (if ($proj_uN_0(i_139270).0 < |c_1_lst ++ c_2_lst|))*{i_139270 <- i_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_149))*{iter_149 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), iter_150))*{iter_150 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvunop_(v_vectype : vectype, v_vvunop : vvunop, v_vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvunop_{v_Vnn : vectype, v : uN}(v_Vnn, NOT_vvunop, v) = [$inot_($vsizenn(v_Vnn), v)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvbinop_(v_vectype : vectype, v_vvbinop : vvbinop, v_vec_ : vec_, v_vec__0 : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{v_Vnn : vectype, v_1 : uN, v_2 : uN}(v_Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(v_Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{v_Vnn : vectype, v_1 : uN, v_2 : uN}(v_Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(v_Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{v_Vnn : vectype, v_1 : uN, v_2 : uN}(v_Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(v_Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{v_Vnn : vectype, v_1 : uN, v_2 : uN}(v_Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(v_Vnn), v_1, v_2)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvternop_(v_vectype : vectype, v_vvternop : vvternop, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvternop_{v_Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(v_Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(v_Vnn), v_1, v_2, v_3)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vunop_: `%%%%`(shape, vunop_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_0{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, M_0, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fabs_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_1{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, M_0, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fabs_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_2{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, M_0, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fneg_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_3{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, M_0, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fneg_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_4{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, M_0, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fsqrt_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_5{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, M_0, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fsqrt_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_6{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, M_0, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fceil_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_7{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, M_0, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fceil_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_8{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, M_0, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $ffloor_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_9{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, M_0, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $ffloor_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_10{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, M_0, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $ftrunc_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_11{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, M_0, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $ftrunc_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_12{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, M_0, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fnearest_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_13{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, M_0, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fnearest_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_14{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, M_0, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iabs_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_15{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, M_0, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iabs_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_16{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, M_0, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iabs_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_17{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, M_0, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iabs_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_18{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, M_0, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ineg_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_19{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, M_0, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ineg_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_20{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, M_0, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ineg_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_21{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, M_0, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ineg_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_22{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, M_0, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_23{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, M_0, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_24{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, M_0, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_25{v_M : nat, v : uN, M_0 : nat}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, M_0, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v)) + -- if (v_M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vbinop_: `%%%%%`(shape, vbinop_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_0{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_1{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_2{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_3{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_4{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_5{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_6{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_7{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_8{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_9{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_10{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_11{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_12{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_13{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_14{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_15{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_16{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_17{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_18{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_19{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_20{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_21{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_22{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_23{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_24{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_25{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_26{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_27{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_28{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_29{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_30{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_31{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, AVGRU_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_32{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_33{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_34{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_35{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, Q15MULR_SATS_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_36{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_37{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_38{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_39{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, M_0, RELAXED_Q15MULRS_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_40{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fadd_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_41{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fadd_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_42{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fsub_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_43{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fsub_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_44{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmul_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_45{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmul_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_46{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fdiv_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_47{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fdiv_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_48{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmin_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_49{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmin_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_50{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmax_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_51{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmax_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_52{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fpmin_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_53{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fpmin_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_54{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fpmax_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_55{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fpmax_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_56{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_min_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_57{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_min_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_58{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, M_0, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_max_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_59{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, M_0, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_max_, v_1, v_2)) + -- if (v_M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vternop_: `%%%%%%`(shape, vternop_, vec_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_0{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I32_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_1{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I64_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_2{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I8_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_3{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I16_Jnn, M_0, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_4{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, M_0, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_5{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, M_0, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_6{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, M_0, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_7{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN, M_0 : nat}: + `%%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, M_0, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- if (v_M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vrelop_: `%%%%%`(shape, vrelop_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_0{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_1{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_2{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_3{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_4{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_5{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_6{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_7{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_8{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, LT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_9{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, LT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_10{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, LT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_11{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, LT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_12{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, GT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_13{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, GT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_14{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, GT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_15{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, GT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_16{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, LE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_17{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, LE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_18{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, LE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_19{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, LE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_20{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, M_0, GE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_21{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, M_0, GE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_22{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, M_0, GE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_23{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, M_0, GE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_24{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $feq_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_25{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $feq_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_26{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fne_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_27{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fne_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_28{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $flt_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_29{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $flt_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_30{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fgt_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_31{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fgt_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_32{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fle_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_33{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fle_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_34{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, M_0, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fge_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_35{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, M_0, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fge_, v_1, v_2)) + -- if (v_M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- let{c : iN} c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) + -- wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F32_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_20{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_21{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_22{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_23{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1_0, F64_Fnn, M_2_0, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- let{c : fN} c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) + -- wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_108))?{c_108 <- c_opt})) + -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_151))?{iter_151 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_110))?{c_110 <- c_opt})) + -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_152))?{iter_152 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_112))?{c_112 <- c_opt})) + -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_153))?{iter_153 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_27{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_114))?{c_114 <- c_opt})) + -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_154))?{iter_154 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_116))?{c_116 <- c_opt})) + -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_155))?{iter_155 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_118))?{c_118 <- c_opt})) + -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_156))?{iter_156 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_120))?{c_120 <- c_opt})) + -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_157))?{iter_157 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_31{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_122))?{c_122 <- c_opt})) + -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_158))?{iter_158 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_124))?{c_124 <- c_opt})) + -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_159))?{iter_159 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_126))?{c_126 <- c_opt})) + -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_160))?{iter_160 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_128))?{c_128 <- c_opt})) + -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_161))?{iter_161 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_35{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_130))?{c_130 <- c_opt})) + -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_162))?{iter_162 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_132))?{c_132 <- c_opt})) + -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_163))?{iter_163 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_134))?{c_134 <- c_opt})) + -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_164))?{iter_164 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_136))?{c_136 <- c_opt})) + -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_165))?{iter_165 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_39{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_138))?{c_138 <- c_opt})) + -- let{c_opt : iN?} c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_166))?{iter_166 <- $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_140))?{c_140 <- c_opt})) + -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_167))?{iter_167 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_142))?{c_142 <- c_opt})) + -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_168))?{iter_168 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_144))?{c_144 <- c_opt})) + -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_169))?{iter_169 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_43{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_146))?{c_146 <- c_opt})) + -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_170))?{iter_170 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_148))?{c_148 <- c_opt})) + -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_171))?{iter_171 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_150))?{c_150 <- c_opt})) + -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_172))?{iter_172 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_152))?{c_152 <- c_opt})) + -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_173))?{iter_173 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_47{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_154))?{c_154 <- c_opt})) + -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_174))?{iter_174 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_156))?{c_156 <- c_opt})) + -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_175))?{iter_175 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_158))?{c_158 <- c_opt})) + -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_176))?{iter_176 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_160))?{c_160 <- c_opt})) + -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_177))?{iter_177 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_51{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I32_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c_162))?{c_162 <- c_opt})) + -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I32_Inn)), iter_178))?{iter_178 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_164))?{c_164 <- c_opt})) + -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_179))?{iter_179 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_166))?{c_166 <- c_opt})) + -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_180))?{iter_180 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_168))?{c_168 <- c_opt})) + -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_181))?{iter_181 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_55{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1_0, I64_Jnn, M_2_0, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c_170))?{c_170 <- c_opt})) + -- let{c_opt : iN?} c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) + -- (wf_uN: `%%`($size($numtype_addrtype(I64_Inn)), iter_182))?{iter_182 <- $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_56{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c_172))*{c_172 <- c_lst}) + -- let{c_lst : fN*} c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter_183))*{iter_183 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_57{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c_174))*{c_174 <- c_lst}) + -- let{c_lst : fN*} c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter_184))*{iter_184 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_58{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c_176))*{c_176 <- c_lst}) + -- let{c_lst : fN*} c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter_185))*{iter_185 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_59{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c_178))*{c_178 <- c_lst}) + -- let{c_lst : fN*} c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter_186))*{iter_186 <- $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_60{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c_180))*{c_180 <- c_lst}) + -- let{c_lst : fN*} c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter_187))*{iter_187 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_61{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c_182))*{c_182 <- c_lst}) + -- let{c_lst : fN*} c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter_188))*{iter_188 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_62{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c_184))*{c_184 <- c_lst}) + -- let{c_lst : fN*} c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter_189))*{iter_189 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_63{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c_186))*{c_186 <- c_lst}) + -- let{c_lst : fN*} c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter_190))*{iter_190 <- $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_64{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c_188))*{c_188 <- c_lst}) + -- let{c_lst : fN*} c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter_191))*{iter_191 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_65{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c_190))*{c_190 <- c_lst}) + -- let{c_lst : fN*} c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter_192))*{iter_192 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_66{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c_192))*{c_192 <- c_lst}) + -- let{c_lst : fN*} c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter_193))*{iter_193 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_67{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c_194))*{c_194 <- c_lst}) + -- let{c_lst : fN*} c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter_194))*{iter_194 <- $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_68{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c_196))*{c_196 <- c_lst}) + -- let{c_lst : fN*} c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter_195))*{iter_195 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_69{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F32_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c_198))*{c_198 <- c_lst}) + -- let{c_lst : fN*} c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F32_Fnn)), iter_196))*{iter_196 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_70{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c_200))*{c_200 <- c_lst}) + -- let{c_lst : fN*} c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter_197))*{iter_197 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_71{M_1 : nat, M_2 : nat, c_1 : fN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1_0, F64_Fnn, M_2_0, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c_202))*{c_202 <- c_lst}) + -- let{c_lst : fN*} c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) + -- (wf_fN: `%%`($lsizenn2($lanetype_Fnn(F64_Fnn)), iter_198))*{iter_198 <- $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)} + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation lcvtop___is_wf: `%%%%%`(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__, v_lane_ : lane_, ret_val : lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule lcvtop___is_wf_0{shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__, v_lane_ : lane_, ret_val : lane_*, var_0 : lane_*}: + `%%%%%`(shape_1, shape_2, v_vcvtop__, v_lane_, ret_val) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_1, shape_2, v_vcvtop__) + -- wf_lane_: `%%`($fun_lanetype(shape_1), v_lane_) + -- if (ret_val = var_0) + -- (wf_lane_: `%%`($fun_lanetype(shape_2), ret_val))*{ret_val <- ret_val} + -- fun_lcvtop__: `%%%%%`(shape_1, shape_2, v_vcvtop__, v_lane_, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_0{Lnn_1 : lanetype, v_M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, M_0 : nat, var_4_lst : lane_**, var_3_lst : lane_**, var_2_lst : lane_**, var_1 : zero?, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(M_0)), vcvtop, v_1, v) + -- if ((var_0 = ?()) /\ (var_1 = ?())) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), v_1) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, var_2_lst) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(v_M)), c_lst_30)*{c_lst_30 <- c_lst_lst}) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(v_M)), c_lst_30)*{c_lst_30 <- c_lst_lst}| > 0) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(v_M))), iter_199))*{iter_199 <- $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter_201))*{iter_201 <- iter_200}*{iter_200 <- $setproduct_(syntax lane_, var_3_lst)} + -- (wf_lane_: `%%`(Lnn_2, iter_202))*{iter_202 <- var_4}*{var_4 <- var_4_lst} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(v_M)), c_lst_31)))*{c_lst_31 <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(v_M))) + -- if (v_M = M_0) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, c_1_206, var_4))*{var_4 <- var_4_lst, c_1_206 <- c_1_lst} + -- if (|var_4_lst| = |c_1_lst|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, c_1_205, var_3))*{var_3 <- var_3_lst, c_1_205 <- c_1_lst} + -- if (|var_3_lst| = |c_1_lst|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, c_1_204, var_2))*{var_2 <- var_2_lst, c_1_204 <- c_1_lst} + -- if (|var_2_lst| = |c_1_lst|) + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, var_1) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, v_half : half, var_3_lst : lane_**, var_2_lst : lane_**, var_1_lst : lane_**, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1, v) + -- if (var_0 = ?(v_half)) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1)[$fun_half(v_half, 0, M_2) : M_2] + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, var_1_lst) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst_33)*{c_lst_33 <- c_lst_lst}) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst_33)*{c_lst_33 <- c_lst_lst}| > 0) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))), iter_203))*{iter_203 <- $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter_205))*{iter_205 <- iter_204}*{iter_204 <- $setproduct_(syntax lane_, var_2_lst)} + -- (wf_lane_: `%%`(Lnn_2, iter_206))*{iter_206 <- var_3}*{var_3 <- var_3_lst} + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst_34)))*{c_lst_34 <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(M_2))) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1_210, var_3))*{var_3 <- var_3_lst, c_1_210 <- c_1_lst} + -- if (|var_3_lst| = |c_1_lst|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1_209, var_2))*{var_2 <- var_2_lst, c_1_209 <- c_1_lst} + -- if (|var_2_lst| = |c_1_lst|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1_208, var_1))*{var_1 <- var_1_lst, c_1_208 <- c_1_lst} + -- if (|var_1_lst| = |c_1_lst|) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, var_3_lst : lane_**, var_2_lst : lane_**, var_1_lst : lane_**, var_0 : zero?}: + `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1, v) + -- if (var_0 = ?(ZERO_zero)) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1) + -- let{c_lst_lst : lane_**} c_lst_lst = $setproduct_(syntax lane_, var_1_lst ++ [$fun_zero(Lnn_2)]^M_1{}) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst_36)*{c_lst_36 <- c_lst_lst}) + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst_36)*{c_lst_36 <- c_lst_lst}| > 0) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))), iter_207))*{iter_207 <- $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`(Lnn_2, iter_209))*{iter_209 <- iter_208}*{iter_208 <- $setproduct_(syntax lane_, var_2_lst ++ [$fun_zero(Lnn_2)]^M_1{})} + -- (wf_lane_: `%%`(Lnn_2, iter_210))*{iter_210 <- var_3}*{var_3 <- var_3_lst} + -- wf_lane_: `%%`(Lnn_2, $fun_zero(Lnn_2)) + -- (wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst_37)))*{c_lst_37 <- c_lst_lst} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(M_2))) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1_214, var_3))*{var_3 <- var_3_lst, c_1_214 <- c_1_lst} + -- if (|var_3_lst| = |c_1_lst|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1_213, var_2))*{var_2 <- var_2_lst, c_1_213 <- c_1_lst} + -- if (|var_2_lst| = |c_1_lst|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1_212, var_1))*{var_1 <- var_1_lst, c_1_212 <- c_1_lst} + -- if (|var_1_lst| = |c_1_lst|) + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vshiftop_: `%%%%%`(ishape, vshiftop_, vec_, u32, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_0{v_M : nat, v : uN, i : uN, M_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_1{v_M : nat, v : uN, i : uN, M_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_2{v_M : nat, v : uN, i : uN, M_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_3{v_M : nat, v : uN, i : uN, M_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M_0, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_4{v_M : nat, v_sx : sx, v : uN, i : uN, M_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M_0, SHR_vshiftop_Jnn_M(v_sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_5{v_M : nat, v_sx : sx, v : uN, i : uN, M_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M_0, SHR_vshiftop_Jnn_M(v_sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_6{v_M : nat, v_sx : sx, v : uN, i : uN, M_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M_0, SHR_vshiftop_Jnn_M(v_sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_7{v_M : nat, v_sx : sx, v : uN, i : uN, M_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M_0, SHR_vshiftop_Jnn_M(v_sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i)) + -- if (v_M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vbitmaskop_: `%%%`(ishape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_0{v_M : nat, v : uN, var_0 : u32}: + `%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_1{v_M : nat, v : uN, var_0 : u32}: + `%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_2{v_M : nat, v : uN, var_0 : u32}: + `%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_3{v_M : nat, v : uN, var_0 : u32}: + `%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vswizzlop_: `%%%%%`(bshape, vswizzlop_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vswizzlop__case_0{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vswizzlop__0_vswizzlop_(M_0, SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $iswizzle_lane_, v_1, v_2)) + -- if (v_M = M_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vswizzlop__case_1{v_M : nat, v_1 : uN, v_2 : uN, M_0 : nat}: + `%%%%%`(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vswizzlop__0_vswizzlop_(M_0, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $irelaxed_swizzle_lane_, v_1, v_2)) + -- if (v_M = M_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vshufflop_: `%%%%%`(bshape, laneidx*, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshufflop__case_0{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, var_0 : vec_}: + `%%%%%`(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), i_lst, v_1, v_2, var_0) + -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2, var_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_0{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_216)))*{c_1_216 <- c_1_lst} + -- (if ($proj_lane__2(c_1_216) =/= ?()))*{c_1_216 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2_146)))*{c_2_146 <- c_2_lst} + -- (if ($proj_lane__2(c_2_146) =/= ?()))*{c_2_146 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1_2)*{c'_1_2 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2_2)*{c'_2_2 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_211))*{iter_211 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_212))*{iter_212 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_217)))))*{c_1_217 <- c_1_lst} + -- (if ($proj_lane__2(c_1_217) =/= ?()))*{c_1_217 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2_147)))))*{c_2_147 <- c_2_lst} + -- (if ($proj_lane__2(c_2_147) =/= ?()))*{c_2_147 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1_3)*{c'_1_3 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2_3)*{c'_2_3 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1_4)))*{c'_1_4 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2_4)))*{c'_2_4 <- c'_2_lst} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_1{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_219)))*{c_1_219 <- c_1_lst} + -- (if ($proj_lane__2(c_1_219) =/= ?()))*{c_1_219 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2_149)))*{c_2_149 <- c_2_lst} + -- (if ($proj_lane__2(c_2_149) =/= ?()))*{c_2_149 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1_6)*{c'_1_6 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2_6)*{c'_2_6 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_213))*{iter_213 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_214))*{iter_214 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_220)))))*{c_1_220 <- c_1_lst} + -- (if ($proj_lane__2(c_1_220) =/= ?()))*{c_1_220 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2_150)))))*{c_2_150 <- c_2_lst} + -- (if ($proj_lane__2(c_2_150) =/= ?()))*{c_2_150 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1_7)*{c'_1_7 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2_7)*{c'_2_7 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1_8)))*{c'_1_8 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2_8)))*{c'_2_8 <- c'_2_lst} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_2{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_222)))*{c_1_222 <- c_1_lst} + -- (if ($proj_lane__2(c_1_222) =/= ?()))*{c_1_222 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2_152)))*{c_2_152 <- c_2_lst} + -- (if ($proj_lane__2(c_2_152) =/= ?()))*{c_2_152 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1_10)*{c'_1_10 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2_10)*{c'_2_10 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_215))*{iter_215 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_216))*{iter_216 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_223)))))*{c_1_223 <- c_1_lst} + -- (if ($proj_lane__2(c_1_223) =/= ?()))*{c_1_223 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2_153)))))*{c_2_153 <- c_2_lst} + -- (if ($proj_lane__2(c_2_153) =/= ?()))*{c_2_153 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1_11)*{c'_1_11 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2_11)*{c'_2_11 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1_12)))*{c'_1_12 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2_12)))*{c'_2_12 <- c'_2_lst} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_3{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_225)))*{c_1_225 <- c_1_lst} + -- (if ($proj_lane__2(c_1_225) =/= ?()))*{c_1_225 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2_155)))*{c_2_155 <- c_2_lst} + -- (if ($proj_lane__2(c_2_155) =/= ?()))*{c_2_155 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1_14)*{c'_1_14 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2_14)*{c'_2_14 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_217))*{iter_217 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_218))*{iter_218 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_226)))))*{c_1_226 <- c_1_lst} + -- (if ($proj_lane__2(c_1_226) =/= ?()))*{c_1_226 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2_156)))))*{c_2_156 <- c_2_lst} + -- (if ($proj_lane__2(c_2_156) =/= ?()))*{c_2_156 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1_15)*{c'_1_15 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2_15)*{c'_2_15 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1_16)))*{c'_1_16 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2_16)))*{c'_2_16 <- c'_2_lst} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_4{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_228)))*{c_1_228 <- c_1_lst} + -- (if ($proj_lane__2(c_1_228) =/= ?()))*{c_1_228 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2_158)))*{c_2_158 <- c_2_lst} + -- (if ($proj_lane__2(c_2_158) =/= ?()))*{c_2_158 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1_18)*{c'_1_18 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2_18)*{c'_2_18 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_219))*{iter_219 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_220))*{iter_220 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_229)))))*{c_1_229 <- c_1_lst} + -- (if ($proj_lane__2(c_1_229) =/= ?()))*{c_1_229 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2_159)))))*{c_2_159 <- c_2_lst} + -- (if ($proj_lane__2(c_2_159) =/= ?()))*{c_2_159 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1_19)*{c'_1_19 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2_19)*{c'_2_19 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1_20)))*{c'_1_20 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2_20)))*{c'_2_20 <- c'_2_lst} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_5{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_231)))*{c_1_231 <- c_1_lst} + -- (if ($proj_lane__2(c_1_231) =/= ?()))*{c_1_231 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2_161)))*{c_2_161 <- c_2_lst} + -- (if ($proj_lane__2(c_2_161) =/= ?()))*{c_2_161 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1_22)*{c'_1_22 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2_22)*{c'_2_22 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_221))*{iter_221 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_222))*{iter_222 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_232)))))*{c_1_232 <- c_1_lst} + -- (if ($proj_lane__2(c_1_232) =/= ?()))*{c_1_232 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2_162)))))*{c_2_162 <- c_2_lst} + -- (if ($proj_lane__2(c_2_162) =/= ?()))*{c_2_162 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1_23)*{c'_1_23 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2_23)*{c'_2_23 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1_24)))*{c'_1_24 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2_24)))*{c'_2_24 <- c'_2_lst} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_6{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_234)))*{c_1_234 <- c_1_lst} + -- (if ($proj_lane__2(c_1_234) =/= ?()))*{c_1_234 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2_164)))*{c_2_164 <- c_2_lst} + -- (if ($proj_lane__2(c_2_164) =/= ?()))*{c_2_164 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1_26)*{c'_1_26 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2_26)*{c'_2_26 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_223))*{iter_223 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_224))*{iter_224 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_235)))))*{c_1_235 <- c_1_lst} + -- (if ($proj_lane__2(c_1_235) =/= ?()))*{c_1_235 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2_165)))))*{c_2_165 <- c_2_lst} + -- (if ($proj_lane__2(c_2_165) =/= ?()))*{c_2_165 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1_27)*{c'_1_27 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2_27)*{c'_2_27 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1_28)))*{c'_1_28 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2_28)))*{c'_2_28 <- c'_2_lst} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_7{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_237)))*{c_1_237 <- c_1_lst} + -- (if ($proj_lane__2(c_1_237) =/= ?()))*{c_1_237 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2_167)))*{c_2_167 <- c_2_lst} + -- (if ($proj_lane__2(c_2_167) =/= ?()))*{c_2_167 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1_30)*{c'_1_30 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2_30)*{c'_2_30 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_225))*{iter_225 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_226))*{iter_226 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_238)))))*{c_1_238 <- c_1_lst} + -- (if ($proj_lane__2(c_1_238) =/= ?()))*{c_1_238 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2_168)))))*{c_2_168 <- c_2_lst} + -- (if ($proj_lane__2(c_2_168) =/= ?()))*{c_2_168 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1_31)*{c'_1_31 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2_31)*{c'_2_31 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1_32)))*{c'_1_32 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2_32)))*{c'_2_32 <- c'_2_lst} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_8{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_240)))*{c_1_240 <- c_1_lst} + -- (if ($proj_lane__2(c_1_240) =/= ?()))*{c_1_240 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2_170)))*{c_2_170 <- c_2_lst} + -- (if ($proj_lane__2(c_2_170) =/= ?()))*{c_2_170 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1_34)*{c'_1_34 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2_34)*{c'_2_34 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_227))*{iter_227 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_228))*{iter_228 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_241)))))*{c_1_241 <- c_1_lst} + -- (if ($proj_lane__2(c_1_241) =/= ?()))*{c_1_241 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2_171)))))*{c_2_171 <- c_2_lst} + -- (if ($proj_lane__2(c_2_171) =/= ?()))*{c_2_171 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1_35)*{c'_1_35 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2_35)*{c'_2_35 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1_36)))*{c'_1_36 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2_36)))*{c'_2_36 <- c'_2_lst} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_9{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_243)))*{c_1_243 <- c_1_lst} + -- (if ($proj_lane__2(c_1_243) =/= ?()))*{c_1_243 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2_173)))*{c_2_173 <- c_2_lst} + -- (if ($proj_lane__2(c_2_173) =/= ?()))*{c_2_173 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1_38)*{c'_1_38 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2_38)*{c'_2_38 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_229))*{iter_229 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_230))*{iter_230 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_244)))))*{c_1_244 <- c_1_lst} + -- (if ($proj_lane__2(c_1_244) =/= ?()))*{c_1_244 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2_174)))))*{c_2_174 <- c_2_lst} + -- (if ($proj_lane__2(c_2_174) =/= ?()))*{c_2_174 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1_39)*{c'_1_39 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2_39)*{c'_2_39 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1_40)))*{c'_1_40 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2_40)))*{c'_2_40 <- c'_2_lst} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_10{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_246)))*{c_1_246 <- c_1_lst} + -- (if ($proj_lane__2(c_1_246) =/= ?()))*{c_1_246 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2_176)))*{c_2_176 <- c_2_lst} + -- (if ($proj_lane__2(c_2_176) =/= ?()))*{c_2_176 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1_42)*{c'_1_42 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2_42)*{c'_2_42 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_231))*{iter_231 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_232))*{iter_232 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_247)))))*{c_1_247 <- c_1_lst} + -- (if ($proj_lane__2(c_1_247) =/= ?()))*{c_1_247 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2_177)))))*{c_2_177 <- c_2_lst} + -- (if ($proj_lane__2(c_2_177) =/= ?()))*{c_2_177 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1_43)*{c'_1_43 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2_43)*{c'_2_43 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1_44)))*{c'_1_44 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2_44)))*{c'_2_44 <- c'_2_lst} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_11{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_249)))*{c_1_249 <- c_1_lst} + -- (if ($proj_lane__2(c_1_249) =/= ?()))*{c_1_249 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2_179)))*{c_2_179 <- c_2_lst} + -- (if ($proj_lane__2(c_2_179) =/= ?()))*{c_2_179 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1_46)*{c'_1_46 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2_46)*{c'_2_46 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_233))*{iter_233 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_234))*{iter_234 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_250)))))*{c_1_250 <- c_1_lst} + -- (if ($proj_lane__2(c_1_250) =/= ?()))*{c_1_250 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2_180)))))*{c_2_180 <- c_2_lst} + -- (if ($proj_lane__2(c_2_180) =/= ?()))*{c_2_180 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1_47)*{c'_1_47 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2_47)*{c'_2_47 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1_48)))*{c'_1_48 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2_48)))*{c'_2_48 <- c'_2_lst} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_12{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_252)))*{c_1_252 <- c_1_lst} + -- (if ($proj_lane__2(c_1_252) =/= ?()))*{c_1_252 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2_182)))*{c_2_182 <- c_2_lst} + -- (if ($proj_lane__2(c_2_182) =/= ?()))*{c_2_182 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1_50)*{c'_1_50 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2_50)*{c'_2_50 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_235))*{iter_235 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_236))*{iter_236 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_253)))))*{c_1_253 <- c_1_lst} + -- (if ($proj_lane__2(c_1_253) =/= ?()))*{c_1_253 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2_183)))))*{c_2_183 <- c_2_lst} + -- (if ($proj_lane__2(c_2_183) =/= ?()))*{c_2_183 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1_51)*{c'_1_51 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2_51)*{c'_2_51 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1_52)))*{c'_1_52 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2_52)))*{c'_2_52 <- c'_2_lst} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_13{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_255)))*{c_1_255 <- c_1_lst} + -- (if ($proj_lane__2(c_1_255) =/= ?()))*{c_1_255 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2_185)))*{c_2_185 <- c_2_lst} + -- (if ($proj_lane__2(c_2_185) =/= ?()))*{c_2_185 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1_54)*{c'_1_54 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2_54)*{c'_2_54 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_237))*{iter_237 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_238))*{iter_238 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_256)))))*{c_1_256 <- c_1_lst} + -- (if ($proj_lane__2(c_1_256) =/= ?()))*{c_1_256 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2_186)))))*{c_2_186 <- c_2_lst} + -- (if ($proj_lane__2(c_2_186) =/= ?()))*{c_2_186 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1_55)*{c'_1_55 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2_55)*{c'_2_55 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1_56)))*{c'_1_56 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2_56)))*{c'_2_56 <- c'_2_lst} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_14{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_258)))*{c_1_258 <- c_1_lst} + -- (if ($proj_lane__2(c_1_258) =/= ?()))*{c_1_258 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2_188)))*{c_2_188 <- c_2_lst} + -- (if ($proj_lane__2(c_2_188) =/= ?()))*{c_2_188 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1_58)*{c'_1_58 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2_58)*{c'_2_58 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_239))*{iter_239 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_240))*{iter_240 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_259)))))*{c_1_259 <- c_1_lst} + -- (if ($proj_lane__2(c_1_259) =/= ?()))*{c_1_259 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2_189)))))*{c_2_189 <- c_2_lst} + -- (if ($proj_lane__2(c_2_189) =/= ?()))*{c_2_189 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1_59)*{c'_1_59 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2_59)*{c'_2_59 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1_60)))*{c'_1_60 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2_60)))*{c'_2_60 <- c'_2_lst} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_15{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) + -- let{c'_1_lst : iN*} c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_261)))*{c_1_261 <- c_1_lst} + -- (if ($proj_lane__2(c_1_261) =/= ?()))*{c_1_261 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2_191)))*{c_2_191 <- c_2_lst} + -- (if ($proj_lane__2(c_2_191) =/= ?()))*{c_2_191 <- c_2_lst} + -- let{v : vec_} v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1_62)*{c'_1_62 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2_62)*{c'_2_62 <- c'_2_lst}) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_241))*{iter_241 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_242))*{iter_242 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_262)))))*{c_1_262 <- c_1_lst} + -- (if ($proj_lane__2(c_1_262) =/= ?()))*{c_1_262 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2_192)))))*{c_2_192 <- c_2_lst} + -- (if ($proj_lane__2(c_2_192) =/= ?()))*{c_2_192 <- c_2_lst} + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1_63)*{c'_1_63 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2_63)*{c'_2_63 <- c'_2_lst})) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1_64)))*{c'_1_64 <- c'_1_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2_64)))*{c'_2_64 <- c'_2_lst} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivadd_pairwise_(v_N : N, var_0 : iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivadd_pairwise_{v_N : nat, i_lst : iN*, j_1_lst : N*, j_2_lst : N*}(v_N, i_lst) = $iadd_(v_N, mk_uN_iN(j_1), mk_uN_iN(j_2))*{j_1 <- j_1_lst, j_2 <- j_2_lst} + -- if ($concat_(syntax N, [j_1_1 j_2_1]*{j_1_1 <- j_1_lst, j_2_1 <- j_2_lst}) = $proj_uN_0(i_139987).0*{i_139987 <- i_lst}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c_213)*{c_213 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_264)))*{c_1_264 <- c_1_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_243))*{iter_243 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_265)))))*{c_1_265 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_244))*{iter_244 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c_215)*{c_215 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_267)))*{c_1_267 <- c_1_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_245))*{iter_245 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_268)))))*{c_1_268 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_246))*{iter_246 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c_217)*{c_217 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_270)))*{c_1_270 <- c_1_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_247))*{iter_247 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_271)))))*{c_1_271 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_248))*{iter_248 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c_219)*{c_219 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_273)))*{c_1_273 <- c_1_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_249))*{iter_249 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1_274)))))*{c_1_274 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_250))*{iter_250 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c_221)*{c_221 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_276)))*{c_1_276 <- c_1_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_251))*{iter_251 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_277)))))*{c_1_277 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_252))*{iter_252 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c_223)*{c_223 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_279)))*{c_1_279 <- c_1_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_253))*{iter_253 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_280)))))*{c_1_280 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_254))*{iter_254 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c_225)*{c_225 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_282)))*{c_1_282 <- c_1_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_255))*{iter_255 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_283)))))*{c_1_283 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_256))*{iter_256 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c_227)*{c_227 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_285)))*{c_1_285 <- c_1_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_257))*{iter_257 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1_286)))))*{c_1_286 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_258))*{iter_258 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c_229)*{c_229 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_288)))*{c_1_288 <- c_1_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_259))*{iter_259 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_289)))))*{c_1_289 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_260))*{iter_260 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c_231)*{c_231 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_291)))*{c_1_291 <- c_1_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_261))*{iter_261 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_292)))))*{c_1_292 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_262))*{iter_262 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c_233)*{c_233 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_294)))*{c_1_294 <- c_1_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_263))*{iter_263 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_295)))))*{c_1_295 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_264))*{iter_264 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c_235)*{c_235 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_297)))*{c_1_297 <- c_1_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_265))*{iter_265 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1_298)))))*{c_1_298 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_266))*{iter_266 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c_237)*{c_237 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_300)))*{c_1_300 <- c_1_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_267))*{iter_267 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_301)))))*{c_1_301 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_268))*{iter_268 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c_239)*{c_239 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_303)))*{c_1_303 <- c_1_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_269))*{iter_269 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_304)))))*{c_1_304 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_270))*{iter_270 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c_241)*{c_241 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_306)))*{c_1_306 <- c_1_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_271))*{iter_271 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_307)))))*{c_1_307 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_272))*{iter_272 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c_243)*{c_243 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_309)))*{c_1_309 <- c_1_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_273))*{iter_273 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1_310)))))*{c_1_310 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_274))*{iter_274 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextunop__: `%%%%%`(ishape, ishape, vextunop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_0{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_1{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_2{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_3{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_4{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_5{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_6{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_7{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_8{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_9{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_10{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_11{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_12{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_13{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_14{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_15{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_(v_N : N, var_0 : iN*, var_1 : iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_{v_N : nat, i_1_lst : iN*, i_2_lst : iN*, j_1_lst : iN*, j_2_lst : iN*}(v_N, i_1_lst, i_2_lst) = $iadd_(v_N, j_1, j_2)*{j_1 <- j_1_lst, j_2 <- j_2_lst} + -- if ($concat_(syntax iN, [j_1_2 j_2_2]*{j_1_2 <- j_1_lst, j_2_2 <- j_2_lst}) = $imul_(v_N, i_1_2, i_2_2)*{i_1_2 <- i_1_lst, i_2_2 <- i_2_lst}) + -- (wf_uN: `%%`(v_N, iter_275))*{iter_275 <- $concat_(syntax iN, [j_1_3 j_2_3]*{j_1_3 <- j_1_lst, j_2_3 <- j_2_lst})} + -- (wf_uN: `%%`(v_N, $imul_(v_N, i_1_3, i_2_3)))*{i_1_3 <- i_1_lst, i_2_3 <- i_2_lst} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_sat_(v_N : N, var_0 : iN*, var_1 : iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_sat_{v_N : nat, i_1_lst : iN*, i_2_lst : iN*, j_1_lst : iN*, j_2_lst : iN*}(v_N, i_1_lst, i_2_lst) = $iadd_sat_(v_N, S_sx, j_1, j_2)*{j_1 <- j_1_lst, j_2 <- j_2_lst} + -- if ($concat_(syntax iN, [j_1_4 j_2_4]*{j_1_4 <- j_1_lst, j_2_4 <- j_2_lst}) = $imul_(v_N, i_1_5, i_2_5)*{i_1_5 <- i_1_lst, i_2_5 <- i_2_lst}) + -- (wf_uN: `%%`(v_N, iter_276))*{iter_276 <- $concat_(syntax iN, [j_1_5 j_2_5]*{j_1_5 <- j_1_lst, j_2_5 <- j_2_lst})} + -- (wf_uN: `%%`(v_N, $imul_(v_N, i_1_6, i_2_6)))*{i_1_6 <- i_1_lst, i_2_6 <- i_2_lst} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : iN*, v_sx : sx, v_sx_0 : sx, v_laneidx : laneidx, v_laneidx_0 : laneidx, v_vec_ : vec_, v_vec__0 : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c_245)*{c_245 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1_312)))*{c_1_312 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2_194)))*{c_2_194 <- c_2_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_277))*{iter_277 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_278))*{iter_278 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1_313)))))*{c_1_313 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2_195)))))*{c_2_195 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_279))*{iter_279 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c_247)*{c_247 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1_315)))*{c_1_315 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2_197)))*{c_2_197 <- c_2_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_280))*{iter_280 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_281))*{iter_281 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1_316)))))*{c_1_316 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2_198)))))*{c_2_198 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_282))*{iter_282 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c_249)*{c_249 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1_318)))*{c_1_318 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2_200)))*{c_2_200 <- c_2_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_283))*{iter_283 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_284))*{iter_284 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1_319)))))*{c_1_319 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2_201)))))*{c_2_201 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_285))*{iter_285 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c_251)*{c_251 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1_321)))*{c_1_321 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2_203)))*{c_2_203 <- c_2_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_286))*{iter_286 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_287))*{iter_287 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1_322)))))*{c_1_322 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2_204)))))*{c_2_204 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), iter_288))*{iter_288 <- $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c_253)*{c_253 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1_324)))*{c_1_324 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2_206)))*{c_2_206 <- c_2_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_289))*{iter_289 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_290))*{iter_290 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1_325)))))*{c_1_325 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2_207)))))*{c_2_207 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_291))*{iter_291 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c_255)*{c_255 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1_327)))*{c_1_327 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2_209)))*{c_2_209 <- c_2_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_292))*{iter_292 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_293))*{iter_293 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1_328)))))*{c_1_328 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2_210)))))*{c_2_210 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_294))*{iter_294 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c_257)*{c_257 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1_330)))*{c_1_330 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2_212)))*{c_2_212 <- c_2_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_295))*{iter_295 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_296))*{iter_296 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1_331)))))*{c_1_331 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2_213)))))*{c_2_213 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_297))*{iter_297 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c_259)*{c_259 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1_333)))*{c_1_333 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2_215)))*{c_2_215 <- c_2_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_298))*{iter_298 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_299))*{iter_299 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1_334)))))*{c_1_334 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2_216)))))*{c_2_216 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), iter_300))*{iter_300 <- $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c_261)*{c_261 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1_336)))*{c_1_336 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2_218)))*{c_2_218 <- c_2_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_301))*{iter_301 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_302))*{iter_302 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1_337)))))*{c_1_337 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2_219)))))*{c_2_219 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_303))*{iter_303 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c_263)*{c_263 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1_339)))*{c_1_339 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2_221)))*{c_2_221 <- c_2_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_304))*{iter_304 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_305))*{iter_305 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1_340)))))*{c_1_340 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2_222)))))*{c_2_222 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_306))*{iter_306 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c_265)*{c_265 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1_342)))*{c_1_342 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2_224)))*{c_2_224 <- c_2_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_307))*{iter_307 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_308))*{iter_308 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1_343)))))*{c_1_343 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2_225)))))*{c_2_225 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_309))*{iter_309 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c_267)*{c_267 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1_345)))*{c_1_345 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2_227)))*{c_2_227 <- c_2_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_310))*{iter_310 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_311))*{iter_311 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1_346)))))*{c_1_346 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2_228)))))*{c_2_228 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), iter_312))*{iter_312 <- $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c_269)*{c_269 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1_348)))*{c_1_348 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2_230)))*{c_2_230 <- c_2_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_313))*{iter_313 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), iter_314))*{iter_314 <- $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1_349)))))*{c_1_349 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2_231)))))*{c_2_231 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_315))*{iter_315 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c_271)*{c_271 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1_351)))*{c_1_351 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2_233)))*{c_2_233 <- c_2_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_316))*{iter_316 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), iter_317))*{iter_317 <- $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1_352)))))*{c_1_352 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2_234)))))*{c_2_234 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_318))*{iter_318 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c_273)*{c_273 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1_354)))*{c_1_354 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2_236)))*{c_2_236 <- c_2_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_319))*{iter_319 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), iter_320))*{iter_320 <- $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1_355)))))*{c_1_355 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2_237)))))*{c_2_237 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_321))*{iter_321 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c_275)*{c_275 <- c_lst}) + -- let{c_1_lst : lane_*} c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c_2_lst : lane_*} c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] + -- let{c'_1_lst : iN*} c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1_357)))*{c_1_357 <- c_1_lst} + -- let{c'_2_lst : iN*} c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2_239)))*{c_2_239 <- c_2_lst} + -- let{c_lst : iN*} c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_322))*{iter_322 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), iter_323))*{iter_323 <- $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1_358)))))*{c_1_358 <- c_1_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2_240)))))*{c_2_240 <- c_2_lst} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), iter_324))*{iter_324 <- $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst)} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivmul_(v_N : N, var_0 : iN*, var_1 : iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivmul_{v_N : nat, i_1_lst : iN*, i_2_lst : iN*}(v_N, i_1_lst, i_2_lst) = $imul_(v_N, i_1, i_2)*{i_1 <- i_1_lst, i_2 <- i_2_lst} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextbinop__: `%%%%%%`(ishape, ishape, vextbinop__, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_0{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_1{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_2{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_3{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_4{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_5{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_6{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_7{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_8{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_9{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_10{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_11{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_12{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_13{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_14{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_15{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_16{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_17{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_18{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_19{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_20{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_21{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_22{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_23{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_24{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_25{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_26{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_27{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_28{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_29{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_30{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_31{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_32{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_33{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_34{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_35{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_36{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_37{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_38{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_39{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_40{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_41{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_42{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_43{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_44{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_45{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_46{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_47{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN, M_1_0 : nat, M_2_0 : nat}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_0{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{v_M : M} v_M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter_325))*{iter_325 <- var_2} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_1{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{v_M : M} v_M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter_326))*{iter_326 <- var_2} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_2{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{v_M : M} v_M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter_327))*{iter_327 <- var_2} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_3{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I32_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{v_M : M} v_M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter_328))*{iter_328 <- var_2} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_4{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{v_M : M} v_M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter_329))*{iter_329 <- var_2} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_5{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{v_M : M} v_M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter_330))*{iter_330 <- var_2} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_6{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{v_M : M} v_M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter_331))*{iter_331 <- var_2} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_7{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I64_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{v_M : M} v_M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter_332))*{iter_332 <- var_2} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_8{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{v_M : M} v_M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter_333))*{iter_333 <- var_2} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_9{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{v_M : M} v_M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter_334))*{iter_334 <- var_2} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_10{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{v_M : M} v_M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter_335))*{iter_335 <- var_2} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_11{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I8_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{v_M : M} v_M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter_336))*{iter_336 <- var_2} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_12{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- let{v_M : M} v_M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter_337))*{iter_337 <- var_2} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_13{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- let{v_M : M} v_M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter_338))*{iter_338 <- var_2} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_14{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- let{v_M : M} v_M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter_339))*{iter_339 <- var_2} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_15{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, M_1_0 : nat, M_2_0 : nat, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1_0, I16_Jnn, M_2_0, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- let{v_M : M} v_M = (2 * M_2) + -- let{c' : vec_} c' = var_0 + -- let{c'' : vec_} c'' = var_1 + -- if (c <- var_2) + -- if (|var_2| > 0) + -- wf_uN: `%%`(128, var_0) + -- wf_uN: `%%`(128, var_1) + -- (wf_uN: `%%`(128, iter_340))*{iter_340 <- var_2} + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)))) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)))) + -- wf_vextbinop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)))) + -- wf_vextunop__: `%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if (M_1 = M_1_0) + -- if (M_2 = M_2_0) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax num = + | CONST(v_numtype : numtype, num_) + +def $val_num(var_0 : num) : val + def $val_num{x0 : numtype, x1 : num_}(CONST_num(x0, x1)) = CONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_num: `%`(num) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule num_case_0{v_numtype : numtype, var_0 : num_}: + `%`(CONST_num(v_numtype, var_0)) + -- wf_num_: `%%`(v_numtype, var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax vec = + | VCONST(v_vectype : vectype, vec_) + +def $val_vec(var_0 : vec) : val + def $val_vec{x0 : vectype, x1 : vec_}(VCONST_vec(x0, x1)) = VCONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_vec: `%`(vec) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule vec_case_0{v_vectype : vectype, var_0 : vec_}: + `%`(VCONST_vec(v_vectype, var_0)) + -- wf_uN: `%%`($vsize(v_vectype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax result = + | _VALS(val_lst : val*) + | `(REF_EXN_ADDR%)THROW_REF`(v_exnaddr : exnaddr) + | TRAP + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_result: `%`(result) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_0{val_lst : val*}: + `%`(_VALS_result(val_lst)) + -- (wf_val: `%`(v_val))*{v_val <- val_lst} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_1{v_exnaddr : exnaddr}: + `%`(`(REF_EXN_ADDR%)THROW_REF`_result(v_exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_2: + `%`(TRAP_result) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostfunc = + | mk_hostfunc + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funccode = + | FUNC(v_typeidx : typeidx, local_lst : local*, v_expr : expr) + | mk_funccode + +def $funccode_func(var_0 : func) : funccode + def $funccode_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_funccode(x0, x1, x2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funccode: `%`(funccode) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_0{v_typeidx : typeidx, local_lst : local*, v_expr : expr}: + `%`(FUNC_funccode(v_typeidx, local_lst, v_expr)) + -- wf_uN: `%%`(32, v_typeidx) + -- (wf_local: `%`(v_local))*{v_local <- local_lst} + -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_1: + `%`(mk_funccode_funccode) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax taginst = +{ + TYPE tagtype +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_taginst: `%`(taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_case_{var_0 : tagtype}: + `%`({TYPE var_0}) + -- wf_typeuse: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globalinst = +{ + TYPE globaltype, + VALUE val +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_globalinst: `%`(globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_case_{var_0 : globaltype, var_1 : val}: + `%`({TYPE var_0, VALUE var_1}) + -- wf_globaltype: `%`(var_0) + -- wf_val: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax meminst = +{ + TYPE memtype, + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_meminst: `%`(meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_case_{var_0 : memtype, var_1 : byte*}: + `%`({TYPE var_0, BYTES var_1}) + -- wf_memtype: `%`(var_0) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableinst = +{ + TYPE tabletype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_tableinst: `%`(tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_case_{var_0 : tabletype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_tabletype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcinst = +{ + TYPE deftype, + MODULE moduleinst, + CODE funccode +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funcinst: `%`(funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_case_{var_0 : deftype, var_1 : moduleinst, var_2 : funccode}: + `%`({TYPE var_0, MODULE var_1, CODE var_2}) + -- wf_moduleinst: `%`(var_1) + -- wf_funccode: `%`(var_2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax datainst = +{ + BYTES byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_datainst: `%`(datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_case_{var_0 : byte*}: + `%`({BYTES var_0}) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax eleminst = +{ + TYPE elemtype, + REFS ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_eleminst: `%`(eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_case_{var_0 : elemtype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_reftype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax packval = + | PACK(v_packtype : packtype, iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_packval: `%`(packval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packval_case_0{v_packtype : packtype, var_0 : iN}: + `%`(PACK_packval(v_packtype, var_0)) + -- wf_uN: `%%`($psize(v_packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax fieldval = + | CONST(v_numtype : numtype, num_) + | VCONST(v_vectype : vectype, vec_) + | REF_I31_NUM(v_u31 : u31) + | REF_NULL_ADDR + | REF_STRUCT_ADDR(v_structaddr : structaddr) + | REF_ARRAY_ADDR(v_arrayaddr : arrayaddr) + | REF_FUNC_ADDR(v_funcaddr : funcaddr) + | REF_EXN_ADDR(v_exnaddr : exnaddr) + | REF_HOST_ADDR(v_hostaddr : hostaddr) + | REF_EXTERN(v_ref : ref) + | PACK(v_packtype : packtype, iN) + +def $fieldval_packval(var_0 : packval) : fieldval + def $fieldval_packval{x0 : packtype, x1 : iN}(PACK_packval(x0, x1)) = PACK_fieldval(x0, x1) + +def $fieldval_ref(var_0 : ref) : fieldval + def $fieldval_ref{x0 : u31}(REF_I31_NUM_ref(x0)) = REF_I31_NUM_fieldval(x0) + def $fieldval_ref(REF_NULL_ADDR_ref) = REF_NULL_ADDR_fieldval + def $fieldval_ref{x0 : structaddr}(REF_STRUCT_ADDR_ref(x0)) = REF_STRUCT_ADDR_fieldval(x0) + def $fieldval_ref{x0 : arrayaddr}(REF_ARRAY_ADDR_ref(x0)) = REF_ARRAY_ADDR_fieldval(x0) + def $fieldval_ref{x0 : funcaddr}(REF_FUNC_ADDR_ref(x0)) = REF_FUNC_ADDR_fieldval(x0) + def $fieldval_ref{x0 : exnaddr}(REF_EXN_ADDR_ref(x0)) = REF_EXN_ADDR_fieldval(x0) + def $fieldval_ref{x0 : hostaddr}(REF_HOST_ADDR_ref(x0)) = REF_HOST_ADDR_fieldval(x0) + def $fieldval_ref{x0 : ref}(REF_EXTERN_ref(x0)) = REF_EXTERN_fieldval(x0) + +def $fieldval_val(var_0 : val) : fieldval + def $fieldval_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_fieldval(x0, x1) + def $fieldval_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_fieldval(x0, x1) + def $fieldval_val{x0 : u31}(REF_I31_NUM_val(x0)) = REF_I31_NUM_fieldval(x0) + def $fieldval_val(REF_NULL_ADDR_val) = REF_NULL_ADDR_fieldval + def $fieldval_val{x0 : structaddr}(REF_STRUCT_ADDR_val(x0)) = REF_STRUCT_ADDR_fieldval(x0) + def $fieldval_val{x0 : arrayaddr}(REF_ARRAY_ADDR_val(x0)) = REF_ARRAY_ADDR_fieldval(x0) + def $fieldval_val{x0 : funcaddr}(REF_FUNC_ADDR_val(x0)) = REF_FUNC_ADDR_fieldval(x0) + def $fieldval_val{x0 : exnaddr}(REF_EXN_ADDR_val(x0)) = REF_EXN_ADDR_fieldval(x0) + def $fieldval_val{x0 : hostaddr}(REF_HOST_ADDR_val(x0)) = REF_HOST_ADDR_fieldval(x0) + def $fieldval_val{x0 : ref}(REF_EXTERN_val(x0)) = REF_EXTERN_fieldval(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_fieldval: `%`(fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_0{v_numtype : numtype, var_0 : num_}: + `%`(CONST_fieldval(v_numtype, var_0)) + -- wf_num_: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_1{v_vectype : vectype, var_0 : vec_}: + `%`(VCONST_fieldval(v_vectype, var_0)) + -- wf_uN: `%%`($vsize(v_vectype), var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_2{v_u31 : u31}: + `%`(REF_I31_NUM_fieldval(v_u31)) + -- wf_uN: `%%`(31, v_u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_3: + `%`(REF_NULL_ADDR_fieldval) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_4{v_structaddr : structaddr}: + `%`(REF_STRUCT_ADDR_fieldval(v_structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_5{v_arrayaddr : arrayaddr}: + `%`(REF_ARRAY_ADDR_fieldval(v_arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_6{v_funcaddr : funcaddr}: + `%`(REF_FUNC_ADDR_fieldval(v_funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_7{v_exnaddr : exnaddr}: + `%`(REF_EXN_ADDR_fieldval(v_exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_8{v_hostaddr : hostaddr}: + `%`(REF_HOST_ADDR_fieldval(v_hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_9{v_ref : ref}: + `%`(REF_EXTERN_fieldval(v_ref)) + -- wf_ref: `%`(v_ref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_10{v_packtype : packtype, var_0 : iN}: + `%`(PACK_fieldval(v_packtype, var_0)) + -- wf_uN: `%%`($psize(v_packtype), var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_structinst: `%`(structinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayinst = +{ + TYPE deftype, + FIELDS fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_arrayinst: `%`(arrayinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exninst = +{ + TAG tagaddr, + FIELDS val* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exninst: `%`(exninst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_case_{var_0 : tagaddr, var_1 : val*}: + `%`({TAG var_0, FIELDS var_1}) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax store = +{ + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_store: `%`(store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: + `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) + -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} + -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} + -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} + -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} + -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} + -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} + -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} + -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} + -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} + -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax state = + | mk_state(v_store : store, v_frame : frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_state: `%`(state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule state_case_0{v_store : store, v_frame : frame}: + `%`(mk_state_state(v_store, v_frame)) + -- wf_store: `%`(v_store) + -- wf_frame: `%`(v_frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax config = + | mk_config(v_state : state, instr_lst : instr*) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_config: `%`(config) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule config_case_0{v_state : state, instr_lst : instr*}: + `%`(mk_config_config(v_state, instr_lst)) + -- wf_state: `%`(v_state) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $Ki : nat + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $Ki = 1024 + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $packfield_(v_storagetype : storagetype, v_val : val) : fieldval? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{v_val : val}(BOT_storagetype, v_val) = ?($fieldval_val(v_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{null_opt : null?, v_heaptype : heaptype, v_val : val}(REF_storagetype(null_opt, v_heaptype), v_val) = ?($fieldval_val(v_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{v_val : val}(V128_storagetype, v_val) = ?($fieldval_val(v_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{v_val : val}(F64_storagetype, v_val) = ?($fieldval_val(v_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{v_val : val}(F32_storagetype, v_val) = ?($fieldval_val(v_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{v_val : val}(I64_storagetype, v_val) = ?($fieldval_val(v_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{v_val : val}(I32_storagetype, v_val) = ?($fieldval_val(v_val)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation packfield__is_wf: `%%%`(v_storagetype : storagetype, v_val : val, ret_val : fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packfield__is_wf_0{v_storagetype : storagetype, v_val : val, ret_val : fieldval}: + `%%%`(v_storagetype, v_val, ret_val) + -- wf_storagetype: `%`(v_storagetype) + -- wf_val: `%`(v_val) + -- if (ret_val = !($packfield_(v_storagetype, v_val))) + -- if ($packfield_(v_storagetype, v_val) =/= ?()) + -- wf_fieldval: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $unpackfield_(v_storagetype : storagetype, var_0 : sx?, v_fieldval : fieldval) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_ref : ref}(BOT_storagetype, ?(), REF_EXTERN_fieldval(v_ref)) = ?(REF_EXTERN_val(v_ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_ref : ref, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_EXTERN_fieldval(v_ref)) = ?(REF_EXTERN_val(v_ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_ref : ref}(V128_storagetype, ?(), REF_EXTERN_fieldval(v_ref)) = ?(REF_EXTERN_val(v_ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_ref : ref}(F64_storagetype, ?(), REF_EXTERN_fieldval(v_ref)) = ?(REF_EXTERN_val(v_ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_ref : ref}(F32_storagetype, ?(), REF_EXTERN_fieldval(v_ref)) = ?(REF_EXTERN_val(v_ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_ref : ref}(I64_storagetype, ?(), REF_EXTERN_fieldval(v_ref)) = ?(REF_EXTERN_val(v_ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_ref : ref}(I32_storagetype, ?(), REF_EXTERN_fieldval(v_ref)) = ?(REF_EXTERN_val(v_ref)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_hostaddr : hostaddr}(BOT_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = ?(REF_HOST_ADDR_val(v_hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_hostaddr : hostaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = ?(REF_HOST_ADDR_val(v_hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_hostaddr : hostaddr}(V128_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = ?(REF_HOST_ADDR_val(v_hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_hostaddr : hostaddr}(F64_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = ?(REF_HOST_ADDR_val(v_hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_hostaddr : hostaddr}(F32_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = ?(REF_HOST_ADDR_val(v_hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_hostaddr : hostaddr}(I64_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = ?(REF_HOST_ADDR_val(v_hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_hostaddr : hostaddr}(I32_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = ?(REF_HOST_ADDR_val(v_hostaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_exnaddr : exnaddr}(BOT_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = ?(REF_EXN_ADDR_val(v_exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_exnaddr : exnaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = ?(REF_EXN_ADDR_val(v_exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_exnaddr : exnaddr}(V128_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = ?(REF_EXN_ADDR_val(v_exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_exnaddr : exnaddr}(F64_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = ?(REF_EXN_ADDR_val(v_exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_exnaddr : exnaddr}(F32_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = ?(REF_EXN_ADDR_val(v_exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_exnaddr : exnaddr}(I64_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = ?(REF_EXN_ADDR_val(v_exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_exnaddr : exnaddr}(I32_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = ?(REF_EXN_ADDR_val(v_exnaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_funcaddr : funcaddr}(BOT_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = ?(REF_FUNC_ADDR_val(v_funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_funcaddr : funcaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = ?(REF_FUNC_ADDR_val(v_funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_funcaddr : funcaddr}(V128_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = ?(REF_FUNC_ADDR_val(v_funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_funcaddr : funcaddr}(F64_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = ?(REF_FUNC_ADDR_val(v_funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_funcaddr : funcaddr}(F32_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = ?(REF_FUNC_ADDR_val(v_funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_funcaddr : funcaddr}(I64_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = ?(REF_FUNC_ADDR_val(v_funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_funcaddr : funcaddr}(I32_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = ?(REF_FUNC_ADDR_val(v_funcaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_arrayaddr : arrayaddr}(BOT_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = ?(REF_ARRAY_ADDR_val(v_arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_arrayaddr : arrayaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = ?(REF_ARRAY_ADDR_val(v_arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_arrayaddr : arrayaddr}(V128_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = ?(REF_ARRAY_ADDR_val(v_arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_arrayaddr : arrayaddr}(F64_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = ?(REF_ARRAY_ADDR_val(v_arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_arrayaddr : arrayaddr}(F32_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = ?(REF_ARRAY_ADDR_val(v_arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_arrayaddr : arrayaddr}(I64_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = ?(REF_ARRAY_ADDR_val(v_arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_arrayaddr : arrayaddr}(I32_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = ?(REF_ARRAY_ADDR_val(v_arrayaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_structaddr : structaddr}(BOT_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = ?(REF_STRUCT_ADDR_val(v_structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_structaddr : structaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = ?(REF_STRUCT_ADDR_val(v_structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_structaddr : structaddr}(V128_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = ?(REF_STRUCT_ADDR_val(v_structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_structaddr : structaddr}(F64_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = ?(REF_STRUCT_ADDR_val(v_structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_structaddr : structaddr}(F32_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = ?(REF_STRUCT_ADDR_val(v_structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_structaddr : structaddr}(I64_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = ?(REF_STRUCT_ADDR_val(v_structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_structaddr : structaddr}(I32_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = ?(REF_STRUCT_ADDR_val(v_structaddr)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(BOT_storagetype, ?(), REF_NULL_ADDR_fieldval) = ?(REF_NULL_ADDR_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_NULL_ADDR_fieldval) = ?(REF_NULL_ADDR_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(V128_storagetype, ?(), REF_NULL_ADDR_fieldval) = ?(REF_NULL_ADDR_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(F64_storagetype, ?(), REF_NULL_ADDR_fieldval) = ?(REF_NULL_ADDR_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(F32_storagetype, ?(), REF_NULL_ADDR_fieldval) = ?(REF_NULL_ADDR_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(I64_storagetype, ?(), REF_NULL_ADDR_fieldval) = ?(REF_NULL_ADDR_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_(I32_storagetype, ?(), REF_NULL_ADDR_fieldval) = ?(REF_NULL_ADDR_val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_u31 : u31}(BOT_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = ?(REF_I31_NUM_val(v_u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_u31 : u31, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_I31_NUM_fieldval(v_u31)) = ?(REF_I31_NUM_val(v_u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_u31 : u31}(V128_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = ?(REF_I31_NUM_val(v_u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_u31 : u31}(F64_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = ?(REF_I31_NUM_val(v_u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_u31 : u31}(F32_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = ?(REF_I31_NUM_val(v_u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_u31 : u31}(I64_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = ?(REF_I31_NUM_val(v_u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_u31 : u31}(I32_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = ?(REF_I31_NUM_val(v_u31)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_vectype : vectype, var_1 : vec_}(BOT_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) = ?(VCONST_val(v_vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_vectype : vectype, var_1 : vec_, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), VCONST_fieldval(v_vectype, var_1)) = ?(VCONST_val(v_vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_vectype : vectype, var_1 : vec_}(V128_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) = ?(VCONST_val(v_vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_vectype : vectype, var_1 : vec_}(F64_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) = ?(VCONST_val(v_vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_vectype : vectype, var_1 : vec_}(F32_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) = ?(VCONST_val(v_vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_vectype : vectype, var_1 : vec_}(I64_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) = ?(VCONST_val(v_vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_vectype : vectype, var_1 : vec_}(I32_storagetype, ?(), VCONST_fieldval(v_vectype, var_1)) = ?(VCONST_val(v_vectype, var_1)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_numtype : numtype, var_0 : num_}(BOT_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) = ?(CONST_val(v_numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_numtype : numtype, var_0 : num_, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), CONST_fieldval(v_numtype, var_0)) = ?(CONST_val(v_numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_numtype : numtype, var_0 : num_}(V128_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) = ?(CONST_val(v_numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_numtype : numtype, var_0 : num_}(F64_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) = ?(CONST_val(v_numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_numtype : numtype, var_0 : num_}(F32_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) = ?(CONST_val(v_numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_numtype : numtype, var_0 : num_}(I64_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) = ?(CONST_val(v_numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_numtype : numtype, var_0 : num_}(I32_storagetype, ?(), CONST_fieldval(v_numtype, var_0)) = ?(CONST_val(v_numtype, var_0)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_sx : sx, i : uN}(I8_storagetype, ?(v_sx), PACK_fieldval(I8_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, v_sx, i)))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{v_sx : sx, i : uN}(I16_storagetype, ?(v_sx), PACK_fieldval(I16_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, v_sx, i)))) + def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() + -- otherwise + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation unpackfield__is_wf: `%%%%`(v_storagetype : storagetype, var_0 : sx?, v_fieldval : fieldval, ret_val : val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule unpackfield__is_wf_0{v_storagetype : storagetype, var_0 : sx?, v_fieldval : fieldval, ret_val : val}: + `%%%%`(v_storagetype, var_0, v_fieldval, ret_val) + -- wf_storagetype: `%`(v_storagetype) + -- wf_fieldval: `%`(v_fieldval) + -- if (ret_val = !($unpackfield_(v_storagetype, var_0, v_fieldval))) + -- if ($unpackfield_(v_storagetype, var_0, v_fieldval) =/= ?()) + -- wf_val: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 +relation fun_tagsxa: `%%`(externaddr*, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_1{a : nat, xa_lst : externaddr*, var_0 : tagaddr*}: + `%%`([TAG_externaddr(a)] ++ xa_lst, [a] ++ var_0) + -- fun_tagsxa: `%%`(xa_lst, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.6-190.13 + rule fun_tagsxa_case_2{v_externaddr : externaddr, xa_lst : externaddr*, var_0 : tagaddr*}: + `%%`([v_externaddr] ++ xa_lst, var_0) + -- fun_tagsxa: `%%`(xa_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 +relation fun_globalsxa: `%%`(externaddr*, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_1{a : nat, xa_lst : externaddr*, var_0 : globaladdr*}: + `%%`([GLOBAL_externaddr(a)] ++ xa_lst, [a] ++ var_0) + -- fun_globalsxa: `%%`(xa_lst, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.6-191.16 + rule fun_globalsxa_case_2{v_externaddr : externaddr, xa_lst : externaddr*, var_0 : globaladdr*}: + `%%`([v_externaddr] ++ xa_lst, var_0) + -- fun_globalsxa: `%%`(xa_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 +relation fun_memsxa: `%%`(externaddr*, memaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_1{a : nat, xa_lst : externaddr*, var_0 : memaddr*}: + `%%`([MEM_externaddr(a)] ++ xa_lst, [a] ++ var_0) + -- fun_memsxa: `%%`(xa_lst, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.6-192.13 + rule fun_memsxa_case_2{v_externaddr : externaddr, xa_lst : externaddr*, var_0 : memaddr*}: + `%%`([v_externaddr] ++ xa_lst, var_0) + -- fun_memsxa: `%%`(xa_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 +relation fun_tablesxa: `%%`(externaddr*, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_1{a : nat, xa_lst : externaddr*, var_0 : tableaddr*}: + `%%`([TABLE_externaddr(a)] ++ xa_lst, [a] ++ var_0) + -- fun_tablesxa: `%%`(xa_lst, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.15 + rule fun_tablesxa_case_2{v_externaddr : externaddr, xa_lst : externaddr*, var_0 : tableaddr*}: + `%%`([v_externaddr] ++ xa_lst, var_0) + -- fun_tablesxa: `%%`(xa_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 +relation fun_funcsxa: `%%`(externaddr*, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_1{a : nat, xa_lst : externaddr*, var_0 : funcaddr*}: + `%%`([FUNC_externaddr(a)] ++ xa_lst, [a] ++ var_0) + -- fun_funcsxa: `%%`(xa_lst, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.14 + rule fun_funcsxa_case_2{v_externaddr : externaddr, xa_lst : externaddr*, var_0 : funcaddr*}: + `%%`([v_externaddr] ++ xa_lst, var_0) + -- fun_funcsxa: `%%`(xa_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_store(v_state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_store{s : store, f : frame}(mk_state_state(s, f)) = s + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation store_is_wf: `%%`(v_state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_is_wf_0{v_state : state, ret_val : store}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_store(v_state)) + -- wf_store: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_frame(v_state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_frame{s : store, f : frame}(mk_state_state(s, f)) = f + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation frame_is_wf: `%%`(v_state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_is_wf_0{v_state : state, ret_val : frame}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_frame(v_state)) + -- wf_frame: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_tagaddr(v_state : state) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_tagaddr{s : store, f : frame}(mk_state_state(s, f)) = f.MODULE_frame.TAGS_moduleinst + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_moduleinst(v_state : state) : moduleinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_moduleinst{s : store, f : frame}(mk_state_state(s, f)) = f.MODULE_frame + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation moduleinst_is_wf: `%%`(v_state : state, ret_val : moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_is_wf_0{v_state : state, ret_val : moduleinst}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_moduleinst(v_state)) + -- wf_moduleinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_taginst(v_state : state) : taginst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_taginst{s : store, f : frame}(mk_state_state(s, f)) = s.TAGS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation taginst_is_wf: `%%`(v_state : state, ret_val : taginst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_is_wf_0{v_state : state, ret_val : taginst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_taginst(v_state)) + -- (wf_taginst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_globalinst(v_state : state) : globalinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_globalinst{s : store, f : frame}(mk_state_state(s, f)) = s.GLOBALS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation globalinst_is_wf: `%%`(v_state : state, ret_val : globalinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_is_wf_0{v_state : state, ret_val : globalinst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_globalinst(v_state)) + -- (wf_globalinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_meminst(v_state : state) : meminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_meminst{s : store, f : frame}(mk_state_state(s, f)) = s.MEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation meminst_is_wf: `%%`(v_state : state, ret_val : meminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_is_wf_0{v_state : state, ret_val : meminst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_meminst(v_state)) + -- (wf_meminst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_tableinst(v_state : state) : tableinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_tableinst{s : store, f : frame}(mk_state_state(s, f)) = s.TABLES_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tableinst_is_wf: `%%`(v_state : state, ret_val : tableinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_is_wf_0{v_state : state, ret_val : tableinst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_tableinst(v_state)) + -- (wf_tableinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_funcinst(v_state : state) : funcinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_funcinst{s : store, f : frame}(mk_state_state(s, f)) = s.FUNCS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation funcinst_is_wf: `%%`(v_state : state, ret_val : funcinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_is_wf_0{v_state : state, ret_val : funcinst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_funcinst(v_state)) + -- (wf_funcinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_datainst(v_state : state) : datainst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_datainst{s : store, f : frame}(mk_state_state(s, f)) = s.DATAS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation datainst_is_wf: `%%`(v_state : state, ret_val : datainst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_is_wf_0{v_state : state, ret_val : datainst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_datainst(v_state)) + -- (wf_datainst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_eleminst(v_state : state) : eleminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_eleminst{s : store, f : frame}(mk_state_state(s, f)) = s.ELEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation eleminst_is_wf: `%%`(v_state : state, ret_val : eleminst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_is_wf_0{v_state : state, ret_val : eleminst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_eleminst(v_state)) + -- (wf_eleminst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_structinst(v_state : state) : structinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_structinst{s : store, f : frame}(mk_state_state(s, f)) = s.STRUCTS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation structinst_is_wf: `%%`(v_state : state, ret_val : structinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_is_wf_0{v_state : state, ret_val : structinst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_structinst(v_state)) + -- (wf_structinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_arrayinst(v_state : state) : arrayinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_arrayinst{s : store, f : frame}(mk_state_state(s, f)) = s.ARRAYS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation arrayinst_is_wf: `%%`(v_state : state, ret_val : arrayinst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_is_wf_0{v_state : state, ret_val : arrayinst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_arrayinst(v_state)) + -- (wf_arrayinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_exninst(v_state : state) : exninst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_exninst{s : store, f : frame}(mk_state_state(s, f)) = s.EXNS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation exninst_is_wf: `%%`(v_state : state, ret_val : exninst*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_is_wf_0{v_state : state, ret_val : exninst*}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fun_exninst(v_state)) + -- (wf_exninst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fof(v_state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fof{z : state}(z) = $fun_frame(z) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fof_is_wf: `%%`(v_state : state, ret_val : frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fof_is_wf_0{v_state : state, ret_val : frame}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $fof(v_state)) + -- wf_frame: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_type(v_state : state, v_typeidx : typeidx) : deftype + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_type{z : state, x : uN}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $sof(v_state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $sof{z : state}(z) = $fun_store(z) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation sof_is_wf: `%%`(v_state : state, ret_val : store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule sof_is_wf_0{v_state : state, ret_val : store}: + `%%`(v_state, ret_val) + -- wf_state: `%`(v_state) + -- if (ret_val = $sof(v_state)) + -- wf_store: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_tag(v_state : state, v_tagidx : tagidx) : taginst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_tag{z : state, x : uN}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation tag_is_wf: `%%%`(v_state : state, v_tagidx : tagidx, ret_val : taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tag_is_wf_0{v_state : state, v_tagidx : tagidx, ret_val : taginst}: + `%%%`(v_state, v_tagidx, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_tagidx) + -- if (ret_val = $fun_tag(v_state, v_tagidx)) + -- wf_taginst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_global(v_state : state, v_globalidx : globalidx) : globalinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_global{z : state, x : uN}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation global_is_wf: `%%%`(v_state : state, v_globalidx : globalidx, ret_val : globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule global_is_wf_0{v_state : state, v_globalidx : globalidx, ret_val : globalinst}: + `%%%`(v_state, v_globalidx, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_globalidx) + -- if (ret_val = $fun_global(v_state, v_globalidx)) + -- wf_globalinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_mem(v_state : state, v_memidx : memidx) : meminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_mem{z : state, x : uN}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation mem_is_wf: `%%%`(v_state : state, v_memidx : memidx, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule mem_is_wf_0{v_state : state, v_memidx : memidx, ret_val : meminst}: + `%%%`(v_state, v_memidx, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_memidx) + -- if (ret_val = $fun_mem(v_state, v_memidx)) + -- wf_meminst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_table(v_state : state, v_tableidx : tableidx) : tableinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_table{z : state, x : uN}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation table_is_wf: `%%%`(v_state : state, v_tableidx : tableidx, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule table_is_wf_0{v_state : state, v_tableidx : tableidx, ret_val : tableinst}: + `%%%`(v_state, v_tableidx, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_tableidx) + -- if (ret_val = $fun_table(v_state, v_tableidx)) + -- wf_tableinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_func(v_state : state, v_funcidx : funcidx) : funcinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_func{z : state, x : uN}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation func_is_wf: `%%%`(v_state : state, v_funcidx : funcidx, ret_val : funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule func_is_wf_0{v_state : state, v_funcidx : funcidx, ret_val : funcinst}: + `%%%`(v_state, v_funcidx, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_funcidx) + -- if (ret_val = $fun_func(v_state, v_funcidx)) + -- wf_funcinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_data(v_state : state, v_dataidx : dataidx) : datainst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_data{z : state, x : uN}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation data_is_wf: `%%%`(v_state : state, v_dataidx : dataidx, ret_val : datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule data_is_wf_0{v_state : state, v_dataidx : dataidx, ret_val : datainst}: + `%%%`(v_state, v_dataidx, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_dataidx) + -- if (ret_val = $fun_data(v_state, v_dataidx)) + -- wf_datainst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_elem(v_state : state, v_tableidx : tableidx) : eleminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_elem{z : state, x : uN}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation elem_is_wf: `%%%`(v_state : state, v_tableidx : tableidx, ret_val : eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule elem_is_wf_0{v_state : state, v_tableidx : tableidx, ret_val : eleminst}: + `%%%`(v_state, v_tableidx, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_tableidx) + -- if (ret_val = $fun_elem(v_state, v_tableidx)) + -- wf_eleminst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fun_local(v_state : state, v_localidx : localidx) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fun_local{z : state, x : uN}(z, x) = $fof(z).LOCALS_frame[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation local_is_wf: `%%%`(v_state : state, v_localidx : localidx, ret_val : val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule local_is_wf_0{v_state : state, v_localidx : localidx, ret_val : val?}: + `%%%`(v_state, v_localidx, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_localidx) + -- if (ret_val = $fun_local(v_state, v_localidx)) + -- (wf_val: `%`(ret_val))?{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_local(v_state : state, v_localidx : localidx, v_val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_local{z : state, x : uN, v : val}(z, x, v) = mk_state_state($sof(z), $fof(z)[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_local_is_wf: `%%%%`(v_state : state, v_localidx : localidx, v_val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_local_is_wf_0{v_state : state, v_localidx : localidx, v_val : val, ret_val : state}: + `%%%%`(v_state, v_localidx, v_val, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_localidx) + -- wf_val: `%`(v_val) + -- if (ret_val = $with_local(v_state, v_localidx, v_val)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_global(v_state : state, v_globalidx : globalidx, v_val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_global{z : state, x : uN, v : val}(z, x, v) = mk_state_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_global_is_wf: `%%%%`(v_state : state, v_globalidx : globalidx, v_val : val, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_global_is_wf_0{v_state : state, v_globalidx : globalidx, v_val : val, ret_val : state}: + `%%%%`(v_state, v_globalidx, v_val, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_globalidx) + -- wf_val: `%`(v_val) + -- if (ret_val = $with_global(v_state, v_globalidx, v_val)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_table(v_state : state, v_tableidx : tableidx, nat : nat, v_ref : ref) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_table{z : state, x : uN, i : nat, r : ref}(z, x, i, r) = mk_state_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_table_is_wf: `%%%%%`(v_state : state, v_tableidx : tableidx, nat : nat, v_ref : ref, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_table_is_wf_0{v_state : state, v_tableidx : tableidx, nat : nat, v_ref : ref, ret_val : state}: + `%%%%%`(v_state, v_tableidx, nat, v_ref, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_tableidx) + -- wf_ref: `%`(v_ref) + -- if (ret_val = $with_table(v_state, v_tableidx, nat, v_ref)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_tableinst(v_state : state, v_tableidx : tableidx, v_tableinst : tableinst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_tableinst{z : state, x : uN, ti : tableinst}(z, x, ti) = mk_state_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_tableinst_is_wf: `%%%%`(v_state : state, v_tableidx : tableidx, v_tableinst : tableinst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_tableinst_is_wf_0{v_state : state, v_tableidx : tableidx, v_tableinst : tableinst, ret_val : state}: + `%%%%`(v_state, v_tableidx, v_tableinst, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_tableidx) + -- wf_tableinst: `%`(v_tableinst) + -- if (ret_val = $with_tableinst(v_state, v_tableidx, v_tableinst)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_mem(v_state : state, v_memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_mem{z : state, x : uN, i : nat, j : nat, b_lst : byte*}(z, x, i, j, b_lst) = mk_state_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b_lst], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_mem_is_wf: `%%%%%%`(v_state : state, v_memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_mem_is_wf_0{v_state : state, v_memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*, ret_val : state}: + `%%%%%%`(v_state, v_memidx, nat, nat_0, var_0, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_memidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_mem(v_state, v_memidx, nat, nat_0, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_meminst(v_state : state, v_memidx : memidx, v_meminst : meminst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_meminst{z : state, x : uN, mi : meminst}(z, x, mi) = mk_state_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_meminst_is_wf: `%%%%`(v_state : state, v_memidx : memidx, v_meminst : meminst, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_meminst_is_wf_0{v_state : state, v_memidx : memidx, v_meminst : meminst, ret_val : state}: + `%%%%`(v_state, v_memidx, v_meminst, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_memidx) + -- wf_meminst: `%`(v_meminst) + -- if (ret_val = $with_meminst(v_state, v_memidx, v_meminst)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_elem(v_state : state, v_elemidx : elemidx, var_0 : ref*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_elem{z : state, x : uN, r_lst : ref*}(z, x, r_lst) = mk_state_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r_lst], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_elem_is_wf: `%%%%`(v_state : state, v_elemidx : elemidx, var_0 : ref*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_elem_is_wf_0{v_state : state, v_elemidx : elemidx, var_0 : ref*, ret_val : state}: + `%%%%`(v_state, v_elemidx, var_0, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_elemidx) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_elem(v_state, v_elemidx, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_data(v_state : state, v_dataidx : dataidx, var_0 : byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_data{z : state, x : uN, b_lst : byte*}(z, x, b_lst) = mk_state_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b_lst], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_data_is_wf: `%%%%`(v_state : state, v_dataidx : dataidx, var_0 : byte*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_data_is_wf_0{v_state : state, v_dataidx : dataidx, var_0 : byte*, ret_val : state}: + `%%%%`(v_state, v_dataidx, var_0, ret_val) + -- wf_state: `%`(v_state) + -- wf_uN: `%%`(32, v_dataidx) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $with_data(v_state, v_dataidx, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_struct(v_state : state, v_structaddr : structaddr, nat : nat, v_fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_struct{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = mk_state_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_struct_is_wf: `%%%%%`(v_state : state, v_structaddr : structaddr, nat : nat, v_fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_struct_is_wf_0{v_state : state, v_structaddr : structaddr, nat : nat, v_fieldval : fieldval, ret_val : state}: + `%%%%%`(v_state, v_structaddr, nat, v_fieldval, ret_val) + -- wf_state: `%`(v_state) + -- wf_fieldval: `%`(v_fieldval) + -- if (ret_val = $with_struct(v_state, v_structaddr, nat, v_fieldval)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_array(v_state : state, v_arrayaddr : arrayaddr, nat : nat, v_fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_array{z : state, a : nat, i : nat, fv : fieldval}(z, a, i, fv) = mk_state_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation with_array_is_wf: `%%%%%`(v_state : state, v_arrayaddr : arrayaddr, nat : nat, v_fieldval : fieldval, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule with_array_is_wf_0{v_state : state, v_arrayaddr : arrayaddr, nat : nat, v_fieldval : fieldval, ret_val : state}: + `%%%%%`(v_state, v_arrayaddr, nat, v_fieldval, ret_val) + -- wf_state: `%`(v_state) + -- wf_fieldval: `%`(v_fieldval) + -- if (ret_val = $with_array(v_state, v_arrayaddr, nat, v_fieldval)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_structinst(v_state : state, var_0 : structinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_structinst{z : state, si_lst : structinst*}(z, si_lst) = mk_state_state($sof(z)[STRUCTS_store =++ si_lst], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_structinst_is_wf: `%%%`(v_state : state, var_0 : structinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_structinst_is_wf_0{v_state : state, var_0 : structinst*, ret_val : state}: + `%%%`(v_state, var_0, ret_val) + -- wf_state: `%`(v_state) + -- (wf_structinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_structinst(v_state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_arrayinst(v_state : state, var_0 : arrayinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_arrayinst{z : state, ai_lst : arrayinst*}(z, ai_lst) = mk_state_state($sof(z)[ARRAYS_store =++ ai_lst], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_arrayinst_is_wf: `%%%`(v_state : state, var_0 : arrayinst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_arrayinst_is_wf_0{v_state : state, var_0 : arrayinst*, ret_val : state}: + `%%%`(v_state, var_0, ret_val) + -- wf_state: `%`(v_state) + -- (wf_arrayinst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_arrayinst(v_state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_exninst(v_state : state, var_0 : exninst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_exninst{z : state, exn_lst : exninst*}(z, exn_lst) = mk_state_state($sof(z)[EXNS_store =++ exn_lst], $fof(z)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation add_exninst_is_wf: `%%%`(v_state : state, var_0 : exninst*, ret_val : state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule add_exninst_is_wf_0{v_state : state, var_0 : exninst*, ret_val : state}: + `%%%`(v_state, var_0, ret_val) + -- wf_state: `%`(v_state) + -- (wf_exninst: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $add_exninst(v_state, var_0)) + -- wf_state: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growtable_before_fun_growtable_case_1: `%%%`(tableinst, nat, ref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_0{v_tableinst : tableinst, v_n : nat, r : ref, tableinst' : tableinst, i' : uN}: + `%%%`(v_tableinst, v_n, r) + -- let{at : addrtype, i : u64, j_opt : u64?, rt : reftype, r'_lst : ref*} {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS r'_lst} = v_tableinst + -- if (tableinst' = {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) + -- if ($proj_uN_0(i').0 = (|r'_lst| + v_n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j_3).0))?{j_3 <- j_opt} + -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) + -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS r'_lst}) + -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_0{v_tableinst : tableinst, v_n : nat, r : ref, tableinst' : tableinst, i' : uN}: + `%%%%`(v_tableinst, v_n, r, ?(tableinst')) + -- let{at : addrtype, i : u64, j_opt : u64?, rt : reftype, r'_lst : ref*} {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS r'_lst} = v_tableinst + -- if (tableinst' = {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) + -- if ($proj_uN_0(i').0 = (|r'_lst| + v_n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j_3).0))?{j_3 <- j_opt} + -- if (($proj_uN_0(i').0 : nat <:> int) <= (((2 ^ $size($numtype_addrtype(at))) : nat <:> int) - (1 : nat <:> int))) + -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS r'_lst}) + -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_1{x0 : tableinst, x1 : nat, x2 : ref}: + `%%%%`(x0, x1, x2, ?()) + -- ~ fun_growtable_before_fun_growtable_case_1: `%%%`(x0, x1, x2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growtable_is_wf: `%%%%`(v_tableinst : tableinst, nat : nat, v_ref : ref, ret_val : tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growtable_is_wf_0{v_tableinst : tableinst, nat : nat, v_ref : ref, ret_val : tableinst, var_0 : tableinst?}: + `%%%%`(v_tableinst, nat, v_ref, ret_val) + -- wf_tableinst: `%`(v_tableinst) + -- wf_ref: `%`(v_ref) + -- if (ret_val = !(var_0)) + -- if (var_0 =/= ?()) + -- wf_tableinst: `%`(ret_val) + -- fun_growtable: `%%%%`(v_tableinst, nat, v_ref, var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem_before_fun_growmem_case_1: `%%`(meminst, nat) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_0{v_meminst : meminst, v_n : nat, meminst' : meminst, i' : uN}: + `%%`(v_meminst, v_n) + -- let{at : addrtype, i : u64, j_opt : u64?, b_lst : byte*} {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES b_lst} = v_meminst + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i', j_opt)), BYTES b_lst ++ mk_byte_byte(0)^(v_n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b_lst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (v_n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j_8).0))?{j_8 <- j_opt} + -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES b_lst}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i', j_opt)), BYTES b_lst ++ mk_byte_byte(0)^(v_n * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem: `%%%`(meminst, nat, meminst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_0{v_meminst : meminst, v_n : nat, meminst' : meminst, i' : uN}: + `%%%`(v_meminst, v_n, ?(meminst')) + -- let{at : addrtype, i : u64, j_opt : u64?, b_lst : byte*} {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES b_lst} = v_meminst + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i', j_opt)), BYTES b_lst ++ mk_byte_byte(0)^(v_n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b_lst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (v_n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j_8).0))?{j_8 <- j_opt} + -- if ($proj_uN_0(i').0 <= (2 ^ ((($size($numtype_addrtype(at)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES b_lst}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i', j_opt)), BYTES b_lst ++ mk_byte_byte(0)^(v_n * (64 * $Ki)){}}) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_1{x0 : meminst, x1 : nat}: + `%%%`(x0, x1, ?()) + -- ~ fun_growmem_before_fun_growmem_case_1: `%%`(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation growmem_is_wf: `%%%`(v_meminst : meminst, nat : nat, ret_val : meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule growmem_is_wf_0{v_meminst : meminst, nat : nat, ret_val : meminst, var_0 : meminst?}: + `%%%`(v_meminst, nat, ret_val) + -- wf_meminst: `%`(v_meminst) + -- if (ret_val = !(var_0)) + -- if (var_0 =/= ?()) + -- wf_meminst: `%`(ret_val) + -- fun_growmem: `%%%`(v_meminst, nat, var_0) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Num_ok: `%|-%:%`(store, num, numtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule mk_Num_ok{s : store, nt : numtype, c : num_}: + `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Vec_ok: `%|-%:%`(store, vec, vectype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule mk_Vec_ok{s : store, vt : vectype, c : vec_}: + `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +relation Ref_ok: `%|-%:%`(store, ref, reftype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.36 + rule null{s : store}: + `%|-%:%`(s, REF_NULL_ADDR_ref, REF_reftype(?(NULL_null), BOT_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF_NULL_ADDR_ref) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), BOT_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.31 + rule i31{s : store, i : u31}: + `%|-%:%`(s, REF_I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF_I31_NUM_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 + rule struct{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF_STRUCT_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.STRUCTS_store[a].TYPE_structinst = dt) + -- if (a < |s.STRUCTS_store|) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF_STRUCT_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 + rule array{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF_ARRAY_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) + -- if (a < |s.ARRAYS_store|) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF_ARRAY_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 + rule func{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF_FUNC_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.FUNCS_store[a].TYPE_funcinst = dt) + -- if (a < |s.FUNCS_store|) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF_FUNC_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 + rule exn{s : store, a : addr, exn : exninst}: + `%|-%:%`(s, REF_EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + -- if (s.EXNS_store[a] = exn) + -- if (a < |s.EXNS_store|) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(REF_EXN_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.33 + rule host{s : store, a : addr}: + `%|-%:%`(s, REF_HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF_HOST_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 + rule extern{s : store, v_ref : ref}: + `%|-%:%`(s, REF_EXTERN_ref(v_ref), REF_reftype(?(), EXTERN_heaptype)) + -- Ref_ok: `%|-%:%`(s, v_ref, REF_reftype(?(), ANY_heaptype)) + -- if (v_ref =/= REF_NULL_ADDR_ref) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF_EXTERN_ref(v_ref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + -- wf_ref: `%`(REF_NULL_ADDR_ref) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-69.34 + rule sub{s : store, v_ref : ref, rt : reftype, rt' : reftype}: + `%|-%:%`(s, v_ref, rt) + -- Ref_ok: `%|-%:%`(s, v_ref, rt') + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(v_ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Val_ok: `%|-%:%`(store, val, valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule num{s : store, v_num : num, nt : numtype}: + `%|-%:%`(s, $val_num(v_num), $valtype_numtype(nt)) + -- Num_ok: `%|-%:%`(s, v_num, nt) + -- wf_store: `%`(s) + -- wf_num: `%`(v_num) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule vec{s : store, v_vec : vec, vt : vectype}: + `%|-%:%`(s, $val_vec(v_vec), $valtype_vectype(vt)) + -- Vec_ok: `%|-%:%`(s, v_vec, vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(v_vec) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule ref{s : store, v_ref : ref, rt : reftype}: + `%|-%:%`(s, $val_ref(v_ref), $valtype_reftype(rt)) + -- Ref_ok: `%|-%:%`(s, v_ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(v_ref) + -- wf_reftype: `%`(rt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Packval_ok: `%|-%:%`(store, packval, packtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule mk_Packval_ok{s : store, pt : packtype, c : iN}: + `%|-%:%`(s, PACK_packval(pt, c), pt) + -- wf_store: `%`(s) + -- wf_packval: `%`(PACK_packval(pt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule val{s : store, v_val : val, t : valtype}: + `%|-%:%`(s, $fieldval_val(v_val), $storagetype_valtype(t)) + -- Val_ok: `%|-%:%`(s, v_val, t) + -- wf_store: `%`(s) + -- wf_val: `%`(v_val) + -- wf_valtype: `%`(t) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule packval{s : store, v_packval : packval, pt : packtype}: + `%|-%:%`(s, $fieldval_packval(v_packval), $storagetype_packtype(pt)) + -- Packval_ok: `%|-%:%`(s, v_packval, pt) + -- wf_store: `%`(s) + -- wf_packval: `%`(v_packval) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-104.84 +relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:106.1-108.28 + rule tag{s : store, a : addr, v_taginst : taginst}: + `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(v_taginst.TYPE_taginst)) + -- if (s.TAGS_store[a] = v_taginst) + -- if (a < |s.TAGS_store|) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(v_taginst.TYPE_taginst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:110.1-112.34 + rule global{s : store, a : addr, v_globalinst : globalinst}: + `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(v_globalinst.TYPE_globalinst)) + -- if (s.GLOBALS_store[a] = v_globalinst) + -- if (a < |s.GLOBALS_store|) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(v_globalinst.TYPE_globalinst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:114.1-116.28 + rule mem{s : store, a : addr, v_meminst : meminst}: + `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(v_meminst.TYPE_meminst)) + -- if (s.MEMS_store[a] = v_meminst) + -- if (a < |s.MEMS_store|) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(v_meminst.TYPE_meminst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:118.1-120.32 + rule table{s : store, a : addr, v_tableinst : tableinst}: + `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(v_tableinst.TYPE_tableinst)) + -- if (s.TABLES_store[a] = v_tableinst) + -- if (a < |s.TABLES_store|) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(v_tableinst.TYPE_tableinst)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:122.1-124.30 + rule func{s : store, a : addr, v_funcinst : funcinst}: + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(v_funcinst.TYPE_funcinst))) + -- if (s.FUNCS_store[a] = v_funcinst) + -- if (a < |s.FUNCS_store|) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(v_funcinst.TYPE_funcinst))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:126.1-130.37 + rule sub{s : store, v_externaddr : externaddr, xt : externtype, xt' : externtype}: + `%|-%:%`(s, v_externaddr, xt) + -- Externaddr_ok: `%|-%:%`(s, v_externaddr, xt') + -- Externtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt) + -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_valtype: `%%%`(moduleinst, valtype, valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_valtype_case_0{v_moduleinst : moduleinst, t : valtype, var_0 : valtype}: + `%%%`(v_moduleinst, t, var_0) + -- fun_subst_all_valtype: `%%%`(t, (iter_val_3 : deftype <: typeuse)*{iter_val_3 <- v_moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_valtype_is_wf: `%%%`(v_moduleinst : moduleinst, v_valtype : valtype, ret_val : valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_valtype_is_wf_0{v_moduleinst : moduleinst, v_valtype : valtype, ret_val : valtype, var_0 : valtype}: + `%%%`(v_moduleinst, v_valtype, ret_val) + -- wf_moduleinst: `%`(v_moduleinst) + -- wf_valtype: `%`(v_valtype) + -- if (ret_val = var_0) + -- wf_valtype: `%`(ret_val) + -- fun_inst_valtype: `%%%`(v_moduleinst, v_valtype, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_reftype: `%%%`(moduleinst, reftype, reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_reftype_case_0{v_moduleinst : moduleinst, rt : reftype, var_0 : reftype}: + `%%%`(v_moduleinst, rt, var_0) + -- fun_subst_all_reftype: `%%%`(rt, (iter_val_4 : deftype <: typeuse)*{iter_val_4 <- v_moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_reftype_is_wf: `%%%`(v_moduleinst : moduleinst, v_reftype : reftype, ret_val : reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_reftype_is_wf_0{v_moduleinst : moduleinst, v_reftype : reftype, ret_val : reftype, var_0 : reftype}: + `%%%`(v_moduleinst, v_reftype, ret_val) + -- wf_moduleinst: `%`(v_moduleinst) + -- wf_reftype: `%`(v_reftype) + -- if (ret_val = var_0) + -- wf_reftype: `%`(ret_val) + -- fun_inst_reftype: `%%%`(v_moduleinst, v_reftype, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_globaltype: `%%%`(moduleinst, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_globaltype_case_0{v_moduleinst : moduleinst, gt : globaltype, var_0 : globaltype}: + `%%%`(v_moduleinst, gt, var_0) + -- fun_subst_all_globaltype: `%%%`(gt, (iter_val_5 : deftype <: typeuse)*{iter_val_5 <- v_moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_globaltype_is_wf: `%%%`(v_moduleinst : moduleinst, v_globaltype : globaltype, ret_val : globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_globaltype_is_wf_0{v_moduleinst : moduleinst, v_globaltype : globaltype, ret_val : globaltype, var_0 : globaltype}: + `%%%`(v_moduleinst, v_globaltype, ret_val) + -- wf_moduleinst: `%`(v_moduleinst) + -- wf_globaltype: `%`(v_globaltype) + -- if (ret_val = var_0) + -- wf_globaltype: `%`(ret_val) + -- fun_inst_globaltype: `%%%`(v_moduleinst, v_globaltype, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_memtype: `%%%`(moduleinst, memtype, memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_memtype_case_0{v_moduleinst : moduleinst, mt : memtype, var_0 : memtype}: + `%%%`(v_moduleinst, mt, var_0) + -- fun_subst_all_memtype: `%%%`(mt, (iter_val_6 : deftype <: typeuse)*{iter_val_6 <- v_moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_memtype_is_wf: `%%%`(v_moduleinst : moduleinst, v_memtype : memtype, ret_val : memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_memtype_is_wf_0{v_moduleinst : moduleinst, v_memtype : memtype, ret_val : memtype, var_0 : memtype}: + `%%%`(v_moduleinst, v_memtype, ret_val) + -- wf_moduleinst: `%`(v_moduleinst) + -- wf_memtype: `%`(v_memtype) + -- if (ret_val = var_0) + -- wf_memtype: `%`(ret_val) + -- fun_inst_memtype: `%%%`(v_moduleinst, v_memtype, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_tabletype: `%%%`(moduleinst, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_tabletype_case_0{v_moduleinst : moduleinst, tt : tabletype, var_0 : tabletype}: + `%%%`(v_moduleinst, tt, var_0) + -- fun_subst_all_tabletype: `%%%`(tt, (iter_val_7 : deftype <: typeuse)*{iter_val_7 <- v_moduleinst.TYPES_moduleinst}, var_0) + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation inst_tabletype_is_wf: `%%%`(v_moduleinst : moduleinst, v_tabletype : tabletype, ret_val : tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule inst_tabletype_is_wf_0{v_moduleinst : moduleinst, v_tabletype : tabletype, ret_val : tabletype, var_0 : tabletype}: + `%%%`(v_moduleinst, v_tabletype, ret_val) + -- wf_moduleinst: `%`(v_moduleinst) + -- wf_tabletype: `%`(v_tabletype) + -- if (ret_val = var_0) + -- wf_tabletype: `%`(ret_val) + -- fun_inst_tabletype: `%%%`(v_moduleinst, v_tabletype, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_pure_before_ref_eq_true: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref_eq_null_0{ref_1 : ref, ref_2 : ref}: + `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr]) + -- if ((ref_1 = REF_NULL_ADDR_ref) /\ (ref_2 = REF_NULL_ADDR_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF_EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) + -- wf_ref: `%`(REF_NULL_ADDR_ref) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_pure: `%~>%`(instr*, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule unreachable: + `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule nop: + `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule drop{v_val : val}: + `%~>%`([$instr_val(v_val) DROP_instr], []) + -- wf_val: `%`(v_val) + -- wf_instr: `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule select_true{val_1 : val, val_2 : val, c : num_, t_lst_opt : valtype*?}: + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t_lst_opt)], [$instr_val(val_1)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t_lst_opt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule select_false{val_1 : val, val_2 : val, c : num_, t_lst_opt : valtype*?}: + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t_lst_opt)], [$instr_val(val_2)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t_lst_opt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule if_true{c : num_, bt : blocktype, instr_1_lst : instr*, instr_2_lst : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)], [BLOCK_instr(bt, instr_1_lst)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1_lst)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule if_false{c : num_, bt : blocktype, instr_1_lst : instr*, instr_2_lst : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)], [BLOCK_instr(bt, instr_2_lst)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1_lst, instr_2_lst)) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2_lst)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule label_vals{v_n : n, instr_lst : instr*, val_lst : val*}: + `%~>%`([`LABEL_%{%}%`_instr(v_n, instr_lst, $instr_val(v_val)*{v_val <- val_lst})], $instr_val(v_val)*{v_val <- val_lst}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_n, instr_lst, $instr_val(v_val)*{v_val <- val_lst})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule br_label_zero{v_n : n, instr'_lst : instr*, val'_lst : val*, val_lst : val*, l : labelidx, instr_lst : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(v_n, instr'_lst, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)], $instr_val(v_val)^v_n{v_val <- val_lst} ++ instr'_lst) + -- if ($proj_uN_0(l).0 = 0) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_n, instr'_lst, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)) + -- if (v_n = |val_lst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule br_label_succ{v_n : n, instr'_lst : instr*, val_lst : val*, l : labelidx, instr_lst : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(v_n, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)], $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(mk_uN_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- if ($proj_uN_0(l).0 > 0) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_n, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)) + -- wf_instr: `%`(BR_instr(mk_uN_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule br_handler{v_n : n, catch_lst : catch*, val_lst : val*, l : labelidx, instr_lst : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)], $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)] ++ instr_lst)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule br_if_true{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule br_if_false{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule br_table_lt{i : num_, l_lst : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l_lst, l')], [BR_instr(l_lst[$proj_uN_0(!($proj_num__0(i))).0])]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l_lst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l_lst, l')) + -- wf_instr: `%`(BR_instr(l_lst[$proj_uN_0(!($proj_num__0(i))).0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule br_table_ge{i : num_, l_lst : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l_lst, l')], [BR_instr(l')]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l_lst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l_lst, l')) + -- wf_instr: `%`(BR_instr(l')) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule br_on_null_null{v_val : val, l : labelidx}: + `%~>%`([$instr_val(v_val) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- if (v_val = REF_NULL_ADDR_val) + -- wf_val: `%`(v_val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(REF_NULL_ADDR_val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule br_on_null_addr{v_val : val, l : labelidx}: + `%~>%`([$instr_val(v_val) BR_ON_NULL_instr(l)], [$instr_val(v_val)]) + -- if (v_val =/= REF_NULL_ADDR_val) + -- wf_val: `%`(v_val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule br_on_non_null_null{v_val : val, l : labelidx}: + `%~>%`([$instr_val(v_val) BR_ON_NON_NULL_instr(l)], []) + -- if (v_val = REF_NULL_ADDR_val) + -- wf_val: `%`(v_val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(REF_NULL_ADDR_val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule br_on_non_null_addr{v_val : val, l : labelidx}: + `%~>%`([$instr_val(v_val) BR_ON_NON_NULL_instr(l)], [$instr_val(v_val) BR_instr(l)]) + -- if (v_val =/= REF_NULL_ADDR_val) + -- wf_val: `%`(v_val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call_indirect{x : idx, yy : typeuse}: + `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE_GET_instr(x) REF_CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE_GET_instr(x)) + -- wf_instr: `%`(REF_CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call_indirect{x : idx, yy : typeuse}: + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE_GET_instr(x) REF_CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE_GET_instr(x)) + -- wf_instr: `%`(REF_CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule frame_vals{v_n : n, f : frame, val_lst : val*}: + `%~>%`([`FRAME_%{%}%`_instr(v_n, f, $instr_val(v_val)^v_n{v_val <- val_lst})], $instr_val(v_val)^v_n{v_val <- val_lst}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(v_n, f, $instr_val(v_val)^v_n{v_val <- val_lst})) + -- if (v_n = |val_lst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_frame{v_n : n, f : frame, val'_lst : val*, val_lst : val*, instr_lst : instr*}: + `%~>%`([`FRAME_%{%}%`_instr(v_n, f, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)], $instr_val(v_val)^v_n{v_val <- val_lst}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(v_n, f, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)) + -- if (v_n = |val_lst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_label{v_n : n, instr'_lst : instr*, val_lst : val*, instr_lst : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(v_n, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)], $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_n, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_handler{v_n : n, catch_lst : catch*, val_lst : val*, instr_lst : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)], $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_instr] ++ instr_lst)) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule handler_vals{v_n : n, catch_lst : catch*, val_lst : val*}: + `%~>%`([`HANDLER_%{%}%`_instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst})], $instr_val(v_val)*{v_val <- val_lst}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(v_n, catch_lst, $instr_val(v_val)*{v_val <- val_lst})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule trap_instrs{val_lst : val*, instr_lst : instr*}: + `%~>%`($instr_val(v_val)*{v_val <- val_lst} ++ [TRAP_instr] ++ instr_lst, [TRAP_instr]) + -- if ((val_lst =/= []) \/ (instr_lst =/= [])) + -- (wf_val: `%`(v_val))*{v_val <- val_lst} + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule trap_label{v_n : n, instr'_lst : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(v_n, instr'_lst, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_n, instr'_lst, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule trap_handler{v_n : n, catch_lst : catch*}: + `%~>%`([`HANDLER_%{%}%`_instr(v_n, catch_lst, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(v_n, catch_lst, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule trap_frame{v_n : n, f : frame}: + `%~>%`([`FRAME_%{%}%`_instr(v_n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(v_n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule local_tee{v_val : val, x : idx}: + `%~>%`([$instr_val(v_val) LOCAL_TEE_instr(x)], [$instr_val(v_val) $instr_val(v_val) LOCAL_SET_instr(x)]) + -- wf_val: `%`(v_val) + -- wf_instr: `%`(LOCAL_TEE_instr(x)) + -- wf_instr: `%`(LOCAL_SET_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref_i31{i : num_}: + `%~>%`([CONST_instr(I32_numtype, i) REF_I31_instr], [REF_I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(REF_I31_instr) + -- wf_instr: `%`(REF_I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) + -- if ($proj_num__0(i) =/= ?()) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref_is_null_true{v_ref : ref}: + `%~>%`([$instr_ref(v_ref) REF_IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) + -- if (v_ref = REF_NULL_ADDR_ref) + -- wf_ref: `%`(v_ref) + -- wf_instr: `%`(REF_IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) + -- wf_ref: `%`(REF_NULL_ADDR_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref_is_null_false{v_ref : ref}: + `%~>%`([$instr_ref(v_ref) REF_IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))]) + -- if (v_ref =/= REF_NULL_ADDR_ref) + -- wf_ref: `%`(v_ref) + -- wf_instr: `%`(REF_IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref_as_non_null_null{v_ref : ref}: + `%~>%`([$instr_ref(v_ref) REF_AS_NON_NULL_instr], [TRAP_instr]) + -- if (v_ref = REF_NULL_ADDR_ref) + -- wf_ref: `%`(v_ref) + -- wf_instr: `%`(REF_AS_NON_NULL_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(REF_NULL_ADDR_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref_as_non_null_addr{v_ref : ref}: + `%~>%`([$instr_ref(v_ref) REF_AS_NON_NULL_instr], [$instr_ref(v_ref)]) + -- if (v_ref =/= REF_NULL_ADDR_ref) + -- wf_ref: `%`(v_ref) + -- wf_instr: `%`(REF_AS_NON_NULL_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref_eq_null{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) + -- if ((ref_1 = REF_NULL_ADDR_ref) /\ (ref_2 = REF_NULL_ADDR_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF_EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) + -- wf_ref: `%`(REF_NULL_ADDR_ref) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref_eq_true{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) + -- if ((ref_1 =/= REF_NULL_ADDR_ref) \/ (ref_2 =/= REF_NULL_ADDR_ref)) + -- if (ref_1 = ref_2) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF_EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref_eq_false{ref_1 : ref, ref_2 : ref}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))]) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= REF_NULL_ADDR_ref) \/ (ref_2 =/= REF_NULL_ADDR_ref)) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF_EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule i31_get_null{v_sx : sx}: + `%~>%`([REF_NULL_ADDR_instr I31_GET_instr(v_sx)], [TRAP_instr]) + -- wf_instr: `%`(REF_NULL_ADDR_instr) + -- wf_instr: `%`(I31_GET_instr(v_sx)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule i31_get_num{i : u31, v_sx : sx}: + `%~>%`([REF_I31_NUM_instr(i) I31_GET_instr(v_sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, v_sx, i)))]) + -- wf_instr: `%`(REF_I31_NUM_instr(i)) + -- wf_instr: `%`(I31_GET_instr(v_sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, v_sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_new{v_val : val, v_n : n, x : idx}: + `%~>%`([$instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_instr(x)], $instr_val(v_val)^v_n{} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) + -- wf_val: `%`(v_val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n)))) + -- wf_instr: `%`(ARRAY_NEW_instr(x)) + -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule extern_convert_any_null{v_ref : ref}: + `%~>%`([$instr_ref(v_ref) EXTERN_CONVERT_ANY_instr], [REF_NULL_ADDR_instr]) + -- if (v_ref = REF_NULL_ADDR_ref) + -- wf_ref: `%`(v_ref) + -- wf_instr: `%`(EXTERN_CONVERT_ANY_instr) + -- wf_instr: `%`(REF_NULL_ADDR_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule extern_convert_any_addr{v_ref : ref}: + `%~>%`([$instr_ref(v_ref) EXTERN_CONVERT_ANY_instr], [REF_EXTERN_instr(v_ref)]) + -- if (v_ref =/= REF_NULL_ADDR_ref) + -- wf_instr: `%`(EXTERN_CONVERT_ANY_instr) + -- wf_instr: `%`(REF_EXTERN_instr(v_ref)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule any_convert_extern_null: + `%~>%`([REF_NULL_ADDR_instr ANY_CONVERT_EXTERN_instr], [REF_NULL_ADDR_instr]) + -- wf_instr: `%`(REF_NULL_ADDR_instr) + -- wf_instr: `%`(ANY_CONVERT_EXTERN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule any_convert_extern_addr{v_ref : ref}: + `%~>%`([REF_EXTERN_instr(v_ref) ANY_CONVERT_EXTERN_instr], [$instr_ref(v_ref)]) + -- wf_instr: `%`(REF_EXTERN_instr(v_ref)) + -- wf_instr: `%`(ANY_CONVERT_EXTERN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule unop_val{nt : numtype, c_1 : num_, unop : unop_, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_num_: `%%`(nt, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule unop_trap{nt : numtype, c_1 : num_, unop : unop_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_num_: `%%`(nt, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule binop_val{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_num_: `%%`(nt, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule binop_trap{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_num_: `%%`(nt, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $fun_testop_(nt, testop, c_1)) + -- if ($proj_num__0(c) =/= ?()) + -- wf_uN: `%%`(32, $fun_testop_(nt, testop, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $fun_relop_(nt, relop, c_1, c_2)) + -- if ($proj_num__0(c) =/= ?()) + -- wf_uN: `%%`(32, $fun_relop_(nt, relop, c_1, c_2)) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule cvtop_val{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule cvtop_trap{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, var_0 : num_*}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_num_: `%%`(nt_2, iter))*{iter <- var_0} + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvunop{c_1 : vec_, v_vvunop : vvunop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, v_vvunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvunop_(V128_vectype, v_vvunop, c_1)) + -- if (|$vvunop_(V128_vectype, v_vvunop, c_1)| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvunop_(V128_vectype, v_vvunop, c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, v_vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvbinop{c_1 : vec_, c_2 : vec_, v_vvbinop : vvbinop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, v_vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvbinop_(V128_vectype, v_vvbinop, c_1, c_2)) + -- if (|$vvbinop_(V128_vectype, v_vvbinop, c_1, c_2)| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvbinop_(V128_vectype, v_vvbinop, c_1, c_2)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, v_vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, v_vvternop : vvternop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, v_vvternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvternop_(V128_vectype, v_vvternop, c_1, c_2, c_3)) + -- if (|$vvternop_(V128_vectype, v_vvternop, c_1, c_2, c_3)| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- $vvternop_(V128_vectype, v_vvternop, c_1, c_2, c_3)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, v_vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvtestop{c_1 : vec_, c : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) + -- if ($proj_num__0(c) =/= ?()) + -- wf_uN: `%%`(32, $inez_($vsize(V128_vectype), c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vunop_val{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vunop_trap{c_1 : vec_, sh : shape, vunop : vunop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vbinop_val{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vbinop_trap{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vternop_val{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- var_0) + -- if (|var_0| > 0) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vternop_trap{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- if (var_0 = []) + -- (wf_uN: `%%`(128, iter))*{iter <- var_0} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vtestop{c_1 : vec_, v_Jnn : Jnn, v_M : M, c : num_, i_lst : lane_*, var_0 : nat}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), mk_vtestop__0_vtestop_(v_Jnn, v_M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) + -- if (i_lst = $lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c_1)) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = var_0) + -- if ($proj_num__0(c) =/= ?()) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), i))*{i <- i_lst} + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c_1)} + -- (wf_uN: `%%`(32, $inez_($jsizenn(v_Jnn), !($proj_lane__2(i)))))*{i <- i_lst} + -- (if ($proj_lane__2(i) =/= ?()))*{i <- i_lst} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), mk_vtestop__0_vtestop_(v_Jnn, v_M, ALL_TRUE_vtestop_Jnn_M))) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) + -- fun_prod: `%%`($proj_uN_0($inez_($jsizenn(v_Jnn), !($proj_lane__2(i)))).0*{i <- i_lst}, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vrelop_: `%%%%%`(sh, vrelop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vshiftop_: `%%%%%`(sh, vshiftop, c_1, !($proj_num__0(i)), var_0) + -- if ($proj_num__0(i) =/= ?()) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vbitmask{c_1 : vec_, sh : ishape, c : num_, var_0 : u32}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- if (!($proj_num__0(c)) = var_0) + -- if ($proj_num__0(c) =/= ?()) + -- wf_uN: `%%`(32, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- fun_vbitmaskop_: `%%%`(sh, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vswizzlop_: `%%%%%`(sh, swizzlop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, i_lst : laneidx*, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i_lst)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i_lst)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vshufflop_: `%%%%%`(sh, i_lst, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vsplat{v_Lnn : Lnn, c_1 : num_, v_M : M, c : vec_}: + `%~>%`([CONST_instr($lunpack(v_Lnn), c_1) VSPLAT_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)))], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), $lpacknum_(v_Lnn, c_1)^v_M{})) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), $lpacknum_(v_Lnn, c_1)^v_M{})) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape(v_Lnn, mk_dim_dim(v_M))), $lpacknum_(v_Lnn, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(v_Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(v_Lnn, mk_dim_dim(v_M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextract_lane_num{c_1 : vec_, nt : numtype, v_M : M, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M)), c_1)[$proj_uN_0(i).0]) + -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M)), c_1)|) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M)), c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), mk_dim_dim(v_M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextract_lane_pack{c_1 : vec_, pt : packtype, v_M : M, v_sx : sx, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), ?(v_sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, v_sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), c_1)[$proj_uN_0(i).0])))) + -- if ($proj_num__0(c_2) =/= ?()) + -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), c_1)[$proj_uN_0(i).0]) =/= ?()) + -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), c_1)|) + -- wf_uN: `%%`(32, $extend__($psize(pt), 32, v_sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), c_1)[$proj_uN_0(i).0])))) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), c_1)} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), ?(v_sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vreplace_lane{c_1 : vec_, v_Lnn : Lnn, c_2 : num_, v_M : M, i : laneidx, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(v_Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), i)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), $lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(v_Lnn, c_2)])) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), $lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(v_Lnn, c_2)])) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(v_Lnn, mk_dim_dim(v_M))), iter))*{iter <- $lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), c_1)} + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape(v_Lnn, mk_dim_dim(v_M))), $lpacknum_(v_Lnn, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(v_Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(v_Lnn, mk_dim_dim(v_M))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- if (var_0 = c) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vextunop__: `%%%%%`(sh_1, sh_2, vextunop, c_1, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (var_0 = c) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vextbinop__: `%%%%%%`(sh_1, sh_2, vextbinop, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- if (var_0 = c) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vextternop__: `%%%%%%%`(sh_1, sh_2, vextternop, c_1, c_2, c_3, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, v_sx : sx, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, v_sx)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, v_sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vnarrowop__: `%%%%%%`($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, v_sx, c_1, c_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = var_0) + -- wf_uN: `%%`(128, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- fun_vcvtop__: `%%%%%`(sh_1, sh_2, vcvtop, c_1, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation fun_blocktype_: `%%%`(state, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule fun_blocktype__case_0{z : state, x : uN, t_1_lst : valtype*, t_2_lst : valtype*}: + `%%%`(z, _IDX_blocktype(x), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Expand: `%~~%`($fun_type(z, x), `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule fun_blocktype__case_1{z : state, t_opt : valtype?}: + `%%%`(z, _RESULT_blocktype(t_opt), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(lift(t_opt)))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation blocktype__is_wf: `%%%`(v_state : state, v_blocktype : blocktype, ret_val : instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule blocktype__is_wf_0{v_state : state, v_blocktype : blocktype, ret_val : instrtype, var_0 : instrtype}: + `%%%`(v_state, v_blocktype, ret_val) + -- wf_state: `%`(v_state) + -- wf_blocktype: `%`(v_blocktype) + -- if (ret_val = var_0) + -- wf_instrtype: `%`(ret_val) + -- fun_blocktype_: `%%%`(v_state, v_blocktype, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_br_on_cast_fail: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule br_on_cast_succeed_0{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, var_0 : reftype}: + `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- Ref_ok: `%|-%:%`(s, v_ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_br_on_cast_fail_fail: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule br_on_cast_fail_succeed_0{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, var_0 : reftype}: + `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- Ref_ok: `%|-%:%`(s, v_ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_throw_ref_handler_next: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_handler_catch_all_ref_0{z : state, v_n : n, l : labelidx, catch'_lst : catch*, a : addr}: + `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_handler_catch_all_0{z : state, v_n : n, l : labelidx, catch'_lst : catch*, a : addr}: + `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_handler_catch_ref_0{z : state, v_n : n, x : idx, l : labelidx, catch'_lst : catch*, a : addr, val_lst : val*}: + `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- if ($fun_exninst(z)[a].TAG_exninst = $fun_tagaddr(z)[$proj_uN_0(x).0]) + -- if (a < |$fun_exninst(z)|) + -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) + -- if (val_lst = $fun_exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(v_val))*{v_val <- val_lst} + -- (wf_exninst: `%`(iter))*{iter <- $fun_exninst(z)} + -- wf_config: `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_handler_catch_0{z : state, v_n : n, x : idx, l : labelidx, catch'_lst : catch*, a : addr, val_lst : val*}: + `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- if ($fun_exninst(z)[a].TAG_exninst = $fun_tagaddr(z)[$proj_uN_0(x).0]) + -- if (a < |$fun_exninst(z)|) + -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) + -- if (val_lst = $fun_exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(v_val))*{v_val <- val_lst} + -- (wf_exninst: `%`(iter))*{iter <- $fun_exninst(z)} + -- wf_config: `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_table_fill_zero: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_fill_oob_0{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($fun_table(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_table_copy_zero: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_copy_oob_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_tableinst: `%`($fun_table(z, x_1)) + -- wf_tableinst: `%`($fun_table(z, x_2)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_table_copy_le: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_copy_zero_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- ~ Step_read_before_table_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_copy_oob_1{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_tableinst: `%`($fun_table(z, x_1)) + -- wf_tableinst: `%`($fun_table(z, x_2)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_table_copy_gt: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_copy_le_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- ~ Step_read_before_table_copy_le: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(TABLE_GET_instr(y)) + -- wf_instr: `%`(TABLE_SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE_COPY_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_copy_zero_1{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- ~ Step_read_before_table_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_copy_oob_2{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_tableinst: `%`($fun_table(z, x_1)) + -- wf_tableinst: `%`($fun_table(z, x_2)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_table_init_zero: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_init_oob_0{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_tableinst: `%`($fun_table(z, x)) + -- wf_eleminst: `%`($fun_elem(z, y)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_memory_fill_zero: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory_fill_oob_0{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_memory_copy_zero: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory_copy_oob_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_mem(z, x_2).BYTES_meminst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x_1)) + -- wf_meminst: `%`($fun_mem(z, x_2)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_memory_copy_le: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory_copy_zero_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- ~ Step_read_before_memory_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory_copy_oob_1{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_mem(z, x_2).BYTES_meminst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x_1)) + -- wf_meminst: `%`($fun_mem(z, x_2)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_memory_init_zero: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory_init_oob_0{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_data(z, y).BYTES_datainst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_datainst: `%`($fun_data(z, y)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_ref_test_false: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref_test_true_0{s : store, f : frame, v_ref : ref, rt : reftype, var_0 : reftype}: + `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) + -- Ref_ok: `%|-%:%`(s, v_ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_ref_cast_fail: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref_cast_succeed_0{s : store, f : frame, v_ref : ref, rt : reftype, var_0 : reftype}: + `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) + -- Ref_ok: `%|-%:%`(s, v_ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_array_fill_zero: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_fill_oob_0{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_array_fill_succ: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_fill_zero_0{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- ~ Step_read_before_array_fill_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_fill_oob_1{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_array_copy_zero: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_copy_oob2_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_copy_oob1_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_array_copy_le: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_copy_zero_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- ~ Step_read_before_array_copy_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_copy_oob2_1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_copy_oob1_1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_array_copy_gt: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_copy_le_0{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- ~ Step_read_before_array_copy_le: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = !($fun_sx(zt_2)))) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ($fun_sx(zt_2) =/= ?()) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY_GET_instr(sx_opt, x_2)) + -- wf_instr: `%`(ARRAY_SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY_COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_copy_zero_1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- ~ Step_read_before_array_copy_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_copy_oob2_2{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_copy_oob1_2{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_array_init_elem_zero: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_elem_oob2_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(j) =/= ?()) + -- wf_eleminst: `%`($fun_elem(z, y)) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_elem_oob1_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_array_init_elem_succ: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_elem_zero_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- ~ Step_read_before_array_init_elem_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_elem_oob2_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(j) =/= ?()) + -- wf_eleminst: `%`($fun_elem(z, y)) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_elem_oob1_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_array_init_data_zero: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_data_oob2_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) + -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- wf_datainst: `%`($fun_data(z, y)) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_data_oob1_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read_before_array_init_data_num: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_data_zero_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- ~ Step_read_before_array_init_data_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_data_oob2_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) + -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- wf_datainst: `%`($fun_data(z, y)) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_data_oob1_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read: `%~>%`(config, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule block{z : state, v_m : m, val_lst : val*, bt : blocktype, instr_lst : instr*, v_n : n, t_1_lst : valtype*, t_2_lst : valtype*, var_0 : instrtype}: + `%~>%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [BLOCK_instr(bt, instr_lst)]), [`LABEL_%{%}%`_instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)]) + -- if (var_0 = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(var_0) + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [BLOCK_instr(bt, instr_lst)])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- if (v_m = |val_lst|) + -- if (v_m = |t_1_lst|) + -- if (v_n = |t_2_lst|) + -- fun_blocktype_: `%%%`(z, bt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule loop{z : state, v_m : m, val_lst : val*, bt : blocktype, instr_lst : instr*, t_1_lst : valtype*, v_n : n, t_2_lst : valtype*, var_0 : instrtype}: + `%~>%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [LOOP_instr(bt, instr_lst)]), [`LABEL_%{%}%`_instr(v_m, [LOOP_instr(bt, instr_lst)], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)]) + -- if (var_0 = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(var_0) + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [LOOP_instr(bt, instr_lst)])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_m, [LOOP_instr(bt, instr_lst)], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- if (v_m = |val_lst|) + -- if (v_m = |t_1_lst|) + -- if (v_n = |t_2_lst|) + -- fun_blocktype_: `%%%`(z, bt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule br_on_cast_succeed{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, var_0 : reftype}: + `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref) BR_instr(l)]) + -- Ref_ok: `%|-%:%`(s, v_ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule br_on_cast_fail{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref)]) + -- ~ Step_read_before_br_on_cast_fail: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule br_on_cast_fail_succeed{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, var_0 : reftype}: + `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref)]) + -- Ref_ok: `%|-%:%`(s, v_ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule br_on_cast_fail_fail{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref) BR_instr(l)]) + -- ~ Step_read_before_br_on_cast_fail_fail: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call{z : state, x : idx, a : addr}: + `%~>%`(mk_config_config(z, [CALL_instr(x)]), [REF_FUNC_ADDR_instr(a) CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))]) + -- if ($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + -- if ($proj_uN_0(x).0 < |$fun_moduleinst(z).FUNCS_moduleinst|) + -- wf_moduleinst: `%`($fun_moduleinst(z)) + -- wf_config: `%`(mk_config_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(REF_FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))) + -- if (a < |$fun_funcinst(z)|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call_ref_null{z : state, yy : typeuse}: + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_ADDR_instr CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call_ref_func{z : state, v_n : n, val_lst : val*, a : addr, yy : typeuse, v_m : m, f : frame, instr_lst : instr*, fi : funcinst, t_1_lst : valtype*, t_2_lst : valtype*, x : idx, t_lst : valtype*}: + `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(v_m, f, [`LABEL_%{%}%`_instr(v_m, [], instr_lst)])]) + -- if ($fun_funcinst(z)[a] = fi) + -- if (a < |$fun_funcinst(z)|) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- t_lst}, instr_lst)) + -- if (f = {LOCALS ?(v_val)^v_n{v_val <- val_lst} ++ !($default_(t))*{t <- t_lst}, MODULE fi.MODULE_funcinst}) + -- (if ($default_(t) =/= ?()))*{t <- t_lst} + -- (wf_funcinst: `%`(iter))*{iter <- $fun_funcinst(z)} + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(v_m, f, [`LABEL_%{%}%`_instr(v_m, [], instr_lst)])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- t_lst}, instr_lst)) + -- wf_frame: `%`({LOCALS ?(v_val)^v_n{v_val <- val_lst} ++ !($default_(t))*{t <- t_lst}, MODULE fi.MODULE_funcinst}) + -- if (v_n = |val_lst|) + -- if (v_n = |t_1_lst|) + -- if (v_m = |t_2_lst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call{z : state, x : idx, a : addr}: + `%~>%`(mk_config_config(z, [RETURN_CALL_instr(x)]), [REF_FUNC_ADDR_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))]) + -- if ($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + -- if ($proj_uN_0(x).0 < |$fun_moduleinst(z).FUNCS_moduleinst|) + -- wf_moduleinst: `%`($fun_moduleinst(z)) + -- wf_config: `%`(mk_config_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(REF_FUNC_ADDR_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($fun_funcinst(z)[a].TYPE_funcinst))) + -- if (a < |$fun_funcinst(z)|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call_ref_label{z : state, k : n, instr'_lst : instr*, val_lst : val*, yy : typeuse, instr_lst : instr*}: + `%~>%`(mk_config_config(z, [`LABEL_%{%}%`_instr(k, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(mk_config_config(z, [`LABEL_%{%}%`_instr(k, instr'_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call_ref_handler{z : state, k : n, catch_lst : catch*, val_lst : val*, yy : typeuse, instr_lst : instr*}: + `%~>%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(k, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(k, catch_lst, $instr_val(v_val)*{v_val <- val_lst} ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call_ref_frame_null{z : state, k : n, f : frame, val_lst : val*, yy : typeuse, instr_lst : instr*}: + `%~>%`(mk_config_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(v_val)*{v_val <- val_lst} ++ [REF_NULL_ADDR_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(v_val)*{v_val <- val_lst} ++ [REF_NULL_ADDR_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call_ref_frame_addr{z : state, k : n, f : frame, val'_lst : val*, v_n : n, val_lst : val*, a : addr, yy : typeuse, instr_lst : instr*, t_1_lst : valtype*, v_m : m, t_2_lst : valtype*}: + `%~>%`(mk_config_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)]), $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + -- Expand: `%~~%`($fun_funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- if (a < |$fun_funcinst(z)|) + -- (wf_funcinst: `%`(iter))*{iter <- $fun_funcinst(z)} + -- wf_config: `%`(mk_config_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- val'_lst} ++ $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr_lst)])) + -- wf_instr: `%`(REF_FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- if (v_n = |val_lst|) + -- if (v_n = |t_1_lst|) + -- if (v_m = |t_2_lst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_null{z : state}: + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_ADDR_instr THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_instrs{z : state, val_lst : val*, a : addr, instr_lst : instr*}: + `%~>%`(mk_config_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ [REF_EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr_lst), [REF_EXN_ADDR_instr(a) THROW_REF_instr]) + -- if ((val_lst =/= []) \/ (instr_lst =/= [])) + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ [REF_EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr_lst)) + -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_label{z : state, v_n : n, instr'_lst : instr*, a : addr}: + `%~>%`(mk_config_config(z, [`LABEL_%{%}%`_instr(v_n, instr'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [REF_EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(mk_config_config(z, [`LABEL_%{%}%`_instr(v_n, instr'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_frame{z : state, v_n : n, f : frame, a : addr}: + `%~>%`(mk_config_config(z, [`FRAME_%{%}%`_instr(v_n, f, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [REF_EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(mk_config_config(z, [`FRAME_%{%}%`_instr(v_n, f, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_handler_empty{z : state, v_n : n, a : addr}: + `%~>%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [], [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [REF_EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [], [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_handler_catch{z : state, v_n : n, x : idx, l : labelidx, catch'_lst : catch*, a : addr, val_lst : val*}: + `%~>%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(v_val)*{v_val <- val_lst} ++ [BR_instr(l)]) + -- if ($fun_exninst(z)[a].TAG_exninst = $fun_tagaddr(z)[$proj_uN_0(x).0]) + -- if (a < |$fun_exninst(z)|) + -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) + -- if (val_lst = $fun_exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(v_val))*{v_val <- val_lst} + -- (wf_exninst: `%`(iter))*{iter <- $fun_exninst(z)} + -- wf_config: `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_handler_catch_ref{z : state, v_n : n, x : idx, l : labelidx, catch'_lst : catch*, a : addr, val_lst : val*}: + `%~>%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(v_val)*{v_val <- val_lst} ++ [REF_EXN_ADDR_instr(a) BR_instr(l)]) + -- if ($fun_exninst(z)[a].TAG_exninst = $fun_tagaddr(z)[$proj_uN_0(x).0]) + -- if (a < |$fun_exninst(z)|) + -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) + -- if (val_lst = $fun_exninst(z)[a].FIELDS_exninst) + -- (wf_val: `%`(v_val))*{v_val <- val_lst} + -- (wf_exninst: `%`(iter))*{iter <- $fun_exninst(z)} + -- wf_config: `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_REF_catch(x, l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_handler_catch_all{z : state, v_n : n, l : labelidx, catch'_lst : catch*, a : addr}: + `%~>%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_handler_catch_all_ref{z : state, v_n : n, l : labelidx, catch'_lst : catch*, a : addr}: + `%~>%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [REF_EXN_ADDR_instr(a) BR_instr(l)]) + -- wf_config: `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [CATCH_ALL_REF_catch(l)] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF_EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule throw_ref_handler_next{z : state, v_n : n, v_catch : catch, catch'_lst : catch*, a : addr}: + `%~>%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [v_catch] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(v_n, catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])]) + -- ~ Step_read_before_throw_ref_handler_next: `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [v_catch] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, [v_catch] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(v_n, catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule try_table{z : state, v_m : m, val_lst : val*, bt : blocktype, catch_lst : catch*, instr_lst : instr*, v_n : n, t_1_lst : valtype*, t_2_lst : valtype*, var_0 : instrtype}: + `%~>%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [TRY_TABLE_instr(bt, mk_list_list(catch_lst), instr_lst)]), [`HANDLER_%{%}%`_instr(v_n, catch_lst, [`LABEL_%{%}%`_instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)])]) + -- if (var_0 = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(var_0) + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [TRY_TABLE_instr(bt, mk_list_list(catch_lst), instr_lst)])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(v_n, catch_lst, [`LABEL_%{%}%`_instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)])) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- if (v_m = |val_lst|) + -- if (v_m = |t_1_lst|) + -- if (v_n = |t_2_lst|) + -- fun_blocktype_: `%%%`(z, bt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule local_get{z : state, x : idx, v_val : val}: + `%~>%`(mk_config_config(z, [LOCAL_GET_instr(x)]), [$instr_val(v_val)]) + -- if ($fun_local(z, x) = ?(v_val)) + -- wf_val: `%`(v_val) + -- (wf_val: `%`(iter))?{iter <- $fun_local(z, x)} + -- wf_config: `%`(mk_config_config(z, [LOCAL_GET_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule global_get{z : state, x : idx, v_val : val}: + `%~>%`(mk_config_config(z, [GLOBAL_GET_instr(x)]), [$instr_val(v_val)]) + -- if ($fun_global(z, x).VALUE_globalinst = v_val) + -- wf_val: `%`(v_val) + -- wf_globalinst: `%`($fun_global(z, x)) + -- wf_config: `%`(mk_config_config(z, [GLOBAL_GET_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_get_oob{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE_GET_instr(x)]), [TRAP_instr]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($fun_table(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE_GET_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_get_val{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE_GET_instr(x)]), [$instr_ref($fun_table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($fun_table(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE_GET_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_size{z : state, x : idx, at : addrtype, v_n : n, lim : limits, rt : reftype}: + `%~>%`(mk_config_config(z, [TABLE_SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n)))]) + -- if (|$fun_table(z, x).REFS_tableinst| = v_n) + -- if ($fun_table(z, x).TYPE_tableinst = mk_tabletype_tabletype(at, lim, rt)) + -- wf_tableinst: `%`($fun_table(z, x)) + -- wf_config: `%`(mk_config_config(z, [TABLE_SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n)))) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_fill_oob{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($fun_table(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_fill_zero{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_fill_succ{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_FILL_instr(x)]) + -- if (v_n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(TABLE_SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE_FILL_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_copy_oob{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_tableinst: `%`($fun_table(z, x_1)) + -- wf_tableinst: `%`($fun_table(z, x_2)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_copy_zero{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)]), []) + -- ~ Step_read_before_table_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_copy_le{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) TABLE_GET_instr(y) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_COPY_instr(x, y)]) + -- ~ Step_read_before_table_copy_le: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(TABLE_GET_instr(y)) + -- wf_instr: `%`(TABLE_SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE_COPY_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_copy_gt{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_GET_instr(y) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_COPY_instr(x, y)]) + -- ~ Step_read_before_table_copy_gt: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- if ($proj_num__0(i_1) =/= ?()) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_instr: `%`(TABLE_GET_instr(y)) + -- wf_instr: `%`(TABLE_SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE_COPY_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_init_oob{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_tableinst: `%`($fun_table(z, x)) + -- wf_eleminst: `%`($fun_elem(z, y)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_init_zero{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table_init_succ{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) $instr_ref($fun_elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_INIT_instr(x, y)]) + -- if (v_n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_eleminst: `%`($fun_elem(z, y)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(TABLE_SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE_INIT_instr(x, y)) + -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$fun_elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule load_num_oob{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule load_num_val{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- if ($nbytes_(nt, c) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule load_pack_oob{z : state, at : addrtype, i : num_, v_Inn : Inn, v_n : n, v_sx : sx, x : idx, ao : memarg}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_n), v_sx))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_n), v_sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule load_pack_val{z : state, at : addrtype, i : num_, v_Inn : Inn, v_n : n, v_sx : sx, x : idx, ao : memarg, c : iN}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_n), v_sx))), x, ao)]), [CONST_instr($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, $extend__(v_n, $size($numtype_addrtype(v_Inn)), v_sx, c)))]) + -- if ($ibytes_(v_n, c) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(v_n, c)} + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(v_Inn), ?(mk_loadop__0_loadop_(v_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(v_n), v_sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, $extend__(v_n, $size($numtype_addrtype(v_Inn)), v_sx, c)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vload_oob{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vload_val{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($vbytes_(V128_vectype, c) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vload_pack_oob{z : state, at : addrtype, i : num_, v_M : M, v_K : K, v_sx : sx, x : idx, ao : memarg}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_K, v_sx)), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((v_M * v_K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_K, v_sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vload_pack_val{z : state, at : addrtype, i : num_, v_M : M, v_K : K, v_sx : sx, x : idx, ao : memarg, c : vec_, j_lst : iN*, v_Jnn : Jnn}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(v_M), v_K, v_sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- (if ($ibytes_(v_M, j) = $fun_mem(z, x).BYTES_meminst[(($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((k * v_M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((v_M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vload_splat_val{z : state, at : addrtype, i : num_, v_N : N, x : idx, ao : memarg, c : vec_, j : iN, v_Jnn : Jnn, v_M : M}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(v_N, j) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- if (v_N = $jsize(v_Jnn)) + -- if ((v_M : nat <:> rat) = ((128 : nat <:> rat) / (v_N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(v_Jnn, mk_uN_uN($proj_uN_0(j).0))^v_M{})) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(v_N, j)} + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(v_Jnn, mk_uN_uN($proj_uN_0(j).0))^v_M{})) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(v_N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(v_Jnn, mk_uN_uN($proj_uN_0(j).0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vload_zero_oob{z : state, at : addrtype, i : num_, v_N : N, x : idx, ao : memarg}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, ao)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vload_zero_val{z : state, at : addrtype, i : num_, v_N : N, x : idx, ao : memarg, c : vec_, j : iN}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(v_N, j) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- if (c = $extend__(v_N, 128, U_sx, j)) + -- wf_uN: `%%`(v_N, j) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(v_N, j)} + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_uN: `%%`(128, $extend__(v_N, 128, U_sx, j)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(v_N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vload_lane_oob{z : state, at : addrtype, i : num_, c_1 : vec_, v_N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vload_lane_val{z : state, at : addrtype, i : num_, c_1 : vec_, v_N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, v_Jnn : Jnn, v_M : M}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(v_N, k) = $fun_mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(i) =/= ?()) + -- if (v_N = $jsize(v_Jnn)) + -- if ((v_M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (v_N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), $lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(v_Jnn, mk_uN_uN($proj_uN_0(k).0))])) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(v_N, k)} + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_uN: `%%`(128, $inv_lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), $lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(v_Jnn, mk_uN_uN($proj_uN_0(k).0))])) + -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), iter))*{iter <- $lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c_1)} + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) + -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(v_Jnn, mk_uN_uN($proj_uN_0(k).0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory_size{z : state, x : idx, at : addrtype, v_n : n, lim : limits}: + `%~>%`(mk_config_config(z, [MEMORY_SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n)))]) + -- if ((v_n * (64 * $Ki)) = |$fun_mem(z, x).BYTES_meminst|) + -- if ($fun_mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [MEMORY_SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory_fill_oob{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory_fill_zero{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory_fill_succ{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_FILL_instr(x)]) + -- if (v_n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY_FILL_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory_copy_oob{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_mem(z, x_2).BYTES_meminst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x_1)) + -- wf_meminst: `%`($fun_mem(z, x_2)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory_copy_zero{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory_copy_le{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_COPY_instr(x_1, x_2)]) + -- if (v_n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|)) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY_COPY_instr(x_1, x_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory_copy_gt{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_COPY_instr(x_1, x_2)]) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (v_n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY_COPY_instr(x_1, x_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory_init_oob{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)]), [TRAP_instr]) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_data(z, y).BYTES_datainst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_datainst: `%`($fun_data(z, y)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory_init_zero{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_data(z, y).BYTES_datainst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory_init_succ{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN($proj_byte_0($fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_INIT_instr(x, y)]) + -- if (v_n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_data(z, y).BYTES_datainst|)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN($proj_byte_0($fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) + -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$fun_data(z, y).BYTES_datainst|) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY_INIT_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref_null{z : state, ht : heaptype}: + `%~>%`(mk_config_config(z, [REF_NULL_instr(ht)]), [REF_NULL_ADDR_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_instr(ht)])) + -- wf_instr: `%`(REF_NULL_ADDR_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref_func{z : state, x : idx}: + `%~>%`(mk_config_config(z, [REF_FUNC_instr(x)]), [REF_FUNC_ADDR_instr($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) + -- wf_config: `%`(mk_config_config(z, [REF_FUNC_instr(x)])) + -- wf_instr: `%`(REF_FUNC_ADDR_instr($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) + -- if ($proj_uN_0(x).0 < |$fun_moduleinst(z).FUNCS_moduleinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref_test_true{s : store, f : frame, v_ref : ref, rt : reftype, var_0 : reftype}: + `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) + -- Ref_ok: `%|-%:%`(s, v_ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref_test_false{s : store, f : frame, v_ref : ref, rt : reftype}: + `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))]) + -- ~ Step_read_before_ref_test_false: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref_cast_succeed{s : store, f : frame, v_ref : ref, rt : reftype, var_0 : reftype}: + `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)]), [$instr_ref(v_ref)]) + -- Ref_ok: `%|-%:%`(s, v_ref, var_0) + -- wf_reftype: `%`(var_0) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref_cast_fail{s : store, f : frame, v_ref : ref, rt : reftype}: + `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)]), [TRAP_instr]) + -- ~ Step_read_before_ref_cast_fail: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule struct_new_default{z : state, x : idx, val_lst : val*, mut_opt_lst : mut?*, zt_lst : storagetype*}: + `%~>%`(mk_config_config(z, [STRUCT_NEW_DEFAULT_instr(x)]), $instr_val(v_val)*{v_val <- val_lst} ++ [STRUCT_NEW_instr(x)]) + -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- (if (!($default_($unpack(zt))) = ?(v_val)))*{v_val <- val_lst, zt <- zt_lst} + -- if (|val_lst| = |zt_lst|) + -- (if ($default_($unpack(zt)) =/= ?()))*{zt <- zt_lst} + -- (wf_val: `%`(v_val))*{v_val <- val_lst} + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))}*{zt <- zt_lst} + -- (wf_valtype: `%`($unpack(zt)))*{zt <- zt_lst} + -- wf_config: `%`(mk_config_config(z, [STRUCT_NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(STRUCT_NEW_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule struct_get_null{z : state, sx_opt : sx?, x : idx, i : fieldidx}: + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr STRUCT_GET_instr(sx_opt, x, i)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_ADDR_instr STRUCT_GET_instr(sx_opt, x, i)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule struct_get_struct{z : state, a : addr, sx_opt : sx?, x : idx, i : fieldidx, zt_lst : storagetype*, mut_opt_lst : mut?*}: + `%~>%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) STRUCT_GET_instr(sx_opt, x, i)]), [$instr_val(!($unpackfield_(zt_lst[$proj_uN_0(i).0], sx_opt, $fun_structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])))]) + -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- wf_val: `%`(!($unpackfield_(zt_lst[$proj_uN_0(i).0], sx_opt, $fun_structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]))) + -- if ($unpackfield_(zt_lst[$proj_uN_0(i).0], sx_opt, $fun_structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]) =/= ?()) + -- if ($proj_uN_0(i).0 < |zt_lst|) + -- if ($proj_uN_0(i).0 < |$fun_structinst(z)[a].FIELDS_structinst|) + -- if (a < |$fun_structinst(z)|) + -- (wf_structinst: `%`(iter))*{iter <- $fun_structinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) STRUCT_GET_instr(sx_opt, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_new_default{z : state, v_n : n, x : idx, v_val : val, mut_opt : mut?, zt : storagetype}: + `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DEFAULT_instr(x)]), $instr_val(v_val)^v_n{} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- if (!($default_($unpack(zt))) = ?(v_val)) + -- if ($default_($unpack(zt)) =/= ?()) + -- wf_val: `%`(v_val) + -- (wf_val: `%`(iter))?{iter <- !($default_($unpack(zt)))} + -- wf_valtype: `%`($unpack(zt)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_new_elem_oob{z : state, i : num_, v_n : n, x : idx, y : idx}: + `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_ELEM_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_eleminst: `%`($fun_elem(z, y)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_new_elem_alloc{z : state, i : num_, v_n : n, x : idx, y : idx, ref_lst : ref*}: + `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_ELEM_instr(x, y)]), $instr_ref(v_ref)^v_n{v_ref <- ref_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) + -- if (ref_lst = $fun_elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : v_n]) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_ref: `%`(v_ref))*{v_ref <- ref_lst} + -- wf_eleminst: `%`($fun_elem(z, y)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) + -- if (v_n = |ref_lst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_new_data_oob{z : state, i : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: + `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) + -- if ($proj_num__0(i) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- wf_datainst: `%`($fun_data(z, y)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_new_data_num{z : state, i : num_, v_n : n, x : idx, y : idx, zt : storagetype, c_lst : lit_*, mut_opt : mut?}: + `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^v_n{c <- c_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^v_n{c <- c_lst}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($zsize(zt) =/= ?()) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_lit_: `%%`(zt, c))*{c <- c_lst} + -- (wf_instr: `%`($const(!($cunpack(zt)), $cunpacknum_(zt, c))))^v_n{c <- c_lst} + -- (if ($cunpack(zt) =/= ?()))^v_n{} + -- (wf_lit_: `%%`($storagetype_consttype(!($cunpack(zt))), $cunpacknum_(zt, c)))^v_n{c <- c_lst} + -- (wf_byte: `%`(iter))*{iter <- $concatn_(syntax byte, $zbytes_(zt, c)^v_n{c <- c_lst}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))} + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)}^v_n{c <- c_lst} + -- wf_datainst: `%`($fun_data(z, y)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- if (v_n = |c_lst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_get_null{z : state, i : num_, sx_opt : sx?, x : idx}: + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_get_oob{z : state, a : addr, i : num_, sx_opt : sx?, x : idx}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)]), [TRAP_instr]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_get_array{z : state, a : addr, i : num_, sx_opt : sx?, x : idx, zt : storagetype, mut_opt : mut?}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)]), [$instr_val(!($unpackfield_(zt, sx_opt, $fun_arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])))]) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- wf_val: `%`(!($unpackfield_(zt, sx_opt, $fun_arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]))) + -- if ($unpackfield_(zt, sx_opt, $fun_arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + -- if (a < |$fun_arrayinst(z)|) + -- if ($proj_num__0(i) =/= ?()) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)])) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_len_null{z : state}: + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr ARRAY_LEN_instr]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_ADDR_instr ARRAY_LEN_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_len_array{z : state, a : addr}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) ARRAY_LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(|$fun_arrayinst(z)[a].FIELDS_arrayinst|)))]) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) ARRAY_LEN_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(|$fun_arrayinst(z)[a].FIELDS_arrayinst|)))) + -- if (a < |$fun_arrayinst(z)|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_fill_null{z : state, i : num_, v_val : val, v_n : n, x : idx}: + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_fill_oob{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_fill_zero{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)]), []) + -- ~ Step_read_before_array_fill_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_fill_succ{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)]), [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x) REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_FILL_instr(x)]) + -- ~ Step_read_before_array_fill_succ: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY_SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY_FILL_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_copy_null1{z : state, i_1 : num_, v_ref : ref, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i_1) $instr_ref(v_ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i_1) $instr_ref(v_ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_copy_null2{z : state, v_ref : ref, i_1 : num_, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: + `%~>%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr(I32_numtype, i_1) REF_NULL_ADDR_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr(I32_numtype, i_1) REF_NULL_ADDR_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_copy_oob1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_copy_oob2{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_copy_zero{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), []) + -- ~ Step_read_before_array_copy_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_copy_le{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY_GET_instr(sx_opt, x_2) ARRAY_SET_instr(x_1) REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_COPY_instr(x_1, x_2)]) + -- ~ Step_read_before_array_copy_le: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = !($fun_sx(zt_2)))) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ($fun_sx(zt_2) =/= ?()) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY_GET_instr(sx_opt, x_2)) + -- wf_instr: `%`(ARRAY_SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY_COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_copy_gt{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_GET_instr(sx_opt, x_2) ARRAY_SET_instr(x_1) REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_COPY_instr(x_1, x_2)]) + -- ~ Step_read_before_array_copy_gt: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) + -- if (sx_opt = !($fun_sx(zt_2))) + -- if ($fun_sx(zt_2) =/= ?()) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- if ($proj_num__0(i_1) =/= ?()) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_instr: `%`(ARRAY_GET_instr(sx_opt, x_2)) + -- wf_instr: `%`(ARRAY_SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY_COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_elem_null{z : state, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_elem_oob1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_elem_oob2{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(j) =/= ?()) + -- wf_eleminst: `%`($fun_elem(z, y)) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_elem_zero{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), []) + -- ~ Step_read_before_array_init_elem_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_elem_succ{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, v_ref : ref}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_ref(v_ref) ARRAY_SET_instr(x) REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_INIT_ELEM_instr(x, y)]) + -- ~ Step_read_before_array_init_elem_succ: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- if (v_ref = $fun_elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) + -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$fun_elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(j) =/= ?()) + -- wf_ref: `%`(v_ref) + -- wf_eleminst: `%`($fun_elem(z, y)) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY_SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY_INIT_ELEM_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_data_null{z : state, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_data_oob1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_data_oob2{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, mut_opt : mut?, zt : storagetype}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) + -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- wf_datainst: `%`($fun_data(z, y)) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_data_zero{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), []) + -- ~ Step_read_before_array_init_data_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- if (v_n = 0) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array_init_data_num{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, zt : storagetype, c : lit_, mut_opt : mut?}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY_SET_instr(x) REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_INIT_DATA_instr(x, y)]) + -- ~ Step_read_before_array_init_data_num: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- if ($zbytes_(zt, c) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- wf_lit_: `%%`(zt, c) + -- wf_instr: `%`($const(!($cunpack(zt)), $cunpacknum_(zt, c))) + -- if ($cunpack(zt) =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack(zt))), $cunpacknum_(zt, c)) + -- (wf_byte: `%`(iter))*{iter <- $zbytes_(zt, c)} + -- wf_datainst: `%`($fun_data(z, y)) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY_SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY_INIT_DATA_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +relation Step: `%~>%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + rule pure{z : state, instr_lst : instr*, instr'_lst : instr*}: + `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z, instr'_lst)) + -- Step_pure: `%~>%`(instr_lst, instr'_lst) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z, instr'_lst)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + rule read{z : state, instr_lst : instr*, instr'_lst : instr*}: + `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z, instr'_lst)) + -- Step_read: `%~>%`(mk_config_config(z, instr_lst), instr'_lst) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z, instr'_lst)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + rule ctxt_instrs{z : state, val_lst : val*, instr_lst : instr*, instr_1_lst : instr*, z' : state, instr'_lst : instr*}: + `%~>%`(mk_config_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ instr_lst ++ instr_1_lst), mk_config_config(z', $instr_val(v_val)*{v_val <- val_lst} ++ instr'_lst ++ instr_1_lst)) + -- Step: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z', instr'_lst)) + -- if ((val_lst =/= []) \/ (instr_1_lst =/= [])) + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)*{v_val <- val_lst} ++ instr_lst ++ instr_1_lst)) + -- wf_config: `%`(mk_config_config(z', $instr_val(v_val)*{v_val <- val_lst} ++ instr'_lst ++ instr_1_lst)) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z', instr'_lst)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + rule ctxt_label{z : state, v_n : n, instr_0_lst : instr*, instr_lst : instr*, z' : state, instr'_lst : instr*}: + `%~>%`(mk_config_config(z, [`LABEL_%{%}%`_instr(v_n, instr_0_lst, instr_lst)]), mk_config_config(z', [`LABEL_%{%}%`_instr(v_n, instr_0_lst, instr'_lst)])) + -- Step: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z', instr'_lst)) + -- wf_config: `%`(mk_config_config(z, [`LABEL_%{%}%`_instr(v_n, instr_0_lst, instr_lst)])) + -- wf_config: `%`(mk_config_config(z', [`LABEL_%{%}%`_instr(v_n, instr_0_lst, instr'_lst)])) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z', instr'_lst)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.36 + rule ctxt_handler{z : state, v_n : n, catch_lst : catch*, instr_lst : instr*, z' : state, instr'_lst : instr*}: + `%~>%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, catch_lst, instr_lst)]), mk_config_config(z', [`HANDLER_%{%}%`_instr(v_n, catch_lst, instr'_lst)])) + -- Step: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z', instr'_lst)) + -- wf_config: `%`(mk_config_config(z, [`HANDLER_%{%}%`_instr(v_n, catch_lst, instr_lst)])) + -- wf_config: `%`(mk_config_config(z', [`HANDLER_%{%}%`_instr(v_n, catch_lst, instr'_lst)])) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z', instr'_lst)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:45.1-47.45 + rule ctxt_frame{s : store, f : frame, v_n : n, f' : frame, instr_lst : instr*, s' : store, f'' : frame, instr'_lst : instr*}: + `%~>%`(mk_config_config(mk_state_state(s, f), [`FRAME_%{%}%`_instr(v_n, f', instr_lst)]), mk_config_config(mk_state_state(s', f), [`FRAME_%{%}%`_instr(v_n, f'', instr'_lst)])) + -- Step: `%~>%`(mk_config_config(mk_state_state(s, f'), instr_lst), mk_config_config(mk_state_state(s', f''), instr'_lst)) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [`FRAME_%{%}%`_instr(v_n, f', instr_lst)])) + -- wf_config: `%`(mk_config_config(mk_state_state(s', f), [`FRAME_%{%}%`_instr(v_n, f'', instr'_lst)])) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f'), instr_lst)) + -- wf_config: `%`(mk_config_config(mk_state_state(s', f''), instr'_lst)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 + rule throw{z : state, v_n : n, val_lst : val*, x : idx, exn : exninst, a : addr, t_lst : valtype*}: + `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [THROW_instr(x)]), mk_config_config($add_exninst(z, [exn]), [REF_EXN_ADDR_instr(a) THROW_REF_instr])) + -- Expand: `%~~%`(!($as_deftype($fun_tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + -- if ($as_deftype($fun_tag(z, x).TYPE_taginst) =/= ?()) + -- if (a = |$fun_exninst(z)|) + -- if (exn = {TAG $fun_tagaddr(z)[$proj_uN_0(x).0], FIELDS val_lst}) + -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) + -- wf_taginst: `%`($fun_tag(z, x)) + -- (wf_exninst: `%`(iter))*{iter <- $fun_exninst(z)} + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [THROW_instr(x)])) + -- wf_config: `%`(mk_config_config($add_exninst(z, [exn]), [REF_EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + -- wf_exninst: `%`({TAG $fun_tagaddr(z)[$proj_uN_0(x).0], FIELDS val_lst}) + -- if (v_n = |val_lst|) + -- if (v_n = |t_lst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:305.1-306.56 + rule local_set{z : state, v_val : val, x : idx}: + `%~>%`(mk_config_config(z, [$instr_val(v_val) LOCAL_SET_instr(x)]), mk_config_config($with_local(z, x, v_val), [])) + -- wf_config: `%`(mk_config_config(z, [$instr_val(v_val) LOCAL_SET_instr(x)])) + -- wf_config: `%`(mk_config_config($with_local(z, x, v_val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:318.1-319.58 + rule global_set{z : state, v_val : val, x : idx}: + `%~>%`(mk_config_config(z, [$instr_val(v_val) GLOBAL_SET_instr(x)]), mk_config_config($with_global(z, x, v_val), [])) + -- wf_config: `%`(mk_config_config(z, [$instr_val(v_val) GLOBAL_SET_instr(x)])) + -- wf_config: `%`(mk_config_config($with_global(z, x, v_val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:332.1-334.33 + rule table_set_oob{z : state, at : addrtype, i : num_, v_ref : ref, x : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)]), mk_config_config(z, [TRAP_instr])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($fun_table(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)])) + -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:336.1-338.32 + rule table_set_val{z : state, at : addrtype, i : num_, v_ref : ref, x : idx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)]), mk_config_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, v_ref), [])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_tableinst: `%`($fun_table(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)])) + -- wf_config: `%`(mk_config_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, v_ref), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:347.1-350.46 + rule table_grow_succeed{z : state, v_ref : ref, at : addrtype, v_n : n, x : idx, ti : tableinst, var_0 : tableinst?}: + `%~>%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)]), mk_config_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(|$fun_table(z, x).REFS_tableinst|)))])) + -- if (ti = !(var_0)) + -- if (var_0 =/= ?()) + -- wf_tableinst: `%`(!(var_0)) + -- wf_tableinst: `%`($fun_table(z, x)) + -- wf_config: `%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)])) + -- wf_config: `%`(mk_config_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(|$fun_table(z, x).REFS_tableinst|)))])) + -- fun_growtable: `%%%%`($fun_table(z, x), v_n, v_ref, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:352.1-353.87 + rule table_grow_fail{z : state, v_ref : ref, at : addrtype, v_n : n, x : idx, var_0 : nat}: + `%~>%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)]), mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(var_0)))])) + -- wf_config: `%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:413.1-414.51 + rule elem_drop{z : state, x : idx}: + `%~>%`(mk_config_config(z, [ELEM_DROP_instr(x)]), mk_config_config($with_elem(z, x, []), [])) + -- wf_config: `%`(mk_config_config(z, [ELEM_DROP_instr(x)])) + -- wf_config: `%`(mk_config_config($with_elem(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:497.1-500.60 + rule store_num_oob{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), mk_config_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:502.1-506.29 + rule store_num_val{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, b_lst : byte*}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- if (b_lst = $nbytes_(nt, c)) + -- (wf_byte: `%`(iter))*{iter <- $nbytes_(nt, c)} + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- if ($proj_num__0(i) =/= ?()) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:508.1-511.52 + rule store_pack_oob{z : state, at : addrtype, i : num_, v_Inn : Inn, c : num_, v_n : n, x : idx, ao : memarg}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)]), mk_config_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)])) + -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:513.1-517.52 + rule store_pack_val{z : state, at : addrtype, i : num_, v_Inn : Inn, c : num_, v_n : n, x : idx, ao : memarg, b_lst : byte*}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- if (b_lst = $ibytes_(v_n, $wrap__($size($numtype_addrtype(v_Inn)), v_n, !($proj_num__0(c))))) + -- if ($proj_num__0(c) =/= ?()) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(v_n, $wrap__($size($numtype_addrtype(v_Inn)), v_n, !($proj_num__0(c))))} + -- wf_uN: `%%`(v_n, $wrap__($size($numtype_addrtype(v_Inn)), v_n, !($proj_num__0(c)))) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)])) + -- wf_config: `%`(mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- if ($proj_num__0(i) =/= ?()) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:519.1-522.63 + rule vstore_oob{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), mk_config_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:524.1-527.31 + rule vstore_val{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, b_lst : byte*}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- if (b_lst = $vbytes_(V128_vectype, c)) + -- (wf_byte: `%`(iter))*{iter <- $vbytes_(V128_vectype, c)} + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- if ($proj_num__0(i) =/= ?()) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:530.1-533.50 + rule vstore_lane_oob{z : state, at : addrtype, i : num_, c : vec_, v_N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), mk_config_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + v_N) > |$fun_mem(z, x).BYTES_meminst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)])) + -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:535.1-540.49 + rule vstore_lane_val{z : state, at : addrtype, i : num_, c : vec_, v_N : N, x : idx, ao : memarg, j : laneidx, b_lst : byte*, v_Jnn : Jnn, v_M : M}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- if (v_N = $jsize(v_Jnn)) + -- if ((v_M : nat <:> rat) = ((128 : nat <:> rat) / (v_N : nat <:> rat))) + -- if (b_lst = $ibytes_(v_N, mk_uN_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]))).0))) + -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]) =/= ?()) + -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)|) + -- (wf_byte: `%`(iter))*{iter <- $ibytes_(v_N, mk_uN_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]))).0))} + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)])) + -- wf_config: `%`(mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- if ($proj_num__0(i) =/= ?()) + -- wf_uN: `%%`(v_N, mk_uN_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]))).0)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:549.1-552.37 + rule memory_grow_succeed{z : state, at : addrtype, v_n : n, x : idx, mi : meminst, var_0 : meminst?}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)]), mk_config_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((|$fun_mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (mi = !(var_0)) + -- if (var_0 =/= ?()) + -- wf_meminst: `%`(!(var_0)) + -- wf_meminst: `%`($fun_mem(z, x)) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)])) + -- wf_config: `%`(mk_config_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((|$fun_mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- fun_growmem: `%%%`($fun_mem(z, x), v_n, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:554.1-555.84 + rule memory_grow_fail{z : state, at : addrtype, v_n : n, x : idx, var_0 : nat}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)]), mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(var_0)))])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:615.1-616.51 + rule data_drop{z : state, x : idx}: + `%~>%`(mk_config_config(z, [DATA_DROP_instr(x)]), mk_config_config($with_data(z, x, []), [])) + -- wf_config: `%`(mk_config_config(z, [DATA_DROP_instr(x)])) + -- wf_config: `%`(mk_config_config($with_data(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:692.1-696.65 + rule struct_new{z : state, v_n : n, val_lst : val*, x : idx, si : structinst, a : addr, mut_opt_lst : mut?*, zt_lst : storagetype*}: + `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [STRUCT_NEW_instr(x)]), mk_config_config($add_structinst(z, [si]), [REF_STRUCT_ADDR_instr(a)])) + -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)^v_n{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- if (a = |$fun_structinst(z)|) + -- if (si = {TYPE $fun_type(z, x), FIELDS !($packfield_(zt, v_val))^v_n{v_val <- val_lst, zt <- zt_lst}}) + -- (if ($packfield_(zt, v_val) =/= ?()))^v_n{v_val <- val_lst, zt <- zt_lst} + -- (wf_structinst: `%`(iter))*{iter <- $fun_structinst(z)} + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [STRUCT_NEW_instr(x)])) + -- wf_config: `%`(mk_config_config($add_structinst(z, [si]), [REF_STRUCT_ADDR_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)^v_n{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- wf_structinst: `%`({TYPE $fun_type(z, x), FIELDS !($packfield_(zt, v_val))^v_n{v_val <- val_lst, zt <- zt_lst}}) + -- if (v_n = |val_lst|) + -- if (v_n = |mut_opt_lst|) + -- if (v_n = |zt_lst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:713.1-714.55 + rule struct_set_null{z : state, v_val : val, x : idx, i : fieldidx}: + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr $instr_val(v_val) STRUCT_SET_instr(x, i)]), mk_config_config(z, [TRAP_instr])) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_ADDR_instr $instr_val(v_val) STRUCT_SET_instr(x, i)])) + -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:716.1-719.46 + rule struct_set_struct{z : state, a : addr, v_val : val, x : idx, i : fieldidx, zt_lst : storagetype*, mut_opt_lst : mut?*}: + `%~>%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) $instr_val(v_val) STRUCT_SET_instr(x, i)]), mk_config_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt_lst[$proj_uN_0(i).0], v_val))), [])) + -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- wf_config: `%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) $instr_val(v_val) STRUCT_SET_instr(x, i)])) + -- wf_config: `%`(mk_config_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt_lst[$proj_uN_0(i).0], v_val))), [])) + -- if ($packfield_(zt_lst[$proj_uN_0(i).0], v_val) =/= ?()) + -- if ($proj_uN_0(i).0 < |zt_lst|) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:732.1-737.65 + rule array_new_fixed{z : state, v_n : n, val_lst : val*, x : idx, ai : arrayinst, a : addr, mut_opt : mut?, zt : storagetype}: + `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]), mk_config_config($add_arrayinst(z, [ai]), [REF_ARRAY_ADDR_instr(a)])) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- if ((a = |$fun_arrayinst(z)|) /\ (ai = {TYPE $fun_type(z, x), FIELDS !($packfield_(zt, v_val))^v_n{v_val <- val_lst}})) + -- (if ($packfield_(zt, v_val) =/= ?()))^v_n{v_val <- val_lst} + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))])) + -- wf_config: `%`(mk_config_config($add_arrayinst(z, [ai]), [REF_ARRAY_ADDR_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- wf_arrayinst: `%`({TYPE $fun_type(z, x), FIELDS !($packfield_(zt, v_val))^v_n{v_val <- val_lst}}) + -- if (v_n = |val_lst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:777.1-778.66 + rule array_set_null{z : state, i : num_, v_val : val, x : idx}: + `%~>%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)]), mk_config_config(z, [TRAP_instr])) + -- wf_config: `%`(mk_config_config(z, [REF_NULL_ADDR_instr CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)])) + -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:780.1-782.39 + rule array_set_oob{z : state, a : addr, i : num_, v_val : val, x : idx}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)]), mk_config_config(z, [TRAP_instr])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$fun_arrayinst(z)|) + -- (wf_arrayinst: `%`(iter))*{iter <- $fun_arrayinst(z)} + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)])) + -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:784.1-787.44 + rule array_set_array{z : state, a : addr, i : num_, v_val : val, x : idx, zt : storagetype, mut_opt : mut?}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)]), mk_config_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, v_val))), [])) + -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)])) + -- wf_config: `%`(mk_config_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, v_val))), [])) + -- if ($proj_num__0(i) =/= ?()) + -- if ($packfield_(zt, v_val) =/= ?()) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +relation Steps: `%~>*%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + rule refl{z : state, instr_lst : instr*}: + `%~>*%`(mk_config_config(z, instr_lst), mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + rule trans{z : state, instr_lst : instr*, z'' : state, instr''_lst : instr*, z' : state, instr'_lst : instr*}: + `%~>*%`(mk_config_config(z, instr_lst), mk_config_config(z'', instr''_lst)) + -- Step: `%~>%`(mk_config_config(z, instr_lst), mk_config_config(z', instr'_lst)) + -- Steps: `%~>*%`(mk_config_config(z', instr'_lst), mk_config_config(z'', instr''_lst)) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z'', instr''_lst)) + -- wf_config: `%`(mk_config_config(z', instr'_lst)) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule mk_Eval_expr{z : state, instr_lst : instr*, z' : state, val_lst : val*}: + `%;%~>*%;%`(z, instr_lst, z', val_lst) + -- Steps: `%~>*%`(mk_config_config(z, instr_lst), mk_config_config(z', $instr_val(v_val)*{v_val <- val_lst})) + -- wf_config: `%`(mk_config_config(z, instr_lst)) + -- wf_config: `%`(mk_config_config(z', $instr_val(v_val)*{v_val <- val_lst})) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 +relation fun_alloctypes: `%%`(type*, deftype*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_1{type'_lst : type*, v_type : type, deftype_lst : deftype*, x : uN, var_2 : deftype*, var_1 : deftype*, var_0 : deftype*}: + `%%`(type'_lst ++ [v_type], deftype'_lst ++ deftype_lst) + -- let{deftype'_lst : deftype*} deftype'_lst = var_0 + -- let{v_rectype : rectype} TYPE_type(v_rectype) = v_type + -- if (deftype_lst = var_1) + -- if ($proj_uN_0(x).0 = |deftype'_lst|) + -- wf_uN: `%%`(32, x) + -- fun_rolldt: `%%%`(x, v_rectype, var_2) + -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype'_2)*{deftype'_2 <- deftype'_lst}, var_1) + -- fun_alloctypes: `%%`(type'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_alloctag: `%%%`(store, tagtype, (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_alloctag_case_0{s : store, v_tagtype : typeuse, v_taginst : taginst}: + `%%%`(s, v_tagtype, (s +++ {TAGS [v_taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|)) + -- if (v_taginst = {TYPE v_tagtype}) + -- wf_taginst: `%`({TYPE v_tagtype}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctag_is_wf: `%%%`(v_store : store, v_tagtype : tagtype, ret_val : (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctag_is_wf_0{v_store : store, v_tagtype : tagtype, ret_val : (store, tagaddr), var_0 : (store, tagaddr)}: + `%%%`(v_store, v_tagtype, ret_val) + -- wf_store: `%`(v_store) + -- wf_typeuse: `%`(v_tagtype) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_alloctag: `%%%`(v_store, v_tagtype, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation fun_alloctags: `%%%`(store, tagtype*, (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_1{s : store, v_tagtype : typeuse, tagtype'_lst : tagtype*, var_2 : (store, tagaddr*), var_1 : (store, tagaddr*), var_0 : (store, tagaddr)}: + `%%%`(s, [v_tagtype] ++ tagtype'_lst, (s_2, [ja] ++ ja'_lst)) + -- let{ja : tagaddr, s_1 : store} (s_1, ja) = var_0 + -- let{s_2 : store, ja'_lst : tagaddr*} (s_2, ja'_lst) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_alloctags: `%%%`(s_1, tagtype'_lst, var_2) + -- fun_alloctags: `%%%`(s_1, tagtype'_lst, var_1) + -- fun_alloctag: `%%%`(s, v_tagtype, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation alloctags_is_wf: `%%%`(v_store : store, var_0 : tagtype*, ret_val : (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule alloctags_is_wf_0{v_store : store, var_0 : tagtype*, ret_val : (store, tagaddr*), var_1 : (store, tagaddr*)}: + `%%%`(v_store, var_0, ret_val) + -- wf_store: `%`(v_store) + -- (wf_typeuse: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_store: `%`(ret_val.0) + -- fun_alloctags: `%%%`(v_store, var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocglobal: `%%%%`(store, globaltype, val, (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocglobal_case_0{s : store, v_globaltype : globaltype, v_val : val, v_globalinst : globalinst}: + `%%%%`(s, v_globaltype, v_val, (s +++ {TAGS [], GLOBALS [v_globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|)) + -- if (v_globalinst = {TYPE v_globaltype, VALUE v_val}) + -- wf_globalinst: `%`({TYPE v_globaltype, VALUE v_val}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocglobal_is_wf: `%%%%`(v_store : store, v_globaltype : globaltype, v_val : val, ret_val : (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocglobal_is_wf_0{v_store : store, v_globaltype : globaltype, v_val : val, ret_val : (store, globaladdr), var_0 : (store, globaladdr)}: + `%%%%`(v_store, v_globaltype, v_val, ret_val) + -- wf_store: `%`(v_store) + -- wf_globaltype: `%`(v_globaltype) + -- wf_val: `%`(v_val) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_allocglobal: `%%%%`(v_store, v_globaltype, v_val, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation fun_allocglobals: `%%%%`(store, globaltype*, val*, (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_1{s : store, v_globaltype : globaltype, globaltype'_lst : globaltype*, v_val : val, val'_lst : val*, var_2 : (store, globaladdr*), var_1 : (store, globaladdr*), var_0 : (store, globaladdr)}: + `%%%%`(s, [v_globaltype] ++ globaltype'_lst, [v_val] ++ val'_lst, (s_2, [ga] ++ ga'_lst)) + -- let{ga : globaladdr, s_1 : store} (s_1, ga) = var_0 + -- let{s_2 : store, ga'_lst : globaladdr*} (s_2, ga'_lst) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_allocglobals: `%%%%`(s_1, globaltype'_lst, val'_lst, var_2) + -- fun_allocglobals: `%%%%`(s_1, globaltype'_lst, val'_lst, var_1) + -- fun_allocglobal: `%%%%`(s, v_globaltype, v_val, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation allocglobals_is_wf: `%%%%`(v_store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule allocglobals_is_wf_0{v_store : store, var_0 : globaltype*, var_1 : val*, ret_val : (store, globaladdr*), var_2 : (store, globaladdr*)}: + `%%%%`(v_store, var_0, var_1, ret_val) + -- wf_store: `%`(v_store) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_store: `%`(ret_val.0) + -- fun_allocglobals: `%%%%`(v_store, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocmem: `%%%`(store, memtype, (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocmem_case_0{s : store, at : addrtype, i : uN, j_opt : u64?, v_meminst : meminst}: + `%%%`(s, `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), (s +++ {TAGS [], GLOBALS [], MEMS [v_meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|)) + -- if (v_meminst = {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES mk_byte_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES mk_byte_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmem_is_wf: `%%%`(v_store : store, v_memtype : memtype, ret_val : (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmem_is_wf_0{v_store : store, v_memtype : memtype, ret_val : (store, memaddr), var_0 : (store, memaddr)}: + `%%%`(v_store, v_memtype, ret_val) + -- wf_store: `%`(v_store) + -- wf_memtype: `%`(v_memtype) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_allocmem: `%%%`(v_store, v_memtype, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation fun_allocmems: `%%%`(store, memtype*, (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_1{s : store, v_memtype : memtype, memtype'_lst : memtype*, var_2 : (store, memaddr*), var_1 : (store, memaddr*), var_0 : (store, memaddr)}: + `%%%`(s, [v_memtype] ++ memtype'_lst, (s_2, [ma] ++ ma'_lst)) + -- let{ma : memaddr, s_1 : store} (s_1, ma) = var_0 + -- let{s_2 : store, ma'_lst : memaddr*} (s_2, ma'_lst) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_allocmems: `%%%`(s_1, memtype'_lst, var_2) + -- fun_allocmems: `%%%`(s_1, memtype'_lst, var_1) + -- fun_allocmem: `%%%`(s, v_memtype, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation allocmems_is_wf: `%%%`(v_store : store, var_0 : memtype*, ret_val : (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule allocmems_is_wf_0{v_store : store, var_0 : memtype*, ret_val : (store, memaddr*), var_1 : (store, memaddr*)}: + `%%%`(v_store, var_0, ret_val) + -- wf_store: `%`(v_store) + -- (wf_memtype: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_store: `%`(ret_val.0) + -- fun_allocmems: `%%%`(v_store, var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_alloctable: `%%%%`(store, tabletype, ref, (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_alloctable_case_0{s : store, at : addrtype, i : uN, j_opt : u64?, rt : reftype, v_ref : ref, v_tableinst : tableinst}: + `%%%%`(s, mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), v_ref, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [v_tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|)) + -- if (v_tableinst = {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS v_ref^$proj_uN_0(i).0{}}) + -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS v_ref^$proj_uN_0(i).0{}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation alloctable_is_wf: `%%%%`(v_store : store, v_tabletype : tabletype, v_ref : ref, ret_val : (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule alloctable_is_wf_0{v_store : store, v_tabletype : tabletype, v_ref : ref, ret_val : (store, tableaddr), var_0 : (store, tableaddr)}: + `%%%%`(v_store, v_tabletype, v_ref, ret_val) + -- wf_store: `%`(v_store) + -- wf_tabletype: `%`(v_tabletype) + -- wf_ref: `%`(v_ref) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_alloctable: `%%%%`(v_store, v_tabletype, v_ref, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation fun_alloctables: `%%%%`(store, tabletype*, ref*, (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_1{s : store, v_tabletype : tabletype, tabletype'_lst : tabletype*, v_ref : ref, ref'_lst : ref*, var_2 : (store, tableaddr*), var_1 : (store, tableaddr*), var_0 : (store, tableaddr)}: + `%%%%`(s, [v_tabletype] ++ tabletype'_lst, [v_ref] ++ ref'_lst, (s_2, [ta] ++ ta'_lst)) + -- let{ta : tableaddr, s_1 : store} (s_1, ta) = var_0 + -- let{s_2 : store, ta'_lst : tableaddr*} (s_2, ta'_lst) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_alloctables: `%%%%`(s_1, tabletype'_lst, ref'_lst, var_2) + -- fun_alloctables: `%%%%`(s_1, tabletype'_lst, ref'_lst, var_1) + -- fun_alloctable: `%%%%`(s, v_tabletype, v_ref, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation alloctables_is_wf: `%%%%`(v_store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule alloctables_is_wf_0{v_store : store, var_0 : tabletype*, var_1 : ref*, ret_val : (store, tableaddr*), var_2 : (store, tableaddr*)}: + `%%%%`(v_store, var_0, var_1, ret_val) + -- wf_store: `%`(v_store) + -- (wf_tabletype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_store: `%`(ret_val.0) + -- fun_alloctables: `%%%%`(v_store, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocfunc: `%%%%%`(store, deftype, funccode, moduleinst, (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocfunc_case_0{s : store, v_deftype : deftype, v_funccode : funccode, v_moduleinst : moduleinst, v_funcinst : funcinst}: + `%%%%%`(s, v_deftype, v_funccode, v_moduleinst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [v_funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|)) + -- if (v_funcinst = {TYPE v_deftype, MODULE v_moduleinst, CODE v_funccode}) + -- wf_funcinst: `%`({TYPE v_deftype, MODULE v_moduleinst, CODE v_funccode}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocfunc_is_wf: `%%%%%`(v_store : store, v_deftype : deftype, v_funccode : funccode, v_moduleinst : moduleinst, ret_val : (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocfunc_is_wf_0{v_store : store, v_deftype : deftype, v_funccode : funccode, v_moduleinst : moduleinst, ret_val : (store, funcaddr), var_0 : (store, funcaddr)}: + `%%%%%`(v_store, v_deftype, v_funccode, v_moduleinst, ret_val) + -- wf_store: `%`(v_store) + -- wf_funccode: `%`(v_funccode) + -- wf_moduleinst: `%`(v_moduleinst) + -- if (ret_val = var_0) + -- wf_store: `%`(ret_val.0) + -- fun_allocfunc: `%%%%%`(v_store, v_deftype, v_funccode, v_moduleinst, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation fun_allocfuncs: `%%%%%`(store, deftype*, funccode*, moduleinst*, (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_0{s : store}: + `%%%%%`(s, [], [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_1{s : store, dt : deftype, dt'_lst : deftype*, v_funccode : funccode, funccode'_lst : funccode*, v_moduleinst : moduleinst, moduleinst'_lst : moduleinst*, var_2 : (store, funcaddr*), var_1 : (store, funcaddr*), var_0 : (store, funcaddr)}: + `%%%%%`(s, [dt] ++ dt'_lst, [v_funccode] ++ funccode'_lst, [v_moduleinst] ++ moduleinst'_lst, (s_2, [fa] ++ fa'_lst)) + -- let{fa : funcaddr, s_1 : store} (s_1, fa) = var_0 + -- let{s_2 : store, fa'_lst : funcaddr*} (s_2, fa'_lst) = var_1 + -- wf_store: `%`(var_0.0) + -- wf_store: `%`(var_2.0) + -- fun_allocfuncs: `%%%%%`(s_1, dt'_lst, funccode'_lst, moduleinst'_lst, var_2) + -- fun_allocfuncs: `%%%%%`(s_1, dt'_lst, funccode'_lst, moduleinst'_lst, var_1) + -- fun_allocfunc: `%%%%%`(s, dt, v_funccode, v_moduleinst, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation allocfuncs_is_wf: `%%%%%`(v_store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule allocfuncs_is_wf_0{v_store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*, ret_val : (store, funcaddr*), var_3 : (store, funcaddr*)}: + `%%%%%`(v_store, var_0, var_1, var_2, ret_val) + -- wf_store: `%`(v_store) + -- (wf_funccode: `%`(var_1))*{var_1 <- var_1} + -- (wf_moduleinst: `%`(var_2))*{var_2 <- var_2} + -- if (ret_val = var_3) + -- wf_store: `%`(ret_val.0) + -- fun_allocfuncs: `%%%%%`(v_store, var_0, var_1, var_2, var_3) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocdata: `%%%%`(store, datatype, byte*, (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocdata_case_0{s : store, byte_lst : byte*, v_datainst : datainst}: + `%%%%`(s, OK_datatype, byte_lst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [v_datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|)) + -- if (v_datainst = {BYTES byte_lst}) + -- wf_datainst: `%`({BYTES byte_lst}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocdata_is_wf: `%%%%`(v_store : store, v_datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocdata_is_wf_0{v_store : store, v_datatype : datatype, var_0 : byte*, ret_val : (store, dataaddr), var_1 : (store, dataaddr)}: + `%%%%`(v_store, v_datatype, var_0, ret_val) + -- wf_store: `%`(v_store) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_store: `%`(ret_val.0) + -- fun_allocdata: `%%%%`(v_store, v_datatype, var_0, var_1) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation fun_allocdatas: `%%%%`(store, datatype*, byte**, (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_1{s : store, ok : datatype, ok'_lst : datatype*, b_lst : byte*, b'_lst_lst : byte**, var_3 : (store, dataaddr*), var_2 : (store, dataaddr), var_1 : (store, dataaddr*), var_0 : (store, dataaddr)}: + `%%%%`(s, [ok] ++ ok'_lst, [b_lst] ++ b'_lst_lst, (s_2, [da] ++ da'_lst)) + -- let{da : dataaddr, s_1 : store} (s_1, da) = var_0 + -- let{s_2 : store, da'_lst : dataaddr*} (s_2, da'_lst) = var_1 + -- wf_store: `%`(var_2.0) + -- wf_store: `%`(var_3.0) + -- fun_allocdatas: `%%%%`(s_1, ok'_lst, b'_lst_lst, var_3) + -- fun_allocdata: `%%%%`(s, ok, b_lst, var_2) + -- fun_allocdatas: `%%%%`(s_1, ok'_lst, b'_lst_lst, var_1) + -- fun_allocdata: `%%%%`(s, ok, b_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation allocdatas_is_wf: `%%%%`(v_store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule allocdatas_is_wf_0{v_store : store, var_0 : datatype*, var_1 : byte**, ret_val : (store, dataaddr*), var_2 : (store, dataaddr*)}: + `%%%%`(v_store, var_0, var_1, ret_val) + -- wf_store: `%`(v_store) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_store: `%`(ret_val.0) + -- fun_allocdatas: `%%%%`(v_store, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocelem: `%%%%`(store, elemtype, ref*, (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocelem_case_0{s : store, v_elemtype : reftype, ref_lst : ref*, v_eleminst : eleminst}: + `%%%%`(s, v_elemtype, ref_lst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [v_eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|)) + -- if (v_eleminst = {TYPE v_elemtype, REFS ref_lst}) + -- wf_eleminst: `%`({TYPE v_elemtype, REFS ref_lst}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocelem_is_wf: `%%%%`(v_store : store, v_elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocelem_is_wf_0{v_store : store, v_elemtype : elemtype, var_0 : ref*, ret_val : (store, elemaddr), var_1 : (store, elemaddr)}: + `%%%%`(v_store, v_elemtype, var_0, ret_val) + -- wf_store: `%`(v_store) + -- wf_reftype: `%`(v_elemtype) + -- (wf_ref: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_store: `%`(ret_val.0) + -- fun_allocelem: `%%%%`(v_store, v_elemtype, var_0, var_1) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation fun_allocelems: `%%%%`(store, elemtype*, ref**, (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_1{s : store, rt : reftype, rt'_lst : reftype*, ref_lst : ref*, ref'_lst_lst : ref**, var_3 : (store, elemaddr*), var_2 : (store, elemaddr), var_1 : (store, elemaddr*), var_0 : (store, elemaddr)}: + `%%%%`(s, [rt] ++ rt'_lst, [ref_lst] ++ ref'_lst_lst, (s_2, [ea] ++ ea'_lst)) + -- let{ea : elemaddr, s_1 : store} (s_1, ea) = var_0 + -- let{s_2 : store, ea'_lst : elemaddr*} (s_2, ea'_lst) = var_1 + -- wf_store: `%`(var_2.0) + -- wf_store: `%`(var_3.0) + -- fun_allocelems: `%%%%`(s_1, rt'_lst, ref'_lst_lst, var_3) + -- fun_allocelem: `%%%%`(s, rt, ref_lst, var_2) + -- fun_allocelems: `%%%%`(s_1, rt'_lst, ref'_lst_lst, var_1) + -- fun_allocelem: `%%%%`(s, rt, ref_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation allocelems_is_wf: `%%%%`(v_store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule allocelems_is_wf_0{v_store : store, var_0 : elemtype*, var_1 : ref**, ret_val : (store, elemaddr*), var_2 : (store, elemaddr*)}: + `%%%%`(v_store, var_0, var_1, ret_val) + -- wf_store: `%`(v_store) + -- (wf_reftype: `%`(var_0))*{var_0 <- var_0} + -- (wf_ref: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_store: `%`(ret_val.0) + -- fun_allocelems: `%%%%`(v_store, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexport(v_moduleinst : moduleinst, v_export : export) : exportinst + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, TAG_externidx(x))) = {NAME v_name, ADDR TAG_externaddr(v_moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, GLOBAL_externidx(x))) = {NAME v_name, ADDR GLOBAL_externaddr(v_moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, MEM_externidx(x))) = {NAME v_name, ADDR MEM_externaddr(v_moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, TABLE_externidx(x))) = {NAME v_name, ADDR TABLE_externaddr(v_moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, FUNC_externidx(x))) = {NAME v_name, ADDR FUNC_externaddr(v_moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexport_is_wf: `%%%`(v_moduleinst : moduleinst, v_export : export, ret_val : exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexport_is_wf_0{v_moduleinst : moduleinst, v_export : export, ret_val : exportinst}: + `%%%`(v_moduleinst, v_export, ret_val) + -- wf_moduleinst: `%`(v_moduleinst) + -- wf_export: `%`(v_export) + -- if (ret_val = $allocexport(v_moduleinst, v_export)) + -- wf_exportinst: `%`(ret_val) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexports(v_moduleinst : moduleinst, var_0 : export*) : exportinst* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexports{v_moduleinst : moduleinst, export_lst : export*}(v_moduleinst, export_lst) = $allocexport(v_moduleinst, v_export)*{v_export <- export_lst} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocexports_is_wf: `%%%`(v_moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocexports_is_wf_0{v_moduleinst : moduleinst, var_0 : export*, ret_val : exportinst*}: + `%%%`(v_moduleinst, var_0, ret_val) + -- wf_moduleinst: `%`(v_moduleinst) + -- (wf_export: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = $allocexports(v_moduleinst, var_0)) + -- (wf_exportinst: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref**, (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocmodule_case_0{s : store, v_module : module, externaddr_lst : externaddr*, val_G_lst : val*, ref_T_lst : ref*, ref_E_lst_lst : ref**, s_7 : store, v_moduleinst : moduleinst, tagtype_lst : tagtype*, expr_G_lst : expr*, globaltype_lst : globaltype*, memtype_lst : memtype*, expr_T_lst : expr*, tabletype_lst : tabletype*, expr_F_lst : expr*, local_lst_lst : local**, x_lst : idx*, byte_lst_lst : byte**, datamode_lst : datamode*, elemmode_lst : elemmode*, elemtype_lst : elemtype*, expr_E_lst_lst : expr**, xi_lst : exportinst*, var_34 : (store, funcaddr*), var_33_lst : reftype*, var_32_lst : elemtype*, var_31 : (store, elemaddr*), var_30 : (store, dataaddr*), var_29_lst : tabletype*, var_28_lst : tabletype*, var_27 : (store, tableaddr*), var_26_lst : memtype*, var_25_lst : memtype*, var_24 : (store, memaddr*), var_23_lst : globaltype*, var_22_lst : globaltype*, var_21 : (store, globaladdr*), var_20_lst : typeuse*, var_19_lst : tagtype*, var_18 : (store, tagaddr*), var_17 : (store, funcaddr*), var_16_lst : elemtype*, var_15 : (store, elemaddr*), var_14 : (store, dataaddr*), var_13_lst : tabletype*, var_12 : (store, tableaddr*), var_11_lst : memtype*, var_10 : (store, memaddr*), var_9_lst : globaltype*, var_8 : (store, globaladdr*), var_7_lst : tagtype*, var_6 : (store, tagaddr*), var_5 : deftype*, var_4 : funcaddr*, var_3 : tableaddr*, var_2 : memaddr*, var_1 : globaladdr*, var_0 : tagaddr*}: + `%%%%%%%`(s, v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst, (s_7, v_moduleinst)) + -- let{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*} MODULE_module(mk_list_list(type_lst), mk_list_list(import_lst), mk_list_list(tag_lst), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list(func_lst), mk_list_list(data_lst), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst)) = v_module + -- if (tag_lst = TAG_tag(tagtype_78)*{tagtype_78 <- tagtype_lst}) + -- if (global_lst = GLOBAL_global(globaltype_122, expr_G_1)*{expr_G_1 <- expr_G_lst, globaltype_122 <- globaltype_lst}) + -- if (mem_lst = MEMORY_mem(memtype_122)*{memtype_122 <- memtype_lst}) + -- if (table_lst = TABLE_table(tabletype_156, expr_T_1)*{expr_T_1 <- expr_T_lst, tabletype_156 <- tabletype_lst}) + -- if (func_lst = FUNC_func(x_2, local_lst_82, expr_F_1)*{expr_F_1 <- expr_F_lst, local_lst_82 <- local_lst_lst, x_2 <- x_lst}) + -- if (data_lst = DATA_data(byte_lst_110, datamode_110)*{byte_lst_110 <- byte_lst_lst, datamode_110 <- datamode_lst}) + -- if (elem_lst = ELEM_elem(elemtype_1, expr_E_lst_1, elemmode_230)*{elemmode_230 <- elemmode_lst, elemtype_1 <- elemtype_lst, expr_E_lst_1 <- expr_E_lst_lst}) + -- let{aa_I_lst : tagaddr*} aa_I_lst = var_0 + -- let{ga_I_lst : globaladdr*} ga_I_lst = var_1 + -- let{ma_I_lst : memaddr*} ma_I_lst = var_2 + -- let{ta_I_lst : tableaddr*} ta_I_lst = var_3 + -- let{fa_I_lst : funcaddr*} fa_I_lst = var_4 + -- let{dt_lst : deftype*} dt_lst = var_5 + -- let{fa_lst : nat*} fa_lst = (|s.FUNCS_store| + i_F_1)^(i_F_1<|func_lst|){} + -- let{s_1 : store, aa_lst : tagaddr*} (s_1, aa_lst) = var_6 + -- let{s_2 : store, ga_lst : globaladdr*} (s_2, ga_lst) = var_8 + -- let{s_3 : store, ma_lst : memaddr*} (s_3, ma_lst) = var_10 + -- let{s_4 : store, ta_lst : tableaddr*} (s_4, ta_lst) = var_12 + -- let{s_5 : store, da_lst : dataaddr*} (s_5, da_lst) = var_14 + -- let{s_6 : store, ea_lst : elemaddr*} (s_6, ea_lst) = var_15 + -- if ((s_7, fa_lst) = var_17) + -- if (xi_lst = $allocexports({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}, export_lst)) + -- if (v_moduleinst = {TYPES dt_lst, TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS da_lst, ELEMS ea_lst, EXPORTS xi_lst}) + -- wf_store: `%`(var_18.0) + -- (wf_typeuse: `%`(var_20))*{var_20 <- var_20_lst} + -- wf_store: `%`(var_21.0) + -- (wf_globaltype: `%`(var_23))*{var_23 <- var_23_lst} + -- wf_store: `%`(var_24.0) + -- (wf_memtype: `%`(var_26))*{var_26 <- var_26_lst} + -- wf_store: `%`(var_27.0) + -- (wf_tabletype: `%`(var_29))*{var_29 <- var_29_lst} + -- wf_store: `%`(var_30.0) + -- wf_store: `%`(var_31.0) + -- (wf_reftype: `%`(var_33))*{var_33 <- var_33_lst} + -- wf_store: `%`(var_34.0) + -- (wf_exportinst: `%`(iter_341))*{iter_341 <- $allocexports({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}, export_lst)} + -- wf_module: `%`(MODULE_module(mk_list_list(type_lst), mk_list_list(import_lst), mk_list_list(tag_lst), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list(func_lst), mk_list_list(data_lst), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst))) + -- (wf_tag: `%`(TAG_tag(tagtype_83)))*{tagtype_83 <- tagtype_lst} + -- (wf_global: `%`(GLOBAL_global(globaltype_127, expr_G_2)))*{expr_G_2 <- expr_G_lst, globaltype_127 <- globaltype_lst} + -- if (|expr_G_lst| = |globaltype_lst|) + -- (wf_mem: `%`(MEMORY_mem(memtype_127)))*{memtype_127 <- memtype_lst} + -- (wf_table: `%`(TABLE_table(tabletype_161, expr_T_2)))*{expr_T_2 <- expr_T_lst, tabletype_161 <- tabletype_lst} + -- if (|expr_T_lst| = |tabletype_lst|) + -- (wf_func: `%`(FUNC_func(x_7, local_lst_86, expr_F_4)))*{expr_F_4 <- expr_F_lst, local_lst_86 <- local_lst_lst, x_7 <- x_lst} + -- if (|expr_F_lst| = |local_lst_lst|) + -- if (|expr_F_lst| = |x_lst|) + -- (wf_data: `%`(DATA_data(byte_lst_114, datamode_112)))*{byte_lst_114 <- byte_lst_lst, datamode_112 <- datamode_lst} + -- if (|byte_lst_lst| = |datamode_lst|) + -- (wf_elem: `%`(ELEM_elem(elemtype_5, expr_E_lst_2, elemmode_232)))*{elemmode_232 <- elemmode_lst, elemtype_5 <- elemtype_lst, expr_E_lst_2 <- expr_E_lst_lst} + -- if (|elemmode_lst| = |elemtype_lst|) + -- if (|elemmode_lst| = |expr_E_lst_lst|) + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt_lst, TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS da_lst, ELEMS ea_lst, EXPORTS xi_lst}) + -- fun_allocfuncs: `%%%%%`(s_6, dt_lst[$proj_uN_0(x_5).0]*{x_5 <- x_lst}, FUNC_funccode(x_6, local_lst_85, expr_F_3)*{expr_F_3 <- expr_F_lst, local_lst_85 <- local_lst_lst, x_6 <- x_lst}, v_moduleinst^|func_lst|{}, var_34) + -- (if ($proj_uN_0(x_5).0 < |dt_lst|))*{x_5 <- x_lst} + -- (fun_subst_all_reftype: `%%%`(elemtype_4, $typeuse_deftype(dt_25)*{dt_25 <- dt_lst}, var_33))*{var_33 <- var_33_lst, elemtype_4 <- elemtype_lst} + -- if (|var_33_lst| = |elemtype_lst|) + -- (fun_subst_all_reftype: `%%%`(elemtype_3, $typeuse_deftype(dt_24)*{dt_24 <- dt_lst}, var_32))*{var_32 <- var_32_lst, elemtype_3 <- elemtype_lst} + -- if (|var_32_lst| = |elemtype_lst|) + -- fun_allocelems: `%%%%`(s_5, var_32_lst, ref_E_lst_lst, var_31) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data_lst|{}, byte_lst_lst, var_30) + -- (fun_subst_all_tabletype: `%%%`(tabletype_160, $typeuse_deftype(dt_23)*{dt_23 <- dt_lst}, var_29))*{var_29 <- var_29_lst, tabletype_160 <- tabletype_lst} + -- if (|var_29_lst| = |tabletype_lst|) + -- (fun_subst_all_tabletype: `%%%`(tabletype_159, $typeuse_deftype(dt_22)*{dt_22 <- dt_lst}, var_28))*{var_28 <- var_28_lst, tabletype_159 <- tabletype_lst} + -- if (|var_28_lst| = |tabletype_lst|) + -- fun_alloctables: `%%%%`(s_3, var_28_lst, ref_T_lst, var_27) + -- (fun_subst_all_memtype: `%%%`(memtype_126, $typeuse_deftype(dt_21)*{dt_21 <- dt_lst}, var_26))*{var_26 <- var_26_lst, memtype_126 <- memtype_lst} + -- if (|var_26_lst| = |memtype_lst|) + -- (fun_subst_all_memtype: `%%%`(memtype_125, $typeuse_deftype(dt_20)*{dt_20 <- dt_lst}, var_25))*{var_25 <- var_25_lst, memtype_125 <- memtype_lst} + -- if (|var_25_lst| = |memtype_lst|) + -- fun_allocmems: `%%%`(s_2, var_25_lst, var_24) + -- (fun_subst_all_globaltype: `%%%`(globaltype_126, $typeuse_deftype(dt_19)*{dt_19 <- dt_lst}, var_23))*{var_23 <- var_23_lst, globaltype_126 <- globaltype_lst} + -- if (|var_23_lst| = |globaltype_lst|) + -- (fun_subst_all_globaltype: `%%%`(globaltype_125, $typeuse_deftype(dt_18)*{dt_18 <- dt_lst}, var_22))*{var_22 <- var_22_lst, globaltype_125 <- globaltype_lst} + -- if (|var_22_lst| = |globaltype_lst|) + -- fun_allocglobals: `%%%%`(s_1, var_22_lst, val_G_lst, var_21) + -- (fun_subst_all_tagtype: `%%%`(tagtype_82, $typeuse_deftype(dt_17)*{dt_17 <- dt_lst}, var_20))*{var_20 <- var_20_lst, tagtype_82 <- tagtype_lst} + -- if (|var_20_lst| = |tagtype_lst|) + -- (fun_subst_all_tagtype: `%%%`(tagtype_81, $typeuse_deftype(dt_16)*{dt_16 <- dt_lst}, var_19))*{var_19 <- var_19_lst, tagtype_81 <- tagtype_lst} + -- if (|var_19_lst| = |tagtype_lst|) + -- fun_alloctags: `%%%`(s, var_19_lst, var_18) + -- fun_allocfuncs: `%%%%%`(s_6, dt_lst[$proj_uN_0(x_3).0]*{x_3 <- x_lst}, FUNC_funccode(x_4, local_lst_84, expr_F_2)*{expr_F_2 <- expr_F_lst, local_lst_84 <- local_lst_lst, x_4 <- x_lst}, v_moduleinst^|func_lst|{}, var_17) + -- (if ($proj_uN_0(x_3).0 < |dt_lst|))*{x_3 <- x_lst} + -- (fun_subst_all_reftype: `%%%`(elemtype_2, $typeuse_deftype(dt_13)*{dt_13 <- dt_lst}, var_16))*{var_16 <- var_16_lst, elemtype_2 <- elemtype_lst} + -- if (|var_16_lst| = |elemtype_lst|) + -- fun_allocelems: `%%%%`(s_5, var_16_lst, ref_E_lst_lst, var_15) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data_lst|{}, byte_lst_lst, var_14) + -- (fun_subst_all_tabletype: `%%%`(tabletype_158, $typeuse_deftype(dt_12)*{dt_12 <- dt_lst}, var_13))*{var_13 <- var_13_lst, tabletype_158 <- tabletype_lst} + -- if (|var_13_lst| = |tabletype_lst|) + -- fun_alloctables: `%%%%`(s_3, var_13_lst, ref_T_lst, var_12) + -- (fun_subst_all_memtype: `%%%`(memtype_124, $typeuse_deftype(dt_11)*{dt_11 <- dt_lst}, var_11))*{var_11 <- var_11_lst, memtype_124 <- memtype_lst} + -- if (|var_11_lst| = |memtype_lst|) + -- fun_allocmems: `%%%`(s_2, var_11_lst, var_10) + -- (fun_subst_all_globaltype: `%%%`(globaltype_124, $typeuse_deftype(dt_10)*{dt_10 <- dt_lst}, var_9))*{var_9 <- var_9_lst, globaltype_124 <- globaltype_lst} + -- if (|var_9_lst| = |globaltype_lst|) + -- fun_allocglobals: `%%%%`(s_1, var_9_lst, val_G_lst, var_8) + -- (fun_subst_all_tagtype: `%%%`(tagtype_80, $typeuse_deftype(dt_9)*{dt_9 <- dt_lst}, var_7))*{var_7 <- var_7_lst, tagtype_80 <- tagtype_lst} + -- if (|var_7_lst| = |tagtype_lst|) + -- fun_alloctags: `%%%`(s, var_7_lst, var_6) + -- fun_alloctypes: `%%`(type_lst, var_5) + -- fun_funcsxa: `%%`(externaddr_lst, var_4) + -- fun_tablesxa: `%%`(externaddr_lst, var_3) + -- fun_memsxa: `%%`(externaddr_lst, var_2) + -- fun_globalsxa: `%%`(externaddr_lst, var_1) + -- fun_tagsxa: `%%`(externaddr_lst, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation allocmodule_is_wf: `%%%%%%%`(v_store : store, v_module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule allocmodule_is_wf_0{v_store : store, v_module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**, ret_val : (store, moduleinst), var_4 : (store, moduleinst)}: + `%%%%%%%`(v_store, v_module, var_0, var_1, var_2, var_3, ret_val) + -- wf_store: `%`(v_store) + -- wf_module: `%`(v_module) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + -- (wf_ref: `%`(var_2))*{var_2 <- var_2} + -- (wf_ref: `%`(var_3))*{var_3 <- var_3}*{var_3 <- var_3} + -- if (ret_val = var_4) + -- wf_store: `%`(ret_val.0) + -- wf_moduleinst: `%`(ret_val.1) + -- fun_allocmodule: `%%%%%%%`(v_store, v_module, var_0, var_1, var_2, var_3, var_4) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_rundata_: `%%%`(dataidx, data, instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_rundata__case_0{x : uN, v_n : nat, b_lst : byte*}: + `%%%`(x, DATA_data(b_lst, PASSIVE_datamode), []) + -- if (v_n = |b_lst|) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_rundata__case_1{x : uN, v_n : nat, b_lst : byte*, y : uN, instr_lst : instr*}: + `%%%`(x, DATA_data(b_lst, ACTIVE_datamode(y, instr_lst)), instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(y, x) DATA_DROP_instr(x)]) + -- if (v_n = |b_lst|) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation rundata__is_wf: `%%%`(v_dataidx : dataidx, v_data : data, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule rundata__is_wf_0{v_dataidx : dataidx, v_data : data, ret_val : instr*, var_0 : instr*}: + `%%%`(v_dataidx, v_data, ret_val) + -- wf_uN: `%%`(32, v_dataidx) + -- wf_data: `%`(v_data) + -- if (ret_val = var_0) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + -- fun_rundata_: `%%%`(v_dataidx, v_data, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_runelem_: `%%%`(elemidx, elem, instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_0{x : uN, rt : reftype, v_n : nat, e_lst : expr*}: + `%%%`(x, ELEM_elem(rt, e_lst, PASSIVE_elemmode), []) + -- if (v_n = |e_lst|) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_1{x : uN, rt : reftype, v_n : nat, e_lst : expr*}: + `%%%`(x, ELEM_elem(rt, e_lst, DECLARE_elemmode), [ELEM_DROP_instr(x)]) + -- if (v_n = |e_lst|) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_2{x : uN, rt : reftype, v_n : nat, e_lst : expr*, y : uN, instr_lst : instr*}: + `%%%`(x, ELEM_elem(rt, e_lst, ACTIVE_elemmode(y, instr_lst)), instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(y, x) ELEM_DROP_instr(x)]) + -- if (v_n = |e_lst|) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation runelem__is_wf: `%%%`(v_elemidx : elemidx, v_elem : elem, ret_val : instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule runelem__is_wf_0{v_elemidx : elemidx, v_elem : elem, ret_val : instr*, var_0 : instr*}: + `%%%`(v_elemidx, v_elem, ret_val) + -- wf_uN: `%%`(32, v_elemidx) + -- wf_elem: `%`(v_elem) + -- if (ret_val = var_0) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + -- fun_runelem_: `%%%`(v_elemidx, v_elem, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation fun_evalexprs: `%%%`(state, expr*, (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule fun_evalexprs_case_0{z : state}: + `%%%`(z, [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule fun_evalexprs_case_1{z : state, v_expr : instr*, expr'_lst : expr*, v_ref : ref, z' : state, var_2 : (state, ref*), var_1 : (state, ref*), var_0 : (state, ref*)}: + `%%%`(z, [v_expr] ++ expr'_lst, (z'', [v_ref] ++ ref'_lst)) + -- Eval_expr: `%;%~>*%;%`(z, v_expr, z', [$val_ref(v_ref)]) + -- let{z'' : state, ref'_lst : ref*} (z'', ref'_lst) = var_0 + -- wf_state: `%`(z') + -- wf_state: `%`(var_1.0) + -- (wf_ref: `%`(iter_342))*{iter_342 <- var_2.1} + -- fun_evalexprs: `%%%`(z', expr'_lst, var_2) + -- fun_evalexprs: `%%%`(z', expr'_lst, var_1) + -- fun_evalexprs: `%%%`(z', expr'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 +relation evalexprs_is_wf: `%%%`(v_state : state, var_0 : expr*, ret_val : (state, ref*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.16 + rule evalexprs_is_wf_0{v_state : state, var_0 : expr*, ret_val : (state, ref*), var_1 : (state, ref*)}: + `%%%`(v_state, var_0, ret_val) + -- wf_state: `%`(v_state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- ret_val.1} + -- fun_evalexprs: `%%%`(v_state, var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation fun_evalexprss: `%%%`(state, expr**, (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule fun_evalexprss_case_0{z : state}: + `%%%`(z, [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule fun_evalexprss_case_1{z : state, expr_lst : expr*, expr'_lst_lst : expr**, var_5 : (state, ref**), var_4 : (state, ref**), var_3 : (state, ref*), var_2 : (state, ref*), var_1 : (state, ref**), var_0 : (state, ref*)}: + `%%%`(z, [expr_lst] ++ expr'_lst_lst, (z'', [ref_lst] ++ ref'_lst_lst)) + -- let{ref_lst : ref*, z' : state} (z', ref_lst) = var_0 + -- let{z'' : state, ref'_lst_lst : ref**} (z'', ref'_lst_lst) = var_1 + -- wf_state: `%`(var_2.0) + -- (wf_ref: `%`(iter_343))*{iter_343 <- var_3.1} + -- wf_state: `%`(var_4.0) + -- (wf_ref: `%`(iter_345))*{iter_345 <- iter_344}*{iter_344 <- var_5.1} + -- fun_evalexprss: `%%%`(z', expr'_lst_lst, var_5) + -- fun_evalexprss: `%%%`(z', expr'_lst_lst, var_4) + -- fun_evalexprs: `%%%`(z, expr_lst, var_3) + -- fun_evalexprs: `%%%`(z, expr_lst, var_2) + -- fun_evalexprss: `%%%`(z', expr'_lst_lst, var_1) + -- fun_evalexprs: `%%%`(z, expr_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 +relation evalexprss_is_wf: `%%%`(v_state : state, var_0 : expr**, ret_val : (state, ref**)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.6-167.17 + rule evalexprss_is_wf_0{v_state : state, var_0 : expr**, ret_val : (state, ref**), var_1 : (state, ref**)}: + `%%%`(v_state, var_0, ret_val) + -- wf_state: `%`(v_state) + -- (wf_instr: `%`(var_0))*{var_0 <- var_0}*{var_0 <- var_0}*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_state: `%`(ret_val.0) + -- (wf_ref: `%`(iter))*{iter <- iter}*{iter <- ret_val.1} + -- fun_evalexprss: `%%%`(v_state, var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule fun_evalglobals_case_0{z : state}: + `%%%%`(z, [], [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule fun_evalglobals_case_1{z : state, gt : globaltype, gt'_lst : globaltype*, v_expr : instr*, expr'_lst : expr*, v_val : val, z' : state, var_3 : (state, val*), var_2 : (state, val*), var_1 : (state, val*), var_0 : (store, globaladdr)}: + `%%%%`(z, [gt] ++ gt'_lst, [v_expr] ++ expr'_lst, (z'', [v_val] ++ val'_lst)) + -- Eval_expr: `%;%~>*%;%`(z, v_expr, z', [v_val]) + -- let{s : store, f : frame} mk_state_state(s, f) = z' + -- let{s' : store, a : addr} (s', a) = var_0 + -- let{z'' : state, val'_lst : val*} (z'', val'_lst) = var_1 + -- wf_state: `%`(z') + -- wf_store: `%`(var_0.0) + -- wf_state: `%`(var_2.0) + -- (wf_val: `%`(iter_346))*{iter_346 <- var_3.1} + -- wf_state: `%`(mk_state_state(s, f)) + -- wf_state: `%`(mk_state_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) + -- fun_evalglobals: `%%%%`(mk_state_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'_lst, expr'_lst, var_3) + -- fun_evalglobals: `%%%%`(mk_state_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'_lst, expr'_lst, var_2) + -- fun_evalglobals: `%%%%`(mk_state_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'_lst, expr'_lst, var_1) + -- fun_allocglobal: `%%%%`(s, gt, v_val, var_0) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 +relation evalglobals_is_wf: `%%%%`(v_state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.6-174.18 + rule evalglobals_is_wf_0{v_state : state, var_0 : globaltype*, var_1 : expr*, ret_val : (state, val*), var_2 : (state, val*)}: + `%%%%`(v_state, var_0, var_1, ret_val) + -- wf_state: `%`(v_state) + -- (wf_globaltype: `%`(var_0))*{var_0 <- var_0} + -- (wf_instr: `%`(var_1))*{var_1 <- var_1}*{var_1 <- var_1} + -- if (ret_val = var_2) + -- wf_state: `%`(ret_val.0) + -- (wf_val: `%`(iter))*{iter <- ret_val.1} + -- fun_evalglobals: `%%%%`(v_state, var_0, var_1, var_2) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_instantiate: `%%%%`(store, module, externaddr*, config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_instantiate_case_0{s : store, v_module : module, externaddr_lst : externaddr*, xt_I_lst : externtype*, xt_E_lst : externtype*, expr_G_lst : expr*, globaltype_lst : globaltype*, expr_T_lst : expr*, tabletype_lst : tabletype*, byte_lst_lst : byte**, datamode_lst : datamode*, elemmode_lst : elemmode*, expr_E_lst_lst : expr**, reftype_lst : reftype*, x_opt : idx?, moduleinst_0 : moduleinst, z : state, i_D : nat, i_E : nat, var_23 : funcaddr*, var_22 : globaladdr*, var_21 : deftype*, var_20_lst : instr**, var_19_lst : instr**, var_18_lst : instr**, var_17_lst : instr**, var_16 : (store, moduleinst), var_15 : (store, moduleinst), var_14 : (state, ref**), var_13 : (state, ref**), var_12 : (state, ref*), var_11 : (state, ref*), var_10 : (state, val*), var_9 : (state, val*), var_8_lst : instr**, var_7_lst : instr**, var_6 : (store, moduleinst), var_5 : (state, ref**), var_4 : (state, ref*), var_3 : (state, val*), var_2 : funcaddr*, var_1 : globaladdr*, var_0 : deftype*}: + `%%%%`(s, v_module, externaddr_lst, mk_config_config(mk_state_state(s'''', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt))) + -- Module_ok: `|-%:%`(v_module, mk_moduletype_moduletype(xt_I_lst, xt_E_lst)) + -- (Externaddr_ok: `%|-%:%`(s, externaddr_8, xt_I_2))*{externaddr_8 <- externaddr_lst, xt_I_2 <- xt_I_lst} + -- if (|externaddr_lst| = |xt_I_lst|) + -- let{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*} MODULE_module(mk_list_list(type_lst), mk_list_list(import_lst), mk_list_list(tag_lst), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list(func_lst), mk_list_list(data_lst), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst)) = v_module + -- if (global_lst = GLOBAL_global(globaltype_129, expr_G_3)*{expr_G_3 <- expr_G_lst, globaltype_129 <- globaltype_lst}) + -- if (table_lst = TABLE_table(tabletype_163, expr_T_3)*{expr_T_3 <- expr_T_lst, tabletype_163 <- tabletype_lst}) + -- if (data_lst = DATA_data(byte_lst_118, datamode_116)*{byte_lst_118 <- byte_lst_lst, datamode_116 <- datamode_lst}) + -- if (elem_lst = ELEM_elem(reftype_516, expr_E_lst_3, elemmode_237)*{elemmode_237 <- elemmode_lst, expr_E_lst_3 <- expr_E_lst_lst, reftype_516 <- reftype_lst}) + -- if (start_opt = START_start(x_8)?{x_8 <- x_opt}) + -- if (moduleinst_0 = {TYPES var_0, TAGS [], GLOBALS var_1, MEMS [], TABLES [], FUNCS var_2 ++ (|s.FUNCS_store| + i_F_2)^(i_F_2<|func_lst|){}, DATAS [], ELEMS [], EXPORTS []}) + -- if (z = mk_state_state(s, {LOCALS [], MODULE moduleinst_0})) + -- let{z' : state, val_G_lst : val*} (z', val_G_lst) = var_3 + -- let{z'' : state, ref_T_lst : ref*} (z'', ref_T_lst) = var_4 + -- let{z''' : state, ref_E_lst_lst : ref**} (z''', ref_E_lst_lst) = var_5 + -- let{s''' : store, f : frame} mk_state_state(s''', f) = z''' + -- let{s'''' : store, v_moduleinst : moduleinst} (s'''', v_moduleinst) = var_6 + -- let{instr_D_lst : instr*} instr_D_lst = $concat_(syntax instr, var_7_lst) + -- let{instr_E_lst : instr*} instr_E_lst = $concat_(syntax instr, var_8_lst) + -- let{instr_S_opt : instr?} instr_S_opt = CALL_instr(x_9)?{x_9 <- x_opt} + -- wf_state: `%`(z) + -- wf_state: `%`(var_9.0) + -- (wf_val: `%`(iter_347))*{iter_347 <- var_10.1} + -- wf_state: `%`(var_11.0) + -- (wf_ref: `%`(iter_348))*{iter_348 <- var_12.1} + -- wf_state: `%`(var_13.0) + -- (wf_ref: `%`(iter_350))*{iter_350 <- iter_349}*{iter_349 <- var_14.1} + -- wf_store: `%`(var_15.0) + -- wf_moduleinst: `%`(var_16.1) + -- (wf_instr: `%`(iter_351))*{iter_351 <- $concat_(syntax instr, var_17_lst)} + -- (wf_instr: `%`(iter_352))*{iter_352 <- var_18}^(i_D_3<|data_lst|){var_18 <- var_18_lst} + -- (wf_instr: `%`(iter_353))*{iter_353 <- $concat_(syntax instr, var_19_lst)} + -- (wf_instr: `%`(iter_354))*{iter_354 <- var_20}^(i_E_3<|elem_lst|){var_20 <- var_20_lst} + -- wf_moduletype: `%`(mk_moduletype_moduletype(xt_I_lst, xt_E_lst)) + -- wf_module: `%`(MODULE_module(mk_list_list(type_lst), mk_list_list(import_lst), mk_list_list(tag_lst), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list(func_lst), mk_list_list(data_lst), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst))) + -- (wf_global: `%`(GLOBAL_global(globaltype_134, expr_G_7)))*{expr_G_7 <- expr_G_lst, globaltype_134 <- globaltype_lst} + -- if (|expr_G_lst| = |globaltype_lst|) + -- (wf_table: `%`(TABLE_table(tabletype_165, expr_T_7)))*{expr_T_7 <- expr_T_lst, tabletype_165 <- tabletype_lst} + -- if (|expr_T_lst| = |tabletype_lst|) + -- (wf_data: `%`(DATA_data(byte_lst_120, datamode_118)))*{byte_lst_120 <- byte_lst_lst, datamode_118 <- datamode_lst} + -- if (|byte_lst_lst| = |datamode_lst|) + -- (wf_elem: `%`(ELEM_elem(reftype_518, expr_E_lst_7, elemmode_239)))*{elemmode_239 <- elemmode_lst, expr_E_lst_7 <- expr_E_lst_lst, reftype_518 <- reftype_lst} + -- if (|elemmode_lst| = |expr_E_lst_lst|) + -- if (|elemmode_lst| = |reftype_lst|) + -- (wf_start: `%`(START_start(x_10)))?{x_10 <- x_opt} + -- wf_moduleinst: `%`({TYPES var_21, TAGS [], GLOBALS var_22, MEMS [], TABLES [], FUNCS var_23 ++ (|s.FUNCS_store| + i_F_3)^(i_F_3<|func_lst|){}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(mk_state_state(s, {LOCALS [], MODULE moduleinst_0})) + -- wf_state: `%`(mk_state_state(s''', f)) + -- (wf_uN: `%%`(32, mk_uN_uN(i_D_4)))^(i_D_4<|data_lst|){} + -- (wf_uN: `%%`(32, mk_uN_uN(i_E_4)))^(i_E_4<|elem_lst|){} + -- (wf_instr: `%`(CALL_instr(x_11)))?{x_11 <- x_opt} + -- fun_funcsxa: `%%`(externaddr_lst, var_23) + -- fun_globalsxa: `%%`(externaddr_lst, var_22) + -- fun_alloctypes: `%%`(type_lst, var_21) + -- (fun_runelem_: `%%%`(mk_uN_elemidx(i_E_3), elem_lst[i_E_3], var_20))^(i_E_3<|elem_lst|){var_20 <- var_20_lst} + -- (if (i_E_3 < |elem_lst|))^(i_E_3<|elem_lst|){} + -- (fun_runelem_: `%%%`(mk_uN_elemidx(i_E_2), elem_lst[i_E_2], var_19))^(i_E_2<|elem_lst|){var_19 <- var_19_lst} + -- (if (i_E_2 < |elem_lst|))^(i_E_2<|elem_lst|){} + -- (fun_rundata_: `%%%`(mk_uN_dataidx(i_D_3), data_lst[i_D_3], var_18))^(i_D_3<|data_lst|){var_18 <- var_18_lst} + -- (if (i_D_3 < |data_lst|))^(i_D_3<|data_lst|){} + -- (fun_rundata_: `%%%`(mk_uN_dataidx(i_D_2), data_lst[i_D_2], var_17))^(i_D_2<|data_lst|){var_17 <- var_17_lst} + -- (if (i_D_2 < |data_lst|))^(i_D_2<|data_lst|){} + -- fun_allocmodule: `%%%%%%%`(s''', v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst, var_16) + -- fun_allocmodule: `%%%%%%%`(s''', v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst, var_15) + -- fun_evalexprss: `%%%`(z'', expr_E_lst_lst, var_14) + -- fun_evalexprss: `%%%`(z'', expr_E_lst_lst, var_13) + -- fun_evalexprs: `%%%`(z', expr_T_lst, var_12) + -- fun_evalexprs: `%%%`(z', expr_T_lst, var_11) + -- fun_evalglobals: `%%%%`(z, globaltype_lst, expr_G_lst, var_10) + -- fun_evalglobals: `%%%%`(z, globaltype_lst, expr_G_lst, var_9) + -- (fun_runelem_: `%%%`(mk_uN_elemidx(i_E_1), elem_lst[i_E_1], var_8))^(i_E_1<|elem_lst|){var_8 <- var_8_lst} + -- (if (i_E_1 < |elem_lst|))^(i_E_1<|elem_lst|){} + -- (fun_rundata_: `%%%`(mk_uN_dataidx(i_D_1), data_lst[i_D_1], var_7))^(i_D_1<|data_lst|){var_7 <- var_7_lst} + -- (if (i_D_1 < |data_lst|))^(i_D_1<|data_lst|){} + -- fun_allocmodule: `%%%%%%%`(s''', v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst, var_6) + -- fun_evalexprss: `%%%`(z'', expr_E_lst_lst, var_5) + -- fun_evalexprs: `%%%`(z', expr_T_lst, var_4) + -- fun_evalglobals: `%%%%`(z, globaltype_lst, expr_G_lst, var_3) + -- fun_funcsxa: `%%`(externaddr_lst, var_2) + -- fun_globalsxa: `%%`(externaddr_lst, var_1) + -- fun_alloctypes: `%%`(type_lst, var_0) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation instantiate_is_wf: `%%%%`(v_store : store, v_module : module, var_0 : externaddr*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule instantiate_is_wf_0{v_store : store, v_module : module, var_0 : externaddr*, ret_val : config, var_1 : config}: + `%%%%`(v_store, v_module, var_0, ret_val) + -- wf_store: `%`(v_store) + -- wf_module: `%`(v_module) + -- if (ret_val = var_1) + -- wf_config: `%`(ret_val) + -- fun_instantiate: `%%%%`(v_store, v_module, var_0, var_1) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_invoke: `%%%%`(store, funcaddr, val*, config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_invoke_case_0{s : store, v_funcaddr : nat, val_lst : val*, t_1_lst : valtype*, t_2_lst : valtype*}: + `%%%%`(s, v_funcaddr, val_lst, mk_config_config(mk_state_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(v_val)*{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(v_funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[v_funcaddr].TYPE_funcinst))])) + -- Expand: `%~~%`(s.FUNCS_store[v_funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- if (v_funcaddr < |s.FUNCS_store|) + -- (Val_ok: `%|-%:%`(s, val_2, t_1_5))*{t_1_5 <- t_1_lst, val_2 <- val_lst} + -- if (|t_1_lst| = |val_lst|) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation invoke_is_wf: `%%%%`(v_store : store, v_funcaddr : funcaddr, var_0 : val*, ret_val : config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule invoke_is_wf_0{v_store : store, v_funcaddr : funcaddr, var_0 : val*, ret_val : config, var_1 : config}: + `%%%%`(v_store, v_funcaddr, var_0, ret_val) + -- wf_store: `%`(v_store) + -- (wf_val: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_config: `%`(ret_val) + -- fun_invoke: `%%%%`(v_store, v_funcaddr, var_0, var_1) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax castop = (null?, null?) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax memidxop = (memidx, memarg) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax startopt = start* + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax code = (local*, expr) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax nopt = u32* + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +def $ieee_(v_N : N, rat : rat) : fNmag + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation ieee__is_wf: `%%%`(v_N : N, rat : rat, ret_val : fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule ieee__is_wf_0{v_N : N, rat : rat, ret_val : fNmag}: + `%%%`(v_N, rat, ret_val) + -- if (ret_val = $ieee_(v_N, rat)) + -- wf_fNmag: `%%`(v_N, ret_val) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax idctxt = +{ + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation wf_idctxt: `%`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) + -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} + -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} + -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} + -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} + -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} + -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} + -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} + -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} + -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} + -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax I = idctxt + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation fun_concat_idctxt: `%%`(idctxt*, idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule fun_concat_idctxt_case_0: + `%%`([], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule fun_concat_idctxt_case_1{v_I : idctxt, I'_lst : I*, var_0 : idctxt}: + `%%`([v_I] ++ I'_lst, v_I +++ var_0) + -- fun_concat_idctxt: `%%`(I'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 +relation concat_idctxt_is_wf: `%%`(var_0 : idctxt*, ret_val : idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.6-154.20 + rule concat_idctxt_is_wf_0{var_0 : idctxt*, ret_val : idctxt, var_1 : idctxt}: + `%%`(var_0, ret_val) + -- (wf_idctxt: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- wf_idctxt: `%`(ret_val) + -- fun_concat_idctxt: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation Idctxt_ok: `|-%:OK`(idctxt) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule mk_Idctxt_ok{v_I : I, field_lst_lst : char**}: + `|-%:OK`(v_I) + -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.TYPES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.TAGS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.GLOBALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.MEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.TABLES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.FUNCS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.DATAS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.ELEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.LOCALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.LABELS_I)) + -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(mk_name_name(field_lst))])))*{field_lst <- field_lst_lst} + -- if ([?(mk_name_name(field_lst))*{field_lst <- field_lst_lst}] = v_I.FIELDS_I) + -- wf_idctxt: `%`(v_I) + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.TYPES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.TAGS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.GLOBALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.MEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.TABLES_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.FUNCS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.DATAS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.ELEMS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.LOCALS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, v_I.LABELS_I)} + -- (wf_name: `%`(iter))*{iter <- $concatopt_(syntax name, [?(mk_name_name(field_lst))])}*{field_lst <- field_lst_lst} + -- (wf_name: `%`(mk_name_name(field_lst)))*{field_lst <- field_lst_lst} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $dots : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +syntax decl = + | TYPE(v_rectype : rectype) + | IMPORT(v_name : name, v_name : name, v_externtype : externtype) + | TAG(v_tagtype : tagtype) + | GLOBAL(v_globaltype : globaltype, v_expr : expr) + | MEMORY(v_memtype : memtype) + | TABLE(v_tabletype : tabletype, v_expr : expr) + | FUNC(v_typeidx : typeidx, local_lst : local*, v_expr : expr) + | DATA(byte_lst : byte*, v_datamode : datamode) + | ELEM(v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode) + | START(v_funcidx : funcidx) + | EXPORT(v_name : name, v_externidx : externidx) + +def $decl_data(var_0 : data) : decl + def $decl_data{x0 : byte*, x1 : datamode}(DATA_data(x0, x1)) = DATA_decl(x0, x1) + +def $decl_elem(var_0 : elem) : decl + def $decl_elem{x0 : reftype, x1 : expr*, x2 : elemmode}(ELEM_elem(x0, x1, x2)) = ELEM_decl(x0, x1, x2) + +def $decl_export(var_0 : export) : decl + def $decl_export{x0 : name, x1 : externidx}(EXPORT_export(x0, x1)) = EXPORT_decl(x0, x1) + +def $decl_func(var_0 : func) : decl + def $decl_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_decl(x0, x1, x2) + +def $decl_global(var_0 : global) : decl + def $decl_global{x0 : globaltype, x1 : expr}(GLOBAL_global(x0, x1)) = GLOBAL_decl(x0, x1) + +def $decl_import(var_0 : import) : decl + def $decl_import{x0 : name, x1 : name, x2 : externtype}(IMPORT_import(x0, x1, x2)) = IMPORT_decl(x0, x1, x2) + +def $decl_mem(var_0 : mem) : decl + def $decl_mem{x0 : memtype}(MEMORY_mem(x0)) = MEMORY_decl(x0) + +def $decl_start(var_0 : start) : decl + def $decl_start{x0 : funcidx}(START_start(x0)) = START_decl(x0) + +def $decl_table(var_0 : table) : decl + def $decl_table{x0 : tabletype, x1 : expr}(TABLE_table(x0, x1)) = TABLE_decl(x0, x1) + +def $decl_tag(var_0 : tag) : decl + def $decl_tag{x0 : tagtype}(TAG_tag(x0)) = TAG_decl(x0) + +def $decl_type(var_0 : type) : decl + def $decl_type{x0 : rectype}(TYPE_type(x0)) = TYPE_decl(x0) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +relation wf_decl: `%`(decl) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_0{v_rectype : rectype}: + `%`(TYPE_decl(v_rectype)) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_1{v_name : name, name_0 : name, v_externtype : externtype}: + `%`(IMPORT_decl(v_name, name_0, v_externtype)) + -- wf_name: `%`(v_name) + -- wf_name: `%`(name_0) + -- wf_externtype: `%`(v_externtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_2{v_tagtype : tagtype}: + `%`(TAG_decl(v_tagtype)) + -- wf_typeuse: `%`(v_tagtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_3{v_globaltype : globaltype, v_expr : expr}: + `%`(GLOBAL_decl(v_globaltype, v_expr)) + -- wf_globaltype: `%`(v_globaltype) + -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_4{v_memtype : memtype}: + `%`(MEMORY_decl(v_memtype)) + -- wf_memtype: `%`(v_memtype) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_5{v_tabletype : tabletype, v_expr : expr}: + `%`(TABLE_decl(v_tabletype, v_expr)) + -- wf_tabletype: `%`(v_tabletype) + -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_6{v_typeidx : typeidx, local_lst : local*, v_expr : expr}: + `%`(FUNC_decl(v_typeidx, local_lst, v_expr)) + -- wf_uN: `%%`(32, v_typeidx) + -- (wf_local: `%`(v_local))*{v_local <- local_lst} + -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_7{byte_lst : byte*, v_datamode : datamode}: + `%`(DATA_decl(byte_lst, v_datamode)) + -- (wf_byte: `%`(v_byte))*{v_byte <- byte_lst} + -- wf_datamode: `%`(v_datamode) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_8{v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode}: + `%`(ELEM_decl(v_reftype, expr_lst, v_elemmode)) + -- wf_reftype: `%`(v_reftype) + -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr}*{v_expr <- expr_lst} + -- wf_elemmode: `%`(v_elemmode) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_9{v_funcidx : funcidx}: + `%`(START_decl(v_funcidx)) + -- wf_uN: `%%`(32, v_funcidx) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule decl_case_10{v_name : name, v_externidx : externidx}: + `%`(EXPORT_decl(v_name, v_externidx)) + -- wf_name: `%`(v_name) + -- wf_externidx: `%`(v_externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 +relation fun_typesd: `%%`(decl*, type*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_1{v_rectype : rectype, decl'_lst : decl*, var_0 : type*}: + `%%`([TYPE_decl(v_rectype)] ++ decl'_lst, [TYPE_type(v_rectype)] ++ var_0) + -- fun_typesd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.6-258.13 + rule fun_typesd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : type*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_typesd: `%%`(decl'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation fun_importsd: `%%`(decl*, import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_1{v_name : name, name_0 : name, v_externtype : externtype, decl'_lst : decl*, var_0 : import*}: + `%%`([IMPORT_decl(v_name, name_0, v_externtype)] ++ decl'_lst, [IMPORT_import(v_name, name_0, v_externtype)] ++ var_0) + -- fun_importsd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule fun_importsd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : import*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_importsd: `%%`(decl'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 +relation importsd_is_wf: `%%`(var_0 : decl*, ret_val : import*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.6-259.15 + rule importsd_is_wf_0{var_0 : decl*, ret_val : import*, var_1 : import*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_import: `%`(ret_val))*{ret_val <- ret_val} + -- fun_importsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation fun_tagsd: `%%`(decl*, tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_1{v_tagtype : tagtype, decl'_lst : decl*, var_0 : tag*}: + `%%`([TAG_decl(v_tagtype)] ++ decl'_lst, [TAG_tag(v_tagtype)] ++ var_0) + -- fun_tagsd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule fun_tagsd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : tag*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_tagsd: `%%`(decl'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 +relation tagsd_is_wf: `%%`(var_0 : decl*, ret_val : tag*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.6-260.12 + rule tagsd_is_wf_0{var_0 : decl*, ret_val : tag*, var_1 : tag*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_tag: `%`(ret_val))*{ret_val <- ret_val} + -- fun_tagsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation fun_globalsd: `%%`(decl*, global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_1{v_globaltype : globaltype, v_expr : expr, decl'_lst : decl*, var_0 : global*}: + `%%`([GLOBAL_decl(v_globaltype, v_expr)] ++ decl'_lst, [GLOBAL_global(v_globaltype, v_expr)] ++ var_0) + -- fun_globalsd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule fun_globalsd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : global*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_globalsd: `%%`(decl'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 +relation globalsd_is_wf: `%%`(var_0 : decl*, ret_val : global*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.6-261.15 + rule globalsd_is_wf_0{var_0 : decl*, ret_val : global*, var_1 : global*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_global: `%`(ret_val))*{ret_val <- ret_val} + -- fun_globalsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation fun_memsd: `%%`(decl*, mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_1{v_memtype : memtype, decl'_lst : decl*, var_0 : mem*}: + `%%`([MEMORY_decl(v_memtype)] ++ decl'_lst, [MEMORY_mem(v_memtype)] ++ var_0) + -- fun_memsd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule fun_memsd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : mem*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_memsd: `%%`(decl'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 +relation memsd_is_wf: `%%`(var_0 : decl*, ret_val : mem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.6-262.12 + rule memsd_is_wf_0{var_0 : decl*, ret_val : mem*, var_1 : mem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_mem: `%`(ret_val))*{ret_val <- ret_val} + -- fun_memsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation fun_tablesd: `%%`(decl*, table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_1{v_tabletype : tabletype, v_expr : expr, decl'_lst : decl*, var_0 : table*}: + `%%`([TABLE_decl(v_tabletype, v_expr)] ++ decl'_lst, [TABLE_table(v_tabletype, v_expr)] ++ var_0) + -- fun_tablesd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule fun_tablesd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : table*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_tablesd: `%%`(decl'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 +relation tablesd_is_wf: `%%`(var_0 : decl*, ret_val : table*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.6-263.14 + rule tablesd_is_wf_0{var_0 : decl*, ret_val : table*, var_1 : table*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_table: `%`(ret_val))*{ret_val <- ret_val} + -- fun_tablesd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation fun_funcsd: `%%`(decl*, func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_1{v_typeidx : typeidx, local_lst : local*, v_expr : expr, decl'_lst : decl*, var_0 : func*}: + `%%`([FUNC_decl(v_typeidx, local_lst, v_expr)] ++ decl'_lst, [FUNC_func(v_typeidx, local_lst, v_expr)] ++ var_0) + -- fun_funcsd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule fun_funcsd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : func*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_funcsd: `%%`(decl'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 +relation funcsd_is_wf: `%%`(var_0 : decl*, ret_val : func*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.6-264.13 + rule funcsd_is_wf_0{var_0 : decl*, ret_val : func*, var_1 : func*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_func: `%`(ret_val))*{ret_val <- ret_val} + -- fun_funcsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation fun_datasd: `%%`(decl*, data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_1{byte_lst : byte*, v_datamode : datamode, decl'_lst : decl*, var_0 : data*}: + `%%`([DATA_decl(byte_lst, v_datamode)] ++ decl'_lst, [DATA_data(byte_lst, v_datamode)] ++ var_0) + -- fun_datasd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule fun_datasd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : data*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_datasd: `%%`(decl'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 +relation datasd_is_wf: `%%`(var_0 : decl*, ret_val : data*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.6-265.13 + rule datasd_is_wf_0{var_0 : decl*, ret_val : data*, var_1 : data*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_data: `%`(ret_val))*{ret_val <- ret_val} + -- fun_datasd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation fun_elemsd: `%%`(decl*, elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_1{v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode, decl'_lst : decl*, var_0 : elem*}: + `%%`([ELEM_decl(v_reftype, expr_lst, v_elemmode)] ++ decl'_lst, [ELEM_elem(v_reftype, expr_lst, v_elemmode)] ++ var_0) + -- fun_elemsd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule fun_elemsd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : elem*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_elemsd: `%%`(decl'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 +relation elemsd_is_wf: `%%`(var_0 : decl*, ret_val : elem*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.6-266.13 + rule elemsd_is_wf_0{var_0 : decl*, ret_val : elem*, var_1 : elem*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_elem: `%`(ret_val))*{ret_val <- ret_val} + -- fun_elemsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation fun_startsd: `%%`(decl*, start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_1{v_funcidx : funcidx, decl'_lst : decl*, var_0 : start*}: + `%%`([START_decl(v_funcidx)] ++ decl'_lst, [START_start(v_funcidx)] ++ var_0) + -- fun_startsd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule fun_startsd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : start*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_startsd: `%%`(decl'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 +relation startsd_is_wf: `%%`(var_0 : decl*, ret_val : start*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.6-267.14 + rule startsd_is_wf_0{var_0 : decl*, ret_val : start*, var_1 : start*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_start: `%`(ret_val))*{ret_val <- ret_val} + -- fun_startsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation fun_exportsd: `%%`(decl*, export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_1{v_name : name, v_externidx : externidx, decl'_lst : decl*, var_0 : export*}: + `%%`([EXPORT_decl(v_name, v_externidx)] ++ decl'_lst, [EXPORT_export(v_name, v_externidx)] ++ var_0) + -- fun_exportsd: `%%`(decl'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule fun_exportsd_case_2{v_decl : decl, decl'_lst : decl*, var_0 : export*}: + `%%`([v_decl] ++ decl'_lst, var_0) + -- fun_exportsd: `%%`(decl'_lst, var_0) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 +relation exportsd_is_wf: `%%`(var_0 : decl*, ret_val : export*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.6-268.15 + rule exportsd_is_wf_0{var_0 : decl*, ret_val : export*, var_1 : export*}: + `%%`(var_0, ret_val) + -- (wf_decl: `%`(var_0))*{var_0 <- var_0} + -- if (ret_val = var_1) + -- (wf_export: `%`(ret_val))*{ret_val <- ret_val} + -- fun_exportsd: `%%`(var_0, var_1) +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +relation fun_ordered: `%%`(decl*, bool) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule fun_ordered_case_0{decl_lst : decl*, var_1 : import*, var_0 : import*}: + `%%`(decl_lst, true) + -- if (var_0 = []) + -- (wf_import: `%`(iter_355))*{iter_355 <- var_1} + -- fun_importsd: `%%`(decl_lst, var_1) + -- fun_importsd: `%%`(decl_lst, var_0) + + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + rule fun_ordered_case_1{v_name : name, name_0 : name, v_externtype : externtype, decl_1_lst : decl*, decl_2_lst : decl*, var_5 : func*, var_4 : table*, var_3 : mem*, var_2 : global*, var_1 : tag*, var_0 : import*}: + `%%`(decl_1_lst ++ [IMPORT_decl(v_name, name_0, v_externtype)] ++ decl_2_lst, ((((((var_0 = []) /\ (var_1 = [])) /\ (var_2 = [])) /\ (var_3 = [])) /\ (var_4 = [])) /\ (var_5 = []))) + -- fun_funcsd: `%%`(decl_1_lst, var_5) + -- fun_tablesd: `%%`(decl_1_lst, var_4) + -- fun_memsd: `%%`(decl_1_lst, var_3) + -- fun_globalsd: `%%`(decl_1_lst, var_2) + -- fun_tagsd: `%%`(decl_1_lst, var_1) + -- fun_importsd: `%%`(decl_1_lst, var_0) + +;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec +relation Context_ok: `|-%:OK`(context) + ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec + rule mk_Context_ok{C : context, v_n : n, dt_lst : deftype*, jt_lst : tagtype*, gt_lst : globaltype*, mt_lst : memtype*, tt_lst : tabletype*, dt_F_lst : deftype*, ok_lst : datatype*, et_lst : elemtype*, lct_lst : localtype*, rt_lst : reftype*, rt'_opt : reftype?, x_lst : idx*, v_m : m, st_lst : subtype*, C_0 : context, t_1_lst : valtype*, t_2_lst : valtype*}: + `|-%:OK`(C) + -- if (C = {TYPES dt_lst, TAGS jt_lst, GLOBALS gt_lst, MEMS mt_lst, TABLES tt_lst, FUNCS dt_F_lst, DATAS ok_lst, ELEMS et_lst, LOCALS lct_lst, LABELS [mk_list_resulttype($valtype_reftype(rt)*{rt <- rt_lst})], RETURN ?(mk_list_resulttype(lift($valtype_reftype(rt')?{rt' <- rt'_opt}))), REFS x_lst, RECS st_lst}) + -- if (C_0 = {TYPES dt_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (Deftype_ok: `%|-%:OK`({TYPES dt_lst[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt))^(i%`_comptype(mk_list_resulttype([t_1]), mk_list_resulttype([t_2]))))*{dt_F <- dt_F_lst, t_1 <- t_1_lst, t_2 <- t_2_lst} + -- if (|dt_F_lst| = |t_1_lst|) + -- if (|dt_F_lst| = |t_2_lst|) + -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- et_lst} + -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- lct_lst} + -- (Resulttype_ok: `%|-%:OK`(C_0, mk_list_resulttype([$valtype_reftype(rt)])))*{rt <- rt_lst} + -- (Resulttype_ok: `%|-%:OK`(C_0, mk_list_resulttype([$valtype_reftype(rt')])))?{rt' <- rt'_opt} + -- (if ($proj_uN_0(x).0 < |dt_F_lst|))*{x <- x_lst} + -- wf_context: `%`(C) + -- wf_context: `%`(C_0) + -- wf_context: `%`({TYPES dt_lst, TAGS jt_lst, GLOBALS gt_lst, MEMS mt_lst, TABLES tt_lst, FUNCS dt_F_lst, DATAS ok_lst, ELEMS et_lst, LOCALS lct_lst, LABELS [mk_list_resulttype($valtype_reftype(rt)*{rt <- rt_lst})], RETURN ?(mk_list_resulttype(lift($valtype_reftype(rt')?{rt' <- rt'_opt}))), REFS x_lst, RECS st_lst}) + -- wf_context: `%`({TYPES dt_lst, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (wf_context: `%`({TYPES dt_lst[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}))^(i%`_comptype(mk_list_resulttype([t_1]), mk_list_resulttype([t_2]))))*{t_1 <- t_1_lst, t_2 <- t_2_lst} + -- if (|t_1_lst| = |t_2_lst|) + -- if (v_n = |dt_lst|) + -- if (v_m = |st_lst|) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Localval_ok: `%|-%:%`(store, val?, localtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule set{s : store, v_val : val, t : valtype}: + `%|-%:%`(s, ?(v_val), mk_localtype_localtype(SET_init, t)) + -- Val_ok: `%|-%:%`(s, v_val, t) + -- wf_store: `%`(s) + -- wf_val: `%`(v_val) + -- wf_localtype: `%`(mk_localtype_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule unset{s : store}: + `%|-%:%`(s, ?(), mk_localtype_localtype(UNSET_init, BOT_valtype)) + -- wf_store: `%`(s) + -- wf_localtype: `%`(mk_localtype_localtype(UNSET_init, BOT_valtype)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Datainst_ok: `%|-%:%`(store, datainst, datatype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Datainst_ok{s : store, b_lst : byte*}: + `%|-%:%`(s, {BYTES b_lst}, OK_datatype) + -- wf_store: `%`(s) + -- wf_datainst: `%`({BYTES b_lst}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Eleminst_ok{s : store, rt : reftype, ref_lst : ref*}: + `%|-%:%`(s, {TYPE rt, REFS ref_lst}, rt) + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- (Ref_ok: `%|-%:%`(s, v_ref, rt))*{v_ref <- ref_lst} + -- wf_store: `%`(s) + -- wf_eleminst: `%`({TYPE rt, REFS ref_lst}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exportinst_ok: `%|-%:OK`(store, exportinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Exportinst_ok{s : store, nm : name, xa : externaddr, xt : externtype}: + `%|-%:OK`(s, {NAME nm, ADDR xa}) + -- Externaddr_ok: `%|-%:%`(s, xa, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_exportinst: `%`({NAME nm, ADDR xa}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Moduleinst_ok{s : store, deftype_lst : deftype*, tagaddr_lst : tagaddr*, globaladdr_lst : globaladdr*, memaddr_lst : memaddr*, tableaddr_lst : tableaddr*, funcaddr_lst : funcaddr*, dataaddr_lst : dataaddr*, elemaddr_lst : elemaddr*, exportinst_lst : exportinst*, tagtype_lst : tagtype*, globaltype_lst : globaltype*, memtype_lst : memtype*, tabletype_lst : tabletype*, deftype_F_lst : deftype*, datatype_lst : datatype*, elemtype_lst : elemtype*, subtype_lst : subtype*}: + `%|-%:%`(s, {TYPES deftype_lst, TAGS tagaddr_lst, GLOBALS globaladdr_lst, MEMS memaddr_lst, TABLES tableaddr_lst, FUNCS funcaddr_lst, DATAS dataaddr_lst, ELEMS elemaddr_lst, EXPORTS exportinst_lst}, {TYPES deftype_lst, TAGS tagtype_lst, GLOBALS globaltype_lst, MEMS memtype_lst, TABLES tabletype_lst, FUNCS deftype_F_lst, DATAS datatype_lst, ELEMS elemtype_lst, LOCALS [], LABELS [], RETURN ?(), REFS mk_uN_funcidx(i)^(i<|funcaddr_lst|){}, RECS subtype_lst}) + -- (Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, v_deftype))*{v_deftype <- deftype_lst} + -- (Externaddr_ok: `%|-%:%`(s, TAG_externaddr(v_tagaddr), TAG_externtype(v_tagtype)))*{v_tagaddr <- tagaddr_lst, v_tagtype <- tagtype_lst} + -- if (|tagaddr_lst| = |tagtype_lst|) + -- (Externaddr_ok: `%|-%:%`(s, GLOBAL_externaddr(v_globaladdr), GLOBAL_externtype(v_globaltype)))*{v_globaladdr <- globaladdr_lst, v_globaltype <- globaltype_lst} + -- if (|globaladdr_lst| = |globaltype_lst|) + -- (Externaddr_ok: `%|-%:%`(s, FUNC_externaddr(v_funcaddr), FUNC_externtype($typeuse_deftype(deftype_F))))*{deftype_F <- deftype_F_lst, v_funcaddr <- funcaddr_lst} + -- if (|deftype_F_lst| = |funcaddr_lst|) + -- (Externaddr_ok: `%|-%:%`(s, MEM_externaddr(v_memaddr), MEM_externtype(v_memtype)))*{v_memaddr <- memaddr_lst, v_memtype <- memtype_lst} + -- if (|memaddr_lst| = |memtype_lst|) + -- (Externaddr_ok: `%|-%:%`(s, TABLE_externaddr(v_tableaddr), TABLE_externtype(v_tabletype)))*{v_tableaddr <- tableaddr_lst, v_tabletype <- tabletype_lst} + -- if (|tableaddr_lst| = |tabletype_lst|) + -- (Datainst_ok: `%|-%:%`(s, s.DATAS_store[v_dataaddr], v_datatype))*{v_dataaddr <- dataaddr_lst, v_datatype <- datatype_lst} + -- if (|dataaddr_lst| = |datatype_lst|) + -- (if (v_dataaddr < |s.DATAS_store|))*{v_dataaddr <- dataaddr_lst} + -- (Eleminst_ok: `%|-%:%`(s, s.ELEMS_store[v_elemaddr], v_elemtype))*{v_elemaddr <- elemaddr_lst, v_elemtype <- elemtype_lst} + -- if (|elemaddr_lst| = |elemtype_lst|) + -- (if (v_elemaddr < |s.ELEMS_store|))*{v_elemaddr <- elemaddr_lst} + -- (Exportinst_ok: `%|-%:OK`(s, v_exportinst))*{v_exportinst <- exportinst_lst} + -- if $disjoint_(syntax name, v_exportinst.NAME_exportinst*{v_exportinst <- exportinst_lst}) + -- (if (v_exportinst.ADDR_exportinst <- TAG_externaddr(v_tagaddr)*{v_tagaddr <- tagaddr_lst} ++ GLOBAL_externaddr(v_globaladdr)*{v_globaladdr <- globaladdr_lst} ++ MEM_externaddr(v_memaddr)*{v_memaddr <- memaddr_lst} ++ TABLE_externaddr(v_tableaddr)*{v_tableaddr <- tableaddr_lst} ++ FUNC_externaddr(v_funcaddr)*{v_funcaddr <- funcaddr_lst}))*{v_exportinst <- exportinst_lst} + -- if (|TAG_externaddr(v_tagaddr)*{v_tagaddr <- tagaddr_lst} ++ GLOBAL_externaddr(v_globaladdr)*{v_globaladdr <- globaladdr_lst} ++ MEM_externaddr(v_memaddr)*{v_memaddr <- memaddr_lst} ++ TABLE_externaddr(v_tableaddr)*{v_tableaddr <- tableaddr_lst} ++ FUNC_externaddr(v_funcaddr)*{v_funcaddr <- funcaddr_lst}| > 0) + -- wf_store: `%`(s) + -- wf_moduleinst: `%`({TYPES deftype_lst, TAGS tagaddr_lst, GLOBALS globaladdr_lst, MEMS memaddr_lst, TABLES tableaddr_lst, FUNCS funcaddr_lst, DATAS dataaddr_lst, ELEMS elemaddr_lst, EXPORTS exportinst_lst}) + -- wf_context: `%`({TYPES deftype_lst, TAGS tagtype_lst, GLOBALS globaltype_lst, MEMS memtype_lst, TABLES tabletype_lst, FUNCS deftype_F_lst, DATAS datatype_lst, ELEMS elemtype_lst, LOCALS [], LABELS [], RETURN ?(), REFS mk_uN_funcidx(i)^(i<|funcaddr_lst|){}, RECS subtype_lst}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + -- (wf_externtype: `%`(TAG_externtype(v_tagtype)))*{v_tagtype <- tagtype_lst} + -- (wf_externtype: `%`(GLOBAL_externtype(v_globaltype)))*{v_globaltype <- globaltype_lst} + -- (wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_F))))*{deftype_F <- deftype_F_lst} + -- (wf_externtype: `%`(MEM_externtype(v_memtype)))*{v_memtype <- memtype_lst} + -- (wf_externtype: `%`(TABLE_externtype(v_tabletype)))*{v_tabletype <- tabletype_lst} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Frame_ok: `%|-%:%`(store, frame, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Frame_ok{s : store, val_opt_lst : val?*, v_moduleinst : moduleinst, C : context, lct_lst : localtype*}: + `%|-%:%`(s, {LOCALS val_opt_lst, MODULE v_moduleinst}, C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct_lst, LABELS [], RETURN ?(), REFS [], RECS []}) + -- Moduleinst_ok: `%|-%:%`(s, v_moduleinst, C) + -- (Localval_ok: `%|-%:%`(s, val_opt, lct))*{lct <- lct_lst, val_opt <- val_opt_lst} + -- if (|lct_lst| = |val_opt_lst|) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_frame: `%`({LOCALS val_opt_lst, MODULE v_moduleinst}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct_lst, LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:3.1-4.36 +relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:10.1-12.46 + rule plain{s : store, C : context, v_instr : instr, t_1_lst : valtype*, x_lst : idx*, t_2_lst : valtype*}: + `%;%|-%:%`(s, C, v_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- Instr_ok: `%|-%:%`(C, v_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(v_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:14.1-16.27 + rule ref{s : store, C : context, v_ref : ref, rt : reftype}: + `%;%|-%:%`(s, C, $instr_ref(v_ref), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_reftype(rt)]))) + -- Ref_ok: `%|-%:%`(s, v_ref, rt) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_ref: `%`(v_ref) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([$valtype_reftype(rt)]))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:18.1-21.68 + rule label{s : store, C : context, v_n : n, instr'_lst : instr*, instr_lst : instr*, t_lst : valtype*, t'_lst : valtype*, x'_lst : idx*, x_lst : idx*}: + `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(v_n, instr'_lst, instr_lst), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr'_lst, mk_instrtype_instrtype(mk_list_resulttype(t'_lst), x'_lst, mk_list_resulttype(t_lst))) + -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t'_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype([]), x_lst, mk_list_resulttype(t_lst))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(v_n, instr'_lst, instr_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t'_lst), x'_lst, mk_list_resulttype(t_lst))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t'_lst)], RETURN ?(), REFS [], RECS []}) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), x_lst, mk_list_resulttype(t_lst))) + -- if (v_n = |t'_lst|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:23.1-26.37 + rule frame{s : store, C : context, v_n : n, f : frame, instr_lst : instr*, t_lst : valtype*, C' : context}: + `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(v_n, f, instr_lst), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) + -- Frame_ok: `%|-%:%`(s, f, C') + -- Expr_ok2: `%;%|-%:%`(s, C', instr_lst, mk_list_resulttype(t_lst)) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- wf_instr: `%`(`FRAME_%{%}%`_instr(v_n, f, instr_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) + -- if (v_n = |t_lst|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-31.52 + rule handler{s : store, C : context, v_n : n, catch_lst : catch*, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, x_lst : idx*}: + `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(v_n, catch_lst, instr_lst), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- (Catch_ok: `%|-%:OK`(C, v_catch))*{v_catch <- catch_lst} + -- Instrs_ok2: `%;%|-%:%`(s, C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(v_n, catch_lst, instr_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:33.1-35.42 + rule trap{s : store, C : context, t_1_lst : valtype*, t_2_lst : valtype*}: + `%;%|-%:%`(s, C, TRAP_instr, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRAP_instr) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 +relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:38.1-39.27 + rule empty{s : store, C : context}: + `%;%|-%:%`(s, C, [], mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:41.1-45.86 + rule seq{s : store, C : context, instr_1 : instr, instr_2_lst : instr*, t_1_lst : valtype*, x_1_lst : idx*, x_2_lst : idx*, t_3_lst : valtype*, t_2_lst : valtype*, init_lst : init*, t_lst : valtype*, var_0 : context?}: + `%;%|-%:%`(s, C, [instr_1] ++ instr_2_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst ++ x_2_lst, mk_list_resulttype(t_3_lst))) + -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = mk_localtype_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst, x_1 <- x_1_lst} + -- if (|init_lst| = |t_lst|) + -- if (|init_lst| = |x_1_lst|) + -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- x_1_lst} + -- Instrs_ok2: `%;%|-%:%`(s, !(var_0), instr_2_lst, mk_instrtype_instrtype(mk_list_resulttype(t_2_lst), x_2_lst, mk_list_resulttype(t_3_lst))) + -- if (var_0 =/= ?()) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- instr_2_lst} + -- wf_context: `%`(!(var_0)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst ++ x_2_lst, mk_list_resulttype(t_3_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst, mk_list_resulttype(t_2_lst))) + -- (wf_localtype: `%`(mk_localtype_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst} + -- (wf_localtype: `%`(mk_localtype_localtype(SET_init, t)))*{t <- t_lst} + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_2_lst), x_2_lst, mk_list_resulttype(t_3_lst))) + -- fun_with_locals: `%%%%`(C, x_1_lst, mk_localtype_localtype(SET_init, t)*{t <- t_lst}, var_0) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:47.1-51.33 + rule sub{s : store, C : context, instr_lst : instr*, it' : instrtype, it : instrtype}: + `%;%|-%:%`(s, C, instr_lst, it') + -- Instrs_ok2: `%;%|-%:%`(s, C, instr_lst, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-57.33 + rule frame{s : store, C : context, instr_lst : instr*, t_lst : valtype*, t_1_lst : valtype*, x_lst : idx*, t_2_lst : valtype*}: + `%;%|-%:%`(s, C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ t_1_lst), x_lst, mk_list_resulttype(t_lst ++ t_2_lst))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + -- Resulttype_ok: `%|-%:OK`(C, mk_list_resulttype(t_lst)) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ t_1_lst), x_lst, mk_list_resulttype(t_lst ++ t_2_lst))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_lst, mk_list_resulttype(t_2_lst))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 +relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:60.1-62.44 + rule mk_Expr_ok2{s : store, C : context, instr_lst : instr*, t_lst : valtype*}: + `%;%|-%:%`(s, C, instr_lst, mk_list_resulttype(t_lst)) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(t_lst))) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Taginst_ok{s : store, jt : tagtype}: + `%|-%:%`(s, {TYPE jt}, jt) + -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) + -- wf_store: `%`(s) + -- wf_taginst: `%`({TYPE jt}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Globalinst_ok{s : store, mut_opt : mut?, t : valtype, v_val : val}: + `%|-%:%`(s, {TYPE mk_globaltype_globaltype(mut_opt, t), VALUE v_val}, mk_globaltype_globaltype(mut_opt, t)) + -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, mk_globaltype_globaltype(mut_opt, t)) + -- Val_ok: `%|-%:%`(s, v_val, t) + -- wf_store: `%`(s) + -- wf_globalinst: `%`({TYPE mk_globaltype_globaltype(mut_opt, t), VALUE v_val}) + -- wf_globaltype: `%`(mk_globaltype_globaltype(mut_opt, t)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Meminst_ok: `%|-%:%`(store, meminst, memtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Meminst_ok{s : store, at : addrtype, v_n : n, v_m : m, b_lst : byte*}: + `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m)))), BYTES b_lst}, `%%PAGE`_memtype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))))) + -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))))) + -- if (|b_lst| = (v_n * (64 * $Ki))) + -- wf_store: `%`(s) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m)))), BYTES b_lst}) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Tableinst_ok{s : store, at : addrtype, v_n : n, v_m : m, rt : reftype, ref_lst : ref*}: + `%|-%:%`(s, {TYPE mk_tabletype_tabletype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))), rt), REFS ref_lst}, mk_tabletype_tabletype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))), rt)) + -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, mk_tabletype_tabletype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))), rt)) + -- if (|ref_lst| = v_n) + -- (Ref_ok: `%|-%:%`(s, v_ref, rt))*{v_ref <- ref_lst} + -- wf_store: `%`(s) + -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))), rt), REFS ref_lst}) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))), rt)) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Funcinst_ok{s : store, dt : deftype, v_moduleinst : moduleinst, v_func : func, C : context, dt' : deftype}: + `%|-%:%`(s, {TYPE dt, MODULE v_moduleinst, CODE $funccode_func(v_func)}, dt) + -- Deftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt) + -- Moduleinst_ok: `%|-%:%`(s, v_moduleinst, C) + -- Func_ok: `%|-%:%`(C, v_func, dt') + -- Deftype_sub: `%|-%<:%`(C, dt', dt) + -- wf_store: `%`(s) + -- wf_context: `%`(C) + -- wf_funcinst: `%`({TYPE dt, MODULE v_moduleinst, CODE $funccode_func(v_func)}) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Structinst_ok: `%|-%:OK`(store, structinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Structinst_ok{s : store, dt : deftype, fv_lst : fieldval*, mut_opt_lst : mut?*, zt_lst : storagetype*}: + `%|-%:OK`(s, {TYPE dt, FIELDS fv_lst}) + -- Expand: `%~~%`(dt, STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- fv_lst, zt <- zt_lst} + -- if (|fv_lst| = |zt_lst|) + -- wf_store: `%`(s) + -- wf_structinst: `%`({TYPE dt, FIELDS fv_lst}) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Arrayinst_ok{s : store, dt : deftype, fv_lst : fieldval*, mut_opt : mut?, zt : storagetype}: + `%|-%:OK`(s, {TYPE dt, FIELDS fv_lst}) + -- Expand: `%~~%`(dt, ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- fv_lst} + -- wf_store: `%`(s) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv_lst}) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exninst_ok: `%|-%:OK`(store, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Exninst_ok{s : store, ta : tagaddr, val_lst : val*, dt : deftype, t_lst : valtype*}: + `%|-%:OK`(s, {TAG ta, FIELDS val_lst}) + -- if ($typeuse_deftype(dt) = s.TAGS_store[ta].TYPE_taginst) + -- if (ta < |s.TAGS_store|) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + -- (Val_ok: `%|-%:%`(s, v_val, t))*{t <- t_lst, v_val <- val_lst} + -- if (|t_lst| = |val_lst|) + -- wf_store: `%`(s) + -- wf_exninst: `%`({TAG ta, FIELDS val_lst}) + -- wf_comptype: `%`(`FUNC%->%`_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:208.1-209.50 +relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:222.1-225.35 + rule trans{fv_1 : fieldval, s : store, fv_2 : fieldval, fv' : fieldval}: + `%>>_%%`(fv_1, s, fv_2) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv') + -- ImmutReachable: `%>>_%%`(fv', s, fv_2) + -- wf_fieldval: `%`(fv_1) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(fv_2) + -- wf_fieldval: `%`(fv') + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:227.1-230.20 + rule ref_struct{a : addr, s : store, i : nat, ft_lst : fieldtype*, zt : storagetype}: + `%>>_%%`(REF_STRUCT_ADDR_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) + -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(mk_list_list(ft_lst))) + -- if (a < |s.STRUCTS_store|) + -- if (ft_lst[i] = mk_fieldtype_fieldtype(?(), zt)) + -- if (i < |ft_lst|) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(REF_STRUCT_ADDR_fieldval(a)) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_lst))) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(), zt)) + -- if (i < |s.STRUCTS_store[a].FIELDS_structinst|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:232.1-234.42 + rule ref_array{a : addr, s : store, i : nat, zt : storagetype}: + `%>>_%%`(REF_ARRAY_ADDR_fieldval(a), s, s.ARRAYS_store[a].FIELDS_arrayinst[i]) + -- Expand: `%~~%`(s.ARRAYS_store[a].TYPE_arrayinst, ARRAY_comptype(mk_fieldtype_fieldtype(?(), zt))) + -- if (a < |s.ARRAYS_store|) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(REF_ARRAY_ADDR_fieldval(a)) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(), zt))) + -- if (i < |s.ARRAYS_store[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:236.1-237.44 + rule ref_exn{a : addr, s : store, i : nat}: + `%>>_%%`(REF_EXN_ADDR_fieldval(a), s, $fieldval_val(s.EXNS_store[a].FIELDS_exninst[i])) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(REF_EXN_ADDR_fieldval(a)) + -- if (i < |s.EXNS_store[a].FIELDS_exninst|) + -- if (a < |s.EXNS_store|) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:239.1-240.28 + rule ref_extern{v_ref : ref, s : store}: + `%>>_%%`(REF_EXTERN_fieldval(v_ref), s, $fieldval_ref(v_ref)) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(REF_EXTERN_fieldval(v_ref)) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation fun_NotImmutReachable_before_fun_NotImmutReachable_case_1: `%%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_0{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%`(fv_1, s, fv_2) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation fun_NotImmutReachable: `%%%%`(fieldval, store, fieldval, bool) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_0{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%%`(fv_1, s, fv_2, false) + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule fun_NotImmutReachable_case_1{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `%%%%`(fv_1, s, fv_2, true) + -- ~ fun_NotImmutReachable_before_fun_NotImmutReachable_case_1: `%%%`(fv_1, s, fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval, var_0 : bool}: + `~%>>_%%`(fv_1, s, fv_2) + -- if var_0 + -- wf_fieldval: `%`(fv_1) + -- wf_store: `%`(s) + -- wf_fieldval: `%`(fv_2) + -- fun_NotImmutReachable: `%%%%`(fv_1, s, fv_2, var_0) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Store_ok: `|-%:OK`(store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Store_ok{s : store, taginst_lst : taginst*, tagtype_lst : tagtype*, globalinst_lst : globalinst*, globaltype_lst : globaltype*, meminst_lst : meminst*, memtype_lst : memtype*, tableinst_lst : tableinst*, tabletype_lst : tabletype*, deftype_lst : deftype*, funcinst_lst : funcinst*, datainst_lst : datainst*, datatype_lst : datatype*, eleminst_lst : eleminst*, elemtype_lst : elemtype*, structinst_lst : structinst*, arrayinst_lst : arrayinst*, exninst_lst : exninst*}: + `|-%:OK`(s) + -- (Taginst_ok: `%|-%:%`(s, v_taginst, v_tagtype))*{v_taginst <- taginst_lst, v_tagtype <- tagtype_lst} + -- if (|taginst_lst| = |tagtype_lst|) + -- (Globalinst_ok: `%|-%:%`(s, v_globalinst, v_globaltype))*{v_globalinst <- globalinst_lst, v_globaltype <- globaltype_lst} + -- if (|globalinst_lst| = |globaltype_lst|) + -- (Meminst_ok: `%|-%:%`(s, v_meminst, v_memtype))*{v_meminst <- meminst_lst, v_memtype <- memtype_lst} + -- if (|meminst_lst| = |memtype_lst|) + -- (Tableinst_ok: `%|-%:%`(s, v_tableinst, v_tabletype))*{v_tableinst <- tableinst_lst, v_tabletype <- tabletype_lst} + -- if (|tableinst_lst| = |tabletype_lst|) + -- (Funcinst_ok: `%|-%:%`(s, v_funcinst, v_deftype))*{v_deftype <- deftype_lst, v_funcinst <- funcinst_lst} + -- if (|deftype_lst| = |funcinst_lst|) + -- (Datainst_ok: `%|-%:%`(s, v_datainst, v_datatype))*{v_datainst <- datainst_lst, v_datatype <- datatype_lst} + -- if (|datainst_lst| = |datatype_lst|) + -- (Eleminst_ok: `%|-%:%`(s, v_eleminst, v_elemtype))*{v_eleminst <- eleminst_lst, v_elemtype <- elemtype_lst} + -- if (|eleminst_lst| = |elemtype_lst|) + -- (Structinst_ok: `%|-%:OK`(s, v_structinst))*{v_structinst <- structinst_lst} + -- (Arrayinst_ok: `%|-%:OK`(s, v_arrayinst))*{v_arrayinst <- arrayinst_lst} + -- (Exninst_ok: `%|-%:OK`(s, v_exninst))*{v_exninst <- exninst_lst} + -- (NotImmutReachable: `~%>>_%%`(REF_STRUCT_ADDR_fieldval(a), s, REF_STRUCT_ADDR_fieldval(a)))^(a<|structinst_lst|){} + -- (NotImmutReachable: `~%>>_%%`(REF_ARRAY_ADDR_fieldval(a), s, REF_ARRAY_ADDR_fieldval(a)))^(a<|arrayinst_lst|){} + -- (NotImmutReachable: `~%>>_%%`(REF_EXN_ADDR_fieldval(a), s, REF_EXN_ADDR_fieldval(a)))^(a<|exninst_lst|){} + -- if (s = {TAGS taginst_lst, GLOBALS globalinst_lst, MEMS meminst_lst, TABLES tableinst_lst, FUNCS funcinst_lst, DATAS datainst_lst, ELEMS eleminst_lst, STRUCTS structinst_lst, ARRAYS arrayinst_lst, EXNS exninst_lst}) + -- wf_store: `%`(s) + -- (wf_typeuse: `%`(v_tagtype))*{v_tagtype <- tagtype_lst} + -- (wf_globaltype: `%`(v_globaltype))*{v_globaltype <- globaltype_lst} + -- (wf_memtype: `%`(v_memtype))*{v_memtype <- memtype_lst} + -- (wf_tabletype: `%`(v_tabletype))*{v_tabletype <- tabletype_lst} + -- (wf_reftype: `%`(v_elemtype))*{v_elemtype <- elemtype_lst} + -- (wf_fieldval: `%`(REF_STRUCT_ADDR_fieldval(a)))^(a<|structinst_lst|){} + -- (wf_fieldval: `%`(REF_ARRAY_ADDR_fieldval(a)))^(a<|arrayinst_lst|){} + -- (wf_fieldval: `%`(REF_EXN_ADDR_fieldval(a)))^(a<|exninst_lst|){} + -- wf_store: `%`({TAGS taginst_lst, GLOBALS globalinst_lst, MEMS meminst_lst, TABLES tableinst_lst, FUNCS funcinst_lst, DATAS datainst_lst, ELEMS eleminst_lst, STRUCTS structinst_lst, ARRAYS arrayinst_lst, EXNS exninst_lst}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_taginst: `%<=%`(taginst, taginst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Extend_taginst{jt : tagtype}: + `%<=%`({TYPE jt}, {TYPE jt}) + -- wf_taginst: `%`({TYPE jt}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_globalinst: `%<=%`(globalinst, globalinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Extend_globalinst{mut_opt : mut?, t : valtype, v_val : val, val' : val}: + `%<=%`({TYPE mk_globaltype_globaltype(mut_opt, t), VALUE v_val}, {TYPE mk_globaltype_globaltype(mut_opt, t), VALUE val'}) + -- if ((mut_opt = ?(MUT_mut)) \/ (v_val = val')) + -- wf_globalinst: `%`({TYPE mk_globaltype_globaltype(mut_opt, t), VALUE v_val}) + -- wf_globalinst: `%`({TYPE mk_globaltype_globaltype(mut_opt, t), VALUE val'}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_meminst: `%<=%`(meminst, meminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Extend_meminst{at : addrtype, v_n : n, v_m : m, b_lst : byte*, n' : n, b'_lst : byte*}: + `%<=%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m)))), BYTES b_lst}, {TYPE `%%PAGE`_memtype(at, mk_limits_limits(mk_uN_u64(n'), ?(mk_uN_u64(v_m)))), BYTES b'_lst}) + -- if (v_n <= n') + -- if (|b_lst| <= |b'_lst|) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m)))), BYTES b_lst}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(mk_uN_u64(n'), ?(mk_uN_u64(v_m)))), BYTES b'_lst}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_tableinst: `%<=%`(tableinst, tableinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Extend_tableinst{at : addrtype, v_n : n, v_m : m, rt : reftype, ref_lst : ref*, n' : n, ref'_lst : ref*}: + `%<=%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))), rt), REFS ref_lst}, {TYPE mk_tabletype_tabletype(at, mk_limits_limits(mk_uN_u64(n'), ?(mk_uN_u64(v_m))), rt), REFS ref'_lst}) + -- if (v_n <= n') + -- if (|ref_lst| <= |ref'_lst|) + -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))), rt), REFS ref_lst}) + -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(mk_uN_u64(n'), ?(mk_uN_u64(v_m))), rt), REFS ref'_lst}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_funcinst: `%<=%`(funcinst, funcinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Extend_funcinst{dt : deftype, mm : moduleinst, fc : funccode}: + `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) + -- wf_funcinst: `%`({TYPE dt, MODULE mm, CODE fc}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_datainst: `%<=%`(datainst, datainst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Extend_datainst{b_lst : byte*, b'_lst : byte*}: + `%<=%`({BYTES b_lst}, {BYTES b'_lst}) + -- if ((b_lst = b'_lst) \/ (b'_lst = [])) + -- wf_datainst: `%`({BYTES b_lst}) + -- wf_datainst: `%`({BYTES b'_lst}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_eleminst: `%<=%`(eleminst, eleminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Extend_eleminst{rt : reftype, ref_lst : ref*, ref'_lst : ref*}: + `%<=%`({TYPE rt, REFS ref_lst}, {TYPE rt, REFS ref'_lst}) + -- if ((ref_lst = ref'_lst) \/ (ref'_lst = [])) + -- wf_eleminst: `%`({TYPE rt, REFS ref_lst}) + -- wf_eleminst: `%`({TYPE rt, REFS ref'_lst}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_structinst: `%<=%`(structinst, structinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Extend_structinst{dt : deftype, fv_lst : fieldval*, fv'_lst : fieldval*, mut_opt_lst : mut?*, zt_lst : storagetype*}: + `%<=%`({TYPE dt, FIELDS fv_lst}, {TYPE dt, FIELDS fv'_lst}) + -- Expand: `%~~%`(dt, STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + -- (if ((mut_opt = ?(MUT_mut)) \/ (fv = fv')))*{fv <- fv_lst, fv' <- fv'_lst, mut_opt <- mut_opt_lst} + -- if (|fv_lst| = |fv'_lst|) + -- if (|fv_lst| = |mut_opt_lst|) + -- wf_structinst: `%`({TYPE dt, FIELDS fv_lst}) + -- wf_structinst: `%`({TYPE dt, FIELDS fv'_lst}) + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Extend_arrayinst{dt : deftype, fv_lst : fieldval*, fv'_lst : fieldval*, mut_opt : mut?, zt : storagetype}: + `%<=%`({TYPE dt, FIELDS fv_lst}, {TYPE dt, FIELDS fv'_lst}) + -- Expand: `%~~%`(dt, ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- (if ((mut_opt = ?(MUT_mut)) \/ (fv = fv')))*{fv <- fv_lst, fv' <- fv'_lst} + -- if (|fv_lst| = |fv'_lst|) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv_lst}) + -- wf_arrayinst: `%`({TYPE dt, FIELDS fv'_lst}) + -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_exninst: `%<=%`(exninst, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Extend_exninst{ta : tagaddr, val_lst : val*}: + `%<=%`({TAG ta, FIELDS val_lst}, {TAG ta, FIELDS val_lst}) + -- wf_exninst: `%`({TAG ta, FIELDS val_lst}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_store: `%<=%`(store, store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Extend_store{s : store, s' : store}: + `%<=%`(s, s') + -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} + -- (if (a < |s.TAGS_store|))^(a<|s.TAGS_store|){} + -- (if (a < |s'.TAGS_store|))^(a<|s.TAGS_store|){} + -- (Extend_globalinst: `%<=%`(s.GLOBALS_store[a], s'.GLOBALS_store[a]))^(a<|s.GLOBALS_store|){} + -- (if (a < |s.GLOBALS_store|))^(a<|s.GLOBALS_store|){} + -- (if (a < |s'.GLOBALS_store|))^(a<|s.GLOBALS_store|){} + -- (Extend_meminst: `%<=%`(s.MEMS_store[a], s'.MEMS_store[a]))^(a<|s.MEMS_store|){} + -- (if (a < |s.MEMS_store|))^(a<|s.MEMS_store|){} + -- (if (a < |s'.MEMS_store|))^(a<|s.MEMS_store|){} + -- (Extend_tableinst: `%<=%`(s.TABLES_store[a], s'.TABLES_store[a]))^(a<|s.TABLES_store|){} + -- (if (a < |s.TABLES_store|))^(a<|s.TABLES_store|){} + -- (if (a < |s'.TABLES_store|))^(a<|s.TABLES_store|){} + -- (Extend_funcinst: `%<=%`(s.FUNCS_store[a], s'.FUNCS_store[a]))^(a<|s.FUNCS_store|){} + -- (if (a < |s.FUNCS_store|))^(a<|s.FUNCS_store|){} + -- (if (a < |s'.FUNCS_store|))^(a<|s.FUNCS_store|){} + -- (Extend_datainst: `%<=%`(s.DATAS_store[a], s'.DATAS_store[a]))^(a<|s.DATAS_store|){} + -- (if (a < |s.DATAS_store|))^(a<|s.DATAS_store|){} + -- (if (a < |s'.DATAS_store|))^(a<|s.DATAS_store|){} + -- (Extend_eleminst: `%<=%`(s.ELEMS_store[a], s'.ELEMS_store[a]))^(a<|s.ELEMS_store|){} + -- (if (a < |s.ELEMS_store|))^(a<|s.ELEMS_store|){} + -- (if (a < |s'.ELEMS_store|))^(a<|s.ELEMS_store|){} + -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} + -- (if (a < |s.STRUCTS_store|))^(a<|s.STRUCTS_store|){} + -- (if (a < |s'.STRUCTS_store|))^(a<|s.STRUCTS_store|){} + -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} + -- (if (a < |s.ARRAYS_store|))^(a<|s.ARRAYS_store|){} + -- (if (a < |s'.ARRAYS_store|))^(a<|s.ARRAYS_store|){} + -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} + -- (if (a < |s.EXNS_store|))^(a<|s.EXNS_store|){} + -- (if (a < |s'.EXNS_store|))^(a<|s.EXNS_store|){} + -- wf_store: `%`(s) + -- wf_store: `%`(s') + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation State_ok: `|-%:%`(state, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_State_ok{s : store, f : frame, C : context}: + `|-%:%`(mk_state_state(s, f), C) + -- Store_ok: `|-%:OK`(s) + -- Frame_ok: `%|-%:%`(s, f, C) + -- wf_context: `%`(C) + -- wf_state: `%`(mk_state_state(s, f)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Config_ok: `|-%:%`(config, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule mk_Config_ok{s : store, f : frame, instr_lst : instr*, t_lst : valtype*, C : context}: + `|-%:%`(mk_config_config(mk_state_state(s, f), instr_lst), mk_list_resulttype(t_lst)) + -- State_ok: `|-%:%`(mk_state_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr_lst, mk_list_resulttype(t_lst)) + -- (wf_valtype: `%`(t))*{t <- t_lst} + -- wf_context: `%`(C) + -- wf_config: `%`(mk_config_config(mk_state_state(s, f), instr_lst)) + -- wf_state: `%`(mk_state_state(s, f)) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax A = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax B = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax sym = + | _FIRST(A_1 : A) + | _DOTS + | _LAST(A_n : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax symsplit = + | _FIRST(A_1 : A) + | _LAST(A_2 : A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax recorddots = () + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax record = +{ + FIELD_1 A, + FIELD_2 A, + mk_record recorddots +} + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax pth = + | PTHSYNTAX + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +syntax T = nat + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremise: `%`(nat) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremisedots: `...` + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingScheme: `%`(nat) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec + rule mk_NotationTypingScheme{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: + `%`(conclusion) + -- NotationTypingPremise: `%`(premise_1) + -- NotationTypingPremise: `%`(premise_2) + -- NotationTypingPremisedots: `...` + -- NotationTypingPremise: `%`(premise_n) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 +relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 + rule i32_add{C : context}: + `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 + rule global_get{C : context, x : idx, t : valtype, v_mut : mut}: + `%|-%:%`(C, [GLOBAL_GET_instr(x)], mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = mk_globaltype_globaltype(?(v_mut), t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL_GET_instr(x)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) + -- wf_globaltype: `%`(mk_globaltype_globaltype(?(v_mut), t)) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 + rule block{C : context, v_blocktype : blocktype, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*}: + `%|-%:%`(C, [BLOCK_instr(v_blocktype, instr_lst)], mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- Blocktype_ok: `%|-%:%`(C, v_blocktype, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(v_blocktype, instr_lst)) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- wf_context: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS [], RECS []}) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation NotationReduct: `~>%`(instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule r_2{q_1 : num_, q_4 : num_, q_3 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule r_3{q_1 : num_, q_5 : num_}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) + -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule r_4{q_6 : num_}: + `~>%`([CONST_instr(F64_numtype, q_6)]) + -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $instrdots : instr* + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation instrdots_is_wf: `%`(ret_val : instr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule instrdots_is_wf_0{ret_val : instr*}: + `%`(ret_val) + -- if (ret_val = $instrdots) + -- (wf_instr: `%`(ret_val))*{ret_val <- ret_val} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax label = + | `LABEL_%{%}`(v_n : n, instr_lst : instr*) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_label: `%`(label) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule label_case_0{v_n : n, instr_lst : instr*}: + `%`(`LABEL_%{%}`_label(v_n, instr_lst)) + -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax callframe = + | `FRAME_%{%}`(v_n : n, v_frame : frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation wf_callframe: `%`(callframe) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule callframe_case_0{v_n : n, v_frame : frame}: + `%`(`FRAME_%{%}`_callframe(v_n, v_frame)) + -- wf_frame: `%`(v_frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $allocX(syntax r_X, syntax Y, v_store : store, v_X : r_X, Y_0 : Y) : (store, addr) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation allocX_is_wf(syntax r_X, syntax Y): `%%%%`(v_store : store, X_0 : r_X, Y_0 : Y, ret_val : (store, addr)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule allocX_is_wf_0{syntax r_X, syntax Y, v_store : store, X_0 : r_X, Y_0 : Y, ret_val : (store, addr)}: + `%%%%`(v_store, X_0, Y_0, ret_val) + -- wf_store: `%`(v_store) + -- if (ret_val = $allocX(syntax r_X, syntax Y, v_store, X_0, Y_0)) + -- wf_store: `%`(ret_val.0) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 +def $allocXs(syntax r_X, syntax Y, v_store : store, var_0 : r_X*, var_1 : Y*) : (store, addr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 + def $allocXs{syntax r_X, syntax Y, s : store}(syntax r_X, syntax Y, s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 + def $allocXs{syntax r_X, syntax Y, s : store, v_X : r_X, X'_lst : r_X*, Y : Y, Y'_lst : Y*}(syntax r_X, syntax Y, s, [v_X] ++ X'_lst, [Y] ++ Y'_lst) = (s_2, [a] ++ a'_lst) + -- let{a : addr, s_1 : store} (s_1, a) = $allocX(syntax r_X, syntax Y, s, v_X, Y) + -- let{s_2 : store, a'_lst : addr*} (s_2, a'_lst) = $allocXs(syntax r_X, syntax Y, s_1, X'_lst, Y'_lst) + -- wf_store: `%`($allocX(syntax r_X, syntax Y, s, v_X, Y).0) + -- wf_store: `%`($allocXs(syntax r_X, syntax Y, s_1, X'_lst, Y'_lst).0) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 +relation allocXs_is_wf(syntax r_X, syntax Y): `%%%%`(v_store : store, var_0 : r_X*, var_1 : Y*, ret_val : (store, addr*)) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.6-32.14 + rule allocXs_is_wf_0{syntax r_X, syntax Y, v_store : store, var_0 : r_X*, var_1 : Y*, ret_val : (store, addr*)}: + `%%%%`(v_store, var_0, var_1, ret_val) + -- wf_store: `%`(v_store) + -- if (ret_val = $allocXs(syntax r_X, syntax Y, v_store, var_0, var_1)) + -- wf_store: `%`(ret_val.0) +} + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +syntax symdots = + | mk_symdots(i : nat) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +relation wf_symdots: `%`(symdots) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + rule symdots_case_0{i : nat}: + `%`(mk_symdots_symdots(i)) + -- if (i = 0) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +def $var(syntax r_X) : nat + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + def $var{syntax r_X}(syntax r_X) = 0 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax abbreviated = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax expanded = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax syntax = () + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bbyte : byte + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : nat} ``:(0x00 | ... | 0xFF) => mk_byte_byte(``) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 +grammar BuN(v_N : N) : uN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 + prod{v_n : n} mk_byte_byte(v_n):Bbyte => mk_uN_uN(v_n) + -- if ((v_n < (2 ^ 7)) /\ (v_n < (2 ^ v_N))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 + prod{v_m : m, v_n : n} {{mk_byte_byte(v_n):Bbyte} {mk_uN_uN(v_m):BuN((((v_N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => mk_uN_uN((((2 ^ 7) * v_m) + (((v_n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) + -- if ((v_n >= (2 ^ 7)) /\ (v_N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 +grammar BsN(v_N : N) : sN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 + prod{v_n : n} mk_byte_byte(v_n):Bbyte => mk_sN_sN((v_n : nat <:> int)) + -- if ((v_n < (2 ^ 6)) /\ (v_n < (2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 + prod{v_n : n} mk_byte_byte(v_n):Bbyte => mk_sN_sN(((v_n : nat <:> int) - ((2 ^ 7) : nat <:> int))) + -- if ((((2 ^ 6) <= v_n) /\ (v_n < (2 ^ 7))) /\ ((v_n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 + prod{i : sN, v_n : n} {{mk_byte_byte(v_n):Bbyte} {i:BsN((((v_N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => mk_sN_sN(((((2 ^ 7) * ($proj_sN_0(i).0 : int <:> nat)) + (((v_n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) + -- if ((v_n >= (2 ^ 7)) /\ (v_N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BiN(v_N : N) : iN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{i : sN, var_0 : nat} i:BsN(v_N) => mk_uN_iN(var_0) + -- fun_inv_signed_: `%%%`(v_N, $proj_sN_0(i).0, var_0) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BfN(v_N : N) : fN + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{b_lst : byte*} b_lst:Bbyte^(((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(v_N, b_lst) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu32 : u32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu64 : u64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bs33 : s33 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : sN} ``:BsN(33) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi32 : i32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi64 : i64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf32 : f32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : fN} ``:BfN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bf64 : f64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : fN} ``:BfN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blist(syntax el, grammar BX : el) : el* + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{v_n : n, el_lst : el*} {{mk_uN_u32(v_n):Bu32} {el:BX^v_n{el <- el_lst}}} => el_lst + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bname : name + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{v_name : name, b_lst : byte*, var_0 : byte*} b_lst:Blist(syntax byte, grammar Bbyte) => v_name + -- if (var_0 = b_lst) + -- fun_utf8: `%%`($proj_name_0(v_name).0, var_0) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btypeidx : typeidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btagidx : tagidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bglobalidx : globalidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bmemidx : memidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Btableidx : tableidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfuncidx : funcidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bdataidx : dataidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Belemidx : elemidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blocalidx : localidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfieldidx : fieldidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Blabelidx : labelidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{l : labelidx} l:Bu32 => l + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bexternidx : externidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bnumtype : numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7C => F64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7D => F32_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7E => I64_numtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7F => I32_numtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvectype : vectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x7B => V128_vectype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Babsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x69 => EXN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6A => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6B => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6C => I31_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6D => EQ_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6E => ANY_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x6F => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x70 => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x71 => NONE_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x72 => NOEXTERN_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x73 => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x74 => NOEXN_heaptype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bheaptype : heaptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => ht + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) + -- if ($proj_sN_0(x33).0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Breftype : reftype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bvaltype : valtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{nt : numtype} nt:Bnumtype => $valtype_numtype(nt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{vt : vectype} vt:Bvectype => $valtype_vectype(vt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{rt : reftype} rt:Breftype => $valtype_reftype(rt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bresulttype : resulttype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{t_lst : valtype*} t_lst:Blist(syntax valtype, grammar Bvaltype) => mk_list_resulttype(t_lst) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmut : mut? + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x00 => ?() + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x01 => ?(MUT_mut) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bpacktype : packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x77 => I16_packtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod 0x78 => I8_packtype + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bstoragetype : storagetype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{t : valtype} t:Bvaltype => $storagetype_valtype(t) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{pt : packtype} pt:Bpacktype => $storagetype_packtype(pt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bfieldtype : fieldtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{mut_opt : mut?, zt : storagetype} {{zt:Bstoragetype} {mut_opt:Bmut}} => mk_fieldtype_fieldtype(mut_opt, zt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bcomptype : comptype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ft_lst : fieldtype*} {{0x5F} {ft_lst:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(mk_list_list(ft_lst)) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{t_1_lst : valtype*, t_2_lst : valtype*} {{0x60} {mk_list_resulttype(t_1_lst):Bresulttype} {mk_list_resulttype(t_2_lst):Bresulttype}} => `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bsubtype : subtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x_lst : idx*, ct : comptype} {{0x4F} {x_lst:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- x_lst}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x_lst : idx*, ct : comptype} {{0x50} {x_lst:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- x_lst}, ct) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Brectype : rectype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{st_lst : subtype*} {{0x4E} {st_lst:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(mk_list_list(st_lst)) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{st : subtype} st:Bsubtype => REC_rectype(mk_list_list([st])) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Blimits : (addrtype, limits) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{v_n : n} {{0x00} {mk_uN_u64(v_n):Bu64}} => (I32_addrtype, mk_limits_limits(mk_uN_u64(v_n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{v_n : n, v_m : m} {{0x01} {mk_uN_u64(v_n):Bu64} {mk_uN_u64(v_m):Bu64}} => (I32_addrtype, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m)))) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{v_n : n} {{0x04} {mk_uN_u64(v_n):Bu64}} => (I64_addrtype, mk_limits_limits(mk_uN_u64(v_n), ?())) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{v_n : n, v_m : m} {{0x05} {mk_uN_u64(v_n):Bu64} {mk_uN_u64(v_m):Bu64}} => (I64_addrtype, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m)))) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btagtype : tagtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bglobaltype : globaltype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{mut_opt : mut?, t : valtype} {{t:Bvaltype} {mut_opt:Bmut}} => mk_globaltype_globaltype(mut_opt, t) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bmemtype : memtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Btabletype : tabletype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => mk_tabletype_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +grammar Bexterntype : externtype + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) + ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcastop : castop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x00 => (?(), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x01 => (?(NULL_null), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x02 => (?(), ?(NULL_null)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x03 => (?(NULL_null), ?(NULL_null)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bblocktype : blocktype + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x40 => _RESULT_blocktype(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{i : s33} i:Bs33 => _IDX_blocktype(mk_uN_typeidx(($proj_sN_0(i).0 : int <:> nat))) + -- if ($proj_sN_0(i).0 >= (0 : nat <:> int)) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcatch : catch + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bmemarg : memidxop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{v_n : n, v_m : m} {{mk_uN_u32(v_n):Bu32} {mk_uN_u64(v_m):Bu64}} => (mk_uN_memidx(0), {ALIGN mk_uN_u32(v_n), OFFSET mk_uN_u64(v_m)}) + -- if (v_n < (2 ^ 6)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{x : idx, v_n : n, v_m : m} {{mk_uN_u32(v_n):Bu32} {x:Bmemidx} {mk_uN_u64(v_m):Bu64}} => (x, {ALIGN mk_uN_u32((((v_n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET mk_uN_u64(v_m)}) + -- if (((2 ^ 6) <= v_n) /\ (v_n < (2 ^ 7))) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Blaneidx : laneidx + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{l : labelidx} mk_byte_byte($proj_uN_0(l).0):Bbyte => mk_uN_laneidx($proj_uN_0(l).0) + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 +grammar Binstr : instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 + prod 0x00 => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 + prod 0x01 => NOP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 + prod 0x1A => DROP_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 + prod 0x1B => SELECT_instr(?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 + prod{t_lst : valtype*} {{0x1C} {t_lst:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t_lst)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 + prod{bt : blocktype, in_lst : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- in_lst}} {0x0B}} => BLOCK_instr(bt, in_lst) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 + prod{bt : blocktype, in_lst : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- in_lst}} {0x0B}} => LOOP_instr(bt, in_lst) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 + prod{bt : blocktype, in_lst : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- in_lst}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_lst, []) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 + prod{bt : blocktype, in_1_lst : instr*, in_2_lst : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- in_1_lst}} {0x05} {in_2:Binstr*{in_2 <- in_2_lst}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1_lst, in_2_lst) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 + prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 + prod 0x0A => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 + prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 + prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 + prod{l_lst : labelidx*, l_n : labelidx} {{0x0E} {l_lst:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l_lst, l_n) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 + prod 0x0F => RETURN_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 + prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 + prod{x : idx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 + prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 + prod{x : idx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 + prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 + prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 + prod{bt : blocktype, c_lst : catch*, in_lst : instr*} {{0x1F} {bt:Bblocktype} {c_lst:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- in_lst}} {0x0B}} => TRY_TABLE_instr(bt, mk_list_list(c_lst), in_lst) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 + prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 + prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 + prod{l : labelidx, null_1_opt : null?, ht_1 : heaptype, null_2_opt : null?, ht_2 : heaptype} {{0xFB} {mk_uN_u32(24):Bu32} {(null_1_opt, null_2_opt):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1_opt, ht_1), REF_reftype(null_2_opt, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 + prod{l : labelidx, null_1_opt : null?, ht_1 : heaptype, null_2_opt : null?, ht_2 : heaptype} {{0xFB} {mk_uN_u32(25):Bu32} {(null_1_opt, null_2_opt):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1_opt, ht_1), REF_reftype(null_2_opt, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 + prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL_GET_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 + prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL_SET_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 + prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL_TEE_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 + prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL_GET_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 + prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL_SET_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 + prod{x : idx} {{0x25} {x:Btableidx}} => TABLE_GET_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 + prod{x : idx} {{0x26} {x:Btableidx}} => TABLE_SET_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 + prod{x : idx, y : idx} {{0xFC} {mk_uN_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE_INIT_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 + prod{x : idx} {{0xFC} {mk_uN_u32(13):Bu32} {x:Belemidx}} => ELEM_DROP_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 + prod{x_1 : idx, x_2 : idx} {{0xFC} {mk_uN_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE_COPY_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 + prod{x : idx} {{0xFC} {mk_uN_u32(15):Bu32} {x:Btableidx}} => TABLE_GROW_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 + prod{x : idx} {{0xFC} {mk_uN_u32(16):Bu32} {x:Btableidx}} => TABLE_SIZE_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 + prod{x : idx} {{0xFC} {mk_uN_u32(17):Bu32} {x:Btableidx}} => TABLE_FILL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 + prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 + prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 + prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 + prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 + prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 + prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 + prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 + prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 + prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 + prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 + prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 + prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 + prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 + prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 + prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 + prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 + prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 + prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 + prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 + prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 + prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 + prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 + prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 + prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY_SIZE_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 + prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY_GROW_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 + prod{x : idx, y : idx} {{0xFC} {mk_uN_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY_INIT_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 + prod{x : idx} {{0xFC} {mk_uN_u32(9):Bu32} {x:Bdataidx}} => DATA_DROP_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 + prod{x_1 : idx, x_2 : idx} {{0xFC} {mk_uN_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY_COPY_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 + prod{x : idx} {{0xFC} {mk_uN_u32(11):Bu32} {x:Bmemidx}} => MEMORY_FILL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 + prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF_NULL_instr(ht) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 + prod 0xD1 => REF_IS_NULL_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 + prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF_FUNC_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 + prod 0xD3 => REF_EQ_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 + prod 0xD4 => REF_AS_NON_NULL_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 + prod{ht : heaptype} {{0xFB} {mk_uN_u32(20):Bu32} {ht:Bheaptype}} => REF_TEST_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 + prod{ht : heaptype} {{0xFB} {mk_uN_u32(21):Bu32} {ht:Bheaptype}} => REF_TEST_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 + prod{ht : heaptype} {{0xFB} {mk_uN_u32(22):Bu32} {ht:Bheaptype}} => REF_CAST_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 + prod{ht : heaptype} {{0xFB} {mk_uN_u32(23):Bu32} {ht:Bheaptype}} => REF_CAST_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 + prod{x : idx} {{0xFB} {mk_uN_u32(0):Bu32} {x:Btypeidx}} => STRUCT_NEW_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 + prod{x : idx} {{0xFB} {mk_uN_u32(1):Bu32} {x:Btypeidx}} => STRUCT_NEW_DEFAULT_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.57 + prod{x : idx, i : fieldidx} {{0xFB} {mk_uN_u32(2):Bu32} {x:Btypeidx} {i:Bfieldidx}} => STRUCT_GET_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.59 + prod{x : idx, i : fieldidx} {{0xFB} {mk_uN_u32(3):Bu32} {x:Btypeidx} {i:Bfieldidx}} => STRUCT_GET_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.59 + prod{x : idx, i : fieldidx} {{0xFB} {mk_uN_u32(4):Bu32} {x:Btypeidx} {i:Bfieldidx}} => STRUCT_GET_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.57 + prod{x : idx, i : fieldidx} {{0xFB} {mk_uN_u32(5):Bu32} {x:Btypeidx} {i:Bfieldidx}} => STRUCT_SET_instr(x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 + prod{x : idx} {{0xFB} {mk_uN_u32(6):Bu32} {x:Btypeidx}} => ARRAY_NEW_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 + prod{x : idx} {{0xFB} {mk_uN_u32(7):Bu32} {x:Btypeidx}} => ARRAY_NEW_DEFAULT_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 + prod{x : idx, v_n : n} {{0xFB} {mk_uN_u32(8):Bu32} {x:Btypeidx} {mk_uN_u32(v_n):Bu32}} => ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 + prod{x : idx, y : idx} {{0xFB} {mk_uN_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY_NEW_DATA_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 + prod{x : idx, y : idx} {{0xFB} {mk_uN_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY_NEW_ELEM_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 + prod{x : idx} {{0xFB} {mk_uN_u32(11):Bu32} {x:Btypeidx}} => ARRAY_GET_instr(?(), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 + prod{x : idx} {{0xFB} {mk_uN_u32(12):Bu32} {x:Btypeidx}} => ARRAY_GET_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 + prod{x : idx} {{0xFB} {mk_uN_u32(13):Bu32} {x:Btypeidx}} => ARRAY_GET_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 + prod{x : idx} {{0xFB} {mk_uN_u32(14):Bu32} {x:Btypeidx}} => ARRAY_SET_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 + prod {{0xFB} {mk_uN_u32(15):Bu32}} => ARRAY_LEN_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 + prod{x : idx} {{0xFB} {mk_uN_u32(16):Bu32} {x:Btypeidx}} => ARRAY_FILL_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 + prod{x_1 : idx, x_2 : idx} {{0xFB} {mk_uN_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY_COPY_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 + prod{x : idx, y : idx} {{0xFB} {mk_uN_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY_INIT_DATA_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 + prod{x : idx, y : idx} {{0xFB} {mk_uN_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY_INIT_ELEM_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 + prod {{0xFB} {mk_uN_u32(26):Bu32}} => ANY_CONVERT_EXTERN_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 + prod {{0xFB} {mk_uN_u32(27):Bu32}} => EXTERN_CONVERT_ANY_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 + prod {{0xFB} {mk_uN_u32(28):Bu32}} => REF_I31_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 + prod {{0xFB} {mk_uN_u32(29):Bu32}} => I31_GET_instr(S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 + prod {{0xFB} {mk_uN_u32(30):Bu32}} => I31_GET_instr(U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 + prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 + prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 + prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 + prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 + prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 + prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 + prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 + prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 + prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 + prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 + prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 + prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 + prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 + prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 + prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 + prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 + prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 + prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 + prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 + prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 + prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 + prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 + prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 + prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 + prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 + prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 + prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 + prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 + prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 + prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 + prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 + prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 + prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 + prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 + prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 + prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 + prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 + prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 + prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 + prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 + prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 + prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 + prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 + prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 + prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 + prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 + prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 + prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 + prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 + prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 + prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 + prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 + prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 + prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 + prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 + prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 + prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 + prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 + prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 + prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 + prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 + prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 + prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 + prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(32)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 + prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 + prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 + prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 + prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 + prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 + prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 + prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 + prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 + prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 + prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 + prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 + prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 + prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 + prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 + prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 + prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 + prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 + prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 + prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 + prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 + prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 + prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 + prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 + prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 + prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 + prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 + prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 + prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 + prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 + prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 + prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 + prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 + prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 + prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 + prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 + prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 + prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 + prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 + prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 + prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 + prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 + prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 + prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 + prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 + prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 + prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 + prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 + prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 + prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 + prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 + prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 + prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 + prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 + prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 + prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 + prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 + prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 + prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 + prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 + prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 + prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 + prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 + prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 + prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 + prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 + prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 + prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 + prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 + prod {{0xFC} {mk_uN_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 + prod {{0xFC} {mk_uN_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 + prod {{0xFC} {mk_uN_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 + prod {{0xFC} {mk_uN_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 + prod {{0xFC} {mk_uN_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 + prod {{0xFC} {mk_uN_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 + prod {{0xFC} {mk_uN_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 + prod {{0xFC} {mk_uN_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 + prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 + prod{b_lst : byte*} {{0xFD} {mk_uN_u32(12):Bu32} {b:Bbyte^16{b <- b_lst}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b_lst)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 + prod{l_lst : labelidx*} {{0xFD} {mk_uN_u32(13):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx^16{l <- l_lst}}} => VSHUFFLE_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_uN_laneidx($proj_uN_0(l).0)^16{l <- l_lst}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 + prod {{0xFD} {mk_uN_u32(14):Bu32}} => VSWIZZLOP_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 + prod {{0xFD} {mk_uN_u32(256):Bu32}} => VSWIZZLOP_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 + prod {{0xFD} {mk_uN_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 + prod {{0xFD} {mk_uN_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 + prod {{0xFD} {mk_uN_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 + prod {{0xFD} {mk_uN_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 + prod {{0xFD} {mk_uN_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 + prod {{0xFD} {mk_uN_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 + prod{l : labelidx} {{0xFD} {mk_uN_u32(21):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), ?(S_sx), mk_uN_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 + prod{l : labelidx} {{0xFD} {mk_uN_u32(22):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), ?(U_sx), mk_uN_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 + prod{l : labelidx} {{0xFD} {mk_uN_u32(23):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_uN_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 + prod{l : labelidx} {{0xFD} {mk_uN_u32(24):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), ?(S_sx), mk_uN_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 + prod{l : labelidx} {{0xFD} {mk_uN_u32(25):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), ?(U_sx), mk_uN_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 + prod{l : labelidx} {{0xFD} {mk_uN_u32(26):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_uN_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 + prod{l : labelidx} {{0xFD} {mk_uN_u32(27):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), ?(), mk_uN_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 + prod{l : labelidx} {{0xFD} {mk_uN_u32(28):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_uN_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 + prod{l : labelidx} {{0xFD} {mk_uN_u32(29):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), ?(), mk_uN_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + prod{l : labelidx} {{0xFD} {mk_uN_u32(30):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_uN_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 + prod{l : labelidx} {{0xFD} {mk_uN_u32(31):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), ?(), mk_uN_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 + prod{l : labelidx} {{0xFD} {mk_uN_u32(32):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_uN_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + prod{l : labelidx} {{0xFD} {mk_uN_u32(33):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), ?(), mk_uN_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + prod{l : labelidx} {{0xFD} {mk_uN_u32(34):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_uN_laneidx($proj_uN_0(l).0)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 + prod {{0xFD} {mk_uN_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 + prod {{0xFD} {mk_uN_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 + prod {{0xFD} {mk_uN_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 + prod {{0xFD} {mk_uN_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 + prod {{0xFD} {mk_uN_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 + prod {{0xFD} {mk_uN_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 + prod {{0xFD} {mk_uN_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 + prod {{0xFD} {mk_uN_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 + prod {{0xFD} {mk_uN_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + prod {{0xFD} {mk_uN_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 + prod {{0xFD} {mk_uN_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 + prod {{0xFD} {mk_uN_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 + prod {{0xFD} {mk_uN_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + prod {{0xFD} {mk_uN_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 + prod {{0xFD} {mk_uN_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 + prod {{0xFD} {mk_uN_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 + prod {{0xFD} {mk_uN_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 + prod {{0xFD} {mk_uN_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 + prod {{0xFD} {mk_uN_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + prod {{0xFD} {mk_uN_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 + prod {{0xFD} {mk_uN_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 + prod {{0xFD} {mk_uN_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 + prod {{0xFD} {mk_uN_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + prod {{0xFD} {mk_uN_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 + prod {{0xFD} {mk_uN_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 + prod {{0xFD} {mk_uN_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 + prod {{0xFD} {mk_uN_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 + prod {{0xFD} {mk_uN_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 + prod {{0xFD} {mk_uN_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + prod {{0xFD} {mk_uN_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 + prod {{0xFD} {mk_uN_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 + prod {{0xFD} {mk_uN_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 + prod {{0xFD} {mk_uN_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 + prod {{0xFD} {mk_uN_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 + prod {{0xFD} {mk_uN_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 + prod {{0xFD} {mk_uN_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 + prod {{0xFD} {mk_uN_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + prod {{0xFD} {mk_uN_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + prod {{0xFD} {mk_uN_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + prod {{0xFD} {mk_uN_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 + prod {{0xFD} {mk_uN_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 + prod {{0xFD} {mk_uN_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 + prod {{0xFD} {mk_uN_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 + prod {{0xFD} {mk_uN_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 + prod {{0xFD} {mk_uN_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 + prod {{0xFD} {mk_uN_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 + prod {{0xFD} {mk_uN_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 + prod {{0xFD} {mk_uN_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 + prod {{0xFD} {mk_uN_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 + prod {{0xFD} {mk_uN_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 + prod {{0xFD} {mk_uN_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 + prod {{0xFD} {mk_uN_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 + prod {{0xFD} {mk_uN_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 + prod {{0xFD} {mk_uN_u32(100):Bu32}} => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 + prod {{0xFD} {mk_uN_u32(101):Bu32}} => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 + prod {{0xFD} {mk_uN_u32(102):Bu32}} => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 + prod {{0xFD} {mk_uN_u32(107):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 + prod {{0xFD} {mk_uN_u32(108):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 + prod {{0xFD} {mk_uN_u32(109):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 + prod {{0xFD} {mk_uN_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 + prod {{0xFD} {mk_uN_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 + prod {{0xFD} {mk_uN_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 + prod {{0xFD} {mk_uN_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 + prod {{0xFD} {mk_uN_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 + prod {{0xFD} {mk_uN_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 + prod {{0xFD} {mk_uN_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 + prod {{0xFD} {mk_uN_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 + prod {{0xFD} {mk_uN_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 + prod {{0xFD} {mk_uN_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 + prod {{0xFD} {mk_uN_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 + prod {{0xFD} {mk_uN_u32(124):Bu32}} => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 + prod {{0xFD} {mk_uN_u32(125):Bu32}} => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 + prod {{0xFD} {mk_uN_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 + prod {{0xFD} {mk_uN_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 + prod {{0xFD} {mk_uN_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 + prod {{0xFD} {mk_uN_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 + prod {{0xFD} {mk_uN_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 + prod {{0xFD} {mk_uN_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 + prod {{0xFD} {mk_uN_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 + prod {{0xFD} {mk_uN_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 + prod {{0xFD} {mk_uN_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 + prod {{0xFD} {mk_uN_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 + prod {{0xFD} {mk_uN_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 + prod {{0xFD} {mk_uN_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 + prod {{0xFD} {mk_uN_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 + prod {{0xFD} {mk_uN_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 + prod {{0xFD} {mk_uN_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 + prod {{0xFD} {mk_uN_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 + prod {{0xFD} {mk_uN_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 + prod {{0xFD} {mk_uN_u32(132):Bu32}} => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 + prod {{0xFD} {mk_uN_u32(133):Bu32}} => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 + prod {{0xFD} {mk_uN_u32(134):Bu32}} => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 + prod {{0xFD} {mk_uN_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 + prod {{0xFD} {mk_uN_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 + prod {{0xFD} {mk_uN_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 + prod {{0xFD} {mk_uN_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 + prod {{0xFD} {mk_uN_u32(139):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 + prod {{0xFD} {mk_uN_u32(140):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 + prod {{0xFD} {mk_uN_u32(141):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 + prod {{0xFD} {mk_uN_u32(156):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 + prod {{0xFD} {mk_uN_u32(157):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 + prod {{0xFD} {mk_uN_u32(158):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 + prod {{0xFD} {mk_uN_u32(159):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 + prod {{0xFD} {mk_uN_u32(274):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 + prod {{0xFD} {mk_uN_u32(126):Bu32}} => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 + prod {{0xFD} {mk_uN_u32(127):Bu32}} => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 + prod {{0xFD} {mk_uN_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 + prod {{0xFD} {mk_uN_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 + prod {{0xFD} {mk_uN_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 + prod {{0xFD} {mk_uN_u32(164):Bu32}} => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 + prod {{0xFD} {mk_uN_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 + prod {{0xFD} {mk_uN_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 + prod {{0xFD} {mk_uN_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 + prod {{0xFD} {mk_uN_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 + prod {{0xFD} {mk_uN_u32(171):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 + prod {{0xFD} {mk_uN_u32(172):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 + prod {{0xFD} {mk_uN_u32(173):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 + prod {{0xFD} {mk_uN_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 + prod {{0xFD} {mk_uN_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 + prod {{0xFD} {mk_uN_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 + prod {{0xFD} {mk_uN_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 + prod {{0xFD} {mk_uN_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 + prod {{0xFD} {mk_uN_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 + prod {{0xFD} {mk_uN_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 + prod {{0xFD} {mk_uN_u32(186):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 + prod {{0xFD} {mk_uN_u32(188):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 + prod {{0xFD} {mk_uN_u32(189):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 + prod {{0xFD} {mk_uN_u32(190):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 + prod {{0xFD} {mk_uN_u32(191):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 + prod {{0xFD} {mk_uN_u32(275):Bu32}} => VEXTTERNOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 + prod {{0xFD} {mk_uN_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 + prod {{0xFD} {mk_uN_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 + prod {{0xFD} {mk_uN_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 + prod {{0xFD} {mk_uN_u32(196):Bu32}} => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 + prod {{0xFD} {mk_uN_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 + prod {{0xFD} {mk_uN_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 + prod {{0xFD} {mk_uN_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 + prod {{0xFD} {mk_uN_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 + prod {{0xFD} {mk_uN_u32(203):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 + prod {{0xFD} {mk_uN_u32(204):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 + prod {{0xFD} {mk_uN_u32(205):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 + prod {{0xFD} {mk_uN_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 + prod {{0xFD} {mk_uN_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 + prod {{0xFD} {mk_uN_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 + prod {{0xFD} {mk_uN_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 + prod {{0xFD} {mk_uN_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 + prod {{0xFD} {mk_uN_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 + prod {{0xFD} {mk_uN_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 + prod {{0xFD} {mk_uN_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 + prod {{0xFD} {mk_uN_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 + prod {{0xFD} {mk_uN_u32(220):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 + prod {{0xFD} {mk_uN_u32(221):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 + prod {{0xFD} {mk_uN_u32(222):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 + prod {{0xFD} {mk_uN_u32(223):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 + prod {{0xFD} {mk_uN_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 + prod {{0xFD} {mk_uN_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 + prod {{0xFD} {mk_uN_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 + prod {{0xFD} {mk_uN_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 + prod {{0xFD} {mk_uN_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 + prod {{0xFD} {mk_uN_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 + prod {{0xFD} {mk_uN_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 + prod {{0xFD} {mk_uN_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 + prod {{0xFD} {mk_uN_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 + prod {{0xFD} {mk_uN_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + prod {{0xFD} {mk_uN_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 + prod {{0xFD} {mk_uN_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 + prod {{0xFD} {mk_uN_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 + prod {{0xFD} {mk_uN_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 + prod {{0xFD} {mk_uN_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 + prod {{0xFD} {mk_uN_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 + prod {{0xFD} {mk_uN_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 + prod {{0xFD} {mk_uN_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 + prod {{0xFD} {mk_uN_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 + prod {{0xFD} {mk_uN_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 + prod {{0xFD} {mk_uN_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 + prod {{0xFD} {mk_uN_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 + prod {{0xFD} {mk_uN_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 + prod {{0xFD} {mk_uN_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 + prod {{0xFD} {mk_uN_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 + prod {{0xFD} {mk_uN_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 + prod {{0xFD} {mk_uN_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 + prod {{0xFD} {mk_uN_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 + prod {{0xFD} {mk_uN_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + prod {{0xFD} {mk_uN_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 + prod {{0xFD} {mk_uN_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 + prod {{0xFD} {mk_uN_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 + prod {{0xFD} {mk_uN_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 + prod {{0xFD} {mk_uN_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 + prod {{0xFD} {mk_uN_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 + prod {{0xFD} {mk_uN_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 + prod {{0xFD} {mk_uN_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 + prod {{0xFD} {mk_uN_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 + prod {{0xFD} {mk_uN_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 + prod {{0xFD} {mk_uN_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 + prod {{0xFD} {mk_uN_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 + prod {{0xFD} {mk_uN_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 + prod {{0xFD} {mk_uN_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 + prod {{0xFD} {mk_uN_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 + prod {{0xFD} {mk_uN_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 + prod {{0xFD} {mk_uN_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 + prod {{0xFD} {mk_uN_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 + prod {{0xFD} {mk_uN_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 + prod {{0xFD} {mk_uN_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 + prod {{0xFD} {mk_uN_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 + prod {{0xFD} {mk_uN_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 + prod {{0xFD} {mk_uN_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 + prod {{0xFD} {mk_uN_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 + prod {{0xFD} {mk_uN_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 + prod {{0xFD} {mk_uN_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 + prod {{0xFD} {mk_uN_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) +} + +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bexpr : expr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod{in_lst : instr*} {{in:Binstr*{in <- in_lst}} {0x0B}} => in_lst + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bsection_(v_N : N, syntax en, grammar BX : en*) : en* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{en_lst : en*, len : nat} {{mk_byte_byte(v_N):Bbyte} {mk_uN_u32(len):Bu32} {en_lst:BX}} => en_lst + -- if (len = 0) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod eps => [] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustom : ()* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{Bname} {Bbyte*{}}} => [] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcustomsec : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btype : type + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{qt : rectype} qt:Brectype => TYPE_type(qt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btypesec : type* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{ty_lst : type*} ty_lst:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty_lst + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimport : import + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bimportsec : import* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{im_lst : import*} im_lst:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im_lst + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfuncsec : typeidx* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{x_lst : idx*} x_lst:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x_lst + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btable : table + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF_NULL_instr(ht)]) + -- if (tt = mk_tabletype_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btablesec : table* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tab_lst : table*} tab_lst:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab_lst + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmem : mem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmemsec : mem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{mem_lst : mem*} mem_lst:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem_lst + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobal : global + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bglobalsec : global* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{glob_lst : global*} glob_lst:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob_lst + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexport : export + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bexportsec : export* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{ex_lst : export*} ex_lst:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex_lst + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstart : start* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{x : idx} x:Bfuncidx => [START_start(x)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bstartsec : start? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{v_startopt : startopt} v_startopt:Bsection_(8, syntax start, grammar Bstart) => !($opt_(syntax start, v_startopt)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemkind : reftype + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod 0x00 => REF_reftype(?(), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belem : elem + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{y_lst : idx*, e_o : expr} {{mk_uN_u32(0):Bu32} {e_o:Bexpr} {y_lst:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF_FUNC_instr(y)*{y <- y_lst}], ACTIVE_elemmode(mk_uN_tableidx(0), e_o)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, y_lst : idx*} {{mk_uN_u32(1):Bu32} {rt:Belemkind} {y_lst:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF_FUNC_instr(y)*{y <- y_lst}], PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, y_lst : idx*, x : idx, e : expr} {{mk_uN_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y_lst:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF_FUNC_instr(y)*{y <- y_lst}], ACTIVE_elemmode(x, e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, y_lst : idx*} {{mk_uN_u32(3):Bu32} {rt:Belemkind} {y_lst:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF_FUNC_instr(y)*{y <- y_lst}], DECLARE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{e_lst : expr*, e_O : expr} {{mk_uN_u32(4):Bu32} {e_O:Bexpr} {e_lst:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e_lst, ACTIVE_elemmode(mk_uN_tableidx(0), e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, e_lst : expr*} {{mk_uN_u32(5):Bu32} {rt:Breftype} {e_lst:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e_lst, PASSIVE_elemmode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, e_lst : expr*, x : idx, e_O : expr} {{mk_uN_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e_lst:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e_lst, ACTIVE_elemmode(x, e_O)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{rt : reftype, e_lst : expr*} {{mk_uN_u32(7):Bu32} {rt:Breftype} {e_lst:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e_lst, DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Belemsec : elem* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{elem_lst : elem*} elem_lst:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem_lst + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Blocals : local* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{t : valtype, v_n : n} {{mk_uN_u32(v_n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^v_n{} + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bfunc : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{loc_lst_lst : local**, e : expr} {{loc_lst_lst:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc_lst_lst), e) + -- if (|$concat_(syntax local, loc_lst_lst)| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcode : code + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{v_code : code, len : nat} {{mk_uN_u32(len):Bu32} {v_code:Bfunc}} => v_code + -- if (len = 0) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bcodesec : code* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{code_lst : code*} code_lst:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code_lst + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdata : data + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{b_lst : byte*, e : expr} {{mk_uN_u32(0):Bu32} {e:Bexpr} {b_lst:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b_lst, ACTIVE_datamode(mk_uN_memidx(0), e)) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{b_lst : byte*} {{mk_uN_u32(1):Bu32} {b_lst:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b_lst, PASSIVE_datamode) + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{b_lst : byte*, x : idx, e : expr} {{mk_uN_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b_lst:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b_lst, ACTIVE_datamode(x, e)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatasec : data* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{data_lst : data*} data_lst:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data_lst + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacnt : u32* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{v_n : n} mk_uN_u32(v_n):Bu32 => [mk_uN_u32(v_n)] + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bdatacntsec : u32? + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{v_nopt : nopt} v_nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => !($opt_(syntax u32, v_nopt)) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btag : tag + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Btagsec : tag* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{tag_lst : tag*} tag_lst:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag_lst + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmagic : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bversion : () + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 + +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +grammar Bmodule : module + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, typeidx_lst : typeidx*, n_opt : n?, expr_lst : expr*, local_lst_lst : local**, var_0 : dataidx*} {Bmagic Bversion {Bcustomsec*{}} {type_lst:Btypesec} {Bcustomsec*{}} {import_lst:Bimportsec} {Bcustomsec*{}} {typeidx_lst:Bfuncsec} {Bcustomsec*{}} {table_lst:Btablesec} {Bcustomsec*{}} {mem_lst:Bmemsec} {Bcustomsec*{}} {tag_lst:Btagsec} {Bcustomsec*{}} {global_lst:Bglobalsec} {Bcustomsec*{}} {export_lst:Bexportsec} {Bcustomsec*{}} {start_opt:Bstartsec} {Bcustomsec*{}} {elem_lst:Belemsec} {Bcustomsec*{}} {mk_uN_u32(v_n)?{v_n <- n_opt}:Bdatacntsec} {Bcustomsec*{}} {(local_lst, v_expr)*{v_expr <- expr_lst, local_lst <- local_lst_lst}:Bcodesec} {Bcustomsec*{}} {data_lst:Bdatasec} {Bcustomsec*{}}} => MODULE_module(mk_list_list(type_lst), mk_list_list(import_lst), mk_list_list(tag_lst), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list(func_lst), mk_list_list(data_lst), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst)) + -- (if (v_n = |data_lst|))?{v_n <- n_opt} + -- if ((n_opt =/= ?()) \/ (var_0 = [])) + -- (if (v_func = FUNC_func(v_typeidx, local_lst, v_expr)))*{v_expr <- expr_lst, v_func <- func_lst, local_lst <- local_lst_lst, v_typeidx <- typeidx_lst} + -- fun_dataidx_funcs: `%%`(func_lst, var_0) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tchar : char + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => mk_char_char(``) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tsource : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tchar*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TuNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TsNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar TfNplain : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:eps => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x30 | ... | 0x39) => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x41 | ... | 0x5A) => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:(0x61 | ... | 0x7A) => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x21 => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x23 => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x24 => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x25 => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x26 => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x27 => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2A => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2B => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2D => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2E => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x2F => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3A => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3C => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3D => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3E => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x3F => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x40 => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5C => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5E => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x5F => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x60 => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7C => mk_char_char(``) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : nat} ``:0x7E => mk_char_char(``) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x30 => 0 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x31 => 1 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x32 => 2 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x33 => 3 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x34 => 4 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x35 => 5 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x36 => 6 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x37 => 7 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x38 => 8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x39 => 9 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexdigit : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x41 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x42 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x43 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x44 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x45 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x46 => 15 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x61 => 10 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x62 => 11 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x63 => 12 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x64 => 13 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x65 => 14 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod 0x66 => 15 + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 +grammar Thexnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 + prod{h : nat} h:Thexdigit => h + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 + prod{v_n : n, h : nat} {{v_n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * v_n) + h) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringchar : char + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char} c:Tchar => c + -- if (((($proj_char_0(c).0 >= 32) /\ ($proj_char_0(c).0 =/= 127)) /\ (c =/= mk_char_char(34))) /\ (c =/= mk_char_char(92))) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\t" => mk_char_char(9) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\n" => mk_char_char(10) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\r" => mk_char_char(13) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\"" => mk_char_char(34) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\'" => mk_char_char(39) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "\\\\" => mk_char_char(92) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{v_n : n} {{"\\u{"} {v_n:Thexnum} {"}"}} => mk_char_char(v_n) + -- if ((v_n < 55296) \/ ((59392 <= v_n) /\ (v_n < 1114112))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstringelem : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c : char, var_0 : byte*} c:Tstringchar => var_0 + -- fun_utf8: `%%`([c], var_0) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [mk_byte_byte(((16 * h_1) + h_2))] + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tstring : byte* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{b_lst_lst : byte**} {{"\""} {b_lst:Tstringelem*{b_lst <- b_lst_lst}} {"\""}} => $concat_(syntax byte, b_lst_lst) + -- if (|$concat_(syntax byte, b_lst_lst)| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tname : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c_lst : char*, b_lst : byte*, var_0 : byte*} b_lst:Tstring => mk_name_name(c_lst) + -- if (b_lst = var_0) + -- fun_utf8: `%%`(c_lst, var_0) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tid : name + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c_lst : char*} {{"$"} {c_lst:Tidchar+{}}} => mk_name_name(c_lst) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{c_lst : char*} {{"$"} {mk_name_name(c_lst):Tname}} => mk_name_name(c_lst) + -- if (|c_lst| > 0) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tkeyword : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Treserved : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Ttoken : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tkeyword => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TuNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TsNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:TfNplain => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : byte} [``]:Tstring => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tid => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x28 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x29 => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Treserved => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tannotid : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char} [``]:Tidchar+{} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : name} ``:Tname => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 +grammar Tblockcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 + prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 +grammar Tblockchar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if ((c =/= mk_char_char(59)) /\ (c =/= mk_char_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 + prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= mk_char_char(59)) /\ (c =/= mk_char_char(41))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 + prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= mk_char_char(59)) /\ (c =/= mk_char_char(40))) + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 + prod{`` : ()} ``:Tblockcomment => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Teof : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : text} ``:"" => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinechar : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 + -- if (($proj_char_0(c).0 =/= 10) /\ ($proj_char_0(c).0 =/= 13)) + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tnewline : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0A => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x0D => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tlinecomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tcomment : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tlinecomment => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tblockcomment => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +grammar Tformat : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : ()} ``:Tnewline => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + prod{`` : nat} ``:0x09 => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 +grammar Tspace : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 + prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 +grammar Tannot : () + ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 + prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tsign : int + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod eps => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "+" => + (1 : nat <:> int) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "-" => - (1 : nat <:> int) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 +grammar Tnum : nat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 + prod{d : nat} d:Tdigit => d + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 + prod{v_n : n, d : nat} {{v_n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * v_n) + d) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TuN(v_N : N) : uN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{v_n : n} v_n:Tnum => mk_uN_uN(v_n) + -- if (v_n < (2 ^ v_N)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{v_n : n} {{"0x"} {v_n:Thexnum}} => mk_uN_uN(v_n) + -- if (v_n < (2 ^ v_N)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TsN(v_N : N) : sN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{s : int, v_n : n} {{s:Tsign} {mk_uN_uN(v_n):TuN(v_N)}} => mk_sN_sN((s * (v_n : nat <:> int))) + -- if ((- ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (v_n : nat <:> int))) /\ ((s * (v_n : nat <:> int)) < ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TiN(v_N : N) : iN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{v_n : n} mk_uN_uN(v_n):TuN(v_N) => mk_uN_iN(v_n) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{i : sN, var_0 : nat} i:TsN(v_N) => mk_uN_iN(var_0) + -- fun_inv_signed_: `%%%`(v_N, $proj_sN_0(i).0, var_0) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 +grammar Tfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 + prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 + prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 +grammar Thexfrac : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 + prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 + prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexmant : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Thexfloat : rat + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfNmag(v_N : N) : fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Tfloat => $ieee_(v_N, q) + -- if ($ieee_(v_N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : rat} q:Thexfloat => $ieee_(v_N, q) + -- if ($ieee_(v_N, q) =/= INF_fNmag) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "inf" => INF_fNmag + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod "nan" => NAN_fNmag($canon_(v_N)) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{v_n : n} {{"nan:0x"} {v_n:Thexnum}} => NAN_fNmag(v_n) + -- if ((1 <= v_n) /\ (v_n < (2 ^ !($signif(v_N))))) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar TfN(v_N : N) : fN + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(v_N)}} => POS_fN(q) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(v_N)}} => NEG_fN(q) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tu64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : uN} ``:TuN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti8 : u8 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(8) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti16 : u16 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(16) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti32 : u32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ti64 : u64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : iN} ``:TiN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf32 : f32 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(32) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tf64 : f64 + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : fN} ``:TfN(64) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlist(syntax el, grammar TX : el) : el* + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{el_lst : el*} el:TX*{el <- el_lst} => el_lst + -- if (|el_lst| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tidx_(ids : name?*) : idx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} x:Tu32 => x + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx, id : name} id:Tid => x + -- if (ids[$proj_uN_0(x).0] = ?(id)) + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttypeidx_(v_I : I) : typeidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(v_I.TYPES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttagidx_(v_I : I) : tagidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(v_I.TAGS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tglobalidx_(v_I : I) : globalidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(v_I.GLOBALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tmemidx_(v_I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(v_I.MEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Ttableidx_(v_I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(v_I.TABLES_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfuncidx_(v_I : I) : funcidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(v_I.FUNCS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tdataidx_(v_I : I) : dataidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(v_I.DATAS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Telemidx_(v_I : I) : elemidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(v_I.ELEMS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlocalidx_(v_I : I) : localidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(v_I.LOCALS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tlabelidx_(v_I : I) : labelidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(v_I.LABELS_I) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Tfieldidx__(v_I : I, x : idx) : fieldidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{`` : idx} ``:Tidx_(v_I.FIELDS_I[$proj_uN_0(x).0]) => `` + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +grammar Texternidx_(v_I : I) : externidx + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(v_I)} {")"}} => TAG_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(v_I)} {")"}} => GLOBAL_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(v_I)} {")"}} => MEM_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(v_I)} {")"}} => TABLE_externidx(x) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(v_I)} {")"}} => FUNC_externidx(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnumtype : numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f32" => F32_numtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "f64" => F64_numtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvectype : vectype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "v128" => V128_vectype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tabsheaptype : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "any" => ANY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "eq" => EQ_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i31" => I31_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "struct" => STRUCT_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "array" => ARRAY_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "none" => NONE_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "func" => FUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "nofunc" => NOFUNC_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "exn" => EXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noexn" => NOEXN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "extern" => EXTERN_heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "noextern" => NOEXTERN_heaptype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Theaptype_(v_I : I) : heaptype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ht : heaptype} ht:Tabsheaptype => ht + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx} x:Ttypeidx_(v_I) => _IDX_heaptype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tnull : null + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "null" => NULL_null + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Treftype_(v_I : I) : reftype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{null_opt : null?, ht : heaptype} {{"("} {"ref"} {null_opt:Tnull?{}} {ht:Theaptype_(v_I)} {")"}} => REF_reftype(null_opt, ht) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tvaltype_(v_I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{nt : numtype} nt:Tnumtype => $valtype_numtype(nt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{vt : vectype} vt:Tvectype => $valtype_vectype(vt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{rt : reftype} rt:Treftype_(v_I) => $valtype_reftype(rt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tpacktype : packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i8" => I8_packtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i16" => I16_packtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tstoragetype_(v_I : I) : storagetype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(v_I) => $storagetype_valtype(t) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{pt : packtype} pt:Tpacktype => $storagetype_packtype(pt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfieldtype_(v_I : I) : fieldtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} zt:Tstoragetype_(v_I) => mk_fieldtype_fieldtype(?(), zt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(v_I)} {")"}} => mk_fieldtype_fieldtype(?(MUT_mut), zt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfield_(v_I : I) : (fieldtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft : fieldtype, id_opt : char?} {{"("} {"field"} {?(mk_name_name(lift(id_opt))):Tid?{}} {ft:Tfieldtype_(v_I)} {")"}} => (ft, ?(mk_name_name(lift(id_opt)))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tparam_(v_I : I) : (valtype, name?) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype, id_opt : char?} {{"("} {"param"} {?(mk_name_name(lift(id_opt))):Tid?{}} {t:Tvaltype_(v_I)} {")"}} => (t, ?(mk_name_name(lift(id_opt)))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tresult_(v_I : I) : valtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(v_I)} {")"}} => t + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tcomptype_(v_I : I) : (comptype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft_lst : fieldtype*, id_opt_lst : char?*} {{"("} {"struct"} {(ft, ?(mk_name_name(lift(id_opt))))*{ft <- ft_lst, id_opt <- id_opt_lst}:Tlist(syntax (fieldtype, name?), grammar Tfield_(v_I))} {")"}} => (STRUCT_comptype(mk_list_list(ft_lst)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(mk_name_name(lift(id_opt)))*{id_opt <- id_opt_lst}], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(v_I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(mk_name_name([]))]], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t_1_lst : valtype*, t_2_lst : valtype*, id_opt_lst : char?*} {{"("} {"func"} {(t_1, ?(mk_name_name(lift(id_opt))))*{id_opt <- id_opt_lst, t_1 <- t_1_lst}:Tlist(syntax (valtype, name?), grammar Tparam_(v_I))} {t_2_lst:Tlist(syntax valtype, grammar Tresult_(v_I))} {")"}} => (`FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(mk_name_name([]))]], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tfinal : final + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "final" => FINAL_final + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tsubtype_(v_I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{fin_opt : final?, x_lst : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin_opt:Tfinal?{}} {x_lst:Tlist(syntax typeidx, grammar Ttypeidx_(v_I))} {(ct, I'):Tcomptype_(v_I)} {")"}} => (SUB_subtype(fin_opt, _IDX_typeuse(x)*{x <- x_lst}, ct), I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypedef_(v_I : I) : (subtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{st : subtype, I' : I, id_opt : char?} {{"("} {"type"} {?(mk_name_name(lift(id_opt))):Tid?{}} {(st, I'):Tsubtype_(v_I)} {")"}} => (st, I' +++ {TYPES [?(mk_name_name(lift(id_opt)))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Trectype_(v_I : I) : (rectype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{st_lst : subtype*, I'_lst : I*, var_0 : idctxt} {{"("} {"rec"} {(st, I')*{I' <- I'_lst, st <- st_lst}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(v_I))} {")"}} => (REC_rectype(mk_list_list(st_lst)), var_0) + -- fun_concat_idctxt: `%%`(I'_lst, var_0) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Taddrtype : addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i32" => I32_addrtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod "i64" => I64_addrtype + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tlimits : limits + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{v_n : n} mk_uN_u64(v_n):Tu64 => mk_limits_limits(mk_uN_u64(v_n), ?()) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{v_n : n, v_m : m} {{mk_uN_u64(v_n):Tu64} {mk_uN_u64(v_m):Tu64}} => mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttypeuse_(v_I : I) : (typeidx, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I, st_lst : subtype*, i : n, t_1_lst : valtype*, t_2_lst : valtype*} {{"("} {"type"} {x:Ttypeidx_(v_I)} {")"}} => (x, I') + -- if (v_I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(mk_list_list(st_lst)), i))) + -- if (st_lst[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(mk_name_name([]))^|t_1_lst|{}, LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I, id_opt_lst : char?*, t_1_lst : valtype*, t_2_lst : valtype*, st_lst : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(v_I)} {")"} {(t_1, ?(mk_name_name(lift(id_opt))))*{id_opt <- id_opt_lst, t_1 <- t_1_lst}:Tparam_(v_I)*{}} {t_2_lst:Tresult_(v_I)*{}}} => (x, I') + -- if (v_I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(mk_list_list(st_lst)), i))) + -- if (st_lst[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(mk_name_name(lift(id_opt)))*{id_opt <- id_opt_lst}, LABELS [], FIELDS [], TYPEDEFS []}) + -- Idctxt_ok: `|-%:OK`(I') + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttagtype_(v_I : I) : tagtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(v_I) => _IDX_tagtype(x) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tglobaltype_(v_I : I) : globaltype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} t:Tvaltype_(v_I) => mk_globaltype_globaltype(?(), t) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(v_I)} {")"}} => mk_globaltype_globaltype(?(MUT_mut), t) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Tmemtype_(v_I : I) : memtype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Ttabletype_(v_I : I) : tabletype + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(v_I)}} => mk_tabletype_tabletype(at, lim, rt) + +;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +grammar Texterntype_(v_I : I) : (externtype, idctxt) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{jt : tagtype, id_opt : char?} {{"("} {"tag"} {?(mk_name_name(lift(id_opt))):Tid?{}} {jt:Ttagtype_(v_I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(mk_name_name(lift(id_opt)))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{gt : globaltype, id_opt : char?} {{"("} {"global"} {?(mk_name_name(lift(id_opt))):Tid?{}} {gt:Tglobaltype_(v_I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(mk_name_name(lift(id_opt)))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{mt : memtype, id_opt : char?} {{"("} {"memory"} {?(mk_name_name(lift(id_opt))):Tid?{}} {mt:Tmemtype_(v_I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(mk_name_name(lift(id_opt)))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{tt : tabletype, id_opt : char?} {{"("} {"table"} {?(mk_name_name(lift(id_opt))):Tid?{}} {tt:Ttabletype_(v_I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(mk_name_name(lift(id_opt)))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + prod{x : idx, id_opt : char?, I' : I} {{"("} {"func"} {?(mk_name_name(lift(id_opt))):Tid?{}} {(x, I'):Ttypeuse_(v_I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(mk_name_name(lift(id_opt)))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlabel_(v_I : I) : (name?, I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ v_I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ v_I) + -- if ~ (?(id) <- v_I.LABELS_I) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ v_I[LABELS_I[$proj_uN_0(x).0] = ?()]) + -- if (?(id) = v_I.LABELS_I[$proj_uN_0(x).0]) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tblocktype_(v_I : I) : blocktype + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{t_opt : valtype?} t_opt:Tresult_(v_I)?{} => _RESULT_blocktype(t_opt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, I' : I} (x, I'):Ttypeuse_(v_I) => _IDX_blocktype(x) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(mk_name_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tcatch_(v_I : I) : catch + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(v_I)} {l:Tlabelidx_(v_I)} {")"}} => CATCH_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(v_I)} {l:Tlabelidx_(v_I)} {")"}} => CATCH_REF_catch(x, l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(v_I)} {")"}} => CATCH_ALL_catch(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(v_I)} {")"}} => CATCH_ALL_REF_catch(l) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tfoldedinstr_(v_I : I) : instr* + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tlaneidx : laneidx + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : u8} i:Tu8 => i + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Talign_(v_N : N) : u32 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{v_n : n, v_m : m} {{"align="} {mk_uN_u64(v_m):Tu64}} => mk_uN_u32(v_n) + -- if (v_m = (2 ^ v_n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => mk_uN_u32(v_N) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Toffset : u64 + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{v_m : m} {{"offset="} {mk_uN_u64(v_m):Tu64}} => mk_uN_u64(v_m) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => mk_uN_u64(0) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tmemarg_(v_N : N) : memarg + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{v_n : n, v_m : m} {{mk_uN_u32(v_n):Talign_(v_N)} {mk_uN_u64(v_m):Toffset}} => {ALIGN mk_uN_u32(v_n), OFFSET mk_uN_u64(v_m)} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tplaininstr_(v_I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "unreachable" => UNREACHABLE_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "nop" => NOP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "drop" => DROP_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{t_lst_opt : valtype*?} {{"select"} {t_lst:Tresult_(v_I)*{}?{t_lst <- t_lst_opt}}} => SELECT_instr(t_lst_opt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br"} {l:Tlabelidx_(v_I)}} => BR_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(v_I)}} => BR_IF_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l_lst : labelidx*, l' : labelidx} {{"br_table"} {l_lst:Tlabelidx_(v_I)*{}} {l':Tlabelidx_(v_I)}} => BR_TABLE_instr(l_lst, l') + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(v_I)}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(v_I)}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(v_I)} {rt_1:Treftype_(v_I)} {rt_2:Treftype_(v_I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(v_I)} {rt_1:Treftype_(v_I)} {rt_2:Treftype_(v_I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call"} {x:Tfuncidx_(v_I)}} => CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"call_ref"} {x:Ttypeidx_(v_I)}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(v_I)} {(y, I'):Ttypeuse_(v_I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(mk_name_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "return" => RETURN_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call"} {x:Tfuncidx_(v_I)}} => RETURN_CALL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(v_I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(v_I)} {(y, I'):Ttypeuse_(v_I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(mk_name_name([]))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"throw"} {x:Ttagidx_(v_I)}} => THROW_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "throw_ref" => THROW_REF_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.get"} {x:Tlocalidx_(v_I)}} => LOCAL_GET_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.set"} {x:Tlocalidx_(v_I)}} => LOCAL_SET_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"local.tee"} {x:Tlocalidx_(v_I)}} => LOCAL_TEE_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.get"} {x:Tglobalidx_(v_I)}} => GLOBAL_GET_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"global.set"} {x:Tglobalidx_(v_I)}} => GLOBAL_SET_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.get"} {x:Ttableidx_(v_I)}} => TABLE_GET_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.set"} {x:Ttableidx_(v_I)}} => TABLE_SET_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.size"} {x:Ttableidx_(v_I)}} => TABLE_SIZE_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.grow"} {x:Ttableidx_(v_I)}} => TABLE_GROW_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"table.fill"} {x:Ttableidx_(v_I)}} => TABLE_FILL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(v_I)} {x_2:Ttableidx_(v_I)}} => TABLE_COPY_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(v_I)} {y:Telemidx_(v_I)}} => TABLE_INIT_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"elem.drop"} {x:Telemidx_(v_I)}} => ELEM_DROP_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(32), S_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(32), U_sx))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(8), 8, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(8), 8, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(16), 4, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(16), 4, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(32), 2, S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(32), 2, U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(8))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(16))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(32))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(64))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(16)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(32)))), x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(8), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(16), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(32), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(64), x, ao, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.size"} {x:Tmemidx_(v_I)}} => MEMORY_SIZE_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.grow"} {x:Tmemidx_(v_I)}} => MEMORY_GROW_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"memory.fill"} {x:Tmemidx_(v_I)}} => MEMORY_FILL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(v_I)} {x_2:Tmemidx_(v_I)}} => MEMORY_COPY_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(v_I)} {y:Tdataidx_(v_I)}} => MEMORY_INIT_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"data.drop"} {x:Tdataidx_(v_I)}} => DATA_DROP_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(v_I)}} => REF_NULL_instr(ht) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"ref.func"} {x:Tfuncidx_(v_I)}} => REF_FUNC_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.is_null" => REF_IS_NULL_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.as_non_null" => REF_AS_NON_NULL_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.eq" => REF_EQ_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.test"} {rt:Treftype_(v_I)}} => REF_TEST_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(v_I)}} => REF_CAST_instr(rt) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "ref.i31" => REF_I31_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_s" => I31_GET_instr(S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i31.get_u" => I31_GET_instr(U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new"} {x:Ttypeidx_(v_I)}} => STRUCT_NEW_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(v_I)}} => STRUCT_NEW_DEFAULT_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(v_I)} {i:Tfieldidx__(v_I, x)}} => STRUCT_GET_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(v_I)} {i:Tfieldidx__(v_I, x)}} => STRUCT_GET_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(v_I)} {i:Tfieldidx__(v_I, x)}} => STRUCT_GET_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(v_I)} {i:Tfieldidx__(v_I, x)}} => STRUCT_SET_instr(x, i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new"} {x:Ttypeidx_(v_I)}} => ARRAY_NEW_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(v_I)}} => ARRAY_NEW_DEFAULT_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, v_n : n} {{"array.new_fixed"} {x:Ttypeidx_(v_I)} {mk_uN_u32(v_n):Tu32}} => ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(v_I)} {y:Tdataidx_(v_I)}} => ARRAY_NEW_DATA_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(v_I)} {y:Telemidx_(v_I)}} => ARRAY_NEW_ELEM_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get"} {x:Ttypeidx_(v_I)}} => ARRAY_GET_instr(?(), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(v_I)}} => ARRAY_GET_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(v_I)}} => ARRAY_GET_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.set"} {x:Ttypeidx_(v_I)}} => ARRAY_SET_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "array.len" => ARRAY_LEN_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx} {{"array.fill"} {x:Ttypeidx_(v_I)}} => ARRAY_FILL_instr(x) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(v_I)} {x_2:Ttypeidx_(v_I)}} => ARRAY_COPY_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(v_I)} {y:Tdataidx_(v_I)}} => ARRAY_INIT_DATA_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(v_I)} {y:Telemidx_(v_I)}} => ARRAY_INIT_ELEM_instr(x, y) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "any.convert_extern" => ANY_CONVERT_EXTERN_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "extern.convert_any" => EXTERN_CONVERT_ANY_instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(32)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c_lst : u8*} {{"v128.const"} {"i8x16"} {c_lst:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- c_lst}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c_lst : u16*} {{"v128.const"} {"i16x8"} {c_lst:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- c_lst}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c_lst : u32*} {{"v128.const"} {"i32x4"} {c_lst:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- c_lst}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c_lst : u64*} {{"v128.const"} {"i64x2"} {c_lst:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- c_lst}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c_lst : f32*} {{"v128.const"} {"f32x4"} {c_lst:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- c_lst}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{c_lst : f64*} {{"v128.const"} {"f64x2"} {c_lst:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- c_lst}))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i_lst : laneidx*} {{"i8x16.shuffle"} {i_lst:Tlaneidx^16{}}} => VSHUFFLE_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), i_lst) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.swizzle" => VSWIZZLOP_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), ?(S_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), ?(U_sx), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), ?(), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), i) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, AVGRU_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, Q15MULR_SATS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, RELAXED_Q15MULRS_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shl" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_s" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.shr_u" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shl" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_s" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.shr_u" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shl" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_s" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.shr_u" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shl" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_s" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.shr_u" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.bitmask" => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.bitmask" => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.bitmask" => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.bitmask" => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_s" => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i8x16.narrow_i16x8_u" => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_s" => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), S_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.narrow_i32x4_u" => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), U_sx) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, PROMOTELOW_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_dot_i8x16_i7x16_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, RELAXED_DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, DOTS_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_dot_i8x16_i7x16_add_s" => VEXTTERNOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, RELAXED_DOT_ADDS_vextternop__Jnn_1_M_1_Jnn_2_M_2)) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 +grammar Tinstr_(v_I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 + prod{in : instr} in:Tplaininstr_(v_I) => in + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 + prod{in : instr} in:Tblockinstr_(v_I) => in + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 +grammar Tinstrs_(v_I : I) : instr* + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 + prod{in_lst : instr*} in_lst:Tinstr_(v_I)*{} => in_lst + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 + prod{in_lst_lst : instr**} in_lst_lst:Tfoldedinstr_(v_I)*{} => $concat_(syntax instr, in_lst_lst) + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 +grammar Tblockinstr_(v_I : I) : instr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 + prod{bt : blocktype, in_lst : instr*, id_opt : char?, I' : I, id'_opt : char?} {{"block"} {(?(mk_name_name(lift(id_opt))), I'):Tlabel_(v_I)} {bt:Tblocktype_(v_I)} {in_lst:Tinstrs_(I')} {"end"} {?(mk_name_name(lift(id'_opt))):Tid?{}}} => BLOCK_instr(bt, in_lst) + -- if ((id'_opt = ?()) \/ (id'_opt = id_opt)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 + prod{bt : blocktype, in_lst : instr*, id_opt : char?, I' : I, id'_opt : char?} {{"loop"} {(?(mk_name_name(lift(id_opt))), I'):Tlabel_(v_I)} {bt:Tblocktype_(v_I)} {in_lst:Tinstrs_(I')} {"end"} {?(mk_name_name(lift(id'_opt))):Tid?{}}} => LOOP_instr(bt, in_lst) + -- if ((id'_opt = ?()) \/ (id'_opt = id_opt)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 + prod{bt : blocktype, in_1_lst : instr*, in_2_lst : instr*, id_opt : char?, I' : I, id_1_opt : char?, id_2_opt : char?} {{"if"} {(?(mk_name_name(lift(id_opt))), I'):Tlabel_(v_I)} {bt:Tblocktype_(v_I)} {in_1_lst:Tinstrs_(I')} {"else"} {?(mk_name_name(lift(id_1_opt))):Tid?{}} {in_2_lst:Tinstrs_(I')} {"end"} {?(mk_name_name(lift(id_2_opt))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1_lst, in_2_lst) + -- if (((id_1_opt = ?()) \/ (id_1_opt = id_opt)) /\ ((id_2_opt = ?()) \/ (id_2_opt = id_opt))) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 + prod{bt : blocktype, c_lst : catch*, in_lst : instr*, id_opt : char?, I' : I, id'_opt : char?} {{"try_table"} {(?(mk_name_name(lift(id_opt))), I'):Tlabel_(v_I)} {bt:Tblocktype_(v_I)} {c_lst:Tcatch_(v_I)*{}} {in_lst:Tinstrs_(I')} {"end"} {?(mk_name_name(lift(id'_opt))):Tid?{}}} => TRY_TABLE_instr(bt, mk_list_list(c_lst), in_lst) + -- if ((id'_opt = ?()) \/ (id'_opt = id_opt)) +} + +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Texpr_(v_I : I) : expr + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod{in_lst : instr*} in_lst:Tinstrs_(v_I) => in_lst + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttype_(v_I : I) : (type, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{qt : rectype, I' : I, I'' : I, v_n : n, st_lst : subtype*} (qt, I'):Trectype_(v_I) => (TYPE_type(qt), I' +++ I'') + -- if (qt = REC_rectype(mk_list_list(st_lst))) + -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(mk_name_name(lift(id_opt)))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tglobal_(v_I : I) : (global, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{gt : globaltype, e : expr, id_opt : char?} {{"("} {"global"} {?(mk_name_name(lift(id_opt))):Tid?{}} {gt:Tglobaltype_(v_I)} {e:Texpr_(v_I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(mk_name_name(lift(id_opt)))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmem_(v_I : I) : (mem, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{mt : memtype, id_opt : char?} {{"("} {"memory"} {?(mk_name_name(lift(id_opt))):Tid?{}} {mt:Tmemtype_(v_I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(mk_name_name(lift(id_opt)))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttable_(v_I : I) : (table, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{tt : tabletype, e : expr, id_opt : char?} {{"("} {"table"} {?(mk_name_name(lift(id_opt))):Tid?{}} {tt:Ttabletype_(v_I)} {e:Texpr_(v_I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(mk_name_name(lift(id_opt)))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tlocal_(v_I : I) : (local*, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{t : valtype, id_opt : char?} {{"("} {"local"} {?(mk_name_name(lift(id_opt))):Tid?{}} {t:Tvaltype_(v_I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(mk_name_name(lift(id_opt)))], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tfunc_(v_I : I) : (func, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx, loc_lst_lst : local**, e : expr, id_opt : char?, I_1 : I, I_2_lst : I*, I' : I, var_0 : I} {{"("} {"func"} {?(mk_name_name(lift(id_opt))):Tid?{}} {(x, I_1):Ttypeuse_(v_I)} {(loc_lst, I_2):Tlocal_(v_I)*{I_2 <- I_2_lst, loc_lst <- loc_lst_lst}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc_lst_lst), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(mk_name_name(lift(id_opt)))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = v_I +++ I_1 +++ var_0) + -- Idctxt_ok: `|-%:OK`(I') + -- fun_concat_idctxt: `%%`(I_2_lst, var_0) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatastring : byte* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{b_lst_lst : byte**} b_lst_lst:Tstring*{} => $concat_(syntax byte, b_lst_lst) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmemuse_(v_I : I) : memidx + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(v_I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Toffset_(v_I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"offset"} {e:Texpr_(v_I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdata_(v_I : I) : (data, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{b_lst : byte*, id_opt : char?} {{"("} {"data"} {?(mk_name_name(lift(id_opt))):Tid?{}} {b_lst:Tdatastring} {")"}} => (DATA_data(b_lst, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(mk_name_name(lift(id_opt)))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{b_lst : byte*, x : idx, e : expr, id_opt : char?} {{"("} {"data"} {?(mk_name_name(lift(id_opt))):Tid?{}} {x:Tmemuse_(v_I)} {e:Toffset_(v_I)} {b_lst:Tdatastring} {")"}} => (DATA_data(b_lst, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(mk_name_name(lift(id_opt)))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemexpr_(v_I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"item"} {e:Texpr_(v_I)} {")"}} => e + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemlist_(v_I : I) : (reftype, expr*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, e_lst : expr*} {{rt:Treftype_(v_I)} {e_lst:Tlist(syntax expr, grammar Telemexpr_(v_I))}} => (rt, e_lst) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttableuse_(v_I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(v_I)} {")"}} => x + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telem_(v_I : I) : (elem, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, e_lst : expr*, id_opt : char?} {{"("} {"elem"} {?(mk_name_name(lift(id_opt))):Tid?{}} {(rt, e_lst):Telemlist_(v_I)} {")"}} => (ELEM_elem(rt, e_lst, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(mk_name_name(lift(id_opt)))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, e_lst : expr*, x : idx, e' : expr, id_opt : char?} {{"("} {"elem"} {?(mk_name_name(lift(id_opt))):Tid?{}} {x:Ttableuse_(v_I)} {e':Toffset_(v_I)} {(rt, e_lst):Telemlist_(v_I)} {")"}} => (ELEM_elem(rt, e_lst, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(mk_name_name(lift(id_opt)))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, e_lst : expr*, id_opt : char?} {{"("} {"elem"} {?(mk_name_name(lift(id_opt))):Tid?{}} {"declare"} {(rt, e_lst):Telemlist_(v_I)} {")"}} => (ELEM_elem(rt, e_lst, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(mk_name_name(lift(id_opt)))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tstart_(v_I : I) : (start, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(v_I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timport_(v_I : I) : (import, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(v_I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texport_(v_I : I) : (export, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(v_I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttagdots_(v_I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(v_I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(v_I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobaldots_(v_I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(v_I)} {Texpr_(v_I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(v_I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmemdots_(v_I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(v_I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(v_I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttabledots_(v_I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(v_I)} {Texpr_(v_I)?{}}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(v_I)} {"("} {"elem"} {Telemlist_(v_I)} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(v_I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfuncdots_(v_I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(v_I)} {Tlocal_(v_I)*{}} {Texpr_(v_I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(v_I)}} => (``, ()).1 + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttag_(v_I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobal_(v_I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmem_(v_I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttable_(v_I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfunc_(v_I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatamem_(v_I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemtable_(v_I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecl_(v_I : I) : (decl, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (type, idctxt)} ``:Ttype_(v_I) => ($decl_type(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (import, idctxt)} ``:Timport_(v_I) => ($decl_import(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (tag, idctxt)} ``:Ttag_(v_I) => ($decl_tag(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (global, idctxt)} ``:Tglobal_(v_I) => ($decl_global(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (mem, idctxt)} ``:Tmem_(v_I) => ($decl_mem(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (table, idctxt)} ``:Ttable_(v_I) => ($decl_table(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (func, idctxt)} ``:Tfunc_(v_I) => ($decl_func(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (data, idctxt)} ``:Tdata_(v_I) => ($decl_data(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (elem, idctxt)} ``:Telem_(v_I) => ($decl_elem(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (start, idctxt)} ``:Tstart_(v_I) => ($decl_start(``.0), ``.1) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (export, idctxt)} ``:Texport_(v_I) => ($decl_export(``.0), ``.1) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmodule : module + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, I_lst : I*, decl_lst : decl*, I' : I, var_12 : bool, var_11 : export*, var_10 : start*, var_9 : elem*, var_8 : data*, var_7 : func*, var_6 : table*, var_5 : mem*, var_4 : global*, var_3 : tag*, var_2 : import*, var_1 : type*, var_0 : idctxt} {{"("} {"module"} {Tid?{}} {(v_decl, v_I)*{v_I <- I_lst, v_decl <- decl_lst}:Tdecl_(I')*{}} {")"}} => MODULE_module(mk_list_list(type_lst), mk_list_list(import_lst), mk_list_list(tag_lst), mk_list_list(global_lst), mk_list_list(mem_lst), mk_list_list(table_lst), mk_list_list(func_lst), mk_list_list(data_lst), mk_list_list(elem_lst), start_opt, mk_list_list(export_lst)) + -- if (I' = var_0) + -- Idctxt_ok: `|-%:OK`(I') + -- if (type_lst = var_1) + -- if (import_lst = var_2) + -- if (tag_lst = var_3) + -- if (global_lst = var_4) + -- if (mem_lst = var_5) + -- if (table_lst = var_6) + -- if (func_lst = var_7) + -- if (data_lst = var_8) + -- if (elem_lst = var_9) + -- if (lift(start_opt) = var_10) + -- if (export_lst = var_11) + -- if var_12 + -- fun_ordered: `%%`(decl_lst, var_12) + -- fun_exportsd: `%%`(decl_lst, var_11) + -- fun_startsd: `%%`(decl_lst, var_10) + -- fun_elemsd: `%%`(decl_lst, var_9) + -- fun_datasd: `%%`(decl_lst, var_8) + -- fun_funcsd: `%%`(decl_lst, var_7) + -- fun_tablesd: `%%`(decl_lst, var_6) + -- fun_memsd: `%%`(decl_lst, var_5) + -- fun_globalsd: `%%`(decl_lst, var_4) + -- fun_tagsd: `%%`(decl_lst, var_3) + -- fun_importsd: `%%`(decl_lst, var_2) + -- fun_typesd: `%%`(decl_lst, var_1) + -- fun_concat_idctxt: `%%`(I_lst, var_0) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecldots_(v_I : I) : (decl, idctxt)* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (decl, idctxt)} [``]:Tdecl_(v_I)*{} => [``] + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bvar(syntax r_X) : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod 0x00 => ((), ()).1 + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsym : A + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod Bvar(syntax B) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +grammar Bsymsplit : () + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tvar(syntax r_X) : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod 0x00 => ((), ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsym : A + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod Tvar(syntax T) => $var(syntax A) + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tsymsplit : () + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 + ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +grammar Tabbrev : () + From 657ee0e72d47c450bc388d0322f33bf2e20a20eb Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Sun, 31 May 2026 18:32:54 +0100 Subject: [PATCH 095/115] Allow let pass, allow functions that only have let. Handle new iter case (when ListN but ids are empty) --- spectec/src/backend-rocq/print.ml | 42 +++++++++++++++++++++++-------- spectec/src/exe-spectec/main.ml | 3 ++- 2 files changed, 33 insertions(+), 12 deletions(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index d915118dd3..94ad933967 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -28,6 +28,11 @@ let error at msg = Util.Error.error at "Rocq translation" msg let env_ref = ref (new_env ()) +let is_let p = + match p.it with + | LetPr _ -> true + | _ -> false + let rec list_split (f : 'a -> bool) = function | [] -> ([], []) | x :: xs when f x -> let x_true, x_false = list_split f xs in @@ -562,8 +567,10 @@ let rec render_prem prem = string_of_list_prefix " " " " (render_exp REL) (transform_case_tup exp)) | NegPr p -> parens ("~" ^ r_func p) | ElsePr -> "True " ^ comment_parens ("Unsupported premise: otherwise") (* Will be removed by an else pass *) + | IterPr (p, (ListN (e, Some i), [])) -> + let pred_name = "holds_upto" in + pred_name ^ " " ^ render_lambda [i.it] (r_func p) ^ " " ^ (render_exp REL e) | IterPr (p, (_, [])) -> r_func p - | IterPr (p, (ListN (_, Some i), ps)) -> let quants = List.map (fun (id, e) -> parens (render_id id.it ^ " : " ^ render_type REL (remove_iter_from_type e.note))) ps in let iter_exps = List.map snd ps in @@ -585,8 +592,8 @@ let rec render_prem prem = in pred_name ^ " " ^ render_lambda quants (r_func p) ^ " " ^ String.concat " " (List.map (render_exp REL) iter_exps |> List.map option_conversion) - | LetPr _ -> - "True " ^ comment_parens ("Unsupported premise: " ^ Il.Print.string_of_prem prem) + | LetPr (_, e1, e2) -> + "let " ^ render_exp LHS e1 ^ " := " ^ render_exp RHS e2 ^ " in " let render_typealias id quants typ = "Definition " ^ id ^ render_quants quants ^ " : Type := " ^ render_type RHS typ @@ -691,8 +698,10 @@ let render_single_type id at params = let render_wfness_func_lemma id rule = let RuleD (_, quants, _, _, prems) = rule.it in let forall_quantifiers = string_of_list "forall " ",\n\t" " " (render_param RHS) quants in - let string_prems = string_of_list "" "" " ->\n\t" (render_prem) prems in - "Lemma " ^ id ^ " : " ^ forall_quantifiers ^ string_prems ^ ".\n" ^ + let letprems, others = List.partition is_let prems in + let string_lets = string_of_list "" "" "\n\t" render_prem letprems in + let string_prems = string_of_list "" "" " ->\n\t" render_prem others in + "Lemma " ^ id ^ " : " ^ forall_quantifiers ^ string_lets ^ string_prems ^ ".\n" ^ "Proof. Admitted" let render_function_def prefix id at params r_typ clauses = @@ -709,8 +718,11 @@ let render_function_def prefix id at params r_typ clauses = prefix ^ id ^ render_params params ^ e_params_render ^ " : " ^ render_type RHS r_typ ^ " :=\n" ^ "\tmatch " ^ render_match_quanters params ^ " return " ^ render_type RHS r_typ ^ " with\n\t\t" ^ String.concat "\n\t\t" (List.map (fun clause -> match clause.it with - | DefD (_, args, exp, _) -> - "|" ^ render_match_args args ^ " => " ^ render_exp RHS exp) clauses + | DefD (_, args, exp, prems) -> + let (let_prems, others) = List.partition is_let prems in + assert (List.for_all (fun o -> o.it = ElsePr) others); + let string_of_let = string_of_list "\n\t\t\t" "\n\t\t\t" "\n\t\t\t" render_prem let_prems in + "|" ^ render_match_args args ^ " => " ^ string_of_let ^ render_exp RHS exp) clauses ) ^ (if has_typ_fam then "\n\t\t" ^ render_extra_clause params else "") ^ "\n\tend" ^ @@ -724,9 +736,11 @@ let render_relation prefix id typ rules = prefix ^ id ^ " : " ^ string_of_relation_args typ ^ "Prop :=\n\t" ^ String.concat "\n\t" (List.map (fun rule -> match rule.it with | RuleD (rule_id, quants, _, exp, prems) -> - let string_prems = string_of_list "\n\t\t" " ->\n\t\t" " ->\n\t\t" (render_prem) prems in + let letprems, others = List.partition is_let prems in + let string_lets = string_of_list "\n\t\t" "" "\n\t\t" render_prem letprems in + let string_prems = string_of_list "\n\t\t" " ->\n\t\t" " ->\n\t\t" (render_prem) others in let forall_quantifiers = string_of_list "forall " ", " " " (render_quant REL) quants in - "| " ^ render_id (rule_id.it) ^ " : " ^ forall_quantifiers ^ string_prems ^ render_id id ^ " " ^ String.concat " " (List.map (render_exp REL) (transform_case_tup exp)) + "| " ^ render_id (rule_id.it) ^ " : " ^ forall_quantifiers ^ string_lets ^ string_prems ^ render_id id ^ " " ^ String.concat " " (List.map (render_exp REL) (transform_case_tup exp)) ) rules) let render_axiom prefix id params r_typ = @@ -746,13 +760,14 @@ let render_extra_info def = | _ -> None let has_prems c = - let only_otherwise prems = + let only_otherwise_or_let prems = match prems with | [{it = ElsePr; _}] -> true + | prems when List.for_all is_let prems -> true | _ -> false in match c.it with - | DefD (_, _, _, prems) -> prems <> [] && not (only_otherwise prems) + | DefD (_, _, _, prems) -> prems <> [] && not (only_otherwise_or_let prems) let is_wf_lemma d = match d.it with @@ -908,6 +923,8 @@ let exported_string = "\tf n x -> Foralli_help f (n + 1) l -> Foralli_help f n (x::l).\n\n" ^ "Definition List_Foralli {X : Type} (f : nat -> X -> Prop) (xs : list X) : Prop :=\n" ^ "\tForalli_help f 0 xs.\n\n" ^ + "Definition holds_upto (P : nat -> Prop) (n : nat) :=\n" ^ + "\tForall P (iota 0 (n + 1)).\n\n" ^ "Class Append (α: Type) := _append : α -> α -> α.\n\n" ^ "Infix \"@@\" := _append (right associativity, at level 60) : wasm_scope.\n\n" ^ "Global Instance Append_List_ {α: Type}: Append (seq α) := { _append l1 l2 := seq.cat l1 l2 }.\n\n" ^ @@ -988,6 +1005,7 @@ let is_tf_hint h = h.hintid.it = Middlend.Typefamilyremoval.type_family_hint_id let is_proj_hint h = h.hintid.it = Middlend.Uncaseremoval.uncase_proj_hint_id let is_wf_hint h = h.hintid.it = Middlend.Undep.wf_hint_id let is_wf_func_hint h = h.hintid.it = Middlend.Undep.wf_func_id +let is_wf_rel_hint h = h.hintid.it = Middlend.Undep.wf_rel_id let rec register_hints env def = match def.it with @@ -997,6 +1015,8 @@ let rec register_hints env def = env.proj_set <- StringSet.add id.it env.proj_set | HintD { it = RelH (id, hints); _} when List.exists is_wf_func_hint hints -> env.wf_lemma_set <- StringSet.add id.it env.wf_lemma_set + | HintD { it = RelH (id, hints); _} when List.exists is_wf_rel_hint hints -> + env.wf_lemma_set <- StringSet.add id.it env.wf_lemma_set | HintD { it = RelH (rel_id, hints); _} when List.exists is_wf_hint hints -> begin match (List.find_opt is_wf_hint hints) with | Some {hintexp = { it = El.Ast.VarE (typ_id, _); _}; _} -> diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index 7918f1bfd2..f0b88b1c4a 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -294,7 +294,8 @@ let () = enable_pass DefToRel; enable_pass Ite; enable_pass ElseSimp; - enable_pass PatSimp + enable_pass PatSimp; + enable_pass LetIntroMech | _ when !print_al || !print_al_o <> "" -> enable_pass Sideconditions; | _ -> () From e8ca32544df43b1a8573719dcd3289133e756c7e Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Sun, 31 May 2026 18:33:52 +0100 Subject: [PATCH 096/115] Deftorel: convert lets back to if when converting def to rel. Filtering functions now go for all prems, instead of previous ones. --- spectec/src/middlend/deftorel.ml | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index 2ed3a7fb81..a4b3a3a1b7 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -521,31 +521,31 @@ let tail_mixop mixop = (* This function filters out premises that were function calls before. It only filters them out if they are - not being used in the premises following it. It assumes that the premises are in order (at the very least, - that function calls return variables are not used beforehand) which is true by the construction above. + not being used in any premise that it not the one that is being checked. This avoids the problem with violating strictly positive condition for inductive relations when the recursive function call appears in the return expression. This does not however prevent the violation of the condition completely, as any recursive function call that appears as a pattern guard will violate this (as long as the fallthrough semantics is enforced). *) -let rec filter_return_prems prems = +let rec filter_return_prems all_prems prems = let pred p ps = match p.it with | RulePr (id, _, _, {it = TupE exps; _}) when String.starts_with ~prefix:fun_prefix id.it -> + let ps' = Lib.List.filter_not (fun p' -> Eq.eq_prem p p') ps in let last_exp = Lib.List.last_opt exps in begin match last_exp with | None -> true | Some exp -> let free_vars = (Free.free_exp exp).varid in - let free_vars_prems = (Free.free_list Free.free_prem ps).varid in + let free_vars_prems = (Free.free_list Free.free_prem ps').varid in Free.Set.inter free_vars free_vars_prems <> Free.Set.empty end | _ -> true in match prems with | [] -> [] - | p :: ps when pred p ps -> p :: filter_return_prems ps - | _ :: ps -> filter_return_prems ps + | p :: ps when pred p all_prems -> p :: filter_return_prems all_prems ps + | _ :: ps -> filter_return_prems all_prems ps let generate_matching_rules env args tupt r = match r.it with @@ -554,7 +554,7 @@ let generate_matching_rules env args tupt r = let new_exp = TupE args' $$ exp'.at % tupt in (try Eval.match_list Eval.match_exp env.il_env Subst.empty args' args with Eval.Irred -> None) |> Option.map (fun _ -> - {r with it = RuleD (id, quants, tail_mixop mixop, new_exp, filter_return_prems prems)} + {r with it = RuleD (id, quants, tail_mixop mixop, new_exp, filter_return_prems prems prems)} ) let is_otherwise prem = @@ -585,6 +585,14 @@ let fall_through_prems env id mixop typs rules = in go [] rules +let cvt_let_to_if prems = + let quants, prems = List.map (fun p -> match p.it with + | LetPr (quants, e1, e2) -> + (quants, IfPr (CmpE (`EqOp, `BoolT, e1, e2) $$ e1.at % (BoolT $ e1.at)) $ p.at) + | _ -> ([], p) + ) prems |> List.split in + (List.concat quants, prems) + let cvt_def_to_rel env id params r_typ clauses = let get_param_typ p = match p.it with @@ -597,12 +605,13 @@ let cvt_def_to_rel env id params r_typ clauses = let rules = List.mapi (fun i clause -> match clause.it with | DefD (quants, args, exp, prems) -> + let new_quants, prems' = cvt_let_to_if prems in let exps = List.map get_exp_arg args in let c = create_collector [] env in - let fcalls = collect_exp c exp @ List.concat_map (collect_prem c) prems in - let call_map, new_quants, new_prems = create_call_map fcalls quants in + let fcalls = collect_exp c exp @ List.concat_map (collect_prem c) prems' in + let call_map, new_quants', new_prems = create_call_map fcalls new_quants in let tupe = TupE (exps @ [transform_exp_normal call_map env exp]) $$ id.at % (TupT tup_types $ id.at) in - RuleD (fun_prefix ^ id.it ^ "_case_" ^ Int.to_string i $ id.at, quants @ new_quants, new_mixop, tupe, List.map (transform_prem_normal call_map env) (prems @ new_prems)) $ id.at + RuleD (fun_prefix ^ id.it ^ "_case_" ^ Int.to_string i $ id.at, quants @ new_quants @ new_quants', new_mixop, tupe, List.map (transform_prem_normal call_map env) (prems' @ new_prems)) $ id.at ) clauses in let new_id = { id with it = fun_prefix ^ id.it } in From 1c9b0229f79fdc6e9305451ae77a0c2a463b6049 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Sun, 31 May 2026 18:34:36 +0100 Subject: [PATCH 097/115] sub and subexp: convert subE into coercion when IterT encountered, and subexpansion does extra filtering for uniqueness --- spectec/src/middlend/sub.ml | 2 +- spectec/src/middlend/subexpansion.ml | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/spectec/src/middlend/sub.ml b/spectec/src/middlend/sub.ml index 6265423c15..81e4538c17 100644 --- a/spectec/src/middlend/sub.ml +++ b/spectec/src/middlend/sub.ml @@ -95,7 +95,7 @@ let rec t_exp env exp = let new_iterid = Il.Fresh.fresh_varid "iter_val" in let new_exp = VarE (new_iterid $ e.at) $$ e.at % t1 in let new_iterexp = (iter1, [(new_iterid $ e.at, e)]) in - IterE (SubE (new_exp, t1, t2) $$ e.at % t2, new_iterexp) $$ e.at % sup_ty + IterE (t_exp env (SubE (new_exp, t1, t2) $$ e.at % t2), new_iterexp) $$ e.at % sup_ty | _, _ -> (* Printf.eprintf "[sub @ %s REMAINS] %s <: %s\n%!" (string_of_region exp'.at) (Il.Print.string_of_typ sub_ty) (Il.Print.string_of_typ sup_ty); *) error sub_ty.at ("Non-variable or number type expression not supported `" ^ Il.Print.string_of_typ sub_ty ^ "`") diff --git a/spectec/src/middlend/subexpansion.ml b/spectec/src/middlend/subexpansion.ml index 94b9d5ccdb..a91e558884 100644 --- a/spectec/src/middlend/subexpansion.ml +++ b/spectec/src/middlend/subexpansion.ml @@ -5,6 +5,7 @@ open Source open Il.Ast open Il open Il.Walk +open Il.Subst (* Errors *) @@ -118,9 +119,12 @@ let generate_subst_list lhs quants = (* Compute cartesian product for all cases and generate a subst *) let cases' = product_of_lists cases in - List.map (List.fold_left (fun (quants, subst) (id, (quants', exp)) -> + let subst_list = List.map (List.fold_left (fun (quants, subst) (id, (quants', exp)) -> (quants' @ quants, Il.Subst.add_varid subst id exp)) ([], Il.Subst.empty) - ) cases' + ) cases' in +Lib.List.nub (fun (quants', subst) (quants'', subst') -> + Eq.eq_list Eq.eq_param quants' quants'' && Map.equal (fun exp exp' -> Eq.eq_exp exp exp') subst.varid subst'.varid + ) subst_list let t_clause clause = match clause.it with From 73ddc1cc1e4cd71f04b417188b5f527e48fcc211 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Sun, 31 May 2026 18:35:04 +0100 Subject: [PATCH 098/115] Undep: expose wf_rel_id --- spectec/src/middlend/undep.mli | 1 + 1 file changed, 1 insertion(+) diff --git a/spectec/src/middlend/undep.mli b/spectec/src/middlend/undep.mli index edc24fbdd5..87492a3b9a 100644 --- a/spectec/src/middlend/undep.mli +++ b/spectec/src/middlend/undep.mli @@ -47,5 +47,6 @@ type wfstate = val wf_hint_id : string val wf_func_id : string +val wf_rel_id : string val wf_state : wfstate ref val transform : Il.Ast.script -> Il.Ast.script From fc306c45b9c3166e2a2e50ae715638f412c76840 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Sun, 31 May 2026 18:35:14 +0100 Subject: [PATCH 099/115] Made rundata partial --- specification/wasm-2.0/9-module.spectec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specification/wasm-2.0/9-module.spectec b/specification/wasm-2.0/9-module.spectec index e456fc0a17..69d3bbf6e2 100644 --- a/specification/wasm-2.0/9-module.spectec +++ b/specification/wasm-2.0/9-module.spectec @@ -158,7 +158,7 @@ def $runelem(ELEM reftype expr* (ACTIVE x instr*), i) = instr* (CONST I32 0) (CONST I32 n) (TABLE.INIT x i) (ELEM.DROP i) -- if n = |expr*| -def $rundata(data, idx) : instr* +def $rundata(data, idx) : instr* hint(partial) def $rundata(DATA byte* (PASSIVE), i) = eps def $rundata(DATA byte* (ACTIVE 0 instr*), i) = instr* (CONST I32 0) (CONST I32 n) (MEMORY.INIT i) (DATA.DROP i) From dabebfbe84d53b5594fb3bd12257fc8c16f3ac33 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 1 Jun 2026 12:25:37 +0100 Subject: [PATCH 100/115] Reduce type aliasing when checking if type needs wfness --- spectec/src/middlend/undep.ml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index acf1bd14bb..27d4de0881 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -418,7 +418,8 @@ let remove_unused_params def = | _ -> def let rec return_type_needs_wfness env (rt : typ) : bool = - match rt.it with + let rt' = Utils.reduce_type_aliasing env.il_env rt in + match rt'.it with | VarT (id, _) -> StringSet.mem id.it env.wf_set | TupT tups -> tups |> List.map snd |> List.exists (return_type_needs_wfness env) | IterT (t, _) -> return_type_needs_wfness env t From 1517270a2da893bfebb26fceb3c25ff8038f0358 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 1 Jun 2026 12:25:37 +0100 Subject: [PATCH 101/115] Reduce type aliasing when checking if type needs wfness --- spectec/src/middlend/undep.ml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index 9f4de7f673..df4ee1a5ea 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -418,7 +418,8 @@ let remove_unused_params def = | _ -> def let rec return_type_needs_wfness env (rt : typ) : bool = - match rt.it with + let rt' = Utils.reduce_type_aliasing env.il_env rt in + match rt'.it with | VarT (id, _) -> StringSet.mem id.it env.wf_set | TupT tups -> tups |> List.map snd |> List.exists (return_type_needs_wfness env) | IterT (t, _) -> return_type_needs_wfness env t From f7a6bffe7dcc2ef0e2e3c0598f41facaf565b53f Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 2 Jun 2026 11:10:33 +0100 Subject: [PATCH 102/115] Return to original ordering due to let not being possible in relations --- spectec/src/il/valid.ml | 4 ++-- spectec/src/middlend/deftorel.ml | 6 +++--- spectec/src/middlend/sideconditions.ml | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/spectec/src/il/valid.ml b/spectec/src/il/valid.ml index 5bc71be927..ea5a66459e 100644 --- a/spectec/src/il/valid.ml +++ b/spectec/src/il/valid.ml @@ -713,8 +713,8 @@ let valid_rule env mixop t rule = match rule.it with | RuleD (_x, qs, mixop', e, prems) -> let env' = valid_quants env qs in - let env'' = valid_prems env' prems in - valid_expmix ~side:`Lhs env'' mixop' e (mixop, t) e.at + valid_expmix ~side:`Lhs env' mixop' e (mixop, t) e.at; + ignore (valid_prems env' prems) let valid_clause env x ps t clause = Debug.(log_in "il.valid_clause" line); diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index a4b3a3a1b7..0b58daacf3 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -413,7 +413,7 @@ let transform_rule env rule = List.map (transform_param call_map env) (quants @ new_quants), m, transform_exp_normal call_map env exp, - List.map (transform_prem_normal call_map env) (prems @ new_prems)) + List.map (transform_prem_normal call_map env) (new_prems @ prems)) ) $ rule.at let transform_clause env clause = @@ -438,7 +438,7 @@ let transform_prod env prod = ProdD (List.map (transform_param call_map env) (quants @ new_quants), sym, transform_exp_normal call_map env exp, - List.map (transform_prem_normal call_map env) (prems @ new_prems)) $ prod.at + List.map (transform_prem_normal call_map env) (new_prems @ prems)) $ prod.at let is_exp_param param = match param.it with @@ -611,7 +611,7 @@ let cvt_def_to_rel env id params r_typ clauses = let fcalls = collect_exp c exp @ List.concat_map (collect_prem c) prems' in let call_map, new_quants', new_prems = create_call_map fcalls new_quants in let tupe = TupE (exps @ [transform_exp_normal call_map env exp]) $$ id.at % (TupT tup_types $ id.at) in - RuleD (fun_prefix ^ id.it ^ "_case_" ^ Int.to_string i $ id.at, quants @ new_quants @ new_quants', new_mixop, tupe, List.map (transform_prem_normal call_map env) (prems' @ new_prems)) $ id.at + RuleD (fun_prefix ^ id.it ^ "_case_" ^ Int.to_string i $ id.at, quants @ new_quants @ new_quants', new_mixop, tupe, List.map (transform_prem_normal call_map env) (new_prems @ prems')) $ id.at ) clauses in let new_id = { id with it = fun_prefix ^ id.it } in diff --git a/spectec/src/middlend/sideconditions.ml b/spectec/src/middlend/sideconditions.ml index 7db69df3fe..7fa294bace 100644 --- a/spectec/src/middlend/sideconditions.ml +++ b/spectec/src/middlend/sideconditions.ml @@ -136,9 +136,9 @@ let t_rule' env = function | RuleD (id, quants, mixop, exp, prems) -> let env' = t_params env quants in let collector = create_collector env' in - let prems' = List.concat_map (fun prem -> prem :: collect_prem collector prem) prems in + let prems' = List.concat_map (fun prem -> collect_prem collector prem @ [prem]) prems in let extra_prems = collect_exp collector exp in - let reduced_prems = reduce_prems (prems' @ extra_prems) in + let reduced_prems = reduce_prems (extra_prems @ prems') in RuleD (id, quants, mixop, exp, reduced_prems) let t_rule env x = { x with it = t_rule' env x.it } From d3090f20250cfda6f95ce94be42ec9b3bdf42c4f Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 2 Jun 2026 11:10:33 +0100 Subject: [PATCH 103/115] Return to original ordering due to let not being possible in relations --- spectec/src/il/valid.ml | 4 ++-- spectec/src/middlend/deftorel.ml | 6 +++--- spectec/src/middlend/sideconditions.ml | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/spectec/src/il/valid.ml b/spectec/src/il/valid.ml index 5bc71be927..ea5a66459e 100644 --- a/spectec/src/il/valid.ml +++ b/spectec/src/il/valid.ml @@ -713,8 +713,8 @@ let valid_rule env mixop t rule = match rule.it with | RuleD (_x, qs, mixop', e, prems) -> let env' = valid_quants env qs in - let env'' = valid_prems env' prems in - valid_expmix ~side:`Lhs env'' mixop' e (mixop, t) e.at + valid_expmix ~side:`Lhs env' mixop' e (mixop, t) e.at; + ignore (valid_prems env' prems) let valid_clause env x ps t clause = Debug.(log_in "il.valid_clause" line); diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml index a4b3a3a1b7..0b58daacf3 100644 --- a/spectec/src/middlend/deftorel.ml +++ b/spectec/src/middlend/deftorel.ml @@ -413,7 +413,7 @@ let transform_rule env rule = List.map (transform_param call_map env) (quants @ new_quants), m, transform_exp_normal call_map env exp, - List.map (transform_prem_normal call_map env) (prems @ new_prems)) + List.map (transform_prem_normal call_map env) (new_prems @ prems)) ) $ rule.at let transform_clause env clause = @@ -438,7 +438,7 @@ let transform_prod env prod = ProdD (List.map (transform_param call_map env) (quants @ new_quants), sym, transform_exp_normal call_map env exp, - List.map (transform_prem_normal call_map env) (prems @ new_prems)) $ prod.at + List.map (transform_prem_normal call_map env) (new_prems @ prems)) $ prod.at let is_exp_param param = match param.it with @@ -611,7 +611,7 @@ let cvt_def_to_rel env id params r_typ clauses = let fcalls = collect_exp c exp @ List.concat_map (collect_prem c) prems' in let call_map, new_quants', new_prems = create_call_map fcalls new_quants in let tupe = TupE (exps @ [transform_exp_normal call_map env exp]) $$ id.at % (TupT tup_types $ id.at) in - RuleD (fun_prefix ^ id.it ^ "_case_" ^ Int.to_string i $ id.at, quants @ new_quants @ new_quants', new_mixop, tupe, List.map (transform_prem_normal call_map env) (prems' @ new_prems)) $ id.at + RuleD (fun_prefix ^ id.it ^ "_case_" ^ Int.to_string i $ id.at, quants @ new_quants @ new_quants', new_mixop, tupe, List.map (transform_prem_normal call_map env) (new_prems @ prems')) $ id.at ) clauses in let new_id = { id with it = fun_prefix ^ id.it } in diff --git a/spectec/src/middlend/sideconditions.ml b/spectec/src/middlend/sideconditions.ml index 7db69df3fe..7fa294bace 100644 --- a/spectec/src/middlend/sideconditions.ml +++ b/spectec/src/middlend/sideconditions.ml @@ -136,9 +136,9 @@ let t_rule' env = function | RuleD (id, quants, mixop, exp, prems) -> let env' = t_params env quants in let collector = create_collector env' in - let prems' = List.concat_map (fun prem -> prem :: collect_prem collector prem) prems in + let prems' = List.concat_map (fun prem -> collect_prem collector prem @ [prem]) prems in let extra_prems = collect_exp collector exp in - let reduced_prems = reduce_prems (prems' @ extra_prems) in + let reduced_prems = reduce_prems (extra_prems @ prems') in RuleD (id, quants, mixop, exp, reduced_prems) let t_rule env x = { x with it = t_rule' env x.it } From 52c722245ee7c36f35627fad00ccf31f85dffc5d Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 2 Jun 2026 18:45:44 +0100 Subject: [PATCH 104/115] Improve name generation to include iteration symbols. --- spectec/src/middlend/undep.ml | 2 +- spectec/src/middlend/utils.ml | 20 ++++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index 27d4de0881..0e24ee417b 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -435,7 +435,7 @@ let generate_wf_lemma_func env tf id params rtyp = ) params' in let ids = List.map Utils.get_param_id params in let text_ids = List.map (fun p -> p.it) ids in - let ret_exp_name = Utils.generate_var text_ids "ret_val" in + let ret_exp_name = Utils.annot_new_name (Utils.generate_var text_ids "ret_val") rtyp in let ret_exp = VarE (ret_exp_name $ id.at) $$ id.at % rtyp in let fcall_exp = CallE (id, List.map make_arg params') $$ id.at % rtyp in let fcall_prem = IfPr (CmpE (`EqOp, `BoolT, ret_exp, fcall_exp) $$ id.at % (BoolT $ id.at)) $ id.at in diff --git a/spectec/src/middlend/utils.ml b/spectec/src/middlend/utils.ml index 82dd40a513..d325e53135 100644 --- a/spectec/src/middlend/utils.ml +++ b/spectec/src/middlend/utils.ml @@ -54,6 +54,16 @@ let generate_var ids id = | s when List.mem s ids -> go s start | _ -> id +let rec annot_new_name name t = + match t.it with + | IterT (t', iter) -> + assert (iter = List || iter = Opt); + annot_new_name name t' ^ Il.Print.string_of_iter iter + | _ -> name + +let annot_name old_name name t = + if name = old_name then name else annot_new_name name t + let improve_ids_quants ids generate_all_quants at exp_typ_pairs = let rec improve_ids_helper ids qs = match qs with @@ -61,10 +71,10 @@ let improve_ids_quants ids generate_all_quants at exp_typ_pairs = | (q_id, t) :: qs' -> let new_name = generate_var ids q_id.it in let (quants, pairs) = improve_ids_helper (new_name :: ids) qs' in - let new_pairs = (new_name $ q_id.at, t) :: pairs in + let new_pairs = (annot_name q_id.it new_name t $ q_id.at, t) :: pairs in if not generate_all_quants && new_name = q_id.it then (quants, new_pairs) - else ((ExpP (new_name $ q_id.at, t) $ at) :: quants, new_pairs) + else ((ExpP (annot_name q_id.it new_name t $ q_id.at, t) $ at) :: quants, new_pairs) in improve_ids_helper ids exp_typ_pairs @@ -75,7 +85,7 @@ let get_param_id p = let improve_ids_params params = let reconstruct_param id p = (match p.it with - | ExpP (_, t) -> ExpP (id, t) + | ExpP (_, t) -> ExpP (annot_new_name id.it t $ id.at, t) | TypP _ -> TypP id | DefP (_, params, r_typ) -> DefP (id, params, r_typ) | GramP (_, params, r_typ) -> GramP (id, params, r_typ) @@ -87,7 +97,9 @@ let improve_ids_params params = | p :: ps' -> let p_id = get_param_id p in let new_name = generate_var ids p_id.it $ p_id.at in - reconstruct_param new_name p :: improve_ids_helper (new_name.it :: ids) ps' + if p_id.it = new_name.it + then p :: improve_ids_helper (p_id.it :: ids) ps' + else reconstruct_param new_name p :: improve_ids_helper (new_name.it :: ids) ps' in improve_ids_helper [] params From 0d7e0514e5637fbeba6fb3ece89628e560333ef6 Mon Sep 17 00:00:00 2001 From: Maxime Legoupil Date: Wed, 3 Jun 2026 17:45:10 +0800 Subject: [PATCH 105/115] added two isabelle-specific passes --- spectec/src/exe-spectec/main.ml | 14 +- spectec/src/middlend/datatypediet.ml | 316 +++++++++++++ spectec/src/middlend/dune | 2 + spectec/src/middlend/singlepatternmatch.ml | 488 +++++++++++++++++++++ 4 files changed, 819 insertions(+), 1 deletion(-) create mode 100644 spectec/src/middlend/datatypediet.ml create mode 100644 spectec/src/middlend/singlepatternmatch.ml diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index af8fe02500..84d00a3d08 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -31,6 +31,8 @@ type pass = | DefToRel | ElseSimp | LetIntroMech + | DatatypeDiet + | SinglePatternMatch (* This list declares the intended order of passes. @@ -54,7 +56,9 @@ let all_passes = [ DefToRel; Sideconditions; AliasDemut; - ImproveIds + ImproveIds; + DatatypeDiet; + SinglePatternMatch ] type file_kind = @@ -124,6 +128,9 @@ let pass_flag = function | DefToRel -> "definition-to-relation" | ElseSimp -> "else-simplification" | LetIntroMech -> "let-intro-mech" + | DatatypeDiet -> "datatype-diet" + | SinglePatternMatch -> "single-pattern-match" + let pass_desc = function | Sub -> "Synthesize explicit subtype coercions" @@ -142,6 +149,8 @@ let pass_desc = function | DefToRel -> "Transform specific function definitions into relations" | ElseSimp -> "Simplifies generated otherwise relations (after else pass)" | LetIntroMech -> "Let Premise introduction for mechanization backends" + | DatatypeDiet -> "Remove datatypes with over 50 constructors" + | SinglePatternMatch -> "Remove functions that pattern-match on several arguments" let run_pass : pass -> Il.Ast.script -> Il.Ast.script = function @@ -161,6 +170,9 @@ let run_pass : pass -> Il.Ast.script -> Il.Ast.script = function | DefToRel -> Middlend.Deftorel.transform | LetIntroMech -> Middlend.Letintromech.transform | ElseSimp -> Middlend.Elsesimp.transform + | DatatypeDiet -> Middlend.Datatypediet.transform + | SinglePatternMatch -> Middlend.Singlepatternmatch.transform + (* Argument parsing - Specific for undep pass *) let set_wf_state s = diff --git a/spectec/src/middlend/datatypediet.ml b/spectec/src/middlend/datatypediet.ml new file mode 100644 index 0000000000..a02c63b9ce --- /dev/null +++ b/spectec/src/middlend/datatypediet.ml @@ -0,0 +1,316 @@ +(* + +This transformation aims to produce an AST where no datatype has more than *50* constructors. + +This is because some proof assistants, like Isabelle, struggle to process datatypes with many constructors. In Isabelle, compiling a datatype is quadratic in the number of constructors, and 50 constructors already takes several seconds. + +Instead, when a datatype has more than 50 constructors, we redefine the grammar with several layers, e.g. + +mydatatype = +| Case0 of args0 +| Case1 of args1 +| Case2 of args2 +. +. +. +| Case99 of args99 + +becomes + +mydatatype = +| Mydatatype_subcase_0 of mydatatype_subtype_0 +| Mydatatype_subcase_1 of mydatatype_subtype_1 +| Mydatatype_subcase_2 of mydatatype_subtype_2 +. +. +. +| Mydatatype_subcase_10 of mydataype_subtype_10 + +where + +mydatatype_subtype_0 = +| Case0 of args0 +| Case1 of args1 +| Case2 of args2 +. +. +. +| Case9 of args9 + +and + +mydatatype_subtype_1 = +| Case10 of args10 +| Case11 of args11 +| Case12 of args12 +. +. +. +| Case19 of args19 + +etc. + +We then need to replace all occurences of constructor `Case37 args` with `Mydatatype_subcase_3 (Expanded_case37 args)`, etc. + +For optimality, when breaking up a datatype with a number N>50 of constructors, we make sqrt(N) cases. If sqrt(N) is greater than 50 we repeat the operation recursively. + +Recursion: if mydatatype is recursive, we group all non-recursive cases first and make a minimal recursive definition in the end. + + *) + + +let max_cases = 50 + +open Il.Ast +open Util.Source +open Xl.Mixop + +module StringMap = Map.Make(String) +module MixopMap = Map.Make(struct type t = unit mixop let compare = compare end) + + +let get_fathertype id sontype = + match sontype.it with + | VarT (_, args) -> { sontype with it = VarT (id $ no_region, args) } + | _ -> failwith "should be variant type" + + +let find_new_constructors acc t = + match t.it with + | VarT (id, _) -> StringMap.find_opt id.it acc + | _ -> None + + +let rec transform_exp acc exp = + let f e = { exp with it = e } in + let te = transform_exp acc in + match exp.it with + | VarE _ (* TODO: can VarE be a type constructor? *) + | BoolE _ | NumE _ | TextE _ | OptE None -> exp + | UnE (u, o, exp) -> f (UnE (u, o, te exp)) + | BinE (b, o, e1, e2) -> f (BinE (b, o, te e1, te e2)) + | CmpE (c, o, e1, e2) -> f (CmpE (c, o, te e1, te e2)) + | TupE es -> f (TupE (List.map te es)) + | ProjE (e, i) -> f (ProjE (te e, i)) + | CaseE (id, e) -> + begin match find_new_constructors acc exp.note with + | Some acc -> + let fathername, fathertypeid = MixopMap.find id acc in + let fathertype = get_fathertype fathertypeid exp.note in + f (CaseE (fathername, + { it = CaseE (id, te e) ; at = exp.at ; note = fathertype })) + | None -> f (CaseE (id, te e)) end + | UncaseE _ -> failwith "Uncase should have been removed" + | OptE (Some e) -> f (OptE (Some (te e))) + | TheE e -> f (TheE (te e)) + | StrE fields -> f (StrE (List.map (fun (field, e) -> (field, te e)) fields)) + | DotE (e, field) -> f (DotE (te e, field)) + | CompE (e1, e2) -> f (CompE (te e1, te e2)) + | ListE es -> f (ListE (List.map te es)) + | LiftE e -> f (LiftE (te e)) + | MemE (e1, e2) -> f (MemE (te e1, te e2)) + | LenE e -> f (LenE (te e)) + | CatE (e1, e2) -> f (CatE (te e1, te e2)) + | IdxE (e1, e2) -> f (IdxE (te e1, te e2)) + | SliceE (e1, e2, e3) -> f (SliceE (te e1, te e2, te e3)) + | UpdE (e1, p, e2) -> f (UpdE (te e1, transform_path acc p, te e2)) + | ExtE (e1, p, e2) -> f (ExtE (te e1, transform_path acc p, te e2)) + | IfE (e1, e2, e3) -> f (IfE (te e1, te e2, te e3)) + | CallE (id, args) -> f (CallE (id, List.map (transform_arg acc) args)) + | IterE (e, itexp) -> f (IterE (te e, transform_iterexp acc itexp)) + | CvtE (e, t1, t2) -> f (CvtE (te e, t1, t2)) + | SubE (e, t1, t2) -> f (SubE (te e, t1, t2)) + +and transform_arg acc arg = + match arg.it with + | ExpA e -> { arg with it = ExpA (transform_exp acc e) } + | TypA _ | DefA _ -> arg + | GramA sym -> { arg with it = GramA (transform_sym acc sym) } + +and transform_iterexp acc (it, exps) = + (it, List.map (fun (id, exp) -> (id, transform_exp acc exp)) exps) + +and transform_sym acc sym = + match sym.it with + | VarG (id, args) -> { sym with it = VarG (id, List.map (transform_arg acc) args) } + | NumG _ | TextG _ | EpsG -> sym + | SeqG syms -> { sym with it = SeqG (List.map (transform_sym acc) syms) } + | AltG syms -> { sym with it = AltG (List.map (transform_sym acc) syms) } + | RangeG (sym1, sym2) -> { sym with it = RangeG (transform_sym acc sym1, transform_sym acc sym2) } + | IterG (sym1, itexp) -> { sym with it = IterG (transform_sym acc sym1, transform_iterexp acc itexp) } + | AttrG (exp, sym1) -> { sym with it = AttrG (transform_exp acc exp, transform_sym acc sym1) } + +and transform_path acc path = + match path.it with + | RootP -> path + | IdxP (p,e) -> { path with it = IdxP (transform_path acc p, transform_exp acc e) } + | SliceP (p, e1, e2) -> { path with it = SliceP (transform_path acc p, transform_exp acc e1, transform_exp acc e2) } + | DotP (p, a) -> { path with it = DotP (transform_path acc p, a) } + + + +let rec transform_prem acc prem = + match prem.it with + | RulePr (id, args, op, exp) -> {prem with it = RulePr (id, List.map (transform_arg acc) args, op, transform_exp acc exp)} + | IfPr exp -> {prem with it = IfPr (transform_exp acc exp)} + | LetPr (ss, exp1, exp2) -> {prem with it = LetPr (ss, transform_exp acc exp1, transform_exp acc exp2)} + | ElsePr -> prem + | IterPr (prem', itexp) -> {prem with it = IterPr (transform_prem acc prem', transform_iterexp acc itexp)} + | NegPr prem' -> {prem with it = NegPr (transform_prem acc prem')} + +let transform_rule acc rule = + match rule.it with + | RuleD (id, quants, op, exp, prems) -> {rule with it = RuleD (id, quants, op, transform_exp acc exp, List.map (transform_prem acc) prems)} + +let transform_clause acc clause = + match clause.it with + | DefD (quants, args, exp, prems) -> {clause with it = DefD (quants, List.map (transform_arg acc) args, transform_exp acc exp, List.map (transform_prem acc) prems)} + +let transform_prod acc prod = + match prod.it with + | ProdD (quants, sym, exp, prems) -> { prod with it = ProdD (quants, transform_sym acc sym, transform_exp acc exp, List.map (transform_prem acc) prems)} + +let sqrt_int n = + int_of_float (sqrt (float_of_int n)) + +let rec is_recursive_type ids t = + match t.it with + | VarT (id, args) -> List.mem id.it ids || List.exists (is_recursive_arg ids) args + | BoolT | NumT _ | TextT -> false + | TupT ts -> List.exists (fun (_, t) -> is_recursive_type ids t) ts + | IterT (t, _) -> is_recursive_type ids t +and is_recursive_arg ids arg = + match arg.it with + | ExpA _e -> false (* TODO: technically e could contain a type *) + | TypA t -> is_recursive_type ids t + | DefA _ -> false + | GramA _sym -> false (* TODO: technically sym could contain a type *) + + +let is_recursive ids typecase = + match typecase with + | (_, (t, _,_), _) -> + is_recursive_type ids t + +let split_constructor id l1 quants l2 typecases ids at1 at2 at3 = + let n = List.length typecases in + let nb_cases, max_constr_per_case, resplit = + if max_cases * max_cases < n then + if (n / max_cases) * max_cases < n then + n / max_cases + 1, max_cases, true + else n / max_cases, max_cases, true + else let m = sqrt_int n in + if m * m < n then + if m * (m + 1) < n then + m + 1, m + 1, false + else m, m + 1, false + else m, m, false in + let yes_rec, non_rec = List.partition (is_recursive ids) typecases in + let rec aux acc done_cases nexti current_case current_case_count typecases = + if current_case_count = max_constr_per_case then + aux acc ((nexti, current_case) :: done_cases) (nexti + 1) [] 0 typecases + else + match typecases with + | [] -> acc, done_cases, nexti, current_case, current_case_count + | (casename, typ, hints) :: q -> + let fathername = + Seq [ Atom { it = Xl.Atom.Atom (id.it ^ "_subcase_" ^ string_of_int nexti) ; + at = no_region ; + note = Xl.Atom.info "automatically generated subcase during datatype dieting" } ; + Arg () ] in + aux (MixopMap.add casename (fathername, id.it ^ "_subtype_" ^ string_of_int nexti) acc) + done_cases nexti + ((casename, typ, hints) :: current_case) + (current_case_count + 1) q in + let acc, non_recs, nexti, current_case, current_case_count = + aux MixopMap.empty [] 0 [] 0 non_rec in + let acc, yes_recs, nexti, current_case, current_case_count = + aux acc [] nexti current_case current_case_count yes_rec in + let yes_recs, nb_cases' = + if current_case = [] then yes_recs, nexti else yes_recs @ [nexti, current_case], nexti + 1 in + if nexti * max_constr_per_case + current_case_count = n && nb_cases' = nb_cases then () + else failwith "arithmetic error"; + let non_recs = List.map (fun (i, typecases) -> + { it = TypD (id.it ^ "_subtype_" ^ string_of_int i $ no_region, l1, [ { it = InstD (quants, l2, { it = VariantT typecases ; at = at1 ; note = ()}) ; + at = at2 ; note = () } ]) ; at = at3 ; note = () }) non_recs in + let yes_recs = List.map (fun (i, typecases) -> + { it = TypD (id.it ^ "_subtype_" ^ string_of_int i $ no_region, l1, [ { it = InstD (quants, l2, { it = VariantT typecases ; at = at1 ; note = ()}) ; + at = at2 ; note = () } ]) ; at = at3 ; note = () }) yes_recs in + let main_typecases = List.init nb_cases + (fun i -> (Seq [Atom { it = Xl.Atom.Atom (id.it ^ "_subcase_" ^ string_of_int i) ; + at = no_region; + note = Xl.Atom.info "automatically generated subcase during datatype dieting" }; + Arg ()], + ((VarT (id.it ^ "_subtype_" ^ string_of_int i $ no_region, [])) $ no_region, [], []), [])) in (* TODO: subtype may expect args *) + let main_case = + { it = TypD (id, l1, [ + { it = InstD (quants, l2, + { it = VariantT main_typecases; + at = at1 ; note = () }) ; at = at2 ; note = () } ]) ; at = at3 ; note = () } in + let epilog = [] (* TODO: want to define fun def so only need to replace in pattern matching? *) in + + non_recs, main_case :: yes_recs, epilog, acc, if resplit then [(id, l1, quants, l2, main_typecases, at1, at2, at3)] else [] + + +let get_constructors def = + match def.it with + | TypD (id, l1, [{ it = InstD (quants, l2, { it = VariantT typecases ; at = at1 ; _ }) ; at = at2 ; _ }]) -> Some (id, l1, quants, l2, typecases, at1, at2, def.at) + | TypD (_, _, { it = InstD (_, _, {it = VariantT _ ; _}) ; _} :: _) -> failwith "ill-formed datatype definition" + | TypD _ -> None + | _ -> failwith "should be a type definition" + +let get_some = function + | Some x -> x + | None -> failwith "non-datatype defined mutually recursively with a datatype" + + + +let transform_typ_defs acc def (* original definition, in case no change is needed *) defs = + let constructors = List.map get_constructors defs in + if List.for_all (function None -> true | _ -> false) constructors then acc, [def] else + let constructors = List.map get_some constructors in + if List.for_all (fun (_,_,_,_,l,_,_,_) -> List.length l <= max_cases) constructors then acc, [def] else + let ids = List.map (fun (id, _,_,_,_,_,_,_) -> id.it) constructors in + let rec aux acc = function + | [] -> [], [], [], acc + | (id, l1, quants, l2, typecases, at1, at2, at3) :: q when List.length typecases <= max_cases -> + let prelude, mutrec, epilog, acc = aux acc q in + prelude, { it = TypD (id, l1, [ { it = InstD (quants, l2, { it = VariantT typecases ; at = at1 ; note = ()}) ; + at = at2 ; note = () } ]) ; at = at3 ; note = () } :: mutrec, epilog, acc + | (id, l1, quants, l2, typecases, at1, at2, at3) :: q -> + let prelude', mutrec', epilog', acc', resplit = split_constructor id l1 quants l2 typecases ids at1 at2 at3 in + let prelude, mutrec, epilog, acc = aux acc (resplit @ q) in + prelude' @ prelude, mutrec' @ mutrec, epilog' @ epilog, + StringMap.add id.it acc' acc in + let prelude, mutrec, epilog, acc = aux acc constructors in + let mutrec = match mutrec with + | [def] -> def + | _ -> { it = RecD mutrec ; at = def.at ; note = () } in + acc, prelude @ [mutrec] @ epilog + + + + + +let rec transform_def acc def = + match def.it with + | TypD _ -> transform_typ_defs acc def [def] + | RelD (id, params, op, t, rules) -> acc, [{def with it = RelD (id, params, op, t, List.map (transform_rule acc) rules)}] + | DecD (id, params, t, clauses) -> acc, [{def with it = DecD (id, params, t, List.map (transform_clause acc) clauses)}] + | GramD (id, params, t, prods) -> acc, [{def with it = GramD (id, params, t, List.map (transform_prod acc) prods)}] + | RecD defs -> + (match defs with + | { it = TypD _ ; _ } :: _ -> transform_typ_defs acc def defs + | _ -> let acc, defs = List.fold_left (fun (acc, defs) def -> + let acc, defs' = transform_def acc def in + acc, defs' @ defs) (acc, []) defs in + acc, [{def with it = RecD (List.rev defs)}]) + | HintD _ -> acc, [def] + + + +let transform script = + let (_, defs) = List.fold_left (fun (acc, defs) def -> + let (acc, def) = transform_def acc def in + acc, def :: defs) (StringMap.empty, []) script in + List.flatten (List.rev defs) diff --git a/spectec/src/middlend/dune b/spectec/src/middlend/dune index cc5c00e4f1..72399ea782 100644 --- a/spectec/src/middlend/dune +++ b/spectec/src/middlend/dune @@ -19,5 +19,7 @@ deftorel elsesimp letintromech + datatypediet + singlepatternmatch ) ) diff --git a/spectec/src/middlend/singlepatternmatch.ml b/spectec/src/middlend/singlepatternmatch.ml new file mode 100644 index 0000000000..3a4a16ca17 --- /dev/null +++ b/spectec/src/middlend/singlepatternmatch.ml @@ -0,0 +1,488 @@ +(* + +In this pass we remove pattern-matchings from two variables. + +Imagine two datatypes A = Aone | Atwo | … | Aonehundred and B = Bone | Btwo | … | Bonehundred + +We would replace the following function: + +f : A -> B -> C +f Aone Bone = Cwhatever +f Atwo Btwo = Csomething + +(which in proof assistants like Isabelle would explode in size as isabelle adds cases like f Aone Btwo = undefined etc for all ten thousand combinations) with three functions + +fAone : B -> C +f Bone = Cwhatever + +fAtwo : B -> C +f Btwo = Csomething + +f : A -> B -> C +f Aone x = fAone x +f Atwo x = fAtwo x + +Here, Isabelle would add 99 cases to fAone, 99 cases to fAtwo and 98 cases to f, instead of the 9998 cases it would otherwise have added to the old f + +Known issue: this can introduce redunt pattern-matching cases! + + *) + +let limit = 100 (* max number of cases we can tolerate *) + +open Il.Ast +open Util.Source +open Xl.Mixop + +let error at msg = Util.Error.error at "Single-patternmatch pass" msg + +module MixopMap = Map.Make(struct type t = unit mixop let compare = compare end) +module StringMap = Map.Make(String) +type datatypes = (typ list * typ) MixopMap.t StringMap.t (* map from type names to maps from constructor names to arg types *) + +(* Helpers: recursivity: *) + + +let rec is_recursive_exp id e = + match e.it with + | VarE id' -> List.mem id'.it id + | BoolE _ + | NumE _ + | TextE _ + | OptE None -> false + | UnE (_, _, e) + | ProjE (e, _) + | CaseE (_, e) + | UncaseE (e, _) + | OptE (Some e) + | TheE e + | DotE (e, _) + | LiftE e + | LenE e + | CvtE (e, _, _) -> is_recursive_exp id e + | BinE (_, _, e1, e2) + | CmpE (_, _, e1, e2) + | CompE (e1, e2) + | MemE (e1, e2) + | CatE (e1, e2) + | IdxE (e1, e2) -> is_recursive_exp id e1 || is_recursive_exp id e2 + | SliceE (e1, e2, e3) + | IfE (e1, e2, e3) -> is_recursive_exp id e1 || is_recursive_exp id e2 || is_recursive_exp id e3 + | TupE es + | ListE es -> List.exists (is_recursive_exp id) es + | StrE es -> List.exists (is_recursive_exp id) (List.map snd es) + | UpdE (e1, p, e2) + | ExtE (e1, p, e2) -> is_recursive_exp id e1 || is_recursive_exp id e2 || is_recursive_path id p + | CallE (id', args) -> List.mem id'.it id || List.exists (is_recursive_arg id) args + | IterE (e, ite) -> is_recursive_exp id e || is_recursive_iterexp id ite + | SubE (e, t1, t2) -> is_recursive_exp id e || is_recursive_typ id t1 || is_recursive_typ id t2 + +and is_recursive_typ id typ = + match typ.it with + | VarT (_, args) -> List.exists (is_recursive_arg id) args + | BoolT | NumT _ | TextT -> false + | TupT ts -> List.exists (is_recursive_typ id) (List.map snd ts) + | IterT (t, i) -> is_recursive_typ id t || is_recursive_iter id i + +and is_recursive_iter id = function + | ListN (e, _) -> is_recursive_exp id e + | _ -> false + +and is_recursive_arg id arg = + match arg.it with + | ExpA e -> is_recursive_exp id e + | TypA t -> is_recursive_typ id t + | DefA _ -> false + | GramA s -> is_recursive_sym id s + +and is_recursive_sym id sym = + match sym.it with + | VarG (_, args) -> List.exists (is_recursive_arg id) args + | NumG _ + | TextG _ + | EpsG -> false + | SeqG syms + | AltG syms -> List.exists (is_recursive_sym id) syms + | RangeG (sym1, sym2) -> is_recursive_sym id sym1 || is_recursive_sym id sym2 + | IterG (s, ite) -> is_recursive_sym id s || is_recursive_iterexp id ite + | AttrG (e, s) -> is_recursive_exp id e || is_recursive_sym id s + +and is_recursive_iterexp id = function + | (it, es) -> is_recursive_iter id it || List.exists (is_recursive_exp id) (List.map snd es) + +and is_recursive_path id path = + match path.it with + | RootP -> false + | IdxP (p, e) -> is_recursive_path id p || is_recursive_exp id e + | SliceP (p, e1, e2) -> is_recursive_path id p || is_recursive_exp id e1 || is_recursive_exp id e2 + | DotP (p, _) -> is_recursive_path id p + + +let is_recursive_clause id clause = + match clause.it with + | DefD (_, _, e, _) -> is_recursive_exp id e + +let rec is_recursive id def = + match def.it with + | DecD (_, _, _, clauses) -> + List.exists (is_recursive_clause id) clauses + | RecD defs -> List.exists (is_recursive id) defs + | _ -> error def.at "generated defs should only be decs and recs" + +(* helpers: substitution *) + +let rec subst_exp x v e = + let f x = { e with it = x } in + let g = subst_exp x v in + match e.it with + | VarE y when y.it = x -> v + | VarE _ + | BoolE _ + | NumE _ + | TextE _ + | OptE None -> e + | UnE (a, b, e) -> f (UnE (a, b, g e)) + | BinE (a, b, e1, e2) -> f (BinE (a, b, g e1, g e2)) + | CmpE (a, b, e1, e2) -> f (CmpE (a, b, g e1, g e2)) + | TupE es -> f (TupE (List.map g es)) + | ProjE (e, i) -> f (ProjE (g e, i)) + | CaseE (a, e) -> f (CaseE (a, g e)) + | UncaseE (e, a) -> f (UncaseE (g e, a)) + | OptE (Some e) -> f (OptE (Some (g e))) + | TheE e -> f (TheE (g e)) + | StrE es -> f (StrE (List.map (fun (a, e) -> (a, g e)) es)) + | DotE (e, a) -> f (DotE (g e, a)) + | CompE (e1, e2) -> f (CompE (g e1, g e2)) + | ListE es -> f (ListE (List.map g es)) + | LiftE e -> f (LiftE (g e)) + | MemE (e1, e2) -> f (MemE (g e1, g e2)) + | LenE e -> f (LenE (g e)) + | CatE (e1, e2) -> f (CatE (g e1, g e2)) + | IdxE (e1, e2) -> f (IdxE (g e1, g e2)) + | SliceE (e1, e2, e3) -> f (SliceE (g e1, g e2, g e3)) + | UpdE (e1, p, e2) -> f (UpdE (g e1, subst_path x v p, g e2)) + | ExtE (e1, p, e2) -> f (ExtE (g e1, subst_path x v p, g e2)) + | IfE (e1, e2, e3) -> f (IfE (g e1, g e2, g e3)) + | CallE (id, args) -> f (CallE (id, List.map (subst_arg x v) args)) + | IterE (e, ite) -> f (IterE (g e, subst_iterexp x v ite)) + | CvtE (e, a, b) -> f (CvtE (g e, a, b)) + | SubE (e, t1, t2) -> f (SubE (g e, subst_typ x v t1, subst_typ x v t2)) + +and subst_typ x v t = + match t.it with + | VarT (id, args) -> { t with it = VarT (id, List.map (subst_arg x v) args) } + | BoolT + | NumT _ + | TextT -> t + | TupT l -> { t with it = TupT (List.map (fun (a, t) -> (a, subst_typ x v t)) l) } + | IterT (t, i) -> { t with it = IterT (subst_typ x v t, subst_iter x v i) } + +and subst_iter x v = function + | Opt -> Opt + | List -> List + | List1 -> List1 + | ListN (e, i) -> ListN (subst_exp x v e, i) + +and subst_iterexp x v (i, l) = (subst_iter x v i, List.map (fun (i, e) -> (i, subst_exp x v e)) l) + +and subst_arg x v a = + match a.it with + | ExpA e -> { a with it = ExpA (subst_exp x v e) } + | TypA t -> { a with it = TypA (subst_typ x v t) } + | DefA _ -> a + | GramA s -> { a with it = GramA (subst_sym x v s) } + +and subst_sym x v s = + match s.it with + | VarG (i, args) -> { s with it = VarG (i, List.map (subst_arg x v) args) } + | NumG _ + | TextG _ + | EpsG -> s + | SeqG syms -> { s with it = SeqG (List.map (subst_sym x v) syms) } + | AltG syms -> { s with it = AltG (List.map (subst_sym x v) syms) } + | RangeG (s1, s2) -> { s with it = RangeG (subst_sym x v s1, subst_sym x v s2) } + | IterG (sym, ite) -> { s with it = IterG (subst_sym x v sym, subst_iterexp x v ite) } + | AttrG (e, sym) -> { s with it = AttrG (subst_exp x v e, subst_sym x v sym) } + +and subst_path x v p = + match p.it with + | RootP -> p + | IdxP (path, e) -> { p with it = IdxP (subst_path x v path, subst_exp x v e) } + | SliceP (path, e1, e2) -> { p with it = SliceP (subst_path x v path, subst_exp x v e1, subst_exp x v e2) } + | DotP (path, a) -> { p with it = DotP (subst_path x v path, a) } + + + +(* other helpers *) + +let is_typ_param x = + match x.it with + | TypP _ -> true + | _ -> false +let is_typ_arg x = + match x.it with + | TypA _ -> true + | _ -> false +let has_prems c = + let only_otherwise prems = + match prems with + | [{it = ElsePr; _}] -> true + | _ -> false + in + match c.it with + | DefD (_, _, _, prems) -> prems <> [] && not (only_otherwise prems) + +let transform_case_tup e = + match e.it with + | TupE exps -> exps + | _ -> [e] + +let transform_case_typ t = + match t.it with + | TupT typs -> List.map snd typs + | _ -> [t] + +let package_case_tup l at typ = + match l with + | [e] -> e + | _ -> TupE l $$ (at, typ) + +let rec get_arg_types = function + | (op, (t, _, _), _) :: q -> + MixopMap.add ((* to_string *) op) (transform_case_typ t, t) (get_arg_types q) + | [] -> MixopMap.empty + +let rec get_constr_strings exp = + match exp.it with + | CaseE (op, arg) -> + let args = transform_case_tup arg in + let suffs = List.map get_constr_strings args |> List.flatten in + [(* to_string *) op] :: List.map (fun suff -> (* to_string *) op :: suff) suffs + | _ -> [] + +let inspect_clause_constr_strings clause = + match clause.it with + | DefD (_, args, _, _) -> + List.map (fun arg -> + match arg.it with + | ExpA exp -> get_constr_strings exp + | _ -> []) args + +let rec count_cases (datatypes : datatypes) typ constructor_strings = + (* may overcount if datatypes share constructor names but that is fine *) + match typ.it with + | VarT (typid, _) -> + if StringMap.mem typid.it datatypes then + let cases = StringMap.find typid.it datatypes in + if constructor_strings = [] then 1 + else + MixopMap.fold (fun casename (argtypes, _) total -> + let constructor_strings = List.filter_map (function + | t :: t' :: q when t = casename -> Some (t' :: q) + | _ -> None) constructor_strings in + if constructor_strings = [] then total + 1 else + total + (List.map (fun typ -> count_cases datatypes typ constructor_strings) + argtypes |> List.fold_left ( * ) 1)) cases 0 + else 1 + | _ -> 1 + +let inspect_clause_depth dummy_arglist clauses = + List.fold_left (fun acc clause -> + match clause.it with + | DefD (_, args, _, _) -> + List.map2 (fun (n, seen_catchall) arg -> + if seen_catchall then (n, true) else + match arg.it with + | ExpA { it = CaseE _ ; _ } -> (n + 1, false) + | _ -> (n, true)) acc args) (List.map (fun _ -> (0, false)) dummy_arglist) clauses |> List.map fst + +let rec find_deepest = function + | [] -> 0, 0 + | n :: q -> let i, v = find_deepest q in + if n >= v then 0, n + else i + 1, v + +let rec get_nth i = function + | [] -> failwith "list too short" + | t :: q -> if i = 0 then t else get_nth (i - 1) q + +let rec replace_nth i l = function + | [] -> failwith "list too short" + | t :: q -> if i = 0 then l @ q else t :: replace_nth (i - 1) l q + +(* let insert_clause op clause newclauses = + let l = if MixopMap.mem op newclauses then MixopMap.find op newclauses else [] in + MixopMap.add op (clause :: l) newclauses *) + +(* let rec separate_clauses newclauses casei clauses = + match clauses with + | clause :: q -> + begin match clause.it with + | DefD (quants, args, exp, prems) -> + let argi = get_nth casei args in + match argi.it with + | ExpA expi -> + begin match expi.it with + | CaseE (op, e) -> + let es = transform_case_tup e in + let es = List.map (fun e -> {argi with it = ExpA e}) es in + let newargs = replace_nth casei es args in + let newclause = { clause with it = DefD (quants, newargs, exp, prems) } in + separate_clauses (insert_clause op newclause newclauses) casei q + | _ -> newclauses, clauses + end + | _ -> failwith "this argument should be an expression" + end + | _ -> newclauses, [] *) + +let generate_dummy_exps typs at = + List.mapi (fun i t -> + VarE ("constructor_parameter_" ^ string_of_int i $ at) $$ (at, t)) typs + +let rec generate_args params : arg list = + List.map (fun param -> + let at = param.at in + match param.it with + | ExpP (id, t) -> (ExpA (VarE id $$ (at, t)) $ at) + | TypP id -> (TypA (VarT (id, []) $ at) $ at) + | DefP (id,_,_) -> (DefA id $ at) + | GramP (id, params, _) -> (GramA (VarG (id, generate_args params) $ at) $ at) + ) params + +let generate_dummy_args l at = + List.map (fun e -> ExpA e $ at) (generate_dummy_exps l at) +let generate_dummy_params l at = + let es = generate_dummy_exps l at in + List.map (fun e -> + match e.it with + | VarE id -> ExpP (id, e.note) $ e.at + | _ -> error e.at "dummy exps are always vars") es + + +let generate_split_clauses clauses casei op paramtyps packagedparamtyps = + List.filter_map (fun clause -> + match clause.it with + | DefD (quants, args, exp, prems) -> + let argi = get_nth casei args in + match argi.it with + | ExpA e -> + begin match e.it with + | VarE x -> + Some (DefD (generate_dummy_params paramtyps clause.at @ quants, + replace_nth casei (generate_dummy_args paramtyps clause.at) args, + subst_exp x.it ((CaseE (op, package_case_tup (generate_dummy_exps paramtyps clause.at) e.at packagedparamtyps) $$ (e.at, e.note))) exp, + prems) $ clause.at) + | CaseE (op', e) when to_string op = to_string op' -> + let es = transform_case_tup e in + let es = List.map (fun e -> {argi with it = ExpA e}) es in + let newargs = replace_nth casei es args in + Some { clause with it = DefD (quants, newargs, exp, prems) } + | CaseE _ -> + None + | _ -> error e.at "this pattern-matching case should be a constructor or a variable" + end + | _ -> error argi.at "this pattern-matching case should be on expression arguments" + ) clauses + +let get_rec_names defs = + List.filter_map (fun def -> + match def.it with + | DecD (id, _, _, _) -> Some id.it + | _ -> None) defs + +let is_catchall cl = + match cl.it with + | DefD (_, args, _, _) -> + List.for_all (fun arg -> + match arg.it with + | ExpA e -> + begin match e.it with + | VarE _ -> true + | _ -> false end + | _ -> true) args + +let rec stop_at_first_catchall = function + | [] -> [] + | cl :: _ when is_catchall cl -> [cl] + | t :: q -> t :: stop_at_first_catchall q + +let rec transform_def (datatypes : datatypes) rec_names def = + match def.it with + | TypD (id, _, [{it = InstD (_, _, {it = VariantT typcases; _}); _}]) -> + StringMap.add id.it (get_arg_types typcases) datatypes, [def] + | DecD (_, params, _, [{it = DefD (quants, args, _, _); _}]) + when List.for_all is_typ_param params && List.for_all is_typ_arg args && List.for_all is_typ_param quants -> + datatypes, [def] + | DecD (_, _, _, []) -> + datatypes, [def] + | DecD (_, _, _, clauses) when List.exists has_prems clauses -> + datatypes, [def] + | DecD (id, params, typ, clauses) -> + let constructor_strings = + List.fold_left (fun constructor_strings clause -> + List.map2 (@) (inspect_clause_constr_strings clause) constructor_strings) (List.map (fun _ -> []) params) clauses in + let estimate_of_size = List.map2 (fun paramtyp constructor_strings -> + match paramtyp.it with + | ExpP (_, paramtyp) -> + count_cases datatypes paramtyp constructor_strings + | _ -> 1) params constructor_strings + |> List.fold_left ( * ) 1 in + (* Printf.printf "function %s has size %d\n" id.it estimate_of_size; *) + if estimate_of_size <= limit then datatypes, [def] else + let pattern_match_depths = inspect_clause_depth params clauses in + let casei, depth = find_deepest pattern_match_depths in + if depth = 0 then + datatypes, [{ def with it = DecD (id, params, typ, [List.hd clauses])}] + else + (* let case_clauses, catchall_clauses = separate_clauses MixopMap.empty casei clauses in *) + let splittypid = get_nth casei params in + let splittypid, splittyp = match splittypid.it with + | ExpP (_, ({it = VarT (id, _) ; _} as t)) -> id.it, t + | _ -> error splittypid.at "chosen case should be a datatype" in + let splittypparams = StringMap.find splittypid datatypes in + let new_defs, toplevelclauses = + MixopMap.fold (fun op (paramtyps, packaged_paramtyps) (new_defs, toplevelclauses) -> + let split_clauses = generate_split_clauses clauses casei op paramtyps packaged_paramtyps in + let split_clauses = stop_at_first_catchall split_clauses in + match split_clauses with + | [] -> new_defs, toplevelclauses + | _ -> (DecD ({ id with it = id.it ^ "_" ^ to_string op }, + replace_nth casei + (List.mapi (fun i t -> ExpP (to_string op ^ "_argument_" ^ string_of_int i $ id.at, t) $ id.at) paramtyps) params, + typ, + split_clauses) $ def.at) :: new_defs, + (DefD (replace_nth casei (generate_dummy_params paramtyps id.at) params, + replace_nth casei + [ExpA + (CaseE + (op, + package_case_tup ( + generate_dummy_exps paramtyps id.at) id.at packaged_paramtyps) $$ (id.at, splittyp)) $ id.at] + (generate_args params), + CallE ({id with it = id.it ^ "_" ^ to_string op}, + replace_nth casei + (generate_dummy_args paramtyps id.at) + (generate_args params)) $$ (id.at, typ), + []) $ id.at) :: toplevelclauses + ) splittypparams ([], []) in + let new_defs = List.map (fun def -> snd (transform_def datatypes rec_names def)) new_defs |> List.flatten in + let topleveldef = + DecD (id, params, typ, toplevelclauses) $ def.at in + let yes_rec, not_rec = List.partition (is_recursive (if rec_names = [] then [id.it] else rec_names)) new_defs in + begin match yes_rec with + | [] -> datatypes, new_defs @ [topleveldef] + | _ -> datatypes, not_rec @ [RecD (yes_rec @ [topleveldef]) $ def.at] + end + | RecD defs -> + let rec_names = rec_names @ get_rec_names defs in + let datatypes, defs = List.fold_left (fun (datatypes, defs) def -> + let datatypes, def = transform_def datatypes rec_names def in + datatypes, def :: defs) (datatypes, []) defs in + datatypes, [{ def with it = RecD (List.flatten (List.rev defs)) }] + | _ -> datatypes, [def] + +let transform script = + let _, script = List.fold_left (fun (datatypes, defs) def -> + let datatypes, def = transform_def datatypes [] def in + datatypes, def :: defs) (StringMap.empty, []) script in + List.flatten (List.rev script) From 4ec1e9b70c17cda6c54b4d2619c7753bdd88c4ad Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 4 Jun 2026 11:18:26 +0100 Subject: [PATCH 106/115] Improve ids - changed ordering of id improvement following the new change on iteration annotation --- spectec/src/middlend/improveids.ml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/spectec/src/middlend/improveids.ml b/spectec/src/middlend/improveids.ml index 00541b375e..3a9c117790 100644 --- a/spectec/src/middlend/improveids.ml +++ b/spectec/src/middlend/improveids.ml @@ -205,21 +205,25 @@ let rec t_def env def = (match def.it with | TypD (id, params, insts) -> TypD (t_user_def_id env id, - List.map (transform_param tf) params |> Utils.improve_ids_params, + Utils.improve_ids_params params |> + List.map (transform_param tf), List.map (t_inst tf env id) insts) | RelD (id, params, m, typ, rules) -> RelD (t_user_def_id env id, - List.map (transform_param tf) params |> Utils.improve_ids_params, + Utils.improve_ids_params params |> + List.map (transform_param tf), m, transform_typ tf typ, List.map (transform_rule tf env id) rules) | DecD (id, params, typ, clauses) -> DecD (t_def_id env id, - List.map (transform_param tf) params |> Utils.improve_ids_params, + Utils.improve_ids_params params |> + List.map (transform_param tf), transform_typ tf typ, List.map (transform_clause tf) clauses) | GramD (id, params, typ, prods) -> GramD (id, - List.map (transform_param tf) params |> Utils.improve_ids_params, + Utils.improve_ids_params params |> + List.map (transform_param tf), transform_typ tf typ, List.map (transform_prod tf) prods) | RecD defs -> RecD (List.map (t_def env) defs) From 096c2a99a3e58431f7d3b75d1a16173261aa24dc Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Thu, 4 Jun 2026 11:18:26 +0100 Subject: [PATCH 107/115] Improve ids - changed ordering of id improvement following the new change on iteration annotation --- spectec/src/middlend/improveids.ml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/spectec/src/middlend/improveids.ml b/spectec/src/middlend/improveids.ml index 00541b375e..3a9c117790 100644 --- a/spectec/src/middlend/improveids.ml +++ b/spectec/src/middlend/improveids.ml @@ -205,21 +205,25 @@ let rec t_def env def = (match def.it with | TypD (id, params, insts) -> TypD (t_user_def_id env id, - List.map (transform_param tf) params |> Utils.improve_ids_params, + Utils.improve_ids_params params |> + List.map (transform_param tf), List.map (t_inst tf env id) insts) | RelD (id, params, m, typ, rules) -> RelD (t_user_def_id env id, - List.map (transform_param tf) params |> Utils.improve_ids_params, + Utils.improve_ids_params params |> + List.map (transform_param tf), m, transform_typ tf typ, List.map (transform_rule tf env id) rules) | DecD (id, params, typ, clauses) -> DecD (t_def_id env id, - List.map (transform_param tf) params |> Utils.improve_ids_params, + Utils.improve_ids_params params |> + List.map (transform_param tf), transform_typ tf typ, List.map (transform_clause tf) clauses) | GramD (id, params, typ, prods) -> GramD (id, - List.map (transform_param tf) params |> Utils.improve_ids_params, + Utils.improve_ids_params params |> + List.map (transform_param tf), transform_typ tf typ, List.map (transform_prod tf) prods) | RecD defs -> RecD (List.map (t_def env) defs) From 2ec64196d684251c24fcd0980f9db979101fb335 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 8 Jun 2026 14:33:26 +0100 Subject: [PATCH 108/115] Sub typo in soundness --- specification/wasm-2.0/B-soundness.spectec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specification/wasm-2.0/B-soundness.spectec b/specification/wasm-2.0/B-soundness.spectec index 4e8d403675..3941d35663 100644 --- a/specification/wasm-2.0/B-soundness.spectec +++ b/specification/wasm-2.0/B-soundness.spectec @@ -107,7 +107,7 @@ rule Instrs_ok2/seq: -- Instrs_ok2: s; C |- admininstr_2* : t_2* -> t_3* rule Instrs_ok2/sub: - s; C |- instr* : t'_1* -> t'_2* + s; C |- admininstr* : t'_1* -> t'_2* -- Instrs_ok2: s; C |- admininstr* : t_1* -> t_2* -- Resulttype_sub: |- t'_1* <: t_1* -- Resulttype_sub: |- t_2* <: t'_2* From 155781e9e11ce84e25534216012a963c2c15405f Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Mon, 8 Jun 2026 14:33:26 +0100 Subject: [PATCH 109/115] Sub typo in soundness --- specification/wasm-2.0/B-soundness.spectec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specification/wasm-2.0/B-soundness.spectec b/specification/wasm-2.0/B-soundness.spectec index 4e8d403675..3941d35663 100644 --- a/specification/wasm-2.0/B-soundness.spectec +++ b/specification/wasm-2.0/B-soundness.spectec @@ -107,7 +107,7 @@ rule Instrs_ok2/seq: -- Instrs_ok2: s; C |- admininstr_2* : t_2* -> t_3* rule Instrs_ok2/sub: - s; C |- instr* : t'_1* -> t'_2* + s; C |- admininstr* : t'_1* -> t'_2* -- Instrs_ok2: s; C |- admininstr* : t_1* -> t_2* -- Resulttype_sub: |- t'_1* <: t_1* -- Resulttype_sub: |- t_2* <: t'_2* From de880a049e8d382a1ceea4ef4ea41d1ec50d43c5 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 9 Jun 2026 09:23:39 +0100 Subject: [PATCH 110/115] Limits typo on store extension --- specification/wasm-1.0/B-soundness.spectec | 4 ++-- specification/wasm-2.0/B-soundness.spectec | 4 ++-- specification/wasm-3.0/7.1-soundness.configurations.spectec | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/specification/wasm-1.0/B-soundness.spectec b/specification/wasm-1.0/B-soundness.spectec index e89a326db9..8f2c2615f0 100644 --- a/specification/wasm-1.0/B-soundness.spectec +++ b/specification/wasm-1.0/B-soundness.spectec @@ -204,12 +204,12 @@ rule Extend_globalinst: -- if mut = MUT \/ val = val' rule Extend_meminst: - {TYPE `[n..m], BYTES b*} `<= {TYPE `[n'..m], BYTES b'*} + {TYPE `[n..m?], BYTES b*} `<= {TYPE `[n'..m?], BYTES b'*} -- if n <= n' -- if |b*| <= |b'*| rule Extend_tableinst: - {TYPE `[n..m], REFS ref*} `<= {TYPE `[n'..m], REFS ref'*} + {TYPE `[n..m?], REFS ref*} `<= {TYPE `[n'..m?], REFS ref'*} -- if n <= n' -- if |ref*| <= |ref'*| diff --git a/specification/wasm-2.0/B-soundness.spectec b/specification/wasm-2.0/B-soundness.spectec index 3941d35663..d82599dbe4 100644 --- a/specification/wasm-2.0/B-soundness.spectec +++ b/specification/wasm-2.0/B-soundness.spectec @@ -254,12 +254,12 @@ rule Extend_globalinst: -- if mut = MUT \/ val = val' rule Extend_meminst: - {TYPE `[n..m] PAGE, BYTES b*} `<= {TYPE `[n'..m] PAGE, BYTES b'*} + {TYPE `[n..m?] PAGE, BYTES b*} `<= {TYPE `[n'..m?] PAGE, BYTES b'*} -- if n <= n' -- if |b*| <= |b'*| rule Extend_tableinst: - {TYPE `[n..m] rt, REFS ref*} `<= {TYPE `[n'..m] rt, REFS ref'*} + {TYPE `[n..m?] rt, REFS ref*} `<= {TYPE `[n'..m?] rt, REFS ref'*} -- if n <= n' -- if |ref*| <= |ref'*| diff --git a/specification/wasm-3.0/7.1-soundness.configurations.spectec b/specification/wasm-3.0/7.1-soundness.configurations.spectec index 3ef64d767b..88eb69ed96 100644 --- a/specification/wasm-3.0/7.1-soundness.configurations.spectec +++ b/specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -262,12 +262,12 @@ rule Extend_globalinst: -- if mut? = MUT \/ val = val' rule Extend_meminst: - {TYPE at `[n..m] PAGE, BYTES b*} `<= {TYPE at `[n'..m] PAGE, BYTES b'*} + {TYPE at `[n..m?] PAGE, BYTES b*} `<= {TYPE at `[n'..m?] PAGE, BYTES b'*} -- if n <= n' -- if |b*| <= |b'*| rule Extend_tableinst: - {TYPE at `[n..m] rt, REFS ref*} `<= {TYPE at `[n'..m] rt, REFS ref'*} + {TYPE at `[n..m?] rt, REFS ref*} `<= {TYPE at `[n'..m?] rt, REFS ref'*} -- if n <= n' -- if |ref*| <= |ref'*| From b38fd63f6fb4e234987648719b91db060c74afc1 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Wed, 10 Jun 2026 09:49:37 +0100 Subject: [PATCH 111/115] Meminst_ok and Tableinst_ok defined max fix --- specification/wasm-1.0/B-soundness.spectec | 8 ++++---- specification/wasm-2.0/B-soundness.spectec | 8 ++++---- .../wasm-3.0/7.1-soundness.configurations.spectec | 8 ++++---- .../wasm-latest/7.1-soundness.configurations.spectec | 8 ++++---- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/specification/wasm-1.0/B-soundness.spectec b/specification/wasm-1.0/B-soundness.spectec index 8f2c2615f0..d5f53a74ac 100644 --- a/specification/wasm-1.0/B-soundness.spectec +++ b/specification/wasm-1.0/B-soundness.spectec @@ -129,13 +129,13 @@ rule Globalinst_ok: -- Val_ok: |- val : t rule Meminst_ok: - s |- {TYPE `[n..m], BYTES b*} : `[n..m] - -- Memtype_ok: |- `[n..m] : OK + s |- {TYPE `[n..m?], BYTES b*} : `[n..m?] + -- Memtype_ok: |- `[n..m?] : OK -- if |b*| = $(n * $($(64 * $Ki))) rule Tableinst_ok: - s |- {TYPE `[n..m] , REFS (fa?)*} : `[n..m] - -- Tabletype_ok: |- `[n..m] : OK + s |- {TYPE `[n..m?] , REFS (fa?)*} : `[n..m?] + -- Tabletype_ok: |- `[n..m?] : OK -- ((Externaddr_ok: s |- FUNC fa : FUNC ft)?)* -- if |(fa?)*| = n diff --git a/specification/wasm-2.0/B-soundness.spectec b/specification/wasm-2.0/B-soundness.spectec index d82599dbe4..d8f68a0dec 100644 --- a/specification/wasm-2.0/B-soundness.spectec +++ b/specification/wasm-2.0/B-soundness.spectec @@ -161,13 +161,13 @@ rule Globalinst_ok: -- Val_ok: s |- val : t rule Meminst_ok: - s |- {TYPE `[n..m] PAGE, BYTES b*} : `[n..m] PAGE - -- Memtype_ok: |- `[n..m] PAGE : OK + s |- {TYPE `[n..m?] PAGE, BYTES b*} : `[n..m?] PAGE + -- Memtype_ok: |- `[n..m?] PAGE : OK -- if |b*| = $(n * $($(64 * $Ki))) rule Tableinst_ok: - s |- {TYPE `[n..m] rt , REFS ref*} : `[n..m] rt - -- Tabletype_ok: |- `[n..m] rt : OK + s |- {TYPE `[n..m?] rt , REFS ref*} : `[n..m?] rt + -- Tabletype_ok: |- `[n..m?] rt : OK -- (Ref_ok : s |- ref : rt)* -- if |ref*| = n diff --git a/specification/wasm-3.0/7.1-soundness.configurations.spectec b/specification/wasm-3.0/7.1-soundness.configurations.spectec index 88eb69ed96..8f4382af93 100644 --- a/specification/wasm-3.0/7.1-soundness.configurations.spectec +++ b/specification/wasm-3.0/7.1-soundness.configurations.spectec @@ -86,13 +86,13 @@ rule Globalinst_ok: -- Val_ok: s |- val : t rule Meminst_ok: - s |- {TYPE at `[n..m] PAGE, BYTES b*} : at `[n..m] PAGE - -- Memtype_ok: {} |- at `[n..m] PAGE : OK + s |- {TYPE at `[n..m?] PAGE, BYTES b*} : at `[n..m?] PAGE + -- Memtype_ok: {} |- at `[n..m?] PAGE : OK -- if |b*| = $(n * $($(64 * $Ki))) rule Tableinst_ok: - s |- {TYPE at `[n..m] rt, REFS ref*} : at `[n..m] rt - -- Tabletype_ok: {} |- at `[n..m] rt : OK + s |- {TYPE at `[n..m?] rt, REFS ref*} : at `[n..m?] rt + -- Tabletype_ok: {} |- at `[n..m?] rt : OK -- if |ref*| = n -- (Ref_ok: s |- ref : rt)* diff --git a/specification/wasm-latest/7.1-soundness.configurations.spectec b/specification/wasm-latest/7.1-soundness.configurations.spectec index 3ef64d767b..c2cda4333f 100644 --- a/specification/wasm-latest/7.1-soundness.configurations.spectec +++ b/specification/wasm-latest/7.1-soundness.configurations.spectec @@ -86,13 +86,13 @@ rule Globalinst_ok: -- Val_ok: s |- val : t rule Meminst_ok: - s |- {TYPE at `[n..m] PAGE, BYTES b*} : at `[n..m] PAGE - -- Memtype_ok: {} |- at `[n..m] PAGE : OK + s |- {TYPE at `[n..m?] PAGE, BYTES b*} : at `[n..m?] PAGE + -- Memtype_ok: {} |- at `[n..m?] PAGE : OK -- if |b*| = $(n * $($(64 * $Ki))) rule Tableinst_ok: - s |- {TYPE at `[n..m] rt, REFS ref*} : at `[n..m] rt - -- Tabletype_ok: {} |- at `[n..m] rt : OK + s |- {TYPE at `[n..m?] rt, REFS ref*} : at `[n..m?] rt + -- Tabletype_ok: {} |- at `[n..m?] rt : OK -- if |ref*| = n -- (Ref_ok: s |- ref : rt)* From c29923e273b74408f04a3a18c5f6fa26d5e12d7b Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 16 Jun 2026 09:42:37 +0100 Subject: [PATCH 112/115] Now removes terms that appear in the expression body of a relation. --- spectec/src/middlend/undep.ml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index 0e24ee417b..e288ec0293 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -332,13 +332,20 @@ let get_wf_terms wfdef env cl exp prems = | CallE _ -> true | _ -> false in - let wf_terms = (if !wf_state = WfMinimal && can_optimize wfdef env then [] else collect_exp cl exp) @ List.concat_map (collect_prem cl) prems in + let exp_terms = collect_exp cl exp in + let wf_terms = (if !wf_state = WfMinimal && can_optimize wfdef env then [] else exp_terms) @ List.concat_map (collect_prem cl) prems in let (call_prems, constr_prems) = List.partition (fun ((e1, _), _) -> is_calle e1) wf_terms in let unique_func = Util.Lib.List.nub (fun ((e1, _t1), iterexp1) ((e2, _t2), iterexp2) -> Il.Eq.eq_exp e1 e2 && Il.Eq.eq_list Il.Eq.eq_iterexp iterexp1 iterexp2 ) in + let filter_terms_func = Lib.List.filter_not (fun ((e1, _), iterexp1) -> + List.exists (fun ((e2, _), iterexp2) -> + Il.Eq.eq_exp e1 e2 && Il.Eq.eq_list Il.Eq.eq_iterexp iterexp1 iterexp2 + ) exp_terms + ) in match !wf_state with | WfNone -> ([], []) + | WfMinimal when can_optimize wfdef env -> (call_prems |> unique_func |> filter_terms_func, constr_prems |> unique_func |> filter_terms_func) | _ -> (unique_func call_prems, unique_func constr_prems) let get_extra_prems wfdef env quants exp prems = From eb8e60e47658b93bc0d59ffd6d3f40135976e3cb Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 16 Jun 2026 09:45:05 +0100 Subject: [PATCH 113/115] typo on config relation --- specification/wasm-1.0/B-soundness.spectec | 2 +- specification/wasm-2.0/B-soundness.spectec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/specification/wasm-1.0/B-soundness.spectec b/specification/wasm-1.0/B-soundness.spectec index d5f53a74ac..87867fb58a 100644 --- a/specification/wasm-1.0/B-soundness.spectec +++ b/specification/wasm-1.0/B-soundness.spectec @@ -240,6 +240,6 @@ rule State_ok: -- Frame_ok: s |- f : C rule Config_ok: - |- s; f; instr* : t? + |- s; f; admininstr* : t? -- State_ok: |- s; f : C -- Expr_ok2: s; C |- admininstr* : t? diff --git a/specification/wasm-2.0/B-soundness.spectec b/specification/wasm-2.0/B-soundness.spectec index d8f68a0dec..656b2d5768 100644 --- a/specification/wasm-2.0/B-soundness.spectec +++ b/specification/wasm-2.0/B-soundness.spectec @@ -300,6 +300,6 @@ rule State_ok: -- Frame_ok: s |- f : C rule Config_ok: - |- s; f; instr* : t* + |- s; f; admininstr* : t* -- State_ok: |- s; f : C -- Expr_ok2: s; C |- admininstr* : t* From 05c4743f3c90c8c03555457db343d9e4c14218b7 Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 16 Jun 2026 10:09:00 +0100 Subject: [PATCH 114/115] holds_upto fix --- spectec/src/backend-rocq/print.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml index 94ad933967..3476e7adb5 100644 --- a/spectec/src/backend-rocq/print.ml +++ b/spectec/src/backend-rocq/print.ml @@ -924,7 +924,7 @@ let exported_string = "Definition List_Foralli {X : Type} (f : nat -> X -> Prop) (xs : list X) : Prop :=\n" ^ "\tForalli_help f 0 xs.\n\n" ^ "Definition holds_upto (P : nat -> Prop) (n : nat) :=\n" ^ - "\tForall P (iota 0 (n + 1)).\n\n" ^ + "\tForall P (iota 0 n).\n\n" ^ "Class Append (α: Type) := _append : α -> α -> α.\n\n" ^ "Infix \"@@\" := _append (right associativity, at level 60) : wasm_scope.\n\n" ^ "Global Instance Append_List_ {α: Type}: Append (seq α) := { _append l1 l2 := seq.cat l1 l2 }.\n\n" ^ From 1923973bd6f192fbbeca72f807c55565677194ee Mon Sep 17 00:00:00 2001 From: DCupello1 Date: Tue, 16 Jun 2026 11:18:52 +0100 Subject: [PATCH 115/115] port changes from 3.0 to wasm-latest, and add partial annotations --- .../wasm-3.0/3.2-numerics.vector.spectec | 16 ++++++++-------- .../wasm-latest/1.2-syntax.types.spectec | 2 +- .../wasm-latest/3.2-numerics.vector.spectec | 16 ++++++++-------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/specification/wasm-3.0/3.2-numerics.vector.spectec b/specification/wasm-3.0/3.2-numerics.vector.spectec index c88b9dadfb..a103f4059b 100644 --- a/specification/wasm-3.0/3.2-numerics.vector.spectec +++ b/specification/wasm-3.0/3.2-numerics.vector.spectec @@ -51,11 +51,11 @@ def $irelaxed_swizzle_lane_(N, c*, i) = $relaxed2($R_swizzle, iN(N), 0, c*[i \ | ;; Lanewise operations -def $ivunop_(shape, def $f_(N, iN(N)) : iN(N), vec_(V128)) : vec_(V128)* +def $ivunop_(shape, def $f_(N, iN(N)) : iN(N), vec_(V128)) : vec_(V128)* hint(partial) def $fvunop_(shape, def $f_(N, fN(N)) : fN(N)*, vec_(V128)) : vec_(V128)* -def $ivbinop_(shape, def $f_(N, iN(N), iN(N)) : iN(N), vec_(V128), vec_(V128)) : vec_(V128)* -def $ivbinopsx_(shape, def $f_(N, sx, iN(N), iN(N)) : iN(N), sx, vec_(V128), vec_(V128)) : vec_(V128)* +def $ivbinop_(shape, def $f_(N, iN(N), iN(N)) : iN(N), vec_(V128), vec_(V128)) : vec_(V128)* hint(partial) +def $ivbinopsx_(shape, def $f_(N, sx, iN(N), iN(N)) : iN(N), sx, vec_(V128), vec_(V128)) : vec_(V128)* hint(partial) def $ivbinopsxnd_(shape, def $f_(N, sx, iN(N), iN(N)) : iN(N)*, sx, vec_(V128), vec_(V128)) : vec_(V128)* def $fvbinop_(shape, def $f_(N, fN(N), fN(N)) : fN(N)*, vec_(V128), vec_(V128)) : vec_(V128)* @@ -66,12 +66,12 @@ def $ivrelop_(shape, def $f_(N, iN(N), iN(N)) : u32, vec_(V128), vec_(V128)) : v def $ivrelopsx_(shape, def $f_(N, sx, iN(N), iN(N)) : u32, sx, vec_(V128), vec_(V128)) : vec_(V128) def $fvrelop_(shape, def $f_(N, fN(N), fN(N)) : u32, vec_(V128), vec_(V128)) : vec_(V128) -def $ivshiftop_(shape, def $f_(N, iN(N), u32) : iN(N), vec_(V128), u32) : vec_(V128) -def $ivshiftopsx_(shape, def $f_(N, sx, iN(N), u32) : iN(N), sx, vec_(V128), u32) : vec_(V128) +def $ivshiftop_(shape, def $f_(N, iN(N), u32) : iN(N), vec_(V128), u32) : vec_(V128) hint(partial) +def $ivshiftopsx_(shape, def $f_(N, sx, iN(N), u32) : iN(N), sx, vec_(V128), u32) : vec_(V128) hint(partial) def $ivbitmaskop_(shape, vec_(V128)) : u32 -def $ivswizzlop_(shape, def $f_(N, iN(N)*, iN(N)) : iN(N), vec_(V128), vec_(V128)) : vec_(V128) -def $ivshufflop_(shape, laneidx*, vec_(V128), vec_(V128)) : vec_(V128) +def $ivswizzlop_(shape, def $f_(N, iN(N)*, iN(N)) : iN(N), vec_(V128), vec_(V128)) : vec_(V128) hint(partial) +def $ivshufflop_(shape, laneidx*, vec_(V128), vec_(V128)) : vec_(V128) hint(partial) def $ivunop_(Jnn X M, def $f_, v_1) = $inv_lanes_(Jnn X M, c*) @@ -189,7 +189,7 @@ def $vbitmaskop_(ishape, vec_(V128)) : u32 hint(show VBITMASK#$_(%1,%2)) def $vswizzlop_(bshape, vswizzlop_(bshape), vec_(V128), vec_(V128)) : vec_(V128) hint(show %2#$_(%1,%3,%4)) -def $vshufflop_(bshape, laneidx*, vec_(V128), vec_(V128)) : vec_(V128) +def $vshufflop_(bshape, laneidx*, vec_(V128), vec_(V128)) : vec_(V128) hint(partial) hint(show VSHUFFLE#$_(%1,%2,%3,%4)) def $vnarrowop__(shape_1, shape_2, sx, vec_(V128), vec_(V128)) : vec_(V128) diff --git a/specification/wasm-latest/1.2-syntax.types.spectec b/specification/wasm-latest/1.2-syntax.types.spectec index b30faaf4c0..a7855e18d0 100644 --- a/specification/wasm-latest/1.2-syntax.types.spectec +++ b/specification/wasm-latest/1.2-syntax.types.spectec @@ -398,7 +398,7 @@ def $subst_comptype((FUNC t_1* -> t_2*), tv*, tu*) = FUNC $subst_valtype(t_1, tv def $subst_subtype((SUB final? tu'* ct), tv*, tu*) = SUB final? $subst_typeuse(tu', tv*, tu*)* $subst_comptype(ct, tv*, tu*) -def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) hint(partial) +def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) hint(partial) hint(recfunc) def $minus_recs(eps, eps) = (eps, eps) def $minus_recs((REC n) tv*, tu_1 tu*) = $minus_recs(tv*, tu*) def $minus_recs((_IDX x) tv*, tu_1 tu*) = ((_IDX x) tv'*, tu_1 tu'*) diff --git a/specification/wasm-latest/3.2-numerics.vector.spectec b/specification/wasm-latest/3.2-numerics.vector.spectec index c88b9dadfb..a103f4059b 100644 --- a/specification/wasm-latest/3.2-numerics.vector.spectec +++ b/specification/wasm-latest/3.2-numerics.vector.spectec @@ -51,11 +51,11 @@ def $irelaxed_swizzle_lane_(N, c*, i) = $relaxed2($R_swizzle, iN(N), 0, c*[i \ | ;; Lanewise operations -def $ivunop_(shape, def $f_(N, iN(N)) : iN(N), vec_(V128)) : vec_(V128)* +def $ivunop_(shape, def $f_(N, iN(N)) : iN(N), vec_(V128)) : vec_(V128)* hint(partial) def $fvunop_(shape, def $f_(N, fN(N)) : fN(N)*, vec_(V128)) : vec_(V128)* -def $ivbinop_(shape, def $f_(N, iN(N), iN(N)) : iN(N), vec_(V128), vec_(V128)) : vec_(V128)* -def $ivbinopsx_(shape, def $f_(N, sx, iN(N), iN(N)) : iN(N), sx, vec_(V128), vec_(V128)) : vec_(V128)* +def $ivbinop_(shape, def $f_(N, iN(N), iN(N)) : iN(N), vec_(V128), vec_(V128)) : vec_(V128)* hint(partial) +def $ivbinopsx_(shape, def $f_(N, sx, iN(N), iN(N)) : iN(N), sx, vec_(V128), vec_(V128)) : vec_(V128)* hint(partial) def $ivbinopsxnd_(shape, def $f_(N, sx, iN(N), iN(N)) : iN(N)*, sx, vec_(V128), vec_(V128)) : vec_(V128)* def $fvbinop_(shape, def $f_(N, fN(N), fN(N)) : fN(N)*, vec_(V128), vec_(V128)) : vec_(V128)* @@ -66,12 +66,12 @@ def $ivrelop_(shape, def $f_(N, iN(N), iN(N)) : u32, vec_(V128), vec_(V128)) : v def $ivrelopsx_(shape, def $f_(N, sx, iN(N), iN(N)) : u32, sx, vec_(V128), vec_(V128)) : vec_(V128) def $fvrelop_(shape, def $f_(N, fN(N), fN(N)) : u32, vec_(V128), vec_(V128)) : vec_(V128) -def $ivshiftop_(shape, def $f_(N, iN(N), u32) : iN(N), vec_(V128), u32) : vec_(V128) -def $ivshiftopsx_(shape, def $f_(N, sx, iN(N), u32) : iN(N), sx, vec_(V128), u32) : vec_(V128) +def $ivshiftop_(shape, def $f_(N, iN(N), u32) : iN(N), vec_(V128), u32) : vec_(V128) hint(partial) +def $ivshiftopsx_(shape, def $f_(N, sx, iN(N), u32) : iN(N), sx, vec_(V128), u32) : vec_(V128) hint(partial) def $ivbitmaskop_(shape, vec_(V128)) : u32 -def $ivswizzlop_(shape, def $f_(N, iN(N)*, iN(N)) : iN(N), vec_(V128), vec_(V128)) : vec_(V128) -def $ivshufflop_(shape, laneidx*, vec_(V128), vec_(V128)) : vec_(V128) +def $ivswizzlop_(shape, def $f_(N, iN(N)*, iN(N)) : iN(N), vec_(V128), vec_(V128)) : vec_(V128) hint(partial) +def $ivshufflop_(shape, laneidx*, vec_(V128), vec_(V128)) : vec_(V128) hint(partial) def $ivunop_(Jnn X M, def $f_, v_1) = $inv_lanes_(Jnn X M, c*) @@ -189,7 +189,7 @@ def $vbitmaskop_(ishape, vec_(V128)) : u32 hint(show VBITMASK#$_(%1,%2)) def $vswizzlop_(bshape, vswizzlop_(bshape), vec_(V128), vec_(V128)) : vec_(V128) hint(show %2#$_(%1,%3,%4)) -def $vshufflop_(bshape, laneidx*, vec_(V128), vec_(V128)) : vec_(V128) +def $vshufflop_(bshape, laneidx*, vec_(V128), vec_(V128)) : vec_(V128) hint(partial) hint(show VSHUFFLE#$_(%1,%2,%3,%4)) def $vnarrowop__(shape_1, shape_2, sx, vec_(V128), vec_(V128)) : vec_(V128)